From 5b5cc4b90b3813d47a86cdfa0a322294f89e7d0c Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 19:00:40 +0200 Subject: [PATCH 01/60] access control for erc20 custody new --- contracts/prototypes/evm/ERC20CustodyNew.sol | 31 +++++++------ contracts/prototypes/evm/IGatewayEVM.sol | 1 + test/fuzz/GatewayEVMEchidnaTest.sol | 2 +- testFoundry/GatewayEVM.t.sol | 49 ++++++++++++++++++-- testFoundry/GatewayEVMUpgrade.t.sol | 2 +- testFoundry/GatewayEVMZEVM.t.sol | 2 +- testFoundry/ZetaConnectorNative.t.sol | 2 +- testFoundry/ZetaConnectorNonNative.t.sol | 2 +- 8 files changed, 70 insertions(+), 21 deletions(-) diff --git a/contracts/prototypes/evm/ERC20CustodyNew.sol b/contracts/prototypes/evm/ERC20CustodyNew.sol index e62022e0..7bdc8442 100644 --- a/contracts/prototypes/evm/ERC20CustodyNew.sol +++ b/contracts/prototypes/evm/ERC20CustodyNew.sol @@ -9,27 +9,36 @@ import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; // As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain // This version include a functionality allowing to call a contract // ERC20Custody doesn't call smart contract directly, it passes through the Gateway contract -contract ERC20CustodyNew is ReentrancyGuard{ +contract ERC20CustodyNew is ReentrancyGuard { using SafeERC20 for IERC20; error ZeroAddress(); + error InvalidSender(); IGatewayEVM public gateway; + address public tssAddress; event Withdraw(address indexed token, address indexed to, uint256 amount); event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); - constructor(address _gateway) { - if (_gateway == address(0)) { + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + constructor(address _gateway, address _tssAddress) { + if (_gateway == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); + tssAddress = _tssAddress; } - + // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract call - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 - function withdraw(address token, address to, uint256 amount) external nonReentrant { + function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { IERC20(token).safeTransfer(to, amount); emit Withdraw(token, to, amount); @@ -37,9 +46,7 @@ contract ERC20CustodyNew is ReentrancyGuard{ // WithdrawAndCall is called by TSS address, it transfers the tokens and call a contract // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 - function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant { + function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -51,9 +58,7 @@ contract ERC20CustodyNew is ReentrancyGuard{ // WithdrawAndRevert is called by TSS address, it transfers the tokens and call a contract // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 - function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant { + function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); diff --git a/contracts/prototypes/evm/IGatewayEVM.sol b/contracts/prototypes/evm/IGatewayEVM.sol index d3260726..ae81b687 100644 --- a/contracts/prototypes/evm/IGatewayEVM.sol +++ b/contracts/prototypes/evm/IGatewayEVM.sol @@ -18,6 +18,7 @@ interface IGatewayEVMErrors { error ZeroAddress(); error ApprovalFailed(); error CustodyInitialized(); + error InvalidSender(); } interface IGatewayEVM { diff --git a/test/fuzz/GatewayEVMEchidnaTest.sol b/test/fuzz/GatewayEVMEchidnaTest.sol index 6d031f0e..b7d9eb61 100644 --- a/test/fuzz/GatewayEVMEchidnaTest.sol +++ b/test/fuzz/GatewayEVMEchidnaTest.sol @@ -17,7 +17,7 @@ contract GatewayEVMEchidnaTest is GatewayEVM { tssAddress = echidnaCaller; zetaConnector = address(0x123); testERC20 = new TestERC20("test", "TEST"); - custody = address(new ERC20CustodyNew(address(this))); + custody = address(new ERC20CustodyNew(address(this), tssAddress)); } function testExecuteWithERC20(address to, uint256 amount, bytes calldata data) public { diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol index 7da72e39..7dfb514a 100644 --- a/testFoundry/GatewayEVM.t.sol +++ b/testFoundry/GatewayEVM.t.sol @@ -47,7 +47,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) )); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway)); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); receiver = new ReceiverEVM(); @@ -121,6 +121,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedERC20(address(gateway), amount, address(token), destination); vm.expectEmit(true, true, true, true, address(custody)); emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); custody.withdrawAndCall(address(token), address(receiver), amount, data); // Verify that the tokens were transferred to the destination address @@ -140,9 +141,20 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } + function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); } @@ -160,6 +172,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedERC20(address(gateway), amount / 2, address(token), destination); vm.expectEmit(true, true, true, true, address(custody)); emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); custody.withdrawAndCall(address(token), address(receiver), amount, data); // Verify that the tokens were transferred to the destination address @@ -179,14 +192,24 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } + function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); } - function testForwardCallToReceiveNoParamsThroughCustody() public { uint256 amount = 100000; bytes memory data = abi.encodeWithSignature("receiveNoParams()"); @@ -200,6 +223,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedNoParams(address(gateway)); vm.expectEmit(true, true, true, true, address(custody)); emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); custody.withdrawAndCall(address(token), address(receiver), amount, data); // Verify that the tokens were not transferred to the destination address @@ -229,6 +253,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.expectCall(address(token), 0, transferData); vm.expectEmit(true, true, true, true, address(custody)); emit Withdraw(address(token), destination, amount); + vm.prank(tssAddress); custody.withdraw(address(token), destination, amount); // Verify that the tokens were transferred to the destination address @@ -244,6 +269,14 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } + function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdraw(address(token), destination, amount); + } + function testWithdrawAndRevertThroughCustody() public { uint256 amount = 100000; bytes memory data = abi.encodePacked("hello"); @@ -260,6 +293,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit RevertedWithERC20(address(token), address(receiver), amount, data); vm.expectEmit(true, true, true, true, address(custody)); emit WithdrawAndRevert(address(token), address(receiver), amount, data); + vm.prank(tssAddress); custody.withdrawAndRevert(address(token), address(receiver), amount, data); // Verify that the tokens were transferred to the receiver address @@ -279,11 +313,20 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } + function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndRevert(address(token), address(receiver), amount, data); + } function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; bytes memory data = abi.encodePacked("hello"); + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndRevert(address(token), address(receiver), amount, data); } @@ -333,7 +376,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) )); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway)); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); gateway.setCustody(address(custody)); diff --git a/testFoundry/GatewayEVMUpgrade.t.sol b/testFoundry/GatewayEVMUpgrade.t.sol index 24d87587..1f0338e5 100644 --- a/testFoundry/GatewayEVMUpgrade.t.sol +++ b/testFoundry/GatewayEVMUpgrade.t.sol @@ -46,7 +46,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents )); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway)); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); receiver = new ReceiverEVM(); diff --git a/testFoundry/GatewayEVMZEVM.t.sol b/testFoundry/GatewayEVMZEVM.t.sol index 0fe21f09..8b3e72ff 100644 --- a/testFoundry/GatewayEVMZEVM.t.sol +++ b/testFoundry/GatewayEVMZEVM.t.sol @@ -62,7 +62,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) )); gatewayEVM = GatewayEVM(proxyEVM); - custody = new ERC20CustodyNew(address(gatewayEVM)); + custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta)); gatewayEVM.setCustody(address(custody)); diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol index a9140804..98ccce09 100644 --- a/testFoundry/ZetaConnectorNative.t.sol +++ b/testFoundry/ZetaConnectorNative.t.sol @@ -45,7 +45,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zetaToken)) )); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway)); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken)); receiver = new ReceiverEVM(); diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index e425fa55..60ca775f 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -46,7 +46,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zetaToken)) )); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway)); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken)); vm.prank(tssAddress); From f1cf7892b8ba53331442e974f217c21b303050ac Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 19:06:17 +0200 Subject: [PATCH 02/60] cleanup erc20 custody new events and errors --- contracts/prototypes/evm/ERC20CustodyNew.sol | 12 ++++-------- contracts/prototypes/evm/IERC20CustodyNew.sol | 13 +++++++++++++ contracts/prototypes/evm/ZetaConnectorNewBase.sol | 1 - testFoundry/GatewayEVM.t.sol | 12 +++++------- 4 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 contracts/prototypes/evm/IERC20CustodyNew.sol diff --git a/contracts/prototypes/evm/ERC20CustodyNew.sol b/contracts/prototypes/evm/ERC20CustodyNew.sol index 7bdc8442..b7019c94 100644 --- a/contracts/prototypes/evm/ERC20CustodyNew.sol +++ b/contracts/prototypes/evm/ERC20CustodyNew.sol @@ -2,25 +2,21 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "./IGatewayEVM.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import "./IGatewayEVM.sol"; +import "./IERC20CustodyNew.sol"; + // As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain // This version include a functionality allowing to call a contract // ERC20Custody doesn't call smart contract directly, it passes through the Gateway contract -contract ERC20CustodyNew is ReentrancyGuard { +contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, ReentrancyGuard { using SafeERC20 for IERC20; - error ZeroAddress(); - error InvalidSender(); IGatewayEVM public gateway; address public tssAddress; - event Withdraw(address indexed token, address indexed to, uint256 amount); - event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); - // @dev Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { diff --git a/contracts/prototypes/evm/IERC20CustodyNew.sol b/contracts/prototypes/evm/IERC20CustodyNew.sol new file mode 100644 index 00000000..a07db920 --- /dev/null +++ b/contracts/prototypes/evm/IERC20CustodyNew.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IERC20CustodyNewEvents { + event Withdraw(address indexed token, address indexed to, uint256 amount); + event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); + event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); +} + +interface IERC20CustodyNewErrors { + error ZeroAddress(); + error InvalidSender(); +} \ No newline at end of file diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol index f1762051..40072183 100644 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ b/contracts/prototypes/evm/ZetaConnectorNewBase.sol @@ -8,7 +8,6 @@ import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; abstract contract ZetaConnectorNewBase is ReentrancyGuard { using SafeERC20 for IERC20; - error ZeroAddress(); IGatewayEVM public immutable gateway; diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol index 7dfb514a..c6be57a7 100644 --- a/testFoundry/GatewayEVM.t.sol +++ b/testFoundry/GatewayEVM.t.sol @@ -12,11 +12,13 @@ import "contracts/prototypes/evm/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; + import "contracts/prototypes/evm/IGatewayEVM.sol"; +import "contracts/prototypes/evm/IERC20CustodyNew.sol"; import "contracts/prototypes/evm/IReceiverEVM.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; -contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { +contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { using SafeERC20 for IERC20; address proxy; @@ -30,10 +32,6 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver address destination; address tssAddress; - event Withdraw(address indexed token, address indexed to, uint256 amount); - event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); - function setUp() public { owner = address(this); destination = address(0x1234); @@ -316,7 +314,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { uint256 amount = 100000; bytes memory data = abi.encodePacked("hello"); - + vm.prank(owner); vm.expectRevert(InvalidSender.selector); custody.withdrawAndRevert(address(token), address(receiver), amount, data); From 8b9669e7769205f6a0b82cc1ad247cca88e809de Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 19:47:18 +0200 Subject: [PATCH 03/60] access control for gateway evm --- contracts/prototypes/evm/GatewayEVM.sol | 24 ++++++++++--- testFoundry/GatewayEVM.t.sol | 47 +++++++++++++++++++++++-- testFoundry/GatewayEVMZEVM.t.sol | 6 ++++ 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/contracts/prototypes/evm/GatewayEVM.sol b/contracts/prototypes/evm/GatewayEVM.sol index 2114d3ad..04a57909 100644 --- a/contracts/prototypes/evm/GatewayEVM.sol +++ b/contracts/prototypes/evm/GatewayEVM.sol @@ -27,6 +27,22 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate /// @notice The address of the Zeta token contract. address public zetaToken; + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + // @dev Only custody address allowed modifier. + modifier onlyCustodyOrConnector() { + if (msg.sender != custody && msg.sender != zetaConnector) { + revert InvalidSender(); + } + _; + } + /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); @@ -56,7 +72,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Called by the TSS // Calling onRevert directly - function executeRevert(address destination, bytes calldata data) public payable { + function executeRevert(address destination, bytes calldata data) public payable onlyTSS { (bool success, bytes memory result) = destination.call{value: msg.value}(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -67,7 +83,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Called by the TSS // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 // It can be also used for contract call without asset movement - function execute(address destination, bytes calldata data) external payable returns (bytes memory) { + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); emit Executed(destination, msg.value, data); @@ -84,7 +100,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate address to, uint256 amount, bytes calldata data - ) public nonReentrant { + ) public nonReentrant onlyCustodyOrConnector { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens if(!resetApproval(token, to)) revert ApprovalFailed(); @@ -111,7 +127,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate address to, uint256 amount, bytes calldata data - ) external nonReentrant { + ) external nonReentrant onlyCustodyOrConnector { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol index c6be57a7..5baedbf6 100644 --- a/testFoundry/GatewayEVM.t.sol +++ b/testFoundry/GatewayEVM.t.sol @@ -54,6 +54,8 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver token.mint(owner, 1000000); token.transfer(address(custody), 500000); + + vm.deal(tssAddress, 1 ether); } function testForwardCallToReceiveNonPayable() public { @@ -70,7 +72,20 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedNonPayable(address(gateway), str, num, flag); vm.expectEmit(true, true, true, true, address(gateway)); emit Executed(address(receiver), 0, data); + vm.prank(tssAddress); + gateway.execute(address(receiver), data); + } + + function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() public { + string[] memory str = new string[](1); + str[0] = "Hello, Foundry!"; + uint256[] memory num = new uint256[](1); + num[0] = 42; + bool flag = true; + bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); gateway.execute(address(receiver), data); } @@ -88,7 +103,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedPayable(address(gateway), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gateway)); emit Executed(address(receiver), 1 ether, data); - + vm.prank(tssAddress); gateway.execute{value: value}(address(receiver), data); assertEq(value, address(receiver).balance); @@ -102,10 +117,28 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedNoParams(address(gateway)); vm.expectEmit(true, true, true, true, address(gateway)); emit Executed(address(receiver), 0, data); - + vm.prank(tssAddress); gateway.execute(address(receiver), data); } + function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.executeWithERC20(address(token), destination, amount, data); + } + + function testRevertWithERC20FailsIfNotCustoryOrConnector() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.revertWithERC20(address(token), destination, amount, data); + } + function testForwardCallToReceiveERC20ThroughCustody() public { uint256 amount = 100000; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); @@ -340,12 +373,22 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver emit ReceivedRevert(address(gateway), data); vm.expectEmit(true, true, true, true, address(gateway)); emit Reverted(address(receiver), 1 ether, data); + vm.prank(tssAddress); gateway.executeRevert{value: value}(address(receiver), data); // Verify that the tokens were transferred to the receiver address uint256 balanceAfter = address(receiver).balance; assertEq(balanceAfter, 1 ether); } + + function testExecuteRevertFailsIfSenderIsNotTSS() public { + uint256 value = 1 ether; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.executeRevert{value: value}(address(receiver), data); + } } contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { diff --git a/testFoundry/GatewayEVMZEVM.t.sol b/testFoundry/GatewayEVMZEVM.t.sol index 8b3e72ff..f5a5e576 100644 --- a/testFoundry/GatewayEVMZEVM.t.sol +++ b/testFoundry/GatewayEVMZEVM.t.sol @@ -92,6 +92,8 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.prank(ownerZEVM); zrc20.approve(address(gatewayZEVM), 1000000); + + vm.deal(tssAddress, 1 ether); } function testCallReceiverEVMFromZEVM() public { @@ -111,6 +113,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.deal(address(gatewayEVM), value); vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); gatewayEVM.execute{value: value}(address(receiverEVM), message); } @@ -133,6 +136,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); gatewayEVM.execute{value: value}(address(receiverEVM), message); } @@ -172,6 +176,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); gatewayEVM.execute{value: value}(address(receiverEVM), message); } @@ -195,6 +200,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); gatewayEVM.execute{value: value}(address(receiverEVM), message); // Check the balance after withdrawal From 1851b89be0d6a54e751df8fc055d22c3b77229c9 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 20:28:57 +0200 Subject: [PATCH 04/60] move connector events to interface --- contracts/prototypes/evm/IZetaConnector.sol | 8 ++++++++ contracts/prototypes/evm/ZetaConnectorNative.sol | 2 +- contracts/prototypes/evm/ZetaConnectorNewBase.sol | 11 +++++------ testFoundry/ZetaConnectorNative.t.sol | 10 ++++------ testFoundry/ZetaConnectorNonNative.t.sol | 12 +++++------- 5 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 contracts/prototypes/evm/IZetaConnector.sol diff --git a/contracts/prototypes/evm/IZetaConnector.sol b/contracts/prototypes/evm/IZetaConnector.sol new file mode 100644 index 00000000..40e49ffc --- /dev/null +++ b/contracts/prototypes/evm/IZetaConnector.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface IZetaConnectorEvents { + event Withdraw(address indexed to, uint256 amount); + event WithdrawAndCall(address indexed to, uint256 amount, bytes data); + event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); +} \ No newline at end of file diff --git a/contracts/prototypes/evm/ZetaConnectorNative.sol b/contracts/prototypes/evm/ZetaConnectorNative.sol index 6b34035d..1431fa03 100644 --- a/contracts/prototypes/evm/ZetaConnectorNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNative.sol @@ -40,7 +40,7 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { emit WithdrawAndRevert(to, amount, data); } - // @dev receiveTokens handles token transfer and burn them + // @dev receiveTokens handles token transfer back to connector function receiveTokens(uint256 amount) external override { IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), amount); } diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol index 40072183..2d905133 100644 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ b/contracts/prototypes/evm/ZetaConnectorNewBase.sol @@ -2,21 +2,20 @@ pragma solidity 0.8.7; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "./IGatewayEVM.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; -abstract contract ZetaConnectorNewBase is ReentrancyGuard { +import "./IGatewayEVM.sol"; +import "./IZetaConnector.sol"; + +abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { using SafeERC20 for IERC20; + error ZeroAddress(); IGatewayEVM public immutable gateway; address public immutable zetaToken; - event Withdraw(address indexed to, uint256 amount); - event WithdrawAndCall(address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); - constructor(address _gateway, address _zetaToken) { if (_gateway == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol index 98ccce09..2ae5e3ad 100644 --- a/testFoundry/ZetaConnectorNative.t.sol +++ b/testFoundry/ZetaConnectorNative.t.sol @@ -12,11 +12,13 @@ import "contracts/prototypes/evm/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; + import "contracts/prototypes/evm/IGatewayEVM.sol"; import "contracts/prototypes/evm/IReceiverEVM.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import "contracts/prototypes/evm/IZetaConnector.sol"; -contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { +contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { using SafeERC20 for IERC20; address proxy; @@ -29,10 +31,6 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, address destination; address tssAddress; - event Withdraw(address indexed to, uint256 amount); - event WithdrawAndCall(address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); - function setUp() public { owner = address(this); destination = address(0x1234); diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index 60ca775f..278afd26 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -12,12 +12,14 @@ import "contracts/prototypes/evm/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; + +import "contracts/evm/Zeta.non-eth.sol"; import "contracts/prototypes/evm/IGatewayEVM.sol"; import "contracts/prototypes/evm/IReceiverEVM.sol"; -import "contracts/evm/Zeta.non-eth.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import "contracts/prototypes/evm/IZetaConnector.sol"; -contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { +contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { using SafeERC20 for IERC20; address proxy; @@ -30,10 +32,6 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent address destination; address tssAddress; - event Withdraw(address indexed to, uint256 amount); - event WithdrawAndCall(address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); - function setUp() public { owner = address(this); destination = address(0x1234); From ba0f25f2eb7de0f25d92263546d32adb451dcf4e Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 20:38:48 +0200 Subject: [PATCH 05/60] add tss address to connector and fix uniswap integration test --- .../prototypes/evm/ZetaConnectorNative.sol | 4 +- .../prototypes/evm/ZetaConnectorNewBase.sol | 14 +- .../prototypes/evm/ZetaConnectorNonNative.sol | 4 +- .../erc20custodynew.sol/erc20custodynew.go | 39 +- .../evm/gatewayevm.sol/gatewayevm.go | 4 +- .../gatewayevmupgradetest.go | 4 +- .../ierc20custodynewerrors.go | 181 +++++ .../ierc20custodynewevents.go | 645 ++++++++++++++++++ .../evm/igatewayevm.sol/igatewayevmerrors.go | 2 +- .../izetaconnectorevents.go | 618 +++++++++++++++++ .../zetaconnectornative.go | 39 +- .../zetaconnectornewbase.go | 33 +- .../zetaconnectornonnative.go | 39 +- test/prototypes/GatewayEVMUniswap.spec.ts | 6 +- testFoundry/GatewayEVM.t.sol | 4 +- testFoundry/GatewayEVMUpgrade.t.sol | 2 +- testFoundry/GatewayEVMZEVM.t.sol | 2 +- testFoundry/ZetaConnectorNative.t.sol | 2 +- testFoundry/ZetaConnectorNonNative.t.sol | 2 +- .../prototypes/evm/ERC20CustodyNew.ts | 17 + .../IERC20CustodyNewErrors.ts | 56 ++ .../IERC20CustodyNewEvents.ts | 140 ++++ .../evm/IERC20CustodyNew.sol/index.ts | 5 + .../IZetaConnectorEvents.ts | 131 ++++ .../evm/IZetaConnector.sol/index.ts | 4 + .../prototypes/evm/ZetaConnectorNative.ts | 17 + .../prototypes/evm/ZetaConnectorNewBase.ts | 17 + .../prototypes/evm/ZetaConnectorNonNative.ts | 17 + .../contracts/prototypes/evm/index.ts | 4 + .../evm/ERC20CustodyNew__factory.ts | 35 +- .../evm/GatewayEVMUpgradeTest__factory.ts | 7 +- .../prototypes/evm/GatewayEVM__factory.ts | 7 +- .../IERC20CustodyNewErrors__factory.ts | 40 ++ .../IERC20CustodyNewEvents__factory.ts | 117 ++++ .../evm/IERC20CustodyNew.sol/index.ts | 5 + .../IGatewayEVMErrors__factory.ts | 5 + .../IZetaConnectorEvents__factory.ts | 99 +++ .../evm/IZetaConnector.sol/index.ts | 4 + .../evm/ZetaConnectorNative__factory.ts | 35 +- .../evm/ZetaConnectorNewBase__factory.ts | 18 + .../evm/ZetaConnectorNonNative__factory.ts | 35 +- .../contracts/prototypes/evm/index.ts | 2 + typechain-types/hardhat.d.ts | 27 + typechain-types/index.ts | 6 + 44 files changed, 2452 insertions(+), 42 deletions(-) create mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go create mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go create mode 100644 pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go create mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts create mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts create mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts create mode 100644 typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts create mode 100644 typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts create mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts create mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts create mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts create mode 100644 typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts create mode 100644 typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts diff --git a/contracts/prototypes/evm/ZetaConnectorNative.sol b/contracts/prototypes/evm/ZetaConnectorNative.sol index 1431fa03..dffc8abf 100644 --- a/contracts/prototypes/evm/ZetaConnectorNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNative.sol @@ -8,8 +8,8 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; contract ZetaConnectorNative is ZetaConnectorNewBase { using SafeERC20 for IERC20; - constructor(address _gateway, address _zetaToken) - ZetaConnectorNewBase(_gateway, _zetaToken) + constructor(address _gateway, address _zetaToken, address _tssAddress) + ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) {} // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol index 2d905133..cb1c2e01 100644 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ b/contracts/prototypes/evm/ZetaConnectorNewBase.sol @@ -12,12 +12,22 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard using SafeERC20 for IERC20; error ZeroAddress(); + error InvalidSender(); IGatewayEVM public immutable gateway; address public immutable zetaToken; + address public tssAddress; - constructor(address _gateway, address _zetaToken) { - if (_gateway == address(0) || _zetaToken == address(0)) { + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + constructor(address _gateway, address _zetaToken, address _tssAddress) { + if (_gateway == address(0) || _zetaToken == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); diff --git a/contracts/prototypes/evm/ZetaConnectorNonNative.sol b/contracts/prototypes/evm/ZetaConnectorNonNative.sol index 1cf9a693..88b934d5 100644 --- a/contracts/prototypes/evm/ZetaConnectorNonNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNonNative.sol @@ -6,8 +6,8 @@ import "./IZetaNonEthNew.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract ZetaConnectorNonNative is ZetaConnectorNewBase { - constructor(address _gateway, address _zetaToken) - ZetaConnectorNewBase(_gateway, _zetaToken) + constructor(address _gateway, address _zetaToken, address _tssAddress) + ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) {} // @dev withdraw is called by TSS address, it mints zetaToken to the destination address diff --git a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go b/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go index aa92c1f9..6438908b 100644 --- a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go +++ b/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go @@ -31,8 +31,8 @@ var ( // ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. var ERC20CustodyNewMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200107f3803806200107f833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ee4806200019b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063116191b61461005157806321fc65f21461006f578063c8a023621461008b578063d9caed12146100a7575b600080fd5b6100596100c3565b6040516100669190610b42565b60405180910390f35b610089600480360381019061008491906108af565b6100e9565b005b6100a560048036038101906100a091906108af565b61024b565b005b6100c160048036038101906100bc919061085c565b6103ad565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100f1610452565b61013e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101a1959493929190610acb565b600060405180830381600087803b1580156101bb57600080fd5b505af11580156101cf573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023493929190610c1a565b60405180910390a3610244610528565b5050505050565b610253610452565b6102a0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610303959493929190610acb565b600060405180830381600087803b15801561031d57600080fd5b505af1158015610331573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c885858560405161039693929190610c1a565b60405180910390a36103a6610528565b5050505050565b6103b5610452565b6103e082828573ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161043d9190610bff565b60405180910390a361044d610528565b505050565b60026000541415610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90610bdf565b60405180910390fd5b6002600081905550565b6105238363a9059cbb60e01b84846040516024016104c1929190610b19565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610532565b505050565b6001600081905550565b6000610594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105f99092919063ffffffff16565b90506000815111156105f457808060200190518101906105b49190610937565b6105f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ea90610bbf565b60405180910390fd5b5b505050565b60606106088484600085610611565b90509392505050565b606082471015610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d90610b7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161067f9190610ab4565b60006040518083038185875af1925050503d80600081146106bc576040519150601f19603f3d011682016040523d82523d6000602084013e6106c1565b606091505b50915091506106d2878383876106de565b92505050949350505050565b6060831561074157600083511415610739576106f985610754565b610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90610b9f565b60405180910390fd5b5b82905061074c565b61074b8383610777565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561078a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be9190610b5d565b60405180910390fd5b6000813590506107d681610e69565b92915050565b6000815190506107eb81610e80565b92915050565b60008083601f84011261080757610806610d54565b5b8235905067ffffffffffffffff81111561082457610823610d4f565b5b6020830191508360018202830111156108405761083f610d59565b5b9250929050565b60008135905061085681610e97565b92915050565b60008060006060848603121561087557610874610d63565b5b6000610883868287016107c7565b9350506020610894868287016107c7565b92505060406108a586828701610847565b9150509250925092565b6000806000806000608086880312156108cb576108ca610d63565b5b60006108d9888289016107c7565b95505060206108ea888289016107c7565b94505060406108fb88828901610847565b935050606086013567ffffffffffffffff81111561091c5761091b610d5e565b5b610928888289016107f1565b92509250509295509295909350565b60006020828403121561094d5761094c610d63565b5b600061095b848285016107dc565b91505092915050565b61096d81610c8f565b82525050565b600061097f8385610c62565b935061098c838584610d0d565b61099583610d68565b840190509392505050565b60006109ab82610c4c565b6109b58185610c73565b93506109c5818560208601610d1c565b80840191505092915050565b6109da81610cd7565b82525050565b60006109eb82610c57565b6109f58185610c7e565b9350610a05818560208601610d1c565b610a0e81610d68565b840191505092915050565b6000610a26602683610c7e565b9150610a3182610d79565b604082019050919050565b6000610a49601d83610c7e565b9150610a5482610dc8565b602082019050919050565b6000610a6c602a83610c7e565b9150610a7782610df1565b604082019050919050565b6000610a8f601f83610c7e565b9150610a9a82610e40565b602082019050919050565b610aae81610ccd565b82525050565b6000610ac082846109a0565b915081905092915050565b6000608082019050610ae06000830188610964565b610aed6020830187610964565b610afa6040830186610aa5565b8181036060830152610b0d818486610973565b90509695505050505050565b6000604082019050610b2e6000830185610964565b610b3b6020830184610aa5565b9392505050565b6000602082019050610b5760008301846109d1565b92915050565b60006020820190508181036000830152610b7781846109e0565b905092915050565b60006020820190508181036000830152610b9881610a19565b9050919050565b60006020820190508181036000830152610bb881610a3c565b9050919050565b60006020820190508181036000830152610bd881610a5f565b9050919050565b60006020820190508181036000830152610bf881610a82565b9050919050565b6000602082019050610c146000830184610aa5565b92915050565b6000604082019050610c2f6000830186610aa5565b8181036020830152610c42818486610973565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c9a82610cad565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ce282610ce9565b9050919050565b6000610cf482610cfb565b9050919050565b6000610d0682610cad565b9050919050565b82818337600083830152505050565b60005b83811015610d3a578082015181840152602081019050610d1f565b83811115610d49576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e7281610c8f565b8114610e7d57600080fd5b50565b610e8981610ca1565b8114610e9457600080fd5b50565b610ea081610ccd565b8114610eab57600080fd5b5056fea264697066735822122004af522ce13639b271307b4d29ba4ac4a6b589721315ec5393584474746ecd2864736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033", } // ERC20CustodyNewABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ERC20CustodyNewABI = ERC20CustodyNewMetaData.ABI var ERC20CustodyNewBin = ERC20CustodyNewMetaData.Bin // DeployERC20CustodyNew deploys a new Ethereum contract, binding an instance of ERC20CustodyNew to it. -func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address) (common.Address, *types.Transaction, *ERC20CustodyNew, error) { +func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20CustodyNew, error) { parsed, err := ERC20CustodyNewMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewBin), backend, _gateway) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewBin), backend, _gateway, _tssAddress) if err != nil { return common.Address{}, nil, nil, err } @@ -233,6 +233,37 @@ func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) Gateway() (common.Address, return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) } +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNew.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() diff --git a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go index 13dd70da..fe975bae 100644 --- a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go +++ b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go @@ -31,8 +31,8 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613c4462000243600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108782611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220062def546691dc60b8b2347c044e9cea9bd00dadb4eab14ae756bd185359a69964736f6c63430008070033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b50169b86c27966b79749752335073f77dce5b27a3090e7ff49ca83964a05a8964736f6c63430008070033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index 33a46b99..8acdc4af 100644 --- a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -31,8 +31,8 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207a620a8f5e1407bdf259d6a98d79803d9d2c249529f99712b2a74e1bc0a940a664736f6c63430008070033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205f0f43e53336448ab426557838090dbeda3ef4efbf1448693a8f6b4fe7ba424264736f6c63430008070033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go new file mode 100644 index 00000000..d3f0af38 --- /dev/null +++ b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20custodynew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20CustodyNewErrorsMetaData contains all meta data concerning the IERC20CustodyNewErrors contract. +var IERC20CustodyNewErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", +} + +// IERC20CustodyNewErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyNewErrorsMetaData.ABI instead. +var IERC20CustodyNewErrorsABI = IERC20CustodyNewErrorsMetaData.ABI + +// IERC20CustodyNewErrors is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyNewErrors struct { + IERC20CustodyNewErrorsCaller // Read-only binding to the contract + IERC20CustodyNewErrorsTransactor // Write-only binding to the contract + IERC20CustodyNewErrorsFilterer // Log filterer for contract events +} + +// IERC20CustodyNewErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyNewErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20CustodyNewErrorsSession struct { + Contract *IERC20CustodyNewErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CustodyNewErrorsCallerSession struct { + Contract *IERC20CustodyNewErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20CustodyNewErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20CustodyNewErrorsTransactorSession struct { + Contract *IERC20CustodyNewErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsRaw struct { + Contract *IERC20CustodyNewErrors // Generic contract binding to access the raw methods on +} + +// IERC20CustodyNewErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsCallerRaw struct { + Contract *IERC20CustodyNewErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20CustodyNewErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsTransactorRaw struct { + Contract *IERC20CustodyNewErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20CustodyNewErrors creates a new instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewErrors, error) { + contract, err := bindIERC20CustodyNewErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrors{IERC20CustodyNewErrorsCaller: IERC20CustodyNewErrorsCaller{contract: contract}, IERC20CustodyNewErrorsTransactor: IERC20CustodyNewErrorsTransactor{contract: contract}, IERC20CustodyNewErrorsFilterer: IERC20CustodyNewErrorsFilterer{contract: contract}}, nil +} + +// NewIERC20CustodyNewErrorsCaller creates a new read-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewErrorsCaller, error) { + contract, err := bindIERC20CustodyNewErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsCaller{contract: contract}, nil +} + +// NewIERC20CustodyNewErrorsTransactor creates a new write-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewErrorsTransactor, error) { + contract, err := bindIERC20CustodyNewErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsTransactor{contract: contract}, nil +} + +// NewIERC20CustodyNewErrorsFilterer creates a new log filterer instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewErrorsFilterer, error) { + contract, err := bindIERC20CustodyNewErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsFilterer{contract: contract}, nil +} + +// bindIERC20CustodyNewErrors binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyNewErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyNewErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go new file mode 100644 index 00000000..bae33183 --- /dev/null +++ b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go @@ -0,0 +1,645 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20custodynew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20CustodyNewEventsMetaData contains all meta data concerning the IERC20CustodyNewEvents contract. +var IERC20CustodyNewEventsMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", +} + +// IERC20CustodyNewEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyNewEventsMetaData.ABI instead. +var IERC20CustodyNewEventsABI = IERC20CustodyNewEventsMetaData.ABI + +// IERC20CustodyNewEvents is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyNewEvents struct { + IERC20CustodyNewEventsCaller // Read-only binding to the contract + IERC20CustodyNewEventsTransactor // Write-only binding to the contract + IERC20CustodyNewEventsFilterer // Log filterer for contract events +} + +// IERC20CustodyNewEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyNewEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20CustodyNewEventsSession struct { + Contract *IERC20CustodyNewEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CustodyNewEventsCallerSession struct { + Contract *IERC20CustodyNewEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20CustodyNewEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20CustodyNewEventsTransactorSession struct { + Contract *IERC20CustodyNewEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyNewEventsRaw struct { + Contract *IERC20CustodyNewEvents // Generic contract binding to access the raw methods on +} + +// IERC20CustodyNewEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsCallerRaw struct { + Contract *IERC20CustodyNewEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20CustodyNewEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsTransactorRaw struct { + Contract *IERC20CustodyNewEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20CustodyNewEvents creates a new instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewEvents, error) { + contract, err := bindIERC20CustodyNewEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEvents{IERC20CustodyNewEventsCaller: IERC20CustodyNewEventsCaller{contract: contract}, IERC20CustodyNewEventsTransactor: IERC20CustodyNewEventsTransactor{contract: contract}, IERC20CustodyNewEventsFilterer: IERC20CustodyNewEventsFilterer{contract: contract}}, nil +} + +// NewIERC20CustodyNewEventsCaller creates a new read-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewEventsCaller, error) { + contract, err := bindIERC20CustodyNewEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsCaller{contract: contract}, nil +} + +// NewIERC20CustodyNewEventsTransactor creates a new write-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewEventsTransactor, error) { + contract, err := bindIERC20CustodyNewEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsTransactor{contract: contract}, nil +} + +// NewIERC20CustodyNewEventsFilterer creates a new log filterer instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewEventsFilterer, error) { + contract, err := bindIERC20CustodyNewEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsFilterer{contract: contract}, nil +} + +// bindIERC20CustodyNewEvents binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyNewEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.contract.Transact(opts, method, params...) +} + +// IERC20CustodyNewEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawIterator struct { + Event *IERC20CustodyNewEventsWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdraw represents a Withdraw event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdraw struct { + Token common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawIterator{contract: _IERC20CustodyNewEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdraw) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyNewEventsWithdraw, error) { + event := new(IERC20CustodyNewEventsWithdraw) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20CustodyNewEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndCallIterator struct { + Event *IERC20CustodyNewEventsWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndCall struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndCallIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawAndCallIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdrawAndCall) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyNewEventsWithdrawAndCall, error) { + event := new(IERC20CustodyNewEventsWithdrawAndCall) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20CustodyNewEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { + Event *IERC20CustodyNewEventsWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndRevert struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndRevertIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawAndRevertIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyNewEventsWithdrawAndRevert, error) { + event := new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go b/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go index d4c84c67..5b894d97 100644 --- a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go +++ b/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go @@ -31,7 +31,7 @@ var ( // IGatewayEVMErrorsMetaData contains all meta data concerning the IGatewayEVMErrors contract. var IGatewayEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", } // IGatewayEVMErrorsABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go b/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go new file mode 100644 index 00000000..ecd0bb09 --- /dev/null +++ b/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go @@ -0,0 +1,618 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izetaconnector + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZetaConnectorEventsMetaData contains all meta data concerning the IZetaConnectorEvents contract. +var IZetaConnectorEventsMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", +} + +// IZetaConnectorEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IZetaConnectorEventsMetaData.ABI instead. +var IZetaConnectorEventsABI = IZetaConnectorEventsMetaData.ABI + +// IZetaConnectorEvents is an auto generated Go binding around an Ethereum contract. +type IZetaConnectorEvents struct { + IZetaConnectorEventsCaller // Read-only binding to the contract + IZetaConnectorEventsTransactor // Write-only binding to the contract + IZetaConnectorEventsFilterer // Log filterer for contract events +} + +// IZetaConnectorEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IZetaConnectorEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IZetaConnectorEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZetaConnectorEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZetaConnectorEventsSession struct { + Contract *IZetaConnectorEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaConnectorEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZetaConnectorEventsCallerSession struct { + Contract *IZetaConnectorEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZetaConnectorEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZetaConnectorEventsTransactorSession struct { + Contract *IZetaConnectorEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaConnectorEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IZetaConnectorEventsRaw struct { + Contract *IZetaConnectorEvents // Generic contract binding to access the raw methods on +} + +// IZetaConnectorEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZetaConnectorEventsCallerRaw struct { + Contract *IZetaConnectorEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IZetaConnectorEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZetaConnectorEventsTransactorRaw struct { + Contract *IZetaConnectorEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZetaConnectorEvents creates a new instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEvents(address common.Address, backend bind.ContractBackend) (*IZetaConnectorEvents, error) { + contract, err := bindIZetaConnectorEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZetaConnectorEvents{IZetaConnectorEventsCaller: IZetaConnectorEventsCaller{contract: contract}, IZetaConnectorEventsTransactor: IZetaConnectorEventsTransactor{contract: contract}, IZetaConnectorEventsFilterer: IZetaConnectorEventsFilterer{contract: contract}}, nil +} + +// NewIZetaConnectorEventsCaller creates a new read-only instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsCaller(address common.Address, caller bind.ContractCaller) (*IZetaConnectorEventsCaller, error) { + contract, err := bindIZetaConnectorEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsCaller{contract: contract}, nil +} + +// NewIZetaConnectorEventsTransactor creates a new write-only instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaConnectorEventsTransactor, error) { + contract, err := bindIZetaConnectorEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsTransactor{contract: contract}, nil +} + +// NewIZetaConnectorEventsFilterer creates a new log filterer instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaConnectorEventsFilterer, error) { + contract, err := bindIZetaConnectorEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsFilterer{contract: contract}, nil +} + +// bindIZetaConnectorEvents binds a generic wrapper to an already deployed contract. +func bindIZetaConnectorEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZetaConnectorEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaConnectorEvents *IZetaConnectorEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaConnectorEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.contract.Transact(opts, method, params...) +} + +// IZetaConnectorEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawIterator struct { + Event *IZetaConnectorEventsWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdraw represents a Withdraw event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawIterator{contract: _IZetaConnectorEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdraw) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdraw(log types.Log) (*IZetaConnectorEventsWithdraw, error) { + event := new(IZetaConnectorEventsWithdraw) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IZetaConnectorEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndCallIterator struct { + Event *IZetaConnectorEventsWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawAndCallIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdrawAndCall) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IZetaConnectorEventsWithdrawAndCall, error) { + event := new(IZetaConnectorEventsWithdrawAndCall) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IZetaConnectorEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndRevertIterator struct { + Event *IZetaConnectorEventsWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawAndRevertIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdrawAndRevert) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IZetaConnectorEventsWithdrawAndRevert, error) { + event := new(IZetaConnectorEventsWithdrawAndRevert) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go index cbc1e8c0..0b1bf2e1 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620013b3380380620013b3833981810160405281019062000037919062000170565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a95750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200020a565b6000815190506200016a81620001f0565b92915050565b600080604083850312156200018a5762000189620001eb565b5b60006200019a8582860162000159565b9250506020620001ad8582860162000159565b9150509250929050565b6000620001c482620001cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001fb81620001b7565b81146200020757600080fd5b50565b60805160601c60a05160601c6111376200027c60003960008181610142015281816101c4015281816102a90152818161036e015281816103bf01528181610441015261051f015260008181610120015281816101880152818161034a0152818161039d015261040501526111376000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806302d5c89914610067578063106e629014610083578063116191b61461009f57806321e093b1146100bd5780635e3e9fef146100db578063743e0c9b146100f7575b600080fd5b610081600480360381019061007c9190610a62565b610113565b005b61009d60048036038101906100989190610a0f565b61029a565b005b6100a7610348565b6040516100b49190610d74565b60405180910390f35b6100c561036c565b6040516100d29190610cab565b60405180910390f35b6100f560048036038101906100f09190610a62565b610390565b005b610111600480360381019061010c9190610b17565b610517565b005b61011b610567565b6101867f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610207959493929190610cfd565b600060405180830381600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161028393929190610e4c565b60405180910390a261029361063d565b5050505050565b6102a2610567565b6102ed83837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103339190610e31565b60405180910390a261034361063d565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610398610567565b6104037f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610484959493929190610cfd565b600060405180830381600087803b15801561049e57600080fd5b505af11580156104b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161050093929190610e4c565b60405180910390a261051061063d565b5050505050565b6105643330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610647909392919063ffffffff16565b50565b600260005414156105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490610e11565b60405180910390fd5b6002600081905550565b6106388363a9059cbb60e01b84846040516024016105d6929190610d4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106d0565b505050565b6001600081905550565b6106ca846323b872dd60e01b85858560405160240161066893929190610cc6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106d0565b50505050565b6000610732826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107979092919063ffffffff16565b905060008151111561079257808060200190518101906107529190610aea565b610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078890610df1565b60405180910390fd5b5b505050565b60606107a684846000856107af565b90509392505050565b6060824710156107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90610db1565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161081d9190610c94565b60006040518083038185875af1925050503d806000811461085a576040519150601f19603f3d011682016040523d82523d6000602084013e61085f565b606091505b50915091506108708783838761087c565b92505050949350505050565b606083156108df576000835114156108d757610897856108f2565b6108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd90610dd1565b60405180910390fd5b5b8290506108ea565b6108e98383610915565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109285781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9190610d8f565b60405180910390fd5b600081359050610974816110a5565b92915050565b600081519050610989816110bc565b92915050565b60008135905061099e816110d3565b92915050565b60008083601f8401126109ba576109b9610f90565b5b8235905067ffffffffffffffff8111156109d7576109d6610f8b565b5b6020830191508360018202830111156109f3576109f2610f95565b5b9250929050565b600081359050610a09816110ea565b92915050565b600080600060608486031215610a2857610a27610f9f565b5b6000610a3686828701610965565b9350506020610a47868287016109fa565b9250506040610a588682870161098f565b9150509250925092565b600080600080600060808688031215610a7e57610a7d610f9f565b5b6000610a8c88828901610965565b9550506020610a9d888289016109fa565b945050604086013567ffffffffffffffff811115610abe57610abd610f9a565b5b610aca888289016109a4565b93509350506060610add8882890161098f565b9150509295509295909350565b600060208284031215610b0057610aff610f9f565b5b6000610b0e8482850161097a565b91505092915050565b600060208284031215610b2d57610b2c610f9f565b5b6000610b3b848285016109fa565b91505092915050565b610b4d81610ec1565b82525050565b6000610b5f8385610e94565b9350610b6c838584610f49565b610b7583610fa4565b840190509392505050565b6000610b8b82610e7e565b610b958185610ea5565b9350610ba5818560208601610f58565b80840191505092915050565b610bba81610f13565b82525050565b6000610bcb82610e89565b610bd58185610eb0565b9350610be5818560208601610f58565b610bee81610fa4565b840191505092915050565b6000610c06602683610eb0565b9150610c1182610fb5565b604082019050919050565b6000610c29601d83610eb0565b9150610c3482611004565b602082019050919050565b6000610c4c602a83610eb0565b9150610c578261102d565b604082019050919050565b6000610c6f601f83610eb0565b9150610c7a8261107c565b602082019050919050565b610c8e81610f09565b82525050565b6000610ca08284610b80565b915081905092915050565b6000602082019050610cc06000830184610b44565b92915050565b6000606082019050610cdb6000830186610b44565b610ce86020830185610b44565b610cf56040830184610c85565b949350505050565b6000608082019050610d126000830188610b44565b610d1f6020830187610b44565b610d2c6040830186610c85565b8181036060830152610d3f818486610b53565b90509695505050505050565b6000604082019050610d606000830185610b44565b610d6d6020830184610c85565b9392505050565b6000602082019050610d896000830184610bb1565b92915050565b60006020820190508181036000830152610da98184610bc0565b905092915050565b60006020820190508181036000830152610dca81610bf9565b9050919050565b60006020820190508181036000830152610dea81610c1c565b9050919050565b60006020820190508181036000830152610e0a81610c3f565b9050919050565b60006020820190508181036000830152610e2a81610c62565b9050919050565b6000602082019050610e466000830184610c85565b92915050565b6000604082019050610e616000830186610c85565b8181036020830152610e74818486610b53565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610ecc82610ee9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f1e82610f25565b9050919050565b6000610f3082610f37565b9050919050565b6000610f4282610ee9565b9050919050565b82818337600083830152505050565b60005b83811015610f76578082015181840152602081019050610f5b565b83811115610f85576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6110ae81610ec1565b81146110b957600080fd5b50565b6110c581610ed3565b81146110d057600080fd5b50565b6110dc81610edf565b81146110e757600080fd5b50565b6110f381610f09565b81146110fe57600080fd5b5056fea26469706673582212200e9dddf368c3ba5db7f48f5e58ca49b68962f70e56e54ab42ef1145f5ce62e6164736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b5060405162001462380380620014628339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c611196620002cc6000396000818161017b015281816101fd015281816102e2015281816103a70152818161041e015281816104a0015261057e015260008181610159015281816101c101528181610383015281816103fc015261046401526111966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610ac1565b61014c565b005b6100b860048036038101906100b39190610a6e565b6102d3565b005b6100c2610381565b6040516100cf9190610dd3565b60405180910390f35b6100e06103a5565b6040516100ed9190610d0a565b60405180910390f35b6100fe6103c9565b60405161010b9190610d0a565b60405180910390f35b61012e60048036038101906101299190610ac1565b6103ef565b005b61014a60048036038101906101459190610b76565b610576565b005b6101546105c6565b6101bf7f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610240959493929190610d5c565b600060405180830381600087803b15801561025a57600080fd5b505af115801561026e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102bc93929190610eab565b60405180910390a26102cc61069c565b5050505050565b6102db6105c6565b61032683837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161036c9190610e90565b60405180910390a261037c61069c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103f76105c6565b6104627f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016104e3959493929190610d5c565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161055f93929190610eab565b60405180910390a261056f61069c565b5050505050565b6105c33330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a6909392919063ffffffff16565b50565b6002600054141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060390610e70565b60405180910390fd5b6002600081905550565b6106978363a9059cbb60e01b8484604051602401610635929190610daa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b505050565b6001600081905550565b610729846323b872dd60e01b8585856040516024016106c793929190610d25565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b50505050565b6000610791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107f69092919063ffffffff16565b90506000815111156107f157808060200190518101906107b19190610b49565b6107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610e50565b60405180910390fd5b5b505050565b6060610805848460008561080e565b90509392505050565b606082471015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90610e10565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161087c9190610cf3565b60006040518083038185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b50915091506108cf878383876108db565b92505050949350505050565b6060831561093e57600083511415610936576108f685610951565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90610e30565b60405180910390fd5b5b829050610949565b6109488383610974565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109875781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190610dee565b60405180910390fd5b6000813590506109d381611104565b92915050565b6000815190506109e88161111b565b92915050565b6000813590506109fd81611132565b92915050565b60008083601f840112610a1957610a18610fef565b5b8235905067ffffffffffffffff811115610a3657610a35610fea565b5b602083019150836001820283011115610a5257610a51610ff4565b5b9250929050565b600081359050610a6881611149565b92915050565b600080600060608486031215610a8757610a86610ffe565b5b6000610a95868287016109c4565b9350506020610aa686828701610a59565b9250506040610ab7868287016109ee565b9150509250925092565b600080600080600060808688031215610add57610adc610ffe565b5b6000610aeb888289016109c4565b9550506020610afc88828901610a59565b945050604086013567ffffffffffffffff811115610b1d57610b1c610ff9565b5b610b2988828901610a03565b93509350506060610b3c888289016109ee565b9150509295509295909350565b600060208284031215610b5f57610b5e610ffe565b5b6000610b6d848285016109d9565b91505092915050565b600060208284031215610b8c57610b8b610ffe565b5b6000610b9a84828501610a59565b91505092915050565b610bac81610f20565b82525050565b6000610bbe8385610ef3565b9350610bcb838584610fa8565b610bd483611003565b840190509392505050565b6000610bea82610edd565b610bf48185610f04565b9350610c04818560208601610fb7565b80840191505092915050565b610c1981610f72565b82525050565b6000610c2a82610ee8565b610c348185610f0f565b9350610c44818560208601610fb7565b610c4d81611003565b840191505092915050565b6000610c65602683610f0f565b9150610c7082611014565b604082019050919050565b6000610c88601d83610f0f565b9150610c9382611063565b602082019050919050565b6000610cab602a83610f0f565b9150610cb68261108c565b604082019050919050565b6000610cce601f83610f0f565b9150610cd9826110db565b602082019050919050565b610ced81610f68565b82525050565b6000610cff8284610bdf565b915081905092915050565b6000602082019050610d1f6000830184610ba3565b92915050565b6000606082019050610d3a6000830186610ba3565b610d476020830185610ba3565b610d546040830184610ce4565b949350505050565b6000608082019050610d716000830188610ba3565b610d7e6020830187610ba3565b610d8b6040830186610ce4565b8181036060830152610d9e818486610bb2565b90509695505050505050565b6000604082019050610dbf6000830185610ba3565b610dcc6020830184610ce4565b9392505050565b6000602082019050610de86000830184610c10565b92915050565b60006020820190508181036000830152610e088184610c1f565b905092915050565b60006020820190508181036000830152610e2981610c58565b9050919050565b60006020820190508181036000830152610e4981610c7b565b9050919050565b60006020820190508181036000830152610e6981610c9e565b9050919050565b60006020820190508181036000830152610e8981610cc1565b9050919050565b6000602082019050610ea56000830184610ce4565b92915050565b6000604082019050610ec06000830186610ce4565b8181036020830152610ed3818486610bb2565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f2b82610f48565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f7d82610f84565b9050919050565b6000610f8f82610f96565b9050919050565b6000610fa182610f48565b9050919050565b82818337600083830152505050565b60005b83811015610fd5578082015181840152602081019050610fba565b83811115610fe4576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61110d81610f20565b811461111857600080fd5b50565b61112481610f32565b811461112f57600080fd5b50565b61113b81610f3e565b811461114657600080fd5b50565b61115281610f68565b811461115d57600080fd5b5056fea264697066735822122044b5ad5eb3ea013245cb991fc849afd5dd201a8100905d349382c0c2e00c25e264736f6c63430008070033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNativeABI = ZetaConnectorNativeMetaData.ABI var ZetaConnectorNativeBin = ZetaConnectorNativeMetaData.Bin // DeployZetaConnectorNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNative to it. -func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { +func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { parsed, err := ZetaConnectorNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress) if err != nil { return common.Address{}, nil, nil, err } @@ -233,6 +233,37 @@ func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) Gateway() (common. return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) } +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) +} + // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go b/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go index 5fe23ae9..61c83283 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go @@ -31,7 +31,7 @@ var ( // ZetaConnectorNewBaseMetaData contains all meta data concerning the ZetaConnectorNewBase contract. var ZetaConnectorNewBaseMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // ZetaConnectorNewBaseABI is the input ABI used to generate the binding from. @@ -211,6 +211,37 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) Gateway() (commo return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) } +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNewBase.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +} + // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go index 4ca39e05..15476179 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c060405234801561001057600080fd5b5060405162000e2a38038062000e2a83398181016040528101906100349190610168565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806100a55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156100dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506101f6565b600081519050610162816101df565b92915050565b6000806040838503121561017f5761017e6101da565b5b600061018d85828601610153565b925050602061019e85828601610153565b9150509250929050565b60006101b3826101ba565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6101e8816101a8565b81146101f357600080fd5b50565b60805160601c60a05160601c610bc2620002686000396000818161011d01528181610208015281816102e8015281816103f6015281816104220152818161050d01526105e5015260008181610159015281816101cc015281816103d20152818161045e01526104d10152610bc26000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806302d5c89914610067578063106e629014610083578063116191b61461009f57806321e093b1146100bd5780635e3e9fef146100db578063743e0c9b146100f7575b600080fd5b610081600480360381019061007c91906107b5565b610113565b005b61009d60048036038101906100989190610762565b6102de565b005b6100a76103d0565b6040516100b491906109bf565b60405180910390f35b6100c56103f4565b6040516100d291906108f6565b60405180910390f35b6100f560048036038101906100f091906107b5565b610418565b005b610111600480360381019061010c919061083d565b6105e3565b005b61011b610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161019893929190610988565b600060405180830381600087803b1580156101b257600080fd5b505af11580156101c6573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161024b959493929190610911565b600060405180830381600087803b15801561026557600080fd5b505af1158015610279573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102c793929190610a15565b60405180910390a26102d76106c3565b5050505050565b6102e6610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161034393929190610988565b600060405180830381600087803b15801561035d57600080fd5b505af1158015610371573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103bb91906109fa565b60405180910390a26103cb6106c3565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610420610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161049d93929190610988565b600060405180830381600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610550959493929190610911565b600060405180830381600087803b15801561056a57600080fd5b505af115801561057e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516105cc93929190610a15565b60405180910390a26105dc6106c3565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161063e92919061095f565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b5050505050565b600260005414156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906109da565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506106dc81610b47565b92915050565b6000813590506106f181610b5e565b92915050565b60008083601f84011261070d5761070c610af9565b5b8235905067ffffffffffffffff81111561072a57610729610af4565b5b60208301915083600182028301111561074657610745610afe565b5b9250929050565b60008135905061075c81610b75565b92915050565b60008060006060848603121561077b5761077a610b08565b5b6000610789868287016106cd565b935050602061079a8682870161074d565b92505060406107ab868287016106e2565b9150509250925092565b6000806000806000608086880312156107d1576107d0610b08565b5b60006107df888289016106cd565b95505060206107f08882890161074d565b945050604086013567ffffffffffffffff81111561081157610810610b03565b5b61081d888289016106f7565b93509350506060610830888289016106e2565b9150509295509295909350565b60006020828403121561085357610852610b08565b5b60006108618482850161074d565b91505092915050565b61087381610a69565b82525050565b61088281610a7b565b82525050565b60006108948385610a47565b93506108a1838584610ae5565b6108aa83610b0d565b840190509392505050565b6108be81610aaf565b82525050565b60006108d1601f83610a58565b91506108dc82610b1e565b602082019050919050565b6108f081610aa5565b82525050565b600060208201905061090b600083018461086a565b92915050565b6000608082019050610926600083018861086a565b610933602083018761086a565b61094060408301866108e7565b8181036060830152610953818486610888565b90509695505050505050565b6000604082019050610974600083018561086a565b61098160208301846108e7565b9392505050565b600060608201905061099d600083018661086a565b6109aa60208301856108e7565b6109b76040830184610879565b949350505050565b60006020820190506109d460008301846108b5565b92915050565b600060208201905081810360008301526109f3816108c4565b9050919050565b6000602082019050610a0f60008301846108e7565b92915050565b6000604082019050610a2a60008301866108e7565b8181036020830152610a3d818486610888565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610a7482610a85565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610aba82610ac1565b9050919050565b6000610acc82610ad3565b9050919050565b6000610ade82610a85565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610b5081610a69565b8114610b5b57600080fd5b50565b610b6781610a7b565b8114610b7257600080fd5b50565b610b7e81610aa5565b8114610b8957600080fd5b5056fea26469706673582212207419360613ac73b5058589625b8f7b6c4071be5eb2e75aa5b04480ab384dc33b64736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b5060405162000eed38038062000eed8339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c610c21620002cc6000396000818161015601528181610241015281816103210152818161042f015281816104810152818161056c0152610644015260008181610192015281816102050152818161040b015281816104bd01526105300152610c216000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610814565b61014c565b005b6100b860048036038101906100b391906107c1565b610317565b005b6100c2610409565b6040516100cf9190610a1e565b60405180910390f35b6100e061042d565b6040516100ed9190610955565b60405180910390f35b6100fe610451565b60405161010b9190610955565b60405180910390f35b61012e60048036038101906101299190610814565b610477565b005b61014a6004803603810190610145919061089c565b610642565b005b6101546106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016101d1939291906109e7565b600060405180830381600087803b1580156101eb57600080fd5b505af11580156101ff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610284959493929190610970565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161030093929190610a74565b60405180910390a2610310610722565b5050505050565b61031f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161037c939291906109e7565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103f49190610a59565b60405180910390a2610404610722565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016104fc939291906109e7565b600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016105af959493929190610970565b600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161062b93929190610a74565b60405180910390a261063b610722565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161069d9291906109be565b600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050565b60026000541415610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90610a39565b60405180910390fd5b6002600081905550565b6001600081905550565b60008135905061073b81610ba6565b92915050565b60008135905061075081610bbd565b92915050565b60008083601f84011261076c5761076b610b58565b5b8235905067ffffffffffffffff81111561078957610788610b53565b5b6020830191508360018202830111156107a5576107a4610b5d565b5b9250929050565b6000813590506107bb81610bd4565b92915050565b6000806000606084860312156107da576107d9610b67565b5b60006107e88682870161072c565b93505060206107f9868287016107ac565b925050604061080a86828701610741565b9150509250925092565b6000806000806000608086880312156108305761082f610b67565b5b600061083e8882890161072c565b955050602061084f888289016107ac565b945050604086013567ffffffffffffffff8111156108705761086f610b62565b5b61087c88828901610756565b9350935050606061088f88828901610741565b9150509295509295909350565b6000602082840312156108b2576108b1610b67565b5b60006108c0848285016107ac565b91505092915050565b6108d281610ac8565b82525050565b6108e181610ada565b82525050565b60006108f38385610aa6565b9350610900838584610b44565b61090983610b6c565b840190509392505050565b61091d81610b0e565b82525050565b6000610930601f83610ab7565b915061093b82610b7d565b602082019050919050565b61094f81610b04565b82525050565b600060208201905061096a60008301846108c9565b92915050565b600060808201905061098560008301886108c9565b61099260208301876108c9565b61099f6040830186610946565b81810360608301526109b28184866108e7565b90509695505050505050565b60006040820190506109d360008301856108c9565b6109e06020830184610946565b9392505050565b60006060820190506109fc60008301866108c9565b610a096020830185610946565b610a1660408301846108d8565b949350505050565b6000602082019050610a336000830184610914565b92915050565b60006020820190508181036000830152610a5281610923565b9050919050565b6000602082019050610a6e6000830184610946565b92915050565b6000604082019050610a896000830186610946565b8181036020830152610a9c8184866108e7565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ad382610ae4565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610b1982610b20565b9050919050565b6000610b2b82610b32565b9050919050565b6000610b3d82610ae4565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610baf81610ac8565b8114610bba57600080fd5b50565b610bc681610ada565b8114610bd157600080fd5b50565b610bdd81610b04565b8114610be857600080fd5b5056fea264697066735822122053fd60fbc685af8498c80af0717c1c37738558c0c31648ff6836e9afd85bce3064736f6c63430008070033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNonNativeABI = ZetaConnectorNonNativeMetaData.ABI var ZetaConnectorNonNativeBin = ZetaConnectorNonNativeMetaData.Bin // DeployZetaConnectorNonNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNative to it. -func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { +func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.Contract return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress) if err != nil { return common.Address{}, nil, nil, err } @@ -233,6 +233,37 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) Gateway() (c return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) } +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) +} + // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/test/prototypes/GatewayEVMUniswap.spec.ts b/test/prototypes/GatewayEVMUniswap.spec.ts index 820c1654..57267b2a 100644 --- a/test/prototypes/GatewayEVMUniswap.spec.ts +++ b/test/prototypes/GatewayEVMUniswap.spec.ts @@ -65,9 +65,9 @@ describe("Uniswap Integration with GatewayEVM", function () { initializer: "initialize", kind: "uups", })) as GatewayEVM; - custody = (await ERC20CustodyNew.deploy(gateway.address)) as ERC20CustodyNew; + custody = (await ERC20CustodyNew.deploy(gateway.address, tssAddress.address)) as ERC20CustodyNew; gateway.setCustody(custody.address); - const zetaConnector = await ZetaConnector.deploy(gateway.address, zeta.address); + const zetaConnector = await ZetaConnector.deploy(gateway.address, zeta.address, tssAddress.address); gateway.setConnector(zetaConnector.address); // Transfer some tokens to the custody contract @@ -87,7 +87,7 @@ describe("Uniswap Integration with GatewayEVM", function () { ]); // Withdraw and call - await custody.withdrawAndCall(tokenA.address, router.address, amountIn, data); + await custody.connect(tssAddress).withdrawAndCall(tokenA.address, router.address, amountIn, data); // Verify the destination address received the tokens const destBalance = await tokenB.balanceOf(addr2.address); diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol index 5baedbf6..7328e194 100644 --- a/testFoundry/GatewayEVM.t.sol +++ b/testFoundry/GatewayEVM.t.sol @@ -46,7 +46,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver )); gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); gateway.setCustody(address(custody)); @@ -418,7 +418,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR )); gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); diff --git a/testFoundry/GatewayEVMUpgrade.t.sol b/testFoundry/GatewayEVMUpgrade.t.sol index 1f0338e5..aad4ec45 100644 --- a/testFoundry/GatewayEVMUpgrade.t.sol +++ b/testFoundry/GatewayEVMUpgrade.t.sol @@ -47,7 +47,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta)); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); gateway.setCustody(address(custody)); diff --git a/testFoundry/GatewayEVMZEVM.t.sol b/testFoundry/GatewayEVMZEVM.t.sol index f5a5e576..92e38aa7 100644 --- a/testFoundry/GatewayEVMZEVM.t.sol +++ b/testFoundry/GatewayEVMZEVM.t.sol @@ -63,7 +63,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate )); gatewayEVM = GatewayEVM(proxyEVM); custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta)); + zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); gatewayEVM.setCustody(address(custody)); gatewayEVM.setConnector(address(zetaConnector)); diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol index 2ae5e3ad..d1d69383 100644 --- a/testFoundry/ZetaConnectorNative.t.sol +++ b/testFoundry/ZetaConnectorNative.t.sol @@ -44,7 +44,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, )); gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken)); + zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress); receiver = new ReceiverEVM(); diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index 278afd26..7c0f3ef1 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -45,7 +45,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent )); gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken)); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); vm.prank(tssAddress); zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); diff --git a/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts b/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts index 4a8c8569..99bed03f 100644 --- a/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts +++ b/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts @@ -30,6 +30,7 @@ import type { export interface ERC20CustodyNewInterface extends utils.Interface { functions: { "gateway()": FunctionFragment; + "tssAddress()": FunctionFragment; "withdraw(address,address,uint256)": FunctionFragment; "withdrawAndCall(address,address,uint256,bytes)": FunctionFragment; "withdrawAndRevert(address,address,uint256,bytes)": FunctionFragment; @@ -38,12 +39,17 @@ export interface ERC20CustodyNewInterface extends utils.Interface { getFunction( nameOrSignatureOrTopic: | "gateway" + | "tssAddress" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" ): FunctionFragment; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; encodeFunctionData( functionFragment: "withdraw", values: [ @@ -72,6 +78,7 @@ export interface ERC20CustodyNewInterface extends utils.Interface { ): string; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -161,6 +168,8 @@ export interface ERC20CustodyNew extends BaseContract { functions: { gateway(overrides?: CallOverrides): Promise<[string]>; + tssAddress(overrides?: CallOverrides): Promise<[string]>; + withdraw( token: PromiseOrValue, to: PromiseOrValue, @@ -187,6 +196,8 @@ export interface ERC20CustodyNew extends BaseContract { gateway(overrides?: CallOverrides): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( token: PromiseOrValue, to: PromiseOrValue, @@ -213,6 +224,8 @@ export interface ERC20CustodyNew extends BaseContract { callStatic: { gateway(overrides?: CallOverrides): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( token: PromiseOrValue, to: PromiseOrValue, @@ -279,6 +292,8 @@ export interface ERC20CustodyNew extends BaseContract { estimateGas: { gateway(overrides?: CallOverrides): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( token: PromiseOrValue, to: PromiseOrValue, @@ -306,6 +321,8 @@ export interface ERC20CustodyNew extends BaseContract { populateTransaction: { gateway(overrides?: CallOverrides): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( token: PromiseOrValue, to: PromiseOrValue, diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts new file mode 100644 index 00000000..6791a1db --- /dev/null +++ b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC20CustodyNewErrorsInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface IERC20CustodyNewErrors extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC20CustodyNewErrorsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts new file mode 100644 index 00000000..68bcc9d8 --- /dev/null +++ b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts @@ -0,0 +1,140 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, BigNumber, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC20CustodyNewEventsInterface extends utils.Interface { + functions: {}; + + events: { + "Withdraw(address,address,uint256)": EventFragment; + "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; + "WithdrawAndRevert(address,address,uint256,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; +} + +export interface WithdrawEventObject { + token: string; + to: string; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent< + [string, string, BigNumber], + WithdrawEventObject +>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface WithdrawAndCallEventObject { + token: string; + to: string; + amount: BigNumber; + data: string; +} +export type WithdrawAndCallEvent = TypedEvent< + [string, string, BigNumber, string], + WithdrawAndCallEventObject +>; + +export type WithdrawAndCallEventFilter = TypedEventFilter; + +export interface WithdrawAndRevertEventObject { + token: string; + to: string; + amount: BigNumber; + data: string; +} +export type WithdrawAndRevertEvent = TypedEvent< + [string, string, BigNumber, string], + WithdrawAndRevertEventObject +>; + +export type WithdrawAndRevertEventFilter = + TypedEventFilter; + +export interface IERC20CustodyNewEvents extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC20CustodyNewEventsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "Withdraw(address,address,uint256)"( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null + ): WithdrawEventFilter; + Withdraw( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null + ): WithdrawEventFilter; + + "WithdrawAndCall(address,address,uint256,bytes)"( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndCallEventFilter; + WithdrawAndCall( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndCallEventFilter; + + "WithdrawAndRevert(address,address,uint256,bytes)"( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndRevertEventFilter; + WithdrawAndRevert( + token?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndRevertEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts new file mode 100644 index 00000000..8106a206 --- /dev/null +++ b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC20CustodyNewErrors } from "./IERC20CustodyNewErrors"; +export type { IERC20CustodyNewEvents } from "./IERC20CustodyNewEvents"; diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts new file mode 100644 index 00000000..555e26e0 --- /dev/null +++ b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts @@ -0,0 +1,131 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, BigNumber, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IZetaConnectorEventsInterface extends utils.Interface { + functions: {}; + + events: { + "Withdraw(address,uint256)": EventFragment; + "WithdrawAndCall(address,uint256,bytes)": EventFragment; + "WithdrawAndRevert(address,uint256,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; +} + +export interface WithdrawEventObject { + to: string; + amount: BigNumber; +} +export type WithdrawEvent = TypedEvent< + [string, BigNumber], + WithdrawEventObject +>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface WithdrawAndCallEventObject { + to: string; + amount: BigNumber; + data: string; +} +export type WithdrawAndCallEvent = TypedEvent< + [string, BigNumber, string], + WithdrawAndCallEventObject +>; + +export type WithdrawAndCallEventFilter = TypedEventFilter; + +export interface WithdrawAndRevertEventObject { + to: string; + amount: BigNumber; + data: string; +} +export type WithdrawAndRevertEvent = TypedEvent< + [string, BigNumber, string], + WithdrawAndRevertEventObject +>; + +export type WithdrawAndRevertEventFilter = + TypedEventFilter; + +export interface IZetaConnectorEvents extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IZetaConnectorEventsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "Withdraw(address,uint256)"( + to?: PromiseOrValue | null, + amount?: null + ): WithdrawEventFilter; + Withdraw( + to?: PromiseOrValue | null, + amount?: null + ): WithdrawEventFilter; + + "WithdrawAndCall(address,uint256,bytes)"( + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndCallEventFilter; + WithdrawAndCall( + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndCallEventFilter; + + "WithdrawAndRevert(address,uint256,bytes)"( + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndRevertEventFilter; + WithdrawAndRevert( + to?: PromiseOrValue | null, + amount?: null, + data?: null + ): WithdrawAndRevertEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts new file mode 100644 index 00000000..eb97bbe0 --- /dev/null +++ b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IZetaConnectorEvents } from "./IZetaConnectorEvents"; diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts b/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts index bd454102..80eca2cf 100644 --- a/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts +++ b/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts @@ -31,6 +31,7 @@ export interface ZetaConnectorNativeInterface extends utils.Interface { functions: { "gateway()": FunctionFragment; "receiveTokens(uint256)": FunctionFragment; + "tssAddress()": FunctionFragment; "withdraw(address,uint256,bytes32)": FunctionFragment; "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; @@ -41,6 +42,7 @@ export interface ZetaConnectorNativeInterface extends utils.Interface { nameOrSignatureOrTopic: | "gateway" | "receiveTokens" + | "tssAddress" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -52,6 +54,10 @@ export interface ZetaConnectorNativeInterface extends utils.Interface { functionFragment: "receiveTokens", values: [PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; encodeFunctionData( functionFragment: "withdraw", values: [ @@ -85,6 +91,7 @@ export interface ZetaConnectorNativeInterface extends utils.Interface { functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -177,6 +184,8 @@ export interface ZetaConnectorNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise<[string]>; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -210,6 +219,8 @@ export interface ZetaConnectorNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -243,6 +254,8 @@ export interface ZetaConnectorNative extends BaseContract { overrides?: CallOverrides ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -310,6 +323,8 @@ export interface ZetaConnectorNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -344,6 +359,8 @@ export interface ZetaConnectorNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts b/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts index f2d9ae45..cfd60395 100644 --- a/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts +++ b/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts @@ -31,6 +31,7 @@ export interface ZetaConnectorNewBaseInterface extends utils.Interface { functions: { "gateway()": FunctionFragment; "receiveTokens(uint256)": FunctionFragment; + "tssAddress()": FunctionFragment; "withdraw(address,uint256,bytes32)": FunctionFragment; "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; @@ -41,6 +42,7 @@ export interface ZetaConnectorNewBaseInterface extends utils.Interface { nameOrSignatureOrTopic: | "gateway" | "receiveTokens" + | "tssAddress" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -52,6 +54,10 @@ export interface ZetaConnectorNewBaseInterface extends utils.Interface { functionFragment: "receiveTokens", values: [PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; encodeFunctionData( functionFragment: "withdraw", values: [ @@ -85,6 +91,7 @@ export interface ZetaConnectorNewBaseInterface extends utils.Interface { functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -177,6 +184,8 @@ export interface ZetaConnectorNewBase extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise<[string]>; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -210,6 +219,8 @@ export interface ZetaConnectorNewBase extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -243,6 +254,8 @@ export interface ZetaConnectorNewBase extends BaseContract { overrides?: CallOverrides ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -310,6 +323,8 @@ export interface ZetaConnectorNewBase extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -344,6 +359,8 @@ export interface ZetaConnectorNewBase extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts b/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts index 60cceb56..fa4f18bc 100644 --- a/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts +++ b/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts @@ -31,6 +31,7 @@ export interface ZetaConnectorNonNativeInterface extends utils.Interface { functions: { "gateway()": FunctionFragment; "receiveTokens(uint256)": FunctionFragment; + "tssAddress()": FunctionFragment; "withdraw(address,uint256,bytes32)": FunctionFragment; "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; @@ -41,6 +42,7 @@ export interface ZetaConnectorNonNativeInterface extends utils.Interface { nameOrSignatureOrTopic: | "gateway" | "receiveTokens" + | "tssAddress" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -52,6 +54,10 @@ export interface ZetaConnectorNonNativeInterface extends utils.Interface { functionFragment: "receiveTokens", values: [PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; encodeFunctionData( functionFragment: "withdraw", values: [ @@ -85,6 +91,7 @@ export interface ZetaConnectorNonNativeInterface extends utils.Interface { functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -177,6 +184,8 @@ export interface ZetaConnectorNonNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise<[string]>; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -210,6 +219,8 @@ export interface ZetaConnectorNonNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -243,6 +254,8 @@ export interface ZetaConnectorNonNative extends BaseContract { overrides?: CallOverrides ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -310,6 +323,8 @@ export interface ZetaConnectorNonNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, @@ -344,6 +359,8 @@ export interface ZetaConnectorNonNative extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + tssAddress(overrides?: CallOverrides): Promise; + withdraw( to: PromiseOrValue, amount: PromiseOrValue, diff --git a/typechain-types/contracts/prototypes/evm/index.ts b/typechain-types/contracts/prototypes/evm/index.ts index a75a6c24..bac93995 100644 --- a/typechain-types/contracts/prototypes/evm/index.ts +++ b/typechain-types/contracts/prototypes/evm/index.ts @@ -1,10 +1,14 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; +export type { ierc20CustodyNewSol }; import type * as iGatewayEvmSol from "./IGatewayEVM.sol"; export type { iGatewayEvmSol }; import type * as iReceiverEvmSol from "./IReceiverEVM.sol"; export type { iReceiverEvmSol }; +import type * as iZetaConnectorSol from "./IZetaConnector.sol"; +export type { iZetaConnectorSol }; export type { ERC20CustodyNew } from "./ERC20CustodyNew"; export type { GatewayEVM } from "./GatewayEVM"; export type { GatewayEVMUpgradeTest } from "./GatewayEVMUpgradeTest"; diff --git a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts index ad58be45..0c59a62b 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts @@ -17,10 +17,20 @@ const _abi = [ name: "_gateway", type: "address", }, + { + internalType: "address", + name: "_tssAddress", + type: "address", + }, ], stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -126,6 +136,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "tssAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -208,7 +231,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200107f3803806200107f833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ee4806200019b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063116191b61461005157806321fc65f21461006f578063c8a023621461008b578063d9caed12146100a7575b600080fd5b6100596100c3565b6040516100669190610b42565b60405180910390f35b610089600480360381019061008491906108af565b6100e9565b005b6100a560048036038101906100a091906108af565b61024b565b005b6100c160048036038101906100bc919061085c565b6103ad565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100f1610452565b61013e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101a1959493929190610acb565b600060405180830381600087803b1580156101bb57600080fd5b505af11580156101cf573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023493929190610c1a565b60405180910390a3610244610528565b5050505050565b610253610452565b6102a0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610303959493929190610acb565b600060405180830381600087803b15801561031d57600080fd5b505af1158015610331573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c885858560405161039693929190610c1a565b60405180910390a36103a6610528565b5050505050565b6103b5610452565b6103e082828573ffffffffffffffffffffffffffffffffffffffff166104a29092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161043d9190610bff565b60405180910390a361044d610528565b505050565b60026000541415610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048f90610bdf565b60405180910390fd5b6002600081905550565b6105238363a9059cbb60e01b84846040516024016104c1929190610b19565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610532565b505050565b6001600081905550565b6000610594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105f99092919063ffffffff16565b90506000815111156105f457808060200190518101906105b49190610937565b6105f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ea90610bbf565b60405180910390fd5b5b505050565b60606106088484600085610611565b90509392505050565b606082471015610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d90610b7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161067f9190610ab4565b60006040518083038185875af1925050503d80600081146106bc576040519150601f19603f3d011682016040523d82523d6000602084013e6106c1565b606091505b50915091506106d2878383876106de565b92505050949350505050565b6060831561074157600083511415610739576106f985610754565b610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90610b9f565b60405180910390fd5b5b82905061074c565b61074b8383610777565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561078a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be9190610b5d565b60405180910390fd5b6000813590506107d681610e69565b92915050565b6000815190506107eb81610e80565b92915050565b60008083601f84011261080757610806610d54565b5b8235905067ffffffffffffffff81111561082457610823610d4f565b5b6020830191508360018202830111156108405761083f610d59565b5b9250929050565b60008135905061085681610e97565b92915050565b60008060006060848603121561087557610874610d63565b5b6000610883868287016107c7565b9350506020610894868287016107c7565b92505060406108a586828701610847565b9150509250925092565b6000806000806000608086880312156108cb576108ca610d63565b5b60006108d9888289016107c7565b95505060206108ea888289016107c7565b94505060406108fb88828901610847565b935050606086013567ffffffffffffffff81111561091c5761091b610d5e565b5b610928888289016107f1565b92509250509295509295909350565b60006020828403121561094d5761094c610d63565b5b600061095b848285016107dc565b91505092915050565b61096d81610c8f565b82525050565b600061097f8385610c62565b935061098c838584610d0d565b61099583610d68565b840190509392505050565b60006109ab82610c4c565b6109b58185610c73565b93506109c5818560208601610d1c565b80840191505092915050565b6109da81610cd7565b82525050565b60006109eb82610c57565b6109f58185610c7e565b9350610a05818560208601610d1c565b610a0e81610d68565b840191505092915050565b6000610a26602683610c7e565b9150610a3182610d79565b604082019050919050565b6000610a49601d83610c7e565b9150610a5482610dc8565b602082019050919050565b6000610a6c602a83610c7e565b9150610a7782610df1565b604082019050919050565b6000610a8f601f83610c7e565b9150610a9a82610e40565b602082019050919050565b610aae81610ccd565b82525050565b6000610ac082846109a0565b915081905092915050565b6000608082019050610ae06000830188610964565b610aed6020830187610964565b610afa6040830186610aa5565b8181036060830152610b0d818486610973565b90509695505050505050565b6000604082019050610b2e6000830185610964565b610b3b6020830184610aa5565b9392505050565b6000602082019050610b5760008301846109d1565b92915050565b60006020820190508181036000830152610b7781846109e0565b905092915050565b60006020820190508181036000830152610b9881610a19565b9050919050565b60006020820190508181036000830152610bb881610a3c565b9050919050565b60006020820190508181036000830152610bd881610a5f565b9050919050565b60006020820190508181036000830152610bf881610a82565b9050919050565b6000602082019050610c146000830184610aa5565b92915050565b6000604082019050610c2f6000830186610aa5565b8181036020830152610c42818486610973565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c9a82610cad565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ce282610ce9565b9050919050565b6000610cf482610cfb565b9050919050565b6000610d0682610cad565b9050919050565b82818337600083830152505050565b60005b83811015610d3a578082015181840152602081019050610d1f565b83811115610d49576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e7281610c8f565b8114610e7d57600080fd5b50565b610e8981610ca1565b8114610e9457600080fd5b50565b610ea081610ccd565b8114610eab57600080fd5b5056fea264697066735822122004af522ce13639b271307b4d29ba4ac4a6b589721315ec5393584474746ecd2864736f6c63430008070033"; + "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033"; type ERC20CustodyNewConstructorParams = | [signer?: Signer] @@ -229,15 +252,21 @@ export class ERC20CustodyNew__factory extends ContractFactory { override deploy( _gateway: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { - return super.deploy(_gateway, overrides || {}) as Promise; + return super.deploy( + _gateway, + _tssAddress, + overrides || {} + ) as Promise; } override getDeployTransaction( _gateway: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { - return super.getDeployTransaction(_gateway, overrides || {}); + return super.getDeployTransaction(_gateway, _tssAddress, overrides || {}); } override attach(address: string): ERC20CustodyNew { return super.attach(address) as ERC20CustodyNew; diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts index 3c367941..87bd44ea 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts @@ -45,6 +45,11 @@ const _abi = [ name: "InsufficientETHAmount", type: "error", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -700,7 +705,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207a620a8f5e1407bdf259d6a98d79803d9d2c249529f99712b2a74e1bc0a940a664736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205f0f43e53336448ab426557838090dbeda3ef4efbf1448693a8f6b4fe7ba424264736f6c63430008070033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts index 9b9151ff..c6b322cd 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts @@ -45,6 +45,11 @@ const _abi = [ name: "InsufficientETHAmount", type: "error", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -675,7 +680,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613c4462000243600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108782611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220062def546691dc60b8b2347c044e9cea9bd00dadb4eab14ae756bd185359a69964736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b50169b86c27966b79749752335073f77dce5b27a3090e7ff49ca83964a05a8964736f6c63430008070033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts new file mode 100644 index 00000000..d751d847 --- /dev/null +++ b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts @@ -0,0 +1,40 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC20CustodyNewErrors, + IERC20CustodyNewErrorsInterface, +} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; + +const _abi = [ + { + inputs: [], + name: "InvalidSender", + type: "error", + }, + { + inputs: [], + name: "ZeroAddress", + type: "error", + }, +] as const; + +export class IERC20CustodyNewErrors__factory { + static readonly abi = _abi; + static createInterface(): IERC20CustodyNewErrorsInterface { + return new utils.Interface(_abi) as IERC20CustodyNewErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20CustodyNewErrors { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC20CustodyNewErrors; + } +} diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts new file mode 100644 index 00000000..aff1dbc0 --- /dev/null +++ b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts @@ -0,0 +1,117 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC20CustodyNewEvents, + IERC20CustodyNewEventsInterface, +} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Withdraw", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "WithdrawAndCall", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "WithdrawAndRevert", + type: "event", + }, +] as const; + +export class IERC20CustodyNewEvents__factory { + static readonly abi = _abi; + static createInterface(): IERC20CustodyNewEventsInterface { + return new utils.Interface(_abi) as IERC20CustodyNewEventsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20CustodyNewEvents { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC20CustodyNewEvents; + } +} diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts new file mode 100644 index 00000000..9f3d2112 --- /dev/null +++ b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC20CustodyNewErrors__factory } from "./IERC20CustodyNewErrors__factory"; +export { IERC20CustodyNewEvents__factory } from "./IERC20CustodyNewEvents__factory"; diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts index f7e393b3..43023c05 100644 --- a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts @@ -40,6 +40,11 @@ const _abi = [ name: "InsufficientETHAmount", type: "error", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts new file mode 100644 index 00000000..c7408d4c --- /dev/null +++ b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IZetaConnectorEvents, + IZetaConnectorEventsInterface, +} from "../../../../../contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Withdraw", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "WithdrawAndCall", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "WithdrawAndRevert", + type: "event", + }, +] as const; + +export class IZetaConnectorEvents__factory { + static readonly abi = _abi; + static createInterface(): IZetaConnectorEventsInterface { + return new utils.Interface(_abi) as IZetaConnectorEventsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IZetaConnectorEvents { + return new Contract( + address, + _abi, + signerOrProvider + ) as IZetaConnectorEvents; + } +} diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts new file mode 100644 index 00000000..a60ddc89 --- /dev/null +++ b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IZetaConnectorEvents__factory } from "./IZetaConnectorEvents__factory"; diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts index 059b97ae..d22c52f9 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts @@ -22,10 +22,20 @@ const _abi = [ name: "_zetaToken", type: "address", }, + { + internalType: "address", + name: "_tssAddress", + type: "address", + }, ], stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -126,6 +136,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "tssAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -221,7 +244,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620013b3380380620013b3833981810160405281019062000037919062000170565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a95750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200020a565b6000815190506200016a81620001f0565b92915050565b600080604083850312156200018a5762000189620001eb565b5b60006200019a8582860162000159565b9250506020620001ad8582860162000159565b9150509250929050565b6000620001c482620001cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001fb81620001b7565b81146200020757600080fd5b50565b60805160601c60a05160601c6111376200027c60003960008181610142015281816101c4015281816102a90152818161036e015281816103bf01528181610441015261051f015260008181610120015281816101880152818161034a0152818161039d015261040501526111376000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806302d5c89914610067578063106e629014610083578063116191b61461009f57806321e093b1146100bd5780635e3e9fef146100db578063743e0c9b146100f7575b600080fd5b610081600480360381019061007c9190610a62565b610113565b005b61009d60048036038101906100989190610a0f565b61029a565b005b6100a7610348565b6040516100b49190610d74565b60405180910390f35b6100c561036c565b6040516100d29190610cab565b60405180910390f35b6100f560048036038101906100f09190610a62565b610390565b005b610111600480360381019061010c9190610b17565b610517565b005b61011b610567565b6101867f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610207959493929190610cfd565b600060405180830381600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161028393929190610e4c565b60405180910390a261029361063d565b5050505050565b6102a2610567565b6102ed83837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103339190610e31565b60405180910390a261034361063d565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610398610567565b6104037f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105b79092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610484959493929190610cfd565b600060405180830381600087803b15801561049e57600080fd5b505af11580156104b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161050093929190610e4c565b60405180910390a261051061063d565b5050505050565b6105643330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610647909392919063ffffffff16565b50565b600260005414156105ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a490610e11565b60405180910390fd5b6002600081905550565b6106388363a9059cbb60e01b84846040516024016105d6929190610d4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106d0565b505050565b6001600081905550565b6106ca846323b872dd60e01b85858560405160240161066893929190610cc6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106d0565b50505050565b6000610732826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107979092919063ffffffff16565b905060008151111561079257808060200190518101906107529190610aea565b610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078890610df1565b60405180910390fd5b5b505050565b60606107a684846000856107af565b90509392505050565b6060824710156107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90610db1565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161081d9190610c94565b60006040518083038185875af1925050503d806000811461085a576040519150601f19603f3d011682016040523d82523d6000602084013e61085f565b606091505b50915091506108708783838761087c565b92505050949350505050565b606083156108df576000835114156108d757610897856108f2565b6108d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cd90610dd1565b60405180910390fd5b5b8290506108ea565b6108e98383610915565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109285781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9190610d8f565b60405180910390fd5b600081359050610974816110a5565b92915050565b600081519050610989816110bc565b92915050565b60008135905061099e816110d3565b92915050565b60008083601f8401126109ba576109b9610f90565b5b8235905067ffffffffffffffff8111156109d7576109d6610f8b565b5b6020830191508360018202830111156109f3576109f2610f95565b5b9250929050565b600081359050610a09816110ea565b92915050565b600080600060608486031215610a2857610a27610f9f565b5b6000610a3686828701610965565b9350506020610a47868287016109fa565b9250506040610a588682870161098f565b9150509250925092565b600080600080600060808688031215610a7e57610a7d610f9f565b5b6000610a8c88828901610965565b9550506020610a9d888289016109fa565b945050604086013567ffffffffffffffff811115610abe57610abd610f9a565b5b610aca888289016109a4565b93509350506060610add8882890161098f565b9150509295509295909350565b600060208284031215610b0057610aff610f9f565b5b6000610b0e8482850161097a565b91505092915050565b600060208284031215610b2d57610b2c610f9f565b5b6000610b3b848285016109fa565b91505092915050565b610b4d81610ec1565b82525050565b6000610b5f8385610e94565b9350610b6c838584610f49565b610b7583610fa4565b840190509392505050565b6000610b8b82610e7e565b610b958185610ea5565b9350610ba5818560208601610f58565b80840191505092915050565b610bba81610f13565b82525050565b6000610bcb82610e89565b610bd58185610eb0565b9350610be5818560208601610f58565b610bee81610fa4565b840191505092915050565b6000610c06602683610eb0565b9150610c1182610fb5565b604082019050919050565b6000610c29601d83610eb0565b9150610c3482611004565b602082019050919050565b6000610c4c602a83610eb0565b9150610c578261102d565b604082019050919050565b6000610c6f601f83610eb0565b9150610c7a8261107c565b602082019050919050565b610c8e81610f09565b82525050565b6000610ca08284610b80565b915081905092915050565b6000602082019050610cc06000830184610b44565b92915050565b6000606082019050610cdb6000830186610b44565b610ce86020830185610b44565b610cf56040830184610c85565b949350505050565b6000608082019050610d126000830188610b44565b610d1f6020830187610b44565b610d2c6040830186610c85565b8181036060830152610d3f818486610b53565b90509695505050505050565b6000604082019050610d606000830185610b44565b610d6d6020830184610c85565b9392505050565b6000602082019050610d896000830184610bb1565b92915050565b60006020820190508181036000830152610da98184610bc0565b905092915050565b60006020820190508181036000830152610dca81610bf9565b9050919050565b60006020820190508181036000830152610dea81610c1c565b9050919050565b60006020820190508181036000830152610e0a81610c3f565b9050919050565b60006020820190508181036000830152610e2a81610c62565b9050919050565b6000602082019050610e466000830184610c85565b92915050565b6000604082019050610e616000830186610c85565b8181036020830152610e74818486610b53565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610ecc82610ee9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f1e82610f25565b9050919050565b6000610f3082610f37565b9050919050565b6000610f4282610ee9565b9050919050565b82818337600083830152505050565b60005b83811015610f76578082015181840152602081019050610f5b565b83811115610f85576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6110ae81610ec1565b81146110b957600080fd5b50565b6110c581610ed3565b81146110d057600080fd5b50565b6110dc81610edf565b81146110e757600080fd5b50565b6110f381610f09565b81146110fe57600080fd5b5056fea26469706673582212200e9dddf368c3ba5db7f48f5e58ca49b68962f70e56e54ab42ef1145f5ce62e6164736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b5060405162001462380380620014628339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c611196620002cc6000396000818161017b015281816101fd015281816102e2015281816103a70152818161041e015281816104a0015261057e015260008181610159015281816101c101528181610383015281816103fc015261046401526111966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610ac1565b61014c565b005b6100b860048036038101906100b39190610a6e565b6102d3565b005b6100c2610381565b6040516100cf9190610dd3565b60405180910390f35b6100e06103a5565b6040516100ed9190610d0a565b60405180910390f35b6100fe6103c9565b60405161010b9190610d0a565b60405180910390f35b61012e60048036038101906101299190610ac1565b6103ef565b005b61014a60048036038101906101459190610b76565b610576565b005b6101546105c6565b6101bf7f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610240959493929190610d5c565b600060405180830381600087803b15801561025a57600080fd5b505af115801561026e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102bc93929190610eab565b60405180910390a26102cc61069c565b5050505050565b6102db6105c6565b61032683837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161036c9190610e90565b60405180910390a261037c61069c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103f76105c6565b6104627f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016104e3959493929190610d5c565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161055f93929190610eab565b60405180910390a261056f61069c565b5050505050565b6105c33330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a6909392919063ffffffff16565b50565b6002600054141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060390610e70565b60405180910390fd5b6002600081905550565b6106978363a9059cbb60e01b8484604051602401610635929190610daa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b505050565b6001600081905550565b610729846323b872dd60e01b8585856040516024016106c793929190610d25565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b50505050565b6000610791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107f69092919063ffffffff16565b90506000815111156107f157808060200190518101906107b19190610b49565b6107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610e50565b60405180910390fd5b5b505050565b6060610805848460008561080e565b90509392505050565b606082471015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90610e10565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161087c9190610cf3565b60006040518083038185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b50915091506108cf878383876108db565b92505050949350505050565b6060831561093e57600083511415610936576108f685610951565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90610e30565b60405180910390fd5b5b829050610949565b6109488383610974565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109875781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190610dee565b60405180910390fd5b6000813590506109d381611104565b92915050565b6000815190506109e88161111b565b92915050565b6000813590506109fd81611132565b92915050565b60008083601f840112610a1957610a18610fef565b5b8235905067ffffffffffffffff811115610a3657610a35610fea565b5b602083019150836001820283011115610a5257610a51610ff4565b5b9250929050565b600081359050610a6881611149565b92915050565b600080600060608486031215610a8757610a86610ffe565b5b6000610a95868287016109c4565b9350506020610aa686828701610a59565b9250506040610ab7868287016109ee565b9150509250925092565b600080600080600060808688031215610add57610adc610ffe565b5b6000610aeb888289016109c4565b9550506020610afc88828901610a59565b945050604086013567ffffffffffffffff811115610b1d57610b1c610ff9565b5b610b2988828901610a03565b93509350506060610b3c888289016109ee565b9150509295509295909350565b600060208284031215610b5f57610b5e610ffe565b5b6000610b6d848285016109d9565b91505092915050565b600060208284031215610b8c57610b8b610ffe565b5b6000610b9a84828501610a59565b91505092915050565b610bac81610f20565b82525050565b6000610bbe8385610ef3565b9350610bcb838584610fa8565b610bd483611003565b840190509392505050565b6000610bea82610edd565b610bf48185610f04565b9350610c04818560208601610fb7565b80840191505092915050565b610c1981610f72565b82525050565b6000610c2a82610ee8565b610c348185610f0f565b9350610c44818560208601610fb7565b610c4d81611003565b840191505092915050565b6000610c65602683610f0f565b9150610c7082611014565b604082019050919050565b6000610c88601d83610f0f565b9150610c9382611063565b602082019050919050565b6000610cab602a83610f0f565b9150610cb68261108c565b604082019050919050565b6000610cce601f83610f0f565b9150610cd9826110db565b602082019050919050565b610ced81610f68565b82525050565b6000610cff8284610bdf565b915081905092915050565b6000602082019050610d1f6000830184610ba3565b92915050565b6000606082019050610d3a6000830186610ba3565b610d476020830185610ba3565b610d546040830184610ce4565b949350505050565b6000608082019050610d716000830188610ba3565b610d7e6020830187610ba3565b610d8b6040830186610ce4565b8181036060830152610d9e818486610bb2565b90509695505050505050565b6000604082019050610dbf6000830185610ba3565b610dcc6020830184610ce4565b9392505050565b6000602082019050610de86000830184610c10565b92915050565b60006020820190508181036000830152610e088184610c1f565b905092915050565b60006020820190508181036000830152610e2981610c58565b9050919050565b60006020820190508181036000830152610e4981610c7b565b9050919050565b60006020820190508181036000830152610e6981610c9e565b9050919050565b60006020820190508181036000830152610e8981610cc1565b9050919050565b6000602082019050610ea56000830184610ce4565b92915050565b6000604082019050610ec06000830186610ce4565b8181036020830152610ed3818486610bb2565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f2b82610f48565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f7d82610f84565b9050919050565b6000610f8f82610f96565b9050919050565b6000610fa182610f48565b9050919050565b82818337600083830152505050565b60005b83811015610fd5578082015181840152602081019050610fba565b83811115610fe4576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61110d81610f20565b811461111857600080fd5b50565b61112481610f32565b811461112f57600080fd5b50565b61113b81610f3e565b811461114657600080fd5b50565b61115281610f68565b811461115d57600080fd5b5056fea264697066735822122044b5ad5eb3ea013245cb991fc849afd5dd201a8100905d349382c0c2e00c25e264736f6c63430008070033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] @@ -243,20 +266,28 @@ export class ZetaConnectorNative__factory extends ContractFactory { override deploy( _gateway: PromiseOrValue, _zetaToken: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { return super.deploy( _gateway, _zetaToken, + _tssAddress, overrides || {} ) as Promise; } override getDeployTransaction( _gateway: PromiseOrValue, _zetaToken: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { - return super.getDeployTransaction(_gateway, _zetaToken, overrides || {}); + return super.getDeployTransaction( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ); } override attach(address: string): ZetaConnectorNative { return super.attach(address) as ZetaConnectorNative; diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts index d0de9e91..1a3db640 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts @@ -10,6 +10,11 @@ import type { } from "../../../../contracts/prototypes/evm/ZetaConnectorNewBase"; const _abi = [ + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -110,6 +115,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "tssAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts index 053e64b9..b88e5e2d 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts @@ -22,10 +22,20 @@ const _abi = [ name: "_zetaToken", type: "address", }, + { + internalType: "address", + name: "_tssAddress", + type: "address", + }, ], stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [], + name: "InvalidSender", + type: "error", + }, { inputs: [], name: "ZeroAddress", @@ -126,6 +136,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "tssAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -221,7 +244,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405162000e2a38038062000e2a83398181016040528101906100349190610168565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806100a55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156100dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506101f6565b600081519050610162816101df565b92915050565b6000806040838503121561017f5761017e6101da565b5b600061018d85828601610153565b925050602061019e85828601610153565b9150509250929050565b60006101b3826101ba565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6101e8816101a8565b81146101f357600080fd5b50565b60805160601c60a05160601c610bc2620002686000396000818161011d01528181610208015281816102e8015281816103f6015281816104220152818161050d01526105e5015260008181610159015281816101cc015281816103d20152818161045e01526104d10152610bc26000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806302d5c89914610067578063106e629014610083578063116191b61461009f57806321e093b1146100bd5780635e3e9fef146100db578063743e0c9b146100f7575b600080fd5b610081600480360381019061007c91906107b5565b610113565b005b61009d60048036038101906100989190610762565b6102de565b005b6100a76103d0565b6040516100b491906109bf565b60405180910390f35b6100c56103f4565b6040516100d291906108f6565b60405180910390f35b6100f560048036038101906100f091906107b5565b610418565b005b610111600480360381019061010c919061083d565b6105e3565b005b61011b610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161019893929190610988565b600060405180830381600087803b1580156101b257600080fd5b505af11580156101c6573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161024b959493929190610911565b600060405180830381600087803b15801561026557600080fd5b505af1158015610279573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102c793929190610a15565b60405180910390a26102d76106c3565b5050505050565b6102e6610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161034393929190610988565b600060405180830381600087803b15801561035d57600080fd5b505af1158015610371573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103bb91906109fa565b60405180910390a26103cb6106c3565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610420610673565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161049d93929190610988565b600060405180830381600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610550959493929190610911565b600060405180830381600087803b15801561056a57600080fd5b505af115801561057e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516105cc93929190610a15565b60405180910390a26105dc6106c3565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161063e92919061095f565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b5050505050565b600260005414156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906109da565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506106dc81610b47565b92915050565b6000813590506106f181610b5e565b92915050565b60008083601f84011261070d5761070c610af9565b5b8235905067ffffffffffffffff81111561072a57610729610af4565b5b60208301915083600182028301111561074657610745610afe565b5b9250929050565b60008135905061075c81610b75565b92915050565b60008060006060848603121561077b5761077a610b08565b5b6000610789868287016106cd565b935050602061079a8682870161074d565b92505060406107ab868287016106e2565b9150509250925092565b6000806000806000608086880312156107d1576107d0610b08565b5b60006107df888289016106cd565b95505060206107f08882890161074d565b945050604086013567ffffffffffffffff81111561081157610810610b03565b5b61081d888289016106f7565b93509350506060610830888289016106e2565b9150509295509295909350565b60006020828403121561085357610852610b08565b5b60006108618482850161074d565b91505092915050565b61087381610a69565b82525050565b61088281610a7b565b82525050565b60006108948385610a47565b93506108a1838584610ae5565b6108aa83610b0d565b840190509392505050565b6108be81610aaf565b82525050565b60006108d1601f83610a58565b91506108dc82610b1e565b602082019050919050565b6108f081610aa5565b82525050565b600060208201905061090b600083018461086a565b92915050565b6000608082019050610926600083018861086a565b610933602083018761086a565b61094060408301866108e7565b8181036060830152610953818486610888565b90509695505050505050565b6000604082019050610974600083018561086a565b61098160208301846108e7565b9392505050565b600060608201905061099d600083018661086a565b6109aa60208301856108e7565b6109b76040830184610879565b949350505050565b60006020820190506109d460008301846108b5565b92915050565b600060208201905081810360008301526109f3816108c4565b9050919050565b6000602082019050610a0f60008301846108e7565b92915050565b6000604082019050610a2a60008301866108e7565b8181036020830152610a3d818486610888565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610a7482610a85565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610aba82610ac1565b9050919050565b6000610acc82610ad3565b9050919050565b6000610ade82610a85565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610b5081610a69565b8114610b5b57600080fd5b50565b610b6781610a7b565b8114610b7257600080fd5b50565b610b7e81610aa5565b8114610b8957600080fd5b5056fea26469706673582212207419360613ac73b5058589625b8f7b6c4071be5eb2e75aa5b04480ab384dc33b64736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b5060405162000eed38038062000eed8339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c610c21620002cc6000396000818161015601528181610241015281816103210152818161042f015281816104810152818161056c0152610644015260008181610192015281816102050152818161040b015281816104bd01526105300152610c216000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610814565b61014c565b005b6100b860048036038101906100b391906107c1565b610317565b005b6100c2610409565b6040516100cf9190610a1e565b60405180910390f35b6100e061042d565b6040516100ed9190610955565b60405180910390f35b6100fe610451565b60405161010b9190610955565b60405180910390f35b61012e60048036038101906101299190610814565b610477565b005b61014a6004803603810190610145919061089c565b610642565b005b6101546106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016101d1939291906109e7565b600060405180830381600087803b1580156101eb57600080fd5b505af11580156101ff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610284959493929190610970565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161030093929190610a74565b60405180910390a2610310610722565b5050505050565b61031f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161037c939291906109e7565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103f49190610a59565b60405180910390a2610404610722565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016104fc939291906109e7565b600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016105af959493929190610970565b600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161062b93929190610a74565b60405180910390a261063b610722565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161069d9291906109be565b600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050565b60026000541415610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90610a39565b60405180910390fd5b6002600081905550565b6001600081905550565b60008135905061073b81610ba6565b92915050565b60008135905061075081610bbd565b92915050565b60008083601f84011261076c5761076b610b58565b5b8235905067ffffffffffffffff81111561078957610788610b53565b5b6020830191508360018202830111156107a5576107a4610b5d565b5b9250929050565b6000813590506107bb81610bd4565b92915050565b6000806000606084860312156107da576107d9610b67565b5b60006107e88682870161072c565b93505060206107f9868287016107ac565b925050604061080a86828701610741565b9150509250925092565b6000806000806000608086880312156108305761082f610b67565b5b600061083e8882890161072c565b955050602061084f888289016107ac565b945050604086013567ffffffffffffffff8111156108705761086f610b62565b5b61087c88828901610756565b9350935050606061088f88828901610741565b9150509295509295909350565b6000602082840312156108b2576108b1610b67565b5b60006108c0848285016107ac565b91505092915050565b6108d281610ac8565b82525050565b6108e181610ada565b82525050565b60006108f38385610aa6565b9350610900838584610b44565b61090983610b6c565b840190509392505050565b61091d81610b0e565b82525050565b6000610930601f83610ab7565b915061093b82610b7d565b602082019050919050565b61094f81610b04565b82525050565b600060208201905061096a60008301846108c9565b92915050565b600060808201905061098560008301886108c9565b61099260208301876108c9565b61099f6040830186610946565b81810360608301526109b28184866108e7565b90509695505050505050565b60006040820190506109d360008301856108c9565b6109e06020830184610946565b9392505050565b60006060820190506109fc60008301866108c9565b610a096020830185610946565b610a1660408301846108d8565b949350505050565b6000602082019050610a336000830184610914565b92915050565b60006020820190508181036000830152610a5281610923565b9050919050565b6000602082019050610a6e6000830184610946565b92915050565b6000604082019050610a896000830186610946565b8181036020830152610a9c8184866108e7565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ad382610ae4565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610b1982610b20565b9050919050565b6000610b2b82610b32565b9050919050565b6000610b3d82610ae4565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610baf81610ac8565b8114610bba57600080fd5b50565b610bc681610ada565b8114610bd157600080fd5b50565b610bdd81610b04565b8114610be857600080fd5b5056fea264697066735822122053fd60fbc685af8498c80af0717c1c37738558c0c31648ff6836e9afd85bce3064736f6c63430008070033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] @@ -243,20 +266,28 @@ export class ZetaConnectorNonNative__factory extends ContractFactory { override deploy( _gateway: PromiseOrValue, _zetaToken: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { return super.deploy( _gateway, _zetaToken, + _tssAddress, overrides || {} ) as Promise; } override getDeployTransaction( _gateway: PromiseOrValue, _zetaToken: PromiseOrValue, + _tssAddress: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { - return super.getDeployTransaction(_gateway, _zetaToken, overrides || {}); + return super.getDeployTransaction( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ); } override attach(address: string): ZetaConnectorNonNative { return super.attach(address) as ZetaConnectorNonNative; diff --git a/typechain-types/factories/contracts/prototypes/evm/index.ts b/typechain-types/factories/contracts/prototypes/evm/index.ts index b6965aa9..8daa7b8c 100644 --- a/typechain-types/factories/contracts/prototypes/evm/index.ts +++ b/typechain-types/factories/contracts/prototypes/evm/index.ts @@ -1,8 +1,10 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; export * as iGatewayEvmSol from "./IGatewayEVM.sol"; export * as iReceiverEvmSol from "./IReceiverEVM.sol"; +export * as iZetaConnectorSol from "./IZetaConnector.sol"; export { ERC20CustodyNew__factory } from "./ERC20CustodyNew__factory"; export { GatewayEVM__factory } from "./GatewayEVM__factory"; export { GatewayEVMUpgradeTest__factory } from "./GatewayEVMUpgradeTest__factory"; diff --git a/typechain-types/hardhat.d.ts b/typechain-types/hardhat.d.ts index 3afa8867..582ce7ab 100644 --- a/typechain-types/hardhat.d.ts +++ b/typechain-types/hardhat.d.ts @@ -348,6 +348,14 @@ declare module "hardhat/types/runtime" { name: "GatewayEVMUpgradeTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IERC20CustodyNewErrors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC20CustodyNewEvents", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IGatewayEVM", signerOrOptions?: ethers.Signer | FactoryOptions @@ -368,6 +376,10 @@ declare module "hardhat/types/runtime" { name: "IReceiverEVMEvents", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IZetaConnectorEvents", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IZetaNonEthNew", signerOrOptions?: ethers.Signer | FactoryOptions @@ -917,6 +929,16 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IERC20CustodyNewErrors", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC20CustodyNewEvents", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IGatewayEVM", address: string, @@ -942,6 +964,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IZetaConnectorEvents", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IZetaNonEthNew", address: string, diff --git a/typechain-types/index.ts b/typechain-types/index.ts index 652eb7e3..52b3f590 100644 --- a/typechain-types/index.ts +++ b/typechain-types/index.ts @@ -164,6 +164,10 @@ export type { GatewayEVM } from "./contracts/prototypes/evm/GatewayEVM"; export { GatewayEVM__factory } from "./factories/contracts/prototypes/evm/GatewayEVM__factory"; export type { GatewayEVMUpgradeTest } from "./contracts/prototypes/evm/GatewayEVMUpgradeTest"; export { GatewayEVMUpgradeTest__factory } from "./factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory"; +export type { IERC20CustodyNewErrors } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; +export { IERC20CustodyNewErrors__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory"; +export type { IERC20CustodyNewEvents } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; +export { IERC20CustodyNewEvents__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory"; export type { IGatewayEVM } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM"; export { IGatewayEVM__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory"; export type { IGatewayEVMErrors } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors"; @@ -174,6 +178,8 @@ export type { Revertable } from "./contracts/prototypes/evm/IGatewayEVM.sol/Reve export { Revertable__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory"; export type { IReceiverEVMEvents } from "./contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents"; export { IReceiverEVMEvents__factory } from "./factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory"; +export type { IZetaConnectorEvents } from "./contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; +export { IZetaConnectorEvents__factory } from "./factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory"; export type { IZetaNonEthNew } from "./contracts/prototypes/evm/IZetaNonEthNew"; export { IZetaNonEthNew__factory } from "./factories/contracts/prototypes/evm/IZetaNonEthNew__factory"; export type { ReceiverEVM } from "./contracts/prototypes/evm/ReceiverEVM"; From 3f4990c12f6ddb7fe8d5fc56332b6172a9593899 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 20:53:29 +0200 Subject: [PATCH 06/60] tests for tss sender in connector --- .../prototypes/evm/ZetaConnectorNative.sol | 6 +-- .../prototypes/evm/ZetaConnectorNewBase.sol | 1 + .../prototypes/evm/ZetaConnectorNonNative.sol | 6 +-- testFoundry/ZetaConnectorNative.t.sol | 38 ++++++++++++++++++- testFoundry/ZetaConnectorNonNative.t.sol | 38 ++++++++++++++++++- 5 files changed, 81 insertions(+), 8 deletions(-) diff --git a/contracts/prototypes/evm/ZetaConnectorNative.sol b/contracts/prototypes/evm/ZetaConnectorNative.sol index dffc8abf..d3fce429 100644 --- a/contracts/prototypes/evm/ZetaConnectorNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNative.sol @@ -13,13 +13,13 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { {} // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant { + function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { IERC20(zetaToken).safeTransfer(to, amount); emit Withdraw(to, amount); } // @dev withdrawAndCall is called by TSS address, it transfers zetaToken to the gateway and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant { + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -30,7 +30,7 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { } // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant { + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol index cb1c2e01..f2223afd 100644 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ b/contracts/prototypes/evm/ZetaConnectorNewBase.sol @@ -32,6 +32,7 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard } gateway = IGatewayEVM(_gateway); zetaToken = _zetaToken; + tssAddress = _tssAddress; } function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; diff --git a/contracts/prototypes/evm/ZetaConnectorNonNative.sol b/contracts/prototypes/evm/ZetaConnectorNonNative.sol index 88b934d5..3bb8a04a 100644 --- a/contracts/prototypes/evm/ZetaConnectorNonNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNonNative.sol @@ -11,13 +11,13 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { {} // @dev withdraw is called by TSS address, it mints zetaToken to the destination address - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant { + function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { IZetaNonEthNew(zetaToken).mint(to, amount, internalSendHash); emit Withdraw(to, amount); } // @dev withdrawAndCall is called by TSS address, it mints zetaToken and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant { + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Mint zetaToken to the Gateway contract IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); @@ -28,7 +28,7 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { } // @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant { + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Mint zetaToken to the Gateway contract IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol index d1d69383..05a658d0 100644 --- a/testFoundry/ZetaConnectorNative.t.sol +++ b/testFoundry/ZetaConnectorNative.t.sol @@ -52,23 +52,35 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, gateway.setConnector(address(zetaConnector)); zetaToken.mint(address(zetaConnector), 5000000); + + vm.deal(tssAddress, 1 ether); } function testWithdraw() public { uint256 amount = 100000; - uint256 balanceBefore = zetaToken.balanceOf(destination); bytes32 internalSendHash = ""; + uint256 balanceBefore = zetaToken.balanceOf(destination); assertEq(balanceBefore, 0); bytes memory data = abi.encodeWithSignature("transfer(address,uint256)", destination, amount); vm.expectCall(address(zetaToken), 0, data); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit Withdraw(destination, amount); + vm.prank(tssAddress); zetaConnector.withdraw(destination, amount, internalSendHash); uint256 balanceAfter = zetaToken.balanceOf(destination); assertEq(balanceAfter, amount); } + function testWithdrawFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdraw(destination, amount, internalSendHash); + } + function testWithdrawAndCallReceiveERC20() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -83,6 +95,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the destination address @@ -102,6 +115,16 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, assertEq(balanceGateway, 0); } + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + } + function testWithdrawAndCallReceiveNoParams() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -116,6 +139,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, emit ReceivedNoParams(address(gateway)); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the no tokens were transferred to the destination address @@ -149,6 +173,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the destination address @@ -185,6 +210,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndRevert(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the receiver address @@ -203,4 +229,14 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); assertEq(balanceGateway, 0); } + + function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + } } \ No newline at end of file diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index 7c0f3ef1..e808af97 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -54,23 +54,35 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); + + vm.deal(tssAddress, 1 ether); } function testWithdraw() public { uint256 amount = 100000; uint256 balanceBefore = zetaToken.balanceOf(destination); - bytes32 internalSendHash = ""; assertEq(balanceBefore, 0); + bytes32 internalSendHash = ""; bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, internalSendHash); vm.expectCall(address(zetaToken), 0, data); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit Withdraw(destination, amount); + vm.prank(tssAddress); zetaConnector.withdraw(destination, amount, internalSendHash); uint256 balanceAfter = zetaToken.balanceOf(destination); assertEq(balanceAfter, amount); } + function testWithdrawFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdraw(destination, amount, internalSendHash); + } + function testWithdrawAndCallReceiveERC20() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -86,6 +98,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the destination address @@ -105,6 +118,16 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent assertEq(balanceGateway, 0); } + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + } + function testWithdrawAndCallReceiveNoParams() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -120,6 +143,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent emit ReceivedNoParams(address(gateway)); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the no tokens were transferred to the destination address @@ -154,6 +178,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the destination address @@ -190,6 +215,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); vm.expectEmit(true, true, true, true, address(zetaConnector)); emit WithdrawAndRevert(address(receiver), amount, data); + vm.prank(tssAddress); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); // Verify that the tokens were transferred to the receiver address @@ -208,4 +234,14 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); assertEq(balanceGateway, 0); } + + function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + } } \ No newline at end of file From a686f66fafb691b1edf3d4afc4290c4529e9dc7f Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 21:00:52 +0200 Subject: [PATCH 07/60] remove access control todos from zevm contracts --- contracts/prototypes/zevm/GatewayZEVM.sol | 40 ++++++++--------------- contracts/zevm/ZRC20New.sol | 8 ----- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/contracts/prototypes/zevm/GatewayZEVM.sol b/contracts/prototypes/zevm/GatewayZEVM.sol index 17fe9c4f..99d1f9ca 100644 --- a/contracts/prototypes/zevm/GatewayZEVM.sol +++ b/contracts/prototypes/zevm/GatewayZEVM.sol @@ -19,6 +19,14 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; address public zetaToken; + // @dev Only Fungible module address allowed modifier. + modifier onlyFungible() { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) { + revert CallerIsNotFungibleModule(); + } + _; + } + /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); @@ -94,45 +102,35 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O } // Deposit foreign coins into ZRC20 - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function deposit( address zrc20, uint256 amount, address target - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + ) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); } // Execute user specified contract on ZEVM - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function execute( zContext calldata context, address zrc20, uint256 amount, address target, bytes calldata message - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); - + ) external onlyFungible { UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } // Deposit foreign coins into ZRC20 and call user specified contract on ZEVM - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function depositAndCall( zContext calldata context, address zrc20, uint256 amount, address target, bytes calldata message - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + ) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -140,15 +138,12 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O } // Deposit zeta and call user specified contract on ZEVM - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function depositAndCall( zContext calldata context, uint256 amount, address target, bytes calldata message - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + ) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); _transferZETA(amount, target); @@ -156,31 +151,24 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O } // Revert user specified contract on ZEVM - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function executeRevert( revertContext calldata context, address zrc20, uint256 amount, address target, bytes calldata message - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); - + ) external onlyFungible { UniversalContract(target).onRevert(context, zrc20, amount, message); } // Deposit foreign coins into ZRC20 and revert user specified contract on ZEVM - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function depositAndRevert( revertContext calldata context, address zrc20, uint256 amount, address target, bytes calldata message - ) external { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + ) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); diff --git a/contracts/zevm/ZRC20New.sol b/contracts/zevm/ZRC20New.sol index 351c6c53..116661ef 100644 --- a/contracts/zevm/ZRC20New.sol +++ b/contracts/zevm/ZRC20New.sol @@ -229,8 +229,6 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @param amount, amount to deposit. * @return true/false if succeeded/failed. */ - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function deposit(address to, uint256 amount) external override returns (bool) { if (msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS && msg.sender != GATEWAY_CONTRACT_ADDRESS) revert InvalidSender(); _mint(to, amount); @@ -275,8 +273,6 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @dev Updates system contract address. Can only be updated by the fungible module. * @param addr, new system contract address. */ - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function updateSystemContractAddress(address addr) external onlyFungible { SYSTEM_CONTRACT_ADDRESS = addr; emit UpdatedSystemContract(addr); @@ -286,8 +282,6 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @dev Updates gas limit. Can only be updated by the fungible module. * @param gasLimit, new gas limit. */ - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function updateGasLimit(uint256 gasLimit) external onlyFungible { GAS_LIMIT = gasLimit; emit UpdatedGasLimit(gasLimit); @@ -297,8 +291,6 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @dev Updates protocol flat fee. Can only be updated by the fungible module. * @param protocolFlatFee, new protocol flat fee. */ - // TODO: Finalize access control - // https://github.com/zeta-chain/protocol-contracts/issues/204 function updateProtocolFlatFee(uint256 protocolFlatFee) external onlyFungible { PROTOCOL_FLAT_FEE = protocolFlatFee; emit UpdatedProtocolFlatFee(protocolFlatFee); From 58160e8492056b8d1ecd254555cc46147581c6a6 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 21:02:25 +0200 Subject: [PATCH 08/60] generate --- pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go | 2 +- .../evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go | 2 +- .../evm/zetaconnectornative.sol/zetaconnectornative.go | 2 +- .../evm/zetaconnectornonnative.sol/zetaconnectornonnative.go | 2 +- pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go | 2 +- pkg/contracts/zevm/zrc20new.sol/zrc20new.go | 2 +- .../contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts | 2 +- .../factories/contracts/prototypes/evm/GatewayEVM__factory.ts | 2 +- .../contracts/prototypes/evm/ZetaConnectorNative__factory.ts | 2 +- .../contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts | 2 +- .../factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts | 2 +- .../factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go index fe975bae..26b2bbcb 100644 --- a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go +++ b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go @@ -32,7 +32,7 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b50169b86c27966b79749752335073f77dce5b27a3090e7ff49ca83964a05a8964736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7048633db9aaa83300dde783147476ddfc6bd1f9af1387dc5143ffa7cf6418064736f6c63430008070033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index 8acdc4af..fe03c8af 100644 --- a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205f0f43e53336448ab426557838090dbeda3ef4efbf1448693a8f6b4fe7ba424264736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207506291c2cc1340a6799328d29a82686f260d59d78d6f67136dac5bd6578979464736f6c63430008070033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go index 0b1bf2e1..16797a2e 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162001462380380620014628339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c611196620002cc6000396000818161017b015281816101fd015281816102e2015281816103a70152818161041e015281816104a0015261057e015260008181610159015281816101c101528181610383015281816103fc015261046401526111966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610ac1565b61014c565b005b6100b860048036038101906100b39190610a6e565b6102d3565b005b6100c2610381565b6040516100cf9190610dd3565b60405180910390f35b6100e06103a5565b6040516100ed9190610d0a565b60405180910390f35b6100fe6103c9565b60405161010b9190610d0a565b60405180910390f35b61012e60048036038101906101299190610ac1565b6103ef565b005b61014a60048036038101906101459190610b76565b610576565b005b6101546105c6565b6101bf7f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610240959493929190610d5c565b600060405180830381600087803b15801561025a57600080fd5b505af115801561026e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102bc93929190610eab565b60405180910390a26102cc61069c565b5050505050565b6102db6105c6565b61032683837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161036c9190610e90565b60405180910390a261037c61069c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103f76105c6565b6104627f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016104e3959493929190610d5c565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161055f93929190610eab565b60405180910390a261056f61069c565b5050505050565b6105c33330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a6909392919063ffffffff16565b50565b6002600054141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060390610e70565b60405180910390fd5b6002600081905550565b6106978363a9059cbb60e01b8484604051602401610635929190610daa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b505050565b6001600081905550565b610729846323b872dd60e01b8585856040516024016106c793929190610d25565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b50505050565b6000610791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107f69092919063ffffffff16565b90506000815111156107f157808060200190518101906107b19190610b49565b6107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610e50565b60405180910390fd5b5b505050565b6060610805848460008561080e565b90509392505050565b606082471015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90610e10565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161087c9190610cf3565b60006040518083038185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b50915091506108cf878383876108db565b92505050949350505050565b6060831561093e57600083511415610936576108f685610951565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90610e30565b60405180910390fd5b5b829050610949565b6109488383610974565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109875781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190610dee565b60405180910390fd5b6000813590506109d381611104565b92915050565b6000815190506109e88161111b565b92915050565b6000813590506109fd81611132565b92915050565b60008083601f840112610a1957610a18610fef565b5b8235905067ffffffffffffffff811115610a3657610a35610fea565b5b602083019150836001820283011115610a5257610a51610ff4565b5b9250929050565b600081359050610a6881611149565b92915050565b600080600060608486031215610a8757610a86610ffe565b5b6000610a95868287016109c4565b9350506020610aa686828701610a59565b9250506040610ab7868287016109ee565b9150509250925092565b600080600080600060808688031215610add57610adc610ffe565b5b6000610aeb888289016109c4565b9550506020610afc88828901610a59565b945050604086013567ffffffffffffffff811115610b1d57610b1c610ff9565b5b610b2988828901610a03565b93509350506060610b3c888289016109ee565b9150509295509295909350565b600060208284031215610b5f57610b5e610ffe565b5b6000610b6d848285016109d9565b91505092915050565b600060208284031215610b8c57610b8b610ffe565b5b6000610b9a84828501610a59565b91505092915050565b610bac81610f20565b82525050565b6000610bbe8385610ef3565b9350610bcb838584610fa8565b610bd483611003565b840190509392505050565b6000610bea82610edd565b610bf48185610f04565b9350610c04818560208601610fb7565b80840191505092915050565b610c1981610f72565b82525050565b6000610c2a82610ee8565b610c348185610f0f565b9350610c44818560208601610fb7565b610c4d81611003565b840191505092915050565b6000610c65602683610f0f565b9150610c7082611014565b604082019050919050565b6000610c88601d83610f0f565b9150610c9382611063565b602082019050919050565b6000610cab602a83610f0f565b9150610cb68261108c565b604082019050919050565b6000610cce601f83610f0f565b9150610cd9826110db565b602082019050919050565b610ced81610f68565b82525050565b6000610cff8284610bdf565b915081905092915050565b6000602082019050610d1f6000830184610ba3565b92915050565b6000606082019050610d3a6000830186610ba3565b610d476020830185610ba3565b610d546040830184610ce4565b949350505050565b6000608082019050610d716000830188610ba3565b610d7e6020830187610ba3565b610d8b6040830186610ce4565b8181036060830152610d9e818486610bb2565b90509695505050505050565b6000604082019050610dbf6000830185610ba3565b610dcc6020830184610ce4565b9392505050565b6000602082019050610de86000830184610c10565b92915050565b60006020820190508181036000830152610e088184610c1f565b905092915050565b60006020820190508181036000830152610e2981610c58565b9050919050565b60006020820190508181036000830152610e4981610c7b565b9050919050565b60006020820190508181036000830152610e6981610c9e565b9050919050565b60006020820190508181036000830152610e8981610cc1565b9050919050565b6000602082019050610ea56000830184610ce4565b92915050565b6000604082019050610ec06000830186610ce4565b8181036020830152610ed3818486610bb2565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f2b82610f48565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f7d82610f84565b9050919050565b6000610f8f82610f96565b9050919050565b6000610fa182610f48565b9050919050565b82818337600083830152505050565b60005b83811015610fd5578082015181840152602081019050610fba565b83811115610fe4576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61110d81610f20565b811461111857600080fd5b50565b61112481610f32565b811461112f57600080fd5b50565b61113b81610f3e565b811461114657600080fd5b50565b61115281610f68565b811461115d57600080fd5b5056fea264697066735822122044b5ad5eb3ea013245cb991fc849afd5dd201a8100905d349382c0c2e00c25e264736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go index 15476179..7adaa59f 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162000eed38038062000eed8339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c610c21620002cc6000396000818161015601528181610241015281816103210152818161042f015281816104810152818161056c0152610644015260008181610192015281816102050152818161040b015281816104bd01526105300152610c216000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610814565b61014c565b005b6100b860048036038101906100b391906107c1565b610317565b005b6100c2610409565b6040516100cf9190610a1e565b60405180910390f35b6100e061042d565b6040516100ed9190610955565b60405180910390f35b6100fe610451565b60405161010b9190610955565b60405180910390f35b61012e60048036038101906101299190610814565b610477565b005b61014a6004803603810190610145919061089c565b610642565b005b6101546106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016101d1939291906109e7565b600060405180830381600087803b1580156101eb57600080fd5b505af11580156101ff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610284959493929190610970565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161030093929190610a74565b60405180910390a2610310610722565b5050505050565b61031f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161037c939291906109e7565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103f49190610a59565b60405180910390a2610404610722565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016104fc939291906109e7565b600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016105af959493929190610970565b600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161062b93929190610a74565b60405180910390a261063b610722565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161069d9291906109be565b600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050565b60026000541415610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90610a39565b60405180910390fd5b6002600081905550565b6001600081905550565b60008135905061073b81610ba6565b92915050565b60008135905061075081610bbd565b92915050565b60008083601f84011261076c5761076b610b58565b5b8235905067ffffffffffffffff81111561078957610788610b53565b5b6020830191508360018202830111156107a5576107a4610b5d565b5b9250929050565b6000813590506107bb81610bd4565b92915050565b6000806000606084860312156107da576107d9610b67565b5b60006107e88682870161072c565b93505060206107f9868287016107ac565b925050604061080a86828701610741565b9150509250925092565b6000806000806000608086880312156108305761082f610b67565b5b600061083e8882890161072c565b955050602061084f888289016107ac565b945050604086013567ffffffffffffffff8111156108705761086f610b62565b5b61087c88828901610756565b9350935050606061088f88828901610741565b9150509295509295909350565b6000602082840312156108b2576108b1610b67565b5b60006108c0848285016107ac565b91505092915050565b6108d281610ac8565b82525050565b6108e181610ada565b82525050565b60006108f38385610aa6565b9350610900838584610b44565b61090983610b6c565b840190509392505050565b61091d81610b0e565b82525050565b6000610930601f83610ab7565b915061093b82610b7d565b602082019050919050565b61094f81610b04565b82525050565b600060208201905061096a60008301846108c9565b92915050565b600060808201905061098560008301886108c9565b61099260208301876108c9565b61099f6040830186610946565b81810360608301526109b28184866108e7565b90509695505050505050565b60006040820190506109d360008301856108c9565b6109e06020830184610946565b9392505050565b60006060820190506109fc60008301866108c9565b610a096020830185610946565b610a1660408301846108d8565b949350505050565b6000602082019050610a336000830184610914565b92915050565b60006020820190508181036000830152610a5281610923565b9050919050565b6000602082019050610a6e6000830184610946565b92915050565b6000604082019050610a896000830186610946565b8181036020830152610a9c8184866108e7565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ad382610ae4565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610b1982610b20565b9050919050565b6000610b2b82610b32565b9050919050565b6000610b3d82610ae4565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610baf81610ac8565b8114610bba57600080fd5b50565b610bc681610ada565b8114610bd157600080fd5b50565b610bdd81610b04565b8114610be857600080fd5b5056fea264697066735822122053fd60fbc685af8498c80af0717c1c37738558c0c31648ff6836e9afd85bce3064736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b50604051620010c3380380620010c38339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c610db66200030d600039600081816101dd015281816102c80152818161042f0152818161053d015281816106160152818161070101526107d90152600081816102190152818161028c015281816105190152818161065201526106c50152610db66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c600480360381019061009791906109a9565b61014c565b005b6100b860048036038101906100b39190610956565b61039e565b005b6100c2610517565b6040516100cf9190610bb3565b60405180910390f35b6100e061053b565b6040516100ed9190610aea565b60405180910390f35b6100fe61055f565b60405161010b9190610aea565b60405180910390f35b61012e600480360381019061012991906109a9565b610585565b005b61014a60048036038101906101459190610a31565b6107d7565b005b610154610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161025893929190610b7c565b600060405180830381600087803b15801561027257600080fd5b505af1158015610286573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161030b959493929190610b05565b600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161038793929190610c09565b60405180910390a26103976108b7565b5050505050565b6103a6610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461042d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161048a93929190610b7c565b600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516105029190610bee565b60405180910390a26105126108b7565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61058d610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161069193929190610b7c565b600060405180830381600087803b1580156106ab57600080fd5b505af11580156106bf573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610744959493929190610b05565b600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516107c093929190610c09565b60405180910390a26107d06108b7565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610832929190610b53565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b600260005414156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490610bce565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506108d081610d3b565b92915050565b6000813590506108e581610d52565b92915050565b60008083601f84011261090157610900610ced565b5b8235905067ffffffffffffffff81111561091e5761091d610ce8565b5b60208301915083600182028301111561093a57610939610cf2565b5b9250929050565b60008135905061095081610d69565b92915050565b60008060006060848603121561096f5761096e610cfc565b5b600061097d868287016108c1565b935050602061098e86828701610941565b925050604061099f868287016108d6565b9150509250925092565b6000806000806000608086880312156109c5576109c4610cfc565b5b60006109d3888289016108c1565b95505060206109e488828901610941565b945050604086013567ffffffffffffffff811115610a0557610a04610cf7565b5b610a11888289016108eb565b93509350506060610a24888289016108d6565b9150509295509295909350565b600060208284031215610a4757610a46610cfc565b5b6000610a5584828501610941565b91505092915050565b610a6781610c5d565b82525050565b610a7681610c6f565b82525050565b6000610a888385610c3b565b9350610a95838584610cd9565b610a9e83610d01565b840190509392505050565b610ab281610ca3565b82525050565b6000610ac5601f83610c4c565b9150610ad082610d12565b602082019050919050565b610ae481610c99565b82525050565b6000602082019050610aff6000830184610a5e565b92915050565b6000608082019050610b1a6000830188610a5e565b610b276020830187610a5e565b610b346040830186610adb565b8181036060830152610b47818486610a7c565b90509695505050505050565b6000604082019050610b686000830185610a5e565b610b756020830184610adb565b9392505050565b6000606082019050610b916000830186610a5e565b610b9e6020830185610adb565b610bab6040830184610a6d565b949350505050565b6000602082019050610bc86000830184610aa9565b92915050565b60006020820190508181036000830152610be781610ab8565b9050919050565b6000602082019050610c036000830184610adb565b92915050565b6000604082019050610c1e6000830186610adb565b8181036020830152610c31818486610a7c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610c6882610c79565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cae82610cb5565b9050919050565b6000610cc082610cc7565b9050919050565b6000610cd282610c79565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610d4481610c5d565b8114610d4f57600080fd5b50565b610d5b81610c6f565b8114610d6657600080fd5b50565b610d7281610c99565b8114610d7d57600080fd5b5056fea26469706673582212209d543e668c793d4944964e21ce09680a6432aef47847a599106ee141e7a8a01264736f6c63430008070033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go b/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go index 9b9c795c..744380b8 100644 --- a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go +++ b/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go @@ -46,7 +46,7 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZRC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20BurnFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e282ad47b588d26949a07fb7fc6ba46fa9721e07254d668e544a8f2413001c5064736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c403e7110f39344a7464aedddcc11ad944288d8cd79a4d58fa568decbde916ef64736f6c63430008070033", } // GatewayZEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/zevm/zrc20new.sol/zrc20new.go b/pkg/contracts/zevm/zrc20new.sol/zrc20new.go index c1710758..16e077b9 100644 --- a/pkg/contracts/zevm/zrc20new.sol/zrc20new.go +++ b/pkg/contracts/zevm/zrc20new.sol/zrc20new.go @@ -32,7 +32,7 @@ var ( // ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. var ZRC20NewMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212206982505c1a546edfb86a1aaaca0ad6b7e5542f2d1f24ac30a032805fc80a650e64736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122088cc6797a637e9f7f0d8220bcf745a632c2a8fcb9c479e8f3633f88f9d369ecc64736f6c63430008070033", } // ZRC20NewABI is the input ABI used to generate the binding from. diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts index 87bd44ea..655c9e4b 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts @@ -705,7 +705,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205f0f43e53336448ab426557838090dbeda3ef4efbf1448693a8f6b4fe7ba424264736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207506291c2cc1340a6799328d29a82686f260d59d78d6f67136dac5bd6578979464736f6c63430008070033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts index c6b322cd..360cfccd 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts @@ -680,7 +680,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b50169b86c27966b79749752335073f77dce5b27a3090e7ff49ca83964a05a8964736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7048633db9aaa83300dde783147476ddfc6bd1f9af1387dc5143ffa7cf6418064736f6c63430008070033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts index d22c52f9..e0e2a177 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts @@ -244,7 +244,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162001462380380620014628339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c611196620002cc6000396000818161017b015281816101fd015281816102e2015281816103a70152818161041e015281816104a0015261057e015260008181610159015281816101c101528181610383015281816103fc015261046401526111966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610ac1565b61014c565b005b6100b860048036038101906100b39190610a6e565b6102d3565b005b6100c2610381565b6040516100cf9190610dd3565b60405180910390f35b6100e06103a5565b6040516100ed9190610d0a565b60405180910390f35b6100fe6103c9565b60405161010b9190610d0a565b60405180910390f35b61012e60048036038101906101299190610ac1565b6103ef565b005b61014a60048036038101906101459190610b76565b610576565b005b6101546105c6565b6101bf7f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610240959493929190610d5c565b600060405180830381600087803b15801561025a57600080fd5b505af115801561026e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516102bc93929190610eab565b60405180910390a26102cc61069c565b5050505050565b6102db6105c6565b61032683837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161036c9190610e90565b60405180910390a261037c61069c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103f76105c6565b6104627f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106169092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016104e3959493929190610d5c565b600060405180830381600087803b1580156104fd57600080fd5b505af1158015610511573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161055f93929190610eab565b60405180910390a261056f61069c565b5050505050565b6105c33330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a6909392919063ffffffff16565b50565b6002600054141561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060390610e70565b60405180910390fd5b6002600081905550565b6106978363a9059cbb60e01b8484604051602401610635929190610daa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b505050565b6001600081905550565b610729846323b872dd60e01b8585856040516024016106c793929190610d25565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061072f565b50505050565b6000610791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107f69092919063ffffffff16565b90506000815111156107f157808060200190518101906107b19190610b49565b6107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790610e50565b60405180910390fd5b5b505050565b6060610805848460008561080e565b90509392505050565b606082471015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90610e10565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161087c9190610cf3565b60006040518083038185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b50915091506108cf878383876108db565b92505050949350505050565b6060831561093e57600083511415610936576108f685610951565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90610e30565b60405180910390fd5b5b829050610949565b6109488383610974565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156109875781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190610dee565b60405180910390fd5b6000813590506109d381611104565b92915050565b6000815190506109e88161111b565b92915050565b6000813590506109fd81611132565b92915050565b60008083601f840112610a1957610a18610fef565b5b8235905067ffffffffffffffff811115610a3657610a35610fea565b5b602083019150836001820283011115610a5257610a51610ff4565b5b9250929050565b600081359050610a6881611149565b92915050565b600080600060608486031215610a8757610a86610ffe565b5b6000610a95868287016109c4565b9350506020610aa686828701610a59565b9250506040610ab7868287016109ee565b9150509250925092565b600080600080600060808688031215610add57610adc610ffe565b5b6000610aeb888289016109c4565b9550506020610afc88828901610a59565b945050604086013567ffffffffffffffff811115610b1d57610b1c610ff9565b5b610b2988828901610a03565b93509350506060610b3c888289016109ee565b9150509295509295909350565b600060208284031215610b5f57610b5e610ffe565b5b6000610b6d848285016109d9565b91505092915050565b600060208284031215610b8c57610b8b610ffe565b5b6000610b9a84828501610a59565b91505092915050565b610bac81610f20565b82525050565b6000610bbe8385610ef3565b9350610bcb838584610fa8565b610bd483611003565b840190509392505050565b6000610bea82610edd565b610bf48185610f04565b9350610c04818560208601610fb7565b80840191505092915050565b610c1981610f72565b82525050565b6000610c2a82610ee8565b610c348185610f0f565b9350610c44818560208601610fb7565b610c4d81611003565b840191505092915050565b6000610c65602683610f0f565b9150610c7082611014565b604082019050919050565b6000610c88601d83610f0f565b9150610c9382611063565b602082019050919050565b6000610cab602a83610f0f565b9150610cb68261108c565b604082019050919050565b6000610cce601f83610f0f565b9150610cd9826110db565b602082019050919050565b610ced81610f68565b82525050565b6000610cff8284610bdf565b915081905092915050565b6000602082019050610d1f6000830184610ba3565b92915050565b6000606082019050610d3a6000830186610ba3565b610d476020830185610ba3565b610d546040830184610ce4565b949350505050565b6000608082019050610d716000830188610ba3565b610d7e6020830187610ba3565b610d8b6040830186610ce4565b8181036060830152610d9e818486610bb2565b90509695505050505050565b6000604082019050610dbf6000830185610ba3565b610dcc6020830184610ce4565b9392505050565b6000602082019050610de86000830184610c10565b92915050565b60006020820190508181036000830152610e088184610c1f565b905092915050565b60006020820190508181036000830152610e2981610c58565b9050919050565b60006020820190508181036000830152610e4981610c7b565b9050919050565b60006020820190508181036000830152610e6981610c9e565b9050919050565b60006020820190508181036000830152610e8981610cc1565b9050919050565b6000602082019050610ea56000830184610ce4565b92915050565b6000604082019050610ec06000830186610ce4565b8181036020830152610ed3818486610bb2565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f2b82610f48565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610f7d82610f84565b9050919050565b6000610f8f82610f96565b9050919050565b6000610fa182610f48565b9050919050565b82818337600083830152505050565b60005b83811015610fd5578082015181840152602081019050610fba565b83811115610fe4576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61110d81610f20565b811461111857600080fd5b50565b61112481610f32565b811461112f57600080fd5b50565b61113b81610f3e565b811461114657600080fd5b50565b61115281610f68565b811461115d57600080fd5b5056fea264697066735822122044b5ad5eb3ea013245cb991fc849afd5dd201a8100905d349382c0c2e00c25e264736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts index b88e5e2d..e418b28d 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts @@ -244,7 +244,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162000eed38038062000eed8339818101604052810190620000379190620001ab565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505050506200025a565b600081519050620001a58162000240565b92915050565b600080600060608486031215620001c757620001c66200023b565b5b6000620001d78682870162000194565b9350506020620001ea8682870162000194565b9250506040620001fd8682870162000194565b9150509250925092565b600062000214826200021b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024b8162000207565b81146200025757600080fd5b50565b60805160601c60a05160601c610c21620002cc6000396000818161015601528181610241015281816103210152818161042f015281816104810152818161056c0152610644015260008181610192015281816102050152818161040b015281816104bd01526105300152610c216000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610814565b61014c565b005b6100b860048036038101906100b391906107c1565b610317565b005b6100c2610409565b6040516100cf9190610a1e565b60405180910390f35b6100e061042d565b6040516100ed9190610955565b60405180910390f35b6100fe610451565b60405161010b9190610955565b60405180910390f35b61012e60048036038101906101299190610814565b610477565b005b61014a6004803603810190610145919061089c565b610642565b005b6101546106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016101d1939291906109e7565b600060405180830381600087803b1580156101eb57600080fd5b505af11580156101ff573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610284959493929190610970565b600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161030093929190610a74565b60405180910390a2610310610722565b5050505050565b61031f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161037c939291906109e7565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103f49190610a59565b60405180910390a2610404610722565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047f6106d2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016104fc939291906109e7565b600060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016105af959493929190610970565b600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161062b93929190610a74565b60405180910390a261063b610722565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161069d9291906109be565b600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050565b60026000541415610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90610a39565b60405180910390fd5b6002600081905550565b6001600081905550565b60008135905061073b81610ba6565b92915050565b60008135905061075081610bbd565b92915050565b60008083601f84011261076c5761076b610b58565b5b8235905067ffffffffffffffff81111561078957610788610b53565b5b6020830191508360018202830111156107a5576107a4610b5d565b5b9250929050565b6000813590506107bb81610bd4565b92915050565b6000806000606084860312156107da576107d9610b67565b5b60006107e88682870161072c565b93505060206107f9868287016107ac565b925050604061080a86828701610741565b9150509250925092565b6000806000806000608086880312156108305761082f610b67565b5b600061083e8882890161072c565b955050602061084f888289016107ac565b945050604086013567ffffffffffffffff8111156108705761086f610b62565b5b61087c88828901610756565b9350935050606061088f88828901610741565b9150509295509295909350565b6000602082840312156108b2576108b1610b67565b5b60006108c0848285016107ac565b91505092915050565b6108d281610ac8565b82525050565b6108e181610ada565b82525050565b60006108f38385610aa6565b9350610900838584610b44565b61090983610b6c565b840190509392505050565b61091d81610b0e565b82525050565b6000610930601f83610ab7565b915061093b82610b7d565b602082019050919050565b61094f81610b04565b82525050565b600060208201905061096a60008301846108c9565b92915050565b600060808201905061098560008301886108c9565b61099260208301876108c9565b61099f6040830186610946565b81810360608301526109b28184866108e7565b90509695505050505050565b60006040820190506109d360008301856108c9565b6109e06020830184610946565b9392505050565b60006060820190506109fc60008301866108c9565b610a096020830185610946565b610a1660408301846108d8565b949350505050565b6000602082019050610a336000830184610914565b92915050565b60006020820190508181036000830152610a5281610923565b9050919050565b6000602082019050610a6e6000830184610946565b92915050565b6000604082019050610a896000830186610946565b8181036020830152610a9c8184866108e7565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610ad382610ae4565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610b1982610b20565b9050919050565b6000610b2b82610b32565b9050919050565b6000610b3d82610ae4565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610baf81610ac8565b8114610bba57600080fd5b50565b610bc681610ada565b8114610bd157600080fd5b50565b610bdd81610b04565b8114610be857600080fd5b5056fea264697066735822122053fd60fbc685af8498c80af0717c1c37738558c0c31648ff6836e9afd85bce3064736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b50604051620010c3380380620010c38339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c610db66200030d600039600081816101dd015281816102c80152818161042f0152818161053d015281816106160152818161070101526107d90152600081816102190152818161028c015281816105190152818161065201526106c50152610db66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c600480360381019061009791906109a9565b61014c565b005b6100b860048036038101906100b39190610956565b61039e565b005b6100c2610517565b6040516100cf9190610bb3565b60405180910390f35b6100e061053b565b6040516100ed9190610aea565b60405180910390f35b6100fe61055f565b60405161010b9190610aea565b60405180910390f35b61012e600480360381019061012991906109a9565b610585565b005b61014a60048036038101906101459190610a31565b6107d7565b005b610154610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161025893929190610b7c565b600060405180830381600087803b15801561027257600080fd5b505af1158015610286573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161030b959493929190610b05565b600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161038793929190610c09565b60405180910390a26103976108b7565b5050505050565b6103a6610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461042d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161048a93929190610b7c565b600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516105029190610bee565b60405180910390a26105126108b7565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61058d610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161069193929190610b7c565b600060405180830381600087803b1580156106ab57600080fd5b505af11580156106bf573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610744959493929190610b05565b600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516107c093929190610c09565b60405180910390a26107d06108b7565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610832929190610b53565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b600260005414156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490610bce565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506108d081610d3b565b92915050565b6000813590506108e581610d52565b92915050565b60008083601f84011261090157610900610ced565b5b8235905067ffffffffffffffff81111561091e5761091d610ce8565b5b60208301915083600182028301111561093a57610939610cf2565b5b9250929050565b60008135905061095081610d69565b92915050565b60008060006060848603121561096f5761096e610cfc565b5b600061097d868287016108c1565b935050602061098e86828701610941565b925050604061099f868287016108d6565b9150509250925092565b6000806000806000608086880312156109c5576109c4610cfc565b5b60006109d3888289016108c1565b95505060206109e488828901610941565b945050604086013567ffffffffffffffff811115610a0557610a04610cf7565b5b610a11888289016108eb565b93509350506060610a24888289016108d6565b9150509295509295909350565b600060208284031215610a4757610a46610cfc565b5b6000610a5584828501610941565b91505092915050565b610a6781610c5d565b82525050565b610a7681610c6f565b82525050565b6000610a888385610c3b565b9350610a95838584610cd9565b610a9e83610d01565b840190509392505050565b610ab281610ca3565b82525050565b6000610ac5601f83610c4c565b9150610ad082610d12565b602082019050919050565b610ae481610c99565b82525050565b6000602082019050610aff6000830184610a5e565b92915050565b6000608082019050610b1a6000830188610a5e565b610b276020830187610a5e565b610b346040830186610adb565b8181036060830152610b47818486610a7c565b90509695505050505050565b6000604082019050610b686000830185610a5e565b610b756020830184610adb565b9392505050565b6000606082019050610b916000830186610a5e565b610b9e6020830185610adb565b610bab6040830184610a6d565b949350505050565b6000602082019050610bc86000830184610aa9565b92915050565b60006020820190508181036000830152610be781610ab8565b9050919050565b6000602082019050610c036000830184610adb565b92915050565b6000604082019050610c1e6000830186610adb565b8181036020830152610c31818486610a7c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610c6882610c79565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cae82610cb5565b9050919050565b6000610cc082610cc7565b9050919050565b6000610cd282610c79565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610d4481610c5d565b8114610d4f57600080fd5b50565b610d5b81610c6f565b8114610d6657600080fd5b50565b610d7281610c99565b8114610d7d57600080fd5b5056fea26469706673582212209d543e668c793d4944964e21ce09680a6432aef47847a599106ee141e7a8a01264736f6c63430008070033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts b/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts index 2ff27a16..705ce619 100644 --- a/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts @@ -707,7 +707,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e282ad47b588d26949a07fb7fc6ba46fa9721e07254d668e544a8f2413001c5064736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c403e7110f39344a7464aedddcc11ad944288d8cd79a4d58fa568decbde916ef64736f6c63430008070033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts b/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts index 68398c65..dd4e8c54 100644 --- a/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts +++ b/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts @@ -644,7 +644,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212206982505c1a546edfb86a1aaaca0ad6b7e5542f2d1f24ac30a032805fc80a650e64736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122088cc6797a637e9f7f0d8220bcf745a632c2a8fcb9c479e8f3633f88f9d369ecc64736f6c63430008070033"; type ZRC20NewConstructorParams = | [signer?: Signer] From 0f8ab7903552210dcd0d2fc57020295e04b8987d Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 23 Jul 2024 23:14:11 +0200 Subject: [PATCH 09/60] missing access control --- contracts/prototypes/evm/GatewayEVM.sol | 4 ++-- test/prototypes/GatewayEVMUniswap.spec.ts | 4 ++-- testFoundry/GatewayEVM.t.sol | 10 ++++++++-- testFoundry/GatewayEVMUpgrade.t.sol | 4 ++++ testFoundry/GatewayEVMZEVM.t.sol | 4 ++++ testFoundry/ZetaConnectorNative.t.sol | 6 ++++-- testFoundry/ZetaConnectorNonNative.t.sol | 6 ++++-- 7 files changed, 28 insertions(+), 10 deletions(-) diff --git a/contracts/prototypes/evm/GatewayEVM.sol b/contracts/prototypes/evm/GatewayEVM.sol index 04a57909..fa958b18 100644 --- a/contracts/prototypes/evm/GatewayEVM.sol +++ b/contracts/prototypes/evm/GatewayEVM.sol @@ -179,14 +179,14 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Call(msg.sender, receiver, payload); } - function setCustody(address _custody) external { + function setCustody(address _custody) external onlyTSS { if (custody != address(0)) revert CustodyInitialized(); if (_custody == address(0)) revert ZeroAddress(); custody = _custody; } - function setConnector(address _zetaConnector) external { + function setConnector(address _zetaConnector) external onlyTSS { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); diff --git a/test/prototypes/GatewayEVMUniswap.spec.ts b/test/prototypes/GatewayEVMUniswap.spec.ts index 57267b2a..609f6c41 100644 --- a/test/prototypes/GatewayEVMUniswap.spec.ts +++ b/test/prototypes/GatewayEVMUniswap.spec.ts @@ -66,9 +66,9 @@ describe("Uniswap Integration with GatewayEVM", function () { kind: "uups", })) as GatewayEVM; custody = (await ERC20CustodyNew.deploy(gateway.address, tssAddress.address)) as ERC20CustodyNew; - gateway.setCustody(custody.address); + gateway.connect(tssAddress.address).setCustody(custody.address); const zetaConnector = await ZetaConnector.deploy(gateway.address, zeta.address, tssAddress.address); - gateway.setConnector(zetaConnector.address); + gateway.connect(tssAddress.address).setConnector(zetaConnector.address); // Transfer some tokens to the custody contract await tokenA.transfer(custody.address, ethers.utils.parseEther("100")); diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol index 7328e194..efcaf9b4 100644 --- a/testFoundry/GatewayEVM.t.sol +++ b/testFoundry/GatewayEVM.t.sol @@ -49,13 +49,15 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); token.mint(owner, 1000000); token.transfer(address(custody), 500000); - - vm.deal(tssAddress, 1 ether); } function testForwardCallToReceiveNonPayable() public { @@ -420,8 +422,12 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); token.mint(owner, ownerAmount); } diff --git a/testFoundry/GatewayEVMUpgrade.t.sol b/testFoundry/GatewayEVMUpgrade.t.sol index aad4ec45..fe2d5391 100644 --- a/testFoundry/GatewayEVMUpgrade.t.sol +++ b/testFoundry/GatewayEVMUpgrade.t.sol @@ -50,8 +50,12 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); token.mint(owner, 1000000); token.transfer(address(custody), 500000); diff --git a/testFoundry/GatewayEVMZEVM.t.sol b/testFoundry/GatewayEVMZEVM.t.sol index 92e38aa7..8859013e 100644 --- a/testFoundry/GatewayEVMZEVM.t.sol +++ b/testFoundry/GatewayEVMZEVM.t.sol @@ -65,8 +65,12 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gatewayEVM.setCustody(address(custody)); gatewayEVM.setConnector(address(zetaConnector)); + vm.stopPrank(); token.mint(ownerEVM, 1000000); token.transfer(address(custody), 500000); diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol index 05a658d0..5e905809 100644 --- a/testFoundry/ZetaConnectorNative.t.sol +++ b/testFoundry/ZetaConnectorNative.t.sol @@ -48,12 +48,14 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, receiver = new ReceiverEVM(); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); zetaToken.mint(address(zetaConnector), 5000000); - - vm.deal(tssAddress, 1 ether); } function testWithdraw() public { diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index e808af97..915ca8b6 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -52,10 +52,12 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent receiver = new ReceiverEVM(); + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); - - vm.deal(tssAddress, 1 ether); + vm.stopPrank(); } function testWithdraw() public { From 72e1200b897a15b73f00b30d7e1a0ba6265a7311 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 17:11:23 +0200 Subject: [PATCH 10/60] init v2 folder --- v2/README.md | 66 + v2/foundry.toml | 6 + v2/lib/forge-std/.gitattributes | 1 + v2/lib/forge-std/.github/workflows/ci.yml | 128 + v2/lib/forge-std/.github/workflows/sync.yml | 31 + v2/lib/forge-std/.gitignore | 4 + v2/lib/forge-std/LICENSE-APACHE | 203 + v2/lib/forge-std/LICENSE-MIT | 25 + v2/lib/forge-std/README.md | 250 + v2/lib/forge-std/foundry.toml | 21 + v2/lib/forge-std/package.json | 16 + v2/lib/forge-std/scripts/vm.py | 635 + v2/lib/forge-std/src/Base.sol | 35 + v2/lib/forge-std/src/Script.sol | 27 + v2/lib/forge-std/src/StdAssertions.sol | 669 + v2/lib/forge-std/src/StdChains.sol | 259 + v2/lib/forge-std/src/StdCheats.sol | 817 + v2/lib/forge-std/src/StdError.sol | 15 + v2/lib/forge-std/src/StdInvariant.sol | 122 + v2/lib/forge-std/src/StdJson.sol | 179 + v2/lib/forge-std/src/StdMath.sol | 43 + v2/lib/forge-std/src/StdStorage.sol | 473 + v2/lib/forge-std/src/StdStyle.sol | 333 + v2/lib/forge-std/src/StdToml.sol | 179 + v2/lib/forge-std/src/StdUtils.sol | 226 + v2/lib/forge-std/src/Test.sol | 33 + v2/lib/forge-std/src/Vm.sol | 1839 +++ v2/lib/forge-std/src/console.sol | 1552 ++ v2/lib/forge-std/src/console2.sol | 4 + v2/lib/forge-std/src/interfaces/IERC1155.sol | 105 + v2/lib/forge-std/src/interfaces/IERC165.sol | 12 + v2/lib/forge-std/src/interfaces/IERC20.sol | 43 + v2/lib/forge-std/src/interfaces/IERC4626.sol | 190 + v2/lib/forge-std/src/interfaces/IERC721.sol | 164 + .../forge-std/src/interfaces/IMulticall3.sol | 73 + v2/lib/forge-std/src/mocks/MockERC20.sol | 234 + v2/lib/forge-std/src/mocks/MockERC721.sol | 231 + v2/lib/forge-std/src/safeconsole.sol | 13248 ++++++++++++++++ v2/lib/forge-std/test/StdAssertions.t.sol | 145 + v2/lib/forge-std/test/StdChains.t.sol | 226 + v2/lib/forge-std/test/StdCheats.t.sol | 618 + v2/lib/forge-std/test/StdError.t.sol | 120 + v2/lib/forge-std/test/StdJson.t.sol | 49 + v2/lib/forge-std/test/StdMath.t.sol | 212 + v2/lib/forge-std/test/StdStorage.t.sol | 471 + v2/lib/forge-std/test/StdStyle.t.sol | 110 + v2/lib/forge-std/test/StdToml.t.sol | 49 + v2/lib/forge-std/test/StdUtils.t.sol | 342 + v2/lib/forge-std/test/Vm.t.sol | 15 + .../test/compilation/CompilationScript.sol | 10 + .../compilation/CompilationScriptBase.sol | 10 + .../test/compilation/CompilationTest.sol | 10 + .../test/compilation/CompilationTestBase.sol | 10 + .../test/fixtures/broadcast.log.json | 187 + v2/lib/forge-std/test/fixtures/test.json | 8 + v2/lib/forge-std/test/fixtures/test.toml | 6 + v2/lib/forge-std/test/mocks/MockERC20.t.sol | 441 + v2/lib/forge-std/test/mocks/MockERC721.t.sol | 721 + v2/script/Counter.s.sol | 19 + v2/src/Counter.sol | 14 + v2/test/Counter.t.sol | 24 + 61 files changed, 26308 insertions(+) create mode 100644 v2/README.md create mode 100644 v2/foundry.toml create mode 100644 v2/lib/forge-std/.gitattributes create mode 100644 v2/lib/forge-std/.github/workflows/ci.yml create mode 100644 v2/lib/forge-std/.github/workflows/sync.yml create mode 100644 v2/lib/forge-std/.gitignore create mode 100644 v2/lib/forge-std/LICENSE-APACHE create mode 100644 v2/lib/forge-std/LICENSE-MIT create mode 100644 v2/lib/forge-std/README.md create mode 100644 v2/lib/forge-std/foundry.toml create mode 100644 v2/lib/forge-std/package.json create mode 100755 v2/lib/forge-std/scripts/vm.py create mode 100644 v2/lib/forge-std/src/Base.sol create mode 100644 v2/lib/forge-std/src/Script.sol create mode 100644 v2/lib/forge-std/src/StdAssertions.sol create mode 100644 v2/lib/forge-std/src/StdChains.sol create mode 100644 v2/lib/forge-std/src/StdCheats.sol create mode 100644 v2/lib/forge-std/src/StdError.sol create mode 100644 v2/lib/forge-std/src/StdInvariant.sol create mode 100644 v2/lib/forge-std/src/StdJson.sol create mode 100644 v2/lib/forge-std/src/StdMath.sol create mode 100644 v2/lib/forge-std/src/StdStorage.sol create mode 100644 v2/lib/forge-std/src/StdStyle.sol create mode 100644 v2/lib/forge-std/src/StdToml.sol create mode 100644 v2/lib/forge-std/src/StdUtils.sol create mode 100644 v2/lib/forge-std/src/Test.sol create mode 100644 v2/lib/forge-std/src/Vm.sol create mode 100644 v2/lib/forge-std/src/console.sol create mode 100644 v2/lib/forge-std/src/console2.sol create mode 100644 v2/lib/forge-std/src/interfaces/IERC1155.sol create mode 100644 v2/lib/forge-std/src/interfaces/IERC165.sol create mode 100644 v2/lib/forge-std/src/interfaces/IERC20.sol create mode 100644 v2/lib/forge-std/src/interfaces/IERC4626.sol create mode 100644 v2/lib/forge-std/src/interfaces/IERC721.sol create mode 100644 v2/lib/forge-std/src/interfaces/IMulticall3.sol create mode 100644 v2/lib/forge-std/src/mocks/MockERC20.sol create mode 100644 v2/lib/forge-std/src/mocks/MockERC721.sol create mode 100644 v2/lib/forge-std/src/safeconsole.sol create mode 100644 v2/lib/forge-std/test/StdAssertions.t.sol create mode 100644 v2/lib/forge-std/test/StdChains.t.sol create mode 100644 v2/lib/forge-std/test/StdCheats.t.sol create mode 100644 v2/lib/forge-std/test/StdError.t.sol create mode 100644 v2/lib/forge-std/test/StdJson.t.sol create mode 100644 v2/lib/forge-std/test/StdMath.t.sol create mode 100644 v2/lib/forge-std/test/StdStorage.t.sol create mode 100644 v2/lib/forge-std/test/StdStyle.t.sol create mode 100644 v2/lib/forge-std/test/StdToml.t.sol create mode 100644 v2/lib/forge-std/test/StdUtils.t.sol create mode 100644 v2/lib/forge-std/test/Vm.t.sol create mode 100644 v2/lib/forge-std/test/compilation/CompilationScript.sol create mode 100644 v2/lib/forge-std/test/compilation/CompilationScriptBase.sol create mode 100644 v2/lib/forge-std/test/compilation/CompilationTest.sol create mode 100644 v2/lib/forge-std/test/compilation/CompilationTestBase.sol create mode 100644 v2/lib/forge-std/test/fixtures/broadcast.log.json create mode 100644 v2/lib/forge-std/test/fixtures/test.json create mode 100644 v2/lib/forge-std/test/fixtures/test.toml create mode 100644 v2/lib/forge-std/test/mocks/MockERC20.t.sol create mode 100644 v2/lib/forge-std/test/mocks/MockERC721.t.sol create mode 100644 v2/script/Counter.s.sol create mode 100644 v2/src/Counter.sol create mode 100644 v2/test/Counter.t.sol diff --git a/v2/README.md b/v2/README.md new file mode 100644 index 00000000..9265b455 --- /dev/null +++ b/v2/README.md @@ -0,0 +1,66 @@ +## Foundry + +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** + +Foundry consists of: + +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. + +## Documentation + +https://book.getfoundry.sh/ + +## Usage + +### Build + +```shell +$ forge build +``` + +### Test + +```shell +$ forge test +``` + +### Format + +```shell +$ forge fmt +``` + +### Gas Snapshots + +```shell +$ forge snapshot +``` + +### Anvil + +```shell +$ anvil +``` + +### Deploy + +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` + +### Cast + +```shell +$ cast +``` + +### Help + +```shell +$ forge --help +$ anvil --help +$ cast --help +``` diff --git a/v2/foundry.toml b/v2/foundry.toml new file mode 100644 index 00000000..25b918f9 --- /dev/null +++ b/v2/foundry.toml @@ -0,0 +1,6 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/v2/lib/forge-std/.gitattributes b/v2/lib/forge-std/.gitattributes new file mode 100644 index 00000000..27042d45 --- /dev/null +++ b/v2/lib/forge-std/.gitattributes @@ -0,0 +1 @@ +src/Vm.sol linguist-generated diff --git a/v2/lib/forge-std/.github/workflows/ci.yml b/v2/lib/forge-std/.github/workflows/ci.yml new file mode 100644 index 00000000..2d68e91f --- /dev/null +++ b/v2/lib/forge-std/.github/workflows/ci.yml @@ -0,0 +1,128 @@ +name: CI + +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Print forge version + run: forge --version + + # Backwards compatibility checks: + # - the oldest and newest version of each supported minor version + # - versions with specific issues + - name: Check compatibility with latest + if: always() + run: | + output=$(forge build --skip test) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + - name: Check compatibility with 0.8.0 + if: always() + run: | + output=$(forge build --skip test --use solc:0.8.0) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + - name: Check compatibility with 0.7.6 + if: always() + run: | + output=$(forge build --skip test --use solc:0.7.6) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + - name: Check compatibility with 0.7.0 + if: always() + run: | + output=$(forge build --skip test --use solc:0.7.0) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + - name: Check compatibility with 0.6.12 + if: always() + run: | + output=$(forge build --skip test --use solc:0.6.12) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + - name: Check compatibility with 0.6.2 + if: always() + run: | + output=$(forge build --skip test --use solc:0.6.2) + if echo "$output" | grep -q "Warning"; then + echo "$output" + exit 1 + fi + + # via-ir compilation time checks. + - name: Measure compilation time of Test with 0.8.17 --via-ir + if: always() + run: forge build --skip test --contracts test/compilation/CompilationTest.sol --use solc:0.8.17 --via-ir + + - name: Measure compilation time of TestBase with 0.8.17 --via-ir + if: always() + run: forge build --skip test --contracts test/compilation/CompilationTestBase.sol --use solc:0.8.17 --via-ir + + - name: Measure compilation time of Script with 0.8.17 --via-ir + if: always() + run: forge build --skip test --contracts test/compilation/CompilationScript.sol --use solc:0.8.17 --via-ir + + - name: Measure compilation time of ScriptBase with 0.8.17 --via-ir + if: always() + run: forge build --skip test --contracts test/compilation/CompilationScriptBase.sol --use solc:0.8.17 --via-ir + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Print forge version + run: forge --version + + - name: Run tests + run: forge test -vvv + + fmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Print forge version + run: forge --version + + - name: Check formatting + run: forge fmt --check diff --git a/v2/lib/forge-std/.github/workflows/sync.yml b/v2/lib/forge-std/.github/workflows/sync.yml new file mode 100644 index 00000000..9b170f0b --- /dev/null +++ b/v2/lib/forge-std/.github/workflows/sync.yml @@ -0,0 +1,31 @@ +name: Sync Release Branch + +on: + release: + types: + - created + +jobs: + sync-release-branch: + runs-on: ubuntu-latest + if: startsWith(github.event.release.tag_name, 'v1') + steps: + - name: Check out the repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: v1 + + # The email is derived from the bots user id, + # found here: https://api.github.com/users/github-actions%5Bbot%5D + - name: Configure Git + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + + - name: Sync Release Branch + run: | + git fetch --tags + git checkout v1 + git reset --hard ${GITHUB_REF} + git push --force diff --git a/v2/lib/forge-std/.gitignore b/v2/lib/forge-std/.gitignore new file mode 100644 index 00000000..756106d3 --- /dev/null +++ b/v2/lib/forge-std/.gitignore @@ -0,0 +1,4 @@ +cache/ +out/ +.vscode +.idea diff --git a/v2/lib/forge-std/LICENSE-APACHE b/v2/lib/forge-std/LICENSE-APACHE new file mode 100644 index 00000000..cf01a499 --- /dev/null +++ b/v2/lib/forge-std/LICENSE-APACHE @@ -0,0 +1,203 @@ +Copyright Contributors to Forge Standard Library + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/v2/lib/forge-std/LICENSE-MIT b/v2/lib/forge-std/LICENSE-MIT new file mode 100644 index 00000000..28f98304 --- /dev/null +++ b/v2/lib/forge-std/LICENSE-MIT @@ -0,0 +1,25 @@ +Copyright Contributors to Forge Standard Library + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER +DEALINGS IN THE SOFTWARE.R diff --git a/v2/lib/forge-std/README.md b/v2/lib/forge-std/README.md new file mode 100644 index 00000000..0cb86602 --- /dev/null +++ b/v2/lib/forge-std/README.md @@ -0,0 +1,250 @@ +# Forge Standard Library • [![CI status](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml/badge.svg)](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml) + +Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. + +**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://book.getfoundry.sh/forge/forge-std.html).** + +## Install + +```bash +forge install foundry-rs/forge-std +``` + +## Contracts +### stdError + +This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler builtin errors. + +See the contract itself for all error codes. + +#### Example usage + +```solidity + +import "forge-std/Test.sol"; + +contract TestContract is Test { + ErrorsTest test; + + function setUp() public { + test = new ErrorsTest(); + } + + function testExpectArithmetic() public { + vm.expectRevert(stdError.arithmeticError); + test.arithmeticError(10); + } +} + +contract ErrorsTest { + function arithmeticError(uint256 a) public { + uint256 a = a - 100; + } +} +``` + +### stdStorage + +This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). + +This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. + +I.e.: +```solidity +struct T { + // depth 0 + uint256 a; + // depth 1 + uint256 b; +} +``` + +#### Example usage + +```solidity +import "forge-std/Test.sol"; + +contract TestContract is Test { + using stdStorage for StdStorage; + + Storage test; + + function setUp() public { + test = new Storage(); + } + + function testFindExists() public { + // Lets say we want to find the slot for the public + // variable `exists`. We just pass in the function selector + // to the `find` command + uint256 slot = stdstore.target(address(test)).sig("exists()").find(); + assertEq(slot, 0); + } + + function testWriteExists() public { + // Lets say we want to write to the slot for the public + // variable `exists`. We just pass in the function selector + // to the `checked_write` command + stdstore.target(address(test)).sig("exists()").checked_write(100); + assertEq(test.exists(), 100); + } + + // It supports arbitrary storage layouts, like assembly based storage locations + function testFindHidden() public { + // `hidden` is a random hash of a bytes, iteration through slots would + // not find it. Our mechanism does + // Also, you can use the selector instead of a string + uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find(); + assertEq(slot, uint256(keccak256("my.random.var"))); + } + + // If targeting a mapping, you have to pass in the keys necessary to perform the find + // i.e.: + function testFindMapping() public { + uint256 slot = stdstore + .target(address(test)) + .sig(test.map_addr.selector) + .with_key(address(this)) + .find(); + // in the `Storage` constructor, we wrote that this address' value was 1 in the map + // so when we load the slot, we expect it to be 1 + assertEq(uint(vm.load(address(test), bytes32(slot))), 1); + } + + // If the target is a struct, you can specify the field depth: + function testFindStruct() public { + // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc. + uint256 slot_for_a_field = stdstore + .target(address(test)) + .sig(test.basicStruct.selector) + .depth(0) + .find(); + + uint256 slot_for_b_field = stdstore + .target(address(test)) + .sig(test.basicStruct.selector) + .depth(1) + .find(); + + assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1); + assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2); + } +} + +// A complex storage contract +contract Storage { + struct UnpackedStruct { + uint256 a; + uint256 b; + } + + constructor() { + map_addr[msg.sender] = 1; + } + + uint256 public exists = 1; + mapping(address => uint256) public map_addr; + // mapping(address => Packed) public map_packed; + mapping(address => UnpackedStruct) public map_struct; + mapping(address => mapping(address => uint256)) public deep_map; + mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; + UnpackedStruct public basicStruct = UnpackedStruct({ + a: 1, + b: 2 + }); + + function hidden() public view returns (bytes32 t) { + // an extremely hidden storage slot + bytes32 slot = keccak256("my.random.var"); + assembly { + t := sload(slot) + } + } +} +``` + +### stdCheats + +This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for address that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. + + +#### Example usage: +```solidity + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +// Inherit the stdCheats +contract StdCheatsTest is Test { + Bar test; + function setUp() public { + test = new Bar(); + } + + function testHoax() public { + // we call `hoax`, which gives the target address + // eth and then calls `prank` + hoax(address(1337)); + test.bar{value: 100}(address(1337)); + + // overloaded to allow you to specify how much eth to + // initialize the address with + hoax(address(1337), 1); + test.bar{value: 1}(address(1337)); + } + + function testStartHoax() public { + // we call `startHoax`, which gives the target address + // eth and then calls `startPrank` + // + // it is also overloaded so that you can specify an eth amount + startHoax(address(1337)); + test.bar{value: 100}(address(1337)); + test.bar{value: 100}(address(1337)); + vm.stopPrank(); + test.bar(address(this)); + } +} + +contract Bar { + function bar(address expectedSender) public payable { + require(msg.sender == expectedSender, "!prank"); + } +} +``` + +### Std Assertions + +Contains various assertions. + +### `console.log` + +Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log). +It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces. + +```solidity +// import it indirectly via Test.sol +import "forge-std/Test.sol"; +// or directly import it +import "forge-std/console2.sol"; +... +console2.log(someValue); +``` + +If you need compatibility with Hardhat, you must use the standard `console.sol` instead. +Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces. + +```solidity +// import it indirectly via Test.sol +import "forge-std/Test.sol"; +// or directly import it +import "forge-std/console.sol"; +... +console.log(someValue); +``` + +## License + +Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license. diff --git a/v2/lib/forge-std/foundry.toml b/v2/lib/forge-std/foundry.toml new file mode 100644 index 00000000..2bc66fa7 --- /dev/null +++ b/v2/lib/forge-std/foundry.toml @@ -0,0 +1,21 @@ +[profile.default] +fs_permissions = [{ access = "read-write", path = "./"}] + +[rpc_endpoints] +# The RPC URLs are modified versions of the default for testing initialization. +mainnet = "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX" # Different API key. +optimism_sepolia = "https://sepolia.optimism.io/" # Adds a trailing slash. +arbitrum_one_sepolia = "https://sepolia-rollup.arbitrum.io/rpc/" # Adds a trailing slash. +needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}" + +[fmt] +# These are all the `forge fmt` defaults. +line_length = 120 +tab_width = 4 +bracket_spacing = false +int_types = 'long' +multiline_func_header = 'attributes_first' +quote_style = 'double' +number_underscore = 'preserve' +single_line_statement_blocks = 'preserve' +ignore = ["src/console.sol", "src/console2.sol"] \ No newline at end of file diff --git a/v2/lib/forge-std/package.json b/v2/lib/forge-std/package.json new file mode 100644 index 00000000..7e661858 --- /dev/null +++ b/v2/lib/forge-std/package.json @@ -0,0 +1,16 @@ +{ + "name": "forge-std", + "version": "1.9.1", + "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", + "homepage": "https://book.getfoundry.sh/forge/forge-std", + "bugs": "https://github.com/foundry-rs/forge-std/issues", + "license": "(Apache-2.0 OR MIT)", + "author": "Contributors to Forge Standard Library", + "files": [ + "src/**/*" + ], + "repository": { + "type": "git", + "url": "https://github.com/foundry-rs/forge-std.git" + } +} diff --git a/v2/lib/forge-std/scripts/vm.py b/v2/lib/forge-std/scripts/vm.py new file mode 100755 index 00000000..f0537db9 --- /dev/null +++ b/v2/lib/forge-std/scripts/vm.py @@ -0,0 +1,635 @@ +#!/usr/bin/env python3 + +import copy +import json +import re +import subprocess +from enum import Enum as PyEnum +from typing import Callable +from urllib import request + +VoidFn = Callable[[], None] + +CHEATCODES_JSON_URL = "https://raw.githubusercontent.com/foundry-rs/foundry/master/crates/cheatcodes/assets/cheatcodes.json" +OUT_PATH = "src/Vm.sol" + +VM_SAFE_DOC = """\ +/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may +/// result in Script simulations differing from on-chain execution. It is recommended to only use +/// these cheats in scripts. +""" + +VM_DOC = """\ +/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used +/// in tests, but it is not recommended to use these cheats in scripts. +""" + + +def main(): + json_str = request.urlopen(CHEATCODES_JSON_URL).read().decode("utf-8") + contract = Cheatcodes.from_json(json_str) + + ccs = contract.cheatcodes + ccs = list(filter(lambda cc: cc.status not in ["experimental", "internal"], ccs)) + ccs.sort(key=lambda cc: cc.func.id) + + safe = list(filter(lambda cc: cc.safety == "safe", ccs)) + safe.sort(key=CmpCheatcode) + unsafe = list(filter(lambda cc: cc.safety == "unsafe", ccs)) + unsafe.sort(key=CmpCheatcode) + assert len(safe) + len(unsafe) == len(ccs) + + prefix_with_group_headers(safe) + prefix_with_group_headers(unsafe) + + out = "" + + out += "// Automatically @generated by scripts/vm.py. Do not modify manually.\n\n" + + pp = CheatcodesPrinter( + spdx_identifier="MIT OR Apache-2.0", + solidity_requirement=">=0.6.2 <0.9.0", + abicoder_pragma=True, + ) + pp.p_prelude() + pp.prelude = False + out += pp.finish() + + out += "\n\n" + out += VM_SAFE_DOC + vm_safe = Cheatcodes( + # TODO: Custom errors were introduced in 0.8.4 + errors=[], # contract.errors + events=contract.events, + enums=contract.enums, + structs=contract.structs, + cheatcodes=safe, + ) + pp.p_contract(vm_safe, "VmSafe") + out += pp.finish() + + out += "\n\n" + out += VM_DOC + vm_unsafe = Cheatcodes( + errors=[], + events=[], + enums=[], + structs=[], + cheatcodes=unsafe, + ) + pp.p_contract(vm_unsafe, "Vm", "VmSafe") + out += pp.finish() + + # Compatibility with <0.8.0 + def memory_to_calldata(m: re.Match) -> str: + return " calldata " + m.group(1) + + out = re.sub(r" memory (.*returns)", memory_to_calldata, out) + + with open(OUT_PATH, "w") as f: + f.write(out) + + forge_fmt = ["forge", "fmt", OUT_PATH] + res = subprocess.run(forge_fmt) + assert res.returncode == 0, f"command failed: {forge_fmt}" + + print(f"Wrote to {OUT_PATH}") + + +class CmpCheatcode: + cheatcode: "Cheatcode" + + def __init__(self, cheatcode: "Cheatcode"): + self.cheatcode = cheatcode + + def __lt__(self, other: "CmpCheatcode") -> bool: + return cmp_cheatcode(self.cheatcode, other.cheatcode) < 0 + + def __eq__(self, other: "CmpCheatcode") -> bool: + return cmp_cheatcode(self.cheatcode, other.cheatcode) == 0 + + def __gt__(self, other: "CmpCheatcode") -> bool: + return cmp_cheatcode(self.cheatcode, other.cheatcode) > 0 + + +def cmp_cheatcode(a: "Cheatcode", b: "Cheatcode") -> int: + if a.group != b.group: + return -1 if a.group < b.group else 1 + if a.status != b.status: + return -1 if a.status < b.status else 1 + if a.safety != b.safety: + return -1 if a.safety < b.safety else 1 + if a.func.id != b.func.id: + return -1 if a.func.id < b.func.id else 1 + return 0 + + +# HACK: A way to add group header comments without having to modify printer code +def prefix_with_group_headers(cheats: list["Cheatcode"]): + s = set() + for i, cheat in enumerate(cheats): + if cheat.group in s: + continue + + s.add(cheat.group) + + c = copy.deepcopy(cheat) + c.func.description = "" + c.func.declaration = f"// ======== {group(c.group)} ========" + cheats.insert(i, c) + return cheats + + +def group(s: str) -> str: + if s == "evm": + return "EVM" + if s == "json": + return "JSON" + return s[0].upper() + s[1:] + + +class Visibility(PyEnum): + EXTERNAL: str = "external" + PUBLIC: str = "public" + INTERNAL: str = "internal" + PRIVATE: str = "private" + + def __str__(self): + return self.value + + +class Mutability(PyEnum): + PURE: str = "pure" + VIEW: str = "view" + NONE: str = "" + + def __str__(self): + return self.value + + +class Function: + id: str + description: str + declaration: str + visibility: Visibility + mutability: Mutability + signature: str + selector: str + selector_bytes: bytes + + def __init__( + self, + id: str, + description: str, + declaration: str, + visibility: Visibility, + mutability: Mutability, + signature: str, + selector: str, + selector_bytes: bytes, + ): + self.id = id + self.description = description + self.declaration = declaration + self.visibility = visibility + self.mutability = mutability + self.signature = signature + self.selector = selector + self.selector_bytes = selector_bytes + + @staticmethod + def from_dict(d: dict) -> "Function": + return Function( + d["id"], + d["description"], + d["declaration"], + Visibility(d["visibility"]), + Mutability(d["mutability"]), + d["signature"], + d["selector"], + bytes(d["selectorBytes"]), + ) + + +class Cheatcode: + func: Function + group: str + status: str + safety: str + + def __init__(self, func: Function, group: str, status: str, safety: str): + self.func = func + self.group = group + self.status = status + self.safety = safety + + @staticmethod + def from_dict(d: dict) -> "Cheatcode": + return Cheatcode( + Function.from_dict(d["func"]), + str(d["group"]), + str(d["status"]), + str(d["safety"]), + ) + + +class Error: + name: str + description: str + declaration: str + + def __init__(self, name: str, description: str, declaration: str): + self.name = name + self.description = description + self.declaration = declaration + + @staticmethod + def from_dict(d: dict) -> "Error": + return Error(**d) + + +class Event: + name: str + description: str + declaration: str + + def __init__(self, name: str, description: str, declaration: str): + self.name = name + self.description = description + self.declaration = declaration + + @staticmethod + def from_dict(d: dict) -> "Event": + return Event(**d) + + +class EnumVariant: + name: str + description: str + + def __init__(self, name: str, description: str): + self.name = name + self.description = description + + +class Enum: + name: str + description: str + variants: list[EnumVariant] + + def __init__(self, name: str, description: str, variants: list[EnumVariant]): + self.name = name + self.description = description + self.variants = variants + + @staticmethod + def from_dict(d: dict) -> "Enum": + return Enum( + d["name"], + d["description"], + list(map(lambda v: EnumVariant(**v), d["variants"])), + ) + + +class StructField: + name: str + ty: str + description: str + + def __init__(self, name: str, ty: str, description: str): + self.name = name + self.ty = ty + self.description = description + + +class Struct: + name: str + description: str + fields: list[StructField] + + def __init__(self, name: str, description: str, fields: list[StructField]): + self.name = name + self.description = description + self.fields = fields + + @staticmethod + def from_dict(d: dict) -> "Struct": + return Struct( + d["name"], + d["description"], + list(map(lambda f: StructField(**f), d["fields"])), + ) + + +class Cheatcodes: + errors: list[Error] + events: list[Event] + enums: list[Enum] + structs: list[Struct] + cheatcodes: list[Cheatcode] + + def __init__( + self, + errors: list[Error], + events: list[Event], + enums: list[Enum], + structs: list[Struct], + cheatcodes: list[Cheatcode], + ): + self.errors = errors + self.events = events + self.enums = enums + self.structs = structs + self.cheatcodes = cheatcodes + + @staticmethod + def from_dict(d: dict) -> "Cheatcodes": + return Cheatcodes( + errors=[Error.from_dict(e) for e in d["errors"]], + events=[Event.from_dict(e) for e in d["events"]], + enums=[Enum.from_dict(e) for e in d["enums"]], + structs=[Struct.from_dict(e) for e in d["structs"]], + cheatcodes=[Cheatcode.from_dict(e) for e in d["cheatcodes"]], + ) + + @staticmethod + def from_json(s) -> "Cheatcodes": + return Cheatcodes.from_dict(json.loads(s)) + + @staticmethod + def from_json_file(file_path: str) -> "Cheatcodes": + with open(file_path, "r") as f: + return Cheatcodes.from_dict(json.load(f)) + + +class Item(PyEnum): + ERROR: str = "error" + EVENT: str = "event" + ENUM: str = "enum" + STRUCT: str = "struct" + FUNCTION: str = "function" + + +class ItemOrder: + _list: list[Item] + + def __init__(self, list: list[Item]) -> None: + assert len(list) <= len(Item), "list must not contain more items than Item" + assert len(list) == len(set(list)), "list must not contain duplicates" + self._list = list + pass + + def get_list(self) -> list[Item]: + return self._list + + @staticmethod + def default() -> "ItemOrder": + return ItemOrder( + [ + Item.ERROR, + Item.EVENT, + Item.ENUM, + Item.STRUCT, + Item.FUNCTION, + ] + ) + + +class CheatcodesPrinter: + buffer: str + + prelude: bool + spdx_identifier: str + solidity_requirement: str + abicoder_v2: bool + + block_doc_style: bool + + indent_level: int + _indent_str: str + + nl_str: str + + items_order: ItemOrder + + def __init__( + self, + buffer: str = "", + prelude: bool = True, + spdx_identifier: str = "UNLICENSED", + solidity_requirement: str = "", + abicoder_pragma: bool = False, + block_doc_style: bool = False, + indent_level: int = 0, + indent_with: int | str = 4, + nl_str: str = "\n", + items_order: ItemOrder = ItemOrder.default(), + ): + self.prelude = prelude + self.spdx_identifier = spdx_identifier + self.solidity_requirement = solidity_requirement + self.abicoder_v2 = abicoder_pragma + self.block_doc_style = block_doc_style + self.buffer = buffer + self.indent_level = indent_level + self.nl_str = nl_str + + if isinstance(indent_with, int): + assert indent_with >= 0 + self._indent_str = " " * indent_with + elif isinstance(indent_with, str): + self._indent_str = indent_with + else: + assert False, "indent_with must be int or str" + + self.items_order = items_order + + def finish(self) -> str: + ret = self.buffer.rstrip() + self.buffer = "" + return ret + + def p_contract(self, contract: Cheatcodes, name: str, inherits: str = ""): + if self.prelude: + self.p_prelude(contract) + + self._p_str("interface ") + name = name.strip() + if name != "": + self._p_str(name) + self._p_str(" ") + if inherits != "": + self._p_str("is ") + self._p_str(inherits) + self._p_str(" ") + self._p_str("{") + self._p_nl() + self._with_indent(lambda: self._p_items(contract)) + self._p_str("}") + self._p_nl() + + def _p_items(self, contract: Cheatcodes): + for item in self.items_order.get_list(): + if item == Item.ERROR: + self.p_errors(contract.errors) + elif item == Item.EVENT: + self.p_events(contract.events) + elif item == Item.ENUM: + self.p_enums(contract.enums) + elif item == Item.STRUCT: + self.p_structs(contract.structs) + elif item == Item.FUNCTION: + self.p_functions(contract.cheatcodes) + else: + assert False, f"unknown item {item}" + + def p_prelude(self, contract: Cheatcodes | None = None): + self._p_str(f"// SPDX-License-Identifier: {self.spdx_identifier}") + self._p_nl() + + if self.solidity_requirement != "": + req = self.solidity_requirement + elif contract and len(contract.errors) > 0: + req = ">=0.8.4 <0.9.0" + else: + req = ">=0.6.0 <0.9.0" + self._p_str(f"pragma solidity {req};") + self._p_nl() + + if self.abicoder_v2: + self._p_str("pragma experimental ABIEncoderV2;") + self._p_nl() + + self._p_nl() + + def p_errors(self, errors: list[Error]): + for error in errors: + self._p_line(lambda: self.p_error(error)) + + def p_error(self, error: Error): + self._p_comment(error.description, doc=True) + self._p_line(lambda: self._p_str(error.declaration)) + + def p_events(self, events: list[Event]): + for event in events: + self._p_line(lambda: self.p_event(event)) + + def p_event(self, event: Event): + self._p_comment(event.description, doc=True) + self._p_line(lambda: self._p_str(event.declaration)) + + def p_enums(self, enums: list[Enum]): + for enum in enums: + self._p_line(lambda: self.p_enum(enum)) + + def p_enum(self, enum: Enum): + self._p_comment(enum.description, doc=True) + self._p_line(lambda: self._p_str(f"enum {enum.name} {{")) + self._with_indent(lambda: self.p_enum_variants(enum.variants)) + self._p_line(lambda: self._p_str("}")) + + def p_enum_variants(self, variants: list[EnumVariant]): + for i, variant in enumerate(variants): + self._p_indent() + self._p_comment(variant.description) + + self._p_indent() + self._p_str(variant.name) + if i < len(variants) - 1: + self._p_str(",") + self._p_nl() + + def p_structs(self, structs: list[Struct]): + for struct in structs: + self._p_line(lambda: self.p_struct(struct)) + + def p_struct(self, struct: Struct): + self._p_comment(struct.description, doc=True) + self._p_line(lambda: self._p_str(f"struct {struct.name} {{")) + self._with_indent(lambda: self.p_struct_fields(struct.fields)) + self._p_line(lambda: self._p_str("}")) + + def p_struct_fields(self, fields: list[StructField]): + for field in fields: + self._p_line(lambda: self.p_struct_field(field)) + + def p_struct_field(self, field: StructField): + self._p_comment(field.description) + self._p_indented(lambda: self._p_str(f"{field.ty} {field.name};")) + + def p_functions(self, cheatcodes: list[Cheatcode]): + for cheatcode in cheatcodes: + self._p_line(lambda: self.p_function(cheatcode.func)) + + def p_function(self, func: Function): + self._p_comment(func.description, doc=True) + self._p_line(lambda: self._p_str(func.declaration)) + + def _p_comment(self, s: str, doc: bool = False): + s = s.strip() + if s == "": + return + + s = map(lambda line: line.lstrip(), s.split("\n")) + if self.block_doc_style: + self._p_str("/*") + if doc: + self._p_str("*") + self._p_nl() + for line in s: + self._p_indent() + self._p_str(" ") + if doc: + self._p_str("* ") + self._p_str(line) + self._p_nl() + self._p_indent() + self._p_str(" */") + self._p_nl() + else: + first_line = True + for line in s: + if not first_line: + self._p_indent() + first_line = False + + if doc: + self._p_str("/// ") + else: + self._p_str("// ") + self._p_str(line) + self._p_nl() + + def _with_indent(self, f: VoidFn): + self._inc_indent() + f() + self._dec_indent() + + def _p_line(self, f: VoidFn): + self._p_indent() + f() + self._p_nl() + + def _p_indented(self, f: VoidFn): + self._p_indent() + f() + + def _p_indent(self): + for _ in range(self.indent_level): + self._p_str(self._indent_str) + + def _p_nl(self): + self._p_str(self.nl_str) + + def _p_str(self, txt: str): + self.buffer += txt + + def _inc_indent(self): + self.indent_level += 1 + + def _dec_indent(self): + self.indent_level -= 1 + + +if __name__ == "__main__": + main() diff --git a/v2/lib/forge-std/src/Base.sol b/v2/lib/forge-std/src/Base.sol new file mode 100644 index 00000000..851ac0cd --- /dev/null +++ b/v2/lib/forge-std/src/Base.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +import {StdStorage} from "./StdStorage.sol"; +import {Vm, VmSafe} from "./Vm.sol"; + +abstract contract CommonBase { + // Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D. + address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); + // console.sol and console2.sol work by executing a staticcall to this address. + address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; + // Used when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. + address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; + // Default address for tx.origin and msg.sender, 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38. + address internal constant DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller")))); + // Address of the test contract, deployed by the DEFAULT_SENDER. + address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; + // Deterministic deployment address of the Multicall3 contract. + address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11; + // The order of the secp256k1 curve. + uint256 internal constant SECP256K1_ORDER = + 115792089237316195423570985008687907852837564279074904382605163141518161494337; + + uint256 internal constant UINT256_MAX = + 115792089237316195423570985008687907853269984665640564039457584007913129639935; + + Vm internal constant vm = Vm(VM_ADDRESS); + StdStorage internal stdstore; +} + +abstract contract TestBase is CommonBase {} + +abstract contract ScriptBase is CommonBase { + VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS); +} diff --git a/v2/lib/forge-std/src/Script.sol b/v2/lib/forge-std/src/Script.sol new file mode 100644 index 00000000..94e75f6c --- /dev/null +++ b/v2/lib/forge-std/src/Script.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +// 💬 ABOUT +// Forge Std's default Script. + +// 🧩 MODULES +import {console} from "./console.sol"; +import {console2} from "./console2.sol"; +import {safeconsole} from "./safeconsole.sol"; +import {StdChains} from "./StdChains.sol"; +import {StdCheatsSafe} from "./StdCheats.sol"; +import {stdJson} from "./StdJson.sol"; +import {stdMath} from "./StdMath.sol"; +import {StdStorage, stdStorageSafe} from "./StdStorage.sol"; +import {StdStyle} from "./StdStyle.sol"; +import {StdUtils} from "./StdUtils.sol"; +import {VmSafe} from "./Vm.sol"; + +// 📦 BOILERPLATE +import {ScriptBase} from "./Base.sol"; + +// ⭐️ SCRIPT +abstract contract Script is ScriptBase, StdChains, StdCheatsSafe, StdUtils { + // Note: IS_SCRIPT() must return true. + bool public IS_SCRIPT = true; +} diff --git a/v2/lib/forge-std/src/StdAssertions.sol b/v2/lib/forge-std/src/StdAssertions.sol new file mode 100644 index 00000000..857ecd57 --- /dev/null +++ b/v2/lib/forge-std/src/StdAssertions.sol @@ -0,0 +1,669 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; +pragma experimental ABIEncoderV2; + +import {Vm} from "./Vm.sol"; + +abstract contract StdAssertions { + Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); + + event log(string); + event logs(bytes); + + event log_address(address); + event log_bytes32(bytes32); + event log_int(int256); + event log_uint(uint256); + event log_bytes(bytes); + event log_string(string); + + event log_named_address(string key, address val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_uint(string key, uint256 val); + event log_named_bytes(string key, bytes val); + event log_named_string(string key, string val); + + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + + bool private _failed; + + function failed() public view returns (bool) { + if (_failed) { + return _failed; + } else { + return vm.load(address(vm), bytes32("failed")) != bytes32(0); + } + } + + function fail() internal virtual { + vm.store(address(vm), bytes32("failed"), bytes32(uint256(1))); + _failed = true; + } + + function assertTrue(bool data) internal pure virtual { + vm.assertTrue(data); + } + + function assertTrue(bool data, string memory err) internal pure virtual { + vm.assertTrue(data, err); + } + + function assertFalse(bool data) internal pure virtual { + vm.assertFalse(data); + } + + function assertFalse(bool data, string memory err) internal pure virtual { + vm.assertFalse(data, err); + } + + function assertEq(bool left, bool right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bool left, bool right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(uint256 left, uint256 right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertEqDecimal(left, right, decimals); + } + + function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertEqDecimal(left, right, decimals, err); + } + + function assertEq(int256 left, int256 right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertEqDecimal(left, right, decimals); + } + + function assertEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertEqDecimal(left, right, decimals, err); + } + + function assertEq(address left, address right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(address left, address right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(bytes32 left, bytes32 right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq32(bytes32 left, bytes32 right) internal pure virtual { + assertEq(left, right); + } + + function assertEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { + assertEq(left, right, err); + } + + function assertEq(string memory left, string memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(string memory left, string memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(bytes memory left, bytes memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(bool[] memory left, bool[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(uint256[] memory left, uint256[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(int256[] memory left, int256[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(address[] memory left, address[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(string[] memory left, string[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + function assertEq(bytes[] memory left, bytes[] memory right) internal pure virtual { + vm.assertEq(left, right); + } + + function assertEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { + vm.assertEq(left, right, err); + } + + // Legacy helper + function assertEqUint(uint256 left, uint256 right) internal pure virtual { + assertEq(left, right); + } + + function assertNotEq(bool left, bool right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bool left, bool right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(uint256 left, uint256 right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertNotEqDecimal(left, right, decimals); + } + + function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) + internal + pure + virtual + { + vm.assertNotEqDecimal(left, right, decimals, err); + } + + function assertNotEq(int256 left, int256 right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertNotEqDecimal(left, right, decimals); + } + + function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertNotEqDecimal(left, right, decimals, err); + } + + function assertNotEq(address left, address right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(address left, address right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(bytes32 left, bytes32 right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq32(bytes32 left, bytes32 right) internal pure virtual { + assertNotEq(left, right); + } + + function assertNotEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { + assertNotEq(left, right, err); + } + + function assertNotEq(string memory left, string memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(string memory left, string memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(bytes memory left, bytes memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(bool[] memory left, bool[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(uint256[] memory left, uint256[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(int256[] memory left, int256[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(address[] memory left, address[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(string[] memory left, string[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertNotEq(bytes[] memory left, bytes[] memory right) internal pure virtual { + vm.assertNotEq(left, right); + } + + function assertNotEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { + vm.assertNotEq(left, right, err); + } + + function assertLt(uint256 left, uint256 right) internal pure virtual { + vm.assertLt(left, right); + } + + function assertLt(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertLt(left, right, err); + } + + function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertLtDecimal(left, right, decimals); + } + + function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertLtDecimal(left, right, decimals, err); + } + + function assertLt(int256 left, int256 right) internal pure virtual { + vm.assertLt(left, right); + } + + function assertLt(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertLt(left, right, err); + } + + function assertLtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertLtDecimal(left, right, decimals); + } + + function assertLtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertLtDecimal(left, right, decimals, err); + } + + function assertGt(uint256 left, uint256 right) internal pure virtual { + vm.assertGt(left, right); + } + + function assertGt(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertGt(left, right, err); + } + + function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertGtDecimal(left, right, decimals); + } + + function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertGtDecimal(left, right, decimals, err); + } + + function assertGt(int256 left, int256 right) internal pure virtual { + vm.assertGt(left, right); + } + + function assertGt(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertGt(left, right, err); + } + + function assertGtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertGtDecimal(left, right, decimals); + } + + function assertGtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertGtDecimal(left, right, decimals, err); + } + + function assertLe(uint256 left, uint256 right) internal pure virtual { + vm.assertLe(left, right); + } + + function assertLe(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertLe(left, right, err); + } + + function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertLeDecimal(left, right, decimals); + } + + function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertLeDecimal(left, right, decimals, err); + } + + function assertLe(int256 left, int256 right) internal pure virtual { + vm.assertLe(left, right); + } + + function assertLe(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertLe(left, right, err); + } + + function assertLeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertLeDecimal(left, right, decimals); + } + + function assertLeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertLeDecimal(left, right, decimals, err); + } + + function assertGe(uint256 left, uint256 right) internal pure virtual { + vm.assertGe(left, right); + } + + function assertGe(uint256 left, uint256 right, string memory err) internal pure virtual { + vm.assertGe(left, right, err); + } + + function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { + vm.assertGeDecimal(left, right, decimals); + } + + function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertGeDecimal(left, right, decimals, err); + } + + function assertGe(int256 left, int256 right) internal pure virtual { + vm.assertGe(left, right); + } + + function assertGe(int256 left, int256 right, string memory err) internal pure virtual { + vm.assertGe(left, right, err); + } + + function assertGeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { + vm.assertGeDecimal(left, right, decimals); + } + + function assertGeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { + vm.assertGeDecimal(left, right, decimals, err); + } + + function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) internal pure virtual { + vm.assertApproxEqAbs(left, right, maxDelta); + } + + function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string memory err) + internal + pure + virtual + { + vm.assertApproxEqAbs(left, right, maxDelta, err); + } + + function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) + internal + pure + virtual + { + vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); + } + + function assertApproxEqAbsDecimal( + uint256 left, + uint256 right, + uint256 maxDelta, + uint256 decimals, + string memory err + ) internal pure virtual { + vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); + } + + function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) internal pure virtual { + vm.assertApproxEqAbs(left, right, maxDelta); + } + + function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string memory err) internal pure virtual { + vm.assertApproxEqAbs(left, right, maxDelta, err); + } + + function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) + internal + pure + virtual + { + vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); + } + + function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string memory err) + internal + pure + virtual + { + vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); + } + + function assertApproxEqRel( + uint256 left, + uint256 right, + uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% + ) internal pure virtual { + vm.assertApproxEqRel(left, right, maxPercentDelta); + } + + function assertApproxEqRel( + uint256 left, + uint256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + string memory err + ) internal pure virtual { + vm.assertApproxEqRel(left, right, maxPercentDelta, err); + } + + function assertApproxEqRelDecimal( + uint256 left, + uint256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + uint256 decimals + ) internal pure virtual { + vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); + } + + function assertApproxEqRelDecimal( + uint256 left, + uint256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + uint256 decimals, + string memory err + ) internal pure virtual { + vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); + } + + function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) internal pure virtual { + vm.assertApproxEqRel(left, right, maxPercentDelta); + } + + function assertApproxEqRel( + int256 left, + int256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + string memory err + ) internal pure virtual { + vm.assertApproxEqRel(left, right, maxPercentDelta, err); + } + + function assertApproxEqRelDecimal( + int256 left, + int256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + uint256 decimals + ) internal pure virtual { + vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); + } + + function assertApproxEqRelDecimal( + int256 left, + int256 right, + uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% + uint256 decimals, + string memory err + ) internal pure virtual { + vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); + } + + // Inherited from DSTest, not used but kept for backwards-compatibility + function checkEq0(bytes memory left, bytes memory right) internal pure returns (bool) { + return keccak256(left) == keccak256(right); + } + + function assertEq0(bytes memory left, bytes memory right) internal pure virtual { + assertEq(left, right); + } + + function assertEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { + assertEq(left, right, err); + } + + function assertNotEq0(bytes memory left, bytes memory right) internal pure virtual { + assertNotEq(left, right); + } + + function assertNotEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { + assertNotEq(left, right, err); + } + + function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { + assertEqCall(target, callDataA, target, callDataB, true); + } + + function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) + internal + virtual + { + assertEqCall(targetA, callDataA, targetB, callDataB, true); + } + + function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) + internal + virtual + { + assertEqCall(target, callDataA, target, callDataB, strictRevertData); + } + + function assertEqCall( + address targetA, + bytes memory callDataA, + address targetB, + bytes memory callDataB, + bool strictRevertData + ) internal virtual { + (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); + (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); + + if (successA && successB) { + assertEq(returnDataA, returnDataB, "Call return data does not match"); + } + + if (!successA && !successB && strictRevertData) { + assertEq(returnDataA, returnDataB, "Call revert data does not match"); + } + + if (!successA && successB) { + emit log("Error: Calls were not equal"); + emit log_named_bytes(" Left call revert data", returnDataA); + emit log_named_bytes(" Right call return data", returnDataB); + revert("assertion failed"); + } + + if (successA && !successB) { + emit log("Error: Calls were not equal"); + emit log_named_bytes(" Left call return data", returnDataA); + emit log_named_bytes(" Right call revert data", returnDataB); + revert("assertion failed"); + } + } +} diff --git a/v2/lib/forge-std/src/StdChains.sol b/v2/lib/forge-std/src/StdChains.sol new file mode 100644 index 00000000..0fe827e4 --- /dev/null +++ b/v2/lib/forge-std/src/StdChains.sol @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +import {VmSafe} from "./Vm.sol"; + +/** + * StdChains provides information about EVM compatible chains that can be used in scripts/tests. + * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are + * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of + * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the + * alias used in this contract, which can be found as the first argument to the + * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. + * + * There are two main ways to use this contract: + * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or + * `setChain(string memory chainAlias, Chain memory chain)` + * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. + * + * The first time either of those are used, chains are initialized with the default set of RPC URLs. + * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in + * `defaultRpcUrls`. + * + * The `setChain` function is straightforward, and it simply saves off the given chain data. + * + * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say + * we want to retrieve the RPC URL for `mainnet`: + * - If you have specified data with `setChain`, it will return that. + * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it + * is valid (e.g. a URL is specified, or an environment variable is given and exists). + * - If neither of the above conditions is met, the default data is returned. + * + * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults. + */ +abstract contract StdChains { + VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); + + bool private stdChainsInitialized; + + struct ChainData { + string name; + uint256 chainId; + string rpcUrl; + } + + struct Chain { + // The chain name. + string name; + // The chain's Chain ID. + uint256 chainId; + // The chain's alias. (i.e. what gets specified in `foundry.toml`). + string chainAlias; + // A default RPC endpoint for this chain. + // NOTE: This default RPC URL is included for convenience to facilitate quick tests and + // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy + // usage as you will be throttled and this is a disservice to others who need this endpoint. + string rpcUrl; + } + + // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data. + mapping(string => Chain) private chains; + // Maps from the chain's alias to it's default RPC URL. + mapping(string => string) private defaultRpcUrls; + // Maps from a chain ID to it's alias. + mapping(uint256 => string) private idToAlias; + + bool private fallbackToDefaultRpcUrls = true; + + // The RPC URL will be fetched from config or defaultRpcUrls if possible. + function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) { + require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string."); + + initializeStdChains(); + chain = chains[chainAlias]; + require( + chain.chainId != 0, + string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found.")) + ); + + chain = getChainWithUpdatedRpcUrl(chainAlias, chain); + } + + function getChain(uint256 chainId) internal virtual returns (Chain memory chain) { + require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0."); + initializeStdChains(); + string memory chainAlias = idToAlias[chainId]; + + chain = chains[chainAlias]; + + require( + chain.chainId != 0, + string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found.")) + ); + + chain = getChainWithUpdatedRpcUrl(chainAlias, chain); + } + + // set chain info, with priority to argument's rpcUrl field. + function setChain(string memory chainAlias, ChainData memory chain) internal virtual { + require( + bytes(chainAlias).length != 0, + "StdChains setChain(string,ChainData): Chain alias cannot be the empty string." + ); + + require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0."); + + initializeStdChains(); + string memory foundAlias = idToAlias[chain.chainId]; + + require( + bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)), + string( + abi.encodePacked( + "StdChains setChain(string,ChainData): Chain ID ", + vm.toString(chain.chainId), + " already used by \"", + foundAlias, + "\"." + ) + ) + ); + + uint256 oldChainId = chains[chainAlias].chainId; + delete idToAlias[oldChainId]; + + chains[chainAlias] = + Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl}); + idToAlias[chain.chainId] = chainAlias; + } + + // set chain info, with priority to argument's rpcUrl field. + function setChain(string memory chainAlias, Chain memory chain) internal virtual { + setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl})); + } + + function _toUpper(string memory str) private pure returns (string memory) { + bytes memory strb = bytes(str); + bytes memory copy = new bytes(strb.length); + for (uint256 i = 0; i < strb.length; i++) { + bytes1 b = strb[i]; + if (b >= 0x61 && b <= 0x7A) { + copy[i] = bytes1(uint8(b) - 32); + } else { + copy[i] = b; + } + } + return string(copy); + } + + // lookup rpcUrl, in descending order of priority: + // current -> config (foundry.toml) -> environment variable -> default + function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) + private + view + returns (Chain memory) + { + if (bytes(chain.rpcUrl).length == 0) { + try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) { + chain.rpcUrl = configRpcUrl; + } catch (bytes memory err) { + string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL")); + if (fallbackToDefaultRpcUrls) { + chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]); + } else { + chain.rpcUrl = vm.envString(envName); + } + // Distinguish 'not found' from 'cannot read' + // The upstream error thrown by forge for failing cheats changed so we check both the old and new versions + bytes memory oldNotFoundError = + abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias))); + bytes memory newNotFoundError = abi.encodeWithSignature( + "CheatcodeError(string)", string(abi.encodePacked("invalid rpc url: ", chainAlias)) + ); + bytes32 errHash = keccak256(err); + if ( + (errHash != keccak256(oldNotFoundError) && errHash != keccak256(newNotFoundError)) + || bytes(chain.rpcUrl).length == 0 + ) { + /// @solidity memory-safe-assembly + assembly { + revert(add(32, err), mload(err)) + } + } + } + } + return chain; + } + + function setFallbackToDefaultRpcUrls(bool useDefault) internal { + fallbackToDefaultRpcUrls = useDefault; + } + + function initializeStdChains() private { + if (stdChainsInitialized) return; + + stdChainsInitialized = true; + + // If adding an RPC here, make sure to test the default RPC URL in `test_Rpcs` in `StdChains.t.sol` + setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545")); + setChainWithDefaultRpcUrl( + "mainnet", ChainData("Mainnet", 1, "https://eth-mainnet.alchemyapi.io/v2/pwc5rmJhrdoaSEfimoKEmsvOjKSmPDrP") + ); + setChainWithDefaultRpcUrl( + "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") + ); + setChainWithDefaultRpcUrl("holesky", ChainData("Holesky", 17000, "https://rpc.holesky.ethpandaops.io")); + setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io")); + setChainWithDefaultRpcUrl( + "optimism_sepolia", ChainData("Optimism Sepolia", 11155420, "https://sepolia.optimism.io") + ); + setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc")); + setChainWithDefaultRpcUrl( + "arbitrum_one_sepolia", ChainData("Arbitrum One Sepolia", 421614, "https://sepolia-rollup.arbitrum.io/rpc") + ); + setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc")); + setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com")); + setChainWithDefaultRpcUrl( + "polygon_amoy", ChainData("Polygon Amoy", 80002, "https://rpc-amoy.polygon.technology") + ); + setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc")); + setChainWithDefaultRpcUrl( + "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc") + ); + setChainWithDefaultRpcUrl( + "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org") + ); + setChainWithDefaultRpcUrl( + "bnb_smart_chain_testnet", + ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel") + ); + setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com")); + setChainWithDefaultRpcUrl("moonbeam", ChainData("Moonbeam", 1284, "https://rpc.api.moonbeam.network")); + setChainWithDefaultRpcUrl( + "moonriver", ChainData("Moonriver", 1285, "https://rpc.api.moonriver.moonbeam.network") + ); + setChainWithDefaultRpcUrl("moonbase", ChainData("Moonbase", 1287, "https://rpc.testnet.moonbeam.network")); + setChainWithDefaultRpcUrl("base_sepolia", ChainData("Base Sepolia", 84532, "https://sepolia.base.org")); + setChainWithDefaultRpcUrl("base", ChainData("Base", 8453, "https://mainnet.base.org")); + setChainWithDefaultRpcUrl("blast_sepolia", ChainData("Blast Sepolia", 168587773, "https://sepolia.blast.io")); + setChainWithDefaultRpcUrl("blast", ChainData("Blast", 81457, "https://rpc.blast.io")); + setChainWithDefaultRpcUrl("fantom_opera", ChainData("Fantom Opera", 250, "https://rpc.ankr.com/fantom/")); + setChainWithDefaultRpcUrl( + "fantom_opera_testnet", ChainData("Fantom Opera Testnet", 4002, "https://rpc.ankr.com/fantom_testnet/") + ); + setChainWithDefaultRpcUrl("fraxtal", ChainData("Fraxtal", 252, "https://rpc.frax.com")); + setChainWithDefaultRpcUrl("fraxtal_testnet", ChainData("Fraxtal Testnet", 2522, "https://rpc.testnet.frax.com")); + setChainWithDefaultRpcUrl( + "berachain_bartio_testnet", ChainData("Berachain bArtio Testnet", 80084, "https://bartio.rpc.berachain.com") + ); + } + + // set chain info, with priority to chainAlias' rpc url in foundry.toml + function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private { + string memory rpcUrl = chain.rpcUrl; + defaultRpcUrls[chainAlias] = rpcUrl; + chain.rpcUrl = ""; + setChain(chainAlias, chain); + chain.rpcUrl = rpcUrl; // restore argument + } +} diff --git a/v2/lib/forge-std/src/StdCheats.sol b/v2/lib/forge-std/src/StdCheats.sol new file mode 100644 index 00000000..f2933139 --- /dev/null +++ b/v2/lib/forge-std/src/StdCheats.sol @@ -0,0 +1,817 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import {StdStorage, stdStorage} from "./StdStorage.sol"; +import {console2} from "./console2.sol"; +import {Vm} from "./Vm.sol"; + +abstract contract StdCheatsSafe { + Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); + + uint256 private constant UINT256_MAX = + 115792089237316195423570985008687907853269984665640564039457584007913129639935; + + bool private gasMeteringOff; + + // Data structures to parse Transaction objects from the broadcast artifact + // that conform to EIP1559. The Raw structs is what is parsed from the JSON + // and then converted to the one that is used by the user for better UX. + + struct RawTx1559 { + string[] arguments; + address contractAddress; + string contractName; + // json value name = function + string functionSig; + bytes32 hash; + // json value name = tx + RawTx1559Detail txDetail; + // json value name = type + string opcode; + } + + struct RawTx1559Detail { + AccessList[] accessList; + bytes data; + address from; + bytes gas; + bytes nonce; + address to; + bytes txType; + bytes value; + } + + struct Tx1559 { + string[] arguments; + address contractAddress; + string contractName; + string functionSig; + bytes32 hash; + Tx1559Detail txDetail; + string opcode; + } + + struct Tx1559Detail { + AccessList[] accessList; + bytes data; + address from; + uint256 gas; + uint256 nonce; + address to; + uint256 txType; + uint256 value; + } + + // Data structures to parse Transaction objects from the broadcast artifact + // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON + // and then converted to the one that is used by the user for better UX. + + struct TxLegacy { + string[] arguments; + address contractAddress; + string contractName; + string functionSig; + string hash; + string opcode; + TxDetailLegacy transaction; + } + + struct TxDetailLegacy { + AccessList[] accessList; + uint256 chainId; + bytes data; + address from; + uint256 gas; + uint256 gasPrice; + bytes32 hash; + uint256 nonce; + bytes1 opcode; + bytes32 r; + bytes32 s; + uint256 txType; + address to; + uint8 v; + uint256 value; + } + + struct AccessList { + address accessAddress; + bytes32[] storageKeys; + } + + // Data structures to parse Receipt objects from the broadcast artifact. + // The Raw structs is what is parsed from the JSON + // and then converted to the one that is used by the user for better UX. + + struct RawReceipt { + bytes32 blockHash; + bytes blockNumber; + address contractAddress; + bytes cumulativeGasUsed; + bytes effectiveGasPrice; + address from; + bytes gasUsed; + RawReceiptLog[] logs; + bytes logsBloom; + bytes status; + address to; + bytes32 transactionHash; + bytes transactionIndex; + } + + struct Receipt { + bytes32 blockHash; + uint256 blockNumber; + address contractAddress; + uint256 cumulativeGasUsed; + uint256 effectiveGasPrice; + address from; + uint256 gasUsed; + ReceiptLog[] logs; + bytes logsBloom; + uint256 status; + address to; + bytes32 transactionHash; + uint256 transactionIndex; + } + + // Data structures to parse the entire broadcast artifact, assuming the + // transactions conform to EIP1559. + + struct EIP1559ScriptArtifact { + string[] libraries; + string path; + string[] pending; + Receipt[] receipts; + uint256 timestamp; + Tx1559[] transactions; + TxReturn[] txReturns; + } + + struct RawEIP1559ScriptArtifact { + string[] libraries; + string path; + string[] pending; + RawReceipt[] receipts; + TxReturn[] txReturns; + uint256 timestamp; + RawTx1559[] transactions; + } + + struct RawReceiptLog { + // json value = address + address logAddress; + bytes32 blockHash; + bytes blockNumber; + bytes data; + bytes logIndex; + bool removed; + bytes32[] topics; + bytes32 transactionHash; + bytes transactionIndex; + bytes transactionLogIndex; + } + + struct ReceiptLog { + // json value = address + address logAddress; + bytes32 blockHash; + uint256 blockNumber; + bytes data; + uint256 logIndex; + bytes32[] topics; + uint256 transactionIndex; + uint256 transactionLogIndex; + bool removed; + } + + struct TxReturn { + string internalType; + string value; + } + + struct Account { + address addr; + uint256 key; + } + + enum AddressType { + Payable, + NonPayable, + ZeroAddress, + Precompile, + ForgeAddress + } + + // Checks that `addr` is not blacklisted by token contracts that have a blacklist. + function assumeNotBlacklisted(address token, address addr) internal view virtual { + // Nothing to check if `token` is not a contract. + uint256 tokenCodeSize; + assembly { + tokenCodeSize := extcodesize(token) + } + require(tokenCodeSize > 0, "StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); + + bool success; + bytes memory returnData; + + // 4-byte selector for `isBlacklisted(address)`, used by USDC. + (success, returnData) = token.staticcall(abi.encodeWithSelector(0xfe575a87, addr)); + vm.assume(!success || abi.decode(returnData, (bool)) == false); + + // 4-byte selector for `isBlackListed(address)`, used by USDT. + (success, returnData) = token.staticcall(abi.encodeWithSelector(0xe47d6060, addr)); + vm.assume(!success || abi.decode(returnData, (bool)) == false); + } + + // Checks that `addr` is not blacklisted by token contracts that have a blacklist. + // This is identical to `assumeNotBlacklisted(address,address)` but with a different name, for + // backwards compatibility, since this name was used in the original PR which has already has + // a release. This function can be removed in a future release once we want a breaking change. + function assumeNoBlacklisted(address token, address addr) internal view virtual { + assumeNotBlacklisted(token, addr); + } + + function assumeAddressIsNot(address addr, AddressType addressType) internal virtual { + if (addressType == AddressType.Payable) { + assumeNotPayable(addr); + } else if (addressType == AddressType.NonPayable) { + assumePayable(addr); + } else if (addressType == AddressType.ZeroAddress) { + assumeNotZeroAddress(addr); + } else if (addressType == AddressType.Precompile) { + assumeNotPrecompile(addr); + } else if (addressType == AddressType.ForgeAddress) { + assumeNotForgeAddress(addr); + } + } + + function assumeAddressIsNot(address addr, AddressType addressType1, AddressType addressType2) internal virtual { + assumeAddressIsNot(addr, addressType1); + assumeAddressIsNot(addr, addressType2); + } + + function assumeAddressIsNot( + address addr, + AddressType addressType1, + AddressType addressType2, + AddressType addressType3 + ) internal virtual { + assumeAddressIsNot(addr, addressType1); + assumeAddressIsNot(addr, addressType2); + assumeAddressIsNot(addr, addressType3); + } + + function assumeAddressIsNot( + address addr, + AddressType addressType1, + AddressType addressType2, + AddressType addressType3, + AddressType addressType4 + ) internal virtual { + assumeAddressIsNot(addr, addressType1); + assumeAddressIsNot(addr, addressType2); + assumeAddressIsNot(addr, addressType3); + assumeAddressIsNot(addr, addressType4); + } + + // This function checks whether an address, `addr`, is payable. It works by sending 1 wei to + // `addr` and checking the `success` return value. + // NOTE: This function may result in state changes depending on the fallback/receive logic + // implemented by `addr`, which should be taken into account when this function is used. + function _isPayable(address addr) private returns (bool) { + require( + addr.balance < UINT256_MAX, + "StdCheats _isPayable(address): Balance equals max uint256, so it cannot receive any more funds" + ); + uint256 origBalanceTest = address(this).balance; + uint256 origBalanceAddr = address(addr).balance; + + vm.deal(address(this), 1); + (bool success,) = payable(addr).call{value: 1}(""); + + // reset balances + vm.deal(address(this), origBalanceTest); + vm.deal(addr, origBalanceAddr); + + return success; + } + + // NOTE: This function may result in state changes depending on the fallback/receive logic + // implemented by `addr`, which should be taken into account when this function is used. See the + // `_isPayable` method for more information. + function assumePayable(address addr) internal virtual { + vm.assume(_isPayable(addr)); + } + + function assumeNotPayable(address addr) internal virtual { + vm.assume(!_isPayable(addr)); + } + + function assumeNotZeroAddress(address addr) internal pure virtual { + vm.assume(addr != address(0)); + } + + function assumeNotPrecompile(address addr) internal pure virtual { + assumeNotPrecompile(addr, _pureChainId()); + } + + function assumeNotPrecompile(address addr, uint256 chainId) internal pure virtual { + // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific + // address), but the same rationale for excluding them applies so we include those too. + + // These should be present on all EVM-compatible chains. + vm.assume(addr < address(0x1) || addr > address(0x9)); + + // forgefmt: disable-start + if (chainId == 10 || chainId == 420) { + // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21 + vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800)); + } else if (chainId == 42161 || chainId == 421613) { + // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains + vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068)); + } else if (chainId == 43114 || chainId == 43113) { + // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59 + vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff)); + vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF)); + vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff)); + } + // forgefmt: disable-end + } + + function assumeNotForgeAddress(address addr) internal pure virtual { + // vm, console, and Create2Deployer addresses + vm.assume( + addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 + && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C + ); + } + + function readEIP1559ScriptArtifact(string memory path) + internal + view + virtual + returns (EIP1559ScriptArtifact memory) + { + string memory data = vm.readFile(path); + bytes memory parsedData = vm.parseJson(data); + RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact)); + EIP1559ScriptArtifact memory artifact; + artifact.libraries = rawArtifact.libraries; + artifact.path = rawArtifact.path; + artifact.timestamp = rawArtifact.timestamp; + artifact.pending = rawArtifact.pending; + artifact.txReturns = rawArtifact.txReturns; + artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts); + artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions); + return artifact; + } + + function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) { + Tx1559[] memory txs = new Tx1559[](rawTxs.length); + for (uint256 i; i < rawTxs.length; i++) { + txs[i] = rawToConvertedEIPTx1559(rawTxs[i]); + } + return txs; + } + + function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) { + Tx1559 memory transaction; + transaction.arguments = rawTx.arguments; + transaction.contractName = rawTx.contractName; + transaction.functionSig = rawTx.functionSig; + transaction.hash = rawTx.hash; + transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail); + transaction.opcode = rawTx.opcode; + return transaction; + } + + function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail) + internal + pure + virtual + returns (Tx1559Detail memory) + { + Tx1559Detail memory txDetail; + txDetail.data = rawDetail.data; + txDetail.from = rawDetail.from; + txDetail.to = rawDetail.to; + txDetail.nonce = _bytesToUint(rawDetail.nonce); + txDetail.txType = _bytesToUint(rawDetail.txType); + txDetail.value = _bytesToUint(rawDetail.value); + txDetail.gas = _bytesToUint(rawDetail.gas); + txDetail.accessList = rawDetail.accessList; + return txDetail; + } + + function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) { + string memory deployData = vm.readFile(path); + bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions"); + RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[])); + return rawToConvertedEIPTx1559s(rawTxs); + } + + function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) { + string memory deployData = vm.readFile(path); + string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]")); + bytes memory parsedDeployData = vm.parseJson(deployData, key); + RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559)); + return rawToConvertedEIPTx1559(rawTx); + } + + // Analogous to readTransactions, but for receipts. + function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) { + string memory deployData = vm.readFile(path); + bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts"); + RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[])); + return rawToConvertedReceipts(rawReceipts); + } + + function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) { + string memory deployData = vm.readFile(path); + string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]")); + bytes memory parsedDeployData = vm.parseJson(deployData, key); + RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt)); + return rawToConvertedReceipt(rawReceipt); + } + + function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) { + Receipt[] memory receipts = new Receipt[](rawReceipts.length); + for (uint256 i; i < rawReceipts.length; i++) { + receipts[i] = rawToConvertedReceipt(rawReceipts[i]); + } + return receipts; + } + + function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) { + Receipt memory receipt; + receipt.blockHash = rawReceipt.blockHash; + receipt.to = rawReceipt.to; + receipt.from = rawReceipt.from; + receipt.contractAddress = rawReceipt.contractAddress; + receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice); + receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed); + receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed); + receipt.status = _bytesToUint(rawReceipt.status); + receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex); + receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber); + receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs); + receipt.logsBloom = rawReceipt.logsBloom; + receipt.transactionHash = rawReceipt.transactionHash; + return receipt; + } + + function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs) + internal + pure + virtual + returns (ReceiptLog[] memory) + { + ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length); + for (uint256 i; i < rawLogs.length; i++) { + logs[i].logAddress = rawLogs[i].logAddress; + logs[i].blockHash = rawLogs[i].blockHash; + logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber); + logs[i].data = rawLogs[i].data; + logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex); + logs[i].topics = rawLogs[i].topics; + logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex); + logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex); + logs[i].removed = rawLogs[i].removed; + } + return logs; + } + + // Deploy a contract by fetching the contract bytecode from + // the artifacts directory + // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))` + function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) { + bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); + /// @solidity memory-safe-assembly + assembly { + addr := create(0, add(bytecode, 0x20), mload(bytecode)) + } + + require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed."); + } + + function deployCode(string memory what) internal virtual returns (address addr) { + bytes memory bytecode = vm.getCode(what); + /// @solidity memory-safe-assembly + assembly { + addr := create(0, add(bytecode, 0x20), mload(bytecode)) + } + + require(addr != address(0), "StdCheats deployCode(string): Deployment failed."); + } + + /// @dev deploy contract with value on construction + function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) { + bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); + /// @solidity memory-safe-assembly + assembly { + addr := create(val, add(bytecode, 0x20), mload(bytecode)) + } + + require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed."); + } + + function deployCode(string memory what, uint256 val) internal virtual returns (address addr) { + bytes memory bytecode = vm.getCode(what); + /// @solidity memory-safe-assembly + assembly { + addr := create(val, add(bytecode, 0x20), mload(bytecode)) + } + + require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed."); + } + + // creates a labeled address and the corresponding private key + function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) { + privateKey = uint256(keccak256(abi.encodePacked(name))); + addr = vm.addr(privateKey); + vm.label(addr, name); + } + + // creates a labeled address + function makeAddr(string memory name) internal virtual returns (address addr) { + (addr,) = makeAddrAndKey(name); + } + + // Destroys an account immediately, sending the balance to beneficiary. + // Destroying means: balance will be zero, code will be empty, and nonce will be 0 + // This is similar to selfdestruct but not identical: selfdestruct destroys code and nonce + // only after tx ends, this will run immediately. + function destroyAccount(address who, address beneficiary) internal virtual { + uint256 currBalance = who.balance; + vm.etch(who, abi.encode()); + vm.deal(who, 0); + vm.resetNonce(who); + + uint256 beneficiaryBalance = beneficiary.balance; + vm.deal(beneficiary, currBalance + beneficiaryBalance); + } + + // creates a struct containing both a labeled address and the corresponding private key + function makeAccount(string memory name) internal virtual returns (Account memory account) { + (account.addr, account.key) = makeAddrAndKey(name); + } + + function deriveRememberKey(string memory mnemonic, uint32 index) + internal + virtual + returns (address who, uint256 privateKey) + { + privateKey = vm.deriveKey(mnemonic, index); + who = vm.rememberKey(privateKey); + } + + function _bytesToUint(bytes memory b) private pure returns (uint256) { + require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32."); + return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); + } + + function isFork() internal view virtual returns (bool status) { + try vm.activeFork() { + status = true; + } catch (bytes memory) {} + } + + modifier skipWhenForking() { + if (!isFork()) { + _; + } + } + + modifier skipWhenNotForking() { + if (isFork()) { + _; + } + } + + modifier noGasMetering() { + vm.pauseGasMetering(); + // To prevent turning gas monitoring back on with nested functions that use this modifier, + // we check if gasMetering started in the off position. If it did, we don't want to turn + // it back on until we exit the top level function that used the modifier + // + // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well. + // funcA will have `gasStartedOff` as false, funcB will have it as true, + // so we only turn metering back on at the end of the funcA + bool gasStartedOff = gasMeteringOff; + gasMeteringOff = true; + + _; + + // if gas metering was on when this modifier was called, turn it back on at the end + if (!gasStartedOff) { + gasMeteringOff = false; + vm.resumeGasMetering(); + } + } + + // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no + // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We + // can't simply access the chain ID in a normal view or pure function because the solc View Pure + // Checker changed `chainid` from pure to view in 0.8.0. + function _viewChainId() private view returns (uint256 chainId) { + // Assembly required since `block.chainid` was introduced in 0.8.0. + assembly { + chainId := chainid() + } + + address(this); // Silence warnings in older Solc versions. + } + + function _pureChainId() private pure returns (uint256 chainId) { + function() internal view returns (uint256) fnIn = _viewChainId; + function() internal pure returns (uint256) pureChainId; + assembly { + pureChainId := fnIn + } + chainId = pureChainId(); + } +} + +// Wrappers around cheatcodes to avoid footguns +abstract contract StdCheats is StdCheatsSafe { + using stdStorage for StdStorage; + + StdStorage private stdstore; + Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); + address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; + + // Skip forward or rewind time by the specified number of seconds + function skip(uint256 time) internal virtual { + vm.warp(block.timestamp + time); + } + + function rewind(uint256 time) internal virtual { + vm.warp(block.timestamp - time); + } + + // Setup a prank from an address that has some ether + function hoax(address msgSender) internal virtual { + vm.deal(msgSender, 1 << 128); + vm.prank(msgSender); + } + + function hoax(address msgSender, uint256 give) internal virtual { + vm.deal(msgSender, give); + vm.prank(msgSender); + } + + function hoax(address msgSender, address origin) internal virtual { + vm.deal(msgSender, 1 << 128); + vm.prank(msgSender, origin); + } + + function hoax(address msgSender, address origin, uint256 give) internal virtual { + vm.deal(msgSender, give); + vm.prank(msgSender, origin); + } + + // Start perpetual prank from an address that has some ether + function startHoax(address msgSender) internal virtual { + vm.deal(msgSender, 1 << 128); + vm.startPrank(msgSender); + } + + function startHoax(address msgSender, uint256 give) internal virtual { + vm.deal(msgSender, give); + vm.startPrank(msgSender); + } + + // Start perpetual prank from an address that has some ether + // tx.origin is set to the origin parameter + function startHoax(address msgSender, address origin) internal virtual { + vm.deal(msgSender, 1 << 128); + vm.startPrank(msgSender, origin); + } + + function startHoax(address msgSender, address origin, uint256 give) internal virtual { + vm.deal(msgSender, give); + vm.startPrank(msgSender, origin); + } + + function changePrank(address msgSender) internal virtual { + console2_log_StdCheats("changePrank is deprecated. Please use vm.startPrank instead."); + vm.stopPrank(); + vm.startPrank(msgSender); + } + + function changePrank(address msgSender, address txOrigin) internal virtual { + vm.stopPrank(); + vm.startPrank(msgSender, txOrigin); + } + + // The same as Vm's `deal` + // Use the alternative signature for ERC20 tokens + function deal(address to, uint256 give) internal virtual { + vm.deal(to, give); + } + + // Set the balance of an account for any ERC20 token + // Use the alternative signature to update `totalSupply` + function deal(address token, address to, uint256 give) internal virtual { + deal(token, to, give, false); + } + + // Set the balance of an account for any ERC1155 token + // Use the alternative signature to update `totalSupply` + function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual { + dealERC1155(token, to, id, give, false); + } + + function deal(address token, address to, uint256 give, bool adjust) internal virtual { + // get current balance + (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); + uint256 prevBal = abi.decode(balData, (uint256)); + + // update balance + stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give); + + // update total supply + if (adjust) { + (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0x18160ddd)); + uint256 totSup = abi.decode(totSupData, (uint256)); + if (give < prevBal) { + totSup -= (prevBal - give); + } else { + totSup += (give - prevBal); + } + stdstore.target(token).sig(0x18160ddd).checked_write(totSup); + } + } + + function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual { + // get current balance + (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x00fdd58e, to, id)); + uint256 prevBal = abi.decode(balData, (uint256)); + + // update balance + stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give); + + // update total supply + if (adjust) { + (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0xbd85b039, id)); + require( + totSupData.length != 0, + "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply." + ); + uint256 totSup = abi.decode(totSupData, (uint256)); + if (give < prevBal) { + totSup -= (prevBal - give); + } else { + totSup += (give - prevBal); + } + stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup); + } + } + + function dealERC721(address token, address to, uint256 id) internal virtual { + // check if token id is already minted and the actual owner. + (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id)); + require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted."); + + // get owner current balance + (, bytes memory fromBalData) = + token.staticcall(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address)))); + uint256 fromPrevBal = abi.decode(fromBalData, (uint256)); + + // get new user current balance + (, bytes memory toBalData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); + uint256 toPrevBal = abi.decode(toBalData, (uint256)); + + // update balances + stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal); + stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal); + + // update owner + stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to); + } + + function deployCodeTo(string memory what, address where) internal virtual { + deployCodeTo(what, "", 0, where); + } + + function deployCodeTo(string memory what, bytes memory args, address where) internal virtual { + deployCodeTo(what, args, 0, where); + } + + function deployCodeTo(string memory what, bytes memory args, uint256 value, address where) internal virtual { + bytes memory creationCode = vm.getCode(what); + vm.etch(where, abi.encodePacked(creationCode, args)); + (bool success, bytes memory runtimeBytecode) = where.call{value: value}(""); + require(success, "StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); + vm.etch(where, runtimeBytecode); + } + + // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. + function console2_log_StdCheats(string memory p0) private view { + (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string)", p0)); + status; + } +} diff --git a/v2/lib/forge-std/src/StdError.sol b/v2/lib/forge-std/src/StdError.sol new file mode 100644 index 00000000..a302191f --- /dev/null +++ b/v2/lib/forge-std/src/StdError.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: MIT +// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test +pragma solidity >=0.6.2 <0.9.0; + +library stdError { + bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01); + bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11); + bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12); + bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21); + bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22); + bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31); + bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32); + bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41); + bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51); +} diff --git a/v2/lib/forge-std/src/StdInvariant.sol b/v2/lib/forge-std/src/StdInvariant.sol new file mode 100644 index 00000000..056db98f --- /dev/null +++ b/v2/lib/forge-std/src/StdInvariant.sol @@ -0,0 +1,122 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +abstract contract StdInvariant { + struct FuzzSelector { + address addr; + bytes4[] selectors; + } + + struct FuzzArtifactSelector { + string artifact; + bytes4[] selectors; + } + + struct FuzzInterface { + address addr; + string[] artifacts; + } + + address[] private _excludedContracts; + address[] private _excludedSenders; + address[] private _targetedContracts; + address[] private _targetedSenders; + + string[] private _excludedArtifacts; + string[] private _targetedArtifacts; + + FuzzArtifactSelector[] private _targetedArtifactSelectors; + + FuzzSelector[] private _excludedSelectors; + FuzzSelector[] private _targetedSelectors; + + FuzzInterface[] private _targetedInterfaces; + + // Functions for users: + // These are intended to be called in tests. + + function excludeContract(address newExcludedContract_) internal { + _excludedContracts.push(newExcludedContract_); + } + + function excludeSelector(FuzzSelector memory newExcludedSelector_) internal { + _excludedSelectors.push(newExcludedSelector_); + } + + function excludeSender(address newExcludedSender_) internal { + _excludedSenders.push(newExcludedSender_); + } + + function excludeArtifact(string memory newExcludedArtifact_) internal { + _excludedArtifacts.push(newExcludedArtifact_); + } + + function targetArtifact(string memory newTargetedArtifact_) internal { + _targetedArtifacts.push(newTargetedArtifact_); + } + + function targetArtifactSelector(FuzzArtifactSelector memory newTargetedArtifactSelector_) internal { + _targetedArtifactSelectors.push(newTargetedArtifactSelector_); + } + + function targetContract(address newTargetedContract_) internal { + _targetedContracts.push(newTargetedContract_); + } + + function targetSelector(FuzzSelector memory newTargetedSelector_) internal { + _targetedSelectors.push(newTargetedSelector_); + } + + function targetSender(address newTargetedSender_) internal { + _targetedSenders.push(newTargetedSender_); + } + + function targetInterface(FuzzInterface memory newTargetedInterface_) internal { + _targetedInterfaces.push(newTargetedInterface_); + } + + // Functions for forge: + // These are called by forge to run invariant tests and don't need to be called in tests. + + function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) { + excludedArtifacts_ = _excludedArtifacts; + } + + function excludeContracts() public view returns (address[] memory excludedContracts_) { + excludedContracts_ = _excludedContracts; + } + + function excludeSelectors() public view returns (FuzzSelector[] memory excludedSelectors_) { + excludedSelectors_ = _excludedSelectors; + } + + function excludeSenders() public view returns (address[] memory excludedSenders_) { + excludedSenders_ = _excludedSenders; + } + + function targetArtifacts() public view returns (string[] memory targetedArtifacts_) { + targetedArtifacts_ = _targetedArtifacts; + } + + function targetArtifactSelectors() public view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_) { + targetedArtifactSelectors_ = _targetedArtifactSelectors; + } + + function targetContracts() public view returns (address[] memory targetedContracts_) { + targetedContracts_ = _targetedContracts; + } + + function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) { + targetedSelectors_ = _targetedSelectors; + } + + function targetSenders() public view returns (address[] memory targetedSenders_) { + targetedSenders_ = _targetedSenders; + } + + function targetInterfaces() public view returns (FuzzInterface[] memory targetedInterfaces_) { + targetedInterfaces_ = _targetedInterfaces; + } +} diff --git a/v2/lib/forge-std/src/StdJson.sol b/v2/lib/forge-std/src/StdJson.sol new file mode 100644 index 00000000..6dbde835 --- /dev/null +++ b/v2/lib/forge-std/src/StdJson.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.0 <0.9.0; + +pragma experimental ABIEncoderV2; + +import {VmSafe} from "./Vm.sol"; + +// Helpers for parsing and writing JSON files +// To parse: +// ``` +// using stdJson for string; +// string memory json = vm.readFile(""); +// json.readUint(""); +// ``` +// To write: +// ``` +// using stdJson for string; +// string memory json = "json"; +// json.serialize("a", uint256(123)); +// string memory semiFinal = json.serialize("b", string("test")); +// string memory finalJson = json.serialize("c", semiFinal); +// finalJson.write(""); +// ``` + +library stdJson { + VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); + + function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { + return vm.parseJson(json, key); + } + + function readUint(string memory json, string memory key) internal pure returns (uint256) { + return vm.parseJsonUint(json, key); + } + + function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) { + return vm.parseJsonUintArray(json, key); + } + + function readInt(string memory json, string memory key) internal pure returns (int256) { + return vm.parseJsonInt(json, key); + } + + function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) { + return vm.parseJsonIntArray(json, key); + } + + function readBytes32(string memory json, string memory key) internal pure returns (bytes32) { + return vm.parseJsonBytes32(json, key); + } + + function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) { + return vm.parseJsonBytes32Array(json, key); + } + + function readString(string memory json, string memory key) internal pure returns (string memory) { + return vm.parseJsonString(json, key); + } + + function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) { + return vm.parseJsonStringArray(json, key); + } + + function readAddress(string memory json, string memory key) internal pure returns (address) { + return vm.parseJsonAddress(json, key); + } + + function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) { + return vm.parseJsonAddressArray(json, key); + } + + function readBool(string memory json, string memory key) internal pure returns (bool) { + return vm.parseJsonBool(json, key); + } + + function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) { + return vm.parseJsonBoolArray(json, key); + } + + function readBytes(string memory json, string memory key) internal pure returns (bytes memory) { + return vm.parseJsonBytes(json, key); + } + + function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) { + return vm.parseJsonBytesArray(json, key); + } + + function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { + return vm.serializeJson(jsonKey, rootObject); + } + + function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { + return vm.serializeBool(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bool[] memory value) + internal + returns (string memory) + { + return vm.serializeBool(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { + return vm.serializeUint(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, uint256[] memory value) + internal + returns (string memory) + { + return vm.serializeUint(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { + return vm.serializeInt(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, int256[] memory value) + internal + returns (string memory) + { + return vm.serializeInt(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { + return vm.serializeAddress(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, address[] memory value) + internal + returns (string memory) + { + return vm.serializeAddress(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { + return vm.serializeBytes32(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes32[] memory value) + internal + returns (string memory) + { + return vm.serializeBytes32(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { + return vm.serializeBytes(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes[] memory value) + internal + returns (string memory) + { + return vm.serializeBytes(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, string memory value) + internal + returns (string memory) + { + return vm.serializeString(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, string[] memory value) + internal + returns (string memory) + { + return vm.serializeString(jsonKey, key, value); + } + + function write(string memory jsonKey, string memory path) internal { + vm.writeJson(jsonKey, path); + } + + function write(string memory jsonKey, string memory path, string memory valueKey) internal { + vm.writeJson(jsonKey, path, valueKey); + } +} diff --git a/v2/lib/forge-std/src/StdMath.sol b/v2/lib/forge-std/src/StdMath.sol new file mode 100644 index 00000000..459523bd --- /dev/null +++ b/v2/lib/forge-std/src/StdMath.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +library stdMath { + int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968; + + function abs(int256 a) internal pure returns (uint256) { + // Required or it will fail when `a = type(int256).min` + if (a == INT256_MIN) { + return 57896044618658097711785492504343953926634992332820282019728792003956564819968; + } + + return uint256(a > 0 ? a : -a); + } + + function delta(uint256 a, uint256 b) internal pure returns (uint256) { + return a > b ? a - b : b - a; + } + + function delta(int256 a, int256 b) internal pure returns (uint256) { + // a and b are of the same sign + // this works thanks to two's complement, the left-most bit is the sign bit + if ((a ^ b) > -1) { + return delta(abs(a), abs(b)); + } + + // a and b are of opposite signs + return abs(a) + abs(b); + } + + function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 absDelta = delta(a, b); + + return absDelta * 1e18 / b; + } + + function percentDelta(int256 a, int256 b) internal pure returns (uint256) { + uint256 absDelta = delta(a, b); + uint256 absB = abs(b); + + return absDelta * 1e18 / absB; + } +} diff --git a/v2/lib/forge-std/src/StdStorage.sol b/v2/lib/forge-std/src/StdStorage.sol new file mode 100644 index 00000000..bf3223de --- /dev/null +++ b/v2/lib/forge-std/src/StdStorage.sol @@ -0,0 +1,473 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +import {Vm} from "./Vm.sol"; + +struct FindData { + uint256 slot; + uint256 offsetLeft; + uint256 offsetRight; + bool found; +} + +struct StdStorage { + mapping(address => mapping(bytes4 => mapping(bytes32 => FindData))) finds; + bytes32[] _keys; + bytes4 _sig; + uint256 _depth; + address _target; + bytes32 _set; + bool _enable_packed_slots; + bytes _calldata; +} + +library stdStorageSafe { + event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot); + event WARNING_UninitedSlot(address who, uint256 slot); + + Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); + uint256 constant UINT256_MAX = 115792089237316195423570985008687907853269984665640564039457584007913129639935; + + function sigs(string memory sigStr) internal pure returns (bytes4) { + return bytes4(keccak256(bytes(sigStr))); + } + + function getCallParams(StdStorage storage self) internal view returns (bytes memory) { + if (self._calldata.length == 0) { + return flatten(self._keys); + } else { + return self._calldata; + } + } + + // Calls target contract with configured parameters + function callTarget(StdStorage storage self) internal view returns (bool, bytes32) { + bytes memory cald = abi.encodePacked(self._sig, getCallParams(self)); + (bool success, bytes memory rdat) = self._target.staticcall(cald); + bytes32 result = bytesToBytes32(rdat, 32 * self._depth); + + return (success, result); + } + + // Tries mutating slot value to determine if the targeted value is stored in it. + // If current value is 0, then we are setting slot value to type(uint256).max + // Otherwise, we set it to 0. That way, return value should always be affected. + function checkSlotMutatesCall(StdStorage storage self, bytes32 slot) internal returns (bool) { + bytes32 prevSlotValue = vm.load(self._target, slot); + (bool success, bytes32 prevReturnValue) = callTarget(self); + + bytes32 testVal = prevReturnValue == bytes32(0) ? bytes32(UINT256_MAX) : bytes32(0); + vm.store(self._target, slot, testVal); + + (, bytes32 newReturnValue) = callTarget(self); + + vm.store(self._target, slot, prevSlotValue); + + return (success && (prevReturnValue != newReturnValue)); + } + + // Tries setting one of the bits in slot to 1 until return value changes. + // Index of resulted bit is an offset packed slot has from left/right side + function findOffset(StdStorage storage self, bytes32 slot, bool left) internal returns (bool, uint256) { + for (uint256 offset = 0; offset < 256; offset++) { + uint256 valueToPut = left ? (1 << (255 - offset)) : (1 << offset); + vm.store(self._target, slot, bytes32(valueToPut)); + + (bool success, bytes32 data) = callTarget(self); + + if (success && (uint256(data) > 0)) { + return (true, offset); + } + } + return (false, 0); + } + + function findOffsets(StdStorage storage self, bytes32 slot) internal returns (bool, uint256, uint256) { + bytes32 prevSlotValue = vm.load(self._target, slot); + + (bool foundLeft, uint256 offsetLeft) = findOffset(self, slot, true); + (bool foundRight, uint256 offsetRight) = findOffset(self, slot, false); + + // `findOffset` may mutate slot value, so we are setting it to initial value + vm.store(self._target, slot, prevSlotValue); + return (foundLeft && foundRight, offsetLeft, offsetRight); + } + + function find(StdStorage storage self) internal returns (FindData storage) { + return find(self, true); + } + + /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against + // slot complexity: + // if flat, will be bytes32(uint256(uint)); + // if map, will be keccak256(abi.encode(key, uint(slot))); + // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot))))); + // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth); + function find(StdStorage storage self, bool _clear) internal returns (FindData storage) { + address who = self._target; + bytes4 fsig = self._sig; + uint256 field_depth = self._depth; + bytes memory params = getCallParams(self); + + // calldata to test against + if (self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { + if (_clear) { + clear(self); + } + return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; + } + vm.record(); + (, bytes32 callResult) = callTarget(self); + (bytes32[] memory reads,) = vm.accesses(address(who)); + + if (reads.length == 0) { + revert("stdStorage find(StdStorage): No storage use detected for target."); + } else { + for (uint256 i = reads.length; --i >= 0;) { + bytes32 prev = vm.load(who, reads[i]); + if (prev == bytes32(0)) { + emit WARNING_UninitedSlot(who, uint256(reads[i])); + } + + if (!checkSlotMutatesCall(self, reads[i])) { + continue; + } + + (uint256 offsetLeft, uint256 offsetRight) = (0, 0); + + if (self._enable_packed_slots) { + bool found; + (found, offsetLeft, offsetRight) = findOffsets(self, reads[i]); + if (!found) { + continue; + } + } + + // Check that value between found offsets is equal to the current call result + uint256 curVal = (uint256(prev) & getMaskByOffsets(offsetLeft, offsetRight)) >> offsetRight; + + if (uint256(callResult) != curVal) { + continue; + } + + emit SlotFound(who, fsig, keccak256(abi.encodePacked(params, field_depth)), uint256(reads[i])); + self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))] = + FindData(uint256(reads[i]), offsetLeft, offsetRight, true); + break; + } + } + + require( + self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found, + "stdStorage find(StdStorage): Slot(s) not found." + ); + + if (_clear) { + clear(self); + } + return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; + } + + function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { + self._target = _target; + return self; + } + + function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { + self._sig = _sig; + return self; + } + + function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { + self._sig = sigs(_sig); + return self; + } + + function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { + self._calldata = _calldata; + return self; + } + + function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { + self._keys.push(bytes32(uint256(uint160(who)))); + return self; + } + + function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { + self._keys.push(bytes32(amt)); + return self; + } + + function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { + self._keys.push(key); + return self; + } + + function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { + self._enable_packed_slots = true; + return self; + } + + function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { + self._depth = _depth; + return self; + } + + function read(StdStorage storage self) private returns (bytes memory) { + FindData storage data = find(self, false); + uint256 mask = getMaskByOffsets(data.offsetLeft, data.offsetRight); + uint256 value = (uint256(vm.load(self._target, bytes32(data.slot))) & mask) >> data.offsetRight; + clear(self); + return abi.encode(value); + } + + function read_bytes32(StdStorage storage self) internal returns (bytes32) { + return abi.decode(read(self), (bytes32)); + } + + function read_bool(StdStorage storage self) internal returns (bool) { + int256 v = read_int(self); + if (v == 0) return false; + if (v == 1) return true; + revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); + } + + function read_address(StdStorage storage self) internal returns (address) { + return abi.decode(read(self), (address)); + } + + function read_uint(StdStorage storage self) internal returns (uint256) { + return abi.decode(read(self), (uint256)); + } + + function read_int(StdStorage storage self) internal returns (int256) { + return abi.decode(read(self), (int256)); + } + + function parent(StdStorage storage self) internal returns (uint256, bytes32) { + address who = self._target; + uint256 field_depth = self._depth; + vm.startMappingRecording(); + uint256 child = find(self, true).slot - field_depth; + (bool found, bytes32 key, bytes32 parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); + if (!found) { + revert( + "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." + ); + } + return (uint256(parent_slot), key); + } + + function root(StdStorage storage self) internal returns (uint256) { + address who = self._target; + uint256 field_depth = self._depth; + vm.startMappingRecording(); + uint256 child = find(self, true).slot - field_depth; + bool found; + bytes32 root_slot; + bytes32 parent_slot; + (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); + if (!found) { + revert( + "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." + ); + } + while (found) { + root_slot = parent_slot; + (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(root_slot)); + } + return uint256(root_slot); + } + + function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { + bytes32 out; + + uint256 max = b.length > 32 ? 32 : b.length; + for (uint256 i = 0; i < max; i++) { + out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); + } + return out; + } + + function flatten(bytes32[] memory b) private pure returns (bytes memory) { + bytes memory result = new bytes(b.length * 32); + for (uint256 i = 0; i < b.length; i++) { + bytes32 k = b[i]; + /// @solidity memory-safe-assembly + assembly { + mstore(add(result, add(32, mul(32, i))), k) + } + } + + return result; + } + + function clear(StdStorage storage self) internal { + delete self._target; + delete self._sig; + delete self._keys; + delete self._depth; + delete self._enable_packed_slots; + delete self._calldata; + } + + // Returns mask which contains non-zero bits for values between `offsetLeft` and `offsetRight` + // (slotValue & mask) >> offsetRight will be the value of the given packed variable + function getMaskByOffsets(uint256 offsetLeft, uint256 offsetRight) internal pure returns (uint256 mask) { + // mask = ((1 << (256 - (offsetRight + offsetLeft))) - 1) << offsetRight; + // using assembly because (1 << 256) causes overflow + assembly { + mask := shl(offsetRight, sub(shl(sub(256, add(offsetRight, offsetLeft)), 1), 1)) + } + } + + // Returns slot value with updated packed variable. + function getUpdatedSlotValue(bytes32 curValue, uint256 varValue, uint256 offsetLeft, uint256 offsetRight) + internal + pure + returns (bytes32 newValue) + { + return bytes32((uint256(curValue) & ~getMaskByOffsets(offsetLeft, offsetRight)) | (varValue << offsetRight)); + } +} + +library stdStorage { + Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); + + function sigs(string memory sigStr) internal pure returns (bytes4) { + return stdStorageSafe.sigs(sigStr); + } + + function find(StdStorage storage self) internal returns (uint256) { + return find(self, true); + } + + function find(StdStorage storage self, bool _clear) internal returns (uint256) { + return stdStorageSafe.find(self, _clear).slot; + } + + function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { + return stdStorageSafe.target(self, _target); + } + + function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { + return stdStorageSafe.sig(self, _sig); + } + + function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { + return stdStorageSafe.sig(self, _sig); + } + + function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { + return stdStorageSafe.with_key(self, who); + } + + function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { + return stdStorageSafe.with_key(self, amt); + } + + function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { + return stdStorageSafe.with_key(self, key); + } + + function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { + return stdStorageSafe.with_calldata(self, _calldata); + } + + function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { + return stdStorageSafe.enable_packed_slots(self); + } + + function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { + return stdStorageSafe.depth(self, _depth); + } + + function clear(StdStorage storage self) internal { + stdStorageSafe.clear(self); + } + + function checked_write(StdStorage storage self, address who) internal { + checked_write(self, bytes32(uint256(uint160(who)))); + } + + function checked_write(StdStorage storage self, uint256 amt) internal { + checked_write(self, bytes32(amt)); + } + + function checked_write_int(StdStorage storage self, int256 val) internal { + checked_write(self, bytes32(uint256(val))); + } + + function checked_write(StdStorage storage self, bool write) internal { + bytes32 t; + /// @solidity memory-safe-assembly + assembly { + t := write + } + checked_write(self, t); + } + + function checked_write(StdStorage storage self, bytes32 set) internal { + address who = self._target; + bytes4 fsig = self._sig; + uint256 field_depth = self._depth; + bytes memory params = stdStorageSafe.getCallParams(self); + + if (!self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { + find(self, false); + } + FindData storage data = self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; + if ((data.offsetLeft + data.offsetRight) > 0) { + uint256 maxVal = 2 ** (256 - (data.offsetLeft + data.offsetRight)); + require( + uint256(set) < maxVal, + string( + abi.encodePacked( + "stdStorage find(StdStorage): Packed slot. We can't fit value greater than ", + vm.toString(maxVal) + ) + ) + ); + } + bytes32 curVal = vm.load(who, bytes32(data.slot)); + bytes32 valToSet = stdStorageSafe.getUpdatedSlotValue(curVal, uint256(set), data.offsetLeft, data.offsetRight); + + vm.store(who, bytes32(data.slot), valToSet); + + (bool success, bytes32 callResult) = stdStorageSafe.callTarget(self); + + if (!success || callResult != set) { + vm.store(who, bytes32(data.slot), curVal); + revert("stdStorage find(StdStorage): Failed to write value."); + } + clear(self); + } + + function read_bytes32(StdStorage storage self) internal returns (bytes32) { + return stdStorageSafe.read_bytes32(self); + } + + function read_bool(StdStorage storage self) internal returns (bool) { + return stdStorageSafe.read_bool(self); + } + + function read_address(StdStorage storage self) internal returns (address) { + return stdStorageSafe.read_address(self); + } + + function read_uint(StdStorage storage self) internal returns (uint256) { + return stdStorageSafe.read_uint(self); + } + + function read_int(StdStorage storage self) internal returns (int256) { + return stdStorageSafe.read_int(self); + } + + function parent(StdStorage storage self) internal returns (uint256, bytes32) { + return stdStorageSafe.parent(self); + } + + function root(StdStorage storage self) internal returns (uint256) { + return stdStorageSafe.root(self); + } +} diff --git a/v2/lib/forge-std/src/StdStyle.sol b/v2/lib/forge-std/src/StdStyle.sol new file mode 100644 index 00000000..d371e0c6 --- /dev/null +++ b/v2/lib/forge-std/src/StdStyle.sol @@ -0,0 +1,333 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.4.22 <0.9.0; + +import {VmSafe} from "./Vm.sol"; + +library StdStyle { + VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); + + string constant RED = "\u001b[91m"; + string constant GREEN = "\u001b[92m"; + string constant YELLOW = "\u001b[93m"; + string constant BLUE = "\u001b[94m"; + string constant MAGENTA = "\u001b[95m"; + string constant CYAN = "\u001b[96m"; + string constant BOLD = "\u001b[1m"; + string constant DIM = "\u001b[2m"; + string constant ITALIC = "\u001b[3m"; + string constant UNDERLINE = "\u001b[4m"; + string constant INVERSE = "\u001b[7m"; + string constant RESET = "\u001b[0m"; + + function styleConcat(string memory style, string memory self) private pure returns (string memory) { + return string(abi.encodePacked(style, self, RESET)); + } + + function red(string memory self) internal pure returns (string memory) { + return styleConcat(RED, self); + } + + function red(uint256 self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function red(int256 self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function red(address self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function red(bool self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function redBytes(bytes memory self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function redBytes32(bytes32 self) internal pure returns (string memory) { + return red(vm.toString(self)); + } + + function green(string memory self) internal pure returns (string memory) { + return styleConcat(GREEN, self); + } + + function green(uint256 self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function green(int256 self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function green(address self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function green(bool self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function greenBytes(bytes memory self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function greenBytes32(bytes32 self) internal pure returns (string memory) { + return green(vm.toString(self)); + } + + function yellow(string memory self) internal pure returns (string memory) { + return styleConcat(YELLOW, self); + } + + function yellow(uint256 self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function yellow(int256 self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function yellow(address self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function yellow(bool self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function yellowBytes(bytes memory self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function yellowBytes32(bytes32 self) internal pure returns (string memory) { + return yellow(vm.toString(self)); + } + + function blue(string memory self) internal pure returns (string memory) { + return styleConcat(BLUE, self); + } + + function blue(uint256 self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function blue(int256 self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function blue(address self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function blue(bool self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function blueBytes(bytes memory self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function blueBytes32(bytes32 self) internal pure returns (string memory) { + return blue(vm.toString(self)); + } + + function magenta(string memory self) internal pure returns (string memory) { + return styleConcat(MAGENTA, self); + } + + function magenta(uint256 self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function magenta(int256 self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function magenta(address self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function magenta(bool self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function magentaBytes(bytes memory self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function magentaBytes32(bytes32 self) internal pure returns (string memory) { + return magenta(vm.toString(self)); + } + + function cyan(string memory self) internal pure returns (string memory) { + return styleConcat(CYAN, self); + } + + function cyan(uint256 self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function cyan(int256 self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function cyan(address self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function cyan(bool self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function cyanBytes(bytes memory self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function cyanBytes32(bytes32 self) internal pure returns (string memory) { + return cyan(vm.toString(self)); + } + + function bold(string memory self) internal pure returns (string memory) { + return styleConcat(BOLD, self); + } + + function bold(uint256 self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function bold(int256 self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function bold(address self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function bold(bool self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function boldBytes(bytes memory self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function boldBytes32(bytes32 self) internal pure returns (string memory) { + return bold(vm.toString(self)); + } + + function dim(string memory self) internal pure returns (string memory) { + return styleConcat(DIM, self); + } + + function dim(uint256 self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function dim(int256 self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function dim(address self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function dim(bool self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function dimBytes(bytes memory self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function dimBytes32(bytes32 self) internal pure returns (string memory) { + return dim(vm.toString(self)); + } + + function italic(string memory self) internal pure returns (string memory) { + return styleConcat(ITALIC, self); + } + + function italic(uint256 self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function italic(int256 self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function italic(address self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function italic(bool self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function italicBytes(bytes memory self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function italicBytes32(bytes32 self) internal pure returns (string memory) { + return italic(vm.toString(self)); + } + + function underline(string memory self) internal pure returns (string memory) { + return styleConcat(UNDERLINE, self); + } + + function underline(uint256 self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function underline(int256 self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function underline(address self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function underline(bool self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function underlineBytes(bytes memory self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function underlineBytes32(bytes32 self) internal pure returns (string memory) { + return underline(vm.toString(self)); + } + + function inverse(string memory self) internal pure returns (string memory) { + return styleConcat(INVERSE, self); + } + + function inverse(uint256 self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } + + function inverse(int256 self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } + + function inverse(address self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } + + function inverse(bool self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } + + function inverseBytes(bytes memory self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } + + function inverseBytes32(bytes32 self) internal pure returns (string memory) { + return inverse(vm.toString(self)); + } +} diff --git a/v2/lib/forge-std/src/StdToml.sol b/v2/lib/forge-std/src/StdToml.sol new file mode 100644 index 00000000..ef88db6d --- /dev/null +++ b/v2/lib/forge-std/src/StdToml.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.0 <0.9.0; + +pragma experimental ABIEncoderV2; + +import {VmSafe} from "./Vm.sol"; + +// Helpers for parsing and writing TOML files +// To parse: +// ``` +// using stdToml for string; +// string memory toml = vm.readFile(""); +// toml.readUint(""); +// ``` +// To write: +// ``` +// using stdToml for string; +// string memory json = "json"; +// json.serialize("a", uint256(123)); +// string memory semiFinal = json.serialize("b", string("test")); +// string memory finalJson = json.serialize("c", semiFinal); +// finalJson.write(""); +// ``` + +library stdToml { + VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); + + function parseRaw(string memory toml, string memory key) internal pure returns (bytes memory) { + return vm.parseToml(toml, key); + } + + function readUint(string memory toml, string memory key) internal pure returns (uint256) { + return vm.parseTomlUint(toml, key); + } + + function readUintArray(string memory toml, string memory key) internal pure returns (uint256[] memory) { + return vm.parseTomlUintArray(toml, key); + } + + function readInt(string memory toml, string memory key) internal pure returns (int256) { + return vm.parseTomlInt(toml, key); + } + + function readIntArray(string memory toml, string memory key) internal pure returns (int256[] memory) { + return vm.parseTomlIntArray(toml, key); + } + + function readBytes32(string memory toml, string memory key) internal pure returns (bytes32) { + return vm.parseTomlBytes32(toml, key); + } + + function readBytes32Array(string memory toml, string memory key) internal pure returns (bytes32[] memory) { + return vm.parseTomlBytes32Array(toml, key); + } + + function readString(string memory toml, string memory key) internal pure returns (string memory) { + return vm.parseTomlString(toml, key); + } + + function readStringArray(string memory toml, string memory key) internal pure returns (string[] memory) { + return vm.parseTomlStringArray(toml, key); + } + + function readAddress(string memory toml, string memory key) internal pure returns (address) { + return vm.parseTomlAddress(toml, key); + } + + function readAddressArray(string memory toml, string memory key) internal pure returns (address[] memory) { + return vm.parseTomlAddressArray(toml, key); + } + + function readBool(string memory toml, string memory key) internal pure returns (bool) { + return vm.parseTomlBool(toml, key); + } + + function readBoolArray(string memory toml, string memory key) internal pure returns (bool[] memory) { + return vm.parseTomlBoolArray(toml, key); + } + + function readBytes(string memory toml, string memory key) internal pure returns (bytes memory) { + return vm.parseTomlBytes(toml, key); + } + + function readBytesArray(string memory toml, string memory key) internal pure returns (bytes[] memory) { + return vm.parseTomlBytesArray(toml, key); + } + + function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { + return vm.serializeJson(jsonKey, rootObject); + } + + function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { + return vm.serializeBool(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bool[] memory value) + internal + returns (string memory) + { + return vm.serializeBool(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { + return vm.serializeUint(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, uint256[] memory value) + internal + returns (string memory) + { + return vm.serializeUint(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { + return vm.serializeInt(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, int256[] memory value) + internal + returns (string memory) + { + return vm.serializeInt(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { + return vm.serializeAddress(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, address[] memory value) + internal + returns (string memory) + { + return vm.serializeAddress(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { + return vm.serializeBytes32(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes32[] memory value) + internal + returns (string memory) + { + return vm.serializeBytes32(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { + return vm.serializeBytes(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, bytes[] memory value) + internal + returns (string memory) + { + return vm.serializeBytes(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, string memory value) + internal + returns (string memory) + { + return vm.serializeString(jsonKey, key, value); + } + + function serialize(string memory jsonKey, string memory key, string[] memory value) + internal + returns (string memory) + { + return vm.serializeString(jsonKey, key, value); + } + + function write(string memory jsonKey, string memory path) internal { + vm.writeToml(jsonKey, path); + } + + function write(string memory jsonKey, string memory path, string memory valueKey) internal { + vm.writeToml(jsonKey, path, valueKey); + } +} diff --git a/v2/lib/forge-std/src/StdUtils.sol b/v2/lib/forge-std/src/StdUtils.sol new file mode 100644 index 00000000..5d120439 --- /dev/null +++ b/v2/lib/forge-std/src/StdUtils.sol @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import {IMulticall3} from "./interfaces/IMulticall3.sol"; +import {MockERC20} from "./mocks/MockERC20.sol"; +import {MockERC721} from "./mocks/MockERC721.sol"; +import {VmSafe} from "./Vm.sol"; + +abstract contract StdUtils { + /*////////////////////////////////////////////////////////////////////////// + CONSTANTS + //////////////////////////////////////////////////////////////////////////*/ + + IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); + VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); + address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; + uint256 private constant INT256_MIN_ABS = + 57896044618658097711785492504343953926634992332820282019728792003956564819968; + uint256 private constant SECP256K1_ORDER = + 115792089237316195423570985008687907852837564279074904382605163141518161494337; + uint256 private constant UINT256_MAX = + 115792089237316195423570985008687907853269984665640564039457584007913129639935; + + // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. + address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; + + /*////////////////////////////////////////////////////////////////////////// + INTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////////////////*/ + + function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { + require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min."); + // If x is between min and max, return x directly. This is to ensure that dictionary values + // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 + if (x >= min && x <= max) return x; + + uint256 size = max - min + 1; + + // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. + // This helps ensure coverage of the min/max values. + if (x <= 3 && size > x) return min + x; + if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x); + + // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. + if (x > max) { + uint256 diff = x - max; + uint256 rem = diff % size; + if (rem == 0) return max; + result = min + rem - 1; + } else if (x < min) { + uint256 diff = min - x; + uint256 rem = diff % size; + if (rem == 0) return min; + result = max - rem + 1; + } + } + + function bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { + result = _bound(x, min, max); + console2_log_StdUtils("Bound result", result); + } + + function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { + require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min."); + + // Shifting all int256 values to uint256 to use _bound function. The range of two types are: + // int256 : -(2**255) ~ (2**255 - 1) + // uint256: 0 ~ (2**256 - 1) + // So, add 2**255, INT256_MIN_ABS to the integer values. + // + // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow. + // So, use `~uint256(x) + 1` instead. + uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS); + uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS); + uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS); + + uint256 y = _bound(_x, _min, _max); + + // To move it back to int256 value, subtract INT256_MIN_ABS at here. + result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS); + } + + function bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { + result = _bound(x, min, max); + console2_log_StdUtils("Bound result", vm.toString(result)); + } + + function boundPrivateKey(uint256 privateKey) internal pure virtual returns (uint256 result) { + result = _bound(privateKey, 1, SECP256K1_ORDER - 1); + } + + function bytesToUint(bytes memory b) internal pure virtual returns (uint256) { + require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32."); + return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); + } + + /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce + /// @notice adapted from Solmate implementation (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibRLP.sol) + function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) { + console2_log_StdUtils("computeCreateAddress is deprecated. Please use vm.computeCreateAddress instead."); + return vm.computeCreateAddress(deployer, nonce); + } + + function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer) + internal + pure + virtual + returns (address) + { + console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); + return vm.computeCreate2Address(salt, initcodeHash, deployer); + } + + /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer + function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) { + console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); + return vm.computeCreate2Address(salt, initCodeHash); + } + + /// @dev returns an initialized mock ERC20 contract + function deployMockERC20(string memory name, string memory symbol, uint8 decimals) + internal + returns (MockERC20 mock) + { + mock = new MockERC20(); + mock.initialize(name, symbol, decimals); + } + + /// @dev returns an initialized mock ERC721 contract + function deployMockERC721(string memory name, string memory symbol) internal returns (MockERC721 mock) { + mock = new MockERC721(); + mock.initialize(name, symbol); + } + + /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments + /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode + function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) { + return hashInitCode(creationCode, ""); + } + + /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2 + /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode + /// @param args the ABI-encoded arguments to the constructor of C + function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) { + return keccak256(abi.encodePacked(creationCode, args)); + } + + // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses. + function getTokenBalances(address token, address[] memory addresses) + internal + virtual + returns (uint256[] memory balances) + { + uint256 tokenCodeSize; + assembly { + tokenCodeSize := extcodesize(token) + } + require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract."); + + // ABI encode the aggregate call to Multicall3. + uint256 length = addresses.length; + IMulticall3.Call[] memory calls = new IMulticall3.Call[](length); + for (uint256 i = 0; i < length; ++i) { + // 0x70a08231 = bytes4("balanceOf(address)")) + calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))}); + } + + // Make the aggregate call. + (, bytes[] memory returnData) = multicall.aggregate(calls); + + // ABI decode the return data and return the balances. + balances = new uint256[](length); + for (uint256 i = 0; i < length; ++i) { + balances[i] = abi.decode(returnData[i], (uint256)); + } + } + + /*////////////////////////////////////////////////////////////////////////// + PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////////////////*/ + + function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) { + return address(uint160(uint256(bytesValue))); + } + + // This section is used to prevent the compilation of console, which shortens the compilation time when console is + // not used elsewhere. We also trick the compiler into letting us make the console log methods as `pure` to avoid + // any breaking changes to function signatures. + function _castLogPayloadViewToPure(function(bytes memory) internal view fnIn) + internal + pure + returns (function(bytes memory) internal pure fnOut) + { + assembly { + fnOut := fnIn + } + } + + function _sendLogPayload(bytes memory payload) internal pure { + _castLogPayloadViewToPure(_sendLogPayloadView)(payload); + } + + function _sendLogPayloadView(bytes memory payload) private view { + uint256 payloadLength = payload.length; + address consoleAddress = CONSOLE2_ADDRESS; + /// @solidity memory-safe-assembly + assembly { + let payloadStart := add(payload, 32) + let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) + } + } + + function console2_log_StdUtils(string memory p0) private pure { + _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); + } + + function console2_log_StdUtils(string memory p0, uint256 p1) private pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); + } + + function console2_log_StdUtils(string memory p0, string memory p1) private pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); + } +} diff --git a/v2/lib/forge-std/src/Test.sol b/v2/lib/forge-std/src/Test.sol new file mode 100644 index 00000000..5ff60ea3 --- /dev/null +++ b/v2/lib/forge-std/src/Test.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +// 💬 ABOUT +// Forge Std's default Test. + +// 🧩 MODULES +import {console} from "./console.sol"; +import {console2} from "./console2.sol"; +import {safeconsole} from "./safeconsole.sol"; +import {StdAssertions} from "./StdAssertions.sol"; +import {StdChains} from "./StdChains.sol"; +import {StdCheats} from "./StdCheats.sol"; +import {stdError} from "./StdError.sol"; +import {StdInvariant} from "./StdInvariant.sol"; +import {stdJson} from "./StdJson.sol"; +import {stdMath} from "./StdMath.sol"; +import {StdStorage, stdStorage} from "./StdStorage.sol"; +import {StdStyle} from "./StdStyle.sol"; +import {stdToml} from "./StdToml.sol"; +import {StdUtils} from "./StdUtils.sol"; +import {Vm} from "./Vm.sol"; + +// 📦 BOILERPLATE +import {TestBase} from "./Base.sol"; + +// ⭐️ TEST +abstract contract Test is TestBase, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils { + // Note: IS_TEST() must return true. + bool public IS_TEST = true; +} diff --git a/v2/lib/forge-std/src/Vm.sol b/v2/lib/forge-std/src/Vm.sol new file mode 100644 index 00000000..bc83cb3c --- /dev/null +++ b/v2/lib/forge-std/src/Vm.sol @@ -0,0 +1,1839 @@ +// Automatically @generated by scripts/vm.py. Do not modify manually. + +// SPDX-License-Identifier: MIT OR Apache-2.0 +pragma solidity >=0.6.2 <0.9.0; +pragma experimental ABIEncoderV2; + +/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may +/// result in Script simulations differing from on-chain execution. It is recommended to only use +/// these cheats in scripts. +interface VmSafe { + /// A modification applied to either `msg.sender` or `tx.origin`. Returned by `readCallers`. + enum CallerMode { + // No caller modification is currently active. + None, + // A one time broadcast triggered by a `vm.broadcast()` call is currently active. + Broadcast, + // A recurrent broadcast triggered by a `vm.startBroadcast()` call is currently active. + RecurrentBroadcast, + // A one time prank triggered by a `vm.prank()` call is currently active. + Prank, + // A recurrent prank triggered by a `vm.startPrank()` call is currently active. + RecurrentPrank + } + + /// The kind of account access that occurred. + enum AccountAccessKind { + // The account was called. + Call, + // The account was called via delegatecall. + DelegateCall, + // The account was called via callcode. + CallCode, + // The account was called via staticcall. + StaticCall, + // The account was created. + Create, + // The account was selfdestructed. + SelfDestruct, + // Synthetic access indicating the current context has resumed after a previous sub-context (AccountAccess). + Resume, + // The account's balance was read. + Balance, + // The account's codesize was read. + Extcodesize, + // The account's codehash was read. + Extcodehash, + // The account's code was copied. + Extcodecopy + } + + /// Forge execution contexts. + enum ForgeContext { + // Test group execution context (test, coverage or snapshot). + TestGroup, + // `forge test` execution context. + Test, + // `forge coverage` execution context. + Coverage, + // `forge snapshot` execution context. + Snapshot, + // Script group execution context (dry run, broadcast or resume). + ScriptGroup, + // `forge script` execution context. + ScriptDryRun, + // `forge script --broadcast` execution context. + ScriptBroadcast, + // `forge script --resume` execution context. + ScriptResume, + // Unknown `forge` execution context. + Unknown + } + + /// An Ethereum log. Returned by `getRecordedLogs`. + struct Log { + // The topics of the log, including the signature, if any. + bytes32[] topics; + // The raw data of the log. + bytes data; + // The address of the log's emitter. + address emitter; + } + + /// An RPC URL and its alias. Returned by `rpcUrlStructs`. + struct Rpc { + // The alias of the RPC URL. + string key; + // The RPC URL. + string url; + } + + /// An RPC log object. Returned by `eth_getLogs`. + struct EthGetLogs { + // The address of the log's emitter. + address emitter; + // The topics of the log, including the signature, if any. + bytes32[] topics; + // The raw data of the log. + bytes data; + // The block hash. + bytes32 blockHash; + // The block number. + uint64 blockNumber; + // The transaction hash. + bytes32 transactionHash; + // The transaction index in the block. + uint64 transactionIndex; + // The log index. + uint256 logIndex; + // Whether the log was removed. + bool removed; + } + + /// A single entry in a directory listing. Returned by `readDir`. + struct DirEntry { + // The error message, if any. + string errorMessage; + // The path of the entry. + string path; + // The depth of the entry. + uint64 depth; + // Whether the entry is a directory. + bool isDir; + // Whether the entry is a symlink. + bool isSymlink; + } + + /// Metadata information about a file. + /// This structure is returned from the `fsMetadata` function and represents known + /// metadata about a file such as its permissions, size, modification + /// times, etc. + struct FsMetadata { + // True if this metadata is for a directory. + bool isDir; + // True if this metadata is for a symlink. + bool isSymlink; + // The size of the file, in bytes, this metadata is for. + uint256 length; + // True if this metadata is for a readonly (unwritable) file. + bool readOnly; + // The last modification time listed in this metadata. + uint256 modified; + // The last access time of this metadata. + uint256 accessed; + // The creation time listed in this metadata. + uint256 created; + } + + /// A wallet with a public and private key. + struct Wallet { + // The wallet's address. + address addr; + // The wallet's public key `X`. + uint256 publicKeyX; + // The wallet's public key `Y`. + uint256 publicKeyY; + // The wallet's private key. + uint256 privateKey; + } + + /// The result of a `tryFfi` call. + struct FfiResult { + // The exit code of the call. + int32 exitCode; + // The optionally hex-decoded `stdout` data. + bytes stdout; + // The `stderr` data. + bytes stderr; + } + + /// Information on the chain and fork. + struct ChainInfo { + // The fork identifier. Set to zero if no fork is active. + uint256 forkId; + // The chain ID of the current fork. + uint256 chainId; + } + + /// The result of a `stopAndReturnStateDiff` call. + struct AccountAccess { + // The chain and fork the access occurred. + ChainInfo chainInfo; + // The kind of account access that determines what the account is. + // If kind is Call, DelegateCall, StaticCall or CallCode, then the account is the callee. + // If kind is Create, then the account is the newly created account. + // If kind is SelfDestruct, then the account is the selfdestruct recipient. + // If kind is a Resume, then account represents a account context that has resumed. + AccountAccessKind kind; + // The account that was accessed. + // It's either the account created, callee or a selfdestruct recipient for CREATE, CALL or SELFDESTRUCT. + address account; + // What accessed the account. + address accessor; + // If the account was initialized or empty prior to the access. + // An account is considered initialized if it has code, a + // non-zero nonce, or a non-zero balance. + bool initialized; + // The previous balance of the accessed account. + uint256 oldBalance; + // The potential new balance of the accessed account. + // That is, all balance changes are recorded here, even if reverts occurred. + uint256 newBalance; + // Code of the account deployed by CREATE. + bytes deployedCode; + // Value passed along with the account access + uint256 value; + // Input data provided to the CREATE or CALL + bytes data; + // If this access reverted in either the current or parent context. + bool reverted; + // An ordered list of storage accesses made during an account access operation. + StorageAccess[] storageAccesses; + // Call depth traversed during the recording of state differences + uint64 depth; + } + + /// The storage accessed during an `AccountAccess`. + struct StorageAccess { + // The account whose storage was accessed. + address account; + // The slot that was accessed. + bytes32 slot; + // If the access was a write. + bool isWrite; + // The previous value of the slot. + bytes32 previousValue; + // The new value of the slot. + bytes32 newValue; + // If the access was reverted. + bool reverted; + } + + /// Gas used. Returned by `lastCallGas`. + struct Gas { + // The gas limit of the call. + uint64 gasLimit; + // The total gas used. + uint64 gasTotalUsed; + // DEPRECATED: The amount of gas used for memory expansion. Ref: + uint64 gasMemoryUsed; + // The amount of gas refunded. + int64 gasRefunded; + // The amount of gas remaining. + uint64 gasRemaining; + } + + // ======== Environment ======== + + /// Gets the environment variable `name` and parses it as `address`. + /// Reverts if the variable was not found or could not be parsed. + function envAddress(string calldata name) external view returns (address value); + + /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value); + + /// Gets the environment variable `name` and parses it as `bool`. + /// Reverts if the variable was not found or could not be parsed. + function envBool(string calldata name) external view returns (bool value); + + /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value); + + /// Gets the environment variable `name` and parses it as `bytes32`. + /// Reverts if the variable was not found or could not be parsed. + function envBytes32(string calldata name) external view returns (bytes32 value); + + /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value); + + /// Gets the environment variable `name` and parses it as `bytes`. + /// Reverts if the variable was not found or could not be parsed. + function envBytes(string calldata name) external view returns (bytes memory value); + + /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value); + + /// Gets the environment variable `name` and returns true if it exists, else returns false. + function envExists(string calldata name) external view returns (bool result); + + /// Gets the environment variable `name` and parses it as `int256`. + /// Reverts if the variable was not found or could not be parsed. + function envInt(string calldata name) external view returns (int256 value); + + /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value); + + /// Gets the environment variable `name` and parses it as `bool`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, bool defaultValue) external view returns (bool value); + + /// Gets the environment variable `name` and parses it as `uint256`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, uint256 defaultValue) external view returns (uint256 value); + + /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, address[] calldata defaultValue) + external + view + returns (address[] memory value); + + /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue) + external + view + returns (bytes32[] memory value); + + /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, string[] calldata defaultValue) + external + view + returns (string[] memory value); + + /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue) + external + view + returns (bytes[] memory value); + + /// Gets the environment variable `name` and parses it as `int256`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, int256 defaultValue) external view returns (int256 value); + + /// Gets the environment variable `name` and parses it as `address`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, address defaultValue) external view returns (address value); + + /// Gets the environment variable `name` and parses it as `bytes32`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, bytes32 defaultValue) external view returns (bytes32 value); + + /// Gets the environment variable `name` and parses it as `string`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata defaultValue) external view returns (string memory value); + + /// Gets the environment variable `name` and parses it as `bytes`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, bytes calldata defaultValue) external view returns (bytes memory value); + + /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue) + external + view + returns (bool[] memory value); + + /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue) + external + view + returns (uint256[] memory value); + + /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. + /// Reverts if the variable could not be parsed. + /// Returns `defaultValue` if the variable was not found. + function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue) + external + view + returns (int256[] memory value); + + /// Gets the environment variable `name` and parses it as `string`. + /// Reverts if the variable was not found or could not be parsed. + function envString(string calldata name) external view returns (string memory value); + + /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envString(string calldata name, string calldata delim) external view returns (string[] memory value); + + /// Gets the environment variable `name` and parses it as `uint256`. + /// Reverts if the variable was not found or could not be parsed. + function envUint(string calldata name) external view returns (uint256 value); + + /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. + /// Reverts if the variable was not found or could not be parsed. + function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value); + + /// Returns true if `forge` command was executed in given context. + function isContext(ForgeContext context) external view returns (bool result); + + /// Sets environment variables. + function setEnv(string calldata name, string calldata value) external; + + // ======== EVM ======== + + /// Gets all accessed reads and write slot from a `vm.record` session, for a given address. + function accesses(address target) external returns (bytes32[] memory readSlots, bytes32[] memory writeSlots); + + /// Gets the address for a given private key. + function addr(uint256 privateKey) external pure returns (address keyAddr); + + /// Gets all the logs according to specified filter. + function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] calldata topics) + external + returns (EthGetLogs[] memory logs); + + /// Gets the current `block.blobbasefee`. + /// You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, + /// and as a result will get optimized out by the compiler. + /// See https://github.com/foundry-rs/foundry/issues/6180 + function getBlobBaseFee() external view returns (uint256 blobBaseFee); + + /// Gets the current `block.number`. + /// You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, + /// and as a result will get optimized out by the compiler. + /// See https://github.com/foundry-rs/foundry/issues/6180 + function getBlockNumber() external view returns (uint256 height); + + /// Gets the current `block.timestamp`. + /// You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, + /// and as a result will get optimized out by the compiler. + /// See https://github.com/foundry-rs/foundry/issues/6180 + function getBlockTimestamp() external view returns (uint256 timestamp); + + /// Gets the map key and parent of a mapping at a given slot, for a given address. + function getMappingKeyAndParentOf(address target, bytes32 elementSlot) + external + returns (bool found, bytes32 key, bytes32 parent); + + /// Gets the number of elements in the mapping at the given slot, for a given address. + function getMappingLength(address target, bytes32 mappingSlot) external returns (uint256 length); + + /// Gets the elements at index idx of the mapping at the given slot, for a given address. The + /// index must be less than the length of the mapping (i.e. the number of keys in the mapping). + function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) external returns (bytes32 value); + + /// Gets the nonce of an account. + function getNonce(address account) external view returns (uint64 nonce); + + /// Gets all the recorded logs. + function getRecordedLogs() external returns (Log[] memory logs); + + /// Gets the gas used in the last call. + function lastCallGas() external view returns (Gas memory gas); + + /// Loads a storage slot from an address. + function load(address target, bytes32 slot) external view returns (bytes32 data); + + /// Pauses gas metering (i.e. gas usage is not counted). Noop if already paused. + function pauseGasMetering() external; + + /// Records all storage reads and writes. + function record() external; + + /// Record all the transaction logs. + function recordLogs() external; + + /// Resumes gas metering (i.e. gas usage is counted again). Noop if already on. + function resumeGasMetering() external; + + /// Performs an Ethereum JSON-RPC request to the current fork URL. + function rpc(string calldata method, string calldata params) external returns (bytes memory data); + + /// Performs an Ethereum JSON-RPC request to the given endpoint. + function rpc(string calldata urlOrAlias, string calldata method, string calldata params) + external + returns (bytes memory data); + + /// Signs `digest` with `privateKey` using the secp256r1 curve. + function signP256(uint256 privateKey, bytes32 digest) external pure returns (bytes32 r, bytes32 s); + + /// Signs `digest` with `privateKey` using the secp256k1 curve. + function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); + + /// Signs `digest` with signer provided to script using the secp256k1 curve. + /// If `--sender` is provided, the signer with provided address is used, otherwise, + /// if exactly one signer is provided to the script, that signer is used. + /// Raises error if signer passed through `--sender` does not match any unlocked signers or + /// if `--sender` is not provided and not exactly one signer is passed to the script. + function sign(bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); + + /// Signs `digest` with signer provided to script using the secp256k1 curve. + /// Raises error if none of the signers passed into the script have provided address. + function sign(address signer, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); + + /// Starts recording all map SSTOREs for later retrieval. + function startMappingRecording() external; + + /// Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, + /// along with the context of the calls + function startStateDiffRecording() external; + + /// Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session. + function stopAndReturnStateDiff() external returns (AccountAccess[] memory accountAccesses); + + /// Stops recording all map SSTOREs for later retrieval and clears the recorded data. + function stopMappingRecording() external; + + // ======== Filesystem ======== + + /// Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. + /// `path` is relative to the project root. + function closeFile(string calldata path) external; + + /// Copies the contents of one file to another. This function will **overwrite** the contents of `to`. + /// On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. + /// Both `from` and `to` are relative to the project root. + function copyFile(string calldata from, string calldata to) external returns (uint64 copied); + + /// Creates a new, empty directory at the provided path. + /// This cheatcode will revert in the following situations, but is not limited to just these cases: + /// - User lacks permissions to modify `path`. + /// - A parent of the given path doesn't exist and `recursive` is false. + /// - `path` already exists and `recursive` is false. + /// `path` is relative to the project root. + function createDir(string calldata path, bool recursive) external; + + /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the + /// artifact in the form of :: where and parts are optional. + function deployCode(string calldata artifactPath) external returns (address deployedAddress); + + /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the + /// artifact in the form of :: where and parts are optional. + /// Additionaly accepts abi-encoded constructor arguments. + function deployCode(string calldata artifactPath, bytes calldata constructorArgs) + external + returns (address deployedAddress); + + /// Returns true if the given path points to an existing entity, else returns false. + function exists(string calldata path) external returns (bool result); + + /// Performs a foreign function call via the terminal. + function ffi(string[] calldata commandInput) external returns (bytes memory result); + + /// Given a path, query the file system to get information about a file, directory, etc. + function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata); + + /// Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the + /// artifact in the form of :: where and parts are optional. + function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode); + + /// Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the + /// artifact in the form of :: where and parts are optional. + function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode); + + /// Returns true if the path exists on disk and is pointing at a directory, else returns false. + function isDir(string calldata path) external returns (bool result); + + /// Returns true if the path exists on disk and is pointing at a regular file, else returns false. + function isFile(string calldata path) external returns (bool result); + + /// Get the path of the current project root. + function projectRoot() external view returns (string memory path); + + /// Prompts the user for a string value in the terminal. + function prompt(string calldata promptText) external returns (string memory input); + + /// Prompts the user for an address in the terminal. + function promptAddress(string calldata promptText) external returns (address); + + /// Prompts the user for a hidden string value in the terminal. + function promptSecret(string calldata promptText) external returns (string memory input); + + /// Prompts the user for hidden uint256 in the terminal (usually pk). + function promptSecretUint(string calldata promptText) external returns (uint256); + + /// Prompts the user for uint256 in the terminal. + function promptUint(string calldata promptText) external returns (uint256); + + /// Reads the directory at the given path recursively, up to `maxDepth`. + /// `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. + /// Follows symbolic links if `followLinks` is true. + function readDir(string calldata path) external view returns (DirEntry[] memory entries); + + /// See `readDir(string)`. + function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries); + + /// See `readDir(string)`. + function readDir(string calldata path, uint64 maxDepth, bool followLinks) + external + view + returns (DirEntry[] memory entries); + + /// Reads the entire content of file to string. `path` is relative to the project root. + function readFile(string calldata path) external view returns (string memory data); + + /// Reads the entire content of file as binary. `path` is relative to the project root. + function readFileBinary(string calldata path) external view returns (bytes memory data); + + /// Reads next line of file to string. + function readLine(string calldata path) external view returns (string memory line); + + /// Reads a symbolic link, returning the path that the link points to. + /// This cheatcode will revert in the following situations, but is not limited to just these cases: + /// - `path` is not a symbolic link. + /// - `path` does not exist. + function readLink(string calldata linkPath) external view returns (string memory targetPath); + + /// Removes a directory at the provided path. + /// This cheatcode will revert in the following situations, but is not limited to just these cases: + /// - `path` doesn't exist. + /// - `path` isn't a directory. + /// - User lacks permissions to modify `path`. + /// - The directory is not empty and `recursive` is false. + /// `path` is relative to the project root. + function removeDir(string calldata path, bool recursive) external; + + /// Removes a file from the filesystem. + /// This cheatcode will revert in the following situations, but is not limited to just these cases: + /// - `path` points to a directory. + /// - The file doesn't exist. + /// - The user lacks permissions to remove the file. + /// `path` is relative to the project root. + function removeFile(string calldata path) external; + + /// Performs a foreign function call via terminal and returns the exit code, stdout, and stderr. + function tryFfi(string[] calldata commandInput) external returns (FfiResult memory result); + + /// Returns the time since unix epoch in milliseconds. + function unixTime() external returns (uint256 milliseconds); + + /// Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. + /// `path` is relative to the project root. + function writeFile(string calldata path, string calldata data) external; + + /// Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. + /// `path` is relative to the project root. + function writeFileBinary(string calldata path, bytes calldata data) external; + + /// Writes line to file, creating a file if it does not exist. + /// `path` is relative to the project root. + function writeLine(string calldata path, string calldata data) external; + + // ======== JSON ======== + + /// Checks if `key` exists in a JSON object + /// `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions. + function keyExists(string calldata json, string calldata key) external view returns (bool); + + /// Checks if `key` exists in a JSON object. + function keyExistsJson(string calldata json, string calldata key) external view returns (bool); + + /// Parses a string of JSON data at `key` and coerces it to `address`. + function parseJsonAddress(string calldata json, string calldata key) external pure returns (address); + + /// Parses a string of JSON data at `key` and coerces it to `address[]`. + function parseJsonAddressArray(string calldata json, string calldata key) + external + pure + returns (address[] memory); + + /// Parses a string of JSON data at `key` and coerces it to `bool`. + function parseJsonBool(string calldata json, string calldata key) external pure returns (bool); + + /// Parses a string of JSON data at `key` and coerces it to `bool[]`. + function parseJsonBoolArray(string calldata json, string calldata key) external pure returns (bool[] memory); + + /// Parses a string of JSON data at `key` and coerces it to `bytes`. + function parseJsonBytes(string calldata json, string calldata key) external pure returns (bytes memory); + + /// Parses a string of JSON data at `key` and coerces it to `bytes32`. + function parseJsonBytes32(string calldata json, string calldata key) external pure returns (bytes32); + + /// Parses a string of JSON data at `key` and coerces it to `bytes32[]`. + function parseJsonBytes32Array(string calldata json, string calldata key) + external + pure + returns (bytes32[] memory); + + /// Parses a string of JSON data at `key` and coerces it to `bytes[]`. + function parseJsonBytesArray(string calldata json, string calldata key) external pure returns (bytes[] memory); + + /// Parses a string of JSON data at `key` and coerces it to `int256`. + function parseJsonInt(string calldata json, string calldata key) external pure returns (int256); + + /// Parses a string of JSON data at `key` and coerces it to `int256[]`. + function parseJsonIntArray(string calldata json, string calldata key) external pure returns (int256[] memory); + + /// Returns an array of all the keys in a JSON object. + function parseJsonKeys(string calldata json, string calldata key) external pure returns (string[] memory keys); + + /// Parses a string of JSON data at `key` and coerces it to `string`. + function parseJsonString(string calldata json, string calldata key) external pure returns (string memory); + + /// Parses a string of JSON data at `key` and coerces it to `string[]`. + function parseJsonStringArray(string calldata json, string calldata key) external pure returns (string[] memory); + + /// Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`. + function parseJsonTypeArray(string calldata json, string calldata key, string calldata typeDescription) + external + pure + returns (bytes memory); + + /// Parses a string of JSON data and coerces it to type corresponding to `typeDescription`. + function parseJsonType(string calldata json, string calldata typeDescription) + external + pure + returns (bytes memory); + + /// Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`. + function parseJsonType(string calldata json, string calldata key, string calldata typeDescription) + external + pure + returns (bytes memory); + + /// Parses a string of JSON data at `key` and coerces it to `uint256`. + function parseJsonUint(string calldata json, string calldata key) external pure returns (uint256); + + /// Parses a string of JSON data at `key` and coerces it to `uint256[]`. + function parseJsonUintArray(string calldata json, string calldata key) external pure returns (uint256[] memory); + + /// ABI-encodes a JSON object. + function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData); + + /// ABI-encodes a JSON object at `key`. + function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData); + + /// See `serializeJson`. + function serializeAddress(string calldata objectKey, string calldata valueKey, address value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBool(string calldata objectKey, string calldata valueKey, bool value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeInt(string calldata objectKey, string calldata valueKey, int256 value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values) + external + returns (string memory json); + + /// Serializes a key and value to a JSON object stored in-memory that can be later written to a file. + /// Returns the stringified version of the specific JSON file up to that moment. + function serializeJson(string calldata objectKey, string calldata value) external returns (string memory json); + + /// See `serializeJson`. + function serializeJsonType(string calldata typeDescription, bytes calldata value) + external + pure + returns (string memory json); + + /// See `serializeJson`. + function serializeJsonType( + string calldata objectKey, + string calldata valueKey, + string calldata typeDescription, + bytes calldata value + ) external returns (string memory json); + + /// See `serializeJson`. + function serializeString(string calldata objectKey, string calldata valueKey, string calldata value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeUintToHex(string calldata objectKey, string calldata valueKey, uint256 value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value) + external + returns (string memory json); + + /// See `serializeJson`. + function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values) + external + returns (string memory json); + + /// Write a serialized JSON object to a file. If the file exists, it will be overwritten. + function writeJson(string calldata json, string calldata path) external; + + /// Write a serialized JSON object to an **existing** JSON file, replacing a value with key = + /// This is useful to replace a specific value of a JSON file, without having to parse the entire thing. + function writeJson(string calldata json, string calldata path, string calldata valueKey) external; + + // ======== Scripting ======== + + /// Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. + /// Broadcasting address is determined by checking the following in order: + /// 1. If `--sender` argument was provided, that address is used. + /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. + /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. + function broadcast() external; + + /// Has the next call (at this call depth only) create a transaction with the address provided + /// as the sender that can later be signed and sent onchain. + function broadcast(address signer) external; + + /// Has the next call (at this call depth only) create a transaction with the private key + /// provided as the sender that can later be signed and sent onchain. + function broadcast(uint256 privateKey) external; + + /// Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. + /// Broadcasting address is determined by checking the following in order: + /// 1. If `--sender` argument was provided, that address is used. + /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. + /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. + function startBroadcast() external; + + /// Has all subsequent calls (at this call depth only) create transactions with the address + /// provided that can later be signed and sent onchain. + function startBroadcast(address signer) external; + + /// Has all subsequent calls (at this call depth only) create transactions with the private key + /// provided that can later be signed and sent onchain. + function startBroadcast(uint256 privateKey) external; + + /// Stops collecting onchain transactions. + function stopBroadcast() external; + + // ======== String ======== + + /// Returns the index of the first occurrence of a `key` in an `input` string. + /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. + /// Returns 0 in case of an empty `key`. + function indexOf(string calldata input, string calldata key) external pure returns (uint256); + + /// Parses the given `string` into an `address`. + function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue); + + /// Parses the given `string` into a `bool`. + function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue); + + /// Parses the given `string` into `bytes`. + function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue); + + /// Parses the given `string` into a `bytes32`. + function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue); + + /// Parses the given `string` into a `int256`. + function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue); + + /// Parses the given `string` into a `uint256`. + function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue); + + /// Replaces occurrences of `from` in the given `string` with `to`. + function replace(string calldata input, string calldata from, string calldata to) + external + pure + returns (string memory output); + + /// Splits the given `string` into an array of strings divided by the `delimiter`. + function split(string calldata input, string calldata delimiter) external pure returns (string[] memory outputs); + + /// Converts the given `string` value to Lowercase. + function toLowercase(string calldata input) external pure returns (string memory output); + + /// Converts the given value to a `string`. + function toString(address value) external pure returns (string memory stringifiedValue); + + /// Converts the given value to a `string`. + function toString(bytes calldata value) external pure returns (string memory stringifiedValue); + + /// Converts the given value to a `string`. + function toString(bytes32 value) external pure returns (string memory stringifiedValue); + + /// Converts the given value to a `string`. + function toString(bool value) external pure returns (string memory stringifiedValue); + + /// Converts the given value to a `string`. + function toString(uint256 value) external pure returns (string memory stringifiedValue); + + /// Converts the given value to a `string`. + function toString(int256 value) external pure returns (string memory stringifiedValue); + + /// Converts the given `string` value to Uppercase. + function toUppercase(string calldata input) external pure returns (string memory output); + + /// Trims leading and trailing whitespace from the given `string` value. + function trim(string calldata input) external pure returns (string memory output); + + // ======== Testing ======== + + /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. + /// Formats values with decimals in failure message. + function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) external pure; + + /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertApproxEqAbsDecimal( + uint256 left, + uint256 right, + uint256 maxDelta, + uint256 decimals, + string calldata error + ) external pure; + + /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. + /// Formats values with decimals in failure message. + function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) external pure; + + /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertApproxEqAbsDecimal( + int256 left, + int256 right, + uint256 maxDelta, + uint256 decimals, + string calldata error + ) external pure; + + /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. + function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) external pure; + + /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. + /// Includes error message into revert string on failure. + function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string calldata error) external pure; + + /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. + function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) external pure; + + /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. + /// Includes error message into revert string on failure. + function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string calldata error) external pure; + + /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Formats values with decimals in failure message. + function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) + external + pure; + + /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertApproxEqRelDecimal( + uint256 left, + uint256 right, + uint256 maxPercentDelta, + uint256 decimals, + string calldata error + ) external pure; + + /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Formats values with decimals in failure message. + function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) + external + pure; + + /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertApproxEqRelDecimal( + int256 left, + int256 right, + uint256 maxPercentDelta, + uint256 decimals, + string calldata error + ) external pure; + + /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) external pure; + + /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Includes error message into revert string on failure. + function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string calldata error) + external + pure; + + /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) external pure; + + /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. + /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% + /// Includes error message into revert string on failure. + function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string calldata error) + external + pure; + + /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. + function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. + /// Includes error message into revert string on failure. + function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. + function assertEqDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. + /// Includes error message into revert string on failure. + function assertEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Asserts that two `bool` values are equal. + function assertEq(bool left, bool right) external pure; + + /// Asserts that two `bool` values are equal and includes error message into revert string on failure. + function assertEq(bool left, bool right, string calldata error) external pure; + + /// Asserts that two `string` values are equal. + function assertEq(string calldata left, string calldata right) external pure; + + /// Asserts that two `string` values are equal and includes error message into revert string on failure. + function assertEq(string calldata left, string calldata right, string calldata error) external pure; + + /// Asserts that two `bytes` values are equal. + function assertEq(bytes calldata left, bytes calldata right) external pure; + + /// Asserts that two `bytes` values are equal and includes error message into revert string on failure. + function assertEq(bytes calldata left, bytes calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bool` values are equal. + function assertEq(bool[] calldata left, bool[] calldata right) external pure; + + /// Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure. + function assertEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `uint256 values are equal. + function assertEq(uint256[] calldata left, uint256[] calldata right) external pure; + + /// Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure. + function assertEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `int256` values are equal. + function assertEq(int256[] calldata left, int256[] calldata right) external pure; + + /// Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure. + function assertEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; + + /// Asserts that two `uint256` values are equal. + function assertEq(uint256 left, uint256 right) external pure; + + /// Asserts that two arrays of `address` values are equal. + function assertEq(address[] calldata left, address[] calldata right) external pure; + + /// Asserts that two arrays of `address` values are equal and includes error message into revert string on failure. + function assertEq(address[] calldata left, address[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bytes32` values are equal. + function assertEq(bytes32[] calldata left, bytes32[] calldata right) external pure; + + /// Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure. + function assertEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `string` values are equal. + function assertEq(string[] calldata left, string[] calldata right) external pure; + + /// Asserts that two arrays of `string` values are equal and includes error message into revert string on failure. + function assertEq(string[] calldata left, string[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bytes` values are equal. + function assertEq(bytes[] calldata left, bytes[] calldata right) external pure; + + /// Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure. + function assertEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; + + /// Asserts that two `uint256` values are equal and includes error message into revert string on failure. + function assertEq(uint256 left, uint256 right, string calldata error) external pure; + + /// Asserts that two `int256` values are equal. + function assertEq(int256 left, int256 right) external pure; + + /// Asserts that two `int256` values are equal and includes error message into revert string on failure. + function assertEq(int256 left, int256 right, string calldata error) external pure; + + /// Asserts that two `address` values are equal. + function assertEq(address left, address right) external pure; + + /// Asserts that two `address` values are equal and includes error message into revert string on failure. + function assertEq(address left, address right, string calldata error) external pure; + + /// Asserts that two `bytes32` values are equal. + function assertEq(bytes32 left, bytes32 right) external pure; + + /// Asserts that two `bytes32` values are equal and includes error message into revert string on failure. + function assertEq(bytes32 left, bytes32 right, string calldata error) external pure; + + /// Asserts that the given condition is false. + function assertFalse(bool condition) external pure; + + /// Asserts that the given condition is false and includes error message into revert string on failure. + function assertFalse(bool condition, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than or equal to second. + /// Formats values with decimals in failure message. + function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than or equal to second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be greater than or equal to second. + /// Formats values with decimals in failure message. + function assertGeDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Compares two `int256` values. Expects first value to be greater than or equal to second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertGeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than or equal to second. + function assertGe(uint256 left, uint256 right) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than or equal to second. + /// Includes error message into revert string on failure. + function assertGe(uint256 left, uint256 right, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be greater than or equal to second. + function assertGe(int256 left, int256 right) external pure; + + /// Compares two `int256` values. Expects first value to be greater than or equal to second. + /// Includes error message into revert string on failure. + function assertGe(int256 left, int256 right, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than second. + /// Formats values with decimals in failure message. + function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be greater than second. + /// Formats values with decimals in failure message. + function assertGtDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Compares two `int256` values. Expects first value to be greater than second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertGtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than second. + function assertGt(uint256 left, uint256 right) external pure; + + /// Compares two `uint256` values. Expects first value to be greater than second. + /// Includes error message into revert string on failure. + function assertGt(uint256 left, uint256 right, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be greater than second. + function assertGt(int256 left, int256 right) external pure; + + /// Compares two `int256` values. Expects first value to be greater than second. + /// Includes error message into revert string on failure. + function assertGt(int256 left, int256 right, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be less than or equal to second. + /// Formats values with decimals in failure message. + function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Compares two `uint256` values. Expects first value to be less than or equal to second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be less than or equal to second. + /// Formats values with decimals in failure message. + function assertLeDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Compares two `int256` values. Expects first value to be less than or equal to second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertLeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be less than or equal to second. + function assertLe(uint256 left, uint256 right) external pure; + + /// Compares two `uint256` values. Expects first value to be less than or equal to second. + /// Includes error message into revert string on failure. + function assertLe(uint256 left, uint256 right, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be less than or equal to second. + function assertLe(int256 left, int256 right) external pure; + + /// Compares two `int256` values. Expects first value to be less than or equal to second. + /// Includes error message into revert string on failure. + function assertLe(int256 left, int256 right, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be less than second. + /// Formats values with decimals in failure message. + function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Compares two `uint256` values. Expects first value to be less than second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be less than second. + /// Formats values with decimals in failure message. + function assertLtDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Compares two `int256` values. Expects first value to be less than second. + /// Formats values with decimals in failure message. Includes error message into revert string on failure. + function assertLtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Compares two `uint256` values. Expects first value to be less than second. + function assertLt(uint256 left, uint256 right) external pure; + + /// Compares two `uint256` values. Expects first value to be less than second. + /// Includes error message into revert string on failure. + function assertLt(uint256 left, uint256 right, string calldata error) external pure; + + /// Compares two `int256` values. Expects first value to be less than second. + function assertLt(int256 left, int256 right) external pure; + + /// Compares two `int256` values. Expects first value to be less than second. + /// Includes error message into revert string on failure. + function assertLt(int256 left, int256 right, string calldata error) external pure; + + /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. + function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; + + /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. + /// Includes error message into revert string on failure. + function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; + + /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. + function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) external pure; + + /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. + /// Includes error message into revert string on failure. + function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; + + /// Asserts that two `bool` values are not equal. + function assertNotEq(bool left, bool right) external pure; + + /// Asserts that two `bool` values are not equal and includes error message into revert string on failure. + function assertNotEq(bool left, bool right, string calldata error) external pure; + + /// Asserts that two `string` values are not equal. + function assertNotEq(string calldata left, string calldata right) external pure; + + /// Asserts that two `string` values are not equal and includes error message into revert string on failure. + function assertNotEq(string calldata left, string calldata right, string calldata error) external pure; + + /// Asserts that two `bytes` values are not equal. + function assertNotEq(bytes calldata left, bytes calldata right) external pure; + + /// Asserts that two `bytes` values are not equal and includes error message into revert string on failure. + function assertNotEq(bytes calldata left, bytes calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bool` values are not equal. + function assertNotEq(bool[] calldata left, bool[] calldata right) external pure; + + /// Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure. + function assertNotEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `uint256` values are not equal. + function assertNotEq(uint256[] calldata left, uint256[] calldata right) external pure; + + /// Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure. + function assertNotEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `int256` values are not equal. + function assertNotEq(int256[] calldata left, int256[] calldata right) external pure; + + /// Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure. + function assertNotEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; + + /// Asserts that two `uint256` values are not equal. + function assertNotEq(uint256 left, uint256 right) external pure; + + /// Asserts that two arrays of `address` values are not equal. + function assertNotEq(address[] calldata left, address[] calldata right) external pure; + + /// Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure. + function assertNotEq(address[] calldata left, address[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bytes32` values are not equal. + function assertNotEq(bytes32[] calldata left, bytes32[] calldata right) external pure; + + /// Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure. + function assertNotEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `string` values are not equal. + function assertNotEq(string[] calldata left, string[] calldata right) external pure; + + /// Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure. + function assertNotEq(string[] calldata left, string[] calldata right, string calldata error) external pure; + + /// Asserts that two arrays of `bytes` values are not equal. + function assertNotEq(bytes[] calldata left, bytes[] calldata right) external pure; + + /// Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure. + function assertNotEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; + + /// Asserts that two `uint256` values are not equal and includes error message into revert string on failure. + function assertNotEq(uint256 left, uint256 right, string calldata error) external pure; + + /// Asserts that two `int256` values are not equal. + function assertNotEq(int256 left, int256 right) external pure; + + /// Asserts that two `int256` values are not equal and includes error message into revert string on failure. + function assertNotEq(int256 left, int256 right, string calldata error) external pure; + + /// Asserts that two `address` values are not equal. + function assertNotEq(address left, address right) external pure; + + /// Asserts that two `address` values are not equal and includes error message into revert string on failure. + function assertNotEq(address left, address right, string calldata error) external pure; + + /// Asserts that two `bytes32` values are not equal. + function assertNotEq(bytes32 left, bytes32 right) external pure; + + /// Asserts that two `bytes32` values are not equal and includes error message into revert string on failure. + function assertNotEq(bytes32 left, bytes32 right, string calldata error) external pure; + + /// Asserts that the given condition is true. + function assertTrue(bool condition) external pure; + + /// Asserts that the given condition is true and includes error message into revert string on failure. + function assertTrue(bool condition, string calldata error) external pure; + + /// If the condition is false, discard this run's fuzz inputs and generate new ones. + function assume(bool condition) external pure; + + /// Writes a breakpoint to jump to in the debugger. + function breakpoint(string calldata char) external; + + /// Writes a conditional breakpoint to jump to in the debugger. + function breakpoint(string calldata char, bool value) external; + + /// Returns the RPC url for the given alias. + function rpcUrl(string calldata rpcAlias) external view returns (string memory json); + + /// Returns all rpc urls and their aliases as structs. + function rpcUrlStructs() external view returns (Rpc[] memory urls); + + /// Returns all rpc urls and their aliases `[alias, url][]`. + function rpcUrls() external view returns (string[2][] memory urls); + + /// Suspends execution of the main thread for `duration` milliseconds. + function sleep(uint256 duration) external; + + // ======== Toml ======== + + /// Checks if `key` exists in a TOML table. + function keyExistsToml(string calldata toml, string calldata key) external view returns (bool); + + /// Parses a string of TOML data at `key` and coerces it to `address`. + function parseTomlAddress(string calldata toml, string calldata key) external pure returns (address); + + /// Parses a string of TOML data at `key` and coerces it to `address[]`. + function parseTomlAddressArray(string calldata toml, string calldata key) + external + pure + returns (address[] memory); + + /// Parses a string of TOML data at `key` and coerces it to `bool`. + function parseTomlBool(string calldata toml, string calldata key) external pure returns (bool); + + /// Parses a string of TOML data at `key` and coerces it to `bool[]`. + function parseTomlBoolArray(string calldata toml, string calldata key) external pure returns (bool[] memory); + + /// Parses a string of TOML data at `key` and coerces it to `bytes`. + function parseTomlBytes(string calldata toml, string calldata key) external pure returns (bytes memory); + + /// Parses a string of TOML data at `key` and coerces it to `bytes32`. + function parseTomlBytes32(string calldata toml, string calldata key) external pure returns (bytes32); + + /// Parses a string of TOML data at `key` and coerces it to `bytes32[]`. + function parseTomlBytes32Array(string calldata toml, string calldata key) + external + pure + returns (bytes32[] memory); + + /// Parses a string of TOML data at `key` and coerces it to `bytes[]`. + function parseTomlBytesArray(string calldata toml, string calldata key) external pure returns (bytes[] memory); + + /// Parses a string of TOML data at `key` and coerces it to `int256`. + function parseTomlInt(string calldata toml, string calldata key) external pure returns (int256); + + /// Parses a string of TOML data at `key` and coerces it to `int256[]`. + function parseTomlIntArray(string calldata toml, string calldata key) external pure returns (int256[] memory); + + /// Returns an array of all the keys in a TOML table. + function parseTomlKeys(string calldata toml, string calldata key) external pure returns (string[] memory keys); + + /// Parses a string of TOML data at `key` and coerces it to `string`. + function parseTomlString(string calldata toml, string calldata key) external pure returns (string memory); + + /// Parses a string of TOML data at `key` and coerces it to `string[]`. + function parseTomlStringArray(string calldata toml, string calldata key) external pure returns (string[] memory); + + /// Parses a string of TOML data at `key` and coerces it to `uint256`. + function parseTomlUint(string calldata toml, string calldata key) external pure returns (uint256); + + /// Parses a string of TOML data at `key` and coerces it to `uint256[]`. + function parseTomlUintArray(string calldata toml, string calldata key) external pure returns (uint256[] memory); + + /// ABI-encodes a TOML table. + function parseToml(string calldata toml) external pure returns (bytes memory abiEncodedData); + + /// ABI-encodes a TOML table at `key`. + function parseToml(string calldata toml, string calldata key) external pure returns (bytes memory abiEncodedData); + + /// Takes serialized JSON, converts to TOML and write a serialized TOML to a file. + function writeToml(string calldata json, string calldata path) external; + + /// Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = + /// This is useful to replace a specific value of a TOML file, without having to parse the entire thing. + function writeToml(string calldata json, string calldata path, string calldata valueKey) external; + + // ======== Utilities ======== + + /// Compute the address of a contract created with CREATE2 using the given CREATE2 deployer. + function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) + external + pure + returns (address); + + /// Compute the address of a contract created with CREATE2 using the default CREATE2 deployer. + function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) external pure returns (address); + + /// Compute the address a contract will be deployed at for a given deployer address and nonce. + function computeCreateAddress(address deployer, uint256 nonce) external pure returns (address); + + /// Derives a private key from the name, labels the account with that name, and returns the wallet. + function createWallet(string calldata walletLabel) external returns (Wallet memory wallet); + + /// Generates a wallet from the private key and returns the wallet. + function createWallet(uint256 privateKey) external returns (Wallet memory wallet); + + /// Generates a wallet from the private key, labels the account with that name, and returns the wallet. + function createWallet(uint256 privateKey, string calldata walletLabel) external returns (Wallet memory wallet); + + /// Derive a private key from a provided mnenomic string (or mnenomic file path) + /// at the derivation path `m/44'/60'/0'/0/{index}`. + function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey); + + /// Derive a private key from a provided mnenomic string (or mnenomic file path) + /// at `{derivationPath}{index}`. + function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index) + external + pure + returns (uint256 privateKey); + + /// Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language + /// at the derivation path `m/44'/60'/0'/0/{index}`. + function deriveKey(string calldata mnemonic, uint32 index, string calldata language) + external + pure + returns (uint256 privateKey); + + /// Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language + /// at `{derivationPath}{index}`. + function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index, string calldata language) + external + pure + returns (uint256 privateKey); + + /// Returns ENS namehash for provided string. + function ensNamehash(string calldata name) external pure returns (bytes32); + + /// Gets the label for the specified address. + function getLabel(address account) external view returns (string memory currentLabel); + + /// Get a `Wallet`'s nonce. + function getNonce(Wallet calldata wallet) external returns (uint64 nonce); + + /// Labels an address in call traces. + function label(address account, string calldata newLabel) external; + + /// Returns a random `address`. + function randomAddress() external returns (address); + + /// Returns a random uint256 value. + function randomUint() external returns (uint256); + + /// Returns random uin256 value between the provided range (=min..=max). + function randomUint(uint256 min, uint256 max) external returns (uint256); + + /// Adds a private key to the local forge wallet and returns the address. + function rememberKey(uint256 privateKey) external returns (address keyAddr); + + /// Signs data with a `Wallet`. + function sign(Wallet calldata wallet, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s); + + /// Encodes a `bytes` value to a base64url string. + function toBase64URL(bytes calldata data) external pure returns (string memory); + + /// Encodes a `string` value to a base64url string. + function toBase64URL(string calldata data) external pure returns (string memory); + + /// Encodes a `bytes` value to a base64 string. + function toBase64(bytes calldata data) external pure returns (string memory); + + /// Encodes a `string` value to a base64 string. + function toBase64(string calldata data) external pure returns (string memory); +} + +/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used +/// in tests, but it is not recommended to use these cheats in scripts. +interface Vm is VmSafe { + // ======== EVM ======== + + /// Returns the identifier of the currently active fork. Reverts if no fork is currently active. + function activeFork() external view returns (uint256 forkId); + + /// In forking mode, explicitly grant the given address cheatcode access. + function allowCheatcodes(address account) external; + + /// Sets `block.blobbasefee` + function blobBaseFee(uint256 newBlobBaseFee) external; + + /// Sets the blobhashes in the transaction. + /// Not available on EVM versions before Cancun. + /// If used on unsupported EVM versions it will revert. + function blobhashes(bytes32[] calldata hashes) external; + + /// Sets `block.chainid`. + function chainId(uint256 newChainId) external; + + /// Clears all mocked calls. + function clearMockedCalls() external; + + /// Sets `block.coinbase`. + function coinbase(address newCoinbase) external; + + /// Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork. + function createFork(string calldata urlOrAlias) external returns (uint256 forkId); + + /// Creates a new fork with the given endpoint and block and returns the identifier of the fork. + function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); + + /// Creates a new fork with the given endpoint and at the block the given transaction was mined in, + /// replays all transaction mined in the block before the transaction, and returns the identifier of the fork. + function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); + + /// Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork. + function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId); + + /// Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork. + function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); + + /// Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, + /// replays all transaction mined in the block before the transaction, returns the identifier of the fork. + function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); + + /// Sets an address' balance. + function deal(address account, uint256 newBalance) external; + + /// Removes the snapshot with the given ID created by `snapshot`. + /// Takes the snapshot ID to delete. + /// Returns `true` if the snapshot was successfully deleted. + /// Returns `false` if the snapshot does not exist. + function deleteSnapshot(uint256 snapshotId) external returns (bool success); + + /// Removes _all_ snapshots previously created by `snapshot`. + function deleteSnapshots() external; + + /// Sets `block.difficulty`. + /// Not available on EVM versions from Paris onwards. Use `prevrandao` instead. + /// Reverts if used on unsupported EVM versions. + function difficulty(uint256 newDifficulty) external; + + /// Dump a genesis JSON file's `allocs` to disk. + function dumpState(string calldata pathToStateJson) external; + + /// Sets an address' code. + function etch(address target, bytes calldata newRuntimeBytecode) external; + + /// Sets `block.basefee`. + function fee(uint256 newBasefee) external; + + /// Gets the blockhashes from the current transaction. + /// Not available on EVM versions before Cancun. + /// If used on unsupported EVM versions it will revert. + function getBlobhashes() external view returns (bytes32[] memory hashes); + + /// Returns true if the account is marked as persistent. + function isPersistent(address account) external view returns (bool persistent); + + /// Load a genesis JSON file's `allocs` into the in-memory revm state. + function loadAllocs(string calldata pathToAllocsJson) external; + + /// Marks that the account(s) should use persistent storage across fork swaps in a multifork setup + /// Meaning, changes made to the state of this account will be kept when switching forks. + function makePersistent(address account) external; + + /// See `makePersistent(address)`. + function makePersistent(address account0, address account1) external; + + /// See `makePersistent(address)`. + function makePersistent(address account0, address account1, address account2) external; + + /// See `makePersistent(address)`. + function makePersistent(address[] calldata accounts) external; + + /// Reverts a call to an address with specified revert data. + function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external; + + /// Reverts a call to an address with a specific `msg.value`, with specified revert data. + function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData) + 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 callee, bytes calldata data, bytes calldata returnData) external; + + /// Mocks a call to an address with a specific `msg.value`, returning specified data. + /// Calldata match takes precedence over `msg.value` in case of ambiguity. + function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external; + + /// Sets the *next* call's `msg.sender` to be the input address. + function prank(address msgSender) 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 msgSender, address txOrigin) external; + + /// Sets `block.prevrandao`. + /// Not available on EVM versions before Paris. Use `difficulty` instead. + /// If used on unsupported EVM versions it will revert. + function prevrandao(bytes32 newPrevrandao) external; + + /// Sets `block.prevrandao`. + /// Not available on EVM versions before Paris. Use `difficulty` instead. + /// If used on unsupported EVM versions it will revert. + function prevrandao(uint256 newPrevrandao) external; + + /// Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification. + function readCallers() external returns (CallerMode callerMode, address msgSender, address txOrigin); + + /// Resets the nonce of an account to 0 for EOAs and 1 for contract accounts. + function resetNonce(address account) external; + + /// Revert the state of the EVM to a previous snapshot + /// Takes the snapshot ID to revert to. + /// Returns `true` if the snapshot was successfully reverted. + /// Returns `false` if the snapshot does not exist. + /// **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`. + function revertTo(uint256 snapshotId) external returns (bool success); + + /// Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots + /// Takes the snapshot ID to revert to. + /// Returns `true` if the snapshot was successfully reverted and deleted. + /// Returns `false` if the snapshot does not exist. + function revertToAndDelete(uint256 snapshotId) external returns (bool success); + + /// Revokes persistent status from the address, previously added via `makePersistent`. + function revokePersistent(address account) external; + + /// See `revokePersistent(address)`. + function revokePersistent(address[] calldata accounts) external; + + /// Sets `block.height`. + function roll(uint256 newHeight) external; + + /// Updates the currently active fork to given block number + /// This is similar to `roll` but for the currently active fork. + function rollFork(uint256 blockNumber) external; + + /// Updates the currently active fork to given transaction. This will `rollFork` with the number + /// of the block the transaction was mined in and replays all transaction mined before it in the block. + function rollFork(bytes32 txHash) external; + + /// Updates the given fork to given block number. + function rollFork(uint256 forkId, uint256 blockNumber) external; + + /// Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block. + function rollFork(uint256 forkId, bytes32 txHash) external; + + /// Takes a fork identifier created by `createFork` and sets the corresponding forked state as active. + function selectFork(uint256 forkId) external; + + /// Set blockhash for the current block. + /// It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`. + function setBlockhash(uint256 blockNumber, bytes32 blockHash) external; + + /// Sets the nonce of an account. Must be higher than the current nonce of the account. + function setNonce(address account, uint64 newNonce) external; + + /// Sets the nonce of an account to an arbitrary value. + function setNonceUnsafe(address account, uint64 newNonce) external; + + /// Snapshot the current state of the evm. + /// Returns the ID of the snapshot that was created. + /// To revert a snapshot use `revertTo`. + function snapshot() external returns (uint256 snapshotId); + + /// Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called. + function startPrank(address msgSender) 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 msgSender, address txOrigin) external; + + /// Resets subsequent calls' `msg.sender` to be `address(this)`. + function stopPrank() external; + + /// Stores a value to an address' storage slot. + function store(address target, bytes32 slot, bytes32 value) external; + + /// Fetches the given transaction from the active fork and executes it on the current state. + function transact(bytes32 txHash) external; + + /// Fetches the given transaction from the given fork and executes it on the current state. + function transact(uint256 forkId, bytes32 txHash) external; + + /// Sets `tx.gasprice`. + function txGasPrice(uint256 newGasPrice) external; + + /// Sets `block.timestamp`. + function warp(uint256 newTimestamp) external; + + // ======== Testing ======== + + /// Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. + function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external; + + /// Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. + function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count) + external; + + /// Expects a call to an address with the specified calldata. + /// Calldata can either be a strict or a partial match. + function expectCall(address callee, bytes calldata data) external; + + /// Expects given number of calls to an address with the specified calldata. + function expectCall(address callee, bytes calldata data, uint64 count) external; + + /// Expects a call to an address with the specified `msg.value` and calldata. + function expectCall(address callee, uint256 msgValue, bytes calldata data) external; + + /// Expects given number of calls to an address with the specified `msg.value` and calldata. + function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external; + + /// Expect a call to an address with the specified `msg.value`, gas, and calldata. + function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external; + + /// Expects given number of calls to an address with the specified `msg.value`, gas, and calldata. + function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external; + + /// Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). + /// Call this function, then emit an anonymous 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 expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) + external; + + /// Same as the previous method, but also checks supplied address against emitting contract. + function expectEmitAnonymous( + bool checkTopic0, + bool checkTopic1, + bool checkTopic2, + bool checkTopic3, + bool checkData, + address emitter + ) external; + + /// Prepare an expected anonymous log with all topic and data checks enabled. + /// Call this function, then emit an anonymous 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. + function expectEmitAnonymous() external; + + /// Same as the previous method, but also checks supplied address against emitting contract. + function expectEmitAnonymous(address emitter) external; + + /// 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 checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external; + + /// Same as the previous method, but also checks supplied address against emitting contract. + function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) + external; + + /// Prepare an expected log with all topic and data checks enabled. + /// 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. + function expectEmit() external; + + /// Same as the previous method, but also checks supplied address against emitting contract. + function expectEmit(address emitter) external; + + /// Expects an error on next call with any revert data. + function expectRevert() external; + + /// Expects an error on next call that starts with the revert data. + function expectRevert(bytes4 revertData) external; + + /// Expects an error on next call that exactly matches the revert data. + function expectRevert(bytes calldata revertData) external; + + /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other + /// memory is written to, the test will fail. Can be called multiple times to add more ranges to the set. + function expectSafeMemory(uint64 min, uint64 max) external; + + /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. + /// If any other memory is written to, the test will fail. Can be called multiple times to add more ranges + /// to the set. + function expectSafeMemoryCall(uint64 min, uint64 max) external; + + /// Marks a test as skipped. Must be called at the top of the test. + function skip(bool skipTest) external; + + /// Stops all safe memory expectation in the current subcontext. + function stopExpectSafeMemory() external; +} diff --git a/v2/lib/forge-std/src/console.sol b/v2/lib/forge-std/src/console.sol new file mode 100644 index 00000000..755eedcd --- /dev/null +++ b/v2/lib/forge-std/src/console.sol @@ -0,0 +1,1552 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.4.22 <0.9.0; + +library console { + address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); + + function _castLogPayloadViewToPure( + function(bytes memory) internal view fnIn + ) internal pure returns (function(bytes memory) internal pure fnOut) { + assembly { + fnOut := fnIn + } + } + + function _sendLogPayload(bytes memory payload) internal pure { + _castLogPayloadViewToPure(_sendLogPayloadView)(payload); + } + + function _sendLogPayloadView(bytes memory payload) private view { + uint256 payloadLength = payload.length; + address consoleAddress = CONSOLE_ADDRESS; + /// @solidity memory-safe-assembly + assembly { + let payloadStart := add(payload, 32) + let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) + } + } + + function log() internal pure { + _sendLogPayload(abi.encodeWithSignature("log()")); + } + + function logInt(int p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); + } + + function logUint(uint p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); + } + + function logString(string memory p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); + } + + function logBool(bool p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); + } + + function logAddress(address p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); + } + + function logBytes(bytes memory p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); + } + + function logBytes1(bytes1 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); + } + + function logBytes2(bytes2 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); + } + + function logBytes3(bytes3 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); + } + + function logBytes4(bytes4 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); + } + + function logBytes5(bytes5 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); + } + + function logBytes6(bytes6 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); + } + + function logBytes7(bytes7 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); + } + + function logBytes8(bytes8 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); + } + + function logBytes9(bytes9 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); + } + + function logBytes10(bytes10 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); + } + + function logBytes11(bytes11 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); + } + + function logBytes12(bytes12 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); + } + + function logBytes13(bytes13 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); + } + + function logBytes14(bytes14 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); + } + + function logBytes15(bytes15 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); + } + + function logBytes16(bytes16 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); + } + + function logBytes17(bytes17 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); + } + + function logBytes18(bytes18 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); + } + + function logBytes19(bytes19 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); + } + + function logBytes20(bytes20 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); + } + + function logBytes21(bytes21 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); + } + + function logBytes22(bytes22 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); + } + + function logBytes23(bytes23 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); + } + + function logBytes24(bytes24 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); + } + + function logBytes25(bytes25 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); + } + + function logBytes26(bytes26 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); + } + + function logBytes27(bytes27 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); + } + + function logBytes28(bytes28 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); + } + + function logBytes29(bytes29 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); + } + + function logBytes30(bytes30 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); + } + + function logBytes31(bytes31 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); + } + + function logBytes32(bytes32 p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); + } + + function log(uint p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); + } + + function log(int p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); + } + + function log(string memory p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); + } + + function log(bool p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); + } + + function log(address p0) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); + } + + function log(uint p0, uint p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); + } + + function log(uint p0, string memory p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); + } + + function log(uint p0, bool p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); + } + + function log(uint p0, address p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); + } + + function log(string memory p0, uint p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); + } + + function log(string memory p0, int p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,int)", p0, p1)); + } + + function log(string memory p0, string memory p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); + } + + function log(string memory p0, bool p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); + } + + function log(string memory p0, address p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); + } + + function log(bool p0, uint p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); + } + + function log(bool p0, string memory p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); + } + + function log(bool p0, bool p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); + } + + function log(bool p0, address p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); + } + + function log(address p0, uint p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); + } + + function log(address p0, string memory p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); + } + + function log(address p0, bool p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); + } + + function log(address p0, address p1) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); + } + + function log(uint p0, uint p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); + } + + function log(uint p0, uint p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); + } + + function log(uint p0, uint p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); + } + + function log(uint p0, uint p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); + } + + function log(uint p0, bool p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); + } + + function log(uint p0, bool p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); + } + + function log(uint p0, bool p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); + } + + function log(uint p0, bool p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); + } + + function log(uint p0, address p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); + } + + function log(uint p0, address p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); + } + + function log(uint p0, address p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); + } + + function log(uint p0, address p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); + } + + function log(string memory p0, address p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); + } + + function log(string memory p0, address p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); + } + + function log(string memory p0, address p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); + } + + function log(string memory p0, address p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); + } + + function log(bool p0, uint p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); + } + + function log(bool p0, uint p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); + } + + function log(bool p0, uint p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); + } + + function log(bool p0, uint p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); + } + + function log(bool p0, bool p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); + } + + function log(bool p0, bool p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); + } + + function log(bool p0, bool p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); + } + + function log(bool p0, bool p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); + } + + function log(bool p0, address p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); + } + + function log(bool p0, address p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); + } + + function log(bool p0, address p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); + } + + function log(bool p0, address p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); + } + + function log(address p0, uint p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); + } + + function log(address p0, uint p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); + } + + function log(address p0, uint p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); + } + + function log(address p0, uint p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); + } + + function log(address p0, string memory p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); + } + + function log(address p0, string memory p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); + } + + function log(address p0, string memory p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); + } + + function log(address p0, string memory p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); + } + + function log(address p0, bool p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); + } + + function log(address p0, bool p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); + } + + function log(address p0, bool p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); + } + + function log(address p0, bool p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); + } + + function log(address p0, address p1, uint p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); + } + + function log(address p0, address p1, string memory p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); + } + + function log(address p0, address p1, bool p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); + } + + function log(address p0, address p1, address p2) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); + } + + function log(uint p0, uint p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, address p3) internal pure { + _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 pure { + _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 pure { + _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 pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, uint p3) internal pure { + _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 pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, uint p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, string memory p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, bool p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, address p3) internal pure { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); + } +} diff --git a/v2/lib/forge-std/src/console2.sol b/v2/lib/forge-std/src/console2.sol new file mode 100644 index 00000000..03531d91 --- /dev/null +++ b/v2/lib/forge-std/src/console2.sol @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.4.22 <0.9.0; + +import {console as console2} from "./console.sol"; diff --git a/v2/lib/forge-std/src/interfaces/IERC1155.sol b/v2/lib/forge-std/src/interfaces/IERC1155.sol new file mode 100644 index 00000000..f7dd2b41 --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IERC1155.sol @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +import "./IERC165.sol"; + +/// @title ERC-1155 Multi Token Standard +/// @dev See https://eips.ethereum.org/EIPS/eip-1155 +/// Note: The ERC-165 identifier for this interface is 0xd9b67a26. +interface IERC1155 is IERC165 { + /// @dev + /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). + /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). + /// - The `_from` argument MUST be the address of the holder whose balance is decreased. + /// - The `_to` argument MUST be the address of the recipient whose balance is increased. + /// - The `_id` argument MUST be the token type being transferred. + /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. + /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). + /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). + event TransferSingle( + address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value + ); + + /// @dev + /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). + /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). + /// - The `_from` argument MUST be the address of the holder whose balance is decreased. + /// - The `_to` argument MUST be the address of the recipient whose balance is increased. + /// - The `_ids` argument MUST be the list of tokens being transferred. + /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. + /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). + /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). + event TransferBatch( + address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values + ); + + /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + + /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. + /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". + event URI(string _value, uint256 indexed _id); + + /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). + /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). + /// - MUST revert if `_to` is the zero address. + /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. + /// - MUST revert on any other error. + /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). + /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). + /// @param _from Source address + /// @param _to Target address + /// @param _id ID of the token type + /// @param _value Transfer amount + /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` + function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; + + /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). + /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). + /// - MUST revert if `_to` is the zero address. + /// - MUST revert if length of `_ids` is not the same as length of `_values`. + /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. + /// - MUST revert on any other error. + /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). + /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). + /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). + /// @param _from Source address + /// @param _to Target address + /// @param _ids IDs of each token type (order and length must match _values array) + /// @param _values Transfer amounts per token type (order and length must match _ids array) + /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` + function safeBatchTransferFrom( + address _from, + address _to, + uint256[] calldata _ids, + uint256[] calldata _values, + bytes calldata _data + ) external; + + /// @notice Get the balance of an account's tokens. + /// @param _owner The address of the token holder + /// @param _id ID of the token + /// @return The _owner's balance of the token type requested + function balanceOf(address _owner, uint256 _id) external view returns (uint256); + + /// @notice Get the balance of multiple account/token pairs + /// @param _owners The addresses of the token holders + /// @param _ids ID of the tokens + /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) + function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) + external + view + returns (uint256[] memory); + + /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. + /// @dev MUST emit the ApprovalForAll event on success. + /// @param _operator Address to add to the set of authorized operators + /// @param _approved True if the operator is approved, false to revoke approval + function setApprovalForAll(address _operator, bool _approved) external; + + /// @notice Queries the approval status of an operator for a given owner. + /// @param _owner The owner of the tokens + /// @param _operator Address of authorized operator + /// @return True if the operator is approved, false if not + function isApprovedForAll(address _owner, address _operator) external view returns (bool); +} diff --git a/v2/lib/forge-std/src/interfaces/IERC165.sol b/v2/lib/forge-std/src/interfaces/IERC165.sol new file mode 100644 index 00000000..9af4bf80 --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IERC165.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +interface IERC165 { + /// @notice Query if a contract implements an interface + /// @param interfaceID The interface identifier, as specified in ERC-165 + /// @dev Interface identification is specified in ERC-165. This function + /// uses less than 30,000 gas. + /// @return `true` if the contract implements `interfaceID` and + /// `interfaceID` is not 0xffffffff, `false` otherwise + function supportsInterface(bytes4 interfaceID) external view returns (bool); +} diff --git a/v2/lib/forge-std/src/interfaces/IERC20.sol b/v2/lib/forge-std/src/interfaces/IERC20.sol new file mode 100644 index 00000000..ba40806c --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IERC20.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +/// @dev Interface of the ERC20 standard as defined in the EIP. +/// @dev This includes the optional name, symbol, and decimals metadata. +interface IERC20 { + /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). + event Transfer(address indexed from, address indexed to, uint256 value); + + /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` + /// is the new allowance. + event Approval(address indexed owner, address indexed spender, uint256 value); + + /// @notice Returns the amount of tokens in existence. + function totalSupply() external view returns (uint256); + + /// @notice Returns the amount of tokens owned by `account`. + function balanceOf(address account) external view returns (uint256); + + /// @notice Moves `amount` tokens from the caller's account to `to`. + function transfer(address to, uint256 amount) external returns (bool); + + /// @notice Returns the remaining number of tokens that `spender` is allowed + /// to spend on behalf of `owner` + function allowance(address owner, address spender) external view returns (uint256); + + /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. + /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + function approve(address spender, uint256 amount) external returns (bool); + + /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. + /// `amount` is then deducted from the caller's allowance. + function transferFrom(address from, address to, uint256 amount) external returns (bool); + + /// @notice Returns the name of the token. + function name() external view returns (string memory); + + /// @notice Returns the symbol of the token. + function symbol() external view returns (string memory); + + /// @notice Returns the decimals places of the token. + function decimals() external view returns (uint8); +} diff --git a/v2/lib/forge-std/src/interfaces/IERC4626.sol b/v2/lib/forge-std/src/interfaces/IERC4626.sol new file mode 100644 index 00000000..bfe3a115 --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IERC4626.sol @@ -0,0 +1,190 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +import "./IERC20.sol"; + +/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in +/// https://eips.ethereum.org/EIPS/eip-4626 +interface IERC4626 is IERC20 { + event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); + + event Withdraw( + address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares + ); + + /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. + /// @dev + /// - MUST be an ERC-20 token contract. + /// - MUST NOT revert. + function asset() external view returns (address assetTokenAddress); + + /// @notice Returns the total amount of the underlying asset that is “managed” by Vault. + /// @dev + /// - SHOULD include any compounding that occurs from yield. + /// - MUST be inclusive of any fees that are charged against assets in the Vault. + /// - MUST NOT revert. + function totalAssets() external view returns (uint256 totalManagedAssets); + + /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal + /// scenario where all the conditions are met. + /// @dev + /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. + /// - MUST NOT show any variations depending on the caller. + /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. + /// - MUST NOT revert. + /// + /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the + /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and + /// from. + function convertToShares(uint256 assets) external view returns (uint256 shares); + + /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal + /// scenario where all the conditions are met. + /// @dev + /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. + /// - MUST NOT show any variations depending on the caller. + /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. + /// - MUST NOT revert. + /// + /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the + /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and + /// from. + function convertToAssets(uint256 shares) external view returns (uint256 assets); + + /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, + /// through a deposit call. + /// @dev + /// - MUST return a limited value if receiver is subject to some deposit limit. + /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. + /// - MUST NOT revert. + function maxDeposit(address receiver) external view returns (uint256 maxAssets); + + /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given + /// current on-chain conditions. + /// @dev + /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit + /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called + /// in the same transaction. + /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the + /// deposit would be accepted, regardless if the user has enough tokens approved, etc. + /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. + /// - MUST NOT revert. + /// + /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in + /// share price or some other type of condition, meaning the depositor will lose assets by depositing. + function previewDeposit(uint256 assets) external view returns (uint256 shares); + + /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. + /// @dev + /// - MUST emit the Deposit event. + /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the + /// deposit execution, and are accounted for during deposit. + /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not + /// approving enough underlying tokens to the Vault contract, etc). + /// + /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. + function deposit(uint256 assets, address receiver) external returns (uint256 shares); + + /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. + /// @dev + /// - MUST return a limited value if receiver is subject to some mint limit. + /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. + /// - MUST NOT revert. + function maxMint(address receiver) external view returns (uint256 maxShares); + + /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given + /// current on-chain conditions. + /// @dev + /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call + /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the + /// same transaction. + /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint + /// would be accepted, regardless if the user has enough tokens approved, etc. + /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. + /// - MUST NOT revert. + /// + /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in + /// share price or some other type of condition, meaning the depositor will lose assets by minting. + function previewMint(uint256 shares) external view returns (uint256 assets); + + /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. + /// @dev + /// - MUST emit the Deposit event. + /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint + /// execution, and are accounted for during mint. + /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not + /// approving enough underlying tokens to the Vault contract, etc). + /// + /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. + function mint(uint256 shares, address receiver) external returns (uint256 assets); + + /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the + /// Vault, through a withdraw call. + /// @dev + /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. + /// - MUST NOT revert. + function maxWithdraw(address owner) external view returns (uint256 maxAssets); + + /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, + /// given current on-chain conditions. + /// @dev + /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw + /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if + /// called + /// in the same transaction. + /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though + /// the withdrawal would be accepted, regardless if the user has enough shares, etc. + /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. + /// - MUST NOT revert. + /// + /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in + /// share price or some other type of condition, meaning the depositor will lose assets by depositing. + function previewWithdraw(uint256 assets) external view returns (uint256 shares); + + /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver. + /// @dev + /// - MUST emit the Withdraw event. + /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the + /// withdraw execution, and are accounted for during withdraw. + /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner + /// not having enough shares, etc). + /// + /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. + /// Those methods should be performed separately. + function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); + + /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, + /// through a redeem call. + /// @dev + /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. + /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. + /// - MUST NOT revert. + function maxRedeem(address owner) external view returns (uint256 maxShares); + + /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, + /// given current on-chain conditions. + /// @dev + /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call + /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the + /// same transaction. + /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the + /// redemption would be accepted, regardless if the user has enough shares, etc. + /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. + /// - MUST NOT revert. + /// + /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in + /// share price or some other type of condition, meaning the depositor will lose assets by redeeming. + function previewRedeem(uint256 shares) external view returns (uint256 assets); + + /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver. + /// @dev + /// - MUST emit the Withdraw event. + /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the + /// redeem execution, and are accounted for during redeem. + /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner + /// not having enough shares, etc). + /// + /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. + /// Those methods should be performed separately. + function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); +} diff --git a/v2/lib/forge-std/src/interfaces/IERC721.sol b/v2/lib/forge-std/src/interfaces/IERC721.sol new file mode 100644 index 00000000..0a16f45c --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IERC721.sol @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +import "./IERC165.sol"; + +/// @title ERC-721 Non-Fungible Token Standard +/// @dev See https://eips.ethereum.org/EIPS/eip-721 +/// Note: the ERC-165 identifier for this interface is 0x80ac58cd. +interface IERC721 is IERC165 { + /// @dev This emits when ownership of any NFT changes by any mechanism. + /// This event emits when NFTs are created (`from` == 0) and destroyed + /// (`to` == 0). Exception: during contract creation, any number of NFTs + /// may be created and assigned without emitting Transfer. At the time of + /// any transfer, the approved address for that NFT (if any) is reset to none. + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + /// @dev This emits when the approved address for an NFT is changed or + /// reaffirmed. The zero address indicates there is no approved address. + /// When a Transfer event emits, this also indicates that the approved + /// address for that NFT (if any) is reset to none. + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + + /// @dev This emits when an operator is enabled or disabled for an owner. + /// The operator can manage all NFTs of the owner. + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + + /// @notice Count all NFTs assigned to an owner + /// @dev NFTs assigned to the zero address are considered invalid, and this + /// function throws for queries about the zero address. + /// @param _owner An address for whom to query the balance + /// @return The number of NFTs owned by `_owner`, possibly zero + function balanceOf(address _owner) external view returns (uint256); + + /// @notice Find the owner of an NFT + /// @dev NFTs assigned to zero address are considered invalid, and queries + /// about them do throw. + /// @param _tokenId The identifier for an NFT + /// @return The address of the owner of the NFT + function ownerOf(uint256 _tokenId) external view returns (address); + + /// @notice Transfers the ownership of an NFT from one address to another address + /// @dev Throws unless `msg.sender` is the current owner, an authorized + /// operator, or the approved address for this NFT. Throws if `_from` is + /// not the current owner. Throws if `_to` is the zero address. Throws if + /// `_tokenId` is not a valid NFT. When transfer is complete, this function + /// checks if `_to` is a smart contract (code size > 0). If so, it calls + /// `onERC721Received` on `_to` and throws if the return value is not + /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. + /// @param _from The current owner of the NFT + /// @param _to The new owner + /// @param _tokenId The NFT to transfer + /// @param data Additional data with no specified format, sent in call to `_to` + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; + + /// @notice Transfers the ownership of an NFT from one address to another address + /// @dev This works identically to the other function with an extra data parameter, + /// except this function just sets data to "". + /// @param _from The current owner of the NFT + /// @param _to The new owner + /// @param _tokenId The NFT to transfer + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + + /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE + /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE + /// THEY MAY BE PERMANENTLY LOST + /// @dev Throws unless `msg.sender` is the current owner, an authorized + /// operator, or the approved address for this NFT. Throws if `_from` is + /// not the current owner. Throws if `_to` is the zero address. Throws if + /// `_tokenId` is not a valid NFT. + /// @param _from The current owner of the NFT + /// @param _to The new owner + /// @param _tokenId The NFT to transfer + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; + + /// @notice Change or reaffirm the approved address for an NFT + /// @dev The zero address indicates there is no approved address. + /// Throws unless `msg.sender` is the current NFT owner, or an authorized + /// operator of the current owner. + /// @param _approved The new approved NFT controller + /// @param _tokenId The NFT to approve + function approve(address _approved, uint256 _tokenId) external payable; + + /// @notice Enable or disable approval for a third party ("operator") to manage + /// all of `msg.sender`'s assets + /// @dev Emits the ApprovalForAll event. The contract MUST allow + /// multiple operators per owner. + /// @param _operator Address to add to the set of authorized operators + /// @param _approved True if the operator is approved, false to revoke approval + function setApprovalForAll(address _operator, bool _approved) external; + + /// @notice Get the approved address for a single NFT + /// @dev Throws if `_tokenId` is not a valid NFT. + /// @param _tokenId The NFT to find the approved address for + /// @return The approved address for this NFT, or the zero address if there is none + function getApproved(uint256 _tokenId) external view returns (address); + + /// @notice Query if an address is an authorized operator for another address + /// @param _owner The address that owns the NFTs + /// @param _operator The address that acts on behalf of the owner + /// @return True if `_operator` is an approved operator for `_owner`, false otherwise + function isApprovedForAll(address _owner, address _operator) external view returns (bool); +} + +/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. +interface IERC721TokenReceiver { + /// @notice Handle the receipt of an NFT + /// @dev The ERC721 smart contract calls this function on the recipient + /// after a `transfer`. This function MAY throw to revert and reject the + /// transfer. Return of other than the magic value MUST result in the + /// transaction being reverted. + /// Note: the contract address is always the message sender. + /// @param _operator The address which called `safeTransferFrom` function + /// @param _from The address which previously owned the token + /// @param _tokenId The NFT identifier which is being transferred + /// @param _data Additional data with no specified format + /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + /// unless throwing + function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) + external + returns (bytes4); +} + +/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension +/// @dev See https://eips.ethereum.org/EIPS/eip-721 +/// Note: the ERC-165 identifier for this interface is 0x5b5e139f. +interface IERC721Metadata is IERC721 { + /// @notice A descriptive name for a collection of NFTs in this contract + function name() external view returns (string memory _name); + + /// @notice An abbreviated name for NFTs in this contract + function symbol() external view returns (string memory _symbol); + + /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. + /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC + /// 3986. The URI may point to a JSON file that conforms to the "ERC721 + /// Metadata JSON Schema". + function tokenURI(uint256 _tokenId) external view returns (string memory); +} + +/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension +/// @dev See https://eips.ethereum.org/EIPS/eip-721 +/// Note: the ERC-165 identifier for this interface is 0x780e9d63. +interface IERC721Enumerable is IERC721 { + /// @notice Count NFTs tracked by this contract + /// @return A count of valid NFTs tracked by this contract, where each one of + /// them has an assigned and queryable owner not equal to the zero address + function totalSupply() external view returns (uint256); + + /// @notice Enumerate valid NFTs + /// @dev Throws if `_index` >= `totalSupply()`. + /// @param _index A counter less than `totalSupply()` + /// @return The token identifier for the `_index`th NFT, + /// (sort order not specified) + function tokenByIndex(uint256 _index) external view returns (uint256); + + /// @notice Enumerate NFTs assigned to an owner + /// @dev Throws if `_index` >= `balanceOf(_owner)` or if + /// `_owner` is the zero address, representing invalid NFTs. + /// @param _owner An address where we are interested in NFTs owned by them + /// @param _index A counter less than `balanceOf(_owner)` + /// @return The token identifier for the `_index`th NFT assigned to `_owner`, + /// (sort order not specified) + function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); +} diff --git a/v2/lib/forge-std/src/interfaces/IMulticall3.sol b/v2/lib/forge-std/src/interfaces/IMulticall3.sol new file mode 100644 index 00000000..0d031b71 --- /dev/null +++ b/v2/lib/forge-std/src/interfaces/IMulticall3.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +interface IMulticall3 { + struct Call { + address target; + bytes callData; + } + + struct Call3 { + address target; + bool allowFailure; + bytes callData; + } + + struct Call3Value { + address target; + bool allowFailure; + uint256 value; + bytes callData; + } + + struct Result { + bool success; + bytes returnData; + } + + function aggregate(Call[] calldata calls) + external + payable + returns (uint256 blockNumber, bytes[] memory returnData); + + function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData); + + function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData); + + function blockAndAggregate(Call[] calldata calls) + external + payable + returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); + + function getBasefee() external view returns (uint256 basefee); + + function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash); + + function getBlockNumber() external view returns (uint256 blockNumber); + + function getChainId() external view returns (uint256 chainid); + + function getCurrentBlockCoinbase() external view returns (address coinbase); + + function getCurrentBlockDifficulty() external view returns (uint256 difficulty); + + function getCurrentBlockGasLimit() external view returns (uint256 gaslimit); + + function getCurrentBlockTimestamp() external view returns (uint256 timestamp); + + function getEthBalance(address addr) external view returns (uint256 balance); + + function getLastBlockHash() external view returns (bytes32 blockHash); + + function tryAggregate(bool requireSuccess, Call[] calldata calls) + external + payable + returns (Result[] memory returnData); + + function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) + external + payable + returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); +} diff --git a/v2/lib/forge-std/src/mocks/MockERC20.sol b/v2/lib/forge-std/src/mocks/MockERC20.sol new file mode 100644 index 00000000..2a022fa3 --- /dev/null +++ b/v2/lib/forge-std/src/mocks/MockERC20.sol @@ -0,0 +1,234 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +import {IERC20} from "../interfaces/IERC20.sol"; + +/// @notice This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production. +/// @dev Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol +contract MockERC20 is IERC20 { + /*////////////////////////////////////////////////////////////// + METADATA STORAGE + //////////////////////////////////////////////////////////////*/ + + string internal _name; + + string internal _symbol; + + uint8 internal _decimals; + + function name() external view override returns (string memory) { + return _name; + } + + function symbol() external view override returns (string memory) { + return _symbol; + } + + function decimals() external view override returns (uint8) { + return _decimals; + } + + /*////////////////////////////////////////////////////////////// + ERC20 STORAGE + //////////////////////////////////////////////////////////////*/ + + uint256 internal _totalSupply; + + mapping(address => uint256) internal _balanceOf; + + mapping(address => mapping(address => uint256)) internal _allowance; + + function totalSupply() external view override returns (uint256) { + return _totalSupply; + } + + function balanceOf(address owner) external view override returns (uint256) { + return _balanceOf[owner]; + } + + function allowance(address owner, address spender) external view override returns (uint256) { + return _allowance[owner][spender]; + } + + /*////////////////////////////////////////////////////////////// + EIP-2612 STORAGE + //////////////////////////////////////////////////////////////*/ + + uint256 internal INITIAL_CHAIN_ID; + + bytes32 internal INITIAL_DOMAIN_SEPARATOR; + + mapping(address => uint256) public nonces; + + /*////////////////////////////////////////////////////////////// + INITIALIZE + //////////////////////////////////////////////////////////////*/ + + /// @dev A bool to track whether the contract has been initialized. + bool private initialized; + + /// @dev To hide constructor warnings across solc versions due to different constructor visibility requirements and + /// syntaxes, we add an initialization function that can be called only once. + function initialize(string memory name_, string memory symbol_, uint8 decimals_) public { + require(!initialized, "ALREADY_INITIALIZED"); + + _name = name_; + _symbol = symbol_; + _decimals = decimals_; + + INITIAL_CHAIN_ID = _pureChainId(); + INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); + + initialized = true; + } + + /*////////////////////////////////////////////////////////////// + ERC20 LOGIC + //////////////////////////////////////////////////////////////*/ + + function approve(address spender, uint256 amount) public virtual override returns (bool) { + _allowance[msg.sender][spender] = amount; + + emit Approval(msg.sender, spender, amount); + + return true; + } + + function transfer(address to, uint256 amount) public virtual override returns (bool) { + _balanceOf[msg.sender] = _sub(_balanceOf[msg.sender], amount); + _balanceOf[to] = _add(_balanceOf[to], amount); + + emit Transfer(msg.sender, to, amount); + + return true; + } + + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { + uint256 allowed = _allowance[from][msg.sender]; // Saves gas for limited approvals. + + if (allowed != ~uint256(0)) _allowance[from][msg.sender] = _sub(allowed, amount); + + _balanceOf[from] = _sub(_balanceOf[from], amount); + _balanceOf[to] = _add(_balanceOf[to], amount); + + emit Transfer(from, to, amount); + + return true; + } + + /*////////////////////////////////////////////////////////////// + EIP-2612 LOGIC + //////////////////////////////////////////////////////////////*/ + + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) + public + virtual + { + require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); + + address recoveredAddress = ecrecover( + keccak256( + abi.encodePacked( + "\x19\x01", + DOMAIN_SEPARATOR(), + keccak256( + abi.encode( + keccak256( + "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + ), + owner, + spender, + value, + nonces[owner]++, + deadline + ) + ) + ) + ), + v, + r, + s + ); + + require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); + + _allowance[recoveredAddress][spender] = value; + + emit Approval(owner, spender, value); + } + + function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { + return _pureChainId() == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); + } + + function computeDomainSeparator() internal view virtual returns (bytes32) { + return keccak256( + abi.encode( + keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), + keccak256(bytes(_name)), + keccak256("1"), + _pureChainId(), + address(this) + ) + ); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL MINT/BURN LOGIC + //////////////////////////////////////////////////////////////*/ + + function _mint(address to, uint256 amount) internal virtual { + _totalSupply = _add(_totalSupply, amount); + _balanceOf[to] = _add(_balanceOf[to], amount); + + emit Transfer(address(0), to, amount); + } + + function _burn(address from, uint256 amount) internal virtual { + _balanceOf[from] = _sub(_balanceOf[from], amount); + _totalSupply = _sub(_totalSupply, amount); + + emit Transfer(from, address(0), amount); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL SAFE MATH LOGIC + //////////////////////////////////////////////////////////////*/ + + function _add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "ERC20: addition overflow"); + return c; + } + + function _sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(a >= b, "ERC20: subtraction underflow"); + return a - b; + } + + /*////////////////////////////////////////////////////////////// + HELPERS + //////////////////////////////////////////////////////////////*/ + + // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no + // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We + // can't simply access the chain ID in a normal view or pure function because the solc View Pure + // Checker changed `chainid` from pure to view in 0.8.0. + function _viewChainId() private view returns (uint256 chainId) { + // Assembly required since `block.chainid` was introduced in 0.8.0. + assembly { + chainId := chainid() + } + + address(this); // Silence warnings in older Solc versions. + } + + function _pureChainId() private pure returns (uint256 chainId) { + function() internal view returns (uint256) fnIn = _viewChainId; + function() internal pure returns (uint256) pureChainId; + assembly { + pureChainId := fnIn + } + chainId = pureChainId(); + } +} diff --git a/v2/lib/forge-std/src/mocks/MockERC721.sol b/v2/lib/forge-std/src/mocks/MockERC721.sol new file mode 100644 index 00000000..7a4909e5 --- /dev/null +++ b/v2/lib/forge-std/src/mocks/MockERC721.sol @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +import {IERC721Metadata, IERC721TokenReceiver} from "../interfaces/IERC721.sol"; + +/// @notice This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production. +/// @dev Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol +contract MockERC721 is IERC721Metadata { + /*////////////////////////////////////////////////////////////// + METADATA STORAGE/LOGIC + //////////////////////////////////////////////////////////////*/ + + string internal _name; + + string internal _symbol; + + function name() external view override returns (string memory) { + return _name; + } + + function symbol() external view override returns (string memory) { + return _symbol; + } + + function tokenURI(uint256 id) public view virtual override returns (string memory) {} + + /*////////////////////////////////////////////////////////////// + ERC721 BALANCE/OWNER STORAGE + //////////////////////////////////////////////////////////////*/ + + mapping(uint256 => address) internal _ownerOf; + + mapping(address => uint256) internal _balanceOf; + + function ownerOf(uint256 id) public view virtual override returns (address owner) { + require((owner = _ownerOf[id]) != address(0), "NOT_MINTED"); + } + + function balanceOf(address owner) public view virtual override returns (uint256) { + require(owner != address(0), "ZERO_ADDRESS"); + + return _balanceOf[owner]; + } + + /*////////////////////////////////////////////////////////////// + ERC721 APPROVAL STORAGE + //////////////////////////////////////////////////////////////*/ + + mapping(uint256 => address) internal _getApproved; + + mapping(address => mapping(address => bool)) internal _isApprovedForAll; + + function getApproved(uint256 id) public view virtual override returns (address) { + return _getApproved[id]; + } + + function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { + return _isApprovedForAll[owner][operator]; + } + + /*////////////////////////////////////////////////////////////// + INITIALIZE + //////////////////////////////////////////////////////////////*/ + + /// @dev A bool to track whether the contract has been initialized. + bool private initialized; + + /// @dev To hide constructor warnings across solc versions due to different constructor visibility requirements and + /// syntaxes, we add an initialization function that can be called only once. + function initialize(string memory name_, string memory symbol_) public { + require(!initialized, "ALREADY_INITIALIZED"); + + _name = name_; + _symbol = symbol_; + + initialized = true; + } + + /*////////////////////////////////////////////////////////////// + ERC721 LOGIC + //////////////////////////////////////////////////////////////*/ + + function approve(address spender, uint256 id) public payable virtual override { + address owner = _ownerOf[id]; + + require(msg.sender == owner || _isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); + + _getApproved[id] = spender; + + emit Approval(owner, spender, id); + } + + function setApprovalForAll(address operator, bool approved) public virtual override { + _isApprovedForAll[msg.sender][operator] = approved; + + emit ApprovalForAll(msg.sender, operator, approved); + } + + function transferFrom(address from, address to, uint256 id) public payable virtual override { + require(from == _ownerOf[id], "WRONG_FROM"); + + require(to != address(0), "INVALID_RECIPIENT"); + + require( + msg.sender == from || _isApprovedForAll[from][msg.sender] || msg.sender == _getApproved[id], + "NOT_AUTHORIZED" + ); + + // Underflow of the sender's balance is impossible because we check for + // ownership above and the recipient's balance can't realistically overflow. + _balanceOf[from]--; + + _balanceOf[to]++; + + _ownerOf[id] = to; + + delete _getApproved[id]; + + emit Transfer(from, to, id); + } + + function safeTransferFrom(address from, address to, uint256 id) public payable virtual override { + transferFrom(from, to, id); + + require( + !_isContract(to) + || IERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") + == IERC721TokenReceiver.onERC721Received.selector, + "UNSAFE_RECIPIENT" + ); + } + + function safeTransferFrom(address from, address to, uint256 id, bytes memory data) + public + payable + virtual + override + { + transferFrom(from, to, id); + + require( + !_isContract(to) + || IERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) + == IERC721TokenReceiver.onERC721Received.selector, + "UNSAFE_RECIPIENT" + ); + } + + /*////////////////////////////////////////////////////////////// + ERC165 LOGIC + //////////////////////////////////////////////////////////////*/ + + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + return interfaceId == 0x01ffc9a7 // ERC165 Interface ID for ERC165 + || interfaceId == 0x80ac58cd // ERC165 Interface ID for ERC721 + || interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata + } + + /*////////////////////////////////////////////////////////////// + INTERNAL MINT/BURN LOGIC + //////////////////////////////////////////////////////////////*/ + + function _mint(address to, uint256 id) internal virtual { + require(to != address(0), "INVALID_RECIPIENT"); + + require(_ownerOf[id] == address(0), "ALREADY_MINTED"); + + // Counter overflow is incredibly unrealistic. + + _balanceOf[to]++; + + _ownerOf[id] = to; + + emit Transfer(address(0), to, id); + } + + function _burn(uint256 id) internal virtual { + address owner = _ownerOf[id]; + + require(owner != address(0), "NOT_MINTED"); + + _balanceOf[owner]--; + + delete _ownerOf[id]; + + delete _getApproved[id]; + + emit Transfer(owner, address(0), id); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL SAFE MINT LOGIC + //////////////////////////////////////////////////////////////*/ + + function _safeMint(address to, uint256 id) internal virtual { + _mint(to, id); + + require( + !_isContract(to) + || IERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") + == IERC721TokenReceiver.onERC721Received.selector, + "UNSAFE_RECIPIENT" + ); + } + + function _safeMint(address to, uint256 id, bytes memory data) internal virtual { + _mint(to, id); + + require( + !_isContract(to) + || IERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) + == IERC721TokenReceiver.onERC721Received.selector, + "UNSAFE_RECIPIENT" + ); + } + + /*////////////////////////////////////////////////////////////// + HELPERS + //////////////////////////////////////////////////////////////*/ + + function _isContract(address _addr) private view returns (bool) { + uint256 codeLength; + + // Assembly required for versions < 0.8.0 to check extcodesize. + assembly { + codeLength := extcodesize(_addr) + } + + return codeLength > 0; + } +} diff --git a/v2/lib/forge-std/src/safeconsole.sol b/v2/lib/forge-std/src/safeconsole.sol new file mode 100644 index 00000000..5714d090 --- /dev/null +++ b/v2/lib/forge-std/src/safeconsole.sol @@ -0,0 +1,13248 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +/// @author philogy +/// @dev Code generated automatically by script. +library safeconsole { + uint256 constant CONSOLE_ADDR = 0x000000000000000000000000000000000000000000636F6e736F6c652e6c6f67; + + // Credit to [0age](https://twitter.com/z0age/status/1654922202930888704) and [0xdapper](https://github.com/foundry-rs/forge-std/pull/374) + // for the view-to-pure log trick. + function _sendLogPayload(uint256 offset, uint256 size) private pure { + function(uint256, uint256) internal view fnIn = _sendLogPayloadView; + function(uint256, uint256) internal pure pureSendLogPayload; + assembly { + pureSendLogPayload := fnIn + } + pureSendLogPayload(offset, size); + } + + function _sendLogPayloadView(uint256 offset, uint256 size) private view { + assembly { + pop(staticcall(gas(), CONSOLE_ADDR, offset, size, 0x0, 0x0)) + } + } + + function _memcopy(uint256 fromOffset, uint256 toOffset, uint256 length) private pure { + function(uint256, uint256, uint256) internal view fnIn = _memcopyView; + function(uint256, uint256, uint256) internal pure pureMemcopy; + assembly { + pureMemcopy := fnIn + } + pureMemcopy(fromOffset, toOffset, length); + } + + function _memcopyView(uint256 fromOffset, uint256 toOffset, uint256 length) private view { + assembly { + pop(staticcall(gas(), 0x4, fromOffset, length, toOffset, length)) + } + } + + function logMemory(uint256 offset, uint256 length) internal pure { + if (offset >= 0x60) { + // Sufficient memory before slice to prepare call header. + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(sub(offset, 0x60)) + m1 := mload(sub(offset, 0x40)) + m2 := mload(sub(offset, 0x20)) + // Selector of `logBytes(bytes)`. + mstore(sub(offset, 0x60), 0xe17bf956) + mstore(sub(offset, 0x40), 0x20) + mstore(sub(offset, 0x20), length) + } + _sendLogPayload(offset - 0x44, length + 0x44); + assembly { + mstore(sub(offset, 0x60), m0) + mstore(sub(offset, 0x40), m1) + mstore(sub(offset, 0x20), m2) + } + } else { + // Insufficient space, so copy slice forward, add header and reverse. + bytes32 m0; + bytes32 m1; + bytes32 m2; + uint256 endOffset = offset + length; + assembly { + m0 := mload(add(endOffset, 0x00)) + m1 := mload(add(endOffset, 0x20)) + m2 := mload(add(endOffset, 0x40)) + } + _memcopy(offset, offset + 0x60, length); + assembly { + // Selector of `logBytes(bytes)`. + mstore(add(offset, 0x00), 0xe17bf956) + mstore(add(offset, 0x20), 0x20) + mstore(add(offset, 0x40), length) + } + _sendLogPayload(offset + 0x1c, length + 0x44); + _memcopy(offset + 0x60, offset, length); + assembly { + mstore(add(endOffset, 0x00), m0) + mstore(add(endOffset, 0x20), m1) + mstore(add(endOffset, 0x40), m2) + } + } + } + + function log(address p0) internal pure { + bytes32 m0; + bytes32 m1; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + // Selector of `log(address)`. + mstore(0x00, 0x2c2ecbc2) + mstore(0x20, p0) + } + _sendLogPayload(0x1c, 0x24); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + } + } + + function log(bool p0) internal pure { + bytes32 m0; + bytes32 m1; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + // Selector of `log(bool)`. + mstore(0x00, 0x32458eed) + mstore(0x20, p0) + } + _sendLogPayload(0x1c, 0x24); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + } + } + + function log(uint256 p0) internal pure { + bytes32 m0; + bytes32 m1; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + // Selector of `log(uint256)`. + mstore(0x00, 0xf82c50f1) + mstore(0x20, p0) + } + _sendLogPayload(0x1c, 0x24); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + } + } + + function log(bytes32 p0) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(string)`. + mstore(0x00, 0x41304fac) + mstore(0x20, 0x20) + writeString(0x40, p0) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, address p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(address,address)`. + mstore(0x00, 0xdaf0d4aa) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(address p0, bool p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(address,bool)`. + mstore(0x00, 0x75b605d3) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(address p0, uint256 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(address,uint256)`. + mstore(0x00, 0x8309e8a8) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(address p0, bytes32 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,string)`. + mstore(0x00, 0x759f86bb) + mstore(0x20, p0) + mstore(0x40, 0x40) + writeString(0x60, p1) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(bool,address)`. + mstore(0x00, 0x853c4849) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(bool p0, bool p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(bool,bool)`. + mstore(0x00, 0x2a110e83) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(bool p0, uint256 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(bool,uint256)`. + mstore(0x00, 0x399174d3) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(bool p0, bytes32 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,string)`. + mstore(0x00, 0x8feac525) + mstore(0x20, p0) + mstore(0x40, 0x40) + writeString(0x60, p1) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(uint256,address)`. + mstore(0x00, 0x69276c86) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(uint256 p0, bool p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(uint256,bool)`. + mstore(0x00, 0x1c9d7eb3) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(uint256 p0, uint256 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + // Selector of `log(uint256,uint256)`. + mstore(0x00, 0xf666715a) + mstore(0x20, p0) + mstore(0x40, p1) + } + _sendLogPayload(0x1c, 0x44); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + } + } + + function log(uint256 p0, bytes32 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,string)`. + mstore(0x00, 0x643fd0df) + mstore(0x20, p0) + mstore(0x40, 0x40) + writeString(0x60, p1) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bytes32 p0, address p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(string,address)`. + mstore(0x00, 0x319af333) + mstore(0x20, 0x40) + mstore(0x40, p1) + writeString(0x60, p0) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bytes32 p0, bool p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(string,bool)`. + mstore(0x00, 0xc3b55635) + mstore(0x20, 0x40) + mstore(0x40, p1) + writeString(0x60, p0) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bytes32 p0, uint256 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(string,uint256)`. + mstore(0x00, 0xb60e72cc) + mstore(0x20, 0x40) + mstore(0x40, p1) + writeString(0x60, p0) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bytes32 p0, bytes32 p1) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,string)`. + mstore(0x00, 0x4b5c4277) + mstore(0x20, 0x40) + mstore(0x40, 0x80) + writeString(0x60, p0) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,address,address)`. + mstore(0x00, 0x018c84c2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, address p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,address,bool)`. + mstore(0x00, 0xf2a66286) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, address p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,address,uint256)`. + mstore(0x00, 0x17fe6185) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, address p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,address,string)`. + mstore(0x00, 0x007150be) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, bool p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,bool,address)`. + mstore(0x00, 0xf11699ed) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, bool p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,bool,bool)`. + mstore(0x00, 0xeb830c92) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, bool p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,bool,uint256)`. + mstore(0x00, 0x9c4f99fb) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, bool p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,bool,string)`. + mstore(0x00, 0x212255cc) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, uint256 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,uint256,address)`. + mstore(0x00, 0x7bc0d848) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, uint256 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,uint256,bool)`. + mstore(0x00, 0x678209a8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, uint256 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(address,uint256,uint256)`. + mstore(0x00, 0xb69bcaf6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(address p0, uint256 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,uint256,string)`. + mstore(0x00, 0xa1f2e8aa) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, bytes32 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,string,address)`. + mstore(0x00, 0xf08744e8) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, bytes32 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,string,bool)`. + mstore(0x00, 0xcf020fb1) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, bytes32 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(address,string,uint256)`. + mstore(0x00, 0x67dd6ff1) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(address p0, bytes32 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(address,string,string)`. + mstore(0x00, 0xfb772265) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, 0xa0) + writeString(0x80, p1) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bool p0, address p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,address,address)`. + mstore(0x00, 0xd2763667) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, address p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,address,bool)`. + mstore(0x00, 0x18c9c746) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, address p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,address,uint256)`. + mstore(0x00, 0x5f7b9afb) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, address p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,address,string)`. + mstore(0x00, 0xde9a9270) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, bool p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,bool,address)`. + mstore(0x00, 0x1078f68d) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, bool p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,bool,bool)`. + mstore(0x00, 0x50709698) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, bool p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,bool,uint256)`. + mstore(0x00, 0x12f21602) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, bool p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,bool,string)`. + mstore(0x00, 0x2555fa46) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, uint256 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,uint256,address)`. + mstore(0x00, 0x088ef9d2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, uint256 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,uint256,bool)`. + mstore(0x00, 0xe8defba9) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, uint256 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(bool,uint256,uint256)`. + mstore(0x00, 0x37103367) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(bool p0, uint256 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,uint256,string)`. + mstore(0x00, 0xc3fc3970) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, bytes32 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,string,address)`. + mstore(0x00, 0x9591b953) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, bytes32 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,string,bool)`. + mstore(0x00, 0xdbb4c247) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, bytes32 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(bool,string,uint256)`. + mstore(0x00, 0x1093ee11) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bool p0, bytes32 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(bool,string,string)`. + mstore(0x00, 0xb076847f) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, 0xa0) + writeString(0x80, p1) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(uint256 p0, address p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,address,address)`. + mstore(0x00, 0xbcfd9be0) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, address p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,address,bool)`. + mstore(0x00, 0x9b6ec042) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, address p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,address,uint256)`. + mstore(0x00, 0x5a9b5ed5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, address p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,address,string)`. + mstore(0x00, 0x63cb41f9) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, bool p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,bool,address)`. + mstore(0x00, 0x35085f7b) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, bool p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,bool,bool)`. + mstore(0x00, 0x20718650) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, bool p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,bool,uint256)`. + mstore(0x00, 0x20098014) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, bool p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,bool,string)`. + mstore(0x00, 0x85775021) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, uint256 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,uint256,address)`. + mstore(0x00, 0x5c96b331) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, uint256 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,uint256,bool)`. + mstore(0x00, 0x4766da72) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, uint256 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + // Selector of `log(uint256,uint256,uint256)`. + mstore(0x00, 0xd1ed7a3c) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + } + _sendLogPayload(0x1c, 0x64); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + } + } + + function log(uint256 p0, uint256 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,uint256,string)`. + mstore(0x00, 0x71d04af2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x60) + writeString(0x80, p2) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, bytes32 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,string,address)`. + mstore(0x00, 0x7afac959) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, bytes32 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,string,bool)`. + mstore(0x00, 0x4ceda75a) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, bytes32 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(uint256,string,uint256)`. + mstore(0x00, 0x37aa7d4c) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, p2) + writeString(0x80, p1) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(uint256 p0, bytes32 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(uint256,string,string)`. + mstore(0x00, 0xb115611f) + mstore(0x20, p0) + mstore(0x40, 0x60) + mstore(0x60, 0xa0) + writeString(0x80, p1) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, address p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,address,address)`. + mstore(0x00, 0xfcec75e0) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, address p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,address,bool)`. + mstore(0x00, 0xc91d5ed4) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, address p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,address,uint256)`. + mstore(0x00, 0x0d26b925) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, address p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,address,string)`. + mstore(0x00, 0xe0e9ad4f) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, 0xa0) + writeString(0x80, p0) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, bool p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,bool,address)`. + mstore(0x00, 0x932bbb38) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, bool p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,bool,bool)`. + mstore(0x00, 0x850b7ad6) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, bool p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,bool,uint256)`. + mstore(0x00, 0xc95958d6) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, bool p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,bool,string)`. + mstore(0x00, 0xe298f47d) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, 0xa0) + writeString(0x80, p0) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, uint256 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,uint256,address)`. + mstore(0x00, 0x1c7ec448) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, uint256 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,uint256,bool)`. + mstore(0x00, 0xca7733b1) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, uint256 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + // Selector of `log(string,uint256,uint256)`. + mstore(0x00, 0xca47c4eb) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, p2) + writeString(0x80, p0) + } + _sendLogPayload(0x1c, 0xa4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + } + } + + function log(bytes32 p0, uint256 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,uint256,string)`. + mstore(0x00, 0x5970e089) + mstore(0x20, 0x60) + mstore(0x40, p1) + mstore(0x60, 0xa0) + writeString(0x80, p0) + writeString(0xc0, p2) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, bytes32 p1, address p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,string,address)`. + mstore(0x00, 0x95ed0195) + mstore(0x20, 0x60) + mstore(0x40, 0xa0) + mstore(0x60, p2) + writeString(0x80, p0) + writeString(0xc0, p1) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, bytes32 p1, bool p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,string,bool)`. + mstore(0x00, 0xb0e0f9b5) + mstore(0x20, 0x60) + mstore(0x40, 0xa0) + mstore(0x60, p2) + writeString(0x80, p0) + writeString(0xc0, p1) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, bytes32 p1, uint256 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + // Selector of `log(string,string,uint256)`. + mstore(0x00, 0x5821efa1) + mstore(0x20, 0x60) + mstore(0x40, 0xa0) + mstore(0x60, p2) + writeString(0x80, p0) + writeString(0xc0, p1) + } + _sendLogPayload(0x1c, 0xe4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + } + } + + function log(bytes32 p0, bytes32 p1, bytes32 p2) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + // Selector of `log(string,string,string)`. + mstore(0x00, 0x2ced7cef) + mstore(0x20, 0x60) + mstore(0x40, 0xa0) + mstore(0x60, 0xe0) + writeString(0x80, p0) + writeString(0xc0, p1) + writeString(0x100, p2) + } + _sendLogPayload(0x1c, 0x124); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + } + } + + function log(address p0, address p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,address,address)`. + mstore(0x00, 0x665bf134) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,address,bool)`. + mstore(0x00, 0x0e378994) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,address,uint256)`. + mstore(0x00, 0x94250d77) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,address,string)`. + mstore(0x00, 0xf808da20) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,bool,address)`. + mstore(0x00, 0x9f1bc36e) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,bool,bool)`. + mstore(0x00, 0x2cd4134a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,bool,uint256)`. + mstore(0x00, 0x3971e78c) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,bool,string)`. + mstore(0x00, 0xaa6540c8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,uint256,address)`. + mstore(0x00, 0x8da6def5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,uint256,bool)`. + mstore(0x00, 0x9b4254e2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,address,uint256,uint256)`. + mstore(0x00, 0xbe553481) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, address p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,uint256,string)`. + mstore(0x00, 0xfdb4f990) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,string,address)`. + mstore(0x00, 0x8f736d16) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,string,bool)`. + mstore(0x00, 0x6f1a594e) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,address,string,uint256)`. + mstore(0x00, 0xef1cefe7) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, address p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,address,string,string)`. + mstore(0x00, 0x21bdaf25) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bool p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,address,address)`. + mstore(0x00, 0x660375dd) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,address,bool)`. + mstore(0x00, 0xa6f50b0f) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,address,uint256)`. + mstore(0x00, 0xa75c59de) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,address,string)`. + mstore(0x00, 0x2dd778e6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,bool,address)`. + mstore(0x00, 0xcf394485) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,bool,bool)`. + mstore(0x00, 0xcac43479) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,bool,uint256)`. + mstore(0x00, 0x8c4e5de6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,bool,string)`. + mstore(0x00, 0xdfc4a2e8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,uint256,address)`. + mstore(0x00, 0xccf790a1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,uint256,bool)`. + mstore(0x00, 0xc4643e20) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,bool,uint256,uint256)`. + mstore(0x00, 0x386ff5f4) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, bool p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,uint256,string)`. + mstore(0x00, 0x0aa6cfad) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,string,address)`. + mstore(0x00, 0x19fd4956) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,string,bool)`. + mstore(0x00, 0x50ad461d) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,bool,string,uint256)`. + mstore(0x00, 0x80e6a20b) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bool p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,bool,string,string)`. + mstore(0x00, 0x475c5c33) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, uint256 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,address,address)`. + mstore(0x00, 0x478d1c62) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,address,bool)`. + mstore(0x00, 0xa1bcc9b3) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,address,uint256)`. + mstore(0x00, 0x100f650e) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,address,string)`. + mstore(0x00, 0x1da986ea) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,bool,address)`. + mstore(0x00, 0xa31bfdcc) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,bool,bool)`. + mstore(0x00, 0x3bf5e537) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,bool,uint256)`. + mstore(0x00, 0x22f6b999) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,bool,string)`. + mstore(0x00, 0xc5ad85f9) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,uint256,address)`. + mstore(0x00, 0x20e3984d) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,uint256,bool)`. + mstore(0x00, 0x66f1bc67) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(address,uint256,uint256,uint256)`. + mstore(0x00, 0x34f0e636) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(address p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,uint256,string)`. + mstore(0x00, 0x4a28c017) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,string,address)`. + mstore(0x00, 0x5c430d47) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,string,bool)`. + mstore(0x00, 0xcf18105c) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,uint256,string,uint256)`. + mstore(0x00, 0xbf01f891) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,uint256,string,string)`. + mstore(0x00, 0x88a8c406) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,address,address)`. + mstore(0x00, 0x0d36fa20) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,address,bool)`. + mstore(0x00, 0x0df12b76) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,address,uint256)`. + mstore(0x00, 0x457fe3cf) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,address,string)`. + mstore(0x00, 0xf7e36245) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,bool,address)`. + mstore(0x00, 0x205871c2) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,bool,bool)`. + mstore(0x00, 0x5f1d5c9f) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,bool,uint256)`. + mstore(0x00, 0x515e38b6) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,bool,string)`. + mstore(0x00, 0xbc0b61fe) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,uint256,address)`. + mstore(0x00, 0x63183678) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,uint256,bool)`. + mstore(0x00, 0x0ef7e050) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(address,string,uint256,uint256)`. + mstore(0x00, 0x1dc8e1b8) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(address p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,uint256,string)`. + mstore(0x00, 0x448830a8) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,string,address)`. + mstore(0x00, 0xa04e2f87) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,string,bool)`. + mstore(0x00, 0x35a5071f) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(address,string,string,uint256)`. + mstore(0x00, 0x159f8927) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(address p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(address,string,string,string)`. + mstore(0x00, 0x5d02c50b) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p1) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bool p0, address p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,address,address)`. + mstore(0x00, 0x1d14d001) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,address,bool)`. + mstore(0x00, 0x46600be0) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,address,uint256)`. + mstore(0x00, 0x0c66d1be) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,address,string)`. + mstore(0x00, 0xd812a167) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,bool,address)`. + mstore(0x00, 0x1c41a336) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,bool,bool)`. + mstore(0x00, 0x6a9c478b) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,bool,uint256)`. + mstore(0x00, 0x07831502) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,bool,string)`. + mstore(0x00, 0x4a66cb34) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,uint256,address)`. + mstore(0x00, 0x136b05dd) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,uint256,bool)`. + mstore(0x00, 0xd6019f1c) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,address,uint256,uint256)`. + mstore(0x00, 0x7bf181a1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, address p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,uint256,string)`. + mstore(0x00, 0x51f09ff8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,string,address)`. + mstore(0x00, 0x6f7c603e) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,string,bool)`. + mstore(0x00, 0xe2bfd60b) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,address,string,uint256)`. + mstore(0x00, 0xc21f64c7) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, address p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,address,string,string)`. + mstore(0x00, 0xa73c1db6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bool p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,address,address)`. + mstore(0x00, 0xf4880ea4) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,address,bool)`. + mstore(0x00, 0xc0a302d8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,address,uint256)`. + mstore(0x00, 0x4c123d57) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,address,string)`. + mstore(0x00, 0xa0a47963) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,bool,address)`. + mstore(0x00, 0x8c329b1a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,bool,bool)`. + mstore(0x00, 0x3b2a5ce0) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,bool,uint256)`. + mstore(0x00, 0x6d7045c1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,bool,string)`. + mstore(0x00, 0x2ae408d4) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,uint256,address)`. + mstore(0x00, 0x54a7a9a0) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,uint256,bool)`. + mstore(0x00, 0x619e4d0e) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,bool,uint256,uint256)`. + mstore(0x00, 0x0bb00eab) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, bool p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,uint256,string)`. + mstore(0x00, 0x7dd4d0e0) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,string,address)`. + mstore(0x00, 0xf9ad2b89) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,string,bool)`. + mstore(0x00, 0xb857163a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,bool,string,uint256)`. + mstore(0x00, 0xe3a9ca2f) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bool p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,bool,string,string)`. + mstore(0x00, 0x6d1e8751) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, uint256 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,address,address)`. + mstore(0x00, 0x26f560a8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,address,bool)`. + mstore(0x00, 0xb4c314ff) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,address,uint256)`. + mstore(0x00, 0x1537dc87) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,address,string)`. + mstore(0x00, 0x1bb3b09a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,bool,address)`. + mstore(0x00, 0x9acd3616) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,bool,bool)`. + mstore(0x00, 0xceb5f4d7) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,bool,uint256)`. + mstore(0x00, 0x7f9bbca2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,bool,string)`. + mstore(0x00, 0x9143dbb1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,uint256,address)`. + mstore(0x00, 0x00dd87b9) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,uint256,bool)`. + mstore(0x00, 0xbe984353) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(bool,uint256,uint256,uint256)`. + mstore(0x00, 0x374bb4b2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(bool p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,uint256,string)`. + mstore(0x00, 0x8e69fb5d) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,string,address)`. + mstore(0x00, 0xfedd1fff) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,string,bool)`. + mstore(0x00, 0xe5e70b2b) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,uint256,string,uint256)`. + mstore(0x00, 0x6a1199e2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,uint256,string,string)`. + mstore(0x00, 0xf5bc2249) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,address,address)`. + mstore(0x00, 0x2b2b18dc) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,address,bool)`. + mstore(0x00, 0x6dd434ca) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,address,uint256)`. + mstore(0x00, 0xa5cada94) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,address,string)`. + mstore(0x00, 0x12d6c788) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,bool,address)`. + mstore(0x00, 0x538e06ab) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,bool,bool)`. + mstore(0x00, 0xdc5e935b) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,bool,uint256)`. + mstore(0x00, 0x1606a393) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,bool,string)`. + mstore(0x00, 0x483d0416) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,uint256,address)`. + mstore(0x00, 0x1596a1ce) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,uint256,bool)`. + mstore(0x00, 0x6b0e5d53) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(bool,string,uint256,uint256)`. + mstore(0x00, 0x28863fcb) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bool p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,uint256,string)`. + mstore(0x00, 0x1ad96de6) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,string,address)`. + mstore(0x00, 0x97d394d8) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,string,bool)`. + mstore(0x00, 0x1e4b87e5) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(bool,string,string,uint256)`. + mstore(0x00, 0x7be0c3eb) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bool p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(bool,string,string,string)`. + mstore(0x00, 0x1762e32a) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p1) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(uint256 p0, address p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,address,address)`. + mstore(0x00, 0x2488b414) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,address,bool)`. + mstore(0x00, 0x091ffaf5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,address,uint256)`. + mstore(0x00, 0x736efbb6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,address,string)`. + mstore(0x00, 0x031c6f73) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,bool,address)`. + mstore(0x00, 0xef72c513) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,bool,bool)`. + mstore(0x00, 0xe351140f) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,bool,uint256)`. + mstore(0x00, 0x5abd992a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,bool,string)`. + mstore(0x00, 0x90fb06aa) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,uint256,address)`. + mstore(0x00, 0x15c127b5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,uint256,bool)`. + mstore(0x00, 0x5f743a7c) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,address,uint256,uint256)`. + mstore(0x00, 0x0c9cd9c1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, address p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,uint256,string)`. + mstore(0x00, 0xddb06521) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,string,address)`. + mstore(0x00, 0x9cba8fff) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,string,bool)`. + mstore(0x00, 0xcc32ab07) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,address,string,uint256)`. + mstore(0x00, 0x46826b5d) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, address p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,address,string,string)`. + mstore(0x00, 0x3e128ca3) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bool p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,address,address)`. + mstore(0x00, 0xa1ef4cbb) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,address,bool)`. + mstore(0x00, 0x454d54a5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,address,uint256)`. + mstore(0x00, 0x078287f5) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,address,string)`. + mstore(0x00, 0xade052c7) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,bool,address)`. + mstore(0x00, 0x69640b59) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,bool,bool)`. + mstore(0x00, 0xb6f577a1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,bool,uint256)`. + mstore(0x00, 0x7464ce23) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,bool,string)`. + mstore(0x00, 0xdddb9561) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,uint256,address)`. + mstore(0x00, 0x88cb6041) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,uint256,bool)`. + mstore(0x00, 0x91a02e2a) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,bool,uint256,uint256)`. + mstore(0x00, 0xc6acc7a8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, bool p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,uint256,string)`. + mstore(0x00, 0xde03e774) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,string,address)`. + mstore(0x00, 0xef529018) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,string,bool)`. + mstore(0x00, 0xeb928d7f) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,bool,string,uint256)`. + mstore(0x00, 0x2c1d0746) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,bool,string,string)`. + mstore(0x00, 0x68c8b8bd) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,address,address)`. + mstore(0x00, 0x56a5d1b1) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,address,bool)`. + mstore(0x00, 0x15cac476) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,address,uint256)`. + mstore(0x00, 0x88f6e4b2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,address,string)`. + mstore(0x00, 0x6cde40b8) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,bool,address)`. + mstore(0x00, 0x9a816a83) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,bool,bool)`. + mstore(0x00, 0xab085ae6) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,bool,uint256)`. + mstore(0x00, 0xeb7f6fd2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,bool,string)`. + mstore(0x00, 0xa5b4fc99) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,uint256,address)`. + mstore(0x00, 0xfa8185af) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,uint256,bool)`. + mstore(0x00, 0xc598d185) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + assembly { + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + // Selector of `log(uint256,uint256,uint256,uint256)`. + mstore(0x00, 0x193fb800) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + } + _sendLogPayload(0x1c, 0x84); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + } + } + + function log(uint256 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,uint256,string)`. + mstore(0x00, 0x59cfcbe3) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0x80) + writeString(0xa0, p3) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,string,address)`. + mstore(0x00, 0x42d21db7) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,string,bool)`. + mstore(0x00, 0x7af6ab25) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,uint256,string,uint256)`. + mstore(0x00, 0x5da297eb) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, p3) + writeString(0xa0, p2) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,uint256,string,string)`. + mstore(0x00, 0x27d8afd2) + mstore(0x20, p0) + mstore(0x40, p1) + mstore(0x60, 0x80) + mstore(0x80, 0xc0) + writeString(0xa0, p2) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,address,address)`. + mstore(0x00, 0x6168ed61) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,address,bool)`. + mstore(0x00, 0x90c30a56) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,address,uint256)`. + mstore(0x00, 0xe8d3018d) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,address,string)`. + mstore(0x00, 0x9c3adfa1) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,bool,address)`. + mstore(0x00, 0xae2ec581) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,bool,bool)`. + mstore(0x00, 0xba535d9c) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,bool,uint256)`. + mstore(0x00, 0xcf009880) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,bool,string)`. + mstore(0x00, 0xd2d423cd) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,uint256,address)`. + mstore(0x00, 0x3b2279b4) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,uint256,bool)`. + mstore(0x00, 0x691a8f74) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(uint256,string,uint256,uint256)`. + mstore(0x00, 0x82c25b74) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p1) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(uint256 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,uint256,string)`. + mstore(0x00, 0xb7b914ca) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p1) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,string,address)`. + mstore(0x00, 0xd583c602) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,string,bool)`. + mstore(0x00, 0xb3a6b6bd) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(uint256,string,string,uint256)`. + mstore(0x00, 0xb028c9bd) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p1) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(uint256 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(uint256,string,string,string)`. + mstore(0x00, 0x21ad0683) + mstore(0x20, p0) + mstore(0x40, 0x80) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p1) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, address p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,address,address)`. + mstore(0x00, 0xed8f28f6) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,address,bool)`. + mstore(0x00, 0xb59dbd60) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,address,uint256)`. + mstore(0x00, 0x8ef3f399) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,address,string)`. + mstore(0x00, 0x800a1c67) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,bool,address)`. + mstore(0x00, 0x223603bd) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,bool,bool)`. + mstore(0x00, 0x79884c2b) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,bool,uint256)`. + mstore(0x00, 0x3e9f866a) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,bool,string)`. + mstore(0x00, 0x0454c079) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,uint256,address)`. + mstore(0x00, 0x63fb8bc5) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,uint256,bool)`. + mstore(0x00, 0xfc4845f0) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,address,uint256,uint256)`. + mstore(0x00, 0xf8f51b1e) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, address p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,uint256,string)`. + mstore(0x00, 0x5a477632) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,string,address)`. + mstore(0x00, 0xaabc9a31) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,string,bool)`. + mstore(0x00, 0x5f15d28c) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,address,string,uint256)`. + mstore(0x00, 0x91d1112e) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, address p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,address,string,string)`. + mstore(0x00, 0x245986f2) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bool p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,address,address)`. + mstore(0x00, 0x33e9dd1d) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,address,bool)`. + mstore(0x00, 0x958c28c6) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,address,uint256)`. + mstore(0x00, 0x5d08bb05) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,address,string)`. + mstore(0x00, 0x2d8e33a4) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,bool,address)`. + mstore(0x00, 0x7190a529) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,bool,bool)`. + mstore(0x00, 0x895af8c5) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,bool,uint256)`. + mstore(0x00, 0x8e3f78a9) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,bool,string)`. + mstore(0x00, 0x9d22d5dd) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,uint256,address)`. + mstore(0x00, 0x935e09bf) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,uint256,bool)`. + mstore(0x00, 0x8af7cf8a) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,bool,uint256,uint256)`. + mstore(0x00, 0x64b5bb67) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, bool p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,uint256,string)`. + mstore(0x00, 0x742d6ee7) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,string,address)`. + mstore(0x00, 0xe0625b29) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,string,bool)`. + mstore(0x00, 0x3f8a701d) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,bool,string,uint256)`. + mstore(0x00, 0x24f91465) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,bool,string,string)`. + mstore(0x00, 0xa826caeb) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, uint256 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,address,address)`. + mstore(0x00, 0x5ea2b7ae) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,address,bool)`. + mstore(0x00, 0x82112a42) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,address,uint256)`. + mstore(0x00, 0x4f04fdc6) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,address,string)`. + mstore(0x00, 0x9ffb2f93) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,bool,address)`. + mstore(0x00, 0xe0e95b98) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,bool,bool)`. + mstore(0x00, 0x354c36d6) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,bool,uint256)`. + mstore(0x00, 0xe41b6f6f) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,bool,string)`. + mstore(0x00, 0xabf73a98) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,uint256,address)`. + mstore(0x00, 0xe21de278) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,uint256,bool)`. + mstore(0x00, 0x7626db92) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + // Selector of `log(string,uint256,uint256,uint256)`. + mstore(0x00, 0xa7a87853) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + } + _sendLogPayload(0x1c, 0xc4); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + } + } + + function log(bytes32 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,uint256,string)`. + mstore(0x00, 0x854b3496) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, p2) + mstore(0x80, 0xc0) + writeString(0xa0, p0) + writeString(0xe0, p3) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,string,address)`. + mstore(0x00, 0x7c4632a4) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,string,bool)`. + mstore(0x00, 0x7d24491d) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,uint256,string,uint256)`. + mstore(0x00, 0xc67ea9d1) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p2) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,uint256,string,string)`. + mstore(0x00, 0x5ab84e1f) + mstore(0x20, 0x80) + mstore(0x40, p1) + mstore(0x60, 0xc0) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p2) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, address p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,address,address)`. + mstore(0x00, 0x439c7bef) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, address p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,address,bool)`. + mstore(0x00, 0x5ccd4e37) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, address p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,address,uint256)`. + mstore(0x00, 0x7cc3c607) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, address p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,address,string)`. + mstore(0x00, 0xeb1bff80) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, bool p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,bool,address)`. + mstore(0x00, 0xc371c7db) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, bool p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,bool,bool)`. + mstore(0x00, 0x40785869) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, bool p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,bool,uint256)`. + mstore(0x00, 0xd6aefad2) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,bool,string)`. + mstore(0x00, 0x5e84b0ea) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, uint256 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,uint256,address)`. + mstore(0x00, 0x1023f7b2) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, uint256 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,uint256,bool)`. + mstore(0x00, 0xc3a8a654) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + // Selector of `log(string,string,uint256,uint256)`. + mstore(0x00, 0xf45d7d2c) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + } + _sendLogPayload(0x1c, 0x104); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + } + } + + function log(bytes32 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,uint256,string)`. + mstore(0x00, 0x5d1a971a) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, p2) + mstore(0x80, 0x100) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p3) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, bytes32 p2, address p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,string,address)`. + mstore(0x00, 0x6d572f44) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, 0x100) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p2) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,string,bool)`. + mstore(0x00, 0x2c1754ed) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, 0x100) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p2) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + // Selector of `log(string,string,string,uint256)`. + mstore(0x00, 0x8eafb02b) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, 0x100) + mstore(0x80, p3) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p2) + } + _sendLogPayload(0x1c, 0x144); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + } + } + + function log(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { + bytes32 m0; + bytes32 m1; + bytes32 m2; + bytes32 m3; + bytes32 m4; + bytes32 m5; + bytes32 m6; + bytes32 m7; + bytes32 m8; + bytes32 m9; + bytes32 m10; + bytes32 m11; + bytes32 m12; + assembly { + function writeString(pos, w) { + let length := 0 + for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } + mstore(pos, length) + let shift := sub(256, shl(3, length)) + mstore(add(pos, 0x20), shl(shift, shr(shift, w))) + } + m0 := mload(0x00) + m1 := mload(0x20) + m2 := mload(0x40) + m3 := mload(0x60) + m4 := mload(0x80) + m5 := mload(0xa0) + m6 := mload(0xc0) + m7 := mload(0xe0) + m8 := mload(0x100) + m9 := mload(0x120) + m10 := mload(0x140) + m11 := mload(0x160) + m12 := mload(0x180) + // Selector of `log(string,string,string,string)`. + mstore(0x00, 0xde68f20a) + mstore(0x20, 0x80) + mstore(0x40, 0xc0) + mstore(0x60, 0x100) + mstore(0x80, 0x140) + writeString(0xa0, p0) + writeString(0xe0, p1) + writeString(0x120, p2) + writeString(0x160, p3) + } + _sendLogPayload(0x1c, 0x184); + assembly { + mstore(0x00, m0) + mstore(0x20, m1) + mstore(0x40, m2) + mstore(0x60, m3) + mstore(0x80, m4) + mstore(0xa0, m5) + mstore(0xc0, m6) + mstore(0xe0, m7) + mstore(0x100, m8) + mstore(0x120, m9) + mstore(0x140, m10) + mstore(0x160, m11) + mstore(0x180, m12) + } + } +} diff --git a/v2/lib/forge-std/test/StdAssertions.t.sol b/v2/lib/forge-std/test/StdAssertions.t.sol new file mode 100644 index 00000000..ea794687 --- /dev/null +++ b/v2/lib/forge-std/test/StdAssertions.t.sol @@ -0,0 +1,145 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/StdAssertions.sol"; +import {Vm} from "../src/Vm.sol"; + +interface VmInternal is Vm { + function _expectCheatcodeRevert(bytes memory message) external; +} + +contract StdAssertionsTest is StdAssertions { + string constant errorMessage = "User provided message"; + uint256 constant maxDecimals = 77; + + bool constant SHOULD_REVERT = true; + bool constant SHOULD_RETURN = false; + + bool constant STRICT_REVERT_DATA = true; + bool constant NON_STRICT_REVERT_DATA = false; + + VmInternal constant vm = VmInternal(address(uint160(uint256(keccak256("hevm cheat code"))))); + + function testFuzz_AssertEqCall_Return_Pass( + bytes memory callDataA, + bytes memory callDataB, + bytes memory returnData, + bool strictRevertData + ) external { + address targetA = address(new TestMockCall(returnData, SHOULD_RETURN)); + address targetB = address(new TestMockCall(returnData, SHOULD_RETURN)); + + assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); + } + + function testFuzz_RevertWhenCalled_AssertEqCall_Return_Fail( + bytes memory callDataA, + bytes memory callDataB, + bytes memory returnDataA, + bytes memory returnDataB, + bool strictRevertData + ) external { + vm.assume(keccak256(returnDataA) != keccak256(returnDataB)); + + address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); + address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN)); + + vm._expectCheatcodeRevert( + bytes( + string.concat( + "Call return data does not match: ", vm.toString(returnDataA), " != ", vm.toString(returnDataB) + ) + ) + ); + assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); + } + + function testFuzz_AssertEqCall_Revert_Pass( + bytes memory callDataA, + bytes memory callDataB, + bytes memory revertDataA, + bytes memory revertDataB + ) external { + address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); + address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); + + assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA); + } + + function testFuzz_RevertWhenCalled_AssertEqCall_Revert_Fail( + bytes memory callDataA, + bytes memory callDataB, + bytes memory revertDataA, + bytes memory revertDataB + ) external { + vm.assume(keccak256(revertDataA) != keccak256(revertDataB)); + + address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); + address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); + + vm._expectCheatcodeRevert( + bytes( + string.concat( + "Call revert data does not match: ", vm.toString(revertDataA), " != ", vm.toString(revertDataB) + ) + ) + ); + assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA); + } + + function testFuzz_RevertWhenCalled_AssertEqCall_Fail( + bytes memory callDataA, + bytes memory callDataB, + bytes memory returnDataA, + bytes memory returnDataB, + bool strictRevertData + ) external { + address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); + address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT)); + + vm.expectRevert(bytes("assertion failed")); + this.assertEqCallExternal(targetA, callDataA, targetB, callDataB, strictRevertData); + + vm.expectRevert(bytes("assertion failed")); + this.assertEqCallExternal(targetB, callDataB, targetA, callDataA, strictRevertData); + } + + // Helper function to test outcome of assertEqCall via `expect` cheatcodes + function assertEqCallExternal( + address targetA, + bytes memory callDataA, + address targetB, + bytes memory callDataB, + bool strictRevertData + ) public { + assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); + } + + function testFailFail() public { + fail(); + } +} + +contract TestMockCall { + bytes returnData; + bool shouldRevert; + + constructor(bytes memory returnData_, bool shouldRevert_) { + returnData = returnData_; + shouldRevert = shouldRevert_; + } + + fallback() external payable { + bytes memory returnData_ = returnData; + + if (shouldRevert) { + assembly { + revert(add(returnData_, 0x20), mload(returnData_)) + } + } else { + assembly { + return(add(returnData_, 0x20), mload(returnData_)) + } + } + } +} diff --git a/v2/lib/forge-std/test/StdChains.t.sol b/v2/lib/forge-std/test/StdChains.t.sol new file mode 100644 index 00000000..09059c23 --- /dev/null +++ b/v2/lib/forge-std/test/StdChains.t.sol @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/Test.sol"; + +contract StdChainsMock is Test { + function exposed_getChain(string memory chainAlias) public returns (Chain memory) { + return getChain(chainAlias); + } + + function exposed_getChain(uint256 chainId) public returns (Chain memory) { + return getChain(chainId); + } + + function exposed_setChain(string memory chainAlias, ChainData memory chainData) public { + setChain(chainAlias, chainData); + } + + function exposed_setFallbackToDefaultRpcUrls(bool useDefault) public { + setFallbackToDefaultRpcUrls(useDefault); + } +} + +contract StdChainsTest is Test { + function test_ChainRpcInitialization() public { + // RPCs specified in `foundry.toml` should be updated. + assertEq(getChain(1).rpcUrl, "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX"); + assertEq(getChain("optimism_sepolia").rpcUrl, "https://sepolia.optimism.io/"); + assertEq(getChain("arbitrum_one_sepolia").rpcUrl, "https://sepolia-rollup.arbitrum.io/rpc/"); + + // Environment variables should be the next fallback + assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc"); + vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride"); + assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride"); + vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc"); + + // Cannot override RPCs defined in `foundry.toml` + vm.setEnv("MAINNET_RPC_URL", "myoverride2"); + assertEq(getChain("mainnet").rpcUrl, "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX"); + + // Other RPCs should remain unchanged. + assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545"); + assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001"); + } + + // Named with a leading underscore to clarify this is not intended to be run as a normal test, + // and is intended to be used in the below `test_Rpcs` test. + function _testRpc(string memory rpcAlias) internal { + string memory rpcUrl = getChain(rpcAlias).rpcUrl; + vm.createSelectFork(rpcUrl); + } + + // Ensure we can connect to the default RPC URL for each chain. + // Currently commented out since this is slow and public RPCs are flaky, often resulting in failing CI. + // function test_Rpcs() public { + // _testRpc("mainnet"); + // _testRpc("sepolia"); + // _testRpc("holesky"); + // _testRpc("optimism"); + // _testRpc("optimism_sepolia"); + // _testRpc("arbitrum_one"); + // _testRpc("arbitrum_one_sepolia"); + // _testRpc("arbitrum_nova"); + // _testRpc("polygon"); + // _testRpc("polygon_amoy"); + // _testRpc("avalanche"); + // _testRpc("avalanche_fuji"); + // _testRpc("bnb_smart_chain"); + // _testRpc("bnb_smart_chain_testnet"); + // _testRpc("gnosis_chain"); + // _testRpc("moonbeam"); + // _testRpc("moonriver"); + // _testRpc("moonbase"); + // _testRpc("base_sepolia"); + // _testRpc("base"); + // _testRpc("blast_sepolia"); + // _testRpc("blast"); + // _testRpc("fantom_opera"); + // _testRpc("fantom_opera_testnet"); + // _testRpc("fraxtal"); + // _testRpc("fraxtal_testnet"); + // _testRpc("berachain_bartio_testnet"); + // } + + function test_ChainNoDefault() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found."); + stdChainsMock.exposed_getChain("does_not_exist"); + } + + function test_SetChainFirstFails() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\"."); + stdChainsMock.exposed_setChain("anvil2", ChainData("Anvil", 31337, "URL")); + } + + function test_ChainBubbleUp() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + stdChainsMock.exposed_setChain("needs_undefined_env_var", ChainData("", 123456789, "")); + vm.expectRevert( + "Failed to resolve env var `UNDEFINED_RPC_URL_PLACEHOLDER` in `${UNDEFINED_RPC_URL_PLACEHOLDER}`: environment variable not found" + ); + stdChainsMock.exposed_getChain("needs_undefined_env_var"); + } + + function test_CannotSetChain_ChainIdExists() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + stdChainsMock.exposed_setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); + + vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".'); + + stdChainsMock.exposed_setChain("another_custom_chain", ChainData("", 123456789, "")); + } + + function test_SetChain() public { + setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); + Chain memory customChain = getChain("custom_chain"); + assertEq(customChain.name, "Custom Chain"); + assertEq(customChain.chainId, 123456789); + assertEq(customChain.chainAlias, "custom_chain"); + assertEq(customChain.rpcUrl, "https://custom.chain/"); + Chain memory chainById = getChain(123456789); + assertEq(chainById.name, customChain.name); + assertEq(chainById.chainId, customChain.chainId); + assertEq(chainById.chainAlias, customChain.chainAlias); + assertEq(chainById.rpcUrl, customChain.rpcUrl); + customChain.name = "Another Custom Chain"; + customChain.chainId = 987654321; + setChain("another_custom_chain", customChain); + Chain memory anotherCustomChain = getChain("another_custom_chain"); + assertEq(anotherCustomChain.name, "Another Custom Chain"); + assertEq(anotherCustomChain.chainId, 987654321); + assertEq(anotherCustomChain.chainAlias, "another_custom_chain"); + assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/"); + // Verify the first chain data was not overwritten + chainById = getChain(123456789); + assertEq(chainById.name, "Custom Chain"); + assertEq(chainById.chainId, 123456789); + } + + function test_SetNoEmptyAlias() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string."); + stdChainsMock.exposed_setChain("", ChainData("", 123456789, "")); + } + + function test_SetNoChainId0() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0."); + stdChainsMock.exposed_setChain("alias", ChainData("", 0, "")); + } + + function test_GetNoChainId0() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0."); + stdChainsMock.exposed_getChain(0); + } + + function test_GetNoEmptyAlias() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string."); + stdChainsMock.exposed_getChain(""); + } + + function test_ChainIdNotFound() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found."); + stdChainsMock.exposed_getChain("no_such_alias"); + } + + function test_ChainAliasNotFound() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found."); + + stdChainsMock.exposed_getChain(321); + } + + function test_SetChain_ExistingOne() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); + assertEq(getChain(123456789).chainId, 123456789); + + setChain("custom_chain", ChainData("Modified Chain", 999999999, "https://modified.chain/")); + vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found."); + stdChainsMock.exposed_getChain(123456789); + + Chain memory modifiedChain = getChain(999999999); + assertEq(modifiedChain.name, "Modified Chain"); + assertEq(modifiedChain.chainId, 999999999); + assertEq(modifiedChain.rpcUrl, "https://modified.chain/"); + } + + function test_DontUseDefaultRpcUrl() public { + // We deploy a mock to properly test the revert. + StdChainsMock stdChainsMock = new StdChainsMock(); + + // Should error if default RPCs flag is set to false. + stdChainsMock.exposed_setFallbackToDefaultRpcUrls(false); + vm.expectRevert(); + stdChainsMock.exposed_getChain(31337); + vm.expectRevert(); + stdChainsMock.exposed_getChain("sepolia"); + } +} diff --git a/v2/lib/forge-std/test/StdCheats.t.sol b/v2/lib/forge-std/test/StdCheats.t.sol new file mode 100644 index 00000000..7bac4286 --- /dev/null +++ b/v2/lib/forge-std/test/StdCheats.t.sol @@ -0,0 +1,618 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/StdCheats.sol"; +import "../src/Test.sol"; +import "../src/StdJson.sol"; +import "../src/StdToml.sol"; +import "../src/interfaces/IERC20.sol"; + +contract StdCheatsTest is Test { + Bar test; + + using stdJson for string; + + function setUp() public { + test = new Bar(); + } + + function test_Skip() public { + vm.warp(100); + skip(25); + assertEq(block.timestamp, 125); + } + + function test_Rewind() public { + vm.warp(100); + rewind(25); + assertEq(block.timestamp, 75); + } + + function test_Hoax() public { + hoax(address(1337)); + test.bar{value: 100}(address(1337)); + } + + function test_HoaxOrigin() public { + hoax(address(1337), address(1337)); + test.origin{value: 100}(address(1337)); + } + + function test_HoaxDifferentAddresses() public { + hoax(address(1337), address(7331)); + test.origin{value: 100}(address(1337), address(7331)); + } + + function test_StartHoax() public { + startHoax(address(1337)); + test.bar{value: 100}(address(1337)); + test.bar{value: 100}(address(1337)); + vm.stopPrank(); + test.bar(address(this)); + } + + function test_StartHoaxOrigin() public { + startHoax(address(1337), address(1337)); + test.origin{value: 100}(address(1337)); + test.origin{value: 100}(address(1337)); + vm.stopPrank(); + test.bar(address(this)); + } + + function test_ChangePrankMsgSender() public { + vm.startPrank(address(1337)); + test.bar(address(1337)); + changePrank(address(0xdead)); + test.bar(address(0xdead)); + changePrank(address(1337)); + test.bar(address(1337)); + vm.stopPrank(); + } + + function test_ChangePrankMsgSenderAndTxOrigin() public { + vm.startPrank(address(1337), address(1338)); + test.origin(address(1337), address(1338)); + changePrank(address(0xdead), address(0xbeef)); + test.origin(address(0xdead), address(0xbeef)); + changePrank(address(1337), address(1338)); + test.origin(address(1337), address(1338)); + vm.stopPrank(); + } + + function test_MakeAccountEquivalence() public { + Account memory account = makeAccount("1337"); + (address addr, uint256 key) = makeAddrAndKey("1337"); + assertEq(account.addr, addr); + assertEq(account.key, key); + } + + function test_MakeAddrEquivalence() public { + (address addr,) = makeAddrAndKey("1337"); + assertEq(makeAddr("1337"), addr); + } + + function test_MakeAddrSigning() public { + (address addr, uint256 key) = makeAddrAndKey("1337"); + bytes32 hash = keccak256("some_message"); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash); + assertEq(ecrecover(hash, v, r, s), addr); + } + + function test_Deal() public { + deal(address(this), 1 ether); + assertEq(address(this).balance, 1 ether); + } + + function test_DealToken() public { + Bar barToken = new Bar(); + address bar = address(barToken); + deal(bar, address(this), 10000e18); + assertEq(barToken.balanceOf(address(this)), 10000e18); + } + + function test_DealTokenAdjustTotalSupply() public { + Bar barToken = new Bar(); + address bar = address(barToken); + deal(bar, address(this), 10000e18, true); + assertEq(barToken.balanceOf(address(this)), 10000e18); + assertEq(barToken.totalSupply(), 20000e18); + deal(bar, address(this), 0, true); + assertEq(barToken.balanceOf(address(this)), 0); + assertEq(barToken.totalSupply(), 10000e18); + } + + function test_DealERC1155Token() public { + BarERC1155 barToken = new BarERC1155(); + address bar = address(barToken); + dealERC1155(bar, address(this), 0, 10000e18, false); + assertEq(barToken.balanceOf(address(this), 0), 10000e18); + } + + function test_DealERC1155TokenAdjustTotalSupply() public { + BarERC1155 barToken = new BarERC1155(); + address bar = address(barToken); + dealERC1155(bar, address(this), 0, 10000e18, true); + assertEq(barToken.balanceOf(address(this), 0), 10000e18); + assertEq(barToken.totalSupply(0), 20000e18); + dealERC1155(bar, address(this), 0, 0, true); + assertEq(barToken.balanceOf(address(this), 0), 0); + assertEq(barToken.totalSupply(0), 10000e18); + } + + function test_DealERC721Token() public { + BarERC721 barToken = new BarERC721(); + address bar = address(barToken); + dealERC721(bar, address(2), 1); + assertEq(barToken.balanceOf(address(2)), 1); + assertEq(barToken.balanceOf(address(1)), 0); + dealERC721(bar, address(1), 2); + assertEq(barToken.balanceOf(address(1)), 1); + assertEq(barToken.balanceOf(bar), 1); + } + + function test_DeployCode() public { + address deployed = deployCode("StdCheats.t.sol:Bar", bytes("")); + assertEq(string(getCode(deployed)), string(getCode(address(test)))); + } + + function test_DestroyAccount() public { + // deploy something to destroy it + BarERC721 barToken = new BarERC721(); + address bar = address(barToken); + vm.setNonce(bar, 10); + deal(bar, 100); + + uint256 prevThisBalance = address(this).balance; + uint256 size; + assembly { + size := extcodesize(bar) + } + + assertGt(size, 0); + assertEq(bar.balance, 100); + assertEq(vm.getNonce(bar), 10); + + destroyAccount(bar, address(this)); + assembly { + size := extcodesize(bar) + } + assertEq(address(this).balance, prevThisBalance + 100); + assertEq(vm.getNonce(bar), 0); + assertEq(size, 0); + assertEq(bar.balance, 0); + } + + function test_DeployCodeNoArgs() public { + address deployed = deployCode("StdCheats.t.sol:Bar"); + assertEq(string(getCode(deployed)), string(getCode(address(test)))); + } + + function test_DeployCodeVal() public { + address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether); + assertEq(string(getCode(deployed)), string(getCode(address(test)))); + assertEq(deployed.balance, 1 ether); + } + + function test_DeployCodeValNoArgs() public { + address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether); + assertEq(string(getCode(deployed)), string(getCode(address(test)))); + assertEq(deployed.balance, 1 ether); + } + + // We need this so we can call "this.deployCode" rather than "deployCode" directly + function deployCodeHelper(string memory what) external { + deployCode(what); + } + + function test_DeployCodeFail() public { + vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed.")); + this.deployCodeHelper("StdCheats.t.sol:RevertingContract"); + } + + function getCode(address who) internal view returns (bytes memory o_code) { + /// @solidity memory-safe-assembly + assembly { + // retrieve the size of the code, this needs assembly + let size := extcodesize(who) + // allocate output byte array - this could also be done without assembly + // by using o_code = new bytes(size) + o_code := mload(0x40) + // new "memory end" including padding + mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) + // store length in memory + mstore(o_code, size) + // actually retrieve the code, this needs assembly + extcodecopy(who, add(o_code, 0x20), 0, size) + } + } + + function test_DeriveRememberKey() public { + string memory mnemonic = "test test test test test test test test test test test junk"; + + (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0); + assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); + assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80); + } + + function test_BytesToUint() public pure { + assertEq(3, bytesToUint_test(hex"03")); + assertEq(2, bytesToUint_test(hex"02")); + assertEq(255, bytesToUint_test(hex"ff")); + assertEq(29625, bytesToUint_test(hex"73b9")); + } + + function test_ParseJsonTxDetail() public view { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); + string memory json = vm.readFile(path); + bytes memory transactionDetails = json.parseRaw(".transactions[0].tx"); + RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail)); + Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail); + assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); + assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512); + assertEq( + txDetail.data, + hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004" + ); + assertEq(txDetail.nonce, 3); + assertEq(txDetail.txType, 2); + assertEq(txDetail.gas, 29625); + assertEq(txDetail.value, 0); + } + + function test_ReadEIP1559Transaction() public view { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); + uint256 index = 0; + Tx1559 memory transaction = readTx1559(path, index); + transaction; + } + + function test_ReadEIP1559Transactions() public view { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); + Tx1559[] memory transactions = readTx1559s(path); + transactions; + } + + function test_ReadReceipt() public view { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); + uint256 index = 5; + Receipt memory receipt = readReceipt(path, index); + assertEq( + receipt.logsBloom, + hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100" + ); + } + + function test_ReadReceipts() public view { + string memory root = vm.projectRoot(); + string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); + Receipt[] memory receipts = readReceipts(path); + receipts; + } + + function test_GasMeteringModifier() public { + uint256 gas_start_normal = gasleft(); + addInLoop(); + uint256 gas_used_normal = gas_start_normal - gasleft(); + + uint256 gas_start_single = gasleft(); + addInLoopNoGas(); + uint256 gas_used_single = gas_start_single - gasleft(); + + uint256 gas_start_double = gasleft(); + addInLoopNoGasNoGas(); + uint256 gas_used_double = gas_start_double - gasleft(); + + assertTrue(gas_used_double + gas_used_single < gas_used_normal); + } + + function addInLoop() internal pure returns (uint256) { + uint256 b; + for (uint256 i; i < 10000; i++) { + b += i; + } + return b; + } + + function addInLoopNoGas() internal noGasMetering returns (uint256) { + return addInLoop(); + } + + function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) { + return addInLoopNoGas(); + } + + function bytesToUint_test(bytes memory b) private pure returns (uint256) { + uint256 number; + for (uint256 i = 0; i < b.length; i++) { + number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1)))); + } + return number; + } + + function testFuzz_AssumeAddressIsNot(address addr) external { + // skip over Payable and NonPayable enums + for (uint8 i = 2; i < uint8(type(AddressType).max); i++) { + assumeAddressIsNot(addr, AddressType(i)); + } + assertTrue(addr != address(0)); + assertTrue(addr < address(1) || addr > address(9)); + assertTrue(addr != address(vm) || addr != 0x000000000000000000636F6e736F6c652e6c6f67); + } + + function test_AssumePayable() external { + // We deploy a mock version so we can properly test the revert. + StdCheatsMock stdCheatsMock = new StdCheatsMock(); + + // all should revert since these addresses are not payable + + // VM address + vm.expectRevert(); + stdCheatsMock.exposed_assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); + + // Console address + vm.expectRevert(); + stdCheatsMock.exposed_assumePayable(0x000000000000000000636F6e736F6c652e6c6f67); + + // Create2Deployer + vm.expectRevert(); + stdCheatsMock.exposed_assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); + + // all should pass since these addresses are payable + + // vitalik.eth + stdCheatsMock.exposed_assumePayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); + + // mock payable contract + MockContractPayable cp = new MockContractPayable(); + stdCheatsMock.exposed_assumePayable(address(cp)); + } + + function test_AssumeNotPayable() external { + // We deploy a mock version so we can properly test the revert. + StdCheatsMock stdCheatsMock = new StdCheatsMock(); + + // all should pass since these addresses are not payable + + // VM address + stdCheatsMock.exposed_assumeNotPayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); + + // Console address + stdCheatsMock.exposed_assumeNotPayable(0x000000000000000000636F6e736F6c652e6c6f67); + + // Create2Deployer + stdCheatsMock.exposed_assumeNotPayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); + + // all should revert since these addresses are payable + + // vitalik.eth + vm.expectRevert(); + stdCheatsMock.exposed_assumeNotPayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); + + // mock payable contract + MockContractPayable cp = new MockContractPayable(); + vm.expectRevert(); + stdCheatsMock.exposed_assumeNotPayable(address(cp)); + } + + function testFuzz_AssumeNotPrecompile(address addr) external { + assumeNotPrecompile(addr, getChain("optimism_sepolia").chainId); + assertTrue( + addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000)) + || addr > address(0x4200000000000000000000000000000000000800) + ); + } + + function testFuzz_AssumeNotForgeAddress(address addr) external pure { + assumeNotForgeAddress(addr); + assertTrue( + addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 + && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C + ); + } + + function test_CannotDeployCodeTo() external { + vm.expectRevert("StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); + this._revertDeployCodeTo(); + } + + function _revertDeployCodeTo() external { + deployCodeTo("StdCheats.t.sol:RevertingContract", address(0)); + } + + function test_DeployCodeTo() external { + address arbitraryAddress = makeAddr("arbitraryAddress"); + + deployCodeTo( + "StdCheats.t.sol:MockContractWithConstructorArgs", + abi.encode(uint256(6), true, bytes20(arbitraryAddress)), + 1 ether, + arbitraryAddress + ); + + MockContractWithConstructorArgs ct = MockContractWithConstructorArgs(arbitraryAddress); + + assertEq(arbitraryAddress.balance, 1 ether); + assertEq(ct.x(), 6); + assertTrue(ct.y()); + assertEq(ct.z(), bytes20(arbitraryAddress)); + } +} + +contract StdCheatsMock is StdCheats { + function exposed_assumePayable(address addr) external { + assumePayable(addr); + } + + function exposed_assumeNotPayable(address addr) external { + assumeNotPayable(addr); + } + + // We deploy a mock version so we can properly test expected reverts. + function exposed_assumeNotBlacklisted(address token, address addr) external view { + return assumeNotBlacklisted(token, addr); + } +} + +contract StdCheatsForkTest is Test { + address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; + address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; + address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD; + address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; + address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A; + + function setUp() public { + // All tests of the `assumeNotBlacklisted` method are fork tests using live contracts. + vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); + } + + function test_CannotAssumeNoBlacklisted_EOA() external { + // We deploy a mock version so we can properly test the revert. + StdCheatsMock stdCheatsMock = new StdCheatsMock(); + address eoa = vm.addr({privateKey: 1}); + vm.expectRevert("StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); + stdCheatsMock.exposed_assumeNotBlacklisted(eoa, address(0)); + } + + function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist(address addr) external view { + assumeNotBlacklisted(SHIB, addr); + assertTrue(true); + } + + function test_AssumeNoBlacklisted_USDC() external { + // We deploy a mock version so we can properly test the revert. + StdCheatsMock stdCheatsMock = new StdCheatsMock(); + vm.expectRevert(); + stdCheatsMock.exposed_assumeNotBlacklisted(USDC, USDC_BLACKLISTED_USER); + } + + function testFuzz_AssumeNotBlacklisted_USDC(address addr) external view { + assumeNotBlacklisted(USDC, addr); + assertFalse(USDCLike(USDC).isBlacklisted(addr)); + } + + function test_AssumeNoBlacklisted_USDT() external { + // We deploy a mock version so we can properly test the revert. + StdCheatsMock stdCheatsMock = new StdCheatsMock(); + vm.expectRevert(); + stdCheatsMock.exposed_assumeNotBlacklisted(USDT, USDT_BLACKLISTED_USER); + } + + function testFuzz_AssumeNotBlacklisted_USDT(address addr) external view { + assumeNotBlacklisted(USDT, addr); + assertFalse(USDTLike(USDT).isBlackListed(addr)); + } + + function test_dealUSDC() external { + // roll fork to the point when USDC contract updated to store balance in packed slots + vm.rollFork(19279215); + + uint256 balance = 100e6; + deal(USDC, address(this), balance); + assertEq(IERC20(USDC).balanceOf(address(this)), balance); + } +} + +contract Bar { + constructor() payable { + /// `DEAL` STDCHEAT + totalSupply = 10000e18; + balanceOf[address(this)] = totalSupply; + } + + /// `HOAX` and `CHANGEPRANK` STDCHEATS + function bar(address expectedSender) public payable { + require(msg.sender == expectedSender, "!prank"); + } + + function origin(address expectedSender) public payable { + require(msg.sender == expectedSender, "!prank"); + require(tx.origin == expectedSender, "!prank"); + } + + function origin(address expectedSender, address expectedOrigin) public payable { + require(msg.sender == expectedSender, "!prank"); + require(tx.origin == expectedOrigin, "!prank"); + } + + /// `DEAL` STDCHEAT + mapping(address => uint256) public balanceOf; + uint256 public totalSupply; +} + +contract BarERC1155 { + constructor() payable { + /// `DEALERC1155` STDCHEAT + _totalSupply[0] = 10000e18; + _balances[0][address(this)] = _totalSupply[0]; + } + + function balanceOf(address account, uint256 id) public view virtual returns (uint256) { + return _balances[id][account]; + } + + function totalSupply(uint256 id) public view virtual returns (uint256) { + return _totalSupply[id]; + } + + /// `DEALERC1155` STDCHEAT + mapping(uint256 => mapping(address => uint256)) private _balances; + mapping(uint256 => uint256) private _totalSupply; +} + +contract BarERC721 { + constructor() payable { + /// `DEALERC721` STDCHEAT + _owners[1] = address(1); + _balances[address(1)] = 1; + _owners[2] = address(this); + _owners[3] = address(this); + _balances[address(this)] = 2; + } + + function balanceOf(address owner) public view virtual returns (uint256) { + return _balances[owner]; + } + + function ownerOf(uint256 tokenId) public view virtual returns (address) { + address owner = _owners[tokenId]; + return owner; + } + + mapping(uint256 => address) private _owners; + mapping(address => uint256) private _balances; +} + +interface USDCLike { + function isBlacklisted(address) external view returns (bool); +} + +interface USDTLike { + function isBlackListed(address) external view returns (bool); +} + +contract RevertingContract { + constructor() { + revert(); + } +} + +contract MockContractWithConstructorArgs { + uint256 public immutable x; + bool public y; + bytes20 public z; + + constructor(uint256 _x, bool _y, bytes20 _z) payable { + x = _x; + y = _y; + z = _z; + } +} + +contract MockContractPayable { + receive() external payable {} +} diff --git a/v2/lib/forge-std/test/StdError.t.sol b/v2/lib/forge-std/test/StdError.t.sol new file mode 100644 index 00000000..a306eaa7 --- /dev/null +++ b/v2/lib/forge-std/test/StdError.t.sol @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.0 <0.9.0; + +import "../src/StdError.sol"; +import "../src/Test.sol"; + +contract StdErrorsTest is Test { + ErrorsTest test; + + function setUp() public { + test = new ErrorsTest(); + } + + function test_ExpectAssertion() public { + vm.expectRevert(stdError.assertionError); + test.assertionError(); + } + + function test_ExpectArithmetic() public { + vm.expectRevert(stdError.arithmeticError); + test.arithmeticError(10); + } + + function test_ExpectDiv() public { + vm.expectRevert(stdError.divisionError); + test.divError(0); + } + + function test_ExpectMod() public { + vm.expectRevert(stdError.divisionError); + test.modError(0); + } + + function test_ExpectEnum() public { + vm.expectRevert(stdError.enumConversionError); + test.enumConversion(1); + } + + function test_ExpectEncodeStg() public { + vm.expectRevert(stdError.encodeStorageError); + test.encodeStgError(); + } + + function test_ExpectPop() public { + vm.expectRevert(stdError.popError); + test.pop(); + } + + function test_ExpectOOB() public { + vm.expectRevert(stdError.indexOOBError); + test.indexOOBError(1); + } + + function test_ExpectMem() public { + vm.expectRevert(stdError.memOverflowError); + test.mem(); + } + + function test_ExpectIntern() public { + vm.expectRevert(stdError.zeroVarError); + test.intern(); + } +} + +contract ErrorsTest { + enum T { + T1 + } + + uint256[] public someArr; + bytes someBytes; + + function assertionError() public pure { + assert(false); + } + + function arithmeticError(uint256 a) public pure { + a -= 100; + } + + function divError(uint256 a) public pure { + 100 / a; + } + + function modError(uint256 a) public pure { + 100 % a; + } + + function enumConversion(uint256 a) public pure { + T(a); + } + + function encodeStgError() public { + /// @solidity memory-safe-assembly + assembly { + sstore(someBytes.slot, 1) + } + keccak256(someBytes); + } + + function pop() public { + someArr.pop(); + } + + function indexOOBError(uint256 a) public pure { + uint256[] memory t = new uint256[](0); + t[a]; + } + + function mem() public pure { + uint256 l = 2 ** 256 / 32; + new uint256[](l); + } + + function intern() public returns (uint256) { + function(uint256) internal returns (uint256) x; + x(2); + return 7; + } +} diff --git a/v2/lib/forge-std/test/StdJson.t.sol b/v2/lib/forge-std/test/StdJson.t.sol new file mode 100644 index 00000000..e32b92ea --- /dev/null +++ b/v2/lib/forge-std/test/StdJson.t.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/Test.sol"; + +contract StdJsonTest is Test { + using stdJson for string; + + string root; + string path; + + function setUp() public { + root = vm.projectRoot(); + path = string.concat(root, "/test/fixtures/test.json"); + } + + struct SimpleJson { + uint256 a; + string b; + } + + struct NestedJson { + uint256 a; + string b; + SimpleJson c; + } + + function test_readJson() public view { + string memory json = vm.readFile(path); + assertEq(json.readUint(".a"), 123); + } + + function test_writeJson() public { + string memory json = "json"; + json.serialize("a", uint256(123)); + string memory semiFinal = json.serialize("b", string("test")); + string memory finalJson = json.serialize("c", semiFinal); + finalJson.write(path); + + string memory json_ = vm.readFile(path); + bytes memory data = json_.parseRaw("$"); + NestedJson memory decodedData = abi.decode(data, (NestedJson)); + + assertEq(decodedData.a, 123); + assertEq(decodedData.b, "test"); + assertEq(decodedData.c.a, 123); + assertEq(decodedData.c.b, "test"); + } +} diff --git a/v2/lib/forge-std/test/StdMath.t.sol b/v2/lib/forge-std/test/StdMath.t.sol new file mode 100644 index 00000000..ed0f9bae --- /dev/null +++ b/v2/lib/forge-std/test/StdMath.t.sol @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.0 <0.9.0; + +import "../src/StdMath.sol"; +import "../src/Test.sol"; + +contract StdMathMock is Test { + function exposed_percentDelta(uint256 a, uint256 b) public pure returns (uint256) { + return stdMath.percentDelta(a, b); + } + + function exposed_percentDelta(int256 a, int256 b) public pure returns (uint256) { + return stdMath.percentDelta(a, b); + } +} + +contract StdMathTest is Test { + function test_GetAbs() external pure { + assertEq(stdMath.abs(-50), 50); + assertEq(stdMath.abs(50), 50); + assertEq(stdMath.abs(-1337), 1337); + assertEq(stdMath.abs(0), 0); + + assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1); + assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1)); + } + + function testFuzz_GetAbs(int256 a) external pure { + uint256 manualAbs = getAbs(a); + + uint256 abs = stdMath.abs(a); + + assertEq(abs, manualAbs); + } + + function test_GetDelta_Uint() external pure { + assertEq(stdMath.delta(uint256(0), uint256(0)), 0); + assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337); + assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max); + assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max); + assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max); + + assertEq(stdMath.delta(0, uint256(0)), 0); + assertEq(stdMath.delta(1337, uint256(0)), 1337); + assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max); + assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max); + assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max); + + assertEq(stdMath.delta(1337, uint256(1337)), 0); + assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0); + assertEq(stdMath.delta(5000, uint256(1250)), 3750); + } + + function testFuzz_GetDelta_Uint(uint256 a, uint256 b) external pure { + uint256 manualDelta; + if (a > b) { + manualDelta = a - b; + } else { + manualDelta = b - a; + } + + uint256 delta = stdMath.delta(a, b); + + assertEq(delta, manualDelta); + } + + function test_GetDelta_Int() external pure { + assertEq(stdMath.delta(int256(0), int256(0)), 0); + assertEq(stdMath.delta(int256(0), int256(1337)), 1337); + assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1); + assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1); + assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1); + + assertEq(stdMath.delta(0, int256(0)), 0); + assertEq(stdMath.delta(1337, int256(0)), 1337); + assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1); + assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1); + assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1); + + assertEq(stdMath.delta(-0, int256(0)), 0); + assertEq(stdMath.delta(-1337, int256(0)), 1337); + assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1); + assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1); + assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1); + + assertEq(stdMath.delta(int256(0), -0), 0); + assertEq(stdMath.delta(int256(0), -1337), 1337); + assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1); + assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1); + assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1); + + assertEq(stdMath.delta(1337, int256(1337)), 0); + assertEq(stdMath.delta(type(int256).max, type(int256).max), 0); + assertEq(stdMath.delta(type(int256).min, type(int256).min), 0); + assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max); + assertEq(stdMath.delta(5000, int256(1250)), 3750); + } + + function testFuzz_GetDelta_Int(int256 a, int256 b) external pure { + uint256 absA = getAbs(a); + uint256 absB = getAbs(b); + uint256 absDelta = absA > absB ? absA - absB : absB - absA; + + uint256 manualDelta; + if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { + manualDelta = absDelta; + } + // (a < 0 && b >= 0) || (a >= 0 && b < 0) + else { + manualDelta = absA + absB; + } + + uint256 delta = stdMath.delta(a, b); + + assertEq(delta, manualDelta); + } + + function test_GetPercentDelta_Uint() external { + StdMathMock stdMathMock = new StdMathMock(); + + assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18); + assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18); + assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18); + assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18); + + assertEq(stdMath.percentDelta(1337, uint256(1337)), 0); + assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0); + assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18); + assertEq(stdMath.percentDelta(2500, uint256(2500)), 0); + assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18); + assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18); + + vm.expectRevert(stdError.divisionError); + stdMathMock.exposed_percentDelta(uint256(1), 0); + } + + function testFuzz_GetPercentDelta_Uint(uint192 a, uint192 b) external pure { + vm.assume(b != 0); + uint256 manualDelta; + if (a > b) { + manualDelta = a - b; + } else { + manualDelta = b - a; + } + + uint256 manualPercentDelta = manualDelta * 1e18 / b; + uint256 percentDelta = stdMath.percentDelta(a, b); + + assertEq(percentDelta, manualPercentDelta); + } + + function test_GetPercentDelta_Int() external { + // We deploy a mock version so we can properly test the revert. + StdMathMock stdMathMock = new StdMathMock(); + + assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18); + assertEq(stdMath.percentDelta(int256(0), -1337), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18); + assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18); + + assertEq(stdMath.percentDelta(1337, int256(1337)), 0); + assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0); + assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0); + + assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down + assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down + assertEq(stdMath.percentDelta(0, int256(2500)), 1e18); + assertEq(stdMath.percentDelta(2500, int256(2500)), 0); + assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18); + assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18); + + vm.expectRevert(stdError.divisionError); + stdMathMock.exposed_percentDelta(int256(1), 0); + } + + function testFuzz_GetPercentDelta_Int(int192 a, int192 b) external pure { + vm.assume(b != 0); + uint256 absA = getAbs(a); + uint256 absB = getAbs(b); + uint256 absDelta = absA > absB ? absA - absB : absB - absA; + + uint256 manualDelta; + if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { + manualDelta = absDelta; + } + // (a < 0 && b >= 0) || (a >= 0 && b < 0) + else { + manualDelta = absA + absB; + } + + uint256 manualPercentDelta = manualDelta * 1e18 / absB; + uint256 percentDelta = stdMath.percentDelta(a, b); + + assertEq(percentDelta, manualPercentDelta); + } + + /*////////////////////////////////////////////////////////////////////////// + HELPERS + //////////////////////////////////////////////////////////////////////////*/ + + function getAbs(int256 a) private pure returns (uint256) { + if (a < 0) { + return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a); + } + + return uint256(a); + } +} diff --git a/v2/lib/forge-std/test/StdStorage.t.sol b/v2/lib/forge-std/test/StdStorage.t.sol new file mode 100644 index 00000000..89984bca --- /dev/null +++ b/v2/lib/forge-std/test/StdStorage.t.sol @@ -0,0 +1,471 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/StdStorage.sol"; +import "../src/Test.sol"; + +contract StdStorageTest is Test { + using stdStorage for StdStorage; + + StorageTest internal test; + + function setUp() public { + test = new StorageTest(); + } + + function test_StorageHidden() public { + assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find()); + } + + function test_StorageObvious() public { + assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find()); + } + + function test_StorageExtraSload() public { + assertEq(16, stdstore.target(address(test)).sig(test.extra_sload.selector).find()); + } + + function test_StorageCheckedWriteHidden() public { + stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100); + assertEq(uint256(test.hidden()), 100); + } + + function test_StorageCheckedWriteObvious() public { + stdstore.target(address(test)).sig(test.exists.selector).checked_write(100); + assertEq(test.exists(), 100); + } + + function test_StorageCheckedWriteSignedIntegerHidden() public { + stdstore.target(address(test)).sig(test.hidden.selector).checked_write_int(-100); + assertEq(int256(uint256(test.hidden())), -100); + } + + function test_StorageCheckedWriteSignedIntegerObvious() public { + stdstore.target(address(test)).sig(test.tG.selector).checked_write_int(-100); + assertEq(test.tG(), -100); + } + + function test_StorageMapStructA() public { + uint256 slot = + stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find(); + assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot); + } + + function test_StorageMapStructB() public { + uint256 slot = + stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find(); + assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot); + } + + function test_StorageDeepMap() public { + uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key( + address(this) + ).find(); + assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot); + } + + function test_StorageCheckedWriteDeepMap() public { + stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this)) + .checked_write(100); + assertEq(100, test.deep_map(address(this), address(this))); + } + + function test_StorageDeepMapStructA() public { + uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) + .with_key(address(this)).depth(0).find(); + assertEq( + bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0), + bytes32(slot) + ); + } + + function test_StorageDeepMapStructB() public { + uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) + .with_key(address(this)).depth(1).find(); + assertEq( + bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1), + bytes32(slot) + ); + } + + function test_StorageCheckedWriteDeepMapStructA() public { + stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( + address(this) + ).depth(0).checked_write(100); + (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); + assertEq(100, a); + assertEq(0, b); + } + + function test_StorageCheckedWriteDeepMapStructB() public { + stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( + address(this) + ).depth(1).checked_write(100); + (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); + assertEq(0, a); + assertEq(100, b); + } + + function test_StorageCheckedWriteMapStructA() public { + stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100); + (uint256 a, uint256 b) = test.map_struct(address(this)); + assertEq(a, 100); + assertEq(b, 0); + } + + function test_StorageCheckedWriteMapStructB() public { + stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100); + (uint256 a, uint256 b) = test.map_struct(address(this)); + assertEq(a, 0); + assertEq(b, 100); + } + + function test_StorageStructA() public { + uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find(); + assertEq(uint256(7), slot); + } + + function test_StorageStructB() public { + uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find(); + assertEq(uint256(7) + 1, slot); + } + + function test_StorageCheckedWriteStructA() public { + stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100); + (uint256 a, uint256 b) = test.basic(); + assertEq(a, 100); + assertEq(b, 1337); + } + + function test_StorageCheckedWriteStructB() public { + stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100); + (uint256 a, uint256 b) = test.basic(); + assertEq(a, 1337); + assertEq(b, 100); + } + + function test_StorageMapAddrFound() public { + uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find(); + assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot); + } + + function test_StorageMapAddrRoot() public { + (uint256 slot, bytes32 key) = + stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).parent(); + assertEq(address(uint160(uint256(key))), address(this)); + assertEq(uint256(1), slot); + slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).root(); + assertEq(uint256(1), slot); + } + + function test_StorageMapUintFound() public { + uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find(); + assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot); + } + + function test_StorageCheckedWriteMapUint() public { + stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100); + assertEq(100, test.map_uint(100)); + } + + function test_StorageCheckedWriteMapAddr() public { + stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100); + assertEq(100, test.map_addr(address(this))); + } + + function test_StorageCheckedWriteMapBool() public { + stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true); + assertTrue(test.map_bool(address(this))); + } + + function testFuzz_StorageCheckedWriteMapPacked(address addr, uint128 value) public { + stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_lower.selector).with_key(addr) + .checked_write(value); + assertEq(test.read_struct_lower(addr), value); + + stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_upper.selector).with_key(addr) + .checked_write(value); + assertEq(test.read_struct_upper(addr), value); + } + + function test_StorageCheckedWriteMapPackedFullSuccess() public { + uint256 full = test.map_packed(address(1337)); + // keep upper 128, set lower 128 to 1337 + full = (full & (uint256((1 << 128) - 1) << 128)) | 1337; + stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write( + full + ); + assertEq(1337, test.read_struct_lower(address(1337))); + } + + function testFail_StorageConst() public { + // vm.expectRevert(abi.encodeWithSignature("NotStorage(bytes4)", bytes4(keccak256("const()")))); + stdstore.target(address(test)).sig("const()").find(); + } + + function testFuzz_StorageNativePack(uint248 val1, uint248 val2, bool boolVal1, bool boolVal2) public { + stdstore.enable_packed_slots().target(address(test)).sig(test.tA.selector).checked_write(val1); + stdstore.enable_packed_slots().target(address(test)).sig(test.tB.selector).checked_write(boolVal1); + stdstore.enable_packed_slots().target(address(test)).sig(test.tC.selector).checked_write(boolVal2); + stdstore.enable_packed_slots().target(address(test)).sig(test.tD.selector).checked_write(val2); + + assertEq(test.tA(), val1); + assertEq(test.tB(), boolVal1); + assertEq(test.tC(), boolVal2); + assertEq(test.tD(), val2); + } + + function test_StorageReadBytes32() public { + bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32(); + assertEq(val, hex"1337"); + } + + function test_StorageReadBool_False() public { + bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool(); + assertEq(val, false); + } + + function test_StorageReadBool_True() public { + bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool(); + assertEq(val, true); + } + + function test_StorageReadBool_Revert() public { + vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); + this.readNonBoolValue(); + } + + function readNonBoolValue() public { + stdstore.target(address(test)).sig(test.tE.selector).read_bool(); + } + + function test_StorageReadAddress() public { + address val = stdstore.target(address(test)).sig(test.tF.selector).read_address(); + assertEq(val, address(1337)); + } + + function test_StorageReadUint() public { + uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint(); + assertEq(val, 1); + } + + function test_StorageReadInt() public { + int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int(); + assertEq(val, type(int256).min); + } + + function testFuzzPacked(uint256 val, uint8 elemToGet) public { + // This function tries an assortment of packed slots, shifts meaning number of elements + // that are packed. Shiftsizes are the size of each element, i.e. 8 means a data type that is 8 bits, 16 == 16 bits, etc. + // Combined, these determine how a slot is packed. Making it random is too hard to avoid global rejection limit + // and make it performant. + + // change the number of shifts + for (uint256 i = 1; i < 5; i++) { + uint256 shifts = i; + + elemToGet = uint8(bound(elemToGet, 0, shifts - 1)); + + uint256[] memory shiftSizes = new uint256[](shifts); + for (uint256 j; j < shifts; j++) { + shiftSizes[j] = 8 * (j + 1); + } + + test.setRandomPacking(val); + + uint256 leftBits; + uint256 rightBits; + for (uint256 j; j < shiftSizes.length; j++) { + if (j < elemToGet) { + leftBits += shiftSizes[j]; + } else if (elemToGet != j) { + rightBits += shiftSizes[j]; + } + } + + // we may have some right bits unaccounted for + leftBits += 256 - (leftBits + shiftSizes[elemToGet] + rightBits); + // clear left bits, then clear right bits and realign + uint256 expectedValToRead = (val << leftBits) >> (leftBits + rightBits); + + uint256 readVal = stdstore.target(address(test)).enable_packed_slots().sig( + "getRandomPacked(uint8,uint8[],uint8)" + ).with_calldata(abi.encode(shifts, shiftSizes, elemToGet)).read_uint(); + + assertEq(readVal, expectedValToRead); + } + } + + function testFuzzPacked2(uint256 nvars, uint256 seed) public { + // Number of random variables to generate. + nvars = bound(nvars, 1, 20); + + // This will decrease as we generate values in the below loop. + uint256 bitsRemaining = 256; + + // Generate a random value and size for each variable. + uint256[] memory vals = new uint256[](nvars); + uint256[] memory sizes = new uint256[](nvars); + uint256[] memory offsets = new uint256[](nvars); + + for (uint256 i = 0; i < nvars; i++) { + // Generate a random value and size. + offsets[i] = i == 0 ? 0 : offsets[i - 1] + sizes[i - 1]; + + uint256 nvarsRemaining = nvars - i; + uint256 maxVarSize = bitsRemaining - nvarsRemaining + 1; + sizes[i] = bound(uint256(keccak256(abi.encodePacked(seed, i + 256))), 1, maxVarSize); + bitsRemaining -= sizes[i]; + + uint256 maxVal; + uint256 varSize = sizes[i]; + assembly { + // mask = (1 << varSize) - 1 + maxVal := sub(shl(varSize, 1), 1) + } + vals[i] = bound(uint256(keccak256(abi.encodePacked(seed, i))), 0, maxVal); + } + + // Pack all values into the slot. + for (uint256 i = 0; i < nvars; i++) { + stdstore.enable_packed_slots().target(address(test)).sig("getRandomPacked(uint256,uint256)").with_key( + sizes[i] + ).with_key(offsets[i]).checked_write(vals[i]); + } + + // Verify the read data matches. + for (uint256 i = 0; i < nvars; i++) { + uint256 readVal = stdstore.enable_packed_slots().target(address(test)).sig( + "getRandomPacked(uint256,uint256)" + ).with_key(sizes[i]).with_key(offsets[i]).read_uint(); + + uint256 retVal = test.getRandomPacked(sizes[i], offsets[i]); + + assertEq(readVal, vals[i]); + assertEq(retVal, vals[i]); + } + } + + function testEdgeCaseArray() public { + stdstore.target(address(test)).sig("edgeCaseArray(uint256)").with_key(uint256(0)).checked_write(1); + assertEq(test.edgeCaseArray(0), 1); + } +} + +contract StorageTest { + uint256 public exists = 1; + mapping(address => uint256) public map_addr; + mapping(uint256 => uint256) public map_uint; + mapping(address => uint256) public map_packed; + mapping(address => UnpackedStruct) public map_struct; + mapping(address => mapping(address => uint256)) public deep_map; + mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; + UnpackedStruct public basic; + + uint248 public tA; + bool public tB; + + bool public tC = false; + uint248 public tD = 1; + + struct UnpackedStruct { + uint256 a; + uint256 b; + } + + mapping(address => bool) public map_bool; + + bytes32 public tE = hex"1337"; + address public tF = address(1337); + int256 public tG = type(int256).min; + bool public tH = true; + bytes32 private tI = ~bytes32(hex"1337"); + + uint256 randomPacking; + + // Array with length matching values of elements. + uint256[] public edgeCaseArray = [3, 3, 3]; + + constructor() { + basic = UnpackedStruct({a: 1337, b: 1337}); + + uint256 two = (1 << 128) | 1; + map_packed[msg.sender] = two; + map_packed[address(uint160(1337))] = 1 << 128; + } + + function read_struct_upper(address who) public view returns (uint256) { + return map_packed[who] >> 128; + } + + function read_struct_lower(address who) public view returns (uint256) { + return map_packed[who] & ((1 << 128) - 1); + } + + function hidden() public view returns (bytes32 t) { + bytes32 slot = keccak256("my.random.var"); + /// @solidity memory-safe-assembly + assembly { + t := sload(slot) + } + } + + function const() public pure returns (bytes32 t) { + t = bytes32(hex"1337"); + } + + function extra_sload() public view returns (bytes32 t) { + // trigger read on slot `tE`, and make a staticcall to make sure compiler doesn't optimize this SLOAD away + assembly { + pop(staticcall(gas(), sload(tE.slot), 0, 0, 0, 0)) + } + t = tI; + } + + function setRandomPacking(uint256 val) public { + randomPacking = val; + } + + function _getMask(uint256 size) internal pure returns (uint256 mask) { + assembly { + // mask = (1 << size) - 1 + mask := sub(shl(size, 1), 1) + } + } + + function setRandomPacking(uint256 val, uint256 size, uint256 offset) public { + // Generate mask based on the size of the value + uint256 mask = _getMask(size); + // Zero out all bits for the word we're about to set + uint256 cleanedWord = randomPacking & ~(mask << offset); + // Place val in the correct spot of the cleaned word + randomPacking = cleanedWord | val << offset; + } + + function getRandomPacked(uint256 size, uint256 offset) public view returns (uint256) { + // Generate mask based on the size of the value + uint256 mask = _getMask(size); + // Shift to place the bits in the correct position, and use mask to zero out remaining bits + return (randomPacking >> offset) & mask; + } + + function getRandomPacked(uint8 shifts, uint8[] memory shiftSizes, uint8 elem) public view returns (uint256) { + require(elem < shifts, "!elem"); + uint256 leftBits; + uint256 rightBits; + + for (uint256 i; i < shiftSizes.length; i++) { + if (i < elem) { + leftBits += shiftSizes[i]; + } else if (elem != i) { + rightBits += shiftSizes[i]; + } + } + + // we may have some right bits unaccounted for + leftBits += 256 - (leftBits + shiftSizes[elem] + rightBits); + + // clear left bits, then clear right bits and realign + return (randomPacking << leftBits) >> (leftBits + rightBits); + } +} diff --git a/v2/lib/forge-std/test/StdStyle.t.sol b/v2/lib/forge-std/test/StdStyle.t.sol new file mode 100644 index 00000000..e12c005f --- /dev/null +++ b/v2/lib/forge-std/test/StdStyle.t.sol @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/Test.sol"; + +contract StdStyleTest is Test { + function test_StyleColor() public pure { + console2.log(StdStyle.red("StdStyle.red String Test")); + console2.log(StdStyle.red(uint256(10e18))); + console2.log(StdStyle.red(int256(-10e18))); + console2.log(StdStyle.red(true)); + console2.log(StdStyle.red(address(0))); + console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.redBytes32("StdStyle.redBytes32")); + console2.log(StdStyle.green("StdStyle.green String Test")); + console2.log(StdStyle.green(uint256(10e18))); + console2.log(StdStyle.green(int256(-10e18))); + console2.log(StdStyle.green(true)); + console2.log(StdStyle.green(address(0))); + console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32")); + console2.log(StdStyle.yellow("StdStyle.yellow String Test")); + console2.log(StdStyle.yellow(uint256(10e18))); + console2.log(StdStyle.yellow(int256(-10e18))); + console2.log(StdStyle.yellow(true)); + console2.log(StdStyle.yellow(address(0))); + console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32")); + console2.log(StdStyle.blue("StdStyle.blue String Test")); + console2.log(StdStyle.blue(uint256(10e18))); + console2.log(StdStyle.blue(int256(-10e18))); + console2.log(StdStyle.blue(true)); + console2.log(StdStyle.blue(address(0))); + console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32")); + console2.log(StdStyle.magenta("StdStyle.magenta String Test")); + console2.log(StdStyle.magenta(uint256(10e18))); + console2.log(StdStyle.magenta(int256(-10e18))); + console2.log(StdStyle.magenta(true)); + console2.log(StdStyle.magenta(address(0))); + console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32")); + console2.log(StdStyle.cyan("StdStyle.cyan String Test")); + console2.log(StdStyle.cyan(uint256(10e18))); + console2.log(StdStyle.cyan(int256(-10e18))); + console2.log(StdStyle.cyan(true)); + console2.log(StdStyle.cyan(address(0))); + console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32")); + } + + function test_StyleFontWeight() public pure { + console2.log(StdStyle.bold("StdStyle.bold String Test")); + console2.log(StdStyle.bold(uint256(10e18))); + console2.log(StdStyle.bold(int256(-10e18))); + console2.log(StdStyle.bold(address(0))); + console2.log(StdStyle.bold(true)); + console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32")); + console2.log(StdStyle.dim("StdStyle.dim String Test")); + console2.log(StdStyle.dim(uint256(10e18))); + console2.log(StdStyle.dim(int256(-10e18))); + console2.log(StdStyle.dim(address(0))); + console2.log(StdStyle.dim(true)); + console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32")); + console2.log(StdStyle.italic("StdStyle.italic String Test")); + console2.log(StdStyle.italic(uint256(10e18))); + console2.log(StdStyle.italic(int256(-10e18))); + console2.log(StdStyle.italic(address(0))); + console2.log(StdStyle.italic(true)); + console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32")); + console2.log(StdStyle.underline("StdStyle.underline String Test")); + console2.log(StdStyle.underline(uint256(10e18))); + console2.log(StdStyle.underline(int256(-10e18))); + console2.log(StdStyle.underline(address(0))); + console2.log(StdStyle.underline(true)); + console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32")); + console2.log(StdStyle.inverse("StdStyle.inverse String Test")); + console2.log(StdStyle.inverse(uint256(10e18))); + console2.log(StdStyle.inverse(int256(-10e18))); + console2.log(StdStyle.inverse(address(0))); + console2.log(StdStyle.inverse(true)); + console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); + console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32")); + } + + function test_StyleCombined() public pure { + console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test"))); + console2.log(StdStyle.green(StdStyle.dim(uint256(10e18)))); + console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18)))); + console2.log(StdStyle.blue(StdStyle.underline(address(0)))); + console2.log(StdStyle.magenta(StdStyle.inverse(true))); + } + + function test_StyleCustom() public pure { + console2.log(h1("Custom Style 1")); + console2.log(h2("Custom Style 2")); + } + + function h1(string memory a) private pure returns (string memory) { + return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a))); + } + + function h2(string memory a) private pure returns (string memory) { + return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a))); + } +} diff --git a/v2/lib/forge-std/test/StdToml.t.sol b/v2/lib/forge-std/test/StdToml.t.sol new file mode 100644 index 00000000..631b1b53 --- /dev/null +++ b/v2/lib/forge-std/test/StdToml.t.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/Test.sol"; + +contract StdTomlTest is Test { + using stdToml for string; + + string root; + string path; + + function setUp() public { + root = vm.projectRoot(); + path = string.concat(root, "/test/fixtures/test.toml"); + } + + struct SimpleToml { + uint256 a; + string b; + } + + struct NestedToml { + uint256 a; + string b; + SimpleToml c; + } + + function test_readToml() public view { + string memory json = vm.readFile(path); + assertEq(json.readUint(".a"), 123); + } + + function test_writeToml() public { + string memory json = "json"; + json.serialize("a", uint256(123)); + string memory semiFinal = json.serialize("b", string("test")); + string memory finalJson = json.serialize("c", semiFinal); + finalJson.write(path); + + string memory toml = vm.readFile(path); + bytes memory data = toml.parseRaw("$"); + NestedToml memory decodedData = abi.decode(data, (NestedToml)); + + assertEq(decodedData.a, 123); + assertEq(decodedData.b, "test"); + assertEq(decodedData.c.a, 123); + assertEq(decodedData.c.b, "test"); + } +} diff --git a/v2/lib/forge-std/test/StdUtils.t.sol b/v2/lib/forge-std/test/StdUtils.t.sol new file mode 100644 index 00000000..4994c6cb --- /dev/null +++ b/v2/lib/forge-std/test/StdUtils.t.sol @@ -0,0 +1,342 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import "../src/Test.sol"; + +contract StdUtilsMock is StdUtils { + // We deploy a mock version so we can properly test expected reverts. + function exposed_getTokenBalances(address token, address[] memory addresses) + external + returns (uint256[] memory balances) + { + return getTokenBalances(token, addresses); + } + + function exposed_bound(int256 num, int256 min, int256 max) external pure returns (int256) { + return bound(num, min, max); + } + + function exposed_bound(uint256 num, uint256 min, uint256 max) external pure returns (uint256) { + return bound(num, min, max); + } + + function exposed_bytesToUint(bytes memory b) external pure returns (uint256) { + return bytesToUint(b); + } +} + +contract StdUtilsTest is Test { + /*////////////////////////////////////////////////////////////////////////// + BOUND UINT + //////////////////////////////////////////////////////////////////////////*/ + + function test_Bound() public pure { + assertEq(bound(uint256(5), 0, 4), 0); + assertEq(bound(uint256(0), 69, 69), 69); + assertEq(bound(uint256(0), 68, 69), 68); + assertEq(bound(uint256(10), 150, 190), 174); + assertEq(bound(uint256(300), 2800, 3200), 3107); + assertEq(bound(uint256(9999), 1337, 6666), 4669); + } + + function test_Bound_WithinRange() public pure { + assertEq(bound(uint256(51), 50, 150), 51); + assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150)); + assertEq(bound(uint256(149), 50, 150), 149); + assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150)); + } + + function test_Bound_EdgeCoverage() public pure { + assertEq(bound(uint256(0), 50, 150), 50); + assertEq(bound(uint256(1), 50, 150), 51); + assertEq(bound(uint256(2), 50, 150), 52); + assertEq(bound(uint256(3), 50, 150), 53); + assertEq(bound(type(uint256).max, 50, 150), 150); + assertEq(bound(type(uint256).max - 1, 50, 150), 149); + assertEq(bound(type(uint256).max - 2, 50, 150), 148); + assertEq(bound(type(uint256).max - 3, 50, 150), 147); + } + + function test_Bound_DistributionIsEven(uint256 min, uint256 size) public pure { + size = size % 100 + 1; + min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size); + uint256 max = min + size - 1; + uint256 result; + + for (uint256 i = 1; i <= size * 4; ++i) { + // x > max + result = bound(max + i, min, max); + assertEq(result, min + (i - 1) % size); + // x < min + result = bound(min - i, min, max); + assertEq(result, max - (i - 1) % size); + } + } + + function test_Bound(uint256 num, uint256 min, uint256 max) public pure { + if (min > max) (min, max) = (max, min); + + uint256 result = bound(num, min, max); + + assertGe(result, min); + assertLe(result, max); + assertEq(result, bound(result, min, max)); + if (num >= min && num <= max) assertEq(result, num); + } + + function test_BoundUint256Max() public pure { + assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1); + assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max); + } + + function test_CannotBoundMaxLessThanMin() public { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); + stdUtils.exposed_bound(uint256(5), 100, 10); + } + + function test_CannotBoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + vm.assume(min > max); + vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); + stdUtils.exposed_bound(num, min, max); + } + + /*////////////////////////////////////////////////////////////////////////// + BOUND INT + //////////////////////////////////////////////////////////////////////////*/ + + function test_BoundInt() public pure { + assertEq(bound(-3, 0, 4), 2); + assertEq(bound(0, -69, -69), -69); + assertEq(bound(0, -69, -68), -68); + assertEq(bound(-10, 150, 190), 154); + assertEq(bound(-300, 2800, 3200), 2908); + assertEq(bound(9999, -1337, 6666), 1995); + } + + function test_BoundInt_WithinRange() public pure { + assertEq(bound(51, -50, 150), 51); + assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150)); + assertEq(bound(149, -50, 150), 149); + assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150)); + } + + function test_BoundInt_EdgeCoverage() public pure { + assertEq(bound(type(int256).min, -50, 150), -50); + assertEq(bound(type(int256).min + 1, -50, 150), -49); + assertEq(bound(type(int256).min + 2, -50, 150), -48); + assertEq(bound(type(int256).min + 3, -50, 150), -47); + assertEq(bound(type(int256).min, 10, 150), 10); + assertEq(bound(type(int256).min + 1, 10, 150), 11); + assertEq(bound(type(int256).min + 2, 10, 150), 12); + assertEq(bound(type(int256).min + 3, 10, 150), 13); + + assertEq(bound(type(int256).max, -50, 150), 150); + assertEq(bound(type(int256).max - 1, -50, 150), 149); + assertEq(bound(type(int256).max - 2, -50, 150), 148); + assertEq(bound(type(int256).max - 3, -50, 150), 147); + assertEq(bound(type(int256).max, -50, -10), -10); + assertEq(bound(type(int256).max - 1, -50, -10), -11); + assertEq(bound(type(int256).max - 2, -50, -10), -12); + assertEq(bound(type(int256).max - 3, -50, -10), -13); + } + + function test_BoundInt_DistributionIsEven(int256 min, uint256 size) public pure { + size = size % 100 + 1; + min = bound(min, -int256(size / 2), int256(size - size / 2)); + int256 max = min + int256(size) - 1; + int256 result; + + for (uint256 i = 1; i <= size * 4; ++i) { + // x > max + result = bound(max + int256(i), min, max); + assertEq(result, min + int256((i - 1) % size)); + // x < min + result = bound(min - int256(i), min, max); + assertEq(result, max - int256((i - 1) % size)); + } + } + + function test_BoundInt(int256 num, int256 min, int256 max) public pure { + if (min > max) (min, max) = (max, min); + + int256 result = bound(num, min, max); + + assertGe(result, min); + assertLe(result, max); + assertEq(result, bound(result, min, max)); + if (num >= min && num <= max) assertEq(result, num); + } + + function test_BoundIntInt256Max() public pure { + assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1); + assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max); + } + + function test_BoundIntInt256Min() public pure { + assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min); + assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1); + } + + function test_CannotBoundIntMaxLessThanMin() public { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); + stdUtils.exposed_bound(-5, 100, 10); + } + + function test_CannotBoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + vm.assume(min > max); + vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); + stdUtils.exposed_bound(num, min, max); + } + + /*////////////////////////////////////////////////////////////////////////// + BOUND PRIVATE KEY + //////////////////////////////////////////////////////////////////////////*/ + + function test_BoundPrivateKey() public pure { + assertEq(boundPrivateKey(0), 1); + assertEq(boundPrivateKey(1), 1); + assertEq(boundPrivateKey(300), 300); + assertEq(boundPrivateKey(9999), 9999); + assertEq(boundPrivateKey(SECP256K1_ORDER - 1), SECP256K1_ORDER - 1); + assertEq(boundPrivateKey(SECP256K1_ORDER), 1); + assertEq(boundPrivateKey(SECP256K1_ORDER + 1), 2); + assertEq(boundPrivateKey(UINT256_MAX), UINT256_MAX & SECP256K1_ORDER - 1); // x&y is equivalent to x-x%y + } + + /*////////////////////////////////////////////////////////////////////////// + BYTES TO UINT + //////////////////////////////////////////////////////////////////////////*/ + + function test_BytesToUint() external pure { + bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; + bytes memory two = hex"02"; + bytes memory millionEther = hex"d3c21bcecceda1000000"; + + assertEq(bytesToUint(maxUint), type(uint256).max); + assertEq(bytesToUint(two), 2); + assertEq(bytesToUint(millionEther), 1_000_000 ether); + } + + function test_CannotConvertGT32Bytes() external { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; + vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32."); + stdUtils.exposed_bytesToUint(thirty3Bytes); + } + + /*////////////////////////////////////////////////////////////////////////// + COMPUTE CREATE ADDRESS + //////////////////////////////////////////////////////////////////////////*/ + + function test_ComputeCreateAddress() external pure { + address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; + uint256 nonce = 14; + address createAddress = computeCreateAddress(deployer, nonce); + assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); + } + + /*////////////////////////////////////////////////////////////////////////// + COMPUTE CREATE2 ADDRESS + //////////////////////////////////////////////////////////////////////////*/ + + function test_ComputeCreate2Address() external pure { + bytes32 salt = bytes32(uint256(31415)); + bytes32 initcodeHash = keccak256(abi.encode(0x6080)); + address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; + address create2Address = computeCreate2Address(salt, initcodeHash, deployer); + assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3); + } + + function test_ComputeCreate2AddressWithDefaultDeployer() external pure { + bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0; + bytes32 initcodeHash = hashInitCode(hex"6080", ""); + assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0); + address create2Address = computeCreate2Address(salt, initcodeHash); + assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6); + } +} + +contract StdUtilsForkTest is Test { + /*////////////////////////////////////////////////////////////////////////// + GET TOKEN BALANCES + //////////////////////////////////////////////////////////////////////////*/ + + address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; + address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170; + address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA; + address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385; + + address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; + address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17; + address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52; + + function setUp() public { + // All tests of the `getTokenBalances` method are fork tests using live contracts. + vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); + } + + function test_CannotGetTokenBalances_NonTokenContract() external { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function, + // so the `balanceOf` call should revert. + address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); + address[] memory addresses = new address[](1); + addresses[0] = USDC_HOLDER_0; + + vm.expectRevert("Multicall3: call failed"); + stdUtils.exposed_getTokenBalances(token, addresses); + } + + function test_CannotGetTokenBalances_EOA() external { + // We deploy a mock version so we can properly test the revert. + StdUtilsMock stdUtils = new StdUtilsMock(); + + address eoa = vm.addr({privateKey: 1}); + address[] memory addresses = new address[](1); + addresses[0] = USDC_HOLDER_0; + vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract."); + stdUtils.exposed_getTokenBalances(eoa, addresses); + } + + function test_GetTokenBalances_Empty() external { + address[] memory addresses = new address[](0); + uint256[] memory balances = getTokenBalances(USDC, addresses); + assertEq(balances.length, 0); + } + + function test_GetTokenBalances_USDC() external { + address[] memory addresses = new address[](2); + addresses[0] = USDC_HOLDER_0; + addresses[1] = USDC_HOLDER_1; + uint256[] memory balances = getTokenBalances(USDC, addresses); + assertEq(balances[0], 159_000_000_000_000); + assertEq(balances[1], 131_350_000_000_000); + } + + function test_GetTokenBalances_SHIB() external { + address[] memory addresses = new address[](3); + addresses[0] = SHIB_HOLDER_0; + addresses[1] = SHIB_HOLDER_1; + addresses[2] = SHIB_HOLDER_2; + uint256[] memory balances = getTokenBalances(SHIB, addresses); + assertEq(balances[0], 3_323_256_285_484.42e18); + assertEq(balances[1], 1_271_702_771_149.99999928e18); + assertEq(balances[2], 606_357_106_247e18); + } +} diff --git a/v2/lib/forge-std/test/Vm.t.sol b/v2/lib/forge-std/test/Vm.t.sol new file mode 100644 index 00000000..cbf433a4 --- /dev/null +++ b/v2/lib/forge-std/test/Vm.t.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.0 <0.9.0; + +import {Test} from "../src/Test.sol"; +import {Vm, VmSafe} from "../src/Vm.sol"; + +contract VmTest is Test { + // This test ensures that functions are never accidentally removed from a Vm interface, or + // inadvertently moved between Vm and VmSafe. This test must be updated each time a function is + // added to or removed from Vm or VmSafe. + function test_interfaceId() public pure { + assertEq(type(VmSafe).interfaceId, bytes4(0xe745b84f), "VmSafe"); + assertEq(type(Vm).interfaceId, bytes4(0x1316b43e), "Vm"); + } +} diff --git a/v2/lib/forge-std/test/compilation/CompilationScript.sol b/v2/lib/forge-std/test/compilation/CompilationScript.sol new file mode 100644 index 00000000..e205cfff --- /dev/null +++ b/v2/lib/forge-std/test/compilation/CompilationScript.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import "../../src/Script.sol"; + +// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing +// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 +contract CompilationScript is Script {} diff --git a/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol b/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol new file mode 100644 index 00000000..ce8e0e95 --- /dev/null +++ b/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import "../../src/Script.sol"; + +// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing +// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 +contract CompilationScriptBase is ScriptBase {} diff --git a/v2/lib/forge-std/test/compilation/CompilationTest.sol b/v2/lib/forge-std/test/compilation/CompilationTest.sol new file mode 100644 index 00000000..9beeafeb --- /dev/null +++ b/v2/lib/forge-std/test/compilation/CompilationTest.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import "../../src/Test.sol"; + +// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing +// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 +contract CompilationTest is Test {} diff --git a/v2/lib/forge-std/test/compilation/CompilationTestBase.sol b/v2/lib/forge-std/test/compilation/CompilationTestBase.sol new file mode 100644 index 00000000..e993535b --- /dev/null +++ b/v2/lib/forge-std/test/compilation/CompilationTestBase.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2 <0.9.0; + +pragma experimental ABIEncoderV2; + +import "../../src/Test.sol"; + +// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing +// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 +contract CompilationTestBase is TestBase {} diff --git a/v2/lib/forge-std/test/fixtures/broadcast.log.json b/v2/lib/forge-std/test/fixtures/broadcast.log.json new file mode 100644 index 00000000..0a0200bc --- /dev/null +++ b/v2/lib/forge-std/test/fixtures/broadcast.log.json @@ -0,0 +1,187 @@ +{ + "transactions": [ + { + "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", + "type": "CALL", + "contractName": "Test", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": "multiple_arguments(uint256,address,uint256[]):(uint256)", + "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"], + "tx": { + "type": "0x02", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "gas": "0x73b9", + "value": "0x0", + "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", + "nonce": "0x3", + "accessList": [] + } + }, + { + "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", + "type": "CALL", + "contractName": "Test", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": "inc():(uint256)", + "arguments": [], + "tx": { + "type": "0x02", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "gas": "0xdcb2", + "value": "0x0", + "data": "0x371303c0", + "nonce": "0x4", + "accessList": [] + } + }, + { + "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", + "type": "CALL", + "contractName": "Test", + "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087", + "function": "t(uint256):(uint256)", + "arguments": ["1"], + "tx": { + "type": "0x02", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", + "gas": "0x8599", + "value": "0x0", + "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x5", + "accessList": [] + } + } + ], + "receipts": [ + { + "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181", + "transactionIndex": "0x0", + "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af", + "blockNumber": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "cumulativeGasUsed": "0x13f3a", + "gasUsed": "0x13f3a", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782", + "transactionIndex": "0x0", + "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148", + "blockNumber": "0x2", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "cumulativeGasUsed": "0x45d80", + "gasUsed": "0x45d80", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d", + "transactionIndex": "0x0", + "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58", + "blockNumber": "0x3", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "cumulativeGasUsed": "0x45feb", + "gasUsed": "0x45feb", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", + "transactionIndex": "0x0", + "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629", + "blockNumber": "0x4", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "cumulativeGasUsed": "0x5905", + "gasUsed": "0x5905", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", + "transactionIndex": "0x0", + "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11", + "blockNumber": "0x5", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "cumulativeGasUsed": "0xa9c4", + "gasUsed": "0xa9c4", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", + "transactionIndex": "0x0", + "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", + "blockNumber": "0x6", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", + "cumulativeGasUsed": "0x66c5", + "gasUsed": "0x66c5", + "contractAddress": null, + "logs": [ + { + "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087", + "topics": [ + "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000", + "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", + "blockNumber": "0x6", + "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", + "transactionIndex": "0x1", + "logIndex": "0x0", + "transactionLogIndex": "0x0", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100", + "effectiveGasPrice": "0xee6b2800" + }, + { + "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16", + "transactionIndex": "0x0", + "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c", + "blockNumber": "0x7", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x0000000000000000000000000000000000001337", + "cumulativeGasUsed": "0x5208", + "gasUsed": "0x5208", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "effectiveGasPrice": "0xee6b2800" + } + ], + "libraries": [ + "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3" + ], + "pending": [], + "path": "broadcast/Broadcast.t.sol/31337/run-latest.json", + "returns": {}, + "timestamp": 1655140035 +} diff --git a/v2/lib/forge-std/test/fixtures/test.json b/v2/lib/forge-std/test/fixtures/test.json new file mode 100644 index 00000000..caebf6d9 --- /dev/null +++ b/v2/lib/forge-std/test/fixtures/test.json @@ -0,0 +1,8 @@ +{ + "a": 123, + "b": "test", + "c": { + "a": 123, + "b": "test" + } +} \ No newline at end of file diff --git a/v2/lib/forge-std/test/fixtures/test.toml b/v2/lib/forge-std/test/fixtures/test.toml new file mode 100644 index 00000000..60692bc7 --- /dev/null +++ b/v2/lib/forge-std/test/fixtures/test.toml @@ -0,0 +1,6 @@ +a = 123 +b = "test" + +[c] +a = 123 +b = "test" diff --git a/v2/lib/forge-std/test/mocks/MockERC20.t.sol b/v2/lib/forge-std/test/mocks/MockERC20.t.sol new file mode 100644 index 00000000..e2468109 --- /dev/null +++ b/v2/lib/forge-std/test/mocks/MockERC20.t.sol @@ -0,0 +1,441 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import {MockERC20} from "../../src/mocks/MockERC20.sol"; +import {StdCheats} from "../../src/StdCheats.sol"; +import {Test} from "../../src/Test.sol"; + +contract Token_ERC20 is MockERC20 { + constructor(string memory name, string memory symbol, uint8 decimals) { + initialize(name, symbol, decimals); + } + + function mint(address to, uint256 value) public virtual { + _mint(to, value); + } + + function burn(address from, uint256 value) public virtual { + _burn(from, value); + } +} + +contract MockERC20Test is StdCheats, Test { + Token_ERC20 token; + + bytes32 constant PERMIT_TYPEHASH = + keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); + + function setUp() public { + token = new Token_ERC20("Token", "TKN", 18); + } + + function invariantMetadata() public view { + assertEq(token.name(), "Token"); + assertEq(token.symbol(), "TKN"); + assertEq(token.decimals(), 18); + } + + function testMint() public { + token.mint(address(0xBEEF), 1e18); + + assertEq(token.totalSupply(), 1e18); + assertEq(token.balanceOf(address(0xBEEF)), 1e18); + } + + function testBurn() public { + token.mint(address(0xBEEF), 1e18); + token.burn(address(0xBEEF), 0.9e18); + + assertEq(token.totalSupply(), 1e18 - 0.9e18); + assertEq(token.balanceOf(address(0xBEEF)), 0.1e18); + } + + function testApprove() public { + assertTrue(token.approve(address(0xBEEF), 1e18)); + + assertEq(token.allowance(address(this), address(0xBEEF)), 1e18); + } + + function testTransfer() public { + token.mint(address(this), 1e18); + + assertTrue(token.transfer(address(0xBEEF), 1e18)); + assertEq(token.totalSupply(), 1e18); + + assertEq(token.balanceOf(address(this)), 0); + assertEq(token.balanceOf(address(0xBEEF)), 1e18); + } + + function testTransferFrom() public { + address from = address(0xABCD); + + token.mint(from, 1e18); + + vm.prank(from); + token.approve(address(this), 1e18); + + assertTrue(token.transferFrom(from, address(0xBEEF), 1e18)); + assertEq(token.totalSupply(), 1e18); + + assertEq(token.allowance(from, address(this)), 0); + + assertEq(token.balanceOf(from), 0); + assertEq(token.balanceOf(address(0xBEEF)), 1e18); + } + + function testInfiniteApproveTransferFrom() public { + address from = address(0xABCD); + + token.mint(from, 1e18); + + vm.prank(from); + token.approve(address(this), type(uint256).max); + + assertTrue(token.transferFrom(from, address(0xBEEF), 1e18)); + assertEq(token.totalSupply(), 1e18); + + assertEq(token.allowance(from, address(this)), type(uint256).max); + + assertEq(token.balanceOf(from), 0); + assertEq(token.balanceOf(address(0xBEEF)), 1e18); + } + + function testPermit() public { + uint256 privateKey = 0xBEEF; + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) + ) + ) + ); + + token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); + + assertEq(token.allowance(owner, address(0xCAFE)), 1e18); + assertEq(token.nonces(owner), 1); + } + + function testFailTransferInsufficientBalance() public { + token.mint(address(this), 0.9e18); + token.transfer(address(0xBEEF), 1e18); + } + + function testFailTransferFromInsufficientAllowance() public { + address from = address(0xABCD); + + token.mint(from, 1e18); + + vm.prank(from); + token.approve(address(this), 0.9e18); + + token.transferFrom(from, address(0xBEEF), 1e18); + } + + function testFailTransferFromInsufficientBalance() public { + address from = address(0xABCD); + + token.mint(from, 0.9e18); + + vm.prank(from); + token.approve(address(this), 1e18); + + token.transferFrom(from, address(0xBEEF), 1e18); + } + + function testFailPermitBadNonce() public { + uint256 privateKey = 0xBEEF; + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 1, block.timestamp)) + ) + ) + ); + + token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); + } + + function testFailPermitBadDeadline() public { + uint256 privateKey = 0xBEEF; + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) + ) + ) + ); + + token.permit(owner, address(0xCAFE), 1e18, block.timestamp + 1, v, r, s); + } + + function testFailPermitPastDeadline() public { + uint256 oldTimestamp = block.timestamp; + uint256 privateKey = 0xBEEF; + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, oldTimestamp)) + ) + ) + ); + + vm.warp(block.timestamp + 1); + token.permit(owner, address(0xCAFE), 1e18, oldTimestamp, v, r, s); + } + + function testFailPermitReplay() public { + uint256 privateKey = 0xBEEF; + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) + ) + ) + ); + + token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); + token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); + } + + function testMetadata(string calldata name, string calldata symbol, uint8 decimals) public { + Token_ERC20 tkn = new Token_ERC20(name, symbol, decimals); + assertEq(tkn.name(), name); + assertEq(tkn.symbol(), symbol); + assertEq(tkn.decimals(), decimals); + } + + function testMint(address from, uint256 amount) public { + token.mint(from, amount); + + assertEq(token.totalSupply(), amount); + assertEq(token.balanceOf(from), amount); + } + + function testBurn(address from, uint256 mintAmount, uint256 burnAmount) public { + burnAmount = bound(burnAmount, 0, mintAmount); + + token.mint(from, mintAmount); + token.burn(from, burnAmount); + + assertEq(token.totalSupply(), mintAmount - burnAmount); + assertEq(token.balanceOf(from), mintAmount - burnAmount); + } + + function testApprove(address to, uint256 amount) public { + assertTrue(token.approve(to, amount)); + + assertEq(token.allowance(address(this), to), amount); + } + + function testTransfer(address from, uint256 amount) public { + token.mint(address(this), amount); + + assertTrue(token.transfer(from, amount)); + assertEq(token.totalSupply(), amount); + + if (address(this) == from) { + assertEq(token.balanceOf(address(this)), amount); + } else { + assertEq(token.balanceOf(address(this)), 0); + assertEq(token.balanceOf(from), amount); + } + } + + function testTransferFrom(address to, uint256 approval, uint256 amount) public { + amount = bound(amount, 0, approval); + + address from = address(0xABCD); + + token.mint(from, amount); + + vm.prank(from); + token.approve(address(this), approval); + + assertTrue(token.transferFrom(from, to, amount)); + assertEq(token.totalSupply(), amount); + + uint256 app = from == address(this) || approval == type(uint256).max ? approval : approval - amount; + assertEq(token.allowance(from, address(this)), app); + + if (from == to) { + assertEq(token.balanceOf(from), amount); + } else { + assertEq(token.balanceOf(from), 0); + assertEq(token.balanceOf(to), amount); + } + } + + function testPermit(uint248 privKey, address to, uint256 amount, uint256 deadline) public { + uint256 privateKey = privKey; + if (deadline < block.timestamp) deadline = block.timestamp; + if (privateKey == 0) privateKey = 1; + + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) + ) + ) + ); + + token.permit(owner, to, amount, deadline, v, r, s); + + assertEq(token.allowance(owner, to), amount); + assertEq(token.nonces(owner), 1); + } + + function testFailBurnInsufficientBalance(address to, uint256 mintAmount, uint256 burnAmount) public { + burnAmount = bound(burnAmount, mintAmount + 1, type(uint256).max); + + token.mint(to, mintAmount); + token.burn(to, burnAmount); + } + + function testFailTransferInsufficientBalance(address to, uint256 mintAmount, uint256 sendAmount) public { + sendAmount = bound(sendAmount, mintAmount + 1, type(uint256).max); + + token.mint(address(this), mintAmount); + token.transfer(to, sendAmount); + } + + function testFailTransferFromInsufficientAllowance(address to, uint256 approval, uint256 amount) public { + amount = bound(amount, approval + 1, type(uint256).max); + + address from = address(0xABCD); + + token.mint(from, amount); + + vm.prank(from); + token.approve(address(this), approval); + + token.transferFrom(from, to, amount); + } + + function testFailTransferFromInsufficientBalance(address to, uint256 mintAmount, uint256 sendAmount) public { + sendAmount = bound(sendAmount, mintAmount + 1, type(uint256).max); + + address from = address(0xABCD); + + token.mint(from, mintAmount); + + vm.prank(from); + token.approve(address(this), sendAmount); + + token.transferFrom(from, to, sendAmount); + } + + function testFailPermitBadNonce(uint256 privateKey, address to, uint256 amount, uint256 deadline, uint256 nonce) + public + { + if (deadline < block.timestamp) deadline = block.timestamp; + if (privateKey == 0) privateKey = 1; + if (nonce == 0) nonce = 1; + + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, nonce, deadline)) + ) + ) + ); + + token.permit(owner, to, amount, deadline, v, r, s); + } + + function testFailPermitBadDeadline(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { + if (deadline < block.timestamp) deadline = block.timestamp; + if (privateKey == 0) privateKey = 1; + + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) + ) + ) + ); + + token.permit(owner, to, amount, deadline + 1, v, r, s); + } + + function testFailPermitPastDeadline(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { + deadline = bound(deadline, 0, block.timestamp - 1); + if (privateKey == 0) privateKey = 1; + + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) + ) + ) + ); + + token.permit(owner, to, amount, deadline, v, r, s); + } + + function testFailPermitReplay(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { + if (deadline < block.timestamp) deadline = block.timestamp; + if (privateKey == 0) privateKey = 1; + + address owner = vm.addr(privateKey); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign( + privateKey, + keccak256( + abi.encodePacked( + "\x19\x01", + token.DOMAIN_SEPARATOR(), + keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) + ) + ) + ); + + token.permit(owner, to, amount, deadline, v, r, s); + token.permit(owner, to, amount, deadline, v, r, s); + } +} diff --git a/v2/lib/forge-std/test/mocks/MockERC721.t.sol b/v2/lib/forge-std/test/mocks/MockERC721.t.sol new file mode 100644 index 00000000..f986d796 --- /dev/null +++ b/v2/lib/forge-std/test/mocks/MockERC721.t.sol @@ -0,0 +1,721 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.7.0 <0.9.0; + +import {MockERC721, IERC721TokenReceiver} from "../../src/mocks/MockERC721.sol"; +import {StdCheats} from "../../src/StdCheats.sol"; +import {Test} from "../../src/Test.sol"; + +contract ERC721Recipient is IERC721TokenReceiver { + address public operator; + address public from; + uint256 public id; + bytes public data; + + function onERC721Received(address _operator, address _from, uint256 _id, bytes calldata _data) + public + virtual + override + returns (bytes4) + { + operator = _operator; + from = _from; + id = _id; + data = _data; + + return IERC721TokenReceiver.onERC721Received.selector; + } +} + +contract RevertingERC721Recipient is IERC721TokenReceiver { + function onERC721Received(address, address, uint256, bytes calldata) public virtual override returns (bytes4) { + revert(string(abi.encodePacked(IERC721TokenReceiver.onERC721Received.selector))); + } +} + +contract WrongReturnDataERC721Recipient is IERC721TokenReceiver { + function onERC721Received(address, address, uint256, bytes calldata) public virtual override returns (bytes4) { + return 0xCAFEBEEF; + } +} + +contract NonERC721Recipient {} + +contract Token_ERC721 is MockERC721 { + constructor(string memory _name, string memory _symbol) { + initialize(_name, _symbol); + } + + function tokenURI(uint256) public pure virtual override returns (string memory) {} + + function mint(address to, uint256 tokenId) public virtual { + _mint(to, tokenId); + } + + function burn(uint256 tokenId) public virtual { + _burn(tokenId); + } + + function safeMint(address to, uint256 tokenId) public virtual { + _safeMint(to, tokenId); + } + + function safeMint(address to, uint256 tokenId, bytes memory data) public virtual { + _safeMint(to, tokenId, data); + } +} + +contract MockERC721Test is StdCheats, Test { + Token_ERC721 token; + + function setUp() public { + token = new Token_ERC721("Token", "TKN"); + } + + function invariantMetadata() public view { + assertEq(token.name(), "Token"); + assertEq(token.symbol(), "TKN"); + } + + function testMint() public { + token.mint(address(0xBEEF), 1337); + + assertEq(token.balanceOf(address(0xBEEF)), 1); + assertEq(token.ownerOf(1337), address(0xBEEF)); + } + + function testBurn() public { + token.mint(address(0xBEEF), 1337); + token.burn(1337); + + assertEq(token.balanceOf(address(0xBEEF)), 0); + + vm.expectRevert("NOT_MINTED"); + token.ownerOf(1337); + } + + function testApprove() public { + token.mint(address(this), 1337); + + token.approve(address(0xBEEF), 1337); + + assertEq(token.getApproved(1337), address(0xBEEF)); + } + + function testApproveBurn() public { + token.mint(address(this), 1337); + + token.approve(address(0xBEEF), 1337); + + token.burn(1337); + + assertEq(token.balanceOf(address(this)), 0); + assertEq(token.getApproved(1337), address(0)); + + vm.expectRevert("NOT_MINTED"); + token.ownerOf(1337); + } + + function testApproveAll() public { + token.setApprovalForAll(address(0xBEEF), true); + + assertTrue(token.isApprovedForAll(address(this), address(0xBEEF))); + } + + function testTransferFrom() public { + address from = address(0xABCD); + + token.mint(from, 1337); + + vm.prank(from); + token.approve(address(this), 1337); + + token.transferFrom(from, address(0xBEEF), 1337); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(0xBEEF)); + assertEq(token.balanceOf(address(0xBEEF)), 1); + assertEq(token.balanceOf(from), 0); + } + + function testTransferFromSelf() public { + token.mint(address(this), 1337); + + token.transferFrom(address(this), address(0xBEEF), 1337); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(0xBEEF)); + assertEq(token.balanceOf(address(0xBEEF)), 1); + assertEq(token.balanceOf(address(this)), 0); + } + + function testTransferFromApproveAll() public { + address from = address(0xABCD); + + token.mint(from, 1337); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.transferFrom(from, address(0xBEEF), 1337); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(0xBEEF)); + assertEq(token.balanceOf(address(0xBEEF)), 1); + assertEq(token.balanceOf(from), 0); + } + + function testSafeTransferFromToEOA() public { + address from = address(0xABCD); + + token.mint(from, 1337); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, address(0xBEEF), 1337); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(0xBEEF)); + assertEq(token.balanceOf(address(0xBEEF)), 1); + assertEq(token.balanceOf(from), 0); + } + + function testSafeTransferFromToERC721Recipient() public { + address from = address(0xABCD); + ERC721Recipient recipient = new ERC721Recipient(); + + token.mint(from, 1337); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, address(recipient), 1337); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(recipient)); + assertEq(token.balanceOf(address(recipient)), 1); + assertEq(token.balanceOf(from), 0); + + assertEq(recipient.operator(), address(this)); + assertEq(recipient.from(), from); + assertEq(recipient.id(), 1337); + assertEq(recipient.data(), ""); + } + + function testSafeTransferFromToERC721RecipientWithData() public { + address from = address(0xABCD); + ERC721Recipient recipient = new ERC721Recipient(); + + token.mint(from, 1337); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, address(recipient), 1337, "testing 123"); + + assertEq(token.getApproved(1337), address(0)); + assertEq(token.ownerOf(1337), address(recipient)); + assertEq(token.balanceOf(address(recipient)), 1); + assertEq(token.balanceOf(from), 0); + + assertEq(recipient.operator(), address(this)); + assertEq(recipient.from(), from); + assertEq(recipient.id(), 1337); + assertEq(recipient.data(), "testing 123"); + } + + function testSafeMintToEOA() public { + token.safeMint(address(0xBEEF), 1337); + + assertEq(token.ownerOf(1337), address(address(0xBEEF))); + assertEq(token.balanceOf(address(address(0xBEEF))), 1); + } + + function testSafeMintToERC721Recipient() public { + ERC721Recipient to = new ERC721Recipient(); + + token.safeMint(address(to), 1337); + + assertEq(token.ownerOf(1337), address(to)); + assertEq(token.balanceOf(address(to)), 1); + + assertEq(to.operator(), address(this)); + assertEq(to.from(), address(0)); + assertEq(to.id(), 1337); + assertEq(to.data(), ""); + } + + function testSafeMintToERC721RecipientWithData() public { + ERC721Recipient to = new ERC721Recipient(); + + token.safeMint(address(to), 1337, "testing 123"); + + assertEq(token.ownerOf(1337), address(to)); + assertEq(token.balanceOf(address(to)), 1); + + assertEq(to.operator(), address(this)); + assertEq(to.from(), address(0)); + assertEq(to.id(), 1337); + assertEq(to.data(), "testing 123"); + } + + function testFailMintToZero() public { + token.mint(address(0), 1337); + } + + function testFailDoubleMint() public { + token.mint(address(0xBEEF), 1337); + token.mint(address(0xBEEF), 1337); + } + + function testFailBurnUnMinted() public { + token.burn(1337); + } + + function testFailDoubleBurn() public { + token.mint(address(0xBEEF), 1337); + + token.burn(1337); + token.burn(1337); + } + + function testFailApproveUnMinted() public { + token.approve(address(0xBEEF), 1337); + } + + function testFailApproveUnAuthorized() public { + token.mint(address(0xCAFE), 1337); + + token.approve(address(0xBEEF), 1337); + } + + function testFailTransferFromUnOwned() public { + token.transferFrom(address(0xFEED), address(0xBEEF), 1337); + } + + function testFailTransferFromWrongFrom() public { + token.mint(address(0xCAFE), 1337); + + token.transferFrom(address(0xFEED), address(0xBEEF), 1337); + } + + function testFailTransferFromToZero() public { + token.mint(address(this), 1337); + + token.transferFrom(address(this), address(0), 1337); + } + + function testFailTransferFromNotOwner() public { + token.mint(address(0xFEED), 1337); + + token.transferFrom(address(0xFEED), address(0xBEEF), 1337); + } + + function testFailSafeTransferFromToNonERC721Recipient() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new NonERC721Recipient()), 1337); + } + + function testFailSafeTransferFromToNonERC721RecipientWithData() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new NonERC721Recipient()), 1337, "testing 123"); + } + + function testFailSafeTransferFromToRevertingERC721Recipient() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), 1337); + } + + function testFailSafeTransferFromToRevertingERC721RecipientWithData() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), 1337, "testing 123"); + } + + function testFailSafeTransferFromToERC721RecipientWithWrongReturnData() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), 1337); + } + + function testFailSafeTransferFromToERC721RecipientWithWrongReturnDataWithData() public { + token.mint(address(this), 1337); + + token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), 1337, "testing 123"); + } + + function testFailSafeMintToNonERC721Recipient() public { + token.safeMint(address(new NonERC721Recipient()), 1337); + } + + function testFailSafeMintToNonERC721RecipientWithData() public { + token.safeMint(address(new NonERC721Recipient()), 1337, "testing 123"); + } + + function testFailSafeMintToRevertingERC721Recipient() public { + token.safeMint(address(new RevertingERC721Recipient()), 1337); + } + + function testFailSafeMintToRevertingERC721RecipientWithData() public { + token.safeMint(address(new RevertingERC721Recipient()), 1337, "testing 123"); + } + + function testFailSafeMintToERC721RecipientWithWrongReturnData() public { + token.safeMint(address(new WrongReturnDataERC721Recipient()), 1337); + } + + function testFailSafeMintToERC721RecipientWithWrongReturnDataWithData() public { + token.safeMint(address(new WrongReturnDataERC721Recipient()), 1337, "testing 123"); + } + + function testFailBalanceOfZeroAddress() public view { + token.balanceOf(address(0)); + } + + function testFailOwnerOfUnminted() public view { + token.ownerOf(1337); + } + + function testMetadata(string memory name, string memory symbol) public { + MockERC721 tkn = new Token_ERC721(name, symbol); + + assertEq(tkn.name(), name); + assertEq(tkn.symbol(), symbol); + } + + function testMint(address to, uint256 id) public { + if (to == address(0)) to = address(0xBEEF); + + token.mint(to, id); + + assertEq(token.balanceOf(to), 1); + assertEq(token.ownerOf(id), to); + } + + function testBurn(address to, uint256 id) public { + if (to == address(0)) to = address(0xBEEF); + + token.mint(to, id); + token.burn(id); + + assertEq(token.balanceOf(to), 0); + + vm.expectRevert("NOT_MINTED"); + token.ownerOf(id); + } + + function testApprove(address to, uint256 id) public { + if (to == address(0)) to = address(0xBEEF); + + token.mint(address(this), id); + + token.approve(to, id); + + assertEq(token.getApproved(id), to); + } + + function testApproveBurn(address to, uint256 id) public { + token.mint(address(this), id); + + token.approve(address(to), id); + + token.burn(id); + + assertEq(token.balanceOf(address(this)), 0); + assertEq(token.getApproved(id), address(0)); + + vm.expectRevert("NOT_MINTED"); + token.ownerOf(id); + } + + function testApproveAll(address to, bool approved) public { + token.setApprovalForAll(to, approved); + + assertEq(token.isApprovedForAll(address(this), to), approved); + } + + function testTransferFrom(uint256 id, address to) public { + address from = address(0xABCD); + + if (to == address(0) || to == from) to = address(0xBEEF); + + token.mint(from, id); + + vm.prank(from); + token.approve(address(this), id); + + token.transferFrom(from, to, id); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), to); + assertEq(token.balanceOf(to), 1); + assertEq(token.balanceOf(from), 0); + } + + function testTransferFromSelf(uint256 id, address to) public { + if (to == address(0) || to == address(this)) to = address(0xBEEF); + + token.mint(address(this), id); + + token.transferFrom(address(this), to, id); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), to); + assertEq(token.balanceOf(to), 1); + assertEq(token.balanceOf(address(this)), 0); + } + + function testTransferFromApproveAll(uint256 id, address to) public { + address from = address(0xABCD); + + if (to == address(0) || to == from) to = address(0xBEEF); + + token.mint(from, id); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.transferFrom(from, to, id); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), to); + assertEq(token.balanceOf(to), 1); + assertEq(token.balanceOf(from), 0); + } + + function testSafeTransferFromToEOA(uint256 id, address to) public { + address from = address(0xABCD); + + if (to == address(0) || to == from) to = address(0xBEEF); + + if (uint256(uint160(to)) <= 18 || to.code.length > 0) return; + + token.mint(from, id); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, to, id); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), to); + assertEq(token.balanceOf(to), 1); + assertEq(token.balanceOf(from), 0); + } + + function testSafeTransferFromToERC721Recipient(uint256 id) public { + address from = address(0xABCD); + + ERC721Recipient recipient = new ERC721Recipient(); + + token.mint(from, id); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, address(recipient), id); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), address(recipient)); + assertEq(token.balanceOf(address(recipient)), 1); + assertEq(token.balanceOf(from), 0); + + assertEq(recipient.operator(), address(this)); + assertEq(recipient.from(), from); + assertEq(recipient.id(), id); + assertEq(recipient.data(), ""); + } + + function testSafeTransferFromToERC721RecipientWithData(uint256 id, bytes calldata data) public { + address from = address(0xABCD); + ERC721Recipient recipient = new ERC721Recipient(); + + token.mint(from, id); + + vm.prank(from); + token.setApprovalForAll(address(this), true); + + token.safeTransferFrom(from, address(recipient), id, data); + + assertEq(token.getApproved(id), address(0)); + assertEq(token.ownerOf(id), address(recipient)); + assertEq(token.balanceOf(address(recipient)), 1); + assertEq(token.balanceOf(from), 0); + + assertEq(recipient.operator(), address(this)); + assertEq(recipient.from(), from); + assertEq(recipient.id(), id); + assertEq(recipient.data(), data); + } + + function testSafeMintToEOA(uint256 id, address to) public { + if (to == address(0)) to = address(0xBEEF); + + if (uint256(uint160(to)) <= 18 || to.code.length > 0) return; + + token.safeMint(to, id); + + assertEq(token.ownerOf(id), address(to)); + assertEq(token.balanceOf(address(to)), 1); + } + + function testSafeMintToERC721Recipient(uint256 id) public { + ERC721Recipient to = new ERC721Recipient(); + + token.safeMint(address(to), id); + + assertEq(token.ownerOf(id), address(to)); + assertEq(token.balanceOf(address(to)), 1); + + assertEq(to.operator(), address(this)); + assertEq(to.from(), address(0)); + assertEq(to.id(), id); + assertEq(to.data(), ""); + } + + function testSafeMintToERC721RecipientWithData(uint256 id, bytes calldata data) public { + ERC721Recipient to = new ERC721Recipient(); + + token.safeMint(address(to), id, data); + + assertEq(token.ownerOf(id), address(to)); + assertEq(token.balanceOf(address(to)), 1); + + assertEq(to.operator(), address(this)); + assertEq(to.from(), address(0)); + assertEq(to.id(), id); + assertEq(to.data(), data); + } + + function testFailMintToZero(uint256 id) public { + token.mint(address(0), id); + } + + function testFailDoubleMint(uint256 id, address to) public { + if (to == address(0)) to = address(0xBEEF); + + token.mint(to, id); + token.mint(to, id); + } + + function testFailBurnUnMinted(uint256 id) public { + token.burn(id); + } + + function testFailDoubleBurn(uint256 id, address to) public { + if (to == address(0)) to = address(0xBEEF); + + token.mint(to, id); + + token.burn(id); + token.burn(id); + } + + function testFailApproveUnMinted(uint256 id, address to) public { + token.approve(to, id); + } + + function testFailApproveUnAuthorized(address owner, uint256 id, address to) public { + if (owner == address(0) || owner == address(this)) owner = address(0xBEEF); + + token.mint(owner, id); + + token.approve(to, id); + } + + function testFailTransferFromUnOwned(address from, address to, uint256 id) public { + token.transferFrom(from, to, id); + } + + function testFailTransferFromWrongFrom(address owner, address from, address to, uint256 id) public { + if (owner == address(0)) to = address(0xBEEF); + if (from == owner) revert(); + + token.mint(owner, id); + + token.transferFrom(from, to, id); + } + + function testFailTransferFromToZero(uint256 id) public { + token.mint(address(this), id); + + token.transferFrom(address(this), address(0), id); + } + + function testFailTransferFromNotOwner(address from, address to, uint256 id) public { + if (from == address(this)) from = address(0xBEEF); + + token.mint(from, id); + + token.transferFrom(from, to, id); + } + + function testFailSafeTransferFromToNonERC721Recipient(uint256 id) public { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new NonERC721Recipient()), id); + } + + function testFailSafeTransferFromToNonERC721RecipientWithData(uint256 id, bytes calldata data) public { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new NonERC721Recipient()), id, data); + } + + function testFailSafeTransferFromToRevertingERC721Recipient(uint256 id) public { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), id); + } + + function testFailSafeTransferFromToRevertingERC721RecipientWithData(uint256 id, bytes calldata data) public { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), id, data); + } + + function testFailSafeTransferFromToERC721RecipientWithWrongReturnData(uint256 id) public { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), id); + } + + function testFailSafeTransferFromToERC721RecipientWithWrongReturnDataWithData(uint256 id, bytes calldata data) + public + { + token.mint(address(this), id); + + token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), id, data); + } + + function testFailSafeMintToNonERC721Recipient(uint256 id) public { + token.safeMint(address(new NonERC721Recipient()), id); + } + + function testFailSafeMintToNonERC721RecipientWithData(uint256 id, bytes calldata data) public { + token.safeMint(address(new NonERC721Recipient()), id, data); + } + + function testFailSafeMintToRevertingERC721Recipient(uint256 id) public { + token.safeMint(address(new RevertingERC721Recipient()), id); + } + + function testFailSafeMintToRevertingERC721RecipientWithData(uint256 id, bytes calldata data) public { + token.safeMint(address(new RevertingERC721Recipient()), id, data); + } + + function testFailSafeMintToERC721RecipientWithWrongReturnData(uint256 id) public { + token.safeMint(address(new WrongReturnDataERC721Recipient()), id); + } + + function testFailSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256 id, bytes calldata data) public { + token.safeMint(address(new WrongReturnDataERC721Recipient()), id, data); + } + + function testFailOwnerOfUnminted(uint256 id) public view { + token.ownerOf(id); + } +} diff --git a/v2/script/Counter.s.sol b/v2/script/Counter.s.sol new file mode 100644 index 00000000..cdc1fe9a --- /dev/null +++ b/v2/script/Counter.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console} from "forge-std/Script.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterScript is Script { + Counter public counter; + + function setUp() public {} + + function run() public { + vm.startBroadcast(); + + counter = new Counter(); + + vm.stopBroadcast(); + } +} diff --git a/v2/src/Counter.sol b/v2/src/Counter.sol new file mode 100644 index 00000000..aded7997 --- /dev/null +++ b/v2/src/Counter.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract Counter { + uint256 public number; + + function setNumber(uint256 newNumber) public { + number = newNumber; + } + + function increment() public { + number++; + } +} diff --git a/v2/test/Counter.t.sol b/v2/test/Counter.t.sol new file mode 100644 index 00000000..54b724f7 --- /dev/null +++ b/v2/test/Counter.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterTest is Test { + Counter public counter; + + function setUp() public { + counter = new Counter(); + counter.setNumber(0); + } + + function test_Increment() public { + counter.increment(); + assertEq(counter.number(), 1); + } + + function testFuzz_SetNumber(uint256 x) public { + counter.setNumber(x); + assertEq(counter.number(), x); + } +} From 8fafcbd3f8841472be558a9b250d94061f16e514 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 18:30:16 +0200 Subject: [PATCH 11/60] use npm --- v2/foundry.toml | 15 +- v2/lib/forge-std/.gitattributes | 1 - v2/lib/forge-std/.github/workflows/ci.yml | 128 - v2/lib/forge-std/.github/workflows/sync.yml | 31 - v2/lib/forge-std/.gitignore | 4 - v2/lib/forge-std/LICENSE-APACHE | 203 - v2/lib/forge-std/LICENSE-MIT | 25 - v2/lib/forge-std/README.md | 250 - v2/lib/forge-std/foundry.toml | 21 - v2/lib/forge-std/package.json | 16 - v2/lib/forge-std/scripts/vm.py | 635 - v2/lib/forge-std/src/Base.sol | 35 - v2/lib/forge-std/src/Script.sol | 27 - v2/lib/forge-std/src/StdAssertions.sol | 669 - v2/lib/forge-std/src/StdChains.sol | 259 - v2/lib/forge-std/src/StdCheats.sol | 817 - v2/lib/forge-std/src/StdError.sol | 15 - v2/lib/forge-std/src/StdInvariant.sol | 122 - v2/lib/forge-std/src/StdJson.sol | 179 - v2/lib/forge-std/src/StdMath.sol | 43 - v2/lib/forge-std/src/StdStorage.sol | 473 - v2/lib/forge-std/src/StdStyle.sol | 333 - v2/lib/forge-std/src/StdToml.sol | 179 - v2/lib/forge-std/src/StdUtils.sol | 226 - v2/lib/forge-std/src/Test.sol | 33 - v2/lib/forge-std/src/Vm.sol | 1839 --- v2/lib/forge-std/src/console.sol | 1552 -- v2/lib/forge-std/src/console2.sol | 4 - v2/lib/forge-std/src/interfaces/IERC1155.sol | 105 - v2/lib/forge-std/src/interfaces/IERC165.sol | 12 - v2/lib/forge-std/src/interfaces/IERC20.sol | 43 - v2/lib/forge-std/src/interfaces/IERC4626.sol | 190 - v2/lib/forge-std/src/interfaces/IERC721.sol | 164 - .../forge-std/src/interfaces/IMulticall3.sol | 73 - v2/lib/forge-std/src/mocks/MockERC20.sol | 234 - v2/lib/forge-std/src/mocks/MockERC721.sol | 231 - v2/lib/forge-std/src/safeconsole.sol | 13248 ---------------- v2/lib/forge-std/test/StdAssertions.t.sol | 145 - v2/lib/forge-std/test/StdChains.t.sol | 226 - v2/lib/forge-std/test/StdCheats.t.sol | 618 - v2/lib/forge-std/test/StdError.t.sol | 120 - v2/lib/forge-std/test/StdJson.t.sol | 49 - v2/lib/forge-std/test/StdMath.t.sol | 212 - v2/lib/forge-std/test/StdStorage.t.sol | 471 - v2/lib/forge-std/test/StdStyle.t.sol | 110 - v2/lib/forge-std/test/StdToml.t.sol | 49 - v2/lib/forge-std/test/StdUtils.t.sol | 342 - v2/lib/forge-std/test/Vm.t.sol | 15 - .../test/compilation/CompilationScript.sol | 10 - .../compilation/CompilationScriptBase.sol | 10 - .../test/compilation/CompilationTest.sol | 10 - .../test/compilation/CompilationTestBase.sol | 10 - .../test/fixtures/broadcast.log.json | 187 - v2/lib/forge-std/test/fixtures/test.json | 8 - v2/lib/forge-std/test/fixtures/test.toml | 6 - v2/lib/forge-std/test/mocks/MockERC20.t.sol | 441 - v2/lib/forge-std/test/mocks/MockERC721.t.sol | 721 - v2/package-lock.json | 29 + v2/package.json | 19 + 59 files changed, 61 insertions(+), 26181 deletions(-) delete mode 100644 v2/lib/forge-std/.gitattributes delete mode 100644 v2/lib/forge-std/.github/workflows/ci.yml delete mode 100644 v2/lib/forge-std/.github/workflows/sync.yml delete mode 100644 v2/lib/forge-std/.gitignore delete mode 100644 v2/lib/forge-std/LICENSE-APACHE delete mode 100644 v2/lib/forge-std/LICENSE-MIT delete mode 100644 v2/lib/forge-std/README.md delete mode 100644 v2/lib/forge-std/foundry.toml delete mode 100644 v2/lib/forge-std/package.json delete mode 100755 v2/lib/forge-std/scripts/vm.py delete mode 100644 v2/lib/forge-std/src/Base.sol delete mode 100644 v2/lib/forge-std/src/Script.sol delete mode 100644 v2/lib/forge-std/src/StdAssertions.sol delete mode 100644 v2/lib/forge-std/src/StdChains.sol delete mode 100644 v2/lib/forge-std/src/StdCheats.sol delete mode 100644 v2/lib/forge-std/src/StdError.sol delete mode 100644 v2/lib/forge-std/src/StdInvariant.sol delete mode 100644 v2/lib/forge-std/src/StdJson.sol delete mode 100644 v2/lib/forge-std/src/StdMath.sol delete mode 100644 v2/lib/forge-std/src/StdStorage.sol delete mode 100644 v2/lib/forge-std/src/StdStyle.sol delete mode 100644 v2/lib/forge-std/src/StdToml.sol delete mode 100644 v2/lib/forge-std/src/StdUtils.sol delete mode 100644 v2/lib/forge-std/src/Test.sol delete mode 100644 v2/lib/forge-std/src/Vm.sol delete mode 100644 v2/lib/forge-std/src/console.sol delete mode 100644 v2/lib/forge-std/src/console2.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IERC1155.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IERC165.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IERC20.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IERC4626.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IERC721.sol delete mode 100644 v2/lib/forge-std/src/interfaces/IMulticall3.sol delete mode 100644 v2/lib/forge-std/src/mocks/MockERC20.sol delete mode 100644 v2/lib/forge-std/src/mocks/MockERC721.sol delete mode 100644 v2/lib/forge-std/src/safeconsole.sol delete mode 100644 v2/lib/forge-std/test/StdAssertions.t.sol delete mode 100644 v2/lib/forge-std/test/StdChains.t.sol delete mode 100644 v2/lib/forge-std/test/StdCheats.t.sol delete mode 100644 v2/lib/forge-std/test/StdError.t.sol delete mode 100644 v2/lib/forge-std/test/StdJson.t.sol delete mode 100644 v2/lib/forge-std/test/StdMath.t.sol delete mode 100644 v2/lib/forge-std/test/StdStorage.t.sol delete mode 100644 v2/lib/forge-std/test/StdStyle.t.sol delete mode 100644 v2/lib/forge-std/test/StdToml.t.sol delete mode 100644 v2/lib/forge-std/test/StdUtils.t.sol delete mode 100644 v2/lib/forge-std/test/Vm.t.sol delete mode 100644 v2/lib/forge-std/test/compilation/CompilationScript.sol delete mode 100644 v2/lib/forge-std/test/compilation/CompilationScriptBase.sol delete mode 100644 v2/lib/forge-std/test/compilation/CompilationTest.sol delete mode 100644 v2/lib/forge-std/test/compilation/CompilationTestBase.sol delete mode 100644 v2/lib/forge-std/test/fixtures/broadcast.log.json delete mode 100644 v2/lib/forge-std/test/fixtures/test.json delete mode 100644 v2/lib/forge-std/test/fixtures/test.toml delete mode 100644 v2/lib/forge-std/test/mocks/MockERC20.t.sol delete mode 100644 v2/lib/forge-std/test/mocks/MockERC721.t.sol create mode 100644 v2/package-lock.json create mode 100644 v2/package.json diff --git a/v2/foundry.toml b/v2/foundry.toml index 25b918f9..d4beb9ba 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -1,6 +1,17 @@ [profile.default] src = "src" out = "out" -libs = ["lib"] +libs = ["node_modules"] -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options +remappings = [ + "forge-std/=node_modules/forge-std/src", + "ds-test/=node_modules/ds-test/src", + "src/=src", + "test/=test", +] + +fs_permissions = [ + { access = "read-write", path = "./script" }, +] + +allow_paths = ["../core"] \ No newline at end of file diff --git a/v2/lib/forge-std/.gitattributes b/v2/lib/forge-std/.gitattributes deleted file mode 100644 index 27042d45..00000000 --- a/v2/lib/forge-std/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -src/Vm.sol linguist-generated diff --git a/v2/lib/forge-std/.github/workflows/ci.yml b/v2/lib/forge-std/.github/workflows/ci.yml deleted file mode 100644 index 2d68e91f..00000000 --- a/v2/lib/forge-std/.github/workflows/ci.yml +++ /dev/null @@ -1,128 +0,0 @@ -name: CI - -on: - workflow_dispatch: - pull_request: - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - # Backwards compatibility checks: - # - the oldest and newest version of each supported minor version - # - versions with specific issues - - name: Check compatibility with latest - if: always() - run: | - output=$(forge build --skip test) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.8.0 - if: always() - run: | - output=$(forge build --skip test --use solc:0.8.0) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.7.6 - if: always() - run: | - output=$(forge build --skip test --use solc:0.7.6) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.7.0 - if: always() - run: | - output=$(forge build --skip test --use solc:0.7.0) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.6.12 - if: always() - run: | - output=$(forge build --skip test --use solc:0.6.12) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.6.2 - if: always() - run: | - output=$(forge build --skip test --use solc:0.6.2) - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - # via-ir compilation time checks. - - name: Measure compilation time of Test with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTest.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of TestBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTestBase.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of Script with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScript.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of ScriptBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScriptBase.sol --use solc:0.8.17 --via-ir - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Run tests - run: forge test -vvv - - fmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Check formatting - run: forge fmt --check diff --git a/v2/lib/forge-std/.github/workflows/sync.yml b/v2/lib/forge-std/.github/workflows/sync.yml deleted file mode 100644 index 9b170f0b..00000000 --- a/v2/lib/forge-std/.github/workflows/sync.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Sync Release Branch - -on: - release: - types: - - created - -jobs: - sync-release-branch: - runs-on: ubuntu-latest - if: startsWith(github.event.release.tag_name, 'v1') - steps: - - name: Check out the repo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: v1 - - # The email is derived from the bots user id, - # found here: https://api.github.com/users/github-actions%5Bbot%5D - - name: Configure Git - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - - name: Sync Release Branch - run: | - git fetch --tags - git checkout v1 - git reset --hard ${GITHUB_REF} - git push --force diff --git a/v2/lib/forge-std/.gitignore b/v2/lib/forge-std/.gitignore deleted file mode 100644 index 756106d3..00000000 --- a/v2/lib/forge-std/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -cache/ -out/ -.vscode -.idea diff --git a/v2/lib/forge-std/LICENSE-APACHE b/v2/lib/forge-std/LICENSE-APACHE deleted file mode 100644 index cf01a499..00000000 --- a/v2/lib/forge-std/LICENSE-APACHE +++ /dev/null @@ -1,203 +0,0 @@ -Copyright Contributors to Forge Standard Library - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/v2/lib/forge-std/LICENSE-MIT b/v2/lib/forge-std/LICENSE-MIT deleted file mode 100644 index 28f98304..00000000 --- a/v2/lib/forge-std/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright Contributors to Forge Standard Library - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER -DEALINGS IN THE SOFTWARE.R diff --git a/v2/lib/forge-std/README.md b/v2/lib/forge-std/README.md deleted file mode 100644 index 0cb86602..00000000 --- a/v2/lib/forge-std/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# Forge Standard Library • [![CI status](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml/badge.svg)](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml) - -Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. - -**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://book.getfoundry.sh/forge/forge-std.html).** - -## Install - -```bash -forge install foundry-rs/forge-std -``` - -## Contracts -### stdError - -This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler builtin errors. - -See the contract itself for all error codes. - -#### Example usage - -```solidity - -import "forge-std/Test.sol"; - -contract TestContract is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } -} - -contract ErrorsTest { - function arithmeticError(uint256 a) public { - uint256 a = a - 100; - } -} -``` - -### stdStorage - -This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). - -This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. - -I.e.: -```solidity -struct T { - // depth 0 - uint256 a; - // depth 1 - uint256 b; -} -``` - -#### Example usage - -```solidity -import "forge-std/Test.sol"; - -contract TestContract is Test { - using stdStorage for StdStorage; - - Storage test; - - function setUp() public { - test = new Storage(); - } - - function testFindExists() public { - // Lets say we want to find the slot for the public - // variable `exists`. We just pass in the function selector - // to the `find` command - uint256 slot = stdstore.target(address(test)).sig("exists()").find(); - assertEq(slot, 0); - } - - function testWriteExists() public { - // Lets say we want to write to the slot for the public - // variable `exists`. We just pass in the function selector - // to the `checked_write` command - stdstore.target(address(test)).sig("exists()").checked_write(100); - assertEq(test.exists(), 100); - } - - // It supports arbitrary storage layouts, like assembly based storage locations - function testFindHidden() public { - // `hidden` is a random hash of a bytes, iteration through slots would - // not find it. Our mechanism does - // Also, you can use the selector instead of a string - uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find(); - assertEq(slot, uint256(keccak256("my.random.var"))); - } - - // If targeting a mapping, you have to pass in the keys necessary to perform the find - // i.e.: - function testFindMapping() public { - uint256 slot = stdstore - .target(address(test)) - .sig(test.map_addr.selector) - .with_key(address(this)) - .find(); - // in the `Storage` constructor, we wrote that this address' value was 1 in the map - // so when we load the slot, we expect it to be 1 - assertEq(uint(vm.load(address(test), bytes32(slot))), 1); - } - - // If the target is a struct, you can specify the field depth: - function testFindStruct() public { - // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc. - uint256 slot_for_a_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(0) - .find(); - - uint256 slot_for_b_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(1) - .find(); - - assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1); - assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2); - } -} - -// A complex storage contract -contract Storage { - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - constructor() { - map_addr[msg.sender] = 1; - } - - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - // mapping(address => Packed) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basicStruct = UnpackedStruct({ - a: 1, - b: 2 - }); - - function hidden() public view returns (bytes32 t) { - // an extremely hidden storage slot - bytes32 slot = keccak256("my.random.var"); - assembly { - t := sload(slot) - } - } -} -``` - -### stdCheats - -This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for address that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. - - -#### Example usage: -```solidity - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; - -// Inherit the stdCheats -contract StdCheatsTest is Test { - Bar test; - function setUp() public { - test = new Bar(); - } - - function testHoax() public { - // we call `hoax`, which gives the target address - // eth and then calls `prank` - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - - // overloaded to allow you to specify how much eth to - // initialize the address with - hoax(address(1337), 1); - test.bar{value: 1}(address(1337)); - } - - function testStartHoax() public { - // we call `startHoax`, which gives the target address - // eth and then calls `startPrank` - // - // it is also overloaded so that you can specify an eth amount - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } -} - -contract Bar { - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } -} -``` - -### Std Assertions - -Contains various assertions. - -### `console.log` - -Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log). -It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console2.sol"; -... -console2.log(someValue); -``` - -If you need compatibility with Hardhat, you must use the standard `console.sol` instead. -Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console.sol"; -... -console.log(someValue); -``` - -## License - -Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license. diff --git a/v2/lib/forge-std/foundry.toml b/v2/lib/forge-std/foundry.toml deleted file mode 100644 index 2bc66fa7..00000000 --- a/v2/lib/forge-std/foundry.toml +++ /dev/null @@ -1,21 +0,0 @@ -[profile.default] -fs_permissions = [{ access = "read-write", path = "./"}] - -[rpc_endpoints] -# The RPC URLs are modified versions of the default for testing initialization. -mainnet = "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX" # Different API key. -optimism_sepolia = "https://sepolia.optimism.io/" # Adds a trailing slash. -arbitrum_one_sepolia = "https://sepolia-rollup.arbitrum.io/rpc/" # Adds a trailing slash. -needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}" - -[fmt] -# These are all the `forge fmt` defaults. -line_length = 120 -tab_width = 4 -bracket_spacing = false -int_types = 'long' -multiline_func_header = 'attributes_first' -quote_style = 'double' -number_underscore = 'preserve' -single_line_statement_blocks = 'preserve' -ignore = ["src/console.sol", "src/console2.sol"] \ No newline at end of file diff --git a/v2/lib/forge-std/package.json b/v2/lib/forge-std/package.json deleted file mode 100644 index 7e661858..00000000 --- a/v2/lib/forge-std/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "forge-std", - "version": "1.9.1", - "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", - "homepage": "https://book.getfoundry.sh/forge/forge-std", - "bugs": "https://github.com/foundry-rs/forge-std/issues", - "license": "(Apache-2.0 OR MIT)", - "author": "Contributors to Forge Standard Library", - "files": [ - "src/**/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/foundry-rs/forge-std.git" - } -} diff --git a/v2/lib/forge-std/scripts/vm.py b/v2/lib/forge-std/scripts/vm.py deleted file mode 100755 index f0537db9..00000000 --- a/v2/lib/forge-std/scripts/vm.py +++ /dev/null @@ -1,635 +0,0 @@ -#!/usr/bin/env python3 - -import copy -import json -import re -import subprocess -from enum import Enum as PyEnum -from typing import Callable -from urllib import request - -VoidFn = Callable[[], None] - -CHEATCODES_JSON_URL = "https://raw.githubusercontent.com/foundry-rs/foundry/master/crates/cheatcodes/assets/cheatcodes.json" -OUT_PATH = "src/Vm.sol" - -VM_SAFE_DOC = """\ -/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may -/// result in Script simulations differing from on-chain execution. It is recommended to only use -/// these cheats in scripts. -""" - -VM_DOC = """\ -/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used -/// in tests, but it is not recommended to use these cheats in scripts. -""" - - -def main(): - json_str = request.urlopen(CHEATCODES_JSON_URL).read().decode("utf-8") - contract = Cheatcodes.from_json(json_str) - - ccs = contract.cheatcodes - ccs = list(filter(lambda cc: cc.status not in ["experimental", "internal"], ccs)) - ccs.sort(key=lambda cc: cc.func.id) - - safe = list(filter(lambda cc: cc.safety == "safe", ccs)) - safe.sort(key=CmpCheatcode) - unsafe = list(filter(lambda cc: cc.safety == "unsafe", ccs)) - unsafe.sort(key=CmpCheatcode) - assert len(safe) + len(unsafe) == len(ccs) - - prefix_with_group_headers(safe) - prefix_with_group_headers(unsafe) - - out = "" - - out += "// Automatically @generated by scripts/vm.py. Do not modify manually.\n\n" - - pp = CheatcodesPrinter( - spdx_identifier="MIT OR Apache-2.0", - solidity_requirement=">=0.6.2 <0.9.0", - abicoder_pragma=True, - ) - pp.p_prelude() - pp.prelude = False - out += pp.finish() - - out += "\n\n" - out += VM_SAFE_DOC - vm_safe = Cheatcodes( - # TODO: Custom errors were introduced in 0.8.4 - errors=[], # contract.errors - events=contract.events, - enums=contract.enums, - structs=contract.structs, - cheatcodes=safe, - ) - pp.p_contract(vm_safe, "VmSafe") - out += pp.finish() - - out += "\n\n" - out += VM_DOC - vm_unsafe = Cheatcodes( - errors=[], - events=[], - enums=[], - structs=[], - cheatcodes=unsafe, - ) - pp.p_contract(vm_unsafe, "Vm", "VmSafe") - out += pp.finish() - - # Compatibility with <0.8.0 - def memory_to_calldata(m: re.Match) -> str: - return " calldata " + m.group(1) - - out = re.sub(r" memory (.*returns)", memory_to_calldata, out) - - with open(OUT_PATH, "w") as f: - f.write(out) - - forge_fmt = ["forge", "fmt", OUT_PATH] - res = subprocess.run(forge_fmt) - assert res.returncode == 0, f"command failed: {forge_fmt}" - - print(f"Wrote to {OUT_PATH}") - - -class CmpCheatcode: - cheatcode: "Cheatcode" - - def __init__(self, cheatcode: "Cheatcode"): - self.cheatcode = cheatcode - - def __lt__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) < 0 - - def __eq__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) == 0 - - def __gt__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) > 0 - - -def cmp_cheatcode(a: "Cheatcode", b: "Cheatcode") -> int: - if a.group != b.group: - return -1 if a.group < b.group else 1 - if a.status != b.status: - return -1 if a.status < b.status else 1 - if a.safety != b.safety: - return -1 if a.safety < b.safety else 1 - if a.func.id != b.func.id: - return -1 if a.func.id < b.func.id else 1 - return 0 - - -# HACK: A way to add group header comments without having to modify printer code -def prefix_with_group_headers(cheats: list["Cheatcode"]): - s = set() - for i, cheat in enumerate(cheats): - if cheat.group in s: - continue - - s.add(cheat.group) - - c = copy.deepcopy(cheat) - c.func.description = "" - c.func.declaration = f"// ======== {group(c.group)} ========" - cheats.insert(i, c) - return cheats - - -def group(s: str) -> str: - if s == "evm": - return "EVM" - if s == "json": - return "JSON" - return s[0].upper() + s[1:] - - -class Visibility(PyEnum): - EXTERNAL: str = "external" - PUBLIC: str = "public" - INTERNAL: str = "internal" - PRIVATE: str = "private" - - def __str__(self): - return self.value - - -class Mutability(PyEnum): - PURE: str = "pure" - VIEW: str = "view" - NONE: str = "" - - def __str__(self): - return self.value - - -class Function: - id: str - description: str - declaration: str - visibility: Visibility - mutability: Mutability - signature: str - selector: str - selector_bytes: bytes - - def __init__( - self, - id: str, - description: str, - declaration: str, - visibility: Visibility, - mutability: Mutability, - signature: str, - selector: str, - selector_bytes: bytes, - ): - self.id = id - self.description = description - self.declaration = declaration - self.visibility = visibility - self.mutability = mutability - self.signature = signature - self.selector = selector - self.selector_bytes = selector_bytes - - @staticmethod - def from_dict(d: dict) -> "Function": - return Function( - d["id"], - d["description"], - d["declaration"], - Visibility(d["visibility"]), - Mutability(d["mutability"]), - d["signature"], - d["selector"], - bytes(d["selectorBytes"]), - ) - - -class Cheatcode: - func: Function - group: str - status: str - safety: str - - def __init__(self, func: Function, group: str, status: str, safety: str): - self.func = func - self.group = group - self.status = status - self.safety = safety - - @staticmethod - def from_dict(d: dict) -> "Cheatcode": - return Cheatcode( - Function.from_dict(d["func"]), - str(d["group"]), - str(d["status"]), - str(d["safety"]), - ) - - -class Error: - name: str - description: str - declaration: str - - def __init__(self, name: str, description: str, declaration: str): - self.name = name - self.description = description - self.declaration = declaration - - @staticmethod - def from_dict(d: dict) -> "Error": - return Error(**d) - - -class Event: - name: str - description: str - declaration: str - - def __init__(self, name: str, description: str, declaration: str): - self.name = name - self.description = description - self.declaration = declaration - - @staticmethod - def from_dict(d: dict) -> "Event": - return Event(**d) - - -class EnumVariant: - name: str - description: str - - def __init__(self, name: str, description: str): - self.name = name - self.description = description - - -class Enum: - name: str - description: str - variants: list[EnumVariant] - - def __init__(self, name: str, description: str, variants: list[EnumVariant]): - self.name = name - self.description = description - self.variants = variants - - @staticmethod - def from_dict(d: dict) -> "Enum": - return Enum( - d["name"], - d["description"], - list(map(lambda v: EnumVariant(**v), d["variants"])), - ) - - -class StructField: - name: str - ty: str - description: str - - def __init__(self, name: str, ty: str, description: str): - self.name = name - self.ty = ty - self.description = description - - -class Struct: - name: str - description: str - fields: list[StructField] - - def __init__(self, name: str, description: str, fields: list[StructField]): - self.name = name - self.description = description - self.fields = fields - - @staticmethod - def from_dict(d: dict) -> "Struct": - return Struct( - d["name"], - d["description"], - list(map(lambda f: StructField(**f), d["fields"])), - ) - - -class Cheatcodes: - errors: list[Error] - events: list[Event] - enums: list[Enum] - structs: list[Struct] - cheatcodes: list[Cheatcode] - - def __init__( - self, - errors: list[Error], - events: list[Event], - enums: list[Enum], - structs: list[Struct], - cheatcodes: list[Cheatcode], - ): - self.errors = errors - self.events = events - self.enums = enums - self.structs = structs - self.cheatcodes = cheatcodes - - @staticmethod - def from_dict(d: dict) -> "Cheatcodes": - return Cheatcodes( - errors=[Error.from_dict(e) for e in d["errors"]], - events=[Event.from_dict(e) for e in d["events"]], - enums=[Enum.from_dict(e) for e in d["enums"]], - structs=[Struct.from_dict(e) for e in d["structs"]], - cheatcodes=[Cheatcode.from_dict(e) for e in d["cheatcodes"]], - ) - - @staticmethod - def from_json(s) -> "Cheatcodes": - return Cheatcodes.from_dict(json.loads(s)) - - @staticmethod - def from_json_file(file_path: str) -> "Cheatcodes": - with open(file_path, "r") as f: - return Cheatcodes.from_dict(json.load(f)) - - -class Item(PyEnum): - ERROR: str = "error" - EVENT: str = "event" - ENUM: str = "enum" - STRUCT: str = "struct" - FUNCTION: str = "function" - - -class ItemOrder: - _list: list[Item] - - def __init__(self, list: list[Item]) -> None: - assert len(list) <= len(Item), "list must not contain more items than Item" - assert len(list) == len(set(list)), "list must not contain duplicates" - self._list = list - pass - - def get_list(self) -> list[Item]: - return self._list - - @staticmethod - def default() -> "ItemOrder": - return ItemOrder( - [ - Item.ERROR, - Item.EVENT, - Item.ENUM, - Item.STRUCT, - Item.FUNCTION, - ] - ) - - -class CheatcodesPrinter: - buffer: str - - prelude: bool - spdx_identifier: str - solidity_requirement: str - abicoder_v2: bool - - block_doc_style: bool - - indent_level: int - _indent_str: str - - nl_str: str - - items_order: ItemOrder - - def __init__( - self, - buffer: str = "", - prelude: bool = True, - spdx_identifier: str = "UNLICENSED", - solidity_requirement: str = "", - abicoder_pragma: bool = False, - block_doc_style: bool = False, - indent_level: int = 0, - indent_with: int | str = 4, - nl_str: str = "\n", - items_order: ItemOrder = ItemOrder.default(), - ): - self.prelude = prelude - self.spdx_identifier = spdx_identifier - self.solidity_requirement = solidity_requirement - self.abicoder_v2 = abicoder_pragma - self.block_doc_style = block_doc_style - self.buffer = buffer - self.indent_level = indent_level - self.nl_str = nl_str - - if isinstance(indent_with, int): - assert indent_with >= 0 - self._indent_str = " " * indent_with - elif isinstance(indent_with, str): - self._indent_str = indent_with - else: - assert False, "indent_with must be int or str" - - self.items_order = items_order - - def finish(self) -> str: - ret = self.buffer.rstrip() - self.buffer = "" - return ret - - def p_contract(self, contract: Cheatcodes, name: str, inherits: str = ""): - if self.prelude: - self.p_prelude(contract) - - self._p_str("interface ") - name = name.strip() - if name != "": - self._p_str(name) - self._p_str(" ") - if inherits != "": - self._p_str("is ") - self._p_str(inherits) - self._p_str(" ") - self._p_str("{") - self._p_nl() - self._with_indent(lambda: self._p_items(contract)) - self._p_str("}") - self._p_nl() - - def _p_items(self, contract: Cheatcodes): - for item in self.items_order.get_list(): - if item == Item.ERROR: - self.p_errors(contract.errors) - elif item == Item.EVENT: - self.p_events(contract.events) - elif item == Item.ENUM: - self.p_enums(contract.enums) - elif item == Item.STRUCT: - self.p_structs(contract.structs) - elif item == Item.FUNCTION: - self.p_functions(contract.cheatcodes) - else: - assert False, f"unknown item {item}" - - def p_prelude(self, contract: Cheatcodes | None = None): - self._p_str(f"// SPDX-License-Identifier: {self.spdx_identifier}") - self._p_nl() - - if self.solidity_requirement != "": - req = self.solidity_requirement - elif contract and len(contract.errors) > 0: - req = ">=0.8.4 <0.9.0" - else: - req = ">=0.6.0 <0.9.0" - self._p_str(f"pragma solidity {req};") - self._p_nl() - - if self.abicoder_v2: - self._p_str("pragma experimental ABIEncoderV2;") - self._p_nl() - - self._p_nl() - - def p_errors(self, errors: list[Error]): - for error in errors: - self._p_line(lambda: self.p_error(error)) - - def p_error(self, error: Error): - self._p_comment(error.description, doc=True) - self._p_line(lambda: self._p_str(error.declaration)) - - def p_events(self, events: list[Event]): - for event in events: - self._p_line(lambda: self.p_event(event)) - - def p_event(self, event: Event): - self._p_comment(event.description, doc=True) - self._p_line(lambda: self._p_str(event.declaration)) - - def p_enums(self, enums: list[Enum]): - for enum in enums: - self._p_line(lambda: self.p_enum(enum)) - - def p_enum(self, enum: Enum): - self._p_comment(enum.description, doc=True) - self._p_line(lambda: self._p_str(f"enum {enum.name} {{")) - self._with_indent(lambda: self.p_enum_variants(enum.variants)) - self._p_line(lambda: self._p_str("}")) - - def p_enum_variants(self, variants: list[EnumVariant]): - for i, variant in enumerate(variants): - self._p_indent() - self._p_comment(variant.description) - - self._p_indent() - self._p_str(variant.name) - if i < len(variants) - 1: - self._p_str(",") - self._p_nl() - - def p_structs(self, structs: list[Struct]): - for struct in structs: - self._p_line(lambda: self.p_struct(struct)) - - def p_struct(self, struct: Struct): - self._p_comment(struct.description, doc=True) - self._p_line(lambda: self._p_str(f"struct {struct.name} {{")) - self._with_indent(lambda: self.p_struct_fields(struct.fields)) - self._p_line(lambda: self._p_str("}")) - - def p_struct_fields(self, fields: list[StructField]): - for field in fields: - self._p_line(lambda: self.p_struct_field(field)) - - def p_struct_field(self, field: StructField): - self._p_comment(field.description) - self._p_indented(lambda: self._p_str(f"{field.ty} {field.name};")) - - def p_functions(self, cheatcodes: list[Cheatcode]): - for cheatcode in cheatcodes: - self._p_line(lambda: self.p_function(cheatcode.func)) - - def p_function(self, func: Function): - self._p_comment(func.description, doc=True) - self._p_line(lambda: self._p_str(func.declaration)) - - def _p_comment(self, s: str, doc: bool = False): - s = s.strip() - if s == "": - return - - s = map(lambda line: line.lstrip(), s.split("\n")) - if self.block_doc_style: - self._p_str("/*") - if doc: - self._p_str("*") - self._p_nl() - for line in s: - self._p_indent() - self._p_str(" ") - if doc: - self._p_str("* ") - self._p_str(line) - self._p_nl() - self._p_indent() - self._p_str(" */") - self._p_nl() - else: - first_line = True - for line in s: - if not first_line: - self._p_indent() - first_line = False - - if doc: - self._p_str("/// ") - else: - self._p_str("// ") - self._p_str(line) - self._p_nl() - - def _with_indent(self, f: VoidFn): - self._inc_indent() - f() - self._dec_indent() - - def _p_line(self, f: VoidFn): - self._p_indent() - f() - self._p_nl() - - def _p_indented(self, f: VoidFn): - self._p_indent() - f() - - def _p_indent(self): - for _ in range(self.indent_level): - self._p_str(self._indent_str) - - def _p_nl(self): - self._p_str(self.nl_str) - - def _p_str(self, txt: str): - self.buffer += txt - - def _inc_indent(self): - self.indent_level += 1 - - def _dec_indent(self): - self.indent_level -= 1 - - -if __name__ == "__main__": - main() diff --git a/v2/lib/forge-std/src/Base.sol b/v2/lib/forge-std/src/Base.sol deleted file mode 100644 index 851ac0cd..00000000 --- a/v2/lib/forge-std/src/Base.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {StdStorage} from "./StdStorage.sol"; -import {Vm, VmSafe} from "./Vm.sol"; - -abstract contract CommonBase { - // Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D. - address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); - // console.sol and console2.sol work by executing a staticcall to this address. - address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; - // Used when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - // Default address for tx.origin and msg.sender, 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38. - address internal constant DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller")))); - // Address of the test contract, deployed by the DEFAULT_SENDER. - address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; - // Deterministic deployment address of the Multicall3 contract. - address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11; - // The order of the secp256k1 curve. - uint256 internal constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - - uint256 internal constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - Vm internal constant vm = Vm(VM_ADDRESS); - StdStorage internal stdstore; -} - -abstract contract TestBase is CommonBase {} - -abstract contract ScriptBase is CommonBase { - VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS); -} diff --git a/v2/lib/forge-std/src/Script.sol b/v2/lib/forge-std/src/Script.sol deleted file mode 100644 index 94e75f6c..00000000 --- a/v2/lib/forge-std/src/Script.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -// 💬 ABOUT -// Forge Std's default Script. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheatsSafe} from "./StdCheats.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorageSafe} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {VmSafe} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {ScriptBase} from "./Base.sol"; - -// ⭐️ SCRIPT -abstract contract Script is ScriptBase, StdChains, StdCheatsSafe, StdUtils { - // Note: IS_SCRIPT() must return true. - bool public IS_SCRIPT = true; -} diff --git a/v2/lib/forge-std/src/StdAssertions.sol b/v2/lib/forge-std/src/StdAssertions.sol deleted file mode 100644 index 857ecd57..00000000 --- a/v2/lib/forge-std/src/StdAssertions.sol +++ /dev/null @@ -1,669 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -import {Vm} from "./Vm.sol"; - -abstract contract StdAssertions { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - event log(string); - event logs(bytes); - - event log_address(address); - event log_bytes32(bytes32); - event log_int(int256); - event log_uint(uint256); - event log_bytes(bytes); - event log_string(string); - - event log_named_address(string key, address val); - event log_named_bytes32(string key, bytes32 val); - event log_named_decimal_int(string key, int256 val, uint256 decimals); - event log_named_decimal_uint(string key, uint256 val, uint256 decimals); - event log_named_int(string key, int256 val); - event log_named_uint(string key, uint256 val); - event log_named_bytes(string key, bytes val); - event log_named_string(string key, string val); - - event log_array(uint256[] val); - event log_array(int256[] val); - event log_array(address[] val); - event log_named_array(string key, uint256[] val); - event log_named_array(string key, int256[] val); - event log_named_array(string key, address[] val); - - bool private _failed; - - function failed() public view returns (bool) { - if (_failed) { - return _failed; - } else { - return vm.load(address(vm), bytes32("failed")) != bytes32(0); - } - } - - function fail() internal virtual { - vm.store(address(vm), bytes32("failed"), bytes32(uint256(1))); - _failed = true; - } - - function assertTrue(bool data) internal pure virtual { - vm.assertTrue(data); - } - - function assertTrue(bool data, string memory err) internal pure virtual { - vm.assertTrue(data, err); - } - - function assertFalse(bool data) internal pure virtual { - vm.assertFalse(data); - } - - function assertFalse(bool data, string memory err) internal pure virtual { - vm.assertFalse(data, err); - } - - function assertEq(bool left, bool right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bool left, bool right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(uint256 left, uint256 right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertEqDecimal(left, right, decimals); - } - - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertEqDecimal(left, right, decimals, err); - } - - function assertEq(int256 left, int256 right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertEqDecimal(left, right, decimals); - } - - function assertEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertEqDecimal(left, right, decimals, err); - } - - function assertEq(address left, address right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(address left, address right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes32 left, bytes32 right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq32(bytes32 left, bytes32 right) internal pure virtual { - assertEq(left, right); - } - - function assertEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { - assertEq(left, right, err); - } - - function assertEq(string memory left, string memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(string memory left, string memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes memory left, bytes memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bool[] memory left, bool[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(uint256[] memory left, uint256[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(int256[] memory left, int256[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(address[] memory left, address[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(string[] memory left, string[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes[] memory left, bytes[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - // Legacy helper - function assertEqUint(uint256 left, uint256 right) internal pure virtual { - assertEq(left, right); - } - - function assertNotEq(bool left, bool right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bool left, bool right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(uint256 left, uint256 right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals); - } - - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) - internal - pure - virtual - { - vm.assertNotEqDecimal(left, right, decimals, err); - } - - function assertNotEq(int256 left, int256 right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals); - } - - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals, err); - } - - function assertNotEq(address left, address right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(address left, address right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes32 left, bytes32 right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq32(bytes32 left, bytes32 right) internal pure virtual { - assertNotEq(left, right); - } - - function assertNotEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { - assertNotEq(left, right, err); - } - - function assertNotEq(string memory left, string memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(string memory left, string memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes memory left, bytes memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bool[] memory left, bool[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(uint256[] memory left, uint256[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(int256[] memory left, int256[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(address[] memory left, address[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(string[] memory left, string[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes[] memory left, bytes[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertLt(uint256 left, uint256 right) internal pure virtual { - vm.assertLt(left, right); - } - - function assertLt(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertLt(left, right, err); - } - - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertLtDecimal(left, right, decimals); - } - - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLtDecimal(left, right, decimals, err); - } - - function assertLt(int256 left, int256 right) internal pure virtual { - vm.assertLt(left, right); - } - - function assertLt(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertLt(left, right, err); - } - - function assertLtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertLtDecimal(left, right, decimals); - } - - function assertLtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLtDecimal(left, right, decimals, err); - } - - function assertGt(uint256 left, uint256 right) internal pure virtual { - vm.assertGt(left, right); - } - - function assertGt(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertGt(left, right, err); - } - - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertGtDecimal(left, right, decimals); - } - - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGtDecimal(left, right, decimals, err); - } - - function assertGt(int256 left, int256 right) internal pure virtual { - vm.assertGt(left, right); - } - - function assertGt(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertGt(left, right, err); - } - - function assertGtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertGtDecimal(left, right, decimals); - } - - function assertGtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGtDecimal(left, right, decimals, err); - } - - function assertLe(uint256 left, uint256 right) internal pure virtual { - vm.assertLe(left, right); - } - - function assertLe(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertLe(left, right, err); - } - - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertLeDecimal(left, right, decimals); - } - - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLeDecimal(left, right, decimals, err); - } - - function assertLe(int256 left, int256 right) internal pure virtual { - vm.assertLe(left, right); - } - - function assertLe(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertLe(left, right, err); - } - - function assertLeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertLeDecimal(left, right, decimals); - } - - function assertLeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLeDecimal(left, right, decimals, err); - } - - function assertGe(uint256 left, uint256 right) internal pure virtual { - vm.assertGe(left, right); - } - - function assertGe(uint256 left, uint256 right, string memory err) internal pure virtual { - vm.assertGe(left, right, err); - } - - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertGeDecimal(left, right, decimals); - } - - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGeDecimal(left, right, decimals, err); - } - - function assertGe(int256 left, int256 right) internal pure virtual { - vm.assertGe(left, right); - } - - function assertGe(int256 left, int256 right, string memory err) internal pure virtual { - vm.assertGe(left, right, err); - } - - function assertGeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertGeDecimal(left, right, decimals); - } - - function assertGeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGeDecimal(left, right, decimals, err); - } - - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta); - } - - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string memory err) - internal - pure - virtual - { - vm.assertApproxEqAbs(left, right, maxDelta, err); - } - - function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); - } - - function assertApproxEqAbsDecimal( - uint256 left, - uint256 right, - uint256 maxDelta, - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); - } - - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta); - } - - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string memory err) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta, err); - } - - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); - } - - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string memory err) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); - } - - function assertApproxEqRel( - uint256 left, - uint256 right, - uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta); - } - - function assertApproxEqRel( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta, err); - } - - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); - } - - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); - } - - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta); - } - - function assertApproxEqRel( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta, err); - } - - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); - } - - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); - } - - // Inherited from DSTest, not used but kept for backwards-compatibility - function checkEq0(bytes memory left, bytes memory right) internal pure returns (bool) { - return keccak256(left) == keccak256(right); - } - - function assertEq0(bytes memory left, bytes memory right) internal pure virtual { - assertEq(left, right); - } - - function assertEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { - assertEq(left, right, err); - } - - function assertNotEq0(bytes memory left, bytes memory right) internal pure virtual { - assertNotEq(left, right); - } - - function assertNotEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { - assertNotEq(left, right, err); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { - assertEqCall(target, callDataA, target, callDataB, true); - } - - function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) - internal - virtual - { - assertEqCall(targetA, callDataA, targetB, callDataB, true); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) - internal - virtual - { - assertEqCall(target, callDataA, target, callDataB, strictRevertData); - } - - function assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) internal virtual { - (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); - (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); - - if (successA && successB) { - assertEq(returnDataA, returnDataB, "Call return data does not match"); - } - - if (!successA && !successB && strictRevertData) { - assertEq(returnDataA, returnDataB, "Call revert data does not match"); - } - - if (!successA && successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call revert data", returnDataA); - emit log_named_bytes(" Right call return data", returnDataB); - revert("assertion failed"); - } - - if (successA && !successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call return data", returnDataA); - emit log_named_bytes(" Right call revert data", returnDataB); - revert("assertion failed"); - } - } -} diff --git a/v2/lib/forge-std/src/StdChains.sol b/v2/lib/forge-std/src/StdChains.sol deleted file mode 100644 index 0fe827e4..00000000 --- a/v2/lib/forge-std/src/StdChains.sol +++ /dev/null @@ -1,259 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {VmSafe} from "./Vm.sol"; - -/** - * StdChains provides information about EVM compatible chains that can be used in scripts/tests. - * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are - * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of - * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the - * alias used in this contract, which can be found as the first argument to the - * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. - * - * There are two main ways to use this contract: - * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or - * `setChain(string memory chainAlias, Chain memory chain)` - * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. - * - * The first time either of those are used, chains are initialized with the default set of RPC URLs. - * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in - * `defaultRpcUrls`. - * - * The `setChain` function is straightforward, and it simply saves off the given chain data. - * - * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say - * we want to retrieve the RPC URL for `mainnet`: - * - If you have specified data with `setChain`, it will return that. - * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it - * is valid (e.g. a URL is specified, or an environment variable is given and exists). - * - If neither of the above conditions is met, the default data is returned. - * - * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults. - */ -abstract contract StdChains { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - bool private stdChainsInitialized; - - struct ChainData { - string name; - uint256 chainId; - string rpcUrl; - } - - struct Chain { - // The chain name. - string name; - // The chain's Chain ID. - uint256 chainId; - // The chain's alias. (i.e. what gets specified in `foundry.toml`). - string chainAlias; - // A default RPC endpoint for this chain. - // NOTE: This default RPC URL is included for convenience to facilitate quick tests and - // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy - // usage as you will be throttled and this is a disservice to others who need this endpoint. - string rpcUrl; - } - - // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data. - mapping(string => Chain) private chains; - // Maps from the chain's alias to it's default RPC URL. - mapping(string => string) private defaultRpcUrls; - // Maps from a chain ID to it's alias. - mapping(uint256 => string) private idToAlias; - - bool private fallbackToDefaultRpcUrls = true; - - // The RPC URL will be fetched from config or defaultRpcUrls if possible. - function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) { - require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string."); - - initializeStdChains(); - chain = chains[chainAlias]; - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - function getChain(uint256 chainId) internal virtual returns (Chain memory chain) { - require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0."); - initializeStdChains(); - string memory chainAlias = idToAlias[chainId]; - - chain = chains[chainAlias]; - - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, ChainData memory chain) internal virtual { - require( - bytes(chainAlias).length != 0, - "StdChains setChain(string,ChainData): Chain alias cannot be the empty string." - ); - - require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0."); - - initializeStdChains(); - string memory foundAlias = idToAlias[chain.chainId]; - - require( - bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)), - string( - abi.encodePacked( - "StdChains setChain(string,ChainData): Chain ID ", - vm.toString(chain.chainId), - " already used by \"", - foundAlias, - "\"." - ) - ) - ); - - uint256 oldChainId = chains[chainAlias].chainId; - delete idToAlias[oldChainId]; - - chains[chainAlias] = - Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl}); - idToAlias[chain.chainId] = chainAlias; - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, Chain memory chain) internal virtual { - setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl})); - } - - function _toUpper(string memory str) private pure returns (string memory) { - bytes memory strb = bytes(str); - bytes memory copy = new bytes(strb.length); - for (uint256 i = 0; i < strb.length; i++) { - bytes1 b = strb[i]; - if (b >= 0x61 && b <= 0x7A) { - copy[i] = bytes1(uint8(b) - 32); - } else { - copy[i] = b; - } - } - return string(copy); - } - - // lookup rpcUrl, in descending order of priority: - // current -> config (foundry.toml) -> environment variable -> default - function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) - private - view - returns (Chain memory) - { - if (bytes(chain.rpcUrl).length == 0) { - try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) { - chain.rpcUrl = configRpcUrl; - } catch (bytes memory err) { - string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL")); - if (fallbackToDefaultRpcUrls) { - chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]); - } else { - chain.rpcUrl = vm.envString(envName); - } - // Distinguish 'not found' from 'cannot read' - // The upstream error thrown by forge for failing cheats changed so we check both the old and new versions - bytes memory oldNotFoundError = - abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias))); - bytes memory newNotFoundError = abi.encodeWithSignature( - "CheatcodeError(string)", string(abi.encodePacked("invalid rpc url: ", chainAlias)) - ); - bytes32 errHash = keccak256(err); - if ( - (errHash != keccak256(oldNotFoundError) && errHash != keccak256(newNotFoundError)) - || bytes(chain.rpcUrl).length == 0 - ) { - /// @solidity memory-safe-assembly - assembly { - revert(add(32, err), mload(err)) - } - } - } - } - return chain; - } - - function setFallbackToDefaultRpcUrls(bool useDefault) internal { - fallbackToDefaultRpcUrls = useDefault; - } - - function initializeStdChains() private { - if (stdChainsInitialized) return; - - stdChainsInitialized = true; - - // If adding an RPC here, make sure to test the default RPC URL in `test_Rpcs` in `StdChains.t.sol` - setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545")); - setChainWithDefaultRpcUrl( - "mainnet", ChainData("Mainnet", 1, "https://eth-mainnet.alchemyapi.io/v2/pwc5rmJhrdoaSEfimoKEmsvOjKSmPDrP") - ); - setChainWithDefaultRpcUrl( - "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl("holesky", ChainData("Holesky", 17000, "https://rpc.holesky.ethpandaops.io")); - setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io")); - setChainWithDefaultRpcUrl( - "optimism_sepolia", ChainData("Optimism Sepolia", 11155420, "https://sepolia.optimism.io") - ); - setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl( - "arbitrum_one_sepolia", ChainData("Arbitrum One Sepolia", 421614, "https://sepolia-rollup.arbitrum.io/rpc") - ); - setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com")); - setChainWithDefaultRpcUrl( - "polygon_amoy", ChainData("Polygon Amoy", 80002, "https://rpc-amoy.polygon.technology") - ); - setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc")); - setChainWithDefaultRpcUrl( - "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain_testnet", - ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel") - ); - setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com")); - setChainWithDefaultRpcUrl("moonbeam", ChainData("Moonbeam", 1284, "https://rpc.api.moonbeam.network")); - setChainWithDefaultRpcUrl( - "moonriver", ChainData("Moonriver", 1285, "https://rpc.api.moonriver.moonbeam.network") - ); - setChainWithDefaultRpcUrl("moonbase", ChainData("Moonbase", 1287, "https://rpc.testnet.moonbeam.network")); - setChainWithDefaultRpcUrl("base_sepolia", ChainData("Base Sepolia", 84532, "https://sepolia.base.org")); - setChainWithDefaultRpcUrl("base", ChainData("Base", 8453, "https://mainnet.base.org")); - setChainWithDefaultRpcUrl("blast_sepolia", ChainData("Blast Sepolia", 168587773, "https://sepolia.blast.io")); - setChainWithDefaultRpcUrl("blast", ChainData("Blast", 81457, "https://rpc.blast.io")); - setChainWithDefaultRpcUrl("fantom_opera", ChainData("Fantom Opera", 250, "https://rpc.ankr.com/fantom/")); - setChainWithDefaultRpcUrl( - "fantom_opera_testnet", ChainData("Fantom Opera Testnet", 4002, "https://rpc.ankr.com/fantom_testnet/") - ); - setChainWithDefaultRpcUrl("fraxtal", ChainData("Fraxtal", 252, "https://rpc.frax.com")); - setChainWithDefaultRpcUrl("fraxtal_testnet", ChainData("Fraxtal Testnet", 2522, "https://rpc.testnet.frax.com")); - setChainWithDefaultRpcUrl( - "berachain_bartio_testnet", ChainData("Berachain bArtio Testnet", 80084, "https://bartio.rpc.berachain.com") - ); - } - - // set chain info, with priority to chainAlias' rpc url in foundry.toml - function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private { - string memory rpcUrl = chain.rpcUrl; - defaultRpcUrls[chainAlias] = rpcUrl; - chain.rpcUrl = ""; - setChain(chainAlias, chain); - chain.rpcUrl = rpcUrl; // restore argument - } -} diff --git a/v2/lib/forge-std/src/StdCheats.sol b/v2/lib/forge-std/src/StdCheats.sol deleted file mode 100644 index f2933139..00000000 --- a/v2/lib/forge-std/src/StdCheats.sol +++ /dev/null @@ -1,817 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {console2} from "./console2.sol"; -import {Vm} from "./Vm.sol"; - -abstract contract StdCheatsSafe { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - bool private gasMeteringOff; - - // Data structures to parse Transaction objects from the broadcast artifact - // that conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawTx1559 { - string[] arguments; - address contractAddress; - string contractName; - // json value name = function - string functionSig; - bytes32 hash; - // json value name = tx - RawTx1559Detail txDetail; - // json value name = type - string opcode; - } - - struct RawTx1559Detail { - AccessList[] accessList; - bytes data; - address from; - bytes gas; - bytes nonce; - address to; - bytes txType; - bytes value; - } - - struct Tx1559 { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - bytes32 hash; - Tx1559Detail txDetail; - string opcode; - } - - struct Tx1559Detail { - AccessList[] accessList; - bytes data; - address from; - uint256 gas; - uint256 nonce; - address to; - uint256 txType; - uint256 value; - } - - // Data structures to parse Transaction objects from the broadcast artifact - // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct TxLegacy { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - string hash; - string opcode; - TxDetailLegacy transaction; - } - - struct TxDetailLegacy { - AccessList[] accessList; - uint256 chainId; - bytes data; - address from; - uint256 gas; - uint256 gasPrice; - bytes32 hash; - uint256 nonce; - bytes1 opcode; - bytes32 r; - bytes32 s; - uint256 txType; - address to; - uint8 v; - uint256 value; - } - - struct AccessList { - address accessAddress; - bytes32[] storageKeys; - } - - // Data structures to parse Receipt objects from the broadcast artifact. - // The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawReceipt { - bytes32 blockHash; - bytes blockNumber; - address contractAddress; - bytes cumulativeGasUsed; - bytes effectiveGasPrice; - address from; - bytes gasUsed; - RawReceiptLog[] logs; - bytes logsBloom; - bytes status; - address to; - bytes32 transactionHash; - bytes transactionIndex; - } - - struct Receipt { - bytes32 blockHash; - uint256 blockNumber; - address contractAddress; - uint256 cumulativeGasUsed; - uint256 effectiveGasPrice; - address from; - uint256 gasUsed; - ReceiptLog[] logs; - bytes logsBloom; - uint256 status; - address to; - bytes32 transactionHash; - uint256 transactionIndex; - } - - // Data structures to parse the entire broadcast artifact, assuming the - // transactions conform to EIP1559. - - struct EIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - Receipt[] receipts; - uint256 timestamp; - Tx1559[] transactions; - TxReturn[] txReturns; - } - - struct RawEIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - RawReceipt[] receipts; - TxReturn[] txReturns; - uint256 timestamp; - RawTx1559[] transactions; - } - - struct RawReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - bytes blockNumber; - bytes data; - bytes logIndex; - bool removed; - bytes32[] topics; - bytes32 transactionHash; - bytes transactionIndex; - bytes transactionLogIndex; - } - - struct ReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - uint256 blockNumber; - bytes data; - uint256 logIndex; - bytes32[] topics; - uint256 transactionIndex; - uint256 transactionLogIndex; - bool removed; - } - - struct TxReturn { - string internalType; - string value; - } - - struct Account { - address addr; - uint256 key; - } - - enum AddressType { - Payable, - NonPayable, - ZeroAddress, - Precompile, - ForgeAddress - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - function assumeNotBlacklisted(address token, address addr) internal view virtual { - // Nothing to check if `token` is not a contract. - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - - bool success; - bytes memory returnData; - - // 4-byte selector for `isBlacklisted(address)`, used by USDC. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xfe575a87, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - - // 4-byte selector for `isBlackListed(address)`, used by USDT. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xe47d6060, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - // This is identical to `assumeNotBlacklisted(address,address)` but with a different name, for - // backwards compatibility, since this name was used in the original PR which has already has - // a release. This function can be removed in a future release once we want a breaking change. - function assumeNoBlacklisted(address token, address addr) internal view virtual { - assumeNotBlacklisted(token, addr); - } - - function assumeAddressIsNot(address addr, AddressType addressType) internal virtual { - if (addressType == AddressType.Payable) { - assumeNotPayable(addr); - } else if (addressType == AddressType.NonPayable) { - assumePayable(addr); - } else if (addressType == AddressType.ZeroAddress) { - assumeNotZeroAddress(addr); - } else if (addressType == AddressType.Precompile) { - assumeNotPrecompile(addr); - } else if (addressType == AddressType.ForgeAddress) { - assumeNotForgeAddress(addr); - } - } - - function assumeAddressIsNot(address addr, AddressType addressType1, AddressType addressType2) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3, - AddressType addressType4 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - assumeAddressIsNot(addr, addressType4); - } - - // This function checks whether an address, `addr`, is payable. It works by sending 1 wei to - // `addr` and checking the `success` return value. - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. - function _isPayable(address addr) private returns (bool) { - require( - addr.balance < UINT256_MAX, - "StdCheats _isPayable(address): Balance equals max uint256, so it cannot receive any more funds" - ); - uint256 origBalanceTest = address(this).balance; - uint256 origBalanceAddr = address(addr).balance; - - vm.deal(address(this), 1); - (bool success,) = payable(addr).call{value: 1}(""); - - // reset balances - vm.deal(address(this), origBalanceTest); - vm.deal(addr, origBalanceAddr); - - return success; - } - - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. See the - // `_isPayable` method for more information. - function assumePayable(address addr) internal virtual { - vm.assume(_isPayable(addr)); - } - - function assumeNotPayable(address addr) internal virtual { - vm.assume(!_isPayable(addr)); - } - - function assumeNotZeroAddress(address addr) internal pure virtual { - vm.assume(addr != address(0)); - } - - function assumeNotPrecompile(address addr) internal pure virtual { - assumeNotPrecompile(addr, _pureChainId()); - } - - function assumeNotPrecompile(address addr, uint256 chainId) internal pure virtual { - // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific - // address), but the same rationale for excluding them applies so we include those too. - - // These should be present on all EVM-compatible chains. - vm.assume(addr < address(0x1) || addr > address(0x9)); - - // forgefmt: disable-start - if (chainId == 10 || chainId == 420) { - // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21 - vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800)); - } else if (chainId == 42161 || chainId == 421613) { - // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains - vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068)); - } else if (chainId == 43114 || chainId == 43113) { - // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59 - vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff)); - vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF)); - vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff)); - } - // forgefmt: disable-end - } - - function assumeNotForgeAddress(address addr) internal pure virtual { - // vm, console, and Create2Deployer addresses - vm.assume( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function readEIP1559ScriptArtifact(string memory path) - internal - view - virtual - returns (EIP1559ScriptArtifact memory) - { - string memory data = vm.readFile(path); - bytes memory parsedData = vm.parseJson(data); - RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact)); - EIP1559ScriptArtifact memory artifact; - artifact.libraries = rawArtifact.libraries; - artifact.path = rawArtifact.path; - artifact.timestamp = rawArtifact.timestamp; - artifact.pending = rawArtifact.pending; - artifact.txReturns = rawArtifact.txReturns; - artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts); - artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions); - return artifact; - } - - function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) { - Tx1559[] memory txs = new Tx1559[](rawTxs.length); - for (uint256 i; i < rawTxs.length; i++) { - txs[i] = rawToConvertedEIPTx1559(rawTxs[i]); - } - return txs; - } - - function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) { - Tx1559 memory transaction; - transaction.arguments = rawTx.arguments; - transaction.contractName = rawTx.contractName; - transaction.functionSig = rawTx.functionSig; - transaction.hash = rawTx.hash; - transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail); - transaction.opcode = rawTx.opcode; - return transaction; - } - - function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail) - internal - pure - virtual - returns (Tx1559Detail memory) - { - Tx1559Detail memory txDetail; - txDetail.data = rawDetail.data; - txDetail.from = rawDetail.from; - txDetail.to = rawDetail.to; - txDetail.nonce = _bytesToUint(rawDetail.nonce); - txDetail.txType = _bytesToUint(rawDetail.txType); - txDetail.value = _bytesToUint(rawDetail.value); - txDetail.gas = _bytesToUint(rawDetail.gas); - txDetail.accessList = rawDetail.accessList; - return txDetail; - } - - function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions"); - RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[])); - return rawToConvertedEIPTx1559s(rawTxs); - } - - function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559)); - return rawToConvertedEIPTx1559(rawTx); - } - - // Analogous to readTransactions, but for receipts. - function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts"); - RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[])); - return rawToConvertedReceipts(rawReceipts); - } - - function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt)); - return rawToConvertedReceipt(rawReceipt); - } - - function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) { - Receipt[] memory receipts = new Receipt[](rawReceipts.length); - for (uint256 i; i < rawReceipts.length; i++) { - receipts[i] = rawToConvertedReceipt(rawReceipts[i]); - } - return receipts; - } - - function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) { - Receipt memory receipt; - receipt.blockHash = rawReceipt.blockHash; - receipt.to = rawReceipt.to; - receipt.from = rawReceipt.from; - receipt.contractAddress = rawReceipt.contractAddress; - receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice); - receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed); - receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed); - receipt.status = _bytesToUint(rawReceipt.status); - receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex); - receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber); - receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs); - receipt.logsBloom = rawReceipt.logsBloom; - receipt.transactionHash = rawReceipt.transactionHash; - return receipt; - } - - function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs) - internal - pure - virtual - returns (ReceiptLog[] memory) - { - ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length); - for (uint256 i; i < rawLogs.length; i++) { - logs[i].logAddress = rawLogs[i].logAddress; - logs[i].blockHash = rawLogs[i].blockHash; - logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber); - logs[i].data = rawLogs[i].data; - logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex); - logs[i].topics = rawLogs[i].topics; - logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex); - logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex); - logs[i].removed = rawLogs[i].removed; - } - return logs; - } - - // Deploy a contract by fetching the contract bytecode from - // the artifacts directory - // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))` - function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed."); - } - - function deployCode(string memory what) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string): Deployment failed."); - } - - /// @dev deploy contract with value on construction - function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed."); - } - - function deployCode(string memory what, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed."); - } - - // creates a labeled address and the corresponding private key - function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) { - privateKey = uint256(keccak256(abi.encodePacked(name))); - addr = vm.addr(privateKey); - vm.label(addr, name); - } - - // creates a labeled address - function makeAddr(string memory name) internal virtual returns (address addr) { - (addr,) = makeAddrAndKey(name); - } - - // Destroys an account immediately, sending the balance to beneficiary. - // Destroying means: balance will be zero, code will be empty, and nonce will be 0 - // This is similar to selfdestruct but not identical: selfdestruct destroys code and nonce - // only after tx ends, this will run immediately. - function destroyAccount(address who, address beneficiary) internal virtual { - uint256 currBalance = who.balance; - vm.etch(who, abi.encode()); - vm.deal(who, 0); - vm.resetNonce(who); - - uint256 beneficiaryBalance = beneficiary.balance; - vm.deal(beneficiary, currBalance + beneficiaryBalance); - } - - // creates a struct containing both a labeled address and the corresponding private key - function makeAccount(string memory name) internal virtual returns (Account memory account) { - (account.addr, account.key) = makeAddrAndKey(name); - } - - function deriveRememberKey(string memory mnemonic, uint32 index) - internal - virtual - returns (address who, uint256 privateKey) - { - privateKey = vm.deriveKey(mnemonic, index); - who = vm.rememberKey(privateKey); - } - - function _bytesToUint(bytes memory b) private pure returns (uint256) { - require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - function isFork() internal view virtual returns (bool status) { - try vm.activeFork() { - status = true; - } catch (bytes memory) {} - } - - modifier skipWhenForking() { - if (!isFork()) { - _; - } - } - - modifier skipWhenNotForking() { - if (isFork()) { - _; - } - } - - modifier noGasMetering() { - vm.pauseGasMetering(); - // To prevent turning gas monitoring back on with nested functions that use this modifier, - // we check if gasMetering started in the off position. If it did, we don't want to turn - // it back on until we exit the top level function that used the modifier - // - // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well. - // funcA will have `gasStartedOff` as false, funcB will have it as true, - // so we only turn metering back on at the end of the funcA - bool gasStartedOff = gasMeteringOff; - gasMeteringOff = true; - - _; - - // if gas metering was on when this modifier was called, turn it back on at the end - if (!gasStartedOff) { - gasMeteringOff = false; - vm.resumeGasMetering(); - } - } - - // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no - // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We - // can't simply access the chain ID in a normal view or pure function because the solc View Pure - // Checker changed `chainid` from pure to view in 0.8.0. - function _viewChainId() private view returns (uint256 chainId) { - // Assembly required since `block.chainid` was introduced in 0.8.0. - assembly { - chainId := chainid() - } - - address(this); // Silence warnings in older Solc versions. - } - - function _pureChainId() private pure returns (uint256 chainId) { - function() internal view returns (uint256) fnIn = _viewChainId; - function() internal pure returns (uint256) pureChainId; - assembly { - pureChainId := fnIn - } - chainId = pureChainId(); - } -} - -// Wrappers around cheatcodes to avoid footguns -abstract contract StdCheats is StdCheatsSafe { - using stdStorage for StdStorage; - - StdStorage private stdstore; - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - - // Skip forward or rewind time by the specified number of seconds - function skip(uint256 time) internal virtual { - vm.warp(block.timestamp + time); - } - - function rewind(uint256 time) internal virtual { - vm.warp(block.timestamp - time); - } - - // Setup a prank from an address that has some ether - function hoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender); - } - - function hoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender); - } - - function hoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender, origin); - } - - function hoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender, origin); - } - - // Start perpetual prank from an address that has some ether - function startHoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender); - } - - function startHoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender); - } - - // Start perpetual prank from an address that has some ether - // tx.origin is set to the origin parameter - function startHoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender, origin); - } - - function startHoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender, origin); - } - - function changePrank(address msgSender) internal virtual { - console2_log_StdCheats("changePrank is deprecated. Please use vm.startPrank instead."); - vm.stopPrank(); - vm.startPrank(msgSender); - } - - function changePrank(address msgSender, address txOrigin) internal virtual { - vm.stopPrank(); - vm.startPrank(msgSender, txOrigin); - } - - // The same as Vm's `deal` - // Use the alternative signature for ERC20 tokens - function deal(address to, uint256 give) internal virtual { - vm.deal(to, give); - } - - // Set the balance of an account for any ERC20 token - // Use the alternative signature to update `totalSupply` - function deal(address token, address to, uint256 give) internal virtual { - deal(token, to, give, false); - } - - // Set the balance of an account for any ERC1155 token - // Use the alternative signature to update `totalSupply` - function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual { - dealERC1155(token, to, id, give, false); - } - - function deal(address token, address to, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0x18160ddd)); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0x18160ddd).checked_write(totSup); - } - } - - function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x00fdd58e, to, id)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0xbd85b039, id)); - require( - totSupData.length != 0, - "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply." - ); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup); - } - } - - function dealERC721(address token, address to, uint256 id) internal virtual { - // check if token id is already minted and the actual owner. - (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id)); - require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted."); - - // get owner current balance - (, bytes memory fromBalData) = - token.staticcall(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address)))); - uint256 fromPrevBal = abi.decode(fromBalData, (uint256)); - - // get new user current balance - (, bytes memory toBalData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 toPrevBal = abi.decode(toBalData, (uint256)); - - // update balances - stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal); - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal); - - // update owner - stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to); - } - - function deployCodeTo(string memory what, address where) internal virtual { - deployCodeTo(what, "", 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, address where) internal virtual { - deployCodeTo(what, args, 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, uint256 value, address where) internal virtual { - bytes memory creationCode = vm.getCode(what); - vm.etch(where, abi.encodePacked(creationCode, args)); - (bool success, bytes memory runtimeBytecode) = where.call{value: value}(""); - require(success, "StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - vm.etch(where, runtimeBytecode); - } - - // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. - function console2_log_StdCheats(string memory p0) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string)", p0)); - status; - } -} diff --git a/v2/lib/forge-std/src/StdError.sol b/v2/lib/forge-std/src/StdError.sol deleted file mode 100644 index a302191f..00000000 --- a/v2/lib/forge-std/src/StdError.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test -pragma solidity >=0.6.2 <0.9.0; - -library stdError { - bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01); - bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11); - bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12); - bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21); - bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22); - bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31); - bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32); - bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41); - bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51); -} diff --git a/v2/lib/forge-std/src/StdInvariant.sol b/v2/lib/forge-std/src/StdInvariant.sol deleted file mode 100644 index 056db98f..00000000 --- a/v2/lib/forge-std/src/StdInvariant.sol +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -abstract contract StdInvariant { - struct FuzzSelector { - address addr; - bytes4[] selectors; - } - - struct FuzzArtifactSelector { - string artifact; - bytes4[] selectors; - } - - struct FuzzInterface { - address addr; - string[] artifacts; - } - - address[] private _excludedContracts; - address[] private _excludedSenders; - address[] private _targetedContracts; - address[] private _targetedSenders; - - string[] private _excludedArtifacts; - string[] private _targetedArtifacts; - - FuzzArtifactSelector[] private _targetedArtifactSelectors; - - FuzzSelector[] private _excludedSelectors; - FuzzSelector[] private _targetedSelectors; - - FuzzInterface[] private _targetedInterfaces; - - // Functions for users: - // These are intended to be called in tests. - - function excludeContract(address newExcludedContract_) internal { - _excludedContracts.push(newExcludedContract_); - } - - function excludeSelector(FuzzSelector memory newExcludedSelector_) internal { - _excludedSelectors.push(newExcludedSelector_); - } - - function excludeSender(address newExcludedSender_) internal { - _excludedSenders.push(newExcludedSender_); - } - - function excludeArtifact(string memory newExcludedArtifact_) internal { - _excludedArtifacts.push(newExcludedArtifact_); - } - - function targetArtifact(string memory newTargetedArtifact_) internal { - _targetedArtifacts.push(newTargetedArtifact_); - } - - function targetArtifactSelector(FuzzArtifactSelector memory newTargetedArtifactSelector_) internal { - _targetedArtifactSelectors.push(newTargetedArtifactSelector_); - } - - function targetContract(address newTargetedContract_) internal { - _targetedContracts.push(newTargetedContract_); - } - - function targetSelector(FuzzSelector memory newTargetedSelector_) internal { - _targetedSelectors.push(newTargetedSelector_); - } - - function targetSender(address newTargetedSender_) internal { - _targetedSenders.push(newTargetedSender_); - } - - function targetInterface(FuzzInterface memory newTargetedInterface_) internal { - _targetedInterfaces.push(newTargetedInterface_); - } - - // Functions for forge: - // These are called by forge to run invariant tests and don't need to be called in tests. - - function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) { - excludedArtifacts_ = _excludedArtifacts; - } - - function excludeContracts() public view returns (address[] memory excludedContracts_) { - excludedContracts_ = _excludedContracts; - } - - function excludeSelectors() public view returns (FuzzSelector[] memory excludedSelectors_) { - excludedSelectors_ = _excludedSelectors; - } - - function excludeSenders() public view returns (address[] memory excludedSenders_) { - excludedSenders_ = _excludedSenders; - } - - function targetArtifacts() public view returns (string[] memory targetedArtifacts_) { - targetedArtifacts_ = _targetedArtifacts; - } - - function targetArtifactSelectors() public view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_) { - targetedArtifactSelectors_ = _targetedArtifactSelectors; - } - - function targetContracts() public view returns (address[] memory targetedContracts_) { - targetedContracts_ = _targetedContracts; - } - - function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) { - targetedSelectors_ = _targetedSelectors; - } - - function targetSenders() public view returns (address[] memory targetedSenders_) { - targetedSenders_ = _targetedSenders; - } - - function targetInterfaces() public view returns (FuzzInterface[] memory targetedInterfaces_) { - targetedInterfaces_ = _targetedInterfaces; - } -} diff --git a/v2/lib/forge-std/src/StdJson.sol b/v2/lib/forge-std/src/StdJson.sol deleted file mode 100644 index 6dbde835..00000000 --- a/v2/lib/forge-std/src/StdJson.sol +++ /dev/null @@ -1,179 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing JSON files -// To parse: -// ``` -// using stdJson for string; -// string memory json = vm.readFile(""); -// json.readUint(""); -// ``` -// To write: -// ``` -// using stdJson for string; -// string memory json = "json"; -// json.serialize("a", uint256(123)); -// string memory semiFinal = json.serialize("b", string("test")); -// string memory finalJson = json.serialize("c", semiFinal); -// finalJson.write(""); -// ``` - -library stdJson { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJson(json, key); - } - - function readUint(string memory json, string memory key) internal pure returns (uint256) { - return vm.parseJsonUint(json, key); - } - - function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) { - return vm.parseJsonUintArray(json, key); - } - - function readInt(string memory json, string memory key) internal pure returns (int256) { - return vm.parseJsonInt(json, key); - } - - function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) { - return vm.parseJsonIntArray(json, key); - } - - function readBytes32(string memory json, string memory key) internal pure returns (bytes32) { - return vm.parseJsonBytes32(json, key); - } - - function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) { - return vm.parseJsonBytes32Array(json, key); - } - - function readString(string memory json, string memory key) internal pure returns (string memory) { - return vm.parseJsonString(json, key); - } - - function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) { - return vm.parseJsonStringArray(json, key); - } - - function readAddress(string memory json, string memory key) internal pure returns (address) { - return vm.parseJsonAddress(json, key); - } - - function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) { - return vm.parseJsonAddressArray(json, key); - } - - function readBool(string memory json, string memory key) internal pure returns (bool) { - return vm.parseJsonBool(json, key); - } - - function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) { - return vm.parseJsonBoolArray(json, key); - } - - function readBytes(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJsonBytes(json, key); - } - - function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) { - return vm.parseJsonBytesArray(json, key); - } - - function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { - return vm.serializeJson(jsonKey, rootObject); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeJson(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeJson(jsonKey, path, valueKey); - } -} diff --git a/v2/lib/forge-std/src/StdMath.sol b/v2/lib/forge-std/src/StdMath.sol deleted file mode 100644 index 459523bd..00000000 --- a/v2/lib/forge-std/src/StdMath.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -library stdMath { - int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968; - - function abs(int256 a) internal pure returns (uint256) { - // Required or it will fail when `a = type(int256).min` - if (a == INT256_MIN) { - return 57896044618658097711785492504343953926634992332820282019728792003956564819968; - } - - return uint256(a > 0 ? a : -a); - } - - function delta(uint256 a, uint256 b) internal pure returns (uint256) { - return a > b ? a - b : b - a; - } - - function delta(int256 a, int256 b) internal pure returns (uint256) { - // a and b are of the same sign - // this works thanks to two's complement, the left-most bit is the sign bit - if ((a ^ b) > -1) { - return delta(abs(a), abs(b)); - } - - // a and b are of opposite signs - return abs(a) + abs(b); - } - - function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - - return absDelta * 1e18 / b; - } - - function percentDelta(int256 a, int256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - uint256 absB = abs(b); - - return absDelta * 1e18 / absB; - } -} diff --git a/v2/lib/forge-std/src/StdStorage.sol b/v2/lib/forge-std/src/StdStorage.sol deleted file mode 100644 index bf3223de..00000000 --- a/v2/lib/forge-std/src/StdStorage.sol +++ /dev/null @@ -1,473 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {Vm} from "./Vm.sol"; - -struct FindData { - uint256 slot; - uint256 offsetLeft; - uint256 offsetRight; - bool found; -} - -struct StdStorage { - mapping(address => mapping(bytes4 => mapping(bytes32 => FindData))) finds; - bytes32[] _keys; - bytes4 _sig; - uint256 _depth; - address _target; - bytes32 _set; - bool _enable_packed_slots; - bytes _calldata; -} - -library stdStorageSafe { - event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot); - event WARNING_UninitedSlot(address who, uint256 slot); - - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - uint256 constant UINT256_MAX = 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return bytes4(keccak256(bytes(sigStr))); - } - - function getCallParams(StdStorage storage self) internal view returns (bytes memory) { - if (self._calldata.length == 0) { - return flatten(self._keys); - } else { - return self._calldata; - } - } - - // Calls target contract with configured parameters - function callTarget(StdStorage storage self) internal view returns (bool, bytes32) { - bytes memory cald = abi.encodePacked(self._sig, getCallParams(self)); - (bool success, bytes memory rdat) = self._target.staticcall(cald); - bytes32 result = bytesToBytes32(rdat, 32 * self._depth); - - return (success, result); - } - - // Tries mutating slot value to determine if the targeted value is stored in it. - // If current value is 0, then we are setting slot value to type(uint256).max - // Otherwise, we set it to 0. That way, return value should always be affected. - function checkSlotMutatesCall(StdStorage storage self, bytes32 slot) internal returns (bool) { - bytes32 prevSlotValue = vm.load(self._target, slot); - (bool success, bytes32 prevReturnValue) = callTarget(self); - - bytes32 testVal = prevReturnValue == bytes32(0) ? bytes32(UINT256_MAX) : bytes32(0); - vm.store(self._target, slot, testVal); - - (, bytes32 newReturnValue) = callTarget(self); - - vm.store(self._target, slot, prevSlotValue); - - return (success && (prevReturnValue != newReturnValue)); - } - - // Tries setting one of the bits in slot to 1 until return value changes. - // Index of resulted bit is an offset packed slot has from left/right side - function findOffset(StdStorage storage self, bytes32 slot, bool left) internal returns (bool, uint256) { - for (uint256 offset = 0; offset < 256; offset++) { - uint256 valueToPut = left ? (1 << (255 - offset)) : (1 << offset); - vm.store(self._target, slot, bytes32(valueToPut)); - - (bool success, bytes32 data) = callTarget(self); - - if (success && (uint256(data) > 0)) { - return (true, offset); - } - } - return (false, 0); - } - - function findOffsets(StdStorage storage self, bytes32 slot) internal returns (bool, uint256, uint256) { - bytes32 prevSlotValue = vm.load(self._target, slot); - - (bool foundLeft, uint256 offsetLeft) = findOffset(self, slot, true); - (bool foundRight, uint256 offsetRight) = findOffset(self, slot, false); - - // `findOffset` may mutate slot value, so we are setting it to initial value - vm.store(self._target, slot, prevSlotValue); - return (foundLeft && foundRight, offsetLeft, offsetRight); - } - - function find(StdStorage storage self) internal returns (FindData storage) { - return find(self, true); - } - - /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against - // slot complexity: - // if flat, will be bytes32(uint256(uint)); - // if map, will be keccak256(abi.encode(key, uint(slot))); - // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot))))); - // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth); - function find(StdStorage storage self, bool _clear) internal returns (FindData storage) { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes memory params = getCallParams(self); - - // calldata to test against - if (self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { - if (_clear) { - clear(self); - } - return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - } - vm.record(); - (, bytes32 callResult) = callTarget(self); - (bytes32[] memory reads,) = vm.accesses(address(who)); - - if (reads.length == 0) { - revert("stdStorage find(StdStorage): No storage use detected for target."); - } else { - for (uint256 i = reads.length; --i >= 0;) { - bytes32 prev = vm.load(who, reads[i]); - if (prev == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[i])); - } - - if (!checkSlotMutatesCall(self, reads[i])) { - continue; - } - - (uint256 offsetLeft, uint256 offsetRight) = (0, 0); - - if (self._enable_packed_slots) { - bool found; - (found, offsetLeft, offsetRight) = findOffsets(self, reads[i]); - if (!found) { - continue; - } - } - - // Check that value between found offsets is equal to the current call result - uint256 curVal = (uint256(prev) & getMaskByOffsets(offsetLeft, offsetRight)) >> offsetRight; - - if (uint256(callResult) != curVal) { - continue; - } - - emit SlotFound(who, fsig, keccak256(abi.encodePacked(params, field_depth)), uint256(reads[i])); - self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))] = - FindData(uint256(reads[i]), offsetLeft, offsetRight, true); - break; - } - } - - require( - self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found, - "stdStorage find(StdStorage): Slot(s) not found." - ); - - if (_clear) { - clear(self); - } - return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - self._target = _target; - return self; - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - self._sig = _sig; - return self; - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - self._sig = sigs(_sig); - return self; - } - - function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { - self._calldata = _calldata; - return self; - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - self._keys.push(bytes32(uint256(uint160(who)))); - return self; - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - self._keys.push(bytes32(amt)); - return self; - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - self._keys.push(key); - return self; - } - - function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { - self._enable_packed_slots = true; - return self; - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - self._depth = _depth; - return self; - } - - function read(StdStorage storage self) private returns (bytes memory) { - FindData storage data = find(self, false); - uint256 mask = getMaskByOffsets(data.offsetLeft, data.offsetRight); - uint256 value = (uint256(vm.load(self._target, bytes32(data.slot))) & mask) >> data.offsetRight; - clear(self); - return abi.encode(value); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return abi.decode(read(self), (bytes32)); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - int256 v = read_int(self); - if (v == 0) return false; - if (v == 1) return true; - revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - } - - function read_address(StdStorage storage self) internal returns (address) { - return abi.decode(read(self), (address)); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return abi.decode(read(self), (uint256)); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return abi.decode(read(self), (int256)); - } - - function parent(StdStorage storage self) internal returns (uint256, bytes32) { - address who = self._target; - uint256 field_depth = self._depth; - vm.startMappingRecording(); - uint256 child = find(self, true).slot - field_depth; - (bool found, bytes32 key, bytes32 parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); - if (!found) { - revert( - "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." - ); - } - return (uint256(parent_slot), key); - } - - function root(StdStorage storage self) internal returns (uint256) { - address who = self._target; - uint256 field_depth = self._depth; - vm.startMappingRecording(); - uint256 child = find(self, true).slot - field_depth; - bool found; - bytes32 root_slot; - bytes32 parent_slot; - (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); - if (!found) { - revert( - "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." - ); - } - while (found) { - root_slot = parent_slot; - (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(root_slot)); - } - return uint256(root_slot); - } - - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } - - function clear(StdStorage storage self) internal { - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - delete self._enable_packed_slots; - delete self._calldata; - } - - // Returns mask which contains non-zero bits for values between `offsetLeft` and `offsetRight` - // (slotValue & mask) >> offsetRight will be the value of the given packed variable - function getMaskByOffsets(uint256 offsetLeft, uint256 offsetRight) internal pure returns (uint256 mask) { - // mask = ((1 << (256 - (offsetRight + offsetLeft))) - 1) << offsetRight; - // using assembly because (1 << 256) causes overflow - assembly { - mask := shl(offsetRight, sub(shl(sub(256, add(offsetRight, offsetLeft)), 1), 1)) - } - } - - // Returns slot value with updated packed variable. - function getUpdatedSlotValue(bytes32 curValue, uint256 varValue, uint256 offsetLeft, uint256 offsetRight) - internal - pure - returns (bytes32 newValue) - { - return bytes32((uint256(curValue) & ~getMaskByOffsets(offsetLeft, offsetRight)) | (varValue << offsetRight)); - } -} - -library stdStorage { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return stdStorageSafe.sigs(sigStr); - } - - function find(StdStorage storage self) internal returns (uint256) { - return find(self, true); - } - - function find(StdStorage storage self, bool _clear) internal returns (uint256) { - return stdStorageSafe.find(self, _clear).slot; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - return stdStorageSafe.target(self, _target); - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, who); - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, amt); - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, key); - } - - function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { - return stdStorageSafe.with_calldata(self, _calldata); - } - - function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { - return stdStorageSafe.enable_packed_slots(self); - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - return stdStorageSafe.depth(self, _depth); - } - - function clear(StdStorage storage self) internal { - stdStorageSafe.clear(self); - } - - function checked_write(StdStorage storage self, address who) internal { - checked_write(self, bytes32(uint256(uint160(who)))); - } - - function checked_write(StdStorage storage self, uint256 amt) internal { - checked_write(self, bytes32(amt)); - } - - function checked_write_int(StdStorage storage self, int256 val) internal { - checked_write(self, bytes32(uint256(val))); - } - - function checked_write(StdStorage storage self, bool write) internal { - bytes32 t; - /// @solidity memory-safe-assembly - assembly { - t := write - } - checked_write(self, t); - } - - function checked_write(StdStorage storage self, bytes32 set) internal { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes memory params = stdStorageSafe.getCallParams(self); - - if (!self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { - find(self, false); - } - FindData storage data = self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - if ((data.offsetLeft + data.offsetRight) > 0) { - uint256 maxVal = 2 ** (256 - (data.offsetLeft + data.offsetRight)); - require( - uint256(set) < maxVal, - string( - abi.encodePacked( - "stdStorage find(StdStorage): Packed slot. We can't fit value greater than ", - vm.toString(maxVal) - ) - ) - ); - } - bytes32 curVal = vm.load(who, bytes32(data.slot)); - bytes32 valToSet = stdStorageSafe.getUpdatedSlotValue(curVal, uint256(set), data.offsetLeft, data.offsetRight); - - vm.store(who, bytes32(data.slot), valToSet); - - (bool success, bytes32 callResult) = stdStorageSafe.callTarget(self); - - if (!success || callResult != set) { - vm.store(who, bytes32(data.slot), curVal); - revert("stdStorage find(StdStorage): Failed to write value."); - } - clear(self); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return stdStorageSafe.read_bytes32(self); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - return stdStorageSafe.read_bool(self); - } - - function read_address(StdStorage storage self) internal returns (address) { - return stdStorageSafe.read_address(self); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.read_uint(self); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return stdStorageSafe.read_int(self); - } - - function parent(StdStorage storage self) internal returns (uint256, bytes32) { - return stdStorageSafe.parent(self); - } - - function root(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.root(self); - } -} diff --git a/v2/lib/forge-std/src/StdStyle.sol b/v2/lib/forge-std/src/StdStyle.sol deleted file mode 100644 index d371e0c6..00000000 --- a/v2/lib/forge-std/src/StdStyle.sol +++ /dev/null @@ -1,333 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {VmSafe} from "./Vm.sol"; - -library StdStyle { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - string constant RED = "\u001b[91m"; - string constant GREEN = "\u001b[92m"; - string constant YELLOW = "\u001b[93m"; - string constant BLUE = "\u001b[94m"; - string constant MAGENTA = "\u001b[95m"; - string constant CYAN = "\u001b[96m"; - string constant BOLD = "\u001b[1m"; - string constant DIM = "\u001b[2m"; - string constant ITALIC = "\u001b[3m"; - string constant UNDERLINE = "\u001b[4m"; - string constant INVERSE = "\u001b[7m"; - string constant RESET = "\u001b[0m"; - - function styleConcat(string memory style, string memory self) private pure returns (string memory) { - return string(abi.encodePacked(style, self, RESET)); - } - - function red(string memory self) internal pure returns (string memory) { - return styleConcat(RED, self); - } - - function red(uint256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(int256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(address self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(bool self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes(bytes memory self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes32(bytes32 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function green(string memory self) internal pure returns (string memory) { - return styleConcat(GREEN, self); - } - - function green(uint256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(int256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(address self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(bool self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes(bytes memory self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes32(bytes32 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function yellow(string memory self) internal pure returns (string memory) { - return styleConcat(YELLOW, self); - } - - function yellow(uint256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(int256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(address self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(bool self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes(bytes memory self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes32(bytes32 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function blue(string memory self) internal pure returns (string memory) { - return styleConcat(BLUE, self); - } - - function blue(uint256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(int256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(address self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(bool self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes(bytes memory self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes32(bytes32 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function magenta(string memory self) internal pure returns (string memory) { - return styleConcat(MAGENTA, self); - } - - function magenta(uint256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(int256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(address self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(bool self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes(bytes memory self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes32(bytes32 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function cyan(string memory self) internal pure returns (string memory) { - return styleConcat(CYAN, self); - } - - function cyan(uint256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(int256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(address self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(bool self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes(bytes memory self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes32(bytes32 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function bold(string memory self) internal pure returns (string memory) { - return styleConcat(BOLD, self); - } - - function bold(uint256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(int256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(address self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(bool self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes(bytes memory self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes32(bytes32 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function dim(string memory self) internal pure returns (string memory) { - return styleConcat(DIM, self); - } - - function dim(uint256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(int256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(address self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(bool self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes(bytes memory self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes32(bytes32 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function italic(string memory self) internal pure returns (string memory) { - return styleConcat(ITALIC, self); - } - - function italic(uint256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(int256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(address self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(bool self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes(bytes memory self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes32(bytes32 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function underline(string memory self) internal pure returns (string memory) { - return styleConcat(UNDERLINE, self); - } - - function underline(uint256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(int256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(address self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(bool self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes(bytes memory self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes32(bytes32 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function inverse(string memory self) internal pure returns (string memory) { - return styleConcat(INVERSE, self); - } - - function inverse(uint256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(int256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(address self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(bool self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes(bytes memory self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes32(bytes32 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } -} diff --git a/v2/lib/forge-std/src/StdToml.sol b/v2/lib/forge-std/src/StdToml.sol deleted file mode 100644 index ef88db6d..00000000 --- a/v2/lib/forge-std/src/StdToml.sol +++ /dev/null @@ -1,179 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing TOML files -// To parse: -// ``` -// using stdToml for string; -// string memory toml = vm.readFile(""); -// toml.readUint(""); -// ``` -// To write: -// ``` -// using stdToml for string; -// string memory json = "json"; -// json.serialize("a", uint256(123)); -// string memory semiFinal = json.serialize("b", string("test")); -// string memory finalJson = json.serialize("c", semiFinal); -// finalJson.write(""); -// ``` - -library stdToml { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function parseRaw(string memory toml, string memory key) internal pure returns (bytes memory) { - return vm.parseToml(toml, key); - } - - function readUint(string memory toml, string memory key) internal pure returns (uint256) { - return vm.parseTomlUint(toml, key); - } - - function readUintArray(string memory toml, string memory key) internal pure returns (uint256[] memory) { - return vm.parseTomlUintArray(toml, key); - } - - function readInt(string memory toml, string memory key) internal pure returns (int256) { - return vm.parseTomlInt(toml, key); - } - - function readIntArray(string memory toml, string memory key) internal pure returns (int256[] memory) { - return vm.parseTomlIntArray(toml, key); - } - - function readBytes32(string memory toml, string memory key) internal pure returns (bytes32) { - return vm.parseTomlBytes32(toml, key); - } - - function readBytes32Array(string memory toml, string memory key) internal pure returns (bytes32[] memory) { - return vm.parseTomlBytes32Array(toml, key); - } - - function readString(string memory toml, string memory key) internal pure returns (string memory) { - return vm.parseTomlString(toml, key); - } - - function readStringArray(string memory toml, string memory key) internal pure returns (string[] memory) { - return vm.parseTomlStringArray(toml, key); - } - - function readAddress(string memory toml, string memory key) internal pure returns (address) { - return vm.parseTomlAddress(toml, key); - } - - function readAddressArray(string memory toml, string memory key) internal pure returns (address[] memory) { - return vm.parseTomlAddressArray(toml, key); - } - - function readBool(string memory toml, string memory key) internal pure returns (bool) { - return vm.parseTomlBool(toml, key); - } - - function readBoolArray(string memory toml, string memory key) internal pure returns (bool[] memory) { - return vm.parseTomlBoolArray(toml, key); - } - - function readBytes(string memory toml, string memory key) internal pure returns (bytes memory) { - return vm.parseTomlBytes(toml, key); - } - - function readBytesArray(string memory toml, string memory key) internal pure returns (bytes[] memory) { - return vm.parseTomlBytesArray(toml, key); - } - - function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { - return vm.serializeJson(jsonKey, rootObject); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeToml(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeToml(jsonKey, path, valueKey); - } -} diff --git a/v2/lib/forge-std/src/StdUtils.sol b/v2/lib/forge-std/src/StdUtils.sol deleted file mode 100644 index 5d120439..00000000 --- a/v2/lib/forge-std/src/StdUtils.sol +++ /dev/null @@ -1,226 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {IMulticall3} from "./interfaces/IMulticall3.sol"; -import {MockERC20} from "./mocks/MockERC20.sol"; -import {MockERC721} from "./mocks/MockERC721.sol"; -import {VmSafe} from "./Vm.sol"; - -abstract contract StdUtils { - /*////////////////////////////////////////////////////////////////////////// - CONSTANTS - //////////////////////////////////////////////////////////////////////////*/ - - IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - uint256 private constant INT256_MIN_ABS = - 57896044618658097711785492504343953926634992332820282019728792003956564819968; - uint256 private constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - /*////////////////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min."); - // If x is between min and max, return x directly. This is to ensure that dictionary values - // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 - if (x >= min && x <= max) return x; - - uint256 size = max - min + 1; - - // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. - // This helps ensure coverage of the min/max values. - if (x <= 3 && size > x) return min + x; - if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x); - - // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. - if (x > max) { - uint256 diff = x - max; - uint256 rem = diff % size; - if (rem == 0) return max; - result = min + rem - 1; - } else if (x < min) { - uint256 diff = min - x; - uint256 rem = diff % size; - if (rem == 0) return min; - result = max - rem + 1; - } - } - - function bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - result = _bound(x, min, max); - console2_log_StdUtils("Bound result", result); - } - - function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min."); - - // Shifting all int256 values to uint256 to use _bound function. The range of two types are: - // int256 : -(2**255) ~ (2**255 - 1) - // uint256: 0 ~ (2**256 - 1) - // So, add 2**255, INT256_MIN_ABS to the integer values. - // - // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow. - // So, use `~uint256(x) + 1` instead. - uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS); - uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS); - uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS); - - uint256 y = _bound(_x, _min, _max); - - // To move it back to int256 value, subtract INT256_MIN_ABS at here. - result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS); - } - - function bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - result = _bound(x, min, max); - console2_log_StdUtils("Bound result", vm.toString(result)); - } - - function boundPrivateKey(uint256 privateKey) internal pure virtual returns (uint256 result) { - result = _bound(privateKey, 1, SECP256K1_ORDER - 1); - } - - function bytesToUint(bytes memory b) internal pure virtual returns (uint256) { - require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce - /// @notice adapted from Solmate implementation (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibRLP.sol) - function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) { - console2_log_StdUtils("computeCreateAddress is deprecated. Please use vm.computeCreateAddress instead."); - return vm.computeCreateAddress(deployer, nonce); - } - - function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer) - internal - pure - virtual - returns (address) - { - console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); - return vm.computeCreate2Address(salt, initcodeHash, deployer); - } - - /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) { - console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); - return vm.computeCreate2Address(salt, initCodeHash); - } - - /// @dev returns an initialized mock ERC20 contract - function deployMockERC20(string memory name, string memory symbol, uint8 decimals) - internal - returns (MockERC20 mock) - { - mock = new MockERC20(); - mock.initialize(name, symbol, decimals); - } - - /// @dev returns an initialized mock ERC721 contract - function deployMockERC721(string memory name, string memory symbol) internal returns (MockERC721 mock) { - mock = new MockERC721(); - mock.initialize(name, symbol); - } - - /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) { - return hashInitCode(creationCode, ""); - } - - /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2 - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - /// @param args the ABI-encoded arguments to the constructor of C - function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(creationCode, args)); - } - - // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses. - function getTokenBalances(address token, address[] memory addresses) - internal - virtual - returns (uint256[] memory balances) - { - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - - // ABI encode the aggregate call to Multicall3. - uint256 length = addresses.length; - IMulticall3.Call[] memory calls = new IMulticall3.Call[](length); - for (uint256 i = 0; i < length; ++i) { - // 0x70a08231 = bytes4("balanceOf(address)")) - calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))}); - } - - // Make the aggregate call. - (, bytes[] memory returnData) = multicall.aggregate(calls); - - // ABI decode the return data and return the balances. - balances = new uint256[](length); - for (uint256 i = 0; i < length; ++i) { - balances[i] = abi.decode(returnData[i], (uint256)); - } - } - - /*////////////////////////////////////////////////////////////////////////// - PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) { - return address(uint160(uint256(bytesValue))); - } - - // This section is used to prevent the compilation of console, which shortens the compilation time when console is - // not used elsewhere. We also trick the compiler into letting us make the console log methods as `pure` to avoid - // any breaking changes to function signatures. - function _castLogPayloadViewToPure(function(bytes memory) internal view fnIn) - internal - pure - returns (function(bytes memory) internal pure fnOut) - { - assembly { - fnOut := fnIn - } - } - - function _sendLogPayload(bytes memory payload) internal pure { - _castLogPayloadViewToPure(_sendLogPayloadView)(payload); - } - - function _sendLogPayloadView(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE2_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function console2_log_StdUtils(string memory p0) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function console2_log_StdUtils(string memory p0, uint256 p1) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - } - - function console2_log_StdUtils(string memory p0, string memory p1) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } -} diff --git a/v2/lib/forge-std/src/Test.sol b/v2/lib/forge-std/src/Test.sol deleted file mode 100644 index 5ff60ea3..00000000 --- a/v2/lib/forge-std/src/Test.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// 💬 ABOUT -// Forge Std's default Test. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdAssertions} from "./StdAssertions.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheats} from "./StdCheats.sol"; -import {stdError} from "./StdError.sol"; -import {StdInvariant} from "./StdInvariant.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {stdToml} from "./StdToml.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {Vm} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {TestBase} from "./Base.sol"; - -// ⭐️ TEST -abstract contract Test is TestBase, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils { - // Note: IS_TEST() must return true. - bool public IS_TEST = true; -} diff --git a/v2/lib/forge-std/src/Vm.sol b/v2/lib/forge-std/src/Vm.sol deleted file mode 100644 index bc83cb3c..00000000 --- a/v2/lib/forge-std/src/Vm.sol +++ /dev/null @@ -1,1839 +0,0 @@ -// Automatically @generated by scripts/vm.py. Do not modify manually. - -// SPDX-License-Identifier: MIT OR Apache-2.0 -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may -/// result in Script simulations differing from on-chain execution. It is recommended to only use -/// these cheats in scripts. -interface VmSafe { - /// A modification applied to either `msg.sender` or `tx.origin`. Returned by `readCallers`. - enum CallerMode { - // No caller modification is currently active. - None, - // A one time broadcast triggered by a `vm.broadcast()` call is currently active. - Broadcast, - // A recurrent broadcast triggered by a `vm.startBroadcast()` call is currently active. - RecurrentBroadcast, - // A one time prank triggered by a `vm.prank()` call is currently active. - Prank, - // A recurrent prank triggered by a `vm.startPrank()` call is currently active. - RecurrentPrank - } - - /// The kind of account access that occurred. - enum AccountAccessKind { - // The account was called. - Call, - // The account was called via delegatecall. - DelegateCall, - // The account was called via callcode. - CallCode, - // The account was called via staticcall. - StaticCall, - // The account was created. - Create, - // The account was selfdestructed. - SelfDestruct, - // Synthetic access indicating the current context has resumed after a previous sub-context (AccountAccess). - Resume, - // The account's balance was read. - Balance, - // The account's codesize was read. - Extcodesize, - // The account's codehash was read. - Extcodehash, - // The account's code was copied. - Extcodecopy - } - - /// Forge execution contexts. - enum ForgeContext { - // Test group execution context (test, coverage or snapshot). - TestGroup, - // `forge test` execution context. - Test, - // `forge coverage` execution context. - Coverage, - // `forge snapshot` execution context. - Snapshot, - // Script group execution context (dry run, broadcast or resume). - ScriptGroup, - // `forge script` execution context. - ScriptDryRun, - // `forge script --broadcast` execution context. - ScriptBroadcast, - // `forge script --resume` execution context. - ScriptResume, - // Unknown `forge` execution context. - Unknown - } - - /// An Ethereum log. Returned by `getRecordedLogs`. - struct Log { - // The topics of the log, including the signature, if any. - bytes32[] topics; - // The raw data of the log. - bytes data; - // The address of the log's emitter. - address emitter; - } - - /// An RPC URL and its alias. Returned by `rpcUrlStructs`. - struct Rpc { - // The alias of the RPC URL. - string key; - // The RPC URL. - string url; - } - - /// An RPC log object. Returned by `eth_getLogs`. - struct EthGetLogs { - // The address of the log's emitter. - address emitter; - // The topics of the log, including the signature, if any. - bytes32[] topics; - // The raw data of the log. - bytes data; - // The block hash. - bytes32 blockHash; - // The block number. - uint64 blockNumber; - // The transaction hash. - bytes32 transactionHash; - // The transaction index in the block. - uint64 transactionIndex; - // The log index. - uint256 logIndex; - // Whether the log was removed. - bool removed; - } - - /// A single entry in a directory listing. Returned by `readDir`. - struct DirEntry { - // The error message, if any. - string errorMessage; - // The path of the entry. - string path; - // The depth of the entry. - uint64 depth; - // Whether the entry is a directory. - bool isDir; - // Whether the entry is a symlink. - bool isSymlink; - } - - /// Metadata information about a file. - /// This structure is returned from the `fsMetadata` function and represents known - /// metadata about a file such as its permissions, size, modification - /// times, etc. - struct FsMetadata { - // True if this metadata is for a directory. - bool isDir; - // True if this metadata is for a symlink. - bool isSymlink; - // The size of the file, in bytes, this metadata is for. - uint256 length; - // True if this metadata is for a readonly (unwritable) file. - bool readOnly; - // The last modification time listed in this metadata. - uint256 modified; - // The last access time of this metadata. - uint256 accessed; - // The creation time listed in this metadata. - uint256 created; - } - - /// A wallet with a public and private key. - struct Wallet { - // The wallet's address. - address addr; - // The wallet's public key `X`. - uint256 publicKeyX; - // The wallet's public key `Y`. - uint256 publicKeyY; - // The wallet's private key. - uint256 privateKey; - } - - /// The result of a `tryFfi` call. - struct FfiResult { - // The exit code of the call. - int32 exitCode; - // The optionally hex-decoded `stdout` data. - bytes stdout; - // The `stderr` data. - bytes stderr; - } - - /// Information on the chain and fork. - struct ChainInfo { - // The fork identifier. Set to zero if no fork is active. - uint256 forkId; - // The chain ID of the current fork. - uint256 chainId; - } - - /// The result of a `stopAndReturnStateDiff` call. - struct AccountAccess { - // The chain and fork the access occurred. - ChainInfo chainInfo; - // The kind of account access that determines what the account is. - // If kind is Call, DelegateCall, StaticCall or CallCode, then the account is the callee. - // If kind is Create, then the account is the newly created account. - // If kind is SelfDestruct, then the account is the selfdestruct recipient. - // If kind is a Resume, then account represents a account context that has resumed. - AccountAccessKind kind; - // The account that was accessed. - // It's either the account created, callee or a selfdestruct recipient for CREATE, CALL or SELFDESTRUCT. - address account; - // What accessed the account. - address accessor; - // If the account was initialized or empty prior to the access. - // An account is considered initialized if it has code, a - // non-zero nonce, or a non-zero balance. - bool initialized; - // The previous balance of the accessed account. - uint256 oldBalance; - // The potential new balance of the accessed account. - // That is, all balance changes are recorded here, even if reverts occurred. - uint256 newBalance; - // Code of the account deployed by CREATE. - bytes deployedCode; - // Value passed along with the account access - uint256 value; - // Input data provided to the CREATE or CALL - bytes data; - // If this access reverted in either the current or parent context. - bool reverted; - // An ordered list of storage accesses made during an account access operation. - StorageAccess[] storageAccesses; - // Call depth traversed during the recording of state differences - uint64 depth; - } - - /// The storage accessed during an `AccountAccess`. - struct StorageAccess { - // The account whose storage was accessed. - address account; - // The slot that was accessed. - bytes32 slot; - // If the access was a write. - bool isWrite; - // The previous value of the slot. - bytes32 previousValue; - // The new value of the slot. - bytes32 newValue; - // If the access was reverted. - bool reverted; - } - - /// Gas used. Returned by `lastCallGas`. - struct Gas { - // The gas limit of the call. - uint64 gasLimit; - // The total gas used. - uint64 gasTotalUsed; - // DEPRECATED: The amount of gas used for memory expansion. Ref: - uint64 gasMemoryUsed; - // The amount of gas refunded. - int64 gasRefunded; - // The amount of gas remaining. - uint64 gasRemaining; - } - - // ======== Environment ======== - - /// Gets the environment variable `name` and parses it as `address`. - /// Reverts if the variable was not found or could not be parsed. - function envAddress(string calldata name) external view returns (address value); - - /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value); - - /// Gets the environment variable `name` and parses it as `bool`. - /// Reverts if the variable was not found or could not be parsed. - function envBool(string calldata name) external view returns (bool value); - - /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value); - - /// Gets the environment variable `name` and parses it as `bytes32`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes32(string calldata name) external view returns (bytes32 value); - - /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value); - - /// Gets the environment variable `name` and parses it as `bytes`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes(string calldata name) external view returns (bytes memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value); - - /// Gets the environment variable `name` and returns true if it exists, else returns false. - function envExists(string calldata name) external view returns (bool result); - - /// Gets the environment variable `name` and parses it as `int256`. - /// Reverts if the variable was not found or could not be parsed. - function envInt(string calldata name) external view returns (int256 value); - - /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value); - - /// Gets the environment variable `name` and parses it as `bool`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bool defaultValue) external view returns (bool value); - - /// Gets the environment variable `name` and parses it as `uint256`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, uint256 defaultValue) external view returns (uint256 value); - - /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, address[] calldata defaultValue) - external - view - returns (address[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue) - external - view - returns (bytes32[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, string[] calldata defaultValue) - external - view - returns (string[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue) - external - view - returns (bytes[] memory value); - - /// Gets the environment variable `name` and parses it as `int256`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, int256 defaultValue) external view returns (int256 value); - - /// Gets the environment variable `name` and parses it as `address`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, address defaultValue) external view returns (address value); - - /// Gets the environment variable `name` and parses it as `bytes32`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bytes32 defaultValue) external view returns (bytes32 value); - - /// Gets the environment variable `name` and parses it as `string`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata defaultValue) external view returns (string memory value); - - /// Gets the environment variable `name` and parses it as `bytes`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bytes calldata defaultValue) external view returns (bytes memory value); - - /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue) - external - view - returns (bool[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue) - external - view - returns (uint256[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue) - external - view - returns (int256[] memory value); - - /// Gets the environment variable `name` and parses it as `string`. - /// Reverts if the variable was not found or could not be parsed. - function envString(string calldata name) external view returns (string memory value); - - /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envString(string calldata name, string calldata delim) external view returns (string[] memory value); - - /// Gets the environment variable `name` and parses it as `uint256`. - /// Reverts if the variable was not found or could not be parsed. - function envUint(string calldata name) external view returns (uint256 value); - - /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value); - - /// Returns true if `forge` command was executed in given context. - function isContext(ForgeContext context) external view returns (bool result); - - /// Sets environment variables. - function setEnv(string calldata name, string calldata value) external; - - // ======== EVM ======== - - /// Gets all accessed reads and write slot from a `vm.record` session, for a given address. - function accesses(address target) external returns (bytes32[] memory readSlots, bytes32[] memory writeSlots); - - /// Gets the address for a given private key. - function addr(uint256 privateKey) external pure returns (address keyAddr); - - /// Gets all the logs according to specified filter. - function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] calldata topics) - external - returns (EthGetLogs[] memory logs); - - /// Gets the current `block.blobbasefee`. - /// You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlobBaseFee() external view returns (uint256 blobBaseFee); - - /// Gets the current `block.number`. - /// You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlockNumber() external view returns (uint256 height); - - /// Gets the current `block.timestamp`. - /// You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlockTimestamp() external view returns (uint256 timestamp); - - /// Gets the map key and parent of a mapping at a given slot, for a given address. - function getMappingKeyAndParentOf(address target, bytes32 elementSlot) - external - returns (bool found, bytes32 key, bytes32 parent); - - /// Gets the number of elements in the mapping at the given slot, for a given address. - function getMappingLength(address target, bytes32 mappingSlot) external returns (uint256 length); - - /// Gets the elements at index idx of the mapping at the given slot, for a given address. The - /// index must be less than the length of the mapping (i.e. the number of keys in the mapping). - function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) external returns (bytes32 value); - - /// Gets the nonce of an account. - function getNonce(address account) external view returns (uint64 nonce); - - /// Gets all the recorded logs. - function getRecordedLogs() external returns (Log[] memory logs); - - /// Gets the gas used in the last call. - function lastCallGas() external view returns (Gas memory gas); - - /// Loads a storage slot from an address. - function load(address target, bytes32 slot) external view returns (bytes32 data); - - /// Pauses gas metering (i.e. gas usage is not counted). Noop if already paused. - function pauseGasMetering() external; - - /// Records all storage reads and writes. - function record() external; - - /// Record all the transaction logs. - function recordLogs() external; - - /// Resumes gas metering (i.e. gas usage is counted again). Noop if already on. - function resumeGasMetering() external; - - /// Performs an Ethereum JSON-RPC request to the current fork URL. - function rpc(string calldata method, string calldata params) external returns (bytes memory data); - - /// Performs an Ethereum JSON-RPC request to the given endpoint. - function rpc(string calldata urlOrAlias, string calldata method, string calldata params) - external - returns (bytes memory data); - - /// Signs `digest` with `privateKey` using the secp256r1 curve. - function signP256(uint256 privateKey, bytes32 digest) external pure returns (bytes32 r, bytes32 s); - - /// Signs `digest` with `privateKey` using the secp256k1 curve. - function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// If `--sender` is provided, the signer with provided address is used, otherwise, - /// if exactly one signer is provided to the script, that signer is used. - /// Raises error if signer passed through `--sender` does not match any unlocked signers or - /// if `--sender` is not provided and not exactly one signer is passed to the script. - function sign(bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// Raises error if none of the signers passed into the script have provided address. - function sign(address signer, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - /// Starts recording all map SSTOREs for later retrieval. - function startMappingRecording() external; - - /// Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, - /// along with the context of the calls - function startStateDiffRecording() external; - - /// Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session. - function stopAndReturnStateDiff() external returns (AccountAccess[] memory accountAccesses); - - /// Stops recording all map SSTOREs for later retrieval and clears the recorded data. - function stopMappingRecording() external; - - // ======== Filesystem ======== - - /// Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. - /// `path` is relative to the project root. - function closeFile(string calldata path) external; - - /// Copies the contents of one file to another. This function will **overwrite** the contents of `to`. - /// On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. - /// Both `from` and `to` are relative to the project root. - function copyFile(string calldata from, string calldata to) external returns (uint64 copied); - - /// Creates a new, empty directory at the provided path. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - User lacks permissions to modify `path`. - /// - A parent of the given path doesn't exist and `recursive` is false. - /// - `path` already exists and `recursive` is false. - /// `path` is relative to the project root. - function createDir(string calldata path, bool recursive) external; - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function deployCode(string calldata artifactPath) external returns (address deployedAddress); - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionaly accepts abi-encoded constructor arguments. - function deployCode(string calldata artifactPath, bytes calldata constructorArgs) - external - returns (address deployedAddress); - - /// Returns true if the given path points to an existing entity, else returns false. - function exists(string calldata path) external returns (bool result); - - /// Performs a foreign function call via the terminal. - function ffi(string[] calldata commandInput) external returns (bytes memory result); - - /// Given a path, query the file system to get information about a file, directory, etc. - function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata); - - /// Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode); - - /// Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode); - - /// Returns true if the path exists on disk and is pointing at a directory, else returns false. - function isDir(string calldata path) external returns (bool result); - - /// Returns true if the path exists on disk and is pointing at a regular file, else returns false. - function isFile(string calldata path) external returns (bool result); - - /// Get the path of the current project root. - function projectRoot() external view returns (string memory path); - - /// Prompts the user for a string value in the terminal. - function prompt(string calldata promptText) external returns (string memory input); - - /// Prompts the user for an address in the terminal. - function promptAddress(string calldata promptText) external returns (address); - - /// Prompts the user for a hidden string value in the terminal. - function promptSecret(string calldata promptText) external returns (string memory input); - - /// Prompts the user for hidden uint256 in the terminal (usually pk). - function promptSecretUint(string calldata promptText) external returns (uint256); - - /// Prompts the user for uint256 in the terminal. - function promptUint(string calldata promptText) external returns (uint256); - - /// Reads the directory at the given path recursively, up to `maxDepth`. - /// `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. - /// Follows symbolic links if `followLinks` is true. - function readDir(string calldata path) external view returns (DirEntry[] memory entries); - - /// See `readDir(string)`. - function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries); - - /// See `readDir(string)`. - function readDir(string calldata path, uint64 maxDepth, bool followLinks) - external - view - returns (DirEntry[] memory entries); - - /// Reads the entire content of file to string. `path` is relative to the project root. - function readFile(string calldata path) external view returns (string memory data); - - /// Reads the entire content of file as binary. `path` is relative to the project root. - function readFileBinary(string calldata path) external view returns (bytes memory data); - - /// Reads next line of file to string. - function readLine(string calldata path) external view returns (string memory line); - - /// Reads a symbolic link, returning the path that the link points to. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` is not a symbolic link. - /// - `path` does not exist. - function readLink(string calldata linkPath) external view returns (string memory targetPath); - - /// Removes a directory at the provided path. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` doesn't exist. - /// - `path` isn't a directory. - /// - User lacks permissions to modify `path`. - /// - The directory is not empty and `recursive` is false. - /// `path` is relative to the project root. - function removeDir(string calldata path, bool recursive) external; - - /// Removes a file from the filesystem. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` points to a directory. - /// - The file doesn't exist. - /// - The user lacks permissions to remove the file. - /// `path` is relative to the project root. - function removeFile(string calldata path) external; - - /// Performs a foreign function call via terminal and returns the exit code, stdout, and stderr. - function tryFfi(string[] calldata commandInput) external returns (FfiResult memory result); - - /// Returns the time since unix epoch in milliseconds. - function unixTime() external returns (uint256 milliseconds); - - /// Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. - /// `path` is relative to the project root. - function writeFile(string calldata path, string calldata data) external; - - /// Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. - /// `path` is relative to the project root. - function writeFileBinary(string calldata path, bytes calldata data) external; - - /// Writes line to file, creating a file if it does not exist. - /// `path` is relative to the project root. - function writeLine(string calldata path, string calldata data) external; - - // ======== JSON ======== - - /// Checks if `key` exists in a JSON object - /// `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions. - function keyExists(string calldata json, string calldata key) external view returns (bool); - - /// Checks if `key` exists in a JSON object. - function keyExistsJson(string calldata json, string calldata key) external view returns (bool); - - /// Parses a string of JSON data at `key` and coerces it to `address`. - function parseJsonAddress(string calldata json, string calldata key) external pure returns (address); - - /// Parses a string of JSON data at `key` and coerces it to `address[]`. - function parseJsonAddressArray(string calldata json, string calldata key) - external - pure - returns (address[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bool`. - function parseJsonBool(string calldata json, string calldata key) external pure returns (bool); - - /// Parses a string of JSON data at `key` and coerces it to `bool[]`. - function parseJsonBoolArray(string calldata json, string calldata key) external pure returns (bool[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes`. - function parseJsonBytes(string calldata json, string calldata key) external pure returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes32`. - function parseJsonBytes32(string calldata json, string calldata key) external pure returns (bytes32); - - /// Parses a string of JSON data at `key` and coerces it to `bytes32[]`. - function parseJsonBytes32Array(string calldata json, string calldata key) - external - pure - returns (bytes32[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes[]`. - function parseJsonBytesArray(string calldata json, string calldata key) external pure returns (bytes[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `int256`. - function parseJsonInt(string calldata json, string calldata key) external pure returns (int256); - - /// Parses a string of JSON data at `key` and coerces it to `int256[]`. - function parseJsonIntArray(string calldata json, string calldata key) external pure returns (int256[] memory); - - /// Returns an array of all the keys in a JSON object. - function parseJsonKeys(string calldata json, string calldata key) external pure returns (string[] memory keys); - - /// Parses a string of JSON data at `key` and coerces it to `string`. - function parseJsonString(string calldata json, string calldata key) external pure returns (string memory); - - /// Parses a string of JSON data at `key` and coerces it to `string[]`. - function parseJsonStringArray(string calldata json, string calldata key) external pure returns (string[] memory); - - /// Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`. - function parseJsonTypeArray(string calldata json, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data and coerces it to type corresponding to `typeDescription`. - function parseJsonType(string calldata json, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`. - function parseJsonType(string calldata json, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to `uint256`. - function parseJsonUint(string calldata json, string calldata key) external pure returns (uint256); - - /// Parses a string of JSON data at `key` and coerces it to `uint256[]`. - function parseJsonUintArray(string calldata json, string calldata key) external pure returns (uint256[] memory); - - /// ABI-encodes a JSON object. - function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData); - - /// ABI-encodes a JSON object at `key`. - function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData); - - /// See `serializeJson`. - function serializeAddress(string calldata objectKey, string calldata valueKey, address value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBool(string calldata objectKey, string calldata valueKey, bool value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeInt(string calldata objectKey, string calldata valueKey, int256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values) - external - returns (string memory json); - - /// Serializes a key and value to a JSON object stored in-memory that can be later written to a file. - /// Returns the stringified version of the specific JSON file up to that moment. - function serializeJson(string calldata objectKey, string calldata value) external returns (string memory json); - - /// See `serializeJson`. - function serializeJsonType(string calldata typeDescription, bytes calldata value) - external - pure - returns (string memory json); - - /// See `serializeJson`. - function serializeJsonType( - string calldata objectKey, - string calldata valueKey, - string calldata typeDescription, - bytes calldata value - ) external returns (string memory json); - - /// See `serializeJson`. - function serializeString(string calldata objectKey, string calldata valueKey, string calldata value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUintToHex(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values) - external - returns (string memory json); - - /// Write a serialized JSON object to a file. If the file exists, it will be overwritten. - function writeJson(string calldata json, string calldata path) external; - - /// Write a serialized JSON object to an **existing** JSON file, replacing a value with key = - /// This is useful to replace a specific value of a JSON file, without having to parse the entire thing. - function writeJson(string calldata json, string calldata path, string calldata valueKey) external; - - // ======== Scripting ======== - - /// Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. - /// Broadcasting address is determined by checking the following in order: - /// 1. If `--sender` argument was provided, that address is used. - /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. - /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. - function broadcast() external; - - /// Has the next call (at this call depth only) create a transaction with the address provided - /// as the sender that can later be signed and sent onchain. - function broadcast(address signer) external; - - /// Has the next call (at this call depth only) create a transaction with the private key - /// provided as the sender that can later be signed and sent onchain. - function broadcast(uint256 privateKey) external; - - /// Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. - /// Broadcasting address is determined by checking the following in order: - /// 1. If `--sender` argument was provided, that address is used. - /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. - /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. - function startBroadcast() external; - - /// Has all subsequent calls (at this call depth only) create transactions with the address - /// provided that can later be signed and sent onchain. - function startBroadcast(address signer) external; - - /// Has all subsequent calls (at this call depth only) create transactions with the private key - /// provided that can later be signed and sent onchain. - function startBroadcast(uint256 privateKey) external; - - /// Stops collecting onchain transactions. - function stopBroadcast() external; - - // ======== String ======== - - /// Returns the index of the first occurrence of a `key` in an `input` string. - /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. - /// Returns 0 in case of an empty `key`. - function indexOf(string calldata input, string calldata key) external pure returns (uint256); - - /// Parses the given `string` into an `address`. - function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue); - - /// Parses the given `string` into a `bool`. - function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue); - - /// Parses the given `string` into `bytes`. - function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue); - - /// Parses the given `string` into a `bytes32`. - function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue); - - /// Parses the given `string` into a `int256`. - function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue); - - /// Parses the given `string` into a `uint256`. - function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue); - - /// Replaces occurrences of `from` in the given `string` with `to`. - function replace(string calldata input, string calldata from, string calldata to) - external - pure - returns (string memory output); - - /// Splits the given `string` into an array of strings divided by the `delimiter`. - function split(string calldata input, string calldata delimiter) external pure returns (string[] memory outputs); - - /// Converts the given `string` value to Lowercase. - function toLowercase(string calldata input) external pure returns (string memory output); - - /// Converts the given value to a `string`. - function toString(address value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bytes calldata value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bytes32 value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bool value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(uint256 value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(int256 value) external pure returns (string memory stringifiedValue); - - /// Converts the given `string` value to Uppercase. - function toUppercase(string calldata input) external pure returns (string memory output); - - /// Trims leading and trailing whitespace from the given `string` value. - function trim(string calldata input) external pure returns (string memory output); - - // ======== Testing ======== - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. - function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqAbsDecimal( - uint256 left, - uint256 right, - uint256 maxDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqAbsDecimal( - int256 left, - int256 right, - uint256 maxDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Includes error message into revert string on failure. - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string calldata error) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Includes error message into revert string on failure. - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string calldata error) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. - function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) - external - pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. - function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) - external - pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Includes error message into revert string on failure. - function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string calldata error) - external - pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) external pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Includes error message into revert string on failure. - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string calldata error) - external - pure; - - /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. - function assertEqDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `bool` values are equal. - function assertEq(bool left, bool right) external pure; - - /// Asserts that two `bool` values are equal and includes error message into revert string on failure. - function assertEq(bool left, bool right, string calldata error) external pure; - - /// Asserts that two `string` values are equal. - function assertEq(string calldata left, string calldata right) external pure; - - /// Asserts that two `string` values are equal and includes error message into revert string on failure. - function assertEq(string calldata left, string calldata right, string calldata error) external pure; - - /// Asserts that two `bytes` values are equal. - function assertEq(bytes calldata left, bytes calldata right) external pure; - - /// Asserts that two `bytes` values are equal and includes error message into revert string on failure. - function assertEq(bytes calldata left, bytes calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bool` values are equal. - function assertEq(bool[] calldata left, bool[] calldata right) external pure; - - /// Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure. - function assertEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `uint256 values are equal. - function assertEq(uint256[] calldata left, uint256[] calldata right) external pure; - - /// Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure. - function assertEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `int256` values are equal. - function assertEq(int256[] calldata left, int256[] calldata right) external pure; - - /// Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure. - function assertEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are equal. - function assertEq(uint256 left, uint256 right) external pure; - - /// Asserts that two arrays of `address` values are equal. - function assertEq(address[] calldata left, address[] calldata right) external pure; - - /// Asserts that two arrays of `address` values are equal and includes error message into revert string on failure. - function assertEq(address[] calldata left, address[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes32` values are equal. - function assertEq(bytes32[] calldata left, bytes32[] calldata right) external pure; - - /// Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure. - function assertEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `string` values are equal. - function assertEq(string[] calldata left, string[] calldata right) external pure; - - /// Asserts that two arrays of `string` values are equal and includes error message into revert string on failure. - function assertEq(string[] calldata left, string[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes` values are equal. - function assertEq(bytes[] calldata left, bytes[] calldata right) external pure; - - /// Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure. - function assertEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are equal and includes error message into revert string on failure. - function assertEq(uint256 left, uint256 right, string calldata error) external pure; - - /// Asserts that two `int256` values are equal. - function assertEq(int256 left, int256 right) external pure; - - /// Asserts that two `int256` values are equal and includes error message into revert string on failure. - function assertEq(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `address` values are equal. - function assertEq(address left, address right) external pure; - - /// Asserts that two `address` values are equal and includes error message into revert string on failure. - function assertEq(address left, address right, string calldata error) external pure; - - /// Asserts that two `bytes32` values are equal. - function assertEq(bytes32 left, bytes32 right) external pure; - - /// Asserts that two `bytes32` values are equal and includes error message into revert string on failure. - function assertEq(bytes32 left, bytes32 right, string calldata error) external pure; - - /// Asserts that the given condition is false. - function assertFalse(bool condition) external pure; - - /// Asserts that the given condition is false and includes error message into revert string on failure. - function assertFalse(bool condition, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. - function assertGeDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - function assertGe(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Includes error message into revert string on failure. - function assertGe(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - function assertGe(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Includes error message into revert string on failure. - function assertGe(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. - function assertGtDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - function assertGt(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Includes error message into revert string on failure. - function assertGt(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - function assertGt(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Includes error message into revert string on failure. - function assertGt(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. - function assertLeDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - function assertLe(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Includes error message into revert string on failure. - function assertLe(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - function assertLe(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Includes error message into revert string on failure. - function assertLe(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. - function assertLtDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - function assertLt(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Includes error message into revert string on failure. - function assertLt(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - function assertLt(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Includes error message into revert string on failure. - function assertLt(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `bool` values are not equal. - function assertNotEq(bool left, bool right) external pure; - - /// Asserts that two `bool` values are not equal and includes error message into revert string on failure. - function assertNotEq(bool left, bool right, string calldata error) external pure; - - /// Asserts that two `string` values are not equal. - function assertNotEq(string calldata left, string calldata right) external pure; - - /// Asserts that two `string` values are not equal and includes error message into revert string on failure. - function assertNotEq(string calldata left, string calldata right, string calldata error) external pure; - - /// Asserts that two `bytes` values are not equal. - function assertNotEq(bytes calldata left, bytes calldata right) external pure; - - /// Asserts that two `bytes` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes calldata left, bytes calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bool` values are not equal. - function assertNotEq(bool[] calldata left, bool[] calldata right) external pure; - - /// Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure. - function assertNotEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `uint256` values are not equal. - function assertNotEq(uint256[] calldata left, uint256[] calldata right) external pure; - - /// Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure. - function assertNotEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `int256` values are not equal. - function assertNotEq(int256[] calldata left, int256[] calldata right) external pure; - - /// Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure. - function assertNotEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal. - function assertNotEq(uint256 left, uint256 right) external pure; - - /// Asserts that two arrays of `address` values are not equal. - function assertNotEq(address[] calldata left, address[] calldata right) external pure; - - /// Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure. - function assertNotEq(address[] calldata left, address[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes32` values are not equal. - function assertNotEq(bytes32[] calldata left, bytes32[] calldata right) external pure; - - /// Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `string` values are not equal. - function assertNotEq(string[] calldata left, string[] calldata right) external pure; - - /// Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure. - function assertNotEq(string[] calldata left, string[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes` values are not equal. - function assertNotEq(bytes[] calldata left, bytes[] calldata right) external pure; - - /// Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal and includes error message into revert string on failure. - function assertNotEq(uint256 left, uint256 right, string calldata error) external pure; - - /// Asserts that two `int256` values are not equal. - function assertNotEq(int256 left, int256 right) external pure; - - /// Asserts that two `int256` values are not equal and includes error message into revert string on failure. - function assertNotEq(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `address` values are not equal. - function assertNotEq(address left, address right) external pure; - - /// Asserts that two `address` values are not equal and includes error message into revert string on failure. - function assertNotEq(address left, address right, string calldata error) external pure; - - /// Asserts that two `bytes32` values are not equal. - function assertNotEq(bytes32 left, bytes32 right) external pure; - - /// Asserts that two `bytes32` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes32 left, bytes32 right, string calldata error) external pure; - - /// Asserts that the given condition is true. - function assertTrue(bool condition) external pure; - - /// Asserts that the given condition is true and includes error message into revert string on failure. - function assertTrue(bool condition, string calldata error) external pure; - - /// If the condition is false, discard this run's fuzz inputs and generate new ones. - function assume(bool condition) external pure; - - /// Writes a breakpoint to jump to in the debugger. - function breakpoint(string calldata char) external; - - /// Writes a conditional breakpoint to jump to in the debugger. - function breakpoint(string calldata char, bool value) external; - - /// Returns the RPC url for the given alias. - function rpcUrl(string calldata rpcAlias) external view returns (string memory json); - - /// Returns all rpc urls and their aliases as structs. - function rpcUrlStructs() external view returns (Rpc[] memory urls); - - /// Returns all rpc urls and their aliases `[alias, url][]`. - function rpcUrls() external view returns (string[2][] memory urls); - - /// Suspends execution of the main thread for `duration` milliseconds. - function sleep(uint256 duration) external; - - // ======== Toml ======== - - /// Checks if `key` exists in a TOML table. - function keyExistsToml(string calldata toml, string calldata key) external view returns (bool); - - /// Parses a string of TOML data at `key` and coerces it to `address`. - function parseTomlAddress(string calldata toml, string calldata key) external pure returns (address); - - /// Parses a string of TOML data at `key` and coerces it to `address[]`. - function parseTomlAddressArray(string calldata toml, string calldata key) - external - pure - returns (address[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bool`. - function parseTomlBool(string calldata toml, string calldata key) external pure returns (bool); - - /// Parses a string of TOML data at `key` and coerces it to `bool[]`. - function parseTomlBoolArray(string calldata toml, string calldata key) external pure returns (bool[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes`. - function parseTomlBytes(string calldata toml, string calldata key) external pure returns (bytes memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes32`. - function parseTomlBytes32(string calldata toml, string calldata key) external pure returns (bytes32); - - /// Parses a string of TOML data at `key` and coerces it to `bytes32[]`. - function parseTomlBytes32Array(string calldata toml, string calldata key) - external - pure - returns (bytes32[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes[]`. - function parseTomlBytesArray(string calldata toml, string calldata key) external pure returns (bytes[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `int256`. - function parseTomlInt(string calldata toml, string calldata key) external pure returns (int256); - - /// Parses a string of TOML data at `key` and coerces it to `int256[]`. - function parseTomlIntArray(string calldata toml, string calldata key) external pure returns (int256[] memory); - - /// Returns an array of all the keys in a TOML table. - function parseTomlKeys(string calldata toml, string calldata key) external pure returns (string[] memory keys); - - /// Parses a string of TOML data at `key` and coerces it to `string`. - function parseTomlString(string calldata toml, string calldata key) external pure returns (string memory); - - /// Parses a string of TOML data at `key` and coerces it to `string[]`. - function parseTomlStringArray(string calldata toml, string calldata key) external pure returns (string[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `uint256`. - function parseTomlUint(string calldata toml, string calldata key) external pure returns (uint256); - - /// Parses a string of TOML data at `key` and coerces it to `uint256[]`. - function parseTomlUintArray(string calldata toml, string calldata key) external pure returns (uint256[] memory); - - /// ABI-encodes a TOML table. - function parseToml(string calldata toml) external pure returns (bytes memory abiEncodedData); - - /// ABI-encodes a TOML table at `key`. - function parseToml(string calldata toml, string calldata key) external pure returns (bytes memory abiEncodedData); - - /// Takes serialized JSON, converts to TOML and write a serialized TOML to a file. - function writeToml(string calldata json, string calldata path) external; - - /// Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = - /// This is useful to replace a specific value of a TOML file, without having to parse the entire thing. - function writeToml(string calldata json, string calldata path, string calldata valueKey) external; - - // ======== Utilities ======== - - /// Compute the address of a contract created with CREATE2 using the given CREATE2 deployer. - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) - external - pure - returns (address); - - /// Compute the address of a contract created with CREATE2 using the default CREATE2 deployer. - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) external pure returns (address); - - /// Compute the address a contract will be deployed at for a given deployer address and nonce. - function computeCreateAddress(address deployer, uint256 nonce) external pure returns (address); - - /// Derives a private key from the name, labels the account with that name, and returns the wallet. - function createWallet(string calldata walletLabel) external returns (Wallet memory wallet); - - /// Generates a wallet from the private key and returns the wallet. - function createWallet(uint256 privateKey) external returns (Wallet memory wallet); - - /// Generates a wallet from the private key, labels the account with that name, and returns the wallet. - function createWallet(uint256 privateKey, string calldata walletLabel) external returns (Wallet memory wallet); - - /// Derive a private key from a provided mnenomic string (or mnenomic file path) - /// at the derivation path `m/44'/60'/0'/0/{index}`. - function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey); - - /// Derive a private key from a provided mnenomic string (or mnenomic file path) - /// at `{derivationPath}{index}`. - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index) - external - pure - returns (uint256 privateKey); - - /// Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language - /// at the derivation path `m/44'/60'/0'/0/{index}`. - function deriveKey(string calldata mnemonic, uint32 index, string calldata language) - external - pure - returns (uint256 privateKey); - - /// Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language - /// at `{derivationPath}{index}`. - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index, string calldata language) - external - pure - returns (uint256 privateKey); - - /// Returns ENS namehash for provided string. - function ensNamehash(string calldata name) external pure returns (bytes32); - - /// Gets the label for the specified address. - function getLabel(address account) external view returns (string memory currentLabel); - - /// Get a `Wallet`'s nonce. - function getNonce(Wallet calldata wallet) external returns (uint64 nonce); - - /// Labels an address in call traces. - function label(address account, string calldata newLabel) external; - - /// Returns a random `address`. - function randomAddress() external returns (address); - - /// Returns a random uint256 value. - function randomUint() external returns (uint256); - - /// Returns random uin256 value between the provided range (=min..=max). - function randomUint(uint256 min, uint256 max) external returns (uint256); - - /// Adds a private key to the local forge wallet and returns the address. - function rememberKey(uint256 privateKey) external returns (address keyAddr); - - /// Signs data with a `Wallet`. - function sign(Wallet calldata wallet, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s); - - /// Encodes a `bytes` value to a base64url string. - function toBase64URL(bytes calldata data) external pure returns (string memory); - - /// Encodes a `string` value to a base64url string. - function toBase64URL(string calldata data) external pure returns (string memory); - - /// Encodes a `bytes` value to a base64 string. - function toBase64(bytes calldata data) external pure returns (string memory); - - /// Encodes a `string` value to a base64 string. - function toBase64(string calldata data) external pure returns (string memory); -} - -/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used -/// in tests, but it is not recommended to use these cheats in scripts. -interface Vm is VmSafe { - // ======== EVM ======== - - /// Returns the identifier of the currently active fork. Reverts if no fork is currently active. - function activeFork() external view returns (uint256 forkId); - - /// In forking mode, explicitly grant the given address cheatcode access. - function allowCheatcodes(address account) external; - - /// Sets `block.blobbasefee` - function blobBaseFee(uint256 newBlobBaseFee) external; - - /// Sets the blobhashes in the transaction. - /// Not available on EVM versions before Cancun. - /// If used on unsupported EVM versions it will revert. - function blobhashes(bytes32[] calldata hashes) external; - - /// Sets `block.chainid`. - function chainId(uint256 newChainId) external; - - /// Clears all mocked calls. - function clearMockedCalls() external; - - /// Sets `block.coinbase`. - function coinbase(address newCoinbase) external; - - /// Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork. - function createFork(string calldata urlOrAlias) external returns (uint256 forkId); - - /// Creates a new fork with the given endpoint and block and returns the identifier of the fork. - function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - - /// Creates a new fork with the given endpoint and at the block the given transaction was mined in, - /// replays all transaction mined in the block before the transaction, and returns the identifier of the fork. - function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - - /// Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId); - - /// Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - - /// Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, - /// replays all transaction mined in the block before the transaction, returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - - /// Sets an address' balance. - function deal(address account, uint256 newBalance) external; - - /// Removes the snapshot with the given ID created by `snapshot`. - /// Takes the snapshot ID to delete. - /// Returns `true` if the snapshot was successfully deleted. - /// Returns `false` if the snapshot does not exist. - function deleteSnapshot(uint256 snapshotId) external returns (bool success); - - /// Removes _all_ snapshots previously created by `snapshot`. - function deleteSnapshots() external; - - /// Sets `block.difficulty`. - /// Not available on EVM versions from Paris onwards. Use `prevrandao` instead. - /// Reverts if used on unsupported EVM versions. - function difficulty(uint256 newDifficulty) external; - - /// Dump a genesis JSON file's `allocs` to disk. - function dumpState(string calldata pathToStateJson) external; - - /// Sets an address' code. - function etch(address target, bytes calldata newRuntimeBytecode) external; - - /// Sets `block.basefee`. - function fee(uint256 newBasefee) external; - - /// Gets the blockhashes from the current transaction. - /// Not available on EVM versions before Cancun. - /// If used on unsupported EVM versions it will revert. - function getBlobhashes() external view returns (bytes32[] memory hashes); - - /// Returns true if the account is marked as persistent. - function isPersistent(address account) external view returns (bool persistent); - - /// Load a genesis JSON file's `allocs` into the in-memory revm state. - function loadAllocs(string calldata pathToAllocsJson) external; - - /// Marks that the account(s) should use persistent storage across fork swaps in a multifork setup - /// Meaning, changes made to the state of this account will be kept when switching forks. - function makePersistent(address account) external; - - /// See `makePersistent(address)`. - function makePersistent(address account0, address account1) external; - - /// See `makePersistent(address)`. - function makePersistent(address account0, address account1, address account2) external; - - /// See `makePersistent(address)`. - function makePersistent(address[] calldata accounts) external; - - /// Reverts a call to an address with specified revert data. - function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external; - - /// Reverts a call to an address with a specific `msg.value`, with specified revert data. - function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData) - 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 callee, bytes calldata data, bytes calldata returnData) external; - - /// Mocks a call to an address with a specific `msg.value`, returning specified data. - /// Calldata match takes precedence over `msg.value` in case of ambiguity. - function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external; - - /// Sets the *next* call's `msg.sender` to be the input address. - function prank(address msgSender) 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 msgSender, address txOrigin) external; - - /// Sets `block.prevrandao`. - /// Not available on EVM versions before Paris. Use `difficulty` instead. - /// If used on unsupported EVM versions it will revert. - function prevrandao(bytes32 newPrevrandao) external; - - /// Sets `block.prevrandao`. - /// Not available on EVM versions before Paris. Use `difficulty` instead. - /// If used on unsupported EVM versions it will revert. - function prevrandao(uint256 newPrevrandao) external; - - /// Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification. - function readCallers() external returns (CallerMode callerMode, address msgSender, address txOrigin); - - /// Resets the nonce of an account to 0 for EOAs and 1 for contract accounts. - function resetNonce(address account) external; - - /// Revert the state of the EVM to a previous snapshot - /// Takes the snapshot ID to revert to. - /// Returns `true` if the snapshot was successfully reverted. - /// Returns `false` if the snapshot does not exist. - /// **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`. - function revertTo(uint256 snapshotId) external returns (bool success); - - /// Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots - /// Takes the snapshot ID to revert to. - /// Returns `true` if the snapshot was successfully reverted and deleted. - /// Returns `false` if the snapshot does not exist. - function revertToAndDelete(uint256 snapshotId) external returns (bool success); - - /// Revokes persistent status from the address, previously added via `makePersistent`. - function revokePersistent(address account) external; - - /// See `revokePersistent(address)`. - function revokePersistent(address[] calldata accounts) external; - - /// Sets `block.height`. - function roll(uint256 newHeight) external; - - /// Updates the currently active fork to given block number - /// This is similar to `roll` but for the currently active fork. - function rollFork(uint256 blockNumber) external; - - /// Updates the currently active fork to given transaction. This will `rollFork` with the number - /// of the block the transaction was mined in and replays all transaction mined before it in the block. - function rollFork(bytes32 txHash) external; - - /// Updates the given fork to given block number. - function rollFork(uint256 forkId, uint256 blockNumber) external; - - /// Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block. - function rollFork(uint256 forkId, bytes32 txHash) external; - - /// Takes a fork identifier created by `createFork` and sets the corresponding forked state as active. - function selectFork(uint256 forkId) external; - - /// Set blockhash for the current block. - /// It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`. - function setBlockhash(uint256 blockNumber, bytes32 blockHash) external; - - /// Sets the nonce of an account. Must be higher than the current nonce of the account. - function setNonce(address account, uint64 newNonce) external; - - /// Sets the nonce of an account to an arbitrary value. - function setNonceUnsafe(address account, uint64 newNonce) external; - - /// Snapshot the current state of the evm. - /// Returns the ID of the snapshot that was created. - /// To revert a snapshot use `revertTo`. - function snapshot() external returns (uint256 snapshotId); - - /// Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called. - function startPrank(address msgSender) 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 msgSender, address txOrigin) external; - - /// Resets subsequent calls' `msg.sender` to be `address(this)`. - function stopPrank() external; - - /// Stores a value to an address' storage slot. - function store(address target, bytes32 slot, bytes32 value) external; - - /// Fetches the given transaction from the active fork and executes it on the current state. - function transact(bytes32 txHash) external; - - /// Fetches the given transaction from the given fork and executes it on the current state. - function transact(uint256 forkId, bytes32 txHash) external; - - /// Sets `tx.gasprice`. - function txGasPrice(uint256 newGasPrice) external; - - /// Sets `block.timestamp`. - function warp(uint256 newTimestamp) external; - - // ======== Testing ======== - - /// Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external; - - /// Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count) - external; - - /// Expects a call to an address with the specified calldata. - /// Calldata can either be a strict or a partial match. - function expectCall(address callee, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified calldata. - function expectCall(address callee, bytes calldata data, uint64 count) external; - - /// Expects a call to an address with the specified `msg.value` and calldata. - function expectCall(address callee, uint256 msgValue, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified `msg.value` and calldata. - function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external; - - /// Expect a call to an address with the specified `msg.value`, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified `msg.value`, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external; - - /// Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). - /// Call this function, then emit an anonymous 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 expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) - external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmitAnonymous( - bool checkTopic0, - bool checkTopic1, - bool checkTopic2, - bool checkTopic3, - bool checkData, - address emitter - ) external; - - /// Prepare an expected anonymous log with all topic and data checks enabled. - /// Call this function, then emit an anonymous 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. - function expectEmitAnonymous() external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmitAnonymous(address emitter) external; - - /// 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 checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) - external; - - /// Prepare an expected log with all topic and data checks enabled. - /// 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. - function expectEmit() external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmit(address emitter) external; - - /// Expects an error on next call with any revert data. - function expectRevert() external; - - /// Expects an error on next call that starts with the revert data. - function expectRevert(bytes4 revertData) external; - - /// Expects an error on next call that exactly matches the revert data. - function expectRevert(bytes calldata revertData) external; - - /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other - /// memory is written to, the test will fail. Can be called multiple times to add more ranges to the set. - function expectSafeMemory(uint64 min, uint64 max) external; - - /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. - /// If any other memory is written to, the test will fail. Can be called multiple times to add more ranges - /// to the set. - function expectSafeMemoryCall(uint64 min, uint64 max) external; - - /// Marks a test as skipped. Must be called at the top of the test. - function skip(bool skipTest) external; - - /// Stops all safe memory expectation in the current subcontext. - function stopExpectSafeMemory() external; -} diff --git a/v2/lib/forge-std/src/console.sol b/v2/lib/forge-std/src/console.sol deleted file mode 100644 index 755eedcd..00000000 --- a/v2/lib/forge-std/src/console.sol +++ /dev/null @@ -1,1552 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -library console { - address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); - - function _castLogPayloadViewToPure( - function(bytes memory) internal view fnIn - ) internal pure returns (function(bytes memory) internal pure fnOut) { - assembly { - fnOut := fnIn - } - } - - function _sendLogPayload(bytes memory payload) internal pure { - _castLogPayloadViewToPure(_sendLogPayloadView)(payload); - } - - function _sendLogPayloadView(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function log() internal pure { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); - } - - function logUint(uint p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function logString(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function log(int p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); - } - - function log(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint p0, uint p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); - } - - function log(uint p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); - } - - function log(uint p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); - } - - function log(uint p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); - } - - function log(string memory p0, uint p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); - } - - function log(string memory p0, int p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,int)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); - } - - function log(bool p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); - } - - function log(address p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint p0, uint p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); - } - - function log(uint p0, uint p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); - } - - function log(uint p0, uint p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); - } - - function log(uint p0, uint p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); - } - - function log(uint p0, bool p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); - } - - function log(uint p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); - } - - function log(uint p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); - } - - function log(uint p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); - } - - function log(uint p0, address p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); - } - - function log(uint p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); - } - - function log(uint p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); - } - - function log(uint p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); - } - - function log(bool p0, uint p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); - } - - function log(bool p0, uint p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); - } - - function log(bool p0, uint p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); - } - - function log(address p0, uint p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); - } - - function log(address p0, uint p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); - } - - function log(address p0, uint p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint p0, uint p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, address p3) internal pure { - _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 pure { - _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 pure { - _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 pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint p3) internal pure { - _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 pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } -} diff --git a/v2/lib/forge-std/src/console2.sol b/v2/lib/forge-std/src/console2.sol deleted file mode 100644 index 03531d91..00000000 --- a/v2/lib/forge-std/src/console2.sol +++ /dev/null @@ -1,4 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {console as console2} from "./console.sol"; diff --git a/v2/lib/forge-std/src/interfaces/IERC1155.sol b/v2/lib/forge-std/src/interfaces/IERC1155.sol deleted file mode 100644 index f7dd2b41..00000000 --- a/v2/lib/forge-std/src/interfaces/IERC1155.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-1155 Multi Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-1155 -/// Note: The ERC-165 identifier for this interface is 0xd9b67a26. -interface IERC1155 is IERC165 { - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_id` argument MUST be the token type being transferred. - /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferSingle( - address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value - ); - - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_ids` argument MUST be the list of tokens being transferred. - /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferBatch( - address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values - ); - - /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. - /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". - event URI(string _value, uint256 indexed _id); - - /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. - /// - MUST revert on any other error. - /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). - /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _id ID of the token type - /// @param _value Transfer amount - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` - function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; - - /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if length of `_ids` is not the same as length of `_values`. - /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. - /// - MUST revert on any other error. - /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). - /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). - /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _ids IDs of each token type (order and length must match _values array) - /// @param _values Transfer amounts per token type (order and length must match _ids array) - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _values, - bytes calldata _data - ) external; - - /// @notice Get the balance of an account's tokens. - /// @param _owner The address of the token holder - /// @param _id ID of the token - /// @return The _owner's balance of the token type requested - function balanceOf(address _owner, uint256 _id) external view returns (uint256); - - /// @notice Get the balance of multiple account/token pairs - /// @param _owners The addresses of the token holders - /// @param _ids ID of the tokens - /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) - function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) - external - view - returns (uint256[] memory); - - /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. - /// @dev MUST emit the ApprovalForAll event on success. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Queries the approval status of an operator for a given owner. - /// @param _owner The owner of the tokens - /// @param _operator Address of authorized operator - /// @return True if the operator is approved, false if not - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} diff --git a/v2/lib/forge-std/src/interfaces/IERC165.sol b/v2/lib/forge-std/src/interfaces/IERC165.sol deleted file mode 100644 index 9af4bf80..00000000 --- a/v2/lib/forge-std/src/interfaces/IERC165.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -interface IERC165 { - /// @notice Query if a contract implements an interface - /// @param interfaceID The interface identifier, as specified in ERC-165 - /// @dev Interface identification is specified in ERC-165. This function - /// uses less than 30,000 gas. - /// @return `true` if the contract implements `interfaceID` and - /// `interfaceID` is not 0xffffffff, `false` otherwise - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} diff --git a/v2/lib/forge-std/src/interfaces/IERC20.sol b/v2/lib/forge-std/src/interfaces/IERC20.sol deleted file mode 100644 index ba40806c..00000000 --- a/v2/lib/forge-std/src/interfaces/IERC20.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -/// @dev Interface of the ERC20 standard as defined in the EIP. -/// @dev This includes the optional name, symbol, and decimals metadata. -interface IERC20 { - /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). - event Transfer(address indexed from, address indexed to, uint256 value); - - /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` - /// is the new allowance. - event Approval(address indexed owner, address indexed spender, uint256 value); - - /// @notice Returns the amount of tokens in existence. - function totalSupply() external view returns (uint256); - - /// @notice Returns the amount of tokens owned by `account`. - function balanceOf(address account) external view returns (uint256); - - /// @notice Moves `amount` tokens from the caller's account to `to`. - function transfer(address to, uint256 amount) external returns (bool); - - /// @notice Returns the remaining number of tokens that `spender` is allowed - /// to spend on behalf of `owner` - function allowance(address owner, address spender) external view returns (uint256); - - /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. - /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - function approve(address spender, uint256 amount) external returns (bool); - - /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. - /// `amount` is then deducted from the caller's allowance. - function transferFrom(address from, address to, uint256 amount) external returns (bool); - - /// @notice Returns the name of the token. - function name() external view returns (string memory); - - /// @notice Returns the symbol of the token. - function symbol() external view returns (string memory); - - /// @notice Returns the decimals places of the token. - function decimals() external view returns (uint8); -} diff --git a/v2/lib/forge-std/src/interfaces/IERC4626.sol b/v2/lib/forge-std/src/interfaces/IERC4626.sol deleted file mode 100644 index bfe3a115..00000000 --- a/v2/lib/forge-std/src/interfaces/IERC4626.sol +++ /dev/null @@ -1,190 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC20.sol"; - -/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in -/// https://eips.ethereum.org/EIPS/eip-4626 -interface IERC4626 is IERC20 { - event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); - - event Withdraw( - address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares - ); - - /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - /// @dev - /// - MUST be an ERC-20 token contract. - /// - MUST NOT revert. - function asset() external view returns (address assetTokenAddress); - - /// @notice Returns the total amount of the underlying asset that is “managed” by Vault. - /// @dev - /// - SHOULD include any compounding that occurs from yield. - /// - MUST be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT revert. - function totalAssets() external view returns (uint256 totalManagedAssets); - - /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, - /// through a deposit call. - /// @dev - /// - MUST return a limited value if receiver is subject to some deposit limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - /// - MUST NOT revert. - function maxDeposit(address receiver) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit - /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called - /// in the same transaction. - /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the - /// deposit would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// deposit execution, and are accounted for during deposit. - /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - /// @dev - /// - MUST return a limited value if receiver is subject to some mint limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - /// - MUST NOT revert. - function maxMint(address receiver) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call - /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the - /// same transaction. - /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint - /// would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by minting. - function previewMint(uint256 shares) external view returns (uint256 assets); - - /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint - /// execution, and are accounted for during mint. - /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the - /// Vault, through a withdraw call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST NOT revert. - function maxWithdraw(address owner) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw - /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if - /// called - /// in the same transaction. - /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though - /// the withdrawal would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// withdraw execution, and are accounted for during withdraw. - /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); - - /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, - /// through a redeem call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - /// - MUST NOT revert. - function maxRedeem(address owner) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call - /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the - /// same transaction. - /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the - /// redemption would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by redeeming. - function previewRedeem(uint256 shares) external view returns (uint256 assets); - - /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// redeem execution, and are accounted for during redeem. - /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); -} diff --git a/v2/lib/forge-std/src/interfaces/IERC721.sol b/v2/lib/forge-std/src/interfaces/IERC721.sol deleted file mode 100644 index 0a16f45c..00000000 --- a/v2/lib/forge-std/src/interfaces/IERC721.sol +++ /dev/null @@ -1,164 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-721 Non-Fungible Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x80ac58cd. -interface IERC721 is IERC165 { - /// @dev This emits when ownership of any NFT changes by any mechanism. - /// This event emits when NFTs are created (`from` == 0) and destroyed - /// (`to` == 0). Exception: during contract creation, any number of NFTs - /// may be created and assigned without emitting Transfer. At the time of - /// any transfer, the approved address for that NFT (if any) is reset to none. - event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); - - /// @dev This emits when the approved address for an NFT is changed or - /// reaffirmed. The zero address indicates there is no approved address. - /// When a Transfer event emits, this also indicates that the approved - /// address for that NFT (if any) is reset to none. - event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); - - /// @dev This emits when an operator is enabled or disabled for an owner. - /// The operator can manage all NFTs of the owner. - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @notice Count all NFTs assigned to an owner - /// @dev NFTs assigned to the zero address are considered invalid, and this - /// function throws for queries about the zero address. - /// @param _owner An address for whom to query the balance - /// @return The number of NFTs owned by `_owner`, possibly zero - function balanceOf(address _owner) external view returns (uint256); - - /// @notice Find the owner of an NFT - /// @dev NFTs assigned to zero address are considered invalid, and queries - /// about them do throw. - /// @param _tokenId The identifier for an NFT - /// @return The address of the owner of the NFT - function ownerOf(uint256 _tokenId) external view returns (address); - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. When transfer is complete, this function - /// checks if `_to` is a smart contract (code size > 0). If so, it calls - /// `onERC721Received` on `_to` and throws if the return value is not - /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - /// @param data Additional data with no specified format, sent in call to `_to` - function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev This works identically to the other function with an extra data parameter, - /// except this function just sets data to "". - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE - /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE - /// THEY MAY BE PERMANENTLY LOST - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function transferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Change or reaffirm the approved address for an NFT - /// @dev The zero address indicates there is no approved address. - /// Throws unless `msg.sender` is the current NFT owner, or an authorized - /// operator of the current owner. - /// @param _approved The new approved NFT controller - /// @param _tokenId The NFT to approve - function approve(address _approved, uint256 _tokenId) external payable; - - /// @notice Enable or disable approval for a third party ("operator") to manage - /// all of `msg.sender`'s assets - /// @dev Emits the ApprovalForAll event. The contract MUST allow - /// multiple operators per owner. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Get the approved address for a single NFT - /// @dev Throws if `_tokenId` is not a valid NFT. - /// @param _tokenId The NFT to find the approved address for - /// @return The approved address for this NFT, or the zero address if there is none - function getApproved(uint256 _tokenId) external view returns (address); - - /// @notice Query if an address is an authorized operator for another address - /// @param _owner The address that owns the NFTs - /// @param _operator The address that acts on behalf of the owner - /// @return True if `_operator` is an approved operator for `_owner`, false otherwise - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} - -/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. -interface IERC721TokenReceiver { - /// @notice Handle the receipt of an NFT - /// @dev The ERC721 smart contract calls this function on the recipient - /// after a `transfer`. This function MAY throw to revert and reject the - /// transfer. Return of other than the magic value MUST result in the - /// transaction being reverted. - /// Note: the contract address is always the message sender. - /// @param _operator The address which called `safeTransferFrom` function - /// @param _from The address which previously owned the token - /// @param _tokenId The NFT identifier which is being transferred - /// @param _data Additional data with no specified format - /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - /// unless throwing - function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) - external - returns (bytes4); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x5b5e139f. -interface IERC721Metadata is IERC721 { - /// @notice A descriptive name for a collection of NFTs in this contract - function name() external view returns (string memory _name); - - /// @notice An abbreviated name for NFTs in this contract - function symbol() external view returns (string memory _symbol); - - /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. - /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC - /// 3986. The URI may point to a JSON file that conforms to the "ERC721 - /// Metadata JSON Schema". - function tokenURI(uint256 _tokenId) external view returns (string memory); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x780e9d63. -interface IERC721Enumerable is IERC721 { - /// @notice Count NFTs tracked by this contract - /// @return A count of valid NFTs tracked by this contract, where each one of - /// them has an assigned and queryable owner not equal to the zero address - function totalSupply() external view returns (uint256); - - /// @notice Enumerate valid NFTs - /// @dev Throws if `_index` >= `totalSupply()`. - /// @param _index A counter less than `totalSupply()` - /// @return The token identifier for the `_index`th NFT, - /// (sort order not specified) - function tokenByIndex(uint256 _index) external view returns (uint256); - - /// @notice Enumerate NFTs assigned to an owner - /// @dev Throws if `_index` >= `balanceOf(_owner)` or if - /// `_owner` is the zero address, representing invalid NFTs. - /// @param _owner An address where we are interested in NFTs owned by them - /// @param _index A counter less than `balanceOf(_owner)` - /// @return The token identifier for the `_index`th NFT assigned to `_owner`, - /// (sort order not specified) - function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); -} diff --git a/v2/lib/forge-std/src/interfaces/IMulticall3.sol b/v2/lib/forge-std/src/interfaces/IMulticall3.sol deleted file mode 100644 index 0d031b71..00000000 --- a/v2/lib/forge-std/src/interfaces/IMulticall3.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -interface IMulticall3 { - struct Call { - address target; - bytes callData; - } - - struct Call3 { - address target; - bool allowFailure; - bytes callData; - } - - struct Call3Value { - address target; - bool allowFailure; - uint256 value; - bytes callData; - } - - struct Result { - bool success; - bytes returnData; - } - - function aggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes[] memory returnData); - - function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData); - - function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData); - - function blockAndAggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); - - function getBasefee() external view returns (uint256 basefee); - - function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash); - - function getBlockNumber() external view returns (uint256 blockNumber); - - function getChainId() external view returns (uint256 chainid); - - function getCurrentBlockCoinbase() external view returns (address coinbase); - - function getCurrentBlockDifficulty() external view returns (uint256 difficulty); - - function getCurrentBlockGasLimit() external view returns (uint256 gaslimit); - - function getCurrentBlockTimestamp() external view returns (uint256 timestamp); - - function getEthBalance(address addr) external view returns (uint256 balance); - - function getLastBlockHash() external view returns (bytes32 blockHash); - - function tryAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (Result[] memory returnData); - - function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); -} diff --git a/v2/lib/forge-std/src/mocks/MockERC20.sol b/v2/lib/forge-std/src/mocks/MockERC20.sol deleted file mode 100644 index 2a022fa3..00000000 --- a/v2/lib/forge-std/src/mocks/MockERC20.sol +++ /dev/null @@ -1,234 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {IERC20} from "../interfaces/IERC20.sol"; - -/// @notice This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production. -/// @dev Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol -contract MockERC20 is IERC20 { - /*////////////////////////////////////////////////////////////// - METADATA STORAGE - //////////////////////////////////////////////////////////////*/ - - string internal _name; - - string internal _symbol; - - uint8 internal _decimals; - - function name() external view override returns (string memory) { - return _name; - } - - function symbol() external view override returns (string memory) { - return _symbol; - } - - function decimals() external view override returns (uint8) { - return _decimals; - } - - /*////////////////////////////////////////////////////////////// - ERC20 STORAGE - //////////////////////////////////////////////////////////////*/ - - uint256 internal _totalSupply; - - mapping(address => uint256) internal _balanceOf; - - mapping(address => mapping(address => uint256)) internal _allowance; - - function totalSupply() external view override returns (uint256) { - return _totalSupply; - } - - function balanceOf(address owner) external view override returns (uint256) { - return _balanceOf[owner]; - } - - function allowance(address owner, address spender) external view override returns (uint256) { - return _allowance[owner][spender]; - } - - /*////////////////////////////////////////////////////////////// - EIP-2612 STORAGE - //////////////////////////////////////////////////////////////*/ - - uint256 internal INITIAL_CHAIN_ID; - - bytes32 internal INITIAL_DOMAIN_SEPARATOR; - - mapping(address => uint256) public nonces; - - /*////////////////////////////////////////////////////////////// - INITIALIZE - //////////////////////////////////////////////////////////////*/ - - /// @dev A bool to track whether the contract has been initialized. - bool private initialized; - - /// @dev To hide constructor warnings across solc versions due to different constructor visibility requirements and - /// syntaxes, we add an initialization function that can be called only once. - function initialize(string memory name_, string memory symbol_, uint8 decimals_) public { - require(!initialized, "ALREADY_INITIALIZED"); - - _name = name_; - _symbol = symbol_; - _decimals = decimals_; - - INITIAL_CHAIN_ID = _pureChainId(); - INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); - - initialized = true; - } - - /*////////////////////////////////////////////////////////////// - ERC20 LOGIC - //////////////////////////////////////////////////////////////*/ - - function approve(address spender, uint256 amount) public virtual override returns (bool) { - _allowance[msg.sender][spender] = amount; - - emit Approval(msg.sender, spender, amount); - - return true; - } - - function transfer(address to, uint256 amount) public virtual override returns (bool) { - _balanceOf[msg.sender] = _sub(_balanceOf[msg.sender], amount); - _balanceOf[to] = _add(_balanceOf[to], amount); - - emit Transfer(msg.sender, to, amount); - - return true; - } - - function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { - uint256 allowed = _allowance[from][msg.sender]; // Saves gas for limited approvals. - - if (allowed != ~uint256(0)) _allowance[from][msg.sender] = _sub(allowed, amount); - - _balanceOf[from] = _sub(_balanceOf[from], amount); - _balanceOf[to] = _add(_balanceOf[to], amount); - - emit Transfer(from, to, amount); - - return true; - } - - /*////////////////////////////////////////////////////////////// - EIP-2612 LOGIC - //////////////////////////////////////////////////////////////*/ - - function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) - public - virtual - { - require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); - - address recoveredAddress = ecrecover( - keccak256( - abi.encodePacked( - "\x19\x01", - DOMAIN_SEPARATOR(), - keccak256( - abi.encode( - keccak256( - "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" - ), - owner, - spender, - value, - nonces[owner]++, - deadline - ) - ) - ) - ), - v, - r, - s - ); - - require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); - - _allowance[recoveredAddress][spender] = value; - - emit Approval(owner, spender, value); - } - - function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { - return _pureChainId() == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); - } - - function computeDomainSeparator() internal view virtual returns (bytes32) { - return keccak256( - abi.encode( - keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), - keccak256(bytes(_name)), - keccak256("1"), - _pureChainId(), - address(this) - ) - ); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL MINT/BURN LOGIC - //////////////////////////////////////////////////////////////*/ - - function _mint(address to, uint256 amount) internal virtual { - _totalSupply = _add(_totalSupply, amount); - _balanceOf[to] = _add(_balanceOf[to], amount); - - emit Transfer(address(0), to, amount); - } - - function _burn(address from, uint256 amount) internal virtual { - _balanceOf[from] = _sub(_balanceOf[from], amount); - _totalSupply = _sub(_totalSupply, amount); - - emit Transfer(from, address(0), amount); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL SAFE MATH LOGIC - //////////////////////////////////////////////////////////////*/ - - function _add(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 c = a + b; - require(c >= a, "ERC20: addition overflow"); - return c; - } - - function _sub(uint256 a, uint256 b) internal pure returns (uint256) { - require(a >= b, "ERC20: subtraction underflow"); - return a - b; - } - - /*////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////*/ - - // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no - // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We - // can't simply access the chain ID in a normal view or pure function because the solc View Pure - // Checker changed `chainid` from pure to view in 0.8.0. - function _viewChainId() private view returns (uint256 chainId) { - // Assembly required since `block.chainid` was introduced in 0.8.0. - assembly { - chainId := chainid() - } - - address(this); // Silence warnings in older Solc versions. - } - - function _pureChainId() private pure returns (uint256 chainId) { - function() internal view returns (uint256) fnIn = _viewChainId; - function() internal pure returns (uint256) pureChainId; - assembly { - pureChainId := fnIn - } - chainId = pureChainId(); - } -} diff --git a/v2/lib/forge-std/src/mocks/MockERC721.sol b/v2/lib/forge-std/src/mocks/MockERC721.sol deleted file mode 100644 index 7a4909e5..00000000 --- a/v2/lib/forge-std/src/mocks/MockERC721.sol +++ /dev/null @@ -1,231 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {IERC721Metadata, IERC721TokenReceiver} from "../interfaces/IERC721.sol"; - -/// @notice This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production. -/// @dev Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol -contract MockERC721 is IERC721Metadata { - /*////////////////////////////////////////////////////////////// - METADATA STORAGE/LOGIC - //////////////////////////////////////////////////////////////*/ - - string internal _name; - - string internal _symbol; - - function name() external view override returns (string memory) { - return _name; - } - - function symbol() external view override returns (string memory) { - return _symbol; - } - - function tokenURI(uint256 id) public view virtual override returns (string memory) {} - - /*////////////////////////////////////////////////////////////// - ERC721 BALANCE/OWNER STORAGE - //////////////////////////////////////////////////////////////*/ - - mapping(uint256 => address) internal _ownerOf; - - mapping(address => uint256) internal _balanceOf; - - function ownerOf(uint256 id) public view virtual override returns (address owner) { - require((owner = _ownerOf[id]) != address(0), "NOT_MINTED"); - } - - function balanceOf(address owner) public view virtual override returns (uint256) { - require(owner != address(0), "ZERO_ADDRESS"); - - return _balanceOf[owner]; - } - - /*////////////////////////////////////////////////////////////// - ERC721 APPROVAL STORAGE - //////////////////////////////////////////////////////////////*/ - - mapping(uint256 => address) internal _getApproved; - - mapping(address => mapping(address => bool)) internal _isApprovedForAll; - - function getApproved(uint256 id) public view virtual override returns (address) { - return _getApproved[id]; - } - - function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { - return _isApprovedForAll[owner][operator]; - } - - /*////////////////////////////////////////////////////////////// - INITIALIZE - //////////////////////////////////////////////////////////////*/ - - /// @dev A bool to track whether the contract has been initialized. - bool private initialized; - - /// @dev To hide constructor warnings across solc versions due to different constructor visibility requirements and - /// syntaxes, we add an initialization function that can be called only once. - function initialize(string memory name_, string memory symbol_) public { - require(!initialized, "ALREADY_INITIALIZED"); - - _name = name_; - _symbol = symbol_; - - initialized = true; - } - - /*////////////////////////////////////////////////////////////// - ERC721 LOGIC - //////////////////////////////////////////////////////////////*/ - - function approve(address spender, uint256 id) public payable virtual override { - address owner = _ownerOf[id]; - - require(msg.sender == owner || _isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); - - _getApproved[id] = spender; - - emit Approval(owner, spender, id); - } - - function setApprovalForAll(address operator, bool approved) public virtual override { - _isApprovedForAll[msg.sender][operator] = approved; - - emit ApprovalForAll(msg.sender, operator, approved); - } - - function transferFrom(address from, address to, uint256 id) public payable virtual override { - require(from == _ownerOf[id], "WRONG_FROM"); - - require(to != address(0), "INVALID_RECIPIENT"); - - require( - msg.sender == from || _isApprovedForAll[from][msg.sender] || msg.sender == _getApproved[id], - "NOT_AUTHORIZED" - ); - - // Underflow of the sender's balance is impossible because we check for - // ownership above and the recipient's balance can't realistically overflow. - _balanceOf[from]--; - - _balanceOf[to]++; - - _ownerOf[id] = to; - - delete _getApproved[id]; - - emit Transfer(from, to, id); - } - - function safeTransferFrom(address from, address to, uint256 id) public payable virtual override { - transferFrom(from, to, id); - - require( - !_isContract(to) - || IERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") - == IERC721TokenReceiver.onERC721Received.selector, - "UNSAFE_RECIPIENT" - ); - } - - function safeTransferFrom(address from, address to, uint256 id, bytes memory data) - public - payable - virtual - override - { - transferFrom(from, to, id); - - require( - !_isContract(to) - || IERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) - == IERC721TokenReceiver.onERC721Received.selector, - "UNSAFE_RECIPIENT" - ); - } - - /*////////////////////////////////////////////////////////////// - ERC165 LOGIC - //////////////////////////////////////////////////////////////*/ - - function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { - return interfaceId == 0x01ffc9a7 // ERC165 Interface ID for ERC165 - || interfaceId == 0x80ac58cd // ERC165 Interface ID for ERC721 - || interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata - } - - /*////////////////////////////////////////////////////////////// - INTERNAL MINT/BURN LOGIC - //////////////////////////////////////////////////////////////*/ - - function _mint(address to, uint256 id) internal virtual { - require(to != address(0), "INVALID_RECIPIENT"); - - require(_ownerOf[id] == address(0), "ALREADY_MINTED"); - - // Counter overflow is incredibly unrealistic. - - _balanceOf[to]++; - - _ownerOf[id] = to; - - emit Transfer(address(0), to, id); - } - - function _burn(uint256 id) internal virtual { - address owner = _ownerOf[id]; - - require(owner != address(0), "NOT_MINTED"); - - _balanceOf[owner]--; - - delete _ownerOf[id]; - - delete _getApproved[id]; - - emit Transfer(owner, address(0), id); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL SAFE MINT LOGIC - //////////////////////////////////////////////////////////////*/ - - function _safeMint(address to, uint256 id) internal virtual { - _mint(to, id); - - require( - !_isContract(to) - || IERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") - == IERC721TokenReceiver.onERC721Received.selector, - "UNSAFE_RECIPIENT" - ); - } - - function _safeMint(address to, uint256 id, bytes memory data) internal virtual { - _mint(to, id); - - require( - !_isContract(to) - || IERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) - == IERC721TokenReceiver.onERC721Received.selector, - "UNSAFE_RECIPIENT" - ); - } - - /*////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////*/ - - function _isContract(address _addr) private view returns (bool) { - uint256 codeLength; - - // Assembly required for versions < 0.8.0 to check extcodesize. - assembly { - codeLength := extcodesize(_addr) - } - - return codeLength > 0; - } -} diff --git a/v2/lib/forge-std/src/safeconsole.sol b/v2/lib/forge-std/src/safeconsole.sol deleted file mode 100644 index 5714d090..00000000 --- a/v2/lib/forge-std/src/safeconsole.sol +++ /dev/null @@ -1,13248 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -/// @author philogy -/// @dev Code generated automatically by script. -library safeconsole { - uint256 constant CONSOLE_ADDR = 0x000000000000000000000000000000000000000000636F6e736F6c652e6c6f67; - - // Credit to [0age](https://twitter.com/z0age/status/1654922202930888704) and [0xdapper](https://github.com/foundry-rs/forge-std/pull/374) - // for the view-to-pure log trick. - function _sendLogPayload(uint256 offset, uint256 size) private pure { - function(uint256, uint256) internal view fnIn = _sendLogPayloadView; - function(uint256, uint256) internal pure pureSendLogPayload; - assembly { - pureSendLogPayload := fnIn - } - pureSendLogPayload(offset, size); - } - - function _sendLogPayloadView(uint256 offset, uint256 size) private view { - assembly { - pop(staticcall(gas(), CONSOLE_ADDR, offset, size, 0x0, 0x0)) - } - } - - function _memcopy(uint256 fromOffset, uint256 toOffset, uint256 length) private pure { - function(uint256, uint256, uint256) internal view fnIn = _memcopyView; - function(uint256, uint256, uint256) internal pure pureMemcopy; - assembly { - pureMemcopy := fnIn - } - pureMemcopy(fromOffset, toOffset, length); - } - - function _memcopyView(uint256 fromOffset, uint256 toOffset, uint256 length) private view { - assembly { - pop(staticcall(gas(), 0x4, fromOffset, length, toOffset, length)) - } - } - - function logMemory(uint256 offset, uint256 length) internal pure { - if (offset >= 0x60) { - // Sufficient memory before slice to prepare call header. - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(sub(offset, 0x60)) - m1 := mload(sub(offset, 0x40)) - m2 := mload(sub(offset, 0x20)) - // Selector of `logBytes(bytes)`. - mstore(sub(offset, 0x60), 0xe17bf956) - mstore(sub(offset, 0x40), 0x20) - mstore(sub(offset, 0x20), length) - } - _sendLogPayload(offset - 0x44, length + 0x44); - assembly { - mstore(sub(offset, 0x60), m0) - mstore(sub(offset, 0x40), m1) - mstore(sub(offset, 0x20), m2) - } - } else { - // Insufficient space, so copy slice forward, add header and reverse. - bytes32 m0; - bytes32 m1; - bytes32 m2; - uint256 endOffset = offset + length; - assembly { - m0 := mload(add(endOffset, 0x00)) - m1 := mload(add(endOffset, 0x20)) - m2 := mload(add(endOffset, 0x40)) - } - _memcopy(offset, offset + 0x60, length); - assembly { - // Selector of `logBytes(bytes)`. - mstore(add(offset, 0x00), 0xe17bf956) - mstore(add(offset, 0x20), 0x20) - mstore(add(offset, 0x40), length) - } - _sendLogPayload(offset + 0x1c, length + 0x44); - _memcopy(offset + 0x60, offset, length); - assembly { - mstore(add(endOffset, 0x00), m0) - mstore(add(endOffset, 0x20), m1) - mstore(add(endOffset, 0x40), m2) - } - } - } - - function log(address p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(address)`. - mstore(0x00, 0x2c2ecbc2) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bool p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(bool)`. - mstore(0x00, 0x32458eed) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(uint256 p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(uint256)`. - mstore(0x00, 0xf82c50f1) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bytes32 p0) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(string)`. - mstore(0x00, 0x41304fac) - mstore(0x20, 0x20) - writeString(0x40, p0) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,address)`. - mstore(0x00, 0xdaf0d4aa) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,bool)`. - mstore(0x00, 0x75b605d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,uint256)`. - mstore(0x00, 0x8309e8a8) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,string)`. - mstore(0x00, 0x759f86bb) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,address)`. - mstore(0x00, 0x853c4849) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,bool)`. - mstore(0x00, 0x2a110e83) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,uint256)`. - mstore(0x00, 0x399174d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,string)`. - mstore(0x00, 0x8feac525) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,address)`. - mstore(0x00, 0x69276c86) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,bool)`. - mstore(0x00, 0x1c9d7eb3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,uint256)`. - mstore(0x00, 0xf666715a) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,string)`. - mstore(0x00, 0x643fd0df) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,address)`. - mstore(0x00, 0x319af333) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,bool)`. - mstore(0x00, 0xc3b55635) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,uint256)`. - mstore(0x00, 0xb60e72cc) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,string)`. - mstore(0x00, 0x4b5c4277) - mstore(0x20, 0x40) - mstore(0x40, 0x80) - writeString(0x60, p0) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,address)`. - mstore(0x00, 0x018c84c2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,bool)`. - mstore(0x00, 0xf2a66286) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,uint256)`. - mstore(0x00, 0x17fe6185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,address,string)`. - mstore(0x00, 0x007150be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,address)`. - mstore(0x00, 0xf11699ed) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,bool)`. - mstore(0x00, 0xeb830c92) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,uint256)`. - mstore(0x00, 0x9c4f99fb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,bool,string)`. - mstore(0x00, 0x212255cc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,address)`. - mstore(0x00, 0x7bc0d848) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,bool)`. - mstore(0x00, 0x678209a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,uint256)`. - mstore(0x00, 0xb69bcaf6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,uint256,string)`. - mstore(0x00, 0xa1f2e8aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,address)`. - mstore(0x00, 0xf08744e8) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,bool)`. - mstore(0x00, 0xcf020fb1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,uint256)`. - mstore(0x00, 0x67dd6ff1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(address,string,string)`. - mstore(0x00, 0xfb772265) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bool p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,address)`. - mstore(0x00, 0xd2763667) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,bool)`. - mstore(0x00, 0x18c9c746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,uint256)`. - mstore(0x00, 0x5f7b9afb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,address,string)`. - mstore(0x00, 0xde9a9270) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,address)`. - mstore(0x00, 0x1078f68d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,bool)`. - mstore(0x00, 0x50709698) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,uint256)`. - mstore(0x00, 0x12f21602) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,bool,string)`. - mstore(0x00, 0x2555fa46) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,address)`. - mstore(0x00, 0x088ef9d2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,bool)`. - mstore(0x00, 0xe8defba9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,uint256)`. - mstore(0x00, 0x37103367) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,uint256,string)`. - mstore(0x00, 0xc3fc3970) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,address)`. - mstore(0x00, 0x9591b953) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,bool)`. - mstore(0x00, 0xdbb4c247) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,uint256)`. - mstore(0x00, 0x1093ee11) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(bool,string,string)`. - mstore(0x00, 0xb076847f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(uint256 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,address)`. - mstore(0x00, 0xbcfd9be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,bool)`. - mstore(0x00, 0x9b6ec042) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,uint256)`. - mstore(0x00, 0x5a9b5ed5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,address,string)`. - mstore(0x00, 0x63cb41f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,address)`. - mstore(0x00, 0x35085f7b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,bool)`. - mstore(0x00, 0x20718650) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,uint256)`. - mstore(0x00, 0x20098014) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,bool,string)`. - mstore(0x00, 0x85775021) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,address)`. - mstore(0x00, 0x5c96b331) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,bool)`. - mstore(0x00, 0x4766da72) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,uint256)`. - mstore(0x00, 0xd1ed7a3c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,uint256,string)`. - mstore(0x00, 0x71d04af2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,address)`. - mstore(0x00, 0x7afac959) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,bool)`. - mstore(0x00, 0x4ceda75a) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,uint256)`. - mstore(0x00, 0x37aa7d4c) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(uint256,string,string)`. - mstore(0x00, 0xb115611f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,address)`. - mstore(0x00, 0xfcec75e0) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,bool)`. - mstore(0x00, 0xc91d5ed4) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,uint256)`. - mstore(0x00, 0x0d26b925) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,address,string)`. - mstore(0x00, 0xe0e9ad4f) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,address)`. - mstore(0x00, 0x932bbb38) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,bool)`. - mstore(0x00, 0x850b7ad6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,uint256)`. - mstore(0x00, 0xc95958d6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,bool,string)`. - mstore(0x00, 0xe298f47d) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,address)`. - mstore(0x00, 0x1c7ec448) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,bool)`. - mstore(0x00, 0xca7733b1) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,uint256)`. - mstore(0x00, 0xca47c4eb) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,uint256,string)`. - mstore(0x00, 0x5970e089) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,address)`. - mstore(0x00, 0x95ed0195) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,bool)`. - mstore(0x00, 0xb0e0f9b5) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,uint256)`. - mstore(0x00, 0x5821efa1) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - // Selector of `log(string,string,string)`. - mstore(0x00, 0x2ced7cef) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, 0xe0) - writeString(0x80, p0) - writeString(0xc0, p1) - writeString(0x100, p2) - } - _sendLogPayload(0x1c, 0x124); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - } - } - - function log(address p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,address)`. - mstore(0x00, 0x665bf134) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,bool)`. - mstore(0x00, 0x0e378994) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,uint256)`. - mstore(0x00, 0x94250d77) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,address,string)`. - mstore(0x00, 0xf808da20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,address)`. - mstore(0x00, 0x9f1bc36e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,bool)`. - mstore(0x00, 0x2cd4134a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,uint256)`. - mstore(0x00, 0x3971e78c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,bool,string)`. - mstore(0x00, 0xaa6540c8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,address)`. - mstore(0x00, 0x8da6def5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,bool)`. - mstore(0x00, 0x9b4254e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,uint256)`. - mstore(0x00, 0xbe553481) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,uint256,string)`. - mstore(0x00, 0xfdb4f990) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,address)`. - mstore(0x00, 0x8f736d16) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,bool)`. - mstore(0x00, 0x6f1a594e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,uint256)`. - mstore(0x00, 0xef1cefe7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,address,string,string)`. - mstore(0x00, 0x21bdaf25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,address)`. - mstore(0x00, 0x660375dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,bool)`. - mstore(0x00, 0xa6f50b0f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,uint256)`. - mstore(0x00, 0xa75c59de) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,address,string)`. - mstore(0x00, 0x2dd778e6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,address)`. - mstore(0x00, 0xcf394485) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,bool)`. - mstore(0x00, 0xcac43479) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,uint256)`. - mstore(0x00, 0x8c4e5de6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,bool,string)`. - mstore(0x00, 0xdfc4a2e8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,address)`. - mstore(0x00, 0xccf790a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,bool)`. - mstore(0x00, 0xc4643e20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,uint256)`. - mstore(0x00, 0x386ff5f4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,uint256,string)`. - mstore(0x00, 0x0aa6cfad) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,address)`. - mstore(0x00, 0x19fd4956) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,bool)`. - mstore(0x00, 0x50ad461d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,uint256)`. - mstore(0x00, 0x80e6a20b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,bool,string,string)`. - mstore(0x00, 0x475c5c33) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,address)`. - mstore(0x00, 0x478d1c62) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,bool)`. - mstore(0x00, 0xa1bcc9b3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,uint256)`. - mstore(0x00, 0x100f650e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,address,string)`. - mstore(0x00, 0x1da986ea) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,address)`. - mstore(0x00, 0xa31bfdcc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,bool)`. - mstore(0x00, 0x3bf5e537) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,uint256)`. - mstore(0x00, 0x22f6b999) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,bool,string)`. - mstore(0x00, 0xc5ad85f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,address)`. - mstore(0x00, 0x20e3984d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,bool)`. - mstore(0x00, 0x66f1bc67) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,uint256)`. - mstore(0x00, 0x34f0e636) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,uint256,string)`. - mstore(0x00, 0x4a28c017) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,address)`. - mstore(0x00, 0x5c430d47) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,bool)`. - mstore(0x00, 0xcf18105c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,uint256)`. - mstore(0x00, 0xbf01f891) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,uint256,string,string)`. - mstore(0x00, 0x88a8c406) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,address)`. - mstore(0x00, 0x0d36fa20) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,bool)`. - mstore(0x00, 0x0df12b76) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,uint256)`. - mstore(0x00, 0x457fe3cf) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,address,string)`. - mstore(0x00, 0xf7e36245) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,address)`. - mstore(0x00, 0x205871c2) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,bool)`. - mstore(0x00, 0x5f1d5c9f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,uint256)`. - mstore(0x00, 0x515e38b6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,bool,string)`. - mstore(0x00, 0xbc0b61fe) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,address)`. - mstore(0x00, 0x63183678) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,bool)`. - mstore(0x00, 0x0ef7e050) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,uint256)`. - mstore(0x00, 0x1dc8e1b8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,uint256,string)`. - mstore(0x00, 0x448830a8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,address)`. - mstore(0x00, 0xa04e2f87) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,bool)`. - mstore(0x00, 0x35a5071f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,uint256)`. - mstore(0x00, 0x159f8927) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(address,string,string,string)`. - mstore(0x00, 0x5d02c50b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,address)`. - mstore(0x00, 0x1d14d001) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,bool)`. - mstore(0x00, 0x46600be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,uint256)`. - mstore(0x00, 0x0c66d1be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,address,string)`. - mstore(0x00, 0xd812a167) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,address)`. - mstore(0x00, 0x1c41a336) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,bool)`. - mstore(0x00, 0x6a9c478b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,uint256)`. - mstore(0x00, 0x07831502) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,bool,string)`. - mstore(0x00, 0x4a66cb34) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,address)`. - mstore(0x00, 0x136b05dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,bool)`. - mstore(0x00, 0xd6019f1c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,uint256)`. - mstore(0x00, 0x7bf181a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,uint256,string)`. - mstore(0x00, 0x51f09ff8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,address)`. - mstore(0x00, 0x6f7c603e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,bool)`. - mstore(0x00, 0xe2bfd60b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,uint256)`. - mstore(0x00, 0xc21f64c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,address,string,string)`. - mstore(0x00, 0xa73c1db6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,address)`. - mstore(0x00, 0xf4880ea4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,bool)`. - mstore(0x00, 0xc0a302d8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,uint256)`. - mstore(0x00, 0x4c123d57) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,address,string)`. - mstore(0x00, 0xa0a47963) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,address)`. - mstore(0x00, 0x8c329b1a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,bool)`. - mstore(0x00, 0x3b2a5ce0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,uint256)`. - mstore(0x00, 0x6d7045c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,bool,string)`. - mstore(0x00, 0x2ae408d4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,address)`. - mstore(0x00, 0x54a7a9a0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,bool)`. - mstore(0x00, 0x619e4d0e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,uint256)`. - mstore(0x00, 0x0bb00eab) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,uint256,string)`. - mstore(0x00, 0x7dd4d0e0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,address)`. - mstore(0x00, 0xf9ad2b89) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,bool)`. - mstore(0x00, 0xb857163a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,uint256)`. - mstore(0x00, 0xe3a9ca2f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,bool,string,string)`. - mstore(0x00, 0x6d1e8751) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,address)`. - mstore(0x00, 0x26f560a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,bool)`. - mstore(0x00, 0xb4c314ff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,uint256)`. - mstore(0x00, 0x1537dc87) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,address,string)`. - mstore(0x00, 0x1bb3b09a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,address)`. - mstore(0x00, 0x9acd3616) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,bool)`. - mstore(0x00, 0xceb5f4d7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,uint256)`. - mstore(0x00, 0x7f9bbca2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,bool,string)`. - mstore(0x00, 0x9143dbb1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,address)`. - mstore(0x00, 0x00dd87b9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,bool)`. - mstore(0x00, 0xbe984353) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,uint256)`. - mstore(0x00, 0x374bb4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,uint256,string)`. - mstore(0x00, 0x8e69fb5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,address)`. - mstore(0x00, 0xfedd1fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,bool)`. - mstore(0x00, 0xe5e70b2b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,uint256)`. - mstore(0x00, 0x6a1199e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,uint256,string,string)`. - mstore(0x00, 0xf5bc2249) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,address)`. - mstore(0x00, 0x2b2b18dc) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,bool)`. - mstore(0x00, 0x6dd434ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,uint256)`. - mstore(0x00, 0xa5cada94) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,address,string)`. - mstore(0x00, 0x12d6c788) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,address)`. - mstore(0x00, 0x538e06ab) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,bool)`. - mstore(0x00, 0xdc5e935b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,uint256)`. - mstore(0x00, 0x1606a393) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,bool,string)`. - mstore(0x00, 0x483d0416) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,address)`. - mstore(0x00, 0x1596a1ce) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,bool)`. - mstore(0x00, 0x6b0e5d53) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,uint256)`. - mstore(0x00, 0x28863fcb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,uint256,string)`. - mstore(0x00, 0x1ad96de6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,address)`. - mstore(0x00, 0x97d394d8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,bool)`. - mstore(0x00, 0x1e4b87e5) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,uint256)`. - mstore(0x00, 0x7be0c3eb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(bool,string,string,string)`. - mstore(0x00, 0x1762e32a) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(uint256 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,address)`. - mstore(0x00, 0x2488b414) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,bool)`. - mstore(0x00, 0x091ffaf5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,uint256)`. - mstore(0x00, 0x736efbb6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,address,string)`. - mstore(0x00, 0x031c6f73) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,address)`. - mstore(0x00, 0xef72c513) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,bool)`. - mstore(0x00, 0xe351140f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,uint256)`. - mstore(0x00, 0x5abd992a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,bool,string)`. - mstore(0x00, 0x90fb06aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,address)`. - mstore(0x00, 0x15c127b5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,bool)`. - mstore(0x00, 0x5f743a7c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,uint256)`. - mstore(0x00, 0x0c9cd9c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,uint256,string)`. - mstore(0x00, 0xddb06521) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,address)`. - mstore(0x00, 0x9cba8fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,bool)`. - mstore(0x00, 0xcc32ab07) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,uint256)`. - mstore(0x00, 0x46826b5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,address,string,string)`. - mstore(0x00, 0x3e128ca3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,address)`. - mstore(0x00, 0xa1ef4cbb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,bool)`. - mstore(0x00, 0x454d54a5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,uint256)`. - mstore(0x00, 0x078287f5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,address,string)`. - mstore(0x00, 0xade052c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,address)`. - mstore(0x00, 0x69640b59) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,bool)`. - mstore(0x00, 0xb6f577a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,uint256)`. - mstore(0x00, 0x7464ce23) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,bool,string)`. - mstore(0x00, 0xdddb9561) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,address)`. - mstore(0x00, 0x88cb6041) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,bool)`. - mstore(0x00, 0x91a02e2a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,uint256)`. - mstore(0x00, 0xc6acc7a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,uint256,string)`. - mstore(0x00, 0xde03e774) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,address)`. - mstore(0x00, 0xef529018) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,bool)`. - mstore(0x00, 0xeb928d7f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,uint256)`. - mstore(0x00, 0x2c1d0746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,bool,string,string)`. - mstore(0x00, 0x68c8b8bd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,address)`. - mstore(0x00, 0x56a5d1b1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,bool)`. - mstore(0x00, 0x15cac476) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,uint256)`. - mstore(0x00, 0x88f6e4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,address,string)`. - mstore(0x00, 0x6cde40b8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,address)`. - mstore(0x00, 0x9a816a83) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,bool)`. - mstore(0x00, 0xab085ae6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,uint256)`. - mstore(0x00, 0xeb7f6fd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,bool,string)`. - mstore(0x00, 0xa5b4fc99) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,address)`. - mstore(0x00, 0xfa8185af) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,bool)`. - mstore(0x00, 0xc598d185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,uint256)`. - mstore(0x00, 0x193fb800) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,uint256,string)`. - mstore(0x00, 0x59cfcbe3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,address)`. - mstore(0x00, 0x42d21db7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,bool)`. - mstore(0x00, 0x7af6ab25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,uint256)`. - mstore(0x00, 0x5da297eb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,uint256,string,string)`. - mstore(0x00, 0x27d8afd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,address)`. - mstore(0x00, 0x6168ed61) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,bool)`. - mstore(0x00, 0x90c30a56) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,uint256)`. - mstore(0x00, 0xe8d3018d) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,address,string)`. - mstore(0x00, 0x9c3adfa1) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,address)`. - mstore(0x00, 0xae2ec581) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,bool)`. - mstore(0x00, 0xba535d9c) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,uint256)`. - mstore(0x00, 0xcf009880) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,bool,string)`. - mstore(0x00, 0xd2d423cd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,address)`. - mstore(0x00, 0x3b2279b4) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,bool)`. - mstore(0x00, 0x691a8f74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,uint256)`. - mstore(0x00, 0x82c25b74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,uint256,string)`. - mstore(0x00, 0xb7b914ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,address)`. - mstore(0x00, 0xd583c602) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,bool)`. - mstore(0x00, 0xb3a6b6bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,uint256)`. - mstore(0x00, 0xb028c9bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(uint256,string,string,string)`. - mstore(0x00, 0x21ad0683) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,address)`. - mstore(0x00, 0xed8f28f6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,bool)`. - mstore(0x00, 0xb59dbd60) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,uint256)`. - mstore(0x00, 0x8ef3f399) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,address,string)`. - mstore(0x00, 0x800a1c67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,address)`. - mstore(0x00, 0x223603bd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,bool)`. - mstore(0x00, 0x79884c2b) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,uint256)`. - mstore(0x00, 0x3e9f866a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,bool,string)`. - mstore(0x00, 0x0454c079) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,address)`. - mstore(0x00, 0x63fb8bc5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,bool)`. - mstore(0x00, 0xfc4845f0) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,uint256)`. - mstore(0x00, 0xf8f51b1e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,uint256,string)`. - mstore(0x00, 0x5a477632) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,address)`. - mstore(0x00, 0xaabc9a31) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,bool)`. - mstore(0x00, 0x5f15d28c) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,uint256)`. - mstore(0x00, 0x91d1112e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,address,string,string)`. - mstore(0x00, 0x245986f2) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,address)`. - mstore(0x00, 0x33e9dd1d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,bool)`. - mstore(0x00, 0x958c28c6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,uint256)`. - mstore(0x00, 0x5d08bb05) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,address,string)`. - mstore(0x00, 0x2d8e33a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,address)`. - mstore(0x00, 0x7190a529) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,bool)`. - mstore(0x00, 0x895af8c5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,uint256)`. - mstore(0x00, 0x8e3f78a9) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,bool,string)`. - mstore(0x00, 0x9d22d5dd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,address)`. - mstore(0x00, 0x935e09bf) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,bool)`. - mstore(0x00, 0x8af7cf8a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,uint256)`. - mstore(0x00, 0x64b5bb67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,uint256,string)`. - mstore(0x00, 0x742d6ee7) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,address)`. - mstore(0x00, 0xe0625b29) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,bool)`. - mstore(0x00, 0x3f8a701d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,uint256)`. - mstore(0x00, 0x24f91465) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,bool,string,string)`. - mstore(0x00, 0xa826caeb) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,address)`. - mstore(0x00, 0x5ea2b7ae) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,bool)`. - mstore(0x00, 0x82112a42) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,uint256)`. - mstore(0x00, 0x4f04fdc6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,address,string)`. - mstore(0x00, 0x9ffb2f93) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,address)`. - mstore(0x00, 0xe0e95b98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,bool)`. - mstore(0x00, 0x354c36d6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,uint256)`. - mstore(0x00, 0xe41b6f6f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,bool,string)`. - mstore(0x00, 0xabf73a98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,address)`. - mstore(0x00, 0xe21de278) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,bool)`. - mstore(0x00, 0x7626db92) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,uint256)`. - mstore(0x00, 0xa7a87853) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,uint256,string)`. - mstore(0x00, 0x854b3496) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,address)`. - mstore(0x00, 0x7c4632a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,bool)`. - mstore(0x00, 0x7d24491d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,uint256)`. - mstore(0x00, 0xc67ea9d1) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,uint256,string,string)`. - mstore(0x00, 0x5ab84e1f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,address)`. - mstore(0x00, 0x439c7bef) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,bool)`. - mstore(0x00, 0x5ccd4e37) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,uint256)`. - mstore(0x00, 0x7cc3c607) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,address,string)`. - mstore(0x00, 0xeb1bff80) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,address)`. - mstore(0x00, 0xc371c7db) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,bool)`. - mstore(0x00, 0x40785869) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,uint256)`. - mstore(0x00, 0xd6aefad2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,bool,string)`. - mstore(0x00, 0x5e84b0ea) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,address)`. - mstore(0x00, 0x1023f7b2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,bool)`. - mstore(0x00, 0xc3a8a654) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,uint256)`. - mstore(0x00, 0xf45d7d2c) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,uint256,string)`. - mstore(0x00, 0x5d1a971a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,address)`. - mstore(0x00, 0x6d572f44) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,bool)`. - mstore(0x00, 0x2c1754ed) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,uint256)`. - mstore(0x00, 0x8eafb02b) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - bytes32 m11; - bytes32 m12; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - m11 := mload(0x160) - m12 := mload(0x180) - // Selector of `log(string,string,string,string)`. - mstore(0x00, 0xde68f20a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, 0x140) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - writeString(0x160, p3) - } - _sendLogPayload(0x1c, 0x184); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - mstore(0x160, m11) - mstore(0x180, m12) - } - } -} diff --git a/v2/lib/forge-std/test/StdAssertions.t.sol b/v2/lib/forge-std/test/StdAssertions.t.sol deleted file mode 100644 index ea794687..00000000 --- a/v2/lib/forge-std/test/StdAssertions.t.sol +++ /dev/null @@ -1,145 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdAssertions.sol"; -import {Vm} from "../src/Vm.sol"; - -interface VmInternal is Vm { - function _expectCheatcodeRevert(bytes memory message) external; -} - -contract StdAssertionsTest is StdAssertions { - string constant errorMessage = "User provided message"; - uint256 constant maxDecimals = 77; - - bool constant SHOULD_REVERT = true; - bool constant SHOULD_RETURN = false; - - bool constant STRICT_REVERT_DATA = true; - bool constant NON_STRICT_REVERT_DATA = false; - - VmInternal constant vm = VmInternal(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function testFuzz_AssertEqCall_Return_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnData, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnData, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnData, SHOULD_RETURN)); - - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Return_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - vm.assume(keccak256(returnDataA) != keccak256(returnDataB)); - - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN)); - - vm._expectCheatcodeRevert( - bytes( - string.concat( - "Call return data does not match: ", vm.toString(returnDataA), " != ", vm.toString(returnDataB) - ) - ) - ); - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } - - function testFuzz_AssertEqCall_Revert_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Revert_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - vm.assume(keccak256(revertDataA) != keccak256(revertDataB)); - - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - vm._expectCheatcodeRevert( - bytes( - string.concat( - "Call revert data does not match: ", vm.toString(revertDataA), " != ", vm.toString(revertDataB) - ) - ) - ); - assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT)); - - vm.expectRevert(bytes("assertion failed")); - this.assertEqCallExternal(targetA, callDataA, targetB, callDataB, strictRevertData); - - vm.expectRevert(bytes("assertion failed")); - this.assertEqCallExternal(targetB, callDataB, targetA, callDataA, strictRevertData); - } - - // Helper function to test outcome of assertEqCall via `expect` cheatcodes - function assertEqCallExternal( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) public { - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } - - function testFailFail() public { - fail(); - } -} - -contract TestMockCall { - bytes returnData; - bool shouldRevert; - - constructor(bytes memory returnData_, bool shouldRevert_) { - returnData = returnData_; - shouldRevert = shouldRevert_; - } - - fallback() external payable { - bytes memory returnData_ = returnData; - - if (shouldRevert) { - assembly { - revert(add(returnData_, 0x20), mload(returnData_)) - } - } else { - assembly { - return(add(returnData_, 0x20), mload(returnData_)) - } - } - } -} diff --git a/v2/lib/forge-std/test/StdChains.t.sol b/v2/lib/forge-std/test/StdChains.t.sol deleted file mode 100644 index 09059c23..00000000 --- a/v2/lib/forge-std/test/StdChains.t.sol +++ /dev/null @@ -1,226 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdChainsMock is Test { - function exposed_getChain(string memory chainAlias) public returns (Chain memory) { - return getChain(chainAlias); - } - - function exposed_getChain(uint256 chainId) public returns (Chain memory) { - return getChain(chainId); - } - - function exposed_setChain(string memory chainAlias, ChainData memory chainData) public { - setChain(chainAlias, chainData); - } - - function exposed_setFallbackToDefaultRpcUrls(bool useDefault) public { - setFallbackToDefaultRpcUrls(useDefault); - } -} - -contract StdChainsTest is Test { - function test_ChainRpcInitialization() public { - // RPCs specified in `foundry.toml` should be updated. - assertEq(getChain(1).rpcUrl, "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX"); - assertEq(getChain("optimism_sepolia").rpcUrl, "https://sepolia.optimism.io/"); - assertEq(getChain("arbitrum_one_sepolia").rpcUrl, "https://sepolia-rollup.arbitrum.io/rpc/"); - - // Environment variables should be the next fallback - assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride"); - assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc"); - - // Cannot override RPCs defined in `foundry.toml` - vm.setEnv("MAINNET_RPC_URL", "myoverride2"); - assertEq(getChain("mainnet").rpcUrl, "https://eth-mainnet.alchemyapi.io/v2/WV407BEiBmjNJfKo9Uo_55u0z0ITyCOX"); - - // Other RPCs should remain unchanged. - assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545"); - assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001"); - } - - // Named with a leading underscore to clarify this is not intended to be run as a normal test, - // and is intended to be used in the below `test_Rpcs` test. - function _testRpc(string memory rpcAlias) internal { - string memory rpcUrl = getChain(rpcAlias).rpcUrl; - vm.createSelectFork(rpcUrl); - } - - // Ensure we can connect to the default RPC URL for each chain. - // Currently commented out since this is slow and public RPCs are flaky, often resulting in failing CI. - // function test_Rpcs() public { - // _testRpc("mainnet"); - // _testRpc("sepolia"); - // _testRpc("holesky"); - // _testRpc("optimism"); - // _testRpc("optimism_sepolia"); - // _testRpc("arbitrum_one"); - // _testRpc("arbitrum_one_sepolia"); - // _testRpc("arbitrum_nova"); - // _testRpc("polygon"); - // _testRpc("polygon_amoy"); - // _testRpc("avalanche"); - // _testRpc("avalanche_fuji"); - // _testRpc("bnb_smart_chain"); - // _testRpc("bnb_smart_chain_testnet"); - // _testRpc("gnosis_chain"); - // _testRpc("moonbeam"); - // _testRpc("moonriver"); - // _testRpc("moonbase"); - // _testRpc("base_sepolia"); - // _testRpc("base"); - // _testRpc("blast_sepolia"); - // _testRpc("blast"); - // _testRpc("fantom_opera"); - // _testRpc("fantom_opera_testnet"); - // _testRpc("fraxtal"); - // _testRpc("fraxtal_testnet"); - // _testRpc("berachain_bartio_testnet"); - // } - - function test_ChainNoDefault() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found."); - stdChainsMock.exposed_getChain("does_not_exist"); - } - - function test_SetChainFirstFails() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\"."); - stdChainsMock.exposed_setChain("anvil2", ChainData("Anvil", 31337, "URL")); - } - - function test_ChainBubbleUp() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("needs_undefined_env_var", ChainData("", 123456789, "")); - vm.expectRevert( - "Failed to resolve env var `UNDEFINED_RPC_URL_PLACEHOLDER` in `${UNDEFINED_RPC_URL_PLACEHOLDER}`: environment variable not found" - ); - stdChainsMock.exposed_getChain("needs_undefined_env_var"); - } - - function test_CannotSetChain_ChainIdExists() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - - vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".'); - - stdChainsMock.exposed_setChain("another_custom_chain", ChainData("", 123456789, "")); - } - - function test_SetChain() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - Chain memory customChain = getChain("custom_chain"); - assertEq(customChain.name, "Custom Chain"); - assertEq(customChain.chainId, 123456789); - assertEq(customChain.chainAlias, "custom_chain"); - assertEq(customChain.rpcUrl, "https://custom.chain/"); - Chain memory chainById = getChain(123456789); - assertEq(chainById.name, customChain.name); - assertEq(chainById.chainId, customChain.chainId); - assertEq(chainById.chainAlias, customChain.chainAlias); - assertEq(chainById.rpcUrl, customChain.rpcUrl); - customChain.name = "Another Custom Chain"; - customChain.chainId = 987654321; - setChain("another_custom_chain", customChain); - Chain memory anotherCustomChain = getChain("another_custom_chain"); - assertEq(anotherCustomChain.name, "Another Custom Chain"); - assertEq(anotherCustomChain.chainId, 987654321); - assertEq(anotherCustomChain.chainAlias, "another_custom_chain"); - assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/"); - // Verify the first chain data was not overwritten - chainById = getChain(123456789); - assertEq(chainById.name, "Custom Chain"); - assertEq(chainById.chainId, 123456789); - } - - function test_SetNoEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string."); - stdChainsMock.exposed_setChain("", ChainData("", 123456789, "")); - } - - function test_SetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0."); - stdChainsMock.exposed_setChain("alias", ChainData("", 0, "")); - } - - function test_GetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0."); - stdChainsMock.exposed_getChain(0); - } - - function test_GetNoEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string."); - stdChainsMock.exposed_getChain(""); - } - - function test_ChainIdNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found."); - stdChainsMock.exposed_getChain("no_such_alias"); - } - - function test_ChainAliasNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found."); - - stdChainsMock.exposed_getChain(321); - } - - function test_SetChain_ExistingOne() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - assertEq(getChain(123456789).chainId, 123456789); - - setChain("custom_chain", ChainData("Modified Chain", 999999999, "https://modified.chain/")); - vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found."); - stdChainsMock.exposed_getChain(123456789); - - Chain memory modifiedChain = getChain(999999999); - assertEq(modifiedChain.name, "Modified Chain"); - assertEq(modifiedChain.chainId, 999999999); - assertEq(modifiedChain.rpcUrl, "https://modified.chain/"); - } - - function test_DontUseDefaultRpcUrl() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - // Should error if default RPCs flag is set to false. - stdChainsMock.exposed_setFallbackToDefaultRpcUrls(false); - vm.expectRevert(); - stdChainsMock.exposed_getChain(31337); - vm.expectRevert(); - stdChainsMock.exposed_getChain("sepolia"); - } -} diff --git a/v2/lib/forge-std/test/StdCheats.t.sol b/v2/lib/forge-std/test/StdCheats.t.sol deleted file mode 100644 index 7bac4286..00000000 --- a/v2/lib/forge-std/test/StdCheats.t.sol +++ /dev/null @@ -1,618 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdCheats.sol"; -import "../src/Test.sol"; -import "../src/StdJson.sol"; -import "../src/StdToml.sol"; -import "../src/interfaces/IERC20.sol"; - -contract StdCheatsTest is Test { - Bar test; - - using stdJson for string; - - function setUp() public { - test = new Bar(); - } - - function test_Skip() public { - vm.warp(100); - skip(25); - assertEq(block.timestamp, 125); - } - - function test_Rewind() public { - vm.warp(100); - rewind(25); - assertEq(block.timestamp, 75); - } - - function test_Hoax() public { - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - } - - function test_HoaxOrigin() public { - hoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - } - - function test_HoaxDifferentAddresses() public { - hoax(address(1337), address(7331)); - test.origin{value: 100}(address(1337), address(7331)); - } - - function test_StartHoax() public { - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function test_StartHoaxOrigin() public { - startHoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - test.origin{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function test_ChangePrankMsgSender() public { - vm.startPrank(address(1337)); - test.bar(address(1337)); - changePrank(address(0xdead)); - test.bar(address(0xdead)); - changePrank(address(1337)); - test.bar(address(1337)); - vm.stopPrank(); - } - - function test_ChangePrankMsgSenderAndTxOrigin() public { - vm.startPrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - changePrank(address(0xdead), address(0xbeef)); - test.origin(address(0xdead), address(0xbeef)); - changePrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - vm.stopPrank(); - } - - function test_MakeAccountEquivalence() public { - Account memory account = makeAccount("1337"); - (address addr, uint256 key) = makeAddrAndKey("1337"); - assertEq(account.addr, addr); - assertEq(account.key, key); - } - - function test_MakeAddrEquivalence() public { - (address addr,) = makeAddrAndKey("1337"); - assertEq(makeAddr("1337"), addr); - } - - function test_MakeAddrSigning() public { - (address addr, uint256 key) = makeAddrAndKey("1337"); - bytes32 hash = keccak256("some_message"); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash); - assertEq(ecrecover(hash, v, r, s), addr); - } - - function test_Deal() public { - deal(address(this), 1 ether); - assertEq(address(this).balance, 1 ether); - } - - function test_DealToken() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18); - assertEq(barToken.balanceOf(address(this)), 10000e18); - } - - function test_DealTokenAdjustTotalSupply() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18, true); - assertEq(barToken.balanceOf(address(this)), 10000e18); - assertEq(barToken.totalSupply(), 20000e18); - deal(bar, address(this), 0, true); - assertEq(barToken.balanceOf(address(this)), 0); - assertEq(barToken.totalSupply(), 10000e18); - } - - function test_DealERC1155Token() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, false); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - } - - function test_DealERC1155TokenAdjustTotalSupply() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, true); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - assertEq(barToken.totalSupply(0), 20000e18); - dealERC1155(bar, address(this), 0, 0, true); - assertEq(barToken.balanceOf(address(this), 0), 0); - assertEq(barToken.totalSupply(0), 10000e18); - } - - function test_DealERC721Token() public { - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - dealERC721(bar, address(2), 1); - assertEq(barToken.balanceOf(address(2)), 1); - assertEq(barToken.balanceOf(address(1)), 0); - dealERC721(bar, address(1), 2); - assertEq(barToken.balanceOf(address(1)), 1); - assertEq(barToken.balanceOf(bar), 1); - } - - function test_DeployCode() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes("")); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function test_DestroyAccount() public { - // deploy something to destroy it - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - vm.setNonce(bar, 10); - deal(bar, 100); - - uint256 prevThisBalance = address(this).balance; - uint256 size; - assembly { - size := extcodesize(bar) - } - - assertGt(size, 0); - assertEq(bar.balance, 100); - assertEq(vm.getNonce(bar), 10); - - destroyAccount(bar, address(this)); - assembly { - size := extcodesize(bar) - } - assertEq(address(this).balance, prevThisBalance + 100); - assertEq(vm.getNonce(bar), 0); - assertEq(size, 0); - assertEq(bar.balance, 0); - } - - function test_DeployCodeNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar"); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function test_DeployCodeVal() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - function test_DeployCodeValNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - // We need this so we can call "this.deployCode" rather than "deployCode" directly - function deployCodeHelper(string memory what) external { - deployCode(what); - } - - function test_DeployCodeFail() public { - vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed.")); - this.deployCodeHelper("StdCheats.t.sol:RevertingContract"); - } - - function getCode(address who) internal view returns (bytes memory o_code) { - /// @solidity memory-safe-assembly - assembly { - // retrieve the size of the code, this needs assembly - let size := extcodesize(who) - // allocate output byte array - this could also be done without assembly - // by using o_code = new bytes(size) - o_code := mload(0x40) - // new "memory end" including padding - mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - // store length in memory - mstore(o_code, size) - // actually retrieve the code, this needs assembly - extcodecopy(who, add(o_code, 0x20), 0, size) - } - } - - function test_DeriveRememberKey() public { - string memory mnemonic = "test test test test test test test test test test test junk"; - - (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0); - assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80); - } - - function test_BytesToUint() public pure { - assertEq(3, bytesToUint_test(hex"03")); - assertEq(2, bytesToUint_test(hex"02")); - assertEq(255, bytesToUint_test(hex"ff")); - assertEq(29625, bytesToUint_test(hex"73b9")); - } - - function test_ParseJsonTxDetail() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - string memory json = vm.readFile(path); - bytes memory transactionDetails = json.parseRaw(".transactions[0].tx"); - RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail)); - Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail); - assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512); - assertEq( - txDetail.data, - hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004" - ); - assertEq(txDetail.nonce, 3); - assertEq(txDetail.txType, 2); - assertEq(txDetail.gas, 29625); - assertEq(txDetail.value, 0); - } - - function test_ReadEIP1559Transaction() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 0; - Tx1559 memory transaction = readTx1559(path, index); - transaction; - } - - function test_ReadEIP1559Transactions() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Tx1559[] memory transactions = readTx1559s(path); - transactions; - } - - function test_ReadReceipt() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 5; - Receipt memory receipt = readReceipt(path, index); - assertEq( - receipt.logsBloom, - hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100" - ); - } - - function test_ReadReceipts() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Receipt[] memory receipts = readReceipts(path); - receipts; - } - - function test_GasMeteringModifier() public { - uint256 gas_start_normal = gasleft(); - addInLoop(); - uint256 gas_used_normal = gas_start_normal - gasleft(); - - uint256 gas_start_single = gasleft(); - addInLoopNoGas(); - uint256 gas_used_single = gas_start_single - gasleft(); - - uint256 gas_start_double = gasleft(); - addInLoopNoGasNoGas(); - uint256 gas_used_double = gas_start_double - gasleft(); - - assertTrue(gas_used_double + gas_used_single < gas_used_normal); - } - - function addInLoop() internal pure returns (uint256) { - uint256 b; - for (uint256 i; i < 10000; i++) { - b += i; - } - return b; - } - - function addInLoopNoGas() internal noGasMetering returns (uint256) { - return addInLoop(); - } - - function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) { - return addInLoopNoGas(); - } - - function bytesToUint_test(bytes memory b) private pure returns (uint256) { - uint256 number; - for (uint256 i = 0; i < b.length; i++) { - number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1)))); - } - return number; - } - - function testFuzz_AssumeAddressIsNot(address addr) external { - // skip over Payable and NonPayable enums - for (uint8 i = 2; i < uint8(type(AddressType).max); i++) { - assumeAddressIsNot(addr, AddressType(i)); - } - assertTrue(addr != address(0)); - assertTrue(addr < address(1) || addr > address(9)); - assertTrue(addr != address(vm) || addr != 0x000000000000000000636F6e736F6c652e6c6f67); - } - - function test_AssumePayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should revert since these addresses are not payable - - // VM address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should pass since these addresses are payable - - // vitalik.eth - stdCheatsMock.exposed_assumePayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - stdCheatsMock.exposed_assumePayable(address(cp)); - } - - function test_AssumeNotPayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should pass since these addresses are not payable - - // VM address - stdCheatsMock.exposed_assumeNotPayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - stdCheatsMock.exposed_assumeNotPayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - stdCheatsMock.exposed_assumeNotPayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should revert since these addresses are payable - - // vitalik.eth - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(address(cp)); - } - - function testFuzz_AssumeNotPrecompile(address addr) external { - assumeNotPrecompile(addr, getChain("optimism_sepolia").chainId); - assertTrue( - addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000)) - || addr > address(0x4200000000000000000000000000000000000800) - ); - } - - function testFuzz_AssumeNotForgeAddress(address addr) external pure { - assumeNotForgeAddress(addr); - assertTrue( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function test_CannotDeployCodeTo() external { - vm.expectRevert("StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - this._revertDeployCodeTo(); - } - - function _revertDeployCodeTo() external { - deployCodeTo("StdCheats.t.sol:RevertingContract", address(0)); - } - - function test_DeployCodeTo() external { - address arbitraryAddress = makeAddr("arbitraryAddress"); - - deployCodeTo( - "StdCheats.t.sol:MockContractWithConstructorArgs", - abi.encode(uint256(6), true, bytes20(arbitraryAddress)), - 1 ether, - arbitraryAddress - ); - - MockContractWithConstructorArgs ct = MockContractWithConstructorArgs(arbitraryAddress); - - assertEq(arbitraryAddress.balance, 1 ether); - assertEq(ct.x(), 6); - assertTrue(ct.y()); - assertEq(ct.z(), bytes20(arbitraryAddress)); - } -} - -contract StdCheatsMock is StdCheats { - function exposed_assumePayable(address addr) external { - assumePayable(addr); - } - - function exposed_assumeNotPayable(address addr) external { - assumeNotPayable(addr); - } - - // We deploy a mock version so we can properly test expected reverts. - function exposed_assumeNotBlacklisted(address token, address addr) external view { - return assumeNotBlacklisted(token, addr); - } -} - -contract StdCheatsForkTest is Test { - address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD; - address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; - address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A; - - function setUp() public { - // All tests of the `assumeNotBlacklisted` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function test_CannotAssumeNoBlacklisted_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - address eoa = vm.addr({privateKey: 1}); - vm.expectRevert("StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - stdCheatsMock.exposed_assumeNotBlacklisted(eoa, address(0)); - } - - function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist(address addr) external view { - assumeNotBlacklisted(SHIB, addr); - assertTrue(true); - } - - function test_AssumeNoBlacklisted_USDC() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(USDC, USDC_BLACKLISTED_USER); - } - - function testFuzz_AssumeNotBlacklisted_USDC(address addr) external view { - assumeNotBlacklisted(USDC, addr); - assertFalse(USDCLike(USDC).isBlacklisted(addr)); - } - - function test_AssumeNoBlacklisted_USDT() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(USDT, USDT_BLACKLISTED_USER); - } - - function testFuzz_AssumeNotBlacklisted_USDT(address addr) external view { - assumeNotBlacklisted(USDT, addr); - assertFalse(USDTLike(USDT).isBlackListed(addr)); - } - - function test_dealUSDC() external { - // roll fork to the point when USDC contract updated to store balance in packed slots - vm.rollFork(19279215); - - uint256 balance = 100e6; - deal(USDC, address(this), balance); - assertEq(IERC20(USDC).balanceOf(address(this)), balance); - } -} - -contract Bar { - constructor() payable { - /// `DEAL` STDCHEAT - totalSupply = 10000e18; - balanceOf[address(this)] = totalSupply; - } - - /// `HOAX` and `CHANGEPRANK` STDCHEATS - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } - - function origin(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedSender, "!prank"); - } - - function origin(address expectedSender, address expectedOrigin) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedOrigin, "!prank"); - } - - /// `DEAL` STDCHEAT - mapping(address => uint256) public balanceOf; - uint256 public totalSupply; -} - -contract BarERC1155 { - constructor() payable { - /// `DEALERC1155` STDCHEAT - _totalSupply[0] = 10000e18; - _balances[0][address(this)] = _totalSupply[0]; - } - - function balanceOf(address account, uint256 id) public view virtual returns (uint256) { - return _balances[id][account]; - } - - function totalSupply(uint256 id) public view virtual returns (uint256) { - return _totalSupply[id]; - } - - /// `DEALERC1155` STDCHEAT - mapping(uint256 => mapping(address => uint256)) private _balances; - mapping(uint256 => uint256) private _totalSupply; -} - -contract BarERC721 { - constructor() payable { - /// `DEALERC721` STDCHEAT - _owners[1] = address(1); - _balances[address(1)] = 1; - _owners[2] = address(this); - _owners[3] = address(this); - _balances[address(this)] = 2; - } - - function balanceOf(address owner) public view virtual returns (uint256) { - return _balances[owner]; - } - - function ownerOf(uint256 tokenId) public view virtual returns (address) { - address owner = _owners[tokenId]; - return owner; - } - - mapping(uint256 => address) private _owners; - mapping(address => uint256) private _balances; -} - -interface USDCLike { - function isBlacklisted(address) external view returns (bool); -} - -interface USDTLike { - function isBlackListed(address) external view returns (bool); -} - -contract RevertingContract { - constructor() { - revert(); - } -} - -contract MockContractWithConstructorArgs { - uint256 public immutable x; - bool public y; - bytes20 public z; - - constructor(uint256 _x, bool _y, bytes20 _z) payable { - x = _x; - y = _y; - z = _z; - } -} - -contract MockContractPayable { - receive() external payable {} -} diff --git a/v2/lib/forge-std/test/StdError.t.sol b/v2/lib/forge-std/test/StdError.t.sol deleted file mode 100644 index a306eaa7..00000000 --- a/v2/lib/forge-std/test/StdError.t.sol +++ /dev/null @@ -1,120 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdError.sol"; -import "../src/Test.sol"; - -contract StdErrorsTest is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function test_ExpectAssertion() public { - vm.expectRevert(stdError.assertionError); - test.assertionError(); - } - - function test_ExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } - - function test_ExpectDiv() public { - vm.expectRevert(stdError.divisionError); - test.divError(0); - } - - function test_ExpectMod() public { - vm.expectRevert(stdError.divisionError); - test.modError(0); - } - - function test_ExpectEnum() public { - vm.expectRevert(stdError.enumConversionError); - test.enumConversion(1); - } - - function test_ExpectEncodeStg() public { - vm.expectRevert(stdError.encodeStorageError); - test.encodeStgError(); - } - - function test_ExpectPop() public { - vm.expectRevert(stdError.popError); - test.pop(); - } - - function test_ExpectOOB() public { - vm.expectRevert(stdError.indexOOBError); - test.indexOOBError(1); - } - - function test_ExpectMem() public { - vm.expectRevert(stdError.memOverflowError); - test.mem(); - } - - function test_ExpectIntern() public { - vm.expectRevert(stdError.zeroVarError); - test.intern(); - } -} - -contract ErrorsTest { - enum T { - T1 - } - - uint256[] public someArr; - bytes someBytes; - - function assertionError() public pure { - assert(false); - } - - function arithmeticError(uint256 a) public pure { - a -= 100; - } - - function divError(uint256 a) public pure { - 100 / a; - } - - function modError(uint256 a) public pure { - 100 % a; - } - - function enumConversion(uint256 a) public pure { - T(a); - } - - function encodeStgError() public { - /// @solidity memory-safe-assembly - assembly { - sstore(someBytes.slot, 1) - } - keccak256(someBytes); - } - - function pop() public { - someArr.pop(); - } - - function indexOOBError(uint256 a) public pure { - uint256[] memory t = new uint256[](0); - t[a]; - } - - function mem() public pure { - uint256 l = 2 ** 256 / 32; - new uint256[](l); - } - - function intern() public returns (uint256) { - function(uint256) internal returns (uint256) x; - x(2); - return 7; - } -} diff --git a/v2/lib/forge-std/test/StdJson.t.sol b/v2/lib/forge-std/test/StdJson.t.sol deleted file mode 100644 index e32b92ea..00000000 --- a/v2/lib/forge-std/test/StdJson.t.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdJsonTest is Test { - using stdJson for string; - - string root; - string path; - - function setUp() public { - root = vm.projectRoot(); - path = string.concat(root, "/test/fixtures/test.json"); - } - - struct SimpleJson { - uint256 a; - string b; - } - - struct NestedJson { - uint256 a; - string b; - SimpleJson c; - } - - function test_readJson() public view { - string memory json = vm.readFile(path); - assertEq(json.readUint(".a"), 123); - } - - function test_writeJson() public { - string memory json = "json"; - json.serialize("a", uint256(123)); - string memory semiFinal = json.serialize("b", string("test")); - string memory finalJson = json.serialize("c", semiFinal); - finalJson.write(path); - - string memory json_ = vm.readFile(path); - bytes memory data = json_.parseRaw("$"); - NestedJson memory decodedData = abi.decode(data, (NestedJson)); - - assertEq(decodedData.a, 123); - assertEq(decodedData.b, "test"); - assertEq(decodedData.c.a, 123); - assertEq(decodedData.c.b, "test"); - } -} diff --git a/v2/lib/forge-std/test/StdMath.t.sol b/v2/lib/forge-std/test/StdMath.t.sol deleted file mode 100644 index ed0f9bae..00000000 --- a/v2/lib/forge-std/test/StdMath.t.sol +++ /dev/null @@ -1,212 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdMath.sol"; -import "../src/Test.sol"; - -contract StdMathMock is Test { - function exposed_percentDelta(uint256 a, uint256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } - - function exposed_percentDelta(int256 a, int256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } -} - -contract StdMathTest is Test { - function test_GetAbs() external pure { - assertEq(stdMath.abs(-50), 50); - assertEq(stdMath.abs(50), 50); - assertEq(stdMath.abs(-1337), 1337); - assertEq(stdMath.abs(0), 0); - - assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1); - assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1)); - } - - function testFuzz_GetAbs(int256 a) external pure { - uint256 manualAbs = getAbs(a); - - uint256 abs = stdMath.abs(a); - - assertEq(abs, manualAbs); - } - - function test_GetDelta_Uint() external pure { - assertEq(stdMath.delta(uint256(0), uint256(0)), 0); - assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337); - assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max); - assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max); - assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max); - - assertEq(stdMath.delta(0, uint256(0)), 0); - assertEq(stdMath.delta(1337, uint256(0)), 1337); - assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max); - assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max); - assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max); - - assertEq(stdMath.delta(1337, uint256(1337)), 0); - assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0); - assertEq(stdMath.delta(5000, uint256(1250)), 3750); - } - - function testFuzz_GetDelta_Uint(uint256 a, uint256 b) external pure { - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function test_GetDelta_Int() external pure { - assertEq(stdMath.delta(int256(0), int256(0)), 0); - assertEq(stdMath.delta(int256(0), int256(1337)), 1337); - assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1); - assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1); - assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1); - - assertEq(stdMath.delta(0, int256(0)), 0); - assertEq(stdMath.delta(1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1); - assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1); - assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1); - - assertEq(stdMath.delta(-0, int256(0)), 0); - assertEq(stdMath.delta(-1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(int256(0), -0), 0); - assertEq(stdMath.delta(int256(0), -1337), 1337); - assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(1337, int256(1337)), 0); - assertEq(stdMath.delta(type(int256).max, type(int256).max), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).min), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max); - assertEq(stdMath.delta(5000, int256(1250)), 3750); - } - - function testFuzz_GetDelta_Int(int256 a, int256 b) external pure { - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function test_GetPercentDelta_Uint() external { - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, uint256(1337)), 0); - assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0); - assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, uint256(2500)), 0); - assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(uint256(1), 0); - } - - function testFuzz_GetPercentDelta_Uint(uint192 a, uint192 b) external pure { - vm.assume(b != 0); - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / b; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - function test_GetPercentDelta_Int() external { - // We deploy a mock version so we can properly test the revert. - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18); - assertEq(stdMath.percentDelta(int256(0), -1337), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, int256(1337)), 0); - assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0); - assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0); - - assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(0, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, int256(2500)), 0); - assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(int256(1), 0); - } - - function testFuzz_GetPercentDelta_Int(int192 a, int192 b) external pure { - vm.assume(b != 0); - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / absB; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - /*////////////////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////////////////*/ - - function getAbs(int256 a) private pure returns (uint256) { - if (a < 0) { - return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a); - } - - return uint256(a); - } -} diff --git a/v2/lib/forge-std/test/StdStorage.t.sol b/v2/lib/forge-std/test/StdStorage.t.sol deleted file mode 100644 index 89984bca..00000000 --- a/v2/lib/forge-std/test/StdStorage.t.sol +++ /dev/null @@ -1,471 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdStorage.sol"; -import "../src/Test.sol"; - -contract StdStorageTest is Test { - using stdStorage for StdStorage; - - StorageTest internal test; - - function setUp() public { - test = new StorageTest(); - } - - function test_StorageHidden() public { - assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find()); - } - - function test_StorageObvious() public { - assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find()); - } - - function test_StorageExtraSload() public { - assertEq(16, stdstore.target(address(test)).sig(test.extra_sload.selector).find()); - } - - function test_StorageCheckedWriteHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100); - assertEq(uint256(test.hidden()), 100); - } - - function test_StorageCheckedWriteObvious() public { - stdstore.target(address(test)).sig(test.exists.selector).checked_write(100); - assertEq(test.exists(), 100); - } - - function test_StorageCheckedWriteSignedIntegerHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write_int(-100); - assertEq(int256(uint256(test.hidden())), -100); - } - - function test_StorageCheckedWriteSignedIntegerObvious() public { - stdstore.target(address(test)).sig(test.tG.selector).checked_write_int(-100); - assertEq(test.tG(), -100); - } - - function test_StorageMapStructA() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot); - } - - function test_StorageMapStructB() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot); - } - - function test_StorageDeepMap() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key( - address(this) - ).find(); - assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot); - } - - function test_StorageCheckedWriteDeepMap() public { - stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this)) - .checked_write(100); - assertEq(100, test.deep_map(address(this), address(this))); - } - - function test_StorageDeepMapStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(0).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0), - bytes32(slot) - ); - } - - function test_StorageDeepMapStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(1).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1), - bytes32(slot) - ); - } - - function test_StorageCheckedWriteDeepMapStructA() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(100, a); - assertEq(0, b); - } - - function test_StorageCheckedWriteDeepMapStructB() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(0, a); - assertEq(100, b); - } - - function test_StorageCheckedWriteMapStructA() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 100); - assertEq(b, 0); - } - - function test_StorageCheckedWriteMapStructB() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 0); - assertEq(b, 100); - } - - function test_StorageStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find(); - assertEq(uint256(7), slot); - } - - function test_StorageStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find(); - assertEq(uint256(7) + 1, slot); - } - - function test_StorageCheckedWriteStructA() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 100); - assertEq(b, 1337); - } - - function test_StorageCheckedWriteStructB() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 1337); - assertEq(b, 100); - } - - function test_StorageMapAddrFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find(); - assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot); - } - - function test_StorageMapAddrRoot() public { - (uint256 slot, bytes32 key) = - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).parent(); - assertEq(address(uint160(uint256(key))), address(this)); - assertEq(uint256(1), slot); - slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).root(); - assertEq(uint256(1), slot); - } - - function test_StorageMapUintFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find(); - assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot); - } - - function test_StorageCheckedWriteMapUint() public { - stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100); - assertEq(100, test.map_uint(100)); - } - - function test_StorageCheckedWriteMapAddr() public { - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100); - assertEq(100, test.map_addr(address(this))); - } - - function test_StorageCheckedWriteMapBool() public { - stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true); - assertTrue(test.map_bool(address(this))); - } - - function testFuzz_StorageCheckedWriteMapPacked(address addr, uint128 value) public { - stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_lower.selector).with_key(addr) - .checked_write(value); - assertEq(test.read_struct_lower(addr), value); - - stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_upper.selector).with_key(addr) - .checked_write(value); - assertEq(test.read_struct_upper(addr), value); - } - - function test_StorageCheckedWriteMapPackedFullSuccess() public { - uint256 full = test.map_packed(address(1337)); - // keep upper 128, set lower 128 to 1337 - full = (full & (uint256((1 << 128) - 1) << 128)) | 1337; - stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write( - full - ); - assertEq(1337, test.read_struct_lower(address(1337))); - } - - function testFail_StorageConst() public { - // vm.expectRevert(abi.encodeWithSignature("NotStorage(bytes4)", bytes4(keccak256("const()")))); - stdstore.target(address(test)).sig("const()").find(); - } - - function testFuzz_StorageNativePack(uint248 val1, uint248 val2, bool boolVal1, bool boolVal2) public { - stdstore.enable_packed_slots().target(address(test)).sig(test.tA.selector).checked_write(val1); - stdstore.enable_packed_slots().target(address(test)).sig(test.tB.selector).checked_write(boolVal1); - stdstore.enable_packed_slots().target(address(test)).sig(test.tC.selector).checked_write(boolVal2); - stdstore.enable_packed_slots().target(address(test)).sig(test.tD.selector).checked_write(val2); - - assertEq(test.tA(), val1); - assertEq(test.tB(), boolVal1); - assertEq(test.tC(), boolVal2); - assertEq(test.tD(), val2); - } - - function test_StorageReadBytes32() public { - bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32(); - assertEq(val, hex"1337"); - } - - function test_StorageReadBool_False() public { - bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool(); - assertEq(val, false); - } - - function test_StorageReadBool_True() public { - bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool(); - assertEq(val, true); - } - - function test_StorageReadBool_Revert() public { - vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - this.readNonBoolValue(); - } - - function readNonBoolValue() public { - stdstore.target(address(test)).sig(test.tE.selector).read_bool(); - } - - function test_StorageReadAddress() public { - address val = stdstore.target(address(test)).sig(test.tF.selector).read_address(); - assertEq(val, address(1337)); - } - - function test_StorageReadUint() public { - uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint(); - assertEq(val, 1); - } - - function test_StorageReadInt() public { - int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int(); - assertEq(val, type(int256).min); - } - - function testFuzzPacked(uint256 val, uint8 elemToGet) public { - // This function tries an assortment of packed slots, shifts meaning number of elements - // that are packed. Shiftsizes are the size of each element, i.e. 8 means a data type that is 8 bits, 16 == 16 bits, etc. - // Combined, these determine how a slot is packed. Making it random is too hard to avoid global rejection limit - // and make it performant. - - // change the number of shifts - for (uint256 i = 1; i < 5; i++) { - uint256 shifts = i; - - elemToGet = uint8(bound(elemToGet, 0, shifts - 1)); - - uint256[] memory shiftSizes = new uint256[](shifts); - for (uint256 j; j < shifts; j++) { - shiftSizes[j] = 8 * (j + 1); - } - - test.setRandomPacking(val); - - uint256 leftBits; - uint256 rightBits; - for (uint256 j; j < shiftSizes.length; j++) { - if (j < elemToGet) { - leftBits += shiftSizes[j]; - } else if (elemToGet != j) { - rightBits += shiftSizes[j]; - } - } - - // we may have some right bits unaccounted for - leftBits += 256 - (leftBits + shiftSizes[elemToGet] + rightBits); - // clear left bits, then clear right bits and realign - uint256 expectedValToRead = (val << leftBits) >> (leftBits + rightBits); - - uint256 readVal = stdstore.target(address(test)).enable_packed_slots().sig( - "getRandomPacked(uint8,uint8[],uint8)" - ).with_calldata(abi.encode(shifts, shiftSizes, elemToGet)).read_uint(); - - assertEq(readVal, expectedValToRead); - } - } - - function testFuzzPacked2(uint256 nvars, uint256 seed) public { - // Number of random variables to generate. - nvars = bound(nvars, 1, 20); - - // This will decrease as we generate values in the below loop. - uint256 bitsRemaining = 256; - - // Generate a random value and size for each variable. - uint256[] memory vals = new uint256[](nvars); - uint256[] memory sizes = new uint256[](nvars); - uint256[] memory offsets = new uint256[](nvars); - - for (uint256 i = 0; i < nvars; i++) { - // Generate a random value and size. - offsets[i] = i == 0 ? 0 : offsets[i - 1] + sizes[i - 1]; - - uint256 nvarsRemaining = nvars - i; - uint256 maxVarSize = bitsRemaining - nvarsRemaining + 1; - sizes[i] = bound(uint256(keccak256(abi.encodePacked(seed, i + 256))), 1, maxVarSize); - bitsRemaining -= sizes[i]; - - uint256 maxVal; - uint256 varSize = sizes[i]; - assembly { - // mask = (1 << varSize) - 1 - maxVal := sub(shl(varSize, 1), 1) - } - vals[i] = bound(uint256(keccak256(abi.encodePacked(seed, i))), 0, maxVal); - } - - // Pack all values into the slot. - for (uint256 i = 0; i < nvars; i++) { - stdstore.enable_packed_slots().target(address(test)).sig("getRandomPacked(uint256,uint256)").with_key( - sizes[i] - ).with_key(offsets[i]).checked_write(vals[i]); - } - - // Verify the read data matches. - for (uint256 i = 0; i < nvars; i++) { - uint256 readVal = stdstore.enable_packed_slots().target(address(test)).sig( - "getRandomPacked(uint256,uint256)" - ).with_key(sizes[i]).with_key(offsets[i]).read_uint(); - - uint256 retVal = test.getRandomPacked(sizes[i], offsets[i]); - - assertEq(readVal, vals[i]); - assertEq(retVal, vals[i]); - } - } - - function testEdgeCaseArray() public { - stdstore.target(address(test)).sig("edgeCaseArray(uint256)").with_key(uint256(0)).checked_write(1); - assertEq(test.edgeCaseArray(0), 1); - } -} - -contract StorageTest { - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - mapping(uint256 => uint256) public map_uint; - mapping(address => uint256) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basic; - - uint248 public tA; - bool public tB; - - bool public tC = false; - uint248 public tD = 1; - - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - mapping(address => bool) public map_bool; - - bytes32 public tE = hex"1337"; - address public tF = address(1337); - int256 public tG = type(int256).min; - bool public tH = true; - bytes32 private tI = ~bytes32(hex"1337"); - - uint256 randomPacking; - - // Array with length matching values of elements. - uint256[] public edgeCaseArray = [3, 3, 3]; - - constructor() { - basic = UnpackedStruct({a: 1337, b: 1337}); - - uint256 two = (1 << 128) | 1; - map_packed[msg.sender] = two; - map_packed[address(uint160(1337))] = 1 << 128; - } - - function read_struct_upper(address who) public view returns (uint256) { - return map_packed[who] >> 128; - } - - function read_struct_lower(address who) public view returns (uint256) { - return map_packed[who] & ((1 << 128) - 1); - } - - function hidden() public view returns (bytes32 t) { - bytes32 slot = keccak256("my.random.var"); - /// @solidity memory-safe-assembly - assembly { - t := sload(slot) - } - } - - function const() public pure returns (bytes32 t) { - t = bytes32(hex"1337"); - } - - function extra_sload() public view returns (bytes32 t) { - // trigger read on slot `tE`, and make a staticcall to make sure compiler doesn't optimize this SLOAD away - assembly { - pop(staticcall(gas(), sload(tE.slot), 0, 0, 0, 0)) - } - t = tI; - } - - function setRandomPacking(uint256 val) public { - randomPacking = val; - } - - function _getMask(uint256 size) internal pure returns (uint256 mask) { - assembly { - // mask = (1 << size) - 1 - mask := sub(shl(size, 1), 1) - } - } - - function setRandomPacking(uint256 val, uint256 size, uint256 offset) public { - // Generate mask based on the size of the value - uint256 mask = _getMask(size); - // Zero out all bits for the word we're about to set - uint256 cleanedWord = randomPacking & ~(mask << offset); - // Place val in the correct spot of the cleaned word - randomPacking = cleanedWord | val << offset; - } - - function getRandomPacked(uint256 size, uint256 offset) public view returns (uint256) { - // Generate mask based on the size of the value - uint256 mask = _getMask(size); - // Shift to place the bits in the correct position, and use mask to zero out remaining bits - return (randomPacking >> offset) & mask; - } - - function getRandomPacked(uint8 shifts, uint8[] memory shiftSizes, uint8 elem) public view returns (uint256) { - require(elem < shifts, "!elem"); - uint256 leftBits; - uint256 rightBits; - - for (uint256 i; i < shiftSizes.length; i++) { - if (i < elem) { - leftBits += shiftSizes[i]; - } else if (elem != i) { - rightBits += shiftSizes[i]; - } - } - - // we may have some right bits unaccounted for - leftBits += 256 - (leftBits + shiftSizes[elem] + rightBits); - - // clear left bits, then clear right bits and realign - return (randomPacking << leftBits) >> (leftBits + rightBits); - } -} diff --git a/v2/lib/forge-std/test/StdStyle.t.sol b/v2/lib/forge-std/test/StdStyle.t.sol deleted file mode 100644 index e12c005f..00000000 --- a/v2/lib/forge-std/test/StdStyle.t.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdStyleTest is Test { - function test_StyleColor() public pure { - console2.log(StdStyle.red("StdStyle.red String Test")); - console2.log(StdStyle.red(uint256(10e18))); - console2.log(StdStyle.red(int256(-10e18))); - console2.log(StdStyle.red(true)); - console2.log(StdStyle.red(address(0))); - console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.redBytes32("StdStyle.redBytes32")); - console2.log(StdStyle.green("StdStyle.green String Test")); - console2.log(StdStyle.green(uint256(10e18))); - console2.log(StdStyle.green(int256(-10e18))); - console2.log(StdStyle.green(true)); - console2.log(StdStyle.green(address(0))); - console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32")); - console2.log(StdStyle.yellow("StdStyle.yellow String Test")); - console2.log(StdStyle.yellow(uint256(10e18))); - console2.log(StdStyle.yellow(int256(-10e18))); - console2.log(StdStyle.yellow(true)); - console2.log(StdStyle.yellow(address(0))); - console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32")); - console2.log(StdStyle.blue("StdStyle.blue String Test")); - console2.log(StdStyle.blue(uint256(10e18))); - console2.log(StdStyle.blue(int256(-10e18))); - console2.log(StdStyle.blue(true)); - console2.log(StdStyle.blue(address(0))); - console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32")); - console2.log(StdStyle.magenta("StdStyle.magenta String Test")); - console2.log(StdStyle.magenta(uint256(10e18))); - console2.log(StdStyle.magenta(int256(-10e18))); - console2.log(StdStyle.magenta(true)); - console2.log(StdStyle.magenta(address(0))); - console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32")); - console2.log(StdStyle.cyan("StdStyle.cyan String Test")); - console2.log(StdStyle.cyan(uint256(10e18))); - console2.log(StdStyle.cyan(int256(-10e18))); - console2.log(StdStyle.cyan(true)); - console2.log(StdStyle.cyan(address(0))); - console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32")); - } - - function test_StyleFontWeight() public pure { - console2.log(StdStyle.bold("StdStyle.bold String Test")); - console2.log(StdStyle.bold(uint256(10e18))); - console2.log(StdStyle.bold(int256(-10e18))); - console2.log(StdStyle.bold(address(0))); - console2.log(StdStyle.bold(true)); - console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32")); - console2.log(StdStyle.dim("StdStyle.dim String Test")); - console2.log(StdStyle.dim(uint256(10e18))); - console2.log(StdStyle.dim(int256(-10e18))); - console2.log(StdStyle.dim(address(0))); - console2.log(StdStyle.dim(true)); - console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32")); - console2.log(StdStyle.italic("StdStyle.italic String Test")); - console2.log(StdStyle.italic(uint256(10e18))); - console2.log(StdStyle.italic(int256(-10e18))); - console2.log(StdStyle.italic(address(0))); - console2.log(StdStyle.italic(true)); - console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32")); - console2.log(StdStyle.underline("StdStyle.underline String Test")); - console2.log(StdStyle.underline(uint256(10e18))); - console2.log(StdStyle.underline(int256(-10e18))); - console2.log(StdStyle.underline(address(0))); - console2.log(StdStyle.underline(true)); - console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32")); - console2.log(StdStyle.inverse("StdStyle.inverse String Test")); - console2.log(StdStyle.inverse(uint256(10e18))); - console2.log(StdStyle.inverse(int256(-10e18))); - console2.log(StdStyle.inverse(address(0))); - console2.log(StdStyle.inverse(true)); - console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32")); - } - - function test_StyleCombined() public pure { - console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test"))); - console2.log(StdStyle.green(StdStyle.dim(uint256(10e18)))); - console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18)))); - console2.log(StdStyle.blue(StdStyle.underline(address(0)))); - console2.log(StdStyle.magenta(StdStyle.inverse(true))); - } - - function test_StyleCustom() public pure { - console2.log(h1("Custom Style 1")); - console2.log(h2("Custom Style 2")); - } - - function h1(string memory a) private pure returns (string memory) { - return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a))); - } - - function h2(string memory a) private pure returns (string memory) { - return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a))); - } -} diff --git a/v2/lib/forge-std/test/StdToml.t.sol b/v2/lib/forge-std/test/StdToml.t.sol deleted file mode 100644 index 631b1b53..00000000 --- a/v2/lib/forge-std/test/StdToml.t.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdTomlTest is Test { - using stdToml for string; - - string root; - string path; - - function setUp() public { - root = vm.projectRoot(); - path = string.concat(root, "/test/fixtures/test.toml"); - } - - struct SimpleToml { - uint256 a; - string b; - } - - struct NestedToml { - uint256 a; - string b; - SimpleToml c; - } - - function test_readToml() public view { - string memory json = vm.readFile(path); - assertEq(json.readUint(".a"), 123); - } - - function test_writeToml() public { - string memory json = "json"; - json.serialize("a", uint256(123)); - string memory semiFinal = json.serialize("b", string("test")); - string memory finalJson = json.serialize("c", semiFinal); - finalJson.write(path); - - string memory toml = vm.readFile(path); - bytes memory data = toml.parseRaw("$"); - NestedToml memory decodedData = abi.decode(data, (NestedToml)); - - assertEq(decodedData.a, 123); - assertEq(decodedData.b, "test"); - assertEq(decodedData.c.a, 123); - assertEq(decodedData.c.b, "test"); - } -} diff --git a/v2/lib/forge-std/test/StdUtils.t.sol b/v2/lib/forge-std/test/StdUtils.t.sol deleted file mode 100644 index 4994c6cb..00000000 --- a/v2/lib/forge-std/test/StdUtils.t.sol +++ /dev/null @@ -1,342 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdUtilsMock is StdUtils { - // We deploy a mock version so we can properly test expected reverts. - function exposed_getTokenBalances(address token, address[] memory addresses) - external - returns (uint256[] memory balances) - { - return getTokenBalances(token, addresses); - } - - function exposed_bound(int256 num, int256 min, int256 max) external pure returns (int256) { - return bound(num, min, max); - } - - function exposed_bound(uint256 num, uint256 min, uint256 max) external pure returns (uint256) { - return bound(num, min, max); - } - - function exposed_bytesToUint(bytes memory b) external pure returns (uint256) { - return bytesToUint(b); - } -} - -contract StdUtilsTest is Test { - /*////////////////////////////////////////////////////////////////////////// - BOUND UINT - //////////////////////////////////////////////////////////////////////////*/ - - function test_Bound() public pure { - assertEq(bound(uint256(5), 0, 4), 0); - assertEq(bound(uint256(0), 69, 69), 69); - assertEq(bound(uint256(0), 68, 69), 68); - assertEq(bound(uint256(10), 150, 190), 174); - assertEq(bound(uint256(300), 2800, 3200), 3107); - assertEq(bound(uint256(9999), 1337, 6666), 4669); - } - - function test_Bound_WithinRange() public pure { - assertEq(bound(uint256(51), 50, 150), 51); - assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150)); - assertEq(bound(uint256(149), 50, 150), 149); - assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150)); - } - - function test_Bound_EdgeCoverage() public pure { - assertEq(bound(uint256(0), 50, 150), 50); - assertEq(bound(uint256(1), 50, 150), 51); - assertEq(bound(uint256(2), 50, 150), 52); - assertEq(bound(uint256(3), 50, 150), 53); - assertEq(bound(type(uint256).max, 50, 150), 150); - assertEq(bound(type(uint256).max - 1, 50, 150), 149); - assertEq(bound(type(uint256).max - 2, 50, 150), 148); - assertEq(bound(type(uint256).max - 3, 50, 150), 147); - } - - function test_Bound_DistributionIsEven(uint256 min, uint256 size) public pure { - size = size % 100 + 1; - min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size); - uint256 max = min + size - 1; - uint256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + i, min, max); - assertEq(result, min + (i - 1) % size); - // x < min - result = bound(min - i, min, max); - assertEq(result, max - (i - 1) % size); - } - } - - function test_Bound(uint256 num, uint256 min, uint256 max) public pure { - if (min > max) (min, max) = (max, min); - - uint256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function test_BoundUint256Max() public pure { - assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1); - assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max); - } - - function test_CannotBoundMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(uint256(5), 100, 10); - } - - function test_CannotBoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND INT - //////////////////////////////////////////////////////////////////////////*/ - - function test_BoundInt() public pure { - assertEq(bound(-3, 0, 4), 2); - assertEq(bound(0, -69, -69), -69); - assertEq(bound(0, -69, -68), -68); - assertEq(bound(-10, 150, 190), 154); - assertEq(bound(-300, 2800, 3200), 2908); - assertEq(bound(9999, -1337, 6666), 1995); - } - - function test_BoundInt_WithinRange() public pure { - assertEq(bound(51, -50, 150), 51); - assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150)); - assertEq(bound(149, -50, 150), 149); - assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150)); - } - - function test_BoundInt_EdgeCoverage() public pure { - assertEq(bound(type(int256).min, -50, 150), -50); - assertEq(bound(type(int256).min + 1, -50, 150), -49); - assertEq(bound(type(int256).min + 2, -50, 150), -48); - assertEq(bound(type(int256).min + 3, -50, 150), -47); - assertEq(bound(type(int256).min, 10, 150), 10); - assertEq(bound(type(int256).min + 1, 10, 150), 11); - assertEq(bound(type(int256).min + 2, 10, 150), 12); - assertEq(bound(type(int256).min + 3, 10, 150), 13); - - assertEq(bound(type(int256).max, -50, 150), 150); - assertEq(bound(type(int256).max - 1, -50, 150), 149); - assertEq(bound(type(int256).max - 2, -50, 150), 148); - assertEq(bound(type(int256).max - 3, -50, 150), 147); - assertEq(bound(type(int256).max, -50, -10), -10); - assertEq(bound(type(int256).max - 1, -50, -10), -11); - assertEq(bound(type(int256).max - 2, -50, -10), -12); - assertEq(bound(type(int256).max - 3, -50, -10), -13); - } - - function test_BoundInt_DistributionIsEven(int256 min, uint256 size) public pure { - size = size % 100 + 1; - min = bound(min, -int256(size / 2), int256(size - size / 2)); - int256 max = min + int256(size) - 1; - int256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + int256(i), min, max); - assertEq(result, min + int256((i - 1) % size)); - // x < min - result = bound(min - int256(i), min, max); - assertEq(result, max - int256((i - 1) % size)); - } - } - - function test_BoundInt(int256 num, int256 min, int256 max) public pure { - if (min > max) (min, max) = (max, min); - - int256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function test_BoundIntInt256Max() public pure { - assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1); - assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max); - } - - function test_BoundIntInt256Min() public pure { - assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min); - assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1); - } - - function test_CannotBoundIntMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(-5, 100, 10); - } - - function test_CannotBoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND PRIVATE KEY - //////////////////////////////////////////////////////////////////////////*/ - - function test_BoundPrivateKey() public pure { - assertEq(boundPrivateKey(0), 1); - assertEq(boundPrivateKey(1), 1); - assertEq(boundPrivateKey(300), 300); - assertEq(boundPrivateKey(9999), 9999); - assertEq(boundPrivateKey(SECP256K1_ORDER - 1), SECP256K1_ORDER - 1); - assertEq(boundPrivateKey(SECP256K1_ORDER), 1); - assertEq(boundPrivateKey(SECP256K1_ORDER + 1), 2); - assertEq(boundPrivateKey(UINT256_MAX), UINT256_MAX & SECP256K1_ORDER - 1); // x&y is equivalent to x-x%y - } - - /*////////////////////////////////////////////////////////////////////////// - BYTES TO UINT - //////////////////////////////////////////////////////////////////////////*/ - - function test_BytesToUint() external pure { - bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - bytes memory two = hex"02"; - bytes memory millionEther = hex"d3c21bcecceda1000000"; - - assertEq(bytesToUint(maxUint), type(uint256).max); - assertEq(bytesToUint(two), 2); - assertEq(bytesToUint(millionEther), 1_000_000 ether); - } - - function test_CannotConvertGT32Bytes() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - stdUtils.exposed_bytesToUint(thirty3Bytes); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function test_ComputeCreateAddress() external pure { - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - uint256 nonce = 14; - address createAddress = computeCreateAddress(deployer, nonce); - assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE2 ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function test_ComputeCreate2Address() external pure { - bytes32 salt = bytes32(uint256(31415)); - bytes32 initcodeHash = keccak256(abi.encode(0x6080)); - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - address create2Address = computeCreate2Address(salt, initcodeHash, deployer); - assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3); - } - - function test_ComputeCreate2AddressWithDefaultDeployer() external pure { - bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0; - bytes32 initcodeHash = hashInitCode(hex"6080", ""); - assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0); - address create2Address = computeCreate2Address(salt, initcodeHash); - assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6); - } -} - -contract StdUtilsForkTest is Test { - /*////////////////////////////////////////////////////////////////////////// - GET TOKEN BALANCES - //////////////////////////////////////////////////////////////////////////*/ - - address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170; - address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA; - address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385; - - address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17; - address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52; - - function setUp() public { - // All tests of the `getTokenBalances` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function test_CannotGetTokenBalances_NonTokenContract() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function, - // so the `balanceOf` call should revert. - address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - - vm.expectRevert("Multicall3: call failed"); - stdUtils.exposed_getTokenBalances(token, addresses); - } - - function test_CannotGetTokenBalances_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - address eoa = vm.addr({privateKey: 1}); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - stdUtils.exposed_getTokenBalances(eoa, addresses); - } - - function test_GetTokenBalances_Empty() external { - address[] memory addresses = new address[](0); - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances.length, 0); - } - - function test_GetTokenBalances_USDC() external { - address[] memory addresses = new address[](2); - addresses[0] = USDC_HOLDER_0; - addresses[1] = USDC_HOLDER_1; - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances[0], 159_000_000_000_000); - assertEq(balances[1], 131_350_000_000_000); - } - - function test_GetTokenBalances_SHIB() external { - address[] memory addresses = new address[](3); - addresses[0] = SHIB_HOLDER_0; - addresses[1] = SHIB_HOLDER_1; - addresses[2] = SHIB_HOLDER_2; - uint256[] memory balances = getTokenBalances(SHIB, addresses); - assertEq(balances[0], 3_323_256_285_484.42e18); - assertEq(balances[1], 1_271_702_771_149.99999928e18); - assertEq(balances[2], 606_357_106_247e18); - } -} diff --git a/v2/lib/forge-std/test/Vm.t.sol b/v2/lib/forge-std/test/Vm.t.sol deleted file mode 100644 index cbf433a4..00000000 --- a/v2/lib/forge-std/test/Vm.t.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import {Test} from "../src/Test.sol"; -import {Vm, VmSafe} from "../src/Vm.sol"; - -contract VmTest is Test { - // This test ensures that functions are never accidentally removed from a Vm interface, or - // inadvertently moved between Vm and VmSafe. This test must be updated each time a function is - // added to or removed from Vm or VmSafe. - function test_interfaceId() public pure { - assertEq(type(VmSafe).interfaceId, bytes4(0xe745b84f), "VmSafe"); - assertEq(type(Vm).interfaceId, bytes4(0x1316b43e), "Vm"); - } -} diff --git a/v2/lib/forge-std/test/compilation/CompilationScript.sol b/v2/lib/forge-std/test/compilation/CompilationScript.sol deleted file mode 100644 index e205cfff..00000000 --- a/v2/lib/forge-std/test/compilation/CompilationScript.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScript is Script {} diff --git a/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol b/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol deleted file mode 100644 index ce8e0e95..00000000 --- a/v2/lib/forge-std/test/compilation/CompilationScriptBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScriptBase is ScriptBase {} diff --git a/v2/lib/forge-std/test/compilation/CompilationTest.sol b/v2/lib/forge-std/test/compilation/CompilationTest.sol deleted file mode 100644 index 9beeafeb..00000000 --- a/v2/lib/forge-std/test/compilation/CompilationTest.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTest is Test {} diff --git a/v2/lib/forge-std/test/compilation/CompilationTestBase.sol b/v2/lib/forge-std/test/compilation/CompilationTestBase.sol deleted file mode 100644 index e993535b..00000000 --- a/v2/lib/forge-std/test/compilation/CompilationTestBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTestBase is TestBase {} diff --git a/v2/lib/forge-std/test/fixtures/broadcast.log.json b/v2/lib/forge-std/test/fixtures/broadcast.log.json deleted file mode 100644 index 0a0200bc..00000000 --- a/v2/lib/forge-std/test/fixtures/broadcast.log.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "multiple_arguments(uint256,address,uint256[]):(uint256)", - "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0x73b9", - "value": "0x0", - "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", - "nonce": "0x3", - "accessList": [] - } - }, - { - "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "inc():(uint256)", - "arguments": [], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0xdcb2", - "value": "0x0", - "data": "0x371303c0", - "nonce": "0x4", - "accessList": [] - } - }, - { - "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "function": "t(uint256):(uint256)", - "arguments": ["1"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "gas": "0x8599", - "value": "0x0", - "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x5", - "accessList": [] - } - } - ], - "receipts": [ - { - "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181", - "transactionIndex": "0x0", - "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af", - "blockNumber": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x13f3a", - "gasUsed": "0x13f3a", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782", - "transactionIndex": "0x0", - "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148", - "blockNumber": "0x2", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x45d80", - "gasUsed": "0x45d80", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d", - "transactionIndex": "0x0", - "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58", - "blockNumber": "0x3", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "cumulativeGasUsed": "0x45feb", - "gasUsed": "0x45feb", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "transactionIndex": "0x0", - "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629", - "blockNumber": "0x4", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0x5905", - "gasUsed": "0x5905", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "transactionIndex": "0x0", - "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11", - "blockNumber": "0x5", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0xa9c4", - "gasUsed": "0xa9c4", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x0", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "cumulativeGasUsed": "0x66c5", - "gasUsed": "0x66c5", - "contractAddress": null, - "logs": [ - { - "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "topics": [ - "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x1", - "logIndex": "0x0", - "transactionLogIndex": "0x0", - "removed": false - } - ], - "status": "0x1", - "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16", - "transactionIndex": "0x0", - "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c", - "blockNumber": "0x7", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x0000000000000000000000000000000000001337", - "cumulativeGasUsed": "0x5208", - "gasUsed": "0x5208", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - } - ], - "libraries": [ - "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3" - ], - "pending": [], - "path": "broadcast/Broadcast.t.sol/31337/run-latest.json", - "returns": {}, - "timestamp": 1655140035 -} diff --git a/v2/lib/forge-std/test/fixtures/test.json b/v2/lib/forge-std/test/fixtures/test.json deleted file mode 100644 index caebf6d9..00000000 --- a/v2/lib/forge-std/test/fixtures/test.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "a": 123, - "b": "test", - "c": { - "a": 123, - "b": "test" - } -} \ No newline at end of file diff --git a/v2/lib/forge-std/test/fixtures/test.toml b/v2/lib/forge-std/test/fixtures/test.toml deleted file mode 100644 index 60692bc7..00000000 --- a/v2/lib/forge-std/test/fixtures/test.toml +++ /dev/null @@ -1,6 +0,0 @@ -a = 123 -b = "test" - -[c] -a = 123 -b = "test" diff --git a/v2/lib/forge-std/test/mocks/MockERC20.t.sol b/v2/lib/forge-std/test/mocks/MockERC20.t.sol deleted file mode 100644 index e2468109..00000000 --- a/v2/lib/forge-std/test/mocks/MockERC20.t.sol +++ /dev/null @@ -1,441 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {MockERC20} from "../../src/mocks/MockERC20.sol"; -import {StdCheats} from "../../src/StdCheats.sol"; -import {Test} from "../../src/Test.sol"; - -contract Token_ERC20 is MockERC20 { - constructor(string memory name, string memory symbol, uint8 decimals) { - initialize(name, symbol, decimals); - } - - function mint(address to, uint256 value) public virtual { - _mint(to, value); - } - - function burn(address from, uint256 value) public virtual { - _burn(from, value); - } -} - -contract MockERC20Test is StdCheats, Test { - Token_ERC20 token; - - bytes32 constant PERMIT_TYPEHASH = - keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); - - function setUp() public { - token = new Token_ERC20("Token", "TKN", 18); - } - - function invariantMetadata() public view { - assertEq(token.name(), "Token"); - assertEq(token.symbol(), "TKN"); - assertEq(token.decimals(), 18); - } - - function testMint() public { - token.mint(address(0xBEEF), 1e18); - - assertEq(token.totalSupply(), 1e18); - assertEq(token.balanceOf(address(0xBEEF)), 1e18); - } - - function testBurn() public { - token.mint(address(0xBEEF), 1e18); - token.burn(address(0xBEEF), 0.9e18); - - assertEq(token.totalSupply(), 1e18 - 0.9e18); - assertEq(token.balanceOf(address(0xBEEF)), 0.1e18); - } - - function testApprove() public { - assertTrue(token.approve(address(0xBEEF), 1e18)); - - assertEq(token.allowance(address(this), address(0xBEEF)), 1e18); - } - - function testTransfer() public { - token.mint(address(this), 1e18); - - assertTrue(token.transfer(address(0xBEEF), 1e18)); - assertEq(token.totalSupply(), 1e18); - - assertEq(token.balanceOf(address(this)), 0); - assertEq(token.balanceOf(address(0xBEEF)), 1e18); - } - - function testTransferFrom() public { - address from = address(0xABCD); - - token.mint(from, 1e18); - - vm.prank(from); - token.approve(address(this), 1e18); - - assertTrue(token.transferFrom(from, address(0xBEEF), 1e18)); - assertEq(token.totalSupply(), 1e18); - - assertEq(token.allowance(from, address(this)), 0); - - assertEq(token.balanceOf(from), 0); - assertEq(token.balanceOf(address(0xBEEF)), 1e18); - } - - function testInfiniteApproveTransferFrom() public { - address from = address(0xABCD); - - token.mint(from, 1e18); - - vm.prank(from); - token.approve(address(this), type(uint256).max); - - assertTrue(token.transferFrom(from, address(0xBEEF), 1e18)); - assertEq(token.totalSupply(), 1e18); - - assertEq(token.allowance(from, address(this)), type(uint256).max); - - assertEq(token.balanceOf(from), 0); - assertEq(token.balanceOf(address(0xBEEF)), 1e18); - } - - function testPermit() public { - uint256 privateKey = 0xBEEF; - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) - ) - ) - ); - - token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); - - assertEq(token.allowance(owner, address(0xCAFE)), 1e18); - assertEq(token.nonces(owner), 1); - } - - function testFailTransferInsufficientBalance() public { - token.mint(address(this), 0.9e18); - token.transfer(address(0xBEEF), 1e18); - } - - function testFailTransferFromInsufficientAllowance() public { - address from = address(0xABCD); - - token.mint(from, 1e18); - - vm.prank(from); - token.approve(address(this), 0.9e18); - - token.transferFrom(from, address(0xBEEF), 1e18); - } - - function testFailTransferFromInsufficientBalance() public { - address from = address(0xABCD); - - token.mint(from, 0.9e18); - - vm.prank(from); - token.approve(address(this), 1e18); - - token.transferFrom(from, address(0xBEEF), 1e18); - } - - function testFailPermitBadNonce() public { - uint256 privateKey = 0xBEEF; - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 1, block.timestamp)) - ) - ) - ); - - token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); - } - - function testFailPermitBadDeadline() public { - uint256 privateKey = 0xBEEF; - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) - ) - ) - ); - - token.permit(owner, address(0xCAFE), 1e18, block.timestamp + 1, v, r, s); - } - - function testFailPermitPastDeadline() public { - uint256 oldTimestamp = block.timestamp; - uint256 privateKey = 0xBEEF; - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, oldTimestamp)) - ) - ) - ); - - vm.warp(block.timestamp + 1); - token.permit(owner, address(0xCAFE), 1e18, oldTimestamp, v, r, s); - } - - function testFailPermitReplay() public { - uint256 privateKey = 0xBEEF; - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, address(0xCAFE), 1e18, 0, block.timestamp)) - ) - ) - ); - - token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); - token.permit(owner, address(0xCAFE), 1e18, block.timestamp, v, r, s); - } - - function testMetadata(string calldata name, string calldata symbol, uint8 decimals) public { - Token_ERC20 tkn = new Token_ERC20(name, symbol, decimals); - assertEq(tkn.name(), name); - assertEq(tkn.symbol(), symbol); - assertEq(tkn.decimals(), decimals); - } - - function testMint(address from, uint256 amount) public { - token.mint(from, amount); - - assertEq(token.totalSupply(), amount); - assertEq(token.balanceOf(from), amount); - } - - function testBurn(address from, uint256 mintAmount, uint256 burnAmount) public { - burnAmount = bound(burnAmount, 0, mintAmount); - - token.mint(from, mintAmount); - token.burn(from, burnAmount); - - assertEq(token.totalSupply(), mintAmount - burnAmount); - assertEq(token.balanceOf(from), mintAmount - burnAmount); - } - - function testApprove(address to, uint256 amount) public { - assertTrue(token.approve(to, amount)); - - assertEq(token.allowance(address(this), to), amount); - } - - function testTransfer(address from, uint256 amount) public { - token.mint(address(this), amount); - - assertTrue(token.transfer(from, amount)); - assertEq(token.totalSupply(), amount); - - if (address(this) == from) { - assertEq(token.balanceOf(address(this)), amount); - } else { - assertEq(token.balanceOf(address(this)), 0); - assertEq(token.balanceOf(from), amount); - } - } - - function testTransferFrom(address to, uint256 approval, uint256 amount) public { - amount = bound(amount, 0, approval); - - address from = address(0xABCD); - - token.mint(from, amount); - - vm.prank(from); - token.approve(address(this), approval); - - assertTrue(token.transferFrom(from, to, amount)); - assertEq(token.totalSupply(), amount); - - uint256 app = from == address(this) || approval == type(uint256).max ? approval : approval - amount; - assertEq(token.allowance(from, address(this)), app); - - if (from == to) { - assertEq(token.balanceOf(from), amount); - } else { - assertEq(token.balanceOf(from), 0); - assertEq(token.balanceOf(to), amount); - } - } - - function testPermit(uint248 privKey, address to, uint256 amount, uint256 deadline) public { - uint256 privateKey = privKey; - if (deadline < block.timestamp) deadline = block.timestamp; - if (privateKey == 0) privateKey = 1; - - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) - ) - ) - ); - - token.permit(owner, to, amount, deadline, v, r, s); - - assertEq(token.allowance(owner, to), amount); - assertEq(token.nonces(owner), 1); - } - - function testFailBurnInsufficientBalance(address to, uint256 mintAmount, uint256 burnAmount) public { - burnAmount = bound(burnAmount, mintAmount + 1, type(uint256).max); - - token.mint(to, mintAmount); - token.burn(to, burnAmount); - } - - function testFailTransferInsufficientBalance(address to, uint256 mintAmount, uint256 sendAmount) public { - sendAmount = bound(sendAmount, mintAmount + 1, type(uint256).max); - - token.mint(address(this), mintAmount); - token.transfer(to, sendAmount); - } - - function testFailTransferFromInsufficientAllowance(address to, uint256 approval, uint256 amount) public { - amount = bound(amount, approval + 1, type(uint256).max); - - address from = address(0xABCD); - - token.mint(from, amount); - - vm.prank(from); - token.approve(address(this), approval); - - token.transferFrom(from, to, amount); - } - - function testFailTransferFromInsufficientBalance(address to, uint256 mintAmount, uint256 sendAmount) public { - sendAmount = bound(sendAmount, mintAmount + 1, type(uint256).max); - - address from = address(0xABCD); - - token.mint(from, mintAmount); - - vm.prank(from); - token.approve(address(this), sendAmount); - - token.transferFrom(from, to, sendAmount); - } - - function testFailPermitBadNonce(uint256 privateKey, address to, uint256 amount, uint256 deadline, uint256 nonce) - public - { - if (deadline < block.timestamp) deadline = block.timestamp; - if (privateKey == 0) privateKey = 1; - if (nonce == 0) nonce = 1; - - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, nonce, deadline)) - ) - ) - ); - - token.permit(owner, to, amount, deadline, v, r, s); - } - - function testFailPermitBadDeadline(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { - if (deadline < block.timestamp) deadline = block.timestamp; - if (privateKey == 0) privateKey = 1; - - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) - ) - ) - ); - - token.permit(owner, to, amount, deadline + 1, v, r, s); - } - - function testFailPermitPastDeadline(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { - deadline = bound(deadline, 0, block.timestamp - 1); - if (privateKey == 0) privateKey = 1; - - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) - ) - ) - ); - - token.permit(owner, to, amount, deadline, v, r, s); - } - - function testFailPermitReplay(uint256 privateKey, address to, uint256 amount, uint256 deadline) public { - if (deadline < block.timestamp) deadline = block.timestamp; - if (privateKey == 0) privateKey = 1; - - address owner = vm.addr(privateKey); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign( - privateKey, - keccak256( - abi.encodePacked( - "\x19\x01", - token.DOMAIN_SEPARATOR(), - keccak256(abi.encode(PERMIT_TYPEHASH, owner, to, amount, 0, deadline)) - ) - ) - ); - - token.permit(owner, to, amount, deadline, v, r, s); - token.permit(owner, to, amount, deadline, v, r, s); - } -} diff --git a/v2/lib/forge-std/test/mocks/MockERC721.t.sol b/v2/lib/forge-std/test/mocks/MockERC721.t.sol deleted file mode 100644 index f986d796..00000000 --- a/v2/lib/forge-std/test/mocks/MockERC721.t.sol +++ /dev/null @@ -1,721 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {MockERC721, IERC721TokenReceiver} from "../../src/mocks/MockERC721.sol"; -import {StdCheats} from "../../src/StdCheats.sol"; -import {Test} from "../../src/Test.sol"; - -contract ERC721Recipient is IERC721TokenReceiver { - address public operator; - address public from; - uint256 public id; - bytes public data; - - function onERC721Received(address _operator, address _from, uint256 _id, bytes calldata _data) - public - virtual - override - returns (bytes4) - { - operator = _operator; - from = _from; - id = _id; - data = _data; - - return IERC721TokenReceiver.onERC721Received.selector; - } -} - -contract RevertingERC721Recipient is IERC721TokenReceiver { - function onERC721Received(address, address, uint256, bytes calldata) public virtual override returns (bytes4) { - revert(string(abi.encodePacked(IERC721TokenReceiver.onERC721Received.selector))); - } -} - -contract WrongReturnDataERC721Recipient is IERC721TokenReceiver { - function onERC721Received(address, address, uint256, bytes calldata) public virtual override returns (bytes4) { - return 0xCAFEBEEF; - } -} - -contract NonERC721Recipient {} - -contract Token_ERC721 is MockERC721 { - constructor(string memory _name, string memory _symbol) { - initialize(_name, _symbol); - } - - function tokenURI(uint256) public pure virtual override returns (string memory) {} - - function mint(address to, uint256 tokenId) public virtual { - _mint(to, tokenId); - } - - function burn(uint256 tokenId) public virtual { - _burn(tokenId); - } - - function safeMint(address to, uint256 tokenId) public virtual { - _safeMint(to, tokenId); - } - - function safeMint(address to, uint256 tokenId, bytes memory data) public virtual { - _safeMint(to, tokenId, data); - } -} - -contract MockERC721Test is StdCheats, Test { - Token_ERC721 token; - - function setUp() public { - token = new Token_ERC721("Token", "TKN"); - } - - function invariantMetadata() public view { - assertEq(token.name(), "Token"); - assertEq(token.symbol(), "TKN"); - } - - function testMint() public { - token.mint(address(0xBEEF), 1337); - - assertEq(token.balanceOf(address(0xBEEF)), 1); - assertEq(token.ownerOf(1337), address(0xBEEF)); - } - - function testBurn() public { - token.mint(address(0xBEEF), 1337); - token.burn(1337); - - assertEq(token.balanceOf(address(0xBEEF)), 0); - - vm.expectRevert("NOT_MINTED"); - token.ownerOf(1337); - } - - function testApprove() public { - token.mint(address(this), 1337); - - token.approve(address(0xBEEF), 1337); - - assertEq(token.getApproved(1337), address(0xBEEF)); - } - - function testApproveBurn() public { - token.mint(address(this), 1337); - - token.approve(address(0xBEEF), 1337); - - token.burn(1337); - - assertEq(token.balanceOf(address(this)), 0); - assertEq(token.getApproved(1337), address(0)); - - vm.expectRevert("NOT_MINTED"); - token.ownerOf(1337); - } - - function testApproveAll() public { - token.setApprovalForAll(address(0xBEEF), true); - - assertTrue(token.isApprovedForAll(address(this), address(0xBEEF))); - } - - function testTransferFrom() public { - address from = address(0xABCD); - - token.mint(from, 1337); - - vm.prank(from); - token.approve(address(this), 1337); - - token.transferFrom(from, address(0xBEEF), 1337); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(0xBEEF)); - assertEq(token.balanceOf(address(0xBEEF)), 1); - assertEq(token.balanceOf(from), 0); - } - - function testTransferFromSelf() public { - token.mint(address(this), 1337); - - token.transferFrom(address(this), address(0xBEEF), 1337); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(0xBEEF)); - assertEq(token.balanceOf(address(0xBEEF)), 1); - assertEq(token.balanceOf(address(this)), 0); - } - - function testTransferFromApproveAll() public { - address from = address(0xABCD); - - token.mint(from, 1337); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.transferFrom(from, address(0xBEEF), 1337); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(0xBEEF)); - assertEq(token.balanceOf(address(0xBEEF)), 1); - assertEq(token.balanceOf(from), 0); - } - - function testSafeTransferFromToEOA() public { - address from = address(0xABCD); - - token.mint(from, 1337); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, address(0xBEEF), 1337); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(0xBEEF)); - assertEq(token.balanceOf(address(0xBEEF)), 1); - assertEq(token.balanceOf(from), 0); - } - - function testSafeTransferFromToERC721Recipient() public { - address from = address(0xABCD); - ERC721Recipient recipient = new ERC721Recipient(); - - token.mint(from, 1337); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, address(recipient), 1337); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(recipient)); - assertEq(token.balanceOf(address(recipient)), 1); - assertEq(token.balanceOf(from), 0); - - assertEq(recipient.operator(), address(this)); - assertEq(recipient.from(), from); - assertEq(recipient.id(), 1337); - assertEq(recipient.data(), ""); - } - - function testSafeTransferFromToERC721RecipientWithData() public { - address from = address(0xABCD); - ERC721Recipient recipient = new ERC721Recipient(); - - token.mint(from, 1337); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, address(recipient), 1337, "testing 123"); - - assertEq(token.getApproved(1337), address(0)); - assertEq(token.ownerOf(1337), address(recipient)); - assertEq(token.balanceOf(address(recipient)), 1); - assertEq(token.balanceOf(from), 0); - - assertEq(recipient.operator(), address(this)); - assertEq(recipient.from(), from); - assertEq(recipient.id(), 1337); - assertEq(recipient.data(), "testing 123"); - } - - function testSafeMintToEOA() public { - token.safeMint(address(0xBEEF), 1337); - - assertEq(token.ownerOf(1337), address(address(0xBEEF))); - assertEq(token.balanceOf(address(address(0xBEEF))), 1); - } - - function testSafeMintToERC721Recipient() public { - ERC721Recipient to = new ERC721Recipient(); - - token.safeMint(address(to), 1337); - - assertEq(token.ownerOf(1337), address(to)); - assertEq(token.balanceOf(address(to)), 1); - - assertEq(to.operator(), address(this)); - assertEq(to.from(), address(0)); - assertEq(to.id(), 1337); - assertEq(to.data(), ""); - } - - function testSafeMintToERC721RecipientWithData() public { - ERC721Recipient to = new ERC721Recipient(); - - token.safeMint(address(to), 1337, "testing 123"); - - assertEq(token.ownerOf(1337), address(to)); - assertEq(token.balanceOf(address(to)), 1); - - assertEq(to.operator(), address(this)); - assertEq(to.from(), address(0)); - assertEq(to.id(), 1337); - assertEq(to.data(), "testing 123"); - } - - function testFailMintToZero() public { - token.mint(address(0), 1337); - } - - function testFailDoubleMint() public { - token.mint(address(0xBEEF), 1337); - token.mint(address(0xBEEF), 1337); - } - - function testFailBurnUnMinted() public { - token.burn(1337); - } - - function testFailDoubleBurn() public { - token.mint(address(0xBEEF), 1337); - - token.burn(1337); - token.burn(1337); - } - - function testFailApproveUnMinted() public { - token.approve(address(0xBEEF), 1337); - } - - function testFailApproveUnAuthorized() public { - token.mint(address(0xCAFE), 1337); - - token.approve(address(0xBEEF), 1337); - } - - function testFailTransferFromUnOwned() public { - token.transferFrom(address(0xFEED), address(0xBEEF), 1337); - } - - function testFailTransferFromWrongFrom() public { - token.mint(address(0xCAFE), 1337); - - token.transferFrom(address(0xFEED), address(0xBEEF), 1337); - } - - function testFailTransferFromToZero() public { - token.mint(address(this), 1337); - - token.transferFrom(address(this), address(0), 1337); - } - - function testFailTransferFromNotOwner() public { - token.mint(address(0xFEED), 1337); - - token.transferFrom(address(0xFEED), address(0xBEEF), 1337); - } - - function testFailSafeTransferFromToNonERC721Recipient() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new NonERC721Recipient()), 1337); - } - - function testFailSafeTransferFromToNonERC721RecipientWithData() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new NonERC721Recipient()), 1337, "testing 123"); - } - - function testFailSafeTransferFromToRevertingERC721Recipient() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), 1337); - } - - function testFailSafeTransferFromToRevertingERC721RecipientWithData() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), 1337, "testing 123"); - } - - function testFailSafeTransferFromToERC721RecipientWithWrongReturnData() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), 1337); - } - - function testFailSafeTransferFromToERC721RecipientWithWrongReturnDataWithData() public { - token.mint(address(this), 1337); - - token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), 1337, "testing 123"); - } - - function testFailSafeMintToNonERC721Recipient() public { - token.safeMint(address(new NonERC721Recipient()), 1337); - } - - function testFailSafeMintToNonERC721RecipientWithData() public { - token.safeMint(address(new NonERC721Recipient()), 1337, "testing 123"); - } - - function testFailSafeMintToRevertingERC721Recipient() public { - token.safeMint(address(new RevertingERC721Recipient()), 1337); - } - - function testFailSafeMintToRevertingERC721RecipientWithData() public { - token.safeMint(address(new RevertingERC721Recipient()), 1337, "testing 123"); - } - - function testFailSafeMintToERC721RecipientWithWrongReturnData() public { - token.safeMint(address(new WrongReturnDataERC721Recipient()), 1337); - } - - function testFailSafeMintToERC721RecipientWithWrongReturnDataWithData() public { - token.safeMint(address(new WrongReturnDataERC721Recipient()), 1337, "testing 123"); - } - - function testFailBalanceOfZeroAddress() public view { - token.balanceOf(address(0)); - } - - function testFailOwnerOfUnminted() public view { - token.ownerOf(1337); - } - - function testMetadata(string memory name, string memory symbol) public { - MockERC721 tkn = new Token_ERC721(name, symbol); - - assertEq(tkn.name(), name); - assertEq(tkn.symbol(), symbol); - } - - function testMint(address to, uint256 id) public { - if (to == address(0)) to = address(0xBEEF); - - token.mint(to, id); - - assertEq(token.balanceOf(to), 1); - assertEq(token.ownerOf(id), to); - } - - function testBurn(address to, uint256 id) public { - if (to == address(0)) to = address(0xBEEF); - - token.mint(to, id); - token.burn(id); - - assertEq(token.balanceOf(to), 0); - - vm.expectRevert("NOT_MINTED"); - token.ownerOf(id); - } - - function testApprove(address to, uint256 id) public { - if (to == address(0)) to = address(0xBEEF); - - token.mint(address(this), id); - - token.approve(to, id); - - assertEq(token.getApproved(id), to); - } - - function testApproveBurn(address to, uint256 id) public { - token.mint(address(this), id); - - token.approve(address(to), id); - - token.burn(id); - - assertEq(token.balanceOf(address(this)), 0); - assertEq(token.getApproved(id), address(0)); - - vm.expectRevert("NOT_MINTED"); - token.ownerOf(id); - } - - function testApproveAll(address to, bool approved) public { - token.setApprovalForAll(to, approved); - - assertEq(token.isApprovedForAll(address(this), to), approved); - } - - function testTransferFrom(uint256 id, address to) public { - address from = address(0xABCD); - - if (to == address(0) || to == from) to = address(0xBEEF); - - token.mint(from, id); - - vm.prank(from); - token.approve(address(this), id); - - token.transferFrom(from, to, id); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), to); - assertEq(token.balanceOf(to), 1); - assertEq(token.balanceOf(from), 0); - } - - function testTransferFromSelf(uint256 id, address to) public { - if (to == address(0) || to == address(this)) to = address(0xBEEF); - - token.mint(address(this), id); - - token.transferFrom(address(this), to, id); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), to); - assertEq(token.balanceOf(to), 1); - assertEq(token.balanceOf(address(this)), 0); - } - - function testTransferFromApproveAll(uint256 id, address to) public { - address from = address(0xABCD); - - if (to == address(0) || to == from) to = address(0xBEEF); - - token.mint(from, id); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.transferFrom(from, to, id); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), to); - assertEq(token.balanceOf(to), 1); - assertEq(token.balanceOf(from), 0); - } - - function testSafeTransferFromToEOA(uint256 id, address to) public { - address from = address(0xABCD); - - if (to == address(0) || to == from) to = address(0xBEEF); - - if (uint256(uint160(to)) <= 18 || to.code.length > 0) return; - - token.mint(from, id); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, to, id); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), to); - assertEq(token.balanceOf(to), 1); - assertEq(token.balanceOf(from), 0); - } - - function testSafeTransferFromToERC721Recipient(uint256 id) public { - address from = address(0xABCD); - - ERC721Recipient recipient = new ERC721Recipient(); - - token.mint(from, id); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, address(recipient), id); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), address(recipient)); - assertEq(token.balanceOf(address(recipient)), 1); - assertEq(token.balanceOf(from), 0); - - assertEq(recipient.operator(), address(this)); - assertEq(recipient.from(), from); - assertEq(recipient.id(), id); - assertEq(recipient.data(), ""); - } - - function testSafeTransferFromToERC721RecipientWithData(uint256 id, bytes calldata data) public { - address from = address(0xABCD); - ERC721Recipient recipient = new ERC721Recipient(); - - token.mint(from, id); - - vm.prank(from); - token.setApprovalForAll(address(this), true); - - token.safeTransferFrom(from, address(recipient), id, data); - - assertEq(token.getApproved(id), address(0)); - assertEq(token.ownerOf(id), address(recipient)); - assertEq(token.balanceOf(address(recipient)), 1); - assertEq(token.balanceOf(from), 0); - - assertEq(recipient.operator(), address(this)); - assertEq(recipient.from(), from); - assertEq(recipient.id(), id); - assertEq(recipient.data(), data); - } - - function testSafeMintToEOA(uint256 id, address to) public { - if (to == address(0)) to = address(0xBEEF); - - if (uint256(uint160(to)) <= 18 || to.code.length > 0) return; - - token.safeMint(to, id); - - assertEq(token.ownerOf(id), address(to)); - assertEq(token.balanceOf(address(to)), 1); - } - - function testSafeMintToERC721Recipient(uint256 id) public { - ERC721Recipient to = new ERC721Recipient(); - - token.safeMint(address(to), id); - - assertEq(token.ownerOf(id), address(to)); - assertEq(token.balanceOf(address(to)), 1); - - assertEq(to.operator(), address(this)); - assertEq(to.from(), address(0)); - assertEq(to.id(), id); - assertEq(to.data(), ""); - } - - function testSafeMintToERC721RecipientWithData(uint256 id, bytes calldata data) public { - ERC721Recipient to = new ERC721Recipient(); - - token.safeMint(address(to), id, data); - - assertEq(token.ownerOf(id), address(to)); - assertEq(token.balanceOf(address(to)), 1); - - assertEq(to.operator(), address(this)); - assertEq(to.from(), address(0)); - assertEq(to.id(), id); - assertEq(to.data(), data); - } - - function testFailMintToZero(uint256 id) public { - token.mint(address(0), id); - } - - function testFailDoubleMint(uint256 id, address to) public { - if (to == address(0)) to = address(0xBEEF); - - token.mint(to, id); - token.mint(to, id); - } - - function testFailBurnUnMinted(uint256 id) public { - token.burn(id); - } - - function testFailDoubleBurn(uint256 id, address to) public { - if (to == address(0)) to = address(0xBEEF); - - token.mint(to, id); - - token.burn(id); - token.burn(id); - } - - function testFailApproveUnMinted(uint256 id, address to) public { - token.approve(to, id); - } - - function testFailApproveUnAuthorized(address owner, uint256 id, address to) public { - if (owner == address(0) || owner == address(this)) owner = address(0xBEEF); - - token.mint(owner, id); - - token.approve(to, id); - } - - function testFailTransferFromUnOwned(address from, address to, uint256 id) public { - token.transferFrom(from, to, id); - } - - function testFailTransferFromWrongFrom(address owner, address from, address to, uint256 id) public { - if (owner == address(0)) to = address(0xBEEF); - if (from == owner) revert(); - - token.mint(owner, id); - - token.transferFrom(from, to, id); - } - - function testFailTransferFromToZero(uint256 id) public { - token.mint(address(this), id); - - token.transferFrom(address(this), address(0), id); - } - - function testFailTransferFromNotOwner(address from, address to, uint256 id) public { - if (from == address(this)) from = address(0xBEEF); - - token.mint(from, id); - - token.transferFrom(from, to, id); - } - - function testFailSafeTransferFromToNonERC721Recipient(uint256 id) public { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new NonERC721Recipient()), id); - } - - function testFailSafeTransferFromToNonERC721RecipientWithData(uint256 id, bytes calldata data) public { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new NonERC721Recipient()), id, data); - } - - function testFailSafeTransferFromToRevertingERC721Recipient(uint256 id) public { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), id); - } - - function testFailSafeTransferFromToRevertingERC721RecipientWithData(uint256 id, bytes calldata data) public { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new RevertingERC721Recipient()), id, data); - } - - function testFailSafeTransferFromToERC721RecipientWithWrongReturnData(uint256 id) public { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), id); - } - - function testFailSafeTransferFromToERC721RecipientWithWrongReturnDataWithData(uint256 id, bytes calldata data) - public - { - token.mint(address(this), id); - - token.safeTransferFrom(address(this), address(new WrongReturnDataERC721Recipient()), id, data); - } - - function testFailSafeMintToNonERC721Recipient(uint256 id) public { - token.safeMint(address(new NonERC721Recipient()), id); - } - - function testFailSafeMintToNonERC721RecipientWithData(uint256 id, bytes calldata data) public { - token.safeMint(address(new NonERC721Recipient()), id, data); - } - - function testFailSafeMintToRevertingERC721Recipient(uint256 id) public { - token.safeMint(address(new RevertingERC721Recipient()), id); - } - - function testFailSafeMintToRevertingERC721RecipientWithData(uint256 id, bytes calldata data) public { - token.safeMint(address(new RevertingERC721Recipient()), id, data); - } - - function testFailSafeMintToERC721RecipientWithWrongReturnData(uint256 id) public { - token.safeMint(address(new WrongReturnDataERC721Recipient()), id); - } - - function testFailSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256 id, bytes calldata data) public { - token.safeMint(address(new WrongReturnDataERC721Recipient()), id, data); - } - - function testFailOwnerOfUnminted(uint256 id) public view { - token.ownerOf(id); - } -} diff --git a/v2/package-lock.json b/v2/package-lock.json new file mode 100644 index 00000000..abfaa045 --- /dev/null +++ b/v2/package-lock.json @@ -0,0 +1,29 @@ +{ + "name": "v2", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "v2", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "ds-test": "github:dapphub/ds-test", + "forge-std": "github:foundry-rs/forge-std" + } + }, + "node_modules/ds-test": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0", + "dev": true, + "license": "GPL-3.0" + }, + "node_modules/forge-std": { + "version": "1.9.1", + "resolved": "git+ssh://git@github.com/foundry-rs/forge-std.git#c28115db8d90ebffb41953cf83aac63130f4bd40", + "dev": true, + "license": "(Apache-2.0 OR MIT)" + } + } +} diff --git a/v2/package.json b/v2/package.json new file mode 100644 index 00000000..ccff6f54 --- /dev/null +++ b/v2/package.json @@ -0,0 +1,19 @@ +{ + "name": "v2", + "version": "1.0.0", + "description": "**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**", + "main": "index.js", + "directories": { + "lib": "lib", + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "devDependencies": { + "ds-test": "github:dapphub/ds-test", + "forge-std": "github:foundry-rs/forge-std" + }, + "author": "", + "license": "ISC" +} From 99aaebbeb4bfa9b94e2825bf4335e917b3cee6e0 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 19:56:45 +0200 Subject: [PATCH 12/60] moving files --- v2/foundry.toml | 2 + v2/package-lock.json | 17 + v2/package.json | 6 +- v2/src/evm/ERC20CustodyNew.sol | 66 ++++ v2/src/evm/GatewayEVM.sol | 223 +++++++++++ v2/src/evm/GatewayEVMUpgradeTest.sol | 207 ++++++++++ v2/src/evm/IERC20CustodyNew.sol | 13 + v2/src/evm/IGatewayEVM.sol | 44 +++ v2/src/evm/IReceiverEVM.sol | 10 + v2/src/evm/IZetaConnector.sol | 8 + v2/src/evm/IZetaNonEthNew.sol | 13 + v2/src/evm/ReceiverEVM.sol | 54 +++ v2/src/evm/TestERC20.sol | 13 + v2/src/evm/ZetaConnectorNative.sol | 47 +++ v2/src/evm/ZetaConnectorNewBase.sol | 45 +++ v2/src/evm/ZetaConnectorNonNative.sol | 45 +++ v2/test/evm/GatewayEVM.t.sol | 538 ++++++++++++++++++++++++++ v2/test/evm/GatewayEVMUpgrade.t.sol | 94 +++++ 18 files changed, 1444 insertions(+), 1 deletion(-) create mode 100644 v2/src/evm/ERC20CustodyNew.sol create mode 100644 v2/src/evm/GatewayEVM.sol create mode 100644 v2/src/evm/GatewayEVMUpgradeTest.sol create mode 100644 v2/src/evm/IERC20CustodyNew.sol create mode 100644 v2/src/evm/IGatewayEVM.sol create mode 100644 v2/src/evm/IReceiverEVM.sol create mode 100644 v2/src/evm/IZetaConnector.sol create mode 100644 v2/src/evm/IZetaNonEthNew.sol create mode 100644 v2/src/evm/ReceiverEVM.sol create mode 100644 v2/src/evm/TestERC20.sol create mode 100644 v2/src/evm/ZetaConnectorNative.sol create mode 100644 v2/src/evm/ZetaConnectorNewBase.sol create mode 100644 v2/src/evm/ZetaConnectorNonNative.sol create mode 100644 v2/test/evm/GatewayEVM.t.sol create mode 100644 v2/test/evm/GatewayEVMUpgrade.t.sol diff --git a/v2/foundry.toml b/v2/foundry.toml index d4beb9ba..fd91cd00 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -8,6 +8,8 @@ remappings = [ "ds-test/=node_modules/ds-test/src", "src/=src", "test/=test", + "@openzeppelin/=node_modules/@openzeppelin/", + "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/" ] fs_permissions = [ diff --git a/v2/package-lock.json b/v2/package-lock.json index abfaa045..45352184 100644 --- a/v2/package-lock.json +++ b/v2/package-lock.json @@ -8,11 +8,28 @@ "name": "v2", "version": "1.0.0", "license": "ISC", + "dependencies": { + "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts-upgradeable": "^5.0.2" + }, "devDependencies": { "ds-test": "github:dapphub/ds-test", "forge-std": "github:foundry-rs/forge-std" } }, + "node_modules/@openzeppelin/contracts": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" + }, + "node_modules/@openzeppelin/contracts-upgradeable": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.0.2.tgz", + "integrity": "sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==", + "peerDependencies": { + "@openzeppelin/contracts": "5.0.2" + } + }, "node_modules/ds-test": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0", diff --git a/v2/package.json b/v2/package.json index ccff6f54..24129ae5 100644 --- a/v2/package.json +++ b/v2/package.json @@ -15,5 +15,9 @@ "forge-std": "github:foundry-rs/forge-std" }, "author": "", - "license": "ISC" + "license": "ISC", + "dependencies": { + "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts-upgradeable": "^5.0.2" + } } diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol new file mode 100644 index 00000000..07b1bbf3 --- /dev/null +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +import "./IGatewayEVM.sol"; +import "./IERC20CustodyNew.sol"; + +// As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain +// This version include a functionality allowing to call a contract +// ERC20Custody doesn't call smart contract directly, it passes through the Gateway contract +contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, ReentrancyGuard { + using SafeERC20 for IERC20; + + IGatewayEVM public gateway; + address public tssAddress; + + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + constructor(address _gateway, address _tssAddress) { + if (_gateway == address(0) || _tssAddress == address(0)) { + revert ZeroAddress(); + } + gateway = IGatewayEVM(_gateway); + tssAddress = _tssAddress; + } + + // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract call + function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { + IERC20(token).safeTransfer(to, amount); + + emit Withdraw(token, to, amount); + } + + // WithdrawAndCall is called by TSS address, it transfers the tokens and call a contract + // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract + function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + // Transfer the tokens to the Gateway contract + IERC20(token).safeTransfer(address(gateway), amount); + + // Forward the call to the Gateway contract + gateway.executeWithERC20(token, to, amount, data); + + emit WithdrawAndCall(token, to, amount, data); + } + + // WithdrawAndRevert is called by TSS address, it transfers the tokens and call a contract + // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract + function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + // Transfer the tokens to the Gateway contract + IERC20(token).safeTransfer(address(gateway), amount); + + // Forward the call to the Gateway contract + gateway.revertWithERC20(token, to, amount, data); + + emit WithdrawAndRevert(token, to, amount, data); + } +} \ No newline at end of file diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol new file mode 100644 index 00000000..89c27fde --- /dev/null +++ b/v2/src/evm/GatewayEVM.sol @@ -0,0 +1,223 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "./IGatewayEVM.sol"; +import "./ZetaConnectorNewBase.sol"; + +/** + * @title GatewayEVM + * @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. + * @dev The contract doesn't hold any funds and should never have active allowances. + */ +contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { + using SafeERC20 for IERC20; + + /// @notice The address of the custody contract. + address public custody; + /// @notice The address of the TSS (Threshold Signature Scheme) contract. + address public tssAddress; + /// @notice The address of the ZetaConnector contract. + address public zetaConnector; + /// @notice The address of the Zeta token contract. + address public zetaToken; + + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + // @dev Only custody address allowed modifier. + modifier onlyCustodyOrConnector() { + if (msg.sender != custody && msg.sender != zetaConnector) { + revert InvalidSender(); + } + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize(address _tssAddress, address _zetaToken) public initializer { + if (_tssAddress == address(0) || _zetaToken == address(0)) { + revert ZeroAddress(); + } + + __Ownable_init(msg.sender); + __UUPSUpgradeable_init(); + __ReentrancyGuard_init(); + + tssAddress = _tssAddress; + zetaToken = _zetaToken; + } + + function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + + function _execute(address destination, bytes calldata data) internal returns (bytes memory) { + (bool success, bytes memory result) = destination.call{value: msg.value}(data); + if (!success) revert ExecutionFailed(); + + return result; + } + + // Called by the TSS + // Calling onRevert directly + function executeRevert(address destination, bytes calldata data) public payable onlyTSS { + (bool success, bytes memory result) = destination.call{value: msg.value}(""); + if (!success) revert ExecutionFailed(); + Revertable(destination).onRevert(data); + + emit Reverted(destination, msg.value, data); + } + + // Called by the TSS + // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 + // It can be also used for contract call without asset movement + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + bytes memory result = _execute(destination, data); + + emit Executed(destination, msg.value, data); + + return result; + } + + // Called by the ERC20Custody contract + // It call a function using ERC20 transfer + // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system + // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes + function executeWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) public nonReentrant onlyCustodyOrConnector { + if (amount == 0) revert InsufficientERC20Amount(); + // Approve the target contract to spend the tokens + if(!resetApproval(token, to)) revert ApprovalFailed(); + if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); + // Execute the call on the target contract + bytes memory result = _execute(to, data); + + // Reset approval + if(!resetApproval(token, to)) revert ApprovalFailed(); + + // Transfer any remaining tokens back to the custody/connector contract + uint256 remainingBalance = IERC20(token).balanceOf(address(this)); + if (remainingBalance > 0) { + transferToAssetHandler(token, remainingBalance); + } + + emit ExecutedWithERC20(token, to, amount, data); + } + + // Called by the ERC20Custody contract + // Directly transfers ERC20 and calls onRevert + function revertWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) external nonReentrant onlyCustodyOrConnector { + if (amount == 0) revert InsufficientERC20Amount(); + + IERC20(token).safeTransfer(address(to), amount); + Revertable(to).onRevert(data); + + emit RevertedWithERC20(token, to, amount, data); + } + + // Deposit ETH to tss + function deposit(address receiver) external payable { + if (msg.value == 0) revert InsufficientETHAmount(); + (bool deposited, ) = tssAddress.call{value: msg.value}(""); + + if (deposited == false) revert DepositFailed(); + + emit Deposit(msg.sender, receiver, msg.value, address(0), ""); + } + + // Deposit ERC20 tokens to custody/connector + function deposit(address receiver, uint256 amount, address asset) external { + if (amount == 0) revert InsufficientERC20Amount(); + + transferFromToAssetHandler(msg.sender, asset, amount); + + emit Deposit(msg.sender, receiver, amount, asset, ""); + } + + // Deposit ETH to tss and call an omnichain smart contract + function depositAndCall(address receiver, bytes calldata payload) external payable { + if (msg.value == 0) revert InsufficientETHAmount(); + (bool deposited, ) = tssAddress.call{value: msg.value}(""); + + if (deposited == false) revert DepositFailed(); + + emit Deposit(msg.sender, receiver, msg.value, address(0), payload); + } + + // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract + function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { + if (amount == 0) revert InsufficientERC20Amount(); + + transferFromToAssetHandler(msg.sender, asset, amount); + + emit Deposit(msg.sender, receiver, amount, asset, payload); + } + + // Call an omnichain smart contract without asset transfer + function call(address receiver, bytes calldata payload) external { + emit Call(msg.sender, receiver, payload); + } + + function setCustody(address _custody) external onlyTSS { + if (custody != address(0)) revert CustodyInitialized(); + if (_custody == address(0)) revert ZeroAddress(); + + custody = _custody; + } + + function setConnector(address _zetaConnector) external onlyTSS { + if (zetaConnector != address(0)) revert CustodyInitialized(); + if (_zetaConnector == address(0)) revert ZeroAddress(); + + zetaConnector = _zetaConnector; + } + + function resetApproval(address token, address to) private returns (bool) { + return IERC20(token).approve(to, 0); + } + + function transferFromToAssetHandler(address from, address token, uint256 amount) private { + if (token == zetaToken) { // transfer to connector + // transfer amount to gateway + IERC20(token).safeTransferFrom(from, address(this), amount); + // approve connector to handle tokens depending on connector version (eg. lock or burn) + IERC20(token).approve(zetaConnector, amount); + // send tokens to connector + ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + } else { // transfer to custody + IERC20(token).safeTransferFrom(from, custody, amount); + } + } + + function transferToAssetHandler(address token, uint256 amount) private { + if (token == zetaToken) { // transfer to connector + // approve connector to handle tokens depending on connector version (eg. lock or burn) + IERC20(token).approve(zetaConnector, amount); + // send tokens to connector + ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + } else { // transfer to custody + IERC20(token).safeTransfer(custody, amount); + } + } +} diff --git a/v2/src/evm/GatewayEVMUpgradeTest.sol b/v2/src/evm/GatewayEVMUpgradeTest.sol new file mode 100644 index 00000000..1767651e --- /dev/null +++ b/v2/src/evm/GatewayEVMUpgradeTest.sol @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "./IGatewayEVM.sol"; +import "./ZetaConnectorNewBase.sol"; + +// NOTE: Purpose of this contract is to test upgrade process, the only difference should be name of Executed event +// The Gateway contract is the endpoint to call smart contracts on external chains +// The contract doesn't hold any funds and should never have active allowances +/// @custom:oz-upgrades-from GatewayEVM +contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { + using SafeERC20 for IERC20; + + /// @notice The address of the custody contract. + address public custody; + + /// @notice The address of the TSS (Threshold Signature Scheme) contract. + address public tssAddress; + /// @notice The address of the ZetaConnector contract. + address public zetaConnector; + /// @notice The address of the Zeta token contract. + address public zetaToken; + + event ExecutedV2(address indexed destination, uint256 value, bytes data); + + constructor() {} + + function initialize(address _tssAddress, address _zetaToken) public initializer { + if (_tssAddress == address(0) || _zetaToken == address(0)) { + revert ZeroAddress(); + } + + __Ownable_init(msg.sender); + __UUPSUpgradeable_init(); + __ReentrancyGuard_init(); + + tssAddress = _tssAddress; + zetaToken = _zetaToken; + } + + function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + + function _execute(address destination, bytes calldata data) internal returns (bytes memory) { + (bool success, bytes memory result) = destination.call{value: msg.value}(data); + if (!success) revert ExecutionFailed(); + + return result; + } + + // Called by the TSS + // Calling onRevert directly + function executeRevert(address destination, bytes calldata data) public payable { + (bool success, bytes memory result) = destination.call{value: msg.value}(""); + if (!success) revert ExecutionFailed(); + Revertable(destination).onRevert(data); + + emit Reverted(destination, msg.value, data); + } + + // Called by the TSS + // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 + // It can be also used for contract call without asset movement + function execute(address destination, bytes calldata data) external payable returns (bytes memory) { + bytes memory result = _execute(destination, data); + + emit ExecutedV2(destination, msg.value, data); + + return result; + } + + // Called by the ERC20Custody contract + // It call a function using ERC20 transfer + // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system + // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes + function executeWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) public nonReentrant { + if (amount == 0) revert InsufficientETHAmount(); + // Approve the target contract to spend the tokens + if(!resetApproval(token, to)) revert ApprovalFailed(); + if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); + + // Execute the call on the target contract + bytes memory result = _execute(to, data); + + // Reset approval + if(!resetApproval(token, to)) revert ApprovalFailed(); + + // Transfer any remaining tokens back to the custody/connector contract + uint256 remainingBalance = IERC20(token).balanceOf(address(this)); + if (remainingBalance > 0) { + transferToAssetHandler(token, amount); + } + + emit ExecutedWithERC20(token, to, amount, data); + } + + // Called by the ERC20Custody contract + // Directly transfers ERC20 and calls onRevert + function revertWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) external nonReentrant { + if (amount == 0) revert InsufficientERC20Amount(); + + IERC20(token).safeTransfer(address(to), amount); + Revertable(to).onRevert(data); + + emit RevertedWithERC20(token, to, amount, data); + } + + // Deposit ETH to tss + function deposit(address receiver) external payable { + if (msg.value == 0) revert InsufficientETHAmount(); + (bool deposited, ) = tssAddress.call{value: msg.value}(""); + + if (deposited == false) revert DepositFailed(); + + emit Deposit(msg.sender, receiver, msg.value, address(0), ""); + } + + // Deposit ERC20 tokens to custody/connector + function deposit(address receiver, uint256 amount, address asset) external { + if (amount == 0) revert InsufficientERC20Amount(); + + transferFromToAssetHandler(msg.sender, asset, amount); + + emit Deposit(msg.sender, receiver, amount, asset, ""); + } + + // Deposit ETH to tss and call an omnichain smart contract + function depositAndCall(address receiver, bytes calldata payload) external payable { + if (msg.value == 0) revert InsufficientETHAmount(); + (bool deposited, ) = tssAddress.call{value: msg.value}(""); + + if (deposited == false) revert DepositFailed(); + + emit Deposit(msg.sender, receiver, msg.value, address(0), payload); + } + + // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract + function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { + if (amount == 0) revert InsufficientERC20Amount(); + + transferFromToAssetHandler(msg.sender, asset, amount); + + emit Deposit(msg.sender, receiver, amount, asset, payload); + } + + // Call an omnichain smart contract without asset transfer + function call(address receiver, bytes calldata payload) external { + emit Call(msg.sender, receiver, payload); + } + + function setCustody(address _custody) external { + if (custody != address(0)) revert CustodyInitialized(); + if (_custody == address(0)) revert ZeroAddress(); + + custody = _custody; + } + + function setConnector(address _zetaConnector) external { + if (zetaConnector != address(0)) revert CustodyInitialized(); + if (_zetaConnector == address(0)) revert ZeroAddress(); + + zetaConnector = _zetaConnector; + } + + function resetApproval(address token, address to) private returns (bool) { + return IERC20(token).approve(to, 0); + } + + function transferFromToAssetHandler(address from, address token, uint256 amount) private { + if (token == zetaToken) { // transfer to connector + // transfer amount to gateway + IERC20(token).safeTransferFrom(from, address(this), amount); + // approve connector to handle tokens depending on connector version (eg. lock or burn) + IERC20(token).approve(zetaConnector, amount); + // send tokens to connector + ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + } else { // transfer to custody + IERC20(token).safeTransferFrom(from, custody, amount); + } + } + + function transferToAssetHandler(address token, uint256 amount) private { + if (token == zetaToken) { // transfer to connector + // approve connector to handle tokens depending on connector version (eg. lock or burn) + IERC20(token).approve(zetaConnector, amount); + // send tokens to connector + ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + } else { // transfer to custody + IERC20(token).safeTransfer(custody, amount); + } + } +} diff --git a/v2/src/evm/IERC20CustodyNew.sol b/v2/src/evm/IERC20CustodyNew.sol new file mode 100644 index 00000000..6648b227 --- /dev/null +++ b/v2/src/evm/IERC20CustodyNew.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IERC20CustodyNewEvents { + event Withdraw(address indexed token, address indexed to, uint256 amount); + event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); + event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); +} + +interface IERC20CustodyNewErrors { + error ZeroAddress(); + error InvalidSender(); +} \ No newline at end of file diff --git a/v2/src/evm/IGatewayEVM.sol b/v2/src/evm/IGatewayEVM.sol new file mode 100644 index 00000000..056d1edc --- /dev/null +++ b/v2/src/evm/IGatewayEVM.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IGatewayEVMEvents { + event Executed(address indexed destination, uint256 value, bytes data); + event Reverted(address indexed destination, uint256 value, bytes data); + event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); + event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); + event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload); + event Call(address indexed sender, address indexed receiver, bytes payload); +} + +interface IGatewayEVMErrors { + error ExecutionFailed(); + error DepositFailed(); + error InsufficientETHAmount(); + error InsufficientERC20Amount(); + error ZeroAddress(); + error ApprovalFailed(); + error CustodyInitialized(); + error InvalidSender(); +} + +interface IGatewayEVM { + function executeWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) external; + + function execute(address destination, bytes calldata data) external payable returns (bytes memory); + + function revertWithERC20( + address token, + address to, + uint256 amount, + bytes calldata data + ) external; +} + +interface Revertable { + function onRevert(bytes calldata data) external; +} diff --git a/v2/src/evm/IReceiverEVM.sol b/v2/src/evm/IReceiverEVM.sol new file mode 100644 index 00000000..2765af22 --- /dev/null +++ b/v2/src/evm/IReceiverEVM.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IReceiverEVMEvents { + event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag); + event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag); + event ReceivedERC20(address sender, uint256 amount, address token, address destination); + event ReceivedNoParams(address sender); + event ReceivedRevert(address sender, bytes data); +} diff --git a/v2/src/evm/IZetaConnector.sol b/v2/src/evm/IZetaConnector.sol new file mode 100644 index 00000000..b76a12f4 --- /dev/null +++ b/v2/src/evm/IZetaConnector.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IZetaConnectorEvents { + event Withdraw(address indexed to, uint256 amount); + event WithdrawAndCall(address indexed to, uint256 amount, bytes data); + event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); +} \ No newline at end of file diff --git a/v2/src/evm/IZetaNonEthNew.sol b/v2/src/evm/IZetaNonEthNew.sol new file mode 100644 index 00000000..1d4e92cb --- /dev/null +++ b/v2/src/evm/IZetaNonEthNew.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/** + * @dev IZetaNonEthNew is a mintable / burnable version of IERC20 + */ +interface IZetaNonEthNew is IERC20 { + function burnFrom(address account, uint256 amount) external; + + function mint(address mintee, uint256 value, bytes32 internalSendHash) external; +} \ No newline at end of file diff --git a/v2/src/evm/ReceiverEVM.sol b/v2/src/evm/ReceiverEVM.sol new file mode 100644 index 00000000..3f03b0f8 --- /dev/null +++ b/v2/src/evm/ReceiverEVM.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "./IReceiverEVM.sol"; + +// @notice This contract is used just for testing +contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { + using SafeERC20 for IERC20; + error ZeroAmount(); + + // Payable function + function receivePayable(string memory str, uint256 num, bool flag) external payable { + emit ReceivedPayable(msg.sender, msg.value, str, num, flag); + } + + // Non-payable function + function receiveNonPayable(string[] memory strs, uint256[] memory nums, bool flag) external { + emit ReceivedNonPayable(msg.sender, strs, nums, flag); + } + + // Function using IERC20 + function receiveERC20(uint256 amount, address token, address destination) external nonReentrant { + // Transfer tokens from the Gateway contract to the destination address + IERC20(token).safeTransferFrom(msg.sender, destination, amount); + + emit ReceivedERC20(msg.sender, amount, token, destination); + } + + // Function using IERC20 to partially transfer tokens + function receiveERC20Partial(uint256 amount, address token, address destination) external nonReentrant { + uint256 amountToSend = amount / 2; + if (amountToSend == 0) revert ZeroAmount(); + + IERC20(token).safeTransferFrom(msg.sender, destination, amountToSend); + + emit ReceivedERC20(msg.sender, amountToSend, token, destination); + } + + // Function without parameters + function receiveNoParams() external { + emit ReceivedNoParams(msg.sender); + } + + // onRevertCallback + function onRevert(bytes calldata data) external { + emit ReceivedRevert(msg.sender, data); + } + + receive() external payable {} + fallback() external payable {} +} \ No newline at end of file diff --git a/v2/src/evm/TestERC20.sol b/v2/src/evm/TestERC20.sol new file mode 100644 index 00000000..6ff45a73 --- /dev/null +++ b/v2/src/evm/TestERC20.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +// @notice This contract is used just for testing +contract TestERC20 is ERC20 { + constructor(string memory name, string memory symbol) ERC20(name, symbol) {} + + function mint(address to, uint256 amount) external { + _mint(to, amount); + } +} \ No newline at end of file diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol new file mode 100644 index 00000000..afdbcda5 --- /dev/null +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./ZetaConnectorNewBase.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +contract ZetaConnectorNative is ZetaConnectorNewBase { + using SafeERC20 for IERC20; + + constructor(address _gateway, address _zetaToken, address _tssAddress) + ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) + {} + + // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call + function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { + IERC20(zetaToken).safeTransfer(to, amount); + emit Withdraw(to, amount); + } + + // @dev withdrawAndCall is called by TSS address, it transfers zetaToken to the gateway and calls a contract + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // Transfer zetaToken to the Gateway contract + IERC20(zetaToken).safeTransfer(address(gateway), amount); + + // Forward the call to the Gateway contract + gateway.executeWithERC20(address(zetaToken), to, amount, data); + + emit WithdrawAndCall(to, amount, data); + } + + // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a contract + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // Transfer zetaToken to the Gateway contract + IERC20(zetaToken).safeTransfer(address(gateway), amount); + + // Forward the call to the Gateway contract + gateway.revertWithERC20(address(zetaToken), to, amount, data); + + emit WithdrawAndRevert(to, amount, data); + } + + // @dev receiveTokens handles token transfer back to connector + function receiveTokens(uint256 amount) external override { + IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), amount); + } +} diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol new file mode 100644 index 00000000..1fad5ad4 --- /dev/null +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +import "./IGatewayEVM.sol"; +import "./IZetaConnector.sol"; + +abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { + using SafeERC20 for IERC20; + + error ZeroAddress(); + error InvalidSender(); + + IGatewayEVM public immutable gateway; + address public immutable zetaToken; + address public tssAddress; + + // @dev Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + constructor(address _gateway, address _zetaToken, address _tssAddress) { + if (_gateway == address(0) || _zetaToken == address(0) || _tssAddress == address(0)) { + revert ZeroAddress(); + } + gateway = IGatewayEVM(_gateway); + zetaToken = _zetaToken; + tssAddress = _tssAddress; + } + + function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; + + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + + function receiveTokens(uint256 amount) external virtual; +} \ No newline at end of file diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol new file mode 100644 index 00000000..de9aa516 --- /dev/null +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./ZetaConnectorNewBase.sol"; +import "./IZetaNonEthNew.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; + +contract ZetaConnectorNonNative is ZetaConnectorNewBase { + constructor(address _gateway, address _zetaToken, address _tssAddress) + ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) + {} + + // @dev withdraw is called by TSS address, it mints zetaToken to the destination address + function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { + IZetaNonEthNew(zetaToken).mint(to, amount, internalSendHash); + emit Withdraw(to, amount); + } + + // @dev withdrawAndCall is called by TSS address, it mints zetaToken and calls a contract + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // Mint zetaToken to the Gateway contract + IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); + + // Forward the call to the Gateway contract + gateway.executeWithERC20(address(zetaToken), to, amount, data); + + emit WithdrawAndCall(to, amount, data); + } + + // @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a contract + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // Mint zetaToken to the Gateway contract + IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); + + // Forward the call to the Gateway contract + gateway.revertWithERC20(address(zetaToken), to, amount, data); + + emit WithdrawAndRevert(to, amount, data); + } + + // @dev receiveTokens handles token transfer and burn them + function receiveTokens(uint256 amount) external override { + IZetaNonEthNew(zetaToken).burnFrom(msg.sender, amount); + } +} diff --git a/v2/test/evm/GatewayEVM.t.sol b/v2/test/evm/GatewayEVM.t.sol new file mode 100644 index 00000000..b5623993 --- /dev/null +++ b/v2/test/evm/GatewayEVM.t.sol @@ -0,0 +1,538 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "src/evm/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "src/evm/TestERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +import "src/evm/IGatewayEVM.sol"; +import "src/evm/IERC20CustodyNew.sol"; +import "src/evm/IReceiverEVM.sol"; + +contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { + using SafeERC20 for IERC20; + + address proxy; + GatewayEVM gateway; + ReceiverEVM receiver; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + TestERC20 token; + TestERC20 zeta; + address owner; + address destination; + address tssAddress; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + token = new TestERC20("test", "TTK"); + zeta = new TestERC20("zeta", "ZETA"); + + proxy = address(new ERC1967Proxy( + address(new GatewayEVM()), + abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) + )); + gateway = GatewayEVM(proxy); + custody = new ERC20CustodyNew(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + receiver = new ReceiverEVM(); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); + + token.mint(owner, 1000000); + token.transfer(address(custody), 500000); + } + + function testForwardCallToReceiveNonPayable() public { + string[] memory str = new string[](1); + str[0] = "Hello, Foundry!"; + uint256[] memory num = new uint256[](1); + num[0] = 42; + bool flag = true; + + bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); + + vm.expectCall(address(receiver), 0, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNonPayable(address(gateway), str, num, flag); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Executed(address(receiver), 0, data); + vm.prank(tssAddress); + gateway.execute(address(receiver), data); + } + + function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() public { + string[] memory str = new string[](1); + str[0] = "Hello, Foundry!"; + uint256[] memory num = new uint256[](1); + num[0] = 42; + bool flag = true; + bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.execute(address(receiver), data); + } + + function testForwardCallToReceivePayable() public { + string memory str = "Hello, Foundry!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + assertEq(0, address(receiver).balance); + + bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); + + vm.expectCall(address(receiver), 1 ether, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedPayable(address(gateway), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Executed(address(receiver), 1 ether, data); + vm.prank(tssAddress); + gateway.execute{value: value}(address(receiver), data); + + assertEq(value, address(receiver).balance); + } + + function testForwardCallToReceiveNoParams() public { + bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + + vm.expectCall(address(receiver), 0, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNoParams(address(gateway)); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Executed(address(receiver), 0, data); + vm.prank(tssAddress); + gateway.execute(address(receiver), data); + } + + function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.executeWithERC20(address(token), destination, amount, data); + } + + function testRevertWithERC20FailsIfNotCustoryOrConnector() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.revertWithERC20(address(token), destination, amount, data); + } + + function testForwardCallToReceiveERC20ThroughCustody() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 balanceBefore = token.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeCustody = token.balanceOf(address(custody)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(token), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount, address(token), destination); + vm.expectEmit(true, true, true, true, address(custody)); + emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = token.balanceOf(destination); + assertEq(balanceAfter, amount); + + // Verify that the remaining tokens were refunded to the Custody contract + uint256 balanceAfterCustody = token.balanceOf(address(custody)); + assertEq(balanceAfterCustody, balanceBeforeCustody - amount); + + // Verify that the approval was reset + uint256 allowance = token.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = token.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + + function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() public { + uint256 amount = 0; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + + vm.prank(tssAddress); + vm.expectRevert(InsufficientERC20Amount.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + + function testForwardCallToReceiveERC20PartialThroughCustody() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + uint256 balanceBefore = token.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeCustody = token.balanceOf(address(custody)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(token), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount / 2, address(token), destination); + vm.expectEmit(true, true, true, true, address(custody)); + emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = token.balanceOf(destination); + assertEq(balanceAfter, amount / 2); + + // Verify that the remaining tokens were refunded to the Custody contract + uint256 balanceAfterCustody = token.balanceOf(address(custody)); + assertEq(balanceAfterCustody, balanceBeforeCustody - amount / 2); + + // Verify that the approval was reset + uint256 allowance = token.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = token.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + + function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() public { + uint256 amount = 0; + bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + + vm.prank(tssAddress); + vm.expectRevert(InsufficientERC20Amount.selector); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + } + + function testForwardCallToReceiveNoParamsThroughCustody() public { + uint256 amount = 100000; + bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + uint256 balanceBefore = token.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeCustody = token.balanceOf(address(custody)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(token), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNoParams(address(gateway)); + vm.expectEmit(true, true, true, true, address(custody)); + emit WithdrawAndCall(address(token), address(receiver), amount, data); + vm.prank(tssAddress); + custody.withdrawAndCall(address(token), address(receiver), amount, data); + + // Verify that the tokens were not transferred to the destination address + uint256 balanceAfter = token.balanceOf(destination); + assertEq(balanceAfter, 0); + + // Verify that the remaining tokens were refunded to the Custody contract + uint256 balanceAfterCustody = token.balanceOf(address(custody)); + assertEq(balanceAfterCustody, balanceBeforeCustody); + + // Verify that the approval was reset + uint256 allowance = token.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = token.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawThroughCustody() public { + uint256 amount = 100000; + uint256 balanceBefore = token.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeCustody = token.balanceOf(address(custody)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(destination), amount); + vm.expectCall(address(token), 0, transferData); + vm.expectEmit(true, true, true, true, address(custody)); + emit Withdraw(address(token), destination, amount); + vm.prank(tssAddress); + custody.withdraw(address(token), destination, amount); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = token.balanceOf(destination); + assertEq(balanceAfter, amount); + + // Verify that the tokens were substracted from custody + uint256 balanceAfterCustody = token.balanceOf(address(custody)); + assertEq(balanceAfterCustody, balanceBeforeCustody - amount); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = token.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdraw(address(token), destination, amount); + } + + function testWithdrawAndRevertThroughCustody() public { + uint256 amount = 100000; + bytes memory data = abi.encodePacked("hello"); + uint256 balanceBefore = token.balanceOf(address(receiver)); + assertEq(balanceBefore, 0); + uint256 balanceBeforeCustody = token.balanceOf(address(custody)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(token), 0, transferData); + // Verify that onRevert callback was called + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedRevert(address(gateway), data); + vm.expectEmit(true, true, true, true, address(gateway)); + emit RevertedWithERC20(address(token), address(receiver), amount, data); + vm.expectEmit(true, true, true, true, address(custody)); + emit WithdrawAndRevert(address(token), address(receiver), amount, data); + vm.prank(tssAddress); + custody.withdrawAndRevert(address(token), address(receiver), amount, data); + + // Verify that the tokens were transferred to the receiver address + uint256 balanceAfter = token.balanceOf(address(receiver)); + assertEq(balanceAfter, amount); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterCustody = token.balanceOf(address(custody)); + assertEq(balanceAfterCustody, balanceBeforeCustody - amount); + + // Verify that the approval was reset + uint256 allowance = token.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = token.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + custody.withdrawAndRevert(address(token), address(receiver), amount, data); + } + + function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() public { + uint256 amount = 0; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(tssAddress); + vm.expectRevert(InsufficientERC20Amount.selector); + custody.withdrawAndRevert(address(token), address(receiver), amount, data); + } + + function testExecuteRevert() public { + uint256 value = 1 ether; + bytes memory data = abi.encodePacked("hello"); + uint256 balanceBefore = address(receiver).balance; + assertEq(balanceBefore, 0); + + // Verify that onRevert callback was called + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedRevert(address(gateway), data); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Reverted(address(receiver), 1 ether, data); + vm.prank(tssAddress); + gateway.executeRevert{value: value}(address(receiver), data); + + // Verify that the tokens were transferred to the receiver address + uint256 balanceAfter = address(receiver).balance; + assertEq(balanceAfter, 1 ether); + } + + function testExecuteRevertFailsIfSenderIsNotTSS() public { + uint256 value = 1 ether; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + gateway.executeRevert{value: value}(address(receiver), data); + } +} + +contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { + using SafeERC20 for IERC20; + + GatewayEVM gateway; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + TestERC20 token; + TestERC20 zeta; + address owner; + address destination; + address tssAddress; + + uint256 ownerAmount = 1000000; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + token = new TestERC20("test", "TTK"); + zeta = new TestERC20("zeta", "ZETA"); + address proxy = address(new ERC1967Proxy( + address(new GatewayEVM()), + abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) + )); + gateway = GatewayEVM(proxy); + custody = new ERC20CustodyNew(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); + + token.mint(owner, ownerAmount); + } + + function testDepositERC20ToCustody() public { + uint256 amount = 100000; + uint256 custodyBalanceBefore = token.balanceOf(address(custody)); + assertEq(0, custodyBalanceBefore); + + token.approve(address(gateway), amount); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Deposit(owner, destination, amount, address(token), ""); + gateway.deposit(destination, amount, address(token)); + + uint256 custodyBalanceAfter = token.balanceOf(address(custody)); + assertEq(amount, custodyBalanceAfter); + + uint256 ownerAmountAfter = token.balanceOf(owner); + assertEq(ownerAmount - amount, ownerAmountAfter); + } + + function testFailDepositERC20ToCustodyIfAmountIs0() public { + uint256 amount = 0; + + token.approve(address(gateway), amount); + + vm.expectRevert("InsufficientERC20Amount"); + gateway.deposit(destination, amount, address(token)); + } + + function testDepositEthToTss() public { + uint256 amount = 100000; + uint256 tssBalanceBefore = tssAddress.balance; + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Deposit(owner, destination, amount, address(0), ""); + gateway.deposit{value: amount}(destination); + + uint256 tssBalanceAfter = tssAddress.balance; + assertEq(tssBalanceBefore + amount, tssBalanceAfter); + } + + function testFailDepositEthToTssIfAmountIs0() public { + uint256 amount = 0; + + vm.expectRevert("InsufficientETHAmount"); + gateway.deposit{value: amount}(destination); + } + + function testDepositERC20ToCustodyWithPayload() public { + uint256 amount = 100000; + uint256 custodyBalanceBefore = token.balanceOf(address(custody)); + assertEq(0, custodyBalanceBefore); + + bytes memory payload = abi.encodeWithSignature("hello(address)", destination); + + token.approve(address(gateway), amount); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Deposit(owner, destination, amount, address(token), payload); + gateway.depositAndCall(destination, amount, address(token), payload); + + uint256 custodyBalanceAfter = token.balanceOf(address(custody)); + assertEq(amount, custodyBalanceAfter); + + uint256 ownerAmountAfter = token.balanceOf(owner); + assertEq(ownerAmount - amount, ownerAmountAfter); + } + + function testFailDepositERC20ToCustodyWithPayloadIfAmountIs0() public { + uint256 amount = 0; + + bytes memory payload = abi.encodeWithSignature("hello(address)", destination); + + vm.expectRevert("InsufficientERC20Amount"); + gateway.depositAndCall(destination, amount, address(token), payload); + } + + function testDepositEthToTssWithPayload() public { + uint256 amount = 100000; + uint256 tssBalanceBefore = tssAddress.balance; + bytes memory payload = abi.encodeWithSignature("hello(address)", destination); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Deposit(owner, destination, amount, address(0), payload); + gateway.depositAndCall{value: amount}(destination, payload); + + uint256 tssBalanceAfter = tssAddress.balance; + assertEq(tssBalanceBefore + amount, tssBalanceAfter); + } + + function testFailDepositEthToTssWithPayloadIfAmountIs0() public { + uint256 amount = 0; + bytes memory payload = abi.encodeWithSignature("hello(address)", destination); + + vm.expectRevert("InsufficientETHAmount"); + gateway.depositAndCall{value: amount}(destination, payload); + } + + function testCallWithPayload() public { + bytes memory payload = abi.encodeWithSignature("hello(address)", destination); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Call(owner, destination, payload); + gateway.call(destination, payload); + } +} \ No newline at end of file diff --git a/v2/test/evm/GatewayEVMUpgrade.t.sol b/v2/test/evm/GatewayEVMUpgrade.t.sol new file mode 100644 index 00000000..953dd113 --- /dev/null +++ b/v2/test/evm/GatewayEVMUpgrade.t.sol @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "src/evm/GatewayEVMUpgradeTest.sol"; +import "src/evm/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "src/evm/TestERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import "src/evm/IGatewayEVM.sol"; +import "src/evm/IReceiverEVM.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; + +contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { + using SafeERC20 for IERC20; + event ExecutedV2(address indexed destination, uint256 value, bytes data); + + address proxy; + GatewayEVM gateway; + ReceiverEVM receiver; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + TestERC20 token; + TestERC20 zeta; + address owner; + address destination; + address tssAddress; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + token = new TestERC20("test", "TTK"); + zeta = new TestERC20("zeta", "ZETA"); + + proxy = address(new ERC1967Proxy( + address(new GatewayEVM()), + abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, zeta) + )); + gateway = GatewayEVM(proxy); + + custody = new ERC20CustodyNew(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + receiver = new ReceiverEVM(); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); + + token.mint(owner, 1000000); + token.transfer(address(custody), 500000); + } + + function testUpgradeAndForwardCallToReceivePayable() public { + address custodyBeforeUpgrade = gateway.custody(); + address tssBeforeUpgrade = gateway.tssAddress(); + + string memory str = "Hello, Foundry!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + vm.prank(owner); + Upgrades.upgradeProxy( + proxy, + "GatewayEVMUpgradeTest.sol", + "", + owner + ); + + bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); + GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); + + vm.expectCall(address(receiver), value, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedPayable(address(gateway), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gateway)); + emit ExecutedV2(address(receiver), value, data); + gateway.execute{value: value}(address(receiver), data); + + assertEq(custodyBeforeUpgrade, gateway.custody()); + assertEq(tssBeforeUpgrade, gateway.tssAddress()); + } +} \ No newline at end of file From 8e5b78f514a13933cd87b8ef7090fd8bf664c61e Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 20:08:31 +0200 Subject: [PATCH 13/60] moving files --- v2/foundry.toml | 16 ++- v2/package.json | 1 - v2/test/evm/GatewayEVM.t.sol | 9 +- v2/test/evm/GatewayEVMUpgrade.t.sol | 188 ++++++++++++++-------------- 4 files changed, 110 insertions(+), 104 deletions(-) diff --git a/v2/foundry.toml b/v2/foundry.toml index fd91cd00..00fa8ca7 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -1,7 +1,7 @@ [profile.default] src = "src" out = "out" -libs = ["node_modules"] +libs = ["node_modules", "lib"] remappings = [ "forge-std/=node_modules/forge-std/src", @@ -12,8 +12,14 @@ remappings = [ "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/" ] -fs_permissions = [ - { access = "read-write", path = "./script" }, -] +no-match-contract = '.*EchidnaTest$' +optimizer = true +optimizer_runs = 10_000 + +fs_permissions = [{ access = "read", path = "out"}] -allow_paths = ["../core"] \ No newline at end of file +ffi = true +ast = true +build_info = true +extra_output = ["storageLayout"] +evm_version = "london" \ No newline at end of file diff --git a/v2/package.json b/v2/package.json index 24129ae5..2f8ffaa3 100644 --- a/v2/package.json +++ b/v2/package.json @@ -11,7 +11,6 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { - "ds-test": "github:dapphub/ds-test", "forge-std": "github:foundry-rs/forge-std" }, "author": "", diff --git a/v2/test/evm/GatewayEVM.t.sol b/v2/test/evm/GatewayEVM.t.sol index b5623993..7f5baa27 100644 --- a/v2/test/evm/GatewayEVM.t.sol +++ b/v2/test/evm/GatewayEVM.t.sol @@ -40,10 +40,11 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver token = new TestERC20("test", "TTK"); zeta = new TestERC20("zeta", "ZETA"); - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); + address proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", + abi.encodeCall(GatewayEVM.initialize, ssAddress, address(zeta)) + ); + gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); diff --git a/v2/test/evm/GatewayEVMUpgrade.t.sol b/v2/test/evm/GatewayEVMUpgrade.t.sol index 953dd113..eacb0d0a 100644 --- a/v2/test/evm/GatewayEVMUpgrade.t.sol +++ b/v2/test/evm/GatewayEVMUpgrade.t.sol @@ -1,94 +1,94 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "src/evm/GatewayEVM.sol"; -import "src/evm/GatewayEVMUpgradeTest.sol"; -import "src/evm/ReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; -import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/TestERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import "src/evm/IGatewayEVM.sol"; -import "src/evm/IReceiverEVM.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { - using SafeERC20 for IERC20; - event ExecutedV2(address indexed destination, uint256 value, bytes data); - - address proxy; - GatewayEVM gateway; - ReceiverEVM receiver; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - TestERC20 token; - TestERC20 zeta; - address owner; - address destination; - address tssAddress; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - token = new TestERC20("test", "TTK"); - zeta = new TestERC20("zeta", "ZETA"); - - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, zeta) - )); - gateway = GatewayEVM(proxy); - - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); - receiver = new ReceiverEVM(); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); - } - - function testUpgradeAndForwardCallToReceivePayable() public { - address custodyBeforeUpgrade = gateway.custody(); - address tssBeforeUpgrade = gateway.tssAddress(); - - string memory str = "Hello, Foundry!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - vm.prank(owner); - Upgrades.upgradeProxy( - proxy, - "GatewayEVMUpgradeTest.sol", - "", - owner - ); - - bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); - - vm.expectCall(address(receiver), value, data); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedPayable(address(gateway), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gateway)); - emit ExecutedV2(address(receiver), value, data); - gateway.execute{value: value}(address(receiver), data); - - assertEq(custodyBeforeUpgrade, gateway.custody()); - assertEq(tssBeforeUpgrade, gateway.tssAddress()); - } -} \ No newline at end of file +// // SPDX-License-Identifier: MIT +// pragma solidity ^0.8.20; + +// import "forge-std/Test.sol"; +// import "forge-std/Vm.sol"; + +// import "src/evm/GatewayEVM.sol"; +// import "src/evm/GatewayEVMUpgradeTest.sol"; +// import "src/evm/ReceiverEVM.sol"; +// import "src/evm/ERC20CustodyNew.sol"; +// import "src/evm/ZetaConnectorNonNative.sol"; +// import "src/evm/TestERC20.sol"; +// import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +// import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +// import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +// import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +// import "src/evm/IGatewayEVM.sol"; +// import "src/evm/IReceiverEVM.sol"; + +// contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { +// using SafeERC20 for IERC20; +// event ExecutedV2(address indexed destination, uint256 value, bytes data); + +// address proxy; +// GatewayEVM gateway; +// ReceiverEVM receiver; +// ERC20CustodyNew custody; +// ZetaConnectorNonNative zetaConnector; +// TestERC20 token; +// TestERC20 zeta; +// address owner; +// address destination; +// address tssAddress; + +// function setUp() public { +// owner = address(this); +// destination = address(0x1234); +// tssAddress = address(0x5678); + +// token = new TestERC20("test", "TTK"); +// zeta = new TestERC20("zeta", "ZETA"); + +// proxy = address(new ERC1967Proxy( +// address(new GatewayEVM()), +// abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, zeta) +// )); +// gateway = GatewayEVM(proxy); + +// custody = new ERC20CustodyNew(address(gateway), tssAddress); +// zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); +// receiver = new ReceiverEVM(); + +// vm.deal(tssAddress, 1 ether); + +// vm.startPrank(tssAddress); +// gateway.setCustody(address(custody)); +// gateway.setConnector(address(zetaConnector)); +// vm.stopPrank(); + +// token.mint(owner, 1000000); +// token.transfer(address(custody), 500000); +// } + +// function testUpgradeAndForwardCallToReceivePayable() public { +// address custodyBeforeUpgrade = gateway.custody(); +// address tssBeforeUpgrade = gateway.tssAddress(); + +// string memory str = "Hello, Foundry!"; +// uint256 num = 42; +// bool flag = true; +// uint256 value = 1 ether; + +// vm.prank(owner); +// Upgrades.upgradeProxy( +// proxy, +// "GatewayEVMUpgradeTest.sol", +// "", +// owner +// ); + +// bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); +// GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); + +// vm.expectCall(address(receiver), value, data); +// vm.expectEmit(true, true, true, true, address(receiver)); +// emit ReceivedPayable(address(gateway), value, str, num, flag); +// vm.expectEmit(true, true, true, true, address(gateway)); +// emit ExecutedV2(address(receiver), value, data); +// gateway.execute{value: value}(address(receiver), data); + +// assertEq(custodyBeforeUpgrade, gateway.custody()); +// assertEq(tssBeforeUpgrade, gateway.tssAddress()); +// } +// } \ No newline at end of file From 2964b06dc1e9c27dfb26d0fe31f59a1549a13c54 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 20:28:53 +0200 Subject: [PATCH 14/60] move upgrade test --- .gitmodules | 3 + v2/lib/openzeppelin-foundry-upgrades | 1 + v2/test/evm/GatewayEVM.t.sol | 2 +- v2/test/evm/GatewayEVMUpgrade.t.sol | 188 +++++++++++++-------------- 4 files changed, 99 insertions(+), 95 deletions(-) create mode 160000 v2/lib/openzeppelin-foundry-upgrades diff --git a/.gitmodules b/.gitmodules index 7d79667c..a672ec5a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "lib/openzeppelin-foundry-upgrades"] path = lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades +[submodule "v2/lib/openzeppelin-foundry-upgrades"] + path = v2/lib/openzeppelin-foundry-upgrades + url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades diff --git a/v2/lib/openzeppelin-foundry-upgrades b/v2/lib/openzeppelin-foundry-upgrades new file mode 160000 index 00000000..4cd15fc5 --- /dev/null +++ b/v2/lib/openzeppelin-foundry-upgrades @@ -0,0 +1 @@ +Subproject commit 4cd15fc50b141c77d8cc9ff8efb44d00e841a299 diff --git a/v2/test/evm/GatewayEVM.t.sol b/v2/test/evm/GatewayEVM.t.sol index 7f5baa27..c7eb1005 100644 --- a/v2/test/evm/GatewayEVM.t.sol +++ b/v2/test/evm/GatewayEVM.t.sol @@ -42,7 +42,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver address proxy = Upgrades.deployUUPSProxy( "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, ssAddress, address(zeta)) + abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); diff --git a/v2/test/evm/GatewayEVMUpgrade.t.sol b/v2/test/evm/GatewayEVMUpgrade.t.sol index eacb0d0a..73625927 100644 --- a/v2/test/evm/GatewayEVMUpgrade.t.sol +++ b/v2/test/evm/GatewayEVMUpgrade.t.sol @@ -1,94 +1,94 @@ -// // SPDX-License-Identifier: MIT -// pragma solidity ^0.8.20; - -// import "forge-std/Test.sol"; -// import "forge-std/Vm.sol"; - -// import "src/evm/GatewayEVM.sol"; -// import "src/evm/GatewayEVMUpgradeTest.sol"; -// import "src/evm/ReceiverEVM.sol"; -// import "src/evm/ERC20CustodyNew.sol"; -// import "src/evm/ZetaConnectorNonNative.sol"; -// import "src/evm/TestERC20.sol"; -// import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -// import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -// import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -// import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; -// import "src/evm/IGatewayEVM.sol"; -// import "src/evm/IReceiverEVM.sol"; - -// contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { -// using SafeERC20 for IERC20; -// event ExecutedV2(address indexed destination, uint256 value, bytes data); - -// address proxy; -// GatewayEVM gateway; -// ReceiverEVM receiver; -// ERC20CustodyNew custody; -// ZetaConnectorNonNative zetaConnector; -// TestERC20 token; -// TestERC20 zeta; -// address owner; -// address destination; -// address tssAddress; - -// function setUp() public { -// owner = address(this); -// destination = address(0x1234); -// tssAddress = address(0x5678); - -// token = new TestERC20("test", "TTK"); -// zeta = new TestERC20("zeta", "ZETA"); - -// proxy = address(new ERC1967Proxy( -// address(new GatewayEVM()), -// abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, zeta) -// )); -// gateway = GatewayEVM(proxy); - -// custody = new ERC20CustodyNew(address(gateway), tssAddress); -// zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); -// receiver = new ReceiverEVM(); - -// vm.deal(tssAddress, 1 ether); - -// vm.startPrank(tssAddress); -// gateway.setCustody(address(custody)); -// gateway.setConnector(address(zetaConnector)); -// vm.stopPrank(); - -// token.mint(owner, 1000000); -// token.transfer(address(custody), 500000); -// } - -// function testUpgradeAndForwardCallToReceivePayable() public { -// address custodyBeforeUpgrade = gateway.custody(); -// address tssBeforeUpgrade = gateway.tssAddress(); - -// string memory str = "Hello, Foundry!"; -// uint256 num = 42; -// bool flag = true; -// uint256 value = 1 ether; - -// vm.prank(owner); -// Upgrades.upgradeProxy( -// proxy, -// "GatewayEVMUpgradeTest.sol", -// "", -// owner -// ); - -// bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); -// GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); - -// vm.expectCall(address(receiver), value, data); -// vm.expectEmit(true, true, true, true, address(receiver)); -// emit ReceivedPayable(address(gateway), value, str, num, flag); -// vm.expectEmit(true, true, true, true, address(gateway)); -// emit ExecutedV2(address(receiver), value, data); -// gateway.execute{value: value}(address(receiver), data); - -// assertEq(custodyBeforeUpgrade, gateway.custody()); -// assertEq(tssBeforeUpgrade, gateway.tssAddress()); -// } -// } \ No newline at end of file +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "src/evm/GatewayEVMUpgradeTest.sol"; +import "src/evm/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "src/evm/TestERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/IGatewayEVM.sol"; +import "src/evm/IReceiverEVM.sol"; + +contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { + using SafeERC20 for IERC20; + event ExecutedV2(address indexed destination, uint256 value, bytes data); + + address proxy; + GatewayEVM gateway; + ReceiverEVM receiver; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + TestERC20 token; + TestERC20 zeta; + address owner; + address destination; + address tssAddress; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + token = new TestERC20("test", "TTK"); + zeta = new TestERC20("zeta", "ZETA"); + + proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", + abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + ); + + gateway = GatewayEVM(proxy); + + custody = new ERC20CustodyNew(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + receiver = new ReceiverEVM(); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); + + token.mint(owner, 1000000); + token.transfer(address(custody), 500000); + } + + function testUpgradeAndForwardCallToReceivePayable() public { + address custodyBeforeUpgrade = gateway.custody(); + address tssBeforeUpgrade = gateway.tssAddress(); + + string memory str = "Hello, Foundry!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + Upgrades.upgradeProxy( + proxy, + "GatewayEVMUpgradeTest.sol", + "", + owner + ); + + bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); + GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); + + vm.expectCall(address(receiver), value, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedPayable(address(gateway), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gateway)); + emit ExecutedV2(address(receiver), value, data); + gateway.execute{value: value}(address(receiver), data); + + assertEq(custodyBeforeUpgrade, gateway.custody()); + assertEq(tssBeforeUpgrade, gateway.tssAddress()); + } +} \ No newline at end of file From 3eac2ca9b16784569fcdf11bc8662d59bbd20404 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 20:41:51 +0200 Subject: [PATCH 15/60] connector tests --- contracts/evm/Zeta.non-eth.sol | 2 +- contracts/evm/interfaces/ZetaErrors.sol | 2 +- contracts/evm/interfaces/ZetaInterfaces.sol | 2 +- .../evm/interfaces/ZetaNonEthInterface.sol | 2 +- v2/test/evm/GatewayEVM.t.sol | 6 +- v2/test/evm/GatewayEVMUpgrade.t.sol | 1 - v2/test/evm/ZetaConnectorNative.t.sol | 245 +++++++++++++++++ v2/test/evm/ZetaConnectorNonNative.t.sol | 250 ++++++++++++++++++ v2/test/utils/Zeta.non-eth.sol | 112 ++++++++ 9 files changed, 614 insertions(+), 8 deletions(-) create mode 100644 v2/test/evm/ZetaConnectorNative.t.sol create mode 100644 v2/test/evm/ZetaConnectorNonNative.t.sol create mode 100644 v2/test/utils/Zeta.non-eth.sol diff --git a/contracts/evm/Zeta.non-eth.sol b/contracts/evm/Zeta.non-eth.sol index 70b0bc81..13301812 100644 --- a/contracts/evm/Zeta.non-eth.sol +++ b/contracts/evm/Zeta.non-eth.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.7; +pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; diff --git a/contracts/evm/interfaces/ZetaErrors.sol b/contracts/evm/interfaces/ZetaErrors.sol index 88976a1f..3cc37828 100644 --- a/contracts/evm/interfaces/ZetaErrors.sol +++ b/contracts/evm/interfaces/ZetaErrors.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.7; +pragma solidity ^0.8.0; /** * @dev Common custom errors diff --git a/contracts/evm/interfaces/ZetaInterfaces.sol b/contracts/evm/interfaces/ZetaInterfaces.sol index a28a24f2..68b737ec 100644 --- a/contracts/evm/interfaces/ZetaInterfaces.sol +++ b/contracts/evm/interfaces/ZetaInterfaces.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.7; +pragma solidity ^0.8.0; interface ZetaInterfaces { /** diff --git a/contracts/evm/interfaces/ZetaNonEthInterface.sol b/contracts/evm/interfaces/ZetaNonEthInterface.sol index 164645cd..617e6ca1 100644 --- a/contracts/evm/interfaces/ZetaNonEthInterface.sol +++ b/contracts/evm/interfaces/ZetaNonEthInterface.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.7; +pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; diff --git a/v2/test/evm/GatewayEVM.t.sol b/v2/test/evm/GatewayEVM.t.sol index c7eb1005..647548af 100644 --- a/v2/test/evm/GatewayEVM.t.sol +++ b/v2/test/evm/GatewayEVM.t.sol @@ -12,7 +12,7 @@ import "src/evm/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "src/evm/IGatewayEVM.sol"; import "src/evm/IERC20CustodyNew.sol"; @@ -40,12 +40,12 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver token = new TestERC20("test", "TTK"); zeta = new TestERC20("zeta", "ZETA"); - address proxy = Upgrades.deployUUPSProxy( + proxy = Upgrades.deployUUPSProxy( "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); - gateway = GatewayEVM(proxy); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); diff --git a/v2/test/evm/GatewayEVMUpgrade.t.sol b/v2/test/evm/GatewayEVMUpgrade.t.sol index 73625927..b5eb85ae 100644 --- a/v2/test/evm/GatewayEVMUpgrade.t.sol +++ b/v2/test/evm/GatewayEVMUpgrade.t.sol @@ -44,7 +44,6 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); - gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); diff --git a/v2/test/evm/ZetaConnectorNative.t.sol b/v2/test/evm/ZetaConnectorNative.t.sol new file mode 100644 index 00000000..b1216967 --- /dev/null +++ b/v2/test/evm/ZetaConnectorNative.t.sol @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "src/evm/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNative.sol"; +import "src/evm/TestERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +import "src/evm/IGatewayEVM.sol"; +import "src/evm/IReceiverEVM.sol"; +import "src/evm/IZetaConnector.sol"; + +contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { + using SafeERC20 for IERC20; + + address proxy; + GatewayEVM gateway; + ReceiverEVM receiver; + ERC20CustodyNew custody; + ZetaConnectorNative zetaConnector; + TestERC20 zetaToken; + address owner; + address destination; + address tssAddress; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + zetaToken = new TestERC20("zeta", "ZETA"); + + proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", + abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) + ); + gateway = GatewayEVM(proxy); + + custody = new ERC20CustodyNew(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress); + + receiver = new ReceiverEVM(); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); + + zetaToken.mint(address(zetaConnector), 5000000); + } + + function testWithdraw() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + + bytes memory data = abi.encodeWithSignature("transfer(address,uint256)", destination, amount); + vm.expectCall(address(zetaToken), 0, data); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit Withdraw(destination, amount); + vm.prank(tssAddress); + zetaConnector.withdraw(destination, amount, internalSendHash); + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount); + } + + function testWithdrawFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdraw(destination, amount, internalSendHash); + } + + function testWithdrawAndCallReceiveERC20() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(zetaToken), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + } + + function testWithdrawAndCallReceiveNoParams() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(zetaToken), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNoParams(address(gateway)); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the no tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, 0); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndCallReceiveERC20Partial() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(zetaToken), 0, transferData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount / 2); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount / 2); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndRevert() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); + vm.expectCall(address(zetaToken), 0, transferData); + // Verify that onRevert callback was called + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedRevert(address(gateway), data); + vm.expectEmit(true, true, true, true, address(gateway)); + emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndRevert(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the receiver address + uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); + assertEq(balanceAfter, amount); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + uint256 amount = 100000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + } +} \ No newline at end of file diff --git a/v2/test/evm/ZetaConnectorNonNative.t.sol b/v2/test/evm/ZetaConnectorNonNative.t.sol new file mode 100644 index 00000000..cd840b6b --- /dev/null +++ b/v2/test/evm/ZetaConnectorNonNative.t.sol @@ -0,0 +1,250 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "src/evm/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "src/evm/TestERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +import "../utils/Zeta.non-eth.sol"; +import "src/evm/IGatewayEVM.sol"; +import "src/evm/IReceiverEVM.sol"; +import "src/evm/IZetaConnector.sol"; + +contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { + using SafeERC20 for IERC20; + + address proxy; + GatewayEVM gateway; + ReceiverEVM receiver; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + // ZetaNonEth zetaToken; + address owner; + address destination; + address tssAddress; + + function setUp() public { + owner = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + + // zetaToken = new ZetaNonEth(tssAddress, tssAddress); + + // proxy = Upgrades.deployUUPSProxy( + // "GatewayEVM.sol", + // abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + // ); + // gateway = GatewayEVM(proxy); + + // custody = new ERC20CustodyNew(address(gateway), tssAddress); + // zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); + + // vm.prank(tssAddress); + // zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); + + // receiver = new ReceiverEVM(); + + // vm.deal(tssAddress, 1 ether); + + // vm.startPrank(tssAddress); + // gateway.setCustody(address(custody)); + // gateway.setConnector(address(zetaConnector)); + // vm.stopPrank(); + } + + // function testWithdraw() public { + // uint256 amount = 100000; + // uint256 balanceBefore = zetaToken.balanceOf(destination); + // assertEq(balanceBefore, 0); + // bytes32 internalSendHash = ""; + + // bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, internalSendHash); + // vm.expectCall(address(zetaToken), 0, data); + // vm.expectEmit(true, true, true, true, address(zetaConnector)); + // emit Withdraw(destination, amount); + // vm.prank(tssAddress); + // zetaConnector.withdraw(destination, amount, internalSendHash); + // uint256 balanceAfter = zetaToken.balanceOf(destination); + // assertEq(balanceAfter, amount); + // } + + // function testWithdrawFailsIfSenderIsNotTSS() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + + // vm.prank(owner); + // vm.expectRevert(InvalidSender.selector); + // zetaConnector.withdraw(destination, amount, internalSendHash); + // } + + // function testWithdrawAndCallReceiveERC20() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + // uint256 balanceBefore = zetaToken.balanceOf(destination); + // assertEq(balanceBefore, 0); + // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceBeforeZetaConnector, 0); + + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // vm.expectCall(address(zetaToken), 0, mintData); + // vm.expectEmit(true, true, true, true, address(receiver)); + // emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); + // vm.expectEmit(true, true, true, true, address(zetaConnector)); + // emit WithdrawAndCall(address(receiver), amount, data); + // vm.prank(tssAddress); + // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // // Verify that the tokens were transferred to the destination address + // uint256 balanceAfter = zetaToken.balanceOf(destination); + // assertEq(balanceAfter, amount); + + // // Verify that zeta connector doesn't hold any tokens + // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceAfterZetaConnector, 0); + + // // Verify that the approval was reset + // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + // assertEq(allowance, 0); + + // // Verify that gateway doesn't hold any tokens + // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + // assertEq(balanceGateway, 0); + // } + + // function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + + // vm.prank(owner); + // vm.expectRevert(InvalidSender.selector); + // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + // } + + // function testWithdrawAndCallReceiveNoParams() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + // uint256 balanceBefore = zetaToken.balanceOf(destination); + // assertEq(balanceBefore, 0); + // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceBeforeZetaConnector, 0); + + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // vm.expectCall(address(zetaToken), 0, mintData); + // vm.expectEmit(true, true, true, true, address(receiver)); + // emit ReceivedNoParams(address(gateway)); + // vm.expectEmit(true, true, true, true, address(zetaConnector)); + // emit WithdrawAndCall(address(receiver), amount, data); + // vm.prank(tssAddress); + // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // // Verify that the no tokens were transferred to the destination address + // uint256 balanceAfter = zetaToken.balanceOf(destination); + // assertEq(balanceAfter, 0); + + // // Verify that zeta connector doesn't hold any tokens + // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceAfterZetaConnector, 0); + + // // Verify that the approval was reset + // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + // assertEq(allowance, 0); + + // // Verify that gateway doesn't hold any tokens + // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + // assertEq(balanceGateway, 0); + // } + + // function testWithdrawAndCallReceiveERC20Partial() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); + // uint256 balanceBefore = zetaToken.balanceOf(destination); + // assertEq(balanceBefore, 0); + // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceBeforeZetaConnector, 0); + + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // vm.expectCall(address(zetaToken), 0, mintData); + // vm.expectEmit(true, true, true, true, address(receiver)); + // emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); + // vm.expectEmit(true, true, true, true, address(zetaConnector)); + // emit WithdrawAndCall(address(receiver), amount, data); + // vm.prank(tssAddress); + // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // // Verify that the tokens were transferred to the destination address + // uint256 balanceAfter = zetaToken.balanceOf(destination); + // assertEq(balanceAfter, amount / 2); + + // // Verify that zeta connector doesn't hold any tokens + // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceAfterZetaConnector, 0); + + // // Verify that the approval was reset + // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + // assertEq(allowance, 0); + + // // Verify that gateway doesn't hold any tokens + // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + // assertEq(balanceGateway, 0); + // } + + // function testWithdrawAndRevert() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodePacked("hello"); + // uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); + // assertEq(balanceBefore, 0); + // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // vm.expectCall(address(zetaToken), 0, mintData); + // // Verify that onRevert callback was called + // vm.expectEmit(true, true, true, true, address(receiver)); + // emit ReceivedRevert(address(gateway), data); + // vm.expectEmit(true, true, true, true, address(gateway)); + // emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); + // vm.expectEmit(true, true, true, true, address(zetaConnector)); + // emit WithdrawAndRevert(address(receiver), amount, data); + // vm.prank(tssAddress); + // zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + + // // Verify that the tokens were transferred to the receiver address + // uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); + // assertEq(balanceAfter, amount); + + // // Verify that zeta connector doesn't get more tokens + // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + // assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); + + // // Verify that the approval was reset + // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + // assertEq(allowance, 0); + + // // Verify that gateway doesn't hold any tokens + // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + // assertEq(balanceGateway, 0); + // } + + // function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + // uint256 amount = 100000; + // bytes32 internalSendHash = ""; + // bytes memory data = abi.encodePacked("hello"); + + // vm.prank(owner); + // vm.expectRevert(InvalidSender.selector); + // zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + // } +} \ No newline at end of file diff --git a/v2/test/utils/Zeta.non-eth.sol b/v2/test/utils/Zeta.non-eth.sol new file mode 100644 index 00000000..ccee3ae6 --- /dev/null +++ b/v2/test/utils/Zeta.non-eth.sol @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/** + * @dev Common custom errors + */ +interface ZetaErrors { + // @dev Thrown when caller is not the address defined as TSS address + error CallerIsNotTss(address caller); + + // @dev Thrown when caller is not the address defined as connector address + error CallerIsNotConnector(address caller); + + // @dev Thrown when caller is not the address defined as TSS Updater address + error CallerIsNotTssUpdater(address caller); + + // @dev Thrown when caller is not the address defined as TSS or TSS Updater address + error CallerIsNotTssOrUpdater(address caller); + + // @dev Thrown when a contract receives an invalid address param, mostly zero address validation + error InvalidAddress(); + + // @dev Thrown when Zeta can't be transferred for some reason + error ZetaTransferError(); +} + +/** + * @dev ZetaNonEthInterface is a mintable / burnable version of IERC20 + */ +interface ZetaNonEthInterface is IERC20 { + function burnFrom(address account, uint256 amount) external; + + function mint(address mintee, uint256 value, bytes32 internalSendHash) external; +} + +contract ZetaNonEth is ZetaNonEthInterface, ERC20Burnable, ZetaErrors { + address public connectorAddress; + + /** + * @dev Collectively held by Zeta blockchain validators + */ + address public tssAddress; + + /** + * @dev Initially a multi-sig, eventually held by Zeta blockchain validators (via renounceTssAddressUpdater) + */ + address public tssAddressUpdater; + + event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash); + + event Burnt(address indexed burnee, uint256 amount); + + event TSSAddressUpdated(address callerAddress, address newTssAddress); + + event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress); + + event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress); + + constructor(address tssAddress_, address tssAddressUpdater_) ERC20("Zeta", "ZETA") { + if (tssAddress_ == address(0) || tssAddressUpdater_ == address(0)) revert InvalidAddress(); + + tssAddress = tssAddress_; + tssAddressUpdater = tssAddressUpdater_; + } + + function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) external { + if (msg.sender != tssAddressUpdater && msg.sender != tssAddress) revert CallerIsNotTssOrUpdater(msg.sender); + if (tssAddress_ == address(0) || connectorAddress_ == address(0)) revert InvalidAddress(); + + tssAddress = tssAddress_; + connectorAddress = connectorAddress_; + + emit TSSAddressUpdated(msg.sender, tssAddress_); + emit ConnectorAddressUpdated(msg.sender, connectorAddress_); + } + + /** + * @dev Sets tssAddressUpdater to be tssAddress + */ + function renounceTssAddressUpdater() external { + if (msg.sender != tssAddressUpdater) revert CallerIsNotTssUpdater(msg.sender); + if (tssAddress == address(0)) revert InvalidAddress(); + + tssAddressUpdater = tssAddress; + emit TSSAddressUpdaterUpdated(msg.sender, tssAddress); + } + + function mint(address mintee, uint256 value, bytes32 internalSendHash) external override { + /** + * @dev Only Connector can mint. Minting requires burning the equivalent amount on another chain + */ + if (msg.sender != connectorAddress) revert CallerIsNotConnector(msg.sender); + + _mint(mintee, value); + + emit Minted(mintee, value, internalSendHash); + } + + function burnFrom(address account, uint256 amount) public override(ZetaNonEthInterface, ERC20Burnable) { + /** + * @dev Only Connector can burn. + */ + if (msg.sender != connectorAddress) revert CallerIsNotConnector(msg.sender); + + ERC20Burnable.burnFrom(account, amount); + + emit Burnt(account, amount); + } +} From c0dbd8ca006668ea945271e945db041f20e141a5 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 21:15:44 +0200 Subject: [PATCH 16/60] wip --- v2/script/Counter.s.sol | 19 - v2/src/Counter.sol | 14 - v2/src/evm/ERC20CustodyNew.sol | 4 +- v2/src/evm/GatewayEVM.sol | 2 +- v2/src/evm/ZetaConnectorNewBase.sol | 4 +- v2/src/evm/ZetaConnectorNonNative.sol | 2 +- .../evm/{ => interfaces}/IERC20CustodyNew.sol | 0 v2/src/evm/{ => interfaces}/IGatewayEVM.sol | 0 .../evm/{ => interfaces}/IZetaConnector.sol | 0 .../evm/{ => interfaces}/IZetaNonEthNew.sol | 0 v2/src/zevm/GatewayZEVM.sol | 176 ++++++ v2/src/zevm/interfaces/IGatewayZEVM.sol | 51 ++ v2/src/zevm/interfaces/ISystem.sol | 19 + v2/src/zevm/interfaces/IWZeta.sol | 25 + v2/src/zevm/interfaces/IZRC20.sol | 51 ++ v2/src/zevm/interfaces/zContract.sol | 42 ++ v2/test/Counter.t.sol | 24 - v2/test/{evm => }/GatewayEVM.t.sol | 22 +- v2/test/{evm => }/GatewayEVMUpgrade.t.sol | 10 +- v2/test/GatewayEVMZEVM.t.sol | 215 +++++++ v2/test/GatewayZEVM.t.sol | 538 ++++++++++++++++++ v2/test/{evm => }/ZetaConnectorNative.t.sol | 11 +- .../{evm => }/ZetaConnectorNonNative.t.sol | 12 +- .../utils}/GatewayEVMUpgradeTest.sol | 4 +- v2/{src/evm => test/utils}/IReceiverEVM.sol | 0 v2/{src/evm => test/utils}/ReceiverEVM.sol | 0 v2/test/utils/SenderZEVM.sol | 37 ++ v2/test/utils/SystemContract.sol | 173 ++++++ v2/test/utils/SystemContractMock.sol | 85 +++ v2/{src/evm => test/utils}/TestERC20.sol | 0 v2/test/utils/TestZContract.sol | 40 ++ v2/test/utils/WZETA.sol | 68 +++ v2/test/utils/ZRC20New.sol | 298 ++++++++++ 33 files changed, 1854 insertions(+), 92 deletions(-) delete mode 100644 v2/script/Counter.s.sol delete mode 100644 v2/src/Counter.sol rename v2/src/evm/{ => interfaces}/IERC20CustodyNew.sol (100%) rename v2/src/evm/{ => interfaces}/IGatewayEVM.sol (100%) rename v2/src/evm/{ => interfaces}/IZetaConnector.sol (100%) rename v2/src/evm/{ => interfaces}/IZetaNonEthNew.sol (100%) create mode 100644 v2/src/zevm/GatewayZEVM.sol create mode 100644 v2/src/zevm/interfaces/IGatewayZEVM.sol create mode 100644 v2/src/zevm/interfaces/ISystem.sol create mode 100644 v2/src/zevm/interfaces/IWZeta.sol create mode 100644 v2/src/zevm/interfaces/IZRC20.sol create mode 100644 v2/src/zevm/interfaces/zContract.sol delete mode 100644 v2/test/Counter.t.sol rename v2/test/{evm => }/GatewayEVM.t.sol (97%) rename v2/test/{evm => }/GatewayEVMUpgrade.t.sol (94%) create mode 100644 v2/test/GatewayEVMZEVM.t.sol create mode 100644 v2/test/GatewayZEVM.t.sol rename v2/test/{evm => }/ZetaConnectorNative.t.sol (97%) rename v2/test/{evm => }/ZetaConnectorNonNative.t.sol (98%) rename v2/{src/evm => test/utils}/GatewayEVMUpgradeTest.sol (98%) rename v2/{src/evm => test/utils}/IReceiverEVM.sol (100%) rename v2/{src/evm => test/utils}/ReceiverEVM.sol (100%) create mode 100644 v2/test/utils/SenderZEVM.sol create mode 100644 v2/test/utils/SystemContract.sol create mode 100644 v2/test/utils/SystemContractMock.sol rename v2/{src/evm => test/utils}/TestERC20.sol (100%) create mode 100644 v2/test/utils/TestZContract.sol create mode 100644 v2/test/utils/WZETA.sol create mode 100644 v2/test/utils/ZRC20New.sol diff --git a/v2/script/Counter.s.sol b/v2/script/Counter.s.sol deleted file mode 100644 index cdc1fe9a..00000000 --- a/v2/script/Counter.s.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script, console} from "forge-std/Script.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterScript is Script { - Counter public counter; - - function setUp() public {} - - function run() public { - vm.startBroadcast(); - - counter = new Counter(); - - vm.stopBroadcast(); - } -} diff --git a/v2/src/Counter.sol b/v2/src/Counter.sol deleted file mode 100644 index aded7997..00000000 --- a/v2/src/Counter.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -contract Counter { - uint256 public number; - - function setNumber(uint256 newNumber) public { - number = newNumber; - } - - function increment() public { - number++; - } -} diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol index 07b1bbf3..890728db 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -5,8 +5,8 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./IGatewayEVM.sol"; -import "./IERC20CustodyNew.sol"; +import "./interfaces//IGatewayEVM.sol"; +import "./interfaces/IERC20CustodyNew.sol"; // As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain // This version include a functionality allowing to call a contract diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index 89c27fde..ffd8ba23 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -7,7 +7,7 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "./IGatewayEVM.sol"; +import "./interfaces/IGatewayEVM.sol"; import "./ZetaConnectorNewBase.sol"; /** diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol index 1fad5ad4..443603b9 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -5,8 +5,8 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./IGatewayEVM.sol"; -import "./IZetaConnector.sol"; +import "./interfaces/IGatewayEVM.sol"; +import "./interfaces/IZetaConnector.sol"; abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { using SafeERC20 for IERC20; diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index de9aa516..c4ed9fce 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; import "./ZetaConnectorNewBase.sol"; -import "./IZetaNonEthNew.sol"; +import "./interfaces/IZetaNonEthNew.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract ZetaConnectorNonNative is ZetaConnectorNewBase { diff --git a/v2/src/evm/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20CustodyNew.sol similarity index 100% rename from v2/src/evm/IERC20CustodyNew.sol rename to v2/src/evm/interfaces/IERC20CustodyNew.sol diff --git a/v2/src/evm/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol similarity index 100% rename from v2/src/evm/IGatewayEVM.sol rename to v2/src/evm/interfaces/IGatewayEVM.sol diff --git a/v2/src/evm/IZetaConnector.sol b/v2/src/evm/interfaces/IZetaConnector.sol similarity index 100% rename from v2/src/evm/IZetaConnector.sol rename to v2/src/evm/interfaces/IZetaConnector.sol diff --git a/v2/src/evm/IZetaNonEthNew.sol b/v2/src/evm/interfaces/IZetaNonEthNew.sol similarity index 100% rename from v2/src/evm/IZetaNonEthNew.sol rename to v2/src/evm/interfaces/IZetaNonEthNew.sol diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol new file mode 100644 index 00000000..a52fba59 --- /dev/null +++ b/v2/src/zevm/GatewayZEVM.sol @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "./interfaces/IZRC20.sol"; +import "./interfaces/zContract.sol"; +import "./interfaces/IGatewayZEVM.sol"; +import "./interfaces/IWZETA.sol"; + +// The GatewayZEVM contract is the endpoint to call smart contracts on omnichain +// The contract doesn't hold any funds and should never have active allowances +contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable { + error ZeroAddress(); + + address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; + address public zetaToken; + + // @dev Only Fungible module address allowed modifier. + modifier onlyFungible() { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) { + revert CallerIsNotFungibleModule(); + } + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize(address _zetaToken) public initializer { + if (_zetaToken == address(0)) { + revert ZeroAddress(); + } + + __Ownable_init(msg.sender); + __UUPSUpgradeable_init(); + __ReentrancyGuard_init(); + zetaToken = _zetaToken; + } + + function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + + /// @dev Receive function to receive ZETA from WETH9.withdraw(). + receive() external payable { + if (msg.sender != zetaToken && msg.sender != FUNGIBLE_MODULE_ADDRESS) revert OnlyWZETAOrFungible(); + } + + function _withdrawZRC20(uint256 amount, address zrc20) internal returns (uint256) { + (address gasZRC20, uint256 gasFee) = IZRC20(zrc20).withdrawGasFee(); + if (!IZRC20(gasZRC20).transferFrom(msg.sender, FUNGIBLE_MODULE_ADDRESS, gasFee)) { + revert GasFeeTransferFailed(); + } + + if (!IZRC20(zrc20).transferFrom(msg.sender, address(this), amount)) { + revert ZRC20TransferFailed(); + } + + if (!IZRC20(zrc20).burn(amount)) revert ZRC20BurnFailed(); + + return gasFee; + } + + function _transferZETA(uint256 amount, address to) internal { + if (!IWETH9(zetaToken).transferFrom(msg.sender, address(this), amount)) revert FailedZetaSent(); + IWETH9(zetaToken).withdraw(amount); + (bool sent, ) = to.call{value: amount}(""); + if (!sent) revert FailedZetaSent(); + } + + // Withdraw ZRC20 tokens to external chain + function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant { + uint256 gasFee = _withdrawZRC20(amount, zrc20); + emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); + } + + // Withdraw ZRC20 tokens and call smart contract on external chain + function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external nonReentrant { + uint256 gasFee = _withdrawZRC20(amount, zrc20); + emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); + } + + // Withdraw ZETA to external chain + function withdraw(uint256 amount) external nonReentrant { + _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); + emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, ""); + } + + // Withdraw ZETA and call smart contract on external chain + function withdrawAndCall(uint256 amount, bytes calldata message) external nonReentrant { + _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); + emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message); + } + + // Call smart contract on external chain without asset transfer + function call(bytes memory receiver, bytes calldata message) external nonReentrant { + emit Call(msg.sender, receiver, message); + } + + // Deposit foreign coins into ZRC20 + function deposit( + address zrc20, + uint256 amount, + address target + ) external onlyFungible { + if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); + + IZRC20(zrc20).deposit(target, amount); + } + + // Execute user specified contract on ZEVM + function execute( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external onlyFungible { + UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); + } + + // Deposit foreign coins into ZRC20 and call user specified contract on ZEVM + function depositAndCall( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external onlyFungible { + if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); + + IZRC20(zrc20).deposit(target, amount); + UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); + } + + // Deposit zeta and call user specified contract on ZEVM + function depositAndCall( + zContext calldata context, + uint256 amount, + address target, + bytes calldata message + ) external onlyFungible { + if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); + + _transferZETA(amount, target); + UniversalContract(target).onCrossChainCall(context, zetaToken, amount, message); + } + + // Revert user specified contract on ZEVM + function executeRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external onlyFungible { + UniversalContract(target).onRevert(context, zrc20, amount, message); + } + + // Deposit foreign coins into ZRC20 and revert user specified contract on ZEVM + function depositAndRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external onlyFungible { + if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); + + IZRC20(zrc20).deposit(target, amount); + UniversalContract(target).onRevert(context, zrc20, amount, message); + } +} diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol new file mode 100644 index 00000000..501ac72d --- /dev/null +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./zContract.sol"; + +interface IGatewayZEVM { + function withdraw(bytes memory receiver, uint256 amount, address zrc20) external; + + function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external; + + function call(bytes memory receiver, bytes calldata message) external; + + function deposit( + address zrc20, + uint256 amount, + address target + ) external; + + function execute( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external; + + function depositAndCall( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external; +} + +interface IGatewayZEVMEvents { + event Call(address indexed sender, bytes receiver, bytes message); + event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); +} + +interface IGatewayZEVMErrors { + error WithdrawalFailed(); + error InsufficientZRC20Amount(); + error ZRC20BurnFailed(); + error ZRC20TransferFailed(); + error GasFeeTransferFailed(); + error CallerIsNotFungibleModule(); + error InvalidTarget(); + error FailedZetaSent(); + error OnlyWZETAOrFungible(); +} \ No newline at end of file diff --git a/v2/src/zevm/interfaces/ISystem.sol b/v2/src/zevm/interfaces/ISystem.sol new file mode 100644 index 00000000..7538c46d --- /dev/null +++ b/v2/src/zevm/interfaces/ISystem.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +/** + * @dev Interfaces of SystemContract and ZRC20 to make easier to import. + */ +interface ISystem { + function FUNGIBLE_MODULE_ADDRESS() external view returns (address); + + function wZetaContractAddress() external view returns (address); + + function uniswapv2FactoryAddress() external view returns (address); + + function gasPriceByChainId(uint256 chainID) external view returns (uint256); + + function gasCoinZRC20ByChainId(uint256 chainID) external view returns (address); + + function gasZetaPoolByChainId(uint256 chainID) external view returns (address); +} diff --git a/v2/src/zevm/interfaces/IWZeta.sol b/v2/src/zevm/interfaces/IWZeta.sol new file mode 100644 index 00000000..2efb7a2e --- /dev/null +++ b/v2/src/zevm/interfaces/IWZeta.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IWETH9 { + event Approval(address indexed owner, address indexed spender, uint value); + event Transfer(address indexed from, address indexed to, uint value); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + function totalSupply() external view returns (uint); + + function balanceOf(address owner) external view returns (uint); + + function allowance(address owner, address spender) external view returns (uint); + + function approve(address spender, uint wad) external returns (bool); + + function transfer(address to, uint wad) external returns (bool); + + function transferFrom(address from, address to, uint wad) external returns (bool); + + function deposit() external payable; + + function withdraw(uint wad) external; +} diff --git a/v2/src/zevm/interfaces/IZRC20.sol b/v2/src/zevm/interfaces/IZRC20.sol new file mode 100644 index 00000000..34bdafb5 --- /dev/null +++ b/v2/src/zevm/interfaces/IZRC20.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +interface IZRC20 { + function totalSupply() external view returns (uint256); + + function balanceOf(address account) external view returns (uint256); + + function transfer(address recipient, uint256 amount) external returns (bool); + + function allowance(address owner, address spender) external view returns (uint256); + + function approve(address spender, uint256 amount) external returns (bool); + + function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); + + function deposit(address to, uint256 amount) external returns (bool); + + function burn(uint256 amount) external returns (bool); + + function withdraw(bytes memory to, uint256 amount) external returns (bool); + + function withdrawGasFee() external view returns (address, uint256); + + function PROTOCOL_FLAT_FEE() external view returns (uint256); +} + +interface IZRC20Metadata is IZRC20 { + function name() external view returns (string memory); + + function symbol() external view returns (string memory); + + function decimals() external view returns (uint8); +} + +interface ZRC20Events { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + event Deposit(bytes from, address indexed to, uint256 value); + event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee); + event UpdatedSystemContract(address systemContract); + event UpdatedGasLimit(uint256 gasLimit); + event UpdatedProtocolFlatFee(uint256 protocolFlatFee); +} + +/// @dev Coin types for ZRC20. Zeta value should not be used. +enum CoinType { + Zeta, + Gas, + ERC20 +} diff --git a/v2/src/zevm/interfaces/zContract.sol b/v2/src/zevm/interfaces/zContract.sol new file mode 100644 index 00000000..38ca4dc0 --- /dev/null +++ b/v2/src/zevm/interfaces/zContract.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +struct zContext { + bytes origin; + address sender; + uint256 chainID; +} + +// TODO: define revertContext +struct revertContext { + bytes origin; + address sender; + uint256 chainID; +} + +interface zContract { + function onCrossChainCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) external; +} + +interface UniversalContract { + function onCrossChainCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) external; + + // TODO: define onRevert + function onRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) external; + +} \ No newline at end of file diff --git a/v2/test/Counter.t.sol b/v2/test/Counter.t.sol deleted file mode 100644 index 54b724f7..00000000 --- a/v2/test/Counter.t.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Test, console} from "forge-std/Test.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterTest is Test { - Counter public counter; - - function setUp() public { - counter = new Counter(); - counter.setNumber(0); - } - - function test_Increment() public { - counter.increment(); - assertEq(counter.number(), 1); - } - - function testFuzz_SetNumber(uint256 x) public { - counter.setNumber(x); - assertEq(counter.number(), x); - } -} diff --git a/v2/test/evm/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol similarity index 97% rename from v2/test/evm/GatewayEVM.t.sol rename to v2/test/GatewayEVM.t.sol index 647548af..a0d5f4f5 100644 --- a/v2/test/evm/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -5,18 +5,17 @@ import "forge-std/Test.sol"; import "forge-std/Vm.sol"; import "src/evm/GatewayEVM.sol"; -import "src/evm/ReceiverEVM.sol"; +import "./utils/ReceiverEVM.sol"; import "src/evm/ERC20CustodyNew.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/TestERC20.sol"; +import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/IGatewayEVM.sol"; -import "src/evm/IERC20CustodyNew.sol"; -import "src/evm/IReceiverEVM.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "./utils/IReceiverEVM.sol"; contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { using SafeERC20 for IERC20; @@ -397,6 +396,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; + address proxy; GatewayEVM gateway; ERC20CustodyNew custody; ZetaConnectorNonNative zetaConnector; @@ -415,11 +415,13 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR token = new TestERC20("test", "TTK"); zeta = new TestERC20("zeta", "ZETA"); - address proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); + + proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", + abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + ); gateway = GatewayEVM(proxy); + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); diff --git a/v2/test/evm/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol similarity index 94% rename from v2/test/evm/GatewayEVMUpgrade.t.sol rename to v2/test/GatewayEVMUpgrade.t.sol index b5eb85ae..eb9f39bd 100644 --- a/v2/test/evm/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -5,17 +5,17 @@ import "forge-std/Test.sol"; import "forge-std/Vm.sol"; import "src/evm/GatewayEVM.sol"; -import "src/evm/GatewayEVMUpgradeTest.sol"; -import "src/evm/ReceiverEVM.sol"; +import "./utils/GatewayEVMUpgradeTest.sol"; +import "./utils/ReceiverEVM.sol"; import "src/evm/ERC20CustodyNew.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/TestERC20.sol"; +import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/IGatewayEVM.sol"; -import "src/evm/IReceiverEVM.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol new file mode 100644 index 00000000..be2aaf73 --- /dev/null +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -0,0 +1,215 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/evm/GatewayEVM.sol"; +import "./utils/ReceiverEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "./utils/TestERC20.sol"; + +import "src/zevm/GatewayZEVM.sol"; +import "./utils/SenderZEVM.sol"; +import "./utils/ZRC20New.sol"; +import "./utils/SystemContractMock.sol"; + +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; +import "src/zevm/interfaces/IGatewayZEVM.sol"; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGatewayZEVMEvents, IGatewayZEVMErrors, IReceiverEVMEvents { + // evm + using SafeERC20 for IERC20; + + address proxyEVM; + GatewayEVM gatewayEVM; + ERC20CustodyNew custody; + ZetaConnectorNonNative zetaConnector; + TestERC20 token; + TestERC20 zeta; + ReceiverEVM receiverEVM; + address ownerEVM; + address destination; + address tssAddress; + + // zevm + address payable proxyZEVM; + GatewayZEVM gatewayZEVM; + SenderZEVM senderZEVM; + SystemContractMock systemContract; + ZRC20New zrc20; + address ownerZEVM; + + function setUp() public { + // evm + ownerEVM = address(this); + destination = address(0x1234); + tssAddress = address(0x5678); + ownerZEVM = address(0x4321); + + token = new TestERC20("test", "TTK"); + zeta = new TestERC20("zeta", "ZETA"); + + proxyEVM = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", + abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + ); + gatewayEVM = GatewayEVM(proxyEVM); + + custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); + + vm.deal(tssAddress, 1 ether); + + vm.startPrank(tssAddress); + gatewayEVM.setCustody(address(custody)); + gatewayEVM.setConnector(address(zetaConnector)); + vm.stopPrank(); + + token.mint(ownerEVM, 1000000); + token.transfer(address(custody), 500000); + + receiverEVM = new ReceiverEVM(); + + // zevm + proxyZEVM = payable(Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", + abi.encodeCall(GatewayZEVM.initialize, (address(zeta))) + )); + gatewayZEVM = GatewayZEVM(proxyZEVM); + + senderZEVM = new SenderZEVM(address(gatewayZEVM)); + address fungibleModuleAddress = address(0x735b14BB79463307AAcBED86DAf3322B1e6226aB); + vm.startPrank(fungibleModuleAddress); + systemContract = new SystemContractMock(address(0), address(0), address(0)); + zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Zeta, 0, address(systemContract), address(gatewayZEVM)); + systemContract.setGasCoinZRC20(1, address(zrc20)); + systemContract.setGasPrice(1, 1); + zrc20.deposit(ownerZEVM, 1000000); + zrc20.deposit(address(senderZEVM), 1000000); + vm.stopPrank(); + + vm.prank(ownerZEVM); + zrc20.approve(address(gatewayZEVM), 1000000); + + vm.deal(tssAddress, 1 ether); + } + + function testCallReceiverEVMFromZEVM() public { + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + // Encode the function call data and call on zevm + bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); + vm.prank(ownerZEVM); + vm.expectEmit(true, true, true, true, address(gatewayZEVM)); + emit Call(address(ownerZEVM), abi.encodePacked(receiverEVM), message); + gatewayZEVM.call(abi.encodePacked(receiverEVM), message); + + // Call execute on evm + vm.deal(address(gatewayEVM), value); + vm.expectEmit(true, true, true, true, address(gatewayEVM)); + emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); + gatewayEVM.execute{value: value}(address(receiverEVM), message); + } + + function testCallReceiverEVMFromSenderZEVM() public { + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + // Encode the function call data and call on zevm + bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); + bytes memory data = abi.encodeWithSignature("call(bytes,bytes)", abi.encodePacked(receiverEVM), message); + vm.expectCall(address(gatewayZEVM), 0, data); + vm.prank(ownerZEVM); + senderZEVM.callReceiver(abi.encodePacked(receiverEVM), str, num, flag); + + // Call execute on evm + vm.deal(address(gatewayEVM), value); + vm.expectEmit(true, true, true, true, address(receiverEVM)); + emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gatewayEVM)); + emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); + gatewayEVM.execute{value: value}(address(receiverEVM), message); + } + + function testWithdrawAndCallReceiverEVMFromZEVM() public { + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + // Encode the function call data and call on zevm + bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); + vm.expectEmit(true, true, true, true, address(gatewayZEVM)); + emit Withdrawal( + ownerZEVM, + address(zrc20), + abi.encodePacked(receiverEVM), + 1000000, + 0, + zrc20.PROTOCOL_FLAT_FEE(), + message + ); + vm.prank(ownerZEVM); + gatewayZEVM.withdrawAndCall( + abi.encodePacked(receiverEVM), + 1000000, + address(zrc20), + message + ); + + // Check the balance after withdrawal + uint256 balanceOfAfterWithdrawal = zrc20.balanceOf(ownerZEVM); + assertEq(balanceOfAfterWithdrawal, 0); + + // Call execute on evm + vm.deal(address(gatewayEVM), value); + vm.expectEmit(true, true, true, true, address(receiverEVM)); + emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gatewayEVM)); + emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); + gatewayEVM.execute{value: value}(address(receiverEVM), message); + } + + function testWithdrawAndCallReceiverEVMFromSenderZEVM() public { + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + uint256 value = 1 ether; + + // Encode the function call data and call on zevm + uint256 senderBalanceBeforeWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); + bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); + bytes memory data = abi.encodeWithSignature("withdrawAndCall(bytes,uint256,address,bytes)", abi.encodePacked(receiverEVM), 1000000, address(zrc20), message); + vm.expectCall(address(gatewayZEVM), 0, data); + vm.prank(ownerZEVM); + senderZEVM.withdrawAndCallReceiver(abi.encodePacked(receiverEVM), 1000000, address(zrc20), str, num, flag); + + // Call execute on evm + vm.deal(address(gatewayEVM), value); + vm.expectEmit(true, true, true, true, address(receiverEVM)); + emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); + vm.expectEmit(true, true, true, true, address(gatewayEVM)); + emit Executed(address(receiverEVM), value, message); + vm.prank(tssAddress); + gatewayEVM.execute{value: value}(address(receiverEVM), message); + + // Check the balance after withdrawal + uint256 senderBalanceAfterWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); + assertEq(senderBalanceAfterWithdrawal, senderBalanceBeforeWithdrawal - 1000000); + } +} \ No newline at end of file diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol new file mode 100644 index 00000000..fb96f551 --- /dev/null +++ b/v2/test/GatewayZEVM.t.sol @@ -0,0 +1,538 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "src/zevm/GatewayZEVM.sol"; +import "./utils/ZRC20New.sol"; +import "./utils/SystemContract.sol"; +import "src/zevm/interfaces/IZRC20.sol"; +import "./utils/TestZContract.sol"; +import "src/zevm/interfaces/IGatewayZEVM.sol"; +import "./utils/WZETA.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { + address payable proxy; + GatewayZEVM gateway; + ZRC20New zrc20; + WETH9 zetaToken; + SystemContract systemContract; + TestZContract testZContract; + address owner; + address addr1; + address fungibleModule; + + function setUp() public { + owner = address(this); + addr1 = address(0x1234); + + zetaToken = new WETH9(); + + proxy = payable(Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", + abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken))) + )); + gateway = GatewayZEVM(proxy); + + fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); + testZContract = new TestZContract(); + + vm.startPrank(fungibleModule); + systemContract = new SystemContract(address(0), address(0), address(0)); + zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); + systemContract.setGasCoinZRC20(1, address(zrc20)); + systemContract.setGasPrice(1, 1); + vm.deal(fungibleModule, 1000000000); + zetaToken.deposit{value: 10}(); + zetaToken.approve(address(gateway), 10); + zrc20.deposit(owner, 100000); + vm.stopPrank(); + + vm.startPrank(owner); + zrc20.approve(address(gateway), 100000); + zetaToken.deposit{value: 10}(); + zetaToken.approve(address(gateway), 10); + vm.stopPrank(); + } + + function testWithdrawZRC20() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), ""); + gateway.withdraw(abi.encodePacked(addr1), 1, address(zrc20)); + + uint256 ownerBalanceAfter = zrc20.balanceOf(owner); + assertEq(ownerBalanceBefore - amount, ownerBalanceAfter); + } + + function testWithdrawZRC20FailsIfNoAllowance() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + // Remove allowance for gateway + vm.prank(owner); + zrc20.approve(address(gateway), 0); + + vm.expectRevert(); + gateway.withdraw(abi.encodePacked(addr1), amount, address(zrc20)); + + // Check that balance didn't change + uint256 ownerBalanceAfter = zrc20.balanceOf(owner); + assertEq(ownerBalanceBefore, ownerBalanceAfter); + } + + function testWithdrawZRC20WithMessageFailsIfNoAllowance() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + // Remove allowance for gateway + vm.prank(owner); + zrc20.approve(address(gateway), 0); + + bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + vm.expectRevert(); + gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); + + // Check that balance didn't change + uint256 ownerBalanceAfter = zrc20.balanceOf(owner); + assertEq(ownerBalanceBefore, ownerBalanceAfter); + } + + function testWithdrawZRC20WithMessage() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + + bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), message); + gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); + + uint256 ownerBalanceAfter = zrc20.balanceOf(owner); + assertEq(ownerBalanceBefore - amount, ownerBalanceAfter); + } + + function testWithdrawZETA() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, ""); + gateway.withdraw(amount); + + uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); + assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); + + uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); + assertEq(gatewayBalanceBefore, gatewayBalanceAfter); + + // Verify amount is transfered to fungible module + assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); + } + + function testWithdrawZETAFailsIfNoAllowance() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + // Remove allowance for gateway + vm.prank(owner); + zetaToken.approve(address(gateway), 0); + + vm.expectRevert(); + gateway.withdraw(amount); + + // Verify balances not changed + uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); + assertEq(ownerBalanceBefore, ownerBalanceAfter); + + uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); + assertEq(gatewayBalanceBefore, gatewayBalanceAfter); + + assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); + } + + function testWithdrawZETAWithMessage() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + + vm.expectEmit(true, true, true, true, address(gateway)); + emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, message); + gateway.withdrawAndCall(amount, message); + + uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); + assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); + + uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); + assertEq(gatewayBalanceBefore, gatewayBalanceAfter); + + // Verify amount is transfered to fungible module + assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); + } + + function testWithdrawZETAWithMessageFailsIfNoAllowance() public { + uint256 amount = 1; + uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + // Remove allowance for gateway + vm.prank(owner); + zetaToken.approve(address(gateway), 0); + + vm.expectRevert(); + gateway.withdrawAndCall(amount, message); + + // Verify balances not changed + uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); + assertEq(ownerBalanceBefore, ownerBalanceAfter); + + uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); + assertEq(gatewayBalanceBefore, gatewayBalanceAfter); + + assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); + } + + function testCall() public { + bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Call(owner, abi.encodePacked(addr1), message); + gateway.call(abi.encodePacked(addr1), message); + } +} + +contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { + address payable proxy; + GatewayZEVM gateway; + ZRC20New zrc20; + WETH9 zetaToken; + SystemContract systemContract; + TestZContract testZContract; + address owner; + address addr1; + address fungibleModule; + + event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); + event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); + + function setUp() public { + owner = address(this); + addr1 = address(0x1234); + + zetaToken = new WETH9(); + + proxy = payable(Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", + abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken))) + )); + gateway = GatewayZEVM(proxy); + + fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); + + testZContract = new TestZContract(); + + vm.startPrank(fungibleModule); + systemContract = new SystemContract(address(0), address(0), address(0)); + zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); + systemContract.setGasCoinZRC20(1, address(zrc20)); + systemContract.setGasPrice(1, 1); + vm.deal(fungibleModule, 1000000000); + zetaToken.deposit{value: 10}(); + zetaToken.approve(address(gateway), 10); + zrc20.deposit(owner, 100000); + vm.stopPrank(); + + vm.startPrank(owner); + zrc20.approve(address(gateway), 100000); + zetaToken.deposit{value: 10}(); + zetaToken.approve(address(gateway), 10); + vm.stopPrank(); + } + + function testDeposit() public { + uint256 amount = 1; + uint256 balanceBefore = zrc20.balanceOf(addr1); + assertEq(0, balanceBefore); + + vm.prank(fungibleModule); + gateway.deposit(address(zrc20), amount, addr1); + + uint256 balanceAfter = zrc20.balanceOf(addr1); + assertEq(amount, balanceAfter); + } + + function testDepositFailsIfSenderNotFungibleModule() public { + uint256 amount = 1; + uint256 balanceBefore = zrc20.balanceOf(addr1); + assertEq(0, balanceBefore); + + vm.prank(owner); + vm.expectRevert(CallerIsNotFungibleModule.selector); + gateway.deposit(address(zrc20), amount, addr1); + + uint256 balanceAfter = zrc20.balanceOf(addr1); + assertEq(0, balanceAfter); + } + + function testDepositFailsIfTargetIsGateway() public { + uint256 amount = 1; + + vm.prank(fungibleModule); + vm.expectRevert(InvalidTarget.selector); + gateway.deposit(address(zrc20), amount, address(gateway)); + } + + function testDepositFailsIfTargetIsFungibleModule() public { + uint256 amount = 1; + vm.prank(fungibleModule); + vm.expectRevert(InvalidTarget.selector); + gateway.deposit(address(zrc20), amount, fungibleModule); + } + + function testExecuteZContract() public { + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectEmit(true, true, true, true, address(testZContract)); + emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); + vm.prank(fungibleModule); + gateway.execute(context, address(zrc20), 1, address(testZContract), message); + } + + function testExecuteZContractFailsIfSenderIsNotFungibleModule() public { + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(CallerIsNotFungibleModule.selector); + vm.prank(owner); + gateway.execute(context, address(zrc20), 1, address(testZContract), message); + } + + function testExecuteRevertZContract() public { + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectEmit(true, true, true, true, address(testZContract)); + emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); + vm.prank(fungibleModule); + gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); + } + + function testExecuteRevertZContractIfSenderIsNotFungibleModule() public { + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(CallerIsNotFungibleModule.selector); + vm.prank(owner); + gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); + } + + function testDepositZRC20AndCallZContract() public { + uint256 balanceBefore = zrc20.balanceOf(address(testZContract)); + assertEq(0, balanceBefore); + + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectEmit(true, true, true, true, address(testZContract)); + emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); + vm.prank(fungibleModule); + gateway.depositAndCall(context, address(zrc20), 1, address(testZContract), message); + + uint256 balanceAfter = zrc20.balanceOf(address(testZContract)); + assertEq(1, balanceAfter); + } + + function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(CallerIsNotFungibleModule.selector); + vm.prank(owner); + gateway.depositAndCall(context, address(zrc20), 1, address(testZContract), message); + } + + function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() public { + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndCall(context, address(zrc20), 1, fungibleModule, message); + } + + function testDepositZRC20AndCallZContractIfTargetIsGateway() public { + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndCall(context, address(zrc20), 1, address(gateway), message); + } + + function testDepositAndRevertZRC20AndCallZContract() public { + uint256 balanceBefore = zrc20.balanceOf(address(testZContract)); + assertEq(0, balanceBefore); + + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectEmit(true, true, true, true, address(testZContract)); + emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); + vm.prank(fungibleModule); + gateway.depositAndRevert(context, address(zrc20), 1, address(testZContract), message); + + uint256 balanceAfter = zrc20.balanceOf(address(testZContract)); + assertEq(1, balanceAfter); + } + + function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(CallerIsNotFungibleModule.selector); + vm.prank(owner); + gateway.depositAndRevert(context, address(zrc20), 1, address(testZContract), message); + } + + function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() public { + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndRevert(context, address(zrc20), 1, fungibleModule, message); + } + + function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() public { + bytes memory message = abi.encode("hello"); + revertContext memory context = revertContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndRevert(context, address(zrc20), 1, address(gateway), message); + } + + function testDepositZETAAndCallZContract() public { + uint256 amount = 1; + uint256 fungibleBalanceBefore = zetaToken.balanceOf(fungibleModule); + uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + uint256 destinationBalanceBefore = address(testZContract).balance; + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectEmit(true, true, true, true, address(testZContract)); + emit ContextData(abi.encodePacked(gateway), fungibleModule, amount, address(gateway), "hello"); + vm.prank(fungibleModule); + gateway.depositAndCall(context, amount, address(testZContract), message); + + uint256 fungibleBalanceAfter = zetaToken.balanceOf(fungibleModule); + assertEq(fungibleBalanceBefore - amount, fungibleBalanceAfter); + + uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); + assertEq(gatewayBalanceBefore, gatewayBalanceAfter); + + // Verify amount is transfered to destination + assertEq(destinationBalanceBefore + amount, address(testZContract).balance); + } + + function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() public { + uint256 amount = 1; + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(CallerIsNotFungibleModule.selector); + vm.prank(owner); + gateway.depositAndCall(context, amount, address(testZContract), message); + } + + function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() public { + uint256 amount = 1; + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndCall(context, amount, fungibleModule, message); + } + + function testDepositZETAAndCallZContractFailsIfTargetIsGateway() public { + uint256 amount = 1; + bytes memory message = abi.encode("hello"); + zContext memory context = zContext({ + origin: abi.encodePacked(address(gateway)), + sender: fungibleModule, + chainID: 1 + }); + + vm.expectRevert(InvalidTarget.selector); + vm.prank(fungibleModule); + gateway.depositAndCall(context, amount, address(gateway), message); + } +} \ No newline at end of file diff --git a/v2/test/evm/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol similarity index 97% rename from v2/test/evm/ZetaConnectorNative.t.sol rename to v2/test/ZetaConnectorNative.t.sol index b1216967..8f307151 100644 --- a/v2/test/evm/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -5,18 +5,17 @@ import "forge-std/Test.sol"; import "forge-std/Vm.sol"; import "src/evm/GatewayEVM.sol"; -import "src/evm/ReceiverEVM.sol"; +import "./utils/ReceiverEVM.sol"; import "src/evm/ERC20CustodyNew.sol"; import "src/evm/ZetaConnectorNative.sol"; -import "src/evm/TestERC20.sol"; +import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/IGatewayEVM.sol"; -import "src/evm/IReceiverEVM.sol"; -import "src/evm/IZetaConnector.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IZetaConnector.sol"; contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { using SafeERC20 for IERC20; diff --git a/v2/test/evm/ZetaConnectorNonNative.t.sol b/v2/test/ZetaConnectorNonNative.t.sol similarity index 98% rename from v2/test/evm/ZetaConnectorNonNative.t.sol rename to v2/test/ZetaConnectorNonNative.t.sol index cd840b6b..19ce066c 100644 --- a/v2/test/evm/ZetaConnectorNonNative.t.sol +++ b/v2/test/ZetaConnectorNonNative.t.sol @@ -5,19 +5,19 @@ import "forge-std/Test.sol"; import "forge-std/Vm.sol"; import "src/evm/GatewayEVM.sol"; -import "src/evm/ReceiverEVM.sol"; +import "./utils/ReceiverEVM.sol"; import "src/evm/ERC20CustodyNew.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/TestERC20.sol"; +import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "../utils/Zeta.non-eth.sol"; -import "src/evm/IGatewayEVM.sol"; -import "src/evm/IReceiverEVM.sol"; -import "src/evm/IZetaConnector.sol"; +import "./utils/Zeta.non-eth.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IZetaConnector.sol"; contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { using SafeERC20 for IERC20; diff --git a/v2/src/evm/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol similarity index 98% rename from v2/src/evm/GatewayEVMUpgradeTest.sol rename to v2/test/utils/GatewayEVMUpgradeTest.sol index 1767651e..562723b3 100644 --- a/v2/src/evm/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -7,8 +7,8 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "./IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/ZetaConnectorNewBase.sol"; // NOTE: Purpose of this contract is to test upgrade process, the only difference should be name of Executed event // The Gateway contract is the endpoint to call smart contracts on external chains diff --git a/v2/src/evm/IReceiverEVM.sol b/v2/test/utils/IReceiverEVM.sol similarity index 100% rename from v2/src/evm/IReceiverEVM.sol rename to v2/test/utils/IReceiverEVM.sol diff --git a/v2/src/evm/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol similarity index 100% rename from v2/src/evm/ReceiverEVM.sol rename to v2/test/utils/ReceiverEVM.sol diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol new file mode 100644 index 00000000..7b751de2 --- /dev/null +++ b/v2/test/utils/SenderZEVM.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "src/zevm/interfaces/IGatewayZEVM.sol"; +import "src/zevm/interfaces/IZRC20.sol"; + +// @notice This contract is used just for testing +contract SenderZEVM { + address public gateway; + error ApprovalFailed(); + + constructor(address _gateway) { + gateway = _gateway; + } + + // Call receiver on EVM + function callReceiver(bytes memory receiver, string memory str, uint256 num, bool flag) external { + // Encode the function call to the receiver's receivePayable method + bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); + + // Pass encoded call to gateway + IGatewayZEVM(gateway).call(receiver, message); + } + + // Withdraw and call receiver on EVM + function withdrawAndCallReceiver(bytes memory receiver, uint256 amount, address zrc20, string memory str, uint256 num, bool flag) external { + // Encode the function call to the receiver's receivePayable method + bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); + + // Approve gateway to withdraw + if(!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); + + // Pass encoded call to gateway + IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message); + } +} \ No newline at end of file diff --git a/v2/test/utils/SystemContract.sol b/v2/test/utils/SystemContract.sol new file mode 100644 index 00000000..a34a1e06 --- /dev/null +++ b/v2/test/utils/SystemContract.sol @@ -0,0 +1,173 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "src/zevm/interfaces/zContract.sol"; +import "src/zevm/interfaces/IZRC20.sol"; + +/** + * @dev Custom errors for SystemContract + */ +interface SystemContractErrors { + error CallerIsNotFungibleModule(); + error InvalidTarget(); + error CantBeIdenticalAddresses(); + error CantBeZeroAddress(); + error ZeroAddress(); +} + +/** + * @dev The system contract it's called by the protocol to interact with the blockchain. + * Also includes a lot of tools to make easier to interact with ZetaChain. + */ +contract SystemContract is SystemContractErrors { + /// @notice Map to know the gas price of each chain given a chain id. + mapping(uint256 => uint256) public gasPriceByChainId; + /// @notice Map to know the ZRC20 address of a token given a chain id, ex zETH, zBNB etc. + mapping(uint256 => address) public gasCoinZRC20ByChainId; + // @dev: Map to know uniswap V2 pool of ZETA/ZRC20 given a chain id. This refer to the build in uniswap deployed at genesis. + mapping(uint256 => address) public gasZetaPoolByChainId; + + /// @notice Fungible address is always the same, it's on protocol level. + address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; + /// @notice Uniswap V2 addresses. + address public immutable uniswapv2FactoryAddress; + address public immutable uniswapv2Router02Address; + /// @notice Address of the wrapped ZETA to interact with Uniswap V2. + address public wZetaContractAddress; + /// @notice Address of ZEVM Zeta Connector. + address public zetaConnectorZEVMAddress; + + /// @notice Custom SystemContract errors. + event SystemContractDeployed(); + event SetGasPrice(uint256, uint256); + event SetGasCoin(uint256, address); + event SetGasZetaPool(uint256, address); + event SetWZeta(address); + event SetConnectorZEVM(address); + + /** + * @dev Only fungible module can deploy a system contract. + */ + constructor(address wzeta_, address uniswapv2Factory_, address uniswapv2Router02_) { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + wZetaContractAddress = wzeta_; + uniswapv2FactoryAddress = uniswapv2Factory_; + uniswapv2Router02Address = uniswapv2Router02_; + emit SystemContractDeployed(); + } + + /** + * @dev Deposit foreign coins into ZRC20 and call user specified contract on zEVM. + * @param context, context data for deposit. + * @param zrc20, zrc20 address for deposit. + * @param amount, amount to deposit. + * @param target, contract address to make a call after deposit. + * @param message, calldata for a call. + */ + function depositAndCall( + zContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); + + IZRC20(zrc20).deposit(target, amount); + zContract(target).onCrossChainCall(context, zrc20, amount, message); + } + + /** + * @dev Sort token addresses lexicographically. Used to handle return values from pairs sorted in the order. + * @param tokenA, tokenA address. + * @param tokenB, tokenB address. + * @return token0 token1, returns sorted token addresses,. + */ + function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { + if (tokenA == tokenB) revert CantBeIdenticalAddresses(); + (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); + if (token0 == address(0)) revert CantBeZeroAddress(); + } + + /** + * @dev Calculates the CREATE2 address for a pair without making any external calls. + * @param factory, factory address. + * @param tokenA, tokenA address. + * @param tokenB, tokenB address. + * @return pair tokens pair address. + */ + function uniswapv2PairFor(address factory, address tokenA, address tokenB) public pure returns (address pair) { + (address token0, address token1) = sortTokens(tokenA, tokenB); + pair = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + factory, + keccak256(abi.encodePacked(token0, token1)), + hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f" // init code hash + ) + ) + ) + ) + ); + } + + /** + * @dev Fungible module updates the gas price oracle periodically. + * @param chainID, chain id. + * @param price, new gas price. + */ + function setGasPrice(uint256 chainID, uint256 price) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + gasPriceByChainId[chainID] = price; + emit SetGasPrice(chainID, price); + } + + /** + * @dev Setter for gasCoinZRC20ByChainId map. + * @param chainID, chain id. + * @param zrc20, ZRC20 address. + */ + function setGasCoinZRC20(uint256 chainID, address zrc20) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + gasCoinZRC20ByChainId[chainID] = zrc20; + emit SetGasCoin(chainID, zrc20); + } + + /** + * @dev Set the pool wzeta/erc20 address. + * @param chainID, chain id. + * @param erc20, pair for uniswap wzeta/erc20. + */ + function setGasZetaPool(uint256 chainID, address erc20) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + address pool = uniswapv2PairFor(uniswapv2FactoryAddress, wZetaContractAddress, erc20); + gasZetaPoolByChainId[chainID] = pool; + emit SetGasZetaPool(chainID, pool); + } + + /** + * @dev Setter for wrapped ZETA address. + * @param addr, wzeta new address. + */ + function setWZETAContractAddress(address addr) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + if (addr == address(0)) revert ZeroAddress(); + wZetaContractAddress = addr; + emit SetWZeta(wZetaContractAddress); + } + + /** + * @dev Setter for zetaConnector ZEVM Address + * @param addr, zeta connector new address. + */ + function setConnectorZEVMAddress(address addr) external { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + if (addr == address(0)) revert ZeroAddress(); + zetaConnectorZEVMAddress = addr; + emit SetConnectorZEVM(zetaConnectorZEVMAddress); + } +} diff --git a/v2/test/utils/SystemContractMock.sol b/v2/test/utils/SystemContractMock.sol new file mode 100644 index 00000000..76617a7f --- /dev/null +++ b/v2/test/utils/SystemContractMock.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "src/zevm/interfaces/zContract.sol"; +import "src/zevm/interfaces/IZRC20.sol"; + +interface SystemContractErrors { + error CallerIsNotFungibleModule(); + + error InvalidTarget(); + + error CantBeIdenticalAddresses(); + + error CantBeZeroAddress(); +} + +contract SystemContractMock is SystemContractErrors { + mapping(uint256 => uint256) public gasPriceByChainId; + mapping(uint256 => address) public gasCoinZRC20ByChainId; + mapping(uint256 => address) public gasZetaPoolByChainId; + + address public wZetaContractAddress; + address public uniswapv2FactoryAddress; + address public uniswapv2Router02Address; + + event SystemContractDeployed(); + event SetGasPrice(uint256, uint256); + event SetGasCoin(uint256, address); + event SetGasZetaPool(uint256, address); + event SetWZeta(address); + + constructor(address wzeta_, address uniswapv2Factory_, address uniswapv2Router02_) { + wZetaContractAddress = wzeta_; + uniswapv2FactoryAddress = uniswapv2Factory_; + uniswapv2Router02Address = uniswapv2Router02_; + emit SystemContractDeployed(); + } + + // fungible module updates the gas price oracle periodically + function setGasPrice(uint256 chainID, uint256 price) external { + gasPriceByChainId[chainID] = price; + emit SetGasPrice(chainID, price); + } + + function setGasCoinZRC20(uint256 chainID, address zrc20) external { + gasCoinZRC20ByChainId[chainID] = zrc20; + emit SetGasCoin(chainID, zrc20); + } + + function setWZETAContractAddress(address addr) external { + wZetaContractAddress = addr; + emit SetWZeta(wZetaContractAddress); + } + + // returns sorted token addresses, used to handle return values from pairs sorted in this order + function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { + if (tokenA == tokenB) revert CantBeIdenticalAddresses(); + (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); + if (token0 == address(0)) revert CantBeZeroAddress(); + } + + function uniswapv2PairFor(address factory, address tokenA, address tokenB) public pure returns (address pair) { + (address token0, address token1) = sortTokens(tokenA, tokenB); + pair = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + factory, + keccak256(abi.encodePacked(token0, token1)), + hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f" // init code hash + ) + ) + ) + ) + ); + } + + function onCrossChainCall(address target, address zrc20, uint256 amount, bytes calldata message) external { + zContext memory context = zContext({sender: msg.sender, origin: "", chainID: block.chainid}); + IZRC20(zrc20).transfer(target, amount); + zContract(target).onCrossChainCall(context, zrc20, amount, message); + } +} diff --git a/v2/src/evm/TestERC20.sol b/v2/test/utils/TestERC20.sol similarity index 100% rename from v2/src/evm/TestERC20.sol rename to v2/test/utils/TestERC20.sol diff --git a/v2/test/utils/TestZContract.sol b/v2/test/utils/TestZContract.sol new file mode 100644 index 00000000..065a7139 --- /dev/null +++ b/v2/test/utils/TestZContract.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "src/zevm/interfaces/zContract.sol"; + +// @notice This contract is used just for testing +contract TestZContract is UniversalContract { + event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); + event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); + + function onCrossChainCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) external override { + string memory decodedMessage; + if (message.length > 0) { + decodedMessage = abi.decode(message, (string)); + } + emit ContextData(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); + } + + function onRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) external override { + string memory decodedMessage; + if (message.length > 0) { + decodedMessage = abi.decode(message, (string)); + } + emit ContextDataRevert(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); + } + + receive() external payable {} + fallback() external payable {} +} \ No newline at end of file diff --git a/v2/test/utils/WZETA.sol b/v2/test/utils/WZETA.sol new file mode 100644 index 00000000..fbf0cabb --- /dev/null +++ b/v2/test/utils/WZETA.sol @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract WETH9 { + string public name = "Wrapped Ether"; + string public symbol = "WETH"; + uint8 public decimals = 18; + + event Approval(address indexed src, address indexed guy, uint256 wad); + event Transfer(address indexed src, address indexed dst, uint256 wad); + event Deposit(address indexed dst, uint256 wad); + event Withdrawal(address indexed src, uint256 wad); + + mapping(address => uint256) public balanceOf; + mapping(address => mapping(address => uint256)) public allowance; + + receive() external payable { + deposit(); + } + + function deposit() public payable { + balanceOf[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value); + } + + function withdraw(uint256 wad) public { + require(balanceOf[msg.sender] >= wad, ""); + balanceOf[msg.sender] -= wad; + payable(msg.sender).transfer(wad); + emit Withdrawal(msg.sender, wad); + } + + function totalSupply() public view returns (uint256) { + return address(this).balance; + } + + function approve(address guy, uint256 wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + emit Approval(msg.sender, guy, wad); + return true; + } + + function transfer(address dst, uint256 wad) public returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom( + address src, + address dst, + uint256 wad + ) public returns (bool) { + require(balanceOf[src] >= wad, ""); + + if ( + src != msg.sender && allowance[src][msg.sender] != type(uint256).max + ) { + require(allowance[src][msg.sender] >= wad, ""); + allowance[src][msg.sender] -= wad; + } + + balanceOf[src] -= wad; + balanceOf[dst] += wad; + + emit Transfer(src, dst, wad); + + return true; + } +} \ No newline at end of file diff --git a/v2/test/utils/ZRC20New.sol b/v2/test/utils/ZRC20New.sol new file mode 100644 index 00000000..e8c94cae --- /dev/null +++ b/v2/test/utils/ZRC20New.sol @@ -0,0 +1,298 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; +import "src/zevm/interfaces/IZRC20.sol"; +import "src/zevm/interfaces/ISystem.sol"; + +/** + * @dev Custom errors for ZRC20 + */ +interface ZRC20Errors { + // @dev: Error thrown when caller is not the fungible module + error CallerIsNotFungibleModule(); + error InvalidSender(); + error GasFeeTransferFailed(); + error ZeroGasCoin(); + error ZeroGasPrice(); + error LowAllowance(); + error LowBalance(); + error ZeroAddress(); +} + +// NOTE: this is exactly the same as ZRC20, except gateway contract address is set at deployment +// and used to allow deposit. This is first version, it might change in the future. +contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { + /// @notice Fungible address is always the same, maintained at the protocol level + address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; + /// @notice Chain id.abi + uint256 public immutable CHAIN_ID; + /// @notice Coin type, checkout Interfaces.sol. + CoinType public immutable COIN_TYPE; + /// @notice System contract address. + address public SYSTEM_CONTRACT_ADDRESS; + /// @notice Gateway contract address. + address public GATEWAY_CONTRACT_ADDRESS; + /// @notice Gas limit. + uint256 public GAS_LIMIT; + /// @notice Protocol flat fee. + uint256 public override PROTOCOL_FLAT_FEE; + + mapping(address => uint256) private _balances; + mapping(address => mapping(address => uint256)) private _allowances; + uint256 private _totalSupply; + string private _name; + string private _symbol; + uint8 private _decimals; + + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + + /** + * @dev Only fungible module modifier. + */ + modifier onlyFungible() { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + _; + } + + /** + * @dev The only one allowed to deploy new ZRC20 is fungible address. + */ + constructor( + string memory name_, + string memory symbol_, + uint8 decimals_, + uint256 chainid_, + CoinType coinType_, + uint256 gasLimit_, + address systemContractAddress_, + address gatewayContractAddress_ + ) { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + _name = name_; + _symbol = symbol_; + _decimals = decimals_; + CHAIN_ID = chainid_; + COIN_TYPE = coinType_; + GAS_LIMIT = gasLimit_; + SYSTEM_CONTRACT_ADDRESS = systemContractAddress_; + GATEWAY_CONTRACT_ADDRESS = gatewayContractAddress_; + } + + /** + * @dev ZRC20 name + * @return name as string + */ + function name() public view virtual override returns (string memory) { + return _name; + } + + /** + * @dev ZRC20 symbol. + * @return symbol as string. + */ + function symbol() public view virtual override returns (string memory) { + return _symbol; + } + + /** + * @dev ZRC20 decimals. + * @return returns uint8 decimals. + */ + function decimals() public view virtual override returns (uint8) { + return _decimals; + } + + /** + * @dev ZRC20 total supply. + * @return returns uint256 total supply. + */ + function totalSupply() public view virtual override returns (uint256) { + return _totalSupply; + } + + /** + * @dev Returns ZRC20 balance of an account. + * @param account, account address for which balance is requested. + * @return uint256 account balance. + */ + function balanceOf(address account) public view virtual override returns (uint256) { + return _balances[account]; + } + + /** + * @dev Returns ZRC20 balance of an account. + * @param recipient, recipiuent address to which transfer is done. + * @return true/false if transfer succeeded/failed. + */ + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + _transfer(_msgSender(), recipient, amount); + return true; + } + + /** + * @dev Returns token allowance from owner to spender. + * @param owner, owner address. + * @return uint256 allowance. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev Approves amount transferFrom for spender. + * @param spender, spender address. + * @param amount, amount to approve. + * @return true/false if succeeded/failed. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + _approve(_msgSender(), spender, amount); + return true; + } + + /** + * @dev Transfers tokens from sender to recipient. + * @param sender, sender address. + * @param recipient, recipient address. + * @param amount, amount to transfer. + * @return true/false if succeeded/failed. + */ + function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { + _transfer(sender, recipient, amount); + + uint256 currentAllowance = _allowances[sender][_msgSender()]; + if (currentAllowance < amount) revert LowAllowance(); + + _approve(sender, _msgSender(), currentAllowance - amount); + + return true; + } + + /** + * @dev Burns an amount of tokens. + * @param amount, amount to burn. + * @return true/false if succeeded/failed. + */ + function burn(uint256 amount) external override returns (bool) { + _burn(msg.sender, amount); + return true; + } + + function _transfer(address sender, address recipient, uint256 amount) internal virtual { + if (sender == address(0)) revert ZeroAddress(); + if (recipient == address(0)) revert ZeroAddress(); + + uint256 senderBalance = _balances[sender]; + if (senderBalance < amount) revert LowBalance(); + + _balances[sender] = senderBalance - amount; + _balances[recipient] += amount; + + emit Transfer(sender, recipient, amount); + } + + function _mint(address account, uint256 amount) internal virtual { + if (account == address(0)) revert ZeroAddress(); + + _totalSupply += amount; + _balances[account] += amount; + emit Transfer(address(0), account, amount); + } + + function _burn(address account, uint256 amount) internal virtual { + if (account == address(0)) revert ZeroAddress(); + + uint256 accountBalance = _balances[account]; + if (accountBalance < amount) revert LowBalance(); + + _balances[account] = accountBalance - amount; + _totalSupply -= amount; + + emit Transfer(account, address(0), amount); + } + + function _approve(address owner, address spender, uint256 amount) internal virtual { + if (owner == address(0)) revert ZeroAddress(); + if (spender == address(0)) revert ZeroAddress(); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Deposits corresponding tokens from external chain, only callable by Fungible module. + * @param to, recipient address. + * @param amount, amount to deposit. + * @return true/false if succeeded/failed. + */ + function deposit(address to, uint256 amount) external override returns (bool) { + if (msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS && msg.sender != GATEWAY_CONTRACT_ADDRESS) revert InvalidSender(); + _mint(to, amount); + emit Deposit(abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), to, amount); + return true; + } + + /** + * @dev Withdraws gas fees. + * @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw() + */ + function withdrawGasFee() public view override returns (address, uint256) { + address gasZRC20 = ISystem(SYSTEM_CONTRACT_ADDRESS).gasCoinZRC20ByChainId(CHAIN_ID); + if (gasZRC20 == address(0)) revert ZeroGasCoin(); + + uint256 gasPrice = ISystem(SYSTEM_CONTRACT_ADDRESS).gasPriceByChainId(CHAIN_ID); + if (gasPrice == 0) { + revert ZeroGasPrice(); + } + uint256 gasFee = gasPrice * GAS_LIMIT + PROTOCOL_FLAT_FEE; + return (gasZRC20, gasFee); + } + + /** + * @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the outbound chain + * this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee. + * @param to, recipient address. + * @param amount, amount to deposit. + * @return true/false if succeeded/failed. + */ + function withdraw(bytes memory to, uint256 amount) external override returns (bool) { + (address gasZRC20, uint256 gasFee) = withdrawGasFee(); + if (!IZRC20(gasZRC20).transferFrom(msg.sender, FUNGIBLE_MODULE_ADDRESS, gasFee)) { + revert GasFeeTransferFailed(); + } + _burn(msg.sender, amount); + emit Withdrawal(msg.sender, to, amount, gasFee, PROTOCOL_FLAT_FEE); + return true; + } + + /** + * @dev Updates system contract address. Can only be updated by the fungible module. + * @param addr, new system contract address. + */ + function updateSystemContractAddress(address addr) external onlyFungible { + SYSTEM_CONTRACT_ADDRESS = addr; + emit UpdatedSystemContract(addr); + } + + /** + * @dev Updates gas limit. Can only be updated by the fungible module. + * @param gasLimit, new gas limit. + */ + function updateGasLimit(uint256 gasLimit) external onlyFungible { + GAS_LIMIT = gasLimit; + emit UpdatedGasLimit(gasLimit); + } + + /** + * @dev Updates protocol flat fee. Can only be updated by the fungible module. + * @param protocolFlatFee, new protocol flat fee. + */ + function updateProtocolFlatFee(uint256 protocolFlatFee) external onlyFungible { + PROTOCOL_FLAT_FEE = protocolFlatFee; + emit UpdatedProtocolFlatFee(protocolFlatFee); + } +} From 394e7c5b26f587022b68644c74d3069a9e763e28 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 21:35:19 +0200 Subject: [PATCH 17/60] forge fmt --- v2/foundry.toml | 13 +- v2/src/evm/ERC20CustodyNew.sol | 35 +++- v2/src/evm/GatewayEVM.sol | 79 ++++++--- v2/src/evm/ZetaConnectorNative.sol | 38 +++- v2/src/evm/ZetaConnectorNewBase.sol | 22 ++- v2/src/evm/ZetaConnectorNonNative.sol | 35 +++- v2/src/evm/interfaces/IERC20CustodyNew.sol | 2 +- v2/src/evm/interfaces/IGatewayEVM.sol | 14 +- v2/src/evm/interfaces/IZetaConnector.sol | 2 +- v2/src/evm/interfaces/IZetaNonEthNew.sol | 2 +- v2/src/zevm/GatewayZEVM.sol | 70 +++++--- v2/src/zevm/interfaces/IGatewayZEVM.sol | 24 ++- v2/src/zevm/interfaces/IWZeta.sol | 22 +-- v2/src/zevm/interfaces/zContract.sol | 16 +- v2/test/GatewayEVM.t.sol | 111 ++++++------ v2/test/GatewayEVMUpgrade.t.sol | 32 ++-- v2/test/GatewayEVMZEVM.t.sol | 84 ++++----- v2/test/GatewayZEVM.t.sol | 194 ++++++++------------- v2/test/ZetaConnectorNative.t.sol | 52 +++--- v2/test/ZetaConnectorNonNative.t.sol | 50 ++++-- v2/test/utils/GatewayEVMUpgradeTest.sol | 78 +++++---- v2/test/utils/ReceiverEVM.sol | 9 +- v2/test/utils/SenderZEVM.sol | 16 +- v2/test/utils/SystemContract.sol | 9 +- v2/test/utils/SystemContractMock.sol | 4 +- v2/test/utils/TestERC20.sol | 4 +- v2/test/utils/TestZContract.sol | 16 +- v2/test/utils/WZETA.sol | 12 +- v2/test/utils/ZRC20New.sol | 16 +- v2/test/utils/Zeta.non-eth.sol | 2 +- 30 files changed, 604 insertions(+), 459 deletions(-) diff --git a/v2/foundry.toml b/v2/foundry.toml index 00fa8ca7..43e5919b 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -22,4 +22,15 @@ ffi = true ast = true build_info = true extra_output = ["storageLayout"] -evm_version = "london" \ No newline at end of file +evm_version = "london" + +[fmt] +bracket_spacing = true +int_types = "long" +line_length = 120 +multiline_func_header = "all" +number_underscore = "thousands" +quote_style = "double" +tab_width = 4 +wrap_comments = true +sort_imports=true diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol index 890728db..fda71ade 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -26,14 +26,15 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen } constructor(address _gateway, address _tssAddress) { - if (_gateway == address(0) || _tssAddress == address(0)) { + if (_gateway == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); tssAddress = _tssAddress; } - // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract call + // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract + // call function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { IERC20(token).safeTransfer(to, amount); @@ -41,8 +42,18 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen } // WithdrawAndCall is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls + // the contract + function withdrawAndCall( + address token, + address to, + uint256 amount, + bytes calldata data + ) + public + nonReentrant + onlyTSS + { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -53,8 +64,18 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen } // WithdrawAndRevert is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls + // the contract + function withdrawAndRevert( + address token, + address to, + uint256 amount, + bytes calldata data + ) + public + nonReentrant + onlyTSS + { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -63,4 +84,4 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen emit WithdrawAndRevert(token, to, amount, data); } -} \ No newline at end of file +} diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index ffd8ba23..944e4f12 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -1,21 +1,28 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "./ZetaConnectorNewBase.sol"; +import "./interfaces/IGatewayEVM.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "./interfaces/IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; /** * @title GatewayEVM * @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. * @dev The contract doesn't hold any funds and should never have active allowances. */ -contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { +contract GatewayEVM is + Initializable, + OwnableUpgradeable, + UUPSUpgradeable, + IGatewayEVMErrors, + IGatewayEVMEvents, + ReentrancyGuardUpgradeable +{ using SafeERC20 for IERC20; /// @notice The address of the custody contract. @@ -52,7 +59,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate if (_tssAddress == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); } - + __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); @@ -61,10 +68,10 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate zetaToken = _zetaToken; } - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } function _execute(address destination, bytes calldata data) internal returns (bytes memory) { - (bool success, bytes memory result) = destination.call{value: msg.value}(data); + (bool success, bytes memory result) = destination.call{ value: msg.value }(data); if (!success) revert ExecutionFailed(); return result; @@ -73,17 +80,17 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Called by the TSS // Calling onRevert directly function executeRevert(address destination, bytes calldata data) public payable onlyTSS { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); + (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); - + emit Reverted(destination, msg.value, data); } // Called by the TSS // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 // It can be also used for contract call without asset movement - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); emit Executed(destination, msg.value, data); @@ -93,23 +100,29 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Called by the ERC20Custody contract // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes + // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance + // system + // It provides allowance to destination contract and call destination contract. In the end, it remove remaining + // allowance and transfer remaining tokens back to the custody contract for security purposes function executeWithERC20( address token, address to, uint256 amount, bytes calldata data - ) public nonReentrant onlyCustodyOrConnector { + ) + public + nonReentrant + onlyCustodyOrConnector + { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens - if(!resetApproval(token, to)) revert ApprovalFailed(); - if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); + if (!resetApproval(token, to)) revert ApprovalFailed(); + if (!IERC20(token).approve(to, amount)) revert ApprovalFailed(); // Execute the call on the target contract bytes memory result = _execute(to, data); // Reset approval - if(!resetApproval(token, to)) revert ApprovalFailed(); + if (!resetApproval(token, to)) revert ApprovalFailed(); // Transfer any remaining tokens back to the custody/connector contract uint256 remainingBalance = IERC20(token).balanceOf(address(this)); @@ -127,7 +140,11 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate address to, uint256 amount, bytes calldata data - ) external nonReentrant onlyCustodyOrConnector { + ) + external + nonReentrant + onlyCustodyOrConnector + { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); @@ -139,10 +156,10 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Deposit ETH to tss function deposit(address receiver) external payable { if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); + (bool deposited,) = tssAddress.call{ value: msg.value }(""); if (deposited == false) revert DepositFailed(); - + emit Deposit(msg.sender, receiver, msg.value, address(0), ""); } @@ -158,17 +175,17 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate // Deposit ETH to tss and call an omnichain smart contract function depositAndCall(address receiver, bytes calldata payload) external payable { if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); + (bool deposited,) = tssAddress.call{ value: msg.value }(""); if (deposited == false) revert DepositFailed(); - + emit Deposit(msg.sender, receiver, msg.value, address(0), payload); } // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { if (amount == 0) revert InsufficientERC20Amount(); - + transferFromToAssetHandler(msg.sender, asset, amount); emit Deposit(msg.sender, receiver, amount, asset, payload); @@ -186,7 +203,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate custody = _custody; } - function setConnector(address _zetaConnector) external onlyTSS { + function setConnector(address _zetaConnector) external onlyTSS { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); @@ -198,25 +215,29 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate } function transferFromToAssetHandler(address from, address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector + if (token == zetaToken) { + // transfer to connector // transfer amount to gateway IERC20(token).safeTransferFrom(from, address(this), amount); // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody + } else { + // transfer to custody IERC20(token).safeTransferFrom(from, custody, amount); } } function transferToAssetHandler(address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector + if (token == zetaToken) { + // transfer to connector // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody + } else { + // transfer to custody IERC20(token).safeTransfer(custody, amount); } } diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index afdbcda5..c8611c3b 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -8,18 +8,33 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; contract ZetaConnectorNative is ZetaConnectorNewBase { using SafeERC20 for IERC20; - constructor(address _gateway, address _zetaToken, address _tssAddress) + constructor( + address _gateway, + address _zetaToken, + address _tssAddress + ) ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} + { } - // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call + // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without + // contract call function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { IERC20(zetaToken).safeTransfer(to, amount); emit Withdraw(to, amount); } // @dev withdrawAndCall is called by TSS address, it transfers zetaToken to the gateway and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -29,8 +44,19 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { emit WithdrawAndCall(to, amount, data); } - // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a + // contract + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol index 443603b9..67ab2a57 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -37,9 +37,23 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; - - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + virtual; + + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + virtual; function receiveTokens(uint256 amount) external virtual; -} \ No newline at end of file +} diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index c4ed9fce..4ec7365f 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -6,9 +6,13 @@ import "./interfaces/IZetaNonEthNew.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract ZetaConnectorNonNative is ZetaConnectorNewBase { - constructor(address _gateway, address _zetaToken, address _tssAddress) + constructor( + address _gateway, + address _zetaToken, + address _tssAddress + ) ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} + { } // @dev withdraw is called by TSS address, it mints zetaToken to the destination address function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { @@ -17,7 +21,17 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { } // @dev withdrawAndCall is called by TSS address, it mints zetaToken and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Mint zetaToken to the Gateway contract IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); @@ -27,8 +41,19 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { emit WithdrawAndCall(to, amount, data); } - // @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + // @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a + // contract + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Mint zetaToken to the Gateway contract IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); diff --git a/v2/src/evm/interfaces/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20CustodyNew.sol index 6648b227..fa762ef3 100644 --- a/v2/src/evm/interfaces/IERC20CustodyNew.sol +++ b/v2/src/evm/interfaces/IERC20CustodyNew.sol @@ -10,4 +10,4 @@ interface IERC20CustodyNewEvents { interface IERC20CustodyNewErrors { error ZeroAddress(); error InvalidSender(); -} \ No newline at end of file +} diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index 056d1edc..944d3283 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -22,21 +22,11 @@ interface IGatewayEVMErrors { } interface IGatewayEVM { - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; + function executeWithERC20(address token, address to, uint256 amount, bytes calldata data) external; function execute(address destination, bytes calldata data) external payable returns (bytes memory); - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; + function revertWithERC20(address token, address to, uint256 amount, bytes calldata data) external; } interface Revertable { diff --git a/v2/src/evm/interfaces/IZetaConnector.sol b/v2/src/evm/interfaces/IZetaConnector.sol index b76a12f4..615fadd6 100644 --- a/v2/src/evm/interfaces/IZetaConnector.sol +++ b/v2/src/evm/interfaces/IZetaConnector.sol @@ -5,4 +5,4 @@ interface IZetaConnectorEvents { event Withdraw(address indexed to, uint256 amount); event WithdrawAndCall(address indexed to, uint256 amount, bytes data); event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); -} \ No newline at end of file +} diff --git a/v2/src/evm/interfaces/IZetaNonEthNew.sol b/v2/src/evm/interfaces/IZetaNonEthNew.sol index 1d4e92cb..c2345ccb 100644 --- a/v2/src/evm/interfaces/IZetaNonEthNew.sol +++ b/v2/src/evm/interfaces/IZetaNonEthNew.sol @@ -10,4 +10,4 @@ interface IZetaNonEthNew is IERC20 { function burnFrom(address account, uint256 amount) external; function mint(address mintee, uint256 value, bytes32 internalSendHash) external; -} \ No newline at end of file +} diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index a52fba59..de9241cb 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -1,18 +1,25 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "./interfaces/IGatewayZEVM.sol"; +import "./interfaces/IWZETA.sol"; +import "./interfaces/IZRC20.sol"; +import "./interfaces/zContract.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "./interfaces/IZRC20.sol"; -import "./interfaces/zContract.sol"; -import "./interfaces/IGatewayZEVM.sol"; -import "./interfaces/IWZETA.sol"; // The GatewayZEVM contract is the endpoint to call smart contracts on omnichain // The contract doesn't hold any funds and should never have active allowances -contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable { +contract GatewayZEVM is + IGatewayZEVMEvents, + IGatewayZEVMErrors, + Initializable, + OwnableUpgradeable, + UUPSUpgradeable, + ReentrancyGuardUpgradeable +{ error ZeroAddress(); address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; @@ -35,14 +42,14 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O if (_zetaToken == address(0)) { revert ZeroAddress(); } - + __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); zetaToken = _zetaToken; } - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } /// @dev Receive function to receive ZETA from WETH9.withdraw(). receive() external payable { @@ -67,7 +74,7 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O function _transferZETA(uint256 amount, address to) internal { if (!IWETH9(zetaToken).transferFrom(msg.sender, address(this), amount)) revert FailedZetaSent(); IWETH9(zetaToken).withdraw(amount); - (bool sent, ) = to.call{value: amount}(""); + (bool sent,) = to.call{ value: amount }(""); if (!sent) revert FailedZetaSent(); } @@ -78,7 +85,15 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O } // Withdraw ZRC20 tokens and call smart contract on external chain - function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external nonReentrant { + function withdrawAndCall( + bytes memory receiver, + uint256 amount, + address zrc20, + bytes calldata message + ) + external + nonReentrant + { uint256 gasFee = _withdrawZRC20(amount, zrc20); emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); } @@ -92,7 +107,9 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O // Withdraw ZETA and call smart contract on external chain function withdrawAndCall(uint256 amount, bytes calldata message) external nonReentrant { _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); - emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message); + emit Withdrawal( + msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message + ); } // Call smart contract on external chain without asset transfer @@ -101,11 +118,7 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O } // Deposit foreign coins into ZRC20 - function deposit( - address zrc20, - uint256 amount, - address target - ) external onlyFungible { + function deposit(address zrc20, uint256 amount, address target) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -118,7 +131,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } @@ -129,7 +145,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -142,7 +161,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); _transferZETA(amount, target); @@ -156,7 +178,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { UniversalContract(target).onRevert(context, zrc20, amount, message); } @@ -167,7 +192,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol index 501ac72d..d7d83497 100644 --- a/v2/src/zevm/interfaces/IGatewayZEVM.sol +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -10,11 +10,7 @@ interface IGatewayZEVM { function call(bytes memory receiver, bytes calldata message) external; - function deposit( - address zrc20, - uint256 amount, - address target - ) external; + function deposit(address zrc20, uint256 amount, address target) external; function execute( zContext calldata context, @@ -22,7 +18,8 @@ interface IGatewayZEVM { uint256 amount, address target, bytes calldata message - ) external; + ) + external; function depositAndCall( zContext calldata context, @@ -30,12 +27,21 @@ interface IGatewayZEVM { uint256 amount, address target, bytes calldata message - ) external; + ) + external; } interface IGatewayZEVMEvents { event Call(address indexed sender, bytes receiver, bytes message); - event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); + event Withdrawal( + address indexed from, + address zrc20, + bytes to, + uint256 value, + uint256 gasfee, + uint256 protocolFlatFee, + bytes message + ); } interface IGatewayZEVMErrors { @@ -48,4 +54,4 @@ interface IGatewayZEVMErrors { error InvalidTarget(); error FailedZetaSent(); error OnlyWZETAOrFungible(); -} \ No newline at end of file +} diff --git a/v2/src/zevm/interfaces/IWZeta.sol b/v2/src/zevm/interfaces/IWZeta.sol index 2efb7a2e..536ca4c4 100644 --- a/v2/src/zevm/interfaces/IWZeta.sol +++ b/v2/src/zevm/interfaces/IWZeta.sol @@ -2,24 +2,24 @@ pragma solidity ^0.8.20; interface IWETH9 { - event Approval(address indexed owner, address indexed spender, uint value); - event Transfer(address indexed from, address indexed to, uint value); - event Deposit(address indexed dst, uint wad); - event Withdrawal(address indexed src, uint wad); + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + event Deposit(address indexed dst, uint256 wad); + event Withdrawal(address indexed src, uint256 wad); - function totalSupply() external view returns (uint); + function totalSupply() external view returns (uint256); - function balanceOf(address owner) external view returns (uint); + function balanceOf(address owner) external view returns (uint256); - function allowance(address owner, address spender) external view returns (uint); + function allowance(address owner, address spender) external view returns (uint256); - function approve(address spender, uint wad) external returns (bool); + function approve(address spender, uint256 wad) external returns (bool); - function transfer(address to, uint wad) external returns (bool); + function transfer(address to, uint256 wad) external returns (bool); - function transferFrom(address from, address to, uint wad) external returns (bool); + function transferFrom(address from, address to, uint256 wad) external returns (bool); function deposit() external payable; - function withdraw(uint wad) external; + function withdraw(uint256 wad) external; } diff --git a/v2/src/zevm/interfaces/zContract.sol b/v2/src/zevm/interfaces/zContract.sol index 38ca4dc0..4470994f 100644 --- a/v2/src/zevm/interfaces/zContract.sol +++ b/v2/src/zevm/interfaces/zContract.sol @@ -20,7 +20,8 @@ interface zContract { address zrc20, uint256 amount, bytes calldata message - ) external; + ) + external; } interface UniversalContract { @@ -29,14 +30,9 @@ interface UniversalContract { address zrc20, uint256 amount, bytes calldata message - ) external; + ) + external; // TODO: define onRevert - function onRevert( - revertContext calldata context, - address zrc20, - uint256 amount, - bytes calldata message - ) external; - -} \ No newline at end of file + function onRevert(revertContext calldata context, address zrc20, uint256 amount, bytes calldata message) external; +} diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index a0d5f4f5..c62904c8 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -4,18 +4,19 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/evm/GatewayEVM.sol"; import "./utils/ReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; -import "src/evm/ZetaConnectorNonNative.sol"; + import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; -import "src/evm/interfaces/IERC20CustodyNew.sol"; import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { using SafeERC20 for IERC20; @@ -40,11 +41,10 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); - + custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); @@ -56,8 +56,8 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); + token.mint(owner, 1_000_000); + token.transfer(address(custody), 500_000); } function testForwardCallToReceiveNonPayable() public { @@ -68,7 +68,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver bool flag = true; bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); - + vm.expectCall(address(receiver), 0, data); vm.expectEmit(true, true, true, true, address(receiver)); emit ReceivedNonPayable(address(gateway), str, num, flag); @@ -85,7 +85,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver num[0] = 42; bool flag = true; bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); - + vm.prank(owner); vm.expectRevert(InvalidSender.selector); gateway.execute(address(receiver), data); @@ -99,21 +99,21 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(0, address(receiver).balance); bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - + vm.expectCall(address(receiver), 1 ether, data); vm.expectEmit(true, true, true, true, address(receiver)); emit ReceivedPayable(address(gateway), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gateway)); emit Executed(address(receiver), 1 ether, data); vm.prank(tssAddress); - gateway.execute{value: value}(address(receiver), data); + gateway.execute{ value: value }(address(receiver), data); assertEq(value, address(receiver).balance); } function testForwardCallToReceiveNoParams() public { bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - + vm.expectCall(address(receiver), 0, data); vm.expectEmit(true, true, true, true, address(receiver)); emit ReceivedNoParams(address(gateway)); @@ -124,8 +124,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -133,8 +134,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testRevertWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -142,8 +144,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testForwardCallToReceiveERC20ThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); uint256 balanceBefore = token.balanceOf(destination); assertEq(balanceBefore, 0); uint256 balanceBeforeCustody = token.balanceOf(address(custody)); @@ -175,8 +178,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -185,16 +189,18 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); } function testForwardCallToReceiveERC20PartialThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); uint256 balanceBefore = token.balanceOf(destination); assertEq(balanceBefore, 0); uint256 balanceBeforeCustody = token.balanceOf(address(custody)); @@ -226,9 +232,10 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + vm.prank(owner); vm.expectRevert(InvalidSender.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); @@ -236,15 +243,16 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - + bytes memory data = + abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); } function testForwardCallToReceiveNoParamsThroughCustody() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes memory data = abi.encodeWithSignature("receiveNoParams()"); uint256 balanceBefore = token.balanceOf(destination); assertEq(balanceBefore, 0); @@ -277,7 +285,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawThroughCustody() public { - uint256 amount = 100000; + uint256 amount = 100_000; uint256 balanceBefore = token.balanceOf(destination); assertEq(balanceBefore, 0); uint256 balanceBeforeCustody = token.balanceOf(address(custody)); @@ -303,7 +311,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -311,7 +319,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawAndRevertThroughCustody() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes memory data = abi.encodePacked("hello"); uint256 balanceBefore = token.balanceOf(address(receiver)); assertEq(balanceBefore, 0); @@ -347,7 +355,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes memory data = abi.encodePacked("hello"); vm.prank(owner); @@ -376,7 +384,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.expectEmit(true, true, true, true, address(gateway)); emit Reverted(address(receiver), 1 ether, data); vm.prank(tssAddress); - gateway.executeRevert{value: value}(address(receiver), data); + gateway.executeRevert{ value: value }(address(receiver), data); // Verify that the tokens were transferred to the receiver address uint256 balanceAfter = address(receiver).balance; @@ -389,7 +397,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.prank(owner); vm.expectRevert(InvalidSender.selector); - gateway.executeRevert{value: value}(address(receiver), data); + gateway.executeRevert{ value: value }(address(receiver), data); } } @@ -406,7 +414,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR address destination; address tssAddress; - uint256 ownerAmount = 1000000; + uint256 ownerAmount = 1_000_000; function setUp() public { owner = address(this); @@ -417,8 +425,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); @@ -436,7 +443,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR } function testDepositERC20ToCustody() public { - uint256 amount = 100000; + uint256 amount = 100_000; uint256 custodyBalanceBefore = token.balanceOf(address(custody)); assertEq(0, custodyBalanceBefore); @@ -463,12 +470,12 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR } function testDepositEthToTss() public { - uint256 amount = 100000; + uint256 amount = 100_000; uint256 tssBalanceBefore = tssAddress.balance; vm.expectEmit(true, true, true, true, address(gateway)); emit Deposit(owner, destination, amount, address(0), ""); - gateway.deposit{value: amount}(destination); + gateway.deposit{ value: amount }(destination); uint256 tssBalanceAfter = tssAddress.balance; assertEq(tssBalanceBefore + amount, tssBalanceAfter); @@ -478,11 +485,11 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR uint256 amount = 0; vm.expectRevert("InsufficientETHAmount"); - gateway.deposit{value: amount}(destination); + gateway.deposit{ value: amount }(destination); } function testDepositERC20ToCustodyWithPayload() public { - uint256 amount = 100000; + uint256 amount = 100_000; uint256 custodyBalanceBefore = token.balanceOf(address(custody)); assertEq(0, custodyBalanceBefore); @@ -511,13 +518,13 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR } function testDepositEthToTssWithPayload() public { - uint256 amount = 100000; + uint256 amount = 100_000; uint256 tssBalanceBefore = tssAddress.balance; bytes memory payload = abi.encodeWithSignature("hello(address)", destination); vm.expectEmit(true, true, true, true, address(gateway)); emit Deposit(owner, destination, amount, address(0), payload); - gateway.depositAndCall{value: amount}(destination, payload); + gateway.depositAndCall{ value: amount }(destination, payload); uint256 tssBalanceAfter = tssAddress.balance; assertEq(tssBalanceBefore + amount, tssBalanceAfter); @@ -528,7 +535,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR bytes memory payload = abi.encodeWithSignature("hello(address)", destination); vm.expectRevert("InsufficientETHAmount"); - gateway.depositAndCall{value: amount}(destination, payload); + gateway.depositAndCall{ value: amount }(destination, payload); } function testCallWithPayload() public { @@ -538,4 +545,4 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR emit Call(owner, destination, payload); gateway.call(destination, payload); } -} \ No newline at end of file +} diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index eb9f39bd..69243933 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -4,21 +4,23 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/evm/GatewayEVM.sol"; import "./utils/GatewayEVMUpgradeTest.sol"; + +import "./utils/IReceiverEVM.sol"; import "./utils/ReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; -import "src/evm/ZetaConnectorNonNative.sol"; import "./utils/TestERC20.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; -import "./utils/IReceiverEVM.sol"; contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; + event ExecutedV2(address indexed destination, uint256 value, bytes data); address proxy; @@ -41,8 +43,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); @@ -57,8 +58,8 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); + token.mint(owner, 1_000_000); + token.transfer(address(custody), 500_000); } function testUpgradeAndForwardCallToReceivePayable() public { @@ -70,12 +71,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents bool flag = true; uint256 value = 1 ether; - Upgrades.upgradeProxy( - proxy, - "GatewayEVMUpgradeTest.sol", - "", - owner - ); + Upgrades.upgradeProxy(proxy, "GatewayEVMUpgradeTest.sol", "", owner); bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); @@ -85,9 +81,9 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents emit ReceivedPayable(address(gateway), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gateway)); emit ExecutedV2(address(receiver), value, data); - gateway.execute{value: value}(address(receiver), data); + gateway.execute{ value: value }(address(receiver), data); assertEq(custodyBeforeUpgrade, gateway.custody()); assertEq(tssBeforeUpgrade, gateway.tssAddress()); } -} \ No newline at end of file +} diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index be2aaf73..02be5677 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -4,26 +4,35 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/evm/GatewayEVM.sol"; import "./utils/ReceiverEVM.sol"; + +import "./utils/TestERC20.sol"; import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "./utils/TestERC20.sol"; -import "src/zevm/GatewayZEVM.sol"; import "./utils/SenderZEVM.sol"; -import "./utils/ZRC20New.sol"; + import "./utils/SystemContractMock.sol"; +import "./utils/ZRC20New.sol"; +import "src/zevm/GatewayZEVM.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; import "src/zevm/interfaces/IGatewayZEVM.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; - -contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGatewayZEVMEvents, IGatewayZEVMErrors, IReceiverEVMEvents { +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +contract GatewayEVMZEVMTest is + Test, + IGatewayEVMErrors, + IGatewayEVMEvents, + IGatewayZEVMEvents, + IGatewayZEVMErrors, + IReceiverEVMEvents +{ // evm using SafeERC20 for IERC20; @@ -45,7 +54,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate SystemContractMock systemContract; ZRC20New zrc20; address ownerZEVM; - + function setUp() public { // evm ownerEVM = address(this); @@ -57,8 +66,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate zeta = new TestERC20("zeta", "ZETA"); proxyEVM = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gatewayEVM = GatewayEVM(proxyEVM); @@ -72,16 +80,15 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate gatewayEVM.setConnector(address(zetaConnector)); vm.stopPrank(); - token.mint(ownerEVM, 1000000); - token.transfer(address(custody), 500000); + token.mint(ownerEVM, 1_000_000); + token.transfer(address(custody), 500_000); receiverEVM = new ReceiverEVM(); // zevm - proxyZEVM = payable(Upgrades.deployUUPSProxy( - "GatewayZEVM.sol", - abi.encodeCall(GatewayZEVM.initialize, (address(zeta))) - )); + proxyZEVM = payable( + Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zeta)))) + ); gatewayZEVM = GatewayZEVM(proxyZEVM); senderZEVM = new SenderZEVM(address(gatewayZEVM)); @@ -91,12 +98,12 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Zeta, 0, address(systemContract), address(gatewayZEVM)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); - zrc20.deposit(ownerZEVM, 1000000); - zrc20.deposit(address(senderZEVM), 1000000); + zrc20.deposit(ownerZEVM, 1_000_000); + zrc20.deposit(address(senderZEVM), 1_000_000); vm.stopPrank(); vm.prank(ownerZEVM); - zrc20.approve(address(gatewayZEVM), 1000000); + zrc20.approve(address(gatewayZEVM), 1_000_000); vm.deal(tssAddress, 1 ether); } @@ -119,7 +126,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testCallReceiverEVMFromSenderZEVM() public { @@ -142,7 +149,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testWithdrawAndCallReceiverEVMFromZEVM() public { @@ -155,21 +162,10 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayZEVM)); emit Withdrawal( - ownerZEVM, - address(zrc20), - abi.encodePacked(receiverEVM), - 1000000, - 0, - zrc20.PROTOCOL_FLAT_FEE(), - message + ownerZEVM, address(zrc20), abi.encodePacked(receiverEVM), 1_000_000, 0, zrc20.PROTOCOL_FLAT_FEE(), message ); vm.prank(ownerZEVM); - gatewayZEVM.withdrawAndCall( - abi.encodePacked(receiverEVM), - 1000000, - address(zrc20), - message - ); + gatewayZEVM.withdrawAndCall(abi.encodePacked(receiverEVM), 1_000_000, address(zrc20), message); // Check the balance after withdrawal uint256 balanceOfAfterWithdrawal = zrc20.balanceOf(ownerZEVM); @@ -182,7 +178,7 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testWithdrawAndCallReceiverEVMFromSenderZEVM() public { @@ -194,10 +190,16 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate // Encode the function call data and call on zevm uint256 senderBalanceBeforeWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - bytes memory data = abi.encodeWithSignature("withdrawAndCall(bytes,uint256,address,bytes)", abi.encodePacked(receiverEVM), 1000000, address(zrc20), message); + bytes memory data = abi.encodeWithSignature( + "withdrawAndCall(bytes,uint256,address,bytes)", + abi.encodePacked(receiverEVM), + 1_000_000, + address(zrc20), + message + ); vm.expectCall(address(gatewayZEVM), 0, data); vm.prank(ownerZEVM); - senderZEVM.withdrawAndCallReceiver(abi.encodePacked(receiverEVM), 1000000, address(zrc20), str, num, flag); + senderZEVM.withdrawAndCallReceiver(abi.encodePacked(receiverEVM), 1_000_000, address(zrc20), str, num, flag); // Call execute on evm vm.deal(address(gatewayEVM), value); @@ -206,10 +208,10 @@ contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGate vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); // Check the balance after withdrawal uint256 senderBalanceAfterWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); - assertEq(senderBalanceAfterWithdrawal, senderBalanceBeforeWithdrawal - 1000000); + assertEq(senderBalanceAfterWithdrawal, senderBalanceBeforeWithdrawal - 1_000_000); } -} \ No newline at end of file +} diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index fb96f551..a19e0546 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -4,14 +4,16 @@ pragma solidity ^0.8.0; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/zevm/GatewayZEVM.sol"; -import "./utils/ZRC20New.sol"; import "./utils/SystemContract.sol"; -import "src/zevm/interfaces/IZRC20.sol"; + import "./utils/TestZContract.sol"; -import "src/zevm/interfaces/IGatewayZEVM.sol"; + import "./utils/WZETA.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "./utils/ZRC20New.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/zevm/GatewayZEVM.sol"; +import "src/zevm/interfaces/IGatewayZEVM.sol"; +import "src/zevm/interfaces/IZRC20.sol"; contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { address payable proxy; @@ -30,10 +32,9 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zetaToken = new WETH9(); - proxy = payable(Upgrades.deployUUPSProxy( - "GatewayZEVM.sol", - abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken))) - )); + proxy = payable( + Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken)))) + ); gateway = GatewayZEVM(proxy); fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); @@ -44,15 +45,15 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); - vm.deal(fungibleModule, 1000000000); - zetaToken.deposit{value: 10}(); + vm.deal(fungibleModule, 1_000_000_000); + zetaToken.deposit{ value: 10 }(); zetaToken.approve(address(gateway), 10); - zrc20.deposit(owner, 100000); + zrc20.deposit(owner, 100_000); vm.stopPrank(); vm.startPrank(owner); - zrc20.approve(address(gateway), 100000); - zetaToken.deposit{value: 10}(); + zrc20.approve(address(gateway), 100_000); + zetaToken.deposit{ value: 10 }(); zetaToken.approve(address(gateway), 10); vm.stopPrank(); } @@ -128,7 +129,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - + // Verify amount is transfered to fungible module assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); } @@ -151,7 +152,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - + assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); } @@ -171,7 +172,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - + // Verify amount is transfered to fungible module assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); } @@ -195,7 +196,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - + assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); } @@ -227,10 +228,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zetaToken = new WETH9(); - proxy = payable(Upgrades.deployUUPSProxy( - "GatewayZEVM.sol", - abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken))) - )); + proxy = payable( + Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken)))) + ); gateway = GatewayZEVM(proxy); fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); @@ -242,15 +242,15 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); - vm.deal(fungibleModule, 1000000000); - zetaToken.deposit{value: 10}(); + vm.deal(fungibleModule, 1_000_000_000); + zetaToken.deposit{ value: 10 }(); zetaToken.approve(address(gateway), 10); - zrc20.deposit(owner, 100000); + zrc20.deposit(owner, 100_000); vm.stopPrank(); vm.startPrank(owner); - zrc20.approve(address(gateway), 100000); - zetaToken.deposit{value: 10}(); + zrc20.approve(address(gateway), 100_000); + zetaToken.deposit{ value: 10 }(); zetaToken.approve(address(gateway), 10); vm.stopPrank(); } @@ -297,11 +297,8 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testExecuteZContract() public { bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectEmit(true, true, true, true, address(testZContract)); emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); @@ -311,11 +308,8 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testExecuteZContractFailsIfSenderIsNotFungibleModule() public { bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectRevert(CallerIsNotFungibleModule.selector); vm.prank(owner); @@ -324,11 +318,8 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testExecuteRevertZContract() public { bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectEmit(true, true, true, true, address(testZContract)); emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); @@ -336,30 +327,24 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); } - function testExecuteRevertZContractIfSenderIsNotFungibleModule() public { + function testExecuteRevertZContractIfSenderIsNotFungibleModule() public { bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectRevert(CallerIsNotFungibleModule.selector); vm.prank(owner); gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); } - + function testDepositZRC20AndCallZContract() public { uint256 balanceBefore = zrc20.balanceOf(address(testZContract)); assertEq(0, balanceBefore); bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectEmit(true, true, true, true, address(testZContract)); emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); vm.prank(fungibleModule); @@ -371,12 +356,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(CallerIsNotFungibleModule.selector); vm.prank(owner); gateway.depositAndCall(context, address(zrc20), 1, address(testZContract), message); @@ -384,12 +366,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() public { bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndCall(context, address(zrc20), 1, fungibleModule, message); @@ -397,12 +376,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositZRC20AndCallZContractIfTargetIsGateway() public { bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndCall(context, address(zrc20), 1, address(gateway), message); @@ -413,12 +389,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors assertEq(0, balanceBefore); bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectEmit(true, true, true, true, address(testZContract)); emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); vm.prank(fungibleModule); @@ -430,12 +403,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(CallerIsNotFungibleModule.selector); vm.prank(owner); gateway.depositAndRevert(context, address(zrc20), 1, address(testZContract), message); @@ -443,25 +413,19 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() public { bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndRevert(context, address(zrc20), 1, fungibleModule, message); } - function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() public { + function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() public { bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - + revertContext memory context = + revertContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); + vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndRevert(context, address(zrc20), 1, address(gateway), message); @@ -473,11 +437,8 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); uint256 destinationBalanceBefore = address(testZContract).balance; bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectEmit(true, true, true, true, address(testZContract)); emit ContextData(abi.encodePacked(gateway), fungibleModule, amount, address(gateway), "hello"); @@ -489,7 +450,7 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - + // Verify amount is transfered to destination assertEq(destinationBalanceBefore + amount, address(testZContract).balance); } @@ -497,11 +458,8 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() public { uint256 amount = 1; bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectRevert(CallerIsNotFungibleModule.selector); vm.prank(owner); @@ -511,28 +469,22 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() public { uint256 amount = 1; bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndCall(context, amount, fungibleModule, message); } - function testDepositZETAAndCallZContractFailsIfTargetIsGateway() public { + function testDepositZETAAndCallZContractFailsIfTargetIsGateway() public { uint256 amount = 1; bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); + zContext memory context = + zContext({ origin: abi.encodePacked(address(gateway)), sender: fungibleModule, chainID: 1 }); vm.expectRevert(InvalidTarget.selector); vm.prank(fungibleModule); gateway.depositAndCall(context, amount, address(gateway), message); } -} \ No newline at end of file +} diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index 8f307151..382aa666 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -4,20 +4,27 @@ pragma solidity ^0.8.0; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/evm/GatewayEVM.sol"; import "./utils/ReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; -import "src/evm/ZetaConnectorNative.sol"; + import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ZetaConnectorNative.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; import "src/evm/interfaces/IZetaConnector.sol"; -contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { +contract ZetaConnectorNativeTest is + Test, + IGatewayEVMErrors, + IGatewayEVMEvents, + IReceiverEVMEvents, + IZetaConnectorEvents +{ using SafeERC20 for IERC20; address proxy; @@ -38,8 +45,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, zetaToken = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", - abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) ); gateway = GatewayEVM(proxy); @@ -55,11 +61,11 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - zetaToken.mint(address(zetaConnector), 5000000); + zetaToken.mint(address(zetaConnector), 5_000_000); } function testWithdraw() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; uint256 balanceBefore = zetaToken.balanceOf(destination); assertEq(balanceBefore, 0); @@ -75,7 +81,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; vm.prank(owner); @@ -84,9 +90,10 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndCallReceiveERC20() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); uint256 balanceBefore = zetaToken.balanceOf(destination); assertEq(balanceBefore, 0); uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); @@ -118,9 +125,10 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -128,7 +136,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndCallReceiveNoParams() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodeWithSignature("receiveNoParams()"); uint256 balanceBefore = zetaToken.balanceOf(destination); @@ -162,9 +170,11 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndCallReceiveERC20Partial() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); + bytes memory data = abi.encodeWithSignature( + "receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination + ); uint256 balanceBefore = zetaToken.balanceOf(destination); assertEq(balanceBefore, 0); uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); @@ -196,7 +206,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndRevert() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); @@ -233,7 +243,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); @@ -241,4 +251,4 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, vm.expectRevert(InvalidSender.selector); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); } -} \ No newline at end of file +} diff --git a/v2/test/ZetaConnectorNonNative.t.sol b/v2/test/ZetaConnectorNonNative.t.sol index 19ce066c..5aac070a 100644 --- a/v2/test/ZetaConnectorNonNative.t.sol +++ b/v2/test/ZetaConnectorNonNative.t.sol @@ -4,22 +4,30 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; -import "src/evm/GatewayEVM.sol"; import "./utils/ReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; -import "src/evm/ZetaConnectorNonNative.sol"; + import "./utils/TestERC20.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "./utils/IReceiverEVM.sol"; import "./utils/Zeta.non-eth.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; -import "./utils/IReceiverEVM.sol"; import "src/evm/interfaces/IZetaConnector.sol"; -contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { +contract ZetaConnectorNonNativeTest is + Test, + IGatewayEVMErrors, + IGatewayEVMEvents, + IReceiverEVMEvents, + IZetaConnectorEvents +{ using SafeERC20 for IERC20; address proxy; @@ -67,7 +75,8 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // assertEq(balanceBefore, 0); // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, internalSendHash); + // bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, + // internalSendHash); // vm.expectCall(address(zetaToken), 0, data); // vm.expectEmit(true, true, true, true, address(zetaConnector)); // emit Withdraw(destination, amount); @@ -89,13 +98,15 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // function testWithdrawAndCallReceiveERC20() public { // uint256 amount = 100000; // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, + // address(zetaToken), destination); // uint256 balanceBefore = zetaToken.balanceOf(destination); // assertEq(balanceBefore, 0); // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); // assertEq(balanceBeforeZetaConnector, 0); - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, + // internalSendHash); // vm.expectCall(address(zetaToken), 0, mintData); // vm.expectEmit(true, true, true, true, address(receiver)); // emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); @@ -124,7 +135,8 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { // uint256 amount = 100000; // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, + // address(zetaToken), destination); // vm.prank(owner); // vm.expectRevert(InvalidSender.selector); @@ -140,7 +152,8 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); // assertEq(balanceBeforeZetaConnector, 0); - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, + // internalSendHash); // vm.expectCall(address(zetaToken), 0, mintData); // vm.expectEmit(true, true, true, true, address(receiver)); // emit ReceivedNoParams(address(gateway)); @@ -169,13 +182,15 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // function testWithdrawAndCallReceiveERC20Partial() public { // uint256 amount = 100000; // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); + // bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, + // address(zetaToken), destination); // uint256 balanceBefore = zetaToken.balanceOf(destination); // assertEq(balanceBefore, 0); // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); // assertEq(balanceBeforeZetaConnector, 0); - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, + // internalSendHash); // vm.expectCall(address(zetaToken), 0, mintData); // vm.expectEmit(true, true, true, true, address(receiver)); // emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); @@ -209,7 +224,8 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // assertEq(balanceBefore, 0); // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, + // internalSendHash); // vm.expectCall(address(zetaToken), 0, mintData); // // Verify that onRevert callback was called // vm.expectEmit(true, true, true, true, address(receiver)); @@ -242,9 +258,9 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent // uint256 amount = 100000; // bytes32 internalSendHash = ""; // bytes memory data = abi.encodePacked("hello"); - + // vm.prank(owner); // vm.expectRevert(InvalidSender.selector); // zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); // } -} \ No newline at end of file +} diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index 562723b3..1d9bb2e4 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -1,20 +1,28 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + import "src/evm/ZetaConnectorNewBase.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; // NOTE: Purpose of this contract is to test upgrade process, the only difference should be name of Executed event // The Gateway contract is the endpoint to call smart contracts on external chains // The contract doesn't hold any funds and should never have active allowances /// @custom:oz-upgrades-from GatewayEVM -contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { +contract GatewayEVMUpgradeTest is + Initializable, + OwnableUpgradeable, + UUPSUpgradeable, + IGatewayEVMErrors, + IGatewayEVMEvents, + ReentrancyGuardUpgradeable +{ using SafeERC20 for IERC20; /// @notice The address of the custody contract. @@ -29,7 +37,7 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade event ExecutedV2(address indexed destination, uint256 value, bytes data); - constructor() {} + constructor() { } function initialize(address _tssAddress, address _zetaToken) public initializer { if (_tssAddress == address(0) || _zetaToken == address(0)) { @@ -44,10 +52,10 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade zetaToken = _zetaToken; } - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } function _execute(address destination, bytes calldata data) internal returns (bytes memory) { - (bool success, bytes memory result) = destination.call{value: msg.value}(data); + (bool success, bytes memory result) = destination.call{ value: msg.value }(data); if (!success) revert ExecutionFailed(); return result; @@ -56,10 +64,10 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Called by the TSS // Calling onRevert directly function executeRevert(address destination, bytes calldata data) public payable { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); + (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); - + emit Reverted(destination, msg.value, data); } @@ -76,24 +84,21 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Called by the ERC20Custody contract // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) public nonReentrant { + // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance + // system + // It provides allowance to destination contract and call destination contract. In the end, it remove remaining + // allowance and transfer remaining tokens back to the custody contract for security purposes + function executeWithERC20(address token, address to, uint256 amount, bytes calldata data) public nonReentrant { if (amount == 0) revert InsufficientETHAmount(); // Approve the target contract to spend the tokens - if(!resetApproval(token, to)) revert ApprovalFailed(); - if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); + if (!resetApproval(token, to)) revert ApprovalFailed(); + if (!IERC20(token).approve(to, amount)) revert ApprovalFailed(); // Execute the call on the target contract bytes memory result = _execute(to, data); // Reset approval - if(!resetApproval(token, to)) revert ApprovalFailed(); + if (!resetApproval(token, to)) revert ApprovalFailed(); // Transfer any remaining tokens back to the custody/connector contract uint256 remainingBalance = IERC20(token).balanceOf(address(this)); @@ -106,12 +111,7 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Called by the ERC20Custody contract // Directly transfers ERC20 and calls onRevert - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external nonReentrant { + function revertWithERC20(address token, address to, uint256 amount, bytes calldata data) external nonReentrant { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); @@ -123,10 +123,10 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Deposit ETH to tss function deposit(address receiver) external payable { if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); + (bool deposited,) = tssAddress.call{ value: msg.value }(""); if (deposited == false) revert DepositFailed(); - + emit Deposit(msg.sender, receiver, msg.value, address(0), ""); } @@ -142,17 +142,17 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Deposit ETH to tss and call an omnichain smart contract function depositAndCall(address receiver, bytes calldata payload) external payable { if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); + (bool deposited,) = tssAddress.call{ value: msg.value }(""); if (deposited == false) revert DepositFailed(); - + emit Deposit(msg.sender, receiver, msg.value, address(0), payload); } // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { if (amount == 0) revert InsufficientERC20Amount(); - + transferFromToAssetHandler(msg.sender, asset, amount); emit Deposit(msg.sender, receiver, amount, asset, payload); @@ -170,7 +170,7 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade custody = _custody; } - function setConnector(address _zetaConnector) external { + function setConnector(address _zetaConnector) external { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); @@ -182,25 +182,29 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade } function transferFromToAssetHandler(address from, address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector + if (token == zetaToken) { + // transfer to connector // transfer amount to gateway IERC20(token).safeTransferFrom(from, address(this), amount); // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody + } else { + // transfer to custody IERC20(token).safeTransferFrom(from, custody, amount); } } function transferToAssetHandler(address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector + if (token == zetaToken) { + // transfer to connector // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody + } else { + // transfer to custody IERC20(token).safeTransfer(custody, amount); } } diff --git a/v2/test/utils/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol index 3f03b0f8..32422571 100644 --- a/v2/test/utils/ReceiverEVM.sol +++ b/v2/test/utils/ReceiverEVM.sol @@ -1,14 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +import "./IReceiverEVM.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./IReceiverEVM.sol"; // @notice This contract is used just for testing contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { using SafeERC20 for IERC20; + error ZeroAmount(); // Payable function @@ -49,6 +50,6 @@ contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { emit ReceivedRevert(msg.sender, data); } - receive() external payable {} - fallback() external payable {} -} \ No newline at end of file + receive() external payable { } + fallback() external payable { } +} diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index 7b751de2..c5ed9d06 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -8,6 +8,7 @@ import "src/zevm/interfaces/IZRC20.sol"; // @notice This contract is used just for testing contract SenderZEVM { address public gateway; + error ApprovalFailed(); constructor(address _gateway) { @@ -24,14 +25,23 @@ contract SenderZEVM { } // Withdraw and call receiver on EVM - function withdrawAndCallReceiver(bytes memory receiver, uint256 amount, address zrc20, string memory str, uint256 num, bool flag) external { + function withdrawAndCallReceiver( + bytes memory receiver, + uint256 amount, + address zrc20, + string memory str, + uint256 num, + bool flag + ) + external + { // Encode the function call to the receiver's receivePayable method bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); // Approve gateway to withdraw - if(!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); + if (!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); // Pass encoded call to gateway IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message); } -} \ No newline at end of file +} diff --git a/v2/test/utils/SystemContract.sol b/v2/test/utils/SystemContract.sol index a34a1e06..59027a1e 100644 --- a/v2/test/utils/SystemContract.sol +++ b/v2/test/utils/SystemContract.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "src/zevm/interfaces/zContract.sol"; import "src/zevm/interfaces/IZRC20.sol"; +import "src/zevm/interfaces/zContract.sol"; /** * @dev Custom errors for SystemContract @@ -24,7 +24,8 @@ contract SystemContract is SystemContractErrors { mapping(uint256 => uint256) public gasPriceByChainId; /// @notice Map to know the ZRC20 address of a token given a chain id, ex zETH, zBNB etc. mapping(uint256 => address) public gasCoinZRC20ByChainId; - // @dev: Map to know uniswap V2 pool of ZETA/ZRC20 given a chain id. This refer to the build in uniswap deployed at genesis. + // @dev: Map to know uniswap V2 pool of ZETA/ZRC20 given a chain id. This refer to the build in uniswap deployed at + // genesis. mapping(uint256 => address) public gasZetaPoolByChainId; /// @notice Fungible address is always the same, it's on protocol level. @@ -70,7 +71,9 @@ contract SystemContract is SystemContractErrors { uint256 amount, address target, bytes calldata message - ) external { + ) + external + { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); diff --git a/v2/test/utils/SystemContractMock.sol b/v2/test/utils/SystemContractMock.sol index 76617a7f..423f2502 100644 --- a/v2/test/utils/SystemContractMock.sol +++ b/v2/test/utils/SystemContractMock.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "src/zevm/interfaces/zContract.sol"; import "src/zevm/interfaces/IZRC20.sol"; +import "src/zevm/interfaces/zContract.sol"; interface SystemContractErrors { error CallerIsNotFungibleModule(); @@ -78,7 +78,7 @@ contract SystemContractMock is SystemContractErrors { } function onCrossChainCall(address target, address zrc20, uint256 amount, bytes calldata message) external { - zContext memory context = zContext({sender: msg.sender, origin: "", chainID: block.chainid}); + zContext memory context = zContext({ sender: msg.sender, origin: "", chainID: block.chainid }); IZRC20(zrc20).transfer(target, amount); zContract(target).onCrossChainCall(context, zrc20, amount, message); } diff --git a/v2/test/utils/TestERC20.sol b/v2/test/utils/TestERC20.sol index 6ff45a73..e983d980 100644 --- a/v2/test/utils/TestERC20.sol +++ b/v2/test/utils/TestERC20.sol @@ -5,9 +5,9 @@ import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; // @notice This contract is used just for testing contract TestERC20 is ERC20 { - constructor(string memory name, string memory symbol) ERC20(name, symbol) {} + constructor(string memory name, string memory symbol) ERC20(name, symbol) { } function mint(address to, uint256 amount) external { _mint(to, amount); } -} \ No newline at end of file +} diff --git a/v2/test/utils/TestZContract.sol b/v2/test/utils/TestZContract.sol index 065a7139..955beab7 100644 --- a/v2/test/utils/TestZContract.sol +++ b/v2/test/utils/TestZContract.sol @@ -14,7 +14,10 @@ contract TestZContract is UniversalContract { address zrc20, uint256 amount, bytes calldata message - ) external override { + ) + external + override + { string memory decodedMessage; if (message.length > 0) { decodedMessage = abi.decode(message, (string)); @@ -27,7 +30,10 @@ contract TestZContract is UniversalContract { address zrc20, uint256 amount, bytes calldata message - ) external override { + ) + external + override + { string memory decodedMessage; if (message.length > 0) { decodedMessage = abi.decode(message, (string)); @@ -35,6 +41,6 @@ contract TestZContract is UniversalContract { emit ContextDataRevert(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); } - receive() external payable {} - fallback() external payable {} -} \ No newline at end of file + receive() external payable { } + fallback() external payable { } +} diff --git a/v2/test/utils/WZETA.sol b/v2/test/utils/WZETA.sol index fbf0cabb..21626b93 100644 --- a/v2/test/utils/WZETA.sol +++ b/v2/test/utils/WZETA.sol @@ -44,16 +44,10 @@ contract WETH9 { return transferFrom(msg.sender, dst, wad); } - function transferFrom( - address src, - address dst, - uint256 wad - ) public returns (bool) { + function transferFrom(address src, address dst, uint256 wad) public returns (bool) { require(balanceOf[src] >= wad, ""); - if ( - src != msg.sender && allowance[src][msg.sender] != type(uint256).max - ) { + if (src != msg.sender && allowance[src][msg.sender] != type(uint256).max) { require(allowance[src][msg.sender] >= wad, ""); allowance[src][msg.sender] -= wad; } @@ -65,4 +59,4 @@ contract WETH9 { return true; } -} \ No newline at end of file +} diff --git a/v2/test/utils/ZRC20New.sol b/v2/test/utils/ZRC20New.sol index e8c94cae..7ff4cad8 100644 --- a/v2/test/utils/ZRC20New.sol +++ b/v2/test/utils/ZRC20New.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "src/zevm/interfaces/IZRC20.sol"; + import "src/zevm/interfaces/ISystem.sol"; +import "src/zevm/interfaces/IZRC20.sol"; /** * @dev Custom errors for ZRC20 @@ -29,7 +30,7 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { CoinType public immutable COIN_TYPE; /// @notice System contract address. address public SYSTEM_CONTRACT_ADDRESS; - /// @notice Gateway contract address. + /// @notice Gateway contract address. address public GATEWAY_CONTRACT_ADDRESS; /// @notice Gas limit. uint256 public GAS_LIMIT; @@ -230,7 +231,10 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @return true/false if succeeded/failed. */ function deposit(address to, uint256 amount) external override returns (bool) { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS && msg.sender != GATEWAY_CONTRACT_ADDRESS) revert InvalidSender(); + if ( + msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS + && msg.sender != GATEWAY_CONTRACT_ADDRESS + ) revert InvalidSender(); _mint(to, amount); emit Deposit(abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), to, amount); return true; @@ -238,7 +242,8 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { /** * @dev Withdraws gas fees. - * @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw() + * @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for + * withdraw() */ function withdrawGasFee() public view override returns (address, uint256) { address gasZRC20 = ISystem(SYSTEM_CONTRACT_ADDRESS).gasCoinZRC20ByChainId(CHAIN_ID); @@ -253,7 +258,8 @@ contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { } /** - * @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the outbound chain + * @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the + * outbound chain * this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee. * @param to, recipient address. * @param amount, amount to deposit. diff --git a/v2/test/utils/Zeta.non-eth.sol b/v2/test/utils/Zeta.non-eth.sol index ccee3ae6..a420890d 100644 --- a/v2/test/utils/Zeta.non-eth.sol +++ b/v2/test/utils/Zeta.non-eth.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; /** * @dev Common custom errors From 09be45c2825fcfb204b2eb599b2b06a0777f50c1 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 23:35:08 +0200 Subject: [PATCH 18/60] move echidna --- test/fuzz/ERC20CustodyNewEchidnaTest.sol | 2 +- v2/echidna.yaml | 7 ++ v2/package-lock.json | 97 +++++++++++++++++++-- v2/package.json | 3 +- v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol | 38 ++++++++ v2/test/fuzz/GatewayEVMEchidnaTest.sol | 31 +++++++ v2/test/fuzz/readme.md | 13 +++ 7 files changed, 182 insertions(+), 9 deletions(-) create mode 100644 v2/echidna.yaml create mode 100644 v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol create mode 100644 v2/test/fuzz/GatewayEVMEchidnaTest.sol create mode 100644 v2/test/fuzz/readme.md diff --git a/test/fuzz/ERC20CustodyNewEchidnaTest.sol b/test/fuzz/ERC20CustodyNewEchidnaTest.sol index f29e2bbf..55e76fdd 100644 --- a/test/fuzz/ERC20CustodyNewEchidnaTest.sol +++ b/test/fuzz/ERC20CustodyNewEchidnaTest.sol @@ -21,7 +21,7 @@ contract ERC20CustodyNewEchidnaTest is ERC20CustodyNew { )); GatewayEVM testGateway = GatewayEVM(proxy); - constructor() ERC20CustodyNew(address(testGateway)) { + constructor() ERC20CustodyNew(address(testGateway), echidnaCaller) { testERC20 = new TestERC20("test", "TEST"); testGateway.setCustody(address(this)); } diff --git a/v2/echidna.yaml b/v2/echidna.yaml new file mode 100644 index 00000000..de1bb2de --- /dev/null +++ b/v2/echidna.yaml @@ -0,0 +1,7 @@ +# provide solc remappings to crytic-compile +cryticArgs: ['--solc-remaps', '@=node_modules/@'] +testMode: "assertion" +testLimit: 50000 +seqLen: 10000 +allContracts: false +balanceAddr: 0x1043561a8829300000 \ No newline at end of file diff --git a/v2/package-lock.json b/v2/package-lock.json index 45352184..b9b9d133 100644 --- a/v2/package-lock.json +++ b/v2/package-lock.json @@ -10,13 +10,40 @@ "license": "ISC", "dependencies": { "@openzeppelin/contracts": "^5.0.2", - "@openzeppelin/contracts-upgradeable": "^5.0.2" + "@openzeppelin/contracts-upgradeable": "^5.0.2", + "ethers": "^6.13.1" }, "devDependencies": { - "ds-test": "github:dapphub/ds-test", "forge-std": "github:foundry-rs/forge-std" } }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@openzeppelin/contracts": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", @@ -30,17 +57,73 @@ "@openzeppelin/contracts": "5.0.2" } }, - "node_modules/ds-test": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0", - "dev": true, - "license": "GPL-3.0" + "node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/ethers": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.1.tgz", + "integrity": "sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/forge-std": { "version": "1.9.1", "resolved": "git+ssh://git@github.com/foundry-rs/forge-std.git#c28115db8d90ebffb41953cf83aac63130f4bd40", "dev": true, "license": "(Apache-2.0 OR MIT)" + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } } } } diff --git a/v2/package.json b/v2/package.json index 2f8ffaa3..5dc5b50b 100644 --- a/v2/package.json +++ b/v2/package.json @@ -17,6 +17,7 @@ "license": "ISC", "dependencies": { "@openzeppelin/contracts": "^5.0.2", - "@openzeppelin/contracts-upgradeable": "^5.0.2" + "@openzeppelin/contracts-upgradeable": "^5.0.2", + "ethers": "^6.13.1" } } diff --git a/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol b/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol new file mode 100644 index 00000000..f0d8b686 --- /dev/null +++ b/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "test/utils/TestERC20.sol"; + +contract ERC20CustodyNewEchidnaTest is ERC20CustodyNew { + using SafeERC20 for IERC20; + + TestERC20 public testERC20; + address public echidnaCaller = msg.sender; + + address proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (echidnaCaller, address(0x123))) + ); + GatewayEVM testGateway = GatewayEVM(proxy); + + constructor() ERC20CustodyNew(address(testGateway), echidnaCaller) { + testERC20 = new TestERC20("test", "TEST"); + testGateway.setCustody(address(this)); + } + + function testWithdrawAndCall(address to, uint256 amount, bytes calldata data) public { + // mint more than amount + testERC20.mint(address(this), amount + 5); + // transfer overhead to gateway + testERC20.transfer(address(testGateway), 5); + + withdrawAndCall(address(testERC20), to, amount, data); + + // Assertion to ensure no ERC20 tokens are left in the gateway contract after execution + assert(testERC20.balanceOf(address(gateway)) == 0); + } +} diff --git a/v2/test/fuzz/GatewayEVMEchidnaTest.sol b/v2/test/fuzz/GatewayEVMEchidnaTest.sol new file mode 100644 index 00000000..684c4d21 --- /dev/null +++ b/v2/test/fuzz/GatewayEVMEchidnaTest.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; +import "test/utils/TestERC20.sol"; + +contract GatewayEVMEchidnaTest is GatewayEVM { + using SafeERC20 for IERC20; + + TestERC20 public testERC20; + address public echidnaCaller = msg.sender; + + constructor() { + tssAddress = echidnaCaller; + zetaConnector = address(0x123); + testERC20 = new TestERC20("test", "TEST"); + custody = address(new ERC20CustodyNew(address(this), tssAddress)); + } + + function testExecuteWithERC20(address to, uint256 amount, bytes calldata data) public { + testERC20.mint(address(this), amount); + + executeWithERC20(address(testERC20), to, amount, data); + + // Assertion to ensure no ERC20 tokens are left in the contract after execution + assert(testERC20.balanceOf(address(this)) == 0); + } +} diff --git a/v2/test/fuzz/readme.md b/v2/test/fuzz/readme.md new file mode 100644 index 00000000..c2904af3 --- /dev/null +++ b/v2/test/fuzz/readme.md @@ -0,0 +1,13 @@ +## Setup echidna + +``` +brew install echidna +solc-select use 0.8.20 +``` + +## Execute contract tests + +``` +echidna test/fuzz/ERC20CustodyNewEchidnaTest.sol --contract ERC20CustodyNewEchidnaTest --config echidna.yaml +echidna test/fuzz/GatewayEVMEchidnaTest.sol --contract GatewayEVMEchidnaTest --config echidna.yaml +``` \ No newline at end of file From 6672b9e4ad63cedd0d455bc6463ed49af897fac1 Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 23:42:26 +0200 Subject: [PATCH 19/60] using submodule for forge-std --- .gitmodules | 3 +++ v2/foundry.toml | 4 ++-- v2/lib/forge-std | 1 + v2/package-lock.json | 10 +--------- v2/package.json | 1 - 5 files changed, 7 insertions(+), 12 deletions(-) create mode 160000 v2/lib/forge-std diff --git a/.gitmodules b/.gitmodules index a672ec5a..8e5d7143 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "v2/lib/openzeppelin-foundry-upgrades"] path = v2/lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades +[submodule "v2/lib/forge-std"] + path = v2/lib/forge-std + url = https://github.com/foundry-rs/forge-std diff --git a/v2/foundry.toml b/v2/foundry.toml index 43e5919b..dae47956 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -4,12 +4,12 @@ out = "out" libs = ["node_modules", "lib"] remappings = [ - "forge-std/=node_modules/forge-std/src", "ds-test/=node_modules/ds-test/src", "src/=src", "test/=test", "@openzeppelin/=node_modules/@openzeppelin/", - "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/" + "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", + "forge-std/=lib/forge-std/src/" ] no-match-contract = '.*EchidnaTest$' diff --git a/v2/lib/forge-std b/v2/lib/forge-std new file mode 160000 index 00000000..c28115db --- /dev/null +++ b/v2/lib/forge-std @@ -0,0 +1 @@ +Subproject commit c28115db8d90ebffb41953cf83aac63130f4bd40 diff --git a/v2/package-lock.json b/v2/package-lock.json index b9b9d133..b0184722 100644 --- a/v2/package-lock.json +++ b/v2/package-lock.json @@ -13,9 +13,7 @@ "@openzeppelin/contracts-upgradeable": "^5.0.2", "ethers": "^6.13.1" }, - "devDependencies": { - "forge-std": "github:foundry-rs/forge-std" - } + "devDependencies": {} }, "node_modules/@adraffy/ens-normalize": { "version": "1.10.1", @@ -94,12 +92,6 @@ "node": ">=14.0.0" } }, - "node_modules/forge-std": { - "version": "1.9.1", - "resolved": "git+ssh://git@github.com/foundry-rs/forge-std.git#c28115db8d90ebffb41953cf83aac63130f4bd40", - "dev": true, - "license": "(Apache-2.0 OR MIT)" - }, "node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", diff --git a/v2/package.json b/v2/package.json index 5dc5b50b..9a772451 100644 --- a/v2/package.json +++ b/v2/package.json @@ -11,7 +11,6 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { - "forge-std": "github:foundry-rs/forge-std" }, "author": "", "license": "ISC", From 2ea0a59701440a8be346a13e84b50aac8ab0e8cb Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 23:43:28 +0200 Subject: [PATCH 20/60] forge install: openzeppelin-contracts-upgradeable v5.0.2 --- .gitmodules | 3 +++ v2/lib/openzeppelin-contracts-upgradeable | 1 + 2 files changed, 4 insertions(+) create mode 160000 v2/lib/openzeppelin-contracts-upgradeable diff --git a/.gitmodules b/.gitmodules index 8e5d7143..838d20b3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "v2/lib/forge-std"] path = v2/lib/forge-std url = https://github.com/foundry-rs/forge-std +[submodule "v2/lib/openzeppelin-contracts-upgradeable"] + path = v2/lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable diff --git a/v2/lib/openzeppelin-contracts-upgradeable b/v2/lib/openzeppelin-contracts-upgradeable new file mode 160000 index 00000000..723f8cab --- /dev/null +++ b/v2/lib/openzeppelin-contracts-upgradeable @@ -0,0 +1 @@ +Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 From a8ec2b14c96bf6e66b0debc2971062185111774d Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 24 Jul 2024 23:45:42 +0200 Subject: [PATCH 21/60] use submodules --- v2/foundry.toml | 8 ++++---- v2/package-lock.json | 15 --------------- v2/package.json | 2 -- 3 files changed, 4 insertions(+), 21 deletions(-) diff --git a/v2/foundry.toml b/v2/foundry.toml index dae47956..8596db3d 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -1,15 +1,15 @@ [profile.default] src = "src" out = "out" -libs = ["node_modules", "lib"] +libs = ["lib"] remappings = [ "ds-test/=node_modules/ds-test/src", "src/=src", "test/=test", - "@openzeppelin/=node_modules/@openzeppelin/", - "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", - "forge-std/=lib/forge-std/src/" + "forge-std/=lib/forge-std/src/", + "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/", + "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/" ] no-match-contract = '.*EchidnaTest$' diff --git a/v2/package-lock.json b/v2/package-lock.json index b0184722..72a748d7 100644 --- a/v2/package-lock.json +++ b/v2/package-lock.json @@ -9,8 +9,6 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@openzeppelin/contracts": "^5.0.2", - "@openzeppelin/contracts-upgradeable": "^5.0.2", "ethers": "^6.13.1" }, "devDependencies": {} @@ -42,19 +40,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@openzeppelin/contracts": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" - }, - "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.0.2.tgz", - "integrity": "sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==", - "peerDependencies": { - "@openzeppelin/contracts": "5.0.2" - } - }, "node_modules/@types/node": { "version": "18.15.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", diff --git a/v2/package.json b/v2/package.json index 9a772451..1935e987 100644 --- a/v2/package.json +++ b/v2/package.json @@ -15,8 +15,6 @@ "author": "", "license": "ISC", "dependencies": { - "@openzeppelin/contracts": "^5.0.2", - "@openzeppelin/contracts-upgradeable": "^5.0.2", "ethers": "^6.13.1" } } From 3a57e9d0e5f260b4fe80e77e31d7cb2685923d80 Mon Sep 17 00:00:00 2001 From: skosito Date: Fri, 26 Jul 2024 22:55:22 +0200 Subject: [PATCH 22/60] move existing to v1 folder --- .gitmodules | 6 - contracts/prototypes/evm/ERC20CustodyNew.sol | 66 - contracts/prototypes/evm/GatewayEVM.sol | 223 -- .../prototypes/evm/GatewayEVMUpgradeTest.sol | 207 -- contracts/prototypes/evm/IERC20CustodyNew.sol | 13 - contracts/prototypes/evm/IGatewayEVM.sol | 44 - contracts/prototypes/evm/IReceiverEVM.sol | 10 - contracts/prototypes/evm/IZetaConnector.sol | 8 - contracts/prototypes/evm/IZetaNonEthNew.sol | 13 - contracts/prototypes/evm/ReceiverEVM.sol | 54 - contracts/prototypes/evm/TestERC20.sol | 13 - .../prototypes/evm/ZetaConnectorNative.sol | 47 - .../prototypes/evm/ZetaConnectorNewBase.sol | 45 - .../prototypes/evm/ZetaConnectorNonNative.sol | 45 - contracts/prototypes/zevm/GatewayZEVM.sol | 177 -- contracts/prototypes/zevm/IGatewayZEVM.sol | 51 - contracts/prototypes/zevm/SenderZEVM.sol | 37 - contracts/prototypes/zevm/TestZContract.sol | 40 - echidna.yaml | 7 - foundry.toml | 15 - lib/forge-std | 1 - lib/openzeppelin-foundry-upgrades | 1 - .../evm/erc20custody.sol/erc20custody.go | 1868 ------------ .../connectorerrors.sol/connectorerrors.go | 181 -- .../interfaces/zetaerrors.sol/zetaerrors.go | 181 -- .../zetainteractorerrors.go | 181 -- .../zetainterfaces.sol/zetacommonerrors.go | 181 -- .../zetainterfaces.sol/zetaconnector.go | 212 -- .../zetainterfaces.sol/zetainterfaces.go | 181 -- .../zetainterfaces.sol/zetareceiver.go | 242 -- .../zetainterfaces.sol/zetatokenconsumer.go | 838 ------ .../zetanonethinterface.go | 687 ----- .../attackercontract.sol/attackercontract.go | 318 --- .../testing/attackercontract.sol/victim.go | 223 -- .../evm/testing/erc20mock.sol/erc20mock.go | 802 ------ .../inonfungiblepositionmanager.go | 864 ------ .../ipoolinitializer.go | 202 -- .../zetainteractormock.go | 778 ----- .../zetareceivermock.sol/zetareceivermock.go | 532 ---- .../immutablecreate2factory.go | 338 --- .../immutablecreate2factory.sol/ownable.go | 202 -- .../concentratedliquiditypoolfactory.go | 212 -- .../tridentipoolrouter.sol/ipoolrouter.go | 326 --- .../zetainteractor.sol/zetainteractor.go | 695 ----- .../iswaprouterpancake.go | 263 -- .../weth9.go | 202 -- .../zetatokenconsumerpancakev3.go | 1067 ------- .../zetatokenconsumeruniv3errors.go | 181 -- .../weth9.go | 265 -- .../zetatokenconsumertrident.go | 974 ------- .../zetatokenconsumertridenterrors.go | 181 -- .../zetatokenconsumeruniv2.go | 891 ------ .../zetatokenconsumeruniv2errors.go | 181 -- .../weth9.go | 202 -- .../zetatokenconsumeruniv3.go | 1067 ------- .../zetatokenconsumeruniv3errors.go | 181 -- .../zetatokenconsumerzevm.go | 912 ------ .../zetatokenconsumerzevmerrors.go | 181 -- pkg/contracts/evm/zeta.eth.sol/zetaeth.go | 802 ------ .../evm/zeta.non-eth.sol/zetanoneth.go | 1706 ----------- .../zetaconnectorbase.go | 1695 ----------- .../zetaconnector.eth.sol/zetaconnectoreth.go | 1726 ------------ .../zetaconnectornoneth.go | 1913 ------------- .../erc20custodynew.sol/erc20custodynew.go | 792 ------ .../evm/gatewayevm.sol/gatewayevm.go | 2347 ---------------- .../gatewayevmupgradetest.go | 2493 ----------------- .../ierc20custodynewerrors.go | 181 -- .../ierc20custodynewevents.go | 645 ----- .../evm/igatewayevm.sol/igatewayevm.go | 244 -- .../evm/igatewayevm.sol/igatewayevmerrors.go | 181 -- .../evm/igatewayevm.sol/igatewayevmevents.go | 1093 -------- .../evm/igatewayevm.sol/revertable.go | 202 -- .../ireceiverevm.sol/ireceiverevmevents.go | 862 ------ .../izetaconnectorevents.go | 618 ---- .../evm/izetanonethnew.sol/izetanonethnew.go | 687 ----- .../evm/receiverevm.sol/receiverevm.go | 1052 ------- .../prototypes/evm/testerc20.sol/testerc20.go | 823 ------ .../zetaconnectornative.go | 817 ------ .../zetaconnectornewbase.go | 795 ------ .../zetaconnectornonnative.go | 817 ------ .../zevm/gatewayzevm.sol/gatewayzevm.go | 1704 ----------- .../zevm/igatewayzevm.sol/igatewayzevm.go | 314 --- .../igatewayzevm.sol/igatewayzevmerrors.go | 181 -- .../igatewayzevm.sol/igatewayzevmevents.go | 477 ---- .../zevm/senderzevm.sol/senderzevm.go | 276 -- .../zevm/testzcontract.sol/testzcontract.go | 577 ---- .../zevm/interfaces/isystem.sol/isystem.go | 367 --- .../iuniswapv2router01.go | 650 ----- .../iuniswapv2router02.go | 755 ----- .../zevm/interfaces/iwzeta.sol/iweth9.go | 977 ------- .../zevm/interfaces/izrc20.sol/izrc20.go | 463 --- .../interfaces/izrc20.sol/izrc20metadata.go | 556 ---- .../zevm/interfaces/izrc20.sol/zrc20events.go | 1185 -------- .../zcontract.sol/universalcontract.go | 237 -- .../interfaces/zcontract.sol/zcontract.go | 209 -- .../zevm/systemcontract.sol/systemcontract.go | 1421 ---------- .../systemcontracterrors.go | 181 -- .../systemcontracterrors.go | 181 -- .../systemcontractmock.go | 1176 -------- .../zevm/uniswap.sol/uniswapimports.go | 203 -- .../uniswapperiphery.sol/uniswapimports.go | 203 -- pkg/contracts/zevm/wzeta.sol/weth9.go | 1113 -------- .../zetaconnectorzevm.go | 1000 ------- .../zetaconnectorzevm.sol/zetainterfaces.go | 181 -- .../zetaconnectorzevm.sol/zetareceiver.go | 242 -- pkg/contracts/zevm/zrc20.sol/zrc20.go | 1800 ------------ pkg/contracts/zevm/zrc20.sol/zrc20errors.go | 181 -- .../zevm/zrc20new.sol/zrc20errors.go | 181 -- pkg/contracts/zevm/zrc20new.sol/zrc20new.go | 1831 ------------ .../ownableupgradeable.go | 541 ---- .../ierc1967upgradeable.go | 604 ---- .../ibeaconupgradeable.go | 212 -- .../erc1967upgradeupgradeable.go | 738 ----- .../utils/initializable.sol/initializable.go | 315 --- .../uupsupgradeable.sol/uupsupgradeable.go | 811 ------ .../reentrancyguardupgradeable.go | 315 --- .../addressupgradeable.go | 203 -- .../contextupgradeable.go | 315 --- .../storageslotupgradeable.go | 203 -- .../contracts/access/ownable.sol/ownable.go | 407 --- .../access/ownable2step.sol/ownable2step.go | 612 ---- .../security/pausable.sol/pausable.go | 480 ---- .../reentrancyguard.sol/reentrancyguard.go | 181 -- .../contracts/token/erc20/erc20.sol/erc20.go | 802 ------ .../erc20burnable.sol/erc20burnable.go | 822 ------ .../ierc20metadata.sol/ierc20metadata.go | 738 ----- .../token/erc20/ierc20.sol/ierc20.go | 645 ----- .../erc20/utils/safeerc20.sol/safeerc20.go | 203 -- .../contracts/utils/address.sol/address.go | 203 -- .../contracts/utils/context.sol/context.go | 181 -- .../transferhelper.sol/transferhelper.go | 203 -- .../contracts/interfaces/ierc20.sol/ierc20.go | 738 ----- .../iuniswapv2callee.sol/iuniswapv2callee.go | 202 -- .../iuniswapv2erc20.sol/iuniswapv2erc20.go | 852 ------ .../iuniswapv2factory.go | 554 ---- .../iuniswapv2pair.sol/iuniswapv2pair.go | 1842 ------------ .../contracts/libraries/math.sol/math.go | 203 -- .../libraries/safemath.sol/safemath.go | 203 -- .../libraries/uq112x112.sol/uq112x112.go | 203 -- .../uniswapv2erc20.sol/uniswapv2erc20.go | 874 ------ .../uniswapv2factory.sol/uniswapv2factory.go | 576 ---- .../uniswapv2pair.sol/uniswapv2pair.go | 1864 ------------ .../contracts/interfaces/ierc20.sol/ierc20.go | 738 ----- .../iuniswapv2router01.go | 650 ----- .../iuniswapv2router02.go | 755 ----- .../contracts/interfaces/iweth.sol/iweth.go | 244 -- .../libraries/safemath.sol/safemath.go | 203 -- .../uniswapv2library.sol/uniswapv2library.go | 203 -- .../uniswapv2router02.go | 798 ------ .../iuniswapv3swapcallback.go | 202 -- .../iuniswapv3factory.go | 807 ------ .../iuniswapv3pool.sol/iuniswapv3pool.go | 2455 ---------------- .../iuniswapv3poolactions.go | 328 --- .../iuniswapv3poolderivedstate.go | 276 -- .../iuniswapv3poolevents.go | 1556 ---------- .../iuniswapv3poolimmutables.go | 367 --- .../iuniswapv3poolowneractions.go | 223 -- .../iuniswapv3poolstate.go | 610 ---- .../interfaces/iquoter.sol/iquoter.go | 265 -- .../interfaces/iswaprouter.sol/iswaprouter.go | 328 --- remappings.txt | 3 - scripts/readme.md | 16 - scripts/worker.ts | 202 -- test/fuzz/ERC20CustodyNewEchidnaTest.sol | 40 - test/fuzz/GatewayEVMEchidnaTest.sol | 31 - test/fuzz/readme.md | 13 - test/prototypes/GatewayEVMUniswap.spec.ts | 104 - testFoundry/GatewayEVM.t.sol | 538 ---- testFoundry/GatewayEVMUpgrade.t.sol | 94 - testFoundry/GatewayEVMZEVM.t.sol | 214 -- testFoundry/GatewayZEVM.t.sol | 538 ---- testFoundry/ZetaConnectorNative.t.sol | 244 -- testFoundry/ZetaConnectorNonNative.t.sol | 249 -- .env.example => v1/.env.example | 0 .eslintignore => v1/.eslintignore | 0 .eslintrc.js => v1/.eslintrc.js | 0 Dockerfile => v1/Dockerfile | 0 .../contracts}/evm/ERC20Custody.sol | 0 {contracts => v1/contracts}/evm/Zeta.eth.sol | 0 .../contracts}/evm/Zeta.non-eth.sol | 0 .../contracts}/evm/ZetaConnector.base.sol | 0 .../contracts}/evm/ZetaConnector.eth.sol | 0 .../contracts}/evm/ZetaConnector.non-eth.sol | 0 .../evm/interfaces/ConnectorErrors.sol | 0 .../contracts}/evm/interfaces/ZetaErrors.sol | 0 .../evm/interfaces/ZetaInteractorErrors.sol | 0 .../evm/interfaces/ZetaInterfaces.sol | 0 .../evm/interfaces/ZetaNonEthInterface.sol | 0 .../evm/testing/AttackerContract.sol | 0 .../contracts}/evm/testing/ERC20Mock.sol | 0 .../evm/testing/TestUniswapV3Contracts.sol | 0 .../evm/testing/ZetaInteractorMock.sol | 0 .../evm/testing/ZetaReceiverMock.sol | 0 .../evm/tools/ImmutableCreate2Factory.sol | 0 .../contracts}/evm/tools/ZetaInteractor.sol | 0 .../ZetaTokenConsumerPancakeV3.strategy.sol | 0 .../ZetaTokenConsumerTrident.strategy.sol | 0 .../tools/ZetaTokenConsumerUniV2.strategy.sol | 0 .../tools/ZetaTokenConsumerUniV3.strategy.sol | 0 .../tools/ZetaTokenConsumerZEVM.strategy.sol | 0 ...ridentConcentratedLiquidityPoolFactory.sol | 0 .../tools/interfaces/TridentIPoolRouter.sol | 0 .../contracts}/zevm/SystemContract.sol | 0 {contracts => v1/contracts}/zevm/Uniswap.sol | 0 .../contracts}/zevm/UniswapPeriphery.sol | 0 {contracts => v1/contracts}/zevm/WZETA.sol | 0 {contracts => v1/contracts}/zevm/ZRC20.sol | 0 {contracts => v1/contracts}/zevm/ZRC20New.sol | 0 .../contracts}/zevm/ZetaConnectorZEVM.sol | 0 .../contracts}/zevm/interfaces/ISystem.sol | 0 .../zevm/interfaces/IUniswapV2Router01.sol | 0 .../zevm/interfaces/IUniswapV2Router02.sol | 0 .../contracts}/zevm/interfaces/IWZETA.sol | 0 .../contracts}/zevm/interfaces/IZRC20.sol | 0 .../contracts}/zevm/interfaces/zContract.sol | 0 .../zevm/testing/SystemContractMock.sol | 0 {data => v1/data}/addresses.json | 0 {data => v1/data}/addresses.mainnet.json | 0 {data => v1/data}/addresses.testnet.json | 0 {data => v1/data}/readme.md | 0 {docs => v1/docs}/.gitignore | 0 {docs => v1/docs}/book.css | 0 {docs => v1/docs}/book.toml | 0 {docs => v1/docs}/solidity.min.js | 0 {docs => v1/docs}/src/README.md | 0 {docs => v1/docs}/src/SUMMARY.md | 0 {docs => v1/docs}/src/contracts/README.md | 0 .../ERC20Custody.sol/contract.ERC20Custody.md | 0 {docs => v1/docs}/src/contracts/evm/README.md | 0 .../evm/Zeta.eth.sol/contract.ZetaEth.md | 0 .../Zeta.non-eth.sol/contract.ZetaNonEth.md | 0 .../contract.ZetaConnectorBase.md | 0 .../contract.ZetaConnectorEth.md | 0 .../contract.ZetaConnectorNonEth.md | 0 .../interface.ConnectorErrors.md | 0 .../src/contracts/evm/interfaces/README.md | 0 .../ZetaErrors.sol/interface.ZetaErrors.md | 0 .../interface.ZetaInteractorErrors.md | 0 .../interface.ZetaCommonErrors.md | 0 .../interface.ZetaConnector.md | 0 .../interface.ZetaInterfaces.md | 0 .../interface.ZetaReceiver.md | 0 .../interface.ZetaTokenConsumer.md | 0 .../interface.ZetaNonEthInterface.md | 0 .../contract.AttackerContract.md | 0 .../AttackerContract.sol/interface.Victim.md | 0 .../ERC20Mock.sol/contract.ERC20Mock.md | 0 .../docs}/src/contracts/evm/testing/README.md | 0 .../interface.INonfungiblePositionManager.md | 0 .../interface.IPoolInitializer.md | 0 .../contract.ZetaInteractorMock.md | 0 .../contract.ZetaReceiverMock.md | 0 .../contract.ImmutableCreate2Factory.md | 0 .../interface.Ownable.md | 0 .../docs}/src/contracts/evm/tools/README.md | 0 .../abstract.ZetaInteractor.md | 0 .../contract.ZetaTokenConsumerPancakeV3.md | 0 .../interface.ISwapRouterPancake.md | 0 .../interface.WETH9.md | 0 .../interface.ZetaTokenConsumerUniV3Errors.md | 0 .../contract.ZetaTokenConsumerTrident.md | 0 .../interface.WETH9.md | 0 ...nterface.ZetaTokenConsumerTridentErrors.md | 0 .../contract.ZetaTokenConsumerUniV2.md | 0 .../interface.ZetaTokenConsumerUniV2Errors.md | 0 .../contract.ZetaTokenConsumerUniV3.md | 0 .../interface.WETH9.md | 0 .../interface.ZetaTokenConsumerUniV3Errors.md | 0 .../contract.ZetaTokenConsumerZEVM.md | 0 .../interface.ZetaTokenConsumerZEVMErrors.md | 0 .../contracts/evm/tools/interfaces/README.md | 0 ...erface.ConcentratedLiquidityPoolFactory.md | 0 .../interface.IPoolRouter.md | 0 .../zevm/Interfaces.sol/enum.CoinType.md | 0 .../zevm/Interfaces.sol/interface.ISystem.md | 0 .../zevm/Interfaces.sol/interface.IZRC20.md | 0 .../interface.IZRC20Metadata.md | 0 .../docs}/src/contracts/zevm/README.md | 0 .../contract.SystemContract.md | 0 .../interface.SystemContractErrors.md | 0 .../Uniswap.sol/contract.UniswapImports.md | 0 .../contract.UniswapImports.md | 0 .../zevm/WZETA.sol/contract.WETH9.md | 0 .../zevm/ZRC20.sol/contract.ZRC20.md | 0 .../zevm/ZRC20.sol/interface.ZRC20Errors.md | 0 .../contract.ZetaConnectorZEVM.md | 0 .../interface.ZetaInterfaces.md | 0 .../interface.ZetaReceiver.md | 0 .../interface.IUniswapV2Router01.md | 0 .../interface.IUniswapV2Router02.md | 0 .../interfaces/IWZETA.sol/interface.IWETH9.md | 0 .../interfaces/IZRC20.sol/interface.IZRC20.md | 0 .../src/contracts/zevm/interfaces/README.md | 0 .../zContract.sol/interface.zContract.md | 0 .../zContract.sol/struct.zContext.md | 0 .../src/contracts/zevm/testing/README.md | 0 .../contract.SystemContractMock.md | 0 .../interface.SystemContractErrors.md | 0 go.mod => v1/go.mod | 0 go.sum => v1/go.sum | 0 hardhat.config.ts => v1/hardhat.config.ts | 1 - .../ImmutableCreate2Factory.helpers.ts | 0 {lib => v1/lib}/address.helpers.ts | 0 {lib => v1/lib}/address.tools.ts | 0 {lib => v1/lib}/addresses.ts | 0 {lib => v1/lib}/contracts.constants.ts | 0 {lib => v1/lib}/contracts.helpers.ts | 0 .../lib}/deterministic-deploy.helpers.ts | 0 {lib => v1/lib}/index.ts | 0 {lib => v1/lib}/types.ts | 0 package.json => v1/package.json | 3 - readme.md => v1/readme.md | 0 .../deployments/core/deploy-deterministic.ts | 2 +- .../deployments/core/deploy-erc20-custody.ts | 0 .../core/deploy-immutable-create2-factory.ts | 0 .../deployments/core/deploy-zeta-connector.ts | 0 .../deployments/core/deploy-zeta-token.ts | 0 .../scripts}/deployments/core/deploy.ts | 0 .../deterministic-deploy-erc20-custody.ts | 4 +- .../deterministic-deploy-zeta-connector.ts | 6 +- .../core/deterministic-deploy-zeta-token.ts | 6 +- ...ministic-deploy-zeta-consumer-pancakev3.ts | 0 .../deterministic-deploy-zeta-consumer-v2.ts | 0 .../deterministic-deploy-zeta-consumer-v3.ts | 0 .../deterministic-get-salt-erc20-custody.ts | 0 .../deterministic-get-salt-zeta-connector.ts | 0 .../deterministic-get-salt-zeta-token.ts | 0 {scripts => v1/scripts}/generate_addresses.sh | 0 .../scripts}/generate_addresses_types.ts | 0 {scripts => v1/scripts}/generate_go.sh | 0 .../bytecode-checker/bytecode.constants.ts | 0 .../bytecode-checker/bytecode.helpers.ts | 0 .../tools/bytecode-checker/bytecode.ts | 0 {scripts => v1/scripts}/tools/send-tss-gas.ts | 0 .../tools/set-zeta-token-addresses.ts | 0 .../scripts}/tools/test-zeta-send.ts | 0 .../scripts}/tools/token-approval.ts | 0 .../scripts}/tools/update-tss-address.ts | 0 .../scripts}/tools/update-zeta-connector.ts | 0 slither.config.json => v1/slither.config.json | 0 {tasks => v1/tasks}/addresses.mainnet.json | 0 {tasks => v1/tasks}/addresses.testnet.json | 0 {tasks => v1/tasks}/addresses.ts | 0 {tasks => v1/tasks}/localnet.ts | 0 {tasks => v1/tasks}/readme.md | 0 {test => v1/test}/ConnectorZEVM.spec.ts | 0 {test => v1/test}/ERC20Custody.spec.ts | 0 .../test}/ImmutableCreate2Factory.spec.ts | 0 {test => v1/test}/ZRC20.spec.ts | 0 {test => v1/test}/Zeta.non-eth.spec.ts | 0 {test => v1/test}/ZetaConnector.spec.ts | 0 {test => v1/test}/ZetaInteractor.spec.ts | 0 {test => v1/test}/ZetaTokenConsumer.spec.ts | 0 .../test}/ZetaTokenConsumerZEVM.spec.ts | 0 {test => v1/test}/test.helpers.ts | 0 tsconfig.json => v1/tsconfig.json | 0 .../access/OwnableUpgradeable.ts | 0 .../contracts-upgradeable/access/index.ts | 0 .../contracts-upgradeable/index.ts | 0 .../interfaces/IERC1967Upgradeable.ts | 0 .../IERC1822ProxiableUpgradeable.ts | 0 .../draft-IERC1822Upgradeable.sol/index.ts | 0 .../contracts-upgradeable/interfaces/index.ts | 0 .../ERC1967/ERC1967UpgradeUpgradeable.ts | 0 .../proxy/ERC1967/index.ts | 0 .../proxy/beacon/IBeaconUpgradeable.ts | 0 .../proxy/beacon/index.ts | 0 .../contracts-upgradeable/proxy/index.ts | 0 .../proxy/utils/Initializable.ts | 0 .../proxy/utils/UUPSUpgradeable.ts | 0 .../proxy/utils/index.ts | 0 .../security/ReentrancyGuardUpgradeable.ts | 0 .../contracts-upgradeable/security/index.ts | 0 .../utils/ContextUpgradeable.ts | 0 .../contracts-upgradeable/utils/index.ts | 0 .../@openzeppelin/contracts/access/Ownable.ts | 0 .../contracts/access/Ownable2Step.ts | 0 .../@openzeppelin/contracts/access/index.ts | 0 .../@openzeppelin/contracts/index.ts | 0 .../contracts/security/Pausable.ts | 0 .../@openzeppelin/contracts/security/index.ts | 0 .../contracts/token/ERC20/ERC20.ts | 0 .../contracts/token/ERC20/IERC20.ts | 0 .../token/ERC20/extensions/ERC20Burnable.ts | 0 .../token/ERC20/extensions/IERC20Metadata.ts | 0 .../draft-IERC20Permit.sol/IERC20Permit.ts | 0 .../draft-IERC20Permit.sol/index.ts | 0 .../contracts/token/ERC20/extensions/index.ts | 0 .../contracts/token/ERC20/index.ts | 0 .../@openzeppelin/contracts/token/index.ts | 0 .../typechain-types/@openzeppelin}/index.ts | 0 .../typechain-types}/@uniswap/index.ts | 0 .../v2-core/contracts/UniswapV2ERC20.ts | 0 .../v2-core/contracts/UniswapV2Factory.ts | 0 .../v2-core/contracts/UniswapV2Pair.ts | 0 .../@uniswap/v2-core/contracts/index.ts | 0 .../v2-core/contracts/interfaces/IERC20.ts | 0 .../contracts/interfaces/IUniswapV2Callee.ts | 0 .../contracts/interfaces/IUniswapV2ERC20.ts | 0 .../contracts/interfaces/IUniswapV2Factory.ts | 0 .../contracts/interfaces/IUniswapV2Pair.ts | 0 .../v2-core/contracts/interfaces/index.ts | 0 .../@uniswap/v2-core}/index.ts | 0 .../contracts/UniswapV2Router02.ts | 0 .../@uniswap/v2-periphery/contracts/index.ts | 0 .../contracts/interfaces/IERC20.ts | 0 .../interfaces/IUniswapV2Router01.ts | 0 .../interfaces/IUniswapV2Router02.ts | 0 .../contracts/interfaces/IWETH.ts | 0 .../contracts/interfaces/index.ts | 0 .../@uniswap/v2-periphery}/index.ts | 0 .../@uniswap/v3-core/contracts/index.ts | 0 .../contracts/interfaces/IUniswapV3Factory.ts | 0 .../contracts/interfaces/IUniswapV3Pool.ts | 0 .../callback/IUniswapV3SwapCallback.ts | 0 .../contracts/interfaces/callback/index.ts | 0 .../v3-core/contracts/interfaces/index.ts | 0 .../interfaces/pool/IUniswapV3PoolActions.ts | 0 .../pool/IUniswapV3PoolDerivedState.ts | 0 .../interfaces/pool/IUniswapV3PoolEvents.ts | 0 .../pool/IUniswapV3PoolImmutables.ts | 0 .../pool/IUniswapV3PoolOwnerActions.ts | 0 .../interfaces/pool/IUniswapV3PoolState.ts | 0 .../contracts/interfaces/pool/index.ts | 0 .../@uniswap/v3-core}/index.ts | 0 .../@uniswap/v3-periphery/contracts/index.ts | 0 .../contracts/interfaces/IQuoter.ts | 0 .../contracts/interfaces/ISwapRouter.ts | 0 .../contracts/interfaces/index.ts | 0 .../@uniswap/v3-periphery}/index.ts | 2 - .../typechain-types}/common.ts | 0 .../contracts/evm/ERC20Custody.ts | 0 .../contracts/evm/Zeta.eth.sol/ZetaEth.ts | 0 .../contracts/evm/Zeta.eth.sol/index.ts | 0 .../evm/Zeta.non-eth.sol/ZetaNonEth.ts | 0 .../contracts/evm/Zeta.non-eth.sol/index.ts | 0 .../ZetaConnectorBase.ts | 0 .../evm/ZetaConnector.base.sol/index.ts | 0 .../ZetaConnector.eth.sol/ZetaConnectorEth.ts | 0 .../evm/ZetaConnector.eth.sol/index.ts | 0 .../ZetaConnectorNonEth.ts | 0 .../evm/ZetaConnector.non-eth.sol/index.ts | 0 .../typechain-types}/contracts/evm/index.ts | 0 .../evm/interfaces/ConnectorErrors.ts | 0 .../contracts/evm/interfaces/ZetaErrors.ts | 0 .../evm/interfaces/ZetaInteractorErrors.ts | 0 .../ZetaInterfaces.sol/ZetaCommonErrors.ts | 0 .../ZetaInterfaces.sol/ZetaConnector.ts | 0 .../ZetaInterfaces.sol/ZetaReceiver.ts | 0 .../ZetaInterfaces.sol/ZetaTokenConsumer.ts | 0 .../interfaces/ZetaInterfaces.sol/index.ts | 0 .../evm/interfaces/ZetaNonEthInterface.ts | 0 .../contracts/evm/interfaces/index.ts | 0 .../AttackerContract.sol/AttackerContract.ts | 0 .../testing/AttackerContract.sol/Victim.ts | 0 .../evm/testing/AttackerContract.sol/index.ts | 0 .../contracts/evm/testing/ERC20Mock.ts | 0 .../INonfungiblePositionManager.ts | 0 .../IPoolInitializer.ts | 0 .../TestUniswapV3Contracts.sol/index.ts | 0 .../evm/testing/ZetaInteractorMock.ts | 0 .../contracts/evm/testing/ZetaReceiverMock.ts | 0 .../contracts/evm/testing/index.ts | 0 .../ImmutableCreate2Factory.ts | 0 .../ImmutableCreate2Factory.sol/Ownable.ts | 0 .../ImmutableCreate2Factory.sol/index.ts | 0 .../contracts/evm/tools/ZetaInteractor.ts | 0 .../ISwapRouterPancake.ts | 0 .../WETH9.ts | 0 .../ZetaTokenConsumerPancakeV3.ts | 0 .../ZetaTokenConsumerUniV3Errors.ts | 0 .../index.ts | 0 .../WETH9.ts | 0 .../ZetaTokenConsumerTrident.ts | 0 .../ZetaTokenConsumerTridentErrors.ts | 0 .../index.ts | 0 .../ZetaTokenConsumerUniV2.ts | 0 .../ZetaTokenConsumerUniV2Errors.ts | 0 .../index.ts | 0 .../WETH9.ts | 0 .../ZetaTokenConsumerUniV3.ts | 0 .../ZetaTokenConsumerUniV3Errors.ts | 0 .../index.ts | 0 .../ZetaTokenConsumerZEVM.ts | 0 .../ZetaTokenConsumerZEVMErrors.ts | 0 .../index.ts | 0 .../contracts/evm/tools/index.ts | 0 .../ConcentratedLiquidityPoolFactory.ts | 0 .../index.ts | 0 .../TridentIPoolRouter.sol/IPoolRouter.ts | 0 .../TridentIPoolRouter.sol/index.ts | 0 .../contracts/evm/tools/interfaces/index.ts | 0 .../typechain-types/contracts}/index.ts | 0 .../contracts/prototypes/ERC20Custody.ts | 0 .../contracts/prototypes/ERC20CustodyNew.ts | 0 .../contracts/prototypes/Gateway.ts | 0 .../prototypes/GatewayUpgradeTest.ts | 0 .../prototypes/GatewayV2.sol/Gateway.ts | 0 .../prototypes/GatewayV2.sol/GatewayV2.ts | 0 .../prototypes/GatewayV2.sol/index.ts | 0 .../contracts/prototypes/GatewayV2.ts | 0 .../contracts/prototypes/Receiver.ts | 0 .../contracts/prototypes/TestERC20.ts | 0 .../contracts/prototypes/WETH9.ts | 0 .../prototypes/evm/ERC20CustodyNew.ts | 0 .../evm/ERC20CustodyNewEchidnaTest.ts | 0 .../contracts/prototypes/evm/Gateway.ts | 0 .../evm/GatewayEVM.sol/GatewayEVM.ts | 0 .../evm/GatewayEVM.sol/Revertable.ts | 0 .../prototypes/evm/GatewayEVM.sol/index.ts | 0 .../evm/GatewayEVM.t.sol/GatewayEVMTest.ts | 0 .../prototypes/evm/GatewayEVM.t.sol/index.ts | 0 .../contracts/prototypes/evm/GatewayEVM.ts | 0 .../prototypes/evm/GatewayEVMEchidnaTest.ts | 0 .../prototypes/evm/GatewayEVMUpgradeTest.ts | 0 .../prototypes/evm/GatewayUpgradeTest.ts | 0 .../IERC20CustodyNewErrors.ts | 0 .../IERC20CustodyNewEvents.ts | 0 .../evm/IERC20CustodyNew.sol/index.ts | 0 .../evm/IGatewayEVM.sol/IGatewayEVM.ts | 0 .../evm/IGatewayEVM.sol/IGatewayEVMErrors.ts | 0 .../evm/IGatewayEVM.sol/IGatewayEVMEvents.ts | 0 .../evm/IGatewayEVM.sol/Revertable.ts | 0 .../prototypes/evm/IGatewayEVM.sol/index.ts | 0 .../IReceiverEVM.sol/IReceiverEVMEvents.ts | 0 .../prototypes/evm/IReceiverEVM.sol/index.ts | 0 .../IZetaConnectorEvents.ts | 0 .../evm/IZetaConnector.sol/index.ts | 0 .../prototypes/evm/IZetaNonEthNew.ts | 0 .../contracts/prototypes/evm/Receiver.ts | 0 .../contracts/prototypes/evm/ReceiverEVM.ts | 0 .../contracts/prototypes/evm/TestERC20.ts | 0 .../prototypes/evm/ZetaConnectorNative.ts | 0 .../prototypes/evm/ZetaConnectorNew.ts | 0 .../prototypes/evm/ZetaConnectorNewBase.ts | 0 .../prototypes/evm/ZetaConnectorNonNative.ts | 0 .../contracts/prototypes/evm/index.ts | 0 .../prototypes/evm/interfaces.sol/IGateway.ts | 0 .../evm/interfaces.sol/IGatewayEVM.ts | 0 .../evm/interfaces.sol/IGatewayEVMErrors.ts | 0 .../evm/interfaces.sol/IGatewayEVMEvents.ts | 0 .../evm/interfaces.sol/IReceiverEVMEvents.ts | 0 .../prototypes/evm/interfaces.sol/index.ts | 0 .../contracts/prototypes}/index.ts | 2 - .../prototypes/interfaces.sol/IGateway.ts | 0 .../prototypes/interfaces.sol/index.ts | 0 .../GatewayEVM.t.sol/GatewayEVMInboundTest.ts | 0 .../test/GatewayEVM.t.sol/GatewayEVMTest.ts | 0 .../prototypes/test/GatewayEVM.t.sol/index.ts | 0 .../GatewayEVMZEVMTest.ts | 0 .../test/GatewayEVMZEVM.t.sol/index.ts | 0 .../GatewayIntegrationTest.ts | 0 .../test/GatewayIntegration.t.sol/index.ts | 0 .../GatewayZEVMInboundTest.ts | 0 .../GatewayZEVMOutboundTest.ts | 0 .../test/GatewayZEVM.t.sol/index.ts | 0 .../contracts/prototypes/test/index.ts | 0 .../contracts/prototypes/zevm/GatewayZEVM.ts | 0 .../zevm/IGatewayZEVM.sol/IGatewayZEVM.ts | 0 .../IGatewayZEVM.sol/IGatewayZEVMErrors.ts | 0 .../IGatewayZEVM.sol/IGatewayZEVMEvents.ts | 0 .../prototypes/zevm/IGatewayZEVM.sol/index.ts | 0 .../contracts/prototypes/zevm/Sender.ts | 0 .../contracts/prototypes/zevm/SenderZEVM.ts | 0 .../prototypes/zevm/TestZContract.ts | 0 .../zevm/ZRC20New.sol/ZRC20Errors.ts | 0 .../prototypes/zevm/ZRC20New.sol/ZRC20New.ts | 0 .../prototypes/zevm/ZRC20New.sol/index.ts | 0 .../contracts/prototypes/zevm/index.ts | 0 .../zevm/interfaces.sol/IGatewayZEVM.ts | 0 .../zevm/interfaces.sol/IGatewayZEVMErrors.ts | 0 .../zevm/interfaces.sol/IGatewayZEVMEvents.ts | 0 .../prototypes/zevm/interfaces.sol/index.ts | 0 .../contracts/zevm/Interfaces.sol/ISystem.ts | 0 .../contracts/zevm/Interfaces.sol/IZRC20.ts | 0 .../zevm/Interfaces.sol/IZRC20Metadata.ts | 0 .../contracts/zevm/Interfaces.sol/index.ts | 0 .../zevm/SystemContract.sol/SystemContract.ts | 0 .../SystemContractErrors.ts | 0 .../zevm/SystemContract.sol/index.ts | 0 .../contracts/zevm/WZETA.sol/WETH9.ts | 0 .../contracts/zevm/WZETA.sol/index.ts | 0 .../contracts/zevm/ZRC20.sol/ZRC20.ts | 0 .../contracts/zevm/ZRC20.sol/ZRC20Errors.ts | 0 .../contracts/zevm/ZRC20.sol/index.ts | 0 .../zevm/ZRC20New.sol/ZRC20Errors.ts | 0 .../contracts/zevm/ZRC20New.sol/ZRC20New.ts | 0 .../contracts/zevm/ZRC20New.sol/index.ts | 0 .../zevm/ZetaConnectorZEVM.sol/WZETA.ts | 0 .../ZetaConnectorZEVM.ts | 0 .../ZetaConnectorZEVM.sol/ZetaReceiver.ts | 0 .../zevm/ZetaConnectorZEVM.sol/index.ts | 0 .../contracts/zevm/ZetaConnectorZEVM.ts | 0 .../typechain-types}/contracts/zevm/index.ts | 0 .../contracts/zevm/interfaces/ISystem.ts | 0 .../zevm/interfaces/IUniswapV2Router01.ts | 0 .../zevm/interfaces/IUniswapV2Router02.ts | 0 .../zevm/interfaces/IWZETA.sol/IWETH9.ts | 0 .../zevm/interfaces/IWZETA.sol/index.ts | 0 .../zevm/interfaces/IZRC20.sol/ISystem.ts | 0 .../zevm/interfaces/IZRC20.sol/IZRC20.ts | 0 .../interfaces/IZRC20.sol/IZRC20Metadata.ts | 0 .../zevm/interfaces/IZRC20.sol/ZRC20Events.ts | 0 .../zevm/interfaces/IZRC20.sol/index.ts | 0 .../contracts/zevm/interfaces/IZRC20.ts | 0 .../contracts/zevm/interfaces/ZContract.ts | 0 .../contracts/zevm/interfaces/index.ts | 0 .../zContract.sol/UniversalContract.ts | 0 .../interfaces/zContract.sol/ZContract.ts | 0 .../zevm/interfaces/zContract.sol/index.ts | 0 .../SystemContractErrors.ts | 0 .../SystemContractMock.ts | 0 .../testing/SystemContractMock.sol/index.ts | 0 .../contracts/zevm/testing/index.ts | 0 .../access/OwnableUpgradeable__factory.ts | 0 .../contracts-upgradeable/access/index.ts | 0 .../contracts-upgradeable/index.ts | 0 .../IERC1967Upgradeable__factory.ts | 0 .../IERC1822ProxiableUpgradeable__factory.ts | 0 .../draft-IERC1822Upgradeable.sol/index.ts | 0 .../contracts-upgradeable/interfaces/index.ts | 0 .../ERC1967UpgradeUpgradeable__factory.ts | 0 .../proxy/ERC1967/index.ts | 0 .../beacon/IBeaconUpgradeable__factory.ts | 0 .../proxy/beacon/index.ts | 0 .../contracts-upgradeable/proxy/index.ts | 0 .../proxy/utils/Initializable__factory.ts | 0 .../proxy/utils/UUPSUpgradeable__factory.ts | 0 .../proxy/utils/index.ts | 0 .../ReentrancyGuardUpgradeable__factory.ts | 0 .../contracts-upgradeable/security/index.ts | 0 .../utils/ContextUpgradeable__factory.ts | 0 .../contracts-upgradeable/utils/index.ts | 0 .../contracts/access/Ownable2Step__factory.ts | 0 .../contracts/access/Ownable__factory.ts | 0 .../@openzeppelin/contracts/access/index.ts | 0 .../@openzeppelin/contracts/index.ts | 0 .../contracts/security/Pausable__factory.ts | 0 .../@openzeppelin/contracts/security/index.ts | 0 .../contracts/token/ERC20/ERC20__factory.ts | 0 .../contracts/token/ERC20/IERC20__factory.ts | 0 .../extensions/ERC20Burnable__factory.ts | 0 .../extensions/IERC20Metadata__factory.ts | 0 .../IERC20Permit__factory.ts | 0 .../draft-IERC20Permit.sol/index.ts | 0 .../contracts/token/ERC20/extensions/index.ts | 0 .../contracts/token/ERC20/index.ts | 0 .../@openzeppelin/contracts/token/index.ts | 0 .../factories/@openzeppelin}/index.ts | 0 .../factories/@uniswap/index.ts | 0 .../contracts/UniswapV2ERC20__factory.ts | 0 .../contracts/UniswapV2Factory__factory.ts | 0 .../contracts/UniswapV2Pair__factory.ts | 0 .../@uniswap/v2-core/contracts/index.ts | 0 .../contracts/interfaces/IERC20__factory.ts | 0 .../interfaces/IUniswapV2Callee__factory.ts | 0 .../interfaces/IUniswapV2ERC20__factory.ts | 0 .../interfaces/IUniswapV2Factory__factory.ts | 0 .../interfaces/IUniswapV2Pair__factory.ts | 0 .../v2-core/contracts/interfaces/index.ts | 0 .../factories/@uniswap/v2-core}/index.ts | 0 .../contracts/UniswapV2Router02__factory.ts | 0 .../@uniswap/v2-periphery/contracts/index.ts | 0 .../contracts/interfaces/IERC20__factory.ts | 0 .../interfaces/IUniswapV2Router01__factory.ts | 0 .../interfaces/IUniswapV2Router02__factory.ts | 0 .../contracts/interfaces/IWETH__factory.ts | 0 .../contracts/interfaces/index.ts | 0 .../factories/@uniswap/v2-periphery}/index.ts | 0 .../@uniswap/v3-core/contracts/index.ts | 0 .../interfaces/IUniswapV3Factory__factory.ts | 0 .../interfaces/IUniswapV3Pool__factory.ts | 0 .../IUniswapV3SwapCallback__factory.ts | 0 .../contracts/interfaces/callback/index.ts | 0 .../v3-core/contracts/interfaces/index.ts | 0 .../pool/IUniswapV3PoolActions__factory.ts | 0 .../IUniswapV3PoolDerivedState__factory.ts | 0 .../pool/IUniswapV3PoolEvents__factory.ts | 0 .../pool/IUniswapV3PoolImmutables__factory.ts | 0 .../IUniswapV3PoolOwnerActions__factory.ts | 0 .../pool/IUniswapV3PoolState__factory.ts | 0 .../contracts/interfaces/pool/index.ts | 0 .../factories/@uniswap/v3-core}/index.ts | 0 .../@uniswap/v3-periphery/contracts/index.ts | 0 .../contracts/interfaces/IQuoter__factory.ts | 0 .../interfaces/ISwapRouter__factory.ts | 0 .../contracts/interfaces/index.ts | 0 .../factories/@uniswap/v3-periphery}/index.ts | 1 - .../contracts/evm/ERC20Custody__factory.ts | 0 .../evm/Zeta.eth.sol/ZetaEth__factory.ts | 0 .../contracts/evm/Zeta.eth.sol/index.ts | 0 .../Zeta.non-eth.sol/ZetaNonEth__factory.ts | 2 +- .../contracts/evm/Zeta.non-eth.sol/index.ts | 0 .../ZetaConnectorBase__factory.ts | 2 +- .../evm/ZetaConnector.base.sol/index.ts | 0 .../ZetaConnectorEth__factory.ts | 2 +- .../evm/ZetaConnector.eth.sol/index.ts | 0 .../ZetaConnectorNonEth__factory.ts | 2 +- .../evm/ZetaConnector.non-eth.sol/index.ts | 0 .../factories/contracts/evm/index.ts | 0 .../interfaces/ConnectorErrors__factory.ts | 0 .../evm/interfaces/ZetaErrors__factory.ts | 0 .../ZetaInteractorErrors__factory.ts | 0 .../ZetaCommonErrors__factory.ts | 0 .../ZetaConnector__factory.ts | 0 .../ZetaReceiver__factory.ts | 0 .../ZetaTokenConsumer__factory.ts | 0 .../interfaces/ZetaInterfaces.sol/index.ts | 0 .../ZetaNonEthInterface__factory.ts | 0 .../contracts/evm/interfaces/index.ts | 0 .../AttackerContract__factory.ts | 0 .../AttackerContract.sol/Victim__factory.ts | 0 .../evm/testing/AttackerContract.sol/index.ts | 0 .../evm/testing/ERC20Mock__factory.ts | 0 .../INonfungiblePositionManager__factory.ts | 0 .../IPoolInitializer__factory.ts | 0 .../TestUniswapV3Contracts.sol/index.ts | 0 .../testing/ZetaInteractorMock__factory.ts | 2 +- .../evm/testing/ZetaReceiverMock__factory.ts | 2 +- .../factories/contracts/evm/testing/index.ts | 0 .../ImmutableCreate2Factory__factory.ts | 0 .../Ownable__factory.ts | 0 .../ImmutableCreate2Factory.sol/index.ts | 0 .../evm/tools/ZetaInteractor__factory.ts | 0 .../ISwapRouterPancake__factory.ts | 0 .../WETH9__factory.ts | 0 .../ZetaTokenConsumerPancakeV3__factory.ts | 2 +- .../ZetaTokenConsumerUniV3Errors__factory.ts | 0 .../index.ts | 0 .../WETH9__factory.ts | 0 ...ZetaTokenConsumerTridentErrors__factory.ts | 0 .../ZetaTokenConsumerTrident__factory.ts | 2 +- .../index.ts | 0 .../ZetaTokenConsumerUniV2Errors__factory.ts | 0 .../ZetaTokenConsumerUniV2__factory.ts | 2 +- .../index.ts | 0 .../WETH9__factory.ts | 0 .../ZetaTokenConsumerUniV3Errors__factory.ts | 0 .../ZetaTokenConsumerUniV3__factory.ts | 2 +- .../index.ts | 0 .../ZetaTokenConsumerZEVMErrors__factory.ts | 0 .../ZetaTokenConsumerZEVM__factory.ts | 2 +- .../index.ts | 0 .../factories/contracts/evm/tools/index.ts | 0 ...ncentratedLiquidityPoolFactory__factory.ts | 0 .../index.ts | 0 .../IPoolRouter__factory.ts | 0 .../TridentIPoolRouter.sol/index.ts | 0 .../contracts/evm/tools/interfaces/index.ts | 0 .../factories/contracts}/index.ts | 0 .../prototypes/ERC20CustodyNew__factory.ts | 0 .../prototypes/ERC20Custody__factory.ts | 0 .../prototypes/GatewayUpgradeTest__factory.ts | 0 .../GatewayV2.sol/GatewayV2__factory.ts | 0 .../GatewayV2.sol/Gateway__factory.ts | 0 .../prototypes/GatewayV2.sol/index.ts | 0 .../prototypes/GatewayV2__factory.ts | 0 .../contracts/prototypes/Gateway__factory.ts | 0 .../contracts/prototypes/Receiver__factory.ts | 0 .../prototypes/TestERC20__factory.ts | 0 .../contracts/prototypes/WETH9__factory.ts | 0 .../ERC20CustodyNewEchidnaTest__factory.ts | 0 .../evm/ERC20CustodyNew__factory.ts | 0 .../evm/GatewayEVM.sol/GatewayEVM__factory.ts | 0 .../evm/GatewayEVM.sol/Revertable__factory.ts | 0 .../prototypes/evm/GatewayEVM.sol/index.ts | 0 .../GatewayEVMTest__factory.ts | 0 .../prototypes/evm/GatewayEVM.t.sol/index.ts | 0 .../evm/GatewayEVMEchidnaTest__factory.ts | 0 .../evm/GatewayEVMUpgradeTest__factory.ts | 0 .../prototypes/evm/GatewayEVM__factory.ts | 0 .../evm/GatewayUpgradeTest__factory.ts | 0 .../prototypes/evm/Gateway__factory.ts | 0 .../IERC20CustodyNewErrors__factory.ts | 0 .../IERC20CustodyNewEvents__factory.ts | 0 .../evm/IERC20CustodyNew.sol/index.ts | 0 .../IGatewayEVMErrors__factory.ts | 0 .../IGatewayEVMEvents__factory.ts | 0 .../IGatewayEVM.sol/IGatewayEVM__factory.ts | 0 .../IGatewayEVM.sol/Revertable__factory.ts | 0 .../prototypes/evm/IGatewayEVM.sol/index.ts | 0 .../IReceiverEVMEvents__factory.ts | 0 .../prototypes/evm/IReceiverEVM.sol/index.ts | 0 .../IZetaConnectorEvents__factory.ts | 0 .../evm/IZetaConnector.sol/index.ts | 0 .../prototypes/evm/IZetaNonEthNew__factory.ts | 0 .../prototypes/evm/ReceiverEVM__factory.ts | 0 .../prototypes/evm/Receiver__factory.ts | 0 .../prototypes/evm/TestERC20__factory.ts | 0 .../evm/ZetaConnectorNative__factory.ts | 0 .../evm/ZetaConnectorNewBase__factory.ts | 0 .../evm/ZetaConnectorNewEth__factory.ts | 0 .../evm/ZetaConnectorNewNonEth__factory.ts | 0 .../evm/ZetaConnectorNew__factory.ts | 0 .../evm/ZetaConnectorNonNative__factory.ts | 0 .../contracts/prototypes/evm/index.ts | 0 .../IGatewayEVMErrors__factory.ts | 0 .../IGatewayEVMEvents__factory.ts | 0 .../interfaces.sol/IGatewayEVM__factory.ts | 0 .../evm/interfaces.sol/IGateway__factory.ts | 0 .../IReceiverEVMEvents__factory.ts | 0 .../prototypes/evm/interfaces.sol/index.ts | 0 .../factories/contracts/prototypes}/index.ts | 1 - .../interfaces.sol/IGateway__factory.ts | 0 .../prototypes/interfaces.sol/index.ts | 0 .../GatewayEVMInboundTest__factory.ts | 0 .../GatewayEVMTest__factory.ts | 0 .../prototypes/test/GatewayEVM.t.sol/index.ts | 0 .../GatewayEVMZEVMTest__factory.ts | 0 .../test/GatewayEVMZEVM.t.sol/index.ts | 0 .../GatewayIntegrationTest__factory.ts | 0 .../test/GatewayIntegration.t.sol/index.ts | 0 .../GatewayZEVMInboundTest__factory.ts | 0 .../GatewayZEVMOutboundTest__factory.ts | 0 .../test/GatewayZEVM.t.sol/index.ts | 0 .../contracts/prototypes/test/index.ts | 0 .../prototypes/zevm/GatewayZEVM__factory.ts | 0 .../IGatewayZEVMErrors__factory.ts | 0 .../IGatewayZEVMEvents__factory.ts | 0 .../IGatewayZEVM.sol/IGatewayZEVM__factory.ts | 0 .../prototypes/zevm/IGatewayZEVM.sol/index.ts | 0 .../prototypes/zevm/SenderZEVM__factory.ts | 0 .../prototypes/zevm/Sender__factory.ts | 0 .../prototypes/zevm/TestZContract__factory.ts | 0 .../zevm/ZRC20New.sol/ZRC20Errors__factory.ts | 0 .../zevm/ZRC20New.sol/ZRC20New__factory.ts | 0 .../prototypes/zevm/ZRC20New.sol/index.ts | 0 .../contracts/prototypes/zevm/index.ts | 0 .../IGatewayZEVMErrors__factory.ts | 0 .../IGatewayZEVMEvents__factory.ts | 0 .../interfaces.sol/IGatewayZEVM__factory.ts | 0 .../prototypes/zevm/interfaces.sol/index.ts | 0 .../zevm/Interfaces.sol/ISystem__factory.ts | 0 .../Interfaces.sol/IZRC20Metadata__factory.ts | 0 .../zevm/Interfaces.sol/IZRC20__factory.ts | 0 .../contracts/zevm/Interfaces.sol/index.ts | 0 .../SystemContractErrors__factory.ts | 0 .../SystemContract__factory.ts | 0 .../zevm/SystemContract.sol/index.ts | 0 .../zevm/WZETA.sol/WETH9__factory.ts | 0 .../contracts/zevm/WZETA.sol/index.ts | 0 .../zevm/ZRC20.sol/ZRC20Errors__factory.ts | 0 .../zevm/ZRC20.sol/ZRC20__factory.ts | 0 .../contracts/zevm/ZRC20.sol/index.ts | 0 .../zevm/ZRC20New.sol/ZRC20Errors__factory.ts | 0 .../zevm/ZRC20New.sol/ZRC20New__factory.ts | 0 .../contracts/zevm/ZRC20New.sol/index.ts | 0 .../ZetaConnectorZEVM.sol/WZETA__factory.ts | 0 .../ZetaConnectorZEVM__factory.ts | 0 .../ZetaReceiver__factory.ts | 0 .../zevm/ZetaConnectorZEVM.sol/index.ts | 0 .../zevm/ZetaConnectorZEVM__factory.ts | 0 .../factories/contracts/zevm/index.ts | 0 .../zevm/interfaces/ISystem__factory.ts | 0 .../interfaces/IUniswapV2Router01__factory.ts | 0 .../interfaces/IUniswapV2Router02__factory.ts | 0 .../interfaces/IWZETA.sol/IWETH9__factory.ts | 0 .../zevm/interfaces/IWZETA.sol/index.ts | 0 .../interfaces/IZRC20.sol/ISystem__factory.ts | 0 .../IZRC20.sol/IZRC20Metadata__factory.ts | 0 .../interfaces/IZRC20.sol/IZRC20__factory.ts | 0 .../IZRC20.sol/ZRC20Events__factory.ts | 0 .../zevm/interfaces/IZRC20.sol/index.ts | 0 .../zevm/interfaces/IZRC20__factory.ts | 0 .../zevm/interfaces/ZContract__factory.ts | 0 .../contracts/zevm/interfaces/index.ts | 0 .../UniversalContract__factory.ts | 0 .../zContract.sol/ZContract__factory.ts | 0 .../zevm/interfaces/zContract.sol/index.ts | 0 .../SystemContractErrors__factory.ts | 0 .../SystemContractMock__factory.ts | 0 .../testing/SystemContractMock.sol/index.ts | 0 .../factories/contracts/zevm/testing/index.ts | 0 .../forge-std/StdAssertions__factory.ts | 0 .../StdError.sol/StdError__factory.ts | 0 .../factories/forge-std/StdError.sol/index.ts | 0 .../forge-std/StdInvariant__factory.ts | 0 .../StdStorage.sol/StdStorageSafe__factory.ts | 0 .../forge-std/StdStorage.sol/index.ts | 0 .../factories/forge-std/Test__factory.ts | 0 .../forge-std/Vm.sol/VmSafe__factory.ts | 0 .../factories/forge-std/Vm.sol/Vm__factory.ts | 0 .../factories/forge-std/Vm.sol/index.ts | 0 .../factories/forge-std/index.ts | 0 .../forge-std/interfaces/IERC165__factory.ts | 0 .../forge-std/interfaces/IERC20__factory.ts | 0 .../IERC721.sol/IERC721Enumerable__factory.ts | 0 .../IERC721.sol/IERC721Metadata__factory.ts | 0 .../IERC721TokenReceiver__factory.ts | 0 .../IERC721.sol/IERC721__factory.ts | 0 .../forge-std/interfaces/IERC721.sol/index.ts | 0 .../interfaces/IMulticall3__factory.ts | 0 .../factories/forge-std/interfaces/index.ts | 0 .../forge-std/mocks/MockERC20__factory.ts | 0 .../forge-std/mocks/MockERC721__factory.ts | 0 .../factories/forge-std/mocks/index.ts | 0 .../typechain-types}/factories/index.ts | 0 .../forge-std/StdAssertions.ts | 0 .../forge-std/StdError.sol/StdError.ts | 0 .../forge-std/StdError.sol/index.ts | 0 .../forge-std/StdInvariant.ts | 0 .../StdStorage.sol/StdStorageSafe.ts | 0 .../forge-std/StdStorage.sol/index.ts | 0 .../typechain-types}/forge-std/Test.ts | 0 .../typechain-types}/forge-std/Vm.sol/Vm.ts | 0 .../forge-std/Vm.sol/VmSafe.ts | 0 .../forge-std/Vm.sol/index.ts | 0 .../typechain-types}/forge-std/index.ts | 0 .../forge-std/interfaces/IERC165.ts | 0 .../forge-std/interfaces/IERC20.ts | 0 .../interfaces/IERC721.sol/IERC721.ts | 0 .../IERC721.sol/IERC721Enumerable.ts | 0 .../interfaces/IERC721.sol/IERC721Metadata.ts | 0 .../IERC721.sol/IERC721TokenReceiver.ts | 0 .../forge-std/interfaces/IERC721.sol/index.ts | 0 .../forge-std/interfaces/IMulticall3.ts | 0 .../forge-std/interfaces/index.ts | 0 .../forge-std/mocks/MockERC20.ts | 0 .../forge-std/mocks/MockERC721.ts | 0 .../typechain-types}/forge-std/mocks/index.ts | 0 .../typechain-types}/hardhat.d.ts | 288 -- .../typechain-types}/index.ts | 64 - yarn.lock => v1/yarn.lock | 0 .../Deploy.t.sol/31337/run-1721941521.json | 148 + .../Deploy.t.sol/31337/run-1721941537.json | 148 + .../Deploy.t.sol/31337/run-1721941552.json | 148 + .../Deploy.t.sol/31337/run-1721943917.json | 227 ++ .../Deploy.t.sol/31337/run-1721944003.json | 301 ++ .../Deploy.t.sol/31337/run-1721944043.json | 381 +++ .../Deploy.t.sol/31337/run-1721944644.json | 307 ++ .../Deploy.t.sol/31337/run-1721945079.json | 289 ++ .../Deploy.t.sol/31337/run-1721945234.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945386.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945532.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945545.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945594.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945817.json | 574 ++++ .../Deploy.t.sol/31337/run-1721945836.json | 289 ++ .../Deploy.t.sol/31337/run-1721945852.json | 574 ++++ .../Deploy.t.sol/31337/run-1721946037.json | 728 +++++ .../Deploy.t.sol/31337/run-1721946198.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946304.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946326.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946347.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946364.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946479.json | 929 ++++++ .../Deploy.t.sol/31337/run-1721946544.json | 1078 +++++++ .../Deploy.t.sol/31337/run-1721946584.json | 1078 +++++++ .../Deploy.t.sol/31337/run-1721946611.json | 1077 +++++++ .../Deploy.t.sol/31337/run-latest.json | 1077 +++++++ .../EvmCall.s.sol/31337/run-1722019987.json | 69 + .../EvmCall.s.sol/31337/run-1722020072.json | 69 + .../EvmCall.s.sol/31337/run-1722020162.json | 69 + .../EvmCall.s.sol/31337/run-1722020201.json | 69 + .../EvmCall.s.sol/31337/run-1722020244.json | 69 + .../EvmCall.s.sol/31337/run-1722020326.json | 69 + .../EvmCall.s.sol/31337/run-1722020353.json | 69 + .../EvmCall.s.sol/31337/run-1722020544.json | 69 + .../EvmCall.s.sol/31337/run-1722020594.json | 69 + .../EvmCall.s.sol/31337/run-1722020645.json | 69 + .../EvmCall.s.sol/31337/run-1722020667.json | 69 + .../EvmCall.s.sol/31337/run-1722020737.json | 69 + .../EvmCall.s.sol/31337/run-1722020759.json | 69 + .../EvmCall.s.sol/31337/run-1722020844.json | 69 + .../EvmCall.s.sol/31337/run-1722020882.json | 69 + .../EvmCall.s.sol/31337/run-1722020898.json | 69 + .../EvmCall.s.sol/31337/run-1722020953.json | 69 + .../EvmCall.s.sol/31337/run-1722021051.json | 69 + .../EvmCall.s.sol/31337/run-1722021079.json | 69 + .../EvmCall.s.sol/31337/run-1722021116.json | 69 + .../EvmCall.s.sol/31337/run-1722021137.json | 69 + .../EvmCall.s.sol/31337/run-1722021160.json | 69 + .../EvmCall.s.sol/31337/run-1722021237.json | 69 + .../EvmCall.s.sol/31337/run-1722021281.json | 69 + .../EvmCall.s.sol/31337/run-latest.json | 69 + .../31337/run-1722021596.json | 144 + .../31337/run-1722025672.json | 144 + .../31337/run-latest.json | 144 + .../ZevmCall.s.sol/31337/run-1722009201.json | 68 + .../ZevmCall.s.sol/31337/run-1722009258.json | 68 + .../ZevmCall.s.sol/31337/run-1722009361.json | 68 + .../ZevmCall.s.sol/31337/run-1722009428.json | 68 + .../ZevmCall.s.sol/31337/run-1722009517.json | 68 + .../ZevmCall.s.sol/31337/run-1722009689.json | 68 + .../ZevmCall.s.sol/31337/run-1722009885.json | 68 + .../ZevmCall.s.sol/31337/run-1722009949.json | 68 + .../ZevmCall.s.sol/31337/run-1722010025.json | 68 + .../ZevmCall.s.sol/31337/run-1722010111.json | 68 + .../ZevmCall.s.sol/31337/run-1722010410.json | 68 + .../ZevmCall.s.sol/31337/run-1722010426.json | 68 + .../ZevmCall.s.sol/31337/run-1722010675.json | 68 + .../ZevmCall.s.sol/31337/run-1722011033.json | 68 + .../ZevmCall.s.sol/31337/run-1722011431.json | 68 + .../ZevmCall.s.sol/31337/run-1722011464.json | 68 + .../ZevmCall.s.sol/31337/run-1722011593.json | 68 + .../ZevmCall.s.sol/31337/run-1722011900.json | 68 + .../ZevmCall.s.sol/31337/run-1722011932.json | 68 + .../ZevmCall.s.sol/31337/run-1722012130.json | 68 + .../ZevmCall.s.sol/31337/run-1722012143.json | 68 + .../ZevmCall.s.sol/31337/run-1722012254.json | 68 + .../ZevmCall.s.sol/31337/run-1722012502.json | 68 + .../ZevmCall.s.sol/31337/run-1722012678.json | 68 + .../ZevmCall.s.sol/31337/run-1722012845.json | 68 + .../ZevmCall.s.sol/31337/run-1722012873.json | 68 + .../ZevmCall.s.sol/31337/run-1722019487.json | 68 + .../ZevmCall.s.sol/31337/run-1722019521.json | 68 + .../ZevmCall.s.sol/31337/run-1722019617.json | 68 + .../ZevmCall.s.sol/31337/run-latest.json | 68 + .../31337/run-1722017717.json | 150 + .../31337/run-1722017758.json | 150 + .../31337/run-1722019253.json | 150 + .../31337/run-1722019296.json | 150 + .../31337/run-1722019382.json | 150 + .../31337/run-1722019532.json | 150 + .../31337/run-1722019595.json | 150 + .../31337/run-1722019611.json | 150 + .../31337/run-latest.json | 150 + v2_localnet.md | 139 - 1018 files changed, 22435 insertions(+), 91088 deletions(-) delete mode 100644 contracts/prototypes/evm/ERC20CustodyNew.sol delete mode 100644 contracts/prototypes/evm/GatewayEVM.sol delete mode 100644 contracts/prototypes/evm/GatewayEVMUpgradeTest.sol delete mode 100644 contracts/prototypes/evm/IERC20CustodyNew.sol delete mode 100644 contracts/prototypes/evm/IGatewayEVM.sol delete mode 100644 contracts/prototypes/evm/IReceiverEVM.sol delete mode 100644 contracts/prototypes/evm/IZetaConnector.sol delete mode 100644 contracts/prototypes/evm/IZetaNonEthNew.sol delete mode 100644 contracts/prototypes/evm/ReceiverEVM.sol delete mode 100644 contracts/prototypes/evm/TestERC20.sol delete mode 100644 contracts/prototypes/evm/ZetaConnectorNative.sol delete mode 100644 contracts/prototypes/evm/ZetaConnectorNewBase.sol delete mode 100644 contracts/prototypes/evm/ZetaConnectorNonNative.sol delete mode 100644 contracts/prototypes/zevm/GatewayZEVM.sol delete mode 100644 contracts/prototypes/zevm/IGatewayZEVM.sol delete mode 100644 contracts/prototypes/zevm/SenderZEVM.sol delete mode 100644 contracts/prototypes/zevm/TestZContract.sol delete mode 100644 echidna.yaml delete mode 100644 foundry.toml delete mode 160000 lib/forge-std delete mode 160000 lib/openzeppelin-foundry-upgrades delete mode 100644 pkg/contracts/evm/erc20custody.sol/erc20custody.go delete mode 100644 pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go delete mode 100644 pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go delete mode 100644 pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go delete mode 100644 pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go delete mode 100644 pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go delete mode 100644 pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go delete mode 100644 pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go delete mode 100644 pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go delete mode 100644 pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go delete mode 100644 pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go delete mode 100644 pkg/contracts/evm/testing/attackercontract.sol/victim.go delete mode 100644 pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go delete mode 100644 pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go delete mode 100644 pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go delete mode 100644 pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go delete mode 100644 pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go delete mode 100644 pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go delete mode 100644 pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go delete mode 100644 pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go delete mode 100644 pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go delete mode 100644 pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go delete mode 100644 pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go delete mode 100644 pkg/contracts/evm/zeta.eth.sol/zetaeth.go delete mode 100644 pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go delete mode 100644 pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go delete mode 100644 pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go delete mode 100644 pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go delete mode 100644 pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go delete mode 100644 pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go delete mode 100644 pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go delete mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go delete mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go delete mode 100644 pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevm.go delete mode 100644 pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go delete mode 100644 pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmevents.go delete mode 100644 pkg/contracts/prototypes/evm/igatewayevm.sol/revertable.go delete mode 100644 pkg/contracts/prototypes/evm/ireceiverevm.sol/ireceiverevmevents.go delete mode 100644 pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go delete mode 100644 pkg/contracts/prototypes/evm/izetanonethnew.sol/izetanonethnew.go delete mode 100644 pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go delete mode 100644 pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go delete mode 100644 pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go delete mode 100644 pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go delete mode 100644 pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go delete mode 100644 pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go delete mode 100644 pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevm.go delete mode 100644 pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmerrors.go delete mode 100644 pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmevents.go delete mode 100644 pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go delete mode 100644 pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go delete mode 100644 pkg/contracts/zevm/interfaces/isystem.sol/isystem.go delete mode 100644 pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go delete mode 100644 pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go delete mode 100644 pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go delete mode 100644 pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go delete mode 100644 pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go delete mode 100644 pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go delete mode 100644 pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go delete mode 100644 pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go delete mode 100644 pkg/contracts/zevm/systemcontract.sol/systemcontract.go delete mode 100644 pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go delete mode 100644 pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go delete mode 100644 pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go delete mode 100644 pkg/contracts/zevm/uniswap.sol/uniswapimports.go delete mode 100644 pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go delete mode 100644 pkg/contracts/zevm/wzeta.sol/weth9.go delete mode 100644 pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go delete mode 100644 pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go delete mode 100644 pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go delete mode 100644 pkg/contracts/zevm/zrc20.sol/zrc20.go delete mode 100644 pkg/contracts/zevm/zrc20.sol/zrc20errors.go delete mode 100644 pkg/contracts/zevm/zrc20new.sol/zrc20errors.go delete mode 100644 pkg/contracts/zevm/zrc20new.sol/zrc20new.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/access/ownableupgradeable.sol/ownableupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/interfaces/ierc1967upgradeable.sol/ierc1967upgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/proxy/beacon/ibeaconupgradeable.sol/ibeaconupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/proxy/erc1967/erc1967upgradeupgradeable.sol/erc1967upgradeupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/proxy/utils/initializable.sol/initializable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/proxy/utils/uupsupgradeable.sol/uupsupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/security/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/utils/addressupgradeable.sol/addressupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/utils/contextupgradeable.sol/contextupgradeable.go delete mode 100644 pkg/openzeppelin/contracts-upgradeable/utils/storageslotupgradeable.sol/storageslotupgradeable.go delete mode 100644 pkg/openzeppelin/contracts/access/ownable.sol/ownable.go delete mode 100644 pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go delete mode 100644 pkg/openzeppelin/contracts/security/pausable.sol/pausable.go delete mode 100644 pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go delete mode 100644 pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go delete mode 100644 pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go delete mode 100644 pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go delete mode 100644 pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go delete mode 100644 pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go delete mode 100644 pkg/openzeppelin/contracts/utils/address.sol/address.go delete mode 100644 pkg/openzeppelin/contracts/utils/context.sol/context.go delete mode 100644 pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go delete mode 100644 pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go delete mode 100644 pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go delete mode 100644 pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go delete mode 100644 pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go delete mode 100644 pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go delete mode 100644 pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go delete mode 100644 pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go delete mode 100644 pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go delete mode 100644 pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go delete mode 100644 pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go delete mode 100644 pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go delete mode 100644 pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go delete mode 100644 pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go delete mode 100644 pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go delete mode 100644 pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go delete mode 100644 remappings.txt delete mode 100644 scripts/readme.md delete mode 100644 scripts/worker.ts delete mode 100644 test/fuzz/ERC20CustodyNewEchidnaTest.sol delete mode 100644 test/fuzz/GatewayEVMEchidnaTest.sol delete mode 100644 test/fuzz/readme.md delete mode 100644 test/prototypes/GatewayEVMUniswap.spec.ts delete mode 100644 testFoundry/GatewayEVM.t.sol delete mode 100644 testFoundry/GatewayEVMUpgrade.t.sol delete mode 100644 testFoundry/GatewayEVMZEVM.t.sol delete mode 100644 testFoundry/GatewayZEVM.t.sol delete mode 100644 testFoundry/ZetaConnectorNative.t.sol delete mode 100644 testFoundry/ZetaConnectorNonNative.t.sol rename .env.example => v1/.env.example (100%) rename .eslintignore => v1/.eslintignore (100%) rename .eslintrc.js => v1/.eslintrc.js (100%) rename Dockerfile => v1/Dockerfile (100%) rename {contracts => v1/contracts}/evm/ERC20Custody.sol (100%) rename {contracts => v1/contracts}/evm/Zeta.eth.sol (100%) rename {contracts => v1/contracts}/evm/Zeta.non-eth.sol (100%) rename {contracts => v1/contracts}/evm/ZetaConnector.base.sol (100%) rename {contracts => v1/contracts}/evm/ZetaConnector.eth.sol (100%) rename {contracts => v1/contracts}/evm/ZetaConnector.non-eth.sol (100%) rename {contracts => v1/contracts}/evm/interfaces/ConnectorErrors.sol (100%) rename {contracts => v1/contracts}/evm/interfaces/ZetaErrors.sol (100%) rename {contracts => v1/contracts}/evm/interfaces/ZetaInteractorErrors.sol (100%) rename {contracts => v1/contracts}/evm/interfaces/ZetaInterfaces.sol (100%) rename {contracts => v1/contracts}/evm/interfaces/ZetaNonEthInterface.sol (100%) rename {contracts => v1/contracts}/evm/testing/AttackerContract.sol (100%) rename {contracts => v1/contracts}/evm/testing/ERC20Mock.sol (100%) rename {contracts => v1/contracts}/evm/testing/TestUniswapV3Contracts.sol (100%) rename {contracts => v1/contracts}/evm/testing/ZetaInteractorMock.sol (100%) rename {contracts => v1/contracts}/evm/testing/ZetaReceiverMock.sol (100%) rename {contracts => v1/contracts}/evm/tools/ImmutableCreate2Factory.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaInteractor.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaTokenConsumerTrident.strategy.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaTokenConsumerUniV2.strategy.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaTokenConsumerUniV3.strategy.sol (100%) rename {contracts => v1/contracts}/evm/tools/ZetaTokenConsumerZEVM.strategy.sol (100%) rename {contracts => v1/contracts}/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol (100%) rename {contracts => v1/contracts}/evm/tools/interfaces/TridentIPoolRouter.sol (100%) rename {contracts => v1/contracts}/zevm/SystemContract.sol (100%) rename {contracts => v1/contracts}/zevm/Uniswap.sol (100%) rename {contracts => v1/contracts}/zevm/UniswapPeriphery.sol (100%) rename {contracts => v1/contracts}/zevm/WZETA.sol (100%) rename {contracts => v1/contracts}/zevm/ZRC20.sol (100%) rename {contracts => v1/contracts}/zevm/ZRC20New.sol (100%) rename {contracts => v1/contracts}/zevm/ZetaConnectorZEVM.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/ISystem.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/IUniswapV2Router01.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/IUniswapV2Router02.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/IWZETA.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/IZRC20.sol (100%) rename {contracts => v1/contracts}/zevm/interfaces/zContract.sol (100%) rename {contracts => v1/contracts}/zevm/testing/SystemContractMock.sol (100%) rename {data => v1/data}/addresses.json (100%) rename {data => v1/data}/addresses.mainnet.json (100%) rename {data => v1/data}/addresses.testnet.json (100%) rename {data => v1/data}/readme.md (100%) rename {docs => v1/docs}/.gitignore (100%) rename {docs => v1/docs}/book.css (100%) rename {docs => v1/docs}/book.toml (100%) rename {docs => v1/docs}/solidity.min.js (100%) rename {docs => v1/docs}/src/README.md (100%) rename {docs => v1/docs}/src/SUMMARY.md (100%) rename {docs => v1/docs}/src/contracts/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md (100%) rename {docs => v1/docs}/src/contracts/evm/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/Zeta.eth.sol/contract.ZetaEth.md (100%) rename {docs => v1/docs}/src/contracts/evm/Zeta.non-eth.sol/contract.ZetaNonEth.md (100%) rename {docs => v1/docs}/src/contracts/evm/ZetaConnector.base.sol/contract.ZetaConnectorBase.md (100%) rename {docs => v1/docs}/src/contracts/evm/ZetaConnector.eth.sol/contract.ZetaConnectorEth.md (100%) rename {docs => v1/docs}/src/contracts/evm/ZetaConnector.non-eth.sol/contract.ZetaConnectorNonEth.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ConnectorErrors.sol/interface.ConnectorErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaErrors.sol/interface.ZetaErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInteractorErrors.sol/interface.ZetaInteractorErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaCommonErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaConnector.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaInterfaces.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaReceiver.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaTokenConsumer.md (100%) rename {docs => v1/docs}/src/contracts/evm/interfaces/ZetaNonEthInterface.sol/interface.ZetaNonEthInterface.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/AttackerContract.sol/contract.AttackerContract.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/AttackerContract.sol/interface.Victim.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/ERC20Mock.sol/contract.ERC20Mock.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.INonfungiblePositionManager.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.IPoolInitializer.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/ZetaInteractorMock.sol/contract.ZetaInteractorMock.md (100%) rename {docs => v1/docs}/src/contracts/evm/testing/ZetaReceiverMock.sol/contract.ZetaReceiverMock.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ImmutableCreate2Factory.sol/contract.ImmutableCreate2Factory.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ImmutableCreate2Factory.sol/interface.Ownable.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaInteractor.sol/abstract.ZetaInteractor.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/contract.ZetaTokenConsumerPancakeV3.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ISwapRouterPancake.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.WETH9.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/contract.ZetaTokenConsumerTrident.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.WETH9.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.ZetaTokenConsumerTridentErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/contract.ZetaTokenConsumerUniV2.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/interface.ZetaTokenConsumerUniV2Errors.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/contract.ZetaTokenConsumerUniV3.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.WETH9.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/contract.ZetaTokenConsumerZEVM.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/interface.ZetaTokenConsumerZEVMErrors.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/interfaces/README.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/interface.ConcentratedLiquidityPoolFactory.md (100%) rename {docs => v1/docs}/src/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/interface.IPoolRouter.md (100%) rename {docs => v1/docs}/src/contracts/zevm/Interfaces.sol/enum.CoinType.md (100%) rename {docs => v1/docs}/src/contracts/zevm/Interfaces.sol/interface.ISystem.md (100%) rename {docs => v1/docs}/src/contracts/zevm/Interfaces.sol/interface.IZRC20.md (100%) rename {docs => v1/docs}/src/contracts/zevm/Interfaces.sol/interface.IZRC20Metadata.md (100%) rename {docs => v1/docs}/src/contracts/zevm/README.md (100%) rename {docs => v1/docs}/src/contracts/zevm/SystemContract.sol/contract.SystemContract.md (100%) rename {docs => v1/docs}/src/contracts/zevm/SystemContract.sol/interface.SystemContractErrors.md (100%) rename {docs => v1/docs}/src/contracts/zevm/Uniswap.sol/contract.UniswapImports.md (100%) rename {docs => v1/docs}/src/contracts/zevm/UniswapPeriphery.sol/contract.UniswapImports.md (100%) rename {docs => v1/docs}/src/contracts/zevm/WZETA.sol/contract.WETH9.md (100%) rename {docs => v1/docs}/src/contracts/zevm/ZRC20.sol/contract.ZRC20.md (100%) rename {docs => v1/docs}/src/contracts/zevm/ZRC20.sol/interface.ZRC20Errors.md (100%) rename {docs => v1/docs}/src/contracts/zevm/ZetaConnectorZEVM.sol/contract.ZetaConnectorZEVM.md (100%) rename {docs => v1/docs}/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaInterfaces.md (100%) rename {docs => v1/docs}/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaReceiver.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/IUniswapV2Router01.sol/interface.IUniswapV2Router01.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/IUniswapV2Router02.sol/interface.IUniswapV2Router02.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/IWZETA.sol/interface.IWETH9.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/IZRC20.sol/interface.IZRC20.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/README.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/zContract.sol/interface.zContract.md (100%) rename {docs => v1/docs}/src/contracts/zevm/interfaces/zContract.sol/struct.zContext.md (100%) rename {docs => v1/docs}/src/contracts/zevm/testing/README.md (100%) rename {docs => v1/docs}/src/contracts/zevm/testing/SystemContractMock.sol/contract.SystemContractMock.md (100%) rename {docs => v1/docs}/src/contracts/zevm/testing/SystemContractMock.sol/interface.SystemContractErrors.md (100%) rename go.mod => v1/go.mod (100%) rename go.sum => v1/go.sum (100%) rename hardhat.config.ts => v1/hardhat.config.ts (97%) rename {lib => v1/lib}/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts (100%) rename {lib => v1/lib}/address.helpers.ts (100%) rename {lib => v1/lib}/address.tools.ts (100%) rename {lib => v1/lib}/addresses.ts (100%) rename {lib => v1/lib}/contracts.constants.ts (100%) rename {lib => v1/lib}/contracts.helpers.ts (100%) rename {lib => v1/lib}/deterministic-deploy.helpers.ts (100%) rename {lib => v1/lib}/index.ts (100%) rename {lib => v1/lib}/types.ts (100%) rename package.json => v1/package.json (95%) rename readme.md => v1/readme.md (100%) rename {scripts => v1/scripts}/deployments/core/deploy-deterministic.ts (90%) rename {scripts => v1/scripts}/deployments/core/deploy-erc20-custody.ts (100%) rename {scripts => v1/scripts}/deployments/core/deploy-immutable-create2-factory.ts (100%) rename {scripts => v1/scripts}/deployments/core/deploy-zeta-connector.ts (100%) rename {scripts => v1/scripts}/deployments/core/deploy-zeta-token.ts (100%) rename {scripts => v1/scripts}/deployments/core/deploy.ts (100%) rename {scripts => v1/scripts}/deployments/core/deterministic-deploy-erc20-custody.ts (94%) rename {scripts => v1/scripts}/deployments/core/deterministic-deploy-zeta-connector.ts (90%) rename {scripts => v1/scripts}/deployments/core/deterministic-deploy-zeta-token.ts (90%) rename {scripts => v1/scripts}/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts (100%) rename {scripts => v1/scripts}/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts (100%) rename {scripts => v1/scripts}/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts (100%) rename {scripts => v1/scripts}/deployments/tools/deterministic-get-salt-erc20-custody.ts (100%) rename {scripts => v1/scripts}/deployments/tools/deterministic-get-salt-zeta-connector.ts (100%) rename {scripts => v1/scripts}/deployments/tools/deterministic-get-salt-zeta-token.ts (100%) rename {scripts => v1/scripts}/generate_addresses.sh (100%) rename {scripts => v1/scripts}/generate_addresses_types.ts (100%) rename {scripts => v1/scripts}/generate_go.sh (100%) rename {scripts => v1/scripts}/tools/bytecode-checker/bytecode.constants.ts (100%) rename {scripts => v1/scripts}/tools/bytecode-checker/bytecode.helpers.ts (100%) rename {scripts => v1/scripts}/tools/bytecode-checker/bytecode.ts (100%) rename {scripts => v1/scripts}/tools/send-tss-gas.ts (100%) rename {scripts => v1/scripts}/tools/set-zeta-token-addresses.ts (100%) rename {scripts => v1/scripts}/tools/test-zeta-send.ts (100%) rename {scripts => v1/scripts}/tools/token-approval.ts (100%) rename {scripts => v1/scripts}/tools/update-tss-address.ts (100%) rename {scripts => v1/scripts}/tools/update-zeta-connector.ts (100%) rename slither.config.json => v1/slither.config.json (100%) rename {tasks => v1/tasks}/addresses.mainnet.json (100%) rename {tasks => v1/tasks}/addresses.testnet.json (100%) rename {tasks => v1/tasks}/addresses.ts (100%) rename {tasks => v1/tasks}/localnet.ts (100%) rename {tasks => v1/tasks}/readme.md (100%) rename {test => v1/test}/ConnectorZEVM.spec.ts (100%) rename {test => v1/test}/ERC20Custody.spec.ts (100%) rename {test => v1/test}/ImmutableCreate2Factory.spec.ts (100%) rename {test => v1/test}/ZRC20.spec.ts (100%) rename {test => v1/test}/Zeta.non-eth.spec.ts (100%) rename {test => v1/test}/ZetaConnector.spec.ts (100%) rename {test => v1/test}/ZetaInteractor.spec.ts (100%) rename {test => v1/test}/ZetaTokenConsumer.spec.ts (100%) rename {test => v1/test}/ZetaTokenConsumerZEVM.spec.ts (100%) rename {test => v1/test}/test.helpers.ts (100%) rename tsconfig.json => v1/tsconfig.json (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/access/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/security/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts-upgradeable/utils/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/access/Ownable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/access/Ownable2Step.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/access/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/security/Pausable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/security/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/ERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/IERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/extensions/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/ERC20/index.ts (100%) rename {typechain-types => v1/typechain-types}/@openzeppelin/contracts/token/index.ts (100%) rename {typechain-types/@uniswap/v2-core => v1/typechain-types/@openzeppelin}/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/UniswapV2ERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/UniswapV2Factory.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/UniswapV2Pair.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/IERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-core/contracts/interfaces/index.ts (100%) rename {typechain-types/@uniswap/v2-periphery => v1/typechain-types/@uniswap/v2-core}/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/UniswapV2Router02.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/interfaces/IERC20.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v2-periphery/contracts/interfaces/index.ts (100%) rename {typechain-types/@uniswap/v3-core => v1/typechain-types/@uniswap/v2-periphery}/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/callback/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-core/contracts/interfaces/pool/index.ts (100%) rename {typechain-types/@uniswap/v3-periphery => v1/typechain-types/@uniswap/v3-core}/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-periphery/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-periphery/contracts/interfaces/IQuoter.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts (100%) rename {typechain-types => v1/typechain-types}/@uniswap/v3-periphery/contracts/interfaces/index.ts (100%) rename {typechain-types/@openzeppelin => v1/typechain-types/@uniswap/v3-periphery}/index.ts (60%) rename {typechain-types => v1/typechain-types}/common.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ERC20Custody.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/Zeta.eth.sol/ZetaEth.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/Zeta.eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/Zeta.non-eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.base.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/ZetaConnector.non-eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ConnectorErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInteractorErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/ZetaNonEthInterface.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/AttackerContract.sol/Victim.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/AttackerContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/ERC20Mock.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/ZetaInteractorMock.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/ZetaReceiverMock.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/testing/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaInteractor.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/evm/tools/interfaces/index.ts (100%) rename {typechain-types/contracts/prototypes => v1/typechain-types/contracts}/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/ERC20Custody.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/ERC20CustodyNew.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/Gateway.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/GatewayUpgradeTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/GatewayV2.sol/Gateway.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/GatewayV2.sol/GatewayV2.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/GatewayV2.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/GatewayV2.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/Receiver.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/TestERC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/WETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ERC20CustodyNew.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/Gateway.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/GatewayUpgradeTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IGatewayEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IReceiverEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IZetaConnector.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/IZetaNonEthNew.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/Receiver.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ReceiverEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/TestERC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ZetaConnectorNative.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ZetaConnectorNew.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ZetaConnectorNewBase.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/ZetaConnectorNonNative.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/IGateway.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/evm/interfaces.sol/index.ts (100%) rename {typechain-types/contracts => v1/typechain-types/contracts/prototypes}/index.ts (72%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/interfaces.sol/IGateway.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/test/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/GatewayZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/Sender.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/SenderZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/TestZContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/ZRC20New.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/prototypes/zevm/interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/Interfaces.sol/ISystem.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/Interfaces.sol/IZRC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/Interfaces.sol/IZRC20Metadata.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/Interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/SystemContract.sol/SystemContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/SystemContract.sol/SystemContractErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/SystemContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/WZETA.sol/WETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/WZETA.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20.sol/ZRC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20.sol/ZRC20Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20New.sol/ZRC20New.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZRC20New.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZetaConnectorZEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/ZetaConnectorZEVM.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/ISystem.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IUniswapV2Router01.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IUniswapV2Router02.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IWZETA.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.sol/ISystem.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/IZRC20.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/ZContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/zContract.sol/ZContract.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/interfaces/zContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/testing/SystemContractMock.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/contracts/zevm/testing/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/access/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/security/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts-upgradeable/utils/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/access/Ownable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/access/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/security/Pausable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/security/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/ERC20/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@openzeppelin/contracts/token/index.ts (100%) rename {typechain-types/factories/@uniswap/v2-core => v1/typechain-types/factories/@openzeppelin}/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/UniswapV2ERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/UniswapV2Factory__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/UniswapV2Pair__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/IERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-core/contracts/interfaces/index.ts (100%) rename {typechain-types/factories/@uniswap/v2-periphery => v1/typechain-types/factories/@uniswap/v2-core}/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/interfaces/IERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts (100%) rename {typechain-types/factories/@uniswap/v3-core => v1/typechain-types/factories/@uniswap/v2-periphery}/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/callback/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts (100%) rename {typechain-types/factories/@uniswap/v3-periphery => v1/typechain-types/factories/@uniswap/v3-core}/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-periphery/contracts/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts (100%) rename {typechain-types/factories/@openzeppelin => v1/typechain-types/factories/@uniswap/v3-periphery}/index.ts (67%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ERC20Custody__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/Zeta.eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/Zeta.non-eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.base.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/ZetaConnector.non-eth.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ConnectorErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInteractorErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/ZetaNonEthInterface__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/AttackerContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/ERC20Mock__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts (98%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/testing/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaInteractor__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts (99%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/evm/tools/interfaces/index.ts (100%) rename {typechain-types/factories/contracts/prototypes => v1/typechain-types/factories/contracts}/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/ERC20CustodyNew__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/ERC20Custody__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/GatewayV2.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/GatewayV2__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/Gateway__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/Receiver__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/TestERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/WETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/Gateway__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/Receiver__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/TestERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/evm/interfaces.sol/index.ts (100%) rename {typechain-types/factories/contracts => v1/typechain-types/factories/contracts/prototypes}/index.ts (77%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/test/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/Sender__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/TestZContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/prototypes/zevm/interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/Interfaces.sol/ISystem__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/Interfaces.sol/IZRC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/Interfaces.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/SystemContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/WZETA.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20New.sol/ZRC20Errors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZRC20New.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/ZetaConnectorZEVM__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/ISystem__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IUniswapV2Router01__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IUniswapV2Router02__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20.sol/ISystem__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/IZRC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/ZContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/interfaces/zContract.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/contracts/zevm/testing/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdAssertions__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdError.sol/StdError__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdError.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdInvariant__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/StdStorage.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/Test__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/Vm.sol/VmSafe__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/Vm.sol/Vm__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/Vm.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC165__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IERC721.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/IMulticall3__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/mocks/MockERC20__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/mocks/MockERC721__factory.ts (100%) rename {typechain-types => v1/typechain-types}/factories/forge-std/mocks/index.ts (100%) rename {typechain-types => v1/typechain-types}/factories/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdAssertions.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdError.sol/StdError.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdError.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdInvariant.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdStorage.sol/StdStorageSafe.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/StdStorage.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/Test.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/Vm.sol/Vm.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/Vm.sol/VmSafe.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/Vm.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC165.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC20.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC721.sol/IERC721.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IERC721.sol/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/IMulticall3.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/interfaces/index.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/mocks/MockERC20.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/mocks/MockERC721.ts (100%) rename {typechain-types => v1/typechain-types}/forge-std/mocks/index.ts (100%) rename {typechain-types => v1/typechain-types}/hardhat.d.ts (74%) rename {typechain-types => v1/typechain-types}/index.ts (71%) rename yarn.lock => v1/yarn.lock (100%) create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941521.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941537.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941552.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721943917.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944003.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944043.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944644.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945079.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945234.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945386.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945532.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945545.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945594.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945817.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945836.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945852.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946037.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946198.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946304.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946326.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946347.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946364.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946479.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946544.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946584.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946611.json create mode 100644 v2/broadcast/Deploy.t.sol/31337/run-latest.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json create mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-latest.json create mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json create mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json create mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json create mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-latest.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json create mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json delete mode 100644 v2_localnet.md diff --git a/.gitmodules b/.gitmodules index 838d20b3..caa14d00 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,3 @@ -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std -[submodule "lib/openzeppelin-foundry-upgrades"] - path = lib/openzeppelin-foundry-upgrades - url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades [submodule "v2/lib/openzeppelin-foundry-upgrades"] path = v2/lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades diff --git a/contracts/prototypes/evm/ERC20CustodyNew.sol b/contracts/prototypes/evm/ERC20CustodyNew.sol deleted file mode 100644 index b7019c94..00000000 --- a/contracts/prototypes/evm/ERC20CustodyNew.sol +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; - -import "./IGatewayEVM.sol"; -import "./IERC20CustodyNew.sol"; - -// As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain -// This version include a functionality allowing to call a contract -// ERC20Custody doesn't call smart contract directly, it passes through the Gateway contract -contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, ReentrancyGuard { - using SafeERC20 for IERC20; - - IGatewayEVM public gateway; - address public tssAddress; - - // @dev Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } - - constructor(address _gateway, address _tssAddress) { - if (_gateway == address(0) || _tssAddress == address(0)) { - revert ZeroAddress(); - } - gateway = IGatewayEVM(_gateway); - tssAddress = _tssAddress; - } - - // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract call - function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { - IERC20(token).safeTransfer(to, amount); - - emit Withdraw(token, to, amount); - } - - // WithdrawAndCall is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { - // Transfer the tokens to the Gateway contract - IERC20(token).safeTransfer(address(gateway), amount); - - // Forward the call to the Gateway contract - gateway.executeWithERC20(token, to, amount, data); - - emit WithdrawAndCall(token, to, amount, data); - } - - // WithdrawAndRevert is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract - function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { - // Transfer the tokens to the Gateway contract - IERC20(token).safeTransfer(address(gateway), amount); - - // Forward the call to the Gateway contract - gateway.revertWithERC20(token, to, amount, data); - - emit WithdrawAndRevert(token, to, amount, data); - } -} \ No newline at end of file diff --git a/contracts/prototypes/evm/GatewayEVM.sol b/contracts/prototypes/evm/GatewayEVM.sol deleted file mode 100644 index fa958b18..00000000 --- a/contracts/prototypes/evm/GatewayEVM.sol +++ /dev/null @@ -1,223 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "./IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; - -/** - * @title GatewayEVM - * @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. - * @dev The contract doesn't hold any funds and should never have active allowances. - */ -contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { - using SafeERC20 for IERC20; - - /// @notice The address of the custody contract. - address public custody; - /// @notice The address of the TSS (Threshold Signature Scheme) contract. - address public tssAddress; - /// @notice The address of the ZetaConnector contract. - address public zetaConnector; - /// @notice The address of the Zeta token contract. - address public zetaToken; - - // @dev Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } - - // @dev Only custody address allowed modifier. - modifier onlyCustodyOrConnector() { - if (msg.sender != custody && msg.sender != zetaConnector) { - revert InvalidSender(); - } - _; - } - - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } - - function initialize(address _tssAddress, address _zetaToken) public initializer { - if (_tssAddress == address(0) || _zetaToken == address(0)) { - revert ZeroAddress(); - } - - __Ownable_init(); - __UUPSUpgradeable_init(); - __ReentrancyGuard_init(); - - tssAddress = _tssAddress; - zetaToken = _zetaToken; - } - - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} - - function _execute(address destination, bytes calldata data) internal returns (bytes memory) { - (bool success, bytes memory result) = destination.call{value: msg.value}(data); - if (!success) revert ExecutionFailed(); - - return result; - } - - // Called by the TSS - // Calling onRevert directly - function executeRevert(address destination, bytes calldata data) public payable onlyTSS { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); - if (!success) revert ExecutionFailed(); - Revertable(destination).onRevert(data); - - emit Reverted(destination, msg.value, data); - } - - // Called by the TSS - // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 - // It can be also used for contract call without asset movement - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { - bytes memory result = _execute(destination, data); - - emit Executed(destination, msg.value, data); - - return result; - } - - // Called by the ERC20Custody contract - // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) public nonReentrant onlyCustodyOrConnector { - if (amount == 0) revert InsufficientERC20Amount(); - // Approve the target contract to spend the tokens - if(!resetApproval(token, to)) revert ApprovalFailed(); - if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); - // Execute the call on the target contract - bytes memory result = _execute(to, data); - - // Reset approval - if(!resetApproval(token, to)) revert ApprovalFailed(); - - // Transfer any remaining tokens back to the custody/connector contract - uint256 remainingBalance = IERC20(token).balanceOf(address(this)); - if (remainingBalance > 0) { - transferToAssetHandler(token, remainingBalance); - } - - emit ExecutedWithERC20(token, to, amount, data); - } - - // Called by the ERC20Custody contract - // Directly transfers ERC20 and calls onRevert - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external nonReentrant onlyCustodyOrConnector { - if (amount == 0) revert InsufficientERC20Amount(); - - IERC20(token).safeTransfer(address(to), amount); - Revertable(to).onRevert(data); - - emit RevertedWithERC20(token, to, amount, data); - } - - // Deposit ETH to tss - function deposit(address receiver) external payable { - if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); - - if (deposited == false) revert DepositFailed(); - - emit Deposit(msg.sender, receiver, msg.value, address(0), ""); - } - - // Deposit ERC20 tokens to custody/connector - function deposit(address receiver, uint256 amount, address asset) external { - if (amount == 0) revert InsufficientERC20Amount(); - - transferFromToAssetHandler(msg.sender, asset, amount); - - emit Deposit(msg.sender, receiver, amount, asset, ""); - } - - // Deposit ETH to tss and call an omnichain smart contract - function depositAndCall(address receiver, bytes calldata payload) external payable { - if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); - - if (deposited == false) revert DepositFailed(); - - emit Deposit(msg.sender, receiver, msg.value, address(0), payload); - } - - // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract - function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { - if (amount == 0) revert InsufficientERC20Amount(); - - transferFromToAssetHandler(msg.sender, asset, amount); - - emit Deposit(msg.sender, receiver, amount, asset, payload); - } - - // Call an omnichain smart contract without asset transfer - function call(address receiver, bytes calldata payload) external { - emit Call(msg.sender, receiver, payload); - } - - function setCustody(address _custody) external onlyTSS { - if (custody != address(0)) revert CustodyInitialized(); - if (_custody == address(0)) revert ZeroAddress(); - - custody = _custody; - } - - function setConnector(address _zetaConnector) external onlyTSS { - if (zetaConnector != address(0)) revert CustodyInitialized(); - if (_zetaConnector == address(0)) revert ZeroAddress(); - - zetaConnector = _zetaConnector; - } - - function resetApproval(address token, address to) private returns (bool) { - return IERC20(token).approve(to, 0); - } - - function transferFromToAssetHandler(address from, address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector - // transfer amount to gateway - IERC20(token).safeTransferFrom(from, address(this), amount); - // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); - // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody - IERC20(token).safeTransferFrom(from, custody, amount); - } - } - - function transferToAssetHandler(address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector - // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); - // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody - IERC20(token).safeTransfer(custody, amount); - } - } -} diff --git a/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol b/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol deleted file mode 100644 index e94a09b2..00000000 --- a/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol +++ /dev/null @@ -1,207 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "./IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; - -// NOTE: Purpose of this contract is to test upgrade process, the only difference should be name of Executed event -// The Gateway contract is the endpoint to call smart contracts on external chains -// The contract doesn't hold any funds and should never have active allowances -/// @custom:oz-upgrades-from GatewayEVM -contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { - using SafeERC20 for IERC20; - - /// @notice The address of the custody contract. - address public custody; - - /// @notice The address of the TSS (Threshold Signature Scheme) contract. - address public tssAddress; - /// @notice The address of the ZetaConnector contract. - address public zetaConnector; - /// @notice The address of the Zeta token contract. - address public zetaToken; - - event ExecutedV2(address indexed destination, uint256 value, bytes data); - - constructor() {} - - function initialize(address _tssAddress, address _zetaToken) public initializer { - if (_tssAddress == address(0) || _zetaToken == address(0)) { - revert ZeroAddress(); - } - - __Ownable_init(); - __UUPSUpgradeable_init(); - __ReentrancyGuard_init(); - - tssAddress = _tssAddress; - zetaToken = _zetaToken; - } - - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} - - function _execute(address destination, bytes calldata data) internal returns (bytes memory) { - (bool success, bytes memory result) = destination.call{value: msg.value}(data); - if (!success) revert ExecutionFailed(); - - return result; - } - - // Called by the TSS - // Calling onRevert directly - function executeRevert(address destination, bytes calldata data) public payable { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); - if (!success) revert ExecutionFailed(); - Revertable(destination).onRevert(data); - - emit Reverted(destination, msg.value, data); - } - - // Called by the TSS - // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 - // It can be also used for contract call without asset movement - function execute(address destination, bytes calldata data) external payable returns (bytes memory) { - bytes memory result = _execute(destination, data); - - emit ExecutedV2(destination, msg.value, data); - - return result; - } - - // Called by the ERC20Custody contract - // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) public nonReentrant { - if (amount == 0) revert InsufficientETHAmount(); - // Approve the target contract to spend the tokens - if(!resetApproval(token, to)) revert ApprovalFailed(); - if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); - - // Execute the call on the target contract - bytes memory result = _execute(to, data); - - // Reset approval - if(!resetApproval(token, to)) revert ApprovalFailed(); - - // Transfer any remaining tokens back to the custody/connector contract - uint256 remainingBalance = IERC20(token).balanceOf(address(this)); - if (remainingBalance > 0) { - transferToAssetHandler(token, amount); - } - - emit ExecutedWithERC20(token, to, amount, data); - } - - // Called by the ERC20Custody contract - // Directly transfers ERC20 and calls onRevert - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external nonReentrant { - if (amount == 0) revert InsufficientERC20Amount(); - - IERC20(token).safeTransfer(address(to), amount); - Revertable(to).onRevert(data); - - emit RevertedWithERC20(token, to, amount, data); - } - - // Deposit ETH to tss - function deposit(address receiver) external payable { - if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); - - if (deposited == false) revert DepositFailed(); - - emit Deposit(msg.sender, receiver, msg.value, address(0), ""); - } - - // Deposit ERC20 tokens to custody/connector - function deposit(address receiver, uint256 amount, address asset) external { - if (amount == 0) revert InsufficientERC20Amount(); - - transferFromToAssetHandler(msg.sender, asset, amount); - - emit Deposit(msg.sender, receiver, amount, asset, ""); - } - - // Deposit ETH to tss and call an omnichain smart contract - function depositAndCall(address receiver, bytes calldata payload) external payable { - if (msg.value == 0) revert InsufficientETHAmount(); - (bool deposited, ) = tssAddress.call{value: msg.value}(""); - - if (deposited == false) revert DepositFailed(); - - emit Deposit(msg.sender, receiver, msg.value, address(0), payload); - } - - // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract - function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { - if (amount == 0) revert InsufficientERC20Amount(); - - transferFromToAssetHandler(msg.sender, asset, amount); - - emit Deposit(msg.sender, receiver, amount, asset, payload); - } - - // Call an omnichain smart contract without asset transfer - function call(address receiver, bytes calldata payload) external { - emit Call(msg.sender, receiver, payload); - } - - function setCustody(address _custody) external { - if (custody != address(0)) revert CustodyInitialized(); - if (_custody == address(0)) revert ZeroAddress(); - - custody = _custody; - } - - function setConnector(address _zetaConnector) external { - if (zetaConnector != address(0)) revert CustodyInitialized(); - if (_zetaConnector == address(0)) revert ZeroAddress(); - - zetaConnector = _zetaConnector; - } - - function resetApproval(address token, address to) private returns (bool) { - return IERC20(token).approve(to, 0); - } - - function transferFromToAssetHandler(address from, address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector - // transfer amount to gateway - IERC20(token).safeTransferFrom(from, address(this), amount); - // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); - // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody - IERC20(token).safeTransferFrom(from, custody, amount); - } - } - - function transferToAssetHandler(address token, uint256 amount) private { - if (token == zetaToken) { // transfer to connector - // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); - // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); - } else { // transfer to custody - IERC20(token).safeTransfer(custody, amount); - } - } -} diff --git a/contracts/prototypes/evm/IERC20CustodyNew.sol b/contracts/prototypes/evm/IERC20CustodyNew.sol deleted file mode 100644 index a07db920..00000000 --- a/contracts/prototypes/evm/IERC20CustodyNew.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -interface IERC20CustodyNewEvents { - event Withdraw(address indexed token, address indexed to, uint256 amount); - event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); -} - -interface IERC20CustodyNewErrors { - error ZeroAddress(); - error InvalidSender(); -} \ No newline at end of file diff --git a/contracts/prototypes/evm/IGatewayEVM.sol b/contracts/prototypes/evm/IGatewayEVM.sol deleted file mode 100644 index ae81b687..00000000 --- a/contracts/prototypes/evm/IGatewayEVM.sol +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -interface IGatewayEVMEvents { - event Executed(address indexed destination, uint256 value, bytes data); - event Reverted(address indexed destination, uint256 value, bytes data); - event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); - event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); - event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload); - event Call(address indexed sender, address indexed receiver, bytes payload); -} - -interface IGatewayEVMErrors { - error ExecutionFailed(); - error DepositFailed(); - error InsufficientETHAmount(); - error InsufficientERC20Amount(); - error ZeroAddress(); - error ApprovalFailed(); - error CustodyInitialized(); - error InvalidSender(); -} - -interface IGatewayEVM { - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; - - function execute(address destination, bytes calldata data) external payable returns (bytes memory); - - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; -} - -interface Revertable { - function onRevert(bytes calldata data) external; -} diff --git a/contracts/prototypes/evm/IReceiverEVM.sol b/contracts/prototypes/evm/IReceiverEVM.sol deleted file mode 100644 index d604a026..00000000 --- a/contracts/prototypes/evm/IReceiverEVM.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -interface IReceiverEVMEvents { - event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag); - event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag); - event ReceivedERC20(address sender, uint256 amount, address token, address destination); - event ReceivedNoParams(address sender); - event ReceivedRevert(address sender, bytes data); -} diff --git a/contracts/prototypes/evm/IZetaConnector.sol b/contracts/prototypes/evm/IZetaConnector.sol deleted file mode 100644 index 40e49ffc..00000000 --- a/contracts/prototypes/evm/IZetaConnector.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -interface IZetaConnectorEvents { - event Withdraw(address indexed to, uint256 amount); - event WithdrawAndCall(address indexed to, uint256 amount, bytes data); - event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); -} \ No newline at end of file diff --git a/contracts/prototypes/evm/IZetaNonEthNew.sol b/contracts/prototypes/evm/IZetaNonEthNew.sol deleted file mode 100644 index 5f0b1dd8..00000000 --- a/contracts/prototypes/evm/IZetaNonEthNew.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - -/** - * @dev IZetaNonEthNew is a mintable / burnable version of IERC20 - */ -interface IZetaNonEthNew is IERC20 { - function burnFrom(address account, uint256 amount) external; - - function mint(address mintee, uint256 value, bytes32 internalSendHash) external; -} \ No newline at end of file diff --git a/contracts/prototypes/evm/ReceiverEVM.sol b/contracts/prototypes/evm/ReceiverEVM.sol deleted file mode 100644 index c3887d97..00000000 --- a/contracts/prototypes/evm/ReceiverEVM.sol +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; -import "./IReceiverEVM.sol"; - -// @notice This contract is used just for testing -contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { - using SafeERC20 for IERC20; - error ZeroAmount(); - - // Payable function - function receivePayable(string memory str, uint256 num, bool flag) external payable { - emit ReceivedPayable(msg.sender, msg.value, str, num, flag); - } - - // Non-payable function - function receiveNonPayable(string[] memory strs, uint256[] memory nums, bool flag) external { - emit ReceivedNonPayable(msg.sender, strs, nums, flag); - } - - // Function using IERC20 - function receiveERC20(uint256 amount, address token, address destination) external nonReentrant { - // Transfer tokens from the Gateway contract to the destination address - IERC20(token).safeTransferFrom(msg.sender, destination, amount); - - emit ReceivedERC20(msg.sender, amount, token, destination); - } - - // Function using IERC20 to partially transfer tokens - function receiveERC20Partial(uint256 amount, address token, address destination) external nonReentrant { - uint256 amountToSend = amount / 2; - if (amountToSend == 0) revert ZeroAmount(); - - IERC20(token).safeTransferFrom(msg.sender, destination, amountToSend); - - emit ReceivedERC20(msg.sender, amountToSend, token, destination); - } - - // Function without parameters - function receiveNoParams() external { - emit ReceivedNoParams(msg.sender); - } - - // onRevertCallback - function onRevert(bytes calldata data) external { - emit ReceivedRevert(msg.sender, data); - } - - receive() external payable {} - fallback() external payable {} -} \ No newline at end of file diff --git a/contracts/prototypes/evm/TestERC20.sol b/contracts/prototypes/evm/TestERC20.sol deleted file mode 100644 index 82702031..00000000 --- a/contracts/prototypes/evm/TestERC20.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -// @notice This contract is used just for testing -contract TestERC20 is ERC20 { - constructor(string memory name, string memory symbol) ERC20(name, symbol) {} - - function mint(address to, uint256 amount) external { - _mint(to, amount); - } -} \ No newline at end of file diff --git a/contracts/prototypes/evm/ZetaConnectorNative.sol b/contracts/prototypes/evm/ZetaConnectorNative.sol deleted file mode 100644 index d3fce429..00000000 --- a/contracts/prototypes/evm/ZetaConnectorNative.sol +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "./ZetaConnectorNewBase.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - -contract ZetaConnectorNative is ZetaConnectorNewBase { - using SafeERC20 for IERC20; - - constructor(address _gateway, address _zetaToken, address _tssAddress) - ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} - - // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { - IERC20(zetaToken).safeTransfer(to, amount); - emit Withdraw(to, amount); - } - - // @dev withdrawAndCall is called by TSS address, it transfers zetaToken to the gateway and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { - // Transfer zetaToken to the Gateway contract - IERC20(zetaToken).safeTransfer(address(gateway), amount); - - // Forward the call to the Gateway contract - gateway.executeWithERC20(address(zetaToken), to, amount, data); - - emit WithdrawAndCall(to, amount, data); - } - - // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { - // Transfer zetaToken to the Gateway contract - IERC20(zetaToken).safeTransfer(address(gateway), amount); - - // Forward the call to the Gateway contract - gateway.revertWithERC20(address(zetaToken), to, amount, data); - - emit WithdrawAndRevert(to, amount, data); - } - - // @dev receiveTokens handles token transfer back to connector - function receiveTokens(uint256 amount) external override { - IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), amount); - } -} diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol deleted file mode 100644 index f2223afd..00000000 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; - -import "./IGatewayEVM.sol"; -import "./IZetaConnector.sol"; - -abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { - using SafeERC20 for IERC20; - - error ZeroAddress(); - error InvalidSender(); - - IGatewayEVM public immutable gateway; - address public immutable zetaToken; - address public tssAddress; - - // @dev Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } - - constructor(address _gateway, address _zetaToken, address _tssAddress) { - if (_gateway == address(0) || _zetaToken == address(0) || _tssAddress == address(0)) { - revert ZeroAddress(); - } - gateway = IGatewayEVM(_gateway); - zetaToken = _zetaToken; - tssAddress = _tssAddress; - } - - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; - - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; - - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; - - function receiveTokens(uint256 amount) external virtual; -} \ No newline at end of file diff --git a/contracts/prototypes/evm/ZetaConnectorNonNative.sol b/contracts/prototypes/evm/ZetaConnectorNonNative.sol deleted file mode 100644 index 3bb8a04a..00000000 --- a/contracts/prototypes/evm/ZetaConnectorNonNative.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "./ZetaConnectorNewBase.sol"; -import "./IZetaNonEthNew.sol"; -import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; - -contract ZetaConnectorNonNative is ZetaConnectorNewBase { - constructor(address _gateway, address _zetaToken, address _tssAddress) - ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} - - // @dev withdraw is called by TSS address, it mints zetaToken to the destination address - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { - IZetaNonEthNew(zetaToken).mint(to, amount, internalSendHash); - emit Withdraw(to, amount); - } - - // @dev withdrawAndCall is called by TSS address, it mints zetaToken and calls a contract - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { - // Mint zetaToken to the Gateway contract - IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); - - // Forward the call to the Gateway contract - gateway.executeWithERC20(address(zetaToken), to, amount, data); - - emit WithdrawAndCall(to, amount, data); - } - - // @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a contract - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { - // Mint zetaToken to the Gateway contract - IZetaNonEthNew(zetaToken).mint(address(gateway), amount, internalSendHash); - - // Forward the call to the Gateway contract - gateway.revertWithERC20(address(zetaToken), to, amount, data); - - emit WithdrawAndRevert(to, amount, data); - } - - // @dev receiveTokens handles token transfer and burn them - function receiveTokens(uint256 amount) external override { - IZetaNonEthNew(zetaToken).burnFrom(msg.sender, amount); - } -} diff --git a/contracts/prototypes/zevm/GatewayZEVM.sol b/contracts/prototypes/zevm/GatewayZEVM.sol deleted file mode 100644 index 99d1f9ca..00000000 --- a/contracts/prototypes/zevm/GatewayZEVM.sol +++ /dev/null @@ -1,177 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; -import "../../zevm/interfaces/IZRC20.sol"; -import "../../zevm/interfaces/zContract.sol"; -import "./IGatewayZEVM.sol"; -import "../../zevm/interfaces/IWZETA.sol"; - -// The GatewayZEVM contract is the endpoint to call smart contracts on omnichain -// The contract doesn't hold any funds and should never have active allowances -contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable { - error ZeroAddress(); - - address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; - address public zetaToken; - - // @dev Only Fungible module address allowed modifier. - modifier onlyFungible() { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) { - revert CallerIsNotFungibleModule(); - } - _; - } - - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } - - function initialize(address _zetaToken) public initializer { - if (_zetaToken == address(0)) { - revert ZeroAddress(); - } - - __Ownable_init(); - __UUPSUpgradeable_init(); - __ReentrancyGuard_init(); - zetaToken = _zetaToken; - } - - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} - - /// @dev Receive function to receive ZETA from WETH9.withdraw(). - receive() external payable { - if (msg.sender != zetaToken && msg.sender != FUNGIBLE_MODULE_ADDRESS) revert OnlyWZETAOrFungible(); - } - - function _withdrawZRC20(uint256 amount, address zrc20) internal returns (uint256) { - (address gasZRC20, uint256 gasFee) = IZRC20(zrc20).withdrawGasFee(); - if (!IZRC20(gasZRC20).transferFrom(msg.sender, FUNGIBLE_MODULE_ADDRESS, gasFee)) { - revert GasFeeTransferFailed(); - } - - if (!IZRC20(zrc20).transferFrom(msg.sender, address(this), amount)) { - revert ZRC20TransferFailed(); - } - - if (!IZRC20(zrc20).burn(amount)) revert ZRC20BurnFailed(); - - return gasFee; - } - - function _transferZETA(uint256 amount, address to) internal { - if (!IWETH9(zetaToken).transferFrom(msg.sender, address(this), amount)) revert FailedZetaSent(); - IWETH9(zetaToken).withdraw(amount); - (bool sent, ) = to.call{value: amount}(""); - if (!sent) revert FailedZetaSent(); - } - - // Withdraw ZRC20 tokens to external chain - function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant { - uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); - } - - // Withdraw ZRC20 tokens and call smart contract on external chain - function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external nonReentrant { - uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); - } - - // Withdraw ZETA to external chain - function withdraw(uint256 amount) external nonReentrant { - _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); - emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, ""); - } - - // Withdraw ZETA and call smart contract on external chain - function withdrawAndCall(uint256 amount, bytes calldata message) external nonReentrant { - _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); - emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message); - } - - // Call smart contract on external chain without asset transfer - function call(bytes memory receiver, bytes calldata message) external nonReentrant { - emit Call(msg.sender, receiver, message); - } - - // Deposit foreign coins into ZRC20 - function deposit( - address zrc20, - uint256 amount, - address target - ) external onlyFungible { - if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - - IZRC20(zrc20).deposit(target, amount); - } - - // Execute user specified contract on ZEVM - function execute( - zContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external onlyFungible { - UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); - } - - // Deposit foreign coins into ZRC20 and call user specified contract on ZEVM - function depositAndCall( - zContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external onlyFungible { - if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - - IZRC20(zrc20).deposit(target, amount); - UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); - } - - // Deposit zeta and call user specified contract on ZEVM - function depositAndCall( - zContext calldata context, - uint256 amount, - address target, - bytes calldata message - ) external onlyFungible { - if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - - _transferZETA(amount, target); - UniversalContract(target).onCrossChainCall(context, zetaToken, amount, message); - } - - // Revert user specified contract on ZEVM - function executeRevert( - revertContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external onlyFungible { - UniversalContract(target).onRevert(context, zrc20, amount, message); - } - - // Deposit foreign coins into ZRC20 and revert user specified contract on ZEVM - function depositAndRevert( - revertContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external onlyFungible { - if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - - IZRC20(zrc20).deposit(target, amount); - UniversalContract(target).onRevert(context, zrc20, amount, message); - } -} diff --git a/contracts/prototypes/zevm/IGatewayZEVM.sol b/contracts/prototypes/zevm/IGatewayZEVM.sol deleted file mode 100644 index af6dba4a..00000000 --- a/contracts/prototypes/zevm/IGatewayZEVM.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "../../zevm/interfaces/zContract.sol"; - -interface IGatewayZEVM { - function withdraw(bytes memory receiver, uint256 amount, address zrc20) external; - - function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external; - - function call(bytes memory receiver, bytes calldata message) external; - - function deposit( - address zrc20, - uint256 amount, - address target - ) external; - - function execute( - zContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external; - - function depositAndCall( - zContext calldata context, - address zrc20, - uint256 amount, - address target, - bytes calldata message - ) external; -} - -interface IGatewayZEVMEvents { - event Call(address indexed sender, bytes receiver, bytes message); - event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); -} - -interface IGatewayZEVMErrors { - error WithdrawalFailed(); - error InsufficientZRC20Amount(); - error ZRC20BurnFailed(); - error ZRC20TransferFailed(); - error GasFeeTransferFailed(); - error CallerIsNotFungibleModule(); - error InvalidTarget(); - error FailedZetaSent(); - error OnlyWZETAOrFungible(); -} \ No newline at end of file diff --git a/contracts/prototypes/zevm/SenderZEVM.sol b/contracts/prototypes/zevm/SenderZEVM.sol deleted file mode 100644 index 4e999f69..00000000 --- a/contracts/prototypes/zevm/SenderZEVM.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "./IGatewayZEVM.sol"; -import "../../zevm/interfaces/IZRC20.sol"; - -// @notice This contract is used just for testing -contract SenderZEVM { - address public gateway; - error ApprovalFailed(); - - constructor(address _gateway) { - gateway = _gateway; - } - - // Call receiver on EVM - function callReceiver(bytes memory receiver, string memory str, uint256 num, bool flag) external { - // Encode the function call to the receiver's receivePayable method - bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - - // Pass encoded call to gateway - IGatewayZEVM(gateway).call(receiver, message); - } - - // Withdraw and call receiver on EVM - function withdrawAndCallReceiver(bytes memory receiver, uint256 amount, address zrc20, string memory str, uint256 num, bool flag) external { - // Encode the function call to the receiver's receivePayable method - bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - - // Approve gateway to withdraw - if(!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); - - // Pass encoded call to gateway - IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message); - } -} \ No newline at end of file diff --git a/contracts/prototypes/zevm/TestZContract.sol b/contracts/prototypes/zevm/TestZContract.sol deleted file mode 100644 index 78593716..00000000 --- a/contracts/prototypes/zevm/TestZContract.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../zevm/interfaces/zContract.sol"; - -// @notice This contract is used just for testing -contract TestZContract is UniversalContract { - event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); - event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); - - function onCrossChainCall( - zContext calldata context, - address zrc20, - uint256 amount, - bytes calldata message - ) external override { - string memory decodedMessage; - if (message.length > 0) { - decodedMessage = abi.decode(message, (string)); - } - emit ContextData(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); - } - - function onRevert( - revertContext calldata context, - address zrc20, - uint256 amount, - bytes calldata message - ) external override { - string memory decodedMessage; - if (message.length > 0) { - decodedMessage = abi.decode(message, (string)); - } - emit ContextDataRevert(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); - } - - receive() external payable {} - fallback() external payable {} -} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml deleted file mode 100644 index de1bb2de..00000000 --- a/echidna.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# provide solc remappings to crytic-compile -cryticArgs: ['--solc-remaps', '@=node_modules/@'] -testMode: "assertion" -testLimit: 50000 -seqLen: 10000 -allContracts: false -balanceAddr: 0x1043561a8829300000 \ No newline at end of file diff --git a/foundry.toml b/foundry.toml deleted file mode 100644 index f97dd94c..00000000 --- a/foundry.toml +++ /dev/null @@ -1,15 +0,0 @@ -[profile.default] -src = 'contracts' -out = 'out' -libs = ['node_modules', 'lib'] -test = 'testFoundry' -cache_path = 'cache_forge' -no-match-contract = '.*EchidnaTest$' -optimizer = true -optimizer_runs = 10_000 -ffi = true -ast = true -build_info = true -extra_output = ["storageLayout"] -fs_permissions = [{ access = "read", path = "out"}] -evm_version = "london" diff --git a/lib/forge-std b/lib/forge-std deleted file mode 160000 index 07263d19..00000000 --- a/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 07263d193d621c4b2b0ce8b4d54af58f6957d97d diff --git a/lib/openzeppelin-foundry-upgrades b/lib/openzeppelin-foundry-upgrades deleted file mode 160000 index 4cd15fc5..00000000 --- a/lib/openzeppelin-foundry-upgrades +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4cd15fc50b141c77d8cc9ff8efb44d00e841a299 diff --git a/pkg/contracts/evm/erc20custody.sol/erc20custody.go b/pkg/contracts/evm/erc20custody.sol/erc20custody.go deleted file mode 100644 index 0564dfec..00000000 --- a/pkg/contracts/evm/erc20custody.sol/erc20custody.go +++ /dev/null @@ -1,1868 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc20custody - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. -var ERC20CustodyMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaMaxFee_\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"zeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTSSUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaMaxFeeExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"}],\"name\":\"RenouncedTSSUpdater\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Unwhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"UpdatedTSSAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"UpdatedZetaFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Whitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TSSAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TSSAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTSSAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"unwhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"updateTSSAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"updateZetaFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeta\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaMaxFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620021a0380380620021a0833981810160405281019062000037919062000156565b6001600081905550846001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160808181525050505050505062000283565b600081519050620001228162000235565b92915050565b60008151905062000139816200024f565b92915050565b600081519050620001508162000269565b92915050565b600080600080600060a0868803121562000175576200017462000230565b5b6000620001858882890162000111565b9550506020620001988882890162000111565b9450506040620001ab888289016200013f565b9350506060620001be888289016200013f565b9250506080620001d18882890162000128565b9150509295509295909350565b6000620001eb8262000206565b9050919050565b6000620001ff82620001de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200024081620001de565b81146200024c57600080fd5b50565b6200025a81620001f2565b81146200026657600080fd5b50565b620002748162000226565b81146200028057600080fd5b50565b60805160a05160601c611edf620002c160003960008181610dca01528181610e31015261102d01526000818161042d0152610c310152611edf6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103ce565b6040516101249190611a04565b60405180910390f35b6101356103f2565b6040516101429190611a04565b60405180910390f35b610153610418565b6040516101609190611a7f565b60405180910390f35b61017161042b565b60405161017e9190611ba0565b60405180910390f35b61018f61044f565b005b6101ab60048036038101906101a691906116b3565b6105f5565b005b6101c760048036038101906101c29190611807565b61075c565b005b6101e360048036038101906101de9190611807565b61087f565b005b6101ff60048036038101906101fa9190611807565b6109a2565b60405161020c9190611a7f565b60405180910390f35b61022f600480360381019061022a91906116e0565b6109c2565b005b61024b60048036038101906102469190611834565b610b6f565b005b610255610cca565b6040516102629190611ba0565b60405180910390f35b61028560048036038101906102809190611760565b610cd0565b005b61028f61102b565b60405161029c9190611ae3565b60405180910390f35b6102ad61104f565b005b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610334576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff1661037a576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c49190611a04565b60405180910390a1565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff161561051b576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105eb9190611a04565b60405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067b576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947816040516107519190611a04565b60405180910390a150565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60046020528060005260406000206000915054906101000a900460ff1681565b6109ca6111f6565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ad2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610afd83828473ffffffffffffffffffffffffffffffffffffffff166112469092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b5a9190611ba0565b60405180910390a3610b6a6112cc565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c2f576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610c89576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cbf9190611ba0565b60405180910390a150565b60035481565b610cd86111f6565b600160009054906101000a900460ff1615610d1f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035414158015610e025750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610e7757610e763360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb29190611a04565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611861565b9050610f313330868873ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fa59190611a04565b60206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190611861565b610fff9190611bfe565b8787604051611012959493929190611a9a565b60405180910390a2506110236112cc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d5576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777336040516111ec9190611a04565b60405180910390a1565b6002600054141561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390611b80565b60405180910390fd5b6002600081905550565b6112c78363a9059cbb60e01b8484604051602401611265929190611a56565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b505050565b6001600081905550565b611359846323b872dd60e01b8585856040516024016112f793929190611a1f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b50505050565b60006113c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114269092919063ffffffff16565b905060008151111561142157808060200190518101906113e19190611733565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790611b60565b60405180910390fd5b5b505050565b6060611435848460008561143e565b90509392505050565b606082471015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90611b20565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ac91906119ed565b60006040518083038185875af1925050503d80600081146114e9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ee565b606091505b50915091506114ff8783838761150b565b92505050949350505050565b6060831561156e576000835114156115665761152685611581565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90611b40565b60405180910390fd5b5b829050611579565b61157883836115a4565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115b75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611afe565b60405180910390fd5b60008135905061160381611e4d565b92915050565b60008151905061161881611e64565b92915050565b60008083601f84011261163457611633611d38565b5b8235905067ffffffffffffffff81111561165157611650611d33565b5b60208301915083600182028301111561166d5761166c611d3d565b5b9250929050565b60008135905061168381611e7b565b92915050565b60008135905061169881611e92565b92915050565b6000815190506116ad81611e92565b92915050565b6000602082840312156116c9576116c8611d47565b5b60006116d7848285016115f4565b91505092915050565b6000806000606084860312156116f9576116f8611d47565b5b6000611707868287016115f4565b935050602061171886828701611674565b925050604061172986828701611689565b9150509250925092565b60006020828403121561174957611748611d47565b5b600061175784828501611609565b91505092915050565b6000806000806000806080878903121561177d5761177c611d47565b5b600087013567ffffffffffffffff81111561179b5761179a611d42565b5b6117a789828a0161161e565b965096505060206117ba89828a01611674565b94505060406117cb89828a01611689565b935050606087013567ffffffffffffffff8111156117ec576117eb611d42565b5b6117f889828a0161161e565b92509250509295509295509295565b60006020828403121561181d5761181c611d47565b5b600061182b84828501611674565b91505092915050565b60006020828403121561184a57611849611d47565b5b600061185884828501611689565b91505092915050565b60006020828403121561187757611876611d47565b5b60006118858482850161169e565b91505092915050565b61189781611c32565b82525050565b6118a681611c44565b82525050565b60006118b88385611bd1565b93506118c5838584611cc2565b6118ce83611d4c565b840190509392505050565b60006118e482611bbb565b6118ee8185611be2565b93506118fe818560208601611cd1565b80840191505092915050565b61191381611c8c565b82525050565b600061192482611bc6565b61192e8185611bed565b935061193e818560208601611cd1565b61194781611d4c565b840191505092915050565b600061195f602683611bed565b915061196a82611d5d565b604082019050919050565b6000611982601d83611bed565b915061198d82611dac565b602082019050919050565b60006119a5602a83611bed565b91506119b082611dd5565b604082019050919050565b60006119c8601f83611bed565b91506119d382611e24565b602082019050919050565b6119e781611c82565b82525050565b60006119f982846118d9565b915081905092915050565b6000602082019050611a19600083018461188e565b92915050565b6000606082019050611a34600083018661188e565b611a41602083018561188e565b611a4e60408301846119de565b949350505050565b6000604082019050611a6b600083018561188e565b611a7860208301846119de565b9392505050565b6000602082019050611a94600083018461189d565b92915050565b60006060820190508181036000830152611ab58187896118ac565b9050611ac460208301866119de565b8181036040830152611ad78184866118ac565b90509695505050505050565b6000602082019050611af8600083018461190a565b92915050565b60006020820190508181036000830152611b188184611919565b905092915050565b60006020820190508181036000830152611b3981611952565b9050919050565b60006020820190508181036000830152611b5981611975565b9050919050565b60006020820190508181036000830152611b7981611998565b9050919050565b60006020820190508181036000830152611b99816119bb565b9050919050565b6000602082019050611bb560008301846119de565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0982611c82565b9150611c1483611c82565b925082821015611c2757611c26611d04565b5b828203905092915050565b6000611c3d82611c62565b9050919050565b60008115159050919050565b6000611c5b82611c32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c9782611c9e565b9050919050565b6000611ca982611cb0565b9050919050565b6000611cbb82611c62565b9050919050565b82818337600083830152505050565b60005b83811015611cef578082015181840152602081019050611cd4565b83811115611cfe576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611e5681611c32565b8114611e6157600080fd5b50565b611e6d81611c44565b8114611e7857600080fd5b50565b611e8481611c50565b8114611e8f57600080fd5b50565b611e9b81611c82565b8114611ea657600080fd5b5056fea26469706673582212205768544075d85a56b1d380f8fcc0c8829b8a656c656277c25c81c31608d9e4ef64736f6c63430008070033", -} - -// ERC20CustodyABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20CustodyMetaData.ABI instead. -var ERC20CustodyABI = ERC20CustodyMetaData.ABI - -// ERC20CustodyBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20CustodyMetaData.Bin instead. -var ERC20CustodyBin = ERC20CustodyMetaData.Bin - -// DeployERC20Custody deploys a new Ethereum contract, binding an instance of ERC20Custody to it. -func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, TSSAddress_ common.Address, TSSAddressUpdater_ common.Address, zetaFee_ *big.Int, zetaMaxFee_ *big.Int, zeta_ common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { - parsed, err := ERC20CustodyMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, TSSAddress_, TSSAddressUpdater_, zetaFee_, zetaMaxFee_, zeta_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil -} - -// ERC20Custody is an auto generated Go binding around an Ethereum contract. -type ERC20Custody struct { - ERC20CustodyCaller // Read-only binding to the contract - ERC20CustodyTransactor // Write-only binding to the contract - ERC20CustodyFilterer // Log filterer for contract events -} - -// ERC20CustodyCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20CustodyCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodyTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20CustodyTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20CustodyFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20CustodySession struct { - Contract *ERC20Custody // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20CustodyCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20CustodyCallerSession struct { - Contract *ERC20CustodyCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20CustodyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20CustodyTransactorSession struct { - Contract *ERC20CustodyTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20CustodyRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20CustodyRaw struct { - Contract *ERC20Custody // Generic contract binding to access the raw methods on -} - -// ERC20CustodyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CustodyCallerRaw struct { - Contract *ERC20CustodyCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC20CustodyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20CustodyTransactorRaw struct { - Contract *ERC20CustodyTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20Custody creates a new instance of ERC20Custody, bound to a specific deployed contract. -func NewERC20Custody(address common.Address, backend bind.ContractBackend) (*ERC20Custody, error) { - contract, err := bindERC20Custody(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil -} - -// NewERC20CustodyCaller creates a new read-only instance of ERC20Custody, bound to a specific deployed contract. -func NewERC20CustodyCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyCaller, error) { - contract, err := bindERC20Custody(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20CustodyCaller{contract: contract}, nil -} - -// NewERC20CustodyTransactor creates a new write-only instance of ERC20Custody, bound to a specific deployed contract. -func NewERC20CustodyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyTransactor, error) { - contract, err := bindERC20Custody(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20CustodyTransactor{contract: contract}, nil -} - -// NewERC20CustodyFilterer creates a new log filterer instance of ERC20Custody, bound to a specific deployed contract. -func NewERC20CustodyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyFilterer, error) { - contract, err := bindERC20Custody(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20CustodyFilterer{contract: contract}, nil -} - -// bindERC20Custody binds a generic wrapper to an already deployed contract. -func bindERC20Custody(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20CustodyMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Custody *ERC20CustodyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Custody.Contract.ERC20CustodyCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Custody *ERC20CustodyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Custody *ERC20CustodyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Custody *ERC20CustodyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Custody.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Custody *ERC20CustodyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Custody.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Custody *ERC20CustodyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Custody.Contract.contract.Transact(opts, method, params...) -} - -// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. -// -// Solidity: function TSSAddress() view returns(address) -func (_ERC20Custody *ERC20CustodyCaller) TSSAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "TSSAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. -// -// Solidity: function TSSAddress() view returns(address) -func (_ERC20Custody *ERC20CustodySession) TSSAddress() (common.Address, error) { - return _ERC20Custody.Contract.TSSAddress(&_ERC20Custody.CallOpts) -} - -// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. -// -// Solidity: function TSSAddress() view returns(address) -func (_ERC20Custody *ERC20CustodyCallerSession) TSSAddress() (common.Address, error) { - return _ERC20Custody.Contract.TSSAddress(&_ERC20Custody.CallOpts) -} - -// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. -// -// Solidity: function TSSAddressUpdater() view returns(address) -func (_ERC20Custody *ERC20CustodyCaller) TSSAddressUpdater(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "TSSAddressUpdater") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. -// -// Solidity: function TSSAddressUpdater() view returns(address) -func (_ERC20Custody *ERC20CustodySession) TSSAddressUpdater() (common.Address, error) { - return _ERC20Custody.Contract.TSSAddressUpdater(&_ERC20Custody.CallOpts) -} - -// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. -// -// Solidity: function TSSAddressUpdater() view returns(address) -func (_ERC20Custody *ERC20CustodyCallerSession) TSSAddressUpdater() (common.Address, error) { - return _ERC20Custody.Contract.TSSAddressUpdater(&_ERC20Custody.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ERC20Custody *ERC20CustodyCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "paused") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ERC20Custody *ERC20CustodySession) Paused() (bool, error) { - return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ERC20Custody *ERC20CustodyCallerSession) Paused() (bool, error) { - return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) -} - -// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. -// -// Solidity: function whitelisted(address ) view returns(bool) -func (_ERC20Custody *ERC20CustodyCaller) Whitelisted(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "whitelisted", arg0) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. -// -// Solidity: function whitelisted(address ) view returns(bool) -func (_ERC20Custody *ERC20CustodySession) Whitelisted(arg0 common.Address) (bool, error) { - return _ERC20Custody.Contract.Whitelisted(&_ERC20Custody.CallOpts, arg0) -} - -// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. -// -// Solidity: function whitelisted(address ) view returns(bool) -func (_ERC20Custody *ERC20CustodyCallerSession) Whitelisted(arg0 common.Address) (bool, error) { - return _ERC20Custody.Contract.Whitelisted(&_ERC20Custody.CallOpts, arg0) -} - -// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. -// -// Solidity: function zeta() view returns(address) -func (_ERC20Custody *ERC20CustodyCaller) Zeta(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "zeta") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. -// -// Solidity: function zeta() view returns(address) -func (_ERC20Custody *ERC20CustodySession) Zeta() (common.Address, error) { - return _ERC20Custody.Contract.Zeta(&_ERC20Custody.CallOpts) -} - -// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. -// -// Solidity: function zeta() view returns(address) -func (_ERC20Custody *ERC20CustodyCallerSession) Zeta() (common.Address, error) { - return _ERC20Custody.Contract.Zeta(&_ERC20Custody.CallOpts) -} - -// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. -// -// Solidity: function zetaFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodyCaller) ZetaFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "zetaFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. -// -// Solidity: function zetaFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodySession) ZetaFee() (*big.Int, error) { - return _ERC20Custody.Contract.ZetaFee(&_ERC20Custody.CallOpts) -} - -// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. -// -// Solidity: function zetaFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodyCallerSession) ZetaFee() (*big.Int, error) { - return _ERC20Custody.Contract.ZetaFee(&_ERC20Custody.CallOpts) -} - -// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. -// -// Solidity: function zetaMaxFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodyCaller) ZetaMaxFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "zetaMaxFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. -// -// Solidity: function zetaMaxFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodySession) ZetaMaxFee() (*big.Int, error) { - return _ERC20Custody.Contract.ZetaMaxFee(&_ERC20Custody.CallOpts) -} - -// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. -// -// Solidity: function zetaMaxFee() view returns(uint256) -func (_ERC20Custody *ERC20CustodyCallerSession) ZetaMaxFee() (*big.Int, error) { - return _ERC20Custody.Contract.ZetaMaxFee(&_ERC20Custody.CallOpts) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_ERC20Custody *ERC20CustodyTransactor) Deposit(opts *bind.TransactOpts, recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "deposit", recipient, asset, amount, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_ERC20Custody *ERC20CustodySession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ERC20Custody.Contract.Deposit(&_ERC20Custody.TransactOpts, recipient, asset, amount, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ERC20Custody.Contract.Deposit(&_ERC20Custody.TransactOpts, recipient, asset, amount, message) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ERC20Custody *ERC20CustodyTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ERC20Custody *ERC20CustodySession) Pause() (*types.Transaction, error) { - return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Pause() (*types.Transaction, error) { - return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) -} - -// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. -// -// Solidity: function renounceTSSAddressUpdater() returns() -func (_ERC20Custody *ERC20CustodyTransactor) RenounceTSSAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "renounceTSSAddressUpdater") -} - -// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. -// -// Solidity: function renounceTSSAddressUpdater() returns() -func (_ERC20Custody *ERC20CustodySession) RenounceTSSAddressUpdater() (*types.Transaction, error) { - return _ERC20Custody.Contract.RenounceTSSAddressUpdater(&_ERC20Custody.TransactOpts) -} - -// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. -// -// Solidity: function renounceTSSAddressUpdater() returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) RenounceTSSAddressUpdater() (*types.Transaction, error) { - return _ERC20Custody.Contract.RenounceTSSAddressUpdater(&_ERC20Custody.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ERC20Custody *ERC20CustodyTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ERC20Custody *ERC20CustodySession) Unpause() (*types.Transaction, error) { - return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Unpause() (*types.Transaction, error) { - return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) -} - -// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. -// -// Solidity: function unwhitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodyTransactor) Unwhitelist(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "unwhitelist", asset) -} - -// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. -// -// Solidity: function unwhitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodySession) Unwhitelist(asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.Unwhitelist(&_ERC20Custody.TransactOpts, asset) -} - -// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. -// -// Solidity: function unwhitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Unwhitelist(asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.Unwhitelist(&_ERC20Custody.TransactOpts, asset) -} - -// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. -// -// Solidity: function updateTSSAddress(address TSSAddress_) returns() -func (_ERC20Custody *ERC20CustodyTransactor) UpdateTSSAddress(opts *bind.TransactOpts, TSSAddress_ common.Address) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "updateTSSAddress", TSSAddress_) -} - -// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. -// -// Solidity: function updateTSSAddress(address TSSAddress_) returns() -func (_ERC20Custody *ERC20CustodySession) UpdateTSSAddress(TSSAddress_ common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.UpdateTSSAddress(&_ERC20Custody.TransactOpts, TSSAddress_) -} - -// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. -// -// Solidity: function updateTSSAddress(address TSSAddress_) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) UpdateTSSAddress(TSSAddress_ common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.UpdateTSSAddress(&_ERC20Custody.TransactOpts, TSSAddress_) -} - -// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. -// -// Solidity: function updateZetaFee(uint256 zetaFee_) returns() -func (_ERC20Custody *ERC20CustodyTransactor) UpdateZetaFee(opts *bind.TransactOpts, zetaFee_ *big.Int) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "updateZetaFee", zetaFee_) -} - -// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. -// -// Solidity: function updateZetaFee(uint256 zetaFee_) returns() -func (_ERC20Custody *ERC20CustodySession) UpdateZetaFee(zetaFee_ *big.Int) (*types.Transaction, error) { - return _ERC20Custody.Contract.UpdateZetaFee(&_ERC20Custody.TransactOpts, zetaFee_) -} - -// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. -// -// Solidity: function updateZetaFee(uint256 zetaFee_) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) UpdateZetaFee(zetaFee_ *big.Int) (*types.Transaction, error) { - return _ERC20Custody.Contract.UpdateZetaFee(&_ERC20Custody.TransactOpts, zetaFee_) -} - -// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. -// -// Solidity: function whitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodyTransactor) Whitelist(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "whitelist", asset) -} - -// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. -// -// Solidity: function whitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodySession) Whitelist(asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.Whitelist(&_ERC20Custody.TransactOpts, asset) -} - -// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. -// -// Solidity: function whitelist(address asset) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Whitelist(asset common.Address) (*types.Transaction, error) { - return _ERC20Custody.Contract.Whitelist(&_ERC20Custody.TransactOpts, asset) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_ERC20Custody *ERC20CustodyTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Custody.contract.Transact(opts, "withdraw", recipient, asset, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_ERC20Custody *ERC20CustodySession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, recipient, asset, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_ERC20Custody *ERC20CustodyTransactorSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, recipient, asset, amount) -} - -// ERC20CustodyDepositedIterator is returned from FilterDeposited and is used to iterate over the raw logs and unpacked data for Deposited events raised by the ERC20Custody contract. -type ERC20CustodyDepositedIterator struct { - Event *ERC20CustodyDeposited // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyDepositedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyDeposited) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyDepositedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyDepositedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyDeposited represents a Deposited event raised by the ERC20Custody contract. -type ERC20CustodyDeposited struct { - Recipient []byte - Asset common.Address - Amount *big.Int - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposited is a free log retrieval operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. -// -// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) -func (_ERC20Custody *ERC20CustodyFilterer) FilterDeposited(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyDepositedIterator, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Deposited", assetRule) - if err != nil { - return nil, err - } - return &ERC20CustodyDepositedIterator{contract: _ERC20Custody.contract, event: "Deposited", logs: logs, sub: sub}, nil -} - -// WatchDeposited is a free log subscription operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. -// -// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) -func (_ERC20Custody *ERC20CustodyFilterer) WatchDeposited(opts *bind.WatchOpts, sink chan<- *ERC20CustodyDeposited, asset []common.Address) (event.Subscription, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Deposited", assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyDeposited) - if err := _ERC20Custody.contract.UnpackLog(event, "Deposited", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposited is a log parse operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. -// -// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) -func (_ERC20Custody *ERC20CustodyFilterer) ParseDeposited(log types.Log) (*ERC20CustodyDeposited, error) { - event := new(ERC20CustodyDeposited) - if err := _ERC20Custody.contract.UnpackLog(event, "Deposited", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC20Custody contract. -type ERC20CustodyPausedIterator struct { - Event *ERC20CustodyPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyPaused represents a Paused event raised by the ERC20Custody contract. -type ERC20CustodyPaused struct { - Sender common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC20CustodyPausedIterator, error) { - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &ERC20CustodyPausedIterator{contract: _ERC20Custody.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyPaused) (event.Subscription, error) { - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyPaused) - if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) ParsePaused(log types.Log) (*ERC20CustodyPaused, error) { - event := new(ERC20CustodyPaused) - if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyRenouncedTSSUpdaterIterator is returned from FilterRenouncedTSSUpdater and is used to iterate over the raw logs and unpacked data for RenouncedTSSUpdater events raised by the ERC20Custody contract. -type ERC20CustodyRenouncedTSSUpdaterIterator struct { - Event *ERC20CustodyRenouncedTSSUpdater // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyRenouncedTSSUpdater) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyRenouncedTSSUpdater) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyRenouncedTSSUpdater represents a RenouncedTSSUpdater event raised by the ERC20Custody contract. -type ERC20CustodyRenouncedTSSUpdater struct { - TSSAddressUpdater common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRenouncedTSSUpdater is a free log retrieval operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. -// -// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) -func (_ERC20Custody *ERC20CustodyFilterer) FilterRenouncedTSSUpdater(opts *bind.FilterOpts) (*ERC20CustodyRenouncedTSSUpdaterIterator, error) { - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "RenouncedTSSUpdater") - if err != nil { - return nil, err - } - return &ERC20CustodyRenouncedTSSUpdaterIterator{contract: _ERC20Custody.contract, event: "RenouncedTSSUpdater", logs: logs, sub: sub}, nil -} - -// WatchRenouncedTSSUpdater is a free log subscription operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. -// -// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) -func (_ERC20Custody *ERC20CustodyFilterer) WatchRenouncedTSSUpdater(opts *bind.WatchOpts, sink chan<- *ERC20CustodyRenouncedTSSUpdater) (event.Subscription, error) { - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "RenouncedTSSUpdater") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyRenouncedTSSUpdater) - if err := _ERC20Custody.contract.UnpackLog(event, "RenouncedTSSUpdater", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRenouncedTSSUpdater is a log parse operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. -// -// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) -func (_ERC20Custody *ERC20CustodyFilterer) ParseRenouncedTSSUpdater(log types.Log) (*ERC20CustodyRenouncedTSSUpdater, error) { - event := new(ERC20CustodyRenouncedTSSUpdater) - if err := _ERC20Custody.contract.UnpackLog(event, "RenouncedTSSUpdater", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC20Custody contract. -type ERC20CustodyUnpausedIterator struct { - Event *ERC20CustodyUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyUnpaused represents a Unpaused event raised by the ERC20Custody contract. -type ERC20CustodyUnpaused struct { - Sender common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC20CustodyUnpausedIterator, error) { - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &ERC20CustodyUnpausedIterator{contract: _ERC20Custody.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUnpaused) (event.Subscription, error) { - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyUnpaused) - if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address sender) -func (_ERC20Custody *ERC20CustodyFilterer) ParseUnpaused(log types.Log) (*ERC20CustodyUnpaused, error) { - event := new(ERC20CustodyUnpaused) - if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyUnwhitelistedIterator is returned from FilterUnwhitelisted and is used to iterate over the raw logs and unpacked data for Unwhitelisted events raised by the ERC20Custody contract. -type ERC20CustodyUnwhitelistedIterator struct { - Event *ERC20CustodyUnwhitelisted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyUnwhitelistedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUnwhitelisted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUnwhitelisted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyUnwhitelistedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyUnwhitelistedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyUnwhitelisted represents a Unwhitelisted event raised by the ERC20Custody contract. -type ERC20CustodyUnwhitelisted struct { - Asset common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnwhitelisted is a free log retrieval operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. -// -// Solidity: event Unwhitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) FilterUnwhitelisted(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyUnwhitelistedIterator, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Unwhitelisted", assetRule) - if err != nil { - return nil, err - } - return &ERC20CustodyUnwhitelistedIterator{contract: _ERC20Custody.contract, event: "Unwhitelisted", logs: logs, sub: sub}, nil -} - -// WatchUnwhitelisted is a free log subscription operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. -// -// Solidity: event Unwhitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) WatchUnwhitelisted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUnwhitelisted, asset []common.Address) (event.Subscription, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Unwhitelisted", assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyUnwhitelisted) - if err := _ERC20Custody.contract.UnpackLog(event, "Unwhitelisted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnwhitelisted is a log parse operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. -// -// Solidity: event Unwhitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) ParseUnwhitelisted(log types.Log) (*ERC20CustodyUnwhitelisted, error) { - event := new(ERC20CustodyUnwhitelisted) - if err := _ERC20Custody.contract.UnpackLog(event, "Unwhitelisted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyUpdatedTSSAddressIterator is returned from FilterUpdatedTSSAddress and is used to iterate over the raw logs and unpacked data for UpdatedTSSAddress events raised by the ERC20Custody contract. -type ERC20CustodyUpdatedTSSAddressIterator struct { - Event *ERC20CustodyUpdatedTSSAddress // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyUpdatedTSSAddressIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUpdatedTSSAddress) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUpdatedTSSAddress) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyUpdatedTSSAddressIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyUpdatedTSSAddressIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyUpdatedTSSAddress represents a UpdatedTSSAddress event raised by the ERC20Custody contract. -type ERC20CustodyUpdatedTSSAddress struct { - TSSAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedTSSAddress is a free log retrieval operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. -// -// Solidity: event UpdatedTSSAddress(address TSSAddress_) -func (_ERC20Custody *ERC20CustodyFilterer) FilterUpdatedTSSAddress(opts *bind.FilterOpts) (*ERC20CustodyUpdatedTSSAddressIterator, error) { - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "UpdatedTSSAddress") - if err != nil { - return nil, err - } - return &ERC20CustodyUpdatedTSSAddressIterator{contract: _ERC20Custody.contract, event: "UpdatedTSSAddress", logs: logs, sub: sub}, nil -} - -// WatchUpdatedTSSAddress is a free log subscription operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. -// -// Solidity: event UpdatedTSSAddress(address TSSAddress_) -func (_ERC20Custody *ERC20CustodyFilterer) WatchUpdatedTSSAddress(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUpdatedTSSAddress) (event.Subscription, error) { - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "UpdatedTSSAddress") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyUpdatedTSSAddress) - if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedTSSAddress", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedTSSAddress is a log parse operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. -// -// Solidity: event UpdatedTSSAddress(address TSSAddress_) -func (_ERC20Custody *ERC20CustodyFilterer) ParseUpdatedTSSAddress(log types.Log) (*ERC20CustodyUpdatedTSSAddress, error) { - event := new(ERC20CustodyUpdatedTSSAddress) - if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedTSSAddress", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyUpdatedZetaFeeIterator is returned from FilterUpdatedZetaFee and is used to iterate over the raw logs and unpacked data for UpdatedZetaFee events raised by the ERC20Custody contract. -type ERC20CustodyUpdatedZetaFeeIterator struct { - Event *ERC20CustodyUpdatedZetaFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyUpdatedZetaFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUpdatedZetaFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyUpdatedZetaFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyUpdatedZetaFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyUpdatedZetaFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyUpdatedZetaFee represents a UpdatedZetaFee event raised by the ERC20Custody contract. -type ERC20CustodyUpdatedZetaFee struct { - ZetaFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedZetaFee is a free log retrieval operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. -// -// Solidity: event UpdatedZetaFee(uint256 zetaFee_) -func (_ERC20Custody *ERC20CustodyFilterer) FilterUpdatedZetaFee(opts *bind.FilterOpts) (*ERC20CustodyUpdatedZetaFeeIterator, error) { - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "UpdatedZetaFee") - if err != nil { - return nil, err - } - return &ERC20CustodyUpdatedZetaFeeIterator{contract: _ERC20Custody.contract, event: "UpdatedZetaFee", logs: logs, sub: sub}, nil -} - -// WatchUpdatedZetaFee is a free log subscription operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. -// -// Solidity: event UpdatedZetaFee(uint256 zetaFee_) -func (_ERC20Custody *ERC20CustodyFilterer) WatchUpdatedZetaFee(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUpdatedZetaFee) (event.Subscription, error) { - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "UpdatedZetaFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyUpdatedZetaFee) - if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedZetaFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedZetaFee is a log parse operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. -// -// Solidity: event UpdatedZetaFee(uint256 zetaFee_) -func (_ERC20Custody *ERC20CustodyFilterer) ParseUpdatedZetaFee(log types.Log) (*ERC20CustodyUpdatedZetaFee, error) { - event := new(ERC20CustodyUpdatedZetaFee) - if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedZetaFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyWhitelistedIterator is returned from FilterWhitelisted and is used to iterate over the raw logs and unpacked data for Whitelisted events raised by the ERC20Custody contract. -type ERC20CustodyWhitelistedIterator struct { - Event *ERC20CustodyWhitelisted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyWhitelistedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyWhitelisted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyWhitelisted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyWhitelistedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyWhitelistedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyWhitelisted represents a Whitelisted event raised by the ERC20Custody contract. -type ERC20CustodyWhitelisted struct { - Asset common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWhitelisted is a free log retrieval operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. -// -// Solidity: event Whitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) FilterWhitelisted(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyWhitelistedIterator, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Whitelisted", assetRule) - if err != nil { - return nil, err - } - return &ERC20CustodyWhitelistedIterator{contract: _ERC20Custody.contract, event: "Whitelisted", logs: logs, sub: sub}, nil -} - -// WatchWhitelisted is a free log subscription operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. -// -// Solidity: event Whitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) WatchWhitelisted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWhitelisted, asset []common.Address) (event.Subscription, error) { - - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Whitelisted", assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyWhitelisted) - if err := _ERC20Custody.contract.UnpackLog(event, "Whitelisted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWhitelisted is a log parse operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. -// -// Solidity: event Whitelisted(address indexed asset) -func (_ERC20Custody *ERC20CustodyFilterer) ParseWhitelisted(log types.Log) (*ERC20CustodyWhitelisted, error) { - event := new(ERC20CustodyWhitelisted) - if err := _ERC20Custody.contract.UnpackLog(event, "Whitelisted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyWithdrawnIterator is returned from FilterWithdrawn and is used to iterate over the raw logs and unpacked data for Withdrawn events raised by the ERC20Custody contract. -type ERC20CustodyWithdrawnIterator struct { - Event *ERC20CustodyWithdrawn // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyWithdrawnIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyWithdrawn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyWithdrawn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyWithdrawnIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyWithdrawnIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyWithdrawn represents a Withdrawn event raised by the ERC20Custody contract. -type ERC20CustodyWithdrawn struct { - Recipient common.Address - Asset common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawn is a free log retrieval operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. -// -// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) -func (_ERC20Custody *ERC20CustodyFilterer) FilterWithdrawn(opts *bind.FilterOpts, recipient []common.Address, asset []common.Address) (*ERC20CustodyWithdrawnIterator, error) { - - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Withdrawn", recipientRule, assetRule) - if err != nil { - return nil, err - } - return &ERC20CustodyWithdrawnIterator{contract: _ERC20Custody.contract, event: "Withdrawn", logs: logs, sub: sub}, nil -} - -// WatchWithdrawn is a free log subscription operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. -// -// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) -func (_ERC20Custody *ERC20CustodyFilterer) WatchWithdrawn(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWithdrawn, recipient []common.Address, asset []common.Address) (event.Subscription, error) { - - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - var assetRule []interface{} - for _, assetItem := range asset { - assetRule = append(assetRule, assetItem) - } - - logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Withdrawn", recipientRule, assetRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyWithdrawn) - if err := _ERC20Custody.contract.UnpackLog(event, "Withdrawn", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawn is a log parse operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. -// -// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) -func (_ERC20Custody *ERC20CustodyFilterer) ParseWithdrawn(log types.Log) (*ERC20CustodyWithdrawn, error) { - event := new(ERC20CustodyWithdrawn) - if err := _ERC20Custody.contract.UnpackLog(event, "Withdrawn", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go b/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go deleted file mode 100644 index b003ee00..00000000 --- a/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package connectorerrors - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ConnectorErrorsMetaData contains all meta data concerning the ConnectorErrors contract. -var ConnectorErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"}]", -} - -// ConnectorErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ConnectorErrorsMetaData.ABI instead. -var ConnectorErrorsABI = ConnectorErrorsMetaData.ABI - -// ConnectorErrors is an auto generated Go binding around an Ethereum contract. -type ConnectorErrors struct { - ConnectorErrorsCaller // Read-only binding to the contract - ConnectorErrorsTransactor // Write-only binding to the contract - ConnectorErrorsFilterer // Log filterer for contract events -} - -// ConnectorErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ConnectorErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConnectorErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ConnectorErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConnectorErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ConnectorErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConnectorErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ConnectorErrorsSession struct { - Contract *ConnectorErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ConnectorErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ConnectorErrorsCallerSession struct { - Contract *ConnectorErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ConnectorErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ConnectorErrorsTransactorSession struct { - Contract *ConnectorErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ConnectorErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ConnectorErrorsRaw struct { - Contract *ConnectorErrors // Generic contract binding to access the raw methods on -} - -// ConnectorErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ConnectorErrorsCallerRaw struct { - Contract *ConnectorErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ConnectorErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ConnectorErrorsTransactorRaw struct { - Contract *ConnectorErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewConnectorErrors creates a new instance of ConnectorErrors, bound to a specific deployed contract. -func NewConnectorErrors(address common.Address, backend bind.ContractBackend) (*ConnectorErrors, error) { - contract, err := bindConnectorErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ConnectorErrors{ConnectorErrorsCaller: ConnectorErrorsCaller{contract: contract}, ConnectorErrorsTransactor: ConnectorErrorsTransactor{contract: contract}, ConnectorErrorsFilterer: ConnectorErrorsFilterer{contract: contract}}, nil -} - -// NewConnectorErrorsCaller creates a new read-only instance of ConnectorErrors, bound to a specific deployed contract. -func NewConnectorErrorsCaller(address common.Address, caller bind.ContractCaller) (*ConnectorErrorsCaller, error) { - contract, err := bindConnectorErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ConnectorErrorsCaller{contract: contract}, nil -} - -// NewConnectorErrorsTransactor creates a new write-only instance of ConnectorErrors, bound to a specific deployed contract. -func NewConnectorErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ConnectorErrorsTransactor, error) { - contract, err := bindConnectorErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ConnectorErrorsTransactor{contract: contract}, nil -} - -// NewConnectorErrorsFilterer creates a new log filterer instance of ConnectorErrors, bound to a specific deployed contract. -func NewConnectorErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ConnectorErrorsFilterer, error) { - contract, err := bindConnectorErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ConnectorErrorsFilterer{contract: contract}, nil -} - -// bindConnectorErrors binds a generic wrapper to an already deployed contract. -func bindConnectorErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ConnectorErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ConnectorErrors *ConnectorErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ConnectorErrors.Contract.ConnectorErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ConnectorErrors *ConnectorErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ConnectorErrors.Contract.ConnectorErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ConnectorErrors *ConnectorErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ConnectorErrors.Contract.ConnectorErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ConnectorErrors *ConnectorErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ConnectorErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ConnectorErrors *ConnectorErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ConnectorErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ConnectorErrors *ConnectorErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ConnectorErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go b/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go deleted file mode 100644 index b2b26337..00000000 --- a/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaerrors - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaErrorsMetaData contains all meta data concerning the ZetaErrors contract. -var ZetaErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"}]", -} - -// ZetaErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaErrorsMetaData.ABI instead. -var ZetaErrorsABI = ZetaErrorsMetaData.ABI - -// ZetaErrors is an auto generated Go binding around an Ethereum contract. -type ZetaErrors struct { - ZetaErrorsCaller // Read-only binding to the contract - ZetaErrorsTransactor // Write-only binding to the contract - ZetaErrorsFilterer // Log filterer for contract events -} - -// ZetaErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaErrorsSession struct { - Contract *ZetaErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaErrorsCallerSession struct { - Contract *ZetaErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaErrorsTransactorSession struct { - Contract *ZetaErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaErrorsRaw struct { - Contract *ZetaErrors // Generic contract binding to access the raw methods on -} - -// ZetaErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaErrorsCallerRaw struct { - Contract *ZetaErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaErrorsTransactorRaw struct { - Contract *ZetaErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaErrors creates a new instance of ZetaErrors, bound to a specific deployed contract. -func NewZetaErrors(address common.Address, backend bind.ContractBackend) (*ZetaErrors, error) { - contract, err := bindZetaErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaErrors{ZetaErrorsCaller: ZetaErrorsCaller{contract: contract}, ZetaErrorsTransactor: ZetaErrorsTransactor{contract: contract}, ZetaErrorsFilterer: ZetaErrorsFilterer{contract: contract}}, nil -} - -// NewZetaErrorsCaller creates a new read-only instance of ZetaErrors, bound to a specific deployed contract. -func NewZetaErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaErrorsCaller, error) { - contract, err := bindZetaErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaErrorsCaller{contract: contract}, nil -} - -// NewZetaErrorsTransactor creates a new write-only instance of ZetaErrors, bound to a specific deployed contract. -func NewZetaErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaErrorsTransactor, error) { - contract, err := bindZetaErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaErrorsTransactor{contract: contract}, nil -} - -// NewZetaErrorsFilterer creates a new log filterer instance of ZetaErrors, bound to a specific deployed contract. -func NewZetaErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaErrorsFilterer, error) { - contract, err := bindZetaErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaErrorsFilterer{contract: contract}, nil -} - -// bindZetaErrors binds a generic wrapper to an already deployed contract. -func bindZetaErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaErrors *ZetaErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaErrors.Contract.ZetaErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaErrors *ZetaErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaErrors *ZetaErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaErrors *ZetaErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaErrors *ZetaErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaErrors *ZetaErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go b/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go deleted file mode 100644 index d410cfe7..00000000 --- a/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainteractorerrors - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInteractorErrorsMetaData contains all meta data concerning the ZetaInteractorErrors contract. -var ZetaInteractorErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"}]", -} - -// ZetaInteractorErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaInteractorErrorsMetaData.ABI instead. -var ZetaInteractorErrorsABI = ZetaInteractorErrorsMetaData.ABI - -// ZetaInteractorErrors is an auto generated Go binding around an Ethereum contract. -type ZetaInteractorErrors struct { - ZetaInteractorErrorsCaller // Read-only binding to the contract - ZetaInteractorErrorsTransactor // Write-only binding to the contract - ZetaInteractorErrorsFilterer // Log filterer for contract events -} - -// ZetaInteractorErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaInteractorErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaInteractorErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaInteractorErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaInteractorErrorsSession struct { - Contract *ZetaInteractorErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaInteractorErrorsCallerSession struct { - Contract *ZetaInteractorErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaInteractorErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaInteractorErrorsTransactorSession struct { - Contract *ZetaInteractorErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaInteractorErrorsRaw struct { - Contract *ZetaInteractorErrors // Generic contract binding to access the raw methods on -} - -// ZetaInteractorErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaInteractorErrorsCallerRaw struct { - Contract *ZetaInteractorErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaInteractorErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaInteractorErrorsTransactorRaw struct { - Contract *ZetaInteractorErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaInteractorErrors creates a new instance of ZetaInteractorErrors, bound to a specific deployed contract. -func NewZetaInteractorErrors(address common.Address, backend bind.ContractBackend) (*ZetaInteractorErrors, error) { - contract, err := bindZetaInteractorErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaInteractorErrors{ZetaInteractorErrorsCaller: ZetaInteractorErrorsCaller{contract: contract}, ZetaInteractorErrorsTransactor: ZetaInteractorErrorsTransactor{contract: contract}, ZetaInteractorErrorsFilterer: ZetaInteractorErrorsFilterer{contract: contract}}, nil -} - -// NewZetaInteractorErrorsCaller creates a new read-only instance of ZetaInteractorErrors, bound to a specific deployed contract. -func NewZetaInteractorErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorErrorsCaller, error) { - contract, err := bindZetaInteractorErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorErrorsCaller{contract: contract}, nil -} - -// NewZetaInteractorErrorsTransactor creates a new write-only instance of ZetaInteractorErrors, bound to a specific deployed contract. -func NewZetaInteractorErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorErrorsTransactor, error) { - contract, err := bindZetaInteractorErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorErrorsTransactor{contract: contract}, nil -} - -// NewZetaInteractorErrorsFilterer creates a new log filterer instance of ZetaInteractorErrors, bound to a specific deployed contract. -func NewZetaInteractorErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorErrorsFilterer, error) { - contract, err := bindZetaInteractorErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaInteractorErrorsFilterer{contract: contract}, nil -} - -// bindZetaInteractorErrors binds a generic wrapper to an already deployed contract. -func bindZetaInteractorErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaInteractorErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractorErrors *ZetaInteractorErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractorErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractorErrors *ZetaInteractorErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractorErrors *ZetaInteractorErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractorErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go deleted file mode 100644 index 3560d1bc..00000000 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainterfaces - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaCommonErrorsMetaData contains all meta data concerning the ZetaCommonErrors contract. -var ZetaCommonErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"}]", -} - -// ZetaCommonErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaCommonErrorsMetaData.ABI instead. -var ZetaCommonErrorsABI = ZetaCommonErrorsMetaData.ABI - -// ZetaCommonErrors is an auto generated Go binding around an Ethereum contract. -type ZetaCommonErrors struct { - ZetaCommonErrorsCaller // Read-only binding to the contract - ZetaCommonErrorsTransactor // Write-only binding to the contract - ZetaCommonErrorsFilterer // Log filterer for contract events -} - -// ZetaCommonErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaCommonErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaCommonErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaCommonErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaCommonErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaCommonErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaCommonErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaCommonErrorsSession struct { - Contract *ZetaCommonErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaCommonErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaCommonErrorsCallerSession struct { - Contract *ZetaCommonErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaCommonErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaCommonErrorsTransactorSession struct { - Contract *ZetaCommonErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaCommonErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaCommonErrorsRaw struct { - Contract *ZetaCommonErrors // Generic contract binding to access the raw methods on -} - -// ZetaCommonErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaCommonErrorsCallerRaw struct { - Contract *ZetaCommonErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaCommonErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaCommonErrorsTransactorRaw struct { - Contract *ZetaCommonErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaCommonErrors creates a new instance of ZetaCommonErrors, bound to a specific deployed contract. -func NewZetaCommonErrors(address common.Address, backend bind.ContractBackend) (*ZetaCommonErrors, error) { - contract, err := bindZetaCommonErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaCommonErrors{ZetaCommonErrorsCaller: ZetaCommonErrorsCaller{contract: contract}, ZetaCommonErrorsTransactor: ZetaCommonErrorsTransactor{contract: contract}, ZetaCommonErrorsFilterer: ZetaCommonErrorsFilterer{contract: contract}}, nil -} - -// NewZetaCommonErrorsCaller creates a new read-only instance of ZetaCommonErrors, bound to a specific deployed contract. -func NewZetaCommonErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaCommonErrorsCaller, error) { - contract, err := bindZetaCommonErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaCommonErrorsCaller{contract: contract}, nil -} - -// NewZetaCommonErrorsTransactor creates a new write-only instance of ZetaCommonErrors, bound to a specific deployed contract. -func NewZetaCommonErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaCommonErrorsTransactor, error) { - contract, err := bindZetaCommonErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaCommonErrorsTransactor{contract: contract}, nil -} - -// NewZetaCommonErrorsFilterer creates a new log filterer instance of ZetaCommonErrors, bound to a specific deployed contract. -func NewZetaCommonErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaCommonErrorsFilterer, error) { - contract, err := bindZetaCommonErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaCommonErrorsFilterer{contract: contract}, nil -} - -// bindZetaCommonErrors binds a generic wrapper to an already deployed contract. -func bindZetaCommonErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaCommonErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaCommonErrors.Contract.ZetaCommonErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaCommonErrors.Contract.ZetaCommonErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaCommonErrors.Contract.ZetaCommonErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaCommonErrors *ZetaCommonErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaCommonErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaCommonErrors *ZetaCommonErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaCommonErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaCommonErrors *ZetaCommonErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaCommonErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go deleted file mode 100644 index f894d6e5..00000000 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go +++ /dev/null @@ -1,212 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainterfaces - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesSendInput struct { - DestinationChainId *big.Int - DestinationAddress []byte - DestinationGasLimit *big.Int - Message []byte - ZetaValueAndGas *big.Int - ZetaParams []byte -} - -// ZetaConnectorMetaData contains all meta data concerning the ZetaConnector contract. -var ZetaConnectorMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZetaConnectorABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorMetaData.ABI instead. -var ZetaConnectorABI = ZetaConnectorMetaData.ABI - -// ZetaConnector is an auto generated Go binding around an Ethereum contract. -type ZetaConnector struct { - ZetaConnectorCaller // Read-only binding to the contract - ZetaConnectorTransactor // Write-only binding to the contract - ZetaConnectorFilterer // Log filterer for contract events -} - -// ZetaConnectorCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorSession struct { - Contract *ZetaConnector // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorCallerSession struct { - Contract *ZetaConnectorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorTransactorSession struct { - Contract *ZetaConnectorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorRaw struct { - Contract *ZetaConnector // Generic contract binding to access the raw methods on -} - -// ZetaConnectorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorCallerRaw struct { - Contract *ZetaConnectorCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorTransactorRaw struct { - Contract *ZetaConnectorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnector creates a new instance of ZetaConnector, bound to a specific deployed contract. -func NewZetaConnector(address common.Address, backend bind.ContractBackend) (*ZetaConnector, error) { - contract, err := bindZetaConnector(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnector{ZetaConnectorCaller: ZetaConnectorCaller{contract: contract}, ZetaConnectorTransactor: ZetaConnectorTransactor{contract: contract}, ZetaConnectorFilterer: ZetaConnectorFilterer{contract: contract}}, nil -} - -// NewZetaConnectorCaller creates a new read-only instance of ZetaConnector, bound to a specific deployed contract. -func NewZetaConnectorCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorCaller, error) { - contract, err := bindZetaConnector(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorCaller{contract: contract}, nil -} - -// NewZetaConnectorTransactor creates a new write-only instance of ZetaConnector, bound to a specific deployed contract. -func NewZetaConnectorTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorTransactor, error) { - contract, err := bindZetaConnector(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorTransactor{contract: contract}, nil -} - -// NewZetaConnectorFilterer creates a new log filterer instance of ZetaConnector, bound to a specific deployed contract. -func NewZetaConnectorFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorFilterer, error) { - contract, err := bindZetaConnector(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorFilterer{contract: contract}, nil -} - -// bindZetaConnector binds a generic wrapper to an already deployed contract. -func bindZetaConnector(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnector *ZetaConnectorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnector.Contract.ZetaConnectorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnector *ZetaConnectorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnector.Contract.ZetaConnectorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnector *ZetaConnectorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnector.Contract.ZetaConnectorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnector *ZetaConnectorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnector.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnector *ZetaConnectorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnector.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnector *ZetaConnectorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnector.Contract.contract.Transact(opts, method, params...) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnector *ZetaConnectorTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnector.contract.Transact(opts, "send", input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnector *ZetaConnectorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnector.Contract.Send(&_ZetaConnector.TransactOpts, input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnector *ZetaConnectorTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnector.Contract.Send(&_ZetaConnector.TransactOpts, input) -} diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go deleted file mode 100644 index fe6eef5b..00000000 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainterfaces - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesMetaData contains all meta data concerning the ZetaInterfaces contract. -var ZetaInterfacesMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ZetaInterfacesABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaInterfacesMetaData.ABI instead. -var ZetaInterfacesABI = ZetaInterfacesMetaData.ABI - -// ZetaInterfaces is an auto generated Go binding around an Ethereum contract. -type ZetaInterfaces struct { - ZetaInterfacesCaller // Read-only binding to the contract - ZetaInterfacesTransactor // Write-only binding to the contract - ZetaInterfacesFilterer // Log filterer for contract events -} - -// ZetaInterfacesCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaInterfacesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaInterfacesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaInterfacesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaInterfacesSession struct { - Contract *ZetaInterfaces // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInterfacesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaInterfacesCallerSession struct { - Contract *ZetaInterfacesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaInterfacesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaInterfacesTransactorSession struct { - Contract *ZetaInterfacesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInterfacesRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaInterfacesRaw struct { - Contract *ZetaInterfaces // Generic contract binding to access the raw methods on -} - -// ZetaInterfacesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaInterfacesCallerRaw struct { - Contract *ZetaInterfacesCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaInterfacesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaInterfacesTransactorRaw struct { - Contract *ZetaInterfacesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaInterfaces creates a new instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfaces(address common.Address, backend bind.ContractBackend) (*ZetaInterfaces, error) { - contract, err := bindZetaInterfaces(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaInterfaces{ZetaInterfacesCaller: ZetaInterfacesCaller{contract: contract}, ZetaInterfacesTransactor: ZetaInterfacesTransactor{contract: contract}, ZetaInterfacesFilterer: ZetaInterfacesFilterer{contract: contract}}, nil -} - -// NewZetaInterfacesCaller creates a new read-only instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesCaller(address common.Address, caller bind.ContractCaller) (*ZetaInterfacesCaller, error) { - contract, err := bindZetaInterfaces(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaInterfacesCaller{contract: contract}, nil -} - -// NewZetaInterfacesTransactor creates a new write-only instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInterfacesTransactor, error) { - contract, err := bindZetaInterfaces(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaInterfacesTransactor{contract: contract}, nil -} - -// NewZetaInterfacesFilterer creates a new log filterer instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInterfacesFilterer, error) { - contract, err := bindZetaInterfaces(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaInterfacesFilterer{contract: contract}, nil -} - -// bindZetaInterfaces binds a generic wrapper to an already deployed contract. -func bindZetaInterfaces(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaInterfacesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInterfaces *ZetaInterfacesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInterfaces.Contract.ZetaInterfacesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInterfaces *ZetaInterfacesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInterfaces *ZetaInterfacesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInterfaces *ZetaInterfacesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInterfaces.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go deleted file mode 100644 index 20dbd4ca..00000000 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go +++ /dev/null @@ -1,242 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainterfaces - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaMessage struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte -} - -// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaRevert struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationAddress []byte - DestinationChainId *big.Int - RemainingZetaValue *big.Int - Message []byte -} - -// ZetaReceiverMetaData contains all meta data concerning the ZetaReceiver contract. -var ZetaReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZetaReceiverABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaReceiverMetaData.ABI instead. -var ZetaReceiverABI = ZetaReceiverMetaData.ABI - -// ZetaReceiver is an auto generated Go binding around an Ethereum contract. -type ZetaReceiver struct { - ZetaReceiverCaller // Read-only binding to the contract - ZetaReceiverTransactor // Write-only binding to the contract - ZetaReceiverFilterer // Log filterer for contract events -} - -// ZetaReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaReceiverCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaReceiverTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaReceiverFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaReceiverSession struct { - Contract *ZetaReceiver // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaReceiverCallerSession struct { - Contract *ZetaReceiverCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaReceiverTransactorSession struct { - Contract *ZetaReceiverTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaReceiverRaw struct { - Contract *ZetaReceiver // Generic contract binding to access the raw methods on -} - -// ZetaReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaReceiverCallerRaw struct { - Contract *ZetaReceiverCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaReceiverTransactorRaw struct { - Contract *ZetaReceiverTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaReceiver creates a new instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiver(address common.Address, backend bind.ContractBackend) (*ZetaReceiver, error) { - contract, err := bindZetaReceiver(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaReceiver{ZetaReceiverCaller: ZetaReceiverCaller{contract: contract}, ZetaReceiverTransactor: ZetaReceiverTransactor{contract: contract}, ZetaReceiverFilterer: ZetaReceiverFilterer{contract: contract}}, nil -} - -// NewZetaReceiverCaller creates a new read-only instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverCaller, error) { - contract, err := bindZetaReceiver(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverCaller{contract: contract}, nil -} - -// NewZetaReceiverTransactor creates a new write-only instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverTransactor, error) { - contract, err := bindZetaReceiver(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverTransactor{contract: contract}, nil -} - -// NewZetaReceiverFilterer creates a new log filterer instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverFilterer, error) { - contract, err := bindZetaReceiver(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaReceiverFilterer{contract: contract}, nil -} - -// bindZetaReceiver binds a generic wrapper to an already deployed contract. -func bindZetaReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaReceiverMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiver *ZetaReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiver.Contract.ZetaReceiverCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiver *ZetaReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiver *ZetaReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiver *ZetaReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiver.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiver.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiver.Contract.contract.Transact(opts, method, params...) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.contract.Transact(opts, "onZetaMessage", zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.contract.Transact(opts, "onZetaRevert", zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) -} diff --git a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go b/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go deleted file mode 100644 index 5a1a03a8..00000000 --- a/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go +++ /dev/null @@ -1,838 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainterfaces - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerMetaData contains all meta data concerning the ZetaTokenConsumer contract. -var ZetaTokenConsumerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// ZetaTokenConsumerABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerMetaData.ABI instead. -var ZetaTokenConsumerABI = ZetaTokenConsumerMetaData.ABI - -// ZetaTokenConsumer is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumer struct { - ZetaTokenConsumerCaller // Read-only binding to the contract - ZetaTokenConsumerTransactor // Write-only binding to the contract - ZetaTokenConsumerFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerSession struct { - Contract *ZetaTokenConsumer // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerCallerSession struct { - Contract *ZetaTokenConsumerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerTransactorSession struct { - Contract *ZetaTokenConsumerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerRaw struct { - Contract *ZetaTokenConsumer // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerCallerRaw struct { - Contract *ZetaTokenConsumerCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTransactorRaw struct { - Contract *ZetaTokenConsumerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumer creates a new instance of ZetaTokenConsumer, bound to a specific deployed contract. -func NewZetaTokenConsumer(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumer, error) { - contract, err := bindZetaTokenConsumer(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumer{ZetaTokenConsumerCaller: ZetaTokenConsumerCaller{contract: contract}, ZetaTokenConsumerTransactor: ZetaTokenConsumerTransactor{contract: contract}, ZetaTokenConsumerFilterer: ZetaTokenConsumerFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerCaller creates a new read-only instance of ZetaTokenConsumer, bound to a specific deployed contract. -func NewZetaTokenConsumerCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerCaller, error) { - contract, err := bindZetaTokenConsumer(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerTransactor creates a new write-only instance of ZetaTokenConsumer, bound to a specific deployed contract. -func NewZetaTokenConsumerTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTransactor, error) { - contract, err := bindZetaTokenConsumer(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerFilterer creates a new log filterer instance of ZetaTokenConsumer, bound to a specific deployed contract. -func NewZetaTokenConsumerFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerFilterer, error) { - contract, err := bindZetaTokenConsumer(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumer binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumer.Contract.ZetaTokenConsumerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.ZetaTokenConsumerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.ZetaTokenConsumerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumer *ZetaTokenConsumerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumer.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.contract.Transact(opts, method, params...) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumer *ZetaTokenConsumerCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumer.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumer *ZetaTokenConsumerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumer *ZetaTokenConsumerCallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetEthFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetEthFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetTokenFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetTokenFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetZetaFromEth(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetZetaFromEth(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetZetaFromToken(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumer.Contract.GetZetaFromToken(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// ZetaTokenConsumerEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerEthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerEthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerEthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerEthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerEthExchangedForZetaIterator{contract: _ZetaTokenConsumer.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerEthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerEthExchangedForZeta) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerEthExchangedForZeta, error) { - event := new(ZetaTokenConsumerEthExchangedForZeta) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerTokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerTokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerTokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTokenExchangedForZetaIterator{contract: _ZetaTokenConsumer.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerTokenExchangedForZeta) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerTokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerTokenExchangedForZeta) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZetaExchangedForEthIterator{contract: _ZetaTokenConsumer.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZetaExchangedForEth) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerZetaExchangedForEth) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumer contract. -type ZetaTokenConsumerZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZetaExchangedForTokenIterator{contract: _ZetaTokenConsumer.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZetaExchangedForToken) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerZetaExchangedForToken) - if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go b/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go deleted file mode 100644 index 7c55c86b..00000000 --- a/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go +++ /dev/null @@ -1,687 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetanonethinterface - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaNonEthInterfaceMetaData contains all meta data concerning the ZetaNonEthInterface contract. -var ZetaNonEthInterfaceMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZetaNonEthInterfaceABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaNonEthInterfaceMetaData.ABI instead. -var ZetaNonEthInterfaceABI = ZetaNonEthInterfaceMetaData.ABI - -// ZetaNonEthInterface is an auto generated Go binding around an Ethereum contract. -type ZetaNonEthInterface struct { - ZetaNonEthInterfaceCaller // Read-only binding to the contract - ZetaNonEthInterfaceTransactor // Write-only binding to the contract - ZetaNonEthInterfaceFilterer // Log filterer for contract events -} - -// ZetaNonEthInterfaceCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaNonEthInterfaceCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthInterfaceTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaNonEthInterfaceTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthInterfaceFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaNonEthInterfaceFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthInterfaceSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaNonEthInterfaceSession struct { - Contract *ZetaNonEthInterface // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaNonEthInterfaceCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaNonEthInterfaceCallerSession struct { - Contract *ZetaNonEthInterfaceCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaNonEthInterfaceTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaNonEthInterfaceTransactorSession struct { - Contract *ZetaNonEthInterfaceTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaNonEthInterfaceRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaNonEthInterfaceRaw struct { - Contract *ZetaNonEthInterface // Generic contract binding to access the raw methods on -} - -// ZetaNonEthInterfaceCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaNonEthInterfaceCallerRaw struct { - Contract *ZetaNonEthInterfaceCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaNonEthInterfaceTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaNonEthInterfaceTransactorRaw struct { - Contract *ZetaNonEthInterfaceTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaNonEthInterface creates a new instance of ZetaNonEthInterface, bound to a specific deployed contract. -func NewZetaNonEthInterface(address common.Address, backend bind.ContractBackend) (*ZetaNonEthInterface, error) { - contract, err := bindZetaNonEthInterface(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaNonEthInterface{ZetaNonEthInterfaceCaller: ZetaNonEthInterfaceCaller{contract: contract}, ZetaNonEthInterfaceTransactor: ZetaNonEthInterfaceTransactor{contract: contract}, ZetaNonEthInterfaceFilterer: ZetaNonEthInterfaceFilterer{contract: contract}}, nil -} - -// NewZetaNonEthInterfaceCaller creates a new read-only instance of ZetaNonEthInterface, bound to a specific deployed contract. -func NewZetaNonEthInterfaceCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthInterfaceCaller, error) { - contract, err := bindZetaNonEthInterface(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaNonEthInterfaceCaller{contract: contract}, nil -} - -// NewZetaNonEthInterfaceTransactor creates a new write-only instance of ZetaNonEthInterface, bound to a specific deployed contract. -func NewZetaNonEthInterfaceTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthInterfaceTransactor, error) { - contract, err := bindZetaNonEthInterface(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaNonEthInterfaceTransactor{contract: contract}, nil -} - -// NewZetaNonEthInterfaceFilterer creates a new log filterer instance of ZetaNonEthInterface, bound to a specific deployed contract. -func NewZetaNonEthInterfaceFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthInterfaceFilterer, error) { - contract, err := bindZetaNonEthInterface(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaNonEthInterfaceFilterer{contract: contract}, nil -} - -// bindZetaNonEthInterface binds a generic wrapper to an already deployed contract. -func bindZetaNonEthInterface(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaNonEthInterfaceMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaNonEthInterface.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEthInterface.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEthInterface.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEthInterface.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TotalSupply() (*big.Int, error) { - return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) TotalSupply() (*big.Int, error) { - return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.contract.Transact(opts, "burnFrom", account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEthInterface.contract.Transact(opts, "mint", mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, amount) -} - -// ZetaNonEthInterfaceApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEthInterface contract. -type ZetaNonEthInterfaceApprovalIterator struct { - Event *ZetaNonEthInterfaceApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthInterfaceApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthInterfaceApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthInterfaceApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthInterfaceApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthInterfaceApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthInterfaceApproval represents a Approval event raised by the ZetaNonEthInterface contract. -type ZetaNonEthInterfaceApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthInterfaceApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZetaNonEthInterfaceApprovalIterator{contract: _ZetaNonEthInterface.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthInterfaceApproval) - if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseApproval(log types.Log) (*ZetaNonEthInterfaceApproval, error) { - event := new(ZetaNonEthInterfaceApproval) - if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthInterfaceTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEthInterface contract. -type ZetaNonEthInterfaceTransferIterator struct { - Event *ZetaNonEthInterfaceTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthInterfaceTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthInterfaceTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthInterfaceTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthInterfaceTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthInterfaceTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthInterfaceTransfer represents a Transfer event raised by the ZetaNonEthInterface contract. -type ZetaNonEthInterfaceTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthInterfaceTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZetaNonEthInterfaceTransferIterator{contract: _ZetaNonEthInterface.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthInterfaceTransfer) - if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseTransfer(log types.Log) (*ZetaNonEthInterfaceTransfer, error) { - event := new(ZetaNonEthInterfaceTransfer) - if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go b/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go deleted file mode 100644 index 7c7840ec..00000000 --- a/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go +++ /dev/null @@ -1,318 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package attackercontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// AttackerContractMetaData contains all meta data concerning the AttackerContract contract. -var AttackerContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"victimContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wzeta\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"victimMethod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"victimContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620009ae380380620009ae8339818101604052810190620000379190620001a0565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620000f492919062000250565b602060405180830381600087803b1580156200010f57600080fd5b505af115801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620001fc565b50806001819055505050506200031a565b6000815190506200016c81620002cc565b92915050565b6000815190506200018381620002e6565b92915050565b6000815190506200019a8162000300565b92915050565b600080600060608486031215620001bc57620001bb620002c7565b5b6000620001cc868287016200015b565b9350506020620001df868287016200015b565b9250506040620001f28682870162000189565b9150509250925092565b600060208284031215620002155762000214620002c7565b5b6000620002258482850162000172565b91505092915050565b62000239816200027d565b82525050565b6200024a81620002bd565b82525050565b60006040820190506200026760008301856200022e565b6200027660208301846200023f565b9392505050565b60006200028a826200029d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b620002d7816200027d565b8114620002e357600080fd5b50565b620002f18162000291565b8114620002fd57600080fd5b50565b6200030b81620002bd565b81146200031757600080fd5b50565b610684806200032a6000396000f3fe6080604052600436106100435760003560e01c806323b872dd1461004f57806370a082311461008c57806389bc0bb7146100c9578063a9059cbb146100f45761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100766004803603810190610071919061034c565b610131565b60405161008391906104b3565b60405180910390f35b34801561009857600080fd5b506100b360048036038101906100ae919061031f565b610146565b6040516100c0919061051d565b60405180910390f35b3480156100d557600080fd5b506100de610159565b6040516100eb9190610461565b60405180910390f35b34801561010057600080fd5b5061011b6004803603810190610116919061039f565b61017d565b60405161012891906104b3565b60405180910390f35b600061013b610191565b600190509392505050565b6000610150610191565b60009050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610187610191565b6001905092915050565b6001805414156101a8576101a36101bf565b6101bd565b600260015414156101bc576101bb61024f565b5b5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e609055e3060006040518363ffffffff1660e01b815260040161021b9291906104ce565b600060405180830381600087803b15801561023557600080fd5b505af1158015610249573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9caed1273f39fd6e51aad88f6f4ce6ab8827279cfffb922663060006040518463ffffffff1660e01b81526004016102c19392919061047c565b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b50505050565b60008135905061030481610620565b92915050565b60008135905061031981610637565b92915050565b600060208284031215610335576103346105a3565b5b6000610343848285016102f5565b91505092915050565b600080600060608486031215610365576103646105a3565b5b6000610373868287016102f5565b9350506020610384868287016102f5565b92505060406103958682870161030a565b9150509250925092565b600080604083850312156103b6576103b56105a3565b5b60006103c4858286016102f5565b92505060206103d58582860161030a565b9150509250929050565b6103e881610549565b82525050565b6103f78161055b565b82525050565b61040681610591565b82525050565b6000610419600483610538565b9150610424826105a8565b602082019050919050565b600061043c602a83610538565b9150610447826105d1565b604082019050919050565b61045b81610587565b82525050565b600060208201905061047660008301846103df565b92915050565b600060608201905061049160008301866103df565b61049e60208301856103df565b6104ab60408301846103fd565b949350505050565b60006020820190506104c860008301846103ee565b92915050565b600060808201905081810360008301526104e78161042f565b90506104f660208301856103df565b61050360408301846103fd565b81810360608301526105148161040c565b90509392505050565b60006020820190506105326000830184610452565b92915050565b600082825260208201905092915050565b600061055482610567565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061059c82610587565b9050919050565b600080fd5b7f3078303000000000000000000000000000000000000000000000000000000000600082015250565b7f307866333946643665353161616438384636463463653661423838323732373960008201527f6366664662393232363600000000000000000000000000000000000000000000602082015250565b61062981610549565b811461063457600080fd5b50565b61064081610587565b811461064b57600080fd5b5056fea264697066735822122075954d652b0eb8d814b91524c47a04c537d638cec0eda3ca0e4ee67767e1a37064736f6c63430008070033", -} - -// AttackerContractABI is the input ABI used to generate the binding from. -// Deprecated: Use AttackerContractMetaData.ABI instead. -var AttackerContractABI = AttackerContractMetaData.ABI - -// AttackerContractBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AttackerContractMetaData.Bin instead. -var AttackerContractBin = AttackerContractMetaData.Bin - -// DeployAttackerContract deploys a new Ethereum contract, binding an instance of AttackerContract to it. -func DeployAttackerContract(auth *bind.TransactOpts, backend bind.ContractBackend, victimContractAddress_ common.Address, wzeta common.Address, victimMethod *big.Int) (common.Address, *types.Transaction, *AttackerContract, error) { - parsed, err := AttackerContractMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AttackerContractBin), backend, victimContractAddress_, wzeta, victimMethod) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil -} - -// AttackerContract is an auto generated Go binding around an Ethereum contract. -type AttackerContract struct { - AttackerContractCaller // Read-only binding to the contract - AttackerContractTransactor // Write-only binding to the contract - AttackerContractFilterer // Log filterer for contract events -} - -// AttackerContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type AttackerContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AttackerContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AttackerContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AttackerContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AttackerContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AttackerContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AttackerContractSession struct { - Contract *AttackerContract // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AttackerContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AttackerContractCallerSession struct { - Contract *AttackerContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AttackerContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AttackerContractTransactorSession struct { - Contract *AttackerContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AttackerContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type AttackerContractRaw struct { - Contract *AttackerContract // Generic contract binding to access the raw methods on -} - -// AttackerContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AttackerContractCallerRaw struct { - Contract *AttackerContractCaller // Generic read-only contract binding to access the raw methods on -} - -// AttackerContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AttackerContractTransactorRaw struct { - Contract *AttackerContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAttackerContract creates a new instance of AttackerContract, bound to a specific deployed contract. -func NewAttackerContract(address common.Address, backend bind.ContractBackend) (*AttackerContract, error) { - contract, err := bindAttackerContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil -} - -// NewAttackerContractCaller creates a new read-only instance of AttackerContract, bound to a specific deployed contract. -func NewAttackerContractCaller(address common.Address, caller bind.ContractCaller) (*AttackerContractCaller, error) { - contract, err := bindAttackerContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AttackerContractCaller{contract: contract}, nil -} - -// NewAttackerContractTransactor creates a new write-only instance of AttackerContract, bound to a specific deployed contract. -func NewAttackerContractTransactor(address common.Address, transactor bind.ContractTransactor) (*AttackerContractTransactor, error) { - contract, err := bindAttackerContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AttackerContractTransactor{contract: contract}, nil -} - -// NewAttackerContractFilterer creates a new log filterer instance of AttackerContract, bound to a specific deployed contract. -func NewAttackerContractFilterer(address common.Address, filterer bind.ContractFilterer) (*AttackerContractFilterer, error) { - contract, err := bindAttackerContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AttackerContractFilterer{contract: contract}, nil -} - -// bindAttackerContract binds a generic wrapper to an already deployed contract. -func bindAttackerContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AttackerContractMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_AttackerContract *AttackerContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _AttackerContract.Contract.AttackerContractCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_AttackerContract *AttackerContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _AttackerContract.Contract.AttackerContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_AttackerContract *AttackerContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _AttackerContract.Contract.AttackerContractTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_AttackerContract *AttackerContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _AttackerContract.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_AttackerContract *AttackerContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _AttackerContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_AttackerContract *AttackerContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _AttackerContract.Contract.contract.Transact(opts, method, params...) -} - -// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. -// -// Solidity: function victimContractAddress() view returns(address) -func (_AttackerContract *AttackerContractCaller) VictimContractAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _AttackerContract.contract.Call(opts, &out, "victimContractAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. -// -// Solidity: function victimContractAddress() view returns(address) -func (_AttackerContract *AttackerContractSession) VictimContractAddress() (common.Address, error) { - return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) -} - -// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. -// -// Solidity: function victimContractAddress() view returns(address) -func (_AttackerContract *AttackerContractCallerSession) VictimContractAddress() (common.Address, error) { - return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) -} - -// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) returns(uint256) -func (_AttackerContract *AttackerContractTransactor) BalanceOf(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { - return _AttackerContract.contract.Transact(opts, "balanceOf", account) -} - -// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) returns(uint256) -func (_AttackerContract *AttackerContractSession) BalanceOf(account common.Address) (*types.Transaction, error) { - return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) -} - -// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) returns(uint256) -func (_AttackerContract *AttackerContractTransactorSession) BalanceOf(account common.Address) (*types.Transaction, error) { - return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_AttackerContract *AttackerContractTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_AttackerContract *AttackerContractTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _AttackerContract.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_AttackerContract *AttackerContractSession) Receive() (*types.Transaction, error) { - return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_AttackerContract *AttackerContractTransactorSession) Receive() (*types.Transaction, error) { - return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) -} diff --git a/pkg/contracts/evm/testing/attackercontract.sol/victim.go b/pkg/contracts/evm/testing/attackercontract.sol/victim.go deleted file mode 100644 index 1aa58727..00000000 --- a/pkg/contracts/evm/testing/attackercontract.sol/victim.go +++ /dev/null @@ -1,223 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package attackercontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// VictimMetaData contains all meta data concerning the Victim contract. -var VictimMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// VictimABI is the input ABI used to generate the binding from. -// Deprecated: Use VictimMetaData.ABI instead. -var VictimABI = VictimMetaData.ABI - -// Victim is an auto generated Go binding around an Ethereum contract. -type Victim struct { - VictimCaller // Read-only binding to the contract - VictimTransactor // Write-only binding to the contract - VictimFilterer // Log filterer for contract events -} - -// VictimCaller is an auto generated read-only Go binding around an Ethereum contract. -type VictimCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// VictimTransactor is an auto generated write-only Go binding around an Ethereum contract. -type VictimTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// VictimFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type VictimFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// VictimSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type VictimSession struct { - Contract *Victim // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// VictimCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type VictimCallerSession struct { - Contract *VictimCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// VictimTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type VictimTransactorSession struct { - Contract *VictimTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// VictimRaw is an auto generated low-level Go binding around an Ethereum contract. -type VictimRaw struct { - Contract *Victim // Generic contract binding to access the raw methods on -} - -// VictimCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type VictimCallerRaw struct { - Contract *VictimCaller // Generic read-only contract binding to access the raw methods on -} - -// VictimTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type VictimTransactorRaw struct { - Contract *VictimTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewVictim creates a new instance of Victim, bound to a specific deployed contract. -func NewVictim(address common.Address, backend bind.ContractBackend) (*Victim, error) { - contract, err := bindVictim(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Victim{VictimCaller: VictimCaller{contract: contract}, VictimTransactor: VictimTransactor{contract: contract}, VictimFilterer: VictimFilterer{contract: contract}}, nil -} - -// NewVictimCaller creates a new read-only instance of Victim, bound to a specific deployed contract. -func NewVictimCaller(address common.Address, caller bind.ContractCaller) (*VictimCaller, error) { - contract, err := bindVictim(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &VictimCaller{contract: contract}, nil -} - -// NewVictimTransactor creates a new write-only instance of Victim, bound to a specific deployed contract. -func NewVictimTransactor(address common.Address, transactor bind.ContractTransactor) (*VictimTransactor, error) { - contract, err := bindVictim(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &VictimTransactor{contract: contract}, nil -} - -// NewVictimFilterer creates a new log filterer instance of Victim, bound to a specific deployed contract. -func NewVictimFilterer(address common.Address, filterer bind.ContractFilterer) (*VictimFilterer, error) { - contract, err := bindVictim(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &VictimFilterer{contract: contract}, nil -} - -// bindVictim binds a generic wrapper to an already deployed contract. -func bindVictim(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := VictimMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Victim *VictimRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Victim.Contract.VictimCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Victim *VictimRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Victim.Contract.VictimTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Victim *VictimRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Victim.Contract.VictimTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Victim *VictimCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Victim.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Victim *VictimTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Victim.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Victim *VictimTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Victim.Contract.contract.Transact(opts, method, params...) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_Victim *VictimTransactor) Deposit(opts *bind.TransactOpts, recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _Victim.contract.Transact(opts, "deposit", recipient, asset, amount, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_Victim *VictimSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xe609055e. -// -// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() -func (_Victim *VictimTransactorSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_Victim *VictimTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _Victim.contract.Transact(opts, "withdraw", recipient, asset, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_Victim *VictimSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() -func (_Victim *VictimTransactorSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { - return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) -} diff --git a/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go b/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go deleted file mode 100644 index cd791a51..00000000 --- a/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go +++ /dev/null @@ -1,802 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc20mock - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC20MockMetaData contains all meta data concerning the ERC20Mock contract. -var ERC20MockMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001beb38038062001beb833981810160405281019062000037919062000393565b838381600390805190602001906200005192919062000237565b5080600490805190602001906200006a92919062000237565b505050620000ac8262000082620000b660201b60201c565b60ff16600a620000939190620005e2565b83620000a091906200071f565b620000bf60201b60201c565b505050506200097c565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000129906200047b565b60405180910390fd5b62000146600083836200022d60201b60201c565b80600260008282546200015a91906200052a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200020d91906200049d565b60405180910390a362000229600083836200023260201b60201c565b5050565b505050565b505050565b8280546200024590620007f4565b90600052602060002090601f016020900481019282620002695760008555620002b5565b82601f106200028457805160ff1916838001178555620002b5565b82800160010185558215620002b5579182015b82811115620002b457825182559160200191906001019062000297565b5b509050620002c49190620002c8565b5090565b5b80821115620002e3576000816000905550600101620002c9565b5090565b6000620002fe620002f884620004e3565b620004ba565b9050828152602081018484840111156200031d576200031c620008f2565b5b6200032a848285620007be565b509392505050565b600081519050620003438162000948565b92915050565b600082601f830112620003615762000360620008ed565b5b815162000373848260208601620002e7565b91505092915050565b6000815190506200038d8162000962565b92915050565b60008060008060808587031215620003b057620003af620008fc565b5b600085015167ffffffffffffffff811115620003d157620003d0620008f7565b5b620003df8782880162000349565b945050602085015167ffffffffffffffff811115620004035762000402620008f7565b5b620004118782880162000349565b9350506040620004248782880162000332565b925050606062000437878288016200037c565b91505092959194509250565b600062000452601f8362000519565b91506200045f826200091f565b602082019050919050565b6200047581620007b4565b82525050565b60006020820190508181036000830152620004968162000443565b9050919050565b6000602082019050620004b460008301846200046a565b92915050565b6000620004c6620004d9565b9050620004d482826200082a565b919050565b6000604051905090565b600067ffffffffffffffff821115620005015762000500620008be565b5b6200050c8262000901565b9050602081019050919050565b600082825260208201905092915050565b60006200053782620007b4565b91506200054483620007b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200057c576200057b62000860565b5b828201905092915050565b6000808291508390505b6001851115620005d957808604811115620005b157620005b062000860565b5b6001851615620005c15780820291505b8081029050620005d18562000912565b945062000591565b94509492505050565b6000620005ef82620007b4565b9150620005fc83620007b4565b92506200062b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000633565b905092915050565b60008262000645576001905062000718565b8162000655576000905062000718565b81600181146200066e57600281146200067957620006af565b600191505062000718565b60ff8411156200068e576200068d62000860565b5b8360020a915084821115620006a857620006a762000860565b5b5062000718565b5060208310610133831016604e8410600b8410161715620006e95782820a905083811115620006e357620006e262000860565b5b62000718565b620006f8848484600162000587565b9250905081840481111562000712576200071162000860565b5b81810290505b9392505050565b60006200072c82620007b4565b91506200073983620007b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000775576200077462000860565b5b828202905092915050565b60006200078d8262000794565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620007de578082015181840152602081019050620007c1565b83811115620007ee576000848401525b50505050565b600060028204905060018216806200080d57607f821691505b602082108114156200082457620008236200088f565b5b50919050565b620008358262000901565b810181811067ffffffffffffffff82111715620008575762000856620008be565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620009538162000780565b81146200095f57600080fd5b50565b6200096d81620007b4565b81146200097957600080fd5b50565b61125f806200098c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea26469706673582212206e7d4645203c528cb4c5c20b28a6d1615134cd17e709cf6083e931dfc154394964736f6c63430008070033", -} - -// ERC20MockABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20MockMetaData.ABI instead. -var ERC20MockABI = ERC20MockMetaData.ABI - -// ERC20MockBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20MockMetaData.Bin instead. -var ERC20MockBin = ERC20MockMetaData.Bin - -// DeployERC20Mock deploys a new Ethereum contract, binding an instance of ERC20Mock to it. -func DeployERC20Mock(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ERC20Mock, error) { - parsed, err := ERC20MockMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MockBin), backend, name, symbol, creator, initialSupply) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil -} - -// ERC20Mock is an auto generated Go binding around an Ethereum contract. -type ERC20Mock struct { - ERC20MockCaller // Read-only binding to the contract - ERC20MockTransactor // Write-only binding to the contract - ERC20MockFilterer // Log filterer for contract events -} - -// ERC20MockCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20MockCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MockTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20MockTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20MockFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20MockSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20MockSession struct { - Contract *ERC20Mock // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20MockCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20MockCallerSession struct { - Contract *ERC20MockCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20MockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20MockTransactorSession struct { - Contract *ERC20MockTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20MockRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20MockRaw struct { - Contract *ERC20Mock // Generic contract binding to access the raw methods on -} - -// ERC20MockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20MockCallerRaw struct { - Contract *ERC20MockCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC20MockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20MockTransactorRaw struct { - Contract *ERC20MockTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20Mock creates a new instance of ERC20Mock, bound to a specific deployed contract. -func NewERC20Mock(address common.Address, backend bind.ContractBackend) (*ERC20Mock, error) { - contract, err := bindERC20Mock(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil -} - -// NewERC20MockCaller creates a new read-only instance of ERC20Mock, bound to a specific deployed contract. -func NewERC20MockCaller(address common.Address, caller bind.ContractCaller) (*ERC20MockCaller, error) { - contract, err := bindERC20Mock(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20MockCaller{contract: contract}, nil -} - -// NewERC20MockTransactor creates a new write-only instance of ERC20Mock, bound to a specific deployed contract. -func NewERC20MockTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MockTransactor, error) { - contract, err := bindERC20Mock(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20MockTransactor{contract: contract}, nil -} - -// NewERC20MockFilterer creates a new log filterer instance of ERC20Mock, bound to a specific deployed contract. -func NewERC20MockFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MockFilterer, error) { - contract, err := bindERC20Mock(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20MockFilterer{contract: contract}, nil -} - -// bindERC20Mock binds a generic wrapper to an already deployed contract. -func bindERC20Mock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20MockMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Mock *ERC20MockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Mock.Contract.ERC20MockCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Mock *ERC20MockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Mock *ERC20MockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Mock *ERC20MockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Mock.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Mock *ERC20MockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Mock.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Mock *ERC20MockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Mock.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mock *ERC20MockCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mock *ERC20MockSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Mock *ERC20MockCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mock *ERC20MockCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mock *ERC20MockSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Mock *ERC20MockCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Mock *ERC20MockCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Mock *ERC20MockSession) Decimals() (uint8, error) { - return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Mock *ERC20MockCallerSession) Decimals() (uint8, error) { - return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Mock *ERC20MockCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Mock *ERC20MockSession) Name() (string, error) { - return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Mock *ERC20MockCallerSession) Name() (string, error) { - return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Mock *ERC20MockCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Mock *ERC20MockSession) Symbol() (string, error) { - return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Mock *ERC20MockCallerSession) Symbol() (string, error) { - return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mock *ERC20MockCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Mock.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mock *ERC20MockSession) TotalSupply() (*big.Int, error) { - return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Mock *ERC20MockCallerSession) TotalSupply() (*big.Int, error) { - return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mock *ERC20MockTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mock *ERC20MockSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Mock *ERC20MockTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mock *ERC20MockTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mock *ERC20MockSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Mock *ERC20MockTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Mock *ERC20MockTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) -} - -// ERC20MockApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mock contract. -type ERC20MockApprovalIterator struct { - Event *ERC20MockApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20MockApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20MockApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20MockApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MockApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20MockApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20MockApproval represents a Approval event raised by the ERC20Mock contract. -type ERC20MockApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MockApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ERC20MockApprovalIterator{contract: _ERC20Mock.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MockApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20MockApproval) - if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) ParseApproval(log types.Log) (*ERC20MockApproval, error) { - event := new(ERC20MockApproval) - if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20MockTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mock contract. -type ERC20MockTransferIterator struct { - Event *ERC20MockTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20MockTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20MockTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20MockTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20MockTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20MockTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20MockTransfer represents a Transfer event raised by the ERC20Mock contract. -type ERC20MockTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MockTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ERC20MockTransferIterator{contract: _ERC20Mock.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MockTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20MockTransfer) - if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Mock *ERC20MockFilterer) ParseTransfer(log types.Log) (*ERC20MockTransfer, error) { - event := new(ERC20MockTransfer) - if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go b/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go deleted file mode 100644 index ac9cf207..00000000 --- a/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go +++ /dev/null @@ -1,864 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package testuniswapv3contracts - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// INonfungiblePositionManagerCollectParams is an auto generated low-level Go binding around an user-defined struct. -type INonfungiblePositionManagerCollectParams struct { - TokenId *big.Int - Recipient common.Address - Amount0Max *big.Int - Amount1Max *big.Int -} - -// INonfungiblePositionManagerDecreaseLiquidityParams is an auto generated low-level Go binding around an user-defined struct. -type INonfungiblePositionManagerDecreaseLiquidityParams struct { - TokenId *big.Int - Liquidity *big.Int - Amount0Min *big.Int - Amount1Min *big.Int - Deadline *big.Int -} - -// INonfungiblePositionManagerIncreaseLiquidityParams is an auto generated low-level Go binding around an user-defined struct. -type INonfungiblePositionManagerIncreaseLiquidityParams struct { - TokenId *big.Int - Amount0Desired *big.Int - Amount1Desired *big.Int - Amount0Min *big.Int - Amount1Min *big.Int - Deadline *big.Int -} - -// INonfungiblePositionManagerMintParams is an auto generated low-level Go binding around an user-defined struct. -type INonfungiblePositionManagerMintParams struct { - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickLower *big.Int - TickUpper *big.Int - Amount0Desired *big.Int - Amount1Desired *big.Int - Amount0Min *big.Int - Amount1Min *big.Int - Recipient common.Address - Deadline *big.Int -} - -// INonfungiblePositionManagerMetaData contains all meta data concerning the INonfungiblePositionManager contract. -var INonfungiblePositionManagerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"structINonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// INonfungiblePositionManagerABI is the input ABI used to generate the binding from. -// Deprecated: Use INonfungiblePositionManagerMetaData.ABI instead. -var INonfungiblePositionManagerABI = INonfungiblePositionManagerMetaData.ABI - -// INonfungiblePositionManager is an auto generated Go binding around an Ethereum contract. -type INonfungiblePositionManager struct { - INonfungiblePositionManagerCaller // Read-only binding to the contract - INonfungiblePositionManagerTransactor // Write-only binding to the contract - INonfungiblePositionManagerFilterer // Log filterer for contract events -} - -// INonfungiblePositionManagerCaller is an auto generated read-only Go binding around an Ethereum contract. -type INonfungiblePositionManagerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// INonfungiblePositionManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type INonfungiblePositionManagerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// INonfungiblePositionManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type INonfungiblePositionManagerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// INonfungiblePositionManagerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type INonfungiblePositionManagerSession struct { - Contract *INonfungiblePositionManager // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// INonfungiblePositionManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type INonfungiblePositionManagerCallerSession struct { - Contract *INonfungiblePositionManagerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// INonfungiblePositionManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type INonfungiblePositionManagerTransactorSession struct { - Contract *INonfungiblePositionManagerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// INonfungiblePositionManagerRaw is an auto generated low-level Go binding around an Ethereum contract. -type INonfungiblePositionManagerRaw struct { - Contract *INonfungiblePositionManager // Generic contract binding to access the raw methods on -} - -// INonfungiblePositionManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type INonfungiblePositionManagerCallerRaw struct { - Contract *INonfungiblePositionManagerCaller // Generic read-only contract binding to access the raw methods on -} - -// INonfungiblePositionManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type INonfungiblePositionManagerTransactorRaw struct { - Contract *INonfungiblePositionManagerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewINonfungiblePositionManager creates a new instance of INonfungiblePositionManager, bound to a specific deployed contract. -func NewINonfungiblePositionManager(address common.Address, backend bind.ContractBackend) (*INonfungiblePositionManager, error) { - contract, err := bindINonfungiblePositionManager(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &INonfungiblePositionManager{INonfungiblePositionManagerCaller: INonfungiblePositionManagerCaller{contract: contract}, INonfungiblePositionManagerTransactor: INonfungiblePositionManagerTransactor{contract: contract}, INonfungiblePositionManagerFilterer: INonfungiblePositionManagerFilterer{contract: contract}}, nil -} - -// NewINonfungiblePositionManagerCaller creates a new read-only instance of INonfungiblePositionManager, bound to a specific deployed contract. -func NewINonfungiblePositionManagerCaller(address common.Address, caller bind.ContractCaller) (*INonfungiblePositionManagerCaller, error) { - contract, err := bindINonfungiblePositionManager(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerCaller{contract: contract}, nil -} - -// NewINonfungiblePositionManagerTransactor creates a new write-only instance of INonfungiblePositionManager, bound to a specific deployed contract. -func NewINonfungiblePositionManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*INonfungiblePositionManagerTransactor, error) { - contract, err := bindINonfungiblePositionManager(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerTransactor{contract: contract}, nil -} - -// NewINonfungiblePositionManagerFilterer creates a new log filterer instance of INonfungiblePositionManager, bound to a specific deployed contract. -func NewINonfungiblePositionManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*INonfungiblePositionManagerFilterer, error) { - contract, err := bindINonfungiblePositionManager(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerFilterer{contract: contract}, nil -} - -// bindINonfungiblePositionManager binds a generic wrapper to an already deployed contract. -func bindINonfungiblePositionManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := INonfungiblePositionManagerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_INonfungiblePositionManager *INonfungiblePositionManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _INonfungiblePositionManager.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.contract.Transact(opts, method, params...) -} - -// Positions is a free data retrieval call binding the contract method 0x99fbab88. -// -// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerCaller) Positions(opts *bind.CallOpts, tokenId *big.Int) (struct { - Nonce *big.Int - Operator common.Address - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickLower *big.Int - TickUpper *big.Int - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - var out []interface{} - err := _INonfungiblePositionManager.contract.Call(opts, &out, "positions", tokenId) - - outstruct := new(struct { - Nonce *big.Int - Operator common.Address - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickLower *big.Int - TickUpper *big.Int - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Nonce = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Operator = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) - outstruct.Token0 = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) - outstruct.Token1 = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) - outstruct.Fee = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) - outstruct.TickLower = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) - outstruct.TickUpper = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) - outstruct.Liquidity = *abi.ConvertType(out[7], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[8], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[9], new(*big.Int)).(**big.Int) - outstruct.TokensOwed0 = *abi.ConvertType(out[10], new(*big.Int)).(**big.Int) - outstruct.TokensOwed1 = *abi.ConvertType(out[11], new(*big.Int)).(**big.Int) - - return *outstruct, err - -} - -// Positions is a free data retrieval call binding the contract method 0x99fbab88. -// -// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Positions(tokenId *big.Int) (struct { - Nonce *big.Int - Operator common.Address - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickLower *big.Int - TickUpper *big.Int - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _INonfungiblePositionManager.Contract.Positions(&_INonfungiblePositionManager.CallOpts, tokenId) -} - -// Positions is a free data retrieval call binding the contract method 0x99fbab88. -// -// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerCallerSession) Positions(tokenId *big.Int) (struct { - Nonce *big.Int - Operator common.Address - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickLower *big.Int - TickUpper *big.Int - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _INonfungiblePositionManager.Contract.Positions(&_INonfungiblePositionManager.CallOpts, tokenId) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) payable returns() -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) { - return _INonfungiblePositionManager.contract.Transact(opts, "burn", tokenId) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) payable returns() -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Burn(tokenId *big.Int) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Burn(&_INonfungiblePositionManager.TransactOpts, tokenId) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 tokenId) payable returns() -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Burn(&_INonfungiblePositionManager.TransactOpts, tokenId) -} - -// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. -// -// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Collect(opts *bind.TransactOpts, params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.contract.Transact(opts, "collect", params) -} - -// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. -// -// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Collect(params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Collect(&_INonfungiblePositionManager.TransactOpts, params) -} - -// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. -// -// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Collect(params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Collect(&_INonfungiblePositionManager.TransactOpts, params) -} - -// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. -// -// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) DecreaseLiquidity(opts *bind.TransactOpts, params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.contract.Transact(opts, "decreaseLiquidity", params) -} - -// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. -// -// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) DecreaseLiquidity(params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.DecreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) -} - -// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. -// -// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) DecreaseLiquidity(params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.DecreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) -} - -// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. -// -// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) IncreaseLiquidity(opts *bind.TransactOpts, params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.contract.Transact(opts, "increaseLiquidity", params) -} - -// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. -// -// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) IncreaseLiquidity(params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.IncreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) -} - -// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. -// -// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) IncreaseLiquidity(params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.IncreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) -} - -// Mint is a paid mutator transaction binding the contract method 0x88316456. -// -// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Mint(opts *bind.TransactOpts, params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.contract.Transact(opts, "mint", params) -} - -// Mint is a paid mutator transaction binding the contract method 0x88316456. -// -// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Mint(params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Mint(&_INonfungiblePositionManager.TransactOpts, params) -} - -// Mint is a paid mutator transaction binding the contract method 0x88316456. -// -// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Mint(params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { - return _INonfungiblePositionManager.Contract.Mint(&_INonfungiblePositionManager.TransactOpts, params) -} - -// INonfungiblePositionManagerCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerCollectIterator struct { - Event *INonfungiblePositionManagerCollect // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INonfungiblePositionManagerCollectIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INonfungiblePositionManagerCollectIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INonfungiblePositionManagerCollectIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INonfungiblePositionManagerCollect represents a Collect event raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerCollect struct { - TokenId *big.Int - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCollect is a free log retrieval operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. -// -// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterCollect(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerCollectIterator, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "Collect", tokenIdRule) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerCollectIterator{contract: _INonfungiblePositionManager.contract, event: "Collect", logs: logs, sub: sub}, nil -} - -// WatchCollect is a free log subscription operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. -// -// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerCollect, tokenId []*big.Int) (event.Subscription, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "Collect", tokenIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INonfungiblePositionManagerCollect) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "Collect", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCollect is a log parse operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. -// -// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseCollect(log types.Log) (*INonfungiblePositionManagerCollect, error) { - event := new(INonfungiblePositionManagerCollect) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "Collect", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INonfungiblePositionManagerDecreaseLiquidityIterator is returned from FilterDecreaseLiquidity and is used to iterate over the raw logs and unpacked data for DecreaseLiquidity events raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerDecreaseLiquidityIterator struct { - Event *INonfungiblePositionManagerDecreaseLiquidity // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerDecreaseLiquidity) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerDecreaseLiquidity) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INonfungiblePositionManagerDecreaseLiquidity represents a DecreaseLiquidity event raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerDecreaseLiquidity struct { - TokenId *big.Int - Liquidity *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDecreaseLiquidity is a free log retrieval operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. -// -// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterDecreaseLiquidity(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerDecreaseLiquidityIterator, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "DecreaseLiquidity", tokenIdRule) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerDecreaseLiquidityIterator{contract: _INonfungiblePositionManager.contract, event: "DecreaseLiquidity", logs: logs, sub: sub}, nil -} - -// WatchDecreaseLiquidity is a free log subscription operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. -// -// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchDecreaseLiquidity(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerDecreaseLiquidity, tokenId []*big.Int) (event.Subscription, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "DecreaseLiquidity", tokenIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INonfungiblePositionManagerDecreaseLiquidity) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "DecreaseLiquidity", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDecreaseLiquidity is a log parse operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. -// -// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseDecreaseLiquidity(log types.Log) (*INonfungiblePositionManagerDecreaseLiquidity, error) { - event := new(INonfungiblePositionManagerDecreaseLiquidity) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "DecreaseLiquidity", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// INonfungiblePositionManagerIncreaseLiquidityIterator is returned from FilterIncreaseLiquidity and is used to iterate over the raw logs and unpacked data for IncreaseLiquidity events raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerIncreaseLiquidityIterator struct { - Event *INonfungiblePositionManagerIncreaseLiquidity // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerIncreaseLiquidity) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(INonfungiblePositionManagerIncreaseLiquidity) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// INonfungiblePositionManagerIncreaseLiquidity represents a IncreaseLiquidity event raised by the INonfungiblePositionManager contract. -type INonfungiblePositionManagerIncreaseLiquidity struct { - TokenId *big.Int - Liquidity *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterIncreaseLiquidity is a free log retrieval operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. -// -// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterIncreaseLiquidity(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerIncreaseLiquidityIterator, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "IncreaseLiquidity", tokenIdRule) - if err != nil { - return nil, err - } - return &INonfungiblePositionManagerIncreaseLiquidityIterator{contract: _INonfungiblePositionManager.contract, event: "IncreaseLiquidity", logs: logs, sub: sub}, nil -} - -// WatchIncreaseLiquidity is a free log subscription operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. -// -// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchIncreaseLiquidity(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerIncreaseLiquidity, tokenId []*big.Int) (event.Subscription, error) { - - var tokenIdRule []interface{} - for _, tokenIdItem := range tokenId { - tokenIdRule = append(tokenIdRule, tokenIdItem) - } - - logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "IncreaseLiquidity", tokenIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(INonfungiblePositionManagerIncreaseLiquidity) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "IncreaseLiquidity", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseIncreaseLiquidity is a log parse operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. -// -// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) -func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseIncreaseLiquidity(log types.Log) (*INonfungiblePositionManagerIncreaseLiquidity, error) { - event := new(INonfungiblePositionManagerIncreaseLiquidity) - if err := _INonfungiblePositionManager.contract.UnpackLog(event, "IncreaseLiquidity", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go b/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go deleted file mode 100644 index 33da23e4..00000000 --- a/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package testuniswapv3contracts - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IPoolInitializerMetaData contains all meta data concerning the IPoolInitializer contract. -var IPoolInitializerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}]", -} - -// IPoolInitializerABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoolInitializerMetaData.ABI instead. -var IPoolInitializerABI = IPoolInitializerMetaData.ABI - -// IPoolInitializer is an auto generated Go binding around an Ethereum contract. -type IPoolInitializer struct { - IPoolInitializerCaller // Read-only binding to the contract - IPoolInitializerTransactor // Write-only binding to the contract - IPoolInitializerFilterer // Log filterer for contract events -} - -// IPoolInitializerCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoolInitializerCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolInitializerTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoolInitializerTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolInitializerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoolInitializerFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolInitializerSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IPoolInitializerSession struct { - Contract *IPoolInitializer // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoolInitializerCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IPoolInitializerCallerSession struct { - Contract *IPoolInitializerCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IPoolInitializerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IPoolInitializerTransactorSession struct { - Contract *IPoolInitializerTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoolInitializerRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoolInitializerRaw struct { - Contract *IPoolInitializer // Generic contract binding to access the raw methods on -} - -// IPoolInitializerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoolInitializerCallerRaw struct { - Contract *IPoolInitializerCaller // Generic read-only contract binding to access the raw methods on -} - -// IPoolInitializerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoolInitializerTransactorRaw struct { - Contract *IPoolInitializerTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIPoolInitializer creates a new instance of IPoolInitializer, bound to a specific deployed contract. -func NewIPoolInitializer(address common.Address, backend bind.ContractBackend) (*IPoolInitializer, error) { - contract, err := bindIPoolInitializer(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IPoolInitializer{IPoolInitializerCaller: IPoolInitializerCaller{contract: contract}, IPoolInitializerTransactor: IPoolInitializerTransactor{contract: contract}, IPoolInitializerFilterer: IPoolInitializerFilterer{contract: contract}}, nil -} - -// NewIPoolInitializerCaller creates a new read-only instance of IPoolInitializer, bound to a specific deployed contract. -func NewIPoolInitializerCaller(address common.Address, caller bind.ContractCaller) (*IPoolInitializerCaller, error) { - contract, err := bindIPoolInitializer(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IPoolInitializerCaller{contract: contract}, nil -} - -// NewIPoolInitializerTransactor creates a new write-only instance of IPoolInitializer, bound to a specific deployed contract. -func NewIPoolInitializerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoolInitializerTransactor, error) { - contract, err := bindIPoolInitializer(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IPoolInitializerTransactor{contract: contract}, nil -} - -// NewIPoolInitializerFilterer creates a new log filterer instance of IPoolInitializer, bound to a specific deployed contract. -func NewIPoolInitializerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoolInitializerFilterer, error) { - contract, err := bindIPoolInitializer(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IPoolInitializerFilterer{contract: contract}, nil -} - -// bindIPoolInitializer binds a generic wrapper to an already deployed contract. -func bindIPoolInitializer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoolInitializerMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoolInitializer *IPoolInitializerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoolInitializer.Contract.IPoolInitializerCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoolInitializer *IPoolInitializerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoolInitializer.Contract.IPoolInitializerTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoolInitializer *IPoolInitializerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoolInitializer.Contract.IPoolInitializerTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoolInitializer *IPoolInitializerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoolInitializer.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoolInitializer *IPoolInitializerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoolInitializer.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoolInitializer *IPoolInitializerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoolInitializer.Contract.contract.Transact(opts, method, params...) -} - -// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. -// -// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) -func (_IPoolInitializer *IPoolInitializerTransactor) CreateAndInitializePoolIfNecessary(opts *bind.TransactOpts, token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IPoolInitializer.contract.Transact(opts, "createAndInitializePoolIfNecessary", token0, token1, fee, sqrtPriceX96) -} - -// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. -// -// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) -func (_IPoolInitializer *IPoolInitializerSession) CreateAndInitializePoolIfNecessary(token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IPoolInitializer.Contract.CreateAndInitializePoolIfNecessary(&_IPoolInitializer.TransactOpts, token0, token1, fee, sqrtPriceX96) -} - -// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. -// -// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) -func (_IPoolInitializer *IPoolInitializerTransactorSession) CreateAndInitializePoolIfNecessary(token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IPoolInitializer.Contract.CreateAndInitializePoolIfNecessary(&_IPoolInitializer.TransactOpts, token0, token1, fee, sqrtPriceX96) -} diff --git a/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go b/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go deleted file mode 100644 index 13eed8cb..00000000 --- a/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go +++ /dev/null @@ -1,778 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainteractormock - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaMessage struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte -} - -// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaRevert struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationAddress []byte - DestinationChainId *big.Int - RemainingZetaValue *big.Int - Message []byte -} - -// ZetaInteractorMockMetaData contains all meta data concerning the ZetaInteractorMock contract. -var ZetaInteractorMockMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaConnectorAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connector\",\"outputs\":[{\"internalType\":\"contractZetaConnector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"interactorsByChainId\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"contractAddress\",\"type\":\"bytes\"}],\"name\":\"setInteractorByChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea264697066735822122063babae00441a1f6e87dfa1b12f25265331734088794be43384b60938347fc3864736f6c63430008070033", -} - -// ZetaInteractorMockABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaInteractorMockMetaData.ABI instead. -var ZetaInteractorMockABI = ZetaInteractorMockMetaData.ABI - -// ZetaInteractorMockBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaInteractorMockMetaData.Bin instead. -var ZetaInteractorMockBin = ZetaInteractorMockMetaData.Bin - -// DeployZetaInteractorMock deploys a new Ethereum contract, binding an instance of ZetaInteractorMock to it. -func DeployZetaInteractorMock(auth *bind.TransactOpts, backend bind.ContractBackend, zetaConnectorAddress common.Address) (common.Address, *types.Transaction, *ZetaInteractorMock, error) { - parsed, err := ZetaInteractorMockMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaInteractorMockBin), backend, zetaConnectorAddress) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaInteractorMock{ZetaInteractorMockCaller: ZetaInteractorMockCaller{contract: contract}, ZetaInteractorMockTransactor: ZetaInteractorMockTransactor{contract: contract}, ZetaInteractorMockFilterer: ZetaInteractorMockFilterer{contract: contract}}, nil -} - -// ZetaInteractorMock is an auto generated Go binding around an Ethereum contract. -type ZetaInteractorMock struct { - ZetaInteractorMockCaller // Read-only binding to the contract - ZetaInteractorMockTransactor // Write-only binding to the contract - ZetaInteractorMockFilterer // Log filterer for contract events -} - -// ZetaInteractorMockCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaInteractorMockCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorMockTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaInteractorMockTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaInteractorMockFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorMockSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaInteractorMockSession struct { - Contract *ZetaInteractorMock // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaInteractorMockCallerSession struct { - Contract *ZetaInteractorMockCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaInteractorMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaInteractorMockTransactorSession struct { - Contract *ZetaInteractorMockTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorMockRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaInteractorMockRaw struct { - Contract *ZetaInteractorMock // Generic contract binding to access the raw methods on -} - -// ZetaInteractorMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaInteractorMockCallerRaw struct { - Contract *ZetaInteractorMockCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaInteractorMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaInteractorMockTransactorRaw struct { - Contract *ZetaInteractorMockTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaInteractorMock creates a new instance of ZetaInteractorMock, bound to a specific deployed contract. -func NewZetaInteractorMock(address common.Address, backend bind.ContractBackend) (*ZetaInteractorMock, error) { - contract, err := bindZetaInteractorMock(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaInteractorMock{ZetaInteractorMockCaller: ZetaInteractorMockCaller{contract: contract}, ZetaInteractorMockTransactor: ZetaInteractorMockTransactor{contract: contract}, ZetaInteractorMockFilterer: ZetaInteractorMockFilterer{contract: contract}}, nil -} - -// NewZetaInteractorMockCaller creates a new read-only instance of ZetaInteractorMock, bound to a specific deployed contract. -func NewZetaInteractorMockCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorMockCaller, error) { - contract, err := bindZetaInteractorMock(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorMockCaller{contract: contract}, nil -} - -// NewZetaInteractorMockTransactor creates a new write-only instance of ZetaInteractorMock, bound to a specific deployed contract. -func NewZetaInteractorMockTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorMockTransactor, error) { - contract, err := bindZetaInteractorMock(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorMockTransactor{contract: contract}, nil -} - -// NewZetaInteractorMockFilterer creates a new log filterer instance of ZetaInteractorMock, bound to a specific deployed contract. -func NewZetaInteractorMockFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorMockFilterer, error) { - contract, err := bindZetaInteractorMock(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaInteractorMockFilterer{contract: contract}, nil -} - -// bindZetaInteractorMock binds a generic wrapper to an already deployed contract. -func bindZetaInteractorMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaInteractorMockMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractorMock *ZetaInteractorMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractorMock.Contract.ZetaInteractorMockCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractorMock *ZetaInteractorMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.ZetaInteractorMockTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractorMock *ZetaInteractorMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.ZetaInteractorMockTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractorMock *ZetaInteractorMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractorMock.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractorMock *ZetaInteractorMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractorMock *ZetaInteractorMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.contract.Transact(opts, method, params...) -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCaller) Connector(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractorMock.contract.Call(opts, &out, "connector") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockSession) Connector() (common.Address, error) { - return _ZetaInteractorMock.Contract.Connector(&_ZetaInteractorMock.CallOpts) -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) Connector() (common.Address, error) { - return _ZetaInteractorMock.Contract.Connector(&_ZetaInteractorMock.CallOpts) -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractorMock *ZetaInteractorMockCaller) InteractorsByChainId(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) { - var out []interface{} - err := _ZetaInteractorMock.contract.Call(opts, &out, "interactorsByChainId", arg0) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractorMock *ZetaInteractorMockSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { - return _ZetaInteractorMock.Contract.InteractorsByChainId(&_ZetaInteractorMock.CallOpts, arg0) -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { - return _ZetaInteractorMock.Contract.InteractorsByChainId(&_ZetaInteractorMock.CallOpts, arg0) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractorMock.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockSession) Owner() (common.Address, error) { - return _ZetaInteractorMock.Contract.Owner(&_ZetaInteractorMock.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) Owner() (common.Address, error) { - return _ZetaInteractorMock.Contract.Owner(&_ZetaInteractorMock.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractorMock.contract.Call(opts, &out, "pendingOwner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockSession) PendingOwner() (common.Address, error) { - return _ZetaInteractorMock.Contract.PendingOwner(&_ZetaInteractorMock.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) PendingOwner() (common.Address, error) { - return _ZetaInteractorMock.Contract.PendingOwner(&_ZetaInteractorMock.CallOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "acceptOwnership") -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) AcceptOwnership() (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.AcceptOwnership(&_ZetaInteractorMock.TransactOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) AcceptOwnership() (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.AcceptOwnership(&_ZetaInteractorMock.TransactOpts) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "onZetaMessage", zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.OnZetaMessage(&_ZetaInteractorMock.TransactOpts, zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.OnZetaMessage(&_ZetaInteractorMock.TransactOpts, zetaMessage) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "onZetaRevert", zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.OnZetaRevert(&_ZetaInteractorMock.TransactOpts, zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.OnZetaRevert(&_ZetaInteractorMock.TransactOpts, zetaRevert) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) RenounceOwnership() (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.RenounceOwnership(&_ZetaInteractorMock.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.RenounceOwnership(&_ZetaInteractorMock.TransactOpts) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) SetInteractorByChainId(opts *bind.TransactOpts, destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "setInteractorByChainId", destinationChainId, contractAddress) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.SetInteractorByChainId(&_ZetaInteractorMock.TransactOpts, destinationChainId, contractAddress) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.SetInteractorByChainId(&_ZetaInteractorMock.TransactOpts, destinationChainId, contractAddress) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractorMock.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractorMock *ZetaInteractorMockSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.TransferOwnership(&_ZetaInteractorMock.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractorMock.Contract.TransferOwnership(&_ZetaInteractorMock.TransactOpts, newOwner) -} - -// ZetaInteractorMockOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ZetaInteractorMock contract. -type ZetaInteractorMockOwnershipTransferStartedIterator struct { - Event *ZetaInteractorMockOwnershipTransferStarted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorMockOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorMockOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaInteractorMockOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ZetaInteractorMock contract. -type ZetaInteractorMockOwnershipTransferStarted struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorMockOwnershipTransferStartedIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractorMock.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ZetaInteractorMockOwnershipTransferStartedIterator{contract: _ZetaInteractorMock.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ZetaInteractorMockOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractorMock.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaInteractorMockOwnershipTransferStarted) - if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) ParseOwnershipTransferStarted(log types.Log) (*ZetaInteractorMockOwnershipTransferStarted, error) { - event := new(ZetaInteractorMockOwnershipTransferStarted) - if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaInteractorMockOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ZetaInteractorMock contract. -type ZetaInteractorMockOwnershipTransferredIterator struct { - Event *ZetaInteractorMockOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaInteractorMockOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorMockOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorMockOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaInteractorMockOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaInteractorMockOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaInteractorMockOwnershipTransferred represents a OwnershipTransferred event raised by the ZetaInteractorMock contract. -type ZetaInteractorMockOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorMockOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractorMock.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ZetaInteractorMockOwnershipTransferredIterator{contract: _ZetaInteractorMock.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ZetaInteractorMockOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractorMock.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaInteractorMockOwnershipTransferred) - if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractorMock *ZetaInteractorMockFilterer) ParseOwnershipTransferred(log types.Log) (*ZetaInteractorMockOwnershipTransferred, error) { - event := new(ZetaInteractorMockOwnershipTransferred) - if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go b/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go deleted file mode 100644 index b9cf84ee..00000000 --- a/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go +++ /dev/null @@ -1,532 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetareceivermock - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaMessage struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte -} - -// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaRevert struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationAddress []byte - DestinationChainId *big.Int - RemainingZetaValue *big.Int - Message []byte -} - -// ZetaReceiverMockMetaData contains all meta data concerning the ZetaReceiverMock contract. -var ZetaReceiverMockMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaRevert\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea264697066735822122008485e037d9a20d8e9f8d1e9456b89006367d84f7e0966e1d820fe73c0d706ea64736f6c63430008070033", -} - -// ZetaReceiverMockABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaReceiverMockMetaData.ABI instead. -var ZetaReceiverMockABI = ZetaReceiverMockMetaData.ABI - -// ZetaReceiverMockBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaReceiverMockMetaData.Bin instead. -var ZetaReceiverMockBin = ZetaReceiverMockMetaData.Bin - -// DeployZetaReceiverMock deploys a new Ethereum contract, binding an instance of ZetaReceiverMock to it. -func DeployZetaReceiverMock(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ZetaReceiverMock, error) { - parsed, err := ZetaReceiverMockMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaReceiverMockBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaReceiverMock{ZetaReceiverMockCaller: ZetaReceiverMockCaller{contract: contract}, ZetaReceiverMockTransactor: ZetaReceiverMockTransactor{contract: contract}, ZetaReceiverMockFilterer: ZetaReceiverMockFilterer{contract: contract}}, nil -} - -// ZetaReceiverMock is an auto generated Go binding around an Ethereum contract. -type ZetaReceiverMock struct { - ZetaReceiverMockCaller // Read-only binding to the contract - ZetaReceiverMockTransactor // Write-only binding to the contract - ZetaReceiverMockFilterer // Log filterer for contract events -} - -// ZetaReceiverMockCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaReceiverMockCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverMockTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaReceiverMockTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaReceiverMockFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverMockSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaReceiverMockSession struct { - Contract *ZetaReceiverMock // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaReceiverMockCallerSession struct { - Contract *ZetaReceiverMockCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaReceiverMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaReceiverMockTransactorSession struct { - Contract *ZetaReceiverMockTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverMockRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaReceiverMockRaw struct { - Contract *ZetaReceiverMock // Generic contract binding to access the raw methods on -} - -// ZetaReceiverMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaReceiverMockCallerRaw struct { - Contract *ZetaReceiverMockCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaReceiverMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaReceiverMockTransactorRaw struct { - Contract *ZetaReceiverMockTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaReceiverMock creates a new instance of ZetaReceiverMock, bound to a specific deployed contract. -func NewZetaReceiverMock(address common.Address, backend bind.ContractBackend) (*ZetaReceiverMock, error) { - contract, err := bindZetaReceiverMock(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaReceiverMock{ZetaReceiverMockCaller: ZetaReceiverMockCaller{contract: contract}, ZetaReceiverMockTransactor: ZetaReceiverMockTransactor{contract: contract}, ZetaReceiverMockFilterer: ZetaReceiverMockFilterer{contract: contract}}, nil -} - -// NewZetaReceiverMockCaller creates a new read-only instance of ZetaReceiverMock, bound to a specific deployed contract. -func NewZetaReceiverMockCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverMockCaller, error) { - contract, err := bindZetaReceiverMock(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverMockCaller{contract: contract}, nil -} - -// NewZetaReceiverMockTransactor creates a new write-only instance of ZetaReceiverMock, bound to a specific deployed contract. -func NewZetaReceiverMockTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverMockTransactor, error) { - contract, err := bindZetaReceiverMock(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverMockTransactor{contract: contract}, nil -} - -// NewZetaReceiverMockFilterer creates a new log filterer instance of ZetaReceiverMock, bound to a specific deployed contract. -func NewZetaReceiverMockFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverMockFilterer, error) { - contract, err := bindZetaReceiverMock(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaReceiverMockFilterer{contract: contract}, nil -} - -// bindZetaReceiverMock binds a generic wrapper to an already deployed contract. -func bindZetaReceiverMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaReceiverMockMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiverMock *ZetaReceiverMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiverMock.Contract.ZetaReceiverMockCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiverMock *ZetaReceiverMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.ZetaReceiverMockTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiverMock *ZetaReceiverMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.ZetaReceiverMockTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiverMock *ZetaReceiverMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiverMock.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiverMock *ZetaReceiverMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiverMock *ZetaReceiverMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.contract.Transact(opts, method, params...) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiverMock *ZetaReceiverMockTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiverMock.contract.Transact(opts, "onZetaMessage", zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiverMock *ZetaReceiverMockSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.OnZetaMessage(&_ZetaReceiverMock.TransactOpts, zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiverMock *ZetaReceiverMockTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.OnZetaMessage(&_ZetaReceiverMock.TransactOpts, zetaMessage) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiverMock *ZetaReceiverMockTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiverMock.contract.Transact(opts, "onZetaRevert", zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiverMock *ZetaReceiverMockSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.OnZetaRevert(&_ZetaReceiverMock.TransactOpts, zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiverMock *ZetaReceiverMockTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiverMock.Contract.OnZetaRevert(&_ZetaReceiverMock.TransactOpts, zetaRevert) -} - -// ZetaReceiverMockMockOnZetaMessageIterator is returned from FilterMockOnZetaMessage and is used to iterate over the raw logs and unpacked data for MockOnZetaMessage events raised by the ZetaReceiverMock contract. -type ZetaReceiverMockMockOnZetaMessageIterator struct { - Event *ZetaReceiverMockMockOnZetaMessage // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaReceiverMockMockOnZetaMessageIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaReceiverMockMockOnZetaMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaReceiverMockMockOnZetaMessage) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaReceiverMockMockOnZetaMessageIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaReceiverMockMockOnZetaMessageIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaReceiverMockMockOnZetaMessage represents a MockOnZetaMessage event raised by the ZetaReceiverMock contract. -type ZetaReceiverMockMockOnZetaMessage struct { - DestinationAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMockOnZetaMessage is a free log retrieval operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. -// -// Solidity: event MockOnZetaMessage(address destinationAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) FilterMockOnZetaMessage(opts *bind.FilterOpts) (*ZetaReceiverMockMockOnZetaMessageIterator, error) { - - logs, sub, err := _ZetaReceiverMock.contract.FilterLogs(opts, "MockOnZetaMessage") - if err != nil { - return nil, err - } - return &ZetaReceiverMockMockOnZetaMessageIterator{contract: _ZetaReceiverMock.contract, event: "MockOnZetaMessage", logs: logs, sub: sub}, nil -} - -// WatchMockOnZetaMessage is a free log subscription operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. -// -// Solidity: event MockOnZetaMessage(address destinationAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) WatchMockOnZetaMessage(opts *bind.WatchOpts, sink chan<- *ZetaReceiverMockMockOnZetaMessage) (event.Subscription, error) { - - logs, sub, err := _ZetaReceiverMock.contract.WatchLogs(opts, "MockOnZetaMessage") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaReceiverMockMockOnZetaMessage) - if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaMessage", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMockOnZetaMessage is a log parse operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. -// -// Solidity: event MockOnZetaMessage(address destinationAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) ParseMockOnZetaMessage(log types.Log) (*ZetaReceiverMockMockOnZetaMessage, error) { - event := new(ZetaReceiverMockMockOnZetaMessage) - if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaMessage", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaReceiverMockMockOnZetaRevertIterator is returned from FilterMockOnZetaRevert and is used to iterate over the raw logs and unpacked data for MockOnZetaRevert events raised by the ZetaReceiverMock contract. -type ZetaReceiverMockMockOnZetaRevertIterator struct { - Event *ZetaReceiverMockMockOnZetaRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaReceiverMockMockOnZetaRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaReceiverMockMockOnZetaRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaReceiverMockMockOnZetaRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaReceiverMockMockOnZetaRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaReceiverMockMockOnZetaRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaReceiverMockMockOnZetaRevert represents a MockOnZetaRevert event raised by the ZetaReceiverMock contract. -type ZetaReceiverMockMockOnZetaRevert struct { - ZetaTxSenderAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMockOnZetaRevert is a free log retrieval operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. -// -// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) FilterMockOnZetaRevert(opts *bind.FilterOpts) (*ZetaReceiverMockMockOnZetaRevertIterator, error) { - - logs, sub, err := _ZetaReceiverMock.contract.FilterLogs(opts, "MockOnZetaRevert") - if err != nil { - return nil, err - } - return &ZetaReceiverMockMockOnZetaRevertIterator{contract: _ZetaReceiverMock.contract, event: "MockOnZetaRevert", logs: logs, sub: sub}, nil -} - -// WatchMockOnZetaRevert is a free log subscription operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. -// -// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) WatchMockOnZetaRevert(opts *bind.WatchOpts, sink chan<- *ZetaReceiverMockMockOnZetaRevert) (event.Subscription, error) { - - logs, sub, err := _ZetaReceiverMock.contract.WatchLogs(opts, "MockOnZetaRevert") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaReceiverMockMockOnZetaRevert) - if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMockOnZetaRevert is a log parse operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. -// -// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) -func (_ZetaReceiverMock *ZetaReceiverMockFilterer) ParseMockOnZetaRevert(log types.Log) (*ZetaReceiverMockMockOnZetaRevert, error) { - event := new(ZetaReceiverMockMockOnZetaRevert) - if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go b/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go deleted file mode 100644 index f1140f79..00000000 --- a/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go +++ /dev/null @@ -1,338 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package immutablecreate2factory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ImmutableCreate2FactoryMetaData contains all meta data concerning the ImmutableCreate2Factory contract. -var ImmutableCreate2FactoryMetaData = &bind.MetaData{ - ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"name\":\"hasBeenDeployed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2AndTransfer\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"findCreate2Address\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"findCreate2AddressViaHash\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610c54806100206000396000f3fe60806040526004361061004a5760003560e01c806308508b8f1461004f57806329346003146100b857806364e030871461017b57806385cf97ab14610280578063a49a7c9014610350575b600080fd5b34801561005b57600080fd5b5061009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103d5565b604051808215151515815260200191505060405180910390f35b610139600480360360408110156100ce57600080fd5b8101908080359060200190929190803590602001906401000000008111156100f557600080fd5b82018360208201111561010757600080fd5b8035906020019184600183028401116401000000008311171561012957600080fd5b909192939192939050505061042a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023e6004803603604081101561019157600080fd5b8101908080359060200190929190803590602001906401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028c57600080fd5b5061030e600480360360408110156102a357600080fd5b8101908080359060200190929190803590602001906401000000008111156102ca57600080fd5b8201836020820111156102dc57600080fd5b803590602001918460018302840111640100000000831117156102fe57600080fd5b9091929391929390505050610698565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035c57600080fd5b506103936004803603604081101561037357600080fd5b8101908080359060200190929190803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000833373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16148061048b5750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b6104e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61052e8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108b4565b91508173ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b50505050509392505050565b6000823373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1614806106305750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b610685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61068f84846108b4565b91505092915050565b6000308484846040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b657600090506107b7565b5b9392505050565b600030838360405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108ad57600090506108ae565b5b92915050565b6000606082905060003085836040516020018082805190602001908083835b602083106108f657805182526020820191506020810190506020830392506108d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610b56603f913960400191505060405180910390fd5b81602001825186818334f5945050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180610bda6046913960600191505060405180910390fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050509291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a72305820df6f8cf8f81946679a805d41e12170a28006ccfb64bce758c74108440cc9337b64736f6c634300050a0032", -} - -// ImmutableCreate2FactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use ImmutableCreate2FactoryMetaData.ABI instead. -var ImmutableCreate2FactoryABI = ImmutableCreate2FactoryMetaData.ABI - -// ImmutableCreate2FactoryBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ImmutableCreate2FactoryMetaData.Bin instead. -var ImmutableCreate2FactoryBin = ImmutableCreate2FactoryMetaData.Bin - -// DeployImmutableCreate2Factory deploys a new Ethereum contract, binding an instance of ImmutableCreate2Factory to it. -func DeployImmutableCreate2Factory(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ImmutableCreate2Factory, error) { - parsed, err := ImmutableCreate2FactoryMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ImmutableCreate2FactoryBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ImmutableCreate2Factory{ImmutableCreate2FactoryCaller: ImmutableCreate2FactoryCaller{contract: contract}, ImmutableCreate2FactoryTransactor: ImmutableCreate2FactoryTransactor{contract: contract}, ImmutableCreate2FactoryFilterer: ImmutableCreate2FactoryFilterer{contract: contract}}, nil -} - -// ImmutableCreate2Factory is an auto generated Go binding around an Ethereum contract. -type ImmutableCreate2Factory struct { - ImmutableCreate2FactoryCaller // Read-only binding to the contract - ImmutableCreate2FactoryTransactor // Write-only binding to the contract - ImmutableCreate2FactoryFilterer // Log filterer for contract events -} - -// ImmutableCreate2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type ImmutableCreate2FactoryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ImmutableCreate2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ImmutableCreate2FactoryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ImmutableCreate2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ImmutableCreate2FactoryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ImmutableCreate2FactorySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ImmutableCreate2FactorySession struct { - Contract *ImmutableCreate2Factory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ImmutableCreate2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ImmutableCreate2FactoryCallerSession struct { - Contract *ImmutableCreate2FactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ImmutableCreate2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ImmutableCreate2FactoryTransactorSession struct { - Contract *ImmutableCreate2FactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ImmutableCreate2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type ImmutableCreate2FactoryRaw struct { - Contract *ImmutableCreate2Factory // Generic contract binding to access the raw methods on -} - -// ImmutableCreate2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ImmutableCreate2FactoryCallerRaw struct { - Contract *ImmutableCreate2FactoryCaller // Generic read-only contract binding to access the raw methods on -} - -// ImmutableCreate2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ImmutableCreate2FactoryTransactorRaw struct { - Contract *ImmutableCreate2FactoryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewImmutableCreate2Factory creates a new instance of ImmutableCreate2Factory, bound to a specific deployed contract. -func NewImmutableCreate2Factory(address common.Address, backend bind.ContractBackend) (*ImmutableCreate2Factory, error) { - contract, err := bindImmutableCreate2Factory(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ImmutableCreate2Factory{ImmutableCreate2FactoryCaller: ImmutableCreate2FactoryCaller{contract: contract}, ImmutableCreate2FactoryTransactor: ImmutableCreate2FactoryTransactor{contract: contract}, ImmutableCreate2FactoryFilterer: ImmutableCreate2FactoryFilterer{contract: contract}}, nil -} - -// NewImmutableCreate2FactoryCaller creates a new read-only instance of ImmutableCreate2Factory, bound to a specific deployed contract. -func NewImmutableCreate2FactoryCaller(address common.Address, caller bind.ContractCaller) (*ImmutableCreate2FactoryCaller, error) { - contract, err := bindImmutableCreate2Factory(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ImmutableCreate2FactoryCaller{contract: contract}, nil -} - -// NewImmutableCreate2FactoryTransactor creates a new write-only instance of ImmutableCreate2Factory, bound to a specific deployed contract. -func NewImmutableCreate2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*ImmutableCreate2FactoryTransactor, error) { - contract, err := bindImmutableCreate2Factory(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ImmutableCreate2FactoryTransactor{contract: contract}, nil -} - -// NewImmutableCreate2FactoryFilterer creates a new log filterer instance of ImmutableCreate2Factory, bound to a specific deployed contract. -func NewImmutableCreate2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*ImmutableCreate2FactoryFilterer, error) { - contract, err := bindImmutableCreate2Factory(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ImmutableCreate2FactoryFilterer{contract: contract}, nil -} - -// bindImmutableCreate2Factory binds a generic wrapper to an already deployed contract. -func bindImmutableCreate2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ImmutableCreate2FactoryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ImmutableCreate2Factory.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.contract.Transact(opts, method, params...) -} - -// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. -// -// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) FindCreate2Address(opts *bind.CallOpts, salt [32]byte, initCode []byte) (common.Address, error) { - var out []interface{} - err := _ImmutableCreate2Factory.contract.Call(opts, &out, "findCreate2Address", salt, initCode) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. -// -// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) FindCreate2Address(salt [32]byte, initCode []byte) (common.Address, error) { - return _ImmutableCreate2Factory.Contract.FindCreate2Address(&_ImmutableCreate2Factory.CallOpts, salt, initCode) -} - -// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. -// -// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) FindCreate2Address(salt [32]byte, initCode []byte) (common.Address, error) { - return _ImmutableCreate2Factory.Contract.FindCreate2Address(&_ImmutableCreate2Factory.CallOpts, salt, initCode) -} - -// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. -// -// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) FindCreate2AddressViaHash(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte) (common.Address, error) { - var out []interface{} - err := _ImmutableCreate2Factory.contract.Call(opts, &out, "findCreate2AddressViaHash", salt, initCodeHash) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. -// -// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) FindCreate2AddressViaHash(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { - return _ImmutableCreate2Factory.Contract.FindCreate2AddressViaHash(&_ImmutableCreate2Factory.CallOpts, salt, initCodeHash) -} - -// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. -// -// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) FindCreate2AddressViaHash(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { - return _ImmutableCreate2Factory.Contract.FindCreate2AddressViaHash(&_ImmutableCreate2Factory.CallOpts, salt, initCodeHash) -} - -// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. -// -// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) HasBeenDeployed(opts *bind.CallOpts, deploymentAddress common.Address) (bool, error) { - var out []interface{} - err := _ImmutableCreate2Factory.contract.Call(opts, &out, "hasBeenDeployed", deploymentAddress) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. -// -// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) -func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) HasBeenDeployed(deploymentAddress common.Address) (bool, error) { - return _ImmutableCreate2Factory.Contract.HasBeenDeployed(&_ImmutableCreate2Factory.CallOpts, deploymentAddress) -} - -// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. -// -// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) HasBeenDeployed(deploymentAddress common.Address) (bool, error) { - return _ImmutableCreate2Factory.Contract.HasBeenDeployed(&_ImmutableCreate2Factory.CallOpts, deploymentAddress) -} - -// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. -// -// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactor) SafeCreate2(opts *bind.TransactOpts, salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.contract.Transact(opts, "safeCreate2", salt, initializationCode) -} - -// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. -// -// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) SafeCreate2(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.SafeCreate2(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) -} - -// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. -// -// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorSession) SafeCreate2(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.SafeCreate2(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) -} - -// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. -// -// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactor) SafeCreate2AndTransfer(opts *bind.TransactOpts, salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.contract.Transact(opts, "safeCreate2AndTransfer", salt, initializationCode) -} - -// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. -// -// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) SafeCreate2AndTransfer(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.SafeCreate2AndTransfer(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) -} - -// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. -// -// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) -func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorSession) SafeCreate2AndTransfer(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { - return _ImmutableCreate2Factory.Contract.SafeCreate2AndTransfer(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) -} diff --git a/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go b/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go deleted file mode 100644 index 5b66bb1b..00000000 --- a/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package immutablecreate2factory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// OwnableMetaData contains all meta data concerning the Ownable contract. -var OwnableMetaData = &bind.MetaData{ - ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// OwnableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableMetaData.ABI instead. -var OwnableABI = OwnableMetaData.ABI - -// Ownable is an auto generated Go binding around an Ethereum contract. -type Ownable struct { - OwnableCaller // Read-only binding to the contract - OwnableTransactor // Write-only binding to the contract - OwnableFilterer // Log filterer for contract events -} - -// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableSession struct { - Contract *Ownable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableCallerSession struct { - Contract *OwnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableTransactorSession struct { - Contract *OwnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableRaw struct { - Contract *Ownable // Generic contract binding to access the raw methods on -} - -// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableCallerRaw struct { - Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableTransactorRaw struct { - Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. -func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { - contract, err := bindOwnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil -} - -// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { - contract, err := bindOwnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableCaller{contract: contract}, nil -} - -// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { - contract, err := bindOwnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableTransactor{contract: contract}, nil -} - -// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. -func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { - contract, err := bindOwnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableFilterer{contract: contract}, nil -} - -// bindOwnable binds a generic wrapper to an already deployed contract. -func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transact(opts, method, params...) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} diff --git a/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go b/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go deleted file mode 100644 index 96c102f2..00000000 --- a/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go +++ /dev/null @@ -1,212 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package tridentconcentratedliquiditypoolfactory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ConcentratedLiquidityPoolFactoryMetaData contains all meta data concerning the ConcentratedLiquidityPoolFactory contract. -var ConcentratedLiquidityPoolFactoryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// ConcentratedLiquidityPoolFactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use ConcentratedLiquidityPoolFactoryMetaData.ABI instead. -var ConcentratedLiquidityPoolFactoryABI = ConcentratedLiquidityPoolFactoryMetaData.ABI - -// ConcentratedLiquidityPoolFactory is an auto generated Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactory struct { - ConcentratedLiquidityPoolFactoryCaller // Read-only binding to the contract - ConcentratedLiquidityPoolFactoryTransactor // Write-only binding to the contract - ConcentratedLiquidityPoolFactoryFilterer // Log filterer for contract events -} - -// ConcentratedLiquidityPoolFactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactoryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConcentratedLiquidityPoolFactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactoryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConcentratedLiquidityPoolFactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ConcentratedLiquidityPoolFactoryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ConcentratedLiquidityPoolFactorySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ConcentratedLiquidityPoolFactorySession struct { - Contract *ConcentratedLiquidityPoolFactory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ConcentratedLiquidityPoolFactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ConcentratedLiquidityPoolFactoryCallerSession struct { - Contract *ConcentratedLiquidityPoolFactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ConcentratedLiquidityPoolFactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ConcentratedLiquidityPoolFactoryTransactorSession struct { - Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ConcentratedLiquidityPoolFactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactoryRaw struct { - Contract *ConcentratedLiquidityPoolFactory // Generic contract binding to access the raw methods on -} - -// ConcentratedLiquidityPoolFactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactoryCallerRaw struct { - Contract *ConcentratedLiquidityPoolFactoryCaller // Generic read-only contract binding to access the raw methods on -} - -// ConcentratedLiquidityPoolFactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ConcentratedLiquidityPoolFactoryTransactorRaw struct { - Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewConcentratedLiquidityPoolFactory creates a new instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. -func NewConcentratedLiquidityPoolFactory(address common.Address, backend bind.ContractBackend) (*ConcentratedLiquidityPoolFactory, error) { - contract, err := bindConcentratedLiquidityPoolFactory(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ConcentratedLiquidityPoolFactory{ConcentratedLiquidityPoolFactoryCaller: ConcentratedLiquidityPoolFactoryCaller{contract: contract}, ConcentratedLiquidityPoolFactoryTransactor: ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, ConcentratedLiquidityPoolFactoryFilterer: ConcentratedLiquidityPoolFactoryFilterer{contract: contract}}, nil -} - -// NewConcentratedLiquidityPoolFactoryCaller creates a new read-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. -func NewConcentratedLiquidityPoolFactoryCaller(address common.Address, caller bind.ContractCaller) (*ConcentratedLiquidityPoolFactoryCaller, error) { - contract, err := bindConcentratedLiquidityPoolFactory(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ConcentratedLiquidityPoolFactoryCaller{contract: contract}, nil -} - -// NewConcentratedLiquidityPoolFactoryTransactor creates a new write-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. -func NewConcentratedLiquidityPoolFactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*ConcentratedLiquidityPoolFactoryTransactor, error) { - contract, err := bindConcentratedLiquidityPoolFactory(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, nil -} - -// NewConcentratedLiquidityPoolFactoryFilterer creates a new log filterer instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. -func NewConcentratedLiquidityPoolFactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*ConcentratedLiquidityPoolFactoryFilterer, error) { - contract, err := bindConcentratedLiquidityPoolFactory(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ConcentratedLiquidityPoolFactoryFilterer{contract: contract}, nil -} - -// bindConcentratedLiquidityPoolFactory binds a generic wrapper to an already deployed contract. -func bindConcentratedLiquidityPoolFactory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ConcentratedLiquidityPoolFactoryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ConcentratedLiquidityPoolFactory.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ConcentratedLiquidityPoolFactory.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ConcentratedLiquidityPoolFactory.Contract.contract.Transact(opts, method, params...) -} - -// GetPools is a free data retrieval call binding the contract method 0x71a25812. -// -// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCaller) GetPools(opts *bind.CallOpts, token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { - var out []interface{} - err := _ConcentratedLiquidityPoolFactory.contract.Call(opts, &out, "getPools", token0, token1, startIndex, count) - - if err != nil { - return *new([]common.Address), err - } - - out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) - - return out0, err - -} - -// GetPools is a free data retrieval call binding the contract method 0x71a25812. -// -// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactorySession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { - return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) -} - -// GetPools is a free data retrieval call binding the contract method 0x71a25812. -// -// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) -func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerSession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { - return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) -} diff --git a/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go b/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go deleted file mode 100644 index a829cc0d..00000000 --- a/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go +++ /dev/null @@ -1,326 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package tridentipoolrouter - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IPoolRouterExactInputParams is an auto generated low-level Go binding around an user-defined struct. -type IPoolRouterExactInputParams struct { - TokenIn common.Address - AmountIn *big.Int - AmountOutMinimum *big.Int - Path []common.Address - To common.Address - Unwrap bool -} - -// IPoolRouterExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. -type IPoolRouterExactInputSingleParams struct { - TokenIn common.Address - AmountIn *big.Int - AmountOutMinimum *big.Int - Pool common.Address - To common.Address - Unwrap bool -} - -// IPoolRouterExactOutputParams is an auto generated low-level Go binding around an user-defined struct. -type IPoolRouterExactOutputParams struct { - TokenIn common.Address - AmountOut *big.Int - AmountInMaximum *big.Int - Path []common.Address - To common.Address - Unwrap bool -} - -// IPoolRouterExactOutputSingleParams is an auto generated low-level Go binding around an user-defined struct. -type IPoolRouterExactOutputSingleParams struct { - TokenIn common.Address - AmountOut *big.Int - AmountInMaximum *big.Int - Pool common.Address - To common.Address - Unwrap bool -} - -// IPoolRouterMetaData contains all meta data concerning the IPoolRouter contract. -var IPoolRouterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", -} - -// IPoolRouterABI is the input ABI used to generate the binding from. -// Deprecated: Use IPoolRouterMetaData.ABI instead. -var IPoolRouterABI = IPoolRouterMetaData.ABI - -// IPoolRouter is an auto generated Go binding around an Ethereum contract. -type IPoolRouter struct { - IPoolRouterCaller // Read-only binding to the contract - IPoolRouterTransactor // Write-only binding to the contract - IPoolRouterFilterer // Log filterer for contract events -} - -// IPoolRouterCaller is an auto generated read-only Go binding around an Ethereum contract. -type IPoolRouterCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IPoolRouterTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IPoolRouterFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IPoolRouterSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IPoolRouterSession struct { - Contract *IPoolRouter // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoolRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IPoolRouterCallerSession struct { - Contract *IPoolRouterCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IPoolRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IPoolRouterTransactorSession struct { - Contract *IPoolRouterTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IPoolRouterRaw is an auto generated low-level Go binding around an Ethereum contract. -type IPoolRouterRaw struct { - Contract *IPoolRouter // Generic contract binding to access the raw methods on -} - -// IPoolRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IPoolRouterCallerRaw struct { - Contract *IPoolRouterCaller // Generic read-only contract binding to access the raw methods on -} - -// IPoolRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IPoolRouterTransactorRaw struct { - Contract *IPoolRouterTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIPoolRouter creates a new instance of IPoolRouter, bound to a specific deployed contract. -func NewIPoolRouter(address common.Address, backend bind.ContractBackend) (*IPoolRouter, error) { - contract, err := bindIPoolRouter(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IPoolRouter{IPoolRouterCaller: IPoolRouterCaller{contract: contract}, IPoolRouterTransactor: IPoolRouterTransactor{contract: contract}, IPoolRouterFilterer: IPoolRouterFilterer{contract: contract}}, nil -} - -// NewIPoolRouterCaller creates a new read-only instance of IPoolRouter, bound to a specific deployed contract. -func NewIPoolRouterCaller(address common.Address, caller bind.ContractCaller) (*IPoolRouterCaller, error) { - contract, err := bindIPoolRouter(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IPoolRouterCaller{contract: contract}, nil -} - -// NewIPoolRouterTransactor creates a new write-only instance of IPoolRouter, bound to a specific deployed contract. -func NewIPoolRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoolRouterTransactor, error) { - contract, err := bindIPoolRouter(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IPoolRouterTransactor{contract: contract}, nil -} - -// NewIPoolRouterFilterer creates a new log filterer instance of IPoolRouter, bound to a specific deployed contract. -func NewIPoolRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoolRouterFilterer, error) { - contract, err := bindIPoolRouter(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IPoolRouterFilterer{contract: contract}, nil -} - -// bindIPoolRouter binds a generic wrapper to an already deployed contract. -func bindIPoolRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IPoolRouterMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoolRouter *IPoolRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoolRouter.Contract.IPoolRouterCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoolRouter *IPoolRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoolRouter.Contract.IPoolRouterTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoolRouter *IPoolRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoolRouter.Contract.IPoolRouterTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IPoolRouter *IPoolRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IPoolRouter.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IPoolRouter *IPoolRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IPoolRouter.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IPoolRouter *IPoolRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IPoolRouter.Contract.contract.Transact(opts, method, params...) -} - -// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. -// -// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterTransactor) ExactInput(opts *bind.TransactOpts, params IPoolRouterExactInputParams) (*types.Transaction, error) { - return _IPoolRouter.contract.Transact(opts, "exactInput", params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. -// -// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. -// -// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterTransactorSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. -// -// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterTransactor) ExactInputSingle(opts *bind.TransactOpts, params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.contract.Transact(opts, "exactInputSingle", params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. -// -// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. -// -// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) -func (_IPoolRouter *IPoolRouterTransactorSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. -// -// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterTransactor) ExactOutput(opts *bind.TransactOpts, params IPoolRouterExactOutputParams) (*types.Transaction, error) { - return _IPoolRouter.contract.Transact(opts, "exactOutput", params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. -// -// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. -// -// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. -// -// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterTransactor) ExactOutputSingle(opts *bind.TransactOpts, params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.contract.Transact(opts, "exactOutputSingle", params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. -// -// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. -// -// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) -func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { - return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) -} - -// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. -// -// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() -func (_IPoolRouter *IPoolRouterTransactor) Sweep(opts *bind.TransactOpts, token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { - return _IPoolRouter.contract.Transact(opts, "sweep", token, amount, recipient) -} - -// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. -// -// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() -func (_IPoolRouter *IPoolRouterSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { - return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) -} - -// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. -// -// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() -func (_IPoolRouter *IPoolRouterTransactorSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { - return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) -} diff --git a/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go b/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go deleted file mode 100644 index 183d90fe..00000000 --- a/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go +++ /dev/null @@ -1,695 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetainteractor - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInteractorMetaData contains all meta data concerning the ZetaInteractor contract. -var ZetaInteractorMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connector\",\"outputs\":[{\"internalType\":\"contractZetaConnector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"interactorsByChainId\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"contractAddress\",\"type\":\"bytes\"}],\"name\":\"setInteractorByChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZetaInteractorABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaInteractorMetaData.ABI instead. -var ZetaInteractorABI = ZetaInteractorMetaData.ABI - -// ZetaInteractor is an auto generated Go binding around an Ethereum contract. -type ZetaInteractor struct { - ZetaInteractorCaller // Read-only binding to the contract - ZetaInteractorTransactor // Write-only binding to the contract - ZetaInteractorFilterer // Log filterer for contract events -} - -// ZetaInteractorCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaInteractorCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaInteractorTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaInteractorFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInteractorSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaInteractorSession struct { - Contract *ZetaInteractor // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaInteractorCallerSession struct { - Contract *ZetaInteractorCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaInteractorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaInteractorTransactorSession struct { - Contract *ZetaInteractorTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInteractorRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaInteractorRaw struct { - Contract *ZetaInteractor // Generic contract binding to access the raw methods on -} - -// ZetaInteractorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaInteractorCallerRaw struct { - Contract *ZetaInteractorCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaInteractorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaInteractorTransactorRaw struct { - Contract *ZetaInteractorTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaInteractor creates a new instance of ZetaInteractor, bound to a specific deployed contract. -func NewZetaInteractor(address common.Address, backend bind.ContractBackend) (*ZetaInteractor, error) { - contract, err := bindZetaInteractor(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaInteractor{ZetaInteractorCaller: ZetaInteractorCaller{contract: contract}, ZetaInteractorTransactor: ZetaInteractorTransactor{contract: contract}, ZetaInteractorFilterer: ZetaInteractorFilterer{contract: contract}}, nil -} - -// NewZetaInteractorCaller creates a new read-only instance of ZetaInteractor, bound to a specific deployed contract. -func NewZetaInteractorCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorCaller, error) { - contract, err := bindZetaInteractor(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorCaller{contract: contract}, nil -} - -// NewZetaInteractorTransactor creates a new write-only instance of ZetaInteractor, bound to a specific deployed contract. -func NewZetaInteractorTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorTransactor, error) { - contract, err := bindZetaInteractor(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaInteractorTransactor{contract: contract}, nil -} - -// NewZetaInteractorFilterer creates a new log filterer instance of ZetaInteractor, bound to a specific deployed contract. -func NewZetaInteractorFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorFilterer, error) { - contract, err := bindZetaInteractor(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaInteractorFilterer{contract: contract}, nil -} - -// bindZetaInteractor binds a generic wrapper to an already deployed contract. -func bindZetaInteractor(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaInteractorMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractor *ZetaInteractorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractor.Contract.ZetaInteractorCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractor *ZetaInteractorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractor.Contract.ZetaInteractorTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractor *ZetaInteractorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractor.Contract.ZetaInteractorTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInteractor *ZetaInteractorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInteractor.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInteractor *ZetaInteractorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractor.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInteractor *ZetaInteractorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInteractor.Contract.contract.Transact(opts, method, params...) -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractor *ZetaInteractorCaller) Connector(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractor.contract.Call(opts, &out, "connector") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractor *ZetaInteractorSession) Connector() (common.Address, error) { - return _ZetaInteractor.Contract.Connector(&_ZetaInteractor.CallOpts) -} - -// Connector is a free data retrieval call binding the contract method 0x83f3084f. -// -// Solidity: function connector() view returns(address) -func (_ZetaInteractor *ZetaInteractorCallerSession) Connector() (common.Address, error) { - return _ZetaInteractor.Contract.Connector(&_ZetaInteractor.CallOpts) -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractor *ZetaInteractorCaller) InteractorsByChainId(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) { - var out []interface{} - err := _ZetaInteractor.contract.Call(opts, &out, "interactorsByChainId", arg0) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractor *ZetaInteractorSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { - return _ZetaInteractor.Contract.InteractorsByChainId(&_ZetaInteractor.CallOpts, arg0) -} - -// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. -// -// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) -func (_ZetaInteractor *ZetaInteractorCallerSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { - return _ZetaInteractor.Contract.InteractorsByChainId(&_ZetaInteractor.CallOpts, arg0) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractor *ZetaInteractorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractor.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractor *ZetaInteractorSession) Owner() (common.Address, error) { - return _ZetaInteractor.Contract.Owner(&_ZetaInteractor.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_ZetaInteractor *ZetaInteractorCallerSession) Owner() (common.Address, error) { - return _ZetaInteractor.Contract.Owner(&_ZetaInteractor.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractor *ZetaInteractorCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaInteractor.contract.Call(opts, &out, "pendingOwner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractor *ZetaInteractorSession) PendingOwner() (common.Address, error) { - return _ZetaInteractor.Contract.PendingOwner(&_ZetaInteractor.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_ZetaInteractor *ZetaInteractorCallerSession) PendingOwner() (common.Address, error) { - return _ZetaInteractor.Contract.PendingOwner(&_ZetaInteractor.CallOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractor *ZetaInteractorTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractor.contract.Transact(opts, "acceptOwnership") -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractor *ZetaInteractorSession) AcceptOwnership() (*types.Transaction, error) { - return _ZetaInteractor.Contract.AcceptOwnership(&_ZetaInteractor.TransactOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_ZetaInteractor *ZetaInteractorTransactorSession) AcceptOwnership() (*types.Transaction, error) { - return _ZetaInteractor.Contract.AcceptOwnership(&_ZetaInteractor.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractor *ZetaInteractorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInteractor.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractor *ZetaInteractorSession) RenounceOwnership() (*types.Transaction, error) { - return _ZetaInteractor.Contract.RenounceOwnership(&_ZetaInteractor.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_ZetaInteractor *ZetaInteractorTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _ZetaInteractor.Contract.RenounceOwnership(&_ZetaInteractor.TransactOpts) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractor *ZetaInteractorTransactor) SetInteractorByChainId(opts *bind.TransactOpts, destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractor.contract.Transact(opts, "setInteractorByChainId", destinationChainId, contractAddress) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractor *ZetaInteractorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractor.Contract.SetInteractorByChainId(&_ZetaInteractor.TransactOpts, destinationChainId, contractAddress) -} - -// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. -// -// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() -func (_ZetaInteractor *ZetaInteractorTransactorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { - return _ZetaInteractor.Contract.SetInteractorByChainId(&_ZetaInteractor.TransactOpts, destinationChainId, contractAddress) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractor *ZetaInteractorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractor.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractor *ZetaInteractorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractor.Contract.TransferOwnership(&_ZetaInteractor.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_ZetaInteractor *ZetaInteractorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _ZetaInteractor.Contract.TransferOwnership(&_ZetaInteractor.TransactOpts, newOwner) -} - -// ZetaInteractorOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ZetaInteractor contract. -type ZetaInteractorOwnershipTransferStartedIterator struct { - Event *ZetaInteractorOwnershipTransferStarted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaInteractorOwnershipTransferStartedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaInteractorOwnershipTransferStartedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaInteractorOwnershipTransferStartedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaInteractorOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ZetaInteractor contract. -type ZetaInteractorOwnershipTransferStarted struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorOwnershipTransferStartedIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractor.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ZetaInteractorOwnershipTransferStartedIterator{contract: _ZetaInteractor.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ZetaInteractorOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractor.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaInteractorOwnershipTransferStarted) - if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) ParseOwnershipTransferStarted(log types.Log) (*ZetaInteractorOwnershipTransferStarted, error) { - event := new(ZetaInteractorOwnershipTransferStarted) - if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaInteractorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ZetaInteractor contract. -type ZetaInteractorOwnershipTransferredIterator struct { - Event *ZetaInteractorOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaInteractorOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaInteractorOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaInteractorOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaInteractorOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaInteractorOwnershipTransferred represents a OwnershipTransferred event raised by the ZetaInteractor contract. -type ZetaInteractorOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractor.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &ZetaInteractorOwnershipTransferredIterator{contract: _ZetaInteractor.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ZetaInteractorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _ZetaInteractor.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaInteractorOwnershipTransferred) - if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_ZetaInteractor *ZetaInteractorFilterer) ParseOwnershipTransferred(log types.Log) (*ZetaInteractorOwnershipTransferred, error) { - event := new(ZetaInteractorOwnershipTransferred) - if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go deleted file mode 100644 index df6236ee..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go +++ /dev/null @@ -1,263 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerpancakev3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ISwapRouterPancakeExactInputParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterPancakeExactInputParams struct { - Path []byte - Recipient common.Address - AmountIn *big.Int - AmountOutMinimum *big.Int -} - -// ISwapRouterPancakeExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterPancakeExactInputSingleParams struct { - TokenIn common.Address - TokenOut common.Address - Fee *big.Int - Recipient common.Address - AmountIn *big.Int - AmountOutMinimum *big.Int - SqrtPriceLimitX96 *big.Int -} - -// ISwapRouterPancakeMetaData contains all meta data concerning the ISwapRouterPancake contract. -var ISwapRouterPancakeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouterPancake.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouterPancake.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ISwapRouterPancakeABI is the input ABI used to generate the binding from. -// Deprecated: Use ISwapRouterPancakeMetaData.ABI instead. -var ISwapRouterPancakeABI = ISwapRouterPancakeMetaData.ABI - -// ISwapRouterPancake is an auto generated Go binding around an Ethereum contract. -type ISwapRouterPancake struct { - ISwapRouterPancakeCaller // Read-only binding to the contract - ISwapRouterPancakeTransactor // Write-only binding to the contract - ISwapRouterPancakeFilterer // Log filterer for contract events -} - -// ISwapRouterPancakeCaller is an auto generated read-only Go binding around an Ethereum contract. -type ISwapRouterPancakeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterPancakeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ISwapRouterPancakeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterPancakeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ISwapRouterPancakeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterPancakeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ISwapRouterPancakeSession struct { - Contract *ISwapRouterPancake // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISwapRouterPancakeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ISwapRouterPancakeCallerSession struct { - Contract *ISwapRouterPancakeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ISwapRouterPancakeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ISwapRouterPancakeTransactorSession struct { - Contract *ISwapRouterPancakeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISwapRouterPancakeRaw is an auto generated low-level Go binding around an Ethereum contract. -type ISwapRouterPancakeRaw struct { - Contract *ISwapRouterPancake // Generic contract binding to access the raw methods on -} - -// ISwapRouterPancakeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ISwapRouterPancakeCallerRaw struct { - Contract *ISwapRouterPancakeCaller // Generic read-only contract binding to access the raw methods on -} - -// ISwapRouterPancakeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ISwapRouterPancakeTransactorRaw struct { - Contract *ISwapRouterPancakeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewISwapRouterPancake creates a new instance of ISwapRouterPancake, bound to a specific deployed contract. -func NewISwapRouterPancake(address common.Address, backend bind.ContractBackend) (*ISwapRouterPancake, error) { - contract, err := bindISwapRouterPancake(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ISwapRouterPancake{ISwapRouterPancakeCaller: ISwapRouterPancakeCaller{contract: contract}, ISwapRouterPancakeTransactor: ISwapRouterPancakeTransactor{contract: contract}, ISwapRouterPancakeFilterer: ISwapRouterPancakeFilterer{contract: contract}}, nil -} - -// NewISwapRouterPancakeCaller creates a new read-only instance of ISwapRouterPancake, bound to a specific deployed contract. -func NewISwapRouterPancakeCaller(address common.Address, caller bind.ContractCaller) (*ISwapRouterPancakeCaller, error) { - contract, err := bindISwapRouterPancake(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ISwapRouterPancakeCaller{contract: contract}, nil -} - -// NewISwapRouterPancakeTransactor creates a new write-only instance of ISwapRouterPancake, bound to a specific deployed contract. -func NewISwapRouterPancakeTransactor(address common.Address, transactor bind.ContractTransactor) (*ISwapRouterPancakeTransactor, error) { - contract, err := bindISwapRouterPancake(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ISwapRouterPancakeTransactor{contract: contract}, nil -} - -// NewISwapRouterPancakeFilterer creates a new log filterer instance of ISwapRouterPancake, bound to a specific deployed contract. -func NewISwapRouterPancakeFilterer(address common.Address, filterer bind.ContractFilterer) (*ISwapRouterPancakeFilterer, error) { - contract, err := bindISwapRouterPancake(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ISwapRouterPancakeFilterer{contract: contract}, nil -} - -// bindISwapRouterPancake binds a generic wrapper to an already deployed contract. -func bindISwapRouterPancake(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ISwapRouterPancakeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISwapRouterPancake.Contract.ISwapRouterPancakeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISwapRouterPancake *ISwapRouterPancakeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISwapRouterPancake.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.contract.Transact(opts, method, params...) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. -// -// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInput(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { - return _ISwapRouterPancake.contract.Transact(opts, "exactInput", params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. -// -// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. -// -// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInputSingle(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouterPancake.contract.Transact(opts, "exactInputSingle", params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouterPancake.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouterPancake *ISwapRouterPancakeSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go deleted file mode 100644 index 9268e000..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerpancakev3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// WETH9MetaData contains all meta data concerning the WETH9 contract. -var WETH9MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// WETH9ABI is the input ABI used to generate the binding from. -// Deprecated: Use WETH9MetaData.ABI instead. -var WETH9ABI = WETH9MetaData.ABI - -// WETH9 is an auto generated Go binding around an Ethereum contract. -type WETH9 struct { - WETH9Caller // Read-only binding to the contract - WETH9Transactor // Write-only binding to the contract - WETH9Filterer // Log filterer for contract events -} - -// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. -type WETH9Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. -type WETH9Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WETH9Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type WETH9Session struct { - Contract *WETH9 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type WETH9CallerSession struct { - Contract *WETH9Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type WETH9TransactorSession struct { - Contract *WETH9Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. -type WETH9Raw struct { - Contract *WETH9 // Generic contract binding to access the raw methods on -} - -// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WETH9CallerRaw struct { - Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on -} - -// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WETH9TransactorRaw struct { - Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. -func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { - contract, err := bindWETH9(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil -} - -// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { - contract, err := bindWETH9(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &WETH9Caller{contract: contract}, nil -} - -// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { - contract, err := bindWETH9(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &WETH9Transactor{contract: contract}, nil -} - -// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. -func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { - contract, err := bindWETH9(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &WETH9Filterer{contract: contract}, nil -} - -// bindWETH9 binds a generic wrapper to an already deployed contract. -func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := WETH9MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transact(opts, method, params...) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "withdraw", wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go deleted file mode 100644 index 53cdb729..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go +++ /dev/null @@ -1,1067 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerpancakev3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerPancakeV3MetaData contains all meta data concerning the ZetaTokenConsumerPancakeV3 contract. -var ZetaTokenConsumerPancakeV3MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pancakeV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"zetaPoolFee_\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"tokenPoolFee_\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pancakeV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouterPancake\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Factory\",\"outputs\":[{\"internalType\":\"contractIUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea264697066735822122027f90d12abe6bc83d01268f9d1f2b1f06cb3a1291fe43afcacc978ec0c07420664736f6c63430008070033", -} - -// ZetaTokenConsumerPancakeV3ABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.ABI instead. -var ZetaTokenConsumerPancakeV3ABI = ZetaTokenConsumerPancakeV3MetaData.ABI - -// ZetaTokenConsumerPancakeV3Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.Bin instead. -var ZetaTokenConsumerPancakeV3Bin = ZetaTokenConsumerPancakeV3MetaData.Bin - -// DeployZetaTokenConsumerPancakeV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerPancakeV3 to it. -func DeployZetaTokenConsumerPancakeV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, pancakeV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerPancakeV3, error) { - parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerPancakeV3Bin), backend, zetaToken_, pancakeV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil -} - -// ZetaTokenConsumerPancakeV3 is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3 struct { - ZetaTokenConsumerPancakeV3Caller // Read-only binding to the contract - ZetaTokenConsumerPancakeV3Transactor // Write-only binding to the contract - ZetaTokenConsumerPancakeV3Filterer // Log filterer for contract events -} - -// ZetaTokenConsumerPancakeV3Caller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerPancakeV3Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerPancakeV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerPancakeV3Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerPancakeV3Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerPancakeV3Session struct { - Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerPancakeV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerPancakeV3CallerSession struct { - Contract *ZetaTokenConsumerPancakeV3Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerPancakeV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerPancakeV3TransactorSession struct { - Contract *ZetaTokenConsumerPancakeV3Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerPancakeV3Raw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3Raw struct { - Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerPancakeV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3CallerRaw struct { - Contract *ZetaTokenConsumerPancakeV3Caller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerPancakeV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerPancakeV3TransactorRaw struct { - Contract *ZetaTokenConsumerPancakeV3Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerPancakeV3 creates a new instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. -func NewZetaTokenConsumerPancakeV3(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerPancakeV3, error) { - contract, err := bindZetaTokenConsumerPancakeV3(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerPancakeV3Caller creates a new read-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. -func NewZetaTokenConsumerPancakeV3Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerPancakeV3Caller, error) { - contract, err := bindZetaTokenConsumerPancakeV3(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3Caller{contract: contract}, nil -} - -// NewZetaTokenConsumerPancakeV3Transactor creates a new write-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. -func NewZetaTokenConsumerPancakeV3Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerPancakeV3Transactor, error) { - contract, err := bindZetaTokenConsumerPancakeV3(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3Transactor{contract: contract}, nil -} - -// NewZetaTokenConsumerPancakeV3Filterer creates a new log filterer instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. -func NewZetaTokenConsumerPancakeV3Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerPancakeV3Filterer, error) { - contract, err := bindZetaTokenConsumerPancakeV3(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3Filterer{contract: contract}, nil -} - -// bindZetaTokenConsumerPancakeV3 binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerPancakeV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerPancakeV3.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.contract.Transact(opts, method, params...) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "WETH9Address") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. -// -// Solidity: function pancakeV3Router() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) PancakeV3Router(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "pancakeV3Router") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. -// -// Solidity: function pancakeV3Router() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) PancakeV3Router() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. -// -// Solidity: function pancakeV3Router() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) PancakeV3Router() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) TokenPoolFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "tokenPoolFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) TokenPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) TokenPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "uniswapV3Factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) UniswapV3Factory() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) UniswapV3Factory() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaPoolFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaPoolFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) -} - -// ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerPancakeV3EthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerPancakeV3EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3EthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3EthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3EthExchangedForZeta, error) { - event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerPancakeV3TokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerPancakeV3TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3TokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3TokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3TokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerPancakeV3ZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerPancakeV3ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3ZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerPancakeV3ZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerPancakeV3ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerPancakeV3 contract. -type ZetaTokenConsumerPancakeV3ZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) - if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go deleted file mode 100644 index 65658391..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerpancakev3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerUniV3ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV3Errors contract. -var ZetaTokenConsumerUniV3ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", -} - -// ZetaTokenConsumerUniV3ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerUniV3ErrorsMetaData.ABI instead. -var ZetaTokenConsumerUniV3ErrorsABI = ZetaTokenConsumerUniV3ErrorsMetaData.ABI - -// ZetaTokenConsumerUniV3Errors is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3Errors struct { - ZetaTokenConsumerUniV3ErrorsCaller // Read-only binding to the contract - ZetaTokenConsumerUniV3ErrorsTransactor // Write-only binding to the contract - ZetaTokenConsumerUniV3ErrorsFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerUniV3ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerUniV3ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerUniV3ErrorsSession struct { - Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerUniV3ErrorsCallerSession struct { - Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerUniV3ErrorsTransactorSession struct { - Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsRaw struct { - Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsCallerRaw struct { - Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsTransactorRaw struct { - Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerUniV3Errors creates a new instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3Errors, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3Errors{ZetaTokenConsumerUniV3ErrorsCaller: ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV3ErrorsTransactor: ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV3ErrorsFilterer: ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3ErrorsCaller, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3ErrorsTransactor, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3ErrorsFilterer, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerUniV3Errors binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerUniV3Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerUniV3ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go deleted file mode 100644 index b81ea215..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go +++ /dev/null @@ -1,265 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumertrident - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// WETH9MetaData contains all meta data concerning the WETH9 contract. -var WETH9MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// WETH9ABI is the input ABI used to generate the binding from. -// Deprecated: Use WETH9MetaData.ABI instead. -var WETH9ABI = WETH9MetaData.ABI - -// WETH9 is an auto generated Go binding around an Ethereum contract. -type WETH9 struct { - WETH9Caller // Read-only binding to the contract - WETH9Transactor // Write-only binding to the contract - WETH9Filterer // Log filterer for contract events -} - -// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. -type WETH9Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. -type WETH9Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WETH9Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type WETH9Session struct { - Contract *WETH9 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type WETH9CallerSession struct { - Contract *WETH9Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type WETH9TransactorSession struct { - Contract *WETH9Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. -type WETH9Raw struct { - Contract *WETH9 // Generic contract binding to access the raw methods on -} - -// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WETH9CallerRaw struct { - Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on -} - -// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WETH9TransactorRaw struct { - Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. -func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { - contract, err := bindWETH9(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil -} - -// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { - contract, err := bindWETH9(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &WETH9Caller{contract: contract}, nil -} - -// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { - contract, err := bindWETH9(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &WETH9Transactor{contract: contract}, nil -} - -// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. -func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { - contract, err := bindWETH9(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &WETH9Filterer{contract: contract}, nil -} - -// bindWETH9 binds a generic wrapper to an already deployed contract. -func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := WETH9MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transact(opts, method, params...) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "deposit") -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { - return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { - return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) -} - -// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. -// -// Solidity: function depositTo(address to) payable returns() -func (_WETH9 *WETH9Transactor) DepositTo(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "depositTo", to) -} - -// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. -// -// Solidity: function depositTo(address to) payable returns() -func (_WETH9 *WETH9Session) DepositTo(to common.Address) (*types.Transaction, error) { - return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) -} - -// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. -// -// Solidity: function depositTo(address to) payable returns() -func (_WETH9 *WETH9TransactorSession) DepositTo(to common.Address) (*types.Transaction, error) { - return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "withdraw", wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. -// -// Solidity: function withdrawTo(address to, uint256 value) returns() -func (_WETH9 *WETH9Transactor) WithdrawTo(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "withdrawTo", to, value) -} - -// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. -// -// Solidity: function withdrawTo(address to, uint256 value) returns() -func (_WETH9 *WETH9Session) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) -} - -// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. -// -// Solidity: function withdrawTo(address to, uint256 value) returns() -func (_WETH9 *WETH9TransactorSession) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go deleted file mode 100644 index c6938a39..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go +++ /dev/null @@ -1,974 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumertrident - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerTridentMetaData contains all meta data concerning the ZetaTokenConsumerTrident contract. -var ZetaTokenConsumerTridentMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolFactory\",\"outputs\":[{\"internalType\":\"contractConcentratedLiquidityPoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tridentRouter\",\"outputs\":[{\"internalType\":\"contractIPoolRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea26469706673582212207db2a1e3db417b41f7491218078aed9cfec4ce5d3704cc0cd4a870ca5e85a28864736f6c63430008070033", -} - -// ZetaTokenConsumerTridentABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerTridentMetaData.ABI instead. -var ZetaTokenConsumerTridentABI = ZetaTokenConsumerTridentMetaData.ABI - -// ZetaTokenConsumerTridentBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaTokenConsumerTridentMetaData.Bin instead. -var ZetaTokenConsumerTridentBin = ZetaTokenConsumerTridentMetaData.Bin - -// DeployZetaTokenConsumerTrident deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerTrident to it. -func DeployZetaTokenConsumerTrident(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, WETH9Address_ common.Address, poolFactory_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerTrident, error) { - parsed, err := ZetaTokenConsumerTridentMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerTridentBin), backend, zetaToken_, uniswapV3Router_, WETH9Address_, poolFactory_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil -} - -// ZetaTokenConsumerTrident is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerTrident struct { - ZetaTokenConsumerTridentCaller // Read-only binding to the contract - ZetaTokenConsumerTridentTransactor // Write-only binding to the contract - ZetaTokenConsumerTridentFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerTridentCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerTridentFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerTridentSession struct { - Contract *ZetaTokenConsumerTrident // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerTridentCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerTridentCallerSession struct { - Contract *ZetaTokenConsumerTridentCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerTridentTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerTridentTransactorSession struct { - Contract *ZetaTokenConsumerTridentTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerTridentRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentRaw struct { - Contract *ZetaTokenConsumerTrident // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerTridentCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentCallerRaw struct { - Contract *ZetaTokenConsumerTridentCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerTridentTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentTransactorRaw struct { - Contract *ZetaTokenConsumerTridentTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerTrident creates a new instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. -func NewZetaTokenConsumerTrident(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTrident, error) { - contract, err := bindZetaTokenConsumerTrident(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerTridentCaller creates a new read-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentCaller, error) { - contract, err := bindZetaTokenConsumerTrident(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerTridentTransactor creates a new write-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentTransactor, error) { - contract, err := bindZetaTokenConsumerTrident(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerTridentFilterer creates a new log filterer instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentFilterer, error) { - contract, err := bindZetaTokenConsumerTrident(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerTrident binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerTrident(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerTridentMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerTrident.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.contract.Transact(opts, method, params...) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) -} - -// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. -// -// Solidity: function poolFactory() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) PoolFactory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "poolFactory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. -// -// Solidity: function poolFactory() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) PoolFactory() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) -} - -// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. -// -// Solidity: function poolFactory() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) PoolFactory() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) -} - -// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. -// -// Solidity: function tridentRouter() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) TridentRouter(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "tridentRouter") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. -// -// Solidity: function tridentRouter() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) TridentRouter() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) -} - -// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. -// -// Solidity: function tridentRouter() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) TridentRouter() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) -} - -// ZetaTokenConsumerTridentEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentEthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerTridentEthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerTridentEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentEthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentEthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentEthExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentEthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerTridentEthExchangedForZeta) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentEthExchangedForZeta, error) { - event := new(ZetaTokenConsumerTridentEthExchangedForZeta) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerTridentTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentTokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerTridentTokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerTridentTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentTokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentTokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentTokenExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentTokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerTridentTokenExchangedForZeta) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentTokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerTridentTokenExchangedForZeta) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerTridentZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerTridentZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerTridentZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentZetaExchangedForEthIterator{contract: _ZetaTokenConsumerTrident.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerTridentZetaExchangedForEth) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerTridentZetaExchangedForEth) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerTridentZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerTridentZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerTridentZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerTridentZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerTrident contract. -type ZetaTokenConsumerTridentZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerTrident.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerTridentZetaExchangedForToken) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerTridentZetaExchangedForToken) - if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go b/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go deleted file mode 100644 index da424409..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumertrident - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerTridentErrorsMetaData contains all meta data concerning the ZetaTokenConsumerTridentErrors contract. -var ZetaTokenConsumerTridentErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", -} - -// ZetaTokenConsumerTridentErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerTridentErrorsMetaData.ABI instead. -var ZetaTokenConsumerTridentErrorsABI = ZetaTokenConsumerTridentErrorsMetaData.ABI - -// ZetaTokenConsumerTridentErrors is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrors struct { - ZetaTokenConsumerTridentErrorsCaller // Read-only binding to the contract - ZetaTokenConsumerTridentErrorsTransactor // Write-only binding to the contract - ZetaTokenConsumerTridentErrorsFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerTridentErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerTridentErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerTridentErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerTridentErrorsSession struct { - Contract *ZetaTokenConsumerTridentErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerTridentErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerTridentErrorsCallerSession struct { - Contract *ZetaTokenConsumerTridentErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerTridentErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerTridentErrorsTransactorSession struct { - Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerTridentErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrorsRaw struct { - Contract *ZetaTokenConsumerTridentErrors // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerTridentErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrorsCallerRaw struct { - Contract *ZetaTokenConsumerTridentErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerTridentErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerTridentErrorsTransactorRaw struct { - Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerTridentErrors creates a new instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentErrors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTridentErrors, error) { - contract, err := bindZetaTokenConsumerTridentErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentErrors{ZetaTokenConsumerTridentErrorsCaller: ZetaTokenConsumerTridentErrorsCaller{contract: contract}, ZetaTokenConsumerTridentErrorsTransactor: ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, ZetaTokenConsumerTridentErrorsFilterer: ZetaTokenConsumerTridentErrorsFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerTridentErrorsCaller creates a new read-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentErrorsCaller, error) { - contract, err := bindZetaTokenConsumerTridentErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentErrorsCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerTridentErrorsTransactor creates a new write-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentErrorsTransactor, error) { - contract, err := bindZetaTokenConsumerTridentErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerTridentErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerTridentErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentErrorsFilterer, error) { - contract, err := bindZetaTokenConsumerTridentErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerTridentErrorsFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerTridentErrors binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerTridentErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerTridentErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerTridentErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerTridentErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerTridentErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go deleted file mode 100644 index 04ca8867..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go +++ /dev/null @@ -1,891 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumeruniv2 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerUniV2MetaData contains all meta data concerning the ZetaTokenConsumerUniV2 contract. -var ZetaTokenConsumerUniV2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea26469706673582212203b367a485c1c8365253eb443a67a0af9e708d5f18be04ddce696d86f9d990a5364736f6c63430008070033", -} - -// ZetaTokenConsumerUniV2ABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerUniV2MetaData.ABI instead. -var ZetaTokenConsumerUniV2ABI = ZetaTokenConsumerUniV2MetaData.ABI - -// ZetaTokenConsumerUniV2Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaTokenConsumerUniV2MetaData.Bin instead. -var ZetaTokenConsumerUniV2Bin = ZetaTokenConsumerUniV2MetaData.Bin - -// DeployZetaTokenConsumerUniV2 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerUniV2 to it. -func DeployZetaTokenConsumerUniV2(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV2Router_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV2, error) { - parsed, err := ZetaTokenConsumerUniV2MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV2Bin), backend, zetaToken_, uniswapV2Router_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaTokenConsumerUniV2{ZetaTokenConsumerUniV2Caller: ZetaTokenConsumerUniV2Caller{contract: contract}, ZetaTokenConsumerUniV2Transactor: ZetaTokenConsumerUniV2Transactor{contract: contract}, ZetaTokenConsumerUniV2Filterer: ZetaTokenConsumerUniV2Filterer{contract: contract}}, nil -} - -// ZetaTokenConsumerUniV2 is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2 struct { - ZetaTokenConsumerUniV2Caller // Read-only binding to the contract - ZetaTokenConsumerUniV2Transactor // Write-only binding to the contract - ZetaTokenConsumerUniV2Filterer // Log filterer for contract events -} - -// ZetaTokenConsumerUniV2Caller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerUniV2Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerUniV2Session struct { - Contract *ZetaTokenConsumerUniV2 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV2CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerUniV2CallerSession struct { - Contract *ZetaTokenConsumerUniV2Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerUniV2TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerUniV2TransactorSession struct { - Contract *ZetaTokenConsumerUniV2Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV2Raw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2Raw struct { - Contract *ZetaTokenConsumerUniV2 // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2CallerRaw struct { - Contract *ZetaTokenConsumerUniV2Caller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2TransactorRaw struct { - Contract *ZetaTokenConsumerUniV2Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerUniV2 creates a new instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV2, error) { - contract, err := bindZetaTokenConsumerUniV2(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2{ZetaTokenConsumerUniV2Caller: ZetaTokenConsumerUniV2Caller{contract: contract}, ZetaTokenConsumerUniV2Transactor: ZetaTokenConsumerUniV2Transactor{contract: contract}, ZetaTokenConsumerUniV2Filterer: ZetaTokenConsumerUniV2Filterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerUniV2Caller creates a new read-only instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV2Caller, error) { - contract, err := bindZetaTokenConsumerUniV2(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2Caller{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV2Transactor creates a new write-only instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV2Transactor, error) { - contract, err := bindZetaTokenConsumerUniV2(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2Transactor{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV2Filterer creates a new log filterer instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV2Filterer, error) { - contract, err := bindZetaTokenConsumerUniV2(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2Filterer{contract: contract}, nil -} - -// bindZetaTokenConsumerUniV2 binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerUniV2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerUniV2MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV2.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.contract.Transact(opts, method, params...) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV2.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV2.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerUniV2.Contract.ZetaToken(&_ZetaTokenConsumerUniV2.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerSession) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerUniV2.Contract.ZetaToken(&_ZetaTokenConsumerUniV2.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// ZetaTokenConsumerUniV2EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2EthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerUniV2EthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV2EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2EthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2EthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2EthExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2EthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV2EthExchangedForZeta) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV2EthExchangedForZeta, error) { - event := new(ZetaTokenConsumerUniV2EthExchangedForZeta) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV2TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2TokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerUniV2TokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV2TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2TokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2TokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2TokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV2TokenExchangedForZeta) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV2TokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerUniV2TokenExchangedForZeta) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV2ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2ZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerUniV2ZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV2ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2ZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2ZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2ZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV2ZetaExchangedForEth) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerUniV2ZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerUniV2ZetaExchangedForEth) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerUniV2ZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV2ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerUniV2 contract. -type ZetaTokenConsumerUniV2ZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2ZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV2ZetaExchangedForToken) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerUniV2ZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerUniV2ZetaExchangedForToken) - if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go deleted file mode 100644 index a15bafe9..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumeruniv2 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerUniV2ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV2Errors contract. -var ZetaTokenConsumerUniV2ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"}]", -} - -// ZetaTokenConsumerUniV2ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerUniV2ErrorsMetaData.ABI instead. -var ZetaTokenConsumerUniV2ErrorsABI = ZetaTokenConsumerUniV2ErrorsMetaData.ABI - -// ZetaTokenConsumerUniV2Errors is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2Errors struct { - ZetaTokenConsumerUniV2ErrorsCaller // Read-only binding to the contract - ZetaTokenConsumerUniV2ErrorsTransactor // Write-only binding to the contract - ZetaTokenConsumerUniV2ErrorsFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerUniV2ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerUniV2ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV2ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerUniV2ErrorsSession struct { - Contract *ZetaTokenConsumerUniV2Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV2ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerUniV2ErrorsCallerSession struct { - Contract *ZetaTokenConsumerUniV2ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerUniV2ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerUniV2ErrorsTransactorSession struct { - Contract *ZetaTokenConsumerUniV2ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV2ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2ErrorsRaw struct { - Contract *ZetaTokenConsumerUniV2Errors // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV2ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2ErrorsCallerRaw struct { - Contract *ZetaTokenConsumerUniV2ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV2ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV2ErrorsTransactorRaw struct { - Contract *ZetaTokenConsumerUniV2ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerUniV2Errors creates a new instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV2Errors, error) { - contract, err := bindZetaTokenConsumerUniV2Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2Errors{ZetaTokenConsumerUniV2ErrorsCaller: ZetaTokenConsumerUniV2ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV2ErrorsTransactor: ZetaTokenConsumerUniV2ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV2ErrorsFilterer: ZetaTokenConsumerUniV2ErrorsFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerUniV2ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV2ErrorsCaller, error) { - contract, err := bindZetaTokenConsumerUniV2Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2ErrorsCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV2ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV2ErrorsTransactor, error) { - contract, err := bindZetaTokenConsumerUniV2Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2ErrorsTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV2ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV2ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV2ErrorsFilterer, error) { - contract, err := bindZetaTokenConsumerUniV2Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV2ErrorsFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerUniV2Errors binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerUniV2Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerUniV2ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV2Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV2Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go deleted file mode 100644 index f40eaea7..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumeruniv3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// WETH9MetaData contains all meta data concerning the WETH9 contract. -var WETH9MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// WETH9ABI is the input ABI used to generate the binding from. -// Deprecated: Use WETH9MetaData.ABI instead. -var WETH9ABI = WETH9MetaData.ABI - -// WETH9 is an auto generated Go binding around an Ethereum contract. -type WETH9 struct { - WETH9Caller // Read-only binding to the contract - WETH9Transactor // Write-only binding to the contract - WETH9Filterer // Log filterer for contract events -} - -// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. -type WETH9Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. -type WETH9Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WETH9Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type WETH9Session struct { - Contract *WETH9 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type WETH9CallerSession struct { - Contract *WETH9Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type WETH9TransactorSession struct { - Contract *WETH9Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. -type WETH9Raw struct { - Contract *WETH9 // Generic contract binding to access the raw methods on -} - -// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WETH9CallerRaw struct { - Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on -} - -// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WETH9TransactorRaw struct { - Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. -func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { - contract, err := bindWETH9(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil -} - -// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { - contract, err := bindWETH9(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &WETH9Caller{contract: contract}, nil -} - -// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { - contract, err := bindWETH9(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &WETH9Transactor{contract: contract}, nil -} - -// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. -func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { - contract, err := bindWETH9(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &WETH9Filterer{contract: contract}, nil -} - -// bindWETH9 binds a generic wrapper to an already deployed contract. -func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := WETH9MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transact(opts, method, params...) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "withdraw", wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go deleted file mode 100644 index f7af068c..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go +++ /dev/null @@ -1,1067 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumeruniv3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerUniV3MetaData contains all meta data concerning the ZetaTokenConsumerUniV3 contract. -var ZetaTokenConsumerUniV3MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"zetaPoolFee_\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"tokenPoolFee_\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Factory\",\"outputs\":[{\"internalType\":\"contractIUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea26469706673582212205b01f0993d1aca09a588ccda9fc1b26d546e37338ba85cdc92932152534aeee064736f6c63430008070033", -} - -// ZetaTokenConsumerUniV3ABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerUniV3MetaData.ABI instead. -var ZetaTokenConsumerUniV3ABI = ZetaTokenConsumerUniV3MetaData.ABI - -// ZetaTokenConsumerUniV3Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaTokenConsumerUniV3MetaData.Bin instead. -var ZetaTokenConsumerUniV3Bin = ZetaTokenConsumerUniV3MetaData.Bin - -// DeployZetaTokenConsumerUniV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerUniV3 to it. -func DeployZetaTokenConsumerUniV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV3, error) { - parsed, err := ZetaTokenConsumerUniV3MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV3Bin), backend, zetaToken_, uniswapV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaTokenConsumerUniV3{ZetaTokenConsumerUniV3Caller: ZetaTokenConsumerUniV3Caller{contract: contract}, ZetaTokenConsumerUniV3Transactor: ZetaTokenConsumerUniV3Transactor{contract: contract}, ZetaTokenConsumerUniV3Filterer: ZetaTokenConsumerUniV3Filterer{contract: contract}}, nil -} - -// ZetaTokenConsumerUniV3 is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3 struct { - ZetaTokenConsumerUniV3Caller // Read-only binding to the contract - ZetaTokenConsumerUniV3Transactor // Write-only binding to the contract - ZetaTokenConsumerUniV3Filterer // Log filterer for contract events -} - -// ZetaTokenConsumerUniV3Caller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerUniV3Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerUniV3Session struct { - Contract *ZetaTokenConsumerUniV3 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerUniV3CallerSession struct { - Contract *ZetaTokenConsumerUniV3Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerUniV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerUniV3TransactorSession struct { - Contract *ZetaTokenConsumerUniV3Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3Raw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3Raw struct { - Contract *ZetaTokenConsumerUniV3 // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3CallerRaw struct { - Contract *ZetaTokenConsumerUniV3Caller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3TransactorRaw struct { - Contract *ZetaTokenConsumerUniV3Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerUniV3 creates a new instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3, error) { - contract, err := bindZetaTokenConsumerUniV3(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3{ZetaTokenConsumerUniV3Caller: ZetaTokenConsumerUniV3Caller{contract: contract}, ZetaTokenConsumerUniV3Transactor: ZetaTokenConsumerUniV3Transactor{contract: contract}, ZetaTokenConsumerUniV3Filterer: ZetaTokenConsumerUniV3Filterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerUniV3Caller creates a new read-only instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3Caller, error) { - contract, err := bindZetaTokenConsumerUniV3(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3Caller{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3Transactor creates a new write-only instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3Transactor, error) { - contract, err := bindZetaTokenConsumerUniV3(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3Transactor{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3Filterer creates a new log filterer instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3Filterer, error) { - contract, err := bindZetaTokenConsumerUniV3(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3Filterer{contract: contract}, nil -} - -// bindZetaTokenConsumerUniV3 binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerUniV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerUniV3MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.contract.Transact(opts, method, params...) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "WETH9Address") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) TokenPoolFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "tokenPoolFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) TokenPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerUniV3.Contract.TokenPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. -// -// Solidity: function tokenPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) TokenPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerUniV3.Contract.TokenPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "uniswapV3Factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) UniswapV3Factory() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. -// -// Solidity: function uniswapV3Factory() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) UniswapV3Factory() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. -// -// Solidity: function uniswapV3Router() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) UniswapV3Router(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "uniswapV3Router") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. -// -// Solidity: function uniswapV3Router() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) UniswapV3Router() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.UniswapV3Router(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. -// -// Solidity: function uniswapV3Router() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) UniswapV3Router() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.UniswapV3Router(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) ZetaPoolFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "zetaPoolFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) ZetaPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. -// -// Solidity: function zetaPoolFee() view returns(uint24) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) ZetaPoolFee() (*big.Int, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaToken(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) ZetaToken() (common.Address, error) { - return _ZetaTokenConsumerUniV3.Contract.ZetaToken(&_ZetaTokenConsumerUniV3.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.Receive(&_ZetaTokenConsumerUniV3.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3.Contract.Receive(&_ZetaTokenConsumerUniV3.TransactOpts) -} - -// ZetaTokenConsumerUniV3EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3EthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerUniV3EthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3EthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV3EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3EthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3EthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3EthExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3EthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV3EthExchangedForZeta) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV3EthExchangedForZeta, error) { - event := new(ZetaTokenConsumerUniV3EthExchangedForZeta) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV3TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3TokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerUniV3TokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3TokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV3TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3TokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3TokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3TokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV3TokenExchangedForZeta) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV3TokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerUniV3TokenExchangedForZeta) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV3ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3ZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerUniV3ZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV3ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3ZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3ZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3ZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV3ZetaExchangedForEth) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerUniV3ZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerUniV3ZetaExchangedForEth) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerUniV3ZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerUniV3ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerUniV3 contract. -type ZetaTokenConsumerUniV3ZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3ZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerUniV3ZetaExchangedForToken) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerUniV3ZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerUniV3ZetaExchangedForToken) - if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go b/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go deleted file mode 100644 index efa2ded2..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumeruniv3 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerUniV3ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV3Errors contract. -var ZetaTokenConsumerUniV3ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", -} - -// ZetaTokenConsumerUniV3ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerUniV3ErrorsMetaData.ABI instead. -var ZetaTokenConsumerUniV3ErrorsABI = ZetaTokenConsumerUniV3ErrorsMetaData.ABI - -// ZetaTokenConsumerUniV3Errors is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3Errors struct { - ZetaTokenConsumerUniV3ErrorsCaller // Read-only binding to the contract - ZetaTokenConsumerUniV3ErrorsTransactor // Write-only binding to the contract - ZetaTokenConsumerUniV3ErrorsFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerUniV3ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerUniV3ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerUniV3ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerUniV3ErrorsSession struct { - Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerUniV3ErrorsCallerSession struct { - Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerUniV3ErrorsTransactorSession struct { - Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerUniV3ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsRaw struct { - Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsCallerRaw struct { - Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerUniV3ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerUniV3ErrorsTransactorRaw struct { - Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerUniV3Errors creates a new instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3Errors, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3Errors{ZetaTokenConsumerUniV3ErrorsCaller: ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV3ErrorsTransactor: ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV3ErrorsFilterer: ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3ErrorsCaller, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3ErrorsTransactor, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerUniV3ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. -func NewZetaTokenConsumerUniV3ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3ErrorsFilterer, error) { - contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerUniV3Errors binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerUniV3Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerUniV3ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go b/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go deleted file mode 100644 index 1bc6f1a8..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go +++ /dev/null @@ -1,912 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerZEVMMetaData contains all meta data concerning the ZetaTokenConsumerZEVM contract. -var ZetaTokenConsumerZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidForZEVM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200220938038062002209833981810160405281019062000037919062000164565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620001fe565b6000815190506200015e81620001e4565b92915050565b600080604083850312156200017e576200017d620001df565b5b60006200018e858286016200014d565b9250506020620001a1858286016200014d565b9150509250929050565b6000620001b882620001bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001ef81620001ab565b8114620001fb57600080fd5b50565b60805160601c60a05160601c611f7e6200028b600039600081816105a4015281816106fa01528181610cb50152610e2b0152600081816060015281816103060152818161038c015281816104ee01528181610689015281816109180152818161095f01528181610bdf01528181610c6b01528181610cd701528181610d6b0152610f660152611f7e6000f3fe6080604052600436106100595760003560e01c8063013b2ff8146100ea5780632405620a1461011a57806354c49a2a1461015757806380801f8414610194578063a53fb10b146101bf578063c469cf14146101fc576100e5565b366100e5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100e3576040517f290ee5a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b61010460048036038101906100ff919061157c565b610227565b6040516101119190611aa8565b60405180910390f35b34801561012657600080fd5b50610141600480360381019061013c91906115bc565b610412565b60405161014e9190611aa8565b60405180910390f35b34801561016357600080fd5b5061017e60048036038101906101799190611623565b610833565b60405161018b9190611aa8565b60405180910390f35b3480156101a057600080fd5b506101a9610acf565b6040516101b691906119eb565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906115bc565b610b03565b6040516101f39190611aa8565b60405180910390f35b34801561020857600080fd5b50610211610f64565b60405161021e9190611910565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561028f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102ca576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81341015610304576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50505050506103d083347f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f889092919063ffffffff16565b7f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113434604051610401929190611ac3565b60405180910390a134905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061047a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156104b1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156104ec576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610572576040517f6edfe50500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f3330848673ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b6105ea7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff81111561060757610606611d96565b5b6040519080825280602002602001820160405280156106355781602001602082028036833780820191505090505b509050838160008151811061064d5761064c611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106106bc576106bb611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426107459190611c02565b6040518663ffffffff1660e01b8152600401610765959493929190611aec565b600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107bc9190611676565b9050600081600184516107cf9190611c58565b815181106107e0576107df611d67565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f86868360405161081d939291906119b4565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561089b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156108d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015610910576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016109b69190611aa8565b600060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8283604051610a19929190611ac3565b60405180910390a160008473ffffffffffffffffffffffffffffffffffffffff1683604051610a47906118fb565b60006040518083038185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610ac4576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829150509392505050565b60006040517f0e6a82b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b6b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610ba2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610bdd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c63576040517f8c51927900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb03330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b610d1b7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff811115610d3857610d37611d96565b5b604051908082528060200260200182016040528015610d665781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610d9e57610d9d611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110610ded57610dec611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610e769190611c02565b6040518663ffffffff1660e01b8152600401610e96959493929190611aec565b600060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eed9190611676565b905060008160018451610f009190611c58565b81518110610f1157610f10611d67565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b868683604051610f4e939291906119b4565b60405180910390a1809350505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110098363a9059cbb60e01b8484604051602401610fa792919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b611091846323b872dd60e01b85858560405160240161102f93929190611954565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b50505050565b6000811480611130575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016110de92919061192b565b60206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906116ec565b145b61116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611a88565b60405180910390fd5b6111f08363095ea7b360e01b848460405160240161118e92919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b6000611257826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112bc9092919063ffffffff16565b90506000815111156112b7578080602001905181019061127791906116bf565b6112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90611a68565b60405180910390fd5b5b505050565b60606112cb84846000856112d4565b90509392505050565b606082471015611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090611a28565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134291906118e4565b60006040518083038185875af1925050503d806000811461137f576040519150601f19603f3d011682016040523d82523d6000602084013e611384565b606091505b5091509150611395878383876113a1565b92505050949350505050565b60608315611404576000835114156113fc576113bc85611417565b6113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290611a48565b60405180910390fd5b5b82905061140f565b61140e838361143a565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819190611a06565b60405180910390fd5b600061149d61149884611b6b565b611b46565b905080838252602082019050828560208602820111156114c0576114bf611dca565b5b60005b858110156114f057816114d68882611567565b8452602084019350602083019250506001810190506114c3565b5050509392505050565b60008135905061150981611f03565b92915050565b600082601f83011261152457611523611dc5565b5b815161153484826020860161148a565b91505092915050565b60008151905061154c81611f1a565b92915050565b60008135905061156181611f31565b92915050565b60008151905061157681611f31565b92915050565b6000806040838503121561159357611592611dd4565b5b60006115a1858286016114fa565b92505060206115b285828601611552565b9150509250929050565b600080600080608085870312156115d6576115d5611dd4565b5b60006115e4878288016114fa565b94505060206115f587828801611552565b9350506040611606878288016114fa565b925050606061161787828801611552565b91505092959194509250565b60008060006060848603121561163c5761163b611dd4565b5b600061164a868287016114fa565b935050602061165b86828701611552565b925050604061166c86828701611552565b9150509250925092565b60006020828403121561168c5761168b611dd4565b5b600082015167ffffffffffffffff8111156116aa576116a9611dcf565b5b6116b68482850161150f565b91505092915050565b6000602082840312156116d5576116d4611dd4565b5b60006116e38482850161153d565b91505092915050565b60006020828403121561170257611701611dd4565b5b600061171084828501611567565b91505092915050565b60006117258383611731565b60208301905092915050565b61173a81611c8c565b82525050565b61174981611c8c565b82525050565b600061175a82611ba7565b6117648185611bd5565b935061176f83611b97565b8060005b838110156117a05781516117878882611719565b975061179283611bc8565b925050600181019050611773565b5085935050505092915050565b6117b681611c9e565b82525050565b60006117c782611bb2565b6117d18185611be6565b93506117e1818560208601611cd4565b80840191505092915050565b60006117f882611bbd565b6118028185611bf1565b9350611812818560208601611cd4565b61181b81611dd9565b840191505092915050565b6000611833602683611bf1565b915061183e82611dea565b604082019050919050565b6000611856600083611be6565b915061186182611e39565b600082019050919050565b6000611879601d83611bf1565b915061188482611e3c565b602082019050919050565b600061189c602a83611bf1565b91506118a782611e65565b604082019050919050565b60006118bf603683611bf1565b91506118ca82611eb4565b604082019050919050565b6118de81611cca565b82525050565b60006118f082846117bc565b915081905092915050565b600061190682611849565b9150819050919050565b60006020820190506119256000830184611740565b92915050565b60006040820190506119406000830185611740565b61194d6020830184611740565b9392505050565b60006060820190506119696000830186611740565b6119766020830185611740565b61198360408301846118d5565b949350505050565b60006040820190506119a06000830185611740565b6119ad60208301846118d5565b9392505050565b60006060820190506119c96000830186611740565b6119d660208301856118d5565b6119e360408301846118d5565b949350505050565b6000602082019050611a0060008301846117ad565b92915050565b60006020820190508181036000830152611a2081846117ed565b905092915050565b60006020820190508181036000830152611a4181611826565b9050919050565b60006020820190508181036000830152611a618161186c565b9050919050565b60006020820190508181036000830152611a818161188f565b9050919050565b60006020820190508181036000830152611aa1816118b2565b9050919050565b6000602082019050611abd60008301846118d5565b92915050565b6000604082019050611ad860008301856118d5565b611ae560208301846118d5565b9392505050565b600060a082019050611b0160008301886118d5565b611b0e60208301876118d5565b8181036040830152611b20818661174f565b9050611b2f6060830185611740565b611b3c60808301846118d5565b9695505050505050565b6000611b50611b61565b9050611b5c8282611d07565b919050565b6000604051905090565b600067ffffffffffffffff821115611b8657611b85611d96565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0d82611cca565b9150611c1883611cca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c4d57611c4c611d38565b5b828201905092915050565b6000611c6382611cca565b9150611c6e83611cca565b925082821015611c8157611c80611d38565b5b828203905092915050565b6000611c9782611caa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611cf2578082015181840152602081019050611cd7565b83811115611d01576000848401525b50505050565b611d1082611dd9565b810181811067ffffffffffffffff82111715611d2f57611d2e611d96565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b611f0c81611c8c565b8114611f1757600080fd5b50565b611f2381611c9e565b8114611f2e57600080fd5b50565b611f3a81611cca565b8114611f4557600080fd5b5056fea26469706673582212208d9034aea3c8399eb52d47a1eab88ad2e74879d4a2d03d208a0237686f63877a64736f6c63430008070033", -} - -// ZetaTokenConsumerZEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerZEVMMetaData.ABI instead. -var ZetaTokenConsumerZEVMABI = ZetaTokenConsumerZEVMMetaData.ABI - -// ZetaTokenConsumerZEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaTokenConsumerZEVMMetaData.Bin instead. -var ZetaTokenConsumerZEVMBin = ZetaTokenConsumerZEVMMetaData.Bin - -// DeployZetaTokenConsumerZEVM deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerZEVM to it. -func DeployZetaTokenConsumerZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, WETH9Address_ common.Address, uniswapV2Router_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerZEVM, error) { - parsed, err := ZetaTokenConsumerZEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerZEVMBin), backend, WETH9Address_, uniswapV2Router_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaTokenConsumerZEVM{ZetaTokenConsumerZEVMCaller: ZetaTokenConsumerZEVMCaller{contract: contract}, ZetaTokenConsumerZEVMTransactor: ZetaTokenConsumerZEVMTransactor{contract: contract}, ZetaTokenConsumerZEVMFilterer: ZetaTokenConsumerZEVMFilterer{contract: contract}}, nil -} - -// ZetaTokenConsumerZEVM is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVM struct { - ZetaTokenConsumerZEVMCaller // Read-only binding to the contract - ZetaTokenConsumerZEVMTransactor // Write-only binding to the contract - ZetaTokenConsumerZEVMFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerZEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerZEVMSession struct { - Contract *ZetaTokenConsumerZEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerZEVMCallerSession struct { - Contract *ZetaTokenConsumerZEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerZEVMTransactorSession struct { - Contract *ZetaTokenConsumerZEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMRaw struct { - Contract *ZetaTokenConsumerZEVM // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMCallerRaw struct { - Contract *ZetaTokenConsumerZEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMTransactorRaw struct { - Contract *ZetaTokenConsumerZEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerZEVM creates a new instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVM(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerZEVM, error) { - contract, err := bindZetaTokenConsumerZEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVM{ZetaTokenConsumerZEVMCaller: ZetaTokenConsumerZEVMCaller{contract: contract}, ZetaTokenConsumerZEVMTransactor: ZetaTokenConsumerZEVMTransactor{contract: contract}, ZetaTokenConsumerZEVMFilterer: ZetaTokenConsumerZEVMFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerZEVMCaller creates a new read-only instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerZEVMCaller, error) { - contract, err := bindZetaTokenConsumerZEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerZEVMTransactor creates a new write-only instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerZEVMTransactor, error) { - contract, err := bindZetaTokenConsumerZEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerZEVMFilterer creates a new log filterer instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerZEVMFilterer, error) { - contract, err := bindZetaTokenConsumerZEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerZEVM binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerZEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerZEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.contract.Transact(opts, method, params...) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCaller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaTokenConsumerZEVM.contract.Call(opts, &out, "WETH9Address") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerZEVM.Contract.WETH9Address(&_ZetaTokenConsumerZEVM.CallOpts) -} - -// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. -// -// Solidity: function WETH9Address() view returns(address) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerSession) WETH9Address() (common.Address, error) { - return _ZetaTokenConsumerZEVM.Contract.WETH9Address(&_ZetaTokenConsumerZEVM.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaTokenConsumerZEVM.contract.Call(opts, &out, "hasZetaLiquidity") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerZEVM.Contract.HasZetaLiquidity(&_ZetaTokenConsumerZEVM.CallOpts) -} - -// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. -// -// Solidity: function hasZetaLiquidity() view returns(bool) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerSession) HasZetaLiquidity() (bool, error) { - return _ZetaTokenConsumerZEVM.Contract.HasZetaLiquidity(&_ZetaTokenConsumerZEVM.CallOpts) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetEthFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. -// -// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetEthFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetTokenFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. -// -// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetTokenFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetZetaFromEth(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. -// -// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetZetaFromEth(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetZetaFromToken(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. -// -// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.GetZetaFromToken(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.Receive(&_ZetaTokenConsumerZEVM.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) Receive() (*types.Transaction, error) { - return _ZetaTokenConsumerZEVM.Contract.Receive(&_ZetaTokenConsumerZEVM.TransactOpts) -} - -// ZetaTokenConsumerZEVMEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMEthExchangedForZetaIterator struct { - Event *ZetaTokenConsumerZEVMEthExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMEthExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZEVMEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMEthExchangedForZeta struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMEthExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMEthExchangedForZetaIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMEthExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "EthExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZEVMEthExchangedForZeta) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. -// -// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerZEVMEthExchangedForZeta, error) { - event := new(ZetaTokenConsumerZEVMEthExchangedForZeta) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerZEVMTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMTokenExchangedForZetaIterator struct { - Event *ZetaTokenConsumerZEVMTokenExchangedForZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMTokenExchangedForZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZEVMTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMTokenExchangedForZeta struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMTokenExchangedForZetaIterator, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMTokenExchangedForZetaIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil -} - -// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMTokenExchangedForZeta) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "TokenExchangedForZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZEVMTokenExchangedForZeta) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. -// -// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerZEVMTokenExchangedForZeta, error) { - event := new(ZetaTokenConsumerZEVMTokenExchangedForZeta) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerZEVMZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMZetaExchangedForEthIterator struct { - Event *ZetaTokenConsumerZEVMZetaExchangedForEth // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForEth) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZEVMZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMZetaExchangedForEth struct { - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMZetaExchangedForEthIterator, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMZetaExchangedForEthIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMZetaExchangedForEth) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "ZetaExchangedForEth") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZEVMZetaExchangedForEth) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. -// -// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerZEVMZetaExchangedForEth, error) { - event := new(ZetaTokenConsumerZEVMZetaExchangedForEth) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaTokenConsumerZEVMZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMZetaExchangedForTokenIterator struct { - Event *ZetaTokenConsumerZEVMZetaExchangedForToken // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForToken) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaTokenConsumerZEVMZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerZEVM contract. -type ZetaTokenConsumerZEVMZetaExchangedForToken struct { - Token common.Address - AmountIn *big.Int - AmountOut *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMZetaExchangedForTokenIterator, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil -} - -// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMZetaExchangedForToken) (event.Subscription, error) { - - logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "ZetaExchangedForToken") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaTokenConsumerZEVMZetaExchangedForToken) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. -// -// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) -func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerZEVMZetaExchangedForToken, error) { - event := new(ZetaTokenConsumerZEVMZetaExchangedForToken) - if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go b/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go deleted file mode 100644 index 9886476b..00000000 --- a/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetatokenconsumerzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaTokenConsumerZEVMErrorsMetaData contains all meta data concerning the ZetaTokenConsumerZEVMErrors contract. -var ZetaTokenConsumerZEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidForZEVM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", -} - -// ZetaTokenConsumerZEVMErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaTokenConsumerZEVMErrorsMetaData.ABI instead. -var ZetaTokenConsumerZEVMErrorsABI = ZetaTokenConsumerZEVMErrorsMetaData.ABI - -// ZetaTokenConsumerZEVMErrors is an auto generated Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrors struct { - ZetaTokenConsumerZEVMErrorsCaller // Read-only binding to the contract - ZetaTokenConsumerZEVMErrorsTransactor // Write-only binding to the contract - ZetaTokenConsumerZEVMErrorsFilterer // Log filterer for contract events -} - -// ZetaTokenConsumerZEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaTokenConsumerZEVMErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaTokenConsumerZEVMErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaTokenConsumerZEVMErrorsSession struct { - Contract *ZetaTokenConsumerZEVMErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerZEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaTokenConsumerZEVMErrorsCallerSession struct { - Contract *ZetaTokenConsumerZEVMErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaTokenConsumerZEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaTokenConsumerZEVMErrorsTransactorSession struct { - Contract *ZetaTokenConsumerZEVMErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaTokenConsumerZEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrorsRaw struct { - Contract *ZetaTokenConsumerZEVMErrors // Generic contract binding to access the raw methods on -} - -// ZetaTokenConsumerZEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrorsCallerRaw struct { - Contract *ZetaTokenConsumerZEVMErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaTokenConsumerZEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaTokenConsumerZEVMErrorsTransactorRaw struct { - Contract *ZetaTokenConsumerZEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaTokenConsumerZEVMErrors creates a new instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMErrors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerZEVMErrors, error) { - contract, err := bindZetaTokenConsumerZEVMErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMErrors{ZetaTokenConsumerZEVMErrorsCaller: ZetaTokenConsumerZEVMErrorsCaller{contract: contract}, ZetaTokenConsumerZEVMErrorsTransactor: ZetaTokenConsumerZEVMErrorsTransactor{contract: contract}, ZetaTokenConsumerZEVMErrorsFilterer: ZetaTokenConsumerZEVMErrorsFilterer{contract: contract}}, nil -} - -// NewZetaTokenConsumerZEVMErrorsCaller creates a new read-only instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerZEVMErrorsCaller, error) { - contract, err := bindZetaTokenConsumerZEVMErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMErrorsCaller{contract: contract}, nil -} - -// NewZetaTokenConsumerZEVMErrorsTransactor creates a new write-only instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerZEVMErrorsTransactor, error) { - contract, err := bindZetaTokenConsumerZEVMErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMErrorsTransactor{contract: contract}, nil -} - -// NewZetaTokenConsumerZEVMErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. -func NewZetaTokenConsumerZEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerZEVMErrorsFilterer, error) { - contract, err := bindZetaTokenConsumerZEVMErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaTokenConsumerZEVMErrorsFilterer{contract: contract}, nil -} - -// bindZetaTokenConsumerZEVMErrors binds a generic wrapper to an already deployed contract. -func bindZetaTokenConsumerZEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaTokenConsumerZEVMErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaTokenConsumerZEVMErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVMErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaTokenConsumerZEVMErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/evm/zeta.eth.sol/zetaeth.go b/pkg/contracts/evm/zeta.eth.sol/zetaeth.go deleted file mode 100644 index 9bfabaa5..00000000 --- a/pkg/contracts/evm/zeta.eth.sol/zetaeth.go +++ /dev/null @@ -1,802 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zeta - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaEthMetaData contains all meta data concerning the ZetaEth contract. -var ZetaEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001a5238038062001a5283398181016040528101906200003791906200037d565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200029f565b508060049080519060200190620000d49291906200029f565b5050506200011682620000ec6200011e60201b60201c565b60ff16600a620000fd919062000504565b836200010a919062000641565b6200012760201b60201c565b5050620007e3565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200019a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019190620003fc565b60405180910390fd5b620001ae600083836200029560201b60201c565b8060026000828254620001c291906200044c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200027591906200041e565b60405180910390a362000291600083836200029a60201b60201c565b5050565b505050565b505050565b828054620002ad90620006e0565b90600052602060002090601f016020900481019282620002d157600085556200031d565b82601f10620002ec57805160ff19168380011785556200031d565b828001600101855582156200031d579182015b828111156200031c578251825591602001919060010190620002ff565b5b5090506200032c919062000330565b5090565b5b808211156200034b57600081600090555060010162000331565b5090565b6000815190506200036081620007af565b92915050565b6000815190506200037781620007c9565b92915050565b6000806040838503121562000397576200039662000774565b5b6000620003a7858286016200034f565b9250506020620003ba8582860162000366565b9150509250929050565b6000620003d3601f836200043b565b9150620003e08262000786565b602082019050919050565b620003f681620006d6565b82525050565b600060208201905081810360008301526200041781620003c4565b9050919050565b6000602082019050620004356000830184620003eb565b92915050565b600082825260208201905092915050565b60006200045982620006d6565b91506200046683620006d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200049e576200049d62000716565b5b828201905092915050565b6000808291508390505b6001851115620004fb57808604811115620004d357620004d262000716565b5b6001851615620004e35780820291505b8081029050620004f38562000779565b9450620004b3565b94509492505050565b60006200051182620006d6565b91506200051e83620006d6565b92506200054d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000555565b905092915050565b6000826200056757600190506200063a565b816200057757600090506200063a565b81600181146200059057600281146200059b57620005d1565b60019150506200063a565b60ff841115620005b057620005af62000716565b5b8360020a915084821115620005ca57620005c962000716565b5b506200063a565b5060208310610133831016604e8410600b84101617156200060b5782820a90508381111562000605576200060462000716565b5b6200063a565b6200061a8484846001620004a9565b9250905081840481111562000634576200063362000716565b5b81810290505b9392505050565b60006200064e82620006d6565b91506200065b83620006d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000697576200069662000716565b5b828202905092915050565b6000620006af82620006b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620006f957607f821691505b6020821081141562000710576200070f62000745565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620007ba81620006a2565b8114620007c657600080fd5b50565b620007d481620006d6565b8114620007e057600080fd5b50565b61125f80620007f36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220e33277034a5236435f4dc6a93d4c4dc71fb8a6be9f4a752ea3f374446caf920b64736f6c63430008070033", -} - -// ZetaEthABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaEthMetaData.ABI instead. -var ZetaEthABI = ZetaEthMetaData.ABI - -// ZetaEthBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaEthMetaData.Bin instead. -var ZetaEthBin = ZetaEthMetaData.Bin - -// DeployZetaEth deploys a new Ethereum contract, binding an instance of ZetaEth to it. -func DeployZetaEth(auth *bind.TransactOpts, backend bind.ContractBackend, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ZetaEth, error) { - parsed, err := ZetaEthMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaEthBin), backend, creator, initialSupply) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaEth{ZetaEthCaller: ZetaEthCaller{contract: contract}, ZetaEthTransactor: ZetaEthTransactor{contract: contract}, ZetaEthFilterer: ZetaEthFilterer{contract: contract}}, nil -} - -// ZetaEth is an auto generated Go binding around an Ethereum contract. -type ZetaEth struct { - ZetaEthCaller // Read-only binding to the contract - ZetaEthTransactor // Write-only binding to the contract - ZetaEthFilterer // Log filterer for contract events -} - -// ZetaEthCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaEthCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaEthTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaEthTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaEthFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaEthSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaEthSession struct { - Contract *ZetaEth // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaEthCallerSession struct { - Contract *ZetaEthCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaEthTransactorSession struct { - Contract *ZetaEthTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaEthRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaEthRaw struct { - Contract *ZetaEth // Generic contract binding to access the raw methods on -} - -// ZetaEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaEthCallerRaw struct { - Contract *ZetaEthCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaEthTransactorRaw struct { - Contract *ZetaEthTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaEth creates a new instance of ZetaEth, bound to a specific deployed contract. -func NewZetaEth(address common.Address, backend bind.ContractBackend) (*ZetaEth, error) { - contract, err := bindZetaEth(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaEth{ZetaEthCaller: ZetaEthCaller{contract: contract}, ZetaEthTransactor: ZetaEthTransactor{contract: contract}, ZetaEthFilterer: ZetaEthFilterer{contract: contract}}, nil -} - -// NewZetaEthCaller creates a new read-only instance of ZetaEth, bound to a specific deployed contract. -func NewZetaEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaEthCaller, error) { - contract, err := bindZetaEth(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaEthCaller{contract: contract}, nil -} - -// NewZetaEthTransactor creates a new write-only instance of ZetaEth, bound to a specific deployed contract. -func NewZetaEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaEthTransactor, error) { - contract, err := bindZetaEth(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaEthTransactor{contract: contract}, nil -} - -// NewZetaEthFilterer creates a new log filterer instance of ZetaEth, bound to a specific deployed contract. -func NewZetaEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaEthFilterer, error) { - contract, err := bindZetaEth(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaEthFilterer{contract: contract}, nil -} - -// bindZetaEth binds a generic wrapper to an already deployed contract. -func bindZetaEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaEthMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaEth *ZetaEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaEth.Contract.ZetaEthCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaEth *ZetaEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaEth.Contract.ZetaEthTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaEth *ZetaEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaEth.Contract.ZetaEthTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaEth *ZetaEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaEth.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaEth *ZetaEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaEth.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaEth *ZetaEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaEth.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaEth *ZetaEthCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaEth *ZetaEthSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaEth.Contract.Allowance(&_ZetaEth.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaEth *ZetaEthCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaEth.Contract.Allowance(&_ZetaEth.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaEth *ZetaEthCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaEth *ZetaEthSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaEth.Contract.BalanceOf(&_ZetaEth.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaEth *ZetaEthCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaEth.Contract.BalanceOf(&_ZetaEth.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaEth *ZetaEthCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaEth *ZetaEthSession) Decimals() (uint8, error) { - return _ZetaEth.Contract.Decimals(&_ZetaEth.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaEth *ZetaEthCallerSession) Decimals() (uint8, error) { - return _ZetaEth.Contract.Decimals(&_ZetaEth.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaEth *ZetaEthCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaEth *ZetaEthSession) Name() (string, error) { - return _ZetaEth.Contract.Name(&_ZetaEth.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaEth *ZetaEthCallerSession) Name() (string, error) { - return _ZetaEth.Contract.Name(&_ZetaEth.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaEth *ZetaEthCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaEth *ZetaEthSession) Symbol() (string, error) { - return _ZetaEth.Contract.Symbol(&_ZetaEth.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaEth *ZetaEthCallerSession) Symbol() (string, error) { - return _ZetaEth.Contract.Symbol(&_ZetaEth.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaEth *ZetaEthCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaEth.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaEth *ZetaEthSession) TotalSupply() (*big.Int, error) { - return _ZetaEth.Contract.TotalSupply(&_ZetaEth.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaEth *ZetaEthCallerSession) TotalSupply() (*big.Int, error) { - return _ZetaEth.Contract.TotalSupply(&_ZetaEth.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.Approve(&_ZetaEth.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.Approve(&_ZetaEth.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaEth *ZetaEthTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaEth *ZetaEthSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.DecreaseAllowance(&_ZetaEth.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaEth *ZetaEthTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.DecreaseAllowance(&_ZetaEth.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaEth *ZetaEthTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaEth *ZetaEthSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.IncreaseAllowance(&_ZetaEth.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaEth *ZetaEthTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.IncreaseAllowance(&_ZetaEth.TransactOpts, spender, addedValue) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.Transfer(&_ZetaEth.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.Transfer(&_ZetaEth.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.TransferFrom(&_ZetaEth.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaEth *ZetaEthTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaEth.Contract.TransferFrom(&_ZetaEth.TransactOpts, from, to, amount) -} - -// ZetaEthApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaEth contract. -type ZetaEthApprovalIterator struct { - Event *ZetaEthApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaEthApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaEthApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaEthApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaEthApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaEthApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaEthApproval represents a Approval event raised by the ZetaEth contract. -type ZetaEthApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaEth *ZetaEthFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaEthApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaEth.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZetaEthApprovalIterator{contract: _ZetaEth.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaEth *ZetaEthFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaEthApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaEth.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaEthApproval) - if err := _ZetaEth.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaEth *ZetaEthFilterer) ParseApproval(log types.Log) (*ZetaEthApproval, error) { - event := new(ZetaEthApproval) - if err := _ZetaEth.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaEth contract. -type ZetaEthTransferIterator struct { - Event *ZetaEthTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaEthTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaEthTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaEthTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaEthTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaEthTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaEthTransfer represents a Transfer event raised by the ZetaEth contract. -type ZetaEthTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaEth *ZetaEthFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaEthTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaEth.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZetaEthTransferIterator{contract: _ZetaEth.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaEth *ZetaEthFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaEthTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaEth.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaEthTransfer) - if err := _ZetaEth.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaEth *ZetaEthFilterer) ParseTransfer(log types.Log) (*ZetaEthTransfer, error) { - event := new(ZetaEthTransfer) - if err := _ZetaEth.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go b/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go deleted file mode 100644 index 2beabe2c..00000000 --- a/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go +++ /dev/null @@ -1,1706 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zeta - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaNonEthMetaData contains all meta data concerning the ZetaNonEth contract. -var ZetaNonEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burnee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newConnectorAddress\",\"type\":\"address\"}],\"name\":\"ConnectorAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connectorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"connectorAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAndConnectorAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea2646970667358221220bd1393fae79c8d0bb84c13332f8c58d8b5424cb9fb90b304c7162b49e7360c6f64736f6c63430008070033", -} - -// ZetaNonEthABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaNonEthMetaData.ABI instead. -var ZetaNonEthABI = ZetaNonEthMetaData.ABI - -// ZetaNonEthBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaNonEthMetaData.Bin instead. -var ZetaNonEthBin = ZetaNonEthMetaData.Bin - -// DeployZetaNonEth deploys a new Ethereum contract, binding an instance of ZetaNonEth to it. -func DeployZetaNonEth(auth *bind.TransactOpts, backend bind.ContractBackend, tssAddress_ common.Address, tssAddressUpdater_ common.Address) (common.Address, *types.Transaction, *ZetaNonEth, error) { - parsed, err := ZetaNonEthMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaNonEthBin), backend, tssAddress_, tssAddressUpdater_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil -} - -// ZetaNonEth is an auto generated Go binding around an Ethereum contract. -type ZetaNonEth struct { - ZetaNonEthCaller // Read-only binding to the contract - ZetaNonEthTransactor // Write-only binding to the contract - ZetaNonEthFilterer // Log filterer for contract events -} - -// ZetaNonEthCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaNonEthCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaNonEthTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaNonEthFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaNonEthSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaNonEthSession struct { - Contract *ZetaNonEth // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaNonEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaNonEthCallerSession struct { - Contract *ZetaNonEthCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaNonEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaNonEthTransactorSession struct { - Contract *ZetaNonEthTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaNonEthRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaNonEthRaw struct { - Contract *ZetaNonEth // Generic contract binding to access the raw methods on -} - -// ZetaNonEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaNonEthCallerRaw struct { - Contract *ZetaNonEthCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaNonEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaNonEthTransactorRaw struct { - Contract *ZetaNonEthTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaNonEth creates a new instance of ZetaNonEth, bound to a specific deployed contract. -func NewZetaNonEth(address common.Address, backend bind.ContractBackend) (*ZetaNonEth, error) { - contract, err := bindZetaNonEth(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil -} - -// NewZetaNonEthCaller creates a new read-only instance of ZetaNonEth, bound to a specific deployed contract. -func NewZetaNonEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthCaller, error) { - contract, err := bindZetaNonEth(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaNonEthCaller{contract: contract}, nil -} - -// NewZetaNonEthTransactor creates a new write-only instance of ZetaNonEth, bound to a specific deployed contract. -func NewZetaNonEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthTransactor, error) { - contract, err := bindZetaNonEth(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaNonEthTransactor{contract: contract}, nil -} - -// NewZetaNonEthFilterer creates a new log filterer instance of ZetaNonEth, bound to a specific deployed contract. -func NewZetaNonEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthFilterer, error) { - contract, err := bindZetaNonEth(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaNonEthFilterer{contract: contract}, nil -} - -// bindZetaNonEth binds a generic wrapper to an already deployed contract. -func bindZetaNonEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaNonEthMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaNonEth *ZetaNonEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaNonEth.Contract.ZetaNonEthCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaNonEth *ZetaNonEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaNonEth *ZetaNonEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaNonEth *ZetaNonEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaNonEth.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaNonEth.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaNonEth.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) -} - -// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. -// -// Solidity: function connectorAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthCaller) ConnectorAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "connectorAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. -// -// Solidity: function connectorAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthSession) ConnectorAddress() (common.Address, error) { - return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) -} - -// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. -// -// Solidity: function connectorAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthCallerSession) ConnectorAddress() (common.Address, error) { - return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaNonEth *ZetaNonEthCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaNonEth *ZetaNonEthSession) Decimals() (uint8, error) { - return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZetaNonEth *ZetaNonEthCallerSession) Decimals() (uint8, error) { - return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaNonEth *ZetaNonEthCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaNonEth *ZetaNonEthSession) Name() (string, error) { - return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZetaNonEth *ZetaNonEthCallerSession) Name() (string, error) { - return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaNonEth *ZetaNonEthCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaNonEth *ZetaNonEthSession) Symbol() (string, error) { - return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZetaNonEth *ZetaNonEthCallerSession) Symbol() (string, error) { - return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEth *ZetaNonEthSession) TotalSupply() (*big.Int, error) { - return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZetaNonEth *ZetaNonEthCallerSession) TotalSupply() (*big.Int, error) { - return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthSession) TssAddress() (common.Address, error) { - return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddress() (common.Address, error) { - return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaNonEth *ZetaNonEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaNonEth.contract.Call(opts, &out, "tssAddressUpdater") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaNonEth *ZetaNonEthSession) TssAddressUpdater() (common.Address, error) { - return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddressUpdater() (common.Address, error) { - return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "burnFrom", account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ZetaNonEth *ZetaNonEthTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.DecreaseAllowance(&_ZetaNonEth.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.DecreaseAllowance(&_ZetaNonEth.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.IncreaseAllowance(&_ZetaNonEth.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.IncreaseAllowance(&_ZetaNonEth.TransactOpts, spender, addedValue) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEth *ZetaNonEthTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "mint", mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEth *ZetaNonEthSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_ZetaNonEth *ZetaNonEthTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaNonEth *ZetaNonEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "renounceTssAddressUpdater") -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaNonEth *ZetaNonEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaNonEth *ZetaNonEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ZetaNonEth *ZetaNonEthTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, amount) -} - -// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. -// -// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() -func (_ZetaNonEth *ZetaNonEthTransactor) UpdateTssAndConnectorAddresses(opts *bind.TransactOpts, tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { - return _ZetaNonEth.contract.Transact(opts, "updateTssAndConnectorAddresses", tssAddress_, connectorAddress_) -} - -// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. -// -// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() -func (_ZetaNonEth *ZetaNonEthSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { - return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) -} - -// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. -// -// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() -func (_ZetaNonEth *ZetaNonEthTransactorSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { - return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) -} - -// ZetaNonEthApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEth contract. -type ZetaNonEthApprovalIterator struct { - Event *ZetaNonEthApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthApproval represents a Approval event raised by the ZetaNonEth contract. -type ZetaNonEthApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZetaNonEthApprovalIterator{contract: _ZetaNonEth.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthApproval) - if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseApproval(log types.Log) (*ZetaNonEthApproval, error) { - event := new(ZetaNonEthApproval) - if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthBurntIterator is returned from FilterBurnt and is used to iterate over the raw logs and unpacked data for Burnt events raised by the ZetaNonEth contract. -type ZetaNonEthBurntIterator struct { - Event *ZetaNonEthBurnt // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthBurntIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthBurnt) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthBurnt) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthBurntIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthBurntIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthBurnt represents a Burnt event raised by the ZetaNonEth contract. -type ZetaNonEthBurnt struct { - Burnee common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBurnt is a free log retrieval operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. -// -// Solidity: event Burnt(address indexed burnee, uint256 amount) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterBurnt(opts *bind.FilterOpts, burnee []common.Address) (*ZetaNonEthBurntIterator, error) { - - var burneeRule []interface{} - for _, burneeItem := range burnee { - burneeRule = append(burneeRule, burneeItem) - } - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Burnt", burneeRule) - if err != nil { - return nil, err - } - return &ZetaNonEthBurntIterator{contract: _ZetaNonEth.contract, event: "Burnt", logs: logs, sub: sub}, nil -} - -// WatchBurnt is a free log subscription operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. -// -// Solidity: event Burnt(address indexed burnee, uint256 amount) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchBurnt(opts *bind.WatchOpts, sink chan<- *ZetaNonEthBurnt, burnee []common.Address) (event.Subscription, error) { - - var burneeRule []interface{} - for _, burneeItem := range burnee { - burneeRule = append(burneeRule, burneeItem) - } - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Burnt", burneeRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthBurnt) - if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBurnt is a log parse operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. -// -// Solidity: event Burnt(address indexed burnee, uint256 amount) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseBurnt(log types.Log) (*ZetaNonEthBurnt, error) { - event := new(ZetaNonEthBurnt) - if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthConnectorAddressUpdatedIterator is returned from FilterConnectorAddressUpdated and is used to iterate over the raw logs and unpacked data for ConnectorAddressUpdated events raised by the ZetaNonEth contract. -type ZetaNonEthConnectorAddressUpdatedIterator struct { - Event *ZetaNonEthConnectorAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthConnectorAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthConnectorAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthConnectorAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthConnectorAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthConnectorAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthConnectorAddressUpdated represents a ConnectorAddressUpdated event raised by the ZetaNonEth contract. -type ZetaNonEthConnectorAddressUpdated struct { - CallerAddress common.Address - NewConnectorAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterConnectorAddressUpdated is a free log retrieval operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. -// -// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterConnectorAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthConnectorAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "ConnectorAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaNonEthConnectorAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "ConnectorAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchConnectorAddressUpdated is a free log subscription operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. -// -// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchConnectorAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthConnectorAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "ConnectorAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthConnectorAddressUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseConnectorAddressUpdated is a log parse operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. -// -// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseConnectorAddressUpdated(log types.Log) (*ZetaNonEthConnectorAddressUpdated, error) { - event := new(ZetaNonEthConnectorAddressUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthMintedIterator is returned from FilterMinted and is used to iterate over the raw logs and unpacked data for Minted events raised by the ZetaNonEth contract. -type ZetaNonEthMintedIterator struct { - Event *ZetaNonEthMinted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthMintedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthMinted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthMinted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthMintedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthMintedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthMinted represents a Minted event raised by the ZetaNonEth contract. -type ZetaNonEthMinted struct { - Mintee common.Address - Amount *big.Int - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMinted is a free log retrieval operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. -// -// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterMinted(opts *bind.FilterOpts, mintee []common.Address, internalSendHash [][32]byte) (*ZetaNonEthMintedIterator, error) { - - var minteeRule []interface{} - for _, minteeItem := range mintee { - minteeRule = append(minteeRule, minteeItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Minted", minteeRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaNonEthMintedIterator{contract: _ZetaNonEth.contract, event: "Minted", logs: logs, sub: sub}, nil -} - -// WatchMinted is a free log subscription operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. -// -// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchMinted(opts *bind.WatchOpts, sink chan<- *ZetaNonEthMinted, mintee []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { - - var minteeRule []interface{} - for _, minteeItem := range mintee { - minteeRule = append(minteeRule, minteeItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Minted", minteeRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthMinted) - if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMinted is a log parse operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. -// -// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseMinted(log types.Log) (*ZetaNonEthMinted, error) { - event := new(ZetaNonEthMinted) - if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaNonEth contract. -type ZetaNonEthTSSAddressUpdatedIterator struct { - Event *ZetaNonEthTSSAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthTSSAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthTSSAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthTSSAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaNonEth contract. -type ZetaNonEthTSSAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaNonEthTSSAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthTSSAddressUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdated, error) { - event := new(ZetaNonEthTSSAddressUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaNonEth contract. -type ZetaNonEthTSSAddressUpdaterUpdatedIterator struct { - Event *ZetaNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaNonEth contract. -type ZetaNonEthTSSAddressUpdaterUpdated struct { - CallerAddress common.Address - NewTssUpdaterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdaterUpdatedIterator, error) { - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return &ZetaNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthTSSAddressUpdaterUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdaterUpdated, error) { - event := new(ZetaNonEthTSSAddressUpdaterUpdated) - if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaNonEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEth contract. -type ZetaNonEthTransferIterator struct { - Event *ZetaNonEthTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaNonEthTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaNonEthTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaNonEthTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaNonEthTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaNonEthTransfer represents a Transfer event raised by the ZetaNonEth contract. -type ZetaNonEthTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZetaNonEthTransferIterator{contract: _ZetaNonEth.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaNonEthTransfer) - if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZetaNonEth *ZetaNonEthFilterer) ParseTransfer(log types.Log) (*ZetaNonEthTransfer, error) { - event := new(ZetaNonEthTransfer) - if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go b/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go deleted file mode 100644 index f3046872..00000000 --- a/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go +++ /dev/null @@ -1,1695 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnector - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesSendInput struct { - DestinationChainId *big.Int - DestinationAddress []byte - DestinationGasLimit *big.Int - Message []byte - ZetaValueAndGas *big.Int - ZetaParams []byte -} - -// ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. -var ZetaConnectorBaseMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea26469706673582212208fd8c8de0fa8c6d7ce42d081250a53e2ae3a7e5119c9670a0fb1d03e1c81c2c264736f6c63430008070033", -} - -// ZetaConnectorBaseABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorBaseMetaData.ABI instead. -var ZetaConnectorBaseABI = ZetaConnectorBaseMetaData.ABI - -// ZetaConnectorBaseBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorBaseMetaData.Bin instead. -var ZetaConnectorBaseBin = ZetaConnectorBaseMetaData.Bin - -// DeployZetaConnectorBase deploys a new Ethereum contract, binding an instance of ZetaConnectorBase to it. -func DeployZetaConnectorBase(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorBase, error) { - parsed, err := ZetaConnectorBaseMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorBaseBin), backend, zetaToken_, tssAddress_, tssAddressUpdater_, pauserAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorBase{ZetaConnectorBaseCaller: ZetaConnectorBaseCaller{contract: contract}, ZetaConnectorBaseTransactor: ZetaConnectorBaseTransactor{contract: contract}, ZetaConnectorBaseFilterer: ZetaConnectorBaseFilterer{contract: contract}}, nil -} - -// ZetaConnectorBase is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorBase struct { - ZetaConnectorBaseCaller // Read-only binding to the contract - ZetaConnectorBaseTransactor // Write-only binding to the contract - ZetaConnectorBaseFilterer // Log filterer for contract events -} - -// ZetaConnectorBaseCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorBaseCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorBaseTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorBaseFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorBaseSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorBaseSession struct { - Contract *ZetaConnectorBase // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorBaseCallerSession struct { - Contract *ZetaConnectorBaseCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorBaseTransactorSession struct { - Contract *ZetaConnectorBaseTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorBaseRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorBaseRaw struct { - Contract *ZetaConnectorBase // Generic contract binding to access the raw methods on -} - -// ZetaConnectorBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorBaseCallerRaw struct { - Contract *ZetaConnectorBaseCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorBaseTransactorRaw struct { - Contract *ZetaConnectorBaseTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorBase creates a new instance of ZetaConnectorBase, bound to a specific deployed contract. -func NewZetaConnectorBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorBase, error) { - contract, err := bindZetaConnectorBase(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorBase{ZetaConnectorBaseCaller: ZetaConnectorBaseCaller{contract: contract}, ZetaConnectorBaseTransactor: ZetaConnectorBaseTransactor{contract: contract}, ZetaConnectorBaseFilterer: ZetaConnectorBaseFilterer{contract: contract}}, nil -} - -// NewZetaConnectorBaseCaller creates a new read-only instance of ZetaConnectorBase, bound to a specific deployed contract. -func NewZetaConnectorBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorBaseCaller, error) { - contract, err := bindZetaConnectorBase(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseCaller{contract: contract}, nil -} - -// NewZetaConnectorBaseTransactor creates a new write-only instance of ZetaConnectorBase, bound to a specific deployed contract. -func NewZetaConnectorBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorBaseTransactor, error) { - contract, err := bindZetaConnectorBase(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseTransactor{contract: contract}, nil -} - -// NewZetaConnectorBaseFilterer creates a new log filterer instance of ZetaConnectorBase, bound to a specific deployed contract. -func NewZetaConnectorBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorBaseFilterer, error) { - contract, err := bindZetaConnectorBase(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseFilterer{contract: contract}, nil -} - -// bindZetaConnectorBase binds a generic wrapper to an already deployed contract. -func bindZetaConnectorBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorBaseMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorBase.Contract.ZetaConnectorBaseCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorBase *ZetaConnectorBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorBase.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.contract.Transact(opts, method, params...) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "paused") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) Paused() (bool, error) { - return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) Paused() (bool, error) { - return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "pauserAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.PauserAddress(&_ZetaConnectorBase.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.PauserAddress(&_ZetaConnectorBase.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddressUpdater") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddressUpdater(&_ZetaConnectorBase.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddressUpdater(&_ZetaConnectorBase.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.OnReceive(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.OnReceive(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.OnRevert(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.OnRevert(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "renounceTssAddressUpdater") -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.RenounceTssAddressUpdater(&_ZetaConnectorBase.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.RenounceTssAddressUpdater(&_ZetaConnectorBase.TransactOpts) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "send", input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Send(&_ZetaConnectorBase.TransactOpts, input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Send(&_ZetaConnectorBase.TransactOpts, input) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "updatePauserAddress", pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.UpdatePauserAddress(&_ZetaConnectorBase.TransactOpts, pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.UpdatePauserAddress(&_ZetaConnectorBase.TransactOpts, pauserAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.contract.Transact(opts, "updateTssAddress", tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.UpdateTssAddress(&_ZetaConnectorBase.TransactOpts, tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorBase.Contract.UpdateTssAddress(&_ZetaConnectorBase.TransactOpts, tssAddress_) -} - -// ZetaConnectorBasePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorBase contract. -type ZetaConnectorBasePausedIterator struct { - Event *ZetaConnectorBasePaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBasePausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBasePaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBasePaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBasePausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBasePausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBasePaused represents a Paused event raised by the ZetaConnectorBase contract. -type ZetaConnectorBasePaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorBasePausedIterator, error) { - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &ZetaConnectorBasePausedIterator{contract: _ZetaConnectorBase.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBasePaused) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePaused(log types.Log) (*ZetaConnectorBasePaused, error) { - event := new(ZetaConnectorBasePaused) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBasePauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorBase contract. -type ZetaConnectorBasePauserAddressUpdatedIterator struct { - Event *ZetaConnectorBasePauserAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBasePauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBasePauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBasePauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorBase contract. -type ZetaConnectorBasePauserAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBasePauserAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorBasePauserAddressUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePauserAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBasePauserAddressUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorBasePauserAddressUpdated, error) { - event := new(ZetaConnectorBasePauserAddressUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseTSSAddressUpdatedIterator struct { - Event *ZetaConnectorBaseTSSAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseTSSAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorBaseTSSAddressUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseTSSAddressUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdated, error) { - event := new(ZetaConnectorBaseTSSAddressUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator struct { - Event *ZetaConnectorBaseTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseTSSAddressUpdaterUpdated struct { - CallerAddress common.Address - NewTssUpdaterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdaterUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdaterUpdated, error) { - event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseUnpausedIterator struct { - Event *ZetaConnectorBaseUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseUnpaused represents a Unpaused event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseUnpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorBaseUnpausedIterator, error) { - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &ZetaConnectorBaseUnpausedIterator{contract: _ZetaConnectorBase.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseUnpaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseUnpaused) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorBaseUnpaused, error) { - event := new(ZetaConnectorBaseUnpaused) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaReceivedIterator struct { - Event *ZetaConnectorBaseZetaReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseZetaReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseZetaReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseZetaReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseZetaReceived represents a ZetaReceived event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaReceived struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorBaseZetaReceivedIterator, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseZetaReceivedIterator{contract: _ZetaConnectorBase.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil -} - -// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseZetaReceived) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorBaseZetaReceived, error) { - event := new(ZetaConnectorBaseZetaReceived) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaRevertedIterator struct { - Event *ZetaConnectorBaseZetaReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseZetaRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseZetaRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseZetaRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseZetaReverted represents a ZetaReverted event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaReverted struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationChainId *big.Int - DestinationAddress []byte - RemainingZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorBaseZetaRevertedIterator, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseZetaRevertedIterator{contract: _ZetaConnectorBase.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil -} - -// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseZetaReverted) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorBaseZetaReverted, error) { - event := new(ZetaConnectorBaseZetaReverted) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorBaseZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaSentIterator struct { - Event *ZetaConnectorBaseZetaSent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorBaseZetaSentIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorBaseZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorBaseZetaSentIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorBaseZetaSentIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorBaseZetaSent represents a ZetaSent event raised by the ZetaConnectorBase contract. -type ZetaConnectorBaseZetaSent struct { - SourceTxOriginAddress common.Address - ZetaTxSenderAddress common.Address - DestinationChainId *big.Int - DestinationAddress []byte - ZetaValueAndGas *big.Int - DestinationGasLimit *big.Int - Message []byte - ZetaParams []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorBaseZetaSentIterator, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return &ZetaConnectorBaseZetaSentIterator{contract: _ZetaConnectorBase.contract, event: "ZetaSent", logs: logs, sub: sub}, nil -} - -// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorBaseZetaSent) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorBaseZetaSent, error) { - event := new(ZetaConnectorBaseZetaSent) - if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go b/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go deleted file mode 100644 index 5ee96d02..00000000 --- a/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go +++ /dev/null @@ -1,1726 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnector - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesSendInput struct { - DestinationChainId *big.Int - DestinationAddress []byte - DestinationGasLimit *big.Int - Message []byte - ZetaValueAndGas *big.Int - ZetaParams []byte -} - -// ZetaConnectorEthMetaData contains all meta data concerning the ZetaConnectorEth contract. -var ZetaConnectorEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220c386ec06beb54bf2f1fa9d6ebdcbce1a2c994b9dc5c90038fe0d0a4b8174e1ea64736f6c63430008070033", -} - -// ZetaConnectorEthABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorEthMetaData.ABI instead. -var ZetaConnectorEthABI = ZetaConnectorEthMetaData.ABI - -// ZetaConnectorEthBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorEthMetaData.Bin instead. -var ZetaConnectorEthBin = ZetaConnectorEthMetaData.Bin - -// DeployZetaConnectorEth deploys a new Ethereum contract, binding an instance of ZetaConnectorEth to it. -func DeployZetaConnectorEth(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorEth, error) { - parsed, err := ZetaConnectorEthMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorEthBin), backend, zetaToken_, tssAddress_, tssAddressUpdater_, pauserAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorEth{ZetaConnectorEthCaller: ZetaConnectorEthCaller{contract: contract}, ZetaConnectorEthTransactor: ZetaConnectorEthTransactor{contract: contract}, ZetaConnectorEthFilterer: ZetaConnectorEthFilterer{contract: contract}}, nil -} - -// ZetaConnectorEth is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorEth struct { - ZetaConnectorEthCaller // Read-only binding to the contract - ZetaConnectorEthTransactor // Write-only binding to the contract - ZetaConnectorEthFilterer // Log filterer for contract events -} - -// ZetaConnectorEthCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorEthCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorEthTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorEthTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorEthFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorEthSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorEthSession struct { - Contract *ZetaConnectorEth // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorEthCallerSession struct { - Contract *ZetaConnectorEthCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorEthTransactorSession struct { - Contract *ZetaConnectorEthTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorEthRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorEthRaw struct { - Contract *ZetaConnectorEth // Generic contract binding to access the raw methods on -} - -// ZetaConnectorEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorEthCallerRaw struct { - Contract *ZetaConnectorEthCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorEthTransactorRaw struct { - Contract *ZetaConnectorEthTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorEth creates a new instance of ZetaConnectorEth, bound to a specific deployed contract. -func NewZetaConnectorEth(address common.Address, backend bind.ContractBackend) (*ZetaConnectorEth, error) { - contract, err := bindZetaConnectorEth(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorEth{ZetaConnectorEthCaller: ZetaConnectorEthCaller{contract: contract}, ZetaConnectorEthTransactor: ZetaConnectorEthTransactor{contract: contract}, ZetaConnectorEthFilterer: ZetaConnectorEthFilterer{contract: contract}}, nil -} - -// NewZetaConnectorEthCaller creates a new read-only instance of ZetaConnectorEth, bound to a specific deployed contract. -func NewZetaConnectorEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorEthCaller, error) { - contract, err := bindZetaConnectorEth(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorEthCaller{contract: contract}, nil -} - -// NewZetaConnectorEthTransactor creates a new write-only instance of ZetaConnectorEth, bound to a specific deployed contract. -func NewZetaConnectorEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorEthTransactor, error) { - contract, err := bindZetaConnectorEth(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorEthTransactor{contract: contract}, nil -} - -// NewZetaConnectorEthFilterer creates a new log filterer instance of ZetaConnectorEth, bound to a specific deployed contract. -func NewZetaConnectorEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorEthFilterer, error) { - contract, err := bindZetaConnectorEth(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorEthFilterer{contract: contract}, nil -} - -// bindZetaConnectorEth binds a generic wrapper to an already deployed contract. -func bindZetaConnectorEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorEthMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorEth *ZetaConnectorEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorEth.Contract.ZetaConnectorEthCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorEth *ZetaConnectorEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.ZetaConnectorEthTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorEth *ZetaConnectorEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.ZetaConnectorEthTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorEth *ZetaConnectorEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorEth.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorEth *ZetaConnectorEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorEth *ZetaConnectorEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.contract.Transact(opts, method, params...) -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) GetLockedAmount(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "getLockedAmount") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorEth *ZetaConnectorEthSession) GetLockedAmount() (*big.Int, error) { - return _ZetaConnectorEth.Contract.GetLockedAmount(&_ZetaConnectorEth.CallOpts) -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) GetLockedAmount() (*big.Int, error) { - return _ZetaConnectorEth.Contract.GetLockedAmount(&_ZetaConnectorEth.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "paused") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorEth *ZetaConnectorEthSession) Paused() (bool, error) { - return _ZetaConnectorEth.Contract.Paused(&_ZetaConnectorEth.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) Paused() (bool, error) { - return _ZetaConnectorEth.Contract.Paused(&_ZetaConnectorEth.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "pauserAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorEth.Contract.PauserAddress(&_ZetaConnectorEth.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorEth.Contract.PauserAddress(&_ZetaConnectorEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthSession) TssAddress() (common.Address, error) { - return _ZetaConnectorEth.Contract.TssAddress(&_ZetaConnectorEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorEth.Contract.TssAddress(&_ZetaConnectorEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "tssAddressUpdater") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorEth.Contract.TssAddressUpdater(&_ZetaConnectorEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorEth.Contract.TssAddressUpdater(&_ZetaConnectorEth.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorEth.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorEth.Contract.ZetaToken(&_ZetaConnectorEth.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorEth.Contract.ZetaToken(&_ZetaConnectorEth.CallOpts) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.OnReceive(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.OnReceive(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.OnRevert(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.OnRevert(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Pause(&_ZetaConnectorEth.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Pause(&_ZetaConnectorEth.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "renounceTssAddressUpdater") -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorEth.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorEth.TransactOpts) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "send", input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Send(&_ZetaConnectorEth.TransactOpts, input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Send(&_ZetaConnectorEth.TransactOpts, input) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Unpause(&_ZetaConnectorEth.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.Unpause(&_ZetaConnectorEth.TransactOpts) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "updatePauserAddress", pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.UpdatePauserAddress(&_ZetaConnectorEth.TransactOpts, pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.UpdatePauserAddress(&_ZetaConnectorEth.TransactOpts, pauserAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.contract.Transact(opts, "updateTssAddress", tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.UpdateTssAddress(&_ZetaConnectorEth.TransactOpts, tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorEth.Contract.UpdateTssAddress(&_ZetaConnectorEth.TransactOpts, tssAddress_) -} - -// ZetaConnectorEthPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthPausedIterator struct { - Event *ZetaConnectorEthPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthPaused represents a Paused event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthPaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorEthPausedIterator, error) { - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &ZetaConnectorEthPausedIterator{contract: _ZetaConnectorEth.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthPaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthPaused) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParsePaused(log types.Log) (*ZetaConnectorEthPaused, error) { - event := new(ZetaConnectorEthPaused) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthPauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthPauserAddressUpdatedIterator struct { - Event *ZetaConnectorEthPauserAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthPauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthPauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthPauserAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthPauserAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorEthPauserAddressUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthPauserAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthPauserAddressUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorEthPauserAddressUpdated, error) { - event := new(ZetaConnectorEthPauserAddressUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthTSSAddressUpdatedIterator struct { - Event *ZetaConnectorEthTSSAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthTSSAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorEthTSSAddressUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthTSSAddressUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdated, error) { - event := new(ZetaConnectorEthTSSAddressUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthTSSAddressUpdaterUpdatedIterator struct { - Event *ZetaConnectorEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthTSSAddressUpdaterUpdated struct { - CallerAddress common.Address - NewTssUpdaterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdaterUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdaterUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdaterUpdated, error) { - event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthUnpausedIterator struct { - Event *ZetaConnectorEthUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthUnpaused represents a Unpaused event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthUnpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorEthUnpausedIterator, error) { - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &ZetaConnectorEthUnpausedIterator{contract: _ZetaConnectorEth.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthUnpaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthUnpaused) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorEthUnpaused, error) { - event := new(ZetaConnectorEthUnpaused) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaReceivedIterator struct { - Event *ZetaConnectorEthZetaReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthZetaReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthZetaReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthZetaReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthZetaReceived represents a ZetaReceived event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaReceived struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorEthZetaReceivedIterator, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorEthZetaReceivedIterator{contract: _ZetaConnectorEth.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil -} - -// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthZetaReceived) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorEthZetaReceived, error) { - event := new(ZetaConnectorEthZetaReceived) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaRevertedIterator struct { - Event *ZetaConnectorEthZetaReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthZetaRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthZetaRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthZetaRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthZetaReverted represents a ZetaReverted event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaReverted struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationChainId *big.Int - DestinationAddress []byte - RemainingZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorEthZetaRevertedIterator, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorEthZetaRevertedIterator{contract: _ZetaConnectorEth.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil -} - -// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthZetaReverted) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorEthZetaReverted, error) { - event := new(ZetaConnectorEthZetaReverted) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorEthZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaSentIterator struct { - Event *ZetaConnectorEthZetaSent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorEthZetaSentIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorEthZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorEthZetaSentIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorEthZetaSentIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorEthZetaSent represents a ZetaSent event raised by the ZetaConnectorEth contract. -type ZetaConnectorEthZetaSent struct { - SourceTxOriginAddress common.Address - ZetaTxSenderAddress common.Address - DestinationChainId *big.Int - DestinationAddress []byte - ZetaValueAndGas *big.Int - DestinationGasLimit *big.Int - Message []byte - ZetaParams []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorEthZetaSentIterator, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return &ZetaConnectorEthZetaSentIterator{contract: _ZetaConnectorEth.contract, event: "ZetaSent", logs: logs, sub: sub}, nil -} - -// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorEthZetaSent) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorEthZetaSent, error) { - event := new(ZetaConnectorEthZetaSent) - if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go b/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go deleted file mode 100644 index 3ef421c9..00000000 --- a/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go +++ /dev/null @@ -1,1913 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnector - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesSendInput struct { - DestinationChainId *big.Int - DestinationAddress []byte - DestinationGasLimit *big.Int - Message []byte - ZetaValueAndGas *big.Int - ZetaParams []byte -} - -// ZetaConnectorNonEthMetaData contains all meta data concerning the ZetaConnectorNonEth contract. -var ZetaConnectorNonEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTokenAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxSupply\",\"type\":\"uint256\"}],\"name\":\"MaxSupplyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply_\",\"type\":\"uint256\"}],\"name\":\"setMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220af09dec3099b33c22fceeb145766f8056225d0604e40f061de22f5e64b79e8b564736f6c63430008070033", -} - -// ZetaConnectorNonEthABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorNonEthMetaData.ABI instead. -var ZetaConnectorNonEthABI = ZetaConnectorNonEthMetaData.ABI - -// ZetaConnectorNonEthBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorNonEthMetaData.Bin instead. -var ZetaConnectorNonEthBin = ZetaConnectorNonEthMetaData.Bin - -// DeployZetaConnectorNonEth deploys a new Ethereum contract, binding an instance of ZetaConnectorNonEth to it. -func DeployZetaConnectorNonEth(auth *bind.TransactOpts, backend bind.ContractBackend, zetaTokenAddress_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonEth, error) { - parsed, err := ZetaConnectorNonEthMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonEthBin), backend, zetaTokenAddress_, tssAddress_, tssAddressUpdater_, pauserAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorNonEth{ZetaConnectorNonEthCaller: ZetaConnectorNonEthCaller{contract: contract}, ZetaConnectorNonEthTransactor: ZetaConnectorNonEthTransactor{contract: contract}, ZetaConnectorNonEthFilterer: ZetaConnectorNonEthFilterer{contract: contract}}, nil -} - -// ZetaConnectorNonEth is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorNonEth struct { - ZetaConnectorNonEthCaller // Read-only binding to the contract - ZetaConnectorNonEthTransactor // Write-only binding to the contract - ZetaConnectorNonEthFilterer // Log filterer for contract events -} - -// ZetaConnectorNonEthCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorNonEthCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonEthTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorNonEthTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorNonEthFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonEthSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorNonEthSession struct { - Contract *ZetaConnectorNonEth // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNonEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorNonEthCallerSession struct { - Contract *ZetaConnectorNonEthCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorNonEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorNonEthTransactorSession struct { - Contract *ZetaConnectorNonEthTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNonEthRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorNonEthRaw struct { - Contract *ZetaConnectorNonEth // Generic contract binding to access the raw methods on -} - -// ZetaConnectorNonEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorNonEthCallerRaw struct { - Contract *ZetaConnectorNonEthCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorNonEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorNonEthTransactorRaw struct { - Contract *ZetaConnectorNonEthTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorNonEth creates a new instance of ZetaConnectorNonEth, bound to a specific deployed contract. -func NewZetaConnectorNonEth(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNonEth, error) { - contract, err := bindZetaConnectorNonEth(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEth{ZetaConnectorNonEthCaller: ZetaConnectorNonEthCaller{contract: contract}, ZetaConnectorNonEthTransactor: ZetaConnectorNonEthTransactor{contract: contract}, ZetaConnectorNonEthFilterer: ZetaConnectorNonEthFilterer{contract: contract}}, nil -} - -// NewZetaConnectorNonEthCaller creates a new read-only instance of ZetaConnectorNonEth, bound to a specific deployed contract. -func NewZetaConnectorNonEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNonEthCaller, error) { - contract, err := bindZetaConnectorNonEth(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthCaller{contract: contract}, nil -} - -// NewZetaConnectorNonEthTransactor creates a new write-only instance of ZetaConnectorNonEth, bound to a specific deployed contract. -func NewZetaConnectorNonEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNonEthTransactor, error) { - contract, err := bindZetaConnectorNonEth(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthTransactor{contract: contract}, nil -} - -// NewZetaConnectorNonEthFilterer creates a new log filterer instance of ZetaConnectorNonEth, bound to a specific deployed contract. -func NewZetaConnectorNonEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNonEthFilterer, error) { - contract, err := bindZetaConnectorNonEth(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthFilterer{contract: contract}, nil -} - -// bindZetaConnectorNonEth binds a generic wrapper to an already deployed contract. -func bindZetaConnectorNonEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorNonEthMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNonEth.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.contract.Transact(opts, method, params...) -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) GetLockedAmount(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "getLockedAmount") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) GetLockedAmount() (*big.Int, error) { - return _ZetaConnectorNonEth.Contract.GetLockedAmount(&_ZetaConnectorNonEth.CallOpts) -} - -// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. -// -// Solidity: function getLockedAmount() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) GetLockedAmount() (*big.Int, error) { - return _ZetaConnectorNonEth.Contract.GetLockedAmount(&_ZetaConnectorNonEth.CallOpts) -} - -// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. -// -// Solidity: function maxSupply() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) MaxSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "maxSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. -// -// Solidity: function maxSupply() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) MaxSupply() (*big.Int, error) { - return _ZetaConnectorNonEth.Contract.MaxSupply(&_ZetaConnectorNonEth.CallOpts) -} - -// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. -// -// Solidity: function maxSupply() view returns(uint256) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) MaxSupply() (*big.Int, error) { - return _ZetaConnectorNonEth.Contract.MaxSupply(&_ZetaConnectorNonEth.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "paused") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Paused() (bool, error) { - return _ZetaConnectorNonEth.Contract.Paused(&_ZetaConnectorNonEth.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) Paused() (bool, error) { - return _ZetaConnectorNonEth.Contract.Paused(&_ZetaConnectorNonEth.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "pauserAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.PauserAddress(&_ZetaConnectorNonEth.CallOpts) -} - -// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. -// -// Solidity: function pauserAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) PauserAddress() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.PauserAddress(&_ZetaConnectorNonEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.TssAddress(&_ZetaConnectorNonEth.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.TssAddress(&_ZetaConnectorNonEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "tssAddressUpdater") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.TssAddressUpdater(&_ZetaConnectorNonEth.CallOpts) -} - -// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. -// -// Solidity: function tssAddressUpdater() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) TssAddressUpdater() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.TssAddressUpdater(&_ZetaConnectorNonEth.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonEth.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.ZetaToken(&_ZetaConnectorNonEth.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNonEth.Contract.ZetaToken(&_ZetaConnectorNonEth.CallOpts) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.OnReceive(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.OnReceive(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.OnRevert(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.OnRevert(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Pause(&_ZetaConnectorNonEth.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Pause() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Pause(&_ZetaConnectorNonEth.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "renounceTssAddressUpdater") -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorNonEth.TransactOpts) -} - -// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. -// -// Solidity: function renounceTssAddressUpdater() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorNonEth.TransactOpts) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "send", input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Send(&_ZetaConnectorNonEth.TransactOpts, input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Send(&_ZetaConnectorNonEth.TransactOpts, input) -} - -// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. -// -// Solidity: function setMaxSupply(uint256 maxSupply_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) SetMaxSupply(opts *bind.TransactOpts, maxSupply_ *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "setMaxSupply", maxSupply_) -} - -// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. -// -// Solidity: function setMaxSupply(uint256 maxSupply_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.SetMaxSupply(&_ZetaConnectorNonEth.TransactOpts, maxSupply_) -} - -// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. -// -// Solidity: function setMaxSupply(uint256 maxSupply_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.SetMaxSupply(&_ZetaConnectorNonEth.TransactOpts, maxSupply_) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Unpause(&_ZetaConnectorNonEth.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Unpause() (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.Unpause(&_ZetaConnectorNonEth.TransactOpts) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "updatePauserAddress", pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.UpdatePauserAddress(&_ZetaConnectorNonEth.TransactOpts, pauserAddress_) -} - -// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. -// -// Solidity: function updatePauserAddress(address pauserAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.UpdatePauserAddress(&_ZetaConnectorNonEth.TransactOpts, pauserAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.contract.Transact(opts, "updateTssAddress", tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.UpdateTssAddress(&_ZetaConnectorNonEth.TransactOpts, tssAddress_) -} - -// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. -// -// Solidity: function updateTssAddress(address tssAddress_) returns() -func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorNonEth.Contract.UpdateTssAddress(&_ZetaConnectorNonEth.TransactOpts, tssAddress_) -} - -// ZetaConnectorNonEthMaxSupplyUpdatedIterator is returned from FilterMaxSupplyUpdated and is used to iterate over the raw logs and unpacked data for MaxSupplyUpdated events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthMaxSupplyUpdatedIterator struct { - Event *ZetaConnectorNonEthMaxSupplyUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthMaxSupplyUpdated represents a MaxSupplyUpdated event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthMaxSupplyUpdated struct { - CallerAddress common.Address - NewMaxSupply *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMaxSupplyUpdated is a free log retrieval operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. -// -// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterMaxSupplyUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthMaxSupplyUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "MaxSupplyUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthMaxSupplyUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "MaxSupplyUpdated", logs: logs, sub: sub}, nil -} - -// WatchMaxSupplyUpdated is a free log subscription operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. -// -// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchMaxSupplyUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthMaxSupplyUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "MaxSupplyUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthMaxSupplyUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMaxSupplyUpdated is a log parse operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. -// -// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseMaxSupplyUpdated(log types.Log) (*ZetaConnectorNonEthMaxSupplyUpdated, error) { - event := new(ZetaConnectorNonEthMaxSupplyUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthPausedIterator struct { - Event *ZetaConnectorNonEthPaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthPausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthPaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthPausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthPausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthPaused represents a Paused event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthPaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorNonEthPausedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthPausedIterator{contract: _ZetaConnectorNonEth.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthPaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthPaused) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParsePaused(log types.Log) (*ZetaConnectorNonEthPaused, error) { - event := new(ZetaConnectorNonEthPaused) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthPauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthPauserAddressUpdatedIterator struct { - Event *ZetaConnectorNonEthPauserAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthPauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthPauserAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthPauserAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthPauserAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthPauserAddressUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthPauserAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "PauserAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthPauserAddressUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. -// -// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorNonEthPauserAddressUpdated, error) { - event := new(ZetaConnectorNonEthPauserAddressUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthTSSAddressUpdatedIterator struct { - Event *ZetaConnectorNonEthTSSAddressUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthTSSAddressUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthTSSAddressUpdated struct { - CallerAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthTSSAddressUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthTSSAddressUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. -// -// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdated, error) { - event := new(ZetaConnectorNonEthTSSAddressUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator struct { - Event *ZetaConnectorNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthTSSAddressUpdaterUpdated struct { - CallerAddress common.Address - NewTssUpdaterAddress common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil -} - -// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. -// -// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdaterUpdated, error) { - event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthUnpausedIterator struct { - Event *ZetaConnectorNonEthUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthUnpaused represents a Unpaused event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthUnpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorNonEthUnpausedIterator, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthUnpausedIterator{contract: _ZetaConnectorNonEth.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthUnpaused) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthUnpaused) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorNonEthUnpaused, error) { - event := new(ZetaConnectorNonEthUnpaused) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaReceivedIterator struct { - Event *ZetaConnectorNonEthZetaReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthZetaReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthZetaReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthZetaReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthZetaReceived represents a ZetaReceived event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaReceived struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorNonEthZetaReceivedIterator, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthZetaReceivedIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil -} - -// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthZetaReceived) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorNonEthZetaReceived, error) { - event := new(ZetaConnectorNonEthZetaReceived) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaRevertedIterator struct { - Event *ZetaConnectorNonEthZetaReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthZetaRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthZetaRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthZetaRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthZetaReverted represents a ZetaReverted event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaReverted struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationChainId *big.Int - DestinationAddress []byte - RemainingZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorNonEthZetaRevertedIterator, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthZetaRevertedIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil -} - -// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthZetaReverted) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorNonEthZetaReverted, error) { - event := new(ZetaConnectorNonEthZetaReverted) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonEthZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaSentIterator struct { - Event *ZetaConnectorNonEthZetaSent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonEthZetaSentIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonEthZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonEthZetaSentIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonEthZetaSentIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonEthZetaSent represents a ZetaSent event raised by the ZetaConnectorNonEth contract. -type ZetaConnectorNonEthZetaSent struct { - SourceTxOriginAddress common.Address - ZetaTxSenderAddress common.Address - DestinationChainId *big.Int - DestinationAddress []byte - ZetaValueAndGas *big.Int - DestinationGasLimit *big.Int - Message []byte - ZetaParams []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorNonEthZetaSentIterator, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonEthZetaSentIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaSent", logs: logs, sub: sub}, nil -} - -// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonEthZetaSent) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorNonEthZetaSent, error) { - event := new(ZetaConnectorNonEthZetaSent) - if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go b/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go deleted file mode 100644 index 6438908b..00000000 --- a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go +++ /dev/null @@ -1,792 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. -var ERC20CustodyNewMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033", -} - -// ERC20CustodyNewABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20CustodyNewMetaData.ABI instead. -var ERC20CustodyNewABI = ERC20CustodyNewMetaData.ABI - -// ERC20CustodyNewBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20CustodyNewMetaData.Bin instead. -var ERC20CustodyNewBin = ERC20CustodyNewMetaData.Bin - -// DeployERC20CustodyNew deploys a new Ethereum contract, binding an instance of ERC20CustodyNew to it. -func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20CustodyNew, error) { - parsed, err := ERC20CustodyNewMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewBin), backend, _gateway, _tssAddress) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil -} - -// ERC20CustodyNew is an auto generated Go binding around an Ethereum contract. -type ERC20CustodyNew struct { - ERC20CustodyNewCaller // Read-only binding to the contract - ERC20CustodyNewTransactor // Write-only binding to the contract - ERC20CustodyNewFilterer // Log filterer for contract events -} - -// ERC20CustodyNewCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20CustodyNewCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodyNewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20CustodyNewTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodyNewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20CustodyNewFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20CustodyNewSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20CustodyNewSession struct { - Contract *ERC20CustodyNew // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20CustodyNewCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20CustodyNewCallerSession struct { - Contract *ERC20CustodyNewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20CustodyNewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20CustodyNewTransactorSession struct { - Contract *ERC20CustodyNewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20CustodyNewRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20CustodyNewRaw struct { - Contract *ERC20CustodyNew // Generic contract binding to access the raw methods on -} - -// ERC20CustodyNewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CustodyNewCallerRaw struct { - Contract *ERC20CustodyNewCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC20CustodyNewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20CustodyNewTransactorRaw struct { - Contract *ERC20CustodyNewTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20CustodyNew creates a new instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNew(address common.Address, backend bind.ContractBackend) (*ERC20CustodyNew, error) { - contract, err := bindERC20CustodyNew(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil -} - -// NewERC20CustodyNewCaller creates a new read-only instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyNewCaller, error) { - contract, err := bindERC20CustodyNew(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20CustodyNewCaller{contract: contract}, nil -} - -// NewERC20CustodyNewTransactor creates a new write-only instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyNewTransactor, error) { - contract, err := bindERC20CustodyNew(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20CustodyNewTransactor{contract: contract}, nil -} - -// NewERC20CustodyNewFilterer creates a new log filterer instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyNewFilterer, error) { - contract, err := bindERC20CustodyNew(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20CustodyNewFilterer{contract: contract}, nil -} - -// bindERC20CustodyNew binds a generic wrapper to an already deployed contract. -func bindERC20CustodyNew(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20CustodyNewMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNew.Contract.ERC20CustodyNewCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20CustodyNew *ERC20CustodyNewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNew.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.contract.Transact(opts, method, params...) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20CustodyNew.contract.Call(opts, &out, "gateway") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewSession) Gateway() (common.Address, error) { - return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) Gateway() (common.Address, error) { - return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20CustodyNew.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdraw", token, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. -// -// Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. -// -// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. -// -// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. -// -// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. -// -// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. -// -// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. -// -// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) -} - -// ERC20CustodyNewWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawIterator struct { - Event *ERC20CustodyNewWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyNewWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyNewWithdraw represents a Withdraw event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdraw struct { - Token common.Address - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return &ERC20CustodyNewWithdrawIterator{contract: _ERC20CustodyNew.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdraw) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyNewWithdraw, error) { - event := new(ERC20CustodyNewWithdraw) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyNewWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndCallIterator struct { - Event *ERC20CustodyNewWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyNewWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndCall struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndCallIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return &ERC20CustodyNewWithdrawAndCallIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdrawAndCall) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyNewWithdrawAndCall, error) { - event := new(ERC20CustodyNewWithdrawAndCall) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20CustodyNewWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndRevertIterator struct { - Event *ERC20CustodyNewWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20CustodyNewWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndRevert struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndRevertIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return &ERC20CustodyNewWithdrawAndRevertIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdrawAndRevert) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyNewWithdrawAndRevert, error) { - event := new(ERC20CustodyNewWithdrawAndRevert) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go deleted file mode 100644 index 26b2bbcb..00000000 --- a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go +++ /dev/null @@ -1,2347 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package gatewayevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. -var GatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7048633db9aaa83300dde783147476ddfc6bd1f9af1387dc5143ffa7cf6418064736f6c63430008070033", -} - -// GatewayEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use GatewayEVMMetaData.ABI instead. -var GatewayEVMABI = GatewayEVMMetaData.ABI - -// GatewayEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use GatewayEVMMetaData.Bin instead. -var GatewayEVMBin = GatewayEVMMetaData.Bin - -// DeployGatewayEVM deploys a new Ethereum contract, binding an instance of GatewayEVM to it. -func DeployGatewayEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVM, error) { - parsed, err := GatewayEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &GatewayEVM{GatewayEVMCaller: GatewayEVMCaller{contract: contract}, GatewayEVMTransactor: GatewayEVMTransactor{contract: contract}, GatewayEVMFilterer: GatewayEVMFilterer{contract: contract}}, nil -} - -// GatewayEVM is an auto generated Go binding around an Ethereum contract. -type GatewayEVM struct { - GatewayEVMCaller // Read-only binding to the contract - GatewayEVMTransactor // Write-only binding to the contract - GatewayEVMFilterer // Log filterer for contract events -} - -// GatewayEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type GatewayEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type GatewayEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type GatewayEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type GatewayEVMSession struct { - Contract *GatewayEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type GatewayEVMCallerSession struct { - Contract *GatewayEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// GatewayEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type GatewayEVMTransactorSession struct { - Contract *GatewayEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type GatewayEVMRaw struct { - Contract *GatewayEVM // Generic contract binding to access the raw methods on -} - -// GatewayEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type GatewayEVMCallerRaw struct { - Contract *GatewayEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// GatewayEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type GatewayEVMTransactorRaw struct { - Contract *GatewayEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewGatewayEVM creates a new instance of GatewayEVM, bound to a specific deployed contract. -func NewGatewayEVM(address common.Address, backend bind.ContractBackend) (*GatewayEVM, error) { - contract, err := bindGatewayEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &GatewayEVM{GatewayEVMCaller: GatewayEVMCaller{contract: contract}, GatewayEVMTransactor: GatewayEVMTransactor{contract: contract}, GatewayEVMFilterer: GatewayEVMFilterer{contract: contract}}, nil -} - -// NewGatewayEVMCaller creates a new read-only instance of GatewayEVM, bound to a specific deployed contract. -func NewGatewayEVMCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMCaller, error) { - contract, err := bindGatewayEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &GatewayEVMCaller{contract: contract}, nil -} - -// NewGatewayEVMTransactor creates a new write-only instance of GatewayEVM, bound to a specific deployed contract. -func NewGatewayEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMTransactor, error) { - contract, err := bindGatewayEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &GatewayEVMTransactor{contract: contract}, nil -} - -// NewGatewayEVMFilterer creates a new log filterer instance of GatewayEVM, bound to a specific deployed contract. -func NewGatewayEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMFilterer, error) { - contract, err := bindGatewayEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &GatewayEVMFilterer{contract: contract}, nil -} - -// bindGatewayEVM binds a generic wrapper to an already deployed contract. -func bindGatewayEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := GatewayEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayEVM *GatewayEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayEVM.Contract.GatewayEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayEVM *GatewayEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVM.Contract.GatewayEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayEVM *GatewayEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayEVM.Contract.GatewayEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayEVM *GatewayEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayEVM *GatewayEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayEVM *GatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayEVM.Contract.contract.Transact(opts, method, params...) -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) Custody(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "custody") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVM *GatewayEVMSession) Custody() (common.Address, error) { - return _GatewayEVM.Contract.Custody(&_GatewayEVM.CallOpts) -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) Custody() (common.Address, error) { - return _GatewayEVM.Contract.Custody(&_GatewayEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMSession) Owner() (common.Address, error) { - return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) Owner() (common.Address, error) { - return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVM *GatewayEVMCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "proxiableUUID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVM *GatewayEVMSession) ProxiableUUID() ([32]byte, error) { - return _GatewayEVM.Contract.ProxiableUUID(&_GatewayEVM.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVM *GatewayEVMCallerSession) ProxiableUUID() ([32]byte, error) { - return _GatewayEVM.Contract.ProxiableUUID(&_GatewayEVM.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVM *GatewayEVMSession) TssAddress() (common.Address, error) { - return _GatewayEVM.Contract.TssAddress(&_GatewayEVM.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) TssAddress() (common.Address, error) { - return _GatewayEVM.Contract.TssAddress(&_GatewayEVM.CallOpts) -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) ZetaConnector(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "zetaConnector") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVM *GatewayEVMSession) ZetaConnector() (common.Address, error) { - return _GatewayEVM.Contract.ZetaConnector(&_GatewayEVM.CallOpts) -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) ZetaConnector() (common.Address, error) { - return _GatewayEVM.Contract.ZetaConnector(&_GatewayEVM.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVM *GatewayEVMSession) ZetaToken() (common.Address, error) { - return _GatewayEVM.Contract.ZetaToken(&_GatewayEVM.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) ZetaToken() (common.Address, error) { - return _GatewayEVM.Contract.ZetaToken(&_GatewayEVM.CallOpts) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVM *GatewayEVMTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "call", receiver, payload) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVM *GatewayEVMSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.Call(&_GatewayEVM.TransactOpts, receiver, payload) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.Call(&_GatewayEVM.TransactOpts, receiver, payload) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVM *GatewayEVMTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "deposit", receiver) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVM *GatewayEVMSession) Deposit(receiver common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Deposit(&_GatewayEVM.TransactOpts, receiver) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Deposit(&_GatewayEVM.TransactOpts, receiver) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVM *GatewayEVMTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "deposit0", receiver, amount, asset) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVM *GatewayEVMSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Deposit0(&_GatewayEVM.TransactOpts, receiver, amount, asset) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Deposit0(&_GatewayEVM.TransactOpts, receiver, amount, asset) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVM *GatewayEVMTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "depositAndCall", receiver, payload) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVM *GatewayEVMSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.DepositAndCall(&_GatewayEVM.TransactOpts, receiver, payload) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVM *GatewayEVMTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.DepositAndCall(&_GatewayEVM.TransactOpts, receiver, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVM *GatewayEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVM *GatewayEVMSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.DepositAndCall0(&_GatewayEVM.TransactOpts, receiver, amount, asset, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.DepositAndCall0(&_GatewayEVM.TransactOpts, receiver, amount, asset, payload) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVM *GatewayEVMTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "execute", destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVM *GatewayEVMSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.Execute(&_GatewayEVM.TransactOpts, destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVM *GatewayEVMTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.Execute(&_GatewayEVM.TransactOpts, destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "executeRevert", destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.ExecuteRevert(&_GatewayEVM.TransactOpts, destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.ExecuteRevert(&_GatewayEVM.TransactOpts, destination, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "executeWithERC20", token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.ExecuteWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.ExecuteWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "revertWithERC20", token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.RevertWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.RevertWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "setConnector", _zetaConnector) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "setCustody", _custody) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVM *GatewayEVMTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "upgradeTo", newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVM *GatewayEVMSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.UpgradeTo(&_GatewayEVM.TransactOpts, newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.UpgradeTo(&_GatewayEVM.TransactOpts, newImplementation) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.UpgradeToAndCall(&_GatewayEVM.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVM *GatewayEVMTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVM.Contract.UpgradeToAndCall(&_GatewayEVM.TransactOpts, newImplementation, data) -} - -// GatewayEVMAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GatewayEVM contract. -type GatewayEVMAdminChangedIterator struct { - Event *GatewayEVMAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMAdminChanged represents a AdminChanged event raised by the GatewayEVM contract. -type GatewayEVMAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVM *GatewayEVMFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*GatewayEVMAdminChangedIterator, error) { - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &GatewayEVMAdminChangedIterator{contract: _GatewayEVM.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVM *GatewayEVMFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayEVMAdminChanged) (event.Subscription, error) { - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMAdminChanged) - if err := _GatewayEVM.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVM *GatewayEVMFilterer) ParseAdminChanged(log types.Log) (*GatewayEVMAdminChanged, error) { - event := new(GatewayEVMAdminChanged) - if err := _GatewayEVM.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the GatewayEVM contract. -type GatewayEVMBeaconUpgradedIterator struct { - Event *GatewayEVMBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMBeaconUpgraded represents a BeaconUpgraded event raised by the GatewayEVM contract. -type GatewayEVMBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVM *GatewayEVMFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*GatewayEVMBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &GatewayEVMBeaconUpgradedIterator{contract: _GatewayEVM.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVM *GatewayEVMFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMBeaconUpgraded) - if err := _GatewayEVM.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVM *GatewayEVMFilterer) ParseBeaconUpgraded(log types.Log) (*GatewayEVMBeaconUpgraded, error) { - event := new(GatewayEVMBeaconUpgraded) - if err := _GatewayEVM.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVM contract. -type GatewayEVMCallIterator struct { - Event *GatewayEVMCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMCall represents a Call event raised by the GatewayEVM contract. -type GatewayEVMCall struct { - Sender common.Address - Receiver common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMCallIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &GatewayEVMCallIterator{contract: _GatewayEVM.contract, event: "Call", logs: logs, sub: sub}, nil -} - -// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMCall) - if err := _GatewayEVM.contract.UnpackLog(event, "Call", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) ParseCall(log types.Log) (*GatewayEVMCall, error) { - event := new(GatewayEVMCall) - if err := _GatewayEVM.contract.UnpackLog(event, "Call", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVM contract. -type GatewayEVMDepositIterator struct { - Event *GatewayEVMDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMDeposit represents a Deposit event raised by the GatewayEVM contract. -type GatewayEVMDeposit struct { - Sender common.Address - Receiver common.Address - Amount *big.Int - Asset common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMDepositIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &GatewayEVMDepositIterator{contract: _GatewayEVM.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMDeposit) - if err := _GatewayEVM.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVM *GatewayEVMFilterer) ParseDeposit(log types.Log) (*GatewayEVMDeposit, error) { - event := new(GatewayEVMDeposit) - if err := _GatewayEVM.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVM contract. -type GatewayEVMExecutedIterator struct { - Event *GatewayEVMExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMExecuted represents a Executed event raised by the GatewayEVM contract. -type GatewayEVMExecuted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMExecutedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return &GatewayEVMExecutedIterator{contract: _GatewayEVM.contract, event: "Executed", logs: logs, sub: sub}, nil -} - -// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMExecuted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMExecuted) - if err := _GatewayEVM.contract.UnpackLog(event, "Executed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) ParseExecuted(log types.Log) (*GatewayEVMExecuted, error) { - event := new(GatewayEVMExecuted) - if err := _GatewayEVM.contract.UnpackLog(event, "Executed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVM contract. -type GatewayEVMExecutedWithERC20Iterator struct { - Event *GatewayEVMExecutedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMExecutedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMExecutedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMExecutedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVM contract. -type GatewayEVMExecutedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMExecutedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &GatewayEVMExecutedWithERC20Iterator{contract: _GatewayEVM.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMExecutedWithERC20) - if err := _GatewayEVM.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMExecutedWithERC20, error) { - event := new(GatewayEVMExecutedWithERC20) - if err := _GatewayEVM.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayEVM contract. -type GatewayEVMInitializedIterator struct { - Event *GatewayEVMInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMInitialized represents a Initialized event raised by the GatewayEVM contract. -type GatewayEVMInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVM *GatewayEVMFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayEVMInitializedIterator, error) { - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &GatewayEVMInitializedIterator{contract: _GatewayEVM.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVM *GatewayEVMFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayEVMInitialized) (event.Subscription, error) { - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMInitialized) - if err := _GatewayEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVM *GatewayEVMFilterer) ParseInitialized(log types.Log) (*GatewayEVMInitialized, error) { - event := new(GatewayEVMInitialized) - if err := _GatewayEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVM contract. -type GatewayEVMOwnershipTransferredIterator struct { - Event *GatewayEVMOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVM contract. -type GatewayEVMOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &GatewayEVMOwnershipTransferredIterator{contract: _GatewayEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMOwnershipTransferred) - if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMOwnershipTransferred, error) { - event := new(GatewayEVMOwnershipTransferred) - if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVM contract. -type GatewayEVMRevertedIterator struct { - Event *GatewayEVMReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMReverted represents a Reverted event raised by the GatewayEVM contract. -type GatewayEVMReverted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMRevertedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return &GatewayEVMRevertedIterator{contract: _GatewayEVM.contract, event: "Reverted", logs: logs, sub: sub}, nil -} - -// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMReverted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMReverted) - if err := _GatewayEVM.contract.UnpackLog(event, "Reverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) ParseReverted(log types.Log) (*GatewayEVMReverted, error) { - event := new(GatewayEVMReverted) - if err := _GatewayEVM.contract.UnpackLog(event, "Reverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVM contract. -type GatewayEVMRevertedWithERC20Iterator struct { - Event *GatewayEVMRevertedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMRevertedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMRevertedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMRevertedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVM contract. -type GatewayEVMRevertedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMRevertedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &GatewayEVMRevertedWithERC20Iterator{contract: _GatewayEVM.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMRevertedWithERC20) - if err := _GatewayEVM.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVM *GatewayEVMFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMRevertedWithERC20, error) { - event := new(GatewayEVMRevertedWithERC20) - if err := _GatewayEVM.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVM contract. -type GatewayEVMUpgradedIterator struct { - Event *GatewayEVMUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgraded represents a Upgraded event raised by the GatewayEVM contract. -type GatewayEVMUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVM *GatewayEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayEVMUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradedIterator{contract: _GatewayEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVM *GatewayEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgraded) - if err := _GatewayEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVM *GatewayEVMFilterer) ParseUpgraded(log types.Log) (*GatewayEVMUpgraded, error) { - event := new(GatewayEVMUpgraded) - if err := _GatewayEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go deleted file mode 100644 index fe03c8af..00000000 --- a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ /dev/null @@ -1,2493 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package gatewayevmupgradetest - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. -var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207506291c2cc1340a6799328d29a82686f260d59d78d6f67136dac5bd6578979464736f6c63430008070033", -} - -// GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. -// Deprecated: Use GatewayEVMUpgradeTestMetaData.ABI instead. -var GatewayEVMUpgradeTestABI = GatewayEVMUpgradeTestMetaData.ABI - -// GatewayEVMUpgradeTestBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use GatewayEVMUpgradeTestMetaData.Bin instead. -var GatewayEVMUpgradeTestBin = GatewayEVMUpgradeTestMetaData.Bin - -// DeployGatewayEVMUpgradeTest deploys a new Ethereum contract, binding an instance of GatewayEVMUpgradeTest to it. -func DeployGatewayEVMUpgradeTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMUpgradeTest, error) { - parsed, err := GatewayEVMUpgradeTestMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMUpgradeTestBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &GatewayEVMUpgradeTest{GatewayEVMUpgradeTestCaller: GatewayEVMUpgradeTestCaller{contract: contract}, GatewayEVMUpgradeTestTransactor: GatewayEVMUpgradeTestTransactor{contract: contract}, GatewayEVMUpgradeTestFilterer: GatewayEVMUpgradeTestFilterer{contract: contract}}, nil -} - -// GatewayEVMUpgradeTest is an auto generated Go binding around an Ethereum contract. -type GatewayEVMUpgradeTest struct { - GatewayEVMUpgradeTestCaller // Read-only binding to the contract - GatewayEVMUpgradeTestTransactor // Write-only binding to the contract - GatewayEVMUpgradeTestFilterer // Log filterer for contract events -} - -// GatewayEVMUpgradeTestCaller is an auto generated read-only Go binding around an Ethereum contract. -type GatewayEVMUpgradeTestCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMUpgradeTestTransactor is an auto generated write-only Go binding around an Ethereum contract. -type GatewayEVMUpgradeTestTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMUpgradeTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type GatewayEVMUpgradeTestFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayEVMUpgradeTestSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type GatewayEVMUpgradeTestSession struct { - Contract *GatewayEVMUpgradeTest // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayEVMUpgradeTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type GatewayEVMUpgradeTestCallerSession struct { - Contract *GatewayEVMUpgradeTestCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// GatewayEVMUpgradeTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type GatewayEVMUpgradeTestTransactorSession struct { - Contract *GatewayEVMUpgradeTestTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayEVMUpgradeTestRaw is an auto generated low-level Go binding around an Ethereum contract. -type GatewayEVMUpgradeTestRaw struct { - Contract *GatewayEVMUpgradeTest // Generic contract binding to access the raw methods on -} - -// GatewayEVMUpgradeTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type GatewayEVMUpgradeTestCallerRaw struct { - Contract *GatewayEVMUpgradeTestCaller // Generic read-only contract binding to access the raw methods on -} - -// GatewayEVMUpgradeTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type GatewayEVMUpgradeTestTransactorRaw struct { - Contract *GatewayEVMUpgradeTestTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewGatewayEVMUpgradeTest creates a new instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. -func NewGatewayEVMUpgradeTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMUpgradeTest, error) { - contract, err := bindGatewayEVMUpgradeTest(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTest{GatewayEVMUpgradeTestCaller: GatewayEVMUpgradeTestCaller{contract: contract}, GatewayEVMUpgradeTestTransactor: GatewayEVMUpgradeTestTransactor{contract: contract}, GatewayEVMUpgradeTestFilterer: GatewayEVMUpgradeTestFilterer{contract: contract}}, nil -} - -// NewGatewayEVMUpgradeTestCaller creates a new read-only instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. -func NewGatewayEVMUpgradeTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMUpgradeTestCaller, error) { - contract, err := bindGatewayEVMUpgradeTest(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestCaller{contract: contract}, nil -} - -// NewGatewayEVMUpgradeTestTransactor creates a new write-only instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. -func NewGatewayEVMUpgradeTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMUpgradeTestTransactor, error) { - contract, err := bindGatewayEVMUpgradeTest(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestTransactor{contract: contract}, nil -} - -// NewGatewayEVMUpgradeTestFilterer creates a new log filterer instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. -func NewGatewayEVMUpgradeTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMUpgradeTestFilterer, error) { - contract, err := bindGatewayEVMUpgradeTest(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestFilterer{contract: contract}, nil -} - -// bindGatewayEVMUpgradeTest binds a generic wrapper to an already deployed contract. -func bindGatewayEVMUpgradeTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := GatewayEVMUpgradeTestMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayEVMUpgradeTest.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.contract.Transact(opts, method, params...) -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Custody(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "custody") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Custody() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Custody(&_GatewayEVMUpgradeTest.CallOpts) -} - -// Custody is a free data retrieval call binding the contract method 0xdda79b75. -// -// Solidity: function custody() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Custody() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Custody(&_GatewayEVMUpgradeTest.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Owner() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Owner() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "proxiableUUID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ProxiableUUID() ([32]byte, error) { - return _GatewayEVMUpgradeTest.Contract.ProxiableUUID(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ProxiableUUID() ([32]byte, error) { - return _GatewayEVMUpgradeTest.Contract.ProxiableUUID(&_GatewayEVMUpgradeTest.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TssAddress() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.TssAddress(&_GatewayEVMUpgradeTest.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) TssAddress() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.TssAddress(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ZetaConnector(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "zetaConnector") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ZetaConnector() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.ZetaConnector(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. -// -// Solidity: function zetaConnector() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ZetaConnector() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.ZetaConnector(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ZetaToken() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.ZetaToken(&_GatewayEVMUpgradeTest.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ZetaToken() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.ZetaToken(&_GatewayEVMUpgradeTest.CallOpts) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "call", receiver, payload) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Call(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) -} - -// Call is a paid mutator transaction binding the contract method 0x1b8b921d. -// -// Solidity: function call(address receiver, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Call(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "deposit", receiver) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Deposit(receiver common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Deposit(&_GatewayEVMUpgradeTest.TransactOpts, receiver) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. -// -// Solidity: function deposit(address receiver) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Deposit(&_GatewayEVMUpgradeTest.TransactOpts, receiver) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "deposit0", receiver, amount, asset) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Deposit0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset) -} - -// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Deposit0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "depositAndCall", receiver, payload) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.DepositAndCall(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. -// -// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.DepositAndCall(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.DepositAndCall0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset, payload) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. -// -// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.DepositAndCall0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset, payload) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "execute", destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Execute(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Execute(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "executeRevert", destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.ExecuteRevert(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. -// -// Solidity: function executeRevert(address destination, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.ExecuteRevert(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "executeWithERC20", token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.ExecuteWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.ExecuteWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "revertWithERC20", token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RevertWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RevertWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "setConnector", _zetaConnector) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.SetConnector(&_GatewayEVMUpgradeTest.TransactOpts, _zetaConnector) -} - -// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. -// -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.SetConnector(&_GatewayEVMUpgradeTest.TransactOpts, _zetaConnector) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "setCustody", _custody) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.SetCustody(&_GatewayEVMUpgradeTest.TransactOpts, _custody) -} - -// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. -// -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.SetCustody(&_GatewayEVMUpgradeTest.TransactOpts, _custody) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "upgradeTo", newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.UpgradeTo(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.UpgradeTo(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.UpgradeToAndCall(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.UpgradeToAndCall(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation, data) -} - -// GatewayEVMUpgradeTestAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestAdminChangedIterator struct { - Event *GatewayEVMUpgradeTestAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestAdminChanged represents a AdminChanged event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*GatewayEVMUpgradeTestAdminChangedIterator, error) { - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestAdminChangedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestAdminChanged) (event.Subscription, error) { - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestAdminChanged) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseAdminChanged(log types.Log) (*GatewayEVMUpgradeTestAdminChanged, error) { - event := new(GatewayEVMUpgradeTestAdminChanged) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestBeaconUpgradedIterator struct { - Event *GatewayEVMUpgradeTestBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestBeaconUpgraded represents a BeaconUpgraded event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*GatewayEVMUpgradeTestBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestBeaconUpgradedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestBeaconUpgraded) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseBeaconUpgraded(log types.Log) (*GatewayEVMUpgradeTestBeaconUpgraded, error) { - event := new(GatewayEVMUpgradeTestBeaconUpgraded) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestCallIterator struct { - Event *GatewayEVMUpgradeTestCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestCall represents a Call event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestCall struct { - Sender common.Address - Receiver common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUpgradeTestCallIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestCallIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Call", logs: logs, sub: sub}, nil -} - -// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestCall) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseCall(log types.Log) (*GatewayEVMUpgradeTestCall, error) { - event := new(GatewayEVMUpgradeTestCall) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestDepositIterator struct { - Event *GatewayEVMUpgradeTestDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestDeposit represents a Deposit event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestDeposit struct { - Sender common.Address - Receiver common.Address - Amount *big.Int - Asset common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUpgradeTestDepositIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestDepositIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestDeposit) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMUpgradeTestDeposit, error) { - event := new(GatewayEVMUpgradeTestDeposit) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecutedIterator struct { - Event *GatewayEVMUpgradeTestExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestExecuted represents a Executed event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecuted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestExecutedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestExecutedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Executed", logs: logs, sub: sub}, nil -} - -// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecuted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestExecuted) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMUpgradeTestExecuted, error) { - event := new(GatewayEVMUpgradeTestExecuted) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestExecutedV2Iterator is returned from FilterExecutedV2 and is used to iterate over the raw logs and unpacked data for ExecutedV2 events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecutedV2Iterator struct { - Event *GatewayEVMUpgradeTestExecutedV2 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecutedV2) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecutedV2) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestExecutedV2 represents a ExecutedV2 event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecutedV2 struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecutedV2 is a free log retrieval operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. -// -// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecutedV2(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestExecutedV2Iterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "ExecutedV2", destinationRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestExecutedV2Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "ExecutedV2", logs: logs, sub: sub}, nil -} - -// WatchExecutedV2 is a free log subscription operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. -// -// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecutedV2(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecutedV2, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "ExecutedV2", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestExecutedV2) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecutedV2 is a log parse operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. -// -// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecutedV2(log types.Log) (*GatewayEVMUpgradeTestExecutedV2, error) { - event := new(GatewayEVMUpgradeTestExecutedV2) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecutedWithERC20Iterator struct { - Event *GatewayEVMUpgradeTestExecutedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestExecutedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUpgradeTestExecutedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestExecutedWithERC20Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestExecutedWithERC20) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMUpgradeTestExecutedWithERC20, error) { - event := new(GatewayEVMUpgradeTestExecutedWithERC20) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestInitializedIterator struct { - Event *GatewayEVMUpgradeTestInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestInitialized represents a Initialized event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayEVMUpgradeTestInitializedIterator, error) { - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestInitializedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestInitialized) (event.Subscription, error) { - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestInitialized) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseInitialized(log types.Log) (*GatewayEVMUpgradeTestInitialized, error) { - event := new(GatewayEVMUpgradeTestInitialized) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestOwnershipTransferredIterator struct { - Event *GatewayEVMUpgradeTestOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMUpgradeTestOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestOwnershipTransferredIterator{contract: _GatewayEVMUpgradeTest.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMUpgradeTestOwnershipTransferred, error) { - event := new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestRevertedIterator struct { - Event *GatewayEVMUpgradeTestReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestReverted represents a Reverted event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestReverted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestRevertedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestRevertedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Reverted", logs: logs, sub: sub}, nil -} - -// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestReverted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestReverted) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseReverted(log types.Log) (*GatewayEVMUpgradeTestReverted, error) { - event := new(GatewayEVMUpgradeTestReverted) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestRevertedWithERC20Iterator struct { - Event *GatewayEVMUpgradeTestRevertedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestRevertedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUpgradeTestRevertedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestRevertedWithERC20Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestRevertedWithERC20) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMUpgradeTestRevertedWithERC20, error) { - event := new(GatewayEVMUpgradeTestRevertedWithERC20) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayEVMUpgradeTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestUpgradedIterator struct { - Event *GatewayEVMUpgradeTestUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayEVMUpgradeTestUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayEVMUpgradeTestUpgraded represents a Upgraded event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayEVMUpgradeTestUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &GatewayEVMUpgradeTestUpgradedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestUpgraded) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseUpgraded(log types.Log) (*GatewayEVMUpgradeTestUpgraded, error) { - event := new(GatewayEVMUpgradeTestUpgraded) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go deleted file mode 100644 index d3f0af38..00000000 --- a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20CustodyNewErrorsMetaData contains all meta data concerning the IERC20CustodyNewErrors contract. -var IERC20CustodyNewErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", -} - -// IERC20CustodyNewErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewErrorsMetaData.ABI instead. -var IERC20CustodyNewErrorsABI = IERC20CustodyNewErrorsMetaData.ABI - -// IERC20CustodyNewErrors is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewErrors struct { - IERC20CustodyNewErrorsCaller // Read-only binding to the contract - IERC20CustodyNewErrorsTransactor // Write-only binding to the contract - IERC20CustodyNewErrorsFilterer // Log filterer for contract events -} - -// IERC20CustodyNewErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20CustodyNewErrorsSession struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CustodyNewErrorsCallerSession struct { - Contract *IERC20CustodyNewErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20CustodyNewErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20CustodyNewErrorsTransactorSession struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsRaw struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCallerRaw struct { - Contract *IERC20CustodyNewErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactorRaw struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20CustodyNewErrors creates a new instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewErrors, error) { - contract, err := bindIERC20CustodyNewErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrors{IERC20CustodyNewErrorsCaller: IERC20CustodyNewErrorsCaller{contract: contract}, IERC20CustodyNewErrorsTransactor: IERC20CustodyNewErrorsTransactor{contract: contract}, IERC20CustodyNewErrorsFilterer: IERC20CustodyNewErrorsFilterer{contract: contract}}, nil -} - -// NewIERC20CustodyNewErrorsCaller creates a new read-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewErrorsCaller, error) { - contract, err := bindIERC20CustodyNewErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsCaller{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsTransactor creates a new write-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewErrorsTransactor, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsTransactor{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsFilterer creates a new log filterer instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewErrorsFilterer, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsFilterer{contract: contract}, nil -} - -// bindIERC20CustodyNewErrors binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go deleted file mode 100644 index bae33183..00000000 --- a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go +++ /dev/null @@ -1,645 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20CustodyNewEventsMetaData contains all meta data concerning the IERC20CustodyNewEvents contract. -var IERC20CustodyNewEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", -} - -// IERC20CustodyNewEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewEventsMetaData.ABI instead. -var IERC20CustodyNewEventsABI = IERC20CustodyNewEventsMetaData.ABI - -// IERC20CustodyNewEvents is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewEvents struct { - IERC20CustodyNewEventsCaller // Read-only binding to the contract - IERC20CustodyNewEventsTransactor // Write-only binding to the contract - IERC20CustodyNewEventsFilterer // Log filterer for contract events -} - -// IERC20CustodyNewEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20CustodyNewEventsSession struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CustodyNewEventsCallerSession struct { - Contract *IERC20CustodyNewEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20CustodyNewEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20CustodyNewEventsTransactorSession struct { - Contract *IERC20CustodyNewEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewEventsRaw struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to access the raw methods on -} - -// IERC20CustodyNewEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCallerRaw struct { - Contract *IERC20CustodyNewEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20CustodyNewEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactorRaw struct { - Contract *IERC20CustodyNewEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20CustodyNewEvents creates a new instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewEvents, error) { - contract, err := bindIERC20CustodyNewEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEvents{IERC20CustodyNewEventsCaller: IERC20CustodyNewEventsCaller{contract: contract}, IERC20CustodyNewEventsTransactor: IERC20CustodyNewEventsTransactor{contract: contract}, IERC20CustodyNewEventsFilterer: IERC20CustodyNewEventsFilterer{contract: contract}}, nil -} - -// NewIERC20CustodyNewEventsCaller creates a new read-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewEventsCaller, error) { - contract, err := bindIERC20CustodyNewEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsCaller{contract: contract}, nil -} - -// NewIERC20CustodyNewEventsTransactor creates a new write-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewEventsTransactor, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsTransactor{contract: contract}, nil -} - -// NewIERC20CustodyNewEventsFilterer creates a new log filterer instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewEventsFilterer, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsFilterer{contract: contract}, nil -} - -// bindIERC20CustodyNewEvents binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transact(opts, method, params...) -} - -// IERC20CustodyNewEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawIterator struct { - Event *IERC20CustodyNewEventsWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdraw represents a Withdraw event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdraw struct { - Token common.Address - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawIterator{contract: _IERC20CustodyNewEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyNewEventsWithdraw, error) { - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20CustodyNewEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCallIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCall struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndCallIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawAndCallIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyNewEventsWithdrawAndCall, error) { - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20CustodyNewEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevert struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndRevertIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawAndRevertIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyNewEventsWithdrawAndRevert, error) { - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevm.go b/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevm.go deleted file mode 100644 index a2e7ecdf..00000000 --- a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevm.go +++ /dev/null @@ -1,244 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IGatewayEVMMetaData contains all meta data concerning the IGatewayEVM contract. -var IGatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IGatewayEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayEVMMetaData.ABI instead. -var IGatewayEVMABI = IGatewayEVMMetaData.ABI - -// IGatewayEVM is an auto generated Go binding around an Ethereum contract. -type IGatewayEVM struct { - IGatewayEVMCaller // Read-only binding to the contract - IGatewayEVMTransactor // Write-only binding to the contract - IGatewayEVMFilterer // Log filterer for contract events -} - -// IGatewayEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayEVMSession struct { - Contract *IGatewayEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayEVMCallerSession struct { - Contract *IGatewayEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayEVMTransactorSession struct { - Contract *IGatewayEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayEVMRaw struct { - Contract *IGatewayEVM // Generic contract binding to access the raw methods on -} - -// IGatewayEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayEVMCallerRaw struct { - Contract *IGatewayEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayEVMTransactorRaw struct { - Contract *IGatewayEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayEVM creates a new instance of IGatewayEVM, bound to a specific deployed contract. -func NewIGatewayEVM(address common.Address, backend bind.ContractBackend) (*IGatewayEVM, error) { - contract, err := bindIGatewayEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayEVM{IGatewayEVMCaller: IGatewayEVMCaller{contract: contract}, IGatewayEVMTransactor: IGatewayEVMTransactor{contract: contract}, IGatewayEVMFilterer: IGatewayEVMFilterer{contract: contract}}, nil -} - -// NewIGatewayEVMCaller creates a new read-only instance of IGatewayEVM, bound to a specific deployed contract. -func NewIGatewayEVMCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMCaller, error) { - contract, err := bindIGatewayEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMCaller{contract: contract}, nil -} - -// NewIGatewayEVMTransactor creates a new write-only instance of IGatewayEVM, bound to a specific deployed contract. -func NewIGatewayEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMTransactor, error) { - contract, err := bindIGatewayEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMTransactor{contract: contract}, nil -} - -// NewIGatewayEVMFilterer creates a new log filterer instance of IGatewayEVM, bound to a specific deployed contract. -func NewIGatewayEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMFilterer, error) { - contract, err := bindIGatewayEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayEVMFilterer{contract: contract}, nil -} - -// bindIGatewayEVM binds a generic wrapper to an already deployed contract. -func bindIGatewayEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVM *IGatewayEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVM.Contract.IGatewayEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVM *IGatewayEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVM.Contract.IGatewayEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVM *IGatewayEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVM.Contract.IGatewayEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVM *IGatewayEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVM *IGatewayEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVM *IGatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVM.Contract.contract.Transact(opts, method, params...) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_IGatewayEVM *IGatewayEVMTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.contract.Transact(opts, "execute", destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_IGatewayEVM *IGatewayEVMSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.Execute(&_IGatewayEVM.TransactOpts, destination, data) -} - -// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. -// -// Solidity: function execute(address destination, bytes data) payable returns(bytes) -func (_IGatewayEVM *IGatewayEVMTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.Execute(&_IGatewayEVM.TransactOpts, destination, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.contract.Transact(opts, "executeWithERC20", token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.ExecuteWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) -} - -// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. -// -// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.ExecuteWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.contract.Transact(opts, "revertWithERC20", token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.RevertWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) -} - -// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. -// -// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() -func (_IGatewayEVM *IGatewayEVMTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IGatewayEVM.Contract.RevertWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) -} diff --git a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go b/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go deleted file mode 100644 index 5b894d97..00000000 --- a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IGatewayEVMErrorsMetaData contains all meta data concerning the IGatewayEVMErrors contract. -var IGatewayEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", -} - -// IGatewayEVMErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayEVMErrorsMetaData.ABI instead. -var IGatewayEVMErrorsABI = IGatewayEVMErrorsMetaData.ABI - -// IGatewayEVMErrors is an auto generated Go binding around an Ethereum contract. -type IGatewayEVMErrors struct { - IGatewayEVMErrorsCaller // Read-only binding to the contract - IGatewayEVMErrorsTransactor // Write-only binding to the contract - IGatewayEVMErrorsFilterer // Log filterer for contract events -} - -// IGatewayEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayEVMErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayEVMErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayEVMErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayEVMErrorsSession struct { - Contract *IGatewayEVMErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayEVMErrorsCallerSession struct { - Contract *IGatewayEVMErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayEVMErrorsTransactorSession struct { - Contract *IGatewayEVMErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayEVMErrorsRaw struct { - Contract *IGatewayEVMErrors // Generic contract binding to access the raw methods on -} - -// IGatewayEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayEVMErrorsCallerRaw struct { - Contract *IGatewayEVMErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayEVMErrorsTransactorRaw struct { - Contract *IGatewayEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayEVMErrors creates a new instance of IGatewayEVMErrors, bound to a specific deployed contract. -func NewIGatewayEVMErrors(address common.Address, backend bind.ContractBackend) (*IGatewayEVMErrors, error) { - contract, err := bindIGatewayEVMErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayEVMErrors{IGatewayEVMErrorsCaller: IGatewayEVMErrorsCaller{contract: contract}, IGatewayEVMErrorsTransactor: IGatewayEVMErrorsTransactor{contract: contract}, IGatewayEVMErrorsFilterer: IGatewayEVMErrorsFilterer{contract: contract}}, nil -} - -// NewIGatewayEVMErrorsCaller creates a new read-only instance of IGatewayEVMErrors, bound to a specific deployed contract. -func NewIGatewayEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMErrorsCaller, error) { - contract, err := bindIGatewayEVMErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMErrorsCaller{contract: contract}, nil -} - -// NewIGatewayEVMErrorsTransactor creates a new write-only instance of IGatewayEVMErrors, bound to a specific deployed contract. -func NewIGatewayEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMErrorsTransactor, error) { - contract, err := bindIGatewayEVMErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMErrorsTransactor{contract: contract}, nil -} - -// NewIGatewayEVMErrorsFilterer creates a new log filterer instance of IGatewayEVMErrors, bound to a specific deployed contract. -func NewIGatewayEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMErrorsFilterer, error) { - contract, err := bindIGatewayEVMErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayEVMErrorsFilterer{contract: contract}, nil -} - -// bindIGatewayEVMErrors binds a generic wrapper to an already deployed contract. -func bindIGatewayEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayEVMErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVMErrors *IGatewayEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVMErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVMErrors *IGatewayEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVMErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVMErrors *IGatewayEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVMErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmevents.go b/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmevents.go deleted file mode 100644 index b3f8a96a..00000000 --- a/pkg/contracts/prototypes/evm/igatewayevm.sol/igatewayevmevents.go +++ /dev/null @@ -1,1093 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IGatewayEVMEventsMetaData contains all meta data concerning the IGatewayEVMEvents contract. -var IGatewayEVMEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"}]", -} - -// IGatewayEVMEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayEVMEventsMetaData.ABI instead. -var IGatewayEVMEventsABI = IGatewayEVMEventsMetaData.ABI - -// IGatewayEVMEvents is an auto generated Go binding around an Ethereum contract. -type IGatewayEVMEvents struct { - IGatewayEVMEventsCaller // Read-only binding to the contract - IGatewayEVMEventsTransactor // Write-only binding to the contract - IGatewayEVMEventsFilterer // Log filterer for contract events -} - -// IGatewayEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayEVMEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayEVMEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayEVMEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayEVMEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayEVMEventsSession struct { - Contract *IGatewayEVMEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayEVMEventsCallerSession struct { - Contract *IGatewayEVMEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayEVMEventsTransactorSession struct { - Contract *IGatewayEVMEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayEVMEventsRaw struct { - Contract *IGatewayEVMEvents // Generic contract binding to access the raw methods on -} - -// IGatewayEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayEVMEventsCallerRaw struct { - Contract *IGatewayEVMEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayEVMEventsTransactorRaw struct { - Contract *IGatewayEVMEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayEVMEvents creates a new instance of IGatewayEVMEvents, bound to a specific deployed contract. -func NewIGatewayEVMEvents(address common.Address, backend bind.ContractBackend) (*IGatewayEVMEvents, error) { - contract, err := bindIGatewayEVMEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayEVMEvents{IGatewayEVMEventsCaller: IGatewayEVMEventsCaller{contract: contract}, IGatewayEVMEventsTransactor: IGatewayEVMEventsTransactor{contract: contract}, IGatewayEVMEventsFilterer: IGatewayEVMEventsFilterer{contract: contract}}, nil -} - -// NewIGatewayEVMEventsCaller creates a new read-only instance of IGatewayEVMEvents, bound to a specific deployed contract. -func NewIGatewayEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMEventsCaller, error) { - contract, err := bindIGatewayEVMEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsCaller{contract: contract}, nil -} - -// NewIGatewayEVMEventsTransactor creates a new write-only instance of IGatewayEVMEvents, bound to a specific deployed contract. -func NewIGatewayEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMEventsTransactor, error) { - contract, err := bindIGatewayEVMEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsTransactor{contract: contract}, nil -} - -// NewIGatewayEVMEventsFilterer creates a new log filterer instance of IGatewayEVMEvents, bound to a specific deployed contract. -func NewIGatewayEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMEventsFilterer, error) { - contract, err := bindIGatewayEVMEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsFilterer{contract: contract}, nil -} - -// bindIGatewayEVMEvents binds a generic wrapper to an already deployed contract. -func bindIGatewayEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayEVMEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVMEvents.Contract.IGatewayEVMEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVMEvents.Contract.IGatewayEVMEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVMEvents.Contract.IGatewayEVMEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayEVMEvents *IGatewayEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayEVMEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayEVMEvents *IGatewayEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayEVMEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayEVMEvents *IGatewayEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayEVMEvents.Contract.contract.Transact(opts, method, params...) -} - -// IGatewayEVMEventsCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsCallIterator struct { - Event *IGatewayEVMEventsCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsCall represents a Call event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsCall struct { - Sender common.Address - Receiver common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*IGatewayEVMEventsCallIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsCallIterator{contract: _IGatewayEVMEvents.contract, event: "Call", logs: logs, sub: sub}, nil -} - -// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Call", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsCall) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. -// -// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseCall(log types.Log) (*IGatewayEVMEventsCall, error) { - event := new(IGatewayEVMEventsCall) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayEVMEventsDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsDepositIterator struct { - Event *IGatewayEVMEventsDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsDeposit represents a Deposit event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsDeposit struct { - Sender common.Address - Receiver common.Address - Amount *big.Int - Asset common.Address - Payload []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*IGatewayEVMEventsDepositIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsDepositIterator{contract: _IGatewayEVMEvents.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var receiverRule []interface{} - for _, receiverItem := range receiver { - receiverRule = append(receiverRule, receiverItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsDeposit) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. -// -// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseDeposit(log types.Log) (*IGatewayEVMEventsDeposit, error) { - event := new(IGatewayEVMEventsDeposit) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayEVMEventsExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsExecutedIterator struct { - Event *IGatewayEVMEventsExecuted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsExecutedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsExecuted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsExecutedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsExecutedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsExecuted represents a Executed event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsExecuted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*IGatewayEVMEventsExecutedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsExecutedIterator{contract: _IGatewayEVMEvents.contract, event: "Executed", logs: logs, sub: sub}, nil -} - -// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsExecuted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Executed", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsExecuted) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Executed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. -// -// Solidity: event Executed(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseExecuted(log types.Log) (*IGatewayEVMEventsExecuted, error) { - event := new(IGatewayEVMEventsExecuted) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Executed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayEVMEventsExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsExecutedWithERC20Iterator struct { - Event *IGatewayEVMEventsExecutedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsExecutedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsExecutedWithERC20 represents a ExecutedWithERC20 event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsExecutedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IGatewayEVMEventsExecutedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsExecutedWithERC20Iterator{contract: _IGatewayEVMEvents.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsExecutedWithERC20) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. -// -// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseExecutedWithERC20(log types.Log) (*IGatewayEVMEventsExecutedWithERC20, error) { - event := new(IGatewayEVMEventsExecutedWithERC20) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayEVMEventsRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsRevertedIterator struct { - Event *IGatewayEVMEventsReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsReverted represents a Reverted event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsReverted struct { - Destination common.Address - Value *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*IGatewayEVMEventsRevertedIterator, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsRevertedIterator{contract: _IGatewayEVMEvents.contract, event: "Reverted", logs: logs, sub: sub}, nil -} - -// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsReverted, destination []common.Address) (event.Subscription, error) { - - var destinationRule []interface{} - for _, destinationItem := range destination { - destinationRule = append(destinationRule, destinationItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Reverted", destinationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsReverted) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Reverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. -// -// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseReverted(log types.Log) (*IGatewayEVMEventsReverted, error) { - event := new(IGatewayEVMEventsReverted) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Reverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayEVMEventsRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsRevertedWithERC20Iterator struct { - Event *IGatewayEVMEventsRevertedWithERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayEVMEventsRevertedWithERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayEVMEventsRevertedWithERC20 represents a RevertedWithERC20 event raised by the IGatewayEVMEvents contract. -type IGatewayEVMEventsRevertedWithERC20 struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IGatewayEVMEventsRevertedWithERC20Iterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IGatewayEVMEventsRevertedWithERC20Iterator{contract: _IGatewayEVMEvents.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil -} - -// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayEVMEventsRevertedWithERC20) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. -// -// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseRevertedWithERC20(log types.Log) (*IGatewayEVMEventsRevertedWithERC20, error) { - event := new(IGatewayEVMEventsRevertedWithERC20) - if err := _IGatewayEVMEvents.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/igatewayevm.sol/revertable.go b/pkg/contracts/prototypes/evm/igatewayevm.sol/revertable.go deleted file mode 100644 index 9219e11b..00000000 --- a/pkg/contracts/prototypes/evm/igatewayevm.sol/revertable.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// RevertableMetaData contains all meta data concerning the Revertable contract. -var RevertableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// RevertableABI is the input ABI used to generate the binding from. -// Deprecated: Use RevertableMetaData.ABI instead. -var RevertableABI = RevertableMetaData.ABI - -// Revertable is an auto generated Go binding around an Ethereum contract. -type Revertable struct { - RevertableCaller // Read-only binding to the contract - RevertableTransactor // Write-only binding to the contract - RevertableFilterer // Log filterer for contract events -} - -// RevertableCaller is an auto generated read-only Go binding around an Ethereum contract. -type RevertableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// RevertableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type RevertableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// RevertableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type RevertableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// RevertableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type RevertableSession struct { - Contract *Revertable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// RevertableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type RevertableCallerSession struct { - Contract *RevertableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// RevertableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type RevertableTransactorSession struct { - Contract *RevertableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// RevertableRaw is an auto generated low-level Go binding around an Ethereum contract. -type RevertableRaw struct { - Contract *Revertable // Generic contract binding to access the raw methods on -} - -// RevertableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type RevertableCallerRaw struct { - Contract *RevertableCaller // Generic read-only contract binding to access the raw methods on -} - -// RevertableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type RevertableTransactorRaw struct { - Contract *RevertableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewRevertable creates a new instance of Revertable, bound to a specific deployed contract. -func NewRevertable(address common.Address, backend bind.ContractBackend) (*Revertable, error) { - contract, err := bindRevertable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Revertable{RevertableCaller: RevertableCaller{contract: contract}, RevertableTransactor: RevertableTransactor{contract: contract}, RevertableFilterer: RevertableFilterer{contract: contract}}, nil -} - -// NewRevertableCaller creates a new read-only instance of Revertable, bound to a specific deployed contract. -func NewRevertableCaller(address common.Address, caller bind.ContractCaller) (*RevertableCaller, error) { - contract, err := bindRevertable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &RevertableCaller{contract: contract}, nil -} - -// NewRevertableTransactor creates a new write-only instance of Revertable, bound to a specific deployed contract. -func NewRevertableTransactor(address common.Address, transactor bind.ContractTransactor) (*RevertableTransactor, error) { - contract, err := bindRevertable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &RevertableTransactor{contract: contract}, nil -} - -// NewRevertableFilterer creates a new log filterer instance of Revertable, bound to a specific deployed contract. -func NewRevertableFilterer(address common.Address, filterer bind.ContractFilterer) (*RevertableFilterer, error) { - contract, err := bindRevertable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &RevertableFilterer{contract: contract}, nil -} - -// bindRevertable binds a generic wrapper to an already deployed contract. -func bindRevertable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := RevertableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Revertable *RevertableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Revertable.Contract.RevertableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Revertable *RevertableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Revertable.Contract.RevertableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Revertable *RevertableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Revertable.Contract.RevertableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Revertable *RevertableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Revertable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Revertable *RevertableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Revertable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Revertable *RevertableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Revertable.Contract.contract.Transact(opts, method, params...) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_Revertable *RevertableTransactor) OnRevert(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) { - return _Revertable.contract.Transact(opts, "onRevert", data) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_Revertable *RevertableSession) OnRevert(data []byte) (*types.Transaction, error) { - return _Revertable.Contract.OnRevert(&_Revertable.TransactOpts, data) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_Revertable *RevertableTransactorSession) OnRevert(data []byte) (*types.Transaction, error) { - return _Revertable.Contract.OnRevert(&_Revertable.TransactOpts, data) -} diff --git a/pkg/contracts/prototypes/evm/ireceiverevm.sol/ireceiverevmevents.go b/pkg/contracts/prototypes/evm/ireceiverevm.sol/ireceiverevmevents.go deleted file mode 100644 index c9841c66..00000000 --- a/pkg/contracts/prototypes/evm/ireceiverevm.sol/ireceiverevmevents.go +++ /dev/null @@ -1,862 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ireceiverevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IReceiverEVMEventsMetaData contains all meta data concerning the IReceiverEVMEvents contract. -var IReceiverEVMEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"ReceivedERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ReceivedNoParams\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"strs\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nums\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedNonPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReceivedRevert\",\"type\":\"event\"}]", -} - -// IReceiverEVMEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IReceiverEVMEventsMetaData.ABI instead. -var IReceiverEVMEventsABI = IReceiverEVMEventsMetaData.ABI - -// IReceiverEVMEvents is an auto generated Go binding around an Ethereum contract. -type IReceiverEVMEvents struct { - IReceiverEVMEventsCaller // Read-only binding to the contract - IReceiverEVMEventsTransactor // Write-only binding to the contract - IReceiverEVMEventsFilterer // Log filterer for contract events -} - -// IReceiverEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IReceiverEVMEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IReceiverEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IReceiverEVMEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IReceiverEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IReceiverEVMEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IReceiverEVMEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IReceiverEVMEventsSession struct { - Contract *IReceiverEVMEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IReceiverEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IReceiverEVMEventsCallerSession struct { - Contract *IReceiverEVMEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IReceiverEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IReceiverEVMEventsTransactorSession struct { - Contract *IReceiverEVMEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IReceiverEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IReceiverEVMEventsRaw struct { - Contract *IReceiverEVMEvents // Generic contract binding to access the raw methods on -} - -// IReceiverEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IReceiverEVMEventsCallerRaw struct { - Contract *IReceiverEVMEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IReceiverEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IReceiverEVMEventsTransactorRaw struct { - Contract *IReceiverEVMEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIReceiverEVMEvents creates a new instance of IReceiverEVMEvents, bound to a specific deployed contract. -func NewIReceiverEVMEvents(address common.Address, backend bind.ContractBackend) (*IReceiverEVMEvents, error) { - contract, err := bindIReceiverEVMEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IReceiverEVMEvents{IReceiverEVMEventsCaller: IReceiverEVMEventsCaller{contract: contract}, IReceiverEVMEventsTransactor: IReceiverEVMEventsTransactor{contract: contract}, IReceiverEVMEventsFilterer: IReceiverEVMEventsFilterer{contract: contract}}, nil -} - -// NewIReceiverEVMEventsCaller creates a new read-only instance of IReceiverEVMEvents, bound to a specific deployed contract. -func NewIReceiverEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IReceiverEVMEventsCaller, error) { - contract, err := bindIReceiverEVMEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IReceiverEVMEventsCaller{contract: contract}, nil -} - -// NewIReceiverEVMEventsTransactor creates a new write-only instance of IReceiverEVMEvents, bound to a specific deployed contract. -func NewIReceiverEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IReceiverEVMEventsTransactor, error) { - contract, err := bindIReceiverEVMEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IReceiverEVMEventsTransactor{contract: contract}, nil -} - -// NewIReceiverEVMEventsFilterer creates a new log filterer instance of IReceiverEVMEvents, bound to a specific deployed contract. -func NewIReceiverEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IReceiverEVMEventsFilterer, error) { - contract, err := bindIReceiverEVMEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IReceiverEVMEventsFilterer{contract: contract}, nil -} - -// bindIReceiverEVMEvents binds a generic wrapper to an already deployed contract. -func bindIReceiverEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IReceiverEVMEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IReceiverEVMEvents.Contract.IReceiverEVMEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IReceiverEVMEvents.Contract.IReceiverEVMEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IReceiverEVMEvents.Contract.IReceiverEVMEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IReceiverEVMEvents *IReceiverEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IReceiverEVMEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IReceiverEVMEvents *IReceiverEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IReceiverEVMEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IReceiverEVMEvents *IReceiverEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IReceiverEVMEvents.Contract.contract.Transact(opts, method, params...) -} - -// IReceiverEVMEventsReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedERC20Iterator struct { - Event *IReceiverEVMEventsReceivedERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IReceiverEVMEventsReceivedERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IReceiverEVMEventsReceivedERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IReceiverEVMEventsReceivedERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IReceiverEVMEventsReceivedERC20 represents a ReceivedERC20 event raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedERC20 struct { - Sender common.Address - Amount *big.Int - Token common.Address - Destination common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedERC20Iterator, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedERC20") - if err != nil { - return nil, err - } - return &IReceiverEVMEventsReceivedERC20Iterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil -} - -// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedERC20) (event.Subscription, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedERC20") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IReceiverEVMEventsReceivedERC20) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedERC20(log types.Log) (*IReceiverEVMEventsReceivedERC20, error) { - event := new(IReceiverEVMEventsReceivedERC20) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IReceiverEVMEventsReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedNoParamsIterator struct { - Event *IReceiverEVMEventsReceivedNoParams // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IReceiverEVMEventsReceivedNoParamsIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedNoParams) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedNoParams) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IReceiverEVMEventsReceivedNoParamsIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IReceiverEVMEventsReceivedNoParamsIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IReceiverEVMEventsReceivedNoParams represents a ReceivedNoParams event raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedNoParams struct { - Sender common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedNoParamsIterator, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedNoParams") - if err != nil { - return nil, err - } - return &IReceiverEVMEventsReceivedNoParamsIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil -} - -// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedNoParams) (event.Subscription, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedNoParams") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IReceiverEVMEventsReceivedNoParams) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedNoParams(log types.Log) (*IReceiverEVMEventsReceivedNoParams, error) { - event := new(IReceiverEVMEventsReceivedNoParams) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IReceiverEVMEventsReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedNonPayableIterator struct { - Event *IReceiverEVMEventsReceivedNonPayable // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IReceiverEVMEventsReceivedNonPayableIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedNonPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedNonPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IReceiverEVMEventsReceivedNonPayableIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IReceiverEVMEventsReceivedNonPayableIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IReceiverEVMEventsReceivedNonPayable represents a ReceivedNonPayable event raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedNonPayable struct { - Sender common.Address - Strs []string - Nums []*big.Int - Flag bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedNonPayableIterator, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedNonPayable") - if err != nil { - return nil, err - } - return &IReceiverEVMEventsReceivedNonPayableIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil -} - -// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedNonPayable) (event.Subscription, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedNonPayable") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IReceiverEVMEventsReceivedNonPayable) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedNonPayable(log types.Log) (*IReceiverEVMEventsReceivedNonPayable, error) { - event := new(IReceiverEVMEventsReceivedNonPayable) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IReceiverEVMEventsReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedPayableIterator struct { - Event *IReceiverEVMEventsReceivedPayable // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IReceiverEVMEventsReceivedPayableIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IReceiverEVMEventsReceivedPayableIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IReceiverEVMEventsReceivedPayableIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IReceiverEVMEventsReceivedPayable represents a ReceivedPayable event raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedPayable struct { - Sender common.Address - Value *big.Int - Str string - Num *big.Int - Flag bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedPayableIterator, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedPayable") - if err != nil { - return nil, err - } - return &IReceiverEVMEventsReceivedPayableIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil -} - -// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedPayable) (event.Subscription, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedPayable") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IReceiverEVMEventsReceivedPayable) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedPayable(log types.Log) (*IReceiverEVMEventsReceivedPayable, error) { - event := new(IReceiverEVMEventsReceivedPayable) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IReceiverEVMEventsReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedRevertIterator struct { - Event *IReceiverEVMEventsReceivedRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IReceiverEVMEventsReceivedRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IReceiverEVMEventsReceivedRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IReceiverEVMEventsReceivedRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IReceiverEVMEventsReceivedRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IReceiverEVMEventsReceivedRevert represents a ReceivedRevert event raised by the IReceiverEVMEvents contract. -type IReceiverEVMEventsReceivedRevert struct { - Sender common.Address - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedRevertIterator, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedRevert") - if err != nil { - return nil, err - } - return &IReceiverEVMEventsReceivedRevertIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil -} - -// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedRevert) (event.Subscription, error) { - - logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedRevert") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IReceiverEVMEventsReceivedRevert) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedRevert(log types.Log) (*IReceiverEVMEventsReceivedRevert, error) { - event := new(IReceiverEVMEventsReceivedRevert) - if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go b/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go deleted file mode 100644 index ecd0bb09..00000000 --- a/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go +++ /dev/null @@ -1,618 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izetaconnector - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IZetaConnectorEventsMetaData contains all meta data concerning the IZetaConnectorEvents contract. -var IZetaConnectorEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", -} - -// IZetaConnectorEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IZetaConnectorEventsMetaData.ABI instead. -var IZetaConnectorEventsABI = IZetaConnectorEventsMetaData.ABI - -// IZetaConnectorEvents is an auto generated Go binding around an Ethereum contract. -type IZetaConnectorEvents struct { - IZetaConnectorEventsCaller // Read-only binding to the contract - IZetaConnectorEventsTransactor // Write-only binding to the contract - IZetaConnectorEventsFilterer // Log filterer for contract events -} - -// IZetaConnectorEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IZetaConnectorEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IZetaConnectorEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IZetaConnectorEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IZetaConnectorEventsSession struct { - Contract *IZetaConnectorEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaConnectorEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IZetaConnectorEventsCallerSession struct { - Contract *IZetaConnectorEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IZetaConnectorEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IZetaConnectorEventsTransactorSession struct { - Contract *IZetaConnectorEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaConnectorEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IZetaConnectorEventsRaw struct { - Contract *IZetaConnectorEvents // Generic contract binding to access the raw methods on -} - -// IZetaConnectorEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IZetaConnectorEventsCallerRaw struct { - Contract *IZetaConnectorEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IZetaConnectorEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IZetaConnectorEventsTransactorRaw struct { - Contract *IZetaConnectorEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIZetaConnectorEvents creates a new instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEvents(address common.Address, backend bind.ContractBackend) (*IZetaConnectorEvents, error) { - contract, err := bindIZetaConnectorEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IZetaConnectorEvents{IZetaConnectorEventsCaller: IZetaConnectorEventsCaller{contract: contract}, IZetaConnectorEventsTransactor: IZetaConnectorEventsTransactor{contract: contract}, IZetaConnectorEventsFilterer: IZetaConnectorEventsFilterer{contract: contract}}, nil -} - -// NewIZetaConnectorEventsCaller creates a new read-only instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsCaller(address common.Address, caller bind.ContractCaller) (*IZetaConnectorEventsCaller, error) { - contract, err := bindIZetaConnectorEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsCaller{contract: contract}, nil -} - -// NewIZetaConnectorEventsTransactor creates a new write-only instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaConnectorEventsTransactor, error) { - contract, err := bindIZetaConnectorEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsTransactor{contract: contract}, nil -} - -// NewIZetaConnectorEventsFilterer creates a new log filterer instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaConnectorEventsFilterer, error) { - contract, err := bindIZetaConnectorEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsFilterer{contract: contract}, nil -} - -// bindIZetaConnectorEvents binds a generic wrapper to an already deployed contract. -func bindIZetaConnectorEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IZetaConnectorEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaConnectorEvents *IZetaConnectorEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaConnectorEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.contract.Transact(opts, method, params...) -} - -// IZetaConnectorEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawIterator struct { - Event *IZetaConnectorEventsWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdraw represents a Withdraw event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdraw struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawIterator{contract: _IZetaConnectorEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdraw, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdraw) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdraw(log types.Log) (*IZetaConnectorEventsWithdraw, error) { - event := new(IZetaConnectorEventsWithdraw) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IZetaConnectorEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndCallIterator struct { - Event *IZetaConnectorEventsWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndCall struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndCallIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawAndCallIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndCall, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdrawAndCall) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IZetaConnectorEventsWithdrawAndCall, error) { - event := new(IZetaConnectorEventsWithdrawAndCall) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IZetaConnectorEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndRevertIterator struct { - Event *IZetaConnectorEventsWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndRevert struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndRevertIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawAndRevertIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndRevert, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdrawAndRevert) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IZetaConnectorEventsWithdrawAndRevert, error) { - event := new(IZetaConnectorEventsWithdrawAndRevert) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/izetanonethnew.sol/izetanonethnew.go b/pkg/contracts/prototypes/evm/izetanonethnew.sol/izetanonethnew.go deleted file mode 100644 index 01229f86..00000000 --- a/pkg/contracts/prototypes/evm/izetanonethnew.sol/izetanonethnew.go +++ /dev/null @@ -1,687 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izetanonethnew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IZetaNonEthNewMetaData contains all meta data concerning the IZetaNonEthNew contract. -var IZetaNonEthNewMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IZetaNonEthNewABI is the input ABI used to generate the binding from. -// Deprecated: Use IZetaNonEthNewMetaData.ABI instead. -var IZetaNonEthNewABI = IZetaNonEthNewMetaData.ABI - -// IZetaNonEthNew is an auto generated Go binding around an Ethereum contract. -type IZetaNonEthNew struct { - IZetaNonEthNewCaller // Read-only binding to the contract - IZetaNonEthNewTransactor // Write-only binding to the contract - IZetaNonEthNewFilterer // Log filterer for contract events -} - -// IZetaNonEthNewCaller is an auto generated read-only Go binding around an Ethereum contract. -type IZetaNonEthNewCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaNonEthNewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IZetaNonEthNewTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaNonEthNewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IZetaNonEthNewFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaNonEthNewSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IZetaNonEthNewSession struct { - Contract *IZetaNonEthNew // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaNonEthNewCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IZetaNonEthNewCallerSession struct { - Contract *IZetaNonEthNewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IZetaNonEthNewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IZetaNonEthNewTransactorSession struct { - Contract *IZetaNonEthNewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaNonEthNewRaw is an auto generated low-level Go binding around an Ethereum contract. -type IZetaNonEthNewRaw struct { - Contract *IZetaNonEthNew // Generic contract binding to access the raw methods on -} - -// IZetaNonEthNewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IZetaNonEthNewCallerRaw struct { - Contract *IZetaNonEthNewCaller // Generic read-only contract binding to access the raw methods on -} - -// IZetaNonEthNewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IZetaNonEthNewTransactorRaw struct { - Contract *IZetaNonEthNewTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIZetaNonEthNew creates a new instance of IZetaNonEthNew, bound to a specific deployed contract. -func NewIZetaNonEthNew(address common.Address, backend bind.ContractBackend) (*IZetaNonEthNew, error) { - contract, err := bindIZetaNonEthNew(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IZetaNonEthNew{IZetaNonEthNewCaller: IZetaNonEthNewCaller{contract: contract}, IZetaNonEthNewTransactor: IZetaNonEthNewTransactor{contract: contract}, IZetaNonEthNewFilterer: IZetaNonEthNewFilterer{contract: contract}}, nil -} - -// NewIZetaNonEthNewCaller creates a new read-only instance of IZetaNonEthNew, bound to a specific deployed contract. -func NewIZetaNonEthNewCaller(address common.Address, caller bind.ContractCaller) (*IZetaNonEthNewCaller, error) { - contract, err := bindIZetaNonEthNew(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IZetaNonEthNewCaller{contract: contract}, nil -} - -// NewIZetaNonEthNewTransactor creates a new write-only instance of IZetaNonEthNew, bound to a specific deployed contract. -func NewIZetaNonEthNewTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaNonEthNewTransactor, error) { - contract, err := bindIZetaNonEthNew(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IZetaNonEthNewTransactor{contract: contract}, nil -} - -// NewIZetaNonEthNewFilterer creates a new log filterer instance of IZetaNonEthNew, bound to a specific deployed contract. -func NewIZetaNonEthNewFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaNonEthNewFilterer, error) { - contract, err := bindIZetaNonEthNew(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IZetaNonEthNewFilterer{contract: contract}, nil -} - -// bindIZetaNonEthNew binds a generic wrapper to an already deployed contract. -func bindIZetaNonEthNew(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IZetaNonEthNewMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaNonEthNew *IZetaNonEthNewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaNonEthNew.Contract.IZetaNonEthNewCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaNonEthNew *IZetaNonEthNewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.IZetaNonEthNewTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaNonEthNew *IZetaNonEthNewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.IZetaNonEthNewTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaNonEthNew *IZetaNonEthNewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaNonEthNew.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaNonEthNew *IZetaNonEthNewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaNonEthNew *IZetaNonEthNewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IZetaNonEthNew.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZetaNonEthNew.Contract.Allowance(&_IZetaNonEthNew.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZetaNonEthNew.Contract.Allowance(&_IZetaNonEthNew.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IZetaNonEthNew.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IZetaNonEthNew.Contract.BalanceOf(&_IZetaNonEthNew.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IZetaNonEthNew.Contract.BalanceOf(&_IZetaNonEthNew.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZetaNonEthNew.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewSession) TotalSupply() (*big.Int, error) { - return _IZetaNonEthNew.Contract.TotalSupply(&_IZetaNonEthNew.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) TotalSupply() (*big.Int, error) { - return _IZetaNonEthNew.Contract.TotalSupply(&_IZetaNonEthNew.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Approve(&_IZetaNonEthNew.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Approve(&_IZetaNonEthNew.TransactOpts, spender, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_IZetaNonEthNew *IZetaNonEthNewTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.contract.Transact(opts, "burnFrom", account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_IZetaNonEthNew *IZetaNonEthNewSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.BurnFrom(&_IZetaNonEthNew.TransactOpts, account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.BurnFrom(&_IZetaNonEthNew.TransactOpts, account, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _IZetaNonEthNew.contract.Transact(opts, "mint", mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_IZetaNonEthNew *IZetaNonEthNewSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Mint(&_IZetaNonEthNew.TransactOpts, mintee, value, internalSendHash) -} - -// Mint is a paid mutator transaction binding the contract method 0x1e458bee. -// -// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() -func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Mint(&_IZetaNonEthNew.TransactOpts, mintee, value, internalSendHash) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Transfer(&_IZetaNonEthNew.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.Transfer(&_IZetaNonEthNew.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.TransferFrom(&_IZetaNonEthNew.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZetaNonEthNew.Contract.TransferFrom(&_IZetaNonEthNew.TransactOpts, from, to, amount) -} - -// IZetaNonEthNewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IZetaNonEthNew contract. -type IZetaNonEthNewApprovalIterator struct { - Event *IZetaNonEthNewApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaNonEthNewApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaNonEthNewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaNonEthNewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaNonEthNewApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaNonEthNewApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaNonEthNewApproval represents a Approval event raised by the IZetaNonEthNew contract. -type IZetaNonEthNewApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IZetaNonEthNewApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IZetaNonEthNew.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IZetaNonEthNewApprovalIterator{contract: _IZetaNonEthNew.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IZetaNonEthNewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IZetaNonEthNew.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaNonEthNewApproval) - if err := _IZetaNonEthNew.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) ParseApproval(log types.Log) (*IZetaNonEthNewApproval, error) { - event := new(IZetaNonEthNewApproval) - if err := _IZetaNonEthNew.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IZetaNonEthNewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IZetaNonEthNew contract. -type IZetaNonEthNewTransferIterator struct { - Event *IZetaNonEthNewTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaNonEthNewTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaNonEthNewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaNonEthNewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaNonEthNewTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaNonEthNewTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaNonEthNewTransfer represents a Transfer event raised by the IZetaNonEthNew contract. -type IZetaNonEthNewTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IZetaNonEthNewTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaNonEthNew.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IZetaNonEthNewTransferIterator{contract: _IZetaNonEthNew.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IZetaNonEthNewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaNonEthNew.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaNonEthNewTransfer) - if err := _IZetaNonEthNew.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IZetaNonEthNew *IZetaNonEthNewFilterer) ParseTransfer(log types.Log) (*IZetaNonEthNewTransfer, error) { - event := new(IZetaNonEthNewTransfer) - if err := _IZetaNonEthNew.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go b/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go deleted file mode 100644 index 0780dd48..00000000 --- a/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go +++ /dev/null @@ -1,1052 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package receiverevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ReceiverEVMMetaData contains all meta data concerning the ReceiverEVM contract. -var ReceiverEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"ReceivedERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ReceivedNoParams\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"strs\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nums\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedNonPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReceivedRevert\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"receiveERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"receiveERC20Partial\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"receiveNoParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"strs\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"nums\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"receiveNonPayable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"receivePayable\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220806b40b0ed017d4b60c2eaaa0b400159c25423da3eb36986617bf147e45550f364736f6c63430008070033", -} - -// ReceiverEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use ReceiverEVMMetaData.ABI instead. -var ReceiverEVMABI = ReceiverEVMMetaData.ABI - -// ReceiverEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ReceiverEVMMetaData.Bin instead. -var ReceiverEVMBin = ReceiverEVMMetaData.Bin - -// DeployReceiverEVM deploys a new Ethereum contract, binding an instance of ReceiverEVM to it. -func DeployReceiverEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ReceiverEVM, error) { - parsed, err := ReceiverEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ReceiverEVMBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ReceiverEVM{ReceiverEVMCaller: ReceiverEVMCaller{contract: contract}, ReceiverEVMTransactor: ReceiverEVMTransactor{contract: contract}, ReceiverEVMFilterer: ReceiverEVMFilterer{contract: contract}}, nil -} - -// ReceiverEVM is an auto generated Go binding around an Ethereum contract. -type ReceiverEVM struct { - ReceiverEVMCaller // Read-only binding to the contract - ReceiverEVMTransactor // Write-only binding to the contract - ReceiverEVMFilterer // Log filterer for contract events -} - -// ReceiverEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReceiverEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiverEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReceiverEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiverEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReceiverEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReceiverEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReceiverEVMSession struct { - Contract *ReceiverEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReceiverEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReceiverEVMCallerSession struct { - Contract *ReceiverEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReceiverEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReceiverEVMTransactorSession struct { - Contract *ReceiverEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReceiverEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReceiverEVMRaw struct { - Contract *ReceiverEVM // Generic contract binding to access the raw methods on -} - -// ReceiverEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReceiverEVMCallerRaw struct { - Contract *ReceiverEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// ReceiverEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReceiverEVMTransactorRaw struct { - Contract *ReceiverEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReceiverEVM creates a new instance of ReceiverEVM, bound to a specific deployed contract. -func NewReceiverEVM(address common.Address, backend bind.ContractBackend) (*ReceiverEVM, error) { - contract, err := bindReceiverEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReceiverEVM{ReceiverEVMCaller: ReceiverEVMCaller{contract: contract}, ReceiverEVMTransactor: ReceiverEVMTransactor{contract: contract}, ReceiverEVMFilterer: ReceiverEVMFilterer{contract: contract}}, nil -} - -// NewReceiverEVMCaller creates a new read-only instance of ReceiverEVM, bound to a specific deployed contract. -func NewReceiverEVMCaller(address common.Address, caller bind.ContractCaller) (*ReceiverEVMCaller, error) { - contract, err := bindReceiverEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReceiverEVMCaller{contract: contract}, nil -} - -// NewReceiverEVMTransactor creates a new write-only instance of ReceiverEVM, bound to a specific deployed contract. -func NewReceiverEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ReceiverEVMTransactor, error) { - contract, err := bindReceiverEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReceiverEVMTransactor{contract: contract}, nil -} - -// NewReceiverEVMFilterer creates a new log filterer instance of ReceiverEVM, bound to a specific deployed contract. -func NewReceiverEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ReceiverEVMFilterer, error) { - contract, err := bindReceiverEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReceiverEVMFilterer{contract: contract}, nil -} - -// bindReceiverEVM binds a generic wrapper to an already deployed contract. -func bindReceiverEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReceiverEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReceiverEVM *ReceiverEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReceiverEVM.Contract.ReceiverEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReceiverEVM *ReceiverEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiverEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReceiverEVM *ReceiverEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiverEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReceiverEVM *ReceiverEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReceiverEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReceiverEVM *ReceiverEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiverEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReceiverEVM *ReceiverEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReceiverEVM.Contract.contract.Transact(opts, method, params...) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_ReceiverEVM *ReceiverEVMTransactor) OnRevert(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "onRevert", data) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_ReceiverEVM *ReceiverEVMSession) OnRevert(data []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.OnRevert(&_ReceiverEVM.TransactOpts, data) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. -// -// Solidity: function onRevert(bytes data) returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) OnRevert(data []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.OnRevert(&_ReceiverEVM.TransactOpts, data) -} - -// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. -// -// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveERC20(opts *bind.TransactOpts, amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "receiveERC20", amount, token, destination) -} - -// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. -// -// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMSession) ReceiveERC20(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveERC20(&_ReceiverEVM.TransactOpts, amount, token, destination) -} - -// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. -// -// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveERC20(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveERC20(&_ReceiverEVM.TransactOpts, amount, token, destination) -} - -// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. -// -// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveERC20Partial(opts *bind.TransactOpts, amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "receiveERC20Partial", amount, token, destination) -} - -// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. -// -// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMSession) ReceiveERC20Partial(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveERC20Partial(&_ReceiverEVM.TransactOpts, amount, token, destination) -} - -// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. -// -// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveERC20Partial(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveERC20Partial(&_ReceiverEVM.TransactOpts, amount, token, destination) -} - -// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. -// -// Solidity: function receiveNoParams() returns() -func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveNoParams(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "receiveNoParams") -} - -// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. -// -// Solidity: function receiveNoParams() returns() -func (_ReceiverEVM *ReceiverEVMSession) ReceiveNoParams() (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveNoParams(&_ReceiverEVM.TransactOpts) -} - -// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. -// -// Solidity: function receiveNoParams() returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveNoParams() (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveNoParams(&_ReceiverEVM.TransactOpts) -} - -// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. -// -// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() -func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveNonPayable(opts *bind.TransactOpts, strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "receiveNonPayable", strs, nums, flag) -} - -// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. -// -// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() -func (_ReceiverEVM *ReceiverEVMSession) ReceiveNonPayable(strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveNonPayable(&_ReceiverEVM.TransactOpts, strs, nums, flag) -} - -// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. -// -// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveNonPayable(strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceiveNonPayable(&_ReceiverEVM.TransactOpts, strs, nums, flag) -} - -// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. -// -// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() -func (_ReceiverEVM *ReceiverEVMTransactor) ReceivePayable(opts *bind.TransactOpts, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "receivePayable", str, num, flag) -} - -// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. -// -// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() -func (_ReceiverEVM *ReceiverEVMSession) ReceivePayable(str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceivePayable(&_ReceiverEVM.TransactOpts, str, num, flag) -} - -// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. -// -// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceivePayable(str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _ReceiverEVM.Contract.ReceivePayable(&_ReceiverEVM.TransactOpts, str, num, flag) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ReceiverEVM *ReceiverEVMTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _ReceiverEVM.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ReceiverEVM *ReceiverEVMSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.Fallback(&_ReceiverEVM.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.Fallback(&_ReceiverEVM.TransactOpts, calldata) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ReceiverEVM *ReceiverEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReceiverEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ReceiverEVM *ReceiverEVMSession) Receive() (*types.Transaction, error) { - return _ReceiverEVM.Contract.Receive(&_ReceiverEVM.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ReceiverEVM *ReceiverEVMTransactorSession) Receive() (*types.Transaction, error) { - return _ReceiverEVM.Contract.Receive(&_ReceiverEVM.TransactOpts) -} - -// ReceiverEVMReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the ReceiverEVM contract. -type ReceiverEVMReceivedERC20Iterator struct { - Event *ReceiverEVMReceivedERC20 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReceiverEVMReceivedERC20Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedERC20) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReceiverEVMReceivedERC20Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReceiverEVMReceivedERC20Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReceiverEVMReceivedERC20 represents a ReceivedERC20 event raised by the ReceiverEVM contract. -type ReceiverEVMReceivedERC20 struct { - Sender common.Address - Amount *big.Int - Token common.Address - Destination common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*ReceiverEVMReceivedERC20Iterator, error) { - - logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedERC20") - if err != nil { - return nil, err - } - return &ReceiverEVMReceivedERC20Iterator{contract: _ReceiverEVM.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil -} - -// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedERC20) (event.Subscription, error) { - - logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedERC20") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReceiverEVMReceivedERC20) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. -// -// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) -func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedERC20(log types.Log) (*ReceiverEVMReceivedERC20, error) { - event := new(ReceiverEVMReceivedERC20) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReceiverEVMReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the ReceiverEVM contract. -type ReceiverEVMReceivedNoParamsIterator struct { - Event *ReceiverEVMReceivedNoParams // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReceiverEVMReceivedNoParamsIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedNoParams) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedNoParams) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReceiverEVMReceivedNoParamsIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReceiverEVMReceivedNoParamsIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReceiverEVMReceivedNoParams represents a ReceivedNoParams event raised by the ReceiverEVM contract. -type ReceiverEVMReceivedNoParams struct { - Sender common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*ReceiverEVMReceivedNoParamsIterator, error) { - - logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedNoParams") - if err != nil { - return nil, err - } - return &ReceiverEVMReceivedNoParamsIterator{contract: _ReceiverEVM.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil -} - -// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedNoParams) (event.Subscription, error) { - - logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedNoParams") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReceiverEVMReceivedNoParams) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. -// -// Solidity: event ReceivedNoParams(address sender) -func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedNoParams(log types.Log) (*ReceiverEVMReceivedNoParams, error) { - event := new(ReceiverEVMReceivedNoParams) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReceiverEVMReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the ReceiverEVM contract. -type ReceiverEVMReceivedNonPayableIterator struct { - Event *ReceiverEVMReceivedNonPayable // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReceiverEVMReceivedNonPayableIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedNonPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedNonPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReceiverEVMReceivedNonPayableIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReceiverEVMReceivedNonPayableIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReceiverEVMReceivedNonPayable represents a ReceivedNonPayable event raised by the ReceiverEVM contract. -type ReceiverEVMReceivedNonPayable struct { - Sender common.Address - Strs []string - Nums []*big.Int - Flag bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*ReceiverEVMReceivedNonPayableIterator, error) { - - logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedNonPayable") - if err != nil { - return nil, err - } - return &ReceiverEVMReceivedNonPayableIterator{contract: _ReceiverEVM.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil -} - -// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedNonPayable) (event.Subscription, error) { - - logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedNonPayable") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReceiverEVMReceivedNonPayable) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. -// -// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedNonPayable(log types.Log) (*ReceiverEVMReceivedNonPayable, error) { - event := new(ReceiverEVMReceivedNonPayable) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReceiverEVMReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the ReceiverEVM contract. -type ReceiverEVMReceivedPayableIterator struct { - Event *ReceiverEVMReceivedPayable // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReceiverEVMReceivedPayableIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedPayable) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReceiverEVMReceivedPayableIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReceiverEVMReceivedPayableIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReceiverEVMReceivedPayable represents a ReceivedPayable event raised by the ReceiverEVM contract. -type ReceiverEVMReceivedPayable struct { - Sender common.Address - Value *big.Int - Str string - Num *big.Int - Flag bool - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*ReceiverEVMReceivedPayableIterator, error) { - - logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedPayable") - if err != nil { - return nil, err - } - return &ReceiverEVMReceivedPayableIterator{contract: _ReceiverEVM.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil -} - -// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedPayable) (event.Subscription, error) { - - logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedPayable") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReceiverEVMReceivedPayable) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. -// -// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) -func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedPayable(log types.Log) (*ReceiverEVMReceivedPayable, error) { - event := new(ReceiverEVMReceivedPayable) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ReceiverEVMReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the ReceiverEVM contract. -type ReceiverEVMReceivedRevertIterator struct { - Event *ReceiverEVMReceivedRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReceiverEVMReceivedRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReceiverEVMReceivedRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReceiverEVMReceivedRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReceiverEVMReceivedRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReceiverEVMReceivedRevert represents a ReceivedRevert event raised by the ReceiverEVM contract. -type ReceiverEVMReceivedRevert struct { - Sender common.Address - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*ReceiverEVMReceivedRevertIterator, error) { - - logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedRevert") - if err != nil { - return nil, err - } - return &ReceiverEVMReceivedRevertIterator{contract: _ReceiverEVM.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil -} - -// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedRevert) (event.Subscription, error) { - - logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedRevert") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReceiverEVMReceivedRevert) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. -// -// Solidity: event ReceivedRevert(address sender, bytes data) -func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedRevert(log types.Log) (*ReceiverEVMReceivedRevert, error) { - event := new(ReceiverEVMReceivedRevert) - if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go b/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go deleted file mode 100644 index c8fd605c..00000000 --- a/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go +++ /dev/null @@ -1,823 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package testerc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// TestERC20MetaData contains all meta data concerning the TestERC20 contract. -var TestERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220fcfdc568a663fff3ad57cec6847cf2da019cf465788683cdfa49393f729d6a9f64736f6c63430008070033", -} - -// TestERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use TestERC20MetaData.ABI instead. -var TestERC20ABI = TestERC20MetaData.ABI - -// TestERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use TestERC20MetaData.Bin instead. -var TestERC20Bin = TestERC20MetaData.Bin - -// DeployTestERC20 deploys a new Ethereum contract, binding an instance of TestERC20 to it. -func DeployTestERC20(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *TestERC20, error) { - parsed, err := TestERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TestERC20Bin), backend, name, symbol) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &TestERC20{TestERC20Caller: TestERC20Caller{contract: contract}, TestERC20Transactor: TestERC20Transactor{contract: contract}, TestERC20Filterer: TestERC20Filterer{contract: contract}}, nil -} - -// TestERC20 is an auto generated Go binding around an Ethereum contract. -type TestERC20 struct { - TestERC20Caller // Read-only binding to the contract - TestERC20Transactor // Write-only binding to the contract - TestERC20Filterer // Log filterer for contract events -} - -// TestERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type TestERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type TestERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TestERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TestERC20Session struct { - Contract *TestERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TestERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TestERC20CallerSession struct { - Contract *TestERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TestERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TestERC20TransactorSession struct { - Contract *TestERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TestERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type TestERC20Raw struct { - Contract *TestERC20 // Generic contract binding to access the raw methods on -} - -// TestERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TestERC20CallerRaw struct { - Contract *TestERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// TestERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TestERC20TransactorRaw struct { - Contract *TestERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewTestERC20 creates a new instance of TestERC20, bound to a specific deployed contract. -func NewTestERC20(address common.Address, backend bind.ContractBackend) (*TestERC20, error) { - contract, err := bindTestERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TestERC20{TestERC20Caller: TestERC20Caller{contract: contract}, TestERC20Transactor: TestERC20Transactor{contract: contract}, TestERC20Filterer: TestERC20Filterer{contract: contract}}, nil -} - -// NewTestERC20Caller creates a new read-only instance of TestERC20, bound to a specific deployed contract. -func NewTestERC20Caller(address common.Address, caller bind.ContractCaller) (*TestERC20Caller, error) { - contract, err := bindTestERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TestERC20Caller{contract: contract}, nil -} - -// NewTestERC20Transactor creates a new write-only instance of TestERC20, bound to a specific deployed contract. -func NewTestERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*TestERC20Transactor, error) { - contract, err := bindTestERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TestERC20Transactor{contract: contract}, nil -} - -// NewTestERC20Filterer creates a new log filterer instance of TestERC20, bound to a specific deployed contract. -func NewTestERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*TestERC20Filterer, error) { - contract, err := bindTestERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TestERC20Filterer{contract: contract}, nil -} - -// bindTestERC20 binds a generic wrapper to an already deployed contract. -func bindTestERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TestERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TestERC20 *TestERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TestERC20.Contract.TestERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TestERC20 *TestERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TestERC20.Contract.TestERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TestERC20 *TestERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TestERC20.Contract.TestERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TestERC20 *TestERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TestERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TestERC20 *TestERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TestERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TestERC20 *TestERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TestERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_TestERC20 *TestERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_TestERC20 *TestERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _TestERC20.Contract.Allowance(&_TestERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_TestERC20 *TestERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _TestERC20.Contract.Allowance(&_TestERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_TestERC20 *TestERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_TestERC20 *TestERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _TestERC20.Contract.BalanceOf(&_TestERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_TestERC20 *TestERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _TestERC20.Contract.BalanceOf(&_TestERC20.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_TestERC20 *TestERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_TestERC20 *TestERC20Session) Decimals() (uint8, error) { - return _TestERC20.Contract.Decimals(&_TestERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_TestERC20 *TestERC20CallerSession) Decimals() (uint8, error) { - return _TestERC20.Contract.Decimals(&_TestERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_TestERC20 *TestERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_TestERC20 *TestERC20Session) Name() (string, error) { - return _TestERC20.Contract.Name(&_TestERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_TestERC20 *TestERC20CallerSession) Name() (string, error) { - return _TestERC20.Contract.Name(&_TestERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_TestERC20 *TestERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_TestERC20 *TestERC20Session) Symbol() (string, error) { - return _TestERC20.Contract.Symbol(&_TestERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_TestERC20 *TestERC20CallerSession) Symbol() (string, error) { - return _TestERC20.Contract.Symbol(&_TestERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_TestERC20 *TestERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TestERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_TestERC20 *TestERC20Session) TotalSupply() (*big.Int, error) { - return _TestERC20.Contract.TotalSupply(&_TestERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_TestERC20 *TestERC20CallerSession) TotalSupply() (*big.Int, error) { - return _TestERC20.Contract.TotalSupply(&_TestERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Approve(&_TestERC20.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Approve(&_TestERC20.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_TestERC20 *TestERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_TestERC20 *TestERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.DecreaseAllowance(&_TestERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_TestERC20 *TestERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.DecreaseAllowance(&_TestERC20.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_TestERC20 *TestERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_TestERC20 *TestERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.IncreaseAllowance(&_TestERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_TestERC20 *TestERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.IncreaseAllowance(&_TestERC20.TransactOpts, spender, addedValue) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address to, uint256 amount) returns() -func (_TestERC20 *TestERC20Transactor) Mint(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "mint", to, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address to, uint256 amount) returns() -func (_TestERC20 *TestERC20Session) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Mint(&_TestERC20.TransactOpts, to, amount) -} - -// Mint is a paid mutator transaction binding the contract method 0x40c10f19. -// -// Solidity: function mint(address to, uint256 amount) returns() -func (_TestERC20 *TestERC20TransactorSession) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Mint(&_TestERC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Transfer(&_TestERC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.Transfer(&_TestERC20.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.TransferFrom(&_TestERC20.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_TestERC20 *TestERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TestERC20.Contract.TransferFrom(&_TestERC20.TransactOpts, from, to, amount) -} - -// TestERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the TestERC20 contract. -type TestERC20ApprovalIterator struct { - Event *TestERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TestERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TestERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TestERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TestERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TestERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TestERC20Approval represents a Approval event raised by the TestERC20 contract. -type TestERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_TestERC20 *TestERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*TestERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _TestERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &TestERC20ApprovalIterator{contract: _TestERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_TestERC20 *TestERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *TestERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _TestERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TestERC20Approval) - if err := _TestERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_TestERC20 *TestERC20Filterer) ParseApproval(log types.Log) (*TestERC20Approval, error) { - event := new(TestERC20Approval) - if err := _TestERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TestERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the TestERC20 contract. -type TestERC20TransferIterator struct { - Event *TestERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TestERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TestERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TestERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TestERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TestERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TestERC20Transfer represents a Transfer event raised by the TestERC20 contract. -type TestERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_TestERC20 *TestERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*TestERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _TestERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &TestERC20TransferIterator{contract: _TestERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_TestERC20 *TestERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *TestERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _TestERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TestERC20Transfer) - if err := _TestERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_TestERC20 *TestERC20Filterer) ParseTransfer(log types.Log) (*TestERC20Transfer, error) { - event := new(TestERC20Transfer) - if err := _TestERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go deleted file mode 100644 index 16797a2e..00000000 --- a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go +++ /dev/null @@ -1,817 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectornative - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. -var ZetaConnectorNativeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033", -} - -// ZetaConnectorNativeABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorNativeMetaData.ABI instead. -var ZetaConnectorNativeABI = ZetaConnectorNativeMetaData.ABI - -// ZetaConnectorNativeBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorNativeMetaData.Bin instead. -var ZetaConnectorNativeBin = ZetaConnectorNativeMetaData.Bin - -// DeployZetaConnectorNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNative to it. -func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { - parsed, err := ZetaConnectorNativeMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorNative{ZetaConnectorNativeCaller: ZetaConnectorNativeCaller{contract: contract}, ZetaConnectorNativeTransactor: ZetaConnectorNativeTransactor{contract: contract}, ZetaConnectorNativeFilterer: ZetaConnectorNativeFilterer{contract: contract}}, nil -} - -// ZetaConnectorNative is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorNative struct { - ZetaConnectorNativeCaller // Read-only binding to the contract - ZetaConnectorNativeTransactor // Write-only binding to the contract - ZetaConnectorNativeFilterer // Log filterer for contract events -} - -// ZetaConnectorNativeCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorNativeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNativeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorNativeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNativeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorNativeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNativeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorNativeSession struct { - Contract *ZetaConnectorNative // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNativeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorNativeCallerSession struct { - Contract *ZetaConnectorNativeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorNativeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorNativeTransactorSession struct { - Contract *ZetaConnectorNativeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNativeRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorNativeRaw struct { - Contract *ZetaConnectorNative // Generic contract binding to access the raw methods on -} - -// ZetaConnectorNativeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorNativeCallerRaw struct { - Contract *ZetaConnectorNativeCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorNativeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorNativeTransactorRaw struct { - Contract *ZetaConnectorNativeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorNative creates a new instance of ZetaConnectorNative, bound to a specific deployed contract. -func NewZetaConnectorNative(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNative, error) { - contract, err := bindZetaConnectorNative(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorNative{ZetaConnectorNativeCaller: ZetaConnectorNativeCaller{contract: contract}, ZetaConnectorNativeTransactor: ZetaConnectorNativeTransactor{contract: contract}, ZetaConnectorNativeFilterer: ZetaConnectorNativeFilterer{contract: contract}}, nil -} - -// NewZetaConnectorNativeCaller creates a new read-only instance of ZetaConnectorNative, bound to a specific deployed contract. -func NewZetaConnectorNativeCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNativeCaller, error) { - contract, err := bindZetaConnectorNative(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeCaller{contract: contract}, nil -} - -// NewZetaConnectorNativeTransactor creates a new write-only instance of ZetaConnectorNative, bound to a specific deployed contract. -func NewZetaConnectorNativeTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNativeTransactor, error) { - contract, err := bindZetaConnectorNative(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeTransactor{contract: contract}, nil -} - -// NewZetaConnectorNativeFilterer creates a new log filterer instance of ZetaConnectorNative, bound to a specific deployed contract. -func NewZetaConnectorNativeFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNativeFilterer, error) { - contract, err := bindZetaConnectorNative(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeFilterer{contract: contract}, nil -} - -// bindZetaConnectorNative binds a generic wrapper to an already deployed contract. -func bindZetaConnectorNative(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorNativeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNative.Contract.ZetaConnectorNativeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.ZetaConnectorNativeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.ZetaConnectorNativeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNative *ZetaConnectorNativeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNative.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.contract.Transact(opts, method, params...) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNative.contract.Call(opts, &out, "gateway") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeSession) Gateway() (common.Address, error) { - return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) Gateway() (common.Address, error) { - return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNative.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNative.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNative.Contract.ZetaToken(&_ZetaConnectorNative.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNative.Contract.ZetaToken(&_ZetaConnectorNative.CallOpts) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNative.contract.Transact(opts, "receiveTokens", amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.ReceiveTokens(&_ZetaConnectorNative.TransactOpts, amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.ReceiveTokens(&_ZetaConnectorNative.TransactOpts, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.contract.Transact(opts, "withdraw", to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) -} - -// ZetaConnectorNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdrawIterator struct { - Event *ZetaConnectorNativeWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNativeWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNativeWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNativeWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNativeWithdraw represents a Withdraw event raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdraw struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeWithdrawIterator{contract: _ZetaConnectorNative.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdraw, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNativeWithdraw) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNativeWithdraw, error) { - event := new(ZetaConnectorNativeWithdraw) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNativeWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdrawAndCallIterator struct { - Event *ZetaConnectorNativeWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNativeWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNativeWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNativeWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNativeWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdrawAndCall struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawAndCallIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeWithdrawAndCallIterator{contract: _ZetaConnectorNative.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdrawAndCall, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNativeWithdrawAndCall) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNativeWithdrawAndCall, error) { - event := new(ZetaConnectorNativeWithdrawAndCall) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNativeWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdrawAndRevertIterator struct { - Event *ZetaConnectorNativeWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNativeWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNativeWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNative contract. -type ZetaConnectorNativeWithdrawAndRevert struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawAndRevertIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNativeWithdrawAndRevertIterator{contract: _ZetaConnectorNative.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdrawAndRevert, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNativeWithdrawAndRevert) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNativeWithdrawAndRevert, error) { - event := new(ZetaConnectorNativeWithdrawAndRevert) - if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go b/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go deleted file mode 100644 index 61c83283..00000000 --- a/pkg/contracts/prototypes/evm/zetaconnectornewbase.sol/zetaconnectornewbase.go +++ /dev/null @@ -1,795 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectornewbase - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaConnectorNewBaseMetaData contains all meta data concerning the ZetaConnectorNewBase contract. -var ZetaConnectorNewBaseMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// ZetaConnectorNewBaseABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorNewBaseMetaData.ABI instead. -var ZetaConnectorNewBaseABI = ZetaConnectorNewBaseMetaData.ABI - -// ZetaConnectorNewBase is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorNewBase struct { - ZetaConnectorNewBaseCaller // Read-only binding to the contract - ZetaConnectorNewBaseTransactor // Write-only binding to the contract - ZetaConnectorNewBaseFilterer // Log filterer for contract events -} - -// ZetaConnectorNewBaseCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNewBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNewBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorNewBaseFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNewBaseSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorNewBaseSession struct { - Contract *ZetaConnectorNewBase // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNewBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorNewBaseCallerSession struct { - Contract *ZetaConnectorNewBaseCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorNewBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorNewBaseTransactorSession struct { - Contract *ZetaConnectorNewBaseTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNewBaseRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorNewBaseRaw struct { - Contract *ZetaConnectorNewBase // Generic contract binding to access the raw methods on -} - -// ZetaConnectorNewBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseCallerRaw struct { - Contract *ZetaConnectorNewBaseCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorNewBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseTransactorRaw struct { - Contract *ZetaConnectorNewBaseTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorNewBase creates a new instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNewBase, error) { - contract, err := bindZetaConnectorNewBase(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBase{ZetaConnectorNewBaseCaller: ZetaConnectorNewBaseCaller{contract: contract}, ZetaConnectorNewBaseTransactor: ZetaConnectorNewBaseTransactor{contract: contract}, ZetaConnectorNewBaseFilterer: ZetaConnectorNewBaseFilterer{contract: contract}}, nil -} - -// NewZetaConnectorNewBaseCaller creates a new read-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNewBaseCaller, error) { - contract, err := bindZetaConnectorNewBase(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseCaller{contract: contract}, nil -} - -// NewZetaConnectorNewBaseTransactor creates a new write-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNewBaseTransactor, error) { - contract, err := bindZetaConnectorNewBase(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseTransactor{contract: contract}, nil -} - -// NewZetaConnectorNewBaseFilterer creates a new log filterer instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNewBaseFilterer, error) { - contract, err := bindZetaConnectorNewBase(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseFilterer{contract: contract}, nil -} - -// bindZetaConnectorNewBase binds a generic wrapper to an already deployed contract. -func bindZetaConnectorNewBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorNewBaseMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNewBase.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.contract.Transact(opts, method, params...) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "gateway") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Gateway() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) Gateway() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "receiveTokens", amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdraw", to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) -} - -// ZetaConnectorNewBaseWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawIterator struct { - Event *ZetaConnectorNewBaseWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNewBaseWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNewBaseWithdraw represents a Withdraw event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdraw struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseWithdrawIterator{contract: _ZetaConnectorNewBase.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdraw, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdraw) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNewBaseWithdraw, error) { - event := new(ZetaConnectorNewBaseWithdraw) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNewBaseWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndCallIterator struct { - Event *ZetaConnectorNewBaseWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNewBaseWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndCall struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndCallIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseWithdrawAndCallIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndCall, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdrawAndCall) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNewBaseWithdrawAndCall, error) { - event := new(ZetaConnectorNewBaseWithdrawAndCall) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNewBaseWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndRevertIterator struct { - Event *ZetaConnectorNewBaseWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNewBaseWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndRevert struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndRevertIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNewBaseWithdrawAndRevertIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndRevert, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNewBaseWithdrawAndRevert, error) { - event := new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go deleted file mode 100644 index 7adaa59f..00000000 --- a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ /dev/null @@ -1,817 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectornonnative - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. -var ZetaConnectorNonNativeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620010c3380380620010c38339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c610db66200030d600039600081816101dd015281816102c80152818161042f0152818161053d015281816106160152818161070101526107d90152600081816102190152818161028c015281816105190152818161065201526106c50152610db66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c600480360381019061009791906109a9565b61014c565b005b6100b860048036038101906100b39190610956565b61039e565b005b6100c2610517565b6040516100cf9190610bb3565b60405180910390f35b6100e061053b565b6040516100ed9190610aea565b60405180910390f35b6100fe61055f565b60405161010b9190610aea565b60405180910390f35b61012e600480360381019061012991906109a9565b610585565b005b61014a60048036038101906101459190610a31565b6107d7565b005b610154610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161025893929190610b7c565b600060405180830381600087803b15801561027257600080fd5b505af1158015610286573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161030b959493929190610b05565b600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161038793929190610c09565b60405180910390a26103976108b7565b5050505050565b6103a6610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461042d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161048a93929190610b7c565b600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516105029190610bee565b60405180910390a26105126108b7565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61058d610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161069193929190610b7c565b600060405180830381600087803b1580156106ab57600080fd5b505af11580156106bf573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610744959493929190610b05565b600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516107c093929190610c09565b60405180910390a26107d06108b7565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610832929190610b53565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b600260005414156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490610bce565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506108d081610d3b565b92915050565b6000813590506108e581610d52565b92915050565b60008083601f84011261090157610900610ced565b5b8235905067ffffffffffffffff81111561091e5761091d610ce8565b5b60208301915083600182028301111561093a57610939610cf2565b5b9250929050565b60008135905061095081610d69565b92915050565b60008060006060848603121561096f5761096e610cfc565b5b600061097d868287016108c1565b935050602061098e86828701610941565b925050604061099f868287016108d6565b9150509250925092565b6000806000806000608086880312156109c5576109c4610cfc565b5b60006109d3888289016108c1565b95505060206109e488828901610941565b945050604086013567ffffffffffffffff811115610a0557610a04610cf7565b5b610a11888289016108eb565b93509350506060610a24888289016108d6565b9150509295509295909350565b600060208284031215610a4757610a46610cfc565b5b6000610a5584828501610941565b91505092915050565b610a6781610c5d565b82525050565b610a7681610c6f565b82525050565b6000610a888385610c3b565b9350610a95838584610cd9565b610a9e83610d01565b840190509392505050565b610ab281610ca3565b82525050565b6000610ac5601f83610c4c565b9150610ad082610d12565b602082019050919050565b610ae481610c99565b82525050565b6000602082019050610aff6000830184610a5e565b92915050565b6000608082019050610b1a6000830188610a5e565b610b276020830187610a5e565b610b346040830186610adb565b8181036060830152610b47818486610a7c565b90509695505050505050565b6000604082019050610b686000830185610a5e565b610b756020830184610adb565b9392505050565b6000606082019050610b916000830186610a5e565b610b9e6020830185610adb565b610bab6040830184610a6d565b949350505050565b6000602082019050610bc86000830184610aa9565b92915050565b60006020820190508181036000830152610be781610ab8565b9050919050565b6000602082019050610c036000830184610adb565b92915050565b6000604082019050610c1e6000830186610adb565b8181036020830152610c31818486610a7c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610c6882610c79565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cae82610cb5565b9050919050565b6000610cc082610cc7565b9050919050565b6000610cd282610c79565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610d4481610c5d565b8114610d4f57600080fd5b50565b610d5b81610c6f565b8114610d6657600080fd5b50565b610d7281610c99565b8114610d7d57600080fd5b5056fea26469706673582212209d543e668c793d4944964e21ce09680a6432aef47847a599106ee141e7a8a01264736f6c63430008070033", -} - -// ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorNonNativeMetaData.ABI instead. -var ZetaConnectorNonNativeABI = ZetaConnectorNonNativeMetaData.ABI - -// ZetaConnectorNonNativeBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorNonNativeMetaData.Bin instead. -var ZetaConnectorNonNativeBin = ZetaConnectorNonNativeMetaData.Bin - -// DeployZetaConnectorNonNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNative to it. -func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { - parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorNonNative{ZetaConnectorNonNativeCaller: ZetaConnectorNonNativeCaller{contract: contract}, ZetaConnectorNonNativeTransactor: ZetaConnectorNonNativeTransactor{contract: contract}, ZetaConnectorNonNativeFilterer: ZetaConnectorNonNativeFilterer{contract: contract}}, nil -} - -// ZetaConnectorNonNative is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorNonNative struct { - ZetaConnectorNonNativeCaller // Read-only binding to the contract - ZetaConnectorNonNativeTransactor // Write-only binding to the contract - ZetaConnectorNonNativeFilterer // Log filterer for contract events -} - -// ZetaConnectorNonNativeCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorNonNativeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonNativeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorNonNativeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonNativeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorNonNativeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorNonNativeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorNonNativeSession struct { - Contract *ZetaConnectorNonNative // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNonNativeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorNonNativeCallerSession struct { - Contract *ZetaConnectorNonNativeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorNonNativeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorNonNativeTransactorSession struct { - Contract *ZetaConnectorNonNativeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorNonNativeRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorNonNativeRaw struct { - Contract *ZetaConnectorNonNative // Generic contract binding to access the raw methods on -} - -// ZetaConnectorNonNativeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorNonNativeCallerRaw struct { - Contract *ZetaConnectorNonNativeCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorNonNativeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorNonNativeTransactorRaw struct { - Contract *ZetaConnectorNonNativeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorNonNative creates a new instance of ZetaConnectorNonNative, bound to a specific deployed contract. -func NewZetaConnectorNonNative(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNonNative, error) { - contract, err := bindZetaConnectorNonNative(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNative{ZetaConnectorNonNativeCaller: ZetaConnectorNonNativeCaller{contract: contract}, ZetaConnectorNonNativeTransactor: ZetaConnectorNonNativeTransactor{contract: contract}, ZetaConnectorNonNativeFilterer: ZetaConnectorNonNativeFilterer{contract: contract}}, nil -} - -// NewZetaConnectorNonNativeCaller creates a new read-only instance of ZetaConnectorNonNative, bound to a specific deployed contract. -func NewZetaConnectorNonNativeCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNonNativeCaller, error) { - contract, err := bindZetaConnectorNonNative(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeCaller{contract: contract}, nil -} - -// NewZetaConnectorNonNativeTransactor creates a new write-only instance of ZetaConnectorNonNative, bound to a specific deployed contract. -func NewZetaConnectorNonNativeTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNonNativeTransactor, error) { - contract, err := bindZetaConnectorNonNative(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeTransactor{contract: contract}, nil -} - -// NewZetaConnectorNonNativeFilterer creates a new log filterer instance of ZetaConnectorNonNative, bound to a specific deployed contract. -func NewZetaConnectorNonNativeFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNonNativeFilterer, error) { - contract, err := bindZetaConnectorNonNative(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeFilterer{contract: contract}, nil -} - -// bindZetaConnectorNonNative binds a generic wrapper to an already deployed contract. -func bindZetaConnectorNonNative(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNonNative.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.contract.Transact(opts, method, params...) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonNative.contract.Call(opts, &out, "gateway") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Gateway() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) Gateway() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonNative.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonNative.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.ZetaToken(&_ZetaConnectorNonNative.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.ZetaToken(&_ZetaConnectorNonNative.CallOpts) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.contract.Transact(opts, "receiveTokens", amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.ReceiveTokens(&_ZetaConnectorNonNative.TransactOpts, amount) -} - -// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. -// -// Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.ReceiveTokens(&_ZetaConnectorNonNative.TransactOpts, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.contract.Transact(opts, "withdraw", to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.Withdraw(&_ZetaConnectorNonNative.TransactOpts, to, amount, internalSendHash) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. -// -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.Withdraw(&_ZetaConnectorNonNative.TransactOpts, to, amount, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.WithdrawAndCall(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. -// -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.WithdrawAndCall(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.WithdrawAndRevert(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) -} - -// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. -// -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.WithdrawAndRevert(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) -} - -// ZetaConnectorNonNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdrawIterator struct { - Event *ZetaConnectorNonNativeWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonNativeWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonNativeWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonNativeWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonNativeWithdraw represents a Withdraw event raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdraw struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeWithdrawIterator{contract: _ZetaConnectorNonNative.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdraw, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonNativeWithdraw) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNonNativeWithdraw, error) { - event := new(ZetaConnectorNonNativeWithdraw) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonNativeWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdrawAndCallIterator struct { - Event *ZetaConnectorNonNativeWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonNativeWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdrawAndCall struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawAndCallIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeWithdrawAndCallIterator{contract: _ZetaConnectorNonNative.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdrawAndCall, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonNativeWithdrawAndCall) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNonNativeWithdrawAndCall, error) { - event := new(ZetaConnectorNonNativeWithdrawAndCall) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorNonNativeWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdrawAndRevertIterator struct { - Event *ZetaConnectorNonNativeWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorNonNativeWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorNonNativeWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNonNative contract. -type ZetaConnectorNonNativeWithdrawAndRevert struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawAndRevertIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return &ZetaConnectorNonNativeWithdrawAndRevertIterator{contract: _ZetaConnectorNonNative.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdrawAndRevert, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNonNativeWithdrawAndRevert) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNonNativeWithdrawAndRevert, error) { - event := new(ZetaConnectorNonNativeWithdrawAndRevert) - if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go b/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go deleted file mode 100644 index 744380b8..00000000 --- a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go +++ /dev/null @@ -1,1704 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package gatewayzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// RevertContext is an auto generated low-level Go binding around an user-defined struct. -type RevertContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. -var GatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZRC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20BurnFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c403e7110f39344a7464aedddcc11ad944288d8cd79a4d58fa568decbde916ef64736f6c63430008070033", -} - -// GatewayZEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use GatewayZEVMMetaData.ABI instead. -var GatewayZEVMABI = GatewayZEVMMetaData.ABI - -// GatewayZEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use GatewayZEVMMetaData.Bin instead. -var GatewayZEVMBin = GatewayZEVMMetaData.Bin - -// DeployGatewayZEVM deploys a new Ethereum contract, binding an instance of GatewayZEVM to it. -func DeployGatewayZEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayZEVM, error) { - parsed, err := GatewayZEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayZEVMBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &GatewayZEVM{GatewayZEVMCaller: GatewayZEVMCaller{contract: contract}, GatewayZEVMTransactor: GatewayZEVMTransactor{contract: contract}, GatewayZEVMFilterer: GatewayZEVMFilterer{contract: contract}}, nil -} - -// GatewayZEVM is an auto generated Go binding around an Ethereum contract. -type GatewayZEVM struct { - GatewayZEVMCaller // Read-only binding to the contract - GatewayZEVMTransactor // Write-only binding to the contract - GatewayZEVMFilterer // Log filterer for contract events -} - -// GatewayZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type GatewayZEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type GatewayZEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type GatewayZEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// GatewayZEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type GatewayZEVMSession struct { - Contract *GatewayZEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type GatewayZEVMCallerSession struct { - Contract *GatewayZEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// GatewayZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type GatewayZEVMTransactorSession struct { - Contract *GatewayZEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// GatewayZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type GatewayZEVMRaw struct { - Contract *GatewayZEVM // Generic contract binding to access the raw methods on -} - -// GatewayZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type GatewayZEVMCallerRaw struct { - Contract *GatewayZEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// GatewayZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type GatewayZEVMTransactorRaw struct { - Contract *GatewayZEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewGatewayZEVM creates a new instance of GatewayZEVM, bound to a specific deployed contract. -func NewGatewayZEVM(address common.Address, backend bind.ContractBackend) (*GatewayZEVM, error) { - contract, err := bindGatewayZEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &GatewayZEVM{GatewayZEVMCaller: GatewayZEVMCaller{contract: contract}, GatewayZEVMTransactor: GatewayZEVMTransactor{contract: contract}, GatewayZEVMFilterer: GatewayZEVMFilterer{contract: contract}}, nil -} - -// NewGatewayZEVMCaller creates a new read-only instance of GatewayZEVM, bound to a specific deployed contract. -func NewGatewayZEVMCaller(address common.Address, caller bind.ContractCaller) (*GatewayZEVMCaller, error) { - contract, err := bindGatewayZEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &GatewayZEVMCaller{contract: contract}, nil -} - -// NewGatewayZEVMTransactor creates a new write-only instance of GatewayZEVM, bound to a specific deployed contract. -func NewGatewayZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayZEVMTransactor, error) { - contract, err := bindGatewayZEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &GatewayZEVMTransactor{contract: contract}, nil -} - -// NewGatewayZEVMFilterer creates a new log filterer instance of GatewayZEVM, bound to a specific deployed contract. -func NewGatewayZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayZEVMFilterer, error) { - contract, err := bindGatewayZEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &GatewayZEVMFilterer{contract: contract}, nil -} - -// bindGatewayZEVM binds a generic wrapper to an already deployed contract. -func bindGatewayZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := GatewayZEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayZEVM *GatewayZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayZEVM.Contract.GatewayZEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayZEVM *GatewayZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayZEVM.Contract.GatewayZEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayZEVM *GatewayZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayZEVM.Contract.GatewayZEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_GatewayZEVM *GatewayZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _GatewayZEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_GatewayZEVM *GatewayZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayZEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_GatewayZEVM *GatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _GatewayZEVM.Contract.contract.Transact(opts, method, params...) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_GatewayZEVM *GatewayZEVMCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayZEVM.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_GatewayZEVM *GatewayZEVMSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _GatewayZEVM.Contract.FUNGIBLEMODULEADDRESS(&_GatewayZEVM.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_GatewayZEVM *GatewayZEVMCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _GatewayZEVM.Contract.FUNGIBLEMODULEADDRESS(&_GatewayZEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayZEVM.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMSession) Owner() (common.Address, error) { - return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMCallerSession) Owner() (common.Address, error) { - return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayZEVM *GatewayZEVMCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _GatewayZEVM.contract.Call(opts, &out, "proxiableUUID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayZEVM *GatewayZEVMSession) ProxiableUUID() ([32]byte, error) { - return _GatewayZEVM.Contract.ProxiableUUID(&_GatewayZEVM.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_GatewayZEVM *GatewayZEVMCallerSession) ProxiableUUID() ([32]byte, error) { - return _GatewayZEVM.Contract.ProxiableUUID(&_GatewayZEVM.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayZEVM *GatewayZEVMCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _GatewayZEVM.contract.Call(opts, &out, "zetaToken") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayZEVM *GatewayZEVMSession) ZetaToken() (common.Address, error) { - return _GatewayZEVM.Contract.ZetaToken(&_GatewayZEVM.CallOpts) -} - -// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. -// -// Solidity: function zetaToken() view returns(address) -func (_GatewayZEVM *GatewayZEVMCallerSession) ZetaToken() (common.Address, error) { - return _GatewayZEVM.Contract.ZetaToken(&_GatewayZEVM.CallOpts) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "call", receiver, message) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Deposit(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "deposit", zrc20, amount, target) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_GatewayZEVM *GatewayZEVMSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Deposit(&_GatewayZEVM.TransactOpts, zrc20, amount, target) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Deposit(&_GatewayZEVM.TransactOpts, zrc20, amount, target) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "depositAndCall", context, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndCall(&_GatewayZEVM.TransactOpts, context, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndCall(&_GatewayZEVM.TransactOpts, context, amount, target, message) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "depositAndCall0", context, zrc20, amount, target, message) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndCall0(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndCall0(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. -// -// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "depositAndRevert", context, zrc20, amount, target, message) -} - -// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. -// -// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. -// -// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.DepositAndRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Execute(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "execute", context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Execute(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Execute(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. -// -// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "executeRevert", context, zrc20, amount, target, message) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. -// -// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.ExecuteRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. -// -// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.ExecuteRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. -// -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "initialize", _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. -// -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) -} - -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. -// -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "upgradeTo", newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayZEVM *GatewayZEVMSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.UpgradeTo(&_GatewayZEVM.TransactOpts, newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.UpgradeTo(&_GatewayZEVM.TransactOpts, newImplementation) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayZEVM *GatewayZEVMTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayZEVM *GatewayZEVMSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.UpgradeToAndCall(&_GatewayZEVM.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.UpgradeToAndCall(&_GatewayZEVM.TransactOpts, newImplementation, data) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdraw", receiver, amount, zrc20) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_GatewayZEVM *GatewayZEVMSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20) -} - -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdraw0", amount) -} - -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) -} - -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. -// -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall", amount, message) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. -// -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. -// -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) -} - -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall0(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall0", receiver, amount, zrc20, message) -} - -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) -} - -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_GatewayZEVM *GatewayZEVMSession) Receive() (*types.Transaction, error) { - return _GatewayZEVM.Contract.Receive(&_GatewayZEVM.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Receive() (*types.Transaction, error) { - return _GatewayZEVM.Contract.Receive(&_GatewayZEVM.TransactOpts) -} - -// GatewayZEVMAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GatewayZEVM contract. -type GatewayZEVMAdminChangedIterator struct { - Event *GatewayZEVMAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMAdminChanged represents a AdminChanged event raised by the GatewayZEVM contract. -type GatewayZEVMAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*GatewayZEVMAdminChangedIterator, error) { - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &GatewayZEVMAdminChangedIterator{contract: _GatewayZEVM.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayZEVMAdminChanged) (event.Subscription, error) { - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMAdminChanged) - if err := _GatewayZEVM.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseAdminChanged(log types.Log) (*GatewayZEVMAdminChanged, error) { - event := new(GatewayZEVMAdminChanged) - if err := _GatewayZEVM.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the GatewayZEVM contract. -type GatewayZEVMBeaconUpgradedIterator struct { - Event *GatewayZEVMBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMBeaconUpgraded represents a BeaconUpgraded event raised by the GatewayZEVM contract. -type GatewayZEVMBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*GatewayZEVMBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &GatewayZEVMBeaconUpgradedIterator{contract: _GatewayZEVM.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayZEVMBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMBeaconUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseBeaconUpgraded(log types.Log) (*GatewayZEVMBeaconUpgraded, error) { - event := new(GatewayZEVMBeaconUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayZEVM contract. -type GatewayZEVMCallIterator struct { - Event *GatewayZEVMCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMCall represents a Call event raised by the GatewayZEVM contract. -type GatewayZEVMCall struct { - Sender common.Address - Receiver []byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMCallIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Call", senderRule) - if err != nil { - return nil, err - } - return &GatewayZEVMCallIterator{contract: _GatewayZEVM.contract, event: "Call", logs: logs, sub: sub}, nil -} - -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMCall, sender []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Call", senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMCall) - if err := _GatewayZEVM.contract.UnpackLog(event, "Call", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseCall(log types.Log) (*GatewayZEVMCall, error) { - event := new(GatewayZEVMCall) - if err := _GatewayZEVM.contract.UnpackLog(event, "Call", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayZEVM contract. -type GatewayZEVMInitializedIterator struct { - Event *GatewayZEVMInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMInitialized represents a Initialized event raised by the GatewayZEVM contract. -type GatewayZEVMInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayZEVMInitializedIterator, error) { - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &GatewayZEVMInitializedIterator{contract: _GatewayZEVM.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInitialized) (event.Subscription, error) { - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMInitialized) - if err := _GatewayZEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseInitialized(log types.Log) (*GatewayZEVMInitialized, error) { - event := new(GatewayZEVMInitialized) - if err := _GatewayZEVM.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayZEVM contract. -type GatewayZEVMOwnershipTransferredIterator struct { - Event *GatewayZEVMOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayZEVM contract. -type GatewayZEVMOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayZEVMOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &GatewayZEVMOwnershipTransferredIterator{contract: _GatewayZEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMOwnershipTransferred) - if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayZEVMOwnershipTransferred, error) { - event := new(GatewayZEVMOwnershipTransferred) - if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayZEVM contract. -type GatewayZEVMUpgradedIterator struct { - Event *GatewayZEVMUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMUpgraded represents a Upgraded event raised by the GatewayZEVM contract. -type GatewayZEVMUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayZEVMUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &GatewayZEVMUpgradedIterator{contract: _GatewayZEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayZEVMUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseUpgraded(log types.Log) (*GatewayZEVMUpgraded, error) { - event := new(GatewayZEVMUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// GatewayZEVMWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVM contract. -type GatewayZEVMWithdrawalIterator struct { - Event *GatewayZEVMWithdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMWithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(GatewayZEVMWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMWithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *GatewayZEVMWithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// GatewayZEVMWithdrawal represents a Withdrawal event raised by the GatewayZEVM contract. -type GatewayZEVMWithdrawal struct { - From common.Address - Zrc20 common.Address - To []byte - Value *big.Int - Gasfee *big.Int - ProtocolFlatFee *big.Int - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMWithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &GatewayZEVMWithdrawalIterator{contract: _GatewayZEVM.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMWithdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMWithdrawal) - if err := _GatewayZEVM.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMWithdrawal, error) { - event := new(GatewayZEVMWithdrawal) - if err := _GatewayZEVM.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevm.go b/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevm.go deleted file mode 100644 index 746cf4d9..00000000 --- a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevm.go +++ /dev/null @@ -1,314 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// IGatewayZEVMMetaData contains all meta data concerning the IGatewayZEVM contract. -var IGatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IGatewayZEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayZEVMMetaData.ABI instead. -var IGatewayZEVMABI = IGatewayZEVMMetaData.ABI - -// IGatewayZEVM is an auto generated Go binding around an Ethereum contract. -type IGatewayZEVM struct { - IGatewayZEVMCaller // Read-only binding to the contract - IGatewayZEVMTransactor // Write-only binding to the contract - IGatewayZEVMFilterer // Log filterer for contract events -} - -// IGatewayZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayZEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayZEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayZEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayZEVMSession struct { - Contract *IGatewayZEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayZEVMCallerSession struct { - Contract *IGatewayZEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayZEVMTransactorSession struct { - Contract *IGatewayZEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayZEVMRaw struct { - Contract *IGatewayZEVM // Generic contract binding to access the raw methods on -} - -// IGatewayZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayZEVMCallerRaw struct { - Contract *IGatewayZEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayZEVMTransactorRaw struct { - Contract *IGatewayZEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayZEVM creates a new instance of IGatewayZEVM, bound to a specific deployed contract. -func NewIGatewayZEVM(address common.Address, backend bind.ContractBackend) (*IGatewayZEVM, error) { - contract, err := bindIGatewayZEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayZEVM{IGatewayZEVMCaller: IGatewayZEVMCaller{contract: contract}, IGatewayZEVMTransactor: IGatewayZEVMTransactor{contract: contract}, IGatewayZEVMFilterer: IGatewayZEVMFilterer{contract: contract}}, nil -} - -// NewIGatewayZEVMCaller creates a new read-only instance of IGatewayZEVM, bound to a specific deployed contract. -func NewIGatewayZEVMCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMCaller, error) { - contract, err := bindIGatewayZEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMCaller{contract: contract}, nil -} - -// NewIGatewayZEVMTransactor creates a new write-only instance of IGatewayZEVM, bound to a specific deployed contract. -func NewIGatewayZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMTransactor, error) { - contract, err := bindIGatewayZEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMTransactor{contract: contract}, nil -} - -// NewIGatewayZEVMFilterer creates a new log filterer instance of IGatewayZEVM, bound to a specific deployed contract. -func NewIGatewayZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMFilterer, error) { - contract, err := bindIGatewayZEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayZEVMFilterer{contract: contract}, nil -} - -// bindIGatewayZEVM binds a generic wrapper to an already deployed contract. -func bindIGatewayZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayZEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVM *IGatewayZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVM.Contract.IGatewayZEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVM *IGatewayZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.IGatewayZEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVM *IGatewayZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.IGatewayZEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVM *IGatewayZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVM *IGatewayZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVM *IGatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.contract.Transact(opts, method, params...) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "call", receiver, message) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) -} - -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. -// -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) Deposit(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "deposit", zrc20, amount, target) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Deposit(&_IGatewayZEVM.TransactOpts, zrc20, amount, target) -} - -// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. -// -// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Deposit(&_IGatewayZEVM.TransactOpts, zrc20, amount, target) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) Execute(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "execute", context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Execute(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. -// -// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Execute(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) Withdraw(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "withdraw", receiver, amount, zrc20) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Withdraw(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. -// -// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Withdraw(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "withdrawAndCall", receiver, amount, zrc20, message) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.WithdrawAndCall(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20, message) -} - -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. -// -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.WithdrawAndCall(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20, message) -} diff --git a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmerrors.go b/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmerrors.go deleted file mode 100644 index 0e4b7176..00000000 --- a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IGatewayZEVMErrorsMetaData contains all meta data concerning the IGatewayZEVMErrors contract. -var IGatewayZEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZRC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20BurnFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20TransferFailed\",\"type\":\"error\"}]", -} - -// IGatewayZEVMErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayZEVMErrorsMetaData.ABI instead. -var IGatewayZEVMErrorsABI = IGatewayZEVMErrorsMetaData.ABI - -// IGatewayZEVMErrors is an auto generated Go binding around an Ethereum contract. -type IGatewayZEVMErrors struct { - IGatewayZEVMErrorsCaller // Read-only binding to the contract - IGatewayZEVMErrorsTransactor // Write-only binding to the contract - IGatewayZEVMErrorsFilterer // Log filterer for contract events -} - -// IGatewayZEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayZEVMErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayZEVMErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayZEVMErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayZEVMErrorsSession struct { - Contract *IGatewayZEVMErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayZEVMErrorsCallerSession struct { - Contract *IGatewayZEVMErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayZEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayZEVMErrorsTransactorSession struct { - Contract *IGatewayZEVMErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayZEVMErrorsRaw struct { - Contract *IGatewayZEVMErrors // Generic contract binding to access the raw methods on -} - -// IGatewayZEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayZEVMErrorsCallerRaw struct { - Contract *IGatewayZEVMErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayZEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayZEVMErrorsTransactorRaw struct { - Contract *IGatewayZEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayZEVMErrors creates a new instance of IGatewayZEVMErrors, bound to a specific deployed contract. -func NewIGatewayZEVMErrors(address common.Address, backend bind.ContractBackend) (*IGatewayZEVMErrors, error) { - contract, err := bindIGatewayZEVMErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayZEVMErrors{IGatewayZEVMErrorsCaller: IGatewayZEVMErrorsCaller{contract: contract}, IGatewayZEVMErrorsTransactor: IGatewayZEVMErrorsTransactor{contract: contract}, IGatewayZEVMErrorsFilterer: IGatewayZEVMErrorsFilterer{contract: contract}}, nil -} - -// NewIGatewayZEVMErrorsCaller creates a new read-only instance of IGatewayZEVMErrors, bound to a specific deployed contract. -func NewIGatewayZEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMErrorsCaller, error) { - contract, err := bindIGatewayZEVMErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMErrorsCaller{contract: contract}, nil -} - -// NewIGatewayZEVMErrorsTransactor creates a new write-only instance of IGatewayZEVMErrors, bound to a specific deployed contract. -func NewIGatewayZEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMErrorsTransactor, error) { - contract, err := bindIGatewayZEVMErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMErrorsTransactor{contract: contract}, nil -} - -// NewIGatewayZEVMErrorsFilterer creates a new log filterer instance of IGatewayZEVMErrors, bound to a specific deployed contract. -func NewIGatewayZEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMErrorsFilterer, error) { - contract, err := bindIGatewayZEVMErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayZEVMErrorsFilterer{contract: contract}, nil -} - -// bindIGatewayZEVMErrors binds a generic wrapper to an already deployed contract. -func bindIGatewayZEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayZEVMErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVMErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVMErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVMErrors *IGatewayZEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVMErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmevents.go b/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmevents.go deleted file mode 100644 index 26208431..00000000 --- a/pkg/contracts/prototypes/zevm/igatewayzevm.sol/igatewayzevmevents.go +++ /dev/null @@ -1,477 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package igatewayzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IGatewayZEVMEventsMetaData contains all meta data concerning the IGatewayZEVMEvents contract. -var IGatewayZEVMEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Withdrawal\",\"type\":\"event\"}]", -} - -// IGatewayZEVMEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IGatewayZEVMEventsMetaData.ABI instead. -var IGatewayZEVMEventsABI = IGatewayZEVMEventsMetaData.ABI - -// IGatewayZEVMEvents is an auto generated Go binding around an Ethereum contract. -type IGatewayZEVMEvents struct { - IGatewayZEVMEventsCaller // Read-only binding to the contract - IGatewayZEVMEventsTransactor // Write-only binding to the contract - IGatewayZEVMEventsFilterer // Log filterer for contract events -} - -// IGatewayZEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IGatewayZEVMEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IGatewayZEVMEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IGatewayZEVMEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IGatewayZEVMEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IGatewayZEVMEventsSession struct { - Contract *IGatewayZEVMEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IGatewayZEVMEventsCallerSession struct { - Contract *IGatewayZEVMEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IGatewayZEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IGatewayZEVMEventsTransactorSession struct { - Contract *IGatewayZEVMEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IGatewayZEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IGatewayZEVMEventsRaw struct { - Contract *IGatewayZEVMEvents // Generic contract binding to access the raw methods on -} - -// IGatewayZEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IGatewayZEVMEventsCallerRaw struct { - Contract *IGatewayZEVMEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IGatewayZEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IGatewayZEVMEventsTransactorRaw struct { - Contract *IGatewayZEVMEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIGatewayZEVMEvents creates a new instance of IGatewayZEVMEvents, bound to a specific deployed contract. -func NewIGatewayZEVMEvents(address common.Address, backend bind.ContractBackend) (*IGatewayZEVMEvents, error) { - contract, err := bindIGatewayZEVMEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IGatewayZEVMEvents{IGatewayZEVMEventsCaller: IGatewayZEVMEventsCaller{contract: contract}, IGatewayZEVMEventsTransactor: IGatewayZEVMEventsTransactor{contract: contract}, IGatewayZEVMEventsFilterer: IGatewayZEVMEventsFilterer{contract: contract}}, nil -} - -// NewIGatewayZEVMEventsCaller creates a new read-only instance of IGatewayZEVMEvents, bound to a specific deployed contract. -func NewIGatewayZEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMEventsCaller, error) { - contract, err := bindIGatewayZEVMEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMEventsCaller{contract: contract}, nil -} - -// NewIGatewayZEVMEventsTransactor creates a new write-only instance of IGatewayZEVMEvents, bound to a specific deployed contract. -func NewIGatewayZEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMEventsTransactor, error) { - contract, err := bindIGatewayZEVMEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IGatewayZEVMEventsTransactor{contract: contract}, nil -} - -// NewIGatewayZEVMEventsFilterer creates a new log filterer instance of IGatewayZEVMEvents, bound to a specific deployed contract. -func NewIGatewayZEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMEventsFilterer, error) { - contract, err := bindIGatewayZEVMEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IGatewayZEVMEventsFilterer{contract: contract}, nil -} - -// bindIGatewayZEVMEvents binds a generic wrapper to an already deployed contract. -func bindIGatewayZEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IGatewayZEVMEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IGatewayZEVMEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IGatewayZEVMEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IGatewayZEVMEvents *IGatewayZEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IGatewayZEVMEvents.Contract.contract.Transact(opts, method, params...) -} - -// IGatewayZEVMEventsCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the IGatewayZEVMEvents contract. -type IGatewayZEVMEventsCallIterator struct { - Event *IGatewayZEVMEventsCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayZEVMEventsCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayZEVMEventsCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayZEVMEventsCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayZEVMEventsCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayZEVMEventsCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayZEVMEventsCall represents a Call event raised by the IGatewayZEVMEvents contract. -type IGatewayZEVMEventsCall struct { - Sender common.Address - Receiver []byte - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*IGatewayZEVMEventsCallIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Call", senderRule) - if err != nil { - return nil, err - } - return &IGatewayZEVMEventsCallIterator{contract: _IGatewayZEVMEvents.contract, event: "Call", logs: logs, sub: sub}, nil -} - -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsCall, sender []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Call", senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayZEVMEventsCall) - if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. -// -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseCall(log types.Log) (*IGatewayZEVMEventsCall, error) { - event := new(IGatewayZEVMEventsCall) - if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IGatewayZEVMEventsWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IGatewayZEVMEvents contract. -type IGatewayZEVMEventsWithdrawalIterator struct { - Event *IGatewayZEVMEventsWithdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IGatewayZEVMEventsWithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IGatewayZEVMEventsWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IGatewayZEVMEventsWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IGatewayZEVMEventsWithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IGatewayZEVMEventsWithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IGatewayZEVMEventsWithdrawal represents a Withdrawal event raised by the IGatewayZEVMEvents contract. -type IGatewayZEVMEventsWithdrawal struct { - From common.Address - Zrc20 common.Address - To []byte - Value *big.Int - Gasfee *big.Int - ProtocolFlatFee *big.Int - Message []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*IGatewayZEVMEventsWithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &IGatewayZEVMEventsWithdrawalIterator{contract: _IGatewayZEVMEvents.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsWithdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IGatewayZEVMEventsWithdrawal) - if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. -// -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseWithdrawal(log types.Log) (*IGatewayZEVMEventsWithdrawal, error) { - event := new(IGatewayZEVMEventsWithdrawal) - if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go b/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go deleted file mode 100644 index c008d1e3..00000000 --- a/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go +++ /dev/null @@ -1,276 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package senderzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. -var SenderZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"callReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"withdrawAndCallReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea264697066735822122041c2abc6b3a41841b90c67bd1f0fcea62676455ba61882c22a78070a8128a5b164736f6c63430008070033", -} - -// SenderZEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use SenderZEVMMetaData.ABI instead. -var SenderZEVMABI = SenderZEVMMetaData.ABI - -// SenderZEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SenderZEVMMetaData.Bin instead. -var SenderZEVMBin = SenderZEVMMetaData.Bin - -// DeploySenderZEVM deploys a new Ethereum contract, binding an instance of SenderZEVM to it. -func DeploySenderZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address) (common.Address, *types.Transaction, *SenderZEVM, error) { - parsed, err := SenderZEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SenderZEVMBin), backend, _gateway) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SenderZEVM{SenderZEVMCaller: SenderZEVMCaller{contract: contract}, SenderZEVMTransactor: SenderZEVMTransactor{contract: contract}, SenderZEVMFilterer: SenderZEVMFilterer{contract: contract}}, nil -} - -// SenderZEVM is an auto generated Go binding around an Ethereum contract. -type SenderZEVM struct { - SenderZEVMCaller // Read-only binding to the contract - SenderZEVMTransactor // Write-only binding to the contract - SenderZEVMFilterer // Log filterer for contract events -} - -// SenderZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type SenderZEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SenderZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SenderZEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SenderZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SenderZEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SenderZEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SenderZEVMSession struct { - Contract *SenderZEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SenderZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SenderZEVMCallerSession struct { - Contract *SenderZEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SenderZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SenderZEVMTransactorSession struct { - Contract *SenderZEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SenderZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type SenderZEVMRaw struct { - Contract *SenderZEVM // Generic contract binding to access the raw methods on -} - -// SenderZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SenderZEVMCallerRaw struct { - Contract *SenderZEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// SenderZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SenderZEVMTransactorRaw struct { - Contract *SenderZEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSenderZEVM creates a new instance of SenderZEVM, bound to a specific deployed contract. -func NewSenderZEVM(address common.Address, backend bind.ContractBackend) (*SenderZEVM, error) { - contract, err := bindSenderZEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SenderZEVM{SenderZEVMCaller: SenderZEVMCaller{contract: contract}, SenderZEVMTransactor: SenderZEVMTransactor{contract: contract}, SenderZEVMFilterer: SenderZEVMFilterer{contract: contract}}, nil -} - -// NewSenderZEVMCaller creates a new read-only instance of SenderZEVM, bound to a specific deployed contract. -func NewSenderZEVMCaller(address common.Address, caller bind.ContractCaller) (*SenderZEVMCaller, error) { - contract, err := bindSenderZEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SenderZEVMCaller{contract: contract}, nil -} - -// NewSenderZEVMTransactor creates a new write-only instance of SenderZEVM, bound to a specific deployed contract. -func NewSenderZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*SenderZEVMTransactor, error) { - contract, err := bindSenderZEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SenderZEVMTransactor{contract: contract}, nil -} - -// NewSenderZEVMFilterer creates a new log filterer instance of SenderZEVM, bound to a specific deployed contract. -func NewSenderZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*SenderZEVMFilterer, error) { - contract, err := bindSenderZEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SenderZEVMFilterer{contract: contract}, nil -} - -// bindSenderZEVM binds a generic wrapper to an already deployed contract. -func bindSenderZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SenderZEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SenderZEVM *SenderZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SenderZEVM.Contract.SenderZEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SenderZEVM *SenderZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SenderZEVM.Contract.SenderZEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SenderZEVM *SenderZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SenderZEVM.Contract.SenderZEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SenderZEVM *SenderZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SenderZEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SenderZEVM *SenderZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SenderZEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SenderZEVM *SenderZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SenderZEVM.Contract.contract.Transact(opts, method, params...) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_SenderZEVM *SenderZEVMCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SenderZEVM.contract.Call(opts, &out, "gateway") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_SenderZEVM *SenderZEVMSession) Gateway() (common.Address, error) { - return _SenderZEVM.Contract.Gateway(&_SenderZEVM.CallOpts) -} - -// Gateway is a free data retrieval call binding the contract method 0x116191b6. -// -// Solidity: function gateway() view returns(address) -func (_SenderZEVM *SenderZEVMCallerSession) Gateway() (common.Address, error) { - return _SenderZEVM.Contract.Gateway(&_SenderZEVM.CallOpts) -} - -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. -// -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactor) CallReceiver(opts *bind.TransactOpts, receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.contract.Transact(opts, "callReceiver", receiver, str, num, flag) -} - -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. -// -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) -} - -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. -// -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactorSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) -} - -// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. -// -// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactor) WithdrawAndCallReceiver(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.contract.Transact(opts, "withdrawAndCallReceiver", receiver, amount, zrc20, str, num, flag) -} - -// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. -// -// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMSession) WithdrawAndCallReceiver(receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.WithdrawAndCallReceiver(&_SenderZEVM.TransactOpts, receiver, amount, zrc20, str, num, flag) -} - -// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. -// -// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactorSession) WithdrawAndCallReceiver(receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.WithdrawAndCallReceiver(&_SenderZEVM.TransactOpts, receiver, amount, zrc20, str, num, flag) -} diff --git a/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go b/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go deleted file mode 100644 index 812c1023..00000000 --- a/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go +++ /dev/null @@ -1,577 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package testzcontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// RevertContext is an auto generated low-level Go binding around an user-defined struct. -type RevertContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// TestZContractMetaData contains all meta data concerning the TestZContract contract. -var TestZContractMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ContextData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ContextDataRevert\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220d8ae51f378c28fdd3372175a2a0c40cf07b2f206830500b75e6335c89a39193164736f6c63430008070033", -} - -// TestZContractABI is the input ABI used to generate the binding from. -// Deprecated: Use TestZContractMetaData.ABI instead. -var TestZContractABI = TestZContractMetaData.ABI - -// TestZContractBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use TestZContractMetaData.Bin instead. -var TestZContractBin = TestZContractMetaData.Bin - -// DeployTestZContract deploys a new Ethereum contract, binding an instance of TestZContract to it. -func DeployTestZContract(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TestZContract, error) { - parsed, err := TestZContractMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TestZContractBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &TestZContract{TestZContractCaller: TestZContractCaller{contract: contract}, TestZContractTransactor: TestZContractTransactor{contract: contract}, TestZContractFilterer: TestZContractFilterer{contract: contract}}, nil -} - -// TestZContract is an auto generated Go binding around an Ethereum contract. -type TestZContract struct { - TestZContractCaller // Read-only binding to the contract - TestZContractTransactor // Write-only binding to the contract - TestZContractFilterer // Log filterer for contract events -} - -// TestZContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type TestZContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TestZContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TestZContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TestZContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TestZContractSession struct { - Contract *TestZContract // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TestZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TestZContractCallerSession struct { - Contract *TestZContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TestZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TestZContractTransactorSession struct { - Contract *TestZContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TestZContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type TestZContractRaw struct { - Contract *TestZContract // Generic contract binding to access the raw methods on -} - -// TestZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TestZContractCallerRaw struct { - Contract *TestZContractCaller // Generic read-only contract binding to access the raw methods on -} - -// TestZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TestZContractTransactorRaw struct { - Contract *TestZContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewTestZContract creates a new instance of TestZContract, bound to a specific deployed contract. -func NewTestZContract(address common.Address, backend bind.ContractBackend) (*TestZContract, error) { - contract, err := bindTestZContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TestZContract{TestZContractCaller: TestZContractCaller{contract: contract}, TestZContractTransactor: TestZContractTransactor{contract: contract}, TestZContractFilterer: TestZContractFilterer{contract: contract}}, nil -} - -// NewTestZContractCaller creates a new read-only instance of TestZContract, bound to a specific deployed contract. -func NewTestZContractCaller(address common.Address, caller bind.ContractCaller) (*TestZContractCaller, error) { - contract, err := bindTestZContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TestZContractCaller{contract: contract}, nil -} - -// NewTestZContractTransactor creates a new write-only instance of TestZContract, bound to a specific deployed contract. -func NewTestZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*TestZContractTransactor, error) { - contract, err := bindTestZContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TestZContractTransactor{contract: contract}, nil -} - -// NewTestZContractFilterer creates a new log filterer instance of TestZContract, bound to a specific deployed contract. -func NewTestZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*TestZContractFilterer, error) { - contract, err := bindTestZContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TestZContractFilterer{contract: contract}, nil -} - -// bindTestZContract binds a generic wrapper to an already deployed contract. -func bindTestZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TestZContractMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TestZContract *TestZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TestZContract.Contract.TestZContractCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TestZContract *TestZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TestZContract.Contract.TestZContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TestZContract *TestZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TestZContract.Contract.TestZContractTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TestZContract *TestZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TestZContract.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TestZContract *TestZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TestZContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TestZContract *TestZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TestZContract.Contract.contract.Transact(opts, method, params...) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.Contract.OnCrossChainCall(&_TestZContract.TransactOpts, context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.Contract.OnCrossChainCall(&_TestZContract.TransactOpts, context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractTransactor) OnRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.contract.Transact(opts, "onRevert", context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.Contract.OnRevert(&_TestZContract.TransactOpts, context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestZContract *TestZContractTransactorSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestZContract.Contract.OnRevert(&_TestZContract.TransactOpts, context, zrc20, amount, message) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_TestZContract *TestZContractTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { - return _TestZContract.contract.RawTransact(opts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_TestZContract *TestZContractSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _TestZContract.Contract.Fallback(&_TestZContract.TransactOpts, calldata) -} - -// Fallback is a paid mutator transaction binding the contract fallback function. -// -// Solidity: fallback() payable returns() -func (_TestZContract *TestZContractTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { - return _TestZContract.Contract.Fallback(&_TestZContract.TransactOpts, calldata) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_TestZContract *TestZContractTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TestZContract.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_TestZContract *TestZContractSession) Receive() (*types.Transaction, error) { - return _TestZContract.Contract.Receive(&_TestZContract.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_TestZContract *TestZContractTransactorSession) Receive() (*types.Transaction, error) { - return _TestZContract.Contract.Receive(&_TestZContract.TransactOpts) -} - -// TestZContractContextDataIterator is returned from FilterContextData and is used to iterate over the raw logs and unpacked data for ContextData events raised by the TestZContract contract. -type TestZContractContextDataIterator struct { - Event *TestZContractContextData // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TestZContractContextDataIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TestZContractContextData) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TestZContractContextData) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TestZContractContextDataIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TestZContractContextDataIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TestZContractContextData represents a ContextData event raised by the TestZContract contract. -type TestZContractContextData struct { - Origin []byte - Sender common.Address - ChainID *big.Int - MsgSender common.Address - Message string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterContextData is a free log retrieval operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. -// -// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) FilterContextData(opts *bind.FilterOpts) (*TestZContractContextDataIterator, error) { - - logs, sub, err := _TestZContract.contract.FilterLogs(opts, "ContextData") - if err != nil { - return nil, err - } - return &TestZContractContextDataIterator{contract: _TestZContract.contract, event: "ContextData", logs: logs, sub: sub}, nil -} - -// WatchContextData is a free log subscription operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. -// -// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) WatchContextData(opts *bind.WatchOpts, sink chan<- *TestZContractContextData) (event.Subscription, error) { - - logs, sub, err := _TestZContract.contract.WatchLogs(opts, "ContextData") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TestZContractContextData) - if err := _TestZContract.contract.UnpackLog(event, "ContextData", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseContextData is a log parse operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. -// -// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) ParseContextData(log types.Log) (*TestZContractContextData, error) { - event := new(TestZContractContextData) - if err := _TestZContract.contract.UnpackLog(event, "ContextData", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TestZContractContextDataRevertIterator is returned from FilterContextDataRevert and is used to iterate over the raw logs and unpacked data for ContextDataRevert events raised by the TestZContract contract. -type TestZContractContextDataRevertIterator struct { - Event *TestZContractContextDataRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TestZContractContextDataRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TestZContractContextDataRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TestZContractContextDataRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TestZContractContextDataRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TestZContractContextDataRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TestZContractContextDataRevert represents a ContextDataRevert event raised by the TestZContract contract. -type TestZContractContextDataRevert struct { - Origin []byte - Sender common.Address - ChainID *big.Int - MsgSender common.Address - Message string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterContextDataRevert is a free log retrieval operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. -// -// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) FilterContextDataRevert(opts *bind.FilterOpts) (*TestZContractContextDataRevertIterator, error) { - - logs, sub, err := _TestZContract.contract.FilterLogs(opts, "ContextDataRevert") - if err != nil { - return nil, err - } - return &TestZContractContextDataRevertIterator{contract: _TestZContract.contract, event: "ContextDataRevert", logs: logs, sub: sub}, nil -} - -// WatchContextDataRevert is a free log subscription operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. -// -// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) WatchContextDataRevert(opts *bind.WatchOpts, sink chan<- *TestZContractContextDataRevert) (event.Subscription, error) { - - logs, sub, err := _TestZContract.contract.WatchLogs(opts, "ContextDataRevert") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TestZContractContextDataRevert) - if err := _TestZContract.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseContextDataRevert is a log parse operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. -// -// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) -func (_TestZContract *TestZContractFilterer) ParseContextDataRevert(log types.Log) (*TestZContractContextDataRevert, error) { - event := new(TestZContractContextDataRevert) - if err := _TestZContract.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go b/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go deleted file mode 100644 index 3291465d..00000000 --- a/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go +++ /dev/null @@ -1,367 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package isystem - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ISystemMetaData contains all meta data concerning the ISystem contract. -var ISystemMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// ISystemABI is the input ABI used to generate the binding from. -// Deprecated: Use ISystemMetaData.ABI instead. -var ISystemABI = ISystemMetaData.ABI - -// ISystem is an auto generated Go binding around an Ethereum contract. -type ISystem struct { - ISystemCaller // Read-only binding to the contract - ISystemTransactor // Write-only binding to the contract - ISystemFilterer // Log filterer for contract events -} - -// ISystemCaller is an auto generated read-only Go binding around an Ethereum contract. -type ISystemCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISystemTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ISystemTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISystemFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ISystemFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISystemSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ISystemSession struct { - Contract *ISystem // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISystemCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ISystemCallerSession struct { - Contract *ISystemCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ISystemTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ISystemTransactorSession struct { - Contract *ISystemTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISystemRaw is an auto generated low-level Go binding around an Ethereum contract. -type ISystemRaw struct { - Contract *ISystem // Generic contract binding to access the raw methods on -} - -// ISystemCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ISystemCallerRaw struct { - Contract *ISystemCaller // Generic read-only contract binding to access the raw methods on -} - -// ISystemTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ISystemTransactorRaw struct { - Contract *ISystemTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewISystem creates a new instance of ISystem, bound to a specific deployed contract. -func NewISystem(address common.Address, backend bind.ContractBackend) (*ISystem, error) { - contract, err := bindISystem(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ISystem{ISystemCaller: ISystemCaller{contract: contract}, ISystemTransactor: ISystemTransactor{contract: contract}, ISystemFilterer: ISystemFilterer{contract: contract}}, nil -} - -// NewISystemCaller creates a new read-only instance of ISystem, bound to a specific deployed contract. -func NewISystemCaller(address common.Address, caller bind.ContractCaller) (*ISystemCaller, error) { - contract, err := bindISystem(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ISystemCaller{contract: contract}, nil -} - -// NewISystemTransactor creates a new write-only instance of ISystem, bound to a specific deployed contract. -func NewISystemTransactor(address common.Address, transactor bind.ContractTransactor) (*ISystemTransactor, error) { - contract, err := bindISystem(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ISystemTransactor{contract: contract}, nil -} - -// NewISystemFilterer creates a new log filterer instance of ISystem, bound to a specific deployed contract. -func NewISystemFilterer(address common.Address, filterer bind.ContractFilterer) (*ISystemFilterer, error) { - contract, err := bindISystem(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ISystemFilterer{contract: contract}, nil -} - -// bindISystem binds a generic wrapper to an already deployed contract. -func bindISystem(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ISystemMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISystem *ISystemRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISystem.Contract.ISystemCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISystem *ISystemRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISystem.Contract.ISystemTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISystem *ISystemRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISystem.Contract.ISystemTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISystem *ISystemCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISystem.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISystem *ISystemTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISystem.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISystem *ISystemTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISystem.Contract.contract.Transact(opts, method, params...) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ISystem *ISystemCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ISystem *ISystemSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ISystem *ISystemCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "gasCoinZRC20ByChainId", chainID) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { - return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemCallerSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { - return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) -func (_ISystem *ISystemCaller) GasPriceByChainId(opts *bind.CallOpts, chainID *big.Int) (*big.Int, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "gasPriceByChainId", chainID) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) -func (_ISystem *ISystemSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { - return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) -func (_ISystem *ISystemCallerSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { - return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemCaller) GasZetaPoolByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "gasZetaPoolByChainId", chainID) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { - return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) -func (_ISystem *ISystemCallerSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { - return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_ISystem *ISystemCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "uniswapv2FactoryAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_ISystem *ISystemSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_ISystem *ISystemCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_ISystem *ISystemCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ISystem.contract.Call(opts, &out, "wZetaContractAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_ISystem *ISystemSession) WZetaContractAddress() (common.Address, error) { - return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_ISystem *ISystemCallerSession) WZetaContractAddress() (common.Address, error) { - return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) -} diff --git a/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go b/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go deleted file mode 100644 index a3572ed2..00000000 --- a/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go +++ /dev/null @@ -1,650 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2router01 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2Router01MetaData contains all meta data concerning the IUniswapV2Router01 contract. -var IUniswapV2Router01MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2Router01ABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2Router01MetaData.ABI instead. -var IUniswapV2Router01ABI = IUniswapV2Router01MetaData.ABI - -// IUniswapV2Router01 is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Router01 struct { - IUniswapV2Router01Caller // Read-only binding to the contract - IUniswapV2Router01Transactor // Write-only binding to the contract - IUniswapV2Router01Filterer // Log filterer for contract events -} - -// IUniswapV2Router01Caller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2Router01Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2Router01Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2Router01Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2Router01Session struct { - Contract *IUniswapV2Router01 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router01CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2Router01CallerSession struct { - Contract *IUniswapV2Router01Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2Router01TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2Router01TransactorSession struct { - Contract *IUniswapV2Router01Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router01Raw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2Router01Raw struct { - Contract *IUniswapV2Router01 // Generic contract binding to access the raw methods on -} - -// IUniswapV2Router01CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2Router01CallerRaw struct { - Contract *IUniswapV2Router01Caller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2Router01TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2Router01TransactorRaw struct { - Contract *IUniswapV2Router01Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Router01 creates a new instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router01, error) { - contract, err := bindIUniswapV2Router01(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Router01{IUniswapV2Router01Caller: IUniswapV2Router01Caller{contract: contract}, IUniswapV2Router01Transactor: IUniswapV2Router01Transactor{contract: contract}, IUniswapV2Router01Filterer: IUniswapV2Router01Filterer{contract: contract}}, nil -} - -// NewIUniswapV2Router01Caller creates a new read-only instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router01Caller, error) { - contract, err := bindIUniswapV2Router01(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Caller{contract: contract}, nil -} - -// NewIUniswapV2Router01Transactor creates a new write-only instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router01Transactor, error) { - contract, err := bindIUniswapV2Router01(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Transactor{contract: contract}, nil -} - -// NewIUniswapV2Router01Filterer creates a new log filterer instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router01Filterer, error) { - contract, err := bindIUniswapV2Router01(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Filterer{contract: contract}, nil -} - -// bindIUniswapV2Router01 binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Router01(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2Router01MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router01 *IUniswapV2Router01CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router01.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.contract.Transact(opts, method, params...) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) WETH(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "WETH") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) WETH() (common.Address, error) { - return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) WETH() (common.Address, error) { - return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) Factory() (common.Address, error) { - return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Factory() (common.Address, error) { - return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsIn", amountOut, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsOut", amountIn, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} diff --git a/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go b/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go deleted file mode 100644 index 69969100..00000000 --- a/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go +++ /dev/null @@ -1,755 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2router02 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2Router02MetaData contains all meta data concerning the IUniswapV2Router02 contract. -var IUniswapV2Router02MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2Router02ABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2Router02MetaData.ABI instead. -var IUniswapV2Router02ABI = IUniswapV2Router02MetaData.ABI - -// IUniswapV2Router02 is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Router02 struct { - IUniswapV2Router02Caller // Read-only binding to the contract - IUniswapV2Router02Transactor // Write-only binding to the contract - IUniswapV2Router02Filterer // Log filterer for contract events -} - -// IUniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2Router02Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2Router02Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2Router02Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2Router02Session struct { - Contract *IUniswapV2Router02 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2Router02CallerSession struct { - Contract *IUniswapV2Router02Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2Router02TransactorSession struct { - Contract *IUniswapV2Router02Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2Router02Raw struct { - Contract *IUniswapV2Router02 // Generic contract binding to access the raw methods on -} - -// IUniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2Router02CallerRaw struct { - Contract *IUniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2Router02TransactorRaw struct { - Contract *IUniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Router02 creates a new instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router02, error) { - contract, err := bindIUniswapV2Router02(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Router02{IUniswapV2Router02Caller: IUniswapV2Router02Caller{contract: contract}, IUniswapV2Router02Transactor: IUniswapV2Router02Transactor{contract: contract}, IUniswapV2Router02Filterer: IUniswapV2Router02Filterer{contract: contract}}, nil -} - -// NewIUniswapV2Router02Caller creates a new read-only instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router02Caller, error) { - contract, err := bindIUniswapV2Router02(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Caller{contract: contract}, nil -} - -// NewIUniswapV2Router02Transactor creates a new write-only instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router02Transactor, error) { - contract, err := bindIUniswapV2Router02(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Transactor{contract: contract}, nil -} - -// NewIUniswapV2Router02Filterer creates a new log filterer instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router02Filterer, error) { - contract, err := bindIUniswapV2Router02(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Filterer{contract: contract}, nil -} - -// bindIUniswapV2Router02 binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2Router02MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router02 *IUniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router02.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.contract.Transact(opts, method, params...) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "WETH") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) WETH() (common.Address, error) { - return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) WETH() (common.Address, error) { - return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) Factory() (common.Address, error) { - return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Factory() (common.Address, error) { - return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} diff --git a/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go b/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go deleted file mode 100644 index c152269a..00000000 --- a/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go +++ /dev/null @@ -1,977 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iwzeta - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IWETH9MetaData contains all meta data concerning the IWETH9 contract. -var IWETH9MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWETH9ABI is the input ABI used to generate the binding from. -// Deprecated: Use IWETH9MetaData.ABI instead. -var IWETH9ABI = IWETH9MetaData.ABI - -// IWETH9 is an auto generated Go binding around an Ethereum contract. -type IWETH9 struct { - IWETH9Caller // Read-only binding to the contract - IWETH9Transactor // Write-only binding to the contract - IWETH9Filterer // Log filterer for contract events -} - -// IWETH9Caller is an auto generated read-only Go binding around an Ethereum contract. -type IWETH9Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IWETH9Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWETH9Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETH9Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWETH9Session struct { - Contract *IWETH9 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWETH9CallerSession struct { - Contract *IWETH9Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWETH9TransactorSession struct { - Contract *IWETH9Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWETH9Raw is an auto generated low-level Go binding around an Ethereum contract. -type IWETH9Raw struct { - Contract *IWETH9 // Generic contract binding to access the raw methods on -} - -// IWETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWETH9CallerRaw struct { - Contract *IWETH9Caller // Generic read-only contract binding to access the raw methods on -} - -// IWETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWETH9TransactorRaw struct { - Contract *IWETH9Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWETH9 creates a new instance of IWETH9, bound to a specific deployed contract. -func NewIWETH9(address common.Address, backend bind.ContractBackend) (*IWETH9, error) { - contract, err := bindIWETH9(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWETH9{IWETH9Caller: IWETH9Caller{contract: contract}, IWETH9Transactor: IWETH9Transactor{contract: contract}, IWETH9Filterer: IWETH9Filterer{contract: contract}}, nil -} - -// NewIWETH9Caller creates a new read-only instance of IWETH9, bound to a specific deployed contract. -func NewIWETH9Caller(address common.Address, caller bind.ContractCaller) (*IWETH9Caller, error) { - contract, err := bindIWETH9(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWETH9Caller{contract: contract}, nil -} - -// NewIWETH9Transactor creates a new write-only instance of IWETH9, bound to a specific deployed contract. -func NewIWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*IWETH9Transactor, error) { - contract, err := bindIWETH9(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWETH9Transactor{contract: contract}, nil -} - -// NewIWETH9Filterer creates a new log filterer instance of IWETH9, bound to a specific deployed contract. -func NewIWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*IWETH9Filterer, error) { - contract, err := bindIWETH9(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWETH9Filterer{contract: contract}, nil -} - -// bindIWETH9 binds a generic wrapper to an already deployed contract. -func bindIWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWETH9MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWETH9 *IWETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWETH9.Contract.IWETH9Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWETH9 *IWETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH9.Contract.IWETH9Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWETH9 *IWETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWETH9.Contract.IWETH9Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWETH9 *IWETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWETH9.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWETH9 *IWETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH9.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWETH9 *IWETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWETH9.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IWETH9 *IWETH9Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IWETH9.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IWETH9 *IWETH9Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IWETH9 *IWETH9CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IWETH9 *IWETH9Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IWETH9.contract.Call(opts, &out, "balanceOf", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IWETH9 *IWETH9Session) BalanceOf(owner common.Address) (*big.Int, error) { - return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IWETH9 *IWETH9CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IWETH9 *IWETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IWETH9.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IWETH9 *IWETH9Session) TotalSupply() (*big.Int, error) { - return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IWETH9 *IWETH9CallerSession) TotalSupply() (*big.Int, error) { - return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Transactor) Approve(opts *bind.TransactOpts, spender common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.contract.Transact(opts, "approve", spender, wad) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Session) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9TransactorSession) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH9 *IWETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH9.contract.Transact(opts, "deposit") -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH9 *IWETH9Session) Deposit() (*types.Transaction, error) { - return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH9 *IWETH9TransactorSession) Deposit() (*types.Transaction, error) { - return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Transactor) Transfer(opts *bind.TransactOpts, to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.contract.Transact(opts, "transfer", to, wad) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Session) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9TransactorSession) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.contract.Transact(opts, "transferFrom", from, to, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9Session) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) -func (_IWETH9 *IWETH9TransactorSession) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_IWETH9 *IWETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { - return _IWETH9.contract.Transact(opts, "withdraw", wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_IWETH9 *IWETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_IWETH9 *IWETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) -} - -// IWETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IWETH9 contract. -type IWETH9ApprovalIterator struct { - Event *IWETH9Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWETH9ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWETH9Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWETH9Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWETH9ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWETH9ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWETH9Approval represents a Approval event raised by the IWETH9 contract. -type IWETH9Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IWETH9 *IWETH9Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IWETH9ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IWETH9ApprovalIterator{contract: _IWETH9.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IWETH9 *IWETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IWETH9Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWETH9Approval) - if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IWETH9 *IWETH9Filterer) ParseApproval(log types.Log) (*IWETH9Approval, error) { - event := new(IWETH9Approval) - if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IWETH9 contract. -type IWETH9DepositIterator struct { - Event *IWETH9Deposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWETH9DepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWETH9Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWETH9Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWETH9DepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWETH9DepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWETH9Deposit represents a Deposit event raised by the IWETH9 contract. -type IWETH9Deposit struct { - Dst common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_IWETH9 *IWETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*IWETH9DepositIterator, error) { - - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Deposit", dstRule) - if err != nil { - return nil, err - } - return &IWETH9DepositIterator{contract: _IWETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_IWETH9 *IWETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IWETH9Deposit, dst []common.Address) (event.Subscription, error) { - - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Deposit", dstRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWETH9Deposit) - if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_IWETH9 *IWETH9Filterer) ParseDeposit(log types.Log) (*IWETH9Deposit, error) { - event := new(IWETH9Deposit) - if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IWETH9 contract. -type IWETH9TransferIterator struct { - Event *IWETH9Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWETH9TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWETH9Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWETH9Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWETH9TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWETH9TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWETH9Transfer represents a Transfer event raised by the IWETH9 contract. -type IWETH9Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IWETH9 *IWETH9Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IWETH9TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IWETH9TransferIterator{contract: _IWETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IWETH9 *IWETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IWETH9Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWETH9Transfer) - if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IWETH9 *IWETH9Filterer) ParseTransfer(log types.Log) (*IWETH9Transfer, error) { - event := new(IWETH9Transfer) - if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IWETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IWETH9 contract. -type IWETH9WithdrawalIterator struct { - Event *IWETH9Withdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IWETH9WithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IWETH9Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IWETH9Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IWETH9WithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IWETH9WithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IWETH9Withdrawal represents a Withdrawal event raised by the IWETH9 contract. -type IWETH9Withdrawal struct { - Src common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_IWETH9 *IWETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*IWETH9WithdrawalIterator, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - - logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) - if err != nil { - return nil, err - } - return &IWETH9WithdrawalIterator{contract: _IWETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_IWETH9 *IWETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IWETH9Withdrawal, src []common.Address) (event.Subscription, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - - logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IWETH9Withdrawal) - if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_IWETH9 *IWETH9Filterer) ParseWithdrawal(log types.Log) (*IWETH9Withdrawal, error) { - event := new(IWETH9Withdrawal) - if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go b/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go deleted file mode 100644 index 115677f6..00000000 --- a/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go +++ /dev/null @@ -1,463 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izrc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IZRC20MetaData contains all meta data concerning the IZRC20 contract. -var IZRC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IZRC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IZRC20MetaData.ABI instead. -var IZRC20ABI = IZRC20MetaData.ABI - -// IZRC20 is an auto generated Go binding around an Ethereum contract. -type IZRC20 struct { - IZRC20Caller // Read-only binding to the contract - IZRC20Transactor // Write-only binding to the contract - IZRC20Filterer // Log filterer for contract events -} - -// IZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IZRC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IZRC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IZRC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IZRC20Session struct { - Contract *IZRC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IZRC20CallerSession struct { - Contract *IZRC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IZRC20TransactorSession struct { - Contract *IZRC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IZRC20Raw struct { - Contract *IZRC20 // Generic contract binding to access the raw methods on -} - -// IZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IZRC20CallerRaw struct { - Contract *IZRC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IZRC20TransactorRaw struct { - Contract *IZRC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIZRC20 creates a new instance of IZRC20, bound to a specific deployed contract. -func NewIZRC20(address common.Address, backend bind.ContractBackend) (*IZRC20, error) { - contract, err := bindIZRC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IZRC20{IZRC20Caller: IZRC20Caller{contract: contract}, IZRC20Transactor: IZRC20Transactor{contract: contract}, IZRC20Filterer: IZRC20Filterer{contract: contract}}, nil -} - -// NewIZRC20Caller creates a new read-only instance of IZRC20, bound to a specific deployed contract. -func NewIZRC20Caller(address common.Address, caller bind.ContractCaller) (*IZRC20Caller, error) { - contract, err := bindIZRC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IZRC20Caller{contract: contract}, nil -} - -// NewIZRC20Transactor creates a new write-only instance of IZRC20, bound to a specific deployed contract. -func NewIZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20Transactor, error) { - contract, err := bindIZRC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IZRC20Transactor{contract: contract}, nil -} - -// NewIZRC20Filterer creates a new log filterer instance of IZRC20, bound to a specific deployed contract. -func NewIZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20Filterer, error) { - contract, err := bindIZRC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IZRC20Filterer{contract: contract}, nil -} - -// bindIZRC20 binds a generic wrapper to an already deployed contract. -func bindIZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IZRC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZRC20 *IZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZRC20.Contract.IZRC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZRC20 *IZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZRC20.Contract.IZRC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZRC20 *IZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZRC20.Contract.IZRC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZRC20 *IZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZRC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZRC20 *IZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZRC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZRC20 *IZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZRC20.Contract.contract.Transact(opts, method, params...) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20 *IZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20 *IZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20 *IZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20 *IZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20 *IZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20 *IZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20 *IZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20 *IZRC20Session) TotalSupply() (*big.Int, error) { - return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20 *IZRC20CallerSession) TotalSupply() (*big.Int, error) { - return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20 *IZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "withdrawGasFee") - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20 *IZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { - return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20 *IZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "deposit", to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.contract.Transact(opts, "withdraw", to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20 *IZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) -} diff --git a/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go b/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go deleted file mode 100644 index d60ed6ff..00000000 --- a/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go +++ /dev/null @@ -1,556 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izrc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IZRC20MetadataMetaData contains all meta data concerning the IZRC20Metadata contract. -var IZRC20MetadataMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IZRC20MetadataABI is the input ABI used to generate the binding from. -// Deprecated: Use IZRC20MetadataMetaData.ABI instead. -var IZRC20MetadataABI = IZRC20MetadataMetaData.ABI - -// IZRC20Metadata is an auto generated Go binding around an Ethereum contract. -type IZRC20Metadata struct { - IZRC20MetadataCaller // Read-only binding to the contract - IZRC20MetadataTransactor // Write-only binding to the contract - IZRC20MetadataFilterer // Log filterer for contract events -} - -// IZRC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. -type IZRC20MetadataCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IZRC20MetadataTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IZRC20MetadataFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZRC20MetadataSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IZRC20MetadataSession struct { - Contract *IZRC20Metadata // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZRC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IZRC20MetadataCallerSession struct { - Contract *IZRC20MetadataCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IZRC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IZRC20MetadataTransactorSession struct { - Contract *IZRC20MetadataTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZRC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. -type IZRC20MetadataRaw struct { - Contract *IZRC20Metadata // Generic contract binding to access the raw methods on -} - -// IZRC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IZRC20MetadataCallerRaw struct { - Contract *IZRC20MetadataCaller // Generic read-only contract binding to access the raw methods on -} - -// IZRC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IZRC20MetadataTransactorRaw struct { - Contract *IZRC20MetadataTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIZRC20Metadata creates a new instance of IZRC20Metadata, bound to a specific deployed contract. -func NewIZRC20Metadata(address common.Address, backend bind.ContractBackend) (*IZRC20Metadata, error) { - contract, err := bindIZRC20Metadata(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IZRC20Metadata{IZRC20MetadataCaller: IZRC20MetadataCaller{contract: contract}, IZRC20MetadataTransactor: IZRC20MetadataTransactor{contract: contract}, IZRC20MetadataFilterer: IZRC20MetadataFilterer{contract: contract}}, nil -} - -// NewIZRC20MetadataCaller creates a new read-only instance of IZRC20Metadata, bound to a specific deployed contract. -func NewIZRC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IZRC20MetadataCaller, error) { - contract, err := bindIZRC20Metadata(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IZRC20MetadataCaller{contract: contract}, nil -} - -// NewIZRC20MetadataTransactor creates a new write-only instance of IZRC20Metadata, bound to a specific deployed contract. -func NewIZRC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20MetadataTransactor, error) { - contract, err := bindIZRC20Metadata(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IZRC20MetadataTransactor{contract: contract}, nil -} - -// NewIZRC20MetadataFilterer creates a new log filterer instance of IZRC20Metadata, bound to a specific deployed contract. -func NewIZRC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20MetadataFilterer, error) { - contract, err := bindIZRC20Metadata(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IZRC20MetadataFilterer{contract: contract}, nil -} - -// bindIZRC20Metadata binds a generic wrapper to an already deployed contract. -func bindIZRC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IZRC20MetadataMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZRC20Metadata *IZRC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZRC20Metadata.Contract.IZRC20MetadataCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZRC20Metadata *IZRC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZRC20Metadata *IZRC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZRC20Metadata *IZRC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZRC20Metadata.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.contract.Transact(opts, method, params...) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IZRC20Metadata *IZRC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IZRC20Metadata *IZRC20MetadataSession) Decimals() (uint8, error) { - return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) Decimals() (uint8, error) { - return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataSession) Name() (string, error) { - return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) Name() (string, error) { - return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataSession) Symbol() (string, error) { - return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) Symbol() (string, error) { - return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) TotalSupply() (*big.Int, error) { - return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) TotalSupply() (*big.Int, error) { - return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "withdrawGasFee") - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "deposit", to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.contract.Transact(opts, "withdraw", to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) -} diff --git a/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go b/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go deleted file mode 100644 index 3e3efb41..00000000 --- a/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go +++ /dev/null @@ -1,1185 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izrc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20EventsMetaData contains all meta data concerning the ZRC20Events contract. -var ZRC20EventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"}]", -} - -// ZRC20EventsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20EventsMetaData.ABI instead. -var ZRC20EventsABI = ZRC20EventsMetaData.ABI - -// ZRC20Events is an auto generated Go binding around an Ethereum contract. -type ZRC20Events struct { - ZRC20EventsCaller // Read-only binding to the contract - ZRC20EventsTransactor // Write-only binding to the contract - ZRC20EventsFilterer // Log filterer for contract events -} - -// ZRC20EventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20EventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20EventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20EventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20EventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20EventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20EventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20EventsSession struct { - Contract *ZRC20Events // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20EventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20EventsCallerSession struct { - Contract *ZRC20EventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20EventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20EventsTransactorSession struct { - Contract *ZRC20EventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20EventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20EventsRaw struct { - Contract *ZRC20Events // Generic contract binding to access the raw methods on -} - -// ZRC20EventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20EventsCallerRaw struct { - Contract *ZRC20EventsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20EventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20EventsTransactorRaw struct { - Contract *ZRC20EventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20Events creates a new instance of ZRC20Events, bound to a specific deployed contract. -func NewZRC20Events(address common.Address, backend bind.ContractBackend) (*ZRC20Events, error) { - contract, err := bindZRC20Events(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20Events{ZRC20EventsCaller: ZRC20EventsCaller{contract: contract}, ZRC20EventsTransactor: ZRC20EventsTransactor{contract: contract}, ZRC20EventsFilterer: ZRC20EventsFilterer{contract: contract}}, nil -} - -// NewZRC20EventsCaller creates a new read-only instance of ZRC20Events, bound to a specific deployed contract. -func NewZRC20EventsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20EventsCaller, error) { - contract, err := bindZRC20Events(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20EventsCaller{contract: contract}, nil -} - -// NewZRC20EventsTransactor creates a new write-only instance of ZRC20Events, bound to a specific deployed contract. -func NewZRC20EventsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20EventsTransactor, error) { - contract, err := bindZRC20Events(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20EventsTransactor{contract: contract}, nil -} - -// NewZRC20EventsFilterer creates a new log filterer instance of ZRC20Events, bound to a specific deployed contract. -func NewZRC20EventsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20EventsFilterer, error) { - contract, err := bindZRC20Events(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20EventsFilterer{contract: contract}, nil -} - -// bindZRC20Events binds a generic wrapper to an already deployed contract. -func bindZRC20Events(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20EventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Events *ZRC20EventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Events.Contract.ZRC20EventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Events *ZRC20EventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Events *ZRC20EventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Events *ZRC20EventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Events.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Events *ZRC20EventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Events.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Events *ZRC20EventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Events.Contract.contract.Transact(opts, method, params...) -} - -// ZRC20EventsApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20Events contract. -type ZRC20EventsApprovalIterator struct { - Event *ZRC20EventsApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsApproval represents a Approval event raised by the ZRC20Events contract. -type ZRC20EventsApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20EventsApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZRC20EventsApprovalIterator{contract: _ZRC20Events.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20EventsApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsApproval) - if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) ParseApproval(log types.Log) (*ZRC20EventsApproval, error) { - event := new(ZRC20EventsApproval) - if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20Events contract. -type ZRC20EventsDepositIterator struct { - Event *ZRC20EventsDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsDeposit represents a Deposit event raised by the ZRC20Events contract. -type ZRC20EventsDeposit struct { - From []byte - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20EventsDepositIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return &ZRC20EventsDepositIterator{contract: _ZRC20Events.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsDeposit, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsDeposit) - if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) ParseDeposit(log types.Log) (*ZRC20EventsDeposit, error) { - event := new(ZRC20EventsDeposit) - if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20Events contract. -type ZRC20EventsTransferIterator struct { - Event *ZRC20EventsTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsTransfer represents a Transfer event raised by the ZRC20Events contract. -type ZRC20EventsTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20EventsTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZRC20EventsTransferIterator{contract: _ZRC20Events.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20EventsTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsTransfer) - if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20Events *ZRC20EventsFilterer) ParseTransfer(log types.Log) (*ZRC20EventsTransfer, error) { - event := new(ZRC20EventsTransfer) - if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20Events contract. -type ZRC20EventsUpdatedGasLimitIterator struct { - Event *ZRC20EventsUpdatedGasLimit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsUpdatedGasLimitIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsUpdatedGasLimitIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsUpdatedGasLimitIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20Events contract. -type ZRC20EventsUpdatedGasLimit struct { - GasLimit *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20EventsUpdatedGasLimitIterator, error) { - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return &ZRC20EventsUpdatedGasLimitIterator{contract: _ZRC20Events.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil -} - -// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedGasLimit) (event.Subscription, error) { - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsUpdatedGasLimit) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20EventsUpdatedGasLimit, error) { - event := new(ZRC20EventsUpdatedGasLimit) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20Events contract. -type ZRC20EventsUpdatedProtocolFlatFeeIterator struct { - Event *ZRC20EventsUpdatedProtocolFlatFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20Events contract. -type ZRC20EventsUpdatedProtocolFlatFee struct { - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20EventsUpdatedProtocolFlatFeeIterator, error) { - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return &ZRC20EventsUpdatedProtocolFlatFeeIterator{contract: _ZRC20Events.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil -} - -// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedProtocolFlatFee) (event.Subscription, error) { - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsUpdatedProtocolFlatFee) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20EventsUpdatedProtocolFlatFee, error) { - event := new(ZRC20EventsUpdatedProtocolFlatFee) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20Events contract. -type ZRC20EventsUpdatedSystemContractIterator struct { - Event *ZRC20EventsUpdatedSystemContract // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsUpdatedSystemContractIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsUpdatedSystemContractIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsUpdatedSystemContractIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20Events contract. -type ZRC20EventsUpdatedSystemContract struct { - SystemContract common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20EventsUpdatedSystemContractIterator, error) { - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return &ZRC20EventsUpdatedSystemContractIterator{contract: _ZRC20Events.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil -} - -// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedSystemContract) (event.Subscription, error) { - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsUpdatedSystemContract) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20EventsUpdatedSystemContract, error) { - event := new(ZRC20EventsUpdatedSystemContract) - if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20EventsWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20Events contract. -type ZRC20EventsWithdrawalIterator struct { - Event *ZRC20EventsWithdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20EventsWithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20EventsWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20EventsWithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20EventsWithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20EventsWithdrawal represents a Withdrawal event raised by the ZRC20Events contract. -type ZRC20EventsWithdrawal struct { - From common.Address - To []byte - Value *big.Int - GasFee *big.Int - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20EventsWithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &ZRC20EventsWithdrawalIterator{contract: _ZRC20Events.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20EventsWithdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20EventsWithdrawal) - if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20Events *ZRC20EventsFilterer) ParseWithdrawal(log types.Log) (*ZRC20EventsWithdrawal, error) { - event := new(ZRC20EventsWithdrawal) - if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go b/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go deleted file mode 100644 index 3d41b695..00000000 --- a/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go +++ /dev/null @@ -1,237 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zcontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// RevertContext is an auto generated low-level Go binding around an user-defined struct. -type RevertContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// UniversalContractMetaData contains all meta data concerning the UniversalContract contract. -var UniversalContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// UniversalContractABI is the input ABI used to generate the binding from. -// Deprecated: Use UniversalContractMetaData.ABI instead. -var UniversalContractABI = UniversalContractMetaData.ABI - -// UniversalContract is an auto generated Go binding around an Ethereum contract. -type UniversalContract struct { - UniversalContractCaller // Read-only binding to the contract - UniversalContractTransactor // Write-only binding to the contract - UniversalContractFilterer // Log filterer for contract events -} - -// UniversalContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniversalContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniversalContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniversalContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniversalContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniversalContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniversalContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniversalContractSession struct { - Contract *UniversalContract // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniversalContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniversalContractCallerSession struct { - Contract *UniversalContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniversalContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniversalContractTransactorSession struct { - Contract *UniversalContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniversalContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniversalContractRaw struct { - Contract *UniversalContract // Generic contract binding to access the raw methods on -} - -// UniversalContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniversalContractCallerRaw struct { - Contract *UniversalContractCaller // Generic read-only contract binding to access the raw methods on -} - -// UniversalContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniversalContractTransactorRaw struct { - Contract *UniversalContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniversalContract creates a new instance of UniversalContract, bound to a specific deployed contract. -func NewUniversalContract(address common.Address, backend bind.ContractBackend) (*UniversalContract, error) { - contract, err := bindUniversalContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniversalContract{UniversalContractCaller: UniversalContractCaller{contract: contract}, UniversalContractTransactor: UniversalContractTransactor{contract: contract}, UniversalContractFilterer: UniversalContractFilterer{contract: contract}}, nil -} - -// NewUniversalContractCaller creates a new read-only instance of UniversalContract, bound to a specific deployed contract. -func NewUniversalContractCaller(address common.Address, caller bind.ContractCaller) (*UniversalContractCaller, error) { - contract, err := bindUniversalContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniversalContractCaller{contract: contract}, nil -} - -// NewUniversalContractTransactor creates a new write-only instance of UniversalContract, bound to a specific deployed contract. -func NewUniversalContractTransactor(address common.Address, transactor bind.ContractTransactor) (*UniversalContractTransactor, error) { - contract, err := bindUniversalContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniversalContractTransactor{contract: contract}, nil -} - -// NewUniversalContractFilterer creates a new log filterer instance of UniversalContract, bound to a specific deployed contract. -func NewUniversalContractFilterer(address common.Address, filterer bind.ContractFilterer) (*UniversalContractFilterer, error) { - contract, err := bindUniversalContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniversalContractFilterer{contract: contract}, nil -} - -// bindUniversalContract binds a generic wrapper to an already deployed contract. -func bindUniversalContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniversalContractMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniversalContract *UniversalContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniversalContract.Contract.UniversalContractCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniversalContract *UniversalContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniversalContract.Contract.UniversalContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniversalContract *UniversalContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniversalContract.Contract.UniversalContractTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniversalContract *UniversalContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniversalContract.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniversalContract *UniversalContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniversalContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniversalContract *UniversalContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniversalContract.Contract.contract.Transact(opts, method, params...) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractTransactor) OnRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.contract.Transact(opts, "onRevert", context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. -// -// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_UniversalContract *UniversalContractTransactorSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) -} diff --git a/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go b/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go deleted file mode 100644 index f0ab38de..00000000 --- a/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go +++ /dev/null @@ -1,209 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zcontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// ZContractMetaData contains all meta data concerning the ZContract contract. -var ZContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZContractABI is the input ABI used to generate the binding from. -// Deprecated: Use ZContractMetaData.ABI instead. -var ZContractABI = ZContractMetaData.ABI - -// ZContract is an auto generated Go binding around an Ethereum contract. -type ZContract struct { - ZContractCaller // Read-only binding to the contract - ZContractTransactor // Write-only binding to the contract - ZContractFilterer // Log filterer for contract events -} - -// ZContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZContractSession struct { - Contract *ZContract // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZContractCallerSession struct { - Contract *ZContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZContractTransactorSession struct { - Contract *ZContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZContractRaw struct { - Contract *ZContract // Generic contract binding to access the raw methods on -} - -// ZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZContractCallerRaw struct { - Contract *ZContractCaller // Generic read-only contract binding to access the raw methods on -} - -// ZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZContractTransactorRaw struct { - Contract *ZContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZContract creates a new instance of ZContract, bound to a specific deployed contract. -func NewZContract(address common.Address, backend bind.ContractBackend) (*ZContract, error) { - contract, err := bindZContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZContract{ZContractCaller: ZContractCaller{contract: contract}, ZContractTransactor: ZContractTransactor{contract: contract}, ZContractFilterer: ZContractFilterer{contract: contract}}, nil -} - -// NewZContractCaller creates a new read-only instance of ZContract, bound to a specific deployed contract. -func NewZContractCaller(address common.Address, caller bind.ContractCaller) (*ZContractCaller, error) { - contract, err := bindZContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZContractCaller{contract: contract}, nil -} - -// NewZContractTransactor creates a new write-only instance of ZContract, bound to a specific deployed contract. -func NewZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ZContractTransactor, error) { - contract, err := bindZContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZContractTransactor{contract: contract}, nil -} - -// NewZContractFilterer creates a new log filterer instance of ZContract, bound to a specific deployed contract. -func NewZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ZContractFilterer, error) { - contract, err := bindZContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZContractFilterer{contract: contract}, nil -} - -// bindZContract binds a generic wrapper to an already deployed contract. -func bindZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZContractMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZContract *ZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZContract.Contract.ZContractCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZContract *ZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZContract.Contract.ZContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZContract *ZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZContract.Contract.ZContractTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZContract *ZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZContract.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZContract *ZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZContract *ZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZContract.Contract.contract.Transact(opts, method, params...) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. -// -// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_ZContract *ZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) -} diff --git a/pkg/contracts/zevm/systemcontract.sol/systemcontract.go b/pkg/contracts/zevm/systemcontract.sol/systemcontract.go deleted file mode 100644 index afe7e100..00000000 --- a/pkg/contracts/zevm/systemcontract.sol/systemcontract.go +++ /dev/null @@ -1,1421 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package systemcontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZContext is an auto generated low-level Go binding around an user-defined struct. -type ZContext struct { - Origin []byte - Sender common.Address - ChainID *big.Int -} - -// SystemContractMetaData contains all meta data concerning the SystemContract contract. -var SystemContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Router02_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetConnectorZEVM\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasCoin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasZetaPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetWZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SystemContractDeployed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setConnectorZEVMAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"setGasCoinZRC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"setGasZetaPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setWZETAContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"uniswapv2PairFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2Router02Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnectorZEVMAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea264697066735822122074cb176058c64c566236e929fb1b59095f40ee7409bf1ff681139ad933115af464736f6c63430008070033", -} - -// SystemContractABI is the input ABI used to generate the binding from. -// Deprecated: Use SystemContractMetaData.ABI instead. -var SystemContractABI = SystemContractMetaData.ABI - -// SystemContractBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SystemContractMetaData.Bin instead. -var SystemContractBin = SystemContractMetaData.Bin - -// DeploySystemContract deploys a new Ethereum contract, binding an instance of SystemContract to it. -func DeploySystemContract(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContract, error) { - parsed, err := SystemContractMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil -} - -// SystemContract is an auto generated Go binding around an Ethereum contract. -type SystemContract struct { - SystemContractCaller // Read-only binding to the contract - SystemContractTransactor // Write-only binding to the contract - SystemContractFilterer // Log filterer for contract events -} - -// SystemContractCaller is an auto generated read-only Go binding around an Ethereum contract. -type SystemContractCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SystemContractTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SystemContractFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SystemContractSession struct { - Contract *SystemContract // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SystemContractCallerSession struct { - Contract *SystemContractCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SystemContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SystemContractTransactorSession struct { - Contract *SystemContractTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractRaw is an auto generated low-level Go binding around an Ethereum contract. -type SystemContractRaw struct { - Contract *SystemContract // Generic contract binding to access the raw methods on -} - -// SystemContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SystemContractCallerRaw struct { - Contract *SystemContractCaller // Generic read-only contract binding to access the raw methods on -} - -// SystemContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SystemContractTransactorRaw struct { - Contract *SystemContractTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSystemContract creates a new instance of SystemContract, bound to a specific deployed contract. -func NewSystemContract(address common.Address, backend bind.ContractBackend) (*SystemContract, error) { - contract, err := bindSystemContract(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil -} - -// NewSystemContractCaller creates a new read-only instance of SystemContract, bound to a specific deployed contract. -func NewSystemContractCaller(address common.Address, caller bind.ContractCaller) (*SystemContractCaller, error) { - contract, err := bindSystemContract(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SystemContractCaller{contract: contract}, nil -} - -// NewSystemContractTransactor creates a new write-only instance of SystemContract, bound to a specific deployed contract. -func NewSystemContractTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractTransactor, error) { - contract, err := bindSystemContract(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SystemContractTransactor{contract: contract}, nil -} - -// NewSystemContractFilterer creates a new log filterer instance of SystemContract, bound to a specific deployed contract. -func NewSystemContractFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractFilterer, error) { - contract, err := bindSystemContract(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SystemContractFilterer{contract: contract}, nil -} - -// bindSystemContract binds a generic wrapper to an already deployed contract. -func bindSystemContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SystemContractMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContract *SystemContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContract.Contract.SystemContractCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContract *SystemContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContract.Contract.SystemContractTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContract *SystemContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContract.Contract.SystemContractTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContract *SystemContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContract.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContract *SystemContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContract.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContract *SystemContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContract.Contract.contract.Transact(opts, method, params...) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_SystemContract *SystemContractCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_SystemContract *SystemContractSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_SystemContract *SystemContractCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContract *SystemContractCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "gasPriceByChainId", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContract *SystemContractSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { - return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContract *SystemContractCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { - return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContract *SystemContractCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContract *SystemContractCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "uniswapv2FactoryAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContract *SystemContractSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContract *SystemContractCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContract *SystemContractCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContract *SystemContractSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContract *SystemContractCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContract *SystemContractCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "uniswapv2Router02Address") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContract *SystemContractSession) Uniswapv2Router02Address() (common.Address, error) { - return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContract *SystemContractCallerSession) Uniswapv2Router02Address() (common.Address, error) { - return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContract *SystemContractCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "wZetaContractAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContract *SystemContractSession) WZetaContractAddress() (common.Address, error) { - return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContract *SystemContractCallerSession) WZetaContractAddress() (common.Address, error) { - return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) -} - -// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. -// -// Solidity: function zetaConnectorZEVMAddress() view returns(address) -func (_SystemContract *SystemContractCaller) ZetaConnectorZEVMAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContract.contract.Call(opts, &out, "zetaConnectorZEVMAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. -// -// Solidity: function zetaConnectorZEVMAddress() view returns(address) -func (_SystemContract *SystemContractSession) ZetaConnectorZEVMAddress() (common.Address, error) { - return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) -} - -// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. -// -// Solidity: function zetaConnectorZEVMAddress() view returns(address) -func (_SystemContract *SystemContractCallerSession) ZetaConnectorZEVMAddress() (common.Address, error) { - return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) -} - -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. -// -// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_SystemContract *SystemContractTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) -} - -// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. -// -// Solidity: function setConnectorZEVMAddress(address addr) returns() -func (_SystemContract *SystemContractTransactor) SetConnectorZEVMAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "setConnectorZEVMAddress", addr) -} - -// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. -// -// Solidity: function setConnectorZEVMAddress(address addr) returns() -func (_SystemContract *SystemContractSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) -} - -// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. -// -// Solidity: function setConnectorZEVMAddress(address addr) returns() -func (_SystemContract *SystemContractTransactorSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContract *SystemContractTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContract *SystemContractSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContract *SystemContractTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContract *SystemContractTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "setGasPrice", chainID, price) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContract *SystemContractSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContract *SystemContractTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) -} - -// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. -// -// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() -func (_SystemContract *SystemContractTransactor) SetGasZetaPool(opts *bind.TransactOpts, chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "setGasZetaPool", chainID, erc20) -} - -// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. -// -// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() -func (_SystemContract *SystemContractSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) -} - -// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. -// -// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() -func (_SystemContract *SystemContractTransactorSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContract *SystemContractTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _SystemContract.contract.Transact(opts, "setWZETAContractAddress", addr) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContract *SystemContractSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContract *SystemContractTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) -} - -// SystemContractSetConnectorZEVMIterator is returned from FilterSetConnectorZEVM and is used to iterate over the raw logs and unpacked data for SetConnectorZEVM events raised by the SystemContract contract. -type SystemContractSetConnectorZEVMIterator struct { - Event *SystemContractSetConnectorZEVM // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSetConnectorZEVMIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSetConnectorZEVM) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSetConnectorZEVM) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSetConnectorZEVMIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSetConnectorZEVMIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSetConnectorZEVM represents a SetConnectorZEVM event raised by the SystemContract contract. -type SystemContractSetConnectorZEVM struct { - Arg0 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetConnectorZEVM is a free log retrieval operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. -// -// Solidity: event SetConnectorZEVM(address arg0) -func (_SystemContract *SystemContractFilterer) FilterSetConnectorZEVM(opts *bind.FilterOpts) (*SystemContractSetConnectorZEVMIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetConnectorZEVM") - if err != nil { - return nil, err - } - return &SystemContractSetConnectorZEVMIterator{contract: _SystemContract.contract, event: "SetConnectorZEVM", logs: logs, sub: sub}, nil -} - -// WatchSetConnectorZEVM is a free log subscription operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. -// -// Solidity: event SetConnectorZEVM(address arg0) -func (_SystemContract *SystemContractFilterer) WatchSetConnectorZEVM(opts *bind.WatchOpts, sink chan<- *SystemContractSetConnectorZEVM) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetConnectorZEVM") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSetConnectorZEVM) - if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetConnectorZEVM is a log parse operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. -// -// Solidity: event SetConnectorZEVM(address arg0) -func (_SystemContract *SystemContractFilterer) ParseSetConnectorZEVM(log types.Log) (*SystemContractSetConnectorZEVM, error) { - event := new(SystemContractSetConnectorZEVM) - if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContract contract. -type SystemContractSetGasCoinIterator struct { - Event *SystemContractSetGasCoin // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSetGasCoinIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasCoin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasCoin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSetGasCoinIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSetGasCoinIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSetGasCoin represents a SetGasCoin event raised by the SystemContract contract. -type SystemContractSetGasCoin struct { - Arg0 *big.Int - Arg1 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractSetGasCoinIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasCoin") - if err != nil { - return nil, err - } - return &SystemContractSetGasCoinIterator{contract: _SystemContract.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil -} - -// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasCoin) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasCoin") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSetGasCoin) - if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) ParseSetGasCoin(log types.Log) (*SystemContractSetGasCoin, error) { - event := new(SystemContractSetGasCoin) - if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContract contract. -type SystemContractSetGasPriceIterator struct { - Event *SystemContractSetGasPrice // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSetGasPriceIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasPrice) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasPrice) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSetGasPriceIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSetGasPriceIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSetGasPrice represents a SetGasPrice event raised by the SystemContract contract. -type SystemContractSetGasPrice struct { - Arg0 *big.Int - Arg1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContract *SystemContractFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractSetGasPriceIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasPrice") - if err != nil { - return nil, err - } - return &SystemContractSetGasPriceIterator{contract: _SystemContract.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil -} - -// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContract *SystemContractFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasPrice) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasPrice") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSetGasPrice) - if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContract *SystemContractFilterer) ParseSetGasPrice(log types.Log) (*SystemContractSetGasPrice, error) { - event := new(SystemContractSetGasPrice) - if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContract contract. -type SystemContractSetGasZetaPoolIterator struct { - Event *SystemContractSetGasZetaPool // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSetGasZetaPoolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasZetaPool) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSetGasZetaPool) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSetGasZetaPoolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSetGasZetaPoolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContract contract. -type SystemContractSetGasZetaPool struct { - Arg0 *big.Int - Arg1 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractSetGasZetaPoolIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasZetaPool") - if err != nil { - return nil, err - } - return &SystemContractSetGasZetaPoolIterator{contract: _SystemContract.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil -} - -// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasZetaPool) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasZetaPool") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSetGasZetaPool) - if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContract *SystemContractFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractSetGasZetaPool, error) { - event := new(SystemContractSetGasZetaPool) - if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContract contract. -type SystemContractSetWZetaIterator struct { - Event *SystemContractSetWZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSetWZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSetWZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSetWZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSetWZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSetWZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSetWZeta represents a SetWZeta event raised by the SystemContract contract. -type SystemContractSetWZeta struct { - Arg0 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContract *SystemContractFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractSetWZetaIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetWZeta") - if err != nil { - return nil, err - } - return &SystemContractSetWZetaIterator{contract: _SystemContract.contract, event: "SetWZeta", logs: logs, sub: sub}, nil -} - -// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContract *SystemContractFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractSetWZeta) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetWZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSetWZeta) - if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContract *SystemContractFilterer) ParseSetWZeta(log types.Log) (*SystemContractSetWZeta, error) { - event := new(SystemContractSetWZeta) - if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContract contract. -type SystemContractSystemContractDeployedIterator struct { - Event *SystemContractSystemContractDeployed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractSystemContractDeployedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractSystemContractDeployed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractSystemContractDeployed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractSystemContractDeployedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractSystemContractDeployedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContract contract. -type SystemContractSystemContractDeployed struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContract *SystemContractFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractSystemContractDeployedIterator, error) { - - logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SystemContractDeployed") - if err != nil { - return nil, err - } - return &SystemContractSystemContractDeployedIterator{contract: _SystemContract.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil -} - -// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContract *SystemContractFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractSystemContractDeployed) (event.Subscription, error) { - - logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SystemContractDeployed") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractSystemContractDeployed) - if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContract *SystemContractFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractSystemContractDeployed, error) { - event := new(SystemContractSystemContractDeployed) - if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go b/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go deleted file mode 100644 index a20e3eb6..00000000 --- a/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package systemcontract - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. -var SystemContractErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", -} - -// SystemContractErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use SystemContractErrorsMetaData.ABI instead. -var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI - -// SystemContractErrors is an auto generated Go binding around an Ethereum contract. -type SystemContractErrors struct { - SystemContractErrorsCaller // Read-only binding to the contract - SystemContractErrorsTransactor // Write-only binding to the contract - SystemContractErrorsFilterer // Log filterer for contract events -} - -// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type SystemContractErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SystemContractErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SystemContractErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SystemContractErrorsSession struct { - Contract *SystemContractErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SystemContractErrorsCallerSession struct { - Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SystemContractErrorsTransactorSession struct { - Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type SystemContractErrorsRaw struct { - Contract *SystemContractErrors // Generic contract binding to access the raw methods on -} - -// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SystemContractErrorsCallerRaw struct { - Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SystemContractErrorsTransactorRaw struct { - Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { - contract, err := bindSystemContractErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil -} - -// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { - contract, err := bindSystemContractErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SystemContractErrorsCaller{contract: contract}, nil -} - -// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { - contract, err := bindSystemContractErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SystemContractErrorsTransactor{contract: contract}, nil -} - -// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { - contract, err := bindSystemContractErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SystemContractErrorsFilterer{contract: contract}, nil -} - -// bindSystemContractErrors binds a generic wrapper to an already deployed contract. -func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SystemContractErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go deleted file mode 100644 index 9dabc5e8..00000000 --- a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package systemcontractmock - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. -var SystemContractErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"}]", -} - -// SystemContractErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use SystemContractErrorsMetaData.ABI instead. -var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI - -// SystemContractErrors is an auto generated Go binding around an Ethereum contract. -type SystemContractErrors struct { - SystemContractErrorsCaller // Read-only binding to the contract - SystemContractErrorsTransactor // Write-only binding to the contract - SystemContractErrorsFilterer // Log filterer for contract events -} - -// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type SystemContractErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SystemContractErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SystemContractErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SystemContractErrorsSession struct { - Contract *SystemContractErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SystemContractErrorsCallerSession struct { - Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SystemContractErrorsTransactorSession struct { - Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type SystemContractErrorsRaw struct { - Contract *SystemContractErrors // Generic contract binding to access the raw methods on -} - -// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SystemContractErrorsCallerRaw struct { - Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SystemContractErrorsTransactorRaw struct { - Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { - contract, err := bindSystemContractErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil -} - -// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { - contract, err := bindSystemContractErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SystemContractErrorsCaller{contract: contract}, nil -} - -// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { - contract, err := bindSystemContractErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SystemContractErrorsTransactor{contract: contract}, nil -} - -// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. -func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { - contract, err := bindSystemContractErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SystemContractErrorsFilterer{contract: contract}, nil -} - -// bindSystemContractErrors binds a generic wrapper to an already deployed contract. -func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SystemContractErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go deleted file mode 100644 index 2a02ad6c..00000000 --- a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go +++ /dev/null @@ -1,1176 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package systemcontractmock - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. -var SystemContractMockMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Router02_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasCoin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasZetaPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetWZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SystemContractDeployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"setGasCoinZRC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setWZETAContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"uniswapv2PairFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2Router02Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212200835245fdc75aa593111cf5a43e919740b2258e1512040bc79f39a56cedf119364736f6c63430008070033", -} - -// SystemContractMockABI is the input ABI used to generate the binding from. -// Deprecated: Use SystemContractMockMetaData.ABI instead. -var SystemContractMockABI = SystemContractMockMetaData.ABI - -// SystemContractMockBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SystemContractMockMetaData.Bin instead. -var SystemContractMockBin = SystemContractMockMetaData.Bin - -// DeploySystemContractMock deploys a new Ethereum contract, binding an instance of SystemContractMock to it. -func DeploySystemContractMock(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContractMock, error) { - parsed, err := SystemContractMockMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractMockBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil -} - -// SystemContractMock is an auto generated Go binding around an Ethereum contract. -type SystemContractMock struct { - SystemContractMockCaller // Read-only binding to the contract - SystemContractMockTransactor // Write-only binding to the contract - SystemContractMockFilterer // Log filterer for contract events -} - -// SystemContractMockCaller is an auto generated read-only Go binding around an Ethereum contract. -type SystemContractMockCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractMockTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SystemContractMockTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SystemContractMockFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SystemContractMockSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SystemContractMockSession struct { - Contract *SystemContractMock // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SystemContractMockCallerSession struct { - Contract *SystemContractMockCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SystemContractMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SystemContractMockTransactorSession struct { - Contract *SystemContractMockTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SystemContractMockRaw is an auto generated low-level Go binding around an Ethereum contract. -type SystemContractMockRaw struct { - Contract *SystemContractMock // Generic contract binding to access the raw methods on -} - -// SystemContractMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SystemContractMockCallerRaw struct { - Contract *SystemContractMockCaller // Generic read-only contract binding to access the raw methods on -} - -// SystemContractMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SystemContractMockTransactorRaw struct { - Contract *SystemContractMockTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSystemContractMock creates a new instance of SystemContractMock, bound to a specific deployed contract. -func NewSystemContractMock(address common.Address, backend bind.ContractBackend) (*SystemContractMock, error) { - contract, err := bindSystemContractMock(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil -} - -// NewSystemContractMockCaller creates a new read-only instance of SystemContractMock, bound to a specific deployed contract. -func NewSystemContractMockCaller(address common.Address, caller bind.ContractCaller) (*SystemContractMockCaller, error) { - contract, err := bindSystemContractMock(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SystemContractMockCaller{contract: contract}, nil -} - -// NewSystemContractMockTransactor creates a new write-only instance of SystemContractMock, bound to a specific deployed contract. -func NewSystemContractMockTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractMockTransactor, error) { - contract, err := bindSystemContractMock(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SystemContractMockTransactor{contract: contract}, nil -} - -// NewSystemContractMockFilterer creates a new log filterer instance of SystemContractMock, bound to a specific deployed contract. -func NewSystemContractMockFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractMockFilterer, error) { - contract, err := bindSystemContractMock(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SystemContractMockFilterer{contract: contract}, nil -} - -// bindSystemContractMock binds a generic wrapper to an already deployed contract. -func bindSystemContractMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SystemContractMockMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractMock *SystemContractMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractMock.Contract.SystemContractMockCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractMock *SystemContractMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractMock *SystemContractMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SystemContractMock *SystemContractMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SystemContractMock.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SystemContractMock *SystemContractMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SystemContractMock.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SystemContractMock *SystemContractMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SystemContractMock.Contract.contract.Transact(opts, method, params...) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. -// -// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContractMock *SystemContractMockCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "gasPriceByChainId", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContractMock *SystemContractMockSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { - return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. -// -// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) -func (_SystemContractMock *SystemContractMockCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { - return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. -// -// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) -func (_SystemContractMock *SystemContractMockCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { - return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContractMock *SystemContractMockCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2FactoryAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContractMock *SystemContractMockSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) -} - -// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. -// -// Solidity: function uniswapv2FactoryAddress() view returns(address) -func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContractMock *SystemContractMockCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContractMock *SystemContractMockSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) -} - -// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. -// -// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) -func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContractMock *SystemContractMockCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2Router02Address") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContractMock *SystemContractMockSession) Uniswapv2Router02Address() (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) -} - -// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. -// -// Solidity: function uniswapv2Router02Address() view returns(address) -func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2Router02Address() (common.Address, error) { - return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContractMock *SystemContractMockCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _SystemContractMock.contract.Call(opts, &out, "wZetaContractAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContractMock *SystemContractMockSession) WZetaContractAddress() (common.Address, error) { - return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) -} - -// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. -// -// Solidity: function wZetaContractAddress() view returns(address) -func (_SystemContractMock *SystemContractMockCallerSession) WZetaContractAddress() (common.Address, error) { - return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. -// -// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() -func (_SystemContractMock *SystemContractMockTransactor) OnCrossChainCall(opts *bind.TransactOpts, target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _SystemContractMock.contract.Transact(opts, "onCrossChainCall", target, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. -// -// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() -func (_SystemContractMock *SystemContractMockSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) -} - -// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. -// -// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() -func (_SystemContractMock *SystemContractMockTransactorSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContractMock *SystemContractMockTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContractMock.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContractMock *SystemContractMockSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) -} - -// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. -// -// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() -func (_SystemContractMock *SystemContractMockTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContractMock *SystemContractMockTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContractMock.contract.Transact(opts, "setGasPrice", chainID, price) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContractMock *SystemContractMockSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) -} - -// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. -// -// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() -func (_SystemContractMock *SystemContractMockTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContractMock *SystemContractMockTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _SystemContractMock.contract.Transact(opts, "setWZETAContractAddress", addr) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContractMock *SystemContractMockSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) -} - -// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. -// -// Solidity: function setWZETAContractAddress(address addr) returns() -func (_SystemContractMock *SystemContractMockTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { - return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) -} - -// SystemContractMockSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContractMock contract. -type SystemContractMockSetGasCoinIterator struct { - Event *SystemContractMockSetGasCoin // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractMockSetGasCoinIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasCoin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasCoin) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractMockSetGasCoinIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractMockSetGasCoinIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractMockSetGasCoin represents a SetGasCoin event raised by the SystemContractMock contract. -type SystemContractMockSetGasCoin struct { - Arg0 *big.Int - Arg1 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractMockSetGasCoinIterator, error) { - - logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasCoin") - if err != nil { - return nil, err - } - return &SystemContractMockSetGasCoinIterator{contract: _SystemContractMock.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil -} - -// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasCoin) (event.Subscription, error) { - - logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasCoin") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractMockSetGasCoin) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. -// -// Solidity: event SetGasCoin(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasCoin(log types.Log) (*SystemContractMockSetGasCoin, error) { - event := new(SystemContractMockSetGasCoin) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractMockSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContractMock contract. -type SystemContractMockSetGasPriceIterator struct { - Event *SystemContractMockSetGasPrice // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractMockSetGasPriceIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasPrice) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasPrice) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractMockSetGasPriceIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractMockSetGasPriceIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractMockSetGasPrice represents a SetGasPrice event raised by the SystemContractMock contract. -type SystemContractMockSetGasPrice struct { - Arg0 *big.Int - Arg1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractMockSetGasPriceIterator, error) { - - logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasPrice") - if err != nil { - return nil, err - } - return &SystemContractMockSetGasPriceIterator{contract: _SystemContractMock.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil -} - -// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasPrice) (event.Subscription, error) { - - logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasPrice") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractMockSetGasPrice) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. -// -// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) -func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasPrice(log types.Log) (*SystemContractMockSetGasPrice, error) { - event := new(SystemContractMockSetGasPrice) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractMockSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContractMock contract. -type SystemContractMockSetGasZetaPoolIterator struct { - Event *SystemContractMockSetGasZetaPool // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractMockSetGasZetaPoolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasZetaPool) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetGasZetaPool) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractMockSetGasZetaPoolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractMockSetGasZetaPoolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractMockSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContractMock contract. -type SystemContractMockSetGasZetaPool struct { - Arg0 *big.Int - Arg1 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractMockSetGasZetaPoolIterator, error) { - - logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasZetaPool") - if err != nil { - return nil, err - } - return &SystemContractMockSetGasZetaPoolIterator{contract: _SystemContractMock.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil -} - -// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasZetaPool) (event.Subscription, error) { - - logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasZetaPool") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractMockSetGasZetaPool) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. -// -// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) -func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractMockSetGasZetaPool, error) { - event := new(SystemContractMockSetGasZetaPool) - if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractMockSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContractMock contract. -type SystemContractMockSetWZetaIterator struct { - Event *SystemContractMockSetWZeta // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractMockSetWZetaIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetWZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSetWZeta) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractMockSetWZetaIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractMockSetWZetaIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractMockSetWZeta represents a SetWZeta event raised by the SystemContractMock contract. -type SystemContractMockSetWZeta struct { - Arg0 common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContractMock *SystemContractMockFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractMockSetWZetaIterator, error) { - - logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetWZeta") - if err != nil { - return nil, err - } - return &SystemContractMockSetWZetaIterator{contract: _SystemContractMock.contract, event: "SetWZeta", logs: logs, sub: sub}, nil -} - -// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContractMock *SystemContractMockFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetWZeta) (event.Subscription, error) { - - logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetWZeta") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractMockSetWZeta) - if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. -// -// Solidity: event SetWZeta(address arg0) -func (_SystemContractMock *SystemContractMockFilterer) ParseSetWZeta(log types.Log) (*SystemContractMockSetWZeta, error) { - event := new(SystemContractMockSetWZeta) - if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// SystemContractMockSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContractMock contract. -type SystemContractMockSystemContractDeployedIterator struct { - Event *SystemContractMockSystemContractDeployed // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *SystemContractMockSystemContractDeployedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSystemContractDeployed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(SystemContractMockSystemContractDeployed) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *SystemContractMockSystemContractDeployedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *SystemContractMockSystemContractDeployedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// SystemContractMockSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContractMock contract. -type SystemContractMockSystemContractDeployed struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContractMock *SystemContractMockFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractMockSystemContractDeployedIterator, error) { - - logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SystemContractDeployed") - if err != nil { - return nil, err - } - return &SystemContractMockSystemContractDeployedIterator{contract: _SystemContractMock.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil -} - -// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContractMock *SystemContractMockFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractMockSystemContractDeployed) (event.Subscription, error) { - - logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SystemContractDeployed") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(SystemContractMockSystemContractDeployed) - if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. -// -// Solidity: event SystemContractDeployed() -func (_SystemContractMock *SystemContractMockFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractMockSystemContractDeployed, error) { - event := new(SystemContractMockSystemContractDeployed) - if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/uniswap.sol/uniswapimports.go b/pkg/contracts/zevm/uniswap.sol/uniswapimports.go deleted file mode 100644 index 4107336a..00000000 --- a/pkg/contracts/zevm/uniswap.sol/uniswapimports.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswap - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapImportsMetaData contains all meta data concerning the UniswapImports contract. -var UniswapImportsMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820e9232a161dc235f259a171daf4cc9c53677aabc950914989e6b4f90c1688088664736f6c63430005100032", -} - -// UniswapImportsABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapImportsMetaData.ABI instead. -var UniswapImportsABI = UniswapImportsMetaData.ABI - -// UniswapImportsBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapImportsMetaData.Bin instead. -var UniswapImportsBin = UniswapImportsMetaData.Bin - -// DeployUniswapImports deploys a new Ethereum contract, binding an instance of UniswapImports to it. -func DeployUniswapImports(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapImports, error) { - parsed, err := UniswapImportsMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapImportsBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil -} - -// UniswapImports is an auto generated Go binding around an Ethereum contract. -type UniswapImports struct { - UniswapImportsCaller // Read-only binding to the contract - UniswapImportsTransactor // Write-only binding to the contract - UniswapImportsFilterer // Log filterer for contract events -} - -// UniswapImportsCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapImportsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapImportsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapImportsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapImportsSession struct { - Contract *UniswapImports // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapImportsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapImportsCallerSession struct { - Contract *UniswapImportsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapImportsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapImportsTransactorSession struct { - Contract *UniswapImportsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapImportsRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapImportsRaw struct { - Contract *UniswapImports // Generic contract binding to access the raw methods on -} - -// UniswapImportsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapImportsCallerRaw struct { - Contract *UniswapImportsCaller // Generic read-only contract binding to access the raw methods on -} - -// UniswapImportsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapImportsTransactorRaw struct { - Contract *UniswapImportsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapImports creates a new instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImports(address common.Address, backend bind.ContractBackend) (*UniswapImports, error) { - contract, err := bindUniswapImports(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil -} - -// NewUniswapImportsCaller creates a new read-only instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsCaller(address common.Address, caller bind.ContractCaller) (*UniswapImportsCaller, error) { - contract, err := bindUniswapImports(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapImportsCaller{contract: contract}, nil -} - -// NewUniswapImportsTransactor creates a new write-only instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapImportsTransactor, error) { - contract, err := bindUniswapImports(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapImportsTransactor{contract: contract}, nil -} - -// NewUniswapImportsFilterer creates a new log filterer instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapImportsFilterer, error) { - contract, err := bindUniswapImports(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapImportsFilterer{contract: contract}, nil -} - -// bindUniswapImports binds a generic wrapper to an already deployed contract. -func bindUniswapImports(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapImportsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapImports *UniswapImportsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapImports.Contract.UniswapImportsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapImports *UniswapImportsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapImports *UniswapImportsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapImports *UniswapImportsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapImports.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapImports *UniswapImportsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapImports.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapImports *UniswapImportsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapImports.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go b/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go deleted file mode 100644 index 45699f42..00000000 --- a/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapperiphery - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapImportsMetaData contains all meta data concerning the UniswapImports contract. -var UniswapImportsMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220291c8a5b5fa81338f6eedd0a9b33e226da83e828449ba685880e3dc446a90e6464736f6c63430006060033", -} - -// UniswapImportsABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapImportsMetaData.ABI instead. -var UniswapImportsABI = UniswapImportsMetaData.ABI - -// UniswapImportsBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapImportsMetaData.Bin instead. -var UniswapImportsBin = UniswapImportsMetaData.Bin - -// DeployUniswapImports deploys a new Ethereum contract, binding an instance of UniswapImports to it. -func DeployUniswapImports(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapImports, error) { - parsed, err := UniswapImportsMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapImportsBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil -} - -// UniswapImports is an auto generated Go binding around an Ethereum contract. -type UniswapImports struct { - UniswapImportsCaller // Read-only binding to the contract - UniswapImportsTransactor // Write-only binding to the contract - UniswapImportsFilterer // Log filterer for contract events -} - -// UniswapImportsCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapImportsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapImportsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapImportsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapImportsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapImportsSession struct { - Contract *UniswapImports // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapImportsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapImportsCallerSession struct { - Contract *UniswapImportsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapImportsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapImportsTransactorSession struct { - Contract *UniswapImportsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapImportsRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapImportsRaw struct { - Contract *UniswapImports // Generic contract binding to access the raw methods on -} - -// UniswapImportsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapImportsCallerRaw struct { - Contract *UniswapImportsCaller // Generic read-only contract binding to access the raw methods on -} - -// UniswapImportsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapImportsTransactorRaw struct { - Contract *UniswapImportsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapImports creates a new instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImports(address common.Address, backend bind.ContractBackend) (*UniswapImports, error) { - contract, err := bindUniswapImports(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil -} - -// NewUniswapImportsCaller creates a new read-only instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsCaller(address common.Address, caller bind.ContractCaller) (*UniswapImportsCaller, error) { - contract, err := bindUniswapImports(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapImportsCaller{contract: contract}, nil -} - -// NewUniswapImportsTransactor creates a new write-only instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapImportsTransactor, error) { - contract, err := bindUniswapImports(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapImportsTransactor{contract: contract}, nil -} - -// NewUniswapImportsFilterer creates a new log filterer instance of UniswapImports, bound to a specific deployed contract. -func NewUniswapImportsFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapImportsFilterer, error) { - contract, err := bindUniswapImports(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapImportsFilterer{contract: contract}, nil -} - -// bindUniswapImports binds a generic wrapper to an already deployed contract. -func bindUniswapImports(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapImportsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapImports *UniswapImportsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapImports.Contract.UniswapImportsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapImports *UniswapImportsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapImports *UniswapImportsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapImports *UniswapImportsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapImports.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapImports *UniswapImportsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapImports.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapImports *UniswapImportsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapImports.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/wzeta.sol/weth9.go b/pkg/contracts/zevm/wzeta.sol/weth9.go deleted file mode 100644 index 162a6c50..00000000 --- a/pkg/contracts/zevm/wzeta.sol/weth9.go +++ /dev/null @@ -1,1113 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package wzeta - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// WETH9MetaData contains all meta data concerning the WETH9 contract. -var WETH9MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040526040518060400160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019062000051929190620000d0565b506040518060400160405280600481526020017f5745544800000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620000d0565b506012600260006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b50620001e5565b828054620000de9062000180565b90600052602060002090601f0160209004810192826200010257600085556200014e565b82601f106200011d57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014d57825182559160200191906001019062000130565b5b5090506200015d919062000161565b5090565b5b808211156200017c57600081600090555060010162000162565b5090565b600060028204905060018216806200019957607f821691505b60208210811415620001b057620001af620001b6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610fd380620001f56000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce567146101ad57806370a08231146101d857806395d89b4114610215578063a9059cbb14610240578063d0e30db01461027d578063dd62ed3e14610287576100af565b806306fdde03146100b4578063095ea7b3146100df57806318160ddd1461011c57806323b872dd146101475780632e1a7d4d14610184576100af565b366100af576100ad6102c4565b005b600080fd5b3480156100c057600080fd5b506100c961036a565b6040516100d69190610d20565b60405180910390f35b3480156100eb57600080fd5b5061010660048036038101906101019190610c0f565b6103f8565b6040516101139190610d05565b60405180910390f35b34801561012857600080fd5b506101316104ea565b60405161013e9190610d62565b60405180910390f35b34801561015357600080fd5b5061016e60048036038101906101699190610bbc565b6104f2565b60405161017b9190610d05565b60405180910390f35b34801561019057600080fd5b506101ab60048036038101906101a69190610c4f565b6108c2565b005b3480156101b957600080fd5b506101c2610a32565b6040516101cf9190610d7d565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190610b4f565b610a45565b60405161020c9190610d62565b60405180910390f35b34801561022157600080fd5b5061022a610a5d565b6040516102379190610d20565b60405180910390f35b34801561024c57600080fd5b5061026760048036038101906102629190610c0f565b610aeb565b6040516102749190610d05565b60405180910390f35b6102856102c4565b005b34801561029357600080fd5b506102ae60048036038101906102a99190610b7c565b610b00565b6040516102bb9190610d62565b60405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103139190610db4565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516103609190610d62565b60405180910390a2565b6000805461037790610ec6565b80601f01602080910402602001604051908101604052809291908181526020018280546103a390610ec6565b80156103f05780601f106103c5576101008083540402835291602001916103f0565b820191906000526020600020905b8154815290600101906020018083116103d357829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104d89190610d62565b60405180910390a36001905092915050565b600047905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056d90610d42565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561064e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156107a65781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990610d42565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079e9190610e0a565b925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f59190610e0a565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461084b9190610db4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108af9190610d62565b60405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90610d42565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109939190610e0a565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109e0573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610a279190610d62565b60405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054610a6a90610ec6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9690610ec6565b8015610ae35780601f10610ab857610100808354040283529160200191610ae3565b820191906000526020600020905b815481529060010190602001808311610ac657829003601f168201915b505050505081565b6000610af83384846104f2565b905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600081359050610b3481610f6f565b92915050565b600081359050610b4981610f86565b92915050565b600060208284031215610b6557610b64610f56565b5b6000610b7384828501610b25565b91505092915050565b60008060408385031215610b9357610b92610f56565b5b6000610ba185828601610b25565b9250506020610bb285828601610b25565b9150509250929050565b600080600060608486031215610bd557610bd4610f56565b5b6000610be386828701610b25565b9350506020610bf486828701610b25565b9250506040610c0586828701610b3a565b9150509250925092565b60008060408385031215610c2657610c25610f56565b5b6000610c3485828601610b25565b9250506020610c4585828601610b3a565b9150509250929050565b600060208284031215610c6557610c64610f56565b5b6000610c7384828501610b3a565b91505092915050565b610c8581610e50565b82525050565b6000610c9682610d98565b610ca08185610da3565b9350610cb0818560208601610e93565b610cb981610f5b565b840191505092915050565b6000610cd1600083610da3565b9150610cdc82610f6c565b600082019050919050565b610cf081610e7c565b82525050565b610cff81610e86565b82525050565b6000602082019050610d1a6000830184610c7c565b92915050565b60006020820190508181036000830152610d3a8184610c8b565b905092915050565b60006020820190508181036000830152610d5b81610cc4565b9050919050565b6000602082019050610d776000830184610ce7565b92915050565b6000602082019050610d926000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610dbf82610e7c565b9150610dca83610e7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610dff57610dfe610ef8565b5b828201905092915050565b6000610e1582610e7c565b9150610e2083610e7c565b925082821015610e3357610e32610ef8565b5b828203905092915050565b6000610e4982610e5c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610eb1578082015181840152602081019050610e96565b83811115610ec0576000848401525b50505050565b60006002820490506001821680610ede57607f821691505b60208210811415610ef257610ef1610f27565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b50565b610f7881610e3e565b8114610f8357600080fd5b50565b610f8f81610e7c565b8114610f9a57600080fd5b5056fea2646970667358221220ed2297470e8d6c8e387b5cdc1c81dd38decdf0b011f3c15df9f52f6da3dcc17664736f6c63430008070033", -} - -// WETH9ABI is the input ABI used to generate the binding from. -// Deprecated: Use WETH9MetaData.ABI instead. -var WETH9ABI = WETH9MetaData.ABI - -// WETH9Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use WETH9MetaData.Bin instead. -var WETH9Bin = WETH9MetaData.Bin - -// DeployWETH9 deploys a new Ethereum contract, binding an instance of WETH9 to it. -func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WETH9, error) { - parsed, err := WETH9MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(WETH9Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil -} - -// WETH9 is an auto generated Go binding around an Ethereum contract. -type WETH9 struct { - WETH9Caller // Read-only binding to the contract - WETH9Transactor // Write-only binding to the contract - WETH9Filterer // Log filterer for contract events -} - -// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. -type WETH9Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. -type WETH9Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WETH9Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WETH9Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type WETH9Session struct { - Contract *WETH9 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type WETH9CallerSession struct { - Contract *WETH9Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type WETH9TransactorSession struct { - Contract *WETH9Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. -type WETH9Raw struct { - Contract *WETH9 // Generic contract binding to access the raw methods on -} - -// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WETH9CallerRaw struct { - Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on -} - -// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WETH9TransactorRaw struct { - Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. -func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { - contract, err := bindWETH9(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil -} - -// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { - contract, err := bindWETH9(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &WETH9Caller{contract: contract}, nil -} - -// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. -func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { - contract, err := bindWETH9(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &WETH9Transactor{contract: contract}, nil -} - -// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. -func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { - contract, err := bindWETH9(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &WETH9Filterer{contract: contract}, nil -} - -// bindWETH9 binds a generic wrapper to an already deployed contract. -func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := WETH9MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _WETH9.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WETH9.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_WETH9 *WETH9Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "allowance", arg0, arg1) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_WETH9 *WETH9Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_WETH9 *WETH9CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_WETH9 *WETH9Caller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "balanceOf", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_WETH9 *WETH9Session) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_WETH9 *WETH9CallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_WETH9 *WETH9Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_WETH9 *WETH9Session) Decimals() (uint8, error) { - return _WETH9.Contract.Decimals(&_WETH9.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_WETH9 *WETH9CallerSession) Decimals() (uint8, error) { - return _WETH9.Contract.Decimals(&_WETH9.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_WETH9 *WETH9Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_WETH9 *WETH9Session) Name() (string, error) { - return _WETH9.Contract.Name(&_WETH9.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_WETH9 *WETH9CallerSession) Name() (string, error) { - return _WETH9.Contract.Name(&_WETH9.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_WETH9 *WETH9Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_WETH9 *WETH9Session) Symbol() (string, error) { - return _WETH9.Contract.Symbol(&_WETH9.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_WETH9 *WETH9CallerSession) Symbol() (string, error) { - return _WETH9.Contract.Symbol(&_WETH9.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_WETH9 *WETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _WETH9.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_WETH9 *WETH9Session) TotalSupply() (*big.Int, error) { - return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_WETH9 *WETH9CallerSession) TotalSupply() (*big.Int, error) { - return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address guy, uint256 wad) returns(bool) -func (_WETH9 *WETH9Transactor) Approve(opts *bind.TransactOpts, guy common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "approve", guy, wad) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address guy, uint256 wad) returns(bool) -func (_WETH9 *WETH9Session) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address guy, uint256 wad) returns(bool) -func (_WETH9 *WETH9TransactorSession) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "deposit") -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { - return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { - return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9Transactor) Transfer(opts *bind.TransactOpts, dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "transfer", dst, wad) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9Session) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9TransactorSession) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9Transactor) TransferFrom(opts *bind.TransactOpts, src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "transferFrom", src, dst, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9Session) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) -func (_WETH9 *WETH9TransactorSession) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { - return _WETH9.contract.Transact(opts, "withdraw", wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 wad) returns() -func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { - return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_WETH9 *WETH9Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WETH9.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_WETH9 *WETH9Session) Receive() (*types.Transaction, error) { - return _WETH9.Contract.Receive(&_WETH9.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_WETH9 *WETH9TransactorSession) Receive() (*types.Transaction, error) { - return _WETH9.Contract.Receive(&_WETH9.TransactOpts) -} - -// WETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WETH9 contract. -type WETH9ApprovalIterator struct { - Event *WETH9Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WETH9ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WETH9Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WETH9Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WETH9ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WETH9ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WETH9Approval represents a Approval event raised by the WETH9 contract. -type WETH9Approval struct { - Src common.Address - Guy common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) -func (_WETH9 *WETH9Filterer) FilterApproval(opts *bind.FilterOpts, src []common.Address, guy []common.Address) (*WETH9ApprovalIterator, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - var guyRule []interface{} - for _, guyItem := range guy { - guyRule = append(guyRule, guyItem) - } - - logs, sub, err := _WETH9.contract.FilterLogs(opts, "Approval", srcRule, guyRule) - if err != nil { - return nil, err - } - return &WETH9ApprovalIterator{contract: _WETH9.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) -func (_WETH9 *WETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *WETH9Approval, src []common.Address, guy []common.Address) (event.Subscription, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - var guyRule []interface{} - for _, guyItem := range guy { - guyRule = append(guyRule, guyItem) - } - - logs, sub, err := _WETH9.contract.WatchLogs(opts, "Approval", srcRule, guyRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WETH9Approval) - if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) -func (_WETH9 *WETH9Filterer) ParseApproval(log types.Log) (*WETH9Approval, error) { - event := new(WETH9Approval) - if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// WETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the WETH9 contract. -type WETH9DepositIterator struct { - Event *WETH9Deposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WETH9DepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WETH9Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WETH9Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WETH9DepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WETH9DepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WETH9Deposit represents a Deposit event raised by the WETH9 contract. -type WETH9Deposit struct { - Dst common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*WETH9DepositIterator, error) { - - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _WETH9.contract.FilterLogs(opts, "Deposit", dstRule) - if err != nil { - return nil, err - } - return &WETH9DepositIterator{contract: _WETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *WETH9Deposit, dst []common.Address) (event.Subscription, error) { - - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _WETH9.contract.WatchLogs(opts, "Deposit", dstRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WETH9Deposit) - if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. -// -// Solidity: event Deposit(address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) ParseDeposit(log types.Log) (*WETH9Deposit, error) { - event := new(WETH9Deposit) - if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// WETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the WETH9 contract. -type WETH9TransferIterator struct { - Event *WETH9Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WETH9TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WETH9Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WETH9Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WETH9TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WETH9TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WETH9Transfer represents a Transfer event raised by the WETH9 contract. -type WETH9Transfer struct { - Src common.Address - Dst common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) FilterTransfer(opts *bind.FilterOpts, src []common.Address, dst []common.Address) (*WETH9TransferIterator, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _WETH9.contract.FilterLogs(opts, "Transfer", srcRule, dstRule) - if err != nil { - return nil, err - } - return &WETH9TransferIterator{contract: _WETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *WETH9Transfer, src []common.Address, dst []common.Address) (event.Subscription, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - var dstRule []interface{} - for _, dstItem := range dst { - dstRule = append(dstRule, dstItem) - } - - logs, sub, err := _WETH9.contract.WatchLogs(opts, "Transfer", srcRule, dstRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WETH9Transfer) - if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) -func (_WETH9 *WETH9Filterer) ParseTransfer(log types.Log) (*WETH9Transfer, error) { - event := new(WETH9Transfer) - if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// WETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the WETH9 contract. -type WETH9WithdrawalIterator struct { - Event *WETH9Withdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WETH9WithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WETH9Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WETH9Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WETH9WithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WETH9WithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WETH9Withdrawal represents a Withdrawal event raised by the WETH9 contract. -type WETH9Withdrawal struct { - Src common.Address - Wad *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_WETH9 *WETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*WETH9WithdrawalIterator, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - - logs, sub, err := _WETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) - if err != nil { - return nil, err - } - return &WETH9WithdrawalIterator{contract: _WETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_WETH9 *WETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *WETH9Withdrawal, src []common.Address) (event.Subscription, error) { - - var srcRule []interface{} - for _, srcItem := range src { - srcRule = append(srcRule, srcItem) - } - - logs, sub, err := _WETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WETH9Withdrawal) - if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. -// -// Solidity: event Withdrawal(address indexed src, uint256 wad) -func (_WETH9 *WETH9Filterer) ParseWithdrawal(log types.Log) (*WETH9Withdrawal, error) { - event := new(WETH9Withdrawal) - if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go deleted file mode 100644 index 3778303e..00000000 --- a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go +++ /dev/null @@ -1,1000 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectorzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesSendInput struct { - DestinationChainId *big.Int - DestinationAddress []byte - DestinationGasLimit *big.Int - Message []byte - ZetaValueAndGas *big.Int - ZetaParams []byte -} - -// ZetaConnectorZEVMMetaData contains all meta data concerning the ZetaConnectorZEVM contract. -var ZetaConnectorZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WZETATransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongValue\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"SetWZETA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"setWzetaAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wzeta\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200177d3803806200177d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200011a565b6000815190506200008f8162000100565b92915050565b600060208284031215620000ae57620000ad620000fb565b5b6000620000be848285016200007e565b91505092915050565b6000620000d482620000db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200010b81620000c7565b81146200011757600080fd5b50565b611653806200012a6000396000f3fe6080604052600436106100585760003560e01c8062173d461461013757806329dd214d146101625780633ce4a5bc1461017e578063942a5e16146101a9578063eb3bacbd146101c5578063ec026901146101ee57610132565b366101325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156100f9575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610130576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561014357600080fd5b5061014c610217565b6040516101599190611276565b60405180910390f35b61017c60048036038101906101779190610f77565b61023b565b005b34801561018a57600080fd5b506101936105f1565b6040516101a09190611276565b60405180910390f35b6101c360048036038101906101be9190610e68565b610609565b005b3480156101d157600080fd5b506101ec60048036038101906101e79190610e3b565b6109b3565b005b3480156101fa57600080fd5b5061021560048036038101906102109190611046565b610aa6565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102b4576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8334146102ed576040517f98d4901c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3087876040518463ffffffff1660e01b81526004016103cb93929190611291565b602060405180830381600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d9190610f4a565b610453576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083839050111561058f578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161055c91906113f2565b600060405180830381600087803b15801561057657600080fd5b505af115801561058a573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b8989896040516105df9594939291906113a9565b60405180910390a45050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610682576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8334146106bb576040517f98d4901c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd308b876040518463ffffffff1660e01b815260040161079993929190611291565b602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190610f4a565b610821576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838390501115610963578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016109309190611414565b600060405180830381600087803b15801561094a57600080fd5b505af115801561095e573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516109a09796959493929190611344565b60405180910390a3505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d417681604051610a9b9190611276565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b8152600401610b0793929190611291565b602060405180830381600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190610f4a565b610b8f576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b8152600401610bec9190611436565b600060405180830381600087803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610c5c90611261565b60006040518083038185875af1925050503d8060008114610c99576040519150601f19603f3d011682016040523d82523d6000602084013e610c9e565b606091505b5050905080610cd9576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e432858060200190610d279190611451565b87608001358860400135898060600190610d419190611451565b8b8060a00190610d519190611451565b604051610d66999897969594939291906112c8565b60405180910390a35050565b600081359050610d81816115c1565b92915050565b600081519050610d96816115d8565b92915050565b600081359050610dab816115ef565b92915050565b60008083601f840112610dc757610dc6611585565b5b8235905067ffffffffffffffff811115610de457610de3611580565b5b602083019150836001820283011115610e0057610dff611599565b5b9250929050565b600060c08284031215610e1d57610e1c61158f565b5b81905092915050565b600081359050610e3581611606565b92915050565b600060208284031215610e5157610e506115a8565b5b6000610e5f84828501610d72565b91505092915050565b600080600080600080600080600060e08a8c031215610e8a57610e896115a8565b5b6000610e988c828d01610d72565b9950506020610ea98c828d01610e26565b98505060408a013567ffffffffffffffff811115610eca57610ec96115a3565b5b610ed68c828d01610db1565b97509750506060610ee98c828d01610e26565b9550506080610efa8c828d01610e26565b94505060a08a013567ffffffffffffffff811115610f1b57610f1a6115a3565b5b610f278c828d01610db1565b935093505060c0610f3a8c828d01610d9c565b9150509295985092959850929598565b600060208284031215610f6057610f5f6115a8565b5b6000610f6e84828501610d87565b91505092915050565b60008060008060008060008060c0898b031215610f9757610f966115a8565b5b600089013567ffffffffffffffff811115610fb557610fb46115a3565b5b610fc18b828c01610db1565b98509850506020610fd48b828c01610e26565b9650506040610fe58b828c01610d72565b9550506060610ff68b828c01610e26565b945050608089013567ffffffffffffffff811115611017576110166115a3565b5b6110238b828c01610db1565b935093505060a06110368b828c01610d9c565b9150509295985092959890939650565b60006020828403121561105c5761105b6115a8565b5b600082013567ffffffffffffffff81111561107a576110796115a3565b5b61108684828501610e07565b91505092915050565b611098816114ec565b82525050565b6110a7816114ec565b82525050565b60006110b983856114d0565b93506110c683858461153e565b6110cf836115ad565b840190509392505050565b60006110e5826114b4565b6110ef81856114bf565b93506110ff81856020860161154d565b611108816115ad565b840191505092915050565b60006111206000836114e1565b915061112b826115be565b600082019050919050565b600060a083016000830151848203600086015261115382826110da565b91505060208301516111686020860182611243565b50604083015161117b604086018261108f565b50606083015161118e6060860182611243565b50608083015184820360808601526111a682826110da565b9150508091505092915050565b600060c0830160008301516111cb600086018261108f565b5060208301516111de6020860182611243565b50604083015184820360408601526111f682826110da565b915050606083015161120b6060860182611243565b50608083015161121e6080860182611243565b5060a083015184820360a086015261123682826110da565b9150508091505092915050565b61124c81611534565b82525050565b61125b81611534565b82525050565b600061126c82611113565b9150819050919050565b600060208201905061128b600083018461109e565b92915050565b60006060820190506112a6600083018661109e565b6112b3602083018561109e565b6112c06040830184611252565b949350505050565b600060c0820190506112dd600083018c61109e565b81810360208301526112f0818a8c6110ad565b90506112ff6040830189611252565b61130c6060830188611252565b818103608083015261131f8186886110ad565b905081810360a08301526113348184866110ad565b90509a9950505050505050505050565b600060a082019050611359600083018a61109e565b6113666020830189611252565b81810360408301526113798187896110ad565b90506113886060830186611252565b818103608083015261139b8184866110ad565b905098975050505050505050565b600060608201905081810360008301526113c48187896110ad565b90506113d36020830186611252565b81810360408301526113e68184866110ad565b90509695505050505050565b6000602082019050818103600083015261140c8184611136565b905092915050565b6000602082019050818103600083015261142e81846111b3565b905092915050565b600060208201905061144b6000830184611252565b92915050565b6000808335600160200384360303811261146e5761146d611594565b5b80840192508235915067ffffffffffffffff8211156114905761148f61158a565b5b6020830192506001820236038313156114ac576114ab61159e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006114f782611514565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561156b578082015181840152602081019050611550565b8381111561157a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6115ca816114ec565b81146115d557600080fd5b50565b6115e1816114fe565b81146115ec57600080fd5b50565b6115f88161150a565b811461160357600080fd5b50565b61160f81611534565b811461161a57600080fd5b5056fea26469706673582212208fcfd4dd090449f8c32ab1dc30eb44ec918bcb60da6d7ed0572173ea3fdf6fd364736f6c63430008070033", -} - -// ZetaConnectorZEVMABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorZEVMMetaData.ABI instead. -var ZetaConnectorZEVMABI = ZetaConnectorZEVMMetaData.ABI - -// ZetaConnectorZEVMBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZetaConnectorZEVMMetaData.Bin instead. -var ZetaConnectorZEVMBin = ZetaConnectorZEVMMetaData.Bin - -// DeployZetaConnectorZEVM deploys a new Ethereum contract, binding an instance of ZetaConnectorZEVM to it. -func DeployZetaConnectorZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorZEVM, error) { - parsed, err := ZetaConnectorZEVMMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorZEVMBin), backend, wzeta_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZetaConnectorZEVM{ZetaConnectorZEVMCaller: ZetaConnectorZEVMCaller{contract: contract}, ZetaConnectorZEVMTransactor: ZetaConnectorZEVMTransactor{contract: contract}, ZetaConnectorZEVMFilterer: ZetaConnectorZEVMFilterer{contract: contract}}, nil -} - -// ZetaConnectorZEVM is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorZEVM struct { - ZetaConnectorZEVMCaller // Read-only binding to the contract - ZetaConnectorZEVMTransactor // Write-only binding to the contract - ZetaConnectorZEVMFilterer // Log filterer for contract events -} - -// ZetaConnectorZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorZEVMCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorZEVMTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorZEVMFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaConnectorZEVMSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaConnectorZEVMSession struct { - Contract *ZetaConnectorZEVM // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaConnectorZEVMCallerSession struct { - Contract *ZetaConnectorZEVMCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaConnectorZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaConnectorZEVMTransactorSession struct { - Contract *ZetaConnectorZEVMTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaConnectorZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorZEVMRaw struct { - Contract *ZetaConnectorZEVM // Generic contract binding to access the raw methods on -} - -// ZetaConnectorZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorZEVMCallerRaw struct { - Contract *ZetaConnectorZEVMCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaConnectorZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorZEVMTransactorRaw struct { - Contract *ZetaConnectorZEVMTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaConnectorZEVM creates a new instance of ZetaConnectorZEVM, bound to a specific deployed contract. -func NewZetaConnectorZEVM(address common.Address, backend bind.ContractBackend) (*ZetaConnectorZEVM, error) { - contract, err := bindZetaConnectorZEVM(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVM{ZetaConnectorZEVMCaller: ZetaConnectorZEVMCaller{contract: contract}, ZetaConnectorZEVMTransactor: ZetaConnectorZEVMTransactor{contract: contract}, ZetaConnectorZEVMFilterer: ZetaConnectorZEVMFilterer{contract: contract}}, nil -} - -// NewZetaConnectorZEVMCaller creates a new read-only instance of ZetaConnectorZEVM, bound to a specific deployed contract. -func NewZetaConnectorZEVMCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorZEVMCaller, error) { - contract, err := bindZetaConnectorZEVM(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMCaller{contract: contract}, nil -} - -// NewZetaConnectorZEVMTransactor creates a new write-only instance of ZetaConnectorZEVM, bound to a specific deployed contract. -func NewZetaConnectorZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorZEVMTransactor, error) { - contract, err := bindZetaConnectorZEVM(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMTransactor{contract: contract}, nil -} - -// NewZetaConnectorZEVMFilterer creates a new log filterer instance of ZetaConnectorZEVM, bound to a specific deployed contract. -func NewZetaConnectorZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorZEVMFilterer, error) { - contract, err := bindZetaConnectorZEVM(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMFilterer{contract: contract}, nil -} - -// bindZetaConnectorZEVM binds a generic wrapper to an already deployed contract. -func bindZetaConnectorZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorZEVMMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorZEVM.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.contract.Transact(opts, method, params...) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorZEVM.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZetaConnectorZEVM.Contract.FUNGIBLEMODULEADDRESS(&_ZetaConnectorZEVM.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZetaConnectorZEVM.Contract.FUNGIBLEMODULEADDRESS(&_ZetaConnectorZEVM.CallOpts) -} - -// Wzeta is a free data retrieval call binding the contract method 0x00173d46. -// -// Solidity: function wzeta() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMCaller) Wzeta(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorZEVM.contract.Call(opts, &out, "wzeta") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Wzeta is a free data retrieval call binding the contract method 0x00173d46. -// -// Solidity: function wzeta() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Wzeta() (common.Address, error) { - return _ZetaConnectorZEVM.Contract.Wzeta(&_ZetaConnectorZEVM.CallOpts) -} - -// Wzeta is a free data retrieval call binding the contract method 0x00173d46. -// -// Solidity: function wzeta() view returns(address) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerSession) Wzeta() (common.Address, error) { - return _ZetaConnectorZEVM.Contract.Wzeta(&_ZetaConnectorZEVM.CallOpts) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.OnReceive(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. -// -// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.OnReceive(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.OnRevert(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. -// -// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.OnRevert(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorZEVM.contract.Transact(opts, "send", input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.Send(&_ZetaConnectorZEVM.TransactOpts, input) -} - -// Send is a paid mutator transaction binding the contract method 0xec026901. -// -// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.Send(&_ZetaConnectorZEVM.TransactOpts, input) -} - -// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. -// -// Solidity: function setWzetaAddress(address wzeta_) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) SetWzetaAddress(opts *bind.TransactOpts, wzeta_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorZEVM.contract.Transact(opts, "setWzetaAddress", wzeta_) -} - -// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. -// -// Solidity: function setWzetaAddress(address wzeta_) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) SetWzetaAddress(wzeta_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.SetWzetaAddress(&_ZetaConnectorZEVM.TransactOpts, wzeta_) -} - -// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. -// -// Solidity: function setWzetaAddress(address wzeta_) returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) SetWzetaAddress(wzeta_ common.Address) (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.SetWzetaAddress(&_ZetaConnectorZEVM.TransactOpts, wzeta_) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Receive() (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.Receive(&_ZetaConnectorZEVM.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) Receive() (*types.Transaction, error) { - return _ZetaConnectorZEVM.Contract.Receive(&_ZetaConnectorZEVM.TransactOpts) -} - -// ZetaConnectorZEVMSetWZETAIterator is returned from FilterSetWZETA and is used to iterate over the raw logs and unpacked data for SetWZETA events raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMSetWZETAIterator struct { - Event *ZetaConnectorZEVMSetWZETA // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorZEVMSetWZETAIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMSetWZETA) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMSetWZETA) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorZEVMSetWZETAIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorZEVMSetWZETAIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorZEVMSetWZETA represents a SetWZETA event raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMSetWZETA struct { - Wzeta common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetWZETA is a free log retrieval operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. -// -// Solidity: event SetWZETA(address wzeta_) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterSetWZETA(opts *bind.FilterOpts) (*ZetaConnectorZEVMSetWZETAIterator, error) { - - logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "SetWZETA") - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMSetWZETAIterator{contract: _ZetaConnectorZEVM.contract, event: "SetWZETA", logs: logs, sub: sub}, nil -} - -// WatchSetWZETA is a free log subscription operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. -// -// Solidity: event SetWZETA(address wzeta_) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchSetWZETA(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMSetWZETA) (event.Subscription, error) { - - logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "SetWZETA") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorZEVMSetWZETA) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "SetWZETA", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetWZETA is a log parse operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. -// -// Solidity: event SetWZETA(address wzeta_) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseSetWZETA(log types.Log) (*ZetaConnectorZEVMSetWZETA, error) { - event := new(ZetaConnectorZEVMSetWZETA) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "SetWZETA", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorZEVMZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaReceivedIterator struct { - Event *ZetaConnectorZEVMZetaReceived // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorZEVMZetaReceivedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaReceived) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorZEVMZetaReceivedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorZEVMZetaReceivedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorZEVMZetaReceived represents a ZetaReceived event raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaReceived struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorZEVMZetaReceivedIterator, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMZetaReceivedIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil -} - -// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { - - var sourceChainIdRule []interface{} - for _, sourceChainIdItem := range sourceChainId { - sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) - } - var destinationAddressRule []interface{} - for _, destinationAddressItem := range destinationAddress { - destinationAddressRule = append(destinationAddressRule, destinationAddressItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorZEVMZetaReceived) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. -// -// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorZEVMZetaReceived, error) { - event := new(ZetaConnectorZEVMZetaReceived) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReceived", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorZEVMZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaRevertedIterator struct { - Event *ZetaConnectorZEVMZetaReverted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorZEVMZetaRevertedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaReverted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorZEVMZetaRevertedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorZEVMZetaRevertedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorZEVMZetaReverted represents a ZetaReverted event raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaReverted struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationChainId *big.Int - DestinationAddress []byte - RemainingZetaValue *big.Int - Message []byte - InternalSendHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorZEVMZetaRevertedIterator, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMZetaRevertedIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil -} - -// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { - - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - var internalSendHashRule []interface{} - for _, internalSendHashItem := range internalSendHash { - internalSendHashRule = append(internalSendHashRule, internalSendHashItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorZEVMZetaReverted) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. -// -// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorZEVMZetaReverted, error) { - event := new(ZetaConnectorZEVMZetaReverted) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReverted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZetaConnectorZEVMZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaSentIterator struct { - Event *ZetaConnectorZEVMZetaSent // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorZEVMZetaSentIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZetaConnectorZEVMZetaSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorZEVMZetaSentIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZetaConnectorZEVMZetaSentIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZetaConnectorZEVMZetaSent represents a ZetaSent event raised by the ZetaConnectorZEVM contract. -type ZetaConnectorZEVMZetaSent struct { - SourceTxOriginAddress common.Address - ZetaTxSenderAddress common.Address - DestinationChainId *big.Int - DestinationAddress []byte - ZetaValueAndGas *big.Int - DestinationGasLimit *big.Int - Message []byte - ZetaParams []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorZEVMZetaSentIterator, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return &ZetaConnectorZEVMZetaSentIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaSent", logs: logs, sub: sub}, nil -} - -// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { - - var zetaTxSenderAddressRule []interface{} - for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { - zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) - } - var destinationChainIdRule []interface{} - for _, destinationChainIdItem := range destinationChainId { - destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) - } - - logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorZEVMZetaSent) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. -// -// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) -func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorZEVMZetaSent, error) { - event := new(ZetaConnectorZEVMZetaSent) - if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go deleted file mode 100644 index 8497e3ea..00000000 --- a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectorzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesMetaData contains all meta data concerning the ZetaInterfaces contract. -var ZetaInterfacesMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ZetaInterfacesABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaInterfacesMetaData.ABI instead. -var ZetaInterfacesABI = ZetaInterfacesMetaData.ABI - -// ZetaInterfaces is an auto generated Go binding around an Ethereum contract. -type ZetaInterfaces struct { - ZetaInterfacesCaller // Read-only binding to the contract - ZetaInterfacesTransactor // Write-only binding to the contract - ZetaInterfacesFilterer // Log filterer for contract events -} - -// ZetaInterfacesCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaInterfacesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaInterfacesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaInterfacesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaInterfacesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaInterfacesSession struct { - Contract *ZetaInterfaces // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInterfacesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaInterfacesCallerSession struct { - Contract *ZetaInterfacesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaInterfacesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaInterfacesTransactorSession struct { - Contract *ZetaInterfacesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaInterfacesRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaInterfacesRaw struct { - Contract *ZetaInterfaces // Generic contract binding to access the raw methods on -} - -// ZetaInterfacesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaInterfacesCallerRaw struct { - Contract *ZetaInterfacesCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaInterfacesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaInterfacesTransactorRaw struct { - Contract *ZetaInterfacesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaInterfaces creates a new instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfaces(address common.Address, backend bind.ContractBackend) (*ZetaInterfaces, error) { - contract, err := bindZetaInterfaces(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaInterfaces{ZetaInterfacesCaller: ZetaInterfacesCaller{contract: contract}, ZetaInterfacesTransactor: ZetaInterfacesTransactor{contract: contract}, ZetaInterfacesFilterer: ZetaInterfacesFilterer{contract: contract}}, nil -} - -// NewZetaInterfacesCaller creates a new read-only instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesCaller(address common.Address, caller bind.ContractCaller) (*ZetaInterfacesCaller, error) { - contract, err := bindZetaInterfaces(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaInterfacesCaller{contract: contract}, nil -} - -// NewZetaInterfacesTransactor creates a new write-only instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInterfacesTransactor, error) { - contract, err := bindZetaInterfaces(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaInterfacesTransactor{contract: contract}, nil -} - -// NewZetaInterfacesFilterer creates a new log filterer instance of ZetaInterfaces, bound to a specific deployed contract. -func NewZetaInterfacesFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInterfacesFilterer, error) { - contract, err := bindZetaInterfaces(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaInterfacesFilterer{contract: contract}, nil -} - -// bindZetaInterfaces binds a generic wrapper to an already deployed contract. -func bindZetaInterfaces(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaInterfacesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInterfaces *ZetaInterfacesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInterfaces.Contract.ZetaInterfacesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInterfaces *ZetaInterfacesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInterfaces *ZetaInterfacesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaInterfaces *ZetaInterfacesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaInterfaces.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaInterfaces.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go deleted file mode 100644 index 36f6edc1..00000000 --- a/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go +++ /dev/null @@ -1,242 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zetaconnectorzevm - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaMessage struct { - ZetaTxSenderAddress []byte - SourceChainId *big.Int - DestinationAddress common.Address - ZetaValue *big.Int - Message []byte -} - -// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. -type ZetaInterfacesZetaRevert struct { - ZetaTxSenderAddress common.Address - SourceChainId *big.Int - DestinationAddress []byte - DestinationChainId *big.Int - RemainingZetaValue *big.Int - Message []byte -} - -// ZetaReceiverMetaData contains all meta data concerning the ZetaReceiver contract. -var ZetaReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ZetaReceiverABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaReceiverMetaData.ABI instead. -var ZetaReceiverABI = ZetaReceiverMetaData.ABI - -// ZetaReceiver is an auto generated Go binding around an Ethereum contract. -type ZetaReceiver struct { - ZetaReceiverCaller // Read-only binding to the contract - ZetaReceiverTransactor // Write-only binding to the contract - ZetaReceiverFilterer // Log filterer for contract events -} - -// ZetaReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaReceiverCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaReceiverTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaReceiverFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZetaReceiverSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZetaReceiverSession struct { - Contract *ZetaReceiver // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZetaReceiverCallerSession struct { - Contract *ZetaReceiverCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZetaReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZetaReceiverTransactorSession struct { - Contract *ZetaReceiverTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZetaReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaReceiverRaw struct { - Contract *ZetaReceiver // Generic contract binding to access the raw methods on -} - -// ZetaReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaReceiverCallerRaw struct { - Contract *ZetaReceiverCaller // Generic read-only contract binding to access the raw methods on -} - -// ZetaReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaReceiverTransactorRaw struct { - Contract *ZetaReceiverTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZetaReceiver creates a new instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiver(address common.Address, backend bind.ContractBackend) (*ZetaReceiver, error) { - contract, err := bindZetaReceiver(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZetaReceiver{ZetaReceiverCaller: ZetaReceiverCaller{contract: contract}, ZetaReceiverTransactor: ZetaReceiverTransactor{contract: contract}, ZetaReceiverFilterer: ZetaReceiverFilterer{contract: contract}}, nil -} - -// NewZetaReceiverCaller creates a new read-only instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverCaller, error) { - contract, err := bindZetaReceiver(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverCaller{contract: contract}, nil -} - -// NewZetaReceiverTransactor creates a new write-only instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverTransactor, error) { - contract, err := bindZetaReceiver(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZetaReceiverTransactor{contract: contract}, nil -} - -// NewZetaReceiverFilterer creates a new log filterer instance of ZetaReceiver, bound to a specific deployed contract. -func NewZetaReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverFilterer, error) { - contract, err := bindZetaReceiver(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZetaReceiverFilterer{contract: contract}, nil -} - -// bindZetaReceiver binds a generic wrapper to an already deployed contract. -func bindZetaReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaReceiverMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiver *ZetaReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiver.Contract.ZetaReceiverCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiver *ZetaReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiver *ZetaReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZetaReceiver *ZetaReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaReceiver.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaReceiver.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaReceiver.Contract.contract.Transact(opts, method, params...) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.contract.Transact(opts, "onZetaMessage", zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) -} - -// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. -// -// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() -func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.contract.Transact(opts, "onZetaRevert", zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) -} - -// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. -// -// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() -func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { - return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) -} diff --git a/pkg/contracts/zevm/zrc20.sol/zrc20.go b/pkg/contracts/zevm/zrc20.sol/zrc20.go deleted file mode 100644 index ce73d030..00000000 --- a/pkg/contracts/zevm/zrc20.sol/zrc20.go +++ /dev/null @@ -1,1800 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20MetaData contains all meta data concerning the ZRC20 contract. -var ZRC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200272c3803806200272c833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61208e6200069e60003960006108d501526000818161081f01528181610ba20152610cd7015261208e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385e1f4d0116100b8578063c835d7cc1161007c578063c835d7cc146103a5578063d9eeebed146103c1578063dd62ed3e146103e0578063eddeb12314610410578063f2441b321461042c578063f687d12a1461044a57610142565b806385e1f4d0146102eb57806395d89b4114610309578063a3413d0314610327578063a9059cbb14610345578063c70126261461037557610142565b8063313ce5671161010a578063313ce567146102015780633ce4a5bc1461021f57806342966c681461023d57806347e7ef241461026d5780634d8943bb1461029d57806370a08231146102bb57610142565b806306fdde0314610147578063091d278814610165578063095ea7b31461018357806318160ddd146101b357806323b872dd146101d1575b600080fd5b61014f610466565b60405161015c9190611c04565b60405180910390f35b61016d6104f8565b60405161017a9190611c26565b60405180910390f35b61019d600480360381019061019891906118c5565b6104fe565b6040516101aa9190611b52565b60405180910390f35b6101bb61051c565b6040516101c89190611c26565b60405180910390f35b6101eb60048036038101906101e69190611872565b610526565b6040516101f89190611b52565b60405180910390f35b61020961061e565b6040516102169190611c41565b60405180910390f35b610227610635565b6040516102349190611ad7565b60405180910390f35b6102576004803603810190610252919061198e565b61064d565b6040516102649190611b52565b60405180910390f35b610287600480360381019061028291906118c5565b610662565b6040516102949190611b52565b60405180910390f35b6102a56107ce565b6040516102b29190611c26565b60405180910390f35b6102d560048036038101906102d091906117d8565b6107d4565b6040516102e29190611c26565b60405180910390f35b6102f361081d565b6040516103009190611c26565b60405180910390f35b610311610841565b60405161031e9190611c04565b60405180910390f35b61032f6108d3565b60405161033c9190611be9565b60405180910390f35b61035f600480360381019061035a91906118c5565b6108f7565b60405161036c9190611b52565b60405180910390f35b61038f600480360381019061038a9190611932565b610915565b60405161039c9190611b52565b60405180910390f35b6103bf60048036038101906103ba91906117d8565b610a6b565b005b6103c9610b5e565b6040516103d7929190611b29565b60405180910390f35b6103fa60048036038101906103f59190611832565b610dcb565b6040516104079190611c26565b60405180910390f35b61042a6004803603810190610425919061198e565b610e52565b005b610434610f0c565b6040516104419190611ad7565b60405180910390f35b610464600480360381019061045f919061198e565b610f30565b005b60606006805461047590611e8a565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190611e8a565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60015481565b600061051261050b610fea565b8484610ff2565b6001905092915050565b6000600554905090565b60006105338484846111ab565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057e610fea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105f5576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061285610601610fea565b858461060d9190611d9a565b610ff2565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006106593383611407565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610700575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610737576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074183836115bf565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab60405160200161079e9190611abc565b604051602081830303815290604052846040516107bc929190611b6d565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461085090611e8a565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90611e8a565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090b610904610fea565b84846111ab565b6001905092915050565b6000806000610922610b5e565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161097793929190611af2565b602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611905565b6109ff576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a093385611407565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610a579493929190611b9d565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610b539190611ad7565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610bdd9190611c26565b60206040518083038186803b158015610bf557600080fd5b505afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190611805565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c96576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d129190611c26565b60206040518083038186803b158015610d2a57600080fd5b505afa158015610d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6291906119bb565b90506000811415610d9f576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db29190611d40565b610dbc9190611cea565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610f019190611c26565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a81604051610fdf9190611c26565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611059576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e9190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611279576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f7576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113039190611d9a565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113959190611cea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f99190611c26565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ec576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816114f89190611d9a565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816005600082825461154d9190611d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b29190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611626576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546116389190611cea565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168e9190611cea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f39190611c26565b60405180910390a35050565b600061171261170d84611c81565b611c5c565b90508281526020810184848401111561172e5761172d611fd2565b5b611739848285611e48565b509392505050565b60008135905061175081612013565b92915050565b60008151905061176581612013565b92915050565b60008151905061177a8161202a565b92915050565b600082601f83011261179557611794611fcd565b5b81356117a58482602086016116ff565b91505092915050565b6000813590506117bd81612041565b92915050565b6000815190506117d281612041565b92915050565b6000602082840312156117ee576117ed611fdc565b5b60006117fc84828501611741565b91505092915050565b60006020828403121561181b5761181a611fdc565b5b600061182984828501611756565b91505092915050565b6000806040838503121561184957611848611fdc565b5b600061185785828601611741565b925050602061186885828601611741565b9150509250929050565b60008060006060848603121561188b5761188a611fdc565b5b600061189986828701611741565b93505060206118aa86828701611741565b92505060406118bb868287016117ae565b9150509250925092565b600080604083850312156118dc576118db611fdc565b5b60006118ea85828601611741565b92505060206118fb858286016117ae565b9150509250929050565b60006020828403121561191b5761191a611fdc565b5b60006119298482850161176b565b91505092915050565b6000806040838503121561194957611948611fdc565b5b600083013567ffffffffffffffff81111561196757611966611fd7565b5b61197385828601611780565b9250506020611984858286016117ae565b9150509250929050565b6000602082840312156119a4576119a3611fdc565b5b60006119b2848285016117ae565b91505092915050565b6000602082840312156119d1576119d0611fdc565b5b60006119df848285016117c3565b91505092915050565b6119f181611dce565b82525050565b611a08611a0382611dce565b611eed565b82525050565b611a1781611de0565b82525050565b6000611a2882611cb2565b611a328185611cc8565b9350611a42818560208601611e57565b611a4b81611fe1565b840191505092915050565b611a5f81611e36565b82525050565b6000611a7082611cbd565b611a7a8185611cd9565b9350611a8a818560208601611e57565b611a9381611fe1565b840191505092915050565b611aa781611e1f565b82525050565b611ab681611e29565b82525050565b6000611ac882846119f7565b60148201915081905092915050565b6000602082019050611aec60008301846119e8565b92915050565b6000606082019050611b0760008301866119e8565b611b1460208301856119e8565b611b216040830184611a9e565b949350505050565b6000604082019050611b3e60008301856119e8565b611b4b6020830184611a9e565b9392505050565b6000602082019050611b676000830184611a0e565b92915050565b60006040820190508181036000830152611b878185611a1d565b9050611b966020830184611a9e565b9392505050565b60006080820190508181036000830152611bb78187611a1d565b9050611bc66020830186611a9e565b611bd36040830185611a9e565b611be06060830184611a9e565b95945050505050565b6000602082019050611bfe6000830184611a56565b92915050565b60006020820190508181036000830152611c1e8184611a65565b905092915050565b6000602082019050611c3b6000830184611a9e565b92915050565b6000602082019050611c566000830184611aad565b92915050565b6000611c66611c77565b9050611c728282611ebc565b919050565b6000604051905090565b600067ffffffffffffffff821115611c9c57611c9b611f9e565b5b611ca582611fe1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cf582611e1f565b9150611d0083611e1f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d3557611d34611f11565b5b828201905092915050565b6000611d4b82611e1f565b9150611d5683611e1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8f57611d8e611f11565b5b828202905092915050565b6000611da582611e1f565b9150611db083611e1f565b925082821015611dc357611dc2611f11565b5b828203905092915050565b6000611dd982611dff565b9050919050565b60008115159050919050565b6000819050611dfa82611fff565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611e4182611dec565b9050919050565b82818337600083830152505050565b60005b83811015611e75578082015181840152602081019050611e5a565b83811115611e84576000848401525b50505050565b60006002820490506001821680611ea257607f821691505b60208210811415611eb657611eb5611f6f565b5b50919050565b611ec582611fe1565b810181811067ffffffffffffffff82111715611ee457611ee3611f9e565b5b80604052505050565b6000611ef882611eff565b9050919050565b6000611f0a82611ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120105761200f611f40565b5b50565b61201c81611dce565b811461202757600080fd5b50565b61203381611de0565b811461203e57600080fd5b50565b61204a81611e1f565b811461205557600080fd5b5056fea2646970667358221220afef7d1a51c1829fcaf89af9a3239ae43ab2f828aa86ff901f729544637e39d464736f6c63430008070033", -} - -// ZRC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20MetaData.ABI instead. -var ZRC20ABI = ZRC20MetaData.ABI - -// ZRC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZRC20MetaData.Bin instead. -var ZRC20Bin = ZRC20MetaData.Bin - -// DeployZRC20 deploys a new Ethereum contract, binding an instance of ZRC20 to it. -func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20, error) { - parsed, err := ZRC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20Bin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil -} - -// ZRC20 is an auto generated Go binding around an Ethereum contract. -type ZRC20 struct { - ZRC20Caller // Read-only binding to the contract - ZRC20Transactor // Write-only binding to the contract - ZRC20Filterer // Log filterer for contract events -} - -// ZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20Session struct { - Contract *ZRC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20CallerSession struct { - Contract *ZRC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20TransactorSession struct { - Contract *ZRC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20Raw struct { - Contract *ZRC20 // Generic contract binding to access the raw methods on -} - -// ZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20CallerRaw struct { - Contract *ZRC20Caller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20TransactorRaw struct { - Contract *ZRC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20 creates a new instance of ZRC20, bound to a specific deployed contract. -func NewZRC20(address common.Address, backend bind.ContractBackend) (*ZRC20, error) { - contract, err := bindZRC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil -} - -// NewZRC20Caller creates a new read-only instance of ZRC20, bound to a specific deployed contract. -func NewZRC20Caller(address common.Address, caller bind.ContractCaller) (*ZRC20Caller, error) { - contract, err := bindZRC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20Caller{contract: contract}, nil -} - -// NewZRC20Transactor creates a new write-only instance of ZRC20, bound to a specific deployed contract. -func NewZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20Transactor, error) { - contract, err := bindZRC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20Transactor{contract: contract}, nil -} - -// NewZRC20Filterer creates a new log filterer instance of ZRC20, bound to a specific deployed contract. -func NewZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20Filterer, error) { - contract, err := bindZRC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20Filterer{contract: contract}, nil -} - -// bindZRC20 binds a generic wrapper to an already deployed contract. -func bindZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20 *ZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20.Contract.ZRC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20 *ZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20.Contract.ZRC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20 *ZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20.Contract.ZRC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20 *ZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20 *ZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20 *ZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20.Contract.contract.Transact(opts, method, params...) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20 *ZRC20Caller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "CHAIN_ID") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20 *ZRC20Session) CHAINID() (*big.Int, error) { - return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) CHAINID() (*big.Int, error) { - return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20 *ZRC20Caller) COINTYPE(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "COIN_TYPE") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20 *ZRC20Session) COINTYPE() (uint8, error) { - return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20 *ZRC20CallerSession) COINTYPE() (uint8, error) { - return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Caller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Session) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20CallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20Caller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "GAS_LIMIT") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20Session) GASLIMIT() (*big.Int, error) { - return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) GASLIMIT() (*big.Int, error) { - return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Caller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Session) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20CallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20Session) Decimals() (uint8, error) { - return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20CallerSession) Decimals() (uint8, error) { - return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20Session) Name() (string, error) { - return _ZRC20.Contract.Name(&_ZRC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20CallerSession) Name() (string, error) { - return _ZRC20.Contract.Name(&_ZRC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20Session) Symbol() (string, error) { - return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20CallerSession) Symbol() (string, error) { - return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20 *ZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20 *ZRC20Session) TotalSupply() (*big.Int, error) { - return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) TotalSupply() (*big.Int, error) { - return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20 *ZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { - var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "withdrawGasFee") - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20 *ZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20 *ZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "deposit", to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20Transactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "updateGasLimit", gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20Session) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20Transactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20Session) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20TransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20 *ZRC20Transactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "updateSystemContractAddress", addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20 *ZRC20Session) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20 *ZRC20TransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "withdraw", to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) -} - -// ZRC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20 contract. -type ZRC20ApprovalIterator struct { - Event *ZRC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20Approval represents a Approval event raised by the ZRC20 contract. -type ZRC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20 *ZRC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZRC20ApprovalIterator{contract: _ZRC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20 *ZRC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20Approval) - if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20 *ZRC20Filterer) ParseApproval(log types.Log) (*ZRC20Approval, error) { - event := new(ZRC20Approval) - if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20 contract. -type ZRC20DepositIterator struct { - Event *ZRC20Deposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20DepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20Deposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20DepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20DepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20Deposit represents a Deposit event raised by the ZRC20 contract. -type ZRC20Deposit struct { - From []byte - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20DepositIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return &ZRC20DepositIterator{contract: _ZRC20.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20Deposit, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20Deposit) - if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) ParseDeposit(log types.Log) (*ZRC20Deposit, error) { - event := new(ZRC20Deposit) - if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20 contract. -type ZRC20TransferIterator struct { - Event *ZRC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20Transfer represents a Transfer event raised by the ZRC20 contract. -type ZRC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZRC20TransferIterator{contract: _ZRC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20Transfer) - if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20 *ZRC20Filterer) ParseTransfer(log types.Log) (*ZRC20Transfer, error) { - event := new(ZRC20Transfer) - if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20UpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20 contract. -type ZRC20UpdatedGasLimitIterator struct { - Event *ZRC20UpdatedGasLimit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20UpdatedGasLimitIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20UpdatedGasLimitIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20UpdatedGasLimitIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20UpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20 contract. -type ZRC20UpdatedGasLimit struct { - GasLimit *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20 *ZRC20Filterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20UpdatedGasLimitIterator, error) { - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return &ZRC20UpdatedGasLimitIterator{contract: _ZRC20.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil -} - -// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20 *ZRC20Filterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedGasLimit) (event.Subscription, error) { - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20UpdatedGasLimit) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20 *ZRC20Filterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20UpdatedGasLimit, error) { - event := new(ZRC20UpdatedGasLimit) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20UpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20 contract. -type ZRC20UpdatedProtocolFlatFeeIterator struct { - Event *ZRC20UpdatedProtocolFlatFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20UpdatedProtocolFlatFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20UpdatedProtocolFlatFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20UpdatedProtocolFlatFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20UpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20 contract. -type ZRC20UpdatedProtocolFlatFee struct { - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20UpdatedProtocolFlatFeeIterator, error) { - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return &ZRC20UpdatedProtocolFlatFeeIterator{contract: _ZRC20.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil -} - -// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedProtocolFlatFee) (event.Subscription, error) { - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20UpdatedProtocolFlatFee) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20UpdatedProtocolFlatFee, error) { - event := new(ZRC20UpdatedProtocolFlatFee) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20UpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20 contract. -type ZRC20UpdatedSystemContractIterator struct { - Event *ZRC20UpdatedSystemContract // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20UpdatedSystemContractIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20UpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20UpdatedSystemContractIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20UpdatedSystemContractIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20UpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20 contract. -type ZRC20UpdatedSystemContract struct { - SystemContract common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20 *ZRC20Filterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20UpdatedSystemContractIterator, error) { - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return &ZRC20UpdatedSystemContractIterator{contract: _ZRC20.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil -} - -// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20 *ZRC20Filterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedSystemContract) (event.Subscription, error) { - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20UpdatedSystemContract) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20 *ZRC20Filterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20UpdatedSystemContract, error) { - event := new(ZRC20UpdatedSystemContract) - if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20 contract. -type ZRC20WithdrawalIterator struct { - Event *ZRC20Withdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20WithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20Withdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20WithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20WithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20Withdrawal represents a Withdrawal event raised by the ZRC20 contract. -type ZRC20Withdrawal struct { - From common.Address - To []byte - Value *big.Int - GasFee *big.Int - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20WithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &ZRC20WithdrawalIterator{contract: _ZRC20.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20Withdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20Withdrawal) - if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20 *ZRC20Filterer) ParseWithdrawal(log types.Log) (*ZRC20Withdrawal, error) { - event := new(ZRC20Withdrawal) - if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/zevm/zrc20.sol/zrc20errors.go b/pkg/contracts/zevm/zrc20.sol/zrc20errors.go deleted file mode 100644 index d822cd2c..00000000 --- a/pkg/contracts/zevm/zrc20.sol/zrc20errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. -var ZRC20ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}]", -} - -// ZRC20ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. -var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI - -// ZRC20Errors is an auto generated Go binding around an Ethereum contract. -type ZRC20Errors struct { - ZRC20ErrorsCaller // Read-only binding to the contract - ZRC20ErrorsTransactor // Write-only binding to the contract - ZRC20ErrorsFilterer // Log filterer for contract events -} - -// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20ErrorsSession struct { - Contract *ZRC20Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20ErrorsCallerSession struct { - Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20ErrorsTransactorSession struct { - Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20ErrorsRaw struct { - Contract *ZRC20Errors // Generic contract binding to access the raw methods on -} - -// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCallerRaw struct { - Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactorRaw struct { - Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { - contract, err := bindZRC20Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil -} - -// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { - contract, err := bindZRC20Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsCaller{contract: contract}, nil -} - -// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { - contract, err := bindZRC20Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsTransactor{contract: contract}, nil -} - -// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { - contract, err := bindZRC20Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20ErrorsFilterer{contract: contract}, nil -} - -// bindZRC20Errors binds a generic wrapper to an already deployed contract. -func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go b/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go deleted file mode 100644 index 6939b531..00000000 --- a/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20new - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. -var ZRC20ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}]", -} - -// ZRC20ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. -var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI - -// ZRC20Errors is an auto generated Go binding around an Ethereum contract. -type ZRC20Errors struct { - ZRC20ErrorsCaller // Read-only binding to the contract - ZRC20ErrorsTransactor // Write-only binding to the contract - ZRC20ErrorsFilterer // Log filterer for contract events -} - -// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20ErrorsSession struct { - Contract *ZRC20Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20ErrorsCallerSession struct { - Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20ErrorsTransactorSession struct { - Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20ErrorsRaw struct { - Contract *ZRC20Errors // Generic contract binding to access the raw methods on -} - -// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCallerRaw struct { - Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactorRaw struct { - Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { - contract, err := bindZRC20Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil -} - -// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { - contract, err := bindZRC20Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsCaller{contract: contract}, nil -} - -// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { - contract, err := bindZRC20Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsTransactor{contract: contract}, nil -} - -// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { - contract, err := bindZRC20Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20ErrorsFilterer{contract: contract}, nil -} - -// bindZRC20Errors binds a generic wrapper to an already deployed contract. -func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/zevm/zrc20new.sol/zrc20new.go b/pkg/contracts/zevm/zrc20new.sol/zrc20new.go deleted file mode 100644 index 16e077b9..00000000 --- a/pkg/contracts/zevm/zrc20new.sol/zrc20new.go +++ /dev/null @@ -1,1831 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20new - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. -var ZRC20NewMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122088cc6797a637e9f7f0d8220bcf745a632c2a8fcb9c479e8f3633f88f9d369ecc64736f6c63430008070033", -} - -// ZRC20NewABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20NewMetaData.ABI instead. -var ZRC20NewABI = ZRC20NewMetaData.ABI - -// ZRC20NewBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZRC20NewMetaData.Bin instead. -var ZRC20NewBin = ZRC20NewMetaData.Bin - -// DeployZRC20New deploys a new Ethereum contract, binding an instance of ZRC20New to it. -func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20New, error) { - parsed, err := ZRC20NewMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20NewBin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil -} - -// ZRC20New is an auto generated Go binding around an Ethereum contract. -type ZRC20New struct { - ZRC20NewCaller // Read-only binding to the contract - ZRC20NewTransactor // Write-only binding to the contract - ZRC20NewFilterer // Log filterer for contract events -} - -// ZRC20NewCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20NewCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20NewTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20NewFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20NewSession struct { - Contract *ZRC20New // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20NewCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20NewCallerSession struct { - Contract *ZRC20NewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20NewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20NewTransactorSession struct { - Contract *ZRC20NewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20NewRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20NewRaw struct { - Contract *ZRC20New // Generic contract binding to access the raw methods on -} - -// ZRC20NewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20NewCallerRaw struct { - Contract *ZRC20NewCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20NewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20NewTransactorRaw struct { - Contract *ZRC20NewTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20New creates a new instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20New(address common.Address, backend bind.ContractBackend) (*ZRC20New, error) { - contract, err := bindZRC20New(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil -} - -// NewZRC20NewCaller creates a new read-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewCaller(address common.Address, caller bind.ContractCaller) (*ZRC20NewCaller, error) { - contract, err := bindZRC20New(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20NewCaller{contract: contract}, nil -} - -// NewZRC20NewTransactor creates a new write-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20NewTransactor, error) { - contract, err := bindZRC20New(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20NewTransactor{contract: contract}, nil -} - -// NewZRC20NewFilterer creates a new log filterer instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20NewFilterer, error) { - contract, err := bindZRC20New(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20NewFilterer{contract: contract}, nil -} - -// bindZRC20New binds a generic wrapper to an already deployed contract. -func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20NewMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20New *ZRC20NewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.ZRC20NewCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20New *ZRC20NewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20New *ZRC20NewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20New *ZRC20NewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transact(opts, method, params...) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "CHAIN_ID") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "COIN_TYPE") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GAS_LIMIT") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "withdrawGasFee") - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "deposit", to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateGasLimit", gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateSystemContractAddress", addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "withdraw", to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) -} - -// ZRC20NewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20New contract. -type ZRC20NewApprovalIterator struct { - Event *ZRC20NewApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewApproval represents a Approval event raised by the ZRC20New contract. -type ZRC20NewApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20NewApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZRC20NewApprovalIterator{contract: _ZRC20New.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20NewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseApproval(log types.Log) (*ZRC20NewApproval, error) { - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20New contract. -type ZRC20NewDepositIterator struct { - Event *ZRC20NewDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewDeposit represents a Deposit event raised by the ZRC20New contract. -type ZRC20NewDeposit struct { - From []byte - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20NewDepositIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return &ZRC20NewDepositIterator{contract: _ZRC20New.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20NewDeposit, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseDeposit(log types.Log) (*ZRC20NewDeposit, error) { - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20New contract. -type ZRC20NewTransferIterator struct { - Event *ZRC20NewTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewTransfer represents a Transfer event raised by the ZRC20New contract. -type ZRC20NewTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20NewTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZRC20NewTransferIterator{contract: _ZRC20New.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20NewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseTransfer(log types.Log) (*ZRC20NewTransfer, error) { - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimitIterator struct { - Event *ZRC20NewUpdatedGasLimit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedGasLimitIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedGasLimitIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimit struct { - GasLimit *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20NewUpdatedGasLimitIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedGasLimitIterator{contract: _ZRC20New.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil -} - -// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedGasLimit) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20NewUpdatedGasLimit, error) { - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFeeIterator struct { - Event *ZRC20NewUpdatedProtocolFlatFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFee struct { - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20NewUpdatedProtocolFlatFeeIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedProtocolFlatFeeIterator{contract: _ZRC20New.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil -} - -// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedProtocolFlatFee) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20NewUpdatedProtocolFlatFee, error) { - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContractIterator struct { - Event *ZRC20NewUpdatedSystemContract // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedSystemContractIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedSystemContractIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContract struct { - SystemContract common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20NewUpdatedSystemContractIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedSystemContractIterator{contract: _ZRC20New.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil -} - -// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedSystemContract) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20NewUpdatedSystemContract, error) { - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20New contract. -type ZRC20NewWithdrawalIterator struct { - Event *ZRC20NewWithdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewWithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewWithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewWithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewWithdrawal represents a Withdrawal event raised by the ZRC20New contract. -type ZRC20NewWithdrawal struct { - From common.Address - To []byte - Value *big.Int - GasFee *big.Int - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20NewWithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &ZRC20NewWithdrawalIterator{contract: _ZRC20New.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20NewWithdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseWithdrawal(log types.Log) (*ZRC20NewWithdrawal, error) { - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/access/ownableupgradeable.sol/ownableupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/access/ownableupgradeable.sol/ownableupgradeable.go deleted file mode 100644 index 1aa60b6a..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/access/ownableupgradeable.sol/ownableupgradeable.go +++ /dev/null @@ -1,541 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ownableupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. -var OwnableUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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\"}]", -} - -// OwnableUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. -var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI - -// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. -type OwnableUpgradeable struct { - OwnableUpgradeableCaller // Read-only binding to the contract - OwnableUpgradeableTransactor // Write-only binding to the contract - OwnableUpgradeableFilterer // Log filterer for contract events -} - -// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableUpgradeableSession struct { - Contract *OwnableUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableUpgradeableCallerSession struct { - Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableUpgradeableTransactorSession struct { - Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableUpgradeableRaw struct { - Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on -} - -// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCallerRaw struct { - Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactorRaw struct { - Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { - contract, err := bindOwnableUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil -} - -// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { - contract, err := bindOwnableUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableCaller{contract: contract}, nil -} - -// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { - contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableTransactor{contract: contract}, nil -} - -// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { - contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableUpgradeableFilterer{contract: contract}, nil -} - -// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. -func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitializedIterator struct { - Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferredIterator struct { - Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/interfaces/ierc1967upgradeable.sol/ierc1967upgradeable.go b/pkg/openzeppelin/contracts-upgradeable/interfaces/ierc1967upgradeable.sol/ierc1967upgradeable.go deleted file mode 100644 index 59892999..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/interfaces/ierc1967upgradeable.sol/ierc1967upgradeable.go +++ /dev/null @@ -1,604 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc1967upgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC1967UpgradeableMetaData contains all meta data concerning the IERC1967Upgradeable contract. -var IERC1967UpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", -} - -// IERC1967UpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC1967UpgradeableMetaData.ABI instead. -var IERC1967UpgradeableABI = IERC1967UpgradeableMetaData.ABI - -// IERC1967Upgradeable is an auto generated Go binding around an Ethereum contract. -type IERC1967Upgradeable struct { - IERC1967UpgradeableCaller // Read-only binding to the contract - IERC1967UpgradeableTransactor // Write-only binding to the contract - IERC1967UpgradeableFilterer // Log filterer for contract events -} - -// IERC1967UpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC1967UpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967UpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC1967UpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967UpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC1967UpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC1967UpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC1967UpgradeableSession struct { - Contract *IERC1967Upgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967UpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC1967UpgradeableCallerSession struct { - Contract *IERC1967UpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC1967UpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC1967UpgradeableTransactorSession struct { - Contract *IERC1967UpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC1967UpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC1967UpgradeableRaw struct { - Contract *IERC1967Upgradeable // Generic contract binding to access the raw methods on -} - -// IERC1967UpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC1967UpgradeableCallerRaw struct { - Contract *IERC1967UpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC1967UpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC1967UpgradeableTransactorRaw struct { - Contract *IERC1967UpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC1967Upgradeable creates a new instance of IERC1967Upgradeable, bound to a specific deployed contract. -func NewIERC1967Upgradeable(address common.Address, backend bind.ContractBackend) (*IERC1967Upgradeable, error) { - contract, err := bindIERC1967Upgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC1967Upgradeable{IERC1967UpgradeableCaller: IERC1967UpgradeableCaller{contract: contract}, IERC1967UpgradeableTransactor: IERC1967UpgradeableTransactor{contract: contract}, IERC1967UpgradeableFilterer: IERC1967UpgradeableFilterer{contract: contract}}, nil -} - -// NewIERC1967UpgradeableCaller creates a new read-only instance of IERC1967Upgradeable, bound to a specific deployed contract. -func NewIERC1967UpgradeableCaller(address common.Address, caller bind.ContractCaller) (*IERC1967UpgradeableCaller, error) { - contract, err := bindIERC1967Upgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC1967UpgradeableCaller{contract: contract}, nil -} - -// NewIERC1967UpgradeableTransactor creates a new write-only instance of IERC1967Upgradeable, bound to a specific deployed contract. -func NewIERC1967UpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967UpgradeableTransactor, error) { - contract, err := bindIERC1967Upgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC1967UpgradeableTransactor{contract: contract}, nil -} - -// NewIERC1967UpgradeableFilterer creates a new log filterer instance of IERC1967Upgradeable, bound to a specific deployed contract. -func NewIERC1967UpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967UpgradeableFilterer, error) { - contract, err := bindIERC1967Upgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC1967UpgradeableFilterer{contract: contract}, nil -} - -// bindIERC1967Upgradeable binds a generic wrapper to an already deployed contract. -func bindIERC1967Upgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC1967UpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967Upgradeable *IERC1967UpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967Upgradeable.Contract.IERC1967UpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967Upgradeable *IERC1967UpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967Upgradeable.Contract.IERC1967UpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967Upgradeable *IERC1967UpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967Upgradeable.Contract.IERC1967UpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC1967Upgradeable *IERC1967UpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC1967Upgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC1967Upgradeable *IERC1967UpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC1967Upgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC1967Upgradeable *IERC1967UpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC1967Upgradeable.Contract.contract.Transact(opts, method, params...) -} - -// IERC1967UpgradeableAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableAdminChangedIterator struct { - Event *IERC1967UpgradeableAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967UpgradeableAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967UpgradeableAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967UpgradeableAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967UpgradeableAdminChanged represents a AdminChanged event raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967UpgradeableAdminChangedIterator, error) { - - logs, sub, err := _IERC1967Upgradeable.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &IERC1967UpgradeableAdminChangedIterator{contract: _IERC1967Upgradeable.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableAdminChanged) (event.Subscription, error) { - - logs, sub, err := _IERC1967Upgradeable.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967UpgradeableAdminChanged) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseAdminChanged(log types.Log) (*IERC1967UpgradeableAdminChanged, error) { - event := new(IERC1967UpgradeableAdminChanged) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967UpgradeableBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableBeaconUpgradedIterator struct { - Event *IERC1967UpgradeableBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967UpgradeableBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967UpgradeableBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967UpgradeableBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967UpgradeableBeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967UpgradeableBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967Upgradeable.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &IERC1967UpgradeableBeaconUpgradedIterator{contract: _IERC1967Upgradeable.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _IERC1967Upgradeable.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967UpgradeableBeaconUpgraded) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseBeaconUpgraded(log types.Log) (*IERC1967UpgradeableBeaconUpgraded, error) { - event := new(IERC1967UpgradeableBeaconUpgraded) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC1967UpgradeableUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableUpgradedIterator struct { - Event *IERC1967UpgradeableUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC1967UpgradeableUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC1967UpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC1967UpgradeableUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC1967UpgradeableUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC1967UpgradeableUpgraded represents a Upgraded event raised by the IERC1967Upgradeable contract. -type IERC1967UpgradeableUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradeableUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967Upgradeable.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &IERC1967UpgradeableUpgradedIterator{contract: _IERC1967Upgradeable.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967UpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _IERC1967Upgradeable.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC1967UpgradeableUpgraded) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_IERC1967Upgradeable *IERC1967UpgradeableFilterer) ParseUpgraded(log types.Log) (*IERC1967UpgradeableUpgraded, error) { - event := new(IERC1967UpgradeableUpgraded) - if err := _IERC1967Upgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/proxy/beacon/ibeaconupgradeable.sol/ibeaconupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/proxy/beacon/ibeaconupgradeable.sol/ibeaconupgradeable.go deleted file mode 100644 index a4a138b4..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/proxy/beacon/ibeaconupgradeable.sol/ibeaconupgradeable.go +++ /dev/null @@ -1,212 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ibeaconupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IBeaconUpgradeableMetaData contains all meta data concerning the IBeaconUpgradeable contract. -var IBeaconUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IBeaconUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use IBeaconUpgradeableMetaData.ABI instead. -var IBeaconUpgradeableABI = IBeaconUpgradeableMetaData.ABI - -// IBeaconUpgradeable is an auto generated Go binding around an Ethereum contract. -type IBeaconUpgradeable struct { - IBeaconUpgradeableCaller // Read-only binding to the contract - IBeaconUpgradeableTransactor // Write-only binding to the contract - IBeaconUpgradeableFilterer // Log filterer for contract events -} - -// IBeaconUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type IBeaconUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IBeaconUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IBeaconUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IBeaconUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IBeaconUpgradeableSession struct { - Contract *IBeaconUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IBeaconUpgradeableCallerSession struct { - Contract *IBeaconUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IBeaconUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IBeaconUpgradeableTransactorSession struct { - Contract *IBeaconUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IBeaconUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type IBeaconUpgradeableRaw struct { - Contract *IBeaconUpgradeable // Generic contract binding to access the raw methods on -} - -// IBeaconUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IBeaconUpgradeableCallerRaw struct { - Contract *IBeaconUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// IBeaconUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IBeaconUpgradeableTransactorRaw struct { - Contract *IBeaconUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIBeaconUpgradeable creates a new instance of IBeaconUpgradeable, bound to a specific deployed contract. -func NewIBeaconUpgradeable(address common.Address, backend bind.ContractBackend) (*IBeaconUpgradeable, error) { - contract, err := bindIBeaconUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IBeaconUpgradeable{IBeaconUpgradeableCaller: IBeaconUpgradeableCaller{contract: contract}, IBeaconUpgradeableTransactor: IBeaconUpgradeableTransactor{contract: contract}, IBeaconUpgradeableFilterer: IBeaconUpgradeableFilterer{contract: contract}}, nil -} - -// NewIBeaconUpgradeableCaller creates a new read-only instance of IBeaconUpgradeable, bound to a specific deployed contract. -func NewIBeaconUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*IBeaconUpgradeableCaller, error) { - contract, err := bindIBeaconUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IBeaconUpgradeableCaller{contract: contract}, nil -} - -// NewIBeaconUpgradeableTransactor creates a new write-only instance of IBeaconUpgradeable, bound to a specific deployed contract. -func NewIBeaconUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconUpgradeableTransactor, error) { - contract, err := bindIBeaconUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IBeaconUpgradeableTransactor{contract: contract}, nil -} - -// NewIBeaconUpgradeableFilterer creates a new log filterer instance of IBeaconUpgradeable, bound to a specific deployed contract. -func NewIBeaconUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconUpgradeableFilterer, error) { - contract, err := bindIBeaconUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IBeaconUpgradeableFilterer{contract: contract}, nil -} - -// bindIBeaconUpgradeable binds a generic wrapper to an already deployed contract. -func bindIBeaconUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IBeaconUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeaconUpgradeable *IBeaconUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeaconUpgradeable.Contract.IBeaconUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeaconUpgradeable *IBeaconUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeaconUpgradeable.Contract.IBeaconUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeaconUpgradeable *IBeaconUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeaconUpgradeable.Contract.IBeaconUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IBeaconUpgradeable *IBeaconUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IBeaconUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IBeaconUpgradeable *IBeaconUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IBeaconUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IBeaconUpgradeable *IBeaconUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IBeaconUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeaconUpgradeable *IBeaconUpgradeableCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IBeaconUpgradeable.contract.Call(opts, &out, "implementation") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeaconUpgradeable *IBeaconUpgradeableSession) Implementation() (common.Address, error) { - return _IBeaconUpgradeable.Contract.Implementation(&_IBeaconUpgradeable.CallOpts) -} - -// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. -// -// Solidity: function implementation() view returns(address) -func (_IBeaconUpgradeable *IBeaconUpgradeableCallerSession) Implementation() (common.Address, error) { - return _IBeaconUpgradeable.Contract.Implementation(&_IBeaconUpgradeable.CallOpts) -} diff --git a/pkg/openzeppelin/contracts-upgradeable/proxy/erc1967/erc1967upgradeupgradeable.sol/erc1967upgradeupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/proxy/erc1967/erc1967upgradeupgradeable.sol/erc1967upgradeupgradeable.go deleted file mode 100644 index 597aa411..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/proxy/erc1967/erc1967upgradeupgradeable.sol/erc1967upgradeupgradeable.go +++ /dev/null @@ -1,738 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc1967upgradeupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC1967UpgradeUpgradeableMetaData contains all meta data concerning the ERC1967UpgradeUpgradeable contract. -var ERC1967UpgradeUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}]", -} - -// ERC1967UpgradeUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC1967UpgradeUpgradeableMetaData.ABI instead. -var ERC1967UpgradeUpgradeableABI = ERC1967UpgradeUpgradeableMetaData.ABI - -// ERC1967UpgradeUpgradeable is an auto generated Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeable struct { - ERC1967UpgradeUpgradeableCaller // Read-only binding to the contract - ERC1967UpgradeUpgradeableTransactor // Write-only binding to the contract - ERC1967UpgradeUpgradeableFilterer // Log filterer for contract events -} - -// ERC1967UpgradeUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UpgradeUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UpgradeUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC1967UpgradeUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC1967UpgradeUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC1967UpgradeUpgradeableSession struct { - Contract *ERC1967UpgradeUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UpgradeUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC1967UpgradeUpgradeableCallerSession struct { - Contract *ERC1967UpgradeUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC1967UpgradeUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC1967UpgradeUpgradeableTransactorSession struct { - Contract *ERC1967UpgradeUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC1967UpgradeUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeableRaw struct { - Contract *ERC1967UpgradeUpgradeable // Generic contract binding to access the raw methods on -} - -// ERC1967UpgradeUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeableCallerRaw struct { - Contract *ERC1967UpgradeUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC1967UpgradeUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC1967UpgradeUpgradeableTransactorRaw struct { - Contract *ERC1967UpgradeUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC1967UpgradeUpgradeable creates a new instance of ERC1967UpgradeUpgradeable, bound to a specific deployed contract. -func NewERC1967UpgradeUpgradeable(address common.Address, backend bind.ContractBackend) (*ERC1967UpgradeUpgradeable, error) { - contract, err := bindERC1967UpgradeUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeable{ERC1967UpgradeUpgradeableCaller: ERC1967UpgradeUpgradeableCaller{contract: contract}, ERC1967UpgradeUpgradeableTransactor: ERC1967UpgradeUpgradeableTransactor{contract: contract}, ERC1967UpgradeUpgradeableFilterer: ERC1967UpgradeUpgradeableFilterer{contract: contract}}, nil -} - -// NewERC1967UpgradeUpgradeableCaller creates a new read-only instance of ERC1967UpgradeUpgradeable, bound to a specific deployed contract. -func NewERC1967UpgradeUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UpgradeUpgradeableCaller, error) { - contract, err := bindERC1967UpgradeUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableCaller{contract: contract}, nil -} - -// NewERC1967UpgradeUpgradeableTransactor creates a new write-only instance of ERC1967UpgradeUpgradeable, bound to a specific deployed contract. -func NewERC1967UpgradeUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UpgradeUpgradeableTransactor, error) { - contract, err := bindERC1967UpgradeUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableTransactor{contract: contract}, nil -} - -// NewERC1967UpgradeUpgradeableFilterer creates a new log filterer instance of ERC1967UpgradeUpgradeable, bound to a specific deployed contract. -func NewERC1967UpgradeUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UpgradeUpgradeableFilterer, error) { - contract, err := bindERC1967UpgradeUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableFilterer{contract: contract}, nil -} - -// bindERC1967UpgradeUpgradeable binds a generic wrapper to an already deployed contract. -func bindERC1967UpgradeUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC1967UpgradeUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967UpgradeUpgradeable.Contract.ERC1967UpgradeUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967UpgradeUpgradeable.Contract.ERC1967UpgradeUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967UpgradeUpgradeable.Contract.ERC1967UpgradeUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC1967UpgradeUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC1967UpgradeUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC1967UpgradeUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ERC1967UpgradeUpgradeableAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableAdminChangedIterator struct { - Event *ERC1967UpgradeUpgradeableAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UpgradeUpgradeableAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UpgradeUpgradeableAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UpgradeUpgradeableAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UpgradeUpgradeableAdminChanged represents a AdminChanged event raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableAdminChangedIterator, error) { - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableAdminChangedIterator{contract: _ERC1967UpgradeUpgradeable.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UpgradeUpgradeableAdminChanged) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseAdminChanged(log types.Log) (*ERC1967UpgradeUpgradeableAdminChanged, error) { - event := new(ERC1967UpgradeUpgradeableAdminChanged) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UpgradeUpgradeableBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableBeaconUpgradedIterator struct { - Event *ERC1967UpgradeUpgradeableBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UpgradeUpgradeableBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UpgradeUpgradeableBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UpgradeUpgradeableBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UpgradeUpgradeableBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UpgradeUpgradeableBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableBeaconUpgradedIterator{contract: _ERC1967UpgradeUpgradeable.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UpgradeUpgradeableBeaconUpgraded) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UpgradeUpgradeableBeaconUpgraded, error) { - event := new(ERC1967UpgradeUpgradeableBeaconUpgraded) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UpgradeUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableInitializedIterator struct { - Event *ERC1967UpgradeUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UpgradeUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UpgradeUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UpgradeUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UpgradeUpgradeableInitialized represents a Initialized event raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC1967UpgradeUpgradeableInitializedIterator, error) { - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableInitializedIterator{contract: _ERC1967UpgradeUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UpgradeUpgradeableInitialized) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseInitialized(log types.Log) (*ERC1967UpgradeUpgradeableInitialized, error) { - event := new(ERC1967UpgradeUpgradeableInitialized) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC1967UpgradeUpgradeableUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableUpgradedIterator struct { - Event *ERC1967UpgradeUpgradeableUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1967UpgradeUpgradeableUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1967UpgradeUpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1967UpgradeUpgradeableUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1967UpgradeUpgradeableUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1967UpgradeUpgradeableUpgraded represents a Upgraded event raised by the ERC1967UpgradeUpgradeable contract. -type ERC1967UpgradeUpgradeableUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UpgradeUpgradeableUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC1967UpgradeUpgradeableUpgradedIterator{contract: _ERC1967UpgradeUpgradeable.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UpgradeUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC1967UpgradeUpgradeable.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1967UpgradeUpgradeableUpgraded) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC1967UpgradeUpgradeable *ERC1967UpgradeUpgradeableFilterer) ParseUpgraded(log types.Log) (*ERC1967UpgradeUpgradeableUpgraded, error) { - event := new(ERC1967UpgradeUpgradeableUpgraded) - if err := _ERC1967UpgradeUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/proxy/utils/initializable.sol/initializable.go b/pkg/openzeppelin/contracts-upgradeable/proxy/utils/initializable.sol/initializable.go deleted file mode 100644 index 4ac5afe3..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/proxy/utils/initializable.sol/initializable.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package initializable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// InitializableMetaData contains all meta data concerning the Initializable contract. -var InitializableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// InitializableABI is the input ABI used to generate the binding from. -// Deprecated: Use InitializableMetaData.ABI instead. -var InitializableABI = InitializableMetaData.ABI - -// Initializable is an auto generated Go binding around an Ethereum contract. -type Initializable struct { - InitializableCaller // Read-only binding to the contract - InitializableTransactor // Write-only binding to the contract - InitializableFilterer // Log filterer for contract events -} - -// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. -type InitializableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type InitializableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type InitializableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// InitializableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type InitializableSession struct { - Contract *Initializable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type InitializableCallerSession struct { - Contract *InitializableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type InitializableTransactorSession struct { - Contract *InitializableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. -type InitializableRaw struct { - Contract *Initializable // Generic contract binding to access the raw methods on -} - -// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type InitializableCallerRaw struct { - Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on -} - -// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type InitializableTransactorRaw struct { - Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. -func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { - contract, err := bindInitializable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil -} - -// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { - contract, err := bindInitializable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &InitializableCaller{contract: contract}, nil -} - -// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. -func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { - contract, err := bindInitializable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &InitializableTransactor{contract: contract}, nil -} - -// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. -func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { - contract, err := bindInitializable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &InitializableFilterer{contract: contract}, nil -} - -// bindInitializable binds a generic wrapper to an already deployed contract. -func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := InitializableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Initializable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Initializable.Contract.contract.Transact(opts, method, params...) -} - -// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. -type InitializableInitializedIterator struct { - Event *InitializableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *InitializableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(InitializableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *InitializableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *InitializableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// InitializableInitialized represents a Initialized event raised by the Initializable contract. -type InitializableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { - - logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { - - logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { - event := new(InitializableInitialized) - if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/proxy/utils/uupsupgradeable.sol/uupsupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/proxy/utils/uupsupgradeable.sol/uupsupgradeable.go deleted file mode 100644 index f91be08a..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/proxy/utils/uupsupgradeable.sol/uupsupgradeable.go +++ /dev/null @@ -1,811 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uupsupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UUPSUpgradeableMetaData contains all meta data concerning the UUPSUpgradeable contract. -var UUPSUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", -} - -// UUPSUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use UUPSUpgradeableMetaData.ABI instead. -var UUPSUpgradeableABI = UUPSUpgradeableMetaData.ABI - -// UUPSUpgradeable is an auto generated Go binding around an Ethereum contract. -type UUPSUpgradeable struct { - UUPSUpgradeableCaller // Read-only binding to the contract - UUPSUpgradeableTransactor // Write-only binding to the contract - UUPSUpgradeableFilterer // Log filterer for contract events -} - -// UUPSUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type UUPSUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UUPSUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UUPSUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UUPSUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UUPSUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UUPSUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UUPSUpgradeableSession struct { - Contract *UUPSUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UUPSUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UUPSUpgradeableCallerSession struct { - Contract *UUPSUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UUPSUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UUPSUpgradeableTransactorSession struct { - Contract *UUPSUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UUPSUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type UUPSUpgradeableRaw struct { - Contract *UUPSUpgradeable // Generic contract binding to access the raw methods on -} - -// UUPSUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UUPSUpgradeableCallerRaw struct { - Contract *UUPSUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// UUPSUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UUPSUpgradeableTransactorRaw struct { - Contract *UUPSUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUUPSUpgradeable creates a new instance of UUPSUpgradeable, bound to a specific deployed contract. -func NewUUPSUpgradeable(address common.Address, backend bind.ContractBackend) (*UUPSUpgradeable, error) { - contract, err := bindUUPSUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UUPSUpgradeable{UUPSUpgradeableCaller: UUPSUpgradeableCaller{contract: contract}, UUPSUpgradeableTransactor: UUPSUpgradeableTransactor{contract: contract}, UUPSUpgradeableFilterer: UUPSUpgradeableFilterer{contract: contract}}, nil -} - -// NewUUPSUpgradeableCaller creates a new read-only instance of UUPSUpgradeable, bound to a specific deployed contract. -func NewUUPSUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*UUPSUpgradeableCaller, error) { - contract, err := bindUUPSUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UUPSUpgradeableCaller{contract: contract}, nil -} - -// NewUUPSUpgradeableTransactor creates a new write-only instance of UUPSUpgradeable, bound to a specific deployed contract. -func NewUUPSUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*UUPSUpgradeableTransactor, error) { - contract, err := bindUUPSUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UUPSUpgradeableTransactor{contract: contract}, nil -} - -// NewUUPSUpgradeableFilterer creates a new log filterer instance of UUPSUpgradeable, bound to a specific deployed contract. -func NewUUPSUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*UUPSUpgradeableFilterer, error) { - contract, err := bindUUPSUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UUPSUpgradeableFilterer{contract: contract}, nil -} - -// bindUUPSUpgradeable binds a generic wrapper to an already deployed contract. -func bindUUPSUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UUPSUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UUPSUpgradeable *UUPSUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UUPSUpgradeable.Contract.UUPSUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UUPSUpgradeable *UUPSUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UUPSUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UUPSUpgradeable *UUPSUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UUPSUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UUPSUpgradeable *UUPSUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UUPSUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _UUPSUpgradeable.contract.Call(opts, &out, "proxiableUUID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_UUPSUpgradeable *UUPSUpgradeableSession) ProxiableUUID() ([32]byte, error) { - return _UUPSUpgradeable.Contract.ProxiableUUID(&_UUPSUpgradeable.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_UUPSUpgradeable *UUPSUpgradeableCallerSession) ProxiableUUID() ([32]byte, error) { - return _UUPSUpgradeable.Contract.ProxiableUUID(&_UUPSUpgradeable.CallOpts) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_UUPSUpgradeable *UUPSUpgradeableTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { - return _UUPSUpgradeable.contract.Transact(opts, "upgradeTo", newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_UUPSUpgradeable *UUPSUpgradeableSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UpgradeTo(&_UUPSUpgradeable.TransactOpts, newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_UUPSUpgradeable *UUPSUpgradeableTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UpgradeTo(&_UUPSUpgradeable.TransactOpts, newImplementation) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_UUPSUpgradeable *UUPSUpgradeableTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _UUPSUpgradeable.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_UUPSUpgradeable *UUPSUpgradeableSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UpgradeToAndCall(&_UUPSUpgradeable.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_UUPSUpgradeable *UUPSUpgradeableTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _UUPSUpgradeable.Contract.UpgradeToAndCall(&_UUPSUpgradeable.TransactOpts, newImplementation, data) -} - -// UUPSUpgradeableAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the UUPSUpgradeable contract. -type UUPSUpgradeableAdminChangedIterator struct { - Event *UUPSUpgradeableAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UUPSUpgradeableAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UUPSUpgradeableAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UUPSUpgradeableAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UUPSUpgradeableAdminChanged represents a AdminChanged event raised by the UUPSUpgradeable contract. -type UUPSUpgradeableAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*UUPSUpgradeableAdminChangedIterator, error) { - - logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &UUPSUpgradeableAdminChangedIterator{contract: _UUPSUpgradeable.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableAdminChanged) (event.Subscription, error) { - - logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UUPSUpgradeableAdminChanged) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseAdminChanged(log types.Log) (*UUPSUpgradeableAdminChanged, error) { - event := new(UUPSUpgradeableAdminChanged) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UUPSUpgradeableBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the UUPSUpgradeable contract. -type UUPSUpgradeableBeaconUpgradedIterator struct { - Event *UUPSUpgradeableBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UUPSUpgradeableBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UUPSUpgradeableBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UUPSUpgradeableBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UUPSUpgradeableBeaconUpgraded represents a BeaconUpgraded event raised by the UUPSUpgradeable contract. -type UUPSUpgradeableBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*UUPSUpgradeableBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &UUPSUpgradeableBeaconUpgradedIterator{contract: _UUPSUpgradeable.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UUPSUpgradeableBeaconUpgraded) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseBeaconUpgraded(log types.Log) (*UUPSUpgradeableBeaconUpgraded, error) { - event := new(UUPSUpgradeableBeaconUpgraded) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UUPSUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the UUPSUpgradeable contract. -type UUPSUpgradeableInitializedIterator struct { - Event *UUPSUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UUPSUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UUPSUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UUPSUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UUPSUpgradeableInitialized represents a Initialized event raised by the UUPSUpgradeable contract. -type UUPSUpgradeableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*UUPSUpgradeableInitializedIterator, error) { - - logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &UUPSUpgradeableInitializedIterator{contract: _UUPSUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UUPSUpgradeableInitialized) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseInitialized(log types.Log) (*UUPSUpgradeableInitialized, error) { - event := new(UUPSUpgradeableInitialized) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UUPSUpgradeableUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the UUPSUpgradeable contract. -type UUPSUpgradeableUpgradedIterator struct { - Event *UUPSUpgradeableUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UUPSUpgradeableUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UUPSUpgradeableUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UUPSUpgradeableUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UUPSUpgradeableUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UUPSUpgradeableUpgraded represents a Upgraded event raised by the UUPSUpgradeable contract. -type UUPSUpgradeableUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*UUPSUpgradeableUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &UUPSUpgradeableUpgradedIterator{contract: _UUPSUpgradeable.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UUPSUpgradeableUpgraded) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseUpgraded(log types.Log) (*UUPSUpgradeableUpgraded, error) { - event := new(UUPSUpgradeableUpgraded) - if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/security/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/security/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go deleted file mode 100644 index 3a0be288..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/security/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package reentrancyguardupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. -var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. -var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI - -// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeable struct { - ReentrancyGuardUpgradeableCaller // Read-only binding to the contract - ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract - ReentrancyGuardUpgradeableFilterer // Log filterer for contract events -} - -// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardUpgradeableSession struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardUpgradeableCallerSession struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardUpgradeableTransactorSession struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableRaw struct { - Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableCallerRaw struct { - Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardUpgradeableTransactorRaw struct { - Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { - contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { - contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil -} - -// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. -func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { - contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil -} - -// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. -func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitializedIterator struct { - Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ReentrancyGuardUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. -type ReentrancyGuardUpgradeableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { - event := new(ReentrancyGuardUpgradeableInitialized) - if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/utils/addressupgradeable.sol/addressupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/utils/addressupgradeable.sol/addressupgradeable.go deleted file mode 100644 index 4b250099..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/utils/addressupgradeable.sol/addressupgradeable.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package addressupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// AddressUpgradeableMetaData contains all meta data concerning the AddressUpgradeable contract. -var AddressUpgradeableMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb9977b6b2ae9fdaa9573cc7ef606484b9a47ba5e63f00c602b173471d15b20a64736f6c63430008070033", -} - -// AddressUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressUpgradeableMetaData.ABI instead. -var AddressUpgradeableABI = AddressUpgradeableMetaData.ABI - -// AddressUpgradeableBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressUpgradeableMetaData.Bin instead. -var AddressUpgradeableBin = AddressUpgradeableMetaData.Bin - -// DeployAddressUpgradeable deploys a new Ethereum contract, binding an instance of AddressUpgradeable to it. -func DeployAddressUpgradeable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *AddressUpgradeable, error) { - parsed, err := AddressUpgradeableMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressUpgradeableBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &AddressUpgradeable{AddressUpgradeableCaller: AddressUpgradeableCaller{contract: contract}, AddressUpgradeableTransactor: AddressUpgradeableTransactor{contract: contract}, AddressUpgradeableFilterer: AddressUpgradeableFilterer{contract: contract}}, nil -} - -// AddressUpgradeable is an auto generated Go binding around an Ethereum contract. -type AddressUpgradeable struct { - AddressUpgradeableCaller // Read-only binding to the contract - AddressUpgradeableTransactor // Write-only binding to the contract - AddressUpgradeableFilterer // Log filterer for contract events -} - -// AddressUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressUpgradeableSession struct { - Contract *AddressUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressUpgradeableCallerSession struct { - Contract *AddressUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressUpgradeableTransactorSession struct { - Contract *AddressUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressUpgradeableRaw struct { - Contract *AddressUpgradeable // Generic contract binding to access the raw methods on -} - -// AddressUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressUpgradeableCallerRaw struct { - Contract *AddressUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressUpgradeableTransactorRaw struct { - Contract *AddressUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddressUpgradeable creates a new instance of AddressUpgradeable, bound to a specific deployed contract. -func NewAddressUpgradeable(address common.Address, backend bind.ContractBackend) (*AddressUpgradeable, error) { - contract, err := bindAddressUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &AddressUpgradeable{AddressUpgradeableCaller: AddressUpgradeableCaller{contract: contract}, AddressUpgradeableTransactor: AddressUpgradeableTransactor{contract: contract}, AddressUpgradeableFilterer: AddressUpgradeableFilterer{contract: contract}}, nil -} - -// NewAddressUpgradeableCaller creates a new read-only instance of AddressUpgradeable, bound to a specific deployed contract. -func NewAddressUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*AddressUpgradeableCaller, error) { - contract, err := bindAddressUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressUpgradeableCaller{contract: contract}, nil -} - -// NewAddressUpgradeableTransactor creates a new write-only instance of AddressUpgradeable, bound to a specific deployed contract. -func NewAddressUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressUpgradeableTransactor, error) { - contract, err := bindAddressUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressUpgradeableTransactor{contract: contract}, nil -} - -// NewAddressUpgradeableFilterer creates a new log filterer instance of AddressUpgradeable, bound to a specific deployed contract. -func NewAddressUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressUpgradeableFilterer, error) { - contract, err := bindAddressUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressUpgradeableFilterer{contract: contract}, nil -} - -// bindAddressUpgradeable binds a generic wrapper to an already deployed contract. -func bindAddressUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_AddressUpgradeable *AddressUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _AddressUpgradeable.Contract.AddressUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_AddressUpgradeable *AddressUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _AddressUpgradeable.Contract.AddressUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_AddressUpgradeable *AddressUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _AddressUpgradeable.Contract.AddressUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_AddressUpgradeable *AddressUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _AddressUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_AddressUpgradeable *AddressUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _AddressUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_AddressUpgradeable *AddressUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _AddressUpgradeable.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/openzeppelin/contracts-upgradeable/utils/contextupgradeable.sol/contextupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/utils/contextupgradeable.sol/contextupgradeable.go deleted file mode 100644 index bcd2aa90..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/utils/contextupgradeable.sol/contextupgradeable.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package contextupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. -var ContextUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", -} - -// ContextUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextUpgradeableMetaData.ABI instead. -var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI - -// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. -type ContextUpgradeable struct { - ContextUpgradeableCaller // Read-only binding to the contract - ContextUpgradeableTransactor // Write-only binding to the contract - ContextUpgradeableFilterer // Log filterer for contract events -} - -// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextUpgradeableSession struct { - Contract *ContextUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextUpgradeableCallerSession struct { - Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextUpgradeableTransactorSession struct { - Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextUpgradeableRaw struct { - Contract *ContextUpgradeable // Generic contract binding to access the raw methods on -} - -// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextUpgradeableCallerRaw struct { - Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextUpgradeableTransactorRaw struct { - Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { - contract, err := bindContextUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil -} - -// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { - contract, err := bindContextUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableCaller{contract: contract}, nil -} - -// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { - contract, err := bindContextUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextUpgradeableTransactor{contract: contract}, nil -} - -// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. -func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { - contract, err := bindContextUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextUpgradeableFilterer{contract: contract}, nil -} - -// bindContextUpgradeable binds a generic wrapper to an already deployed contract. -func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. -type ContextUpgradeableInitializedIterator struct { - Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ContextUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ContextUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ContextUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ContextUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. -type ContextUpgradeableInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { - - logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { - event := new(ContextUpgradeableInitialized) - if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts-upgradeable/utils/storageslotupgradeable.sol/storageslotupgradeable.go b/pkg/openzeppelin/contracts-upgradeable/utils/storageslotupgradeable.sol/storageslotupgradeable.go deleted file mode 100644 index 5e1b607e..00000000 --- a/pkg/openzeppelin/contracts-upgradeable/utils/storageslotupgradeable.sol/storageslotupgradeable.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package storageslotupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// StorageSlotUpgradeableMetaData contains all meta data concerning the StorageSlotUpgradeable contract. -var StorageSlotUpgradeableMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e18234fba4711fe8a78c85843309b44a2dc320c8280807033ee03f351f0af3ae64736f6c63430008070033", -} - -// StorageSlotUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use StorageSlotUpgradeableMetaData.ABI instead. -var StorageSlotUpgradeableABI = StorageSlotUpgradeableMetaData.ABI - -// StorageSlotUpgradeableBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use StorageSlotUpgradeableMetaData.Bin instead. -var StorageSlotUpgradeableBin = StorageSlotUpgradeableMetaData.Bin - -// DeployStorageSlotUpgradeable deploys a new Ethereum contract, binding an instance of StorageSlotUpgradeable to it. -func DeployStorageSlotUpgradeable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlotUpgradeable, error) { - parsed, err := StorageSlotUpgradeableMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotUpgradeableBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &StorageSlotUpgradeable{StorageSlotUpgradeableCaller: StorageSlotUpgradeableCaller{contract: contract}, StorageSlotUpgradeableTransactor: StorageSlotUpgradeableTransactor{contract: contract}, StorageSlotUpgradeableFilterer: StorageSlotUpgradeableFilterer{contract: contract}}, nil -} - -// StorageSlotUpgradeable is an auto generated Go binding around an Ethereum contract. -type StorageSlotUpgradeable struct { - StorageSlotUpgradeableCaller // Read-only binding to the contract - StorageSlotUpgradeableTransactor // Write-only binding to the contract - StorageSlotUpgradeableFilterer // Log filterer for contract events -} - -// StorageSlotUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type StorageSlotUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type StorageSlotUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type StorageSlotUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// StorageSlotUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type StorageSlotUpgradeableSession struct { - Contract *StorageSlotUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// StorageSlotUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type StorageSlotUpgradeableCallerSession struct { - Contract *StorageSlotUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// StorageSlotUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type StorageSlotUpgradeableTransactorSession struct { - Contract *StorageSlotUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// StorageSlotUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type StorageSlotUpgradeableRaw struct { - Contract *StorageSlotUpgradeable // Generic contract binding to access the raw methods on -} - -// StorageSlotUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type StorageSlotUpgradeableCallerRaw struct { - Contract *StorageSlotUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// StorageSlotUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type StorageSlotUpgradeableTransactorRaw struct { - Contract *StorageSlotUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewStorageSlotUpgradeable creates a new instance of StorageSlotUpgradeable, bound to a specific deployed contract. -func NewStorageSlotUpgradeable(address common.Address, backend bind.ContractBackend) (*StorageSlotUpgradeable, error) { - contract, err := bindStorageSlotUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &StorageSlotUpgradeable{StorageSlotUpgradeableCaller: StorageSlotUpgradeableCaller{contract: contract}, StorageSlotUpgradeableTransactor: StorageSlotUpgradeableTransactor{contract: contract}, StorageSlotUpgradeableFilterer: StorageSlotUpgradeableFilterer{contract: contract}}, nil -} - -// NewStorageSlotUpgradeableCaller creates a new read-only instance of StorageSlotUpgradeable, bound to a specific deployed contract. -func NewStorageSlotUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotUpgradeableCaller, error) { - contract, err := bindStorageSlotUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &StorageSlotUpgradeableCaller{contract: contract}, nil -} - -// NewStorageSlotUpgradeableTransactor creates a new write-only instance of StorageSlotUpgradeable, bound to a specific deployed contract. -func NewStorageSlotUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotUpgradeableTransactor, error) { - contract, err := bindStorageSlotUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &StorageSlotUpgradeableTransactor{contract: contract}, nil -} - -// NewStorageSlotUpgradeableFilterer creates a new log filterer instance of StorageSlotUpgradeable, bound to a specific deployed contract. -func NewStorageSlotUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotUpgradeableFilterer, error) { - contract, err := bindStorageSlotUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &StorageSlotUpgradeableFilterer{contract: contract}, nil -} - -// bindStorageSlotUpgradeable binds a generic wrapper to an already deployed contract. -func bindStorageSlotUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := StorageSlotUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlotUpgradeable.Contract.StorageSlotUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlotUpgradeable.Contract.StorageSlotUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlotUpgradeable.Contract.StorageSlotUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _StorageSlotUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _StorageSlotUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_StorageSlotUpgradeable *StorageSlotUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _StorageSlotUpgradeable.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go b/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go deleted file mode 100644 index eae94262..00000000 --- a/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go +++ /dev/null @@ -1,407 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ownable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// OwnableMetaData contains all meta data concerning the Ownable contract. -var OwnableMetaData = &bind.MetaData{ - 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\"}]", -} - -// OwnableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableMetaData.ABI instead. -var OwnableABI = OwnableMetaData.ABI - -// Ownable is an auto generated Go binding around an Ethereum contract. -type Ownable struct { - OwnableCaller // Read-only binding to the contract - OwnableTransactor // Write-only binding to the contract - OwnableFilterer // Log filterer for contract events -} - -// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableSession struct { - Contract *Ownable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableCallerSession struct { - Contract *OwnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableTransactorSession struct { - Contract *OwnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableRaw struct { - Contract *Ownable // Generic contract binding to access the raw methods on -} - -// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableCallerRaw struct { - Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableTransactorRaw struct { - Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. -func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { - contract, err := bindOwnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil -} - -// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { - contract, err := bindOwnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableCaller{contract: contract}, nil -} - -// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. -func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { - contract, err := bindOwnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableTransactor{contract: contract}, nil -} - -// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. -func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { - contract, err := bindOwnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableFilterer{contract: contract}, nil -} - -// bindOwnable binds a generic wrapper to an already deployed contract. -func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Ownable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { - return _Ownable.Contract.Owner(&_Ownable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) -} - -// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. -type OwnableOwnershipTransferredIterator struct { - Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. -type OwnableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { - event := new(OwnableOwnershipTransferred) - if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go b/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go deleted file mode 100644 index c5ccc6fc..00000000 --- a/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go +++ /dev/null @@ -1,612 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ownable2step - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// Ownable2StepMetaData contains all meta data concerning the Ownable2Step contract. -var Ownable2StepMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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\"}]", -} - -// Ownable2StepABI is the input ABI used to generate the binding from. -// Deprecated: Use Ownable2StepMetaData.ABI instead. -var Ownable2StepABI = Ownable2StepMetaData.ABI - -// Ownable2Step is an auto generated Go binding around an Ethereum contract. -type Ownable2Step struct { - Ownable2StepCaller // Read-only binding to the contract - Ownable2StepTransactor // Write-only binding to the contract - Ownable2StepFilterer // Log filterer for contract events -} - -// Ownable2StepCaller is an auto generated read-only Go binding around an Ethereum contract. -type Ownable2StepCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// Ownable2StepTransactor is an auto generated write-only Go binding around an Ethereum contract. -type Ownable2StepTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// Ownable2StepFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type Ownable2StepFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// Ownable2StepSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type Ownable2StepSession struct { - Contract *Ownable2Step // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// Ownable2StepCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type Ownable2StepCallerSession struct { - Contract *Ownable2StepCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// Ownable2StepTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type Ownable2StepTransactorSession struct { - Contract *Ownable2StepTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// Ownable2StepRaw is an auto generated low-level Go binding around an Ethereum contract. -type Ownable2StepRaw struct { - Contract *Ownable2Step // Generic contract binding to access the raw methods on -} - -// Ownable2StepCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type Ownable2StepCallerRaw struct { - Contract *Ownable2StepCaller // Generic read-only contract binding to access the raw methods on -} - -// Ownable2StepTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type Ownable2StepTransactorRaw struct { - Contract *Ownable2StepTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnable2Step creates a new instance of Ownable2Step, bound to a specific deployed contract. -func NewOwnable2Step(address common.Address, backend bind.ContractBackend) (*Ownable2Step, error) { - contract, err := bindOwnable2Step(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Ownable2Step{Ownable2StepCaller: Ownable2StepCaller{contract: contract}, Ownable2StepTransactor: Ownable2StepTransactor{contract: contract}, Ownable2StepFilterer: Ownable2StepFilterer{contract: contract}}, nil -} - -// NewOwnable2StepCaller creates a new read-only instance of Ownable2Step, bound to a specific deployed contract. -func NewOwnable2StepCaller(address common.Address, caller bind.ContractCaller) (*Ownable2StepCaller, error) { - contract, err := bindOwnable2Step(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &Ownable2StepCaller{contract: contract}, nil -} - -// NewOwnable2StepTransactor creates a new write-only instance of Ownable2Step, bound to a specific deployed contract. -func NewOwnable2StepTransactor(address common.Address, transactor bind.ContractTransactor) (*Ownable2StepTransactor, error) { - contract, err := bindOwnable2Step(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &Ownable2StepTransactor{contract: contract}, nil -} - -// NewOwnable2StepFilterer creates a new log filterer instance of Ownable2Step, bound to a specific deployed contract. -func NewOwnable2StepFilterer(address common.Address, filterer bind.ContractFilterer) (*Ownable2StepFilterer, error) { - contract, err := bindOwnable2Step(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &Ownable2StepFilterer{contract: contract}, nil -} - -// bindOwnable2Step binds a generic wrapper to an already deployed contract. -func bindOwnable2Step(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := Ownable2StepMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable2Step *Ownable2StepRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable2Step.Contract.Ownable2StepCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable2Step *Ownable2StepRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable2Step.Contract.Ownable2StepTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable2Step *Ownable2StepRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable2Step.Contract.Ownable2StepTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Ownable2Step *Ownable2StepCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Ownable2Step.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Ownable2Step *Ownable2StepTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable2Step.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Ownable2Step *Ownable2StepTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Ownable2Step.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable2Step *Ownable2StepCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Ownable2Step.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable2Step *Ownable2StepSession) Owner() (common.Address, error) { - return _Ownable2Step.Contract.Owner(&_Ownable2Step.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Ownable2Step *Ownable2StepCallerSession) Owner() (common.Address, error) { - return _Ownable2Step.Contract.Owner(&_Ownable2Step.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Ownable2Step *Ownable2StepCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Ownable2Step.contract.Call(opts, &out, "pendingOwner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Ownable2Step *Ownable2StepSession) PendingOwner() (common.Address, error) { - return _Ownable2Step.Contract.PendingOwner(&_Ownable2Step.CallOpts) -} - -// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. -// -// Solidity: function pendingOwner() view returns(address) -func (_Ownable2Step *Ownable2StepCallerSession) PendingOwner() (common.Address, error) { - return _Ownable2Step.Contract.PendingOwner(&_Ownable2Step.CallOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Ownable2Step *Ownable2StepTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable2Step.contract.Transact(opts, "acceptOwnership") -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Ownable2Step *Ownable2StepSession) AcceptOwnership() (*types.Transaction, error) { - return _Ownable2Step.Contract.AcceptOwnership(&_Ownable2Step.TransactOpts) -} - -// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. -// -// Solidity: function acceptOwnership() returns() -func (_Ownable2Step *Ownable2StepTransactorSession) AcceptOwnership() (*types.Transaction, error) { - return _Ownable2Step.Contract.AcceptOwnership(&_Ownable2Step.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable2Step *Ownable2StepTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Ownable2Step.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable2Step *Ownable2StepSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable2Step.Contract.RenounceOwnership(&_Ownable2Step.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Ownable2Step *Ownable2StepTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Ownable2Step.Contract.RenounceOwnership(&_Ownable2Step.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable2Step *Ownable2StepTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Ownable2Step.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable2Step *Ownable2StepSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable2Step.Contract.TransferOwnership(&_Ownable2Step.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Ownable2Step *Ownable2StepTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Ownable2Step.Contract.TransferOwnership(&_Ownable2Step.TransactOpts, newOwner) -} - -// Ownable2StepOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Ownable2Step contract. -type Ownable2StepOwnershipTransferStartedIterator struct { - Event *Ownable2StepOwnershipTransferStarted // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *Ownable2StepOwnershipTransferStartedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(Ownable2StepOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(Ownable2StepOwnershipTransferStarted) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *Ownable2StepOwnershipTransferStartedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *Ownable2StepOwnershipTransferStartedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// Ownable2StepOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Ownable2Step contract. -type Ownable2StepOwnershipTransferStarted struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Ownable2StepOwnershipTransferStartedIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable2Step.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &Ownable2StepOwnershipTransferStartedIterator{contract: _Ownable2Step.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *Ownable2StepOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable2Step.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(Ownable2StepOwnershipTransferStarted) - if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. -// -// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) ParseOwnershipTransferStarted(log types.Log) (*Ownable2StepOwnershipTransferStarted, error) { - event := new(Ownable2StepOwnershipTransferStarted) - if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// Ownable2StepOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable2Step contract. -type Ownable2StepOwnershipTransferredIterator struct { - Event *Ownable2StepOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *Ownable2StepOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(Ownable2StepOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(Ownable2StepOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *Ownable2StepOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *Ownable2StepOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// Ownable2StepOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable2Step contract. -type Ownable2StepOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Ownable2StepOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable2Step.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &Ownable2StepOwnershipTransferredIterator{contract: _Ownable2Step.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *Ownable2StepOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Ownable2Step.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(Ownable2StepOwnershipTransferred) - if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Ownable2Step *Ownable2StepFilterer) ParseOwnershipTransferred(log types.Log) (*Ownable2StepOwnershipTransferred, error) { - event := new(Ownable2StepOwnershipTransferred) - if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go b/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go deleted file mode 100644 index 22199c55..00000000 --- a/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go +++ /dev/null @@ -1,480 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package pausable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// PausableMetaData contains all meta data concerning the Pausable contract. -var PausableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// PausableABI is the input ABI used to generate the binding from. -// Deprecated: Use PausableMetaData.ABI instead. -var PausableABI = PausableMetaData.ABI - -// Pausable is an auto generated Go binding around an Ethereum contract. -type Pausable struct { - PausableCaller // Read-only binding to the contract - PausableTransactor // Write-only binding to the contract - PausableFilterer // Log filterer for contract events -} - -// PausableCaller is an auto generated read-only Go binding around an Ethereum contract. -type PausableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PausableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type PausableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type PausableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// PausableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type PausableSession struct { - Contract *Pausable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PausableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type PausableCallerSession struct { - Contract *PausableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// PausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type PausableTransactorSession struct { - Contract *PausableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// PausableRaw is an auto generated low-level Go binding around an Ethereum contract. -type PausableRaw struct { - Contract *Pausable // Generic contract binding to access the raw methods on -} - -// PausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type PausableCallerRaw struct { - Contract *PausableCaller // Generic read-only contract binding to access the raw methods on -} - -// PausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type PausableTransactorRaw struct { - Contract *PausableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewPausable creates a new instance of Pausable, bound to a specific deployed contract. -func NewPausable(address common.Address, backend bind.ContractBackend) (*Pausable, error) { - contract, err := bindPausable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil -} - -// NewPausableCaller creates a new read-only instance of Pausable, bound to a specific deployed contract. -func NewPausableCaller(address common.Address, caller bind.ContractCaller) (*PausableCaller, error) { - contract, err := bindPausable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &PausableCaller{contract: contract}, nil -} - -// NewPausableTransactor creates a new write-only instance of Pausable, bound to a specific deployed contract. -func NewPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableTransactor, error) { - contract, err := bindPausable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &PausableTransactor{contract: contract}, nil -} - -// NewPausableFilterer creates a new log filterer instance of Pausable, bound to a specific deployed contract. -func NewPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableFilterer, error) { - contract, err := bindPausable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &PausableFilterer{contract: contract}, nil -} - -// bindPausable binds a generic wrapper to an already deployed contract. -func bindPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := PausableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Pausable *PausableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Pausable.Contract.PausableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Pausable *PausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Pausable.Contract.PausableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Pausable *PausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Pausable.Contract.PausableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Pausable *PausableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Pausable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Pausable *PausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Pausable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Pausable *PausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Pausable.Contract.contract.Transact(opts, method, params...) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Pausable *PausableCaller) Paused(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Pausable.contract.Call(opts, &out, "paused") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Pausable *PausableSession) Paused() (bool, error) { - return _Pausable.Contract.Paused(&_Pausable.CallOpts) -} - -// Paused is a free data retrieval call binding the contract method 0x5c975abb. -// -// Solidity: function paused() view returns(bool) -func (_Pausable *PausableCallerSession) Paused() (bool, error) { - return _Pausable.Contract.Paused(&_Pausable.CallOpts) -} - -// PausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Pausable contract. -type PausablePausedIterator struct { - Event *PausablePaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PausablePausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PausablePaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PausablePaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PausablePausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PausablePausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PausablePaused represents a Paused event raised by the Pausable contract. -type PausablePaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Pausable *PausableFilterer) FilterPaused(opts *bind.FilterOpts) (*PausablePausedIterator, error) { - - logs, sub, err := _Pausable.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err - } - return &PausablePausedIterator{contract: _Pausable.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Pausable *PausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausablePaused) (event.Subscription, error) { - - logs, sub, err := _Pausable.contract.WatchLogs(opts, "Paused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PausablePaused) - if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused, error) { - event := new(PausablePaused) - if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// PausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Pausable contract. -type PausableUnpausedIterator struct { - Event *PausableUnpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *PausableUnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(PausableUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(PausableUnpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *PausableUnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *PausableUnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// PausableUnpaused represents a Unpaused event raised by the Pausable contract. -type PausableUnpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Pausable *PausableFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PausableUnpausedIterator, error) { - - logs, sub, err := _Pausable.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return &PausableUnpausedIterator{contract: _Pausable.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Pausable *PausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUnpaused) (event.Subscription, error) { - - logs, sub, err := _Pausable.contract.WatchLogs(opts, "Unpaused") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(PausableUnpaused) - if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_Pausable *PausableFilterer) ParseUnpaused(log types.Log) (*PausableUnpaused, error) { - event := new(PausableUnpaused) - if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go b/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go deleted file mode 100644 index e62fdc89..00000000 --- a/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package reentrancyguard - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. -var ReentrancyGuardMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ReentrancyGuardABI is the input ABI used to generate the binding from. -// Deprecated: Use ReentrancyGuardMetaData.ABI instead. -var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI - -// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. -type ReentrancyGuard struct { - ReentrancyGuardCaller // Read-only binding to the contract - ReentrancyGuardTransactor // Write-only binding to the contract - ReentrancyGuardFilterer // Log filterer for contract events -} - -// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. -type ReentrancyGuardCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ReentrancyGuardTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ReentrancyGuardFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ReentrancyGuardSession struct { - Contract *ReentrancyGuard // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ReentrancyGuardCallerSession struct { - Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ReentrancyGuardTransactorSession struct { - Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. -type ReentrancyGuardRaw struct { - Contract *ReentrancyGuard // Generic contract binding to access the raw methods on -} - -// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ReentrancyGuardCallerRaw struct { - Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on -} - -// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ReentrancyGuardTransactorRaw struct { - Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { - contract, err := bindReentrancyGuard(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil -} - -// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { - contract, err := bindReentrancyGuard(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardCaller{contract: contract}, nil -} - -// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { - contract, err := bindReentrancyGuard(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ReentrancyGuardTransactor{contract: contract}, nil -} - -// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. -func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { - contract, err := bindReentrancyGuard(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ReentrancyGuardFilterer{contract: contract}, nil -} - -// bindReentrancyGuard binds a generic wrapper to an already deployed contract. -func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ReentrancyGuardMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go b/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go deleted file mode 100644 index f196876b..00000000 --- a/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go +++ /dev/null @@ -1,802 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC20MetaData contains all meta data concerning the ERC20 contract. -var ERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620016173803806200161783398181016040528101906200003791906200019f565b81600390805190602001906200004f92919062000071565b5080600490805190602001906200006892919062000071565b505050620003a8565b8280546200007f90620002b9565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200024d565b62000224565b90508281526020810184848401111562000157576200015662000388565b5b6200016484828562000283565b509392505050565b600082601f83011262000184576200018362000383565b5b81516200019684826020860162000121565b91505092915050565b60008060408385031215620001b957620001b862000392565b5b600083015167ffffffffffffffff811115620001da57620001d96200038d565b5b620001e8858286016200016c565b925050602083015167ffffffffffffffff8111156200020c576200020b6200038d565b5b6200021a858286016200016c565b9150509250929050565b60006200023062000243565b90506200023e8282620002ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026b576200026a62000354565b5b620002768262000397565b9050602081019050919050565b60005b83811015620002a357808201518184015260208101905062000286565b83811115620002b3576000848401525b50505050565b60006002820490506001821680620002d257607f821691505b60208210811415620002e957620002e862000325565b5b50919050565b620002fa8262000397565b810181811067ffffffffffffffff821117156200031c576200031b62000354565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61125f80620003b86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220c70e1992046ff573bf7e5981f8f62872dc98f375e08ea9d8a16f2a8da731c7ec64736f6c63430008070033", -} - -// ERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20MetaData.ABI instead. -var ERC20ABI = ERC20MetaData.ABI - -// ERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20MetaData.Bin instead. -var ERC20Bin = ERC20MetaData.Bin - -// DeployERC20 deploys a new Ethereum contract, binding an instance of ERC20 to it. -func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string) (common.Address, *types.Transaction, *ERC20, error) { - parsed, err := ERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend, name_, symbol_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil -} - -// ERC20 is an auto generated Go binding around an Ethereum contract. -type ERC20 struct { - ERC20Caller // Read-only binding to the contract - ERC20Transactor // Write-only binding to the contract - ERC20Filterer // Log filterer for contract events -} - -// ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20Session struct { - Contract *ERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20CallerSession struct { - Contract *ERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20TransactorSession struct { - Contract *ERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20Raw struct { - Contract *ERC20 // Generic contract binding to access the raw methods on -} - -// ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CallerRaw struct { - Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20TransactorRaw struct { - Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. -func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { - contract, err := bindERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil -} - -// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { - contract, err := bindERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20Caller{contract: contract}, nil -} - -// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. -func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { - contract, err := bindERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20Transactor{contract: contract}, nil -} - -// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. -func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { - contract, err := bindERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20Filterer{contract: contract}, nil -} - -// bindERC20 binds a generic wrapper to an already deployed contract. -func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20Session) Decimals() (uint8, error) { - return _ERC20.Contract.Decimals(&_ERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { - return _ERC20.Contract.Decimals(&_ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20 *ERC20Session) Name() (string, error) { - return _ERC20.Contract.Name(&_ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20 *ERC20CallerSession) Name() (string, error) { - return _ERC20.Contract.Name(&_ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20Session) Symbol() (string, error) { - return _ERC20.Contract.Symbol(&_ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { - return _ERC20.Contract.Symbol(&_ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { - return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, amount) -} - -// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. -type ERC20ApprovalIterator struct { - Event *ERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20Approval represents a Approval event raised by the ERC20 contract. -type ERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { - event := new(ERC20Approval) - if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. -type ERC20TransferIterator struct { - Event *ERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20Transfer represents a Transfer event raised by the ERC20 contract. -type ERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { - event := new(ERC20Transfer) - if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go b/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go deleted file mode 100644 index 2d68dea7..00000000 --- a/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go +++ /dev/null @@ -1,822 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package erc20burnable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. -var ERC20BurnableMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ERC20BurnableABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20BurnableMetaData.ABI instead. -var ERC20BurnableABI = ERC20BurnableMetaData.ABI - -// ERC20Burnable is an auto generated Go binding around an Ethereum contract. -type ERC20Burnable struct { - ERC20BurnableCaller // Read-only binding to the contract - ERC20BurnableTransactor // Write-only binding to the contract - ERC20BurnableFilterer // Log filterer for contract events -} - -// ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20BurnableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20BurnableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20BurnableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ERC20BurnableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ERC20BurnableSession struct { - Contract *ERC20Burnable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ERC20BurnableCallerSession struct { - Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ERC20BurnableTransactorSession struct { - Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20BurnableRaw struct { - Contract *ERC20Burnable // Generic contract binding to access the raw methods on -} - -// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20BurnableCallerRaw struct { - Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on -} - -// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20BurnableTransactorRaw struct { - Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { - contract, err := bindERC20Burnable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil -} - -// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { - contract, err := bindERC20Burnable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ERC20BurnableCaller{contract: contract}, nil -} - -// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { - contract, err := bindERC20Burnable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ERC20BurnableTransactor{contract: contract}, nil -} - -// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. -func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { - contract, err := bindERC20Burnable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ERC20BurnableFilterer{contract: contract}, nil -} - -// bindERC20Burnable binds a generic wrapper to an already deployed contract. -func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20BurnableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableSession) Decimals() (uint8, error) { - return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ERC20Burnable *ERC20BurnableCallerSession) Decimals() (uint8, error) { - return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableSession) Name() (string, error) { - return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ERC20Burnable *ERC20BurnableCallerSession) Name() (string, error) { - return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableSession) Symbol() (string, error) { - return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ERC20Burnable *ERC20BurnableCallerSession) Symbol() (string, error) { - return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { - return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) -} - -// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. -// -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, amount) -} - -// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. -type ERC20BurnableApprovalIterator struct { - Event *ERC20BurnableApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20BurnableApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. -type ERC20BurnableApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { - event := new(ERC20BurnableApproval) - if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. -type ERC20BurnableTransferIterator struct { - Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20BurnableTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20BurnableTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20BurnableTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20BurnableTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. -type ERC20BurnableTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { - event := new(ERC20BurnableTransfer) - if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go b/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go deleted file mode 100644 index f4daadad..00000000 --- a/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go +++ /dev/null @@ -1,738 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20metadata - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20MetadataMetaData contains all meta data concerning the IERC20Metadata contract. -var IERC20MetadataMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20MetadataABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetadataMetaData.ABI instead. -var IERC20MetadataABI = IERC20MetadataMetaData.ABI - -// IERC20Metadata is an auto generated Go binding around an Ethereum contract. -type IERC20Metadata struct { - IERC20MetadataCaller // Read-only binding to the contract - IERC20MetadataTransactor // Write-only binding to the contract - IERC20MetadataFilterer // Log filterer for contract events -} - -// IERC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20MetadataCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20MetadataTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20MetadataFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20MetadataSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20MetadataSession struct { - Contract *IERC20Metadata // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20MetadataCallerSession struct { - Contract *IERC20MetadataCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20MetadataTransactorSession struct { - Contract *IERC20MetadataTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20MetadataRaw struct { - Contract *IERC20Metadata // Generic contract binding to access the raw methods on -} - -// IERC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20MetadataCallerRaw struct { - Contract *IERC20MetadataCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20MetadataTransactorRaw struct { - Contract *IERC20MetadataTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20Metadata creates a new instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20Metadata(address common.Address, backend bind.ContractBackend) (*IERC20Metadata, error) { - contract, err := bindIERC20Metadata(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20Metadata{IERC20MetadataCaller: IERC20MetadataCaller{contract: contract}, IERC20MetadataTransactor: IERC20MetadataTransactor{contract: contract}, IERC20MetadataFilterer: IERC20MetadataFilterer{contract: contract}}, nil -} - -// NewIERC20MetadataCaller creates a new read-only instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC20MetadataCaller, error) { - contract, err := bindIERC20Metadata(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20MetadataCaller{contract: contract}, nil -} - -// NewIERC20MetadataTransactor creates a new write-only instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MetadataTransactor, error) { - contract, err := bindIERC20Metadata(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20MetadataTransactor{contract: contract}, nil -} - -// NewIERC20MetadataFilterer creates a new log filterer instance of IERC20Metadata, bound to a specific deployed contract. -func NewIERC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MetadataFilterer, error) { - contract, err := bindIERC20Metadata(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20MetadataFilterer{contract: contract}, nil -} - -// bindIERC20Metadata binds a generic wrapper to an already deployed contract. -func bindIERC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetadataMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Metadata *IERC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Metadata.Contract.IERC20MetadataCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Metadata *IERC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Metadata *IERC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20Metadata *IERC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20Metadata.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20Metadata.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20Metadata.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataSession) Decimals() (uint8, error) { - return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { - return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataSession) Name() (string, error) { - return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { - return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataSession) Symbol() (string, error) { - return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { - return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataSession) TotalSupply() (*big.Int, error) { - return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20Metadata *IERC20MetadataCallerSession) TotalSupply() (*big.Int, error) { - return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20Metadata *IERC20MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, amount) -} - -// IERC20MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Metadata contract. -type IERC20MetadataApprovalIterator struct { - Event *IERC20MetadataApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MetadataApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MetadataApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MetadataApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MetadataApproval represents a Approval event raised by the IERC20Metadata contract. -type IERC20MetadataApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20MetadataApprovalIterator{contract: _IERC20Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MetadataApproval) - if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IERC20MetadataApproval, error) { - event := new(IERC20MetadataApproval) - if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Metadata contract. -type IERC20MetadataTransferIterator struct { - Event *IERC20MetadataTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20MetadataTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20MetadataTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20MetadataTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20MetadataTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20MetadataTransfer represents a Transfer event raised by the IERC20Metadata contract. -type IERC20MetadataTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20MetadataTransferIterator{contract: _IERC20Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20MetadataTransfer) - if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IERC20MetadataTransfer, error) { - event := new(IERC20MetadataTransfer) - if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go b/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go deleted file mode 100644 index 3dbe231f..00000000 --- a/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go +++ /dev/null @@ -1,645 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go b/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go deleted file mode 100644 index 912d47c8..00000000 --- a/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package safeerc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. -var SafeERC20MetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a9b2fb39f884561bad7a62544d63197e691ed9b4bf51396178c74c59a554ce2f64736f6c63430008070033", -} - -// SafeERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeERC20MetaData.ABI instead. -var SafeERC20ABI = SafeERC20MetaData.ABI - -// SafeERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeERC20MetaData.Bin instead. -var SafeERC20Bin = SafeERC20MetaData.Bin - -// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. -func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// SafeERC20 is an auto generated Go binding around an Ethereum contract. -type SafeERC20 struct { - SafeERC20Caller // Read-only binding to the contract - SafeERC20Transactor // Write-only binding to the contract - SafeERC20Filterer // Log filterer for contract events -} - -// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type SafeERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeERC20Session struct { - Contract *SafeERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeERC20CallerSession struct { - Contract *SafeERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeERC20TransactorSession struct { - Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type SafeERC20Raw struct { - Contract *SafeERC20 // Generic contract binding to access the raw methods on -} - -// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeERC20CallerRaw struct { - Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeERC20TransactorRaw struct { - Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { - contract, err := bindSafeERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil -} - -// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { - contract, err := bindSafeERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeERC20Caller{contract: contract}, nil -} - -// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { - contract, err := bindSafeERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeERC20Transactor{contract: contract}, nil -} - -// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. -func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { - contract, err := bindSafeERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeERC20Filterer{contract: contract}, nil -} - -// bindSafeERC20 binds a generic wrapper to an already deployed contract. -func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeERC20.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/openzeppelin/contracts/utils/address.sol/address.go b/pkg/openzeppelin/contracts/utils/address.sol/address.go deleted file mode 100644 index 9afb1c3a..00000000 --- a/pkg/openzeppelin/contracts/utils/address.sol/address.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package address - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// AddressMetaData contains all meta data concerning the Address contract. -var AddressMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220707b19f8ce8fee8f6afc7520aba0995f8916b0cf807093a219746de5a8d7065664736f6c63430008070033", -} - -// AddressABI is the input ABI used to generate the binding from. -// Deprecated: Use AddressMetaData.ABI instead. -var AddressABI = AddressMetaData.ABI - -// AddressBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use AddressMetaData.Bin instead. -var AddressBin = AddressMetaData.Bin - -// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. -func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// Address is an auto generated Go binding around an Ethereum contract. -type Address struct { - AddressCaller // Read-only binding to the contract - AddressTransactor // Write-only binding to the contract - AddressFilterer // Log filterer for contract events -} - -// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. -type AddressCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. -type AddressTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type AddressFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// AddressSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type AddressSession struct { - Contract *Address // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type AddressCallerSession struct { - Contract *AddressCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type AddressTransactorSession struct { - Contract *AddressTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. -type AddressRaw struct { - Contract *Address // Generic contract binding to access the raw methods on -} - -// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type AddressCallerRaw struct { - Contract *AddressCaller // Generic read-only contract binding to access the raw methods on -} - -// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type AddressTransactorRaw struct { - Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewAddress creates a new instance of Address, bound to a specific deployed contract. -func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { - contract, err := bindAddress(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil -} - -// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. -func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { - contract, err := bindAddress(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &AddressCaller{contract: contract}, nil -} - -// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. -func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { - contract, err := bindAddress(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &AddressTransactor{contract: contract}, nil -} - -// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. -func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { - contract, err := bindAddress(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &AddressFilterer{contract: contract}, nil -} - -// bindAddress binds a generic wrapper to an already deployed contract. -func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := AddressMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Address.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Address.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Address.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/openzeppelin/contracts/utils/context.sol/context.go b/pkg/openzeppelin/contracts/utils/context.sol/context.go deleted file mode 100644 index 90b3cdd0..00000000 --- a/pkg/openzeppelin/contracts/utils/context.sol/context.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package context - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ContextMetaData contains all meta data concerning the Context contract. -var ContextMetaData = &bind.MetaData{ - ABI: "[]", -} - -// ContextABI is the input ABI used to generate the binding from. -// Deprecated: Use ContextMetaData.ABI instead. -var ContextABI = ContextMetaData.ABI - -// Context is an auto generated Go binding around an Ethereum contract. -type Context struct { - ContextCaller // Read-only binding to the contract - ContextTransactor // Write-only binding to the contract - ContextFilterer // Log filterer for contract events -} - -// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. -type ContextCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ContextTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ContextFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ContextSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ContextSession struct { - Contract *Context // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ContextCallerSession struct { - Contract *ContextCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ContextTransactorSession struct { - Contract *ContextTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. -type ContextRaw struct { - Contract *Context // Generic contract binding to access the raw methods on -} - -// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ContextCallerRaw struct { - Contract *ContextCaller // Generic read-only contract binding to access the raw methods on -} - -// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ContextTransactorRaw struct { - Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewContext creates a new instance of Context, bound to a specific deployed contract. -func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { - contract, err := bindContext(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil -} - -// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. -func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { - contract, err := bindContext(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ContextCaller{contract: contract}, nil -} - -// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. -func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { - contract, err := bindContext(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ContextTransactor{contract: contract}, nil -} - -// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. -func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { - contract, err := bindContext(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ContextFilterer{contract: contract}, nil -} - -// bindContext binds a generic wrapper to an already deployed contract. -func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ContextMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Context.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Context.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Context.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go b/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go deleted file mode 100644 index 648cd746..00000000 --- a/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package transferhelper - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// TransferHelperMetaData contains all meta data concerning the TransferHelper contract. -var TransferHelperMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc8360e2264df1f2cb9f3c42ca667d72961924439936105dfdf91ec11cb5a40964736f6c63430008070033", -} - -// TransferHelperABI is the input ABI used to generate the binding from. -// Deprecated: Use TransferHelperMetaData.ABI instead. -var TransferHelperABI = TransferHelperMetaData.ABI - -// TransferHelperBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use TransferHelperMetaData.Bin instead. -var TransferHelperBin = TransferHelperMetaData.Bin - -// DeployTransferHelper deploys a new Ethereum contract, binding an instance of TransferHelper to it. -func DeployTransferHelper(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TransferHelper, error) { - parsed, err := TransferHelperMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TransferHelperBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil -} - -// TransferHelper is an auto generated Go binding around an Ethereum contract. -type TransferHelper struct { - TransferHelperCaller // Read-only binding to the contract - TransferHelperTransactor // Write-only binding to the contract - TransferHelperFilterer // Log filterer for contract events -} - -// TransferHelperCaller is an auto generated read-only Go binding around an Ethereum contract. -type TransferHelperCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransferHelperTransactor is an auto generated write-only Go binding around an Ethereum contract. -type TransferHelperTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransferHelperFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type TransferHelperFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// TransferHelperSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type TransferHelperSession struct { - Contract *TransferHelper // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TransferHelperCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type TransferHelperCallerSession struct { - Contract *TransferHelperCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// TransferHelperTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type TransferHelperTransactorSession struct { - Contract *TransferHelperTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// TransferHelperRaw is an auto generated low-level Go binding around an Ethereum contract. -type TransferHelperRaw struct { - Contract *TransferHelper // Generic contract binding to access the raw methods on -} - -// TransferHelperCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type TransferHelperCallerRaw struct { - Contract *TransferHelperCaller // Generic read-only contract binding to access the raw methods on -} - -// TransferHelperTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type TransferHelperTransactorRaw struct { - Contract *TransferHelperTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewTransferHelper creates a new instance of TransferHelper, bound to a specific deployed contract. -func NewTransferHelper(address common.Address, backend bind.ContractBackend) (*TransferHelper, error) { - contract, err := bindTransferHelper(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil -} - -// NewTransferHelperCaller creates a new read-only instance of TransferHelper, bound to a specific deployed contract. -func NewTransferHelperCaller(address common.Address, caller bind.ContractCaller) (*TransferHelperCaller, error) { - contract, err := bindTransferHelper(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &TransferHelperCaller{contract: contract}, nil -} - -// NewTransferHelperTransactor creates a new write-only instance of TransferHelper, bound to a specific deployed contract. -func NewTransferHelperTransactor(address common.Address, transactor bind.ContractTransactor) (*TransferHelperTransactor, error) { - contract, err := bindTransferHelper(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &TransferHelperTransactor{contract: contract}, nil -} - -// NewTransferHelperFilterer creates a new log filterer instance of TransferHelper, bound to a specific deployed contract. -func NewTransferHelperFilterer(address common.Address, filterer bind.ContractFilterer) (*TransferHelperFilterer, error) { - contract, err := bindTransferHelper(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &TransferHelperFilterer{contract: contract}, nil -} - -// bindTransferHelper binds a generic wrapper to an already deployed contract. -func bindTransferHelper(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := TransferHelperMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TransferHelper *TransferHelperRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TransferHelper.Contract.TransferHelperCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TransferHelper *TransferHelperRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TransferHelper.Contract.TransferHelperTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TransferHelper *TransferHelperRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TransferHelper.Contract.TransferHelperTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_TransferHelper *TransferHelperCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _TransferHelper.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_TransferHelper *TransferHelperTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TransferHelper.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_TransferHelper *TransferHelperTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _TransferHelper.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go b/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go deleted file mode 100644 index 31d0fc1f..00000000 --- a/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go +++ /dev/null @@ -1,738 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20Session) Decimals() (uint8, error) { - return _IERC20.Contract.Decimals(&_IERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20CallerSession) Decimals() (uint8, error) { - return _IERC20.Contract.Decimals(&_IERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20Session) Name() (string, error) { - return _IERC20.Contract.Name(&_IERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20CallerSession) Name() (string, error) { - return _IERC20.Contract.Name(&_IERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20Session) Symbol() (string, error) { - return _IERC20.Contract.Symbol(&_IERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20CallerSession) Symbol() (string, error) { - return _IERC20.Contract.Symbol(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go b/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go deleted file mode 100644 index f955a7fa..00000000 --- a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2callee - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2CalleeMetaData contains all meta data concerning the IUniswapV2Callee contract. -var IUniswapV2CalleeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV2Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2CalleeABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2CalleeMetaData.ABI instead. -var IUniswapV2CalleeABI = IUniswapV2CalleeMetaData.ABI - -// IUniswapV2Callee is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Callee struct { - IUniswapV2CalleeCaller // Read-only binding to the contract - IUniswapV2CalleeTransactor // Write-only binding to the contract - IUniswapV2CalleeFilterer // Log filterer for contract events -} - -// IUniswapV2CalleeCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2CalleeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2CalleeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2CalleeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2CalleeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2CalleeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2CalleeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2CalleeSession struct { - Contract *IUniswapV2Callee // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2CalleeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2CalleeCallerSession struct { - Contract *IUniswapV2CalleeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2CalleeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2CalleeTransactorSession struct { - Contract *IUniswapV2CalleeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2CalleeRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2CalleeRaw struct { - Contract *IUniswapV2Callee // Generic contract binding to access the raw methods on -} - -// IUniswapV2CalleeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2CalleeCallerRaw struct { - Contract *IUniswapV2CalleeCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2CalleeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2CalleeTransactorRaw struct { - Contract *IUniswapV2CalleeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Callee creates a new instance of IUniswapV2Callee, bound to a specific deployed contract. -func NewIUniswapV2Callee(address common.Address, backend bind.ContractBackend) (*IUniswapV2Callee, error) { - contract, err := bindIUniswapV2Callee(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Callee{IUniswapV2CalleeCaller: IUniswapV2CalleeCaller{contract: contract}, IUniswapV2CalleeTransactor: IUniswapV2CalleeTransactor{contract: contract}, IUniswapV2CalleeFilterer: IUniswapV2CalleeFilterer{contract: contract}}, nil -} - -// NewIUniswapV2CalleeCaller creates a new read-only instance of IUniswapV2Callee, bound to a specific deployed contract. -func NewIUniswapV2CalleeCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2CalleeCaller, error) { - contract, err := bindIUniswapV2Callee(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2CalleeCaller{contract: contract}, nil -} - -// NewIUniswapV2CalleeTransactor creates a new write-only instance of IUniswapV2Callee, bound to a specific deployed contract. -func NewIUniswapV2CalleeTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2CalleeTransactor, error) { - contract, err := bindIUniswapV2Callee(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2CalleeTransactor{contract: contract}, nil -} - -// NewIUniswapV2CalleeFilterer creates a new log filterer instance of IUniswapV2Callee, bound to a specific deployed contract. -func NewIUniswapV2CalleeFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2CalleeFilterer, error) { - contract, err := bindIUniswapV2Callee(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2CalleeFilterer{contract: contract}, nil -} - -// bindIUniswapV2Callee binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Callee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2CalleeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Callee.Contract.IUniswapV2CalleeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.IUniswapV2CalleeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.IUniswapV2CalleeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Callee *IUniswapV2CalleeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Callee.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Callee *IUniswapV2CalleeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Callee *IUniswapV2CalleeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.contract.Transact(opts, method, params...) -} - -// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. -// -// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV2Callee *IUniswapV2CalleeTransactor) UniswapV2Call(opts *bind.TransactOpts, sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV2Callee.contract.Transact(opts, "uniswapV2Call", sender, amount0, amount1, data) -} - -// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. -// -// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV2Callee *IUniswapV2CalleeSession) UniswapV2Call(sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.UniswapV2Call(&_IUniswapV2Callee.TransactOpts, sender, amount0, amount1, data) -} - -// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. -// -// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV2Callee *IUniswapV2CalleeTransactorSession) UniswapV2Call(sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV2Callee.Contract.UniswapV2Call(&_IUniswapV2Callee.TransactOpts, sender, amount0, amount1, data) -} diff --git a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go b/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go deleted file mode 100644 index 39df5698..00000000 --- a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go +++ /dev/null @@ -1,852 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2erc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2ERC20MetaData contains all meta data concerning the IUniswapV2ERC20 contract. -var IUniswapV2ERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2ERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2ERC20MetaData.ABI instead. -var IUniswapV2ERC20ABI = IUniswapV2ERC20MetaData.ABI - -// IUniswapV2ERC20 is an auto generated Go binding around an Ethereum contract. -type IUniswapV2ERC20 struct { - IUniswapV2ERC20Caller // Read-only binding to the contract - IUniswapV2ERC20Transactor // Write-only binding to the contract - IUniswapV2ERC20Filterer // Log filterer for contract events -} - -// IUniswapV2ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2ERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2ERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2ERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2ERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2ERC20Session struct { - Contract *IUniswapV2ERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2ERC20CallerSession struct { - Contract *IUniswapV2ERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2ERC20TransactorSession struct { - Contract *IUniswapV2ERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2ERC20Raw struct { - Contract *IUniswapV2ERC20 // Generic contract binding to access the raw methods on -} - -// IUniswapV2ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2ERC20CallerRaw struct { - Contract *IUniswapV2ERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2ERC20TransactorRaw struct { - Contract *IUniswapV2ERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2ERC20 creates a new instance of IUniswapV2ERC20, bound to a specific deployed contract. -func NewIUniswapV2ERC20(address common.Address, backend bind.ContractBackend) (*IUniswapV2ERC20, error) { - contract, err := bindIUniswapV2ERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20{IUniswapV2ERC20Caller: IUniswapV2ERC20Caller{contract: contract}, IUniswapV2ERC20Transactor: IUniswapV2ERC20Transactor{contract: contract}, IUniswapV2ERC20Filterer: IUniswapV2ERC20Filterer{contract: contract}}, nil -} - -// NewIUniswapV2ERC20Caller creates a new read-only instance of IUniswapV2ERC20, bound to a specific deployed contract. -func NewIUniswapV2ERC20Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2ERC20Caller, error) { - contract, err := bindIUniswapV2ERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20Caller{contract: contract}, nil -} - -// NewIUniswapV2ERC20Transactor creates a new write-only instance of IUniswapV2ERC20, bound to a specific deployed contract. -func NewIUniswapV2ERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2ERC20Transactor, error) { - contract, err := bindIUniswapV2ERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20Transactor{contract: contract}, nil -} - -// NewIUniswapV2ERC20Filterer creates a new log filterer instance of IUniswapV2ERC20, bound to a specific deployed contract. -func NewIUniswapV2ERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2ERC20Filterer, error) { - contract, err := bindIUniswapV2ERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20Filterer{contract: contract}, nil -} - -// bindIUniswapV2ERC20 binds a generic wrapper to an already deployed contract. -func bindIUniswapV2ERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2ERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2ERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) DOMAINSEPARATOR() ([32]byte, error) { - return _IUniswapV2ERC20.Contract.DOMAINSEPARATOR(&_IUniswapV2ERC20.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IUniswapV2ERC20.Contract.DOMAINSEPARATOR(&_IUniswapV2ERC20.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "PERMIT_TYPEHASH") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) PERMITTYPEHASH() ([32]byte, error) { - return _IUniswapV2ERC20.Contract.PERMITTYPEHASH(&_IUniswapV2ERC20.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) PERMITTYPEHASH() ([32]byte, error) { - return _IUniswapV2ERC20.Contract.PERMITTYPEHASH(&_IUniswapV2ERC20.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.Allowance(&_IUniswapV2ERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.Allowance(&_IUniswapV2ERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "balanceOf", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.BalanceOf(&_IUniswapV2ERC20.CallOpts, owner) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.BalanceOf(&_IUniswapV2ERC20.CallOpts, owner) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Decimals() (uint8, error) { - return _IUniswapV2ERC20.Contract.Decimals(&_IUniswapV2ERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Decimals() (uint8, error) { - return _IUniswapV2ERC20.Contract.Decimals(&_IUniswapV2ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Name() (string, error) { - return _IUniswapV2ERC20.Contract.Name(&_IUniswapV2ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Name() (string, error) { - return _IUniswapV2ERC20.Contract.Name(&_IUniswapV2ERC20.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "nonces", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Nonces(owner common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.Nonces(&_IUniswapV2ERC20.CallOpts, owner) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Nonces(owner common.Address) (*big.Int, error) { - return _IUniswapV2ERC20.Contract.Nonces(&_IUniswapV2ERC20.CallOpts, owner) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Symbol() (string, error) { - return _IUniswapV2ERC20.Contract.Symbol(&_IUniswapV2ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Symbol() (string, error) { - return _IUniswapV2ERC20.Contract.Symbol(&_IUniswapV2ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2ERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) TotalSupply() (*big.Int, error) { - return _IUniswapV2ERC20.Contract.TotalSupply(&_IUniswapV2ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IUniswapV2ERC20.Contract.TotalSupply(&_IUniswapV2ERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Approve(&_IUniswapV2ERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Approve(&_IUniswapV2ERC20.TransactOpts, spender, value) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2ERC20.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Permit(&_IUniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Permit(&_IUniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Transfer(&_IUniswapV2ERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.Transfer(&_IUniswapV2ERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.TransferFrom(&_IUniswapV2ERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2ERC20.Contract.TransferFrom(&_IUniswapV2ERC20.TransactOpts, from, to, value) -} - -// IUniswapV2ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IUniswapV2ERC20 contract. -type IUniswapV2ERC20ApprovalIterator struct { - Event *IUniswapV2ERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2ERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2ERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2ERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2ERC20Approval represents a Approval event raised by the IUniswapV2ERC20 contract. -type IUniswapV2ERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IUniswapV2ERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IUniswapV2ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20ApprovalIterator{contract: _IUniswapV2ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IUniswapV2ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IUniswapV2ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2ERC20Approval) - if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) ParseApproval(log types.Log) (*IUniswapV2ERC20Approval, error) { - event := new(IUniswapV2ERC20Approval) - if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IUniswapV2ERC20 contract. -type IUniswapV2ERC20TransferIterator struct { - Event *IUniswapV2ERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2ERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2ERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2ERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2ERC20Transfer represents a Transfer event raised by the IUniswapV2ERC20 contract. -type IUniswapV2ERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IUniswapV2ERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IUniswapV2ERC20TransferIterator{contract: _IUniswapV2ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IUniswapV2ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2ERC20Transfer) - if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) ParseTransfer(log types.Log) (*IUniswapV2ERC20Transfer, error) { - event := new(IUniswapV2ERC20Transfer) - if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go b/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go deleted file mode 100644 index a8ab2860..00000000 --- a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go +++ /dev/null @@ -1,554 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2factory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2FactoryMetaData contains all meta data concerning the IUniswapV2Factory contract. -var IUniswapV2FactoryMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2FactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2FactoryMetaData.ABI instead. -var IUniswapV2FactoryABI = IUniswapV2FactoryMetaData.ABI - -// IUniswapV2Factory is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Factory struct { - IUniswapV2FactoryCaller // Read-only binding to the contract - IUniswapV2FactoryTransactor // Write-only binding to the contract - IUniswapV2FactoryFilterer // Log filterer for contract events -} - -// IUniswapV2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2FactoryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2FactoryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2FactoryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2FactorySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2FactorySession struct { - Contract *IUniswapV2Factory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2FactoryCallerSession struct { - Contract *IUniswapV2FactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2FactoryTransactorSession struct { - Contract *IUniswapV2FactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2FactoryRaw struct { - Contract *IUniswapV2Factory // Generic contract binding to access the raw methods on -} - -// IUniswapV2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2FactoryCallerRaw struct { - Contract *IUniswapV2FactoryCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2FactoryTransactorRaw struct { - Contract *IUniswapV2FactoryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Factory creates a new instance of IUniswapV2Factory, bound to a specific deployed contract. -func NewIUniswapV2Factory(address common.Address, backend bind.ContractBackend) (*IUniswapV2Factory, error) { - contract, err := bindIUniswapV2Factory(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Factory{IUniswapV2FactoryCaller: IUniswapV2FactoryCaller{contract: contract}, IUniswapV2FactoryTransactor: IUniswapV2FactoryTransactor{contract: contract}, IUniswapV2FactoryFilterer: IUniswapV2FactoryFilterer{contract: contract}}, nil -} - -// NewIUniswapV2FactoryCaller creates a new read-only instance of IUniswapV2Factory, bound to a specific deployed contract. -func NewIUniswapV2FactoryCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2FactoryCaller, error) { - contract, err := bindIUniswapV2Factory(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2FactoryCaller{contract: contract}, nil -} - -// NewIUniswapV2FactoryTransactor creates a new write-only instance of IUniswapV2Factory, bound to a specific deployed contract. -func NewIUniswapV2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2FactoryTransactor, error) { - contract, err := bindIUniswapV2Factory(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2FactoryTransactor{contract: contract}, nil -} - -// NewIUniswapV2FactoryFilterer creates a new log filterer instance of IUniswapV2Factory, bound to a specific deployed contract. -func NewIUniswapV2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2FactoryFilterer, error) { - contract, err := bindIUniswapV2Factory(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2FactoryFilterer{contract: contract}, nil -} - -// bindIUniswapV2Factory binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2FactoryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Factory.Contract.IUniswapV2FactoryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.IUniswapV2FactoryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.IUniswapV2FactoryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Factory *IUniswapV2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Factory.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Factory *IUniswapV2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Factory *IUniswapV2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.contract.Transact(opts, method, params...) -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryCaller) AllPairs(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Factory.contract.Call(opts, &out, "allPairs", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactorySession) AllPairs(arg0 *big.Int) (common.Address, error) { - return _IUniswapV2Factory.Contract.AllPairs(&_IUniswapV2Factory.CallOpts, arg0) -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) AllPairs(arg0 *big.Int) (common.Address, error) { - return _IUniswapV2Factory.Contract.AllPairs(&_IUniswapV2Factory.CallOpts, arg0) -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_IUniswapV2Factory *IUniswapV2FactoryCaller) AllPairsLength(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Factory.contract.Call(opts, &out, "allPairsLength") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_IUniswapV2Factory *IUniswapV2FactorySession) AllPairsLength() (*big.Int, error) { - return _IUniswapV2Factory.Contract.AllPairsLength(&_IUniswapV2Factory.CallOpts) -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) AllPairsLength() (*big.Int, error) { - return _IUniswapV2Factory.Contract.AllPairsLength(&_IUniswapV2Factory.CallOpts) -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactoryCaller) FeeTo(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Factory.contract.Call(opts, &out, "feeTo") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactorySession) FeeTo() (common.Address, error) { - return _IUniswapV2Factory.Contract.FeeTo(&_IUniswapV2Factory.CallOpts) -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) FeeTo() (common.Address, error) { - return _IUniswapV2Factory.Contract.FeeTo(&_IUniswapV2Factory.CallOpts) -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactoryCaller) FeeToSetter(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Factory.contract.Call(opts, &out, "feeToSetter") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactorySession) FeeToSetter() (common.Address, error) { - return _IUniswapV2Factory.Contract.FeeToSetter(&_IUniswapV2Factory.CallOpts) -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) FeeToSetter() (common.Address, error) { - return _IUniswapV2Factory.Contract.FeeToSetter(&_IUniswapV2Factory.CallOpts) -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryCaller) GetPair(opts *bind.CallOpts, tokenA common.Address, tokenB common.Address) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Factory.contract.Call(opts, &out, "getPair", tokenA, tokenB) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactorySession) GetPair(tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _IUniswapV2Factory.Contract.GetPair(&_IUniswapV2Factory.CallOpts, tokenA, tokenB) -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) GetPair(tokenA common.Address, tokenB common.Address) (common.Address, error) { - return _IUniswapV2Factory.Contract.GetPair(&_IUniswapV2Factory.CallOpts, tokenA, tokenB) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) CreatePair(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.contract.Transact(opts, "createPair", tokenA, tokenB) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactorySession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.CreatePair(&_IUniswapV2Factory.TransactOpts, tokenA, tokenB) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.CreatePair(&_IUniswapV2Factory.TransactOpts, tokenA, tokenB) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) SetFeeTo(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.contract.Transact(opts, "setFeeTo", arg0) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactorySession) SetFeeTo(arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.SetFeeTo(&_IUniswapV2Factory.TransactOpts, arg0) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) SetFeeTo(arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.SetFeeTo(&_IUniswapV2Factory.TransactOpts, arg0) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) SetFeeToSetter(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.contract.Transact(opts, "setFeeToSetter", arg0) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactorySession) SetFeeToSetter(arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.SetFeeToSetter(&_IUniswapV2Factory.TransactOpts, arg0) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address ) returns() -func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) SetFeeToSetter(arg0 common.Address) (*types.Transaction, error) { - return _IUniswapV2Factory.Contract.SetFeeToSetter(&_IUniswapV2Factory.TransactOpts, arg0) -} - -// IUniswapV2FactoryPairCreatedIterator is returned from FilterPairCreated and is used to iterate over the raw logs and unpacked data for PairCreated events raised by the IUniswapV2Factory contract. -type IUniswapV2FactoryPairCreatedIterator struct { - Event *IUniswapV2FactoryPairCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2FactoryPairCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2FactoryPairCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2FactoryPairCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2FactoryPairCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2FactoryPairCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2FactoryPairCreated represents a PairCreated event raised by the IUniswapV2Factory contract. -type IUniswapV2FactoryPairCreated struct { - Token0 common.Address - Token1 common.Address - Pair common.Address - Arg3 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPairCreated is a free log retrieval operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) FilterPairCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address) (*IUniswapV2FactoryPairCreatedIterator, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - - logs, sub, err := _IUniswapV2Factory.contract.FilterLogs(opts, "PairCreated", token0Rule, token1Rule) - if err != nil { - return nil, err - } - return &IUniswapV2FactoryPairCreatedIterator{contract: _IUniswapV2Factory.contract, event: "PairCreated", logs: logs, sub: sub}, nil -} - -// WatchPairCreated is a free log subscription operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) WatchPairCreated(opts *bind.WatchOpts, sink chan<- *IUniswapV2FactoryPairCreated, token0 []common.Address, token1 []common.Address) (event.Subscription, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - - logs, sub, err := _IUniswapV2Factory.contract.WatchLogs(opts, "PairCreated", token0Rule, token1Rule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2FactoryPairCreated) - if err := _IUniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePairCreated is a log parse operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) ParsePairCreated(log types.Log) (*IUniswapV2FactoryPairCreated, error) { - event := new(IUniswapV2FactoryPairCreated) - if err := _IUniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go b/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go deleted file mode 100644 index 61cf1f4b..00000000 --- a/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go +++ /dev/null @@ -1,1842 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2pair - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2PairMetaData contains all meta data concerning the IUniswapV2Pair contract. -var IUniswapV2PairMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2PairABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2PairMetaData.ABI instead. -var IUniswapV2PairABI = IUniswapV2PairMetaData.ABI - -// IUniswapV2Pair is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Pair struct { - IUniswapV2PairCaller // Read-only binding to the contract - IUniswapV2PairTransactor // Write-only binding to the contract - IUniswapV2PairFilterer // Log filterer for contract events -} - -// IUniswapV2PairCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2PairCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2PairTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2PairTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2PairFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2PairFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2PairSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2PairSession struct { - Contract *IUniswapV2Pair // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2PairCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2PairCallerSession struct { - Contract *IUniswapV2PairCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2PairTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2PairTransactorSession struct { - Contract *IUniswapV2PairTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2PairRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2PairRaw struct { - Contract *IUniswapV2Pair // Generic contract binding to access the raw methods on -} - -// IUniswapV2PairCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2PairCallerRaw struct { - Contract *IUniswapV2PairCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2PairTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2PairTransactorRaw struct { - Contract *IUniswapV2PairTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Pair creates a new instance of IUniswapV2Pair, bound to a specific deployed contract. -func NewIUniswapV2Pair(address common.Address, backend bind.ContractBackend) (*IUniswapV2Pair, error) { - contract, err := bindIUniswapV2Pair(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Pair{IUniswapV2PairCaller: IUniswapV2PairCaller{contract: contract}, IUniswapV2PairTransactor: IUniswapV2PairTransactor{contract: contract}, IUniswapV2PairFilterer: IUniswapV2PairFilterer{contract: contract}}, nil -} - -// NewIUniswapV2PairCaller creates a new read-only instance of IUniswapV2Pair, bound to a specific deployed contract. -func NewIUniswapV2PairCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2PairCaller, error) { - contract, err := bindIUniswapV2Pair(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2PairCaller{contract: contract}, nil -} - -// NewIUniswapV2PairTransactor creates a new write-only instance of IUniswapV2Pair, bound to a specific deployed contract. -func NewIUniswapV2PairTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2PairTransactor, error) { - contract, err := bindIUniswapV2Pair(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2PairTransactor{contract: contract}, nil -} - -// NewIUniswapV2PairFilterer creates a new log filterer instance of IUniswapV2Pair, bound to a specific deployed contract. -func NewIUniswapV2PairFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2PairFilterer, error) { - contract, err := bindIUniswapV2Pair(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2PairFilterer{contract: contract}, nil -} - -// bindIUniswapV2Pair binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Pair(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2PairMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Pair *IUniswapV2PairRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Pair.Contract.IUniswapV2PairCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Pair *IUniswapV2PairRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.IUniswapV2PairTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Pair *IUniswapV2PairRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.IUniswapV2PairTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Pair *IUniswapV2PairCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Pair.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Pair *IUniswapV2PairTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Pair *IUniswapV2PairTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IUniswapV2Pair.Contract.DOMAINSEPARATOR(&_IUniswapV2Pair.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _IUniswapV2Pair.Contract.DOMAINSEPARATOR(&_IUniswapV2Pair.CallOpts) -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) MINIMUMLIQUIDITY(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "MINIMUM_LIQUIDITY") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) MINIMUMLIQUIDITY() (*big.Int, error) { - return _IUniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_IUniswapV2Pair.CallOpts) -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) MINIMUMLIQUIDITY() (*big.Int, error) { - return _IUniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_IUniswapV2Pair.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairCaller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "PERMIT_TYPEHASH") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairSession) PERMITTYPEHASH() ([32]byte, error) { - return _IUniswapV2Pair.Contract.PERMITTYPEHASH(&_IUniswapV2Pair.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) PERMITTYPEHASH() ([32]byte, error) { - return _IUniswapV2Pair.Contract.PERMITTYPEHASH(&_IUniswapV2Pair.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.Allowance(&_IUniswapV2Pair.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.Allowance(&_IUniswapV2Pair.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "balanceOf", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.BalanceOf(&_IUniswapV2Pair.CallOpts, owner) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.BalanceOf(&_IUniswapV2Pair.CallOpts, owner) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2Pair *IUniswapV2PairSession) Decimals() (uint8, error) { - return _IUniswapV2Pair.Contract.Decimals(&_IUniswapV2Pair.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() pure returns(uint8) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Decimals() (uint8, error) { - return _IUniswapV2Pair.Contract.Decimals(&_IUniswapV2Pair.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairSession) Factory() (common.Address, error) { - return _IUniswapV2Pair.Contract.Factory(&_IUniswapV2Pair.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Factory() (common.Address, error) { - return _IUniswapV2Pair.Contract.Factory(&_IUniswapV2Pair.CallOpts) -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) -func (_IUniswapV2Pair *IUniswapV2PairCaller) GetReserves(opts *bind.CallOpts) (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "getReserves") - - outstruct := new(struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 - }) - if err != nil { - return *outstruct, err - } - - outstruct.Reserve0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Reserve1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.BlockTimestampLast = *abi.ConvertType(out[2], new(uint32)).(*uint32) - - return *outstruct, err - -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) -func (_IUniswapV2Pair *IUniswapV2PairSession) GetReserves() (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - return _IUniswapV2Pair.Contract.GetReserves(&_IUniswapV2Pair.CallOpts) -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) GetReserves() (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - return _IUniswapV2Pair.Contract.GetReserves(&_IUniswapV2Pair.CallOpts) -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) KLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "kLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) KLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.KLast(&_IUniswapV2Pair.CallOpts) -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) KLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.KLast(&_IUniswapV2Pair.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairSession) Name() (string, error) { - return _IUniswapV2Pair.Contract.Name(&_IUniswapV2Pair.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Name() (string, error) { - return _IUniswapV2Pair.Contract.Name(&_IUniswapV2Pair.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "nonces", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) Nonces(owner common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.Nonces(&_IUniswapV2Pair.CallOpts, owner) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address owner) view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Nonces(owner common.Address) (*big.Int, error) { - return _IUniswapV2Pair.Contract.Nonces(&_IUniswapV2Pair.CallOpts, owner) -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Price0CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "price0CumulativeLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) Price0CumulativeLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.Price0CumulativeLast(&_IUniswapV2Pair.CallOpts) -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Price0CumulativeLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.Price0CumulativeLast(&_IUniswapV2Pair.CallOpts) -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Price1CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "price1CumulativeLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) Price1CumulativeLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.Price1CumulativeLast(&_IUniswapV2Pair.CallOpts) -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Price1CumulativeLast() (*big.Int, error) { - return _IUniswapV2Pair.Contract.Price1CumulativeLast(&_IUniswapV2Pair.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairSession) Symbol() (string, error) { - return _IUniswapV2Pair.Contract.Symbol(&_IUniswapV2Pair.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() pure returns(string) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Symbol() (string, error) { - return _IUniswapV2Pair.Contract.Symbol(&_IUniswapV2Pair.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Token0(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "token0") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairSession) Token0() (common.Address, error) { - return _IUniswapV2Pair.Contract.Token0(&_IUniswapV2Pair.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Token0() (common.Address, error) { - return _IUniswapV2Pair.Contract.Token0(&_IUniswapV2Pair.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCaller) Token1(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "token1") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairSession) Token1() (common.Address, error) { - return _IUniswapV2Pair.Contract.Token1(&_IUniswapV2Pair.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Token1() (common.Address, error) { - return _IUniswapV2Pair.Contract.Token1(&_IUniswapV2Pair.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Pair.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairSession) TotalSupply() (*big.Int, error) { - return _IUniswapV2Pair.Contract.TotalSupply(&_IUniswapV2Pair.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IUniswapV2Pair *IUniswapV2PairCallerSession) TotalSupply() (*big.Int, error) { - return _IUniswapV2Pair.Contract.TotalSupply(&_IUniswapV2Pair.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Approve(&_IUniswapV2Pair.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Approve(&_IUniswapV2Pair.TransactOpts, spender, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Burn(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "burn", to) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairSession) Burn(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Burn(&_IUniswapV2Pair.TransactOpts, to) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Burn(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Burn(&_IUniswapV2Pair.TransactOpts, to) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address , address ) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Initialize(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "initialize", arg0, arg1) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address , address ) returns() -func (_IUniswapV2Pair *IUniswapV2PairSession) Initialize(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Initialize(&_IUniswapV2Pair.TransactOpts, arg0, arg1) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address , address ) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Initialize(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Initialize(&_IUniswapV2Pair.TransactOpts, arg0, arg1) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Mint(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "mint", to) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_IUniswapV2Pair *IUniswapV2PairSession) Mint(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Mint(&_IUniswapV2Pair.TransactOpts, to) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Mint(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Mint(&_IUniswapV2Pair.TransactOpts, to) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2Pair *IUniswapV2PairSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Permit(&_IUniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Permit(&_IUniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Skim(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "skim", to) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_IUniswapV2Pair *IUniswapV2PairSession) Skim(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Skim(&_IUniswapV2Pair.TransactOpts, to) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Skim(to common.Address) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Skim(&_IUniswapV2Pair.TransactOpts, to) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Swap(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "swap", amount0Out, amount1Out, to, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_IUniswapV2Pair *IUniswapV2PairSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Swap(&_IUniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Swap(&_IUniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Sync(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "sync") -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_IUniswapV2Pair *IUniswapV2PairSession) Sync() (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Sync(&_IUniswapV2Pair.TransactOpts) -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Sync() (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Sync(&_IUniswapV2Pair.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Transfer(&_IUniswapV2Pair.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.Transfer(&_IUniswapV2Pair.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.TransferFrom(&_IUniswapV2Pair.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IUniswapV2Pair.Contract.TransferFrom(&_IUniswapV2Pair.TransactOpts, from, to, value) -} - -// IUniswapV2PairApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IUniswapV2Pair contract. -type IUniswapV2PairApprovalIterator struct { - Event *IUniswapV2PairApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairApproval represents a Approval event raised by the IUniswapV2Pair contract. -type IUniswapV2PairApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IUniswapV2PairApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IUniswapV2PairApprovalIterator{contract: _IUniswapV2Pair.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairApproval) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseApproval(log types.Log) (*IUniswapV2PairApproval, error) { - event := new(IUniswapV2PairApproval) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2PairBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV2Pair contract. -type IUniswapV2PairBurnIterator struct { - Event *IUniswapV2PairBurn // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairBurnIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairBurnIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairBurnIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairBurn represents a Burn event raised by the IUniswapV2Pair contract. -type IUniswapV2PairBurn struct { - Sender common.Address - Amount0 *big.Int - Amount1 *big.Int - To common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBurn is a free log retrieval operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterBurn(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*IUniswapV2PairBurnIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Burn", senderRule, toRule) - if err != nil { - return nil, err - } - return &IUniswapV2PairBurnIterator{contract: _IUniswapV2Pair.contract, event: "Burn", logs: logs, sub: sub}, nil -} - -// WatchBurn is a free log subscription operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairBurn, sender []common.Address, to []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Burn", senderRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairBurn) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBurn is a log parse operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseBurn(log types.Log) (*IUniswapV2PairBurn, error) { - event := new(IUniswapV2PairBurn) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2PairMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV2Pair contract. -type IUniswapV2PairMintIterator struct { - Event *IUniswapV2PairMint // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairMintIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairMintIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairMintIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairMint represents a Mint event raised by the IUniswapV2Pair contract. -type IUniswapV2PairMint struct { - Sender common.Address - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterMint(opts *bind.FilterOpts, sender []common.Address) (*IUniswapV2PairMintIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Mint", senderRule) - if err != nil { - return nil, err - } - return &IUniswapV2PairMintIterator{contract: _IUniswapV2Pair.contract, event: "Mint", logs: logs, sub: sub}, nil -} - -// WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairMint, sender []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Mint", senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairMint) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseMint(log types.Log) (*IUniswapV2PairMint, error) { - event := new(IUniswapV2PairMint) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2PairSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV2Pair contract. -type IUniswapV2PairSwapIterator struct { - Event *IUniswapV2PairSwap // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairSwapIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairSwapIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairSwapIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairSwap represents a Swap event raised by the IUniswapV2Pair contract. -type IUniswapV2PairSwap struct { - Sender common.Address - Amount0In *big.Int - Amount1In *big.Int - Amount0Out *big.Int - Amount1Out *big.Int - To common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSwap is a free log retrieval operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*IUniswapV2PairSwapIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Swap", senderRule, toRule) - if err != nil { - return nil, err - } - return &IUniswapV2PairSwapIterator{contract: _IUniswapV2Pair.contract, event: "Swap", logs: logs, sub: sub}, nil -} - -// WatchSwap is a free log subscription operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairSwap, sender []common.Address, to []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Swap", senderRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairSwap) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSwap is a log parse operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseSwap(log types.Log) (*IUniswapV2PairSwap, error) { - event := new(IUniswapV2PairSwap) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2PairSyncIterator is returned from FilterSync and is used to iterate over the raw logs and unpacked data for Sync events raised by the IUniswapV2Pair contract. -type IUniswapV2PairSyncIterator struct { - Event *IUniswapV2PairSync // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairSyncIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairSync) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairSync) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairSyncIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairSyncIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairSync represents a Sync event raised by the IUniswapV2Pair contract. -type IUniswapV2PairSync struct { - Reserve0 *big.Int - Reserve1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSync is a free log retrieval operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterSync(opts *bind.FilterOpts) (*IUniswapV2PairSyncIterator, error) { - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Sync") - if err != nil { - return nil, err - } - return &IUniswapV2PairSyncIterator{contract: _IUniswapV2Pair.contract, event: "Sync", logs: logs, sub: sub}, nil -} - -// WatchSync is a free log subscription operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchSync(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairSync) (event.Subscription, error) { - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Sync") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairSync) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSync is a log parse operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseSync(log types.Log) (*IUniswapV2PairSync, error) { - event := new(IUniswapV2PairSync) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV2PairTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IUniswapV2Pair contract. -type IUniswapV2PairTransferIterator struct { - Event *IUniswapV2PairTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV2PairTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV2PairTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV2PairTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV2PairTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV2PairTransfer represents a Transfer event raised by the IUniswapV2Pair contract. -type IUniswapV2PairTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IUniswapV2PairTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IUniswapV2PairTransferIterator{contract: _IUniswapV2Pair.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV2PairTransfer) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseTransfer(log types.Log) (*IUniswapV2PairTransfer, error) { - event := new(IUniswapV2PairTransfer) - if err := _IUniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go b/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go deleted file mode 100644 index da2c97a0..00000000 --- a/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package math - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// MathMetaData contains all meta data concerning the Math contract. -var MathMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582036ebcfaac2554db76c89ce048a11e2a035fd87545ae459a0f16e5e15e0c6532964736f6c63430005100032", -} - -// MathABI is the input ABI used to generate the binding from. -// Deprecated: Use MathMetaData.ABI instead. -var MathABI = MathMetaData.ABI - -// MathBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use MathMetaData.Bin instead. -var MathBin = MathMetaData.Bin - -// DeployMath deploys a new Ethereum contract, binding an instance of Math to it. -func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) { - parsed, err := MathMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MathBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil -} - -// Math is an auto generated Go binding around an Ethereum contract. -type Math struct { - MathCaller // Read-only binding to the contract - MathTransactor // Write-only binding to the contract - MathFilterer // Log filterer for contract events -} - -// MathCaller is an auto generated read-only Go binding around an Ethereum contract. -type MathCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathTransactor is an auto generated write-only Go binding around an Ethereum contract. -type MathTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type MathFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// MathSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type MathSession struct { - Contract *Math // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// MathCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type MathCallerSession struct { - Contract *MathCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type MathTransactorSession struct { - Contract *MathTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// MathRaw is an auto generated low-level Go binding around an Ethereum contract. -type MathRaw struct { - Contract *Math // Generic contract binding to access the raw methods on -} - -// MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type MathCallerRaw struct { - Contract *MathCaller // Generic read-only contract binding to access the raw methods on -} - -// MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type MathTransactorRaw struct { - Contract *MathTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewMath creates a new instance of Math, bound to a specific deployed contract. -func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) { - contract, err := bindMath(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil -} - -// NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract. -func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) { - contract, err := bindMath(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &MathCaller{contract: contract}, nil -} - -// NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract. -func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) { - contract, err := bindMath(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &MathTransactor{contract: contract}, nil -} - -// NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract. -func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) { - contract, err := bindMath(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &MathFilterer{contract: contract}, nil -} - -// bindMath binds a generic wrapper to an already deployed contract. -func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := MathMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Math *MathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Math.Contract.MathTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Math.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Math.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Math.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go b/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go deleted file mode 100644 index dd80cb9b..00000000 --- a/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package safemath - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SafeMathMetaData contains all meta data concerning the SafeMath contract. -var SafeMathMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc1c290dcae2f326bd131e1959ee8796f40aded46d889061bd483ecfcb42f19664736f6c63430005100032", -} - -// SafeMathABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeMathMetaData.ABI instead. -var SafeMathABI = SafeMathMetaData.ABI - -// SafeMathBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeMathMetaData.Bin instead. -var SafeMathBin = SafeMathMetaData.Bin - -// DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it. -func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) { - parsed, err := SafeMathMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil -} - -// SafeMath is an auto generated Go binding around an Ethereum contract. -type SafeMath struct { - SafeMathCaller // Read-only binding to the contract - SafeMathTransactor // Write-only binding to the contract - SafeMathFilterer // Log filterer for contract events -} - -// SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract. -type SafeMathCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeMathTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeMathFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeMathSession struct { - Contract *SafeMath // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeMathCallerSession struct { - Contract *SafeMathCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeMathTransactorSession struct { - Contract *SafeMathTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract. -type SafeMathRaw struct { - Contract *SafeMath // Generic contract binding to access the raw methods on -} - -// SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeMathCallerRaw struct { - Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on -} - -// SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeMathTransactorRaw struct { - Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract. -func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) { - contract, err := bindSafeMath(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil -} - -// NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) { - contract, err := bindSafeMath(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeMathCaller{contract: contract}, nil -} - -// NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) { - contract, err := bindSafeMath(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeMathTransactor{contract: contract}, nil -} - -// NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) { - contract, err := bindSafeMath(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeMathFilterer{contract: contract}, nil -} - -// bindSafeMath binds a generic wrapper to an already deployed contract. -func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeMathMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeMath.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeMath.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeMath.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go b/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go deleted file mode 100644 index 13e1b83d..00000000 --- a/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uq112x112 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UQ112x112MetaData contains all meta data concerning the UQ112x112 contract. -var UQ112x112MetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820c4e545b71eb450fec89d3fbcceea2f62f8971fce94db924228248b088e907ed864736f6c63430005100032", -} - -// UQ112x112ABI is the input ABI used to generate the binding from. -// Deprecated: Use UQ112x112MetaData.ABI instead. -var UQ112x112ABI = UQ112x112MetaData.ABI - -// UQ112x112Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UQ112x112MetaData.Bin instead. -var UQ112x112Bin = UQ112x112MetaData.Bin - -// DeployUQ112x112 deploys a new Ethereum contract, binding an instance of UQ112x112 to it. -func DeployUQ112x112(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UQ112x112, error) { - parsed, err := UQ112x112MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UQ112x112Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UQ112x112{UQ112x112Caller: UQ112x112Caller{contract: contract}, UQ112x112Transactor: UQ112x112Transactor{contract: contract}, UQ112x112Filterer: UQ112x112Filterer{contract: contract}}, nil -} - -// UQ112x112 is an auto generated Go binding around an Ethereum contract. -type UQ112x112 struct { - UQ112x112Caller // Read-only binding to the contract - UQ112x112Transactor // Write-only binding to the contract - UQ112x112Filterer // Log filterer for contract events -} - -// UQ112x112Caller is an auto generated read-only Go binding around an Ethereum contract. -type UQ112x112Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UQ112x112Transactor is an auto generated write-only Go binding around an Ethereum contract. -type UQ112x112Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UQ112x112Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UQ112x112Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UQ112x112Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UQ112x112Session struct { - Contract *UQ112x112 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UQ112x112CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UQ112x112CallerSession struct { - Contract *UQ112x112Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UQ112x112TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UQ112x112TransactorSession struct { - Contract *UQ112x112Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UQ112x112Raw is an auto generated low-level Go binding around an Ethereum contract. -type UQ112x112Raw struct { - Contract *UQ112x112 // Generic contract binding to access the raw methods on -} - -// UQ112x112CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UQ112x112CallerRaw struct { - Contract *UQ112x112Caller // Generic read-only contract binding to access the raw methods on -} - -// UQ112x112TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UQ112x112TransactorRaw struct { - Contract *UQ112x112Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewUQ112x112 creates a new instance of UQ112x112, bound to a specific deployed contract. -func NewUQ112x112(address common.Address, backend bind.ContractBackend) (*UQ112x112, error) { - contract, err := bindUQ112x112(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UQ112x112{UQ112x112Caller: UQ112x112Caller{contract: contract}, UQ112x112Transactor: UQ112x112Transactor{contract: contract}, UQ112x112Filterer: UQ112x112Filterer{contract: contract}}, nil -} - -// NewUQ112x112Caller creates a new read-only instance of UQ112x112, bound to a specific deployed contract. -func NewUQ112x112Caller(address common.Address, caller bind.ContractCaller) (*UQ112x112Caller, error) { - contract, err := bindUQ112x112(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UQ112x112Caller{contract: contract}, nil -} - -// NewUQ112x112Transactor creates a new write-only instance of UQ112x112, bound to a specific deployed contract. -func NewUQ112x112Transactor(address common.Address, transactor bind.ContractTransactor) (*UQ112x112Transactor, error) { - contract, err := bindUQ112x112(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UQ112x112Transactor{contract: contract}, nil -} - -// NewUQ112x112Filterer creates a new log filterer instance of UQ112x112, bound to a specific deployed contract. -func NewUQ112x112Filterer(address common.Address, filterer bind.ContractFilterer) (*UQ112x112Filterer, error) { - contract, err := bindUQ112x112(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UQ112x112Filterer{contract: contract}, nil -} - -// bindUQ112x112 binds a generic wrapper to an already deployed contract. -func bindUQ112x112(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UQ112x112MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UQ112x112 *UQ112x112Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UQ112x112.Contract.UQ112x112Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UQ112x112 *UQ112x112Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UQ112x112.Contract.UQ112x112Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UQ112x112 *UQ112x112Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UQ112x112.Contract.UQ112x112Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UQ112x112 *UQ112x112CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UQ112x112.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UQ112x112 *UQ112x112TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UQ112x112.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UQ112x112 *UQ112x112TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UQ112x112.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go b/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go deleted file mode 100644 index f8b3aaed..00000000 --- a/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go +++ /dev/null @@ -1,874 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapv2erc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapV2ERC20MetaData contains all meta data concerning the UniswapV2ERC20 contract. -var UniswapV2ERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506040514690806052610b898239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550610a9b806100ee6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea265627a7a72315820fbe850bc397a587736b017d75ce8021dd8dafcfd54ab43add14fd21753cc6c3564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", -} - -// UniswapV2ERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapV2ERC20MetaData.ABI instead. -var UniswapV2ERC20ABI = UniswapV2ERC20MetaData.ABI - -// UniswapV2ERC20Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapV2ERC20MetaData.Bin instead. -var UniswapV2ERC20Bin = UniswapV2ERC20MetaData.Bin - -// DeployUniswapV2ERC20 deploys a new Ethereum contract, binding an instance of UniswapV2ERC20 to it. -func DeployUniswapV2ERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2ERC20, error) { - parsed, err := UniswapV2ERC20MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2ERC20Bin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapV2ERC20{UniswapV2ERC20Caller: UniswapV2ERC20Caller{contract: contract}, UniswapV2ERC20Transactor: UniswapV2ERC20Transactor{contract: contract}, UniswapV2ERC20Filterer: UniswapV2ERC20Filterer{contract: contract}}, nil -} - -// UniswapV2ERC20 is an auto generated Go binding around an Ethereum contract. -type UniswapV2ERC20 struct { - UniswapV2ERC20Caller // Read-only binding to the contract - UniswapV2ERC20Transactor // Write-only binding to the contract - UniswapV2ERC20Filterer // Log filterer for contract events -} - -// UniswapV2ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapV2ERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapV2ERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapV2ERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2ERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapV2ERC20Session struct { - Contract *UniswapV2ERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapV2ERC20CallerSession struct { - Contract *UniswapV2ERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapV2ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapV2ERC20TransactorSession struct { - Contract *UniswapV2ERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapV2ERC20Raw struct { - Contract *UniswapV2ERC20 // Generic contract binding to access the raw methods on -} - -// UniswapV2ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapV2ERC20CallerRaw struct { - Contract *UniswapV2ERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// UniswapV2ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapV2ERC20TransactorRaw struct { - Contract *UniswapV2ERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapV2ERC20 creates a new instance of UniswapV2ERC20, bound to a specific deployed contract. -func NewUniswapV2ERC20(address common.Address, backend bind.ContractBackend) (*UniswapV2ERC20, error) { - contract, err := bindUniswapV2ERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapV2ERC20{UniswapV2ERC20Caller: UniswapV2ERC20Caller{contract: contract}, UniswapV2ERC20Transactor: UniswapV2ERC20Transactor{contract: contract}, UniswapV2ERC20Filterer: UniswapV2ERC20Filterer{contract: contract}}, nil -} - -// NewUniswapV2ERC20Caller creates a new read-only instance of UniswapV2ERC20, bound to a specific deployed contract. -func NewUniswapV2ERC20Caller(address common.Address, caller bind.ContractCaller) (*UniswapV2ERC20Caller, error) { - contract, err := bindUniswapV2ERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapV2ERC20Caller{contract: contract}, nil -} - -// NewUniswapV2ERC20Transactor creates a new write-only instance of UniswapV2ERC20, bound to a specific deployed contract. -func NewUniswapV2ERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2ERC20Transactor, error) { - contract, err := bindUniswapV2ERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapV2ERC20Transactor{contract: contract}, nil -} - -// NewUniswapV2ERC20Filterer creates a new log filterer instance of UniswapV2ERC20, bound to a specific deployed contract. -func NewUniswapV2ERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2ERC20Filterer, error) { - contract, err := bindUniswapV2ERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapV2ERC20Filterer{contract: contract}, nil -} - -// bindUniswapV2ERC20 binds a generic wrapper to an already deployed contract. -func bindUniswapV2ERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapV2ERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2ERC20.Contract.UniswapV2ERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.UniswapV2ERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.UniswapV2ERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2ERC20 *UniswapV2ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2ERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) DOMAINSEPARATOR() ([32]byte, error) { - return _UniswapV2ERC20.Contract.DOMAINSEPARATOR(&_UniswapV2ERC20.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _UniswapV2ERC20.Contract.DOMAINSEPARATOR(&_UniswapV2ERC20.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "PERMIT_TYPEHASH") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) PERMITTYPEHASH() ([32]byte, error) { - return _UniswapV2ERC20.Contract.PERMITTYPEHASH(&_UniswapV2ERC20.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) PERMITTYPEHASH() ([32]byte, error) { - return _UniswapV2ERC20.Contract.PERMITTYPEHASH(&_UniswapV2ERC20.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "allowance", arg0, arg1) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.Allowance(&_UniswapV2ERC20.CallOpts, arg0, arg1) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.Allowance(&_UniswapV2ERC20.CallOpts, arg0, arg1) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "balanceOf", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.BalanceOf(&_UniswapV2ERC20.CallOpts, arg0) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.BalanceOf(&_UniswapV2ERC20.CallOpts, arg0) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Decimals() (uint8, error) { - return _UniswapV2ERC20.Contract.Decimals(&_UniswapV2ERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Decimals() (uint8, error) { - return _UniswapV2ERC20.Contract.Decimals(&_UniswapV2ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Name() (string, error) { - return _UniswapV2ERC20.Contract.Name(&_UniswapV2ERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Name() (string, error) { - return _UniswapV2ERC20.Contract.Name(&_UniswapV2ERC20.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "nonces", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Nonces(arg0 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.Nonces(&_UniswapV2ERC20.CallOpts, arg0) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Nonces(arg0 common.Address) (*big.Int, error) { - return _UniswapV2ERC20.Contract.Nonces(&_UniswapV2ERC20.CallOpts, arg0) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Symbol() (string, error) { - return _UniswapV2ERC20.Contract.Symbol(&_UniswapV2ERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Symbol() (string, error) { - return _UniswapV2ERC20.Contract.Symbol(&_UniswapV2ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2ERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) TotalSupply() (*big.Int, error) { - return _UniswapV2ERC20.Contract.TotalSupply(&_UniswapV2ERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) TotalSupply() (*big.Int, error) { - return _UniswapV2ERC20.Contract.TotalSupply(&_UniswapV2ERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Approve(&_UniswapV2ERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Approve(&_UniswapV2ERC20.TransactOpts, spender, value) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2ERC20.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Permit(&_UniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Permit(&_UniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Transfer(&_UniswapV2ERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.Transfer(&_UniswapV2ERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.TransferFrom(&_UniswapV2ERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2ERC20.Contract.TransferFrom(&_UniswapV2ERC20.TransactOpts, from, to, value) -} - -// UniswapV2ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the UniswapV2ERC20 contract. -type UniswapV2ERC20ApprovalIterator struct { - Event *UniswapV2ERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2ERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2ERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2ERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2ERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2ERC20Approval represents a Approval event raised by the UniswapV2ERC20 contract. -type UniswapV2ERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*UniswapV2ERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _UniswapV2ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &UniswapV2ERC20ApprovalIterator{contract: _UniswapV2ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *UniswapV2ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _UniswapV2ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2ERC20Approval) - if err := _UniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) ParseApproval(log types.Log) (*UniswapV2ERC20Approval, error) { - event := new(UniswapV2ERC20Approval) - if err := _UniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the UniswapV2ERC20 contract. -type UniswapV2ERC20TransferIterator struct { - Event *UniswapV2ERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2ERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2ERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2ERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2ERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2ERC20Transfer represents a Transfer event raised by the UniswapV2ERC20 contract. -type UniswapV2ERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*UniswapV2ERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &UniswapV2ERC20TransferIterator{contract: _UniswapV2ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *UniswapV2ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2ERC20Transfer) - if err := _UniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) ParseTransfer(log types.Log) (*UniswapV2ERC20Transfer, error) { - event := new(UniswapV2ERC20Transfer) - if err := _UniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go b/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go deleted file mode 100644 index 90df63d4..00000000 --- a/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go +++ /dev/null @@ -1,576 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapv2factory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapV2FactoryMetaData contains all meta data concerning the UniswapV2Factory contract. -var UniswapV2FactoryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820841b93a7dff584da07aecb7efe1de139d1b94052d48051f920879ff29f44c0f264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a7231582077bc274fa98d252ff2309addaae7f2e624d726c5087635460bbf380e8727721864736f6c63430005100032", -} - -// UniswapV2FactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapV2FactoryMetaData.ABI instead. -var UniswapV2FactoryABI = UniswapV2FactoryMetaData.ABI - -// UniswapV2FactoryBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapV2FactoryMetaData.Bin instead. -var UniswapV2FactoryBin = UniswapV2FactoryMetaData.Bin - -// DeployUniswapV2Factory deploys a new Ethereum contract, binding an instance of UniswapV2Factory to it. -func DeployUniswapV2Factory(auth *bind.TransactOpts, backend bind.ContractBackend, _feeToSetter common.Address) (common.Address, *types.Transaction, *UniswapV2Factory, error) { - parsed, err := UniswapV2FactoryMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2FactoryBin), backend, _feeToSetter) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapV2Factory{UniswapV2FactoryCaller: UniswapV2FactoryCaller{contract: contract}, UniswapV2FactoryTransactor: UniswapV2FactoryTransactor{contract: contract}, UniswapV2FactoryFilterer: UniswapV2FactoryFilterer{contract: contract}}, nil -} - -// UniswapV2Factory is an auto generated Go binding around an Ethereum contract. -type UniswapV2Factory struct { - UniswapV2FactoryCaller // Read-only binding to the contract - UniswapV2FactoryTransactor // Write-only binding to the contract - UniswapV2FactoryFilterer // Log filterer for contract events -} - -// UniswapV2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapV2FactoryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapV2FactoryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapV2FactoryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2FactorySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapV2FactorySession struct { - Contract *UniswapV2Factory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapV2FactoryCallerSession struct { - Contract *UniswapV2FactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapV2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapV2FactoryTransactorSession struct { - Contract *UniswapV2FactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapV2FactoryRaw struct { - Contract *UniswapV2Factory // Generic contract binding to access the raw methods on -} - -// UniswapV2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapV2FactoryCallerRaw struct { - Contract *UniswapV2FactoryCaller // Generic read-only contract binding to access the raw methods on -} - -// UniswapV2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapV2FactoryTransactorRaw struct { - Contract *UniswapV2FactoryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapV2Factory creates a new instance of UniswapV2Factory, bound to a specific deployed contract. -func NewUniswapV2Factory(address common.Address, backend bind.ContractBackend) (*UniswapV2Factory, error) { - contract, err := bindUniswapV2Factory(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapV2Factory{UniswapV2FactoryCaller: UniswapV2FactoryCaller{contract: contract}, UniswapV2FactoryTransactor: UniswapV2FactoryTransactor{contract: contract}, UniswapV2FactoryFilterer: UniswapV2FactoryFilterer{contract: contract}}, nil -} - -// NewUniswapV2FactoryCaller creates a new read-only instance of UniswapV2Factory, bound to a specific deployed contract. -func NewUniswapV2FactoryCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2FactoryCaller, error) { - contract, err := bindUniswapV2Factory(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapV2FactoryCaller{contract: contract}, nil -} - -// NewUniswapV2FactoryTransactor creates a new write-only instance of UniswapV2Factory, bound to a specific deployed contract. -func NewUniswapV2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2FactoryTransactor, error) { - contract, err := bindUniswapV2Factory(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapV2FactoryTransactor{contract: contract}, nil -} - -// NewUniswapV2FactoryFilterer creates a new log filterer instance of UniswapV2Factory, bound to a specific deployed contract. -func NewUniswapV2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2FactoryFilterer, error) { - contract, err := bindUniswapV2Factory(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapV2FactoryFilterer{contract: contract}, nil -} - -// bindUniswapV2Factory binds a generic wrapper to an already deployed contract. -func bindUniswapV2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapV2FactoryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Factory *UniswapV2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Factory.Contract.UniswapV2FactoryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Factory *UniswapV2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.UniswapV2FactoryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Factory *UniswapV2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.UniswapV2FactoryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Factory *UniswapV2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Factory.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Factory *UniswapV2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Factory *UniswapV2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.contract.Transact(opts, method, params...) -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCaller) AllPairs(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { - var out []interface{} - err := _UniswapV2Factory.contract.Call(opts, &out, "allPairs", arg0) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactorySession) AllPairs(arg0 *big.Int) (common.Address, error) { - return _UniswapV2Factory.Contract.AllPairs(&_UniswapV2Factory.CallOpts, arg0) -} - -// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. -// -// Solidity: function allPairs(uint256 ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCallerSession) AllPairs(arg0 *big.Int) (common.Address, error) { - return _UniswapV2Factory.Contract.AllPairs(&_UniswapV2Factory.CallOpts, arg0) -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_UniswapV2Factory *UniswapV2FactoryCaller) AllPairsLength(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Factory.contract.Call(opts, &out, "allPairsLength") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_UniswapV2Factory *UniswapV2FactorySession) AllPairsLength() (*big.Int, error) { - return _UniswapV2Factory.Contract.AllPairsLength(&_UniswapV2Factory.CallOpts) -} - -// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. -// -// Solidity: function allPairsLength() view returns(uint256) -func (_UniswapV2Factory *UniswapV2FactoryCallerSession) AllPairsLength() (*big.Int, error) { - return _UniswapV2Factory.Contract.AllPairsLength(&_UniswapV2Factory.CallOpts) -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCaller) FeeTo(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Factory.contract.Call(opts, &out, "feeTo") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_UniswapV2Factory *UniswapV2FactorySession) FeeTo() (common.Address, error) { - return _UniswapV2Factory.Contract.FeeTo(&_UniswapV2Factory.CallOpts) -} - -// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. -// -// Solidity: function feeTo() view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCallerSession) FeeTo() (common.Address, error) { - return _UniswapV2Factory.Contract.FeeTo(&_UniswapV2Factory.CallOpts) -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCaller) FeeToSetter(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Factory.contract.Call(opts, &out, "feeToSetter") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_UniswapV2Factory *UniswapV2FactorySession) FeeToSetter() (common.Address, error) { - return _UniswapV2Factory.Contract.FeeToSetter(&_UniswapV2Factory.CallOpts) -} - -// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. -// -// Solidity: function feeToSetter() view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCallerSession) FeeToSetter() (common.Address, error) { - return _UniswapV2Factory.Contract.FeeToSetter(&_UniswapV2Factory.CallOpts) -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address , address ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCaller) GetPair(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (common.Address, error) { - var out []interface{} - err := _UniswapV2Factory.contract.Call(opts, &out, "getPair", arg0, arg1) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address , address ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactorySession) GetPair(arg0 common.Address, arg1 common.Address) (common.Address, error) { - return _UniswapV2Factory.Contract.GetPair(&_UniswapV2Factory.CallOpts, arg0, arg1) -} - -// GetPair is a free data retrieval call binding the contract method 0xe6a43905. -// -// Solidity: function getPair(address , address ) view returns(address) -func (_UniswapV2Factory *UniswapV2FactoryCallerSession) GetPair(arg0 common.Address, arg1 common.Address) (common.Address, error) { - return _UniswapV2Factory.Contract.GetPair(&_UniswapV2Factory.CallOpts, arg0, arg1) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_UniswapV2Factory *UniswapV2FactoryTransactor) CreatePair(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.contract.Transact(opts, "createPair", tokenA, tokenB) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_UniswapV2Factory *UniswapV2FactorySession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.CreatePair(&_UniswapV2Factory.TransactOpts, tokenA, tokenB) -} - -// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. -// -// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) -func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.CreatePair(&_UniswapV2Factory.TransactOpts, tokenA, tokenB) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address _feeTo) returns() -func (_UniswapV2Factory *UniswapV2FactoryTransactor) SetFeeTo(opts *bind.TransactOpts, _feeTo common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.contract.Transact(opts, "setFeeTo", _feeTo) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address _feeTo) returns() -func (_UniswapV2Factory *UniswapV2FactorySession) SetFeeTo(_feeTo common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.SetFeeTo(&_UniswapV2Factory.TransactOpts, _feeTo) -} - -// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. -// -// Solidity: function setFeeTo(address _feeTo) returns() -func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) SetFeeTo(_feeTo common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.SetFeeTo(&_UniswapV2Factory.TransactOpts, _feeTo) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address _feeToSetter) returns() -func (_UniswapV2Factory *UniswapV2FactoryTransactor) SetFeeToSetter(opts *bind.TransactOpts, _feeToSetter common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.contract.Transact(opts, "setFeeToSetter", _feeToSetter) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address _feeToSetter) returns() -func (_UniswapV2Factory *UniswapV2FactorySession) SetFeeToSetter(_feeToSetter common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.SetFeeToSetter(&_UniswapV2Factory.TransactOpts, _feeToSetter) -} - -// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. -// -// Solidity: function setFeeToSetter(address _feeToSetter) returns() -func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) SetFeeToSetter(_feeToSetter common.Address) (*types.Transaction, error) { - return _UniswapV2Factory.Contract.SetFeeToSetter(&_UniswapV2Factory.TransactOpts, _feeToSetter) -} - -// UniswapV2FactoryPairCreatedIterator is returned from FilterPairCreated and is used to iterate over the raw logs and unpacked data for PairCreated events raised by the UniswapV2Factory contract. -type UniswapV2FactoryPairCreatedIterator struct { - Event *UniswapV2FactoryPairCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2FactoryPairCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2FactoryPairCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2FactoryPairCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2FactoryPairCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2FactoryPairCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2FactoryPairCreated represents a PairCreated event raised by the UniswapV2Factory contract. -type UniswapV2FactoryPairCreated struct { - Token0 common.Address - Token1 common.Address - Pair common.Address - Arg3 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPairCreated is a free log retrieval operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_UniswapV2Factory *UniswapV2FactoryFilterer) FilterPairCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address) (*UniswapV2FactoryPairCreatedIterator, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - - logs, sub, err := _UniswapV2Factory.contract.FilterLogs(opts, "PairCreated", token0Rule, token1Rule) - if err != nil { - return nil, err - } - return &UniswapV2FactoryPairCreatedIterator{contract: _UniswapV2Factory.contract, event: "PairCreated", logs: logs, sub: sub}, nil -} - -// WatchPairCreated is a free log subscription operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_UniswapV2Factory *UniswapV2FactoryFilterer) WatchPairCreated(opts *bind.WatchOpts, sink chan<- *UniswapV2FactoryPairCreated, token0 []common.Address, token1 []common.Address) (event.Subscription, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - - logs, sub, err := _UniswapV2Factory.contract.WatchLogs(opts, "PairCreated", token0Rule, token1Rule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2FactoryPairCreated) - if err := _UniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePairCreated is a log parse operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. -// -// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) -func (_UniswapV2Factory *UniswapV2FactoryFilterer) ParsePairCreated(log types.Log) (*UniswapV2FactoryPairCreated, error) { - event := new(UniswapV2FactoryPairCreated) - if err := _UniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go b/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go deleted file mode 100644 index e96f2391..00000000 --- a/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go +++ /dev/null @@ -1,1864 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapv2pair - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapV2PairMetaData contains all meta data concerning the UniswapV2Pair contract. -var UniswapV2PairMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820841b93a7dff584da07aecb7efe1de139d1b94052d48051f920879ff29f44c0f264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", -} - -// UniswapV2PairABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapV2PairMetaData.ABI instead. -var UniswapV2PairABI = UniswapV2PairMetaData.ABI - -// UniswapV2PairBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapV2PairMetaData.Bin instead. -var UniswapV2PairBin = UniswapV2PairMetaData.Bin - -// DeployUniswapV2Pair deploys a new Ethereum contract, binding an instance of UniswapV2Pair to it. -func DeployUniswapV2Pair(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2Pair, error) { - parsed, err := UniswapV2PairMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2PairBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapV2Pair{UniswapV2PairCaller: UniswapV2PairCaller{contract: contract}, UniswapV2PairTransactor: UniswapV2PairTransactor{contract: contract}, UniswapV2PairFilterer: UniswapV2PairFilterer{contract: contract}}, nil -} - -// UniswapV2Pair is an auto generated Go binding around an Ethereum contract. -type UniswapV2Pair struct { - UniswapV2PairCaller // Read-only binding to the contract - UniswapV2PairTransactor // Write-only binding to the contract - UniswapV2PairFilterer // Log filterer for contract events -} - -// UniswapV2PairCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapV2PairCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2PairTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapV2PairTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2PairFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapV2PairFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2PairSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapV2PairSession struct { - Contract *UniswapV2Pair // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2PairCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapV2PairCallerSession struct { - Contract *UniswapV2PairCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapV2PairTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapV2PairTransactorSession struct { - Contract *UniswapV2PairTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2PairRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapV2PairRaw struct { - Contract *UniswapV2Pair // Generic contract binding to access the raw methods on -} - -// UniswapV2PairCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapV2PairCallerRaw struct { - Contract *UniswapV2PairCaller // Generic read-only contract binding to access the raw methods on -} - -// UniswapV2PairTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapV2PairTransactorRaw struct { - Contract *UniswapV2PairTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapV2Pair creates a new instance of UniswapV2Pair, bound to a specific deployed contract. -func NewUniswapV2Pair(address common.Address, backend bind.ContractBackend) (*UniswapV2Pair, error) { - contract, err := bindUniswapV2Pair(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapV2Pair{UniswapV2PairCaller: UniswapV2PairCaller{contract: contract}, UniswapV2PairTransactor: UniswapV2PairTransactor{contract: contract}, UniswapV2PairFilterer: UniswapV2PairFilterer{contract: contract}}, nil -} - -// NewUniswapV2PairCaller creates a new read-only instance of UniswapV2Pair, bound to a specific deployed contract. -func NewUniswapV2PairCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2PairCaller, error) { - contract, err := bindUniswapV2Pair(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapV2PairCaller{contract: contract}, nil -} - -// NewUniswapV2PairTransactor creates a new write-only instance of UniswapV2Pair, bound to a specific deployed contract. -func NewUniswapV2PairTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2PairTransactor, error) { - contract, err := bindUniswapV2Pair(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapV2PairTransactor{contract: contract}, nil -} - -// NewUniswapV2PairFilterer creates a new log filterer instance of UniswapV2Pair, bound to a specific deployed contract. -func NewUniswapV2PairFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2PairFilterer, error) { - contract, err := bindUniswapV2Pair(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapV2PairFilterer{contract: contract}, nil -} - -// bindUniswapV2Pair binds a generic wrapper to an already deployed contract. -func bindUniswapV2Pair(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapV2PairMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Pair *UniswapV2PairRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Pair.Contract.UniswapV2PairCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Pair *UniswapV2PairRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.UniswapV2PairTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Pair *UniswapV2PairRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.UniswapV2PairTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Pair *UniswapV2PairCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Pair.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Pair *UniswapV2PairTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Pair *UniswapV2PairTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.contract.Transact(opts, method, params...) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "DOMAIN_SEPARATOR") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairSession) DOMAINSEPARATOR() ([32]byte, error) { - return _UniswapV2Pair.Contract.DOMAINSEPARATOR(&_UniswapV2Pair.CallOpts) -} - -// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. -// -// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairCallerSession) DOMAINSEPARATOR() ([32]byte, error) { - return _UniswapV2Pair.Contract.DOMAINSEPARATOR(&_UniswapV2Pair.CallOpts) -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) MINIMUMLIQUIDITY(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "MINIMUM_LIQUIDITY") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) MINIMUMLIQUIDITY() (*big.Int, error) { - return _UniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_UniswapV2Pair.CallOpts) -} - -// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. -// -// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) MINIMUMLIQUIDITY() (*big.Int, error) { - return _UniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_UniswapV2Pair.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairCaller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "PERMIT_TYPEHASH") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairSession) PERMITTYPEHASH() ([32]byte, error) { - return _UniswapV2Pair.Contract.PERMITTYPEHASH(&_UniswapV2Pair.CallOpts) -} - -// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. -// -// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) -func (_UniswapV2Pair *UniswapV2PairCallerSession) PERMITTYPEHASH() ([32]byte, error) { - return _UniswapV2Pair.Contract.PERMITTYPEHASH(&_UniswapV2Pair.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "allowance", arg0, arg1) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.Allowance(&_UniswapV2Pair.CallOpts, arg0, arg1) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address , address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.Allowance(&_UniswapV2Pair.CallOpts, arg0, arg1) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "balanceOf", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.BalanceOf(&_UniswapV2Pair.CallOpts, arg0) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.BalanceOf(&_UniswapV2Pair.CallOpts, arg0) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2Pair *UniswapV2PairCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2Pair *UniswapV2PairSession) Decimals() (uint8, error) { - return _UniswapV2Pair.Contract.Decimals(&_UniswapV2Pair.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Decimals() (uint8, error) { - return _UniswapV2Pair.Contract.Decimals(&_UniswapV2Pair.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCaller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Pair *UniswapV2PairSession) Factory() (common.Address, error) { - return _UniswapV2Pair.Contract.Factory(&_UniswapV2Pair.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Factory() (common.Address, error) { - return _UniswapV2Pair.Contract.Factory(&_UniswapV2Pair.CallOpts) -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) -func (_UniswapV2Pair *UniswapV2PairCaller) GetReserves(opts *bind.CallOpts) (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "getReserves") - - outstruct := new(struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 - }) - if err != nil { - return *outstruct, err - } - - outstruct.Reserve0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Reserve1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.BlockTimestampLast = *abi.ConvertType(out[2], new(uint32)).(*uint32) - - return *outstruct, err - -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) -func (_UniswapV2Pair *UniswapV2PairSession) GetReserves() (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - return _UniswapV2Pair.Contract.GetReserves(&_UniswapV2Pair.CallOpts) -} - -// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. -// -// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) -func (_UniswapV2Pair *UniswapV2PairCallerSession) GetReserves() (struct { - Reserve0 *big.Int - Reserve1 *big.Int - BlockTimestampLast uint32 -}, error) { - return _UniswapV2Pair.Contract.GetReserves(&_UniswapV2Pair.CallOpts) -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) KLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "kLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) KLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.KLast(&_UniswapV2Pair.CallOpts) -} - -// KLast is a free data retrieval call binding the contract method 0x7464fc3d. -// -// Solidity: function kLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) KLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.KLast(&_UniswapV2Pair.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2Pair *UniswapV2PairCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2Pair *UniswapV2PairSession) Name() (string, error) { - return _UniswapV2Pair.Contract.Name(&_UniswapV2Pair.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Name() (string, error) { - return _UniswapV2Pair.Contract.Name(&_UniswapV2Pair.CallOpts) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "nonces", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) Nonces(arg0 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.Nonces(&_UniswapV2Pair.CallOpts, arg0) -} - -// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. -// -// Solidity: function nonces(address ) view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Nonces(arg0 common.Address) (*big.Int, error) { - return _UniswapV2Pair.Contract.Nonces(&_UniswapV2Pair.CallOpts, arg0) -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) Price0CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "price0CumulativeLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) Price0CumulativeLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.Price0CumulativeLast(&_UniswapV2Pair.CallOpts) -} - -// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. -// -// Solidity: function price0CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Price0CumulativeLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.Price0CumulativeLast(&_UniswapV2Pair.CallOpts) -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) Price1CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "price1CumulativeLast") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) Price1CumulativeLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.Price1CumulativeLast(&_UniswapV2Pair.CallOpts) -} - -// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. -// -// Solidity: function price1CumulativeLast() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Price1CumulativeLast() (*big.Int, error) { - return _UniswapV2Pair.Contract.Price1CumulativeLast(&_UniswapV2Pair.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2Pair *UniswapV2PairCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2Pair *UniswapV2PairSession) Symbol() (string, error) { - return _UniswapV2Pair.Contract.Symbol(&_UniswapV2Pair.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Symbol() (string, error) { - return _UniswapV2Pair.Contract.Symbol(&_UniswapV2Pair.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCaller) Token0(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "token0") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_UniswapV2Pair *UniswapV2PairSession) Token0() (common.Address, error) { - return _UniswapV2Pair.Contract.Token0(&_UniswapV2Pair.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Token0() (common.Address, error) { - return _UniswapV2Pair.Contract.Token0(&_UniswapV2Pair.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCaller) Token1(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "token1") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_UniswapV2Pair *UniswapV2PairSession) Token1() (common.Address, error) { - return _UniswapV2Pair.Contract.Token1(&_UniswapV2Pair.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_UniswapV2Pair *UniswapV2PairCallerSession) Token1() (common.Address, error) { - return _UniswapV2Pair.Contract.Token1(&_UniswapV2Pair.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Pair.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairSession) TotalSupply() (*big.Int, error) { - return _UniswapV2Pair.Contract.TotalSupply(&_UniswapV2Pair.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_UniswapV2Pair *UniswapV2PairCallerSession) TotalSupply() (*big.Int, error) { - return _UniswapV2Pair.Contract.TotalSupply(&_UniswapV2Pair.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Approve(&_UniswapV2Pair.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Approve(&_UniswapV2Pair.TransactOpts, spender, value) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairTransactor) Burn(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "burn", to) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairSession) Burn(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Burn(&_UniswapV2Pair.TransactOpts, to) -} - -// Burn is a paid mutator transaction binding the contract method 0x89afcb44. -// -// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Burn(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Burn(&_UniswapV2Pair.TransactOpts, to) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _token0, address _token1) returns() -func (_UniswapV2Pair *UniswapV2PairTransactor) Initialize(opts *bind.TransactOpts, _token0 common.Address, _token1 common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "initialize", _token0, _token1) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _token0, address _token1) returns() -func (_UniswapV2Pair *UniswapV2PairSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Initialize(&_UniswapV2Pair.TransactOpts, _token0, _token1) -} - -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. -// -// Solidity: function initialize(address _token0, address _token1) returns() -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Initialize(&_UniswapV2Pair.TransactOpts, _token0, _token1) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_UniswapV2Pair *UniswapV2PairTransactor) Mint(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "mint", to) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_UniswapV2Pair *UniswapV2PairSession) Mint(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Mint(&_UniswapV2Pair.TransactOpts, to) -} - -// Mint is a paid mutator transaction binding the contract method 0x6a627842. -// -// Solidity: function mint(address to) returns(uint256 liquidity) -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Mint(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Mint(&_UniswapV2Pair.TransactOpts, to) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2Pair *UniswapV2PairTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2Pair *UniswapV2PairSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Permit(&_UniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Permit is a paid mutator transaction binding the contract method 0xd505accf. -// -// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Permit(&_UniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_UniswapV2Pair *UniswapV2PairTransactor) Skim(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "skim", to) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_UniswapV2Pair *UniswapV2PairSession) Skim(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Skim(&_UniswapV2Pair.TransactOpts, to) -} - -// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. -// -// Solidity: function skim(address to) returns() -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Skim(to common.Address) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Skim(&_UniswapV2Pair.TransactOpts, to) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_UniswapV2Pair *UniswapV2PairTransactor) Swap(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "swap", amount0Out, amount1Out, to, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_UniswapV2Pair *UniswapV2PairSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Swap(&_UniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. -// -// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Swap(&_UniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_UniswapV2Pair *UniswapV2PairTransactor) Sync(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "sync") -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_UniswapV2Pair *UniswapV2PairSession) Sync() (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Sync(&_UniswapV2Pair.TransactOpts) -} - -// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. -// -// Solidity: function sync() returns() -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Sync() (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Sync(&_UniswapV2Pair.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Transfer(&_UniswapV2Pair.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.Transfer(&_UniswapV2Pair.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.TransferFrom(&_UniswapV2Pair.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_UniswapV2Pair *UniswapV2PairTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _UniswapV2Pair.Contract.TransferFrom(&_UniswapV2Pair.TransactOpts, from, to, value) -} - -// UniswapV2PairApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the UniswapV2Pair contract. -type UniswapV2PairApprovalIterator struct { - Event *UniswapV2PairApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairApproval represents a Approval event raised by the UniswapV2Pair contract. -type UniswapV2PairApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*UniswapV2PairApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &UniswapV2PairApprovalIterator{contract: _UniswapV2Pair.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *UniswapV2PairApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairApproval) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseApproval(log types.Log) (*UniswapV2PairApproval, error) { - event := new(UniswapV2PairApproval) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2PairBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the UniswapV2Pair contract. -type UniswapV2PairBurnIterator struct { - Event *UniswapV2PairBurn // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairBurnIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairBurnIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairBurnIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairBurn represents a Burn event raised by the UniswapV2Pair contract. -type UniswapV2PairBurn struct { - Sender common.Address - Amount0 *big.Int - Amount1 *big.Int - To common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBurn is a free log retrieval operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterBurn(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*UniswapV2PairBurnIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Burn", senderRule, toRule) - if err != nil { - return nil, err - } - return &UniswapV2PairBurnIterator{contract: _UniswapV2Pair.contract, event: "Burn", logs: logs, sub: sub}, nil -} - -// WatchBurn is a free log subscription operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *UniswapV2PairBurn, sender []common.Address, to []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Burn", senderRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairBurn) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBurn is a log parse operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. -// -// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseBurn(log types.Log) (*UniswapV2PairBurn, error) { - event := new(UniswapV2PairBurn) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2PairMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the UniswapV2Pair contract. -type UniswapV2PairMintIterator struct { - Event *UniswapV2PairMint // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairMintIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairMintIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairMintIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairMint represents a Mint event raised by the UniswapV2Pair contract. -type UniswapV2PairMint struct { - Sender common.Address - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterMint(opts *bind.FilterOpts, sender []common.Address) (*UniswapV2PairMintIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Mint", senderRule) - if err != nil { - return nil, err - } - return &UniswapV2PairMintIterator{contract: _UniswapV2Pair.contract, event: "Mint", logs: logs, sub: sub}, nil -} - -// WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *UniswapV2PairMint, sender []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Mint", senderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairMint) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. -// -// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseMint(log types.Log) (*UniswapV2PairMint, error) { - event := new(UniswapV2PairMint) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2PairSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the UniswapV2Pair contract. -type UniswapV2PairSwapIterator struct { - Event *UniswapV2PairSwap // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairSwapIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairSwapIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairSwapIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairSwap represents a Swap event raised by the UniswapV2Pair contract. -type UniswapV2PairSwap struct { - Sender common.Address - Amount0In *big.Int - Amount1In *big.Int - Amount0Out *big.Int - Amount1Out *big.Int - To common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSwap is a free log retrieval operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*UniswapV2PairSwapIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Swap", senderRule, toRule) - if err != nil { - return nil, err - } - return &UniswapV2PairSwapIterator{contract: _UniswapV2Pair.contract, event: "Swap", logs: logs, sub: sub}, nil -} - -// WatchSwap is a free log subscription operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *UniswapV2PairSwap, sender []common.Address, to []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Swap", senderRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairSwap) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSwap is a log parse operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. -// -// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseSwap(log types.Log) (*UniswapV2PairSwap, error) { - event := new(UniswapV2PairSwap) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2PairSyncIterator is returned from FilterSync and is used to iterate over the raw logs and unpacked data for Sync events raised by the UniswapV2Pair contract. -type UniswapV2PairSyncIterator struct { - Event *UniswapV2PairSync // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairSyncIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairSync) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairSync) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairSyncIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairSyncIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairSync represents a Sync event raised by the UniswapV2Pair contract. -type UniswapV2PairSync struct { - Reserve0 *big.Int - Reserve1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSync is a free log retrieval operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterSync(opts *bind.FilterOpts) (*UniswapV2PairSyncIterator, error) { - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Sync") - if err != nil { - return nil, err - } - return &UniswapV2PairSyncIterator{contract: _UniswapV2Pair.contract, event: "Sync", logs: logs, sub: sub}, nil -} - -// WatchSync is a free log subscription operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchSync(opts *bind.WatchOpts, sink chan<- *UniswapV2PairSync) (event.Subscription, error) { - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Sync") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairSync) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSync is a log parse operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. -// -// Solidity: event Sync(uint112 reserve0, uint112 reserve1) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseSync(log types.Log) (*UniswapV2PairSync, error) { - event := new(UniswapV2PairSync) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// UniswapV2PairTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the UniswapV2Pair contract. -type UniswapV2PairTransferIterator struct { - Event *UniswapV2PairTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *UniswapV2PairTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(UniswapV2PairTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *UniswapV2PairTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *UniswapV2PairTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// UniswapV2PairTransfer represents a Transfer event raised by the UniswapV2Pair contract. -type UniswapV2PairTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*UniswapV2PairTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &UniswapV2PairTransferIterator{contract: _UniswapV2Pair.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *UniswapV2PairTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(UniswapV2PairTransfer) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_UniswapV2Pair *UniswapV2PairFilterer) ParseTransfer(log types.Log) (*UniswapV2PairTransfer, error) { - event := new(UniswapV2PairTransfer) - if err := _UniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go b/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go deleted file mode 100644 index 31d0fc1f..00000000 --- a/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go +++ /dev/null @@ -1,738 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20MetaData contains all meta data concerning the IERC20 contract. -var IERC20MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IERC20ABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20MetaData.ABI instead. -var IERC20ABI = IERC20MetaData.ABI - -// IERC20 is an auto generated Go binding around an Ethereum contract. -type IERC20 struct { - IERC20Caller // Read-only binding to the contract - IERC20Transactor // Write-only binding to the contract - IERC20Filterer // Log filterer for contract events -} - -// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20Session struct { - Contract *IERC20 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CallerSession struct { - Contract *IERC20Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20TransactorSession struct { - Contract *IERC20Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20Raw struct { - Contract *IERC20 // Generic contract binding to access the raw methods on -} - -// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CallerRaw struct { - Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on -} - -// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20TransactorRaw struct { - Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. -func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { - contract, err := bindIERC20(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil -} - -// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { - contract, err := bindIERC20(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20Caller{contract: contract}, nil -} - -// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. -func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { - contract, err := bindIERC20(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20Transactor{contract: contract}, nil -} - -// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. -func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { - contract, err := bindIERC20(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20Filterer{contract: contract}, nil -} - -// bindIERC20 binds a generic wrapper to an already deployed contract. -func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20.Contract.contract.Transact(opts, method, params...) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "balanceOf", owner) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address owner) view returns(uint256) -func (_IERC20 *IERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { - return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20Session) Decimals() (uint8, error) { - return _IERC20.Contract.Decimals(&_IERC20.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_IERC20 *IERC20CallerSession) Decimals() (uint8, error) { - return _IERC20.Contract.Decimals(&_IERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20Caller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20Session) Name() (string, error) { - return _IERC20.Contract.Name(&_IERC20.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_IERC20 *IERC20CallerSession) Name() (string, error) { - return _IERC20.Contract.Name(&_IERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20Session) Symbol() (string, error) { - return _IERC20.Contract.Symbol(&_IERC20.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_IERC20 *IERC20CallerSession) Symbol() (string, error) { - return _IERC20.Contract.Symbol(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IERC20.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { - return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "approve", spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) -func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) -} - -// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. -type IERC20ApprovalIterator struct { - Event *IERC20Approval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20ApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Approval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20ApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20ApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Approval represents a Approval event raised by the IERC20 contract. -type IERC20Approval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { - event := new(IERC20Approval) - if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. -type IERC20TransferIterator struct { - Event *IERC20Transfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20TransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20Transfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20TransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20TransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20Transfer represents a Transfer event raised by the IERC20 contract. -type IERC20Transfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { - event := new(IERC20Transfer) - if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go b/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go deleted file mode 100644 index a3572ed2..00000000 --- a/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go +++ /dev/null @@ -1,650 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2router01 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2Router01MetaData contains all meta data concerning the IUniswapV2Router01 contract. -var IUniswapV2Router01MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2Router01ABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2Router01MetaData.ABI instead. -var IUniswapV2Router01ABI = IUniswapV2Router01MetaData.ABI - -// IUniswapV2Router01 is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Router01 struct { - IUniswapV2Router01Caller // Read-only binding to the contract - IUniswapV2Router01Transactor // Write-only binding to the contract - IUniswapV2Router01Filterer // Log filterer for contract events -} - -// IUniswapV2Router01Caller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2Router01Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2Router01Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2Router01Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router01Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2Router01Session struct { - Contract *IUniswapV2Router01 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router01CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2Router01CallerSession struct { - Contract *IUniswapV2Router01Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2Router01TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2Router01TransactorSession struct { - Contract *IUniswapV2Router01Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router01Raw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2Router01Raw struct { - Contract *IUniswapV2Router01 // Generic contract binding to access the raw methods on -} - -// IUniswapV2Router01CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2Router01CallerRaw struct { - Contract *IUniswapV2Router01Caller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2Router01TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2Router01TransactorRaw struct { - Contract *IUniswapV2Router01Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Router01 creates a new instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router01, error) { - contract, err := bindIUniswapV2Router01(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Router01{IUniswapV2Router01Caller: IUniswapV2Router01Caller{contract: contract}, IUniswapV2Router01Transactor: IUniswapV2Router01Transactor{contract: contract}, IUniswapV2Router01Filterer: IUniswapV2Router01Filterer{contract: contract}}, nil -} - -// NewIUniswapV2Router01Caller creates a new read-only instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router01Caller, error) { - contract, err := bindIUniswapV2Router01(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Caller{contract: contract}, nil -} - -// NewIUniswapV2Router01Transactor creates a new write-only instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router01Transactor, error) { - contract, err := bindIUniswapV2Router01(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Transactor{contract: contract}, nil -} - -// NewIUniswapV2Router01Filterer creates a new log filterer instance of IUniswapV2Router01, bound to a specific deployed contract. -func NewIUniswapV2Router01Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router01Filterer, error) { - contract, err := bindIUniswapV2Router01(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2Router01Filterer{contract: contract}, nil -} - -// bindIUniswapV2Router01 binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Router01(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2Router01MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router01 *IUniswapV2Router01CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router01.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.contract.Transact(opts, method, params...) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) WETH(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "WETH") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) WETH() (common.Address, error) { - return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) WETH() (common.Address, error) { - return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) Factory() (common.Address, error) { - return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Factory() (common.Address, error) { - return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsIn", amountOut, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsOut", amountIn, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router01.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) -} diff --git a/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go b/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go deleted file mode 100644 index 69969100..00000000 --- a/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go +++ /dev/null @@ -1,755 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv2router02 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV2Router02MetaData contains all meta data concerning the IUniswapV2Router02 contract. -var IUniswapV2Router02MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV2Router02ABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV2Router02MetaData.ABI instead. -var IUniswapV2Router02ABI = IUniswapV2Router02MetaData.ABI - -// IUniswapV2Router02 is an auto generated Go binding around an Ethereum contract. -type IUniswapV2Router02 struct { - IUniswapV2Router02Caller // Read-only binding to the contract - IUniswapV2Router02Transactor // Write-only binding to the contract - IUniswapV2Router02Filterer // Log filterer for contract events -} - -// IUniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV2Router02Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV2Router02Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV2Router02Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV2Router02Session struct { - Contract *IUniswapV2Router02 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV2Router02CallerSession struct { - Contract *IUniswapV2Router02Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV2Router02TransactorSession struct { - Contract *IUniswapV2Router02Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV2Router02Raw struct { - Contract *IUniswapV2Router02 // Generic contract binding to access the raw methods on -} - -// IUniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV2Router02CallerRaw struct { - Contract *IUniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV2Router02TransactorRaw struct { - Contract *IUniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV2Router02 creates a new instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router02, error) { - contract, err := bindIUniswapV2Router02(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV2Router02{IUniswapV2Router02Caller: IUniswapV2Router02Caller{contract: contract}, IUniswapV2Router02Transactor: IUniswapV2Router02Transactor{contract: contract}, IUniswapV2Router02Filterer: IUniswapV2Router02Filterer{contract: contract}}, nil -} - -// NewIUniswapV2Router02Caller creates a new read-only instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router02Caller, error) { - contract, err := bindIUniswapV2Router02(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Caller{contract: contract}, nil -} - -// NewIUniswapV2Router02Transactor creates a new write-only instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router02Transactor, error) { - contract, err := bindIUniswapV2Router02(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Transactor{contract: contract}, nil -} - -// NewIUniswapV2Router02Filterer creates a new log filterer instance of IUniswapV2Router02, bound to a specific deployed contract. -func NewIUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router02Filterer, error) { - contract, err := bindIUniswapV2Router02(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV2Router02Filterer{contract: contract}, nil -} - -// bindIUniswapV2Router02 binds a generic wrapper to an already deployed contract. -func bindIUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV2Router02MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV2Router02 *IUniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV2Router02.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.contract.Transact(opts, method, params...) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "WETH") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) WETH() (common.Address, error) { - return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) WETH() (common.Address, error) { - return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) Factory() (common.Address, error) { - return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() pure returns(address) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Factory() (common.Address, error) { - return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} diff --git a/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go b/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go deleted file mode 100644 index 5e2c9dc5..00000000 --- a/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go +++ /dev/null @@ -1,244 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iweth - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IWETHMetaData contains all meta data concerning the IWETH contract. -var IWETHMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IWETHABI is the input ABI used to generate the binding from. -// Deprecated: Use IWETHMetaData.ABI instead. -var IWETHABI = IWETHMetaData.ABI - -// IWETH is an auto generated Go binding around an Ethereum contract. -type IWETH struct { - IWETHCaller // Read-only binding to the contract - IWETHTransactor // Write-only binding to the contract - IWETHFilterer // Log filterer for contract events -} - -// IWETHCaller is an auto generated read-only Go binding around an Ethereum contract. -type IWETHCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETHTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IWETHTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETHFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IWETHFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IWETHSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IWETHSession struct { - Contract *IWETH // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWETHCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IWETHCallerSession struct { - Contract *IWETHCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IWETHTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IWETHTransactorSession struct { - Contract *IWETHTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IWETHRaw is an auto generated low-level Go binding around an Ethereum contract. -type IWETHRaw struct { - Contract *IWETH // Generic contract binding to access the raw methods on -} - -// IWETHCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IWETHCallerRaw struct { - Contract *IWETHCaller // Generic read-only contract binding to access the raw methods on -} - -// IWETHTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IWETHTransactorRaw struct { - Contract *IWETHTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIWETH creates a new instance of IWETH, bound to a specific deployed contract. -func NewIWETH(address common.Address, backend bind.ContractBackend) (*IWETH, error) { - contract, err := bindIWETH(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IWETH{IWETHCaller: IWETHCaller{contract: contract}, IWETHTransactor: IWETHTransactor{contract: contract}, IWETHFilterer: IWETHFilterer{contract: contract}}, nil -} - -// NewIWETHCaller creates a new read-only instance of IWETH, bound to a specific deployed contract. -func NewIWETHCaller(address common.Address, caller bind.ContractCaller) (*IWETHCaller, error) { - contract, err := bindIWETH(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IWETHCaller{contract: contract}, nil -} - -// NewIWETHTransactor creates a new write-only instance of IWETH, bound to a specific deployed contract. -func NewIWETHTransactor(address common.Address, transactor bind.ContractTransactor) (*IWETHTransactor, error) { - contract, err := bindIWETH(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IWETHTransactor{contract: contract}, nil -} - -// NewIWETHFilterer creates a new log filterer instance of IWETH, bound to a specific deployed contract. -func NewIWETHFilterer(address common.Address, filterer bind.ContractFilterer) (*IWETHFilterer, error) { - contract, err := bindIWETH(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IWETHFilterer{contract: contract}, nil -} - -// bindIWETH binds a generic wrapper to an already deployed contract. -func bindIWETH(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IWETHMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWETH *IWETHRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWETH.Contract.IWETHCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWETH *IWETHRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH.Contract.IWETHTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWETH *IWETHRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWETH.Contract.IWETHTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IWETH *IWETHCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IWETH.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IWETH *IWETHTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IWETH *IWETHTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IWETH.Contract.contract.Transact(opts, method, params...) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH *IWETHTransactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IWETH.contract.Transact(opts, "deposit") -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH *IWETHSession) Deposit() (*types.Transaction, error) { - return _IWETH.Contract.Deposit(&_IWETH.TransactOpts) -} - -// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. -// -// Solidity: function deposit() payable returns() -func (_IWETH *IWETHTransactorSession) Deposit() (*types.Transaction, error) { - return _IWETH.Contract.Deposit(&_IWETH.TransactOpts) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IWETH *IWETHTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { - return _IWETH.contract.Transact(opts, "transfer", to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IWETH *IWETHSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IWETH.Contract.Transfer(&_IWETH.TransactOpts, to, value) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address to, uint256 value) returns(bool) -func (_IWETH *IWETHTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { - return _IWETH.Contract.Transfer(&_IWETH.TransactOpts, to, value) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 ) returns() -func (_IWETH *IWETHTransactor) Withdraw(opts *bind.TransactOpts, arg0 *big.Int) (*types.Transaction, error) { - return _IWETH.contract.Transact(opts, "withdraw", arg0) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 ) returns() -func (_IWETH *IWETHSession) Withdraw(arg0 *big.Int) (*types.Transaction, error) { - return _IWETH.Contract.Withdraw(&_IWETH.TransactOpts, arg0) -} - -// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. -// -// Solidity: function withdraw(uint256 ) returns() -func (_IWETH *IWETHTransactorSession) Withdraw(arg0 *big.Int) (*types.Transaction, error) { - return _IWETH.Contract.Withdraw(&_IWETH.TransactOpts, arg0) -} diff --git a/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go b/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go deleted file mode 100644 index cb7868e2..00000000 --- a/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package safemath - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// SafeMathMetaData contains all meta data concerning the SafeMath contract. -var SafeMathMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209280478828a71436ad42fb262d99756ed7d7277ccde8fb7ef92c2abeb2d8f36164736f6c63430006060033", -} - -// SafeMathABI is the input ABI used to generate the binding from. -// Deprecated: Use SafeMathMetaData.ABI instead. -var SafeMathABI = SafeMathMetaData.ABI - -// SafeMathBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use SafeMathMetaData.Bin instead. -var SafeMathBin = SafeMathMetaData.Bin - -// DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it. -func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) { - parsed, err := SafeMathMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil -} - -// SafeMath is an auto generated Go binding around an Ethereum contract. -type SafeMath struct { - SafeMathCaller // Read-only binding to the contract - SafeMathTransactor // Write-only binding to the contract - SafeMathFilterer // Log filterer for contract events -} - -// SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract. -type SafeMathCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract. -type SafeMathTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type SafeMathFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// SafeMathSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type SafeMathSession struct { - Contract *SafeMath // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type SafeMathCallerSession struct { - Contract *SafeMathCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type SafeMathTransactorSession struct { - Contract *SafeMathTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract. -type SafeMathRaw struct { - Contract *SafeMath // Generic contract binding to access the raw methods on -} - -// SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type SafeMathCallerRaw struct { - Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on -} - -// SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type SafeMathTransactorRaw struct { - Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract. -func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) { - contract, err := bindSafeMath(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil -} - -// NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) { - contract, err := bindSafeMath(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &SafeMathCaller{contract: contract}, nil -} - -// NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) { - contract, err := bindSafeMath(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &SafeMathTransactor{contract: contract}, nil -} - -// NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract. -func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) { - contract, err := bindSafeMath(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &SafeMathFilterer{contract: contract}, nil -} - -// bindSafeMath binds a generic wrapper to an already deployed contract. -func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := SafeMathMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _SafeMath.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _SafeMath.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _SafeMath.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go b/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go deleted file mode 100644 index ea7744ae..00000000 --- a/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapv2library - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapV2LibraryMetaData contains all meta data concerning the UniswapV2Library contract. -var UniswapV2LibraryMetaData = &bind.MetaData{ - ABI: "[]", - Bin: "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208421bd92ba607f7025ef11dd3ba3c30a46c62559adc890b6863b512efbd8984464736f6c63430006060033", -} - -// UniswapV2LibraryABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapV2LibraryMetaData.ABI instead. -var UniswapV2LibraryABI = UniswapV2LibraryMetaData.ABI - -// UniswapV2LibraryBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapV2LibraryMetaData.Bin instead. -var UniswapV2LibraryBin = UniswapV2LibraryMetaData.Bin - -// DeployUniswapV2Library deploys a new Ethereum contract, binding an instance of UniswapV2Library to it. -func DeployUniswapV2Library(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2Library, error) { - parsed, err := UniswapV2LibraryMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2LibraryBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapV2Library{UniswapV2LibraryCaller: UniswapV2LibraryCaller{contract: contract}, UniswapV2LibraryTransactor: UniswapV2LibraryTransactor{contract: contract}, UniswapV2LibraryFilterer: UniswapV2LibraryFilterer{contract: contract}}, nil -} - -// UniswapV2Library is an auto generated Go binding around an Ethereum contract. -type UniswapV2Library struct { - UniswapV2LibraryCaller // Read-only binding to the contract - UniswapV2LibraryTransactor // Write-only binding to the contract - UniswapV2LibraryFilterer // Log filterer for contract events -} - -// UniswapV2LibraryCaller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapV2LibraryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2LibraryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapV2LibraryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2LibraryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapV2LibraryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2LibrarySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapV2LibrarySession struct { - Contract *UniswapV2Library // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2LibraryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapV2LibraryCallerSession struct { - Contract *UniswapV2LibraryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapV2LibraryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapV2LibraryTransactorSession struct { - Contract *UniswapV2LibraryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2LibraryRaw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapV2LibraryRaw struct { - Contract *UniswapV2Library // Generic contract binding to access the raw methods on -} - -// UniswapV2LibraryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapV2LibraryCallerRaw struct { - Contract *UniswapV2LibraryCaller // Generic read-only contract binding to access the raw methods on -} - -// UniswapV2LibraryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapV2LibraryTransactorRaw struct { - Contract *UniswapV2LibraryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapV2Library creates a new instance of UniswapV2Library, bound to a specific deployed contract. -func NewUniswapV2Library(address common.Address, backend bind.ContractBackend) (*UniswapV2Library, error) { - contract, err := bindUniswapV2Library(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapV2Library{UniswapV2LibraryCaller: UniswapV2LibraryCaller{contract: contract}, UniswapV2LibraryTransactor: UniswapV2LibraryTransactor{contract: contract}, UniswapV2LibraryFilterer: UniswapV2LibraryFilterer{contract: contract}}, nil -} - -// NewUniswapV2LibraryCaller creates a new read-only instance of UniswapV2Library, bound to a specific deployed contract. -func NewUniswapV2LibraryCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2LibraryCaller, error) { - contract, err := bindUniswapV2Library(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapV2LibraryCaller{contract: contract}, nil -} - -// NewUniswapV2LibraryTransactor creates a new write-only instance of UniswapV2Library, bound to a specific deployed contract. -func NewUniswapV2LibraryTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2LibraryTransactor, error) { - contract, err := bindUniswapV2Library(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapV2LibraryTransactor{contract: contract}, nil -} - -// NewUniswapV2LibraryFilterer creates a new log filterer instance of UniswapV2Library, bound to a specific deployed contract. -func NewUniswapV2LibraryFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2LibraryFilterer, error) { - contract, err := bindUniswapV2Library(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapV2LibraryFilterer{contract: contract}, nil -} - -// bindUniswapV2Library binds a generic wrapper to an already deployed contract. -func bindUniswapV2Library(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapV2LibraryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Library *UniswapV2LibraryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Library.Contract.UniswapV2LibraryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Library *UniswapV2LibraryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Library.Contract.UniswapV2LibraryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Library *UniswapV2LibraryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Library.Contract.UniswapV2LibraryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Library *UniswapV2LibraryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Library.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Library *UniswapV2LibraryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Library.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Library *UniswapV2LibraryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Library.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go b/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go deleted file mode 100644 index 42fa8489..00000000 --- a/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go +++ /dev/null @@ -1,798 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package uniswapv2router02 - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// UniswapV2Router02MetaData contains all meta data concerning the UniswapV2Router02 contract. -var UniswapV2Router02MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200573e3803806200573e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155b762000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb528061444a528061448d52806147ed52806149ce5280614f49528061502a52806150aa52506155b76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220d767e6d3ae379997e75048713bb6ac2dcd987d96aa9e28fe4d4f219ea31a4f8864736f6c63430006060033", -} - -// UniswapV2Router02ABI is the input ABI used to generate the binding from. -// Deprecated: Use UniswapV2Router02MetaData.ABI instead. -var UniswapV2Router02ABI = UniswapV2Router02MetaData.ABI - -// UniswapV2Router02Bin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use UniswapV2Router02MetaData.Bin instead. -var UniswapV2Router02Bin = UniswapV2Router02MetaData.Bin - -// DeployUniswapV2Router02 deploys a new Ethereum contract, binding an instance of UniswapV2Router02 to it. -func DeployUniswapV2Router02(auth *bind.TransactOpts, backend bind.ContractBackend, _factory common.Address, _WETH common.Address) (common.Address, *types.Transaction, *UniswapV2Router02, error) { - parsed, err := UniswapV2Router02MetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2Router02Bin), backend, _factory, _WETH) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &UniswapV2Router02{UniswapV2Router02Caller: UniswapV2Router02Caller{contract: contract}, UniswapV2Router02Transactor: UniswapV2Router02Transactor{contract: contract}, UniswapV2Router02Filterer: UniswapV2Router02Filterer{contract: contract}}, nil -} - -// UniswapV2Router02 is an auto generated Go binding around an Ethereum contract. -type UniswapV2Router02 struct { - UniswapV2Router02Caller // Read-only binding to the contract - UniswapV2Router02Transactor // Write-only binding to the contract - UniswapV2Router02Filterer // Log filterer for contract events -} - -// UniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. -type UniswapV2Router02Caller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. -type UniswapV2Router02Transactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. -type UniswapV2Router02Filterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// UniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type UniswapV2Router02Session struct { - Contract *UniswapV2Router02 // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type UniswapV2Router02CallerSession struct { - Contract *UniswapV2Router02Caller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// UniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type UniswapV2Router02TransactorSession struct { - Contract *UniswapV2Router02Transactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// UniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. -type UniswapV2Router02Raw struct { - Contract *UniswapV2Router02 // Generic contract binding to access the raw methods on -} - -// UniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type UniswapV2Router02CallerRaw struct { - Contract *UniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on -} - -// UniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type UniswapV2Router02TransactorRaw struct { - Contract *UniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on -} - -// NewUniswapV2Router02 creates a new instance of UniswapV2Router02, bound to a specific deployed contract. -func NewUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*UniswapV2Router02, error) { - contract, err := bindUniswapV2Router02(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &UniswapV2Router02{UniswapV2Router02Caller: UniswapV2Router02Caller{contract: contract}, UniswapV2Router02Transactor: UniswapV2Router02Transactor{contract: contract}, UniswapV2Router02Filterer: UniswapV2Router02Filterer{contract: contract}}, nil -} - -// NewUniswapV2Router02Caller creates a new read-only instance of UniswapV2Router02, bound to a specific deployed contract. -func NewUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*UniswapV2Router02Caller, error) { - contract, err := bindUniswapV2Router02(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &UniswapV2Router02Caller{contract: contract}, nil -} - -// NewUniswapV2Router02Transactor creates a new write-only instance of UniswapV2Router02, bound to a specific deployed contract. -func NewUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2Router02Transactor, error) { - contract, err := bindUniswapV2Router02(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &UniswapV2Router02Transactor{contract: contract}, nil -} - -// NewUniswapV2Router02Filterer creates a new log filterer instance of UniswapV2Router02, bound to a specific deployed contract. -func NewUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2Router02Filterer, error) { - contract, err := bindUniswapV2Router02(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &UniswapV2Router02Filterer{contract: contract}, nil -} - -// bindUniswapV2Router02 binds a generic wrapper to an already deployed contract. -func bindUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := UniswapV2Router02MetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Router02 *UniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Router02.Contract.UniswapV2Router02Caller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Router02 *UniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.UniswapV2Router02Transactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Router02 *UniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.UniswapV2Router02Transactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_UniswapV2Router02 *UniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _UniswapV2Router02.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_UniswapV2Router02 *UniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_UniswapV2Router02 *UniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.contract.Transact(opts, method, params...) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "WETH") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02Session) WETH() (common.Address, error) { - return _UniswapV2Router02.Contract.WETH(&_UniswapV2Router02.CallOpts) -} - -// WETH is a free data retrieval call binding the contract method 0xad5c4648. -// -// Solidity: function WETH() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) WETH() (common.Address, error) { - return _UniswapV2Router02.Contract.WETH(&_UniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02Session) Factory() (common.Address, error) { - return _UniswapV2Router02.Contract.Factory(&_UniswapV2Router02.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) Factory() (common.Address, error) { - return _UniswapV2Router02.Contract.Factory(&_UniswapV2Router02.CallOpts) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountIn(&_UniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. -// -// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountIn(&_UniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountOut(&_UniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. -// -// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountOut(&_UniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountsIn(&_UniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. -// -// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountsIn(&_UniswapV2Router02.CallOpts, amountOut, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) - - if err != nil { - return *new([]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - - return out0, err - -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountsOut(&_UniswapV2Router02.CallOpts, amountIn, path) -} - -// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. -// -// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { - return _UniswapV2Router02.Contract.GetAmountsOut(&_UniswapV2Router02.CallOpts, amountIn, path) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - var out []interface{} - err := _UniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.Quote(&_UniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// Quote is a free data retrieval call binding the contract method 0xad615dec. -// -// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { - return _UniswapV2Router02.Contract.Quote(&_UniswapV2Router02.CallOpts, amountA, reserveA, reserveB) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.AddLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. -// -// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.AddLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.AddLiquidityETH(&_UniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. -// -// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.AddLiquidityETH(&_UniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. -// -// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETH(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. -// -// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETH(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. -// -// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. -// -// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. -// -// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. -// -// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapETHForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. -// -// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapETHForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactETHForTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. -// -// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactETHForTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. -// -// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForETH(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. -// -// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForETH(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. -// -// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. -// -// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. -// -// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapTokensForExactETH(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. -// -// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapTokensForExactETH(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapTokensForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. -// -// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { - return _UniswapV2Router02.Contract.SwapTokensForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_UniswapV2Router02 *UniswapV2Router02Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { - return _UniswapV2Router02.contract.RawTransact(opts, nil) // calldata is disallowed for receive function -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_UniswapV2Router02 *UniswapV2Router02Session) Receive() (*types.Transaction, error) { - return _UniswapV2Router02.Contract.Receive(&_UniswapV2Router02.TransactOpts) -} - -// Receive is a paid mutator transaction binding the contract receive function. -// -// Solidity: receive() payable returns() -func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) Receive() (*types.Transaction, error) { - return _UniswapV2Router02.Contract.Receive(&_UniswapV2Router02.TransactOpts) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go b/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go deleted file mode 100644 index cefe4347..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3swapcallback - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3SwapCallbackMetaData contains all meta data concerning the IUniswapV3SwapCallback contract. -var IUniswapV3SwapCallbackMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV3SwapCallbackABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3SwapCallbackMetaData.ABI instead. -var IUniswapV3SwapCallbackABI = IUniswapV3SwapCallbackMetaData.ABI - -// IUniswapV3SwapCallback is an auto generated Go binding around an Ethereum contract. -type IUniswapV3SwapCallback struct { - IUniswapV3SwapCallbackCaller // Read-only binding to the contract - IUniswapV3SwapCallbackTransactor // Write-only binding to the contract - IUniswapV3SwapCallbackFilterer // Log filterer for contract events -} - -// IUniswapV3SwapCallbackCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3SwapCallbackCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3SwapCallbackTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3SwapCallbackTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3SwapCallbackFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3SwapCallbackFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3SwapCallbackSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3SwapCallbackSession struct { - Contract *IUniswapV3SwapCallback // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3SwapCallbackCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3SwapCallbackCallerSession struct { - Contract *IUniswapV3SwapCallbackCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3SwapCallbackTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3SwapCallbackTransactorSession struct { - Contract *IUniswapV3SwapCallbackTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3SwapCallbackRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3SwapCallbackRaw struct { - Contract *IUniswapV3SwapCallback // Generic contract binding to access the raw methods on -} - -// IUniswapV3SwapCallbackCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3SwapCallbackCallerRaw struct { - Contract *IUniswapV3SwapCallbackCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3SwapCallbackTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3SwapCallbackTransactorRaw struct { - Contract *IUniswapV3SwapCallbackTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3SwapCallback creates a new instance of IUniswapV3SwapCallback, bound to a specific deployed contract. -func NewIUniswapV3SwapCallback(address common.Address, backend bind.ContractBackend) (*IUniswapV3SwapCallback, error) { - contract, err := bindIUniswapV3SwapCallback(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3SwapCallback{IUniswapV3SwapCallbackCaller: IUniswapV3SwapCallbackCaller{contract: contract}, IUniswapV3SwapCallbackTransactor: IUniswapV3SwapCallbackTransactor{contract: contract}, IUniswapV3SwapCallbackFilterer: IUniswapV3SwapCallbackFilterer{contract: contract}}, nil -} - -// NewIUniswapV3SwapCallbackCaller creates a new read-only instance of IUniswapV3SwapCallback, bound to a specific deployed contract. -func NewIUniswapV3SwapCallbackCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3SwapCallbackCaller, error) { - contract, err := bindIUniswapV3SwapCallback(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3SwapCallbackCaller{contract: contract}, nil -} - -// NewIUniswapV3SwapCallbackTransactor creates a new write-only instance of IUniswapV3SwapCallback, bound to a specific deployed contract. -func NewIUniswapV3SwapCallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3SwapCallbackTransactor, error) { - contract, err := bindIUniswapV3SwapCallback(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3SwapCallbackTransactor{contract: contract}, nil -} - -// NewIUniswapV3SwapCallbackFilterer creates a new log filterer instance of IUniswapV3SwapCallback, bound to a specific deployed contract. -func NewIUniswapV3SwapCallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3SwapCallbackFilterer, error) { - contract, err := bindIUniswapV3SwapCallback(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3SwapCallbackFilterer{contract: contract}, nil -} - -// bindIUniswapV3SwapCallback binds a generic wrapper to an already deployed contract. -func bindIUniswapV3SwapCallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3SwapCallbackMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3SwapCallback.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.contract.Transact(opts, method, params...) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.UniswapV3SwapCallback(&_IUniswapV3SwapCallback.TransactOpts, amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3SwapCallback.Contract.UniswapV3SwapCallback(&_IUniswapV3SwapCallback.TransactOpts, amount0Delta, amount1Delta, data) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go deleted file mode 100644 index 048c69bd..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go +++ /dev/null @@ -1,807 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3factory - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3FactoryMetaData contains all meta data concerning the IUniswapV3Factory contract. -var IUniswapV3FactoryMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV3FactoryABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3FactoryMetaData.ABI instead. -var IUniswapV3FactoryABI = IUniswapV3FactoryMetaData.ABI - -// IUniswapV3Factory is an auto generated Go binding around an Ethereum contract. -type IUniswapV3Factory struct { - IUniswapV3FactoryCaller // Read-only binding to the contract - IUniswapV3FactoryTransactor // Write-only binding to the contract - IUniswapV3FactoryFilterer // Log filterer for contract events -} - -// IUniswapV3FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3FactoryCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3FactoryTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3FactoryFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3FactorySession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3FactorySession struct { - Contract *IUniswapV3Factory // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3FactoryCallerSession struct { - Contract *IUniswapV3FactoryCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3FactoryTransactorSession struct { - Contract *IUniswapV3FactoryTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3FactoryRaw struct { - Contract *IUniswapV3Factory // Generic contract binding to access the raw methods on -} - -// IUniswapV3FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3FactoryCallerRaw struct { - Contract *IUniswapV3FactoryCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3FactoryTransactorRaw struct { - Contract *IUniswapV3FactoryTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3Factory creates a new instance of IUniswapV3Factory, bound to a specific deployed contract. -func NewIUniswapV3Factory(address common.Address, backend bind.ContractBackend) (*IUniswapV3Factory, error) { - contract, err := bindIUniswapV3Factory(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3Factory{IUniswapV3FactoryCaller: IUniswapV3FactoryCaller{contract: contract}, IUniswapV3FactoryTransactor: IUniswapV3FactoryTransactor{contract: contract}, IUniswapV3FactoryFilterer: IUniswapV3FactoryFilterer{contract: contract}}, nil -} - -// NewIUniswapV3FactoryCaller creates a new read-only instance of IUniswapV3Factory, bound to a specific deployed contract. -func NewIUniswapV3FactoryCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3FactoryCaller, error) { - contract, err := bindIUniswapV3Factory(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryCaller{contract: contract}, nil -} - -// NewIUniswapV3FactoryTransactor creates a new write-only instance of IUniswapV3Factory, bound to a specific deployed contract. -func NewIUniswapV3FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3FactoryTransactor, error) { - contract, err := bindIUniswapV3Factory(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryTransactor{contract: contract}, nil -} - -// NewIUniswapV3FactoryFilterer creates a new log filterer instance of IUniswapV3Factory, bound to a specific deployed contract. -func NewIUniswapV3FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3FactoryFilterer, error) { - contract, err := bindIUniswapV3Factory(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryFilterer{contract: contract}, nil -} - -// bindIUniswapV3Factory binds a generic wrapper to an already deployed contract. -func bindIUniswapV3Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3FactoryMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3Factory.Contract.IUniswapV3FactoryCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3Factory *IUniswapV3FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3Factory.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.contract.Transact(opts, method, params...) -} - -// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. -// -// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) -func (_IUniswapV3Factory *IUniswapV3FactoryCaller) FeeAmountTickSpacing(opts *bind.CallOpts, fee *big.Int) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Factory.contract.Call(opts, &out, "feeAmountTickSpacing", fee) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. -// -// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) -func (_IUniswapV3Factory *IUniswapV3FactorySession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { - return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) -} - -// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. -// -// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) -func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { - return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) -} - -// GetPool is a free data retrieval call binding the contract method 0x1698ee82. -// -// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryCaller) GetPool(opts *bind.CallOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { - var out []interface{} - err := _IUniswapV3Factory.contract.Call(opts, &out, "getPool", tokenA, tokenB, fee) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GetPool is a free data retrieval call binding the contract method 0x1698ee82. -// -// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactorySession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { - return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) -} - -// GetPool is a free data retrieval call binding the contract method 0x1698ee82. -// -// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { - return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_IUniswapV3Factory *IUniswapV3FactoryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3Factory.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_IUniswapV3Factory *IUniswapV3FactorySession) Owner() (common.Address, error) { - return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) Owner() (common.Address, error) { - return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) -} - -// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. -// -// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) CreatePool(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.contract.Transact(opts, "createPool", tokenA, tokenB, fee) -} - -// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. -// -// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactorySession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) -} - -// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. -// -// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) -} - -// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. -// -// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() -func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) EnableFeeAmount(opts *bind.TransactOpts, fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.contract.Transact(opts, "enableFeeAmount", fee, tickSpacing) -} - -// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. -// -// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() -func (_IUniswapV3Factory *IUniswapV3FactorySession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) -} - -// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. -// -// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() -func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) -} - -// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. -// -// Solidity: function setOwner(address _owner) returns() -func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) SetOwner(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) { - return _IUniswapV3Factory.contract.Transact(opts, "setOwner", _owner) -} - -// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. -// -// Solidity: function setOwner(address _owner) returns() -func (_IUniswapV3Factory *IUniswapV3FactorySession) SetOwner(_owner common.Address) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) -} - -// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. -// -// Solidity: function setOwner(address _owner) returns() -func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) SetOwner(_owner common.Address) (*types.Transaction, error) { - return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) -} - -// IUniswapV3FactoryFeeAmountEnabledIterator is returned from FilterFeeAmountEnabled and is used to iterate over the raw logs and unpacked data for FeeAmountEnabled events raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryFeeAmountEnabledIterator struct { - Event *IUniswapV3FactoryFeeAmountEnabled // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryFeeAmountEnabled) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryFeeAmountEnabled) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3FactoryFeeAmountEnabled represents a FeeAmountEnabled event raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryFeeAmountEnabled struct { - Fee *big.Int - TickSpacing *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFeeAmountEnabled is a free log retrieval operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. -// -// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterFeeAmountEnabled(opts *bind.FilterOpts, fee []*big.Int, tickSpacing []*big.Int) (*IUniswapV3FactoryFeeAmountEnabledIterator, error) { - - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - var tickSpacingRule []interface{} - for _, tickSpacingItem := range tickSpacing { - tickSpacingRule = append(tickSpacingRule, tickSpacingItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryFeeAmountEnabledIterator{contract: _IUniswapV3Factory.contract, event: "FeeAmountEnabled", logs: logs, sub: sub}, nil -} - -// WatchFeeAmountEnabled is a free log subscription operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. -// -// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchFeeAmountEnabled(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryFeeAmountEnabled, fee []*big.Int, tickSpacing []*big.Int) (event.Subscription, error) { - - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - var tickSpacingRule []interface{} - for _, tickSpacingItem := range tickSpacing { - tickSpacingRule = append(tickSpacingRule, tickSpacingItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3FactoryFeeAmountEnabled) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFeeAmountEnabled is a log parse operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. -// -// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseFeeAmountEnabled(log types.Log) (*IUniswapV3FactoryFeeAmountEnabled, error) { - event := new(IUniswapV3FactoryFeeAmountEnabled) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3FactoryOwnerChangedIterator is returned from FilterOwnerChanged and is used to iterate over the raw logs and unpacked data for OwnerChanged events raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryOwnerChangedIterator struct { - Event *IUniswapV3FactoryOwnerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3FactoryOwnerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryOwnerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryOwnerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3FactoryOwnerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3FactoryOwnerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3FactoryOwnerChanged represents a OwnerChanged event raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryOwnerChanged struct { - OldOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnerChanged is a free log retrieval operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. -// -// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterOwnerChanged(opts *bind.FilterOpts, oldOwner []common.Address, newOwner []common.Address) (*IUniswapV3FactoryOwnerChangedIterator, error) { - - var oldOwnerRule []interface{} - for _, oldOwnerItem := range oldOwner { - oldOwnerRule = append(oldOwnerRule, oldOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryOwnerChangedIterator{contract: _IUniswapV3Factory.contract, event: "OwnerChanged", logs: logs, sub: sub}, nil -} - -// WatchOwnerChanged is a free log subscription operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. -// -// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchOwnerChanged(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryOwnerChanged, oldOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var oldOwnerRule []interface{} - for _, oldOwnerItem := range oldOwner { - oldOwnerRule = append(oldOwnerRule, oldOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3FactoryOwnerChanged) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnerChanged is a log parse operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. -// -// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseOwnerChanged(log types.Log) (*IUniswapV3FactoryOwnerChanged, error) { - event := new(IUniswapV3FactoryOwnerChanged) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3FactoryPoolCreatedIterator is returned from FilterPoolCreated and is used to iterate over the raw logs and unpacked data for PoolCreated events raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryPoolCreatedIterator struct { - Event *IUniswapV3FactoryPoolCreated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3FactoryPoolCreatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryPoolCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3FactoryPoolCreated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3FactoryPoolCreatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3FactoryPoolCreatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3FactoryPoolCreated represents a PoolCreated event raised by the IUniswapV3Factory contract. -type IUniswapV3FactoryPoolCreated struct { - Token0 common.Address - Token1 common.Address - Fee *big.Int - TickSpacing *big.Int - Pool common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterPoolCreated is a free log retrieval operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. -// -// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterPoolCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address, fee []*big.Int) (*IUniswapV3FactoryPoolCreatedIterator, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) - if err != nil { - return nil, err - } - return &IUniswapV3FactoryPoolCreatedIterator{contract: _IUniswapV3Factory.contract, event: "PoolCreated", logs: logs, sub: sub}, nil -} - -// WatchPoolCreated is a free log subscription operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. -// -// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchPoolCreated(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryPoolCreated, token0 []common.Address, token1 []common.Address, fee []*big.Int) (event.Subscription, error) { - - var token0Rule []interface{} - for _, token0Item := range token0 { - token0Rule = append(token0Rule, token0Item) - } - var token1Rule []interface{} - for _, token1Item := range token1 { - token1Rule = append(token1Rule, token1Item) - } - var feeRule []interface{} - for _, feeItem := range fee { - feeRule = append(feeRule, feeItem) - } - - logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3FactoryPoolCreated) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParsePoolCreated is a log parse operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. -// -// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) -func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParsePoolCreated(log types.Log) (*IUniswapV3FactoryPoolCreated, error) { - event := new(IUniswapV3FactoryPoolCreated) - if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go b/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go deleted file mode 100644 index 9a6f17ab..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go +++ /dev/null @@ -1,2455 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3pool - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolMetaData contains all meta data concerning the IUniswapV3Pool contract. -var IUniswapV3PoolMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolMetaData.ABI instead. -var IUniswapV3PoolABI = IUniswapV3PoolMetaData.ABI - -// IUniswapV3Pool is an auto generated Go binding around an Ethereum contract. -type IUniswapV3Pool struct { - IUniswapV3PoolCaller // Read-only binding to the contract - IUniswapV3PoolTransactor // Write-only binding to the contract - IUniswapV3PoolFilterer // Log filterer for contract events -} - -// IUniswapV3PoolCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolSession struct { - Contract *IUniswapV3Pool // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolCallerSession struct { - Contract *IUniswapV3PoolCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolTransactorSession struct { - Contract *IUniswapV3PoolTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolRaw struct { - Contract *IUniswapV3Pool // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolCallerRaw struct { - Contract *IUniswapV3PoolCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolTransactorRaw struct { - Contract *IUniswapV3PoolTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3Pool creates a new instance of IUniswapV3Pool, bound to a specific deployed contract. -func NewIUniswapV3Pool(address common.Address, backend bind.ContractBackend) (*IUniswapV3Pool, error) { - contract, err := bindIUniswapV3Pool(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3Pool{IUniswapV3PoolCaller: IUniswapV3PoolCaller{contract: contract}, IUniswapV3PoolTransactor: IUniswapV3PoolTransactor{contract: contract}, IUniswapV3PoolFilterer: IUniswapV3PoolFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolCaller creates a new read-only instance of IUniswapV3Pool, bound to a specific deployed contract. -func NewIUniswapV3PoolCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolCaller, error) { - contract, err := bindIUniswapV3Pool(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolTransactor creates a new write-only instance of IUniswapV3Pool, bound to a specific deployed contract. -func NewIUniswapV3PoolTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolTransactor, error) { - contract, err := bindIUniswapV3Pool(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolFilterer creates a new log filterer instance of IUniswapV3Pool, bound to a specific deployed contract. -func NewIUniswapV3PoolFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolFilterer, error) { - contract, err := bindIUniswapV3Pool(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolFilterer{contract: contract}, nil -} - -// bindIUniswapV3Pool binds a generic wrapper to an already deployed contract. -func bindIUniswapV3Pool(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3Pool *IUniswapV3PoolRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3Pool.Contract.IUniswapV3PoolCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3Pool *IUniswapV3PoolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3Pool *IUniswapV3PoolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3Pool *IUniswapV3PoolCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3Pool.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.contract.Transact(opts, method, params...) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Factory() (common.Address, error) { - return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Factory() (common.Address, error) { - return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "fee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Fee() (*big.Int, error) { - return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Fee() (*big.Int, error) { - return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal0X128") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal0X128() (*big.Int, error) { - return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { - return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal1X128") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal1X128() (*big.Int, error) { - return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { - return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "liquidity") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Liquidity() (*big.Int, error) { - return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Liquidity() (*big.Int, error) { - return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "maxLiquidityPerTick") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolSession) MaxLiquidityPerTick() (*big.Int, error) { - return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) MaxLiquidityPerTick() (*big.Int, error) { - return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "observations", index) - - outstruct := new(struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) - outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) - - return *outstruct, err - -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Observations(index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observations(index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "observe", secondsAgos) - - outstruct := new(struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) - - return *outstruct, err - -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Observe(secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observe(secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "positions", key) - - outstruct := new(struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) - - return *outstruct, err - -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Positions(key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Positions(key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) ProtocolFees(opts *bind.CallOpts) (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "protocolFees") - - outstruct := new(struct { - Token0 *big.Int - Token1 *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return *outstruct, err - -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) ProtocolFees() (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) ProtocolFees() (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Slot0(opts *bind.CallOpts) (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "slot0") - - outstruct := new(struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) - outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) - outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) - outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) - outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) - - return *outstruct, err - -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Slot0() (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Slot0() (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) - - outstruct := new(struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 - }) - if err != nil { - return *outstruct, err - } - - outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) - - return *outstruct, err - -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3Pool *IUniswapV3PoolSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "tickBitmap", wordPosition) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolSession) TickBitmap(wordPosition int16) (*big.Int, error) { - return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { - return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "tickSpacing") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3Pool *IUniswapV3PoolSession) TickSpacing() (*big.Int, error) { - return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickSpacing() (*big.Int, error) { - return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "ticks", tick) - - outstruct := new(struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) - outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) - outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) - - return *outstruct, err - -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Ticks(tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Ticks(tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token0(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "token0") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Token0() (common.Address, error) { - return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token0() (common.Address, error) { - return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token1(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3Pool.contract.Call(opts, &out, "token1") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Token1() (common.Address, error) { - return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token1() (common.Address, error) { - return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "burn", tickLower, tickUpper, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "flash", recipient, amount0, amount1, data) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3Pool *IUniswapV3PoolSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3Pool *IUniswapV3PoolSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "initialize", sqrtPriceX96) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3Pool *IUniswapV3PoolSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3Pool *IUniswapV3PoolSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} - -// IUniswapV3PoolBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolBurnIterator struct { - Event *IUniswapV3PoolBurn // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolBurnIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolBurnIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolBurnIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolBurn represents a Burn event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolBurn struct { - Owner common.Address - TickLower *big.Int - TickUpper *big.Int - Amount *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolBurnIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolBurnIterator{contract: _IUniswapV3Pool.contract, event: "Burn", logs: logs, sub: sub}, nil -} - -// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolBurn) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolBurn, error) { - event := new(IUniswapV3PoolBurn) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolCollectIterator struct { - Event *IUniswapV3PoolCollect // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolCollectIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolCollectIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolCollectIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolCollect represents a Collect event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolCollect struct { - Owner common.Address - Recipient common.Address - TickLower *big.Int - TickUpper *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolCollectIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolCollectIterator{contract: _IUniswapV3Pool.contract, event: "Collect", logs: logs, sub: sub}, nil -} - -// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolCollect) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolCollect, error) { - event := new(IUniswapV3PoolCollect) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolCollectProtocolIterator struct { - Event *IUniswapV3PoolCollectProtocol // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolCollectProtocolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolCollectProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolCollectProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolCollectProtocolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolCollectProtocolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolCollectProtocol represents a CollectProtocol event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolCollectProtocol struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolCollectProtocolIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolCollectProtocolIterator{contract: _IUniswapV3Pool.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil -} - -// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolCollectProtocol) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolCollectProtocol, error) { - event := new(IUniswapV3PoolCollectProtocol) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolFlashIterator struct { - Event *IUniswapV3PoolFlash // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolFlashIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolFlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolFlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolFlashIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolFlashIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolFlash represents a Flash event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolFlash struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - Paid0 *big.Int - Paid1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolFlashIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolFlashIterator{contract: _IUniswapV3Pool.contract, event: "Flash", logs: logs, sub: sub}, nil -} - -// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolFlash) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolFlash, error) { - event := new(IUniswapV3PoolFlash) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolIncreaseObservationCardinalityNextIterator struct { - Event *IUniswapV3PoolIncreaseObservationCardinalityNext // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolIncreaseObservationCardinalityNext) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolIncreaseObservationCardinalityNext) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolIncreaseObservationCardinalityNext struct { - ObservationCardinalityNextOld uint16 - ObservationCardinalityNextNew uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolIncreaseObservationCardinalityNextIterator, error) { - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") - if err != nil { - return nil, err - } - return &IUniswapV3PoolIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3Pool.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil -} - -// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolIncreaseObservationCardinalityNext) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolIncreaseObservationCardinalityNext) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolIncreaseObservationCardinalityNext, error) { - event := new(IUniswapV3PoolIncreaseObservationCardinalityNext) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolInitializeIterator struct { - Event *IUniswapV3PoolInitialize // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolInitializeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolInitialize) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolInitialize) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolInitializeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolInitializeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolInitialize represents a Initialize event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolInitialize struct { - SqrtPriceX96 *big.Int - Tick *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolInitializeIterator, error) { - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Initialize") - if err != nil { - return nil, err - } - return &IUniswapV3PoolInitializeIterator{contract: _IUniswapV3Pool.contract, event: "Initialize", logs: logs, sub: sub}, nil -} - -// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolInitialize) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Initialize") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolInitialize) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolInitialize, error) { - event := new(IUniswapV3PoolInitialize) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolMintIterator struct { - Event *IUniswapV3PoolMint // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolMintIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolMintIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolMintIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolMint represents a Mint event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolMint struct { - Sender common.Address - Owner common.Address - TickLower *big.Int - TickUpper *big.Int - Amount *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolMintIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolMintIterator{contract: _IUniswapV3Pool.contract, event: "Mint", logs: logs, sub: sub}, nil -} - -// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolMint) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseMint(log types.Log) (*IUniswapV3PoolMint, error) { - event := new(IUniswapV3PoolMint) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolSetFeeProtocolIterator struct { - Event *IUniswapV3PoolSetFeeProtocol // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolSetFeeProtocolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolSetFeeProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolSetFeeProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolSetFeeProtocolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolSetFeeProtocolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolSetFeeProtocol struct { - FeeProtocol0Old uint8 - FeeProtocol1Old uint8 - FeeProtocol0New uint8 - FeeProtocol1New uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolSetFeeProtocolIterator, error) { - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "SetFeeProtocol") - if err != nil { - return nil, err - } - return &IUniswapV3PoolSetFeeProtocolIterator{contract: _IUniswapV3Pool.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil -} - -// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSetFeeProtocol) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "SetFeeProtocol") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolSetFeeProtocol) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolSetFeeProtocol, error) { - event := new(IUniswapV3PoolSetFeeProtocol) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3Pool contract. -type IUniswapV3PoolSwapIterator struct { - Event *IUniswapV3PoolSwap // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolSwapIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolSwapIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolSwapIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolSwap represents a Swap event raised by the IUniswapV3Pool contract. -type IUniswapV3PoolSwap struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - SqrtPriceX96 *big.Int - Liquidity *big.Int - Tick *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolSwapIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolSwapIterator{contract: _IUniswapV3Pool.contract, event: "Swap", logs: logs, sub: sub}, nil -} - -// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolSwap) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolSwap, error) { - event := new(IUniswapV3PoolSwap) - if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go deleted file mode 100644 index faa639bc..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go +++ /dev/null @@ -1,328 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolactions - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolActionsMetaData contains all meta data concerning the IUniswapV3PoolActions contract. -var IUniswapV3PoolActionsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolActionsABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolActionsMetaData.ABI instead. -var IUniswapV3PoolActionsABI = IUniswapV3PoolActionsMetaData.ABI - -// IUniswapV3PoolActions is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolActions struct { - IUniswapV3PoolActionsCaller // Read-only binding to the contract - IUniswapV3PoolActionsTransactor // Write-only binding to the contract - IUniswapV3PoolActionsFilterer // Log filterer for contract events -} - -// IUniswapV3PoolActionsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolActionsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolActionsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolActionsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolActionsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolActionsSession struct { - Contract *IUniswapV3PoolActions // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolActionsCallerSession struct { - Contract *IUniswapV3PoolActionsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolActionsTransactorSession struct { - Contract *IUniswapV3PoolActionsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolActionsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolActionsRaw struct { - Contract *IUniswapV3PoolActions // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolActionsCallerRaw struct { - Contract *IUniswapV3PoolActionsCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolActionsTransactorRaw struct { - Contract *IUniswapV3PoolActionsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolActions creates a new instance of IUniswapV3PoolActions, bound to a specific deployed contract. -func NewIUniswapV3PoolActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolActions, error) { - contract, err := bindIUniswapV3PoolActions(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolActions{IUniswapV3PoolActionsCaller: IUniswapV3PoolActionsCaller{contract: contract}, IUniswapV3PoolActionsTransactor: IUniswapV3PoolActionsTransactor{contract: contract}, IUniswapV3PoolActionsFilterer: IUniswapV3PoolActionsFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolActionsCaller creates a new read-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. -func NewIUniswapV3PoolActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolActionsCaller, error) { - contract, err := bindIUniswapV3PoolActions(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolActionsCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolActionsTransactor creates a new write-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. -func NewIUniswapV3PoolActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolActionsTransactor, error) { - contract, err := bindIUniswapV3PoolActions(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolActionsTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolActionsFilterer creates a new log filterer instance of IUniswapV3PoolActions, bound to a specific deployed contract. -func NewIUniswapV3PoolActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolActionsFilterer, error) { - contract, err := bindIUniswapV3PoolActions(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolActionsFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolActions binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolActionsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolActions.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.contract.Transact(opts, method, params...) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "burn", tickLower, tickUpper, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0xa34123a7. -// -// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. -// -// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "flash", recipient, amount0, amount1, data) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) -} - -// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. -// -// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) -} - -// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. -// -// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "initialize", sqrtPriceX96) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) -} - -// Initialize is a paid mutator transaction binding the contract method 0xf637731d. -// -// Solidity: function initialize(uint160 sqrtPriceX96) returns() -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) -} - -// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. -// -// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} - -// Swap is a paid mutator transaction binding the contract method 0x128acb08. -// -// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) -func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { - return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go deleted file mode 100644 index efcbc37a..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go +++ /dev/null @@ -1,276 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolderivedstate - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolDerivedStateMetaData contains all meta data concerning the IUniswapV3PoolDerivedState contract. -var IUniswapV3PoolDerivedStateMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolDerivedStateABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolDerivedStateMetaData.ABI instead. -var IUniswapV3PoolDerivedStateABI = IUniswapV3PoolDerivedStateMetaData.ABI - -// IUniswapV3PoolDerivedState is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedState struct { - IUniswapV3PoolDerivedStateCaller // Read-only binding to the contract - IUniswapV3PoolDerivedStateTransactor // Write-only binding to the contract - IUniswapV3PoolDerivedStateFilterer // Log filterer for contract events -} - -// IUniswapV3PoolDerivedStateCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedStateCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolDerivedStateTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedStateTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolDerivedStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolDerivedStateFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolDerivedStateSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolDerivedStateSession struct { - Contract *IUniswapV3PoolDerivedState // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolDerivedStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolDerivedStateCallerSession struct { - Contract *IUniswapV3PoolDerivedStateCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolDerivedStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolDerivedStateTransactorSession struct { - Contract *IUniswapV3PoolDerivedStateTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolDerivedStateRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedStateRaw struct { - Contract *IUniswapV3PoolDerivedState // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolDerivedStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedStateCallerRaw struct { - Contract *IUniswapV3PoolDerivedStateCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolDerivedStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolDerivedStateTransactorRaw struct { - Contract *IUniswapV3PoolDerivedStateTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolDerivedState creates a new instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. -func NewIUniswapV3PoolDerivedState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolDerivedState, error) { - contract, err := bindIUniswapV3PoolDerivedState(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolDerivedState{IUniswapV3PoolDerivedStateCaller: IUniswapV3PoolDerivedStateCaller{contract: contract}, IUniswapV3PoolDerivedStateTransactor: IUniswapV3PoolDerivedStateTransactor{contract: contract}, IUniswapV3PoolDerivedStateFilterer: IUniswapV3PoolDerivedStateFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolDerivedStateCaller creates a new read-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. -func NewIUniswapV3PoolDerivedStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolDerivedStateCaller, error) { - contract, err := bindIUniswapV3PoolDerivedState(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolDerivedStateCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolDerivedStateTransactor creates a new write-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. -func NewIUniswapV3PoolDerivedStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolDerivedStateTransactor, error) { - contract, err := bindIUniswapV3PoolDerivedState(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolDerivedStateTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolDerivedStateFilterer creates a new log filterer instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. -func NewIUniswapV3PoolDerivedStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolDerivedStateFilterer, error) { - contract, err := bindIUniswapV3PoolDerivedState(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolDerivedStateFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolDerivedState binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolDerivedState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolDerivedStateMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolDerivedState.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolDerivedState.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolDerivedState.Contract.contract.Transact(opts, method, params...) -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - var out []interface{} - err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "observe", secondsAgos) - - outstruct := new(struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) - outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) - - return *outstruct, err - -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) Observe(secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) -} - -// Observe is a free data retrieval call binding the contract method 0x883bdbfd. -// -// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) Observe(secondsAgos []uint32) (struct { - TickCumulatives []*big.Int - SecondsPerLiquidityCumulativeX128s []*big.Int -}, error) { - return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - var out []interface{} - err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) - - outstruct := new(struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 - }) - if err != nil { - return *outstruct, err - } - - outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) - - return *outstruct, err - -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) -} - -// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. -// -// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) -func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { - TickCumulativeInside *big.Int - SecondsPerLiquidityInsideX128 *big.Int - SecondsInside uint32 -}, error) { - return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go deleted file mode 100644 index 36eaf690..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go +++ /dev/null @@ -1,1556 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolevents - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolEventsMetaData contains all meta data concerning the IUniswapV3PoolEvents contract. -var IUniswapV3PoolEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}]", -} - -// IUniswapV3PoolEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolEventsMetaData.ABI instead. -var IUniswapV3PoolEventsABI = IUniswapV3PoolEventsMetaData.ABI - -// IUniswapV3PoolEvents is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolEvents struct { - IUniswapV3PoolEventsCaller // Read-only binding to the contract - IUniswapV3PoolEventsTransactor // Write-only binding to the contract - IUniswapV3PoolEventsFilterer // Log filterer for contract events -} - -// IUniswapV3PoolEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolEventsSession struct { - Contract *IUniswapV3PoolEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolEventsCallerSession struct { - Contract *IUniswapV3PoolEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolEventsTransactorSession struct { - Contract *IUniswapV3PoolEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolEventsRaw struct { - Contract *IUniswapV3PoolEvents // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolEventsCallerRaw struct { - Contract *IUniswapV3PoolEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolEventsTransactorRaw struct { - Contract *IUniswapV3PoolEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolEvents creates a new instance of IUniswapV3PoolEvents, bound to a specific deployed contract. -func NewIUniswapV3PoolEvents(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolEvents, error) { - contract, err := bindIUniswapV3PoolEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEvents{IUniswapV3PoolEventsCaller: IUniswapV3PoolEventsCaller{contract: contract}, IUniswapV3PoolEventsTransactor: IUniswapV3PoolEventsTransactor{contract: contract}, IUniswapV3PoolEventsFilterer: IUniswapV3PoolEventsFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolEventsCaller creates a new read-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. -func NewIUniswapV3PoolEventsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolEventsCaller, error) { - contract, err := bindIUniswapV3PoolEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolEventsTransactor creates a new write-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. -func NewIUniswapV3PoolEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolEventsTransactor, error) { - contract, err := bindIUniswapV3PoolEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolEventsFilterer creates a new log filterer instance of IUniswapV3PoolEvents, bound to a specific deployed contract. -func NewIUniswapV3PoolEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolEventsFilterer, error) { - contract, err := bindIUniswapV3PoolEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolEvents binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolEvents.Contract.contract.Transact(opts, method, params...) -} - -// IUniswapV3PoolEventsBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsBurnIterator struct { - Event *IUniswapV3PoolEventsBurn // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsBurnIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsBurn) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsBurnIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsBurnIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsBurn represents a Burn event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsBurn struct { - Owner common.Address - TickLower *big.Int - TickUpper *big.Int - Amount *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsBurnIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsBurnIterator{contract: _IUniswapV3PoolEvents.contract, event: "Burn", logs: logs, sub: sub}, nil -} - -// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsBurn) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. -// -// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolEventsBurn, error) { - event := new(IUniswapV3PoolEventsBurn) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsCollectIterator struct { - Event *IUniswapV3PoolEventsCollect // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsCollectIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsCollect) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsCollectIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsCollectIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsCollect represents a Collect event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsCollect struct { - Owner common.Address - Recipient common.Address - TickLower *big.Int - TickUpper *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsCollectIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsCollectIterator{contract: _IUniswapV3PoolEvents.contract, event: "Collect", logs: logs, sub: sub}, nil -} - -// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsCollect) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. -// -// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolEventsCollect, error) { - event := new(IUniswapV3PoolEventsCollect) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsCollectProtocolIterator struct { - Event *IUniswapV3PoolEventsCollectProtocol // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsCollectProtocolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsCollectProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsCollectProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsCollectProtocolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsCollectProtocolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsCollectProtocol represents a CollectProtocol event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsCollectProtocol struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsCollectProtocolIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsCollectProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil -} - -// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsCollectProtocol) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. -// -// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolEventsCollectProtocol, error) { - event := new(IUniswapV3PoolEventsCollectProtocol) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsFlashIterator struct { - Event *IUniswapV3PoolEventsFlash // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsFlashIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsFlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsFlash) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsFlashIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsFlashIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsFlash represents a Flash event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsFlash struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - Paid0 *big.Int - Paid1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsFlashIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsFlashIterator{contract: _IUniswapV3PoolEvents.contract, event: "Flash", logs: logs, sub: sub}, nil -} - -// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsFlash) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. -// -// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolEventsFlash, error) { - event := new(IUniswapV3PoolEventsFlash) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator struct { - Event *IUniswapV3PoolEventsIncreaseObservationCardinalityNext // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsIncreaseObservationCardinalityNext struct { - ObservationCardinalityNextOld uint16 - ObservationCardinalityNextNew uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3PoolEvents.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil -} - -// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsIncreaseObservationCardinalityNext) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. -// -// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNext, error) { - event := new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsInitializeIterator struct { - Event *IUniswapV3PoolEventsInitialize // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsInitializeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsInitialize) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsInitialize) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsInitializeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsInitializeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsInitialize represents a Initialize event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsInitialize struct { - SqrtPriceX96 *big.Int - Tick *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolEventsInitializeIterator, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Initialize") - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsInitializeIterator{contract: _IUniswapV3PoolEvents.contract, event: "Initialize", logs: logs, sub: sub}, nil -} - -// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsInitialize) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Initialize") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsInitialize) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. -// -// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolEventsInitialize, error) { - event := new(IUniswapV3PoolEventsInitialize) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsMintIterator struct { - Event *IUniswapV3PoolEventsMint // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsMintIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsMint) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsMintIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsMintIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsMint represents a Mint event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsMint struct { - Sender common.Address - Owner common.Address - TickLower *big.Int - TickUpper *big.Int - Amount *big.Int - Amount0 *big.Int - Amount1 *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsMintIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsMintIterator{contract: _IUniswapV3PoolEvents.contract, event: "Mint", logs: logs, sub: sub}, nil -} - -// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var tickLowerRule []interface{} - for _, tickLowerItem := range tickLower { - tickLowerRule = append(tickLowerRule, tickLowerItem) - } - var tickUpperRule []interface{} - for _, tickUpperItem := range tickUpper { - tickUpperRule = append(tickUpperRule, tickUpperItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsMint) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. -// -// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseMint(log types.Log) (*IUniswapV3PoolEventsMint, error) { - event := new(IUniswapV3PoolEventsMint) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsSetFeeProtocolIterator struct { - Event *IUniswapV3PoolEventsSetFeeProtocol // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsSetFeeProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsSetFeeProtocol) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsSetFeeProtocol struct { - FeeProtocol0Old uint8 - FeeProtocol1Old uint8 - FeeProtocol0New uint8 - FeeProtocol1New uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolEventsSetFeeProtocolIterator, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "SetFeeProtocol") - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsSetFeeProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil -} - -// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSetFeeProtocol) (event.Subscription, error) { - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "SetFeeProtocol") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsSetFeeProtocol) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. -// -// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolEventsSetFeeProtocol, error) { - event := new(IUniswapV3PoolEventsSetFeeProtocol) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IUniswapV3PoolEventsSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsSwapIterator struct { - Event *IUniswapV3PoolEventsSwap // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IUniswapV3PoolEventsSwapIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IUniswapV3PoolEventsSwap) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IUniswapV3PoolEventsSwapIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IUniswapV3PoolEventsSwapIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IUniswapV3PoolEventsSwap represents a Swap event raised by the IUniswapV3PoolEvents contract. -type IUniswapV3PoolEventsSwap struct { - Sender common.Address - Recipient common.Address - Amount0 *big.Int - Amount1 *big.Int - SqrtPriceX96 *big.Int - Liquidity *big.Int - Tick *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsSwapIterator, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) - if err != nil { - return nil, err - } - return &IUniswapV3PoolEventsSwapIterator{contract: _IUniswapV3PoolEvents.contract, event: "Swap", logs: logs, sub: sub}, nil -} - -// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { - - var senderRule []interface{} - for _, senderItem := range sender { - senderRule = append(senderRule, senderItem) - } - var recipientRule []interface{} - for _, recipientItem := range recipient { - recipientRule = append(recipientRule, recipientItem) - } - - logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IUniswapV3PoolEventsSwap) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. -// -// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) -func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolEventsSwap, error) { - event := new(IUniswapV3PoolEventsSwap) - if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go deleted file mode 100644 index 9126c9db..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go +++ /dev/null @@ -1,367 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolimmutables - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolImmutablesMetaData contains all meta data concerning the IUniswapV3PoolImmutables contract. -var IUniswapV3PoolImmutablesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolImmutablesABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolImmutablesMetaData.ABI instead. -var IUniswapV3PoolImmutablesABI = IUniswapV3PoolImmutablesMetaData.ABI - -// IUniswapV3PoolImmutables is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolImmutables struct { - IUniswapV3PoolImmutablesCaller // Read-only binding to the contract - IUniswapV3PoolImmutablesTransactor // Write-only binding to the contract - IUniswapV3PoolImmutablesFilterer // Log filterer for contract events -} - -// IUniswapV3PoolImmutablesCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolImmutablesCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolImmutablesTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolImmutablesTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolImmutablesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolImmutablesFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolImmutablesSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolImmutablesSession struct { - Contract *IUniswapV3PoolImmutables // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolImmutablesCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolImmutablesCallerSession struct { - Contract *IUniswapV3PoolImmutablesCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolImmutablesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolImmutablesTransactorSession struct { - Contract *IUniswapV3PoolImmutablesTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolImmutablesRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolImmutablesRaw struct { - Contract *IUniswapV3PoolImmutables // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolImmutablesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolImmutablesCallerRaw struct { - Contract *IUniswapV3PoolImmutablesCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolImmutablesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolImmutablesTransactorRaw struct { - Contract *IUniswapV3PoolImmutablesTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolImmutables creates a new instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. -func NewIUniswapV3PoolImmutables(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolImmutables, error) { - contract, err := bindIUniswapV3PoolImmutables(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolImmutables{IUniswapV3PoolImmutablesCaller: IUniswapV3PoolImmutablesCaller{contract: contract}, IUniswapV3PoolImmutablesTransactor: IUniswapV3PoolImmutablesTransactor{contract: contract}, IUniswapV3PoolImmutablesFilterer: IUniswapV3PoolImmutablesFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolImmutablesCaller creates a new read-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. -func NewIUniswapV3PoolImmutablesCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolImmutablesCaller, error) { - contract, err := bindIUniswapV3PoolImmutables(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolImmutablesCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolImmutablesTransactor creates a new write-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. -func NewIUniswapV3PoolImmutablesTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolImmutablesTransactor, error) { - contract, err := bindIUniswapV3PoolImmutables(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolImmutablesTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolImmutablesFilterer creates a new log filterer instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. -func NewIUniswapV3PoolImmutablesFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolImmutablesFilterer, error) { - contract, err := bindIUniswapV3PoolImmutables(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolImmutablesFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolImmutables binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolImmutables(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolImmutablesMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolImmutables.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolImmutables.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolImmutables.Contract.contract.Transact(opts, method, params...) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Factory(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "factory") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Factory() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Factory is a free data retrieval call binding the contract method 0xc45a0155. -// -// Solidity: function factory() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Factory() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "fee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Fee() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Fee is a free data retrieval call binding the contract method 0xddca3f43. -// -// Solidity: function fee() view returns(uint24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Fee() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "maxLiquidityPerTick") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) MaxLiquidityPerTick() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) -} - -// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. -// -// Solidity: function maxLiquidityPerTick() view returns(uint128) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) MaxLiquidityPerTick() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "tickSpacing") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) TickSpacing() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) -} - -// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. -// -// Solidity: function tickSpacing() view returns(int24) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) TickSpacing() (*big.Int, error) { - return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token0(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token0") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token0() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. -// -// Solidity: function token0() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token0() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token1(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token1") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token1() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) -} - -// Token1 is a free data retrieval call binding the contract method 0xd21220a7. -// -// Solidity: function token1() view returns(address) -func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token1() (common.Address, error) { - return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go deleted file mode 100644 index a5bd7aeb..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go +++ /dev/null @@ -1,223 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolowneractions - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolOwnerActionsMetaData contains all meta data concerning the IUniswapV3PoolOwnerActions contract. -var IUniswapV3PoolOwnerActionsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolOwnerActionsABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolOwnerActionsMetaData.ABI instead. -var IUniswapV3PoolOwnerActionsABI = IUniswapV3PoolOwnerActionsMetaData.ABI - -// IUniswapV3PoolOwnerActions is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActions struct { - IUniswapV3PoolOwnerActionsCaller // Read-only binding to the contract - IUniswapV3PoolOwnerActionsTransactor // Write-only binding to the contract - IUniswapV3PoolOwnerActionsFilterer // Log filterer for contract events -} - -// IUniswapV3PoolOwnerActionsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActionsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolOwnerActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActionsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolOwnerActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolOwnerActionsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolOwnerActionsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolOwnerActionsSession struct { - Contract *IUniswapV3PoolOwnerActions // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolOwnerActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolOwnerActionsCallerSession struct { - Contract *IUniswapV3PoolOwnerActionsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolOwnerActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolOwnerActionsTransactorSession struct { - Contract *IUniswapV3PoolOwnerActionsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolOwnerActionsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActionsRaw struct { - Contract *IUniswapV3PoolOwnerActions // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolOwnerActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActionsCallerRaw struct { - Contract *IUniswapV3PoolOwnerActionsCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolOwnerActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolOwnerActionsTransactorRaw struct { - Contract *IUniswapV3PoolOwnerActionsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolOwnerActions creates a new instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. -func NewIUniswapV3PoolOwnerActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolOwnerActions, error) { - contract, err := bindIUniswapV3PoolOwnerActions(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolOwnerActions{IUniswapV3PoolOwnerActionsCaller: IUniswapV3PoolOwnerActionsCaller{contract: contract}, IUniswapV3PoolOwnerActionsTransactor: IUniswapV3PoolOwnerActionsTransactor{contract: contract}, IUniswapV3PoolOwnerActionsFilterer: IUniswapV3PoolOwnerActionsFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolOwnerActionsCaller creates a new read-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. -func NewIUniswapV3PoolOwnerActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolOwnerActionsCaller, error) { - contract, err := bindIUniswapV3PoolOwnerActions(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolOwnerActionsCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolOwnerActionsTransactor creates a new write-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. -func NewIUniswapV3PoolOwnerActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolOwnerActionsTransactor, error) { - contract, err := bindIUniswapV3PoolOwnerActions(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolOwnerActionsTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolOwnerActionsFilterer creates a new log filterer instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. -func NewIUniswapV3PoolOwnerActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolOwnerActionsFilterer, error) { - contract, err := bindIUniswapV3PoolOwnerActions(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolOwnerActionsFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolOwnerActions binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolOwnerActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolOwnerActionsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolOwnerActions.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.contract.Transact(opts, method, params...) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) -} - -// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. -// -// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) -} - -// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. -// -// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() -func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { - return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) -} diff --git a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go b/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go deleted file mode 100644 index 11fc3c9e..00000000 --- a/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go +++ /dev/null @@ -1,610 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iuniswapv3poolstate - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IUniswapV3PoolStateMetaData contains all meta data concerning the IUniswapV3PoolState contract. -var IUniswapV3PoolStateMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", -} - -// IUniswapV3PoolStateABI is the input ABI used to generate the binding from. -// Deprecated: Use IUniswapV3PoolStateMetaData.ABI instead. -var IUniswapV3PoolStateABI = IUniswapV3PoolStateMetaData.ABI - -// IUniswapV3PoolState is an auto generated Go binding around an Ethereum contract. -type IUniswapV3PoolState struct { - IUniswapV3PoolStateCaller // Read-only binding to the contract - IUniswapV3PoolStateTransactor // Write-only binding to the contract - IUniswapV3PoolStateFilterer // Log filterer for contract events -} - -// IUniswapV3PoolStateCaller is an auto generated read-only Go binding around an Ethereum contract. -type IUniswapV3PoolStateCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolStateTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IUniswapV3PoolStateTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IUniswapV3PoolStateFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IUniswapV3PoolStateSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IUniswapV3PoolStateSession struct { - Contract *IUniswapV3PoolState // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IUniswapV3PoolStateCallerSession struct { - Contract *IUniswapV3PoolStateCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IUniswapV3PoolStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IUniswapV3PoolStateTransactorSession struct { - Contract *IUniswapV3PoolStateTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IUniswapV3PoolStateRaw is an auto generated low-level Go binding around an Ethereum contract. -type IUniswapV3PoolStateRaw struct { - Contract *IUniswapV3PoolState // Generic contract binding to access the raw methods on -} - -// IUniswapV3PoolStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IUniswapV3PoolStateCallerRaw struct { - Contract *IUniswapV3PoolStateCaller // Generic read-only contract binding to access the raw methods on -} - -// IUniswapV3PoolStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IUniswapV3PoolStateTransactorRaw struct { - Contract *IUniswapV3PoolStateTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIUniswapV3PoolState creates a new instance of IUniswapV3PoolState, bound to a specific deployed contract. -func NewIUniswapV3PoolState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolState, error) { - contract, err := bindIUniswapV3PoolState(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IUniswapV3PoolState{IUniswapV3PoolStateCaller: IUniswapV3PoolStateCaller{contract: contract}, IUniswapV3PoolStateTransactor: IUniswapV3PoolStateTransactor{contract: contract}, IUniswapV3PoolStateFilterer: IUniswapV3PoolStateFilterer{contract: contract}}, nil -} - -// NewIUniswapV3PoolStateCaller creates a new read-only instance of IUniswapV3PoolState, bound to a specific deployed contract. -func NewIUniswapV3PoolStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolStateCaller, error) { - contract, err := bindIUniswapV3PoolState(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolStateCaller{contract: contract}, nil -} - -// NewIUniswapV3PoolStateTransactor creates a new write-only instance of IUniswapV3PoolState, bound to a specific deployed contract. -func NewIUniswapV3PoolStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolStateTransactor, error) { - contract, err := bindIUniswapV3PoolState(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IUniswapV3PoolStateTransactor{contract: contract}, nil -} - -// NewIUniswapV3PoolStateFilterer creates a new log filterer instance of IUniswapV3PoolState, bound to a specific deployed contract. -func NewIUniswapV3PoolStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolStateFilterer, error) { - contract, err := bindIUniswapV3PoolState(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IUniswapV3PoolStateFilterer{contract: contract}, nil -} - -// bindIUniswapV3PoolState binds a generic wrapper to an already deployed contract. -func bindIUniswapV3PoolState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IUniswapV3PoolStateMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IUniswapV3PoolState.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IUniswapV3PoolState.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IUniswapV3PoolState.Contract.contract.Transact(opts, method, params...) -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal0X128") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal0X128() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) -} - -// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. -// -// Solidity: function feeGrowthGlobal0X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal1X128") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal1X128() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) -} - -// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. -// -// Solidity: function feeGrowthGlobal1X128() view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "liquidity") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Liquidity() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) -} - -// Liquidity is a free data retrieval call binding the contract method 0x1a686502. -// -// Solidity: function liquidity() view returns(uint128) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Liquidity() (*big.Int, error) { - return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "observations", index) - - outstruct := new(struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) - outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) - - return *outstruct, err - -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Observations(index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) -} - -// Observations is a free data retrieval call binding the contract method 0x252c09d7. -// -// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Observations(index *big.Int) (struct { - BlockTimestamp uint32 - TickCumulative *big.Int - SecondsPerLiquidityCumulativeX128 *big.Int - Initialized bool -}, error) { - return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "positions", key) - - outstruct := new(struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) - - return *outstruct, err - -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Positions(key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) -} - -// Positions is a free data retrieval call binding the contract method 0x514ea4bf. -// -// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Positions(key [32]byte) (struct { - Liquidity *big.Int - FeeGrowthInside0LastX128 *big.Int - FeeGrowthInside1LastX128 *big.Int - TokensOwed0 *big.Int - TokensOwed1 *big.Int -}, error) { - return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) ProtocolFees(opts *bind.CallOpts) (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "protocolFees") - - outstruct := new(struct { - Token0 *big.Int - Token1 *big.Int - }) - if err != nil { - return *outstruct, err - } - - outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return *outstruct, err - -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) ProtocolFees() (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) -} - -// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. -// -// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) ProtocolFees() (struct { - Token0 *big.Int - Token1 *big.Int -}, error) { - return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Slot0(opts *bind.CallOpts) (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "slot0") - - outstruct := new(struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) - outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) - outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) - outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) - outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) - - return *outstruct, err - -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Slot0() (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) -} - -// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. -// -// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Slot0() (struct { - SqrtPriceX96 *big.Int - Tick *big.Int - ObservationIndex uint16 - ObservationCardinality uint16 - ObservationCardinalityNext uint16 - FeeProtocol uint8 - Unlocked bool -}, error) { - return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "tickBitmap", wordPosition) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) TickBitmap(wordPosition int16) (*big.Int, error) { - return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) -} - -// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. -// -// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { - return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - var out []interface{} - err := _IUniswapV3PoolState.contract.Call(opts, &out, "ticks", tick) - - outstruct := new(struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool - }) - if err != nil { - return *outstruct, err - } - - outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) - outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) - outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) - outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) - outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) - outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) - - return *outstruct, err - -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Ticks(tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) -} - -// Ticks is a free data retrieval call binding the contract method 0xf30dba93. -// -// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) -func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Ticks(tick *big.Int) (struct { - LiquidityGross *big.Int - LiquidityNet *big.Int - FeeGrowthOutside0X128 *big.Int - FeeGrowthOutside1X128 *big.Int - TickCumulativeOutside *big.Int - SecondsPerLiquidityOutsideX128 *big.Int - SecondsOutside uint32 - Initialized bool -}, error) { - return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) -} diff --git a/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go b/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go deleted file mode 100644 index 1c64cfed..00000000 --- a/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go +++ /dev/null @@ -1,265 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iquoter - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IQuoterMetaData contains all meta data concerning the IQuoter contract. -var IQuoterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// IQuoterABI is the input ABI used to generate the binding from. -// Deprecated: Use IQuoterMetaData.ABI instead. -var IQuoterABI = IQuoterMetaData.ABI - -// IQuoter is an auto generated Go binding around an Ethereum contract. -type IQuoter struct { - IQuoterCaller // Read-only binding to the contract - IQuoterTransactor // Write-only binding to the contract - IQuoterFilterer // Log filterer for contract events -} - -// IQuoterCaller is an auto generated read-only Go binding around an Ethereum contract. -type IQuoterCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IQuoterTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IQuoterTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IQuoterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IQuoterFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IQuoterSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IQuoterSession struct { - Contract *IQuoter // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IQuoterCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IQuoterCallerSession struct { - Contract *IQuoterCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IQuoterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IQuoterTransactorSession struct { - Contract *IQuoterTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IQuoterRaw is an auto generated low-level Go binding around an Ethereum contract. -type IQuoterRaw struct { - Contract *IQuoter // Generic contract binding to access the raw methods on -} - -// IQuoterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IQuoterCallerRaw struct { - Contract *IQuoterCaller // Generic read-only contract binding to access the raw methods on -} - -// IQuoterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IQuoterTransactorRaw struct { - Contract *IQuoterTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIQuoter creates a new instance of IQuoter, bound to a specific deployed contract. -func NewIQuoter(address common.Address, backend bind.ContractBackend) (*IQuoter, error) { - contract, err := bindIQuoter(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IQuoter{IQuoterCaller: IQuoterCaller{contract: contract}, IQuoterTransactor: IQuoterTransactor{contract: contract}, IQuoterFilterer: IQuoterFilterer{contract: contract}}, nil -} - -// NewIQuoterCaller creates a new read-only instance of IQuoter, bound to a specific deployed contract. -func NewIQuoterCaller(address common.Address, caller bind.ContractCaller) (*IQuoterCaller, error) { - contract, err := bindIQuoter(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IQuoterCaller{contract: contract}, nil -} - -// NewIQuoterTransactor creates a new write-only instance of IQuoter, bound to a specific deployed contract. -func NewIQuoterTransactor(address common.Address, transactor bind.ContractTransactor) (*IQuoterTransactor, error) { - contract, err := bindIQuoter(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IQuoterTransactor{contract: contract}, nil -} - -// NewIQuoterFilterer creates a new log filterer instance of IQuoter, bound to a specific deployed contract. -func NewIQuoterFilterer(address common.Address, filterer bind.ContractFilterer) (*IQuoterFilterer, error) { - contract, err := bindIQuoter(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IQuoterFilterer{contract: contract}, nil -} - -// bindIQuoter binds a generic wrapper to an already deployed contract. -func bindIQuoter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IQuoterMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IQuoter *IQuoterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IQuoter.Contract.IQuoterCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IQuoter *IQuoterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IQuoter.Contract.IQuoterTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IQuoter *IQuoterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IQuoter.Contract.IQuoterTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IQuoter *IQuoterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IQuoter.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IQuoter *IQuoterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IQuoter.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IQuoter *IQuoterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IQuoter.Contract.contract.Transact(opts, method, params...) -} - -// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. -// -// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) -func (_IQuoter *IQuoterTransactor) QuoteExactInput(opts *bind.TransactOpts, path []byte, amountIn *big.Int) (*types.Transaction, error) { - return _IQuoter.contract.Transact(opts, "quoteExactInput", path, amountIn) -} - -// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. -// -// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) -func (_IQuoter *IQuoterSession) QuoteExactInput(path []byte, amountIn *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactInput(&_IQuoter.TransactOpts, path, amountIn) -} - -// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. -// -// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) -func (_IQuoter *IQuoterTransactorSession) QuoteExactInput(path []byte, amountIn *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactInput(&_IQuoter.TransactOpts, path, amountIn) -} - -// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. -// -// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) -func (_IQuoter *IQuoterTransactor) QuoteExactInputSingle(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.contract.Transact(opts, "quoteExactInputSingle", tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) -} - -// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. -// -// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) -func (_IQuoter *IQuoterSession) QuoteExactInputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactInputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) -} - -// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. -// -// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) -func (_IQuoter *IQuoterTransactorSession) QuoteExactInputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactInputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) -} - -// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. -// -// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) -func (_IQuoter *IQuoterTransactor) QuoteExactOutput(opts *bind.TransactOpts, path []byte, amountOut *big.Int) (*types.Transaction, error) { - return _IQuoter.contract.Transact(opts, "quoteExactOutput", path, amountOut) -} - -// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. -// -// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) -func (_IQuoter *IQuoterSession) QuoteExactOutput(path []byte, amountOut *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactOutput(&_IQuoter.TransactOpts, path, amountOut) -} - -// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. -// -// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) -func (_IQuoter *IQuoterTransactorSession) QuoteExactOutput(path []byte, amountOut *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactOutput(&_IQuoter.TransactOpts, path, amountOut) -} - -// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. -// -// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) -func (_IQuoter *IQuoterTransactor) QuoteExactOutputSingle(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.contract.Transact(opts, "quoteExactOutputSingle", tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) -} - -// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. -// -// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) -func (_IQuoter *IQuoterSession) QuoteExactOutputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactOutputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) -} - -// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. -// -// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) -func (_IQuoter *IQuoterTransactorSession) QuoteExactOutputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { - return _IQuoter.Contract.QuoteExactOutputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) -} diff --git a/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go b/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go deleted file mode 100644 index b50bc355..00000000 --- a/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go +++ /dev/null @@ -1,328 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package iswaprouter - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ISwapRouterExactInputParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterExactInputParams struct { - Path []byte - Recipient common.Address - Deadline *big.Int - AmountIn *big.Int - AmountOutMinimum *big.Int -} - -// ISwapRouterExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterExactInputSingleParams struct { - TokenIn common.Address - TokenOut common.Address - Fee *big.Int - Recipient common.Address - Deadline *big.Int - AmountIn *big.Int - AmountOutMinimum *big.Int - SqrtPriceLimitX96 *big.Int -} - -// ISwapRouterExactOutputParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterExactOutputParams struct { - Path []byte - Recipient common.Address - Deadline *big.Int - AmountOut *big.Int - AmountInMaximum *big.Int -} - -// ISwapRouterExactOutputSingleParams is an auto generated low-level Go binding around an user-defined struct. -type ISwapRouterExactOutputSingleParams struct { - TokenIn common.Address - TokenOut common.Address - Fee *big.Int - Recipient common.Address - Deadline *big.Int - AmountOut *big.Int - AmountInMaximum *big.Int - SqrtPriceLimitX96 *big.Int -} - -// ISwapRouterMetaData contains all meta data concerning the ISwapRouter contract. -var ISwapRouterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", -} - -// ISwapRouterABI is the input ABI used to generate the binding from. -// Deprecated: Use ISwapRouterMetaData.ABI instead. -var ISwapRouterABI = ISwapRouterMetaData.ABI - -// ISwapRouter is an auto generated Go binding around an Ethereum contract. -type ISwapRouter struct { - ISwapRouterCaller // Read-only binding to the contract - ISwapRouterTransactor // Write-only binding to the contract - ISwapRouterFilterer // Log filterer for contract events -} - -// ISwapRouterCaller is an auto generated read-only Go binding around an Ethereum contract. -type ISwapRouterCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ISwapRouterTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ISwapRouterFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ISwapRouterSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ISwapRouterSession struct { - Contract *ISwapRouter // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISwapRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ISwapRouterCallerSession struct { - Contract *ISwapRouterCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ISwapRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ISwapRouterTransactorSession struct { - Contract *ISwapRouterTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ISwapRouterRaw is an auto generated low-level Go binding around an Ethereum contract. -type ISwapRouterRaw struct { - Contract *ISwapRouter // Generic contract binding to access the raw methods on -} - -// ISwapRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ISwapRouterCallerRaw struct { - Contract *ISwapRouterCaller // Generic read-only contract binding to access the raw methods on -} - -// ISwapRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ISwapRouterTransactorRaw struct { - Contract *ISwapRouterTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewISwapRouter creates a new instance of ISwapRouter, bound to a specific deployed contract. -func NewISwapRouter(address common.Address, backend bind.ContractBackend) (*ISwapRouter, error) { - contract, err := bindISwapRouter(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ISwapRouter{ISwapRouterCaller: ISwapRouterCaller{contract: contract}, ISwapRouterTransactor: ISwapRouterTransactor{contract: contract}, ISwapRouterFilterer: ISwapRouterFilterer{contract: contract}}, nil -} - -// NewISwapRouterCaller creates a new read-only instance of ISwapRouter, bound to a specific deployed contract. -func NewISwapRouterCaller(address common.Address, caller bind.ContractCaller) (*ISwapRouterCaller, error) { - contract, err := bindISwapRouter(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ISwapRouterCaller{contract: contract}, nil -} - -// NewISwapRouterTransactor creates a new write-only instance of ISwapRouter, bound to a specific deployed contract. -func NewISwapRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*ISwapRouterTransactor, error) { - contract, err := bindISwapRouter(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ISwapRouterTransactor{contract: contract}, nil -} - -// NewISwapRouterFilterer creates a new log filterer instance of ISwapRouter, bound to a specific deployed contract. -func NewISwapRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*ISwapRouterFilterer, error) { - contract, err := bindISwapRouter(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ISwapRouterFilterer{contract: contract}, nil -} - -// bindISwapRouter binds a generic wrapper to an already deployed contract. -func bindISwapRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ISwapRouterMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISwapRouter *ISwapRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISwapRouter.Contract.ISwapRouterCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISwapRouter *ISwapRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISwapRouter.Contract.ISwapRouterTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISwapRouter *ISwapRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISwapRouter.Contract.ISwapRouterTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ISwapRouter *ISwapRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ISwapRouter.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ISwapRouter *ISwapRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ISwapRouter.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ISwapRouter *ISwapRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ISwapRouter.Contract.contract.Transact(opts, method, params...) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. -// -// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterTransactor) ExactInput(opts *bind.TransactOpts, params ISwapRouterExactInputParams) (*types.Transaction, error) { - return _ISwapRouter.contract.Transact(opts, "exactInput", params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. -// -// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterSession) ExactInput(params ISwapRouterExactInputParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactInput(&_ISwapRouter.TransactOpts, params) -} - -// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. -// -// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterTransactorSession) ExactInput(params ISwapRouterExactInputParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactInput(&_ISwapRouter.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterTransactor) ExactInputSingle(opts *bind.TransactOpts, params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.contract.Transact(opts, "exactInputSingle", params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterSession) ExactInputSingle(params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactInputSingle(&_ISwapRouter.TransactOpts, params) -} - -// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. -// -// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) -func (_ISwapRouter *ISwapRouterTransactorSession) ExactInputSingle(params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactInputSingle(&_ISwapRouter.TransactOpts, params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. -// -// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterTransactor) ExactOutput(opts *bind.TransactOpts, params ISwapRouterExactOutputParams) (*types.Transaction, error) { - return _ISwapRouter.contract.Transact(opts, "exactOutput", params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. -// -// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterSession) ExactOutput(params ISwapRouterExactOutputParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactOutput(&_ISwapRouter.TransactOpts, params) -} - -// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. -// -// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterTransactorSession) ExactOutput(params ISwapRouterExactOutputParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactOutput(&_ISwapRouter.TransactOpts, params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. -// -// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterTransactor) ExactOutputSingle(opts *bind.TransactOpts, params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.contract.Transact(opts, "exactOutputSingle", params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. -// -// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterSession) ExactOutputSingle(params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactOutputSingle(&_ISwapRouter.TransactOpts, params) -} - -// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. -// -// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) -func (_ISwapRouter *ISwapRouterTransactorSession) ExactOutputSingle(params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { - return _ISwapRouter.Contract.ExactOutputSingle(&_ISwapRouter.TransactOpts, params) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouter *ISwapRouterTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouter.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouter *ISwapRouterSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouter.Contract.UniswapV3SwapCallback(&_ISwapRouter.TransactOpts, amount0Delta, amount1Delta, data) -} - -// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. -// -// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() -func (_ISwapRouter *ISwapRouterTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { - return _ISwapRouter.Contract.UniswapV3SwapCallback(&_ISwapRouter.TransactOpts, amount0Delta, amount1Delta, data) -} diff --git a/remappings.txt b/remappings.txt deleted file mode 100644 index 8b720f8c..00000000 --- a/remappings.txt +++ /dev/null @@ -1,3 +0,0 @@ -@openzeppelin/=node_modules/@openzeppelin/ -@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/ -forge-std/=lib/forge-std/src/ \ No newline at end of file diff --git a/scripts/readme.md b/scripts/readme.md deleted file mode 100644 index 63551bfd..00000000 --- a/scripts/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -## Worker script - -To start localnet execute: - -``` -yarn compile -yarn localnet -``` - -This will run hardhat local node and worker script, which will deploy all contracts, and listen and react to events, facilitating communication between contracts. -Tasks to interact with localnet are located in `tasks/localnet`. To make use of default contract addresses on localnet, start localnet from scratch, so contracts are deployed on same addresses. Otherwise, provide custom addresses as tasks parameters. - -To only show logs from worker and hide hardhat node logs: -``` -yarn localnet --hide="NODE" -``` \ No newline at end of file diff --git a/scripts/worker.ts b/scripts/worker.ts deleted file mode 100644 index ddea9189..00000000 --- a/scripts/worker.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { AddressZero } from "@ethersproject/constants"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { SystemContract, ZRC20 } from "@typechain-types"; -import { parseEther } from "ethers/lib/utils"; -import { ethers, upgrades } from "hardhat"; - -const hre = require("hardhat"); - -export const FUNGIBLE_MODULE_ADDRESS = "0x735b14BB79463307AAcBED86DAf3322B1e6226aB"; - -const deploySystemContracts = async (tss: SignerWithAddress) => { - // Prepare EVM - // Deploy system contracts (gateway and custody) - const GatewayEVM = await ethers.getContractFactory("GatewayEVM"); - const Custody = await ethers.getContractFactory("ERC20CustodyNew"); - - const gatewayEVM = await upgrades.deployProxy(GatewayEVM, [tss.address], { - initializer: "initialize", - kind: "uups", - }); - console.log("GatewayEVM:", gatewayEVM.address); - - const custody = await Custody.deploy(gatewayEVM.address); - await gatewayEVM.setCustody(custody.address); - - // Prepare ZEVM - // Deploy system contracts (gateway and system) - const SystemContractFactory = await ethers.getContractFactory("SystemContractMock"); - const systemContract = (await SystemContractFactory.deploy(AddressZero, AddressZero, AddressZero)) as SystemContract; - - const GatewayZEVM = await ethers.getContractFactory("GatewayZEVM"); - const gatewayZEVM = await upgrades.deployProxy(GatewayZEVM, [], { - initializer: "initialize", - kind: "uups", - }); - console.log("GatewayZEVM:", gatewayZEVM.address); - - return { - custody, - gatewayEVM, - gatewayZEVM, - systemContract, - }; -}; - -const deployTestContracts = async ( - systemContracts, - ownerEVM: SignerWithAddress, - ownerZEVM: SignerWithAddress, - fungibleModuleSigner: SignerWithAddress -) => { - // Prepare EVM - // Deploy test contracts (erc20, receiver) and mint funds to test accounts - const TestERC20 = await ethers.getContractFactory("TestERC20"); - const ReceiverEVM = await ethers.getContractFactory("ReceiverEVM"); - - const token = await TestERC20.deploy("Test Token", "TTK"); - const receiverEVM = await ReceiverEVM.deploy(); - await token.mint(ownerEVM.address, ethers.utils.parseEther("1000")); - - // Transfer some tokens to the custody contract - await token.transfer(systemContracts.custody.address, ethers.utils.parseEther("500")); - - // Prepare ZEVM - // Deploy test contracts (test zContract, zrc20, sender) and mint funds to test accounts - const TestZContract = await ethers.getContractFactory("TestZContract"); - const testZContract = await TestZContract.deploy(); - - const ZRC20Factory = await ethers.getContractFactory("ZRC20New"); - const ZRC20Contract = (await ZRC20Factory.connect(fungibleModuleSigner).deploy( - "TOKEN", - "TKN", - 18, - 1, - 1, - 0, - systemContracts.systemContract.address, - systemContracts.gatewayZEVM.address - )) as ZRC20; - - await systemContracts.systemContract.setGasCoinZRC20(1, ZRC20Contract.address); - await systemContracts.systemContract.setGasPrice(1, ZRC20Contract.address); - await ZRC20Contract.connect(fungibleModuleSigner).deposit(ownerZEVM.address, parseEther("100")); - await ZRC20Contract.connect(ownerZEVM).approve(systemContracts.gatewayZEVM.address, parseEther("100")); - - // Include abi of gatewayZEVM events, so hardhat can decode them automatically - const senderArtifact = await hre.artifacts.readArtifact("SenderZEVM"); - const gatewayZEVMArtifact = await hre.artifacts.readArtifact("GatewayZEVM"); - const senderABI = [ - ...senderArtifact.abi, - ...gatewayZEVMArtifact.abi.filter((f: ethers.utils.Fragment) => f.type === "event"), - ]; - - const SenderZEVM = new ethers.ContractFactory(senderABI, senderArtifact.bytecode, ownerZEVM); - const senderZEVM = await SenderZEVM.deploy(systemContracts.gatewayZEVM.address); - await ZRC20Contract.connect(fungibleModuleSigner).deposit(senderZEVM.address, parseEther("100")); - - return { - ZRC20Contract, - receiverEVM, - senderZEVM, - testZContract, - }; -}; - -export const startWorker = async () => { - const [ownerEVM, ownerZEVM, tss] = await ethers.getSigners(); - - // Impersonate the fungible module account - await hre.network.provider.request({ - method: "hardhat_impersonateAccount", - params: [FUNGIBLE_MODULE_ADDRESS], - }); - - // Get a signer for the fungible module account - const fungibleModuleSigner = await ethers.getSigner(FUNGIBLE_MODULE_ADDRESS); - hre.network.provider.send("hardhat_setBalance", [FUNGIBLE_MODULE_ADDRESS, parseEther("1000000").toHexString()]); - - // Deploy system and test contracts - const systemContracts = await deploySystemContracts(tss); - const testContracts = await deployTestContracts(systemContracts, ownerEVM, ownerZEVM, fungibleModuleSigner); - - // Listen to contracts events - // event Call(address indexed sender, bytes receiver, bytes message); - systemContracts.gatewayZEVM.on("Call", async (...args: Array) => { - console.log("Worker: Call event on GatewayZEVM."); - console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); - const receiver = args[1]; - const message = args[2]; - const executeTx = await systemContracts.gatewayEVM.execute(receiver, message, { value: 0 }); - await executeTx.wait(); - }); - - // event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); - systemContracts.gatewayZEVM.on("Withdrawal", async (...args: Array) => { - console.log("Worker: Withdrawal event on GatewayZEVM."); - const receiver = args[1]; - const message = args[6]; - if (message != "0x") { - console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); - const executeTx = await systemContracts.gatewayEVM.execute(receiver, message, { value: 0 }); - await executeTx.wait(); - } - }); - - testContracts.receiverEVM.on("ReceivedPayable", () => { - console.log("ReceiverEVM: receivePayable called!"); - }); - - // event Call(address indexed sender, address indexed receiver, bytes payload); - systemContracts.gatewayEVM.on("Call", async (...args: Array) => { - console.log("Worker: Call event on GatewayEVM."); - console.log("Worker: Calling TestZContract through GatewayZEVM..."); - const zContract = args[1]; - const payload = args[2]; - const executeTx = await systemContracts.gatewayZEVM.connect(fungibleModuleSigner).execute( - [systemContracts.gatewayZEVM.address, fungibleModuleSigner.address, 1], - // onCrosschainCall contains zrc20 and amount which is not available in Call event - testContracts.ZRC20Contract.address, - parseEther("0"), - zContract, - payload - ); - await executeTx.wait(); - }); - - // event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload); - systemContracts.gatewayEVM.on("Deposit", async (...args: Array) => { - console.log("Worker: Deposit event on GatewayEVM."); - const receiver = args[1]; - const asset = args[3]; - const payload = args[4]; - if (payload != "0x") { - console.log("Worker: Calling TestZContract through GatewayZEVM..."); - const executeTx = await systemContracts.gatewayZEVM - .connect(fungibleModuleSigner) - .execute( - [systemContracts.gatewayZEVM.address, fungibleModuleSigner.address, 1], - asset, - parseEther("0"), - receiver, - payload - ); - await executeTx.wait(); - } - }); - - testContracts.testZContract.on("ContextData", async () => { - console.log("TestZContract: onCrosschainCall called!"); - }); - - process.stdin.resume(); -}; - -startWorker() - .then(() => { - console.log("Setup complete, monitoring events. Press CTRL+C to exit."); - }) - .catch((error) => { - console.error("Failed to deploy contracts or set up listeners:", error); - process.exit(1); - }); diff --git a/test/fuzz/ERC20CustodyNewEchidnaTest.sol b/test/fuzz/ERC20CustodyNewEchidnaTest.sol deleted file mode 100644 index 55e76fdd..00000000 --- a/test/fuzz/ERC20CustodyNewEchidnaTest.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "../../contracts/prototypes/evm/TestERC20.sol"; -import "../../contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "../../contracts/prototypes/evm/GatewayEVM.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -contract ERC20CustodyNewEchidnaTest is ERC20CustodyNew { - using SafeERC20 for IERC20; - - TestERC20 public testERC20; - address public echidnaCaller = msg.sender; - - address proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, (echidnaCaller, address(0x123))) - )); - GatewayEVM testGateway = GatewayEVM(proxy); - - constructor() ERC20CustodyNew(address(testGateway), echidnaCaller) { - testERC20 = new TestERC20("test", "TEST"); - testGateway.setCustody(address(this)); - } - - function testWithdrawAndCall(address to, uint256 amount, bytes calldata data) public { - // mint more than amount - testERC20.mint(address(this), amount + 5); - // transfer overhead to gateway - testERC20.transfer(address(testGateway), 5); - - withdrawAndCall(address(testERC20), to, amount, data); - - // Assertion to ensure no ERC20 tokens are left in the gateway contract after execution - assert(testERC20.balanceOf(address(gateway)) == 0); - } -} \ No newline at end of file diff --git a/test/fuzz/GatewayEVMEchidnaTest.sol b/test/fuzz/GatewayEVMEchidnaTest.sol deleted file mode 100644 index b7d9eb61..00000000 --- a/test/fuzz/GatewayEVMEchidnaTest.sol +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "../../contracts/prototypes/evm/GatewayEVM.sol"; -import "../../contracts/prototypes/evm/TestERC20.sol"; -import "../../contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - -contract GatewayEVMEchidnaTest is GatewayEVM { - using SafeERC20 for IERC20; - - TestERC20 public testERC20; - address public echidnaCaller = msg.sender; - - constructor() { - tssAddress = echidnaCaller; - zetaConnector = address(0x123); - testERC20 = new TestERC20("test", "TEST"); - custody = address(new ERC20CustodyNew(address(this), tssAddress)); - } - - function testExecuteWithERC20(address to, uint256 amount, bytes calldata data) public { - testERC20.mint(address(this), amount); - - executeWithERC20(address(testERC20), to, amount, data); - - // Assertion to ensure no ERC20 tokens are left in the contract after execution - assert(testERC20.balanceOf(address(this)) == 0); - } -} \ No newline at end of file diff --git a/test/fuzz/readme.md b/test/fuzz/readme.md deleted file mode 100644 index 3c751a29..00000000 --- a/test/fuzz/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -## Setup echidna - -``` -brew install echidna -solc-select use 0.8.7 -``` - -## Execute contract tests - -``` -echidna test/fuzz/ERC20CustodyNewEchidnaTest.sol --contract ERC20CustodyNewEchidnaTest --config echidna.yaml -echidna test/fuzz/GatewayEVMEchidnaTest.sol --contract GatewayEVMEchidnaTest --config echidna.yaml -``` \ No newline at end of file diff --git a/test/prototypes/GatewayEVMUniswap.spec.ts b/test/prototypes/GatewayEVMUniswap.spec.ts deleted file mode 100644 index 609f6c41..00000000 --- a/test/prototypes/GatewayEVMUniswap.spec.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { expect } from "chai"; -import { Contract } from "ethers"; -import { ethers, upgrades } from "hardhat"; -import { UniswapV2Deployer } from "uniswap-v2-deploy-plugin"; - -import { - ERC20, - ERC20CustodyNew, - GatewayEVM, - Receiver, - TestERC20, - UniswapV2Factory, - UniswapV2Pair, - UniswapV2Router02, -} from "../../typechain-types"; - -describe("Uniswap Integration with GatewayEVM", function () { - let tokenA: TestERC20; - let tokenB: TestERC20; - let factory: UniswapV2Factory; - let router: UniswapV2Router02; - let pair: UniswapV2Pair; - let custody: ERC20CustodyNew; - let gateway: GatewayEVM; - let owner, addr1, addr2; - let tssAddress; - - beforeEach(async function () { - [owner, addr1, addr2, tssAddress] = await ethers.getSigners(); - - // Deploy TestERC20 tokens - const TestERC20 = await ethers.getContractFactory("TestERC20"); - tokenA = (await TestERC20.deploy("Token A", "TKA")) as TestERC20; - tokenB = (await TestERC20.deploy("Token B", "TKB")) as TestERC20; - await tokenA.mint(owner.address, ethers.utils.parseEther("1000")); - await tokenB.mint(owner.address, ethers.utils.parseEther("1000")); - - const { factory: newFactory, router: newRouter, weth9: weth } = await UniswapV2Deployer.deploy(owner); - - factory = newFactory; - router = newRouter; - - // Approve Router to move tokens - await tokenA.approve(router.address, ethers.utils.parseEther("1000")); - await tokenB.approve(router.address, ethers.utils.parseEther("1000")); - - // Add Liquidity - await router.addLiquidity( - tokenA.address, - tokenB.address, - ethers.utils.parseEther("500"), - ethers.utils.parseEther("500"), - 0, - 0, - owner.address, - Math.floor(Date.now() / 1000) + 60 * 20 - ); - - // Deploy contracts - const Gateway = await ethers.getContractFactory("GatewayEVM"); - const ERC20CustodyNew = await ethers.getContractFactory("ERC20CustodyNew"); - const ZetaConnector = await ethers.getContractFactory("ZetaConnectorNonNative"); - const zeta = await TestERC20.deploy("Zeta", "ZETA"); - gateway = (await upgrades.deployProxy(Gateway, [tssAddress.address, zeta.address], { - initializer: "initialize", - kind: "uups", - })) as GatewayEVM; - custody = (await ERC20CustodyNew.deploy(gateway.address, tssAddress.address)) as ERC20CustodyNew; - gateway.connect(tssAddress.address).setCustody(custody.address); - const zetaConnector = await ZetaConnector.deploy(gateway.address, zeta.address, tssAddress.address); - gateway.connect(tssAddress.address).setConnector(zetaConnector.address); - - // Transfer some tokens to the custody contract - await tokenA.transfer(custody.address, ethers.utils.parseEther("100")); - await tokenB.transfer(custody.address, ethers.utils.parseEther("100")); - }); - - it("should perform a token swap on Uniswap and transfer the output tokens to a destination address", async function () { - const amountIn = ethers.utils.parseEther("50"); - - const data = router.interface.encodeFunctionData("swapExactTokensForTokens", [ - amountIn, - 0, - [tokenA.address, tokenB.address], - addr2.address, - Math.floor(Date.now() / 1000) + 60 * 20, - ]); - - // Withdraw and call - await custody.connect(tssAddress).withdrawAndCall(tokenA.address, router.address, amountIn, data); - - // Verify the destination address received the tokens - const destBalance = await tokenB.balanceOf(addr2.address); - expect(destBalance).to.be.gt(0); - - // Verify the remaining tokens are refunded to the Custody contract - const remainingBalance = await tokenA.balanceOf(custody.address); - expect(remainingBalance).to.equal(ethers.utils.parseEther("50")); - - // Verify the approval was reset - const allowance = await tokenA.allowance(gateway.address, router.address); - expect(allowance).to.equal(0); - }); -}); diff --git a/testFoundry/GatewayEVM.t.sol b/testFoundry/GatewayEVM.t.sol deleted file mode 100644 index efcaf9b4..00000000 --- a/testFoundry/GatewayEVM.t.sol +++ /dev/null @@ -1,538 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/evm/GatewayEVM.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; -import "contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "contracts/prototypes/evm/ZetaConnectorNonNative.sol"; -import "contracts/prototypes/evm/TestERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IERC20CustodyNew.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; - -contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { - using SafeERC20 for IERC20; - - address proxy; - GatewayEVM gateway; - ReceiverEVM receiver; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - TestERC20 token; - TestERC20 zeta; - address owner; - address destination; - address tssAddress; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - token = new TestERC20("test", "TTK"); - zeta = new TestERC20("zeta", "ZETA"); - - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); - gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); - receiver = new ReceiverEVM(); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); - } - - function testForwardCallToReceiveNonPayable() public { - string[] memory str = new string[](1); - str[0] = "Hello, Foundry!"; - uint256[] memory num = new uint256[](1); - num[0] = 42; - bool flag = true; - - bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); - - vm.expectCall(address(receiver), 0, data); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedNonPayable(address(gateway), str, num, flag); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Executed(address(receiver), 0, data); - vm.prank(tssAddress); - gateway.execute(address(receiver), data); - } - - function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() public { - string[] memory str = new string[](1); - str[0] = "Hello, Foundry!"; - uint256[] memory num = new uint256[](1); - num[0] = 42; - bool flag = true; - bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - gateway.execute(address(receiver), data); - } - - function testForwardCallToReceivePayable() public { - string memory str = "Hello, Foundry!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - assertEq(0, address(receiver).balance); - - bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - - vm.expectCall(address(receiver), 1 ether, data); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedPayable(address(gateway), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Executed(address(receiver), 1 ether, data); - vm.prank(tssAddress); - gateway.execute{value: value}(address(receiver), data); - - assertEq(value, address(receiver).balance); - } - - function testForwardCallToReceiveNoParams() public { - bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - - vm.expectCall(address(receiver), 0, data); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedNoParams(address(gateway)); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Executed(address(receiver), 0, data); - vm.prank(tssAddress); - gateway.execute(address(receiver), data); - } - - function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - gateway.executeWithERC20(address(token), destination, amount, data); - } - - function testRevertWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - gateway.revertWithERC20(address(token), destination, amount, data); - } - - function testForwardCallToReceiveERC20ThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - uint256 balanceBefore = token.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeCustody = token.balanceOf(address(custody)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(token), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount, address(token), destination); - vm.expectEmit(true, true, true, true, address(custody)); - emit WithdrawAndCall(address(token), address(receiver), amount, data); - vm.prank(tssAddress); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = token.balanceOf(destination); - assertEq(balanceAfter, amount); - - // Verify that the remaining tokens were refunded to the Custody contract - uint256 balanceAfterCustody = token.balanceOf(address(custody)); - assertEq(balanceAfterCustody, balanceBeforeCustody - amount); - - // Verify that the approval was reset - uint256 allowance = token.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = token.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - } - - function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() public { - uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - - vm.prank(tssAddress); - vm.expectRevert(InsufficientERC20Amount.selector); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - } - - function testForwardCallToReceiveERC20PartialThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - uint256 balanceBefore = token.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeCustody = token.balanceOf(address(custody)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(token), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount / 2, address(token), destination); - vm.expectEmit(true, true, true, true, address(custody)); - emit WithdrawAndCall(address(token), address(receiver), amount, data); - vm.prank(tssAddress); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = token.balanceOf(destination); - assertEq(balanceAfter, amount / 2); - - // Verify that the remaining tokens were refunded to the Custody contract - uint256 balanceAfterCustody = token.balanceOf(address(custody)); - assertEq(balanceAfterCustody, balanceBeforeCustody - amount / 2); - - // Verify that the approval was reset - uint256 allowance = token.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = token.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - } - - function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() public { - uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - - vm.prank(tssAddress); - vm.expectRevert(InsufficientERC20Amount.selector); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - } - - function testForwardCallToReceiveNoParamsThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - uint256 balanceBefore = token.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeCustody = token.balanceOf(address(custody)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(token), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedNoParams(address(gateway)); - vm.expectEmit(true, true, true, true, address(custody)); - emit WithdrawAndCall(address(token), address(receiver), amount, data); - vm.prank(tssAddress); - custody.withdrawAndCall(address(token), address(receiver), amount, data); - - // Verify that the tokens were not transferred to the destination address - uint256 balanceAfter = token.balanceOf(destination); - assertEq(balanceAfter, 0); - - // Verify that the remaining tokens were refunded to the Custody contract - uint256 balanceAfterCustody = token.balanceOf(address(custody)); - assertEq(balanceAfterCustody, balanceBeforeCustody); - - // Verify that the approval was reset - uint256 allowance = token.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = token.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawThroughCustody() public { - uint256 amount = 100000; - uint256 balanceBefore = token.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeCustody = token.balanceOf(address(custody)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(destination), amount); - vm.expectCall(address(token), 0, transferData); - vm.expectEmit(true, true, true, true, address(custody)); - emit Withdraw(address(token), destination, amount); - vm.prank(tssAddress); - custody.withdraw(address(token), destination, amount); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = token.balanceOf(destination); - assertEq(balanceAfter, amount); - - // Verify that the tokens were substracted from custody - uint256 balanceAfterCustody = token.balanceOf(address(custody)); - assertEq(balanceAfterCustody, balanceBeforeCustody - amount); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = token.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - custody.withdraw(address(token), destination, amount); - } - - function testWithdrawAndRevertThroughCustody() public { - uint256 amount = 100000; - bytes memory data = abi.encodePacked("hello"); - uint256 balanceBefore = token.balanceOf(address(receiver)); - assertEq(balanceBefore, 0); - uint256 balanceBeforeCustody = token.balanceOf(address(custody)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(token), 0, transferData); - // Verify that onRevert callback was called - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedRevert(address(gateway), data); - vm.expectEmit(true, true, true, true, address(gateway)); - emit RevertedWithERC20(address(token), address(receiver), amount, data); - vm.expectEmit(true, true, true, true, address(custody)); - emit WithdrawAndRevert(address(token), address(receiver), amount, data); - vm.prank(tssAddress); - custody.withdrawAndRevert(address(token), address(receiver), amount, data); - - // Verify that the tokens were transferred to the receiver address - uint256 balanceAfter = token.balanceOf(address(receiver)); - assertEq(balanceAfter, amount); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterCustody = token.balanceOf(address(custody)); - assertEq(balanceAfterCustody, balanceBeforeCustody - amount); - - // Verify that the approval was reset - uint256 allowance = token.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = token.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodePacked("hello"); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - custody.withdrawAndRevert(address(token), address(receiver), amount, data); - } - - function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() public { - uint256 amount = 0; - bytes memory data = abi.encodePacked("hello"); - - vm.prank(tssAddress); - vm.expectRevert(InsufficientERC20Amount.selector); - custody.withdrawAndRevert(address(token), address(receiver), amount, data); - } - - function testExecuteRevert() public { - uint256 value = 1 ether; - bytes memory data = abi.encodePacked("hello"); - uint256 balanceBefore = address(receiver).balance; - assertEq(balanceBefore, 0); - - // Verify that onRevert callback was called - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedRevert(address(gateway), data); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Reverted(address(receiver), 1 ether, data); - vm.prank(tssAddress); - gateway.executeRevert{value: value}(address(receiver), data); - - // Verify that the tokens were transferred to the receiver address - uint256 balanceAfter = address(receiver).balance; - assertEq(balanceAfter, 1 ether); - } - - function testExecuteRevertFailsIfSenderIsNotTSS() public { - uint256 value = 1 ether; - bytes memory data = abi.encodePacked("hello"); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - gateway.executeRevert{value: value}(address(receiver), data); - } -} - -contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { - using SafeERC20 for IERC20; - - GatewayEVM gateway; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - TestERC20 token; - TestERC20 zeta; - address owner; - address destination; - address tssAddress; - - uint256 ownerAmount = 1000000; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - token = new TestERC20("test", "TTK"); - zeta = new TestERC20("zeta", "ZETA"); - address proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); - gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - - token.mint(owner, ownerAmount); - } - - function testDepositERC20ToCustody() public { - uint256 amount = 100000; - uint256 custodyBalanceBefore = token.balanceOf(address(custody)); - assertEq(0, custodyBalanceBefore); - - token.approve(address(gateway), amount); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Deposit(owner, destination, amount, address(token), ""); - gateway.deposit(destination, amount, address(token)); - - uint256 custodyBalanceAfter = token.balanceOf(address(custody)); - assertEq(amount, custodyBalanceAfter); - - uint256 ownerAmountAfter = token.balanceOf(owner); - assertEq(ownerAmount - amount, ownerAmountAfter); - } - - function testFailDepositERC20ToCustodyIfAmountIs0() public { - uint256 amount = 0; - - token.approve(address(gateway), amount); - - vm.expectRevert("InsufficientERC20Amount"); - gateway.deposit(destination, amount, address(token)); - } - - function testDepositEthToTss() public { - uint256 amount = 100000; - uint256 tssBalanceBefore = tssAddress.balance; - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Deposit(owner, destination, amount, address(0), ""); - gateway.deposit{value: amount}(destination); - - uint256 tssBalanceAfter = tssAddress.balance; - assertEq(tssBalanceBefore + amount, tssBalanceAfter); - } - - function testFailDepositEthToTssIfAmountIs0() public { - uint256 amount = 0; - - vm.expectRevert("InsufficientETHAmount"); - gateway.deposit{value: amount}(destination); - } - - function testDepositERC20ToCustodyWithPayload() public { - uint256 amount = 100000; - uint256 custodyBalanceBefore = token.balanceOf(address(custody)); - assertEq(0, custodyBalanceBefore); - - bytes memory payload = abi.encodeWithSignature("hello(address)", destination); - - token.approve(address(gateway), amount); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Deposit(owner, destination, amount, address(token), payload); - gateway.depositAndCall(destination, amount, address(token), payload); - - uint256 custodyBalanceAfter = token.balanceOf(address(custody)); - assertEq(amount, custodyBalanceAfter); - - uint256 ownerAmountAfter = token.balanceOf(owner); - assertEq(ownerAmount - amount, ownerAmountAfter); - } - - function testFailDepositERC20ToCustodyWithPayloadIfAmountIs0() public { - uint256 amount = 0; - - bytes memory payload = abi.encodeWithSignature("hello(address)", destination); - - vm.expectRevert("InsufficientERC20Amount"); - gateway.depositAndCall(destination, amount, address(token), payload); - } - - function testDepositEthToTssWithPayload() public { - uint256 amount = 100000; - uint256 tssBalanceBefore = tssAddress.balance; - bytes memory payload = abi.encodeWithSignature("hello(address)", destination); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Deposit(owner, destination, amount, address(0), payload); - gateway.depositAndCall{value: amount}(destination, payload); - - uint256 tssBalanceAfter = tssAddress.balance; - assertEq(tssBalanceBefore + amount, tssBalanceAfter); - } - - function testFailDepositEthToTssWithPayloadIfAmountIs0() public { - uint256 amount = 0; - bytes memory payload = abi.encodeWithSignature("hello(address)", destination); - - vm.expectRevert("InsufficientETHAmount"); - gateway.depositAndCall{value: amount}(destination, payload); - } - - function testCallWithPayload() public { - bytes memory payload = abi.encodeWithSignature("hello(address)", destination); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Call(owner, destination, payload); - gateway.call(destination, payload); - } -} \ No newline at end of file diff --git a/testFoundry/GatewayEVMUpgrade.t.sol b/testFoundry/GatewayEVMUpgrade.t.sol deleted file mode 100644 index fe2d5391..00000000 --- a/testFoundry/GatewayEVMUpgrade.t.sol +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/evm/GatewayEVM.sol"; -import "contracts/prototypes/evm/GatewayEVMUpgradeTest.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; -import "contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "contracts/prototypes/evm/ZetaConnectorNonNative.sol"; -import "contracts/prototypes/evm/TestERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { - using SafeERC20 for IERC20; - event ExecutedV2(address indexed destination, uint256 value, bytes data); - - address proxy; - GatewayEVM gateway; - ReceiverEVM receiver; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - TestERC20 token; - TestERC20 zeta; - address owner; - address destination; - address tssAddress; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - token = new TestERC20("test", "TTK"); - zeta = new TestERC20("zeta", "ZETA"); - - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, zeta) - )); - gateway = GatewayEVM(proxy); - - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); - receiver = new ReceiverEVM(); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); - } - - function testUpgradeAndForwardCallToReceivePayable() public { - address custodyBeforeUpgrade = gateway.custody(); - address tssBeforeUpgrade = gateway.tssAddress(); - - string memory str = "Hello, Foundry!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - vm.prank(owner); - Upgrades.upgradeProxy( - proxy, - "GatewayEVMUpgradeTest.sol", - "", - owner - ); - - bytes memory data = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); - GatewayEVMUpgradeTest gatewayUpgradeTest = GatewayEVMUpgradeTest(proxy); - - vm.expectCall(address(receiver), value, data); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedPayable(address(gateway), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gateway)); - emit ExecutedV2(address(receiver), value, data); - gateway.execute{value: value}(address(receiver), data); - - assertEq(custodyBeforeUpgrade, gateway.custody()); - assertEq(tssBeforeUpgrade, gateway.tssAddress()); - } -} \ No newline at end of file diff --git a/testFoundry/GatewayEVMZEVM.t.sol b/testFoundry/GatewayEVMZEVM.t.sol deleted file mode 100644 index 8859013e..00000000 --- a/testFoundry/GatewayEVMZEVM.t.sol +++ /dev/null @@ -1,214 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/evm/GatewayEVM.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; -import "contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "contracts/prototypes/evm/ZetaConnectorNonNative.sol"; -import "contracts/prototypes/evm/TestERC20.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; - -import "contracts/prototypes/zevm/GatewayZEVM.sol"; -import "contracts/prototypes/zevm/SenderZEVM.sol"; -import "contracts/zevm/ZRC20New.sol"; -import "contracts/zevm/testing/SystemContractMock.sol"; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; -import "contracts/prototypes/zevm/IGatewayZEVM.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -contract GatewayEVMZEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IGatewayZEVMEvents, IGatewayZEVMErrors, IReceiverEVMEvents { - // evm - using SafeERC20 for IERC20; - - address proxyEVM; - GatewayEVM gatewayEVM; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - TestERC20 token; - TestERC20 zeta; - ReceiverEVM receiverEVM; - address ownerEVM; - address destination; - address tssAddress; - - // zevm - address payable proxyZEVM; - GatewayZEVM gatewayZEVM; - SenderZEVM senderZEVM; - SystemContractMock systemContract; - ZRC20New zrc20; - address ownerZEVM; - - function setUp() public { - // evm - ownerEVM = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - ownerZEVM = address(0x4321); - - token = new TestERC20("test", "TTK"); - zeta = new TestERC20("zeta", "ZETA"); - - proxyEVM = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); - gatewayEVM = GatewayEVM(proxyEVM); - custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gatewayEVM.setCustody(address(custody)); - gatewayEVM.setConnector(address(zetaConnector)); - vm.stopPrank(); - - token.mint(ownerEVM, 1000000); - token.transfer(address(custody), 500000); - - receiverEVM = new ReceiverEVM(); - - // zevm - proxyZEVM = payable(address(new ERC1967Proxy( - address(new GatewayZEVM()), - abi.encodeWithSelector(GatewayZEVM.initialize.selector, "") - ))); - gatewayZEVM = GatewayZEVM(proxyZEVM); - senderZEVM = new SenderZEVM(address(gatewayZEVM)); - address fungibleModuleAddress = address(0x735b14BB79463307AAcBED86DAf3322B1e6226aB); - vm.startPrank(fungibleModuleAddress); - systemContract = new SystemContractMock(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Zeta, 0, address(systemContract), address(gatewayZEVM)); - systemContract.setGasCoinZRC20(1, address(zrc20)); - systemContract.setGasPrice(1, 1); - zrc20.deposit(ownerZEVM, 1000000); - zrc20.deposit(address(senderZEVM), 1000000); - vm.stopPrank(); - - vm.prank(ownerZEVM); - zrc20.approve(address(gatewayZEVM), 1000000); - - vm.deal(tssAddress, 1 ether); - } - - function testCallReceiverEVMFromZEVM() public { - string memory str = "Hello!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - // Encode the function call data and call on zevm - bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - vm.prank(ownerZEVM); - vm.expectEmit(true, true, true, true, address(gatewayZEVM)); - emit Call(address(ownerZEVM), abi.encodePacked(receiverEVM), message); - gatewayZEVM.call(abi.encodePacked(receiverEVM), message); - - // Call execute on evm - vm.deal(address(gatewayEVM), value); - vm.expectEmit(true, true, true, true, address(gatewayEVM)); - emit Executed(address(receiverEVM), value, message); - vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); - } - - function testCallReceiverEVMFromSenderZEVM() public { - string memory str = "Hello!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - // Encode the function call data and call on zevm - bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - bytes memory data = abi.encodeWithSignature("call(bytes,bytes)", abi.encodePacked(receiverEVM), message); - vm.expectCall(address(gatewayZEVM), 0, data); - vm.prank(ownerZEVM); - senderZEVM.callReceiver(abi.encodePacked(receiverEVM), str, num, flag); - - // Call execute on evm - vm.deal(address(gatewayEVM), value); - vm.expectEmit(true, true, true, true, address(receiverEVM)); - emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gatewayEVM)); - emit Executed(address(receiverEVM), value, message); - vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); - } - - function testWithdrawAndCallReceiverEVMFromZEVM() public { - string memory str = "Hello!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - // Encode the function call data and call on zevm - bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - vm.expectEmit(true, true, true, true, address(gatewayZEVM)); - emit Withdrawal( - ownerZEVM, - address(zrc20), - abi.encodePacked(receiverEVM), - 1000000, - 0, - zrc20.PROTOCOL_FLAT_FEE(), - message - ); - vm.prank(ownerZEVM); - gatewayZEVM.withdrawAndCall( - abi.encodePacked(receiverEVM), - 1000000, - address(zrc20), - message - ); - - // Check the balance after withdrawal - uint256 balanceOfAfterWithdrawal = zrc20.balanceOf(ownerZEVM); - assertEq(balanceOfAfterWithdrawal, 0); - - // Call execute on evm - vm.deal(address(gatewayEVM), value); - vm.expectEmit(true, true, true, true, address(receiverEVM)); - emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gatewayEVM)); - emit Executed(address(receiverEVM), value, message); - vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); - } - - function testWithdrawAndCallReceiverEVMFromSenderZEVM() public { - string memory str = "Hello!"; - uint256 num = 42; - bool flag = true; - uint256 value = 1 ether; - - // Encode the function call data and call on zevm - uint256 senderBalanceBeforeWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); - bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - bytes memory data = abi.encodeWithSignature("withdrawAndCall(bytes,uint256,address,bytes)", abi.encodePacked(receiverEVM), 1000000, address(zrc20), message); - vm.expectCall(address(gatewayZEVM), 0, data); - vm.prank(ownerZEVM); - senderZEVM.withdrawAndCallReceiver(abi.encodePacked(receiverEVM), 1000000, address(zrc20), str, num, flag); - - // Call execute on evm - vm.deal(address(gatewayEVM), value); - vm.expectEmit(true, true, true, true, address(receiverEVM)); - emit ReceivedPayable(address(gatewayEVM), value, str, num, flag); - vm.expectEmit(true, true, true, true, address(gatewayEVM)); - emit Executed(address(receiverEVM), value, message); - vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); - - // Check the balance after withdrawal - uint256 senderBalanceAfterWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); - assertEq(senderBalanceAfterWithdrawal, senderBalanceBeforeWithdrawal - 1000000); - } -} \ No newline at end of file diff --git a/testFoundry/GatewayZEVM.t.sol b/testFoundry/GatewayZEVM.t.sol deleted file mode 100644 index 4ea85486..00000000 --- a/testFoundry/GatewayZEVM.t.sol +++ /dev/null @@ -1,538 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/zevm/GatewayZEVM.sol"; -import "contracts/zevm/ZRC20New.sol"; -import "contracts/zevm/SystemContract.sol"; -import "contracts/zevm/interfaces/IZRC20.sol"; -import "contracts/prototypes/zevm/TestZContract.sol"; -import "contracts/prototypes/zevm/IGatewayZEVM.sol"; -import "contracts/zevm/WZETA.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; -import "forge-std/console.sol"; - -contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { - address payable proxy; - GatewayZEVM gateway; - ZRC20New zrc20; - WETH9 zetaToken; - SystemContract systemContract; - TestZContract testZContract; - address owner; - address addr1; - address fungibleModule; - - function setUp() public { - owner = address(this); - addr1 = address(0x1234); - - zetaToken = new WETH9(); - - proxy = payable(address(new ERC1967Proxy( - address(new GatewayZEVM()), - abi.encodeWithSelector(GatewayZEVM.initialize.selector, address(zetaToken)) - ))); - gateway = GatewayZEVM(proxy); - fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); - testZContract = new TestZContract(); - - vm.startPrank(fungibleModule); - systemContract = new SystemContract(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); - systemContract.setGasCoinZRC20(1, address(zrc20)); - systemContract.setGasPrice(1, 1); - vm.deal(fungibleModule, 1000000000); - zetaToken.deposit{value: 10}(); - zetaToken.approve(address(gateway), 10); - zrc20.deposit(owner, 100000); - vm.stopPrank(); - - vm.startPrank(owner); - zrc20.approve(address(gateway), 100000); - zetaToken.deposit{value: 10}(); - zetaToken.approve(address(gateway), 10); - vm.stopPrank(); - } - - function testWithdrawZRC20() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zrc20.balanceOf(owner); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), ""); - gateway.withdraw(abi.encodePacked(addr1), 1, address(zrc20)); - - uint256 ownerBalanceAfter = zrc20.balanceOf(owner); - assertEq(ownerBalanceBefore - amount, ownerBalanceAfter); - } - - function testWithdrawZRC20FailsIfNoAllowance() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zrc20.balanceOf(owner); - // Remove allowance for gateway - vm.prank(owner); - zrc20.approve(address(gateway), 0); - - vm.expectRevert(); - gateway.withdraw(abi.encodePacked(addr1), amount, address(zrc20)); - - // Check that balance didn't change - uint256 ownerBalanceAfter = zrc20.balanceOf(owner); - assertEq(ownerBalanceBefore, ownerBalanceAfter); - } - - function testWithdrawZRC20WithMessageFailsIfNoAllowance() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zrc20.balanceOf(owner); - // Remove allowance for gateway - vm.prank(owner); - zrc20.approve(address(gateway), 0); - - bytes memory message = abi.encodeWithSignature("hello(address)", addr1); - vm.expectRevert(); - gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); - - // Check that balance didn't change - uint256 ownerBalanceAfter = zrc20.balanceOf(owner); - assertEq(ownerBalanceBefore, ownerBalanceAfter); - } - - function testWithdrawZRC20WithMessage() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zrc20.balanceOf(owner); - - bytes memory message = abi.encodeWithSignature("hello(address)", addr1); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), message); - gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); - - uint256 ownerBalanceAfter = zrc20.balanceOf(owner); - assertEq(ownerBalanceBefore - amount, ownerBalanceAfter); - } - - function testWithdrawZETA() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 fungibleModuleBalanceBefore = fungibleModule.balance; - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, ""); - gateway.withdraw(amount); - - uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); - assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); - - uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); - assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - - // Verify amount is transfered to fungible module - assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); - } - - function testWithdrawZETAFailsIfNoAllowance() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 fungibleModuleBalanceBefore = fungibleModule.balance; - // Remove allowance for gateway - vm.prank(owner); - zetaToken.approve(address(gateway), 0); - - vm.expectRevert(); - gateway.withdraw(amount); - - // Verify balances not changed - uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); - assertEq(ownerBalanceBefore, ownerBalanceAfter); - - uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); - assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - - assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); - } - - function testWithdrawZETAWithMessage() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 fungibleModuleBalanceBefore = fungibleModule.balance; - bytes memory message = abi.encodeWithSignature("hello(address)", addr1); - - vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, message); - gateway.withdrawAndCall(amount, message); - - uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); - assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); - - uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); - assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - - // Verify amount is transfered to fungible module - assertEq(fungibleModuleBalanceBefore + 1, fungibleModule.balance); - } - - function testWithdrawZETAWithMessageFailsIfNoAllowance() public { - uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 fungibleModuleBalanceBefore = fungibleModule.balance; - bytes memory message = abi.encodeWithSignature("hello(address)", addr1); - // Remove allowance for gateway - vm.prank(owner); - zetaToken.approve(address(gateway), 0); - - vm.expectRevert(); - gateway.withdrawAndCall(amount, message); - - // Verify balances not changed - uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); - assertEq(ownerBalanceBefore, ownerBalanceAfter); - - uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); - assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - - assertEq(fungibleModuleBalanceBefore, fungibleModule.balance); - } - - function testCall() public { - bytes memory message = abi.encodeWithSignature("hello(address)", addr1); - vm.expectEmit(true, true, true, true, address(gateway)); - emit Call(owner, abi.encodePacked(addr1), message); - gateway.call(abi.encodePacked(addr1), message); - } -} - -contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { - address payable proxy; - GatewayZEVM gateway; - ZRC20New zrc20; - WETH9 zetaToken; - SystemContract systemContract; - TestZContract testZContract; - address owner; - address addr1; - address fungibleModule; - - event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); - event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); - - function setUp() public { - owner = address(this); - addr1 = address(0x1234); - - zetaToken = new WETH9(); - - proxy = payable(address(new ERC1967Proxy( - address(new GatewayZEVM()), - abi.encodeWithSelector(GatewayZEVM.initialize.selector, address(zetaToken)) - ))); - gateway = GatewayZEVM(proxy); - fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); - - testZContract = new TestZContract(); - - vm.startPrank(fungibleModule); - systemContract = new SystemContract(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); - systemContract.setGasCoinZRC20(1, address(zrc20)); - systemContract.setGasPrice(1, 1); - vm.deal(fungibleModule, 1000000000); - zetaToken.deposit{value: 10}(); - zetaToken.approve(address(gateway), 10); - zrc20.deposit(owner, 100000); - vm.stopPrank(); - - vm.startPrank(owner); - zrc20.approve(address(gateway), 100000); - zetaToken.deposit{value: 10}(); - zetaToken.approve(address(gateway), 10); - vm.stopPrank(); - } - - function testDeposit() public { - uint256 amount = 1; - uint256 balanceBefore = zrc20.balanceOf(addr1); - assertEq(0, balanceBefore); - - vm.prank(fungibleModule); - gateway.deposit(address(zrc20), amount, addr1); - - uint256 balanceAfter = zrc20.balanceOf(addr1); - assertEq(amount, balanceAfter); - } - - function testDepositFailsIfSenderNotFungibleModule() public { - uint256 amount = 1; - uint256 balanceBefore = zrc20.balanceOf(addr1); - assertEq(0, balanceBefore); - - vm.prank(owner); - vm.expectRevert(CallerIsNotFungibleModule.selector); - gateway.deposit(address(zrc20), amount, addr1); - - uint256 balanceAfter = zrc20.balanceOf(addr1); - assertEq(0, balanceAfter); - } - - function testDepositFailsIfTargetIsGateway() public { - uint256 amount = 1; - - vm.prank(fungibleModule); - vm.expectRevert(InvalidTarget.selector); - gateway.deposit(address(zrc20), amount, address(gateway)); - } - - function testDepositFailsIfTargetIsFungibleModule() public { - uint256 amount = 1; - vm.prank(fungibleModule); - vm.expectRevert(InvalidTarget.selector); - gateway.deposit(address(zrc20), amount, fungibleModule); - } - - function testExecuteZContract() public { - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectEmit(true, true, true, true, address(testZContract)); - emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); - vm.prank(fungibleModule); - gateway.execute(context, address(zrc20), 1, address(testZContract), message); - } - - function testExecuteZContractFailsIfSenderIsNotFungibleModule() public { - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(CallerIsNotFungibleModule.selector); - vm.prank(owner); - gateway.execute(context, address(zrc20), 1, address(testZContract), message); - } - - function testExecuteRevertZContract() public { - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectEmit(true, true, true, true, address(testZContract)); - emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); - vm.prank(fungibleModule); - gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); - } - - function testExecuteRevertZContractIfSenderIsNotFungibleModule() public { - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(CallerIsNotFungibleModule.selector); - vm.prank(owner); - gateway.executeRevert(context, address(zrc20), 1, address(testZContract), message); - } - - function testDepositZRC20AndCallZContract() public { - uint256 balanceBefore = zrc20.balanceOf(address(testZContract)); - assertEq(0, balanceBefore); - - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectEmit(true, true, true, true, address(testZContract)); - emit ContextData(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); - vm.prank(fungibleModule); - gateway.depositAndCall(context, address(zrc20), 1, address(testZContract), message); - - uint256 balanceAfter = zrc20.balanceOf(address(testZContract)); - assertEq(1, balanceAfter); - } - - function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(CallerIsNotFungibleModule.selector); - vm.prank(owner); - gateway.depositAndCall(context, address(zrc20), 1, address(testZContract), message); - } - - function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() public { - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndCall(context, address(zrc20), 1, fungibleModule, message); - } - - function testDepositZRC20AndCallZContractIfTargetIsGateway() public { - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndCall(context, address(zrc20), 1, address(gateway), message); - } - - function testDepositAndRevertZRC20AndCallZContract() public { - uint256 balanceBefore = zrc20.balanceOf(address(testZContract)); - assertEq(0, balanceBefore); - - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectEmit(true, true, true, true, address(testZContract)); - emit ContextDataRevert(abi.encodePacked(gateway), fungibleModule, 1, address(gateway), "hello"); - vm.prank(fungibleModule); - gateway.depositAndRevert(context, address(zrc20), 1, address(testZContract), message); - - uint256 balanceAfter = zrc20.balanceOf(address(testZContract)); - assertEq(1, balanceAfter); - } - - function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() public { - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(CallerIsNotFungibleModule.selector); - vm.prank(owner); - gateway.depositAndRevert(context, address(zrc20), 1, address(testZContract), message); - } - - function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() public { - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndRevert(context, address(zrc20), 1, fungibleModule, message); - } - - function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() public { - bytes memory message = abi.encode("hello"); - revertContext memory context = revertContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndRevert(context, address(zrc20), 1, address(gateway), message); - } - - function testDepositZETAAndCallZContract() public { - uint256 amount = 1; - uint256 fungibleBalanceBefore = zetaToken.balanceOf(fungibleModule); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 destinationBalanceBefore = address(testZContract).balance; - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectEmit(true, true, true, true, address(testZContract)); - emit ContextData(abi.encodePacked(gateway), fungibleModule, amount, address(gateway), "hello"); - vm.prank(fungibleModule); - gateway.depositAndCall(context, amount, address(testZContract), message); - - uint256 fungibleBalanceAfter = zetaToken.balanceOf(fungibleModule); - assertEq(fungibleBalanceBefore - amount, fungibleBalanceAfter); - - uint256 gatewayBalanceAfter = zetaToken.balanceOf(address(gateway)); - assertEq(gatewayBalanceBefore, gatewayBalanceAfter); - - // Verify amount is transfered to destination - assertEq(destinationBalanceBefore + amount, address(testZContract).balance); - } - - function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() public { - uint256 amount = 1; - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(CallerIsNotFungibleModule.selector); - vm.prank(owner); - gateway.depositAndCall(context, amount, address(testZContract), message); - } - - function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() public { - uint256 amount = 1; - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndCall(context, amount, fungibleModule, message); - } - - function testDepositZETAAndCallZContractFailsIfTargetIsGateway() public { - uint256 amount = 1; - bytes memory message = abi.encode("hello"); - zContext memory context = zContext({ - origin: abi.encodePacked(address(gateway)), - sender: fungibleModule, - chainID: 1 - }); - - vm.expectRevert(InvalidTarget.selector); - vm.prank(fungibleModule); - gateway.depositAndCall(context, amount, address(gateway), message); - } -} \ No newline at end of file diff --git a/testFoundry/ZetaConnectorNative.t.sol b/testFoundry/ZetaConnectorNative.t.sol deleted file mode 100644 index 5e905809..00000000 --- a/testFoundry/ZetaConnectorNative.t.sol +++ /dev/null @@ -1,244 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/evm/GatewayEVM.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; -import "contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "contracts/prototypes/evm/ZetaConnectorNative.sol"; -import "contracts/prototypes/evm/TestERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; -import "contracts/prototypes/evm/IZetaConnector.sol"; - -contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { - using SafeERC20 for IERC20; - - address proxy; - GatewayEVM gateway; - ReceiverEVM receiver; - ERC20CustodyNew custody; - ZetaConnectorNative zetaConnector; - TestERC20 zetaToken; - address owner; - address destination; - address tssAddress; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - zetaToken = new TestERC20("zeta", "ZETA"); - - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zetaToken)) - )); - gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress); - - receiver = new ReceiverEVM(); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - - zetaToken.mint(address(zetaConnector), 5000000); - } - - function testWithdraw() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - - bytes memory data = abi.encodeWithSignature("transfer(address,uint256)", destination, amount); - vm.expectCall(address(zetaToken), 0, data); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit Withdraw(destination, amount); - vm.prank(tssAddress); - zetaConnector.withdraw(destination, amount, internalSendHash); - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount); - } - - function testWithdrawFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdraw(destination, amount, internalSendHash); - } - - function testWithdrawAndCallReceiveERC20() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(zetaToken), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - } - - function testWithdrawAndCallReceiveNoParams() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(zetaToken), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedNoParams(address(gateway)); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the no tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, 0); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndCallReceiveERC20Partial() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(zetaToken), 0, transferData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount / 2); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount / 2); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndRevert() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodePacked("hello"); - uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - bytes memory transferData = abi.encodeWithSignature("transfer(address,uint256)", address(gateway), amount); - vm.expectCall(address(zetaToken), 0, transferData); - // Verify that onRevert callback was called - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedRevert(address(gateway), data); - vm.expectEmit(true, true, true, true, address(gateway)); - emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndRevert(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the receiver address - uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); - assertEq(balanceAfter, amount); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector - amount); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodePacked("hello"); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - } -} \ No newline at end of file diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol deleted file mode 100644 index 915ca8b6..00000000 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ /dev/null @@ -1,249 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; -import "forge-std/Vm.sol"; - -import "contracts/prototypes/evm/GatewayEVM.sol"; -import "contracts/prototypes/evm/ReceiverEVM.sol"; -import "contracts/prototypes/evm/ERC20CustodyNew.sol"; -import "contracts/prototypes/evm/ZetaConnectorNonNative.sol"; -import "contracts/prototypes/evm/TestERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; - -import "contracts/evm/Zeta.non-eth.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; -import "contracts/prototypes/evm/IZetaConnector.sol"; - -contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { - using SafeERC20 for IERC20; - - address proxy; - GatewayEVM gateway; - ReceiverEVM receiver; - ERC20CustodyNew custody; - ZetaConnectorNonNative zetaConnector; - ZetaNonEth zetaToken; - address owner; - address destination; - address tssAddress; - - function setUp() public { - owner = address(this); - destination = address(0x1234); - tssAddress = address(0x5678); - - zetaToken = new ZetaNonEth(tssAddress, tssAddress); - - proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zetaToken)) - )); - gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); - - vm.prank(tssAddress); - zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); - - receiver = new ReceiverEVM(); - - vm.deal(tssAddress, 1 ether); - - vm.startPrank(tssAddress); - gateway.setCustody(address(custody)); - gateway.setConnector(address(zetaConnector)); - vm.stopPrank(); - } - - function testWithdraw() public { - uint256 amount = 100000; - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - bytes32 internalSendHash = ""; - - bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, internalSendHash); - vm.expectCall(address(zetaToken), 0, data); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit Withdraw(destination, amount); - vm.prank(tssAddress); - zetaConnector.withdraw(destination, amount, internalSendHash); - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount); - } - - function testWithdrawFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdraw(destination, amount, internalSendHash); - } - - function testWithdrawAndCallReceiveERC20() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceBeforeZetaConnector, 0); - - bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); - vm.expectCall(address(zetaToken), 0, mintData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount); - - // Verify that zeta connector doesn't hold any tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, 0); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - } - - function testWithdrawAndCallReceiveNoParams() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceBeforeZetaConnector, 0); - - bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); - vm.expectCall(address(zetaToken), 0, mintData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedNoParams(address(gateway)); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the no tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, 0); - - // Verify that zeta connector doesn't hold any tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, 0); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndCallReceiveERC20Partial() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination); - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceBeforeZetaConnector, 0); - - bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); - vm.expectCall(address(zetaToken), 0, mintData); - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndCall(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the destination address - uint256 balanceAfter = zetaToken.balanceOf(destination); - assertEq(balanceAfter, amount / 2); - - // Verify that zeta connector doesn't hold any tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, 0); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndRevert() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodePacked("hello"); - uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); - assertEq(balanceBefore, 0); - uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); - vm.expectCall(address(zetaToken), 0, mintData); - // Verify that onRevert callback was called - vm.expectEmit(true, true, true, true, address(receiver)); - emit ReceivedRevert(address(gateway), data); - vm.expectEmit(true, true, true, true, address(gateway)); - emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit WithdrawAndRevert(address(receiver), amount, data); - vm.prank(tssAddress); - zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - - // Verify that the tokens were transferred to the receiver address - uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); - assertEq(balanceAfter, amount); - - // Verify that zeta connector doesn't get more tokens - uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); - - // Verify that the approval was reset - uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - assertEq(allowance, 0); - - // Verify that gateway doesn't hold any tokens - uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - assertEq(balanceGateway, 0); - } - - function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodePacked("hello"); - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - } -} \ No newline at end of file diff --git a/.env.example b/v1/.env.example similarity index 100% rename from .env.example rename to v1/.env.example diff --git a/.eslintignore b/v1/.eslintignore similarity index 100% rename from .eslintignore rename to v1/.eslintignore diff --git a/.eslintrc.js b/v1/.eslintrc.js similarity index 100% rename from .eslintrc.js rename to v1/.eslintrc.js diff --git a/Dockerfile b/v1/Dockerfile similarity index 100% rename from Dockerfile rename to v1/Dockerfile diff --git a/contracts/evm/ERC20Custody.sol b/v1/contracts/evm/ERC20Custody.sol similarity index 100% rename from contracts/evm/ERC20Custody.sol rename to v1/contracts/evm/ERC20Custody.sol diff --git a/contracts/evm/Zeta.eth.sol b/v1/contracts/evm/Zeta.eth.sol similarity index 100% rename from contracts/evm/Zeta.eth.sol rename to v1/contracts/evm/Zeta.eth.sol diff --git a/contracts/evm/Zeta.non-eth.sol b/v1/contracts/evm/Zeta.non-eth.sol similarity index 100% rename from contracts/evm/Zeta.non-eth.sol rename to v1/contracts/evm/Zeta.non-eth.sol diff --git a/contracts/evm/ZetaConnector.base.sol b/v1/contracts/evm/ZetaConnector.base.sol similarity index 100% rename from contracts/evm/ZetaConnector.base.sol rename to v1/contracts/evm/ZetaConnector.base.sol diff --git a/contracts/evm/ZetaConnector.eth.sol b/v1/contracts/evm/ZetaConnector.eth.sol similarity index 100% rename from contracts/evm/ZetaConnector.eth.sol rename to v1/contracts/evm/ZetaConnector.eth.sol diff --git a/contracts/evm/ZetaConnector.non-eth.sol b/v1/contracts/evm/ZetaConnector.non-eth.sol similarity index 100% rename from contracts/evm/ZetaConnector.non-eth.sol rename to v1/contracts/evm/ZetaConnector.non-eth.sol diff --git a/contracts/evm/interfaces/ConnectorErrors.sol b/v1/contracts/evm/interfaces/ConnectorErrors.sol similarity index 100% rename from contracts/evm/interfaces/ConnectorErrors.sol rename to v1/contracts/evm/interfaces/ConnectorErrors.sol diff --git a/contracts/evm/interfaces/ZetaErrors.sol b/v1/contracts/evm/interfaces/ZetaErrors.sol similarity index 100% rename from contracts/evm/interfaces/ZetaErrors.sol rename to v1/contracts/evm/interfaces/ZetaErrors.sol diff --git a/contracts/evm/interfaces/ZetaInteractorErrors.sol b/v1/contracts/evm/interfaces/ZetaInteractorErrors.sol similarity index 100% rename from contracts/evm/interfaces/ZetaInteractorErrors.sol rename to v1/contracts/evm/interfaces/ZetaInteractorErrors.sol diff --git a/contracts/evm/interfaces/ZetaInterfaces.sol b/v1/contracts/evm/interfaces/ZetaInterfaces.sol similarity index 100% rename from contracts/evm/interfaces/ZetaInterfaces.sol rename to v1/contracts/evm/interfaces/ZetaInterfaces.sol diff --git a/contracts/evm/interfaces/ZetaNonEthInterface.sol b/v1/contracts/evm/interfaces/ZetaNonEthInterface.sol similarity index 100% rename from contracts/evm/interfaces/ZetaNonEthInterface.sol rename to v1/contracts/evm/interfaces/ZetaNonEthInterface.sol diff --git a/contracts/evm/testing/AttackerContract.sol b/v1/contracts/evm/testing/AttackerContract.sol similarity index 100% rename from contracts/evm/testing/AttackerContract.sol rename to v1/contracts/evm/testing/AttackerContract.sol diff --git a/contracts/evm/testing/ERC20Mock.sol b/v1/contracts/evm/testing/ERC20Mock.sol similarity index 100% rename from contracts/evm/testing/ERC20Mock.sol rename to v1/contracts/evm/testing/ERC20Mock.sol diff --git a/contracts/evm/testing/TestUniswapV3Contracts.sol b/v1/contracts/evm/testing/TestUniswapV3Contracts.sol similarity index 100% rename from contracts/evm/testing/TestUniswapV3Contracts.sol rename to v1/contracts/evm/testing/TestUniswapV3Contracts.sol diff --git a/contracts/evm/testing/ZetaInteractorMock.sol b/v1/contracts/evm/testing/ZetaInteractorMock.sol similarity index 100% rename from contracts/evm/testing/ZetaInteractorMock.sol rename to v1/contracts/evm/testing/ZetaInteractorMock.sol diff --git a/contracts/evm/testing/ZetaReceiverMock.sol b/v1/contracts/evm/testing/ZetaReceiverMock.sol similarity index 100% rename from contracts/evm/testing/ZetaReceiverMock.sol rename to v1/contracts/evm/testing/ZetaReceiverMock.sol diff --git a/contracts/evm/tools/ImmutableCreate2Factory.sol b/v1/contracts/evm/tools/ImmutableCreate2Factory.sol similarity index 100% rename from contracts/evm/tools/ImmutableCreate2Factory.sol rename to v1/contracts/evm/tools/ImmutableCreate2Factory.sol diff --git a/contracts/evm/tools/ZetaInteractor.sol b/v1/contracts/evm/tools/ZetaInteractor.sol similarity index 100% rename from contracts/evm/tools/ZetaInteractor.sol rename to v1/contracts/evm/tools/ZetaInteractor.sol diff --git a/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol b/v1/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol similarity index 100% rename from contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol rename to v1/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol diff --git a/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol b/v1/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol similarity index 100% rename from contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol rename to v1/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol diff --git a/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol b/v1/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol similarity index 100% rename from contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol rename to v1/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol diff --git a/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol b/v1/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol similarity index 100% rename from contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol rename to v1/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol diff --git a/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol b/v1/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol similarity index 100% rename from contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol rename to v1/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol diff --git a/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol b/v1/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol similarity index 100% rename from contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol rename to v1/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol diff --git a/contracts/evm/tools/interfaces/TridentIPoolRouter.sol b/v1/contracts/evm/tools/interfaces/TridentIPoolRouter.sol similarity index 100% rename from contracts/evm/tools/interfaces/TridentIPoolRouter.sol rename to v1/contracts/evm/tools/interfaces/TridentIPoolRouter.sol diff --git a/contracts/zevm/SystemContract.sol b/v1/contracts/zevm/SystemContract.sol similarity index 100% rename from contracts/zevm/SystemContract.sol rename to v1/contracts/zevm/SystemContract.sol diff --git a/contracts/zevm/Uniswap.sol b/v1/contracts/zevm/Uniswap.sol similarity index 100% rename from contracts/zevm/Uniswap.sol rename to v1/contracts/zevm/Uniswap.sol diff --git a/contracts/zevm/UniswapPeriphery.sol b/v1/contracts/zevm/UniswapPeriphery.sol similarity index 100% rename from contracts/zevm/UniswapPeriphery.sol rename to v1/contracts/zevm/UniswapPeriphery.sol diff --git a/contracts/zevm/WZETA.sol b/v1/contracts/zevm/WZETA.sol similarity index 100% rename from contracts/zevm/WZETA.sol rename to v1/contracts/zevm/WZETA.sol diff --git a/contracts/zevm/ZRC20.sol b/v1/contracts/zevm/ZRC20.sol similarity index 100% rename from contracts/zevm/ZRC20.sol rename to v1/contracts/zevm/ZRC20.sol diff --git a/contracts/zevm/ZRC20New.sol b/v1/contracts/zevm/ZRC20New.sol similarity index 100% rename from contracts/zevm/ZRC20New.sol rename to v1/contracts/zevm/ZRC20New.sol diff --git a/contracts/zevm/ZetaConnectorZEVM.sol b/v1/contracts/zevm/ZetaConnectorZEVM.sol similarity index 100% rename from contracts/zevm/ZetaConnectorZEVM.sol rename to v1/contracts/zevm/ZetaConnectorZEVM.sol diff --git a/contracts/zevm/interfaces/ISystem.sol b/v1/contracts/zevm/interfaces/ISystem.sol similarity index 100% rename from contracts/zevm/interfaces/ISystem.sol rename to v1/contracts/zevm/interfaces/ISystem.sol diff --git a/contracts/zevm/interfaces/IUniswapV2Router01.sol b/v1/contracts/zevm/interfaces/IUniswapV2Router01.sol similarity index 100% rename from contracts/zevm/interfaces/IUniswapV2Router01.sol rename to v1/contracts/zevm/interfaces/IUniswapV2Router01.sol diff --git a/contracts/zevm/interfaces/IUniswapV2Router02.sol b/v1/contracts/zevm/interfaces/IUniswapV2Router02.sol similarity index 100% rename from contracts/zevm/interfaces/IUniswapV2Router02.sol rename to v1/contracts/zevm/interfaces/IUniswapV2Router02.sol diff --git a/contracts/zevm/interfaces/IWZETA.sol b/v1/contracts/zevm/interfaces/IWZETA.sol similarity index 100% rename from contracts/zevm/interfaces/IWZETA.sol rename to v1/contracts/zevm/interfaces/IWZETA.sol diff --git a/contracts/zevm/interfaces/IZRC20.sol b/v1/contracts/zevm/interfaces/IZRC20.sol similarity index 100% rename from contracts/zevm/interfaces/IZRC20.sol rename to v1/contracts/zevm/interfaces/IZRC20.sol diff --git a/contracts/zevm/interfaces/zContract.sol b/v1/contracts/zevm/interfaces/zContract.sol similarity index 100% rename from contracts/zevm/interfaces/zContract.sol rename to v1/contracts/zevm/interfaces/zContract.sol diff --git a/contracts/zevm/testing/SystemContractMock.sol b/v1/contracts/zevm/testing/SystemContractMock.sol similarity index 100% rename from contracts/zevm/testing/SystemContractMock.sol rename to v1/contracts/zevm/testing/SystemContractMock.sol diff --git a/data/addresses.json b/v1/data/addresses.json similarity index 100% rename from data/addresses.json rename to v1/data/addresses.json diff --git a/data/addresses.mainnet.json b/v1/data/addresses.mainnet.json similarity index 100% rename from data/addresses.mainnet.json rename to v1/data/addresses.mainnet.json diff --git a/data/addresses.testnet.json b/v1/data/addresses.testnet.json similarity index 100% rename from data/addresses.testnet.json rename to v1/data/addresses.testnet.json diff --git a/data/readme.md b/v1/data/readme.md similarity index 100% rename from data/readme.md rename to v1/data/readme.md diff --git a/docs/.gitignore b/v1/docs/.gitignore similarity index 100% rename from docs/.gitignore rename to v1/docs/.gitignore diff --git a/docs/book.css b/v1/docs/book.css similarity index 100% rename from docs/book.css rename to v1/docs/book.css diff --git a/docs/book.toml b/v1/docs/book.toml similarity index 100% rename from docs/book.toml rename to v1/docs/book.toml diff --git a/docs/solidity.min.js b/v1/docs/solidity.min.js similarity index 100% rename from docs/solidity.min.js rename to v1/docs/solidity.min.js diff --git a/docs/src/README.md b/v1/docs/src/README.md similarity index 100% rename from docs/src/README.md rename to v1/docs/src/README.md diff --git a/docs/src/SUMMARY.md b/v1/docs/src/SUMMARY.md similarity index 100% rename from docs/src/SUMMARY.md rename to v1/docs/src/SUMMARY.md diff --git a/docs/src/contracts/README.md b/v1/docs/src/contracts/README.md similarity index 100% rename from docs/src/contracts/README.md rename to v1/docs/src/contracts/README.md diff --git a/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md b/v1/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md similarity index 100% rename from docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md rename to v1/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md diff --git a/docs/src/contracts/evm/README.md b/v1/docs/src/contracts/evm/README.md similarity index 100% rename from docs/src/contracts/evm/README.md rename to v1/docs/src/contracts/evm/README.md diff --git a/docs/src/contracts/evm/Zeta.eth.sol/contract.ZetaEth.md b/v1/docs/src/contracts/evm/Zeta.eth.sol/contract.ZetaEth.md similarity index 100% rename from docs/src/contracts/evm/Zeta.eth.sol/contract.ZetaEth.md rename to v1/docs/src/contracts/evm/Zeta.eth.sol/contract.ZetaEth.md diff --git a/docs/src/contracts/evm/Zeta.non-eth.sol/contract.ZetaNonEth.md b/v1/docs/src/contracts/evm/Zeta.non-eth.sol/contract.ZetaNonEth.md similarity index 100% rename from docs/src/contracts/evm/Zeta.non-eth.sol/contract.ZetaNonEth.md rename to v1/docs/src/contracts/evm/Zeta.non-eth.sol/contract.ZetaNonEth.md diff --git a/docs/src/contracts/evm/ZetaConnector.base.sol/contract.ZetaConnectorBase.md b/v1/docs/src/contracts/evm/ZetaConnector.base.sol/contract.ZetaConnectorBase.md similarity index 100% rename from docs/src/contracts/evm/ZetaConnector.base.sol/contract.ZetaConnectorBase.md rename to v1/docs/src/contracts/evm/ZetaConnector.base.sol/contract.ZetaConnectorBase.md diff --git a/docs/src/contracts/evm/ZetaConnector.eth.sol/contract.ZetaConnectorEth.md b/v1/docs/src/contracts/evm/ZetaConnector.eth.sol/contract.ZetaConnectorEth.md similarity index 100% rename from docs/src/contracts/evm/ZetaConnector.eth.sol/contract.ZetaConnectorEth.md rename to v1/docs/src/contracts/evm/ZetaConnector.eth.sol/contract.ZetaConnectorEth.md diff --git a/docs/src/contracts/evm/ZetaConnector.non-eth.sol/contract.ZetaConnectorNonEth.md b/v1/docs/src/contracts/evm/ZetaConnector.non-eth.sol/contract.ZetaConnectorNonEth.md similarity index 100% rename from docs/src/contracts/evm/ZetaConnector.non-eth.sol/contract.ZetaConnectorNonEth.md rename to v1/docs/src/contracts/evm/ZetaConnector.non-eth.sol/contract.ZetaConnectorNonEth.md diff --git a/docs/src/contracts/evm/interfaces/ConnectorErrors.sol/interface.ConnectorErrors.md b/v1/docs/src/contracts/evm/interfaces/ConnectorErrors.sol/interface.ConnectorErrors.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ConnectorErrors.sol/interface.ConnectorErrors.md rename to v1/docs/src/contracts/evm/interfaces/ConnectorErrors.sol/interface.ConnectorErrors.md diff --git a/docs/src/contracts/evm/interfaces/README.md b/v1/docs/src/contracts/evm/interfaces/README.md similarity index 100% rename from docs/src/contracts/evm/interfaces/README.md rename to v1/docs/src/contracts/evm/interfaces/README.md diff --git a/docs/src/contracts/evm/interfaces/ZetaErrors.sol/interface.ZetaErrors.md b/v1/docs/src/contracts/evm/interfaces/ZetaErrors.sol/interface.ZetaErrors.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaErrors.sol/interface.ZetaErrors.md rename to v1/docs/src/contracts/evm/interfaces/ZetaErrors.sol/interface.ZetaErrors.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInteractorErrors.sol/interface.ZetaInteractorErrors.md b/v1/docs/src/contracts/evm/interfaces/ZetaInteractorErrors.sol/interface.ZetaInteractorErrors.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInteractorErrors.sol/interface.ZetaInteractorErrors.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInteractorErrors.sol/interface.ZetaInteractorErrors.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaCommonErrors.md b/v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaCommonErrors.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaCommonErrors.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaCommonErrors.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaConnector.md b/v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaConnector.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaConnector.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaConnector.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaInterfaces.md b/v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaInterfaces.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaInterfaces.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaInterfaces.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaReceiver.md b/v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaReceiver.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaReceiver.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaReceiver.md diff --git a/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaTokenConsumer.md b/v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaTokenConsumer.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaTokenConsumer.md rename to v1/docs/src/contracts/evm/interfaces/ZetaInterfaces.sol/interface.ZetaTokenConsumer.md diff --git a/docs/src/contracts/evm/interfaces/ZetaNonEthInterface.sol/interface.ZetaNonEthInterface.md b/v1/docs/src/contracts/evm/interfaces/ZetaNonEthInterface.sol/interface.ZetaNonEthInterface.md similarity index 100% rename from docs/src/contracts/evm/interfaces/ZetaNonEthInterface.sol/interface.ZetaNonEthInterface.md rename to v1/docs/src/contracts/evm/interfaces/ZetaNonEthInterface.sol/interface.ZetaNonEthInterface.md diff --git a/docs/src/contracts/evm/testing/AttackerContract.sol/contract.AttackerContract.md b/v1/docs/src/contracts/evm/testing/AttackerContract.sol/contract.AttackerContract.md similarity index 100% rename from docs/src/contracts/evm/testing/AttackerContract.sol/contract.AttackerContract.md rename to v1/docs/src/contracts/evm/testing/AttackerContract.sol/contract.AttackerContract.md diff --git a/docs/src/contracts/evm/testing/AttackerContract.sol/interface.Victim.md b/v1/docs/src/contracts/evm/testing/AttackerContract.sol/interface.Victim.md similarity index 100% rename from docs/src/contracts/evm/testing/AttackerContract.sol/interface.Victim.md rename to v1/docs/src/contracts/evm/testing/AttackerContract.sol/interface.Victim.md diff --git a/docs/src/contracts/evm/testing/ERC20Mock.sol/contract.ERC20Mock.md b/v1/docs/src/contracts/evm/testing/ERC20Mock.sol/contract.ERC20Mock.md similarity index 100% rename from docs/src/contracts/evm/testing/ERC20Mock.sol/contract.ERC20Mock.md rename to v1/docs/src/contracts/evm/testing/ERC20Mock.sol/contract.ERC20Mock.md diff --git a/docs/src/contracts/evm/testing/README.md b/v1/docs/src/contracts/evm/testing/README.md similarity index 100% rename from docs/src/contracts/evm/testing/README.md rename to v1/docs/src/contracts/evm/testing/README.md diff --git a/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.INonfungiblePositionManager.md b/v1/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.INonfungiblePositionManager.md similarity index 100% rename from docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.INonfungiblePositionManager.md rename to v1/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.INonfungiblePositionManager.md diff --git a/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.IPoolInitializer.md b/v1/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.IPoolInitializer.md similarity index 100% rename from docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.IPoolInitializer.md rename to v1/docs/src/contracts/evm/testing/TestUniswapV3Contracts.sol/interface.IPoolInitializer.md diff --git a/docs/src/contracts/evm/testing/ZetaInteractorMock.sol/contract.ZetaInteractorMock.md b/v1/docs/src/contracts/evm/testing/ZetaInteractorMock.sol/contract.ZetaInteractorMock.md similarity index 100% rename from docs/src/contracts/evm/testing/ZetaInteractorMock.sol/contract.ZetaInteractorMock.md rename to v1/docs/src/contracts/evm/testing/ZetaInteractorMock.sol/contract.ZetaInteractorMock.md diff --git a/docs/src/contracts/evm/testing/ZetaReceiverMock.sol/contract.ZetaReceiverMock.md b/v1/docs/src/contracts/evm/testing/ZetaReceiverMock.sol/contract.ZetaReceiverMock.md similarity index 100% rename from docs/src/contracts/evm/testing/ZetaReceiverMock.sol/contract.ZetaReceiverMock.md rename to v1/docs/src/contracts/evm/testing/ZetaReceiverMock.sol/contract.ZetaReceiverMock.md diff --git a/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/contract.ImmutableCreate2Factory.md b/v1/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/contract.ImmutableCreate2Factory.md similarity index 100% rename from docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/contract.ImmutableCreate2Factory.md rename to v1/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/contract.ImmutableCreate2Factory.md diff --git a/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/interface.Ownable.md b/v1/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/interface.Ownable.md similarity index 100% rename from docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/interface.Ownable.md rename to v1/docs/src/contracts/evm/tools/ImmutableCreate2Factory.sol/interface.Ownable.md diff --git a/docs/src/contracts/evm/tools/README.md b/v1/docs/src/contracts/evm/tools/README.md similarity index 100% rename from docs/src/contracts/evm/tools/README.md rename to v1/docs/src/contracts/evm/tools/README.md diff --git a/docs/src/contracts/evm/tools/ZetaInteractor.sol/abstract.ZetaInteractor.md b/v1/docs/src/contracts/evm/tools/ZetaInteractor.sol/abstract.ZetaInteractor.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaInteractor.sol/abstract.ZetaInteractor.md rename to v1/docs/src/contracts/evm/tools/ZetaInteractor.sol/abstract.ZetaInteractor.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/contract.ZetaTokenConsumerPancakeV3.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/contract.ZetaTokenConsumerPancakeV3.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/contract.ZetaTokenConsumerPancakeV3.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/contract.ZetaTokenConsumerPancakeV3.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ISwapRouterPancake.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ISwapRouterPancake.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ISwapRouterPancake.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ISwapRouterPancake.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.WETH9.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.WETH9.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.WETH9.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.WETH9.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/contract.ZetaTokenConsumerTrident.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/contract.ZetaTokenConsumerTrident.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/contract.ZetaTokenConsumerTrident.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/contract.ZetaTokenConsumerTrident.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.WETH9.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.WETH9.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.WETH9.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.WETH9.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.ZetaTokenConsumerTridentErrors.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.ZetaTokenConsumerTridentErrors.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.ZetaTokenConsumerTridentErrors.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/interface.ZetaTokenConsumerTridentErrors.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/contract.ZetaTokenConsumerUniV2.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/contract.ZetaTokenConsumerUniV2.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/contract.ZetaTokenConsumerUniV2.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/contract.ZetaTokenConsumerUniV2.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/interface.ZetaTokenConsumerUniV2Errors.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/interface.ZetaTokenConsumerUniV2Errors.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/interface.ZetaTokenConsumerUniV2Errors.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/interface.ZetaTokenConsumerUniV2Errors.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/contract.ZetaTokenConsumerUniV3.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/contract.ZetaTokenConsumerUniV3.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/contract.ZetaTokenConsumerUniV3.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/contract.ZetaTokenConsumerUniV3.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.WETH9.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.WETH9.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.WETH9.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.WETH9.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/interface.ZetaTokenConsumerUniV3Errors.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/contract.ZetaTokenConsumerZEVM.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/contract.ZetaTokenConsumerZEVM.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/contract.ZetaTokenConsumerZEVM.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/contract.ZetaTokenConsumerZEVM.md diff --git a/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/interface.ZetaTokenConsumerZEVMErrors.md b/v1/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/interface.ZetaTokenConsumerZEVMErrors.md similarity index 100% rename from docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/interface.ZetaTokenConsumerZEVMErrors.md rename to v1/docs/src/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/interface.ZetaTokenConsumerZEVMErrors.md diff --git a/docs/src/contracts/evm/tools/interfaces/README.md b/v1/docs/src/contracts/evm/tools/interfaces/README.md similarity index 100% rename from docs/src/contracts/evm/tools/interfaces/README.md rename to v1/docs/src/contracts/evm/tools/interfaces/README.md diff --git a/docs/src/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/interface.ConcentratedLiquidityPoolFactory.md b/v1/docs/src/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/interface.ConcentratedLiquidityPoolFactory.md similarity index 100% rename from docs/src/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/interface.ConcentratedLiquidityPoolFactory.md rename to v1/docs/src/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/interface.ConcentratedLiquidityPoolFactory.md diff --git a/docs/src/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/interface.IPoolRouter.md b/v1/docs/src/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/interface.IPoolRouter.md similarity index 100% rename from docs/src/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/interface.IPoolRouter.md rename to v1/docs/src/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/interface.IPoolRouter.md diff --git a/docs/src/contracts/zevm/Interfaces.sol/enum.CoinType.md b/v1/docs/src/contracts/zevm/Interfaces.sol/enum.CoinType.md similarity index 100% rename from docs/src/contracts/zevm/Interfaces.sol/enum.CoinType.md rename to v1/docs/src/contracts/zevm/Interfaces.sol/enum.CoinType.md diff --git a/docs/src/contracts/zevm/Interfaces.sol/interface.ISystem.md b/v1/docs/src/contracts/zevm/Interfaces.sol/interface.ISystem.md similarity index 100% rename from docs/src/contracts/zevm/Interfaces.sol/interface.ISystem.md rename to v1/docs/src/contracts/zevm/Interfaces.sol/interface.ISystem.md diff --git a/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20.md b/v1/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20.md similarity index 100% rename from docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20.md rename to v1/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20.md diff --git a/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20Metadata.md b/v1/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20Metadata.md similarity index 100% rename from docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20Metadata.md rename to v1/docs/src/contracts/zevm/Interfaces.sol/interface.IZRC20Metadata.md diff --git a/docs/src/contracts/zevm/README.md b/v1/docs/src/contracts/zevm/README.md similarity index 100% rename from docs/src/contracts/zevm/README.md rename to v1/docs/src/contracts/zevm/README.md diff --git a/docs/src/contracts/zevm/SystemContract.sol/contract.SystemContract.md b/v1/docs/src/contracts/zevm/SystemContract.sol/contract.SystemContract.md similarity index 100% rename from docs/src/contracts/zevm/SystemContract.sol/contract.SystemContract.md rename to v1/docs/src/contracts/zevm/SystemContract.sol/contract.SystemContract.md diff --git a/docs/src/contracts/zevm/SystemContract.sol/interface.SystemContractErrors.md b/v1/docs/src/contracts/zevm/SystemContract.sol/interface.SystemContractErrors.md similarity index 100% rename from docs/src/contracts/zevm/SystemContract.sol/interface.SystemContractErrors.md rename to v1/docs/src/contracts/zevm/SystemContract.sol/interface.SystemContractErrors.md diff --git a/docs/src/contracts/zevm/Uniswap.sol/contract.UniswapImports.md b/v1/docs/src/contracts/zevm/Uniswap.sol/contract.UniswapImports.md similarity index 100% rename from docs/src/contracts/zevm/Uniswap.sol/contract.UniswapImports.md rename to v1/docs/src/contracts/zevm/Uniswap.sol/contract.UniswapImports.md diff --git a/docs/src/contracts/zevm/UniswapPeriphery.sol/contract.UniswapImports.md b/v1/docs/src/contracts/zevm/UniswapPeriphery.sol/contract.UniswapImports.md similarity index 100% rename from docs/src/contracts/zevm/UniswapPeriphery.sol/contract.UniswapImports.md rename to v1/docs/src/contracts/zevm/UniswapPeriphery.sol/contract.UniswapImports.md diff --git a/docs/src/contracts/zevm/WZETA.sol/contract.WETH9.md b/v1/docs/src/contracts/zevm/WZETA.sol/contract.WETH9.md similarity index 100% rename from docs/src/contracts/zevm/WZETA.sol/contract.WETH9.md rename to v1/docs/src/contracts/zevm/WZETA.sol/contract.WETH9.md diff --git a/docs/src/contracts/zevm/ZRC20.sol/contract.ZRC20.md b/v1/docs/src/contracts/zevm/ZRC20.sol/contract.ZRC20.md similarity index 100% rename from docs/src/contracts/zevm/ZRC20.sol/contract.ZRC20.md rename to v1/docs/src/contracts/zevm/ZRC20.sol/contract.ZRC20.md diff --git a/docs/src/contracts/zevm/ZRC20.sol/interface.ZRC20Errors.md b/v1/docs/src/contracts/zevm/ZRC20.sol/interface.ZRC20Errors.md similarity index 100% rename from docs/src/contracts/zevm/ZRC20.sol/interface.ZRC20Errors.md rename to v1/docs/src/contracts/zevm/ZRC20.sol/interface.ZRC20Errors.md diff --git a/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/contract.ZetaConnectorZEVM.md b/v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/contract.ZetaConnectorZEVM.md similarity index 100% rename from docs/src/contracts/zevm/ZetaConnectorZEVM.sol/contract.ZetaConnectorZEVM.md rename to v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/contract.ZetaConnectorZEVM.md diff --git a/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaInterfaces.md b/v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaInterfaces.md similarity index 100% rename from docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaInterfaces.md rename to v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaInterfaces.md diff --git a/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaReceiver.md b/v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaReceiver.md similarity index 100% rename from docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaReceiver.md rename to v1/docs/src/contracts/zevm/ZetaConnectorZEVM.sol/interface.ZetaReceiver.md diff --git a/docs/src/contracts/zevm/interfaces/IUniswapV2Router01.sol/interface.IUniswapV2Router01.md b/v1/docs/src/contracts/zevm/interfaces/IUniswapV2Router01.sol/interface.IUniswapV2Router01.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/IUniswapV2Router01.sol/interface.IUniswapV2Router01.md rename to v1/docs/src/contracts/zevm/interfaces/IUniswapV2Router01.sol/interface.IUniswapV2Router01.md diff --git a/docs/src/contracts/zevm/interfaces/IUniswapV2Router02.sol/interface.IUniswapV2Router02.md b/v1/docs/src/contracts/zevm/interfaces/IUniswapV2Router02.sol/interface.IUniswapV2Router02.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/IUniswapV2Router02.sol/interface.IUniswapV2Router02.md rename to v1/docs/src/contracts/zevm/interfaces/IUniswapV2Router02.sol/interface.IUniswapV2Router02.md diff --git a/docs/src/contracts/zevm/interfaces/IWZETA.sol/interface.IWETH9.md b/v1/docs/src/contracts/zevm/interfaces/IWZETA.sol/interface.IWETH9.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/IWZETA.sol/interface.IWETH9.md rename to v1/docs/src/contracts/zevm/interfaces/IWZETA.sol/interface.IWETH9.md diff --git a/docs/src/contracts/zevm/interfaces/IZRC20.sol/interface.IZRC20.md b/v1/docs/src/contracts/zevm/interfaces/IZRC20.sol/interface.IZRC20.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/IZRC20.sol/interface.IZRC20.md rename to v1/docs/src/contracts/zevm/interfaces/IZRC20.sol/interface.IZRC20.md diff --git a/docs/src/contracts/zevm/interfaces/README.md b/v1/docs/src/contracts/zevm/interfaces/README.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/README.md rename to v1/docs/src/contracts/zevm/interfaces/README.md diff --git a/docs/src/contracts/zevm/interfaces/zContract.sol/interface.zContract.md b/v1/docs/src/contracts/zevm/interfaces/zContract.sol/interface.zContract.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/zContract.sol/interface.zContract.md rename to v1/docs/src/contracts/zevm/interfaces/zContract.sol/interface.zContract.md diff --git a/docs/src/contracts/zevm/interfaces/zContract.sol/struct.zContext.md b/v1/docs/src/contracts/zevm/interfaces/zContract.sol/struct.zContext.md similarity index 100% rename from docs/src/contracts/zevm/interfaces/zContract.sol/struct.zContext.md rename to v1/docs/src/contracts/zevm/interfaces/zContract.sol/struct.zContext.md diff --git a/docs/src/contracts/zevm/testing/README.md b/v1/docs/src/contracts/zevm/testing/README.md similarity index 100% rename from docs/src/contracts/zevm/testing/README.md rename to v1/docs/src/contracts/zevm/testing/README.md diff --git a/docs/src/contracts/zevm/testing/SystemContractMock.sol/contract.SystemContractMock.md b/v1/docs/src/contracts/zevm/testing/SystemContractMock.sol/contract.SystemContractMock.md similarity index 100% rename from docs/src/contracts/zevm/testing/SystemContractMock.sol/contract.SystemContractMock.md rename to v1/docs/src/contracts/zevm/testing/SystemContractMock.sol/contract.SystemContractMock.md diff --git a/docs/src/contracts/zevm/testing/SystemContractMock.sol/interface.SystemContractErrors.md b/v1/docs/src/contracts/zevm/testing/SystemContractMock.sol/interface.SystemContractErrors.md similarity index 100% rename from docs/src/contracts/zevm/testing/SystemContractMock.sol/interface.SystemContractErrors.md rename to v1/docs/src/contracts/zevm/testing/SystemContractMock.sol/interface.SystemContractErrors.md diff --git a/go.mod b/v1/go.mod similarity index 100% rename from go.mod rename to v1/go.mod diff --git a/go.sum b/v1/go.sum similarity index 100% rename from go.sum rename to v1/go.sum diff --git a/hardhat.config.ts b/v1/hardhat.config.ts similarity index 97% rename from hardhat.config.ts rename to v1/hardhat.config.ts index 61fb6b4c..16132dbe 100644 --- a/hardhat.config.ts +++ b/v1/hardhat.config.ts @@ -9,7 +9,6 @@ import "hardhat-gas-reporter"; import "./tasks/addresses"; import "./tasks/localnet"; import "@openzeppelin/hardhat-upgrades"; -import "@nomicfoundation/hardhat-foundry"; import { getHardhatConfigNetworks } from "@zetachain/networks"; import * as dotenv from "dotenv"; diff --git a/lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts b/v1/lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts similarity index 100% rename from lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts rename to v1/lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers.ts diff --git a/lib/address.helpers.ts b/v1/lib/address.helpers.ts similarity index 100% rename from lib/address.helpers.ts rename to v1/lib/address.helpers.ts diff --git a/lib/address.tools.ts b/v1/lib/address.tools.ts similarity index 100% rename from lib/address.tools.ts rename to v1/lib/address.tools.ts diff --git a/lib/addresses.ts b/v1/lib/addresses.ts similarity index 100% rename from lib/addresses.ts rename to v1/lib/addresses.ts diff --git a/lib/contracts.constants.ts b/v1/lib/contracts.constants.ts similarity index 100% rename from lib/contracts.constants.ts rename to v1/lib/contracts.constants.ts diff --git a/lib/contracts.helpers.ts b/v1/lib/contracts.helpers.ts similarity index 100% rename from lib/contracts.helpers.ts rename to v1/lib/contracts.helpers.ts diff --git a/lib/deterministic-deploy.helpers.ts b/v1/lib/deterministic-deploy.helpers.ts similarity index 100% rename from lib/deterministic-deploy.helpers.ts rename to v1/lib/deterministic-deploy.helpers.ts diff --git a/lib/index.ts b/v1/lib/index.ts similarity index 100% rename from lib/index.ts rename to v1/lib/index.ts diff --git a/lib/types.ts b/v1/lib/types.ts similarity index 100% rename from lib/types.ts rename to v1/lib/types.ts diff --git a/package.json b/v1/package.json similarity index 95% rename from package.json rename to v1/package.json index 852b6aee..6265620f 100644 --- a/package.json +++ b/v1/package.json @@ -81,8 +81,6 @@ "scripts": { "build": "yarn compile && npx del-cli dist abi && npx tsc || true && npx del-cli './dist/typechain-types/**/*.js' && npx cpx './data/**/*' dist/data && npx cpx './artifacts/contracts/**/*' ./abi && npx del-cli './abi/**/*.dbg.json'", "compile": "npx hardhat compile --force", - "coverage": "forge clean && cross-env FOUNDRY_SRC='contracts/prototypes' forge coverage --report lcov", - "docs": "forge doc", "generate": "yarn compile && ./scripts/generate_go.sh || true && ./scripts/generate_addresses.sh && yarn lint:fix", "lint": "npx eslint . --ext .js,.ts --ignore-pattern lib/", "lint:fix": "npx eslint . --ext .js,.ts,.json --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", @@ -90,7 +88,6 @@ "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"npx hardhat node\" \"wait-on tcp:8545 && yarn worker\"", "prepublishOnly": "yarn build", "test": "npx hardhat test", - "test:foundry": "forge clean && forge test -vvv", "test:prototypes": "yarn compile && npx hardhat test test/prototypes/*", "tsc:watch": "npx tsc --watch", "worker": "npx hardhat run scripts/worker.ts --network localhost" diff --git a/readme.md b/v1/readme.md similarity index 100% rename from readme.md rename to v1/readme.md diff --git a/scripts/deployments/core/deploy-deterministic.ts b/v1/scripts/deployments/core/deploy-deterministic.ts similarity index 90% rename from scripts/deployments/core/deploy-deterministic.ts rename to v1/scripts/deployments/core/deploy-deterministic.ts index eb3bc268..b2203887 100644 --- a/scripts/deployments/core/deploy-deterministic.ts +++ b/v1/scripts/deployments/core/deploy-deterministic.ts @@ -1,6 +1,6 @@ import { network } from "hardhat"; -import { isProtocolNetworkName } from "../../../lib/address.tools"; +import { isProtocolNetworkName } from "../../../../lib/address.tools"; import { deterministicDeployERC20Custody } from "./deterministic-deploy-erc20-custody"; import { deterministicDeployZetaConnector } from "./deterministic-deploy-zeta-connector"; import { deterministicDeployZetaToken } from "./deterministic-deploy-zeta-token"; diff --git a/scripts/deployments/core/deploy-erc20-custody.ts b/v1/scripts/deployments/core/deploy-erc20-custody.ts similarity index 100% rename from scripts/deployments/core/deploy-erc20-custody.ts rename to v1/scripts/deployments/core/deploy-erc20-custody.ts diff --git a/scripts/deployments/core/deploy-immutable-create2-factory.ts b/v1/scripts/deployments/core/deploy-immutable-create2-factory.ts similarity index 100% rename from scripts/deployments/core/deploy-immutable-create2-factory.ts rename to v1/scripts/deployments/core/deploy-immutable-create2-factory.ts diff --git a/scripts/deployments/core/deploy-zeta-connector.ts b/v1/scripts/deployments/core/deploy-zeta-connector.ts similarity index 100% rename from scripts/deployments/core/deploy-zeta-connector.ts rename to v1/scripts/deployments/core/deploy-zeta-connector.ts diff --git a/scripts/deployments/core/deploy-zeta-token.ts b/v1/scripts/deployments/core/deploy-zeta-token.ts similarity index 100% rename from scripts/deployments/core/deploy-zeta-token.ts rename to v1/scripts/deployments/core/deploy-zeta-token.ts diff --git a/scripts/deployments/core/deploy.ts b/v1/scripts/deployments/core/deploy.ts similarity index 100% rename from scripts/deployments/core/deploy.ts rename to v1/scripts/deployments/core/deploy.ts diff --git a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts b/v1/scripts/deployments/core/deterministic-deploy-erc20-custody.ts similarity index 94% rename from scripts/deployments/core/deterministic-deploy-erc20-custody.ts rename to v1/scripts/deployments/core/deterministic-deploy-erc20-custody.ts index 370fc145..c95d82a7 100644 --- a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts +++ b/v1/scripts/deployments/core/deterministic-deploy-erc20-custody.ts @@ -2,11 +2,11 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { ERC20_CUSTODY_ZETA_FEE, ERC20_CUSTODY_ZETA_MAX_FEE, getSaltNumber } from "../../../lib/contracts.constants"; +import { ERC20_CUSTODY_ZETA_FEE, ERC20_CUSTODY_ZETA_MAX_FEE, getSaltNumber } from "../../../../lib/contracts.constants"; import { deployContractToAddress, saltToHex, -} from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; +} from "../../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; import { ERC20Custody__factory } from "../../../typechain-types"; export const deterministicDeployERC20Custody = async () => { diff --git a/scripts/deployments/core/deterministic-deploy-zeta-connector.ts b/v1/scripts/deployments/core/deterministic-deploy-zeta-connector.ts similarity index 90% rename from scripts/deployments/core/deterministic-deploy-zeta-connector.ts rename to v1/scripts/deployments/core/deterministic-deploy-zeta-connector.ts index dcb116db..be4403ac 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-connector.ts +++ b/v1/scripts/deployments/core/deterministic-deploy-zeta-connector.ts @@ -2,12 +2,12 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { getSaltNumber } from "../../../lib/contracts.constants"; -import { isEthNetworkName } from "../../../lib/contracts.helpers"; +import { getSaltNumber } from "../../../../lib/contracts.constants"; +import { isEthNetworkName } from "../../../../lib/contracts.helpers"; import { deployContractToAddress, saltToHex, -} from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; +} from "../../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; import { ZetaConnectorEth__factory, ZetaConnectorNonEth__factory } from "../../../typechain-types"; export const deterministicDeployZetaConnector = async () => { diff --git a/scripts/deployments/core/deterministic-deploy-zeta-token.ts b/v1/scripts/deployments/core/deterministic-deploy-zeta-token.ts similarity index 90% rename from scripts/deployments/core/deterministic-deploy-zeta-token.ts rename to v1/scripts/deployments/core/deterministic-deploy-zeta-token.ts index 4ff01072..167f0f5c 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-token.ts +++ b/v1/scripts/deployments/core/deterministic-deploy-zeta-token.ts @@ -2,12 +2,12 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { getSaltNumber, ZETA_INITIAL_SUPPLY } from "../../../lib/contracts.constants"; -import { isEthNetworkName } from "../../../lib/contracts.helpers"; +import { getSaltNumber, ZETA_INITIAL_SUPPLY } from "../../../../lib/contracts.constants"; +import { isEthNetworkName } from "../../../../lib/contracts.helpers"; import { deployContractToAddress, saltToHex, -} from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; +} from "../../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; import { ZetaEth__factory, ZetaNonEth__factory } from "../../../typechain-types"; export const deterministicDeployZetaToken = async () => { diff --git a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts b/v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts similarity index 100% rename from scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts rename to v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts diff --git a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts b/v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts similarity index 100% rename from scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts rename to v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v2.ts diff --git a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts b/v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts similarity index 100% rename from scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts rename to v1/scripts/deployments/tools/deterministic-deploy-zeta-consumer-v3.ts diff --git a/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts b/v1/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts similarity index 100% rename from scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts rename to v1/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts b/v1/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts similarity index 100% rename from scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts rename to v1/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts b/v1/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts similarity index 100% rename from scripts/deployments/tools/deterministic-get-salt-zeta-token.ts rename to v1/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts diff --git a/scripts/generate_addresses.sh b/v1/scripts/generate_addresses.sh similarity index 100% rename from scripts/generate_addresses.sh rename to v1/scripts/generate_addresses.sh diff --git a/scripts/generate_addresses_types.ts b/v1/scripts/generate_addresses_types.ts similarity index 100% rename from scripts/generate_addresses_types.ts rename to v1/scripts/generate_addresses_types.ts diff --git a/scripts/generate_go.sh b/v1/scripts/generate_go.sh similarity index 100% rename from scripts/generate_go.sh rename to v1/scripts/generate_go.sh diff --git a/scripts/tools/bytecode-checker/bytecode.constants.ts b/v1/scripts/tools/bytecode-checker/bytecode.constants.ts similarity index 100% rename from scripts/tools/bytecode-checker/bytecode.constants.ts rename to v1/scripts/tools/bytecode-checker/bytecode.constants.ts diff --git a/scripts/tools/bytecode-checker/bytecode.helpers.ts b/v1/scripts/tools/bytecode-checker/bytecode.helpers.ts similarity index 100% rename from scripts/tools/bytecode-checker/bytecode.helpers.ts rename to v1/scripts/tools/bytecode-checker/bytecode.helpers.ts diff --git a/scripts/tools/bytecode-checker/bytecode.ts b/v1/scripts/tools/bytecode-checker/bytecode.ts similarity index 100% rename from scripts/tools/bytecode-checker/bytecode.ts rename to v1/scripts/tools/bytecode-checker/bytecode.ts diff --git a/scripts/tools/send-tss-gas.ts b/v1/scripts/tools/send-tss-gas.ts similarity index 100% rename from scripts/tools/send-tss-gas.ts rename to v1/scripts/tools/send-tss-gas.ts diff --git a/scripts/tools/set-zeta-token-addresses.ts b/v1/scripts/tools/set-zeta-token-addresses.ts similarity index 100% rename from scripts/tools/set-zeta-token-addresses.ts rename to v1/scripts/tools/set-zeta-token-addresses.ts diff --git a/scripts/tools/test-zeta-send.ts b/v1/scripts/tools/test-zeta-send.ts similarity index 100% rename from scripts/tools/test-zeta-send.ts rename to v1/scripts/tools/test-zeta-send.ts diff --git a/scripts/tools/token-approval.ts b/v1/scripts/tools/token-approval.ts similarity index 100% rename from scripts/tools/token-approval.ts rename to v1/scripts/tools/token-approval.ts diff --git a/scripts/tools/update-tss-address.ts b/v1/scripts/tools/update-tss-address.ts similarity index 100% rename from scripts/tools/update-tss-address.ts rename to v1/scripts/tools/update-tss-address.ts diff --git a/scripts/tools/update-zeta-connector.ts b/v1/scripts/tools/update-zeta-connector.ts similarity index 100% rename from scripts/tools/update-zeta-connector.ts rename to v1/scripts/tools/update-zeta-connector.ts diff --git a/slither.config.json b/v1/slither.config.json similarity index 100% rename from slither.config.json rename to v1/slither.config.json diff --git a/tasks/addresses.mainnet.json b/v1/tasks/addresses.mainnet.json similarity index 100% rename from tasks/addresses.mainnet.json rename to v1/tasks/addresses.mainnet.json diff --git a/tasks/addresses.testnet.json b/v1/tasks/addresses.testnet.json similarity index 100% rename from tasks/addresses.testnet.json rename to v1/tasks/addresses.testnet.json diff --git a/tasks/addresses.ts b/v1/tasks/addresses.ts similarity index 100% rename from tasks/addresses.ts rename to v1/tasks/addresses.ts diff --git a/tasks/localnet.ts b/v1/tasks/localnet.ts similarity index 100% rename from tasks/localnet.ts rename to v1/tasks/localnet.ts diff --git a/tasks/readme.md b/v1/tasks/readme.md similarity index 100% rename from tasks/readme.md rename to v1/tasks/readme.md diff --git a/test/ConnectorZEVM.spec.ts b/v1/test/ConnectorZEVM.spec.ts similarity index 100% rename from test/ConnectorZEVM.spec.ts rename to v1/test/ConnectorZEVM.spec.ts diff --git a/test/ERC20Custody.spec.ts b/v1/test/ERC20Custody.spec.ts similarity index 100% rename from test/ERC20Custody.spec.ts rename to v1/test/ERC20Custody.spec.ts diff --git a/test/ImmutableCreate2Factory.spec.ts b/v1/test/ImmutableCreate2Factory.spec.ts similarity index 100% rename from test/ImmutableCreate2Factory.spec.ts rename to v1/test/ImmutableCreate2Factory.spec.ts diff --git a/test/ZRC20.spec.ts b/v1/test/ZRC20.spec.ts similarity index 100% rename from test/ZRC20.spec.ts rename to v1/test/ZRC20.spec.ts diff --git a/test/Zeta.non-eth.spec.ts b/v1/test/Zeta.non-eth.spec.ts similarity index 100% rename from test/Zeta.non-eth.spec.ts rename to v1/test/Zeta.non-eth.spec.ts diff --git a/test/ZetaConnector.spec.ts b/v1/test/ZetaConnector.spec.ts similarity index 100% rename from test/ZetaConnector.spec.ts rename to v1/test/ZetaConnector.spec.ts diff --git a/test/ZetaInteractor.spec.ts b/v1/test/ZetaInteractor.spec.ts similarity index 100% rename from test/ZetaInteractor.spec.ts rename to v1/test/ZetaInteractor.spec.ts diff --git a/test/ZetaTokenConsumer.spec.ts b/v1/test/ZetaTokenConsumer.spec.ts similarity index 100% rename from test/ZetaTokenConsumer.spec.ts rename to v1/test/ZetaTokenConsumer.spec.ts diff --git a/test/ZetaTokenConsumerZEVM.spec.ts b/v1/test/ZetaTokenConsumerZEVM.spec.ts similarity index 100% rename from test/ZetaTokenConsumerZEVM.spec.ts rename to v1/test/ZetaTokenConsumerZEVM.spec.ts diff --git a/test/test.helpers.ts b/v1/test/test.helpers.ts similarity index 100% rename from test/test.helpers.ts rename to v1/test/test.helpers.ts diff --git a/tsconfig.json b/v1/tsconfig.json similarity index 100% rename from tsconfig.json rename to v1/tsconfig.json diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/interfaces/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/security/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/security/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/security/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/security/index.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts diff --git a/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts b/v1/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts rename to v1/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts diff --git a/typechain-types/@openzeppelin/contracts/access/Ownable.ts b/v1/typechain-types/@openzeppelin/contracts/access/Ownable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/access/Ownable.ts rename to v1/typechain-types/@openzeppelin/contracts/access/Ownable.ts diff --git a/typechain-types/@openzeppelin/contracts/access/Ownable2Step.ts b/v1/typechain-types/@openzeppelin/contracts/access/Ownable2Step.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/access/Ownable2Step.ts rename to v1/typechain-types/@openzeppelin/contracts/access/Ownable2Step.ts diff --git a/typechain-types/@openzeppelin/contracts/access/index.ts b/v1/typechain-types/@openzeppelin/contracts/access/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/access/index.ts rename to v1/typechain-types/@openzeppelin/contracts/access/index.ts diff --git a/typechain-types/@openzeppelin/contracts/index.ts b/v1/typechain-types/@openzeppelin/contracts/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/index.ts rename to v1/typechain-types/@openzeppelin/contracts/index.ts diff --git a/typechain-types/@openzeppelin/contracts/security/Pausable.ts b/v1/typechain-types/@openzeppelin/contracts/security/Pausable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/security/Pausable.ts rename to v1/typechain-types/@openzeppelin/contracts/security/Pausable.ts diff --git a/typechain-types/@openzeppelin/contracts/security/index.ts b/v1/typechain-types/@openzeppelin/contracts/security/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/security/index.ts rename to v1/typechain-types/@openzeppelin/contracts/security/index.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts b/v1/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/ERC20/index.ts rename to v1/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts diff --git a/typechain-types/@openzeppelin/contracts/token/index.ts b/v1/typechain-types/@openzeppelin/contracts/token/index.ts similarity index 100% rename from typechain-types/@openzeppelin/contracts/token/index.ts rename to v1/typechain-types/@openzeppelin/contracts/token/index.ts diff --git a/typechain-types/@uniswap/v2-core/index.ts b/v1/typechain-types/@openzeppelin/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/index.ts rename to v1/typechain-types/@openzeppelin/index.ts diff --git a/typechain-types/@uniswap/index.ts b/v1/typechain-types/@uniswap/index.ts similarity index 100% rename from typechain-types/@uniswap/index.ts rename to v1/typechain-types/@uniswap/index.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/UniswapV2ERC20.ts b/v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2ERC20.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/UniswapV2ERC20.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2ERC20.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/UniswapV2Factory.ts b/v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2Factory.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/UniswapV2Factory.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2Factory.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/UniswapV2Pair.ts b/v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2Pair.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/UniswapV2Pair.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/UniswapV2Pair.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/index.ts b/v1/typechain-types/@uniswap/v2-core/contracts/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/index.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/index.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/IERC20.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IERC20.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/IERC20.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IERC20.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.ts diff --git a/typechain-types/@uniswap/v2-core/contracts/interfaces/index.ts b/v1/typechain-types/@uniswap/v2-core/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-core/contracts/interfaces/index.ts rename to v1/typechain-types/@uniswap/v2-core/contracts/interfaces/index.ts diff --git a/typechain-types/@uniswap/v2-periphery/index.ts b/v1/typechain-types/@uniswap/v2-core/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/index.ts rename to v1/typechain-types/@uniswap/v2-core/index.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/UniswapV2Router02.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/UniswapV2Router02.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/UniswapV2Router02.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/UniswapV2Router02.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/index.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/index.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/index.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IERC20.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IERC20.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/interfaces/IERC20.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IERC20.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts diff --git a/typechain-types/@uniswap/v2-periphery/contracts/interfaces/index.ts b/v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/@uniswap/v2-periphery/contracts/interfaces/index.ts rename to v1/typechain-types/@uniswap/v2-periphery/contracts/interfaces/index.ts diff --git a/typechain-types/@uniswap/v3-core/index.ts b/v1/typechain-types/@uniswap/v2-periphery/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/index.ts rename to v1/typechain-types/@uniswap/v2-periphery/index.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/index.ts b/v1/typechain-types/@uniswap/v3-core/contracts/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/index.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/index.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/index.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/callback/index.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/callback/index.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/index.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.ts diff --git a/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts b/v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts rename to v1/typechain-types/@uniswap/v3-core/contracts/interfaces/pool/index.ts diff --git a/typechain-types/@uniswap/v3-periphery/index.ts b/v1/typechain-types/@uniswap/v3-core/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-periphery/index.ts rename to v1/typechain-types/@uniswap/v3-core/index.ts diff --git a/typechain-types/@uniswap/v3-periphery/contracts/index.ts b/v1/typechain-types/@uniswap/v3-periphery/contracts/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-periphery/contracts/index.ts rename to v1/typechain-types/@uniswap/v3-periphery/contracts/index.ts diff --git a/typechain-types/@uniswap/v3-periphery/contracts/interfaces/IQuoter.ts b/v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/IQuoter.ts similarity index 100% rename from typechain-types/@uniswap/v3-periphery/contracts/interfaces/IQuoter.ts rename to v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/IQuoter.ts diff --git a/typechain-types/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts b/v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts similarity index 100% rename from typechain-types/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts rename to v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts diff --git a/typechain-types/@uniswap/v3-periphery/contracts/interfaces/index.ts b/v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/@uniswap/v3-periphery/contracts/interfaces/index.ts rename to v1/typechain-types/@uniswap/v3-periphery/contracts/interfaces/index.ts diff --git a/typechain-types/@openzeppelin/index.ts b/v1/typechain-types/@uniswap/v3-periphery/index.ts similarity index 60% rename from typechain-types/@openzeppelin/index.ts rename to v1/typechain-types/@uniswap/v3-periphery/index.ts index f34b8770..a11e4ca2 100644 --- a/typechain-types/@openzeppelin/index.ts +++ b/v1/typechain-types/@uniswap/v3-periphery/index.ts @@ -3,5 +3,3 @@ /* eslint-disable */ import type * as contracts from "./contracts"; export type { contracts }; -import type * as contractsUpgradeable from "./contracts-upgradeable"; -export type { contractsUpgradeable }; diff --git a/typechain-types/common.ts b/v1/typechain-types/common.ts similarity index 100% rename from typechain-types/common.ts rename to v1/typechain-types/common.ts diff --git a/typechain-types/contracts/evm/ERC20Custody.ts b/v1/typechain-types/contracts/evm/ERC20Custody.ts similarity index 100% rename from typechain-types/contracts/evm/ERC20Custody.ts rename to v1/typechain-types/contracts/evm/ERC20Custody.ts diff --git a/typechain-types/contracts/evm/Zeta.eth.sol/ZetaEth.ts b/v1/typechain-types/contracts/evm/Zeta.eth.sol/ZetaEth.ts similarity index 100% rename from typechain-types/contracts/evm/Zeta.eth.sol/ZetaEth.ts rename to v1/typechain-types/contracts/evm/Zeta.eth.sol/ZetaEth.ts diff --git a/typechain-types/contracts/evm/Zeta.eth.sol/index.ts b/v1/typechain-types/contracts/evm/Zeta.eth.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/Zeta.eth.sol/index.ts rename to v1/typechain-types/contracts/evm/Zeta.eth.sol/index.ts diff --git a/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts b/v1/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts similarity index 100% rename from typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts rename to v1/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts diff --git a/typechain-types/contracts/evm/Zeta.non-eth.sol/index.ts b/v1/typechain-types/contracts/evm/Zeta.non-eth.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/Zeta.non-eth.sol/index.ts rename to v1/typechain-types/contracts/evm/Zeta.non-eth.sol/index.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts b/v1/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.base.sol/index.ts b/v1/typechain-types/contracts/evm/ZetaConnector.base.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.base.sol/index.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.base.sol/index.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts b/v1/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.eth.sol/index.ts b/v1/typechain-types/contracts/evm/ZetaConnector.eth.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.eth.sol/index.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.eth.sol/index.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts b/v1/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts diff --git a/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/index.ts b/v1/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/ZetaConnector.non-eth.sol/index.ts rename to v1/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/index.ts diff --git a/typechain-types/contracts/evm/index.ts b/v1/typechain-types/contracts/evm/index.ts similarity index 100% rename from typechain-types/contracts/evm/index.ts rename to v1/typechain-types/contracts/evm/index.ts diff --git a/typechain-types/contracts/evm/interfaces/ConnectorErrors.ts b/v1/typechain-types/contracts/evm/interfaces/ConnectorErrors.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ConnectorErrors.ts rename to v1/typechain-types/contracts/evm/interfaces/ConnectorErrors.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaErrors.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaErrors.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaErrors.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaErrors.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInteractorErrors.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInteractorErrors.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInteractorErrors.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInteractorErrors.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts diff --git a/typechain-types/contracts/evm/interfaces/ZetaNonEthInterface.ts b/v1/typechain-types/contracts/evm/interfaces/ZetaNonEthInterface.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/ZetaNonEthInterface.ts rename to v1/typechain-types/contracts/evm/interfaces/ZetaNonEthInterface.ts diff --git a/typechain-types/contracts/evm/interfaces/index.ts b/v1/typechain-types/contracts/evm/interfaces/index.ts similarity index 100% rename from typechain-types/contracts/evm/interfaces/index.ts rename to v1/typechain-types/contracts/evm/interfaces/index.ts diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts b/v1/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts similarity index 100% rename from typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts rename to v1/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts b/v1/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts similarity index 100% rename from typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts rename to v1/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts b/v1/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts rename to v1/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts diff --git a/typechain-types/contracts/evm/testing/ERC20Mock.ts b/v1/typechain-types/contracts/evm/testing/ERC20Mock.ts similarity index 100% rename from typechain-types/contracts/evm/testing/ERC20Mock.ts rename to v1/typechain-types/contracts/evm/testing/ERC20Mock.ts diff --git a/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager.ts b/v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager.ts similarity index 100% rename from typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager.ts rename to v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager.ts diff --git a/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer.ts b/v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer.ts similarity index 100% rename from typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer.ts rename to v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer.ts diff --git a/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts b/v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts rename to v1/typechain-types/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts diff --git a/typechain-types/contracts/evm/testing/ZetaInteractorMock.ts b/v1/typechain-types/contracts/evm/testing/ZetaInteractorMock.ts similarity index 100% rename from typechain-types/contracts/evm/testing/ZetaInteractorMock.ts rename to v1/typechain-types/contracts/evm/testing/ZetaInteractorMock.ts diff --git a/typechain-types/contracts/evm/testing/ZetaReceiverMock.ts b/v1/typechain-types/contracts/evm/testing/ZetaReceiverMock.ts similarity index 100% rename from typechain-types/contracts/evm/testing/ZetaReceiverMock.ts rename to v1/typechain-types/contracts/evm/testing/ZetaReceiverMock.ts diff --git a/typechain-types/contracts/evm/testing/index.ts b/v1/typechain-types/contracts/evm/testing/index.ts similarity index 100% rename from typechain-types/contracts/evm/testing/index.ts rename to v1/typechain-types/contracts/evm/testing/index.ts diff --git a/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory.ts b/v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory.ts rename to v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory.ts diff --git a/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable.ts b/v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable.ts rename to v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable.ts diff --git a/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/ZetaInteractor.ts b/v1/typechain-types/contracts/evm/tools/ZetaInteractor.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaInteractor.ts rename to v1/typechain-types/contracts/evm/tools/ZetaInteractor.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors.ts diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts b/v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/index.ts b/v1/typechain-types/contracts/evm/tools/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/index.ts rename to v1/typechain-types/contracts/evm/tools/index.ts diff --git a/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory.ts b/v1/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory.ts similarity index 100% rename from typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory.ts rename to v1/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory.ts diff --git a/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts b/v1/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter.ts b/v1/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter.ts similarity index 100% rename from typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter.ts rename to v1/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter.ts diff --git a/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts b/v1/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts rename to v1/typechain-types/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts diff --git a/typechain-types/contracts/evm/tools/interfaces/index.ts b/v1/typechain-types/contracts/evm/tools/interfaces/index.ts similarity index 100% rename from typechain-types/contracts/evm/tools/interfaces/index.ts rename to v1/typechain-types/contracts/evm/tools/interfaces/index.ts diff --git a/typechain-types/contracts/prototypes/index.ts b/v1/typechain-types/contracts/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/index.ts rename to v1/typechain-types/contracts/index.ts diff --git a/typechain-types/contracts/prototypes/ERC20Custody.ts b/v1/typechain-types/contracts/prototypes/ERC20Custody.ts similarity index 100% rename from typechain-types/contracts/prototypes/ERC20Custody.ts rename to v1/typechain-types/contracts/prototypes/ERC20Custody.ts diff --git a/typechain-types/contracts/prototypes/ERC20CustodyNew.ts b/v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts similarity index 100% rename from typechain-types/contracts/prototypes/ERC20CustodyNew.ts rename to v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts diff --git a/typechain-types/contracts/prototypes/Gateway.ts b/v1/typechain-types/contracts/prototypes/Gateway.ts similarity index 100% rename from typechain-types/contracts/prototypes/Gateway.ts rename to v1/typechain-types/contracts/prototypes/Gateway.ts diff --git a/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/GatewayUpgradeTest.ts rename to v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts diff --git a/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts similarity index 100% rename from typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts rename to v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts diff --git a/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts similarity index 100% rename from typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts rename to v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts diff --git a/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/GatewayV2.sol/index.ts rename to v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts diff --git a/typechain-types/contracts/prototypes/GatewayV2.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.ts similarity index 100% rename from typechain-types/contracts/prototypes/GatewayV2.ts rename to v1/typechain-types/contracts/prototypes/GatewayV2.ts diff --git a/typechain-types/contracts/prototypes/Receiver.ts b/v1/typechain-types/contracts/prototypes/Receiver.ts similarity index 100% rename from typechain-types/contracts/prototypes/Receiver.ts rename to v1/typechain-types/contracts/prototypes/Receiver.ts diff --git a/typechain-types/contracts/prototypes/TestERC20.ts b/v1/typechain-types/contracts/prototypes/TestERC20.ts similarity index 100% rename from typechain-types/contracts/prototypes/TestERC20.ts rename to v1/typechain-types/contracts/prototypes/TestERC20.ts diff --git a/typechain-types/contracts/prototypes/WETH9.ts b/v1/typechain-types/contracts/prototypes/WETH9.ts similarity index 100% rename from typechain-types/contracts/prototypes/WETH9.ts rename to v1/typechain-types/contracts/prototypes/WETH9.ts diff --git a/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts b/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts rename to v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts diff --git a/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts b/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts rename to v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts diff --git a/typechain-types/contracts/prototypes/evm/Gateway.ts b/v1/typechain-types/contracts/prototypes/evm/Gateway.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/Gateway.ts rename to v1/typechain-types/contracts/prototypes/evm/Gateway.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVM.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts diff --git a/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts rename to v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts rename to v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts rename to v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts diff --git a/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts rename to v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts diff --git a/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts rename to v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts diff --git a/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts diff --git a/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts rename to v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts diff --git a/typechain-types/contracts/prototypes/evm/Receiver.ts b/v1/typechain-types/contracts/prototypes/evm/Receiver.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/Receiver.ts rename to v1/typechain-types/contracts/prototypes/evm/Receiver.ts diff --git a/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts b/v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ReceiverEVM.ts rename to v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts diff --git a/typechain-types/contracts/prototypes/evm/TestERC20.ts b/v1/typechain-types/contracts/prototypes/evm/TestERC20.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/TestERC20.ts rename to v1/typechain-types/contracts/prototypes/evm/TestERC20.ts diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts rename to v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts rename to v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts rename to v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts diff --git a/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts rename to v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts diff --git a/typechain-types/contracts/prototypes/evm/index.ts b/v1/typechain-types/contracts/prototypes/evm/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/index.ts rename to v1/typechain-types/contracts/prototypes/evm/index.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts rename to v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts diff --git a/typechain-types/contracts/index.ts b/v1/typechain-types/contracts/prototypes/index.ts similarity index 72% rename from typechain-types/contracts/index.ts rename to v1/typechain-types/contracts/prototypes/index.ts index 6fa2e250..9efb820b 100644 --- a/typechain-types/contracts/index.ts +++ b/v1/typechain-types/contracts/prototypes/index.ts @@ -3,7 +3,5 @@ /* eslint-disable */ import type * as evm from "./evm"; export type { evm }; -import type * as prototypes from "./prototypes"; -export type { prototypes }; import type * as zevm from "./zevm"; export type { zevm }; diff --git a/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts b/v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts similarity index 100% rename from typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts rename to v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts diff --git a/typechain-types/contracts/prototypes/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/interfaces.sol/index.ts rename to v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts diff --git a/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts rename to v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts diff --git a/typechain-types/contracts/prototypes/test/index.ts b/v1/typechain-types/contracts/prototypes/test/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/test/index.ts rename to v1/typechain-types/contracts/prototypes/test/index.ts diff --git a/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts rename to v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts diff --git a/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts rename to v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts diff --git a/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts rename to v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts diff --git a/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts rename to v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts diff --git a/typechain-types/contracts/prototypes/zevm/Sender.ts b/v1/typechain-types/contracts/prototypes/zevm/Sender.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/Sender.ts rename to v1/typechain-types/contracts/prototypes/zevm/Sender.ts diff --git a/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/SenderZEVM.ts rename to v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts diff --git a/typechain-types/contracts/prototypes/zevm/TestZContract.ts b/v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/TestZContract.ts rename to v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts diff --git a/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts rename to v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts diff --git a/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts rename to v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts diff --git a/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts rename to v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts diff --git a/typechain-types/contracts/prototypes/zevm/index.ts b/v1/typechain-types/contracts/prototypes/zevm/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/index.ts rename to v1/typechain-types/contracts/prototypes/zevm/index.ts diff --git a/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts rename to v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts diff --git a/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts rename to v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts diff --git a/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts rename to v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts diff --git a/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts similarity index 100% rename from typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts rename to v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts diff --git a/typechain-types/contracts/zevm/Interfaces.sol/ISystem.ts b/v1/typechain-types/contracts/zevm/Interfaces.sol/ISystem.ts similarity index 100% rename from typechain-types/contracts/zevm/Interfaces.sol/ISystem.ts rename to v1/typechain-types/contracts/zevm/Interfaces.sol/ISystem.ts diff --git a/typechain-types/contracts/zevm/Interfaces.sol/IZRC20.ts b/v1/typechain-types/contracts/zevm/Interfaces.sol/IZRC20.ts similarity index 100% rename from typechain-types/contracts/zevm/Interfaces.sol/IZRC20.ts rename to v1/typechain-types/contracts/zevm/Interfaces.sol/IZRC20.ts diff --git a/typechain-types/contracts/zevm/Interfaces.sol/IZRC20Metadata.ts b/v1/typechain-types/contracts/zevm/Interfaces.sol/IZRC20Metadata.ts similarity index 100% rename from typechain-types/contracts/zevm/Interfaces.sol/IZRC20Metadata.ts rename to v1/typechain-types/contracts/zevm/Interfaces.sol/IZRC20Metadata.ts diff --git a/typechain-types/contracts/zevm/Interfaces.sol/index.ts b/v1/typechain-types/contracts/zevm/Interfaces.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/Interfaces.sol/index.ts rename to v1/typechain-types/contracts/zevm/Interfaces.sol/index.ts diff --git a/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts b/v1/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts similarity index 100% rename from typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts rename to v1/typechain-types/contracts/zevm/SystemContract.sol/SystemContract.ts diff --git a/typechain-types/contracts/zevm/SystemContract.sol/SystemContractErrors.ts b/v1/typechain-types/contracts/zevm/SystemContract.sol/SystemContractErrors.ts similarity index 100% rename from typechain-types/contracts/zevm/SystemContract.sol/SystemContractErrors.ts rename to v1/typechain-types/contracts/zevm/SystemContract.sol/SystemContractErrors.ts diff --git a/typechain-types/contracts/zevm/SystemContract.sol/index.ts b/v1/typechain-types/contracts/zevm/SystemContract.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/SystemContract.sol/index.ts rename to v1/typechain-types/contracts/zevm/SystemContract.sol/index.ts diff --git a/typechain-types/contracts/zevm/WZETA.sol/WETH9.ts b/v1/typechain-types/contracts/zevm/WZETA.sol/WETH9.ts similarity index 100% rename from typechain-types/contracts/zevm/WZETA.sol/WETH9.ts rename to v1/typechain-types/contracts/zevm/WZETA.sol/WETH9.ts diff --git a/typechain-types/contracts/zevm/WZETA.sol/index.ts b/v1/typechain-types/contracts/zevm/WZETA.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/WZETA.sol/index.ts rename to v1/typechain-types/contracts/zevm/WZETA.sol/index.ts diff --git a/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts b/v1/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts rename to v1/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts diff --git a/typechain-types/contracts/zevm/ZRC20.sol/ZRC20Errors.ts b/v1/typechain-types/contracts/zevm/ZRC20.sol/ZRC20Errors.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20.sol/ZRC20Errors.ts rename to v1/typechain-types/contracts/zevm/ZRC20.sol/ZRC20Errors.ts diff --git a/typechain-types/contracts/zevm/ZRC20.sol/index.ts b/v1/typechain-types/contracts/zevm/ZRC20.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20.sol/index.ts rename to v1/typechain-types/contracts/zevm/ZRC20.sol/index.ts diff --git a/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts b/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts rename to v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts diff --git a/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts b/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts rename to v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts diff --git a/typechain-types/contracts/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/contracts/zevm/ZRC20New.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/ZRC20New.sol/index.ts rename to v1/typechain-types/contracts/zevm/ZRC20New.sol/index.ts diff --git a/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts b/v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts similarity index 100% rename from typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts rename to v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts diff --git a/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts b/v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts similarity index 100% rename from typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts rename to v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts diff --git a/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver.ts b/v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver.ts similarity index 100% rename from typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver.ts rename to v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver.ts diff --git a/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts b/v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts rename to v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts diff --git a/typechain-types/contracts/zevm/ZetaConnectorZEVM.ts b/v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.ts similarity index 100% rename from typechain-types/contracts/zevm/ZetaConnectorZEVM.ts rename to v1/typechain-types/contracts/zevm/ZetaConnectorZEVM.ts diff --git a/typechain-types/contracts/zevm/index.ts b/v1/typechain-types/contracts/zevm/index.ts similarity index 100% rename from typechain-types/contracts/zevm/index.ts rename to v1/typechain-types/contracts/zevm/index.ts diff --git a/typechain-types/contracts/zevm/interfaces/ISystem.ts b/v1/typechain-types/contracts/zevm/interfaces/ISystem.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/ISystem.ts rename to v1/typechain-types/contracts/zevm/interfaces/ISystem.ts diff --git a/typechain-types/contracts/zevm/interfaces/IUniswapV2Router01.ts b/v1/typechain-types/contracts/zevm/interfaces/IUniswapV2Router01.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IUniswapV2Router01.ts rename to v1/typechain-types/contracts/zevm/interfaces/IUniswapV2Router01.ts diff --git a/typechain-types/contracts/zevm/interfaces/IUniswapV2Router02.ts b/v1/typechain-types/contracts/zevm/interfaces/IUniswapV2Router02.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IUniswapV2Router02.ts rename to v1/typechain-types/contracts/zevm/interfaces/IUniswapV2Router02.ts diff --git a/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts b/v1/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts rename to v1/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts diff --git a/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts b/v1/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts rename to v1/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ISystem.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ISystem.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.sol/ISystem.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ISystem.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.sol/index.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.sol/index.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.sol/index.ts diff --git a/typechain-types/contracts/zevm/interfaces/IZRC20.ts b/v1/typechain-types/contracts/zevm/interfaces/IZRC20.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/IZRC20.ts rename to v1/typechain-types/contracts/zevm/interfaces/IZRC20.ts diff --git a/typechain-types/contracts/zevm/interfaces/ZContract.ts b/v1/typechain-types/contracts/zevm/interfaces/ZContract.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/ZContract.ts rename to v1/typechain-types/contracts/zevm/interfaces/ZContract.ts diff --git a/typechain-types/contracts/zevm/interfaces/index.ts b/v1/typechain-types/contracts/zevm/interfaces/index.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/index.ts rename to v1/typechain-types/contracts/zevm/interfaces/index.ts diff --git a/typechain-types/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts b/v1/typechain-types/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts rename to v1/typechain-types/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts diff --git a/typechain-types/contracts/zevm/interfaces/zContract.sol/ZContract.ts b/v1/typechain-types/contracts/zevm/interfaces/zContract.sol/ZContract.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/zContract.sol/ZContract.ts rename to v1/typechain-types/contracts/zevm/interfaces/zContract.sol/ZContract.ts diff --git a/typechain-types/contracts/zevm/interfaces/zContract.sol/index.ts b/v1/typechain-types/contracts/zevm/interfaces/zContract.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/interfaces/zContract.sol/index.ts rename to v1/typechain-types/contracts/zevm/interfaces/zContract.sol/index.ts diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts b/v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts similarity index 100% rename from typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts rename to v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts b/v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts similarity index 100% rename from typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts rename to v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts b/v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts rename to v1/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts diff --git a/typechain-types/contracts/zevm/testing/index.ts b/v1/typechain-types/contracts/zevm/testing/index.ts similarity index 100% rename from typechain-types/contracts/zevm/testing/index.ts rename to v1/typechain-types/contracts/zevm/testing/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/security/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/access/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/access/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/access/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/access/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/security/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/security/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/security/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/security/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts diff --git a/typechain-types/factories/@openzeppelin/contracts/token/index.ts b/v1/typechain-types/factories/@openzeppelin/contracts/token/index.ts similarity index 100% rename from typechain-types/factories/@openzeppelin/contracts/token/index.ts rename to v1/typechain-types/factories/@openzeppelin/contracts/token/index.ts diff --git a/typechain-types/factories/@uniswap/v2-core/index.ts b/v1/typechain-types/factories/@openzeppelin/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/index.ts rename to v1/typechain-types/factories/@openzeppelin/index.ts diff --git a/typechain-types/factories/@uniswap/index.ts b/v1/typechain-types/factories/@uniswap/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/index.ts rename to v1/typechain-types/factories/@uniswap/index.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2ERC20__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2ERC20__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2ERC20__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2ERC20__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Factory__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Factory__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Factory__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Factory__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Pair__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Pair__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Pair__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/UniswapV2Pair__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/index.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/index.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/index.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IERC20__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IERC20__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IERC20__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IERC20__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair__factory.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/index.ts b/v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-core/contracts/interfaces/index.ts rename to v1/typechain-types/factories/@uniswap/v2-core/contracts/interfaces/index.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/index.ts b/v1/typechain-types/factories/@uniswap/v2-core/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/index.ts rename to v1/typechain-types/factories/@uniswap/v2-core/index.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/index.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/index.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/index.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IERC20__factory.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IERC20__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IERC20__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IERC20__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01__factory.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02__factory.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts diff --git a/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts diff --git a/typechain-types/factories/@uniswap/v3-core/index.ts b/v1/typechain-types/factories/@uniswap/v2-periphery/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/index.ts rename to v1/typechain-types/factories/@uniswap/v2-periphery/index.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/index.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/index.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/index.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/index.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/index.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/callback/index.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/index.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts b/v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts rename to v1/typechain-types/factories/@uniswap/v3-core/contracts/interfaces/pool/index.ts diff --git a/typechain-types/factories/@uniswap/v3-periphery/index.ts b/v1/typechain-types/factories/@uniswap/v3-core/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-periphery/index.ts rename to v1/typechain-types/factories/@uniswap/v3-core/index.ts diff --git a/typechain-types/factories/@uniswap/v3-periphery/contracts/index.ts b/v1/typechain-types/factories/@uniswap/v3-periphery/contracts/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-periphery/contracts/index.ts rename to v1/typechain-types/factories/@uniswap/v3-periphery/contracts/index.ts diff --git a/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory.ts b/v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/IQuoter__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts b/v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts rename to v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts diff --git a/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts b/v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts similarity index 100% rename from typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts rename to v1/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts diff --git a/typechain-types/factories/@openzeppelin/index.ts b/v1/typechain-types/factories/@uniswap/v3-periphery/index.ts similarity index 67% rename from typechain-types/factories/@openzeppelin/index.ts rename to v1/typechain-types/factories/@uniswap/v3-periphery/index.ts index 6923c15a..6397da09 100644 --- a/typechain-types/factories/@openzeppelin/index.ts +++ b/v1/typechain-types/factories/@uniswap/v3-periphery/index.ts @@ -2,4 +2,3 @@ /* tslint:disable */ /* eslint-disable */ export * as contracts from "./contracts"; -export * as contractsUpgradeable from "./contracts-upgradeable"; diff --git a/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts b/v1/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/ERC20Custody__factory.ts rename to v1/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts diff --git a/typechain-types/factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory.ts b/v1/typechain-types/factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory.ts rename to v1/typechain-types/factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory.ts diff --git a/typechain-types/factories/contracts/evm/Zeta.eth.sol/index.ts b/v1/typechain-types/factories/contracts/evm/Zeta.eth.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/Zeta.eth.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/Zeta.eth.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/v1/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts rename to v1/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts index a641e18a..1733f96c 100644 --- a/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -572,7 +572,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea2646970667358221220bd1393fae79c8d0bb84c13332f8c58d8b5424cb9fb90b304c7162b49e7360c6f64736f6c63430008070033"; + "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea26469706673582212206bc837ff0828037cc8d7dacf17706538b4deb5a80c03f8e056ef18bae1a6288064736f6c63430008070033"; type ZetaNonEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/index.ts b/v1/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/Zeta.non-eth.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts index 19a3a48d..0c1e19ab 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts @@ -572,7 +572,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea26469706673582212208fd8c8de0fa8c6d7ce42d081250a53e2ae3a7e5119c9670a0fb1d03e1c81c2c264736f6c63430008070033"; + "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea2646970667358221220581b268b8dbd8d9f5c8f5e7e4d7ee7235e116fc6882d1ce0eb037e226f63b48064736f6c63430008070033"; type ZetaConnectorBaseConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/index.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/ZetaConnector.base.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts index 2142fb42..e2292421 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts @@ -585,7 +585,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220c386ec06beb54bf2f1fa9d6ebdcbce1a2c994b9dc5c90038fe0d0a4b8174e1ea64736f6c63430008070033"; + "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220aea116262018bae5c67a2e8d7df041d67768b80865d96b72392c003b54c708f264736f6c63430008070033"; type ZetaConnectorEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/index.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts index efb72cbd..1f1bee87 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts @@ -630,7 +630,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220af09dec3099b33c22fceeb145766f8056225d0604e40f061de22f5e64b79e8b564736f6c63430008070033"; + "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220c031f80b5c9d397027c78f70c718cbb340af3281424b52faca5743d7e7b4560464736f6c63430008070033"; type ZetaConnectorNonEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/index.ts b/v1/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/index.ts b/v1/typechain-types/factories/contracts/evm/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/index.ts rename to v1/typechain-types/factories/contracts/evm/index.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ConnectorErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ConnectorErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ConnectorErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ConnectorErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInteractorErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInteractorErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInteractorErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInteractorErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/ZetaNonEthInterface__factory.ts b/v1/typechain-types/factories/contracts/evm/interfaces/ZetaNonEthInterface__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/ZetaNonEthInterface__factory.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/ZetaNonEthInterface__factory.ts diff --git a/typechain-types/factories/contracts/evm/interfaces/index.ts b/v1/typechain-types/factories/contracts/evm/interfaces/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/interfaces/index.ts rename to v1/typechain-types/factories/contracts/evm/interfaces/index.ts diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts b/v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts diff --git a/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory.ts diff --git a/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer__factory.ts diff --git a/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts b/v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/testing/TestUniswapV3Contracts.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts index 62972d9a..eda13b7f 100644 --- a/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts @@ -281,7 +281,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea264697066735822122063babae00441a1f6e87dfa1b12f25265331734088794be43384b60938347fc3864736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea2646970667358221220639370598d8dcad7cc48e15d248474209bfbec01023d8ed4d055453bab66415464736f6c63430008070033"; type ZetaInteractorMockConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts b/v1/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts similarity index 98% rename from typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts rename to v1/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts index 2fa5bcf3..c2163810 100644 --- a/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/testing/ZetaReceiverMock__factory.ts @@ -124,7 +124,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea264697066735822122008485e037d9a20d8e9f8d1e9456b89006367d84f7e0966e1d820fe73c0d706ea64736f6c63430008070033"; + "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea26469706673582212206d3535c1f777f93a6d105378513b52ef987ededd64b301e5cc1914be4e5ba14564736f6c63430008070033"; type ZetaReceiverMockConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/testing/index.ts b/v1/typechain-types/factories/contracts/evm/testing/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/testing/index.ts rename to v1/typechain-types/factories/contracts/evm/testing/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/ImmutableCreate2Factory__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/Ownable__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ImmutableCreate2Factory.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaInteractor__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaInteractor__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaInteractor__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaInteractor__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts index 7f1ba318..9e2e8ce7 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts @@ -380,7 +380,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea264697066735822122027f90d12abe6bc83d01268f9d1f2b1f06cb3a1291fe43afcacc978ec0c07420664736f6c63430008070033"; + "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea26469706673582212208a18b8a2abc958aa0cad934a5005344d1b05623bd9c3bfa606e20b2e17df210364736f6c63430008070033"; type ZetaTokenConsumerPancakeV3ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts index b9edd6ce..f12b55c0 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory.ts @@ -324,7 +324,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea26469706673582212207db2a1e3db417b41f7491218078aed9cfec4ce5d3704cc0cd4a870ca5e85a28864736f6c63430008070033"; + "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea264697066735822122052bfd21f617a098a8e9f7179f87b0511ff7b45f29043d147ad39b847dabfaf1364736f6c63430008070033"; type ZetaTokenConsumerTridentConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts index 6b02f8d5..a525f75c 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2__factory.ts @@ -274,7 +274,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea26469706673582212203b367a485c1c8365253eb443a67a0af9e708d5f18be04ddce696d86f9d990a5364736f6c63430008070033"; + "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea264697066735822122043c2ef06b0d58aa4604eef6078aa0a569cff03f21dd48c315ad501590326c57264736f6c63430008070033"; type ZetaTokenConsumerUniV2ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/WETH9__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts index 7d5147b1..7e147c2b 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory.ts @@ -380,7 +380,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea26469706673582212205b01f0993d1aca09a588ccda9fc1b26d546e37338ba85cdc92932152534aeee064736f6c63430008070033"; + "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea2646970667358221220c207c922259dc7e5a2e16505dd6095616db7c385800d654ff7d82add8972c36764736f6c63430008070033"; type ZetaTokenConsumerUniV3ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVMErrors__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts similarity index 99% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts index 32773b4d..5d7cd70a 100644 --- a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts +++ b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/ZetaTokenConsumerZEVM__factory.ts @@ -313,7 +313,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200220938038062002209833981810160405281019062000037919062000164565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620001fe565b6000815190506200015e81620001e4565b92915050565b600080604083850312156200017e576200017d620001df565b5b60006200018e858286016200014d565b9250506020620001a1858286016200014d565b9150509250929050565b6000620001b882620001bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001ef81620001ab565b8114620001fb57600080fd5b50565b60805160601c60a05160601c611f7e6200028b600039600081816105a4015281816106fa01528181610cb50152610e2b0152600081816060015281816103060152818161038c015281816104ee01528181610689015281816109180152818161095f01528181610bdf01528181610c6b01528181610cd701528181610d6b0152610f660152611f7e6000f3fe6080604052600436106100595760003560e01c8063013b2ff8146100ea5780632405620a1461011a57806354c49a2a1461015757806380801f8414610194578063a53fb10b146101bf578063c469cf14146101fc576100e5565b366100e5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100e3576040517f290ee5a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b61010460048036038101906100ff919061157c565b610227565b6040516101119190611aa8565b60405180910390f35b34801561012657600080fd5b50610141600480360381019061013c91906115bc565b610412565b60405161014e9190611aa8565b60405180910390f35b34801561016357600080fd5b5061017e60048036038101906101799190611623565b610833565b60405161018b9190611aa8565b60405180910390f35b3480156101a057600080fd5b506101a9610acf565b6040516101b691906119eb565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906115bc565b610b03565b6040516101f39190611aa8565b60405180910390f35b34801561020857600080fd5b50610211610f64565b60405161021e9190611910565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561028f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102ca576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81341015610304576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50505050506103d083347f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f889092919063ffffffff16565b7f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113434604051610401929190611ac3565b60405180910390a134905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061047a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156104b1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156104ec576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610572576040517f6edfe50500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f3330848673ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b6105ea7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff81111561060757610606611d96565b5b6040519080825280602002602001820160405280156106355781602001602082028036833780820191505090505b509050838160008151811061064d5761064c611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106106bc576106bb611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426107459190611c02565b6040518663ffffffff1660e01b8152600401610765959493929190611aec565b600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107bc9190611676565b9050600081600184516107cf9190611c58565b815181106107e0576107df611d67565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f86868360405161081d939291906119b4565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561089b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156108d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015610910576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016109b69190611aa8565b600060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8283604051610a19929190611ac3565b60405180910390a160008473ffffffffffffffffffffffffffffffffffffffff1683604051610a47906118fb565b60006040518083038185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610ac4576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829150509392505050565b60006040517f0e6a82b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b6b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610ba2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610bdd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c63576040517f8c51927900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb03330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b610d1b7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff811115610d3857610d37611d96565b5b604051908082528060200260200182016040528015610d665781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610d9e57610d9d611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110610ded57610dec611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610e769190611c02565b6040518663ffffffff1660e01b8152600401610e96959493929190611aec565b600060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eed9190611676565b905060008160018451610f009190611c58565b81518110610f1157610f10611d67565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b868683604051610f4e939291906119b4565b60405180910390a1809350505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110098363a9059cbb60e01b8484604051602401610fa792919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b611091846323b872dd60e01b85858560405160240161102f93929190611954565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b50505050565b6000811480611130575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016110de92919061192b565b60206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906116ec565b145b61116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611a88565b60405180910390fd5b6111f08363095ea7b360e01b848460405160240161118e92919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b6000611257826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112bc9092919063ffffffff16565b90506000815111156112b7578080602001905181019061127791906116bf565b6112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90611a68565b60405180910390fd5b5b505050565b60606112cb84846000856112d4565b90509392505050565b606082471015611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090611a28565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134291906118e4565b60006040518083038185875af1925050503d806000811461137f576040519150601f19603f3d011682016040523d82523d6000602084013e611384565b606091505b5091509150611395878383876113a1565b92505050949350505050565b60608315611404576000835114156113fc576113bc85611417565b6113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290611a48565b60405180910390fd5b5b82905061140f565b61140e838361143a565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819190611a06565b60405180910390fd5b600061149d61149884611b6b565b611b46565b905080838252602082019050828560208602820111156114c0576114bf611dca565b5b60005b858110156114f057816114d68882611567565b8452602084019350602083019250506001810190506114c3565b5050509392505050565b60008135905061150981611f03565b92915050565b600082601f83011261152457611523611dc5565b5b815161153484826020860161148a565b91505092915050565b60008151905061154c81611f1a565b92915050565b60008135905061156181611f31565b92915050565b60008151905061157681611f31565b92915050565b6000806040838503121561159357611592611dd4565b5b60006115a1858286016114fa565b92505060206115b285828601611552565b9150509250929050565b600080600080608085870312156115d6576115d5611dd4565b5b60006115e4878288016114fa565b94505060206115f587828801611552565b9350506040611606878288016114fa565b925050606061161787828801611552565b91505092959194509250565b60008060006060848603121561163c5761163b611dd4565b5b600061164a868287016114fa565b935050602061165b86828701611552565b925050604061166c86828701611552565b9150509250925092565b60006020828403121561168c5761168b611dd4565b5b600082015167ffffffffffffffff8111156116aa576116a9611dcf565b5b6116b68482850161150f565b91505092915050565b6000602082840312156116d5576116d4611dd4565b5b60006116e38482850161153d565b91505092915050565b60006020828403121561170257611701611dd4565b5b600061171084828501611567565b91505092915050565b60006117258383611731565b60208301905092915050565b61173a81611c8c565b82525050565b61174981611c8c565b82525050565b600061175a82611ba7565b6117648185611bd5565b935061176f83611b97565b8060005b838110156117a05781516117878882611719565b975061179283611bc8565b925050600181019050611773565b5085935050505092915050565b6117b681611c9e565b82525050565b60006117c782611bb2565b6117d18185611be6565b93506117e1818560208601611cd4565b80840191505092915050565b60006117f882611bbd565b6118028185611bf1565b9350611812818560208601611cd4565b61181b81611dd9565b840191505092915050565b6000611833602683611bf1565b915061183e82611dea565b604082019050919050565b6000611856600083611be6565b915061186182611e39565b600082019050919050565b6000611879601d83611bf1565b915061188482611e3c565b602082019050919050565b600061189c602a83611bf1565b91506118a782611e65565b604082019050919050565b60006118bf603683611bf1565b91506118ca82611eb4565b604082019050919050565b6118de81611cca565b82525050565b60006118f082846117bc565b915081905092915050565b600061190682611849565b9150819050919050565b60006020820190506119256000830184611740565b92915050565b60006040820190506119406000830185611740565b61194d6020830184611740565b9392505050565b60006060820190506119696000830186611740565b6119766020830185611740565b61198360408301846118d5565b949350505050565b60006040820190506119a06000830185611740565b6119ad60208301846118d5565b9392505050565b60006060820190506119c96000830186611740565b6119d660208301856118d5565b6119e360408301846118d5565b949350505050565b6000602082019050611a0060008301846117ad565b92915050565b60006020820190508181036000830152611a2081846117ed565b905092915050565b60006020820190508181036000830152611a4181611826565b9050919050565b60006020820190508181036000830152611a618161186c565b9050919050565b60006020820190508181036000830152611a818161188f565b9050919050565b60006020820190508181036000830152611aa1816118b2565b9050919050565b6000602082019050611abd60008301846118d5565b92915050565b6000604082019050611ad860008301856118d5565b611ae560208301846118d5565b9392505050565b600060a082019050611b0160008301886118d5565b611b0e60208301876118d5565b8181036040830152611b20818661174f565b9050611b2f6060830185611740565b611b3c60808301846118d5565b9695505050505050565b6000611b50611b61565b9050611b5c8282611d07565b919050565b6000604051905090565b600067ffffffffffffffff821115611b8657611b85611d96565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0d82611cca565b9150611c1883611cca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c4d57611c4c611d38565b5b828201905092915050565b6000611c6382611cca565b9150611c6e83611cca565b925082821015611c8157611c80611d38565b5b828203905092915050565b6000611c9782611caa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611cf2578082015181840152602081019050611cd7565b83811115611d01576000848401525b50505050565b611d1082611dd9565b810181811067ffffffffffffffff82111715611d2f57611d2e611d96565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b611f0c81611c8c565b8114611f1757600080fd5b50565b611f2381611c9e565b8114611f2e57600080fd5b50565b611f3a81611cca565b8114611f4557600080fd5b5056fea26469706673582212208d9034aea3c8399eb52d47a1eab88ad2e74879d4a2d03d208a0237686f63877a64736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b506040516200220938038062002209833981810160405281019062000037919062000164565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620001fe565b6000815190506200015e81620001e4565b92915050565b600080604083850312156200017e576200017d620001df565b5b60006200018e858286016200014d565b9250506020620001a1858286016200014d565b9150509250929050565b6000620001b882620001bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001ef81620001ab565b8114620001fb57600080fd5b50565b60805160601c60a05160601c611f7e6200028b600039600081816105a4015281816106fa01528181610cb50152610e2b0152600081816060015281816103060152818161038c015281816104ee01528181610689015281816109180152818161095f01528181610bdf01528181610c6b01528181610cd701528181610d6b0152610f660152611f7e6000f3fe6080604052600436106100595760003560e01c8063013b2ff8146100ea5780632405620a1461011a57806354c49a2a1461015757806380801f8414610194578063a53fb10b146101bf578063c469cf14146101fc576100e5565b366100e5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100e3576040517f290ee5a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b61010460048036038101906100ff919061157c565b610227565b6040516101119190611aa8565b60405180910390f35b34801561012657600080fd5b50610141600480360381019061013c91906115bc565b610412565b60405161014e9190611aa8565b60405180910390f35b34801561016357600080fd5b5061017e60048036038101906101799190611623565b610833565b60405161018b9190611aa8565b60405180910390f35b3480156101a057600080fd5b506101a9610acf565b6040516101b691906119eb565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906115bc565b610b03565b6040516101f39190611aa8565b60405180910390f35b34801561020857600080fd5b50610211610f64565b60405161021e9190611910565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561028f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102ca576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81341015610304576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50505050506103d083347f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f889092919063ffffffff16565b7f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113434604051610401929190611ac3565b60405180910390a134905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061047a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156104b1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156104ec576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610572576040517f6edfe50500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f3330848673ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b6105ea7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff81111561060757610606611d96565b5b6040519080825280602002602001820160405280156106355781602001602082028036833780820191505090505b509050838160008151811061064d5761064c611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106106bc576106bb611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426107459190611c02565b6040518663ffffffff1660e01b8152600401610765959493929190611aec565b600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107bc9190611676565b9050600081600184516107cf9190611c58565b815181106107e0576107df611d67565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f86868360405161081d939291906119b4565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561089b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156108d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015610910576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016109b69190611aa8565b600060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8283604051610a19929190611ac3565b60405180910390a160008473ffffffffffffffffffffffffffffffffffffffff1683604051610a47906118fb565b60006040518083038185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610ac4576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829150509392505050565b60006040517f0e6a82b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b6b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610ba2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610bdd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c63576040517f8c51927900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb03330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b610d1b7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff811115610d3857610d37611d96565b5b604051908082528060200260200182016040528015610d665781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610d9e57610d9d611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110610ded57610dec611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610e769190611c02565b6040518663ffffffff1660e01b8152600401610e96959493929190611aec565b600060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eed9190611676565b905060008160018451610f009190611c58565b81518110610f1157610f10611d67565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b868683604051610f4e939291906119b4565b60405180910390a1809350505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110098363a9059cbb60e01b8484604051602401610fa792919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b611091846323b872dd60e01b85858560405160240161102f93929190611954565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b50505050565b6000811480611130575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016110de92919061192b565b60206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906116ec565b145b61116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611a88565b60405180910390fd5b6111f08363095ea7b360e01b848460405160240161118e92919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b6000611257826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112bc9092919063ffffffff16565b90506000815111156112b7578080602001905181019061127791906116bf565b6112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90611a68565b60405180910390fd5b5b505050565b60606112cb84846000856112d4565b90509392505050565b606082471015611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090611a28565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134291906118e4565b60006040518083038185875af1925050503d806000811461137f576040519150601f19603f3d011682016040523d82523d6000602084013e611384565b606091505b5091509150611395878383876113a1565b92505050949350505050565b60608315611404576000835114156113fc576113bc85611417565b6113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290611a48565b60405180910390fd5b5b82905061140f565b61140e838361143a565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819190611a06565b60405180910390fd5b600061149d61149884611b6b565b611b46565b905080838252602082019050828560208602820111156114c0576114bf611dca565b5b60005b858110156114f057816114d68882611567565b8452602084019350602083019250506001810190506114c3565b5050509392505050565b60008135905061150981611f03565b92915050565b600082601f83011261152457611523611dc5565b5b815161153484826020860161148a565b91505092915050565b60008151905061154c81611f1a565b92915050565b60008135905061156181611f31565b92915050565b60008151905061157681611f31565b92915050565b6000806040838503121561159357611592611dd4565b5b60006115a1858286016114fa565b92505060206115b285828601611552565b9150509250929050565b600080600080608085870312156115d6576115d5611dd4565b5b60006115e4878288016114fa565b94505060206115f587828801611552565b9350506040611606878288016114fa565b925050606061161787828801611552565b91505092959194509250565b60008060006060848603121561163c5761163b611dd4565b5b600061164a868287016114fa565b935050602061165b86828701611552565b925050604061166c86828701611552565b9150509250925092565b60006020828403121561168c5761168b611dd4565b5b600082015167ffffffffffffffff8111156116aa576116a9611dcf565b5b6116b68482850161150f565b91505092915050565b6000602082840312156116d5576116d4611dd4565b5b60006116e38482850161153d565b91505092915050565b60006020828403121561170257611701611dd4565b5b600061171084828501611567565b91505092915050565b60006117258383611731565b60208301905092915050565b61173a81611c8c565b82525050565b61174981611c8c565b82525050565b600061175a82611ba7565b6117648185611bd5565b935061176f83611b97565b8060005b838110156117a05781516117878882611719565b975061179283611bc8565b925050600181019050611773565b5085935050505092915050565b6117b681611c9e565b82525050565b60006117c782611bb2565b6117d18185611be6565b93506117e1818560208601611cd4565b80840191505092915050565b60006117f882611bbd565b6118028185611bf1565b9350611812818560208601611cd4565b61181b81611dd9565b840191505092915050565b6000611833602683611bf1565b915061183e82611dea565b604082019050919050565b6000611856600083611be6565b915061186182611e39565b600082019050919050565b6000611879601d83611bf1565b915061188482611e3c565b602082019050919050565b600061189c602a83611bf1565b91506118a782611e65565b604082019050919050565b60006118bf603683611bf1565b91506118ca82611eb4565b604082019050919050565b6118de81611cca565b82525050565b60006118f082846117bc565b915081905092915050565b600061190682611849565b9150819050919050565b60006020820190506119256000830184611740565b92915050565b60006040820190506119406000830185611740565b61194d6020830184611740565b9392505050565b60006060820190506119696000830186611740565b6119766020830185611740565b61198360408301846118d5565b949350505050565b60006040820190506119a06000830185611740565b6119ad60208301846118d5565b9392505050565b60006060820190506119c96000830186611740565b6119d660208301856118d5565b6119e360408301846118d5565b949350505050565b6000602082019050611a0060008301846117ad565b92915050565b60006020820190508181036000830152611a2081846117ed565b905092915050565b60006020820190508181036000830152611a4181611826565b9050919050565b60006020820190508181036000830152611a618161186c565b9050919050565b60006020820190508181036000830152611a818161188f565b9050919050565b60006020820190508181036000830152611aa1816118b2565b9050919050565b6000602082019050611abd60008301846118d5565b92915050565b6000604082019050611ad860008301856118d5565b611ae560208301846118d5565b9392505050565b600060a082019050611b0160008301886118d5565b611b0e60208301876118d5565b8181036040830152611b20818661174f565b9050611b2f6060830185611740565b611b3c60808301846118d5565b9695505050505050565b6000611b50611b61565b9050611b5c8282611d07565b919050565b6000604051905090565b600067ffffffffffffffff821115611b8657611b85611d96565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0d82611cca565b9150611c1883611cca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c4d57611c4c611d38565b5b828201905092915050565b6000611c6382611cca565b9150611c6e83611cca565b925082821015611c8157611c80611d38565b5b828203905092915050565b6000611c9782611caa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611cf2578082015181840152602081019050611cd7565b83811115611d01576000848401525b50505050565b611d1082611dd9565b810181811067ffffffffffffffff82111715611d2f57611d2e611d96565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b611f0c81611c8c565b8114611f1757600080fd5b50565b611f2381611c9e565b8114611f2e57600080fd5b50565b611f3a81611cca565b8114611f4557600080fd5b5056fea26469706673582212209d699fd174ff021ab8955aa2ab41ef5c683b288e3873f97ef4d0c4732ceebae264736f6c63430008070033"; type ZetaTokenConsumerZEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerZEVM.strategy.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/index.ts b/v1/typechain-types/factories/contracts/evm/tools/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/ConcentratedLiquidityPoolFactory__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentConcentratedLiquidityPoolFactory.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory.ts b/v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory.ts rename to v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory.ts diff --git a/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts b/v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/index.ts diff --git a/typechain-types/factories/contracts/evm/tools/interfaces/index.ts b/v1/typechain-types/factories/contracts/evm/tools/interfaces/index.ts similarity index 100% rename from typechain-types/factories/contracts/evm/tools/interfaces/index.ts rename to v1/typechain-types/factories/contracts/evm/tools/interfaces/index.ts diff --git a/typechain-types/factories/contracts/prototypes/index.ts b/v1/typechain-types/factories/contracts/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/index.ts rename to v1/typechain-types/factories/contracts/index.ts diff --git a/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts b/v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/Gateway__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/Receiver__factory.ts b/v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/Receiver__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts b/v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/TestERC20__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/WETH9__factory.ts b/v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/WETH9__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/index.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts diff --git a/typechain-types/factories/contracts/index.ts b/v1/typechain-types/factories/contracts/prototypes/index.ts similarity index 77% rename from typechain-types/factories/contracts/index.ts rename to v1/typechain-types/factories/contracts/prototypes/index.ts index bcdd9858..33289123 100644 --- a/typechain-types/factories/contracts/index.ts +++ b/v1/typechain-types/factories/contracts/prototypes/index.ts @@ -2,5 +2,4 @@ /* tslint:disable */ /* eslint-disable */ export * as evm from "./evm"; -export * as prototypes from "./prototypes"; export * as zevm from "./zevm"; diff --git a/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/test/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/test/index.ts rename to v1/typechain-types/factories/contracts/prototypes/test/index.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/index.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/index.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts diff --git a/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts rename to v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/Interfaces.sol/ISystem__factory.ts b/v1/typechain-types/factories/contracts/zevm/Interfaces.sol/ISystem__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/Interfaces.sol/ISystem__factory.ts rename to v1/typechain-types/factories/contracts/zevm/Interfaces.sol/ISystem__factory.ts diff --git a/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory.ts b/v1/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory.ts rename to v1/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory.ts diff --git a/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20__factory.ts b/v1/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20__factory.ts rename to v1/typechain-types/factories/contracts/zevm/Interfaces.sol/IZRC20__factory.ts diff --git a/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/Interfaces.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory.ts b/v1/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory.ts rename to v1/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory.ts diff --git a/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts b/v1/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts rename to v1/typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory.ts diff --git a/typechain-types/factories/contracts/zevm/SystemContract.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/SystemContract.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/SystemContract.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/SystemContract.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts b/v1/typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts rename to v1/typechain-types/factories/contracts/zevm/WZETA.sol/WETH9__factory.ts diff --git a/typechain-types/factories/contracts/zevm/WZETA.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/WZETA.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/WZETA.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/WZETA.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20Errors__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20Errors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20Errors__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20Errors__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZRC20New.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/ZRC20New.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaReceiver__factory.ts diff --git a/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM__factory.ts b/v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ZetaConnectorZEVM__factory.ts rename to v1/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM__factory.ts diff --git a/typechain-types/factories/contracts/zevm/index.ts b/v1/typechain-types/factories/contracts/zevm/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/index.ts rename to v1/typechain-types/factories/contracts/zevm/index.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/ISystem__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/ISystem__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/ISystem__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/ISystem__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router01__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router01__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router01__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router01__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router02__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router02__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router02__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IUniswapV2Router02__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ISystem__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ISystem__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ISystem__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ISystem__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/IZRC20__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/IZRC20__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/IZRC20__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/ZContract__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/index.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/index.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/index.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts diff --git a/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/interfaces/zContract.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/interfaces/zContract.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts b/v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts rename to v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts b/v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts rename to v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts b/v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts rename to v1/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/testing/index.ts b/v1/typechain-types/factories/contracts/zevm/testing/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/testing/index.ts rename to v1/typechain-types/factories/contracts/zevm/testing/index.ts diff --git a/typechain-types/factories/forge-std/StdAssertions__factory.ts b/v1/typechain-types/factories/forge-std/StdAssertions__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/StdAssertions__factory.ts rename to v1/typechain-types/factories/forge-std/StdAssertions__factory.ts diff --git a/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts b/v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts rename to v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts diff --git a/typechain-types/factories/forge-std/StdError.sol/index.ts b/v1/typechain-types/factories/forge-std/StdError.sol/index.ts similarity index 100% rename from typechain-types/factories/forge-std/StdError.sol/index.ts rename to v1/typechain-types/factories/forge-std/StdError.sol/index.ts diff --git a/typechain-types/factories/forge-std/StdInvariant__factory.ts b/v1/typechain-types/factories/forge-std/StdInvariant__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/StdInvariant__factory.ts rename to v1/typechain-types/factories/forge-std/StdInvariant__factory.ts diff --git a/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts b/v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts rename to v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts diff --git a/typechain-types/factories/forge-std/StdStorage.sol/index.ts b/v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts similarity index 100% rename from typechain-types/factories/forge-std/StdStorage.sol/index.ts rename to v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts diff --git a/typechain-types/factories/forge-std/Test__factory.ts b/v1/typechain-types/factories/forge-std/Test__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/Test__factory.ts rename to v1/typechain-types/factories/forge-std/Test__factory.ts diff --git a/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts b/v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts rename to v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts diff --git a/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts b/v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts rename to v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts diff --git a/typechain-types/factories/forge-std/Vm.sol/index.ts b/v1/typechain-types/factories/forge-std/Vm.sol/index.ts similarity index 100% rename from typechain-types/factories/forge-std/Vm.sol/index.ts rename to v1/typechain-types/factories/forge-std/Vm.sol/index.ts diff --git a/typechain-types/factories/forge-std/index.ts b/v1/typechain-types/factories/forge-std/index.ts similarity index 100% rename from typechain-types/factories/forge-std/index.ts rename to v1/typechain-types/factories/forge-std/index.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC165__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC20__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts rename to v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts diff --git a/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts rename to v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts diff --git a/typechain-types/factories/forge-std/interfaces/index.ts b/v1/typechain-types/factories/forge-std/interfaces/index.ts similarity index 100% rename from typechain-types/factories/forge-std/interfaces/index.ts rename to v1/typechain-types/factories/forge-std/interfaces/index.ts diff --git a/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts b/v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/mocks/MockERC20__factory.ts rename to v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts diff --git a/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts b/v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts similarity index 100% rename from typechain-types/factories/forge-std/mocks/MockERC721__factory.ts rename to v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts diff --git a/typechain-types/factories/forge-std/mocks/index.ts b/v1/typechain-types/factories/forge-std/mocks/index.ts similarity index 100% rename from typechain-types/factories/forge-std/mocks/index.ts rename to v1/typechain-types/factories/forge-std/mocks/index.ts diff --git a/typechain-types/factories/index.ts b/v1/typechain-types/factories/index.ts similarity index 100% rename from typechain-types/factories/index.ts rename to v1/typechain-types/factories/index.ts diff --git a/typechain-types/forge-std/StdAssertions.ts b/v1/typechain-types/forge-std/StdAssertions.ts similarity index 100% rename from typechain-types/forge-std/StdAssertions.ts rename to v1/typechain-types/forge-std/StdAssertions.ts diff --git a/typechain-types/forge-std/StdError.sol/StdError.ts b/v1/typechain-types/forge-std/StdError.sol/StdError.ts similarity index 100% rename from typechain-types/forge-std/StdError.sol/StdError.ts rename to v1/typechain-types/forge-std/StdError.sol/StdError.ts diff --git a/typechain-types/forge-std/StdError.sol/index.ts b/v1/typechain-types/forge-std/StdError.sol/index.ts similarity index 100% rename from typechain-types/forge-std/StdError.sol/index.ts rename to v1/typechain-types/forge-std/StdError.sol/index.ts diff --git a/typechain-types/forge-std/StdInvariant.ts b/v1/typechain-types/forge-std/StdInvariant.ts similarity index 100% rename from typechain-types/forge-std/StdInvariant.ts rename to v1/typechain-types/forge-std/StdInvariant.ts diff --git a/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts b/v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts similarity index 100% rename from typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts rename to v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts diff --git a/typechain-types/forge-std/StdStorage.sol/index.ts b/v1/typechain-types/forge-std/StdStorage.sol/index.ts similarity index 100% rename from typechain-types/forge-std/StdStorage.sol/index.ts rename to v1/typechain-types/forge-std/StdStorage.sol/index.ts diff --git a/typechain-types/forge-std/Test.ts b/v1/typechain-types/forge-std/Test.ts similarity index 100% rename from typechain-types/forge-std/Test.ts rename to v1/typechain-types/forge-std/Test.ts diff --git a/typechain-types/forge-std/Vm.sol/Vm.ts b/v1/typechain-types/forge-std/Vm.sol/Vm.ts similarity index 100% rename from typechain-types/forge-std/Vm.sol/Vm.ts rename to v1/typechain-types/forge-std/Vm.sol/Vm.ts diff --git a/typechain-types/forge-std/Vm.sol/VmSafe.ts b/v1/typechain-types/forge-std/Vm.sol/VmSafe.ts similarity index 100% rename from typechain-types/forge-std/Vm.sol/VmSafe.ts rename to v1/typechain-types/forge-std/Vm.sol/VmSafe.ts diff --git a/typechain-types/forge-std/Vm.sol/index.ts b/v1/typechain-types/forge-std/Vm.sol/index.ts similarity index 100% rename from typechain-types/forge-std/Vm.sol/index.ts rename to v1/typechain-types/forge-std/Vm.sol/index.ts diff --git a/typechain-types/forge-std/index.ts b/v1/typechain-types/forge-std/index.ts similarity index 100% rename from typechain-types/forge-std/index.ts rename to v1/typechain-types/forge-std/index.ts diff --git a/typechain-types/forge-std/interfaces/IERC165.ts b/v1/typechain-types/forge-std/interfaces/IERC165.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC165.ts rename to v1/typechain-types/forge-std/interfaces/IERC165.ts diff --git a/typechain-types/forge-std/interfaces/IERC20.ts b/v1/typechain-types/forge-std/interfaces/IERC20.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC20.ts rename to v1/typechain-types/forge-std/interfaces/IERC20.ts diff --git a/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts rename to v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts diff --git a/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts rename to v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts diff --git a/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts rename to v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts diff --git a/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts rename to v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts diff --git a/typechain-types/forge-std/interfaces/IERC721.sol/index.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IERC721.sol/index.ts rename to v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts diff --git a/typechain-types/forge-std/interfaces/IMulticall3.ts b/v1/typechain-types/forge-std/interfaces/IMulticall3.ts similarity index 100% rename from typechain-types/forge-std/interfaces/IMulticall3.ts rename to v1/typechain-types/forge-std/interfaces/IMulticall3.ts diff --git a/typechain-types/forge-std/interfaces/index.ts b/v1/typechain-types/forge-std/interfaces/index.ts similarity index 100% rename from typechain-types/forge-std/interfaces/index.ts rename to v1/typechain-types/forge-std/interfaces/index.ts diff --git a/typechain-types/forge-std/mocks/MockERC20.ts b/v1/typechain-types/forge-std/mocks/MockERC20.ts similarity index 100% rename from typechain-types/forge-std/mocks/MockERC20.ts rename to v1/typechain-types/forge-std/mocks/MockERC20.ts diff --git a/typechain-types/forge-std/mocks/MockERC721.ts b/v1/typechain-types/forge-std/mocks/MockERC721.ts similarity index 100% rename from typechain-types/forge-std/mocks/MockERC721.ts rename to v1/typechain-types/forge-std/mocks/MockERC721.ts diff --git a/typechain-types/forge-std/mocks/index.ts b/v1/typechain-types/forge-std/mocks/index.ts similarity index 100% rename from typechain-types/forge-std/mocks/index.ts rename to v1/typechain-types/forge-std/mocks/index.ts diff --git a/typechain-types/hardhat.d.ts b/v1/typechain-types/hardhat.d.ts similarity index 74% rename from typechain-types/hardhat.d.ts rename to v1/typechain-types/hardhat.d.ts index 582ce7ab..ddb1792a 100644 --- a/typechain-types/hardhat.d.ts +++ b/v1/typechain-types/hardhat.d.ts @@ -12,42 +12,6 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "OwnableUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC1822ProxiableUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC1967Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IBeaconUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC1967UpgradeUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Initializable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "UUPSUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ReentrancyGuardUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ContextUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "Ownable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -336,98 +300,6 @@ declare module "hardhat/types/runtime" { name: "ZetaConnectorNonEth", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC20CustodyNew", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayEVMUpgradeTest", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20CustodyNewErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20CustodyNewEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVMErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Revertable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IReceiverEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IZetaConnectorEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IZetaNonEthNew", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ReceiverEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TestERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNative", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNewBase", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNonNative", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVMErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SenderZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TestZContract", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ISystem", signerOrOptions?: ethers.Signer | FactoryOptions @@ -509,51 +381,6 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractAt( - name: "OwnableUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC1822ProxiableUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC1967Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IBeaconUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC1967UpgradeUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Initializable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "UUPSUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ReentrancyGuardUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ContextUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "Ownable", address: string, @@ -914,121 +741,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC20CustodyNew", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayEVMUpgradeTest", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20CustodyNewErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20CustodyNewEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVMErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Revertable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IReceiverEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IZetaConnectorEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IZetaNonEthNew", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ReceiverEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TestERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNative", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNewBase", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNonNative", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVMErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SenderZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TestZContract", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ISystem", address: string, diff --git a/typechain-types/index.ts b/v1/typechain-types/index.ts similarity index 71% rename from typechain-types/index.ts rename to v1/typechain-types/index.ts index 52b3f590..01624e90 100644 --- a/typechain-types/index.ts +++ b/v1/typechain-types/index.ts @@ -8,24 +8,6 @@ export type { uniswap }; import type * as contracts from "./contracts"; export type { contracts }; export * as factories from "./factories"; -export type { OwnableUpgradeable } from "./@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable"; -export { OwnableUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory"; -export type { IERC1822ProxiableUpgradeable } from "./@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable"; -export { IERC1822ProxiableUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory"; -export type { IERC1967Upgradeable } from "./@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable"; -export { IERC1967Upgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory"; -export type { IBeaconUpgradeable } from "./@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable"; -export { IBeaconUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory"; -export type { ERC1967UpgradeUpgradeable } from "./@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable"; -export { ERC1967UpgradeUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory"; -export type { Initializable } from "./@openzeppelin/contracts-upgradeable/proxy/utils/Initializable"; -export { Initializable__factory } from "./factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory"; -export type { UUPSUpgradeable } from "./@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable"; -export { UUPSUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory"; -export type { ReentrancyGuardUpgradeable } from "./@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable"; -export { ReentrancyGuardUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory"; -export type { ContextUpgradeable } from "./@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable"; -export { ContextUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory"; export type { Ownable } from "./@openzeppelin/contracts/access/Ownable"; export { Ownable__factory } from "./factories/@openzeppelin/contracts/access/Ownable__factory"; export type { Ownable2Step } from "./@openzeppelin/contracts/access/Ownable2Step"; @@ -158,52 +140,6 @@ export type { ZetaConnectorEth } from "./contracts/evm/ZetaConnector.eth.sol/Zet export { ZetaConnectorEth__factory } from "./factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory"; export type { ZetaConnectorNonEth } from "./contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth"; export { ZetaConnectorNonEth__factory } from "./factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory"; -export type { ERC20CustodyNew } from "./contracts/prototypes/evm/ERC20CustodyNew"; -export { ERC20CustodyNew__factory } from "./factories/contracts/prototypes/evm/ERC20CustodyNew__factory"; -export type { GatewayEVM } from "./contracts/prototypes/evm/GatewayEVM"; -export { GatewayEVM__factory } from "./factories/contracts/prototypes/evm/GatewayEVM__factory"; -export type { GatewayEVMUpgradeTest } from "./contracts/prototypes/evm/GatewayEVMUpgradeTest"; -export { GatewayEVMUpgradeTest__factory } from "./factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory"; -export type { IERC20CustodyNewErrors } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; -export { IERC20CustodyNewErrors__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory"; -export type { IERC20CustodyNewEvents } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; -export { IERC20CustodyNewEvents__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory"; -export type { IGatewayEVM } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM"; -export { IGatewayEVM__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory"; -export type { IGatewayEVMErrors } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors"; -export { IGatewayEVMErrors__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory"; -export type { IGatewayEVMEvents } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents"; -export { IGatewayEVMEvents__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory"; -export type { Revertable } from "./contracts/prototypes/evm/IGatewayEVM.sol/Revertable"; -export { Revertable__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory"; -export type { IReceiverEVMEvents } from "./contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents"; -export { IReceiverEVMEvents__factory } from "./factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory"; -export type { IZetaConnectorEvents } from "./contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; -export { IZetaConnectorEvents__factory } from "./factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory"; -export type { IZetaNonEthNew } from "./contracts/prototypes/evm/IZetaNonEthNew"; -export { IZetaNonEthNew__factory } from "./factories/contracts/prototypes/evm/IZetaNonEthNew__factory"; -export type { ReceiverEVM } from "./contracts/prototypes/evm/ReceiverEVM"; -export { ReceiverEVM__factory } from "./factories/contracts/prototypes/evm/ReceiverEVM__factory"; -export type { TestERC20 } from "./contracts/prototypes/evm/TestERC20"; -export { TestERC20__factory } from "./factories/contracts/prototypes/evm/TestERC20__factory"; -export type { ZetaConnectorNative } from "./contracts/prototypes/evm/ZetaConnectorNative"; -export { ZetaConnectorNative__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNative__factory"; -export type { ZetaConnectorNewBase } from "./contracts/prototypes/evm/ZetaConnectorNewBase"; -export { ZetaConnectorNewBase__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory"; -export type { ZetaConnectorNonNative } from "./contracts/prototypes/evm/ZetaConnectorNonNative"; -export { ZetaConnectorNonNative__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory"; -export type { GatewayZEVM } from "./contracts/prototypes/zevm/GatewayZEVM"; -export { GatewayZEVM__factory } from "./factories/contracts/prototypes/zevm/GatewayZEVM__factory"; -export type { IGatewayZEVM } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM"; -export { IGatewayZEVM__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory"; -export type { IGatewayZEVMErrors } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors"; -export { IGatewayZEVMErrors__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory"; -export type { IGatewayZEVMEvents } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents"; -export { IGatewayZEVMEvents__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory"; -export type { SenderZEVM } from "./contracts/prototypes/zevm/SenderZEVM"; -export { SenderZEVM__factory } from "./factories/contracts/prototypes/zevm/SenderZEVM__factory"; -export type { TestZContract } from "./contracts/prototypes/zevm/TestZContract"; -export { TestZContract__factory } from "./factories/contracts/prototypes/zevm/TestZContract__factory"; export type { ISystem } from "./contracts/zevm/interfaces/ISystem"; export { ISystem__factory } from "./factories/contracts/zevm/interfaces/ISystem__factory"; export type { IWETH9 } from "./contracts/zevm/interfaces/IWZETA.sol/IWETH9"; diff --git a/yarn.lock b/v1/yarn.lock similarity index 100% rename from yarn.lock rename to v1/yarn.lock diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json new file mode 100644 index 00000000..62e6ac63 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json @@ -0,0 +1,148 @@ +{ + "transactions": [ + { + "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f989", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x65dafd8dac9521666aec9f95a6aa3df796594d40e4ee08f3e9f40cd595a36a52", + "blockNumber": "0x1", + "blockTimestamp": "0x66a2be11", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "blockHash": "0x65dafd8dac9521666aec9f95a6aa3df796594d40e4ee08f3e9f40cd595a36a52", + "blockNumber": "0x1", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3f3", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x", + "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be12", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be12", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be12", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", + "blockNumber": "0x2", + "gasUsed": "0x3d3f3", + "effectiveGasPrice": "0x3537eca6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721941521, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json new file mode 100644 index 00000000..c97f1cb8 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json @@ -0,0 +1,148 @@ +{ + "transactions": [ + { + "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f989", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x5a215dceafb60791b5ebb1a46417e12d7a1a4be64cd3ce9d7ed97502284f269e", + "blockNumber": "0x1", + "blockTimestamp": "0x66a2be21", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "blockHash": "0x5a215dceafb60791b5ebb1a46417e12d7a1a4be64cd3ce9d7ed97502284f269e", + "blockNumber": "0x1", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3f3", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x", + "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be22", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be22", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be22", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", + "blockNumber": "0x2", + "gasUsed": "0x3d3f3", + "effectiveGasPrice": "0x3537eca6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721941537, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json new file mode 100644 index 00000000..01a2b802 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json @@ -0,0 +1,148 @@ +{ + "transactions": [ + { + "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f989", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xa9e6832611525152abaf7eb5a722e5bb29a61afb76471f44a866271df74fdb7e", + "blockNumber": "0x1", + "blockTimestamp": "0x66a2be30", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "blockHash": "0xa9e6832611525152abaf7eb5a722e5bb29a61afb76471f44a866271df74fdb7e", + "blockNumber": "0x1", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3f3", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x", + "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be31", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be31", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2be31", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", + "transactionIndex": "0x0", + "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", + "blockNumber": "0x2", + "gasUsed": "0x3d3f3", + "effectiveGasPrice": "0x3537eca6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721941552, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json b/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json new file mode 100644 index 00000000..0cc88faa --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json @@ -0,0 +1,227 @@ +{ + "transactions": [ + { + "hash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x384a7bab75644b2b32cc04ae348de6ec00c3fa96c5f6d46c51601a409ab52a58", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": [ + "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x61bf2c15e9e060e48f48b871c8ac36a70c70a74afd942fb18dbcf00f99d8c8e8", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "function": null, + "arguments": [ + "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xfbab40f047e7ad3552ff03ecb40125d0898bf68339b49deb64472af0193752dc", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2c76d", + "transactionHash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", + "transactionIndex": "0x0", + "blockHash": "0xfbab40f047e7ad3552ff03ecb40125d0898bf68339b49deb64472af0193752dc", + "blockNumber": "0x3", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x2ead6a5d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0xbc481b3792feaf69d059e309b4414a287f057e77d485d37e467f0ac115fce1f4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + ], + "data": "0x", + "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", + "blockNumber": "0x4", + "blockTimestamp": "0x66a2c76e", + "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", + "blockNumber": "0x4", + "blockTimestamp": "0x66a2c76e", + "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", + "blockNumber": "0x4", + "blockTimestamp": "0x66a2c76e", + "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000001000000000000000000000000400000000000020000000000000100000800000000000000000000000000000000400000000008000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", + "transactionIndex": "0x0", + "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", + "blockNumber": "0x4", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x29ad2016", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "root": "0x775eed85b5933092df8cedbd7e1475c86653c93f53de49b3b6a189c431da3b0b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x384a7bab75644b2b32cc04ae348de6ec00c3fa96c5f6d46c51601a409ab52a58", + "transactionIndex": "0x0", + "blockHash": "0x883aad7b8242a384b540addede20437f2961d6bec7c7d5aae877b8f68684fabd", + "blockNumber": "0x5", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x248dc9bd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0xfd049a1107f50fd32436b6c1badc2d62e7fff2b0d5e86352dbc9721f6d843efa" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x61bf2c15e9e060e48f48b871c8ac36a70c70a74afd942fb18dbcf00f99d8c8e8", + "transactionIndex": "0x0", + "blockHash": "0xda61407010bb63c8dd9af73ee66a278cf341171e74c826459e347830f014b081", + "blockNumber": "0x6", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x20318484", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "root": "0xb3f2abe6d8496d0baa62f50e14c4214bd712e0adfcc5638ecd56c31ac0745f03" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721943917, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json new file mode 100644 index 00000000..899d33de --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json @@ -0,0 +1,301 @@ +{ + "transactions": [ + { + "hash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb29715218d53a6971a85b677de1ea74c1e284731f8e044ea5b7c4fbd3c6fdc53", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2a85117600db9b4eca65f48439739e572a86d0439695133fec7917cad2a56ba4", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x26b8d0e0749101712fb0bc49df1487a3a8f043983e068b17c9b6afa20a019129", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": null, + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "gas": "0x113d6", + "value": "0x0", + "input": "0xae7a3a6f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3a8df224e3319c24da26d8c27f8aa4def6762a7c418b1bc3347d99d3195ef582", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": null, + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "gas": "0x113d9", + "value": "0x0", + "input": "0x10188aef0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xfaf6ad873e6b9bd596a00586d3b03785b24454547aa36fafebead07069e1fd6b", + "blockNumber": "0x7", + "blockTimestamp": "0x66a2c7c2", + "transactionHash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", + "transactionIndex": "0x0", + "blockHash": "0xfaf6ad873e6b9bd596a00586d3b03785b24454547aa36fafebead07069e1fd6b", + "blockNumber": "0x7", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x1c58cd37", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0x7bff5895ddc18c63452b12751c0fc9ad5d5030979151c397110f302dbc8b6ae9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x", + "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2c7c3", + "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2c7c3", + "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2c7c3", + "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", + "transactionIndex": "0x0", + "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", + "blockNumber": "0x8", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x194f4a32", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x0196bf3652e78ce5c4914fff1c59784ae95a02cfcb51109dd6d819c0d461d37f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb29715218d53a6971a85b677de1ea74c1e284731f8e044ea5b7c4fbd3c6fdc53", + "transactionIndex": "0x0", + "blockHash": "0x229c461d2a8d77a6bc77ef257eb789a5d4b4ecd1bf683e069ad6a5187eac7c86", + "blockNumber": "0x9", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x1632ec5d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "root": "0x1e74c67ce78f2f9d953bf1fea0aa25c84010fcc317fa7c15e24ffa62cbeaa717" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2a85117600db9b4eca65f48439739e572a86d0439695133fec7917cad2a56ba4", + "transactionIndex": "0x0", + "blockHash": "0x20eb86a49461b181d9d0b7e0265a52eba0a910fbb49ee37d006b0d74040ab000", + "blockNumber": "0xa", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x138d0505", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "root": "0x7a811999c5e90d5f096cc000ae5b9b52b948497f2d9451d8f960f6226b9527d7" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc7b4", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x26b8d0e0749101712fb0bc49df1487a3a8f043983e068b17c9b6afa20a019129", + "transactionIndex": "0x0", + "blockHash": "0x10ff19781c5146efe0294e423daaff8a95e34ad6676b53fa64d658c067136c05", + "blockNumber": "0xb", + "gasUsed": "0xc7b4", + "effectiveGasPrice": "0x1137020e", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "contractAddress": null, + "root": "0x433eaae37668b89ded9bc4680e49532683d22fbbd535c77f25dfa074b13cbf0f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc7b6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3a8df224e3319c24da26d8c27f8aa4def6762a7c418b1bc3347d99d3195ef582", + "transactionIndex": "0x0", + "blockHash": "0x509397ac40da5d7468ffa1b04f0a7282a1b5cccaccf533a68bf3b8cec6b3a9b1", + "blockNumber": "0xc", + "gasUsed": "0xc7b6", + "effectiveGasPrice": "0xf120273", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "contractAddress": null, + "root": "0x442f56ee270c2fd189e3fe2637b0b9441033e9f1c5c07114cacda9474ac8ec6d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721944003, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json new file mode 100644 index 00000000..c0155b0d --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json @@ -0,0 +1,381 @@ +{ + "transactions": [ + { + "hash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x08c986ceb390097140e457c7c6ed1e08b7bc8e285d00c59fa3d0e369bd979fba", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6ed3f18b774462c17ff535e29c798c8b20b876bd642859784a55b0ea822ed350", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe905095dffd478ea3ed919d363c3e326451a1678b74cb19f5cf4a77fe1a0449d", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe5205df1a59720c6717291318de8837032b594a27b083ac759889cfc4aea67df", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0c329d6042730a9da60dde9e9b1d8d87b7213ef4a88c6c5a877c9a80a4feb952", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": null, + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "gas": "0x113d6", + "value": "0x0", + "input": "0xae7a3a6f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7bd656390f93953e239e787903a6eb24ab4ec1cc5b878bbaa50226ff2a01e72e", + "transactionType": "CALL", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": null, + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "gas": "0x113d9", + "value": "0x0", + "input": "0x10188aef0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xd8f2da10752733dfc78b8822336efc36301f6c0df1a77a170b8136f247518dec", + "blockNumber": "0xd", + "blockTimestamp": "0x66a2c7eb", + "transactionHash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", + "transactionIndex": "0x0", + "blockHash": "0xd8f2da10752733dfc78b8822336efc36301f6c0df1a77a170b8136f247518dec", + "blockNumber": "0xd", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0xd3166ef", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0x0883a48f3df3dfe967fc3620f78e0c20b0f5fcf299cb631937d3371685070621" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x", + "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2c7ec", + "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2c7ec", + "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2c7ec", + "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", + "transactionIndex": "0x0", + "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", + "blockNumber": "0xe", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0xbc789f0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0xc5178904a5ec521a4ae03e6e70d3ee825ed84d8fbbeef487376e0b1fb9d9c072" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x08c986ceb390097140e457c7c6ed1e08b7bc8e285d00c59fa3d0e369bd979fba", + "transactionIndex": "0x0", + "blockHash": "0x3d228570f553d0ad6239f62dbcb048420660cfa2e79af527c81990a4c838cc90", + "blockNumber": "0xf", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0xa54e67c", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0x05f237a79a2e9178ca6502113f83674eb21e3c0980fdde57d1bd4fcbb324768c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6ed3f18b774462c17ff535e29c798c8b20b876bd642859784a55b0ea822ed350", + "transactionIndex": "0x0", + "blockHash": "0xbdc640ef3c738f976ab3aa288d3568e720d781b99af307e9c814d976562ef6bd", + "blockNumber": "0x10", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x9196557", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "root": "0x6ea7273491279168e1c1f4443c74742e3ec748dadc005ade143e3955a76373c0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe905095dffd478ea3ed919d363c3e326451a1678b74cb19f5cf4a77fe1a0449d", + "transactionIndex": "0x0", + "blockHash": "0x4afdcd185f34e6cdb07736ec6dffa441376af187bf0a98df6fd9cb29e72b1318", + "blockNumber": "0x11", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x80312fb", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xddf59510603753369860ee04d89f3793bd19cf2e80b99ba77f475da98a022d0a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe5205df1a59720c6717291318de8837032b594a27b083ac759889cfc4aea67df", + "transactionIndex": "0x0", + "blockHash": "0x0872684390fcd9feea2222245670a731e51f4fd6deaa767b33f7577991ba8c96", + "blockNumber": "0x12", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x7030f1b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x840e2bfecaeabeab6d42c7bfc4a980fc0bd75874737c31a5cee8a4b687fb5106" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc7b4", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0c329d6042730a9da60dde9e9b1d8d87b7213ef4a88c6c5a877c9a80a4feb952", + "transactionIndex": "0x0", + "blockHash": "0x965e16aeb084609847da35c888e50eb7755fbdb157ec030db9bd4d69f24d345c", + "blockNumber": "0x13", + "gasUsed": "0xc7b4", + "effectiveGasPrice": "0x622ffec", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "contractAddress": null, + "root": "0x9ab28ac8f68600703b0b019d6b9f82de67dd7445c0909205d1f67b79dcf37425" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc7b6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7bd656390f93953e239e787903a6eb24ab4ec1cc5b878bbaa50226ff2a01e72e", + "transactionIndex": "0x0", + "blockHash": "0x0aa5d5c0cb5c86c143554397fc9634382f4a58a0ad74884e2ca54b1dfba2a77d", + "blockNumber": "0x14", + "gasUsed": "0xc7b6", + "effectiveGasPrice": "0x55f4b46", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "contractAddress": null, + "root": "0x13ff44b06883d63fd9d9c1d5c492a1ac02573c7278bbf475f6f231a71b4156f8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721944043, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json new file mode 100644 index 00000000..8ef46a12 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json @@ -0,0 +1,307 @@ +{ + "transactions": [ + { + "hash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "function": null, + "arguments": [ + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x935e4c074c290473865c0f2bc6d6b61f3e6f93c7a22d2fc11cc3f662df762320", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "function": null, + "arguments": [ + "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x12", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2683b163e064d3f815d74733855032e7bbad3d073d252204ab115bf948a4d192", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "function": null, + "arguments": [ + "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x13", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57d70ca75255f2294b2c040a01667f766af67a0cc10f71939233d3613456533a", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x14", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd01623f6ce4d78dcb755d44662f9417904e27ac089c0868ad6e072d9eeecb718", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x15", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc505b2f3bca9f1e9d6524f21c30d5f4906d402f042321d3e70c4ba3662ab7517", + "blockNumber": "0x15", + "blockTimestamp": "0x66a2ca44", + "transactionHash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000010000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", + "transactionIndex": "0x0", + "blockHash": "0xc505b2f3bca9f1e9d6524f21c30d5f4906d402f042321d3e70c4ba3662ab7517", + "blockNumber": "0x15", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x4b3f7de", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "root": "0xa0e1085ffdb1fb82c57ca44ffb69a38b04189fe28356263d32ecfc09f2e9ec6e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" + ], + "data": "0x", + "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", + "blockNumber": "0x16", + "blockTimestamp": "0x66a2ca45", + "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", + "blockNumber": "0x16", + "blockTimestamp": "0x66a2ca45", + "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", + "blockNumber": "0x16", + "blockTimestamp": "0x66a2ca45", + "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000001000000000000000000400000000000000000800000000000000000000020000800000000000000000000000000000000000000000000000004000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000800000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002204000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", + "transactionIndex": "0x0", + "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", + "blockNumber": "0x16", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x432f8db", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "root": "0x177e3c3c67e5a85782fefe355df3460bad75d0d2ceacdcd64aaba01fb38ba047" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x935e4c074c290473865c0f2bc6d6b61f3e6f93c7a22d2fc11cc3f662df762320", + "transactionIndex": "0x0", + "blockHash": "0x7601777373a6e87b4f363d7ca21ff42bfe0fab46fc65229c87fa8fd263b509b4", + "blockNumber": "0x17", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x3aed908", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "root": "0x8352e0eeec024ab46e8292f332a41b22a5beb1342a9740fae4694c21cfb09b25" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2683b163e064d3f815d74733855032e7bbad3d073d252204ab115bf948a4d192", + "transactionIndex": "0x0", + "blockHash": "0xf9f7dec3aba4fcb810377290dee3fe6807fd17a0e652d582f123eff52aedff02", + "blockNumber": "0x18", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x33e60a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "root": "0xf344995e4b982c5e5d5a078ec84ab45a490441d3bd1fcd290c24ff15f91378e9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x57d70ca75255f2294b2c040a01667f766af67a0cc10f71939233d3613456533a", + "transactionIndex": "0x0", + "blockHash": "0x4444e0f52f06446291449e9182ad23f16efa5145923534ce6518b713d673e386", + "blockNumber": "0x19", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x2db297c", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x08ed284988270284b17c7514a71c5ccf1300b4d6b913f605e0b437bac7f59e8f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd01623f6ce4d78dcb755d44662f9417904e27ac089c0868ad6e072d9eeecb718", + "transactionIndex": "0x0", + "blockHash": "0xb62381a8d15d6fe6cd560bd9dd922685d3acb9804d6eaea3651660ee959b5334", + "blockNumber": "0x1a", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x27fe5fd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x444e5d5cfe7950f9392a2dd2673b9eab5bf41de1107df8b05c5e2c16c7b306f8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721944644, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json new file mode 100644 index 00000000..5727adb3 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json @@ -0,0 +1,289 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945079, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json new file mode 100644 index 00000000..8c5a5547 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc9b06ab6dc4254696877bd61b694f47a14b067f688a6c1c4139a8efeb41b6ce2", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x725ab002a0fcd2ac1442bcdfd407cd98903d826e060a2d4df96bd8bf8f615587", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdde93cd64c5566128a6801d0a5205d76507a7fff4e73cea4d8d3297dd832f80e", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x89dcd11b7662fdfbb8fc67d395ce003433d20377c609e9429274d61c48989549", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x75b5f66d35669e63abd628e054dc25f3d2363a98f102c196662832265a04a816", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x82f22b5489cf88885c2ae3f5222970247f283647a2060d8e8beaaae14ab8d323", + "blockNumber": "0x1", + "blockTimestamp": "0x66a2cc92", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", + "transactionIndex": "0x0", + "blockHash": "0x82f22b5489cf88885c2ae3f5222970247f283647a2060d8e8beaaae14ab8d323", + "blockNumber": "0x1", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x", + "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2cc93", + "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2cc93", + "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2cc93", + "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", + "transactionIndex": "0x0", + "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", + "blockNumber": "0x2", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x3537eca6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0xeceedc1f6dd69799a4ea6ccb95c7e550dc6f7156f3984f16c2c806e0f8cf1e03" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc9b06ab6dc4254696877bd61b694f47a14b067f688a6c1c4139a8efeb41b6ce2", + "transactionIndex": "0x0", + "blockHash": "0xb9aeeadf3effa6205fc90f6ded749f090abb7ef158d8e18b631946201f088a14", + "blockNumber": "0x3", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x2ead6a03", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0xbdc8b65953b71cfdc4a32b7945dbad53900a2628be581e87697b252de2509bf2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x725ab002a0fcd2ac1442bcdfd407cd98903d826e060a2d4df96bd8bf8f615587", + "transactionIndex": "0x0", + "blockHash": "0x0b307655b58c9dd5818377287a656f2777f79ea989e99c6c303106ffa6ccf0de", + "blockNumber": "0x4", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x291bfe84", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "root": "0x89da6e209e5143b17a430ec0556bc6096b6c1a09bafee3bae34649fee0288acb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdde93cd64c5566128a6801d0a5205d76507a7fff4e73cea4d8d3297dd832f80e", + "transactionIndex": "0x0", + "blockHash": "0x6f93bef0cdb323a30e2e081cf031022679306e46d0a24da4ab61ac9ca8f30993", + "blockNumber": "0x5", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x24328fff", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xff6027f0449d5969c29e16815e8526edae1ce71a7d88414086490e217ce9ab19" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x89dcd11b7662fdfbb8fc67d395ce003433d20377c609e9429274d61c48989549", + "transactionIndex": "0x0", + "blockHash": "0x6e76d56bb30da3bf513d558bfc09e70dfcbe9d0dfc10615039da64b1a33e6728", + "blockNumber": "0x6", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1fade8ec", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xfd1712d59665da902dcb461215a6dc7f962d280337dcc80c19e4d0d86b19e795" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x5d76a9bb38a9a70bb3e6abc34f5375dabc3912fb588ef974e4703fa6687ab61f", + "blockNumber": "0x7", + "blockTimestamp": "0x66a2cc98", + "transactionHash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", + "transactionIndex": "0x0", + "blockHash": "0x5d76a9bb38a9a70bb3e6abc34f5375dabc3912fb588ef974e4703fa6687ab61f", + "blockNumber": "0x7", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x1bb9a172", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0x3a8d5ae9c7bc338b0a9949282348000ab54a66531a1bd2a2fb11501384e1b4dc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x", + "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cc99", + "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cc99", + "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cc99", + "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", + "transactionIndex": "0x0", + "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", + "blockNumber": "0x8", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x18c03c57", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0xe3b1fceefb4f81618f65aed73dc172cf905b3e47f09eb5563d78da37e92cf0fc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x75b5f66d35669e63abd628e054dc25f3d2363a98f102c196662832265a04a816", + "transactionIndex": "0x0", + "blockHash": "0xdfe42142ce272542266e1b01393834f31308e7aa2db5438a2886f1651e4fa17c", + "blockNumber": "0x9", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x15b43ec6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "root": "0x02ffcb42219ce9314ecdc4f6011ff1fd493d98b3a52457923ef66b71fcf75d0e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945234, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json new file mode 100644 index 00000000..1918a55e --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": [ + "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x180d1d8f91359ea5b4d38f55f582df0b170d628ebec9dae8e6530ceaf6715fa0", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x87079b4688bb8d7cfe7bcc9028fbf30fc47b9a8338963bec1d380aa578b7a326", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2f33bace0567869c0a603ee42dcd6b85e033be748b6910c65a91fa260c713da8", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x27d8428bf0c1924800a9252b097763198c7101d48074c8cb7837eba514a787c9", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "function": null, + "arguments": [ + "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0974b290ea101001eac892c9c3896681312e72c8201ccda48503d9a8bdbdeb3b", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "function": null, + "arguments": [ + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x4e7a579a81b3c15d3d150f71da128bdde5c263c341ebaaf1e07bb304f377d607", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2cd2a", + "transactionHash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000040000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", + "transactionIndex": "0x0", + "blockHash": "0x4e7a579a81b3c15d3d150f71da128bdde5c263c341ebaaf1e07bb304f377d607", + "blockNumber": "0xa", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x13140125", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "root": "0xe7d72b6e4aebc2fd197a15643163ee183e78fab39eb5c043bb0eaba6937df499" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x", + "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cd2b", + "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cd2b", + "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cd2b", + "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000a000001000000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000400000000000000001000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", + "transactionIndex": "0x0", + "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", + "blockNumber": "0xb", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1108b857", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0x7dd14748dd8243608c021eae87229839ab4dc2bfe0da4a7f664bc8ec9119c923" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x180d1d8f91359ea5b4d38f55f582df0b170d628ebec9dae8e6530ceaf6715fa0", + "transactionIndex": "0x0", + "blockHash": "0x2d9bc324f769c6f454c4c1c8aebd525af85636aad2de4ae51bb4d486c4b1acda", + "blockNumber": "0xc", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0xef0bef9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0xcd9005bdd5e5e72c0f44904ab646908a8598fbee024b26f4ebdf97d0fb5f6e9b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x87079b4688bb8d7cfe7bcc9028fbf30fc47b9a8338963bec1d380aa578b7a326", + "transactionIndex": "0x0", + "blockHash": "0x48a583a44eb393da57a656e5ddde06e89fd7fd69839c0c8923332d457622c52d", + "blockNumber": "0xd", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0xd288012", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0xdbffbc061fd5954d6ee3173bbc7b9d7836e67b0062659eef894d1ac90e574b93" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2f33bace0567869c0a603ee42dcd6b85e033be748b6910c65a91fa260c713da8", + "transactionIndex": "0x0", + "blockHash": "0xdeb6bcc6d96b00fcdc204e322bd713e2ecdfc33185b09d780c65e00064daf586", + "blockNumber": "0xe", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xb96061e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x62e5c82676cb7a3a640ebedc0abae774b19d5d1081f935fb07ca17d3e0c21280" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x27d8428bf0c1924800a9252b097763198c7101d48074c8cb7837eba514a787c9", + "transactionIndex": "0x0", + "blockHash": "0x8bdbfc41b4c58cda362efb5caf26133498a4bd0824b51d654c9933464b71dd30", + "blockNumber": "0xf", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xa23ce01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xf33a96a8c95aef63e35d07abf646d99dec34f6e374b7ad7288d6daa221b20059" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x7f7903c9701803a06736d857cb70cb10a2bffd9abfd100b82a0e4f7829a53dc8", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2cd30", + "transactionHash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000008080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000010000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", + "transactionIndex": "0x0", + "blockHash": "0x7f7903c9701803a06736d857cb70cb10a2bffd9abfd100b82a0e4f7829a53dc8", + "blockNumber": "0x10", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x8dfcbd9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "root": "0x0dc9050ccadf868ef9e5749b141cf02e8fac91981a90230f2ad5f7c20f2378bd" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" + ], + "data": "0x", + "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cd31", + "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cd31", + "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cd31", + "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000020000300000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000010000000400000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", + "transactionIndex": "0x0", + "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", + "blockNumber": "0x11", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x7ec1726", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "root": "0xb2f1057026f9fcf7c99d8dc850b32950935d2b46bbaf9c4c16ce9cdae9cbd02d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0974b290ea101001eac892c9c3896681312e72c8201ccda48503d9a8bdbdeb3b", + "transactionIndex": "0x0", + "blockHash": "0x295ae81faf60b325236816c39fdb35eacd9ebc219b69a1eaf751120acb8496ab", + "blockNumber": "0x12", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x6f26ebb", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "root": "0xcf7ff057b0021e00509cac397112a81f173295387df07b05ecf06ff18a80b47a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945386, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json new file mode 100644 index 00000000..61982a8b --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x12", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "function": null, + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x13", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9c69dbcadaa3316dd5efe207e6f96b98f0cbd5d8468d50be5d2f18e727e0e28a", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "function": null, + "arguments": [ + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x14", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4bcb291dfb9df27d6d8a80fcb185b7e9cd01f8f8da17da66fd036f1342055a0d", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", + "function": null, + "arguments": [ + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x15", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2b28809cd5158b5ae2c28d3a3a92c887877a2ec91e14c45f91ebc47b93c19aa3", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x16", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x55b18a6467a71be307b6d059a2ccd7b621685a0081672ec024bd064de164a7a0", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "function": null, + "arguments": [ + "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x48560", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x309b2bfd7a014c04ed2d9a1d81ace22e84a15574bed26e484daf14818d10a588", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "function": null, + "arguments": [ + "0x4A679253410272dd5232B3Ff7cF5dbB88f295319" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319", + "nonce": "0x1a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x4A679253410272dd5232B3Ff7cF5dbB88f295319" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f2953190000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x44596d63b9191d8ed5412318e64af4b8c515615bcc54373d9f67f5988b2d6110", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2cdbc", + "transactionHash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000", + "type": "0x2", + "transactionHash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", + "transactionIndex": "0x0", + "blockHash": "0x44596d63b9191d8ed5412318e64af4b8c515615bcc54373d9f67f5988b2d6110", + "blockNumber": "0x13", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x61b4353", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "root": "0xb638a162157f82ae4bde4a95fa7889b7570ad4084589effaa4923afa382a380b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x", + "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2cdbd", + "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2cdbd", + "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2cdbd", + "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000800000010000000000010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000001000000004000000000000000000000020000000000000000", + "type": "0x2", + "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", + "transactionIndex": "0x0", + "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", + "blockNumber": "0x14", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x573c567", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "root": "0x185630e90ca079c4703b5f4914884336f493bfb0772374ce512829f49cc4f604" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9c69dbcadaa3316dd5efe207e6f96b98f0cbd5d8468d50be5d2f18e727e0e28a", + "transactionIndex": "0x0", + "blockHash": "0xcd992fe57664492fa191df9d68be15e3e3d8ffdffb36e74405a949ff311246ab", + "blockNumber": "0x15", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x4c837b0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "root": "0x26a1bcf91454bf5b1768ed2d2db0674688d9753310146aea9bc25dbf47542fd1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4bcb291dfb9df27d6d8a80fcb185b7e9cd01f8f8da17da66fd036f1342055a0d", + "transactionIndex": "0x0", + "blockHash": "0xf7ac259f93fdcd74ae54e4028d953cc915a8856f529ff548d606d0f68c0149a8", + "blockNumber": "0x16", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x4362eea", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", + "root": "0xcc6b7d90306bdc7ea6c4c48ecb68d791d07f44cc7c70319f2f077fc7d1ad6315" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2b28809cd5158b5ae2c28d3a3a92c887877a2ec91e14c45f91ebc47b93c19aa3", + "transactionIndex": "0x0", + "blockHash": "0x5a0df6c2e206d648351c9e2c63c72c9ec5c7705d35fc63373a7bc3603f5fb111", + "blockNumber": "0x17", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x3b55c00", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x65145317612c0eedf12662cdf66f0b6d2e893f28b1dee6875c5a0124a1864359" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x55b18a6467a71be307b6d059a2ccd7b621685a0081672ec024bd064de164a7a0", + "transactionIndex": "0x0", + "blockHash": "0x615f4c80cfb091ec68a7d36132a2bdae42f852b38e55082df94a5671b6db60ce", + "blockNumber": "0x18", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x33edc3e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x3342193fb4911ddddfdb67d9454b04a4d8b4c5a9c3d033ba4cbacf20e64d0591" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xacd41f32195e4f12dee6d073603340145675c4640214f56dcdfa9da6d06725b1", + "blockNumber": "0x19", + "blockTimestamp": "0x66a2cdc2", + "transactionHash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", + "transactionIndex": "0x0", + "blockHash": "0xacd41f32195e4f12dee6d073603340145675c4640214f56dcdfa9da6d06725b1", + "blockNumber": "0x19", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x2d726fe", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "root": "0x39d926557660e444cb5dc7931a121cbc20563c77fbb7688688ab1a44d2080c02" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37a96", + "logs": [ + { + "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f" + ], + "data": "0x", + "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2cdc3", + "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2cdc3", + "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2cdc3", + "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000002000001000000000000000000000010000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000100000020000000300000000000000000000000002104000000000000000020000000000080000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", + "transactionIndex": "0x0", + "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", + "blockNumber": "0x1a", + "gasUsed": "0x37a96", + "effectiveGasPrice": "0x28925bc", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "root": "0x7b31ca773075d7e359e32380437e4f3166e5a9aceac0e9167e48ba571d646f5f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x309b2bfd7a014c04ed2d9a1d81ace22e84a15574bed26e484daf14818d10a588", + "transactionIndex": "0x0", + "blockHash": "0x3318fcd5a11d2948b399a6b52ae3dad921206816d70642402cfdd4da7f1c56ba", + "blockNumber": "0x1b", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x2393cc0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "root": "0x12b304ab684c1d480158b25815fc9cf4d03021d6e4e27ae79730291dbcef57b8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945532, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json new file mode 100644 index 00000000..4ed351c9 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x1b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "function": null, + "arguments": [ + "0x09635F643e140090A9A8Dcd712eD6285858ceBef", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f96a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1c", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x21f6e7739921738784950633a7e178755f49e125e43929ab55ae0ca1f52fcd00", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "function": null, + "arguments": [ + "0xc5a5C42992dECbae36851359345FE25997F5C42d", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x1d", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2037dc2aed8769b4c7eaabc254c5015a6d5f49ab4a0dfb638c142474a1a30d43", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "function": null, + "arguments": [ + "0xc5a5C42992dECbae36851359345FE25997F5C42d", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x1e", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x257a845535b95a7d39f89d33b2fbf8729358d143ff68708a5b408400202a4571", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x1f", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x76e325cff43c6f7aaa17cd4a3f569315df9ed9bf73d2bd3c6fd95d3e589b8b32", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x20", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x21", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "function": null, + "arguments": [ + "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x22", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x745cf009ede8ca3354402eefc20e4178c7f0c73a422abdd325ba5019ab63665f", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "function": null, + "arguments": [ + "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "nonce": "0x23", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc1f3c679e63e964404ca5d7e01114dc6faa2bb89fa8791166eb0431c110eb87f", + "blockNumber": "0x1c", + "blockTimestamp": "0x66a2cdc9", + "transactionHash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", + "transactionIndex": "0x0", + "blockHash": "0xc1f3c679e63e964404ca5d7e01114dc6faa2bb89fa8791166eb0431c110eb87f", + "blockNumber": "0x1c", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x1f45dc3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "root": "0xdb7e4fc555fc0749465682ea7e5e0d64050c2eb10a0bc1538a8b64e2f945f210" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3db", + "logs": [ + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef" + ], + "data": "0x", + "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a2cdca", + "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a2cdca", + "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a2cdca", + "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400004000000000000800000000000000000000000000000100000000000000000000000000000000004000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020080000200000000000000000000000002004000000000000000020000000000000000008000000000000000000000000000000008000000000000000", + "type": "0x2", + "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", + "transactionIndex": "0x0", + "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", + "blockNumber": "0x1d", + "gasUsed": "0x3d3db", + "effectiveGasPrice": "0x1bec17b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "root": "0x55aa945db3ee0a067f2773722ed620853958404cf9ca065172cb2365973b87a6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x21f6e7739921738784950633a7e178755f49e125e43929ab55ae0ca1f52fcd00", + "transactionIndex": "0x0", + "blockHash": "0xd8dd62964ab67e2a6b39a13ae6c266657e70db324908d432fd261fa887e96edf", + "blockNumber": "0x1e", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x187d85f", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "root": "0x0205a1e5ad993d8219059f23bc549b33cea2f01d62dd0ae86358e73b7ae06d99" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2037dc2aed8769b4c7eaabc254c5015a6d5f49ab4a0dfb638c142474a1a30d43", + "transactionIndex": "0x0", + "blockHash": "0x510fef54b2bff05b32a67ef683710d16fe1718a7436545c4f7018182a4aae9d4", + "blockNumber": "0x1f", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x1591a54", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "root": "0xcaeaead9e0f688869dac6fc3da6873238e0d685bbf646633e77b2d2322c2a501" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x257a845535b95a7d39f89d33b2fbf8729358d143ff68708a5b408400202a4571", + "transactionIndex": "0x0", + "blockHash": "0xecb5631c4f66df58969fcbda0d573ef7d796bd37a1ccda9a7f2ab3da5d628807", + "blockNumber": "0x20", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x12fde81", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xca05f73b424e6393d30b33bdfefe14178c5ff3480d391e728d130e1998fe6738" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x76e325cff43c6f7aaa17cd4a3f569315df9ed9bf73d2bd3c6fd95d3e589b8b32", + "transactionIndex": "0x0", + "blockHash": "0x0d398b8ea0c2bfc015bc9d3683ea89b95c1b8d26f6c680edb7ee0172ff454b4c", + "blockNumber": "0x21", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x109f0b1", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x5f2f9c39bd6718727dacfb29049a6af7753deccef2646af82783011595eff2c8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x5458742654b6e010cf3f3e597d5dfcd9afca967569132dcc0cf3e6d0823fe714", + "blockNumber": "0x22", + "blockTimestamp": "0x66a2cdcf", + "transactionHash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800040000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000008000000000", + "type": "0x2", + "transactionHash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", + "transactionIndex": "0x0", + "blockHash": "0x5458742654b6e010cf3f3e597d5dfcd9afca967569132dcc0cf3e6d0823fe714", + "blockNumber": "0x22", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0xe8bedc", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", + "root": "0xe38aa93f3a3d1693d2529ba4b306099c8674a43bc7898cd381bcb32cbfa4442f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042" + ], + "data": "0x", + "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2cdd0", + "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2cdd0", + "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2cdd0", + "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000010000000400000000000000000800000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000280000000000040000010000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", + "transactionIndex": "0x0", + "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", + "blockNumber": "0x23", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0xcfc724", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "root": "0xfacdca2ee22ba431f16c12a3460d8d0d4902a47d381505dc67bdc73135add858" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x745cf009ede8ca3354402eefc20e4178c7f0c73a422abdd325ba5019ab63665f", + "transactionIndex": "0x0", + "blockHash": "0x3659a02d8bb3c5d83d51b9fa6bf66a14326245999eac2c98449ba8ad5ffa8021", + "blockNumber": "0x24", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0xb63351", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "root": "0x683bfc1e544718f8f0c7c86e64c242e5541c400c33db8864b8a9acea7e942a89" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945545, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json new file mode 100644 index 00000000..0367f650 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x24", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "function": null, + "arguments": [ + "0x851356ae760d987E095750cCeb3bC6014560891C", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x25", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe50ed36c50499d63d7dd168a965a6fceb86848611032258c46aa25a735ea812b", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x95401dc811bb5740090279ba06cfa8fcf6113778", + "function": null, + "arguments": [ + "0xf5059a5D33d5853360D16C683c16e67980206f36", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x26", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe7088a83ce9edc0c9ec478002ac3bffa25cb4285565a18b467705f3e684ad90d", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x998abeb3e57409262ae5b751f60747921b33613e", + "function": null, + "arguments": [ + "0xf5059a5D33d5853360D16C683c16e67980206f36", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x27", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x99e0913507826be5e017a1d8b8c6652ab493a10a4f193dd04557a023e549844c", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x28", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4ee29536ececfae28d6c548f02eda2c0077810d4e60358acb79688f8eaf5211b", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x95401dc811bb5740090279Ba06cfA8fcF6113778", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x29", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x2a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", + "function": null, + "arguments": [ + "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x2b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbbf54169511f067a2d23f30806b0bfc6605f77962c22c3a7a3adaec42635a270", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf", + "function": null, + "arguments": [ + "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf", + "nonce": "0x2c", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x851356ae760d987e095750cceb3bc6014560891c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xa2c263bbb67b455997f5c4363870a8501e8618e5d87be71016c45e2e72f1585a", + "blockNumber": "0x25", + "blockTimestamp": "0x66a2cdfa", + "transactionHash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", + "transactionIndex": "0x0", + "blockHash": "0xa2c263bbb67b455997f5c4363870a8501e8618e5d87be71016c45e2e72f1585a", + "blockNumber": "0x25", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0xa02806", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "root": "0x0730fdd3f8977b6a352835d0a52dbd2911f63dea047bbfb3c8ce01b6819ac053" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c" + ], + "data": "0x", + "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", + "blockNumber": "0x26", + "blockTimestamp": "0x66a2cdfb", + "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", + "blockNumber": "0x26", + "blockTimestamp": "0x66a2cdfb", + "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", + "blockNumber": "0x26", + "blockTimestamp": "0x66a2cdfb", + "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000820010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400400000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000004002004001000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", + "transactionIndex": "0x0", + "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", + "blockNumber": "0x26", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x8eff2e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "root": "0x8090bfd0e22605bacddf7d31f5006b4b2eacdb41fe97ee9abcbad1b548ba45ff" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe50ed36c50499d63d7dd168a965a6fceb86848611032258c46aa25a735ea812b", + "transactionIndex": "0x0", + "blockHash": "0x1af3b87d8fda2642744b88bf52b1fdecef396f86878a5b073f15270baf5a8a40", + "blockNumber": "0x27", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x7d6bcf", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x95401dc811bb5740090279ba06cfa8fcf6113778", + "root": "0xedccf80a3e6f0910407ec58db829f676fee5481e21933b8cdad96ee3023df142" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe7088a83ce9edc0c9ec478002ac3bffa25cb4285565a18b467705f3e684ad90d", + "transactionIndex": "0x0", + "blockHash": "0xd7fada266bfeee5ca3dfb0e26c77a732acc543a5f7a52c9ee93cef35f12b9074", + "blockNumber": "0x28", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x6e75bd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x998abeb3e57409262ae5b751f60747921b33613e", + "root": "0x57171c85985f5ee190c52083a923a06e6361d6e24d9cfba56b68d4b07799a8d5" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x99e0913507826be5e017a1d8b8c6652ab493a10a4f193dd04557a023e549844c", + "transactionIndex": "0x0", + "blockHash": "0x23141f9c2c818809cb1f090b6a6855b8f4f0667e70ed4abdf8e9e250560927a2", + "blockNumber": "0x29", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x61430d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x9c6b0fcbe0d7617d17d919a2840096365d38938835c8e658523ef5ba5650533f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4ee29536ececfae28d6c548f02eda2c0077810d4e60358acb79688f8eaf5211b", + "transactionIndex": "0x0", + "blockHash": "0xab6bbe21b2d0faa356a87e7a34297b5412aa87a9fd13c7948d0c8a1fba72fae6", + "blockNumber": "0x2a", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x551f27", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xd10571a0c2d4c8c02e53be71eac7a37e81ecd839ff9fb1d69a604ced209d9f06" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x2a313704552111547c3388ebce6228d67747609f0aba8f6d2c9c82abfd12997c", + "blockNumber": "0x2b", + "blockTimestamp": "0x66a2ce00", + "transactionHash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000080000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", + "transactionIndex": "0x0", + "blockHash": "0x2a313704552111547c3388ebce6228d67747609f0aba8f6d2c9c82abfd12997c", + "blockNumber": "0x2b", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x4a7f2f", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "root": "0x5a3b6957455872854a03406ec155c46bcfb0069d144d60675e427845551f7a06" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" + ], + "data": "0x", + "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", + "blockNumber": "0x2c", + "blockTimestamp": "0x66a2ce01", + "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", + "blockNumber": "0x2c", + "blockTimestamp": "0x66a2ce01", + "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", + "blockNumber": "0x2c", + "blockTimestamp": "0x66a2ce01", + "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000010000000000000000000000400000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000100800000000000000000000000080000000000000000000000000000000200000000000000000000000000000000000000000000000000000000020200000200000100000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", + "transactionIndex": "0x0", + "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", + "blockNumber": "0x2c", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x428155", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", + "root": "0x1e563b96106645e6e3555d106c99fcf1333642b38138414dc08c90228c4406e0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbbf54169511f067a2d23f30806b0bfc6605f77962c22c3a7a3adaec42635a270", + "transactionIndex": "0x0", + "blockHash": "0xc75949e3ad2094d641877ea638fb21fa5934638702aadc43924193a4a86122fe", + "blockNumber": "0x2d", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x3a5184", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf", + "root": "0x1b46895cc799fd97a89c26ba8152b06c8415596c986786046134f929c2736625" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945594, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json new file mode 100644 index 00000000..d88c2407 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2fe52c8d31754bf2e0ac13dfe5a2f006c480c4ff0f354956d14b898c19cddafe", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3109781be16702415d74b5cd2db47eb617ce0fba524645d83d756a1e193e278c", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0ced19781acf04fe8aa55336905fdeb38b66aaf21cc766f37883b2f681ef39fd", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa4d23e0a4ae1207005260bddc8330179ca32a0c468bdbd2cb8ae2d2d18fa2fb2", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x194c6666e3f18e3c04248cf25dd1741e42d959697bb3cedbecaa7ca11fc61d6e", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x715fdaa5c68fc3b9ee5e3ba494853c8ac363737c4fa34d27a56d89dd688f6439", + "blockNumber": "0x1", + "blockTimestamp": "0x66a2ced9", + "transactionHash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", + "transactionIndex": "0x0", + "blockHash": "0x715fdaa5c68fc3b9ee5e3ba494853c8ac363737c4fa34d27a56d89dd688f6439", + "blockNumber": "0x1", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x", + "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2ceda", + "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2ceda", + "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2ceda", + "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", + "transactionIndex": "0x0", + "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", + "blockNumber": "0x2", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x3537eca6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0xeceedc1f6dd69799a4ea6ccb95c7e550dc6f7156f3984f16c2c806e0f8cf1e03" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2fe52c8d31754bf2e0ac13dfe5a2f006c480c4ff0f354956d14b898c19cddafe", + "transactionIndex": "0x0", + "blockHash": "0x6d007c66d1c57d2e964e606a33dbee778d77a720852e0aa5b3367ce4e71b6a78", + "blockNumber": "0x3", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x2ead6a03", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0xbdc8b65953b71cfdc4a32b7945dbad53900a2628be581e87697b252de2509bf2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3109781be16702415d74b5cd2db47eb617ce0fba524645d83d756a1e193e278c", + "transactionIndex": "0x0", + "blockHash": "0xad26f7fe25889953722743c2c48628ff7c9c0c128cc9c9a8e8da0f06013242c6", + "blockNumber": "0x4", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x291bfe84", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "root": "0x89da6e209e5143b17a430ec0556bc6096b6c1a09bafee3bae34649fee0288acb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0ced19781acf04fe8aa55336905fdeb38b66aaf21cc766f37883b2f681ef39fd", + "transactionIndex": "0x0", + "blockHash": "0x7a5a0ad04d9a2d1484d668cb250499f178a2836bfe2be8d07d2def678da48b01", + "blockNumber": "0x5", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x24328fff", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xff6027f0449d5969c29e16815e8526edae1ce71a7d88414086490e217ce9ab19" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa4d23e0a4ae1207005260bddc8330179ca32a0c468bdbd2cb8ae2d2d18fa2fb2", + "transactionIndex": "0x0", + "blockHash": "0xb7389a25f572f9806a3f2c83b61cc9f41015c974086e75eb804dabe18675a4df", + "blockNumber": "0x6", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1fade8ec", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xfd1712d59665da902dcb461215a6dc7f962d280337dcc80c19e4d0d86b19e795" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xe8c6591a306ab658e778ee4579675780f0f2ddbb56807f21296fa6d05fafd9d7", + "blockNumber": "0x7", + "blockTimestamp": "0x66a2cedf", + "transactionHash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", + "transactionIndex": "0x0", + "blockHash": "0xe8c6591a306ab658e778ee4579675780f0f2ddbb56807f21296fa6d05fafd9d7", + "blockNumber": "0x7", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x1bb9a172", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0x3a8d5ae9c7bc338b0a9949282348000ab54a66531a1bd2a2fb11501384e1b4dc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x", + "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cee0", + "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cee0", + "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2cee0", + "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", + "transactionIndex": "0x0", + "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", + "blockNumber": "0x8", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x18c03c57", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0xe3b1fceefb4f81618f65aed73dc172cf905b3e47f09eb5563d78da37e92cf0fc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x194c6666e3f18e3c04248cf25dd1741e42d959697bb3cedbecaa7ca11fc61d6e", + "transactionIndex": "0x0", + "blockHash": "0xe9135b2bda32e52138be0a00baf79c942f374d0cfe9536915f7567c14962e061", + "blockNumber": "0x9", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x15b43ec6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "root": "0x02ffcb42219ce9314ecdc4f6011ff1fd493d98b3a52457923ef66b71fcf75d0e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945817, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json new file mode 100644 index 00000000..95c52018 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json @@ -0,0 +1,289 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": [ + "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "function": null, + "arguments": [ + "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "function": null, + "arguments": [ + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945836, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json new file mode 100644 index 00000000..0e41cd32 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json @@ -0,0 +1,574 @@ +{ + "transactions": [ + { + "hash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": [ + "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8e75b438866b8c8463ddec8ee2d580dee7f93f7c918afbebef03ad6df9315416", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x23543a0ea573dfcbce3cb0a84938553b7978f388944ff571cd6e352e2af18f9e", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x136cb8a3008941c40d5ef499a255775ebeb8b050c3a87e473bac8f542f19d60f", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c131c9d04fc8ae52570a7d4ae5c69c7e2add857a9ceeba411b995df2773ab56", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "function": null, + "arguments": [ + "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6347fc053ec3687c19f487fab4e07b302728eac1d0b637cd4177184a0d7170fd", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "function": null, + "arguments": [ + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x814809222b0ddfde0e3dfe6e13bbe49d78ff0c73be017841cc14a38e989fd5e1", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2cefc", + "transactionHash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000040000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", + "transactionIndex": "0x0", + "blockHash": "0x814809222b0ddfde0e3dfe6e13bbe49d78ff0c73be017841cc14a38e989fd5e1", + "blockNumber": "0xa", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x13140125", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "root": "0xe7d72b6e4aebc2fd197a15643163ee183e78fab39eb5c043bb0eaba6937df499" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x", + "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cefd", + "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cefd", + "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2cefd", + "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000a000001000000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000400000000000000001000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", + "transactionIndex": "0x0", + "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", + "blockNumber": "0xb", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1108b857", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0x7dd14748dd8243608c021eae87229839ab4dc2bfe0da4a7f664bc8ec9119c923" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8e75b438866b8c8463ddec8ee2d580dee7f93f7c918afbebef03ad6df9315416", + "transactionIndex": "0x0", + "blockHash": "0x17cbeb7cfb019098452c155292187fcd835d176a2d8a861dab04d3607da86929", + "blockNumber": "0xc", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0xef0bef9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0xcd9005bdd5e5e72c0f44904ab646908a8598fbee024b26f4ebdf97d0fb5f6e9b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x23543a0ea573dfcbce3cb0a84938553b7978f388944ff571cd6e352e2af18f9e", + "transactionIndex": "0x0", + "blockHash": "0x06aea22af02661cb57664ef8f759cb65dcb12d907c6c522e7d2999c98838146a", + "blockNumber": "0xd", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0xd288012", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0xdbffbc061fd5954d6ee3173bbc7b9d7836e67b0062659eef894d1ac90e574b93" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x136cb8a3008941c40d5ef499a255775ebeb8b050c3a87e473bac8f542f19d60f", + "transactionIndex": "0x0", + "blockHash": "0x09a9be5084bc48aec7bcb59bd43a18ce17c8db2b874afbcc30facbdc4a51a83f", + "blockNumber": "0xe", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xb96061e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x62e5c82676cb7a3a640ebedc0abae774b19d5d1081f935fb07ca17d3e0c21280" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1c131c9d04fc8ae52570a7d4ae5c69c7e2add857a9ceeba411b995df2773ab56", + "transactionIndex": "0x0", + "blockHash": "0x3578beaa9d0c25673e2ebaa951c835050035613a2906a01158b4e6e16bf11983", + "blockNumber": "0xf", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xa23ce01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xf33a96a8c95aef63e35d07abf646d99dec34f6e374b7ad7288d6daa221b20059" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x0f9727b3d97d345da14a6b4c5e78699f8071ab8b7e49dd15446e2173e1f0a8a4", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2cf02", + "transactionHash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000008080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000010000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", + "transactionIndex": "0x0", + "blockHash": "0x0f9727b3d97d345da14a6b4c5e78699f8071ab8b7e49dd15446e2173e1f0a8a4", + "blockNumber": "0x10", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x8dfcbd9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "root": "0x0dc9050ccadf868ef9e5749b141cf02e8fac91981a90230f2ad5f7c20f2378bd" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" + ], + "data": "0x", + "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cf03", + "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cf03", + "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2cf03", + "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000020000300000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000010000000400000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", + "transactionIndex": "0x0", + "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", + "blockNumber": "0x11", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x7ec1726", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "root": "0xb2f1057026f9fcf7c99d8dc850b32950935d2b46bbaf9c4c16ce9cdae9cbd02d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6347fc053ec3687c19f487fab4e07b302728eac1d0b637cd4177184a0d7170fd", + "transactionIndex": "0x0", + "blockHash": "0x99dd567d7419a352b4130c708be55f172c051d87e2470d005b35f3709c809d2b", + "blockNumber": "0x12", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x6f26ebb", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "root": "0xcf7ff057b0021e00509cac397112a81f173295387df07b05ecf06ff18a80b47a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721945852, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json new file mode 100644 index 00000000..aa82f956 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json @@ -0,0 +1,728 @@ +{ + "transactions": [ + { + "hash": "0x414ababc99dc574908549dde963d5ceca5bc32c7e5506deba3d5717239795dc1", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x12", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x13", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "function": null, + "arguments": [ + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x14", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x198ab714bf7a19f67df6961b6506bd196e8d58660d30b4506540c7a707462d4b", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", + "function": null, + "arguments": [ + "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x15", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9a6ec162dffb6752b7137b1da6bc221641582a1383281dbb1cd076801443c7fb", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", + "function": null, + "arguments": [ + "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x16", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x209f6085a61fccd5b6e5d04723085c56c128b69223b5c5ee799b11ecaf3a95d9", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1ba51c711ef220101f665e5628a4882d3574a85406df7eea789f7ed298f97e08", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0x59b670e9fA9D0A427751Af201D676719a970857b", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb00000000000000000000000059b670e9fa9d0a427751af201d676719a970857b000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "function": null, + "arguments": [ + "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f29531900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xda2cace2d8659051f8de64eec320fc8ac898ec3985e9f81c7135a108542a3d34", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "function": null, + "arguments": [ + "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f", + "nonce": "0x1b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2ab80d4f72892ecfffc6d534913e72cebaa5b92d8f4f749464d67ef75e11a9d7", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x414ababc99dc574908549dde963d5ceca5bc32c7e5506deba3d5717239795dc1", + "transactionIndex": "0x0", + "blockHash": "0xb288427d6601b30022a197fbf830dcb0cba54bb3d1e48dc1bbacefc676085ef7", + "blockNumber": "0x13", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x61b4353", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0xed1c40c7b8c03f7e7e2cc5905703acb2d6afcb0e7ba18c055857b105a8bb76d1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xce574b11022db3b6041c6ef6209edcaca9643e94d8d2562838a725a4c729c2db", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2cfb6", + "transactionHash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000004000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", + "transactionIndex": "0x0", + "blockHash": "0xce574b11022db3b6041c6ef6209edcaca9643e94d8d2562838a725a4c729c2db", + "blockNumber": "0x14", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x55820f2", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "root": "0xd35b8751cbd7876aea8e805a36e31ed8c97664d071c5773e2c4ae420ff6abb5c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c" + ], + "data": "0x", + "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", + "blockNumber": "0x15", + "blockTimestamp": "0x66a2cfb7", + "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", + "blockNumber": "0x15", + "blockTimestamp": "0x66a2cfb7", + "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", + "blockNumber": "0x15", + "blockTimestamp": "0x66a2cfb7", + "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00040000000000000000000000000000400000000000000000800000000000000000000000000000000000800000000000000000000000000000000000000000000000002000000100000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000100000000000002004000000000000000020000000000000000000000000800000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", + "transactionIndex": "0x0", + "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", + "blockNumber": "0x15", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x4c58b43", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "root": "0xc1fc3de89cb73d463b1f0fbad56f0808428d04f6e316128bcc75fa974538416f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x198ab714bf7a19f67df6961b6506bd196e8d58660d30b4506540c7a707462d4b", + "transactionIndex": "0x0", + "blockHash": "0x75e515094ab9f4c1d0b19ee8115c0035460cf6836166c57eacc9721e013bb768", + "blockNumber": "0x16", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x42f6793", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", + "root": "0x7c52ebc22a18f7a398021821136333134726c57264dc5fc8095807f91c3ab841" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9a6ec162dffb6752b7137b1da6bc221641582a1383281dbb1cd076801443c7fb", + "transactionIndex": "0x0", + "blockHash": "0x6fd6c03446099291ce7e7ef6c9462837f621e87813d7c31143ac64e8ddefd0c0", + "blockNumber": "0x17", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x3af995b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", + "root": "0xd17f56f4d5f21b9590728ee2650c588697a334a970455d8f7296567d55725b41" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x209f6085a61fccd5b6e5d04723085c56c128b69223b5c5ee799b11ecaf3a95d9", + "transactionIndex": "0x0", + "blockHash": "0x78523044b64e1f77815cf573c78bbcd90cf4b371727a317f311e4f3bcb92d303", + "blockNumber": "0x18", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x33edb09", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xf3f90c2b97a991c218b40b92455c7d46fc62e3d5e60268880ad555b7b988fc85" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1ba51c711ef220101f665e5628a4882d3574a85406df7eea789f7ed298f97e08", + "transactionIndex": "0x0", + "blockHash": "0xec7e8066ee149275d33f58b9f049e5ea42274f7929b9c2cca1f3a0d020c54a96", + "blockNumber": "0x19", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x2d725f0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xeeaea2f0779158272412ac06594d27e19ae799f6af6c3eaeee807c1221bfb8b8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x19a91c03f24f5450cf79ec4fefce305fb358b7b540a4532808d88b8da14e2d2e", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2cfbc", + "transactionHash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000100000000000000000000000000104000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", + "transactionIndex": "0x0", + "blockHash": "0x19a91c03f24f5450cf79ec4fefce305fb358b7b540a4532808d88b8da14e2d2e", + "blockNumber": "0x1a", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x27c62b3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "root": "0xe5a42b6c248d86fbaacbbef124766c501712f09dade94d957ccff3673d626e50" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319" + ], + "data": "0x", + "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", + "blockNumber": "0x1b", + "blockTimestamp": "0x66a2cfbd", + "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", + "blockNumber": "0x1b", + "blockTimestamp": "0x66a2cfbd", + "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", + "blockNumber": "0x1b", + "blockTimestamp": "0x66a2cfbd", + "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000001000000000000000000000400000000000000200800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000001000800000000000000000000000080000200000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000080020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", + "transactionIndex": "0x0", + "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", + "blockNumber": "0x1b", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x2381e1b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "root": "0xe24205b62034595de0934d5ebdcf090758c942cbfafcab38356c8d33cb9c938c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xda2cace2d8659051f8de64eec320fc8ac898ec3985e9f81c7135a108542a3d34", + "transactionIndex": "0x0", + "blockHash": "0x4a4395b0d72886cd01b4927ff17d526a28488b86ad56918ef50003c245bf8c42", + "blockNumber": "0x1c", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x1f22eae", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "root": "0x81bb5a77c8a9fca481402917ac9fb721ae5451d893f2defe0998e861e64a33ee" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0x6a646517a43650162366a37ab9ee69a9885fc249b8e5e8ce21d057d2eec3fdaa", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a2cfbf", + "transactionHash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", + "transactionIndex": "0x0", + "blockHash": "0x6a646517a43650162366a37ab9ee69a9885fc249b8e5e8ce21d057d2eec3fdaa", + "blockNumber": "0x1d", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x1b5e87a", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0x218f77b54e4f2606437dd3ae883ec7db9f803dc5eba95a0dcae3b40de2b4259f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2ab80d4f72892ecfffc6d534913e72cebaa5b92d8f4f749464d67ef75e11a9d7", + "transactionIndex": "0x0", + "blockHash": "0x29a99276b7df131a87470fb952878c7c7efff92d35f6f0308338347a3aed19d6", + "blockNumber": "0x1e", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0x18175ca", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0xf9d5ef525d5c488d1e6d223cb5e86d94f9e6921d29ffb97929d2622985872675" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0xee3c4a0fa55a1a594365972997a6357913c71156b74b3253bcf9143e27753f80", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a2cfc1", + "transactionHash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", + "transactionIndex": "0x0", + "blockHash": "0xee3c4a0fa55a1a594365972997a6357913c71156b74b3253bcf9143e27753f80", + "blockNumber": "0x1f", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x155ade7", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x31b4a61fd85a3e45b1058f29fb9aaeb0471041713fd989ee3d426ffa32de26b0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xc18acca3a8b44f33fecfb1aef2e49b55676e0bbd8ebe9520a6bbb9b79c96d90d", + "blockNumber": "0x20", + "blockTimestamp": "0x66a2cfc2", + "transactionHash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", + "transactionIndex": "0x0", + "blockHash": "0xc18acca3a8b44f33fecfb1aef2e49b55676e0bbd8ebe9520a6bbb9b79c96d90d", + "blockNumber": "0x20", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x12b1957", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x3cd2896d3fe1eea261498528c04a9f2784a6f2ba3f7e6bdb96318fcb35c5fc4b" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946037, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json new file mode 100644 index 00000000..3484fe4f --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0x9ec823825cc27ad44d2597cb4a857e67ce54296bee50c29fca218953df9f4919", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x1c", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x1d", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "function": null, + "arguments": [ + "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf5593300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1e", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9125a67323e632ccf07462ffc264451c364939bb4f30c2bd6166c9bcf76eb72b", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", + "function": null, + "arguments": [ + "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x1f", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x799657f4b571e3e6b2368b5c924c29ae983e60fdef7bef68fb76a7397f8ad8c2", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x84ea74d481ee0a5332c457a4d796187f6ba67feb", + "function": null, + "arguments": [ + "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x20", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdee6ee36ff9eeec8e064f15e05a96fe6a798e6abb52bb7b80da081a687b0b2fe", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x21", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x398df7aeab0936eae92eb857adffb3177fd03d0bdcc57cbb0b31333da9ea84dd", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "function": "transfer(address,uint256)", + "arguments": [ + "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x22", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x23", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "function": null, + "arguments": [ + "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x24", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec61994125075bd25585fcc889493d2d6aee9faf1886310558ebbdf70b2084be", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "function": null, + "arguments": [ + "0x851356ae760d987E095750cCeb3bC6014560891C" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c", + "nonce": "0x25", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x18bf98a677440f78c9d06b32297100334d1bfc4a348c735b5a2e9153879da49f", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921", + "0x851356ae760d987E095750cCeb3bC6014560891C" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c6343000815003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d18e54daf4f677cb28167158d6dd21f6ab3921000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x13A0c5930C028511Dc02665E7285134B6d11A5f4" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba000000000000000000000000000000000000000000000000000000000000000100000000000000000000000013a0c5930c028511dc02665e7285134b6d11a5f4", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf5059a5D33d5853360D16C683c16e67980206f36", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "function": "approve(address,uint256)", + "arguments": [ + "0x851356ae760d987E095750cCeb3bC6014560891C", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x26", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9ec823825cc27ad44d2597cb4a857e67ce54296bee50c29fca218953df9f4919", + "transactionIndex": "0x0", + "blockHash": "0xe7914672e3fe0aafb6f01304e2e547193fdd40caf67be4101bf14e54471bdc4e", + "blockNumber": "0x21", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x105d2fc", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x9a3f07ee1531d521eec173ae2b7169702db6a24e381a8897c417ea359585b4a7" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x92820684ef3d3b4302f7ac68a10e74b7e3918fd49ddff481f2fe10e683f48450", + "blockNumber": "0x22", + "blockTimestamp": "0x66a2d057", + "transactionHash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000", + "type": "0x2", + "transactionHash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", + "transactionIndex": "0x0", + "blockHash": "0x92820684ef3d3b4302f7ac68a10e74b7e3918fd49ddff481f2fe10e683f48450", + "blockNumber": "0x22", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0xe52458", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "root": "0x5ef441ce76bd1b43e8086fed4768407a041cf04e385b209b92483ebd2518f4f3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933" + ], + "data": "0x", + "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2d058", + "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2d058", + "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", + "blockNumber": "0x23", + "blockTimestamp": "0x66a2d058", + "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000002001001000000000000000000000000000000000002020000000000000100000800000000000000000000000000080000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000010000000000000020000000200000000000000000000000002004000000000200000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", + "transactionIndex": "0x0", + "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", + "blockNumber": "0x23", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0xcc9755", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "root": "0xa6037e2d33f8edf77602f74da043fc2d2944a891b9f19c32b1f7f538aceb4c2a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9125a67323e632ccf07462ffc264451c364939bb4f30c2bd6166c9bcf76eb72b", + "transactionIndex": "0x0", + "blockHash": "0x226df89c29f4c20ed3da426590b2f092703e997e1c404afcec679623e8d507ea", + "blockNumber": "0x24", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0xb371e8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", + "root": "0xdbfaddd6e873629146826663203e845384bc82e2d00f0b2e4523b4583807bfa2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x799657f4b571e3e6b2368b5c924c29ae983e60fdef7bef68fb76a7397f8ad8c2", + "transactionIndex": "0x0", + "blockHash": "0xb913467349f68bdf69190cd8c0f05e1532fca195e726cab0dab3667eb5330fa5", + "blockNumber": "0x25", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x9e0a13", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x84ea74d481ee0a5332c457a4d796187f6ba67feb", + "root": "0x6b4c14ef2350a975e815512e55ae7c42499673410e8f6a06f5a98db2491c715e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdee6ee36ff9eeec8e064f15e05a96fe6a798e6abb52bb7b80da081a687b0b2fe", + "transactionIndex": "0x0", + "blockHash": "0x7dcee32d08f1d40af1a299d22e25d1669f944024a3144d5fd7a1afb7ade65a2c", + "blockNumber": "0x26", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x8b280d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0x9efeab05c3f44903d6433a70feb87e0225b90190622519f96146537dd24f7642" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x398df7aeab0936eae92eb857adffb3177fd03d0bdcc57cbb0b31333da9ea84dd", + "transactionIndex": "0x0", + "blockHash": "0x01989dfd744c1d367b25688553f4ba020f9b091fc05eead3d7360626b5207a85", + "blockNumber": "0x27", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x79c975", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", + "contractAddress": null, + "root": "0xa06a001f01c926776989e379a9155e421cbc30640daee63e70004324d7255934" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x659f1d99b23bd21e83b5291d128d24edf07038e70f8b039addf4a3d6a33fdbd3", + "blockNumber": "0x28", + "blockTimestamp": "0x66a2d05d", + "transactionHash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000010000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000001000", + "type": "0x2", + "transactionHash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", + "transactionIndex": "0x0", + "blockHash": "0x659f1d99b23bd21e83b5291d128d24edf07038e70f8b039addf4a3d6a33fdbd3", + "blockNumber": "0x28", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x6a95e3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "root": "0x6c889361c779f848039118bf3ab9877d66b3c91a67e39a6df18bb9e29082f01a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x851356ae760d987e095750cceb3bc6014560891c", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e8" + ], + "data": "0x", + "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", + "blockNumber": "0x29", + "blockTimestamp": "0x66a2d05e", + "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x851356ae760d987e095750cceb3bc6014560891c", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", + "blockNumber": "0x29", + "blockTimestamp": "0x66a2d05e", + "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x851356ae760d987e095750cceb3bc6014560891c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", + "blockNumber": "0x29", + "blockTimestamp": "0x66a2d05e", + "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400400000000000000800000000000000000001000000000000400000000000000000000000000000000000000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100000820000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020020000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", + "transactionIndex": "0x0", + "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", + "blockNumber": "0x29", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x5f26cf", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "root": "0xcf530848c433b97491a6e65118ae710e25356a237d7773ccc9edfac6febfb620" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xec61994125075bd25585fcc889493d2d6aee9faf1886310558ebbdf70b2084be", + "transactionIndex": "0x0", + "blockHash": "0xe8a06e6d79a7c942ea2cd3254120c935c5c94b78a23c4ff0981c4de8394d7877", + "blockNumber": "0x2a", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x53703e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "root": "0x464486de625b2cef5906641683e3555d4b38f3169f691e1f5a5b40dfbfd7a033" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xc8118f6d8c3e7ff125c4d8a53b361db330b0843334d2c8bd4c28b40ba01c1a81", + "blockNumber": "0x2b", + "blockTimestamp": "0x66a2d060", + "transactionHash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000008010000000000000000000000000000000000000008000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", + "transactionIndex": "0x0", + "blockHash": "0xc8118f6d8c3e7ff125c4d8a53b361db330b0843334d2c8bd4c28b40ba01c1a81", + "blockNumber": "0x2b", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x4957e8", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "root": "0x770a8aa96b7ba446d2e89cbd1d3710a79c145c7d73f0ff2a42569756b2ffde96" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x18bf98a677440f78c9d06b32297100334d1bfc4a348c735b5a2e9153879da49f", + "transactionIndex": "0x0", + "blockHash": "0xfb08d99fffa652882872826b3a36ecfa464692d0271f9beb997465859e7d74b5", + "blockNumber": "0x2c", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0x408f21", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "root": "0x54ce08323bbea43c81a18d22c6a8fb73ad220d0953a15fd9d855dbb583490d95" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000013a0c5930c028511dc02665e7285134b6d11a5f4", + "blockHash": "0x7bca2aca887be366f58b54f48a5a5e7e5576a9ec9c3e7d9aaa5760f36515f2cd", + "blockNumber": "0x2d", + "blockTimestamp": "0x66a2d062", + "transactionHash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000008000000000000000000000000000000000000000008000000000000000000000000000000400008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", + "transactionIndex": "0x0", + "blockHash": "0x7bca2aca887be366f58b54f48a5a5e7e5576a9ec9c3e7d9aaa5760f36515f2cd", + "blockNumber": "0x2d", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x3939f8", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "contractAddress": null, + "root": "0x937891f148a3a4eb4dce496fa9b36c555cf797da4b7cd2e6ffe5f770f07a6b4d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xcc7e7c0df7ff56136e43c6e1f1d8de307ddb365c133cb9917ac5252581ee8c22", + "blockNumber": "0x2e", + "blockTimestamp": "0x66a2d063", + "transactionHash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000008000000000000000000000000000000000000000008000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", + "transactionIndex": "0x0", + "blockHash": "0xcc7e7c0df7ff56136e43c6e1f1d8de307ddb365c133cb9917ac5252581ee8c22", + "blockNumber": "0x2e", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x321848", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", + "contractAddress": null, + "root": "0xf7b0fb92e142d713476dd83320a51ebcc41e797994278bcf774027f61d5b6c63" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", + "blockNumber": "0x2f", + "blockTimestamp": "0x66a2d064", + "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", + "blockNumber": "0x2f", + "blockTimestamp": "0x66a2d064", + "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000002000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000200000001000000000000", + "type": "0x2", + "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", + "transactionIndex": "0x0", + "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", + "blockNumber": "0x2f", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x2bda13", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "contractAddress": null, + "root": "0x7031cb6bca0459d7f3541af8fa192bbcd23b121053e036f4054caf645745f92d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", + "blockNumber": "0x30", + "blockTimestamp": "0x66a2d065", + "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", + "blockNumber": "0x30", + "blockTimestamp": "0x66a2d065", + "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000200000000002000000000008000000000000000000000000000000000400000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000200000001000200000000", + "type": "0x2", + "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", + "transactionIndex": "0x0", + "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", + "blockNumber": "0x30", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x266576", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "contractAddress": null, + "root": "0xff60935d6caed499f81f795596c60590eabb8c77283d90e54b21f20dab361c9c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x54e7036acd43b3068c587f843ba1f600642ac7c46a0c535097280faf6182de2b", + "blockNumber": "0x31", + "blockTimestamp": "0x66a2d066", + "transactionHash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000200000200000000002000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000004002000001000000000000000000010000000000000000000000000000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", + "transactionIndex": "0x0", + "blockHash": "0x54e7036acd43b3068c587f843ba1f600642ac7c46a0c535097280faf6182de2b", + "blockNumber": "0x31", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x219d33", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", + "contractAddress": null, + "root": "0xb9f6b08c52c9f44954222cc2f2d700b159052a38d039dc8bb02cba1fa61dd738" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946198, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json new file mode 100644 index 00000000..948d1629 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "transfer(address,uint256)", + "arguments": [ + "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": [ + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef240000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", + "transactionIndex": "0x0", + "blockHash": "0xac8e108a16d14e05f6db81cb1dbbd15a0ab5f4236fd72cc012b4bbfcd2251e66", + "blockNumber": "0x1", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x5efbab106cea95288662cd38f2efe9a22608078752216cb6f4dcb65c57f52258" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xb8c879cb5e1930f9dbb6ac662069e0cfd6f68c478a2674c3c27f7ec497f2783c", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2d0c1", + "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000004000000000000000000000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionIndex": "0x0", + "blockHash": "0xb8c879cb5e1930f9dbb6ac662069e0cfd6f68c478a2674c3c27f7ec497f2783c", + "blockNumber": "0x2", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x342a1c59", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x7a3af91a83f06ee97689fdaace3087fa21cad1c0cbd3fa2e94beebeaf704093d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + ], + "data": "0x", + "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d0c2", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d0c2", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d0c2", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000400000000000000400000000000000000800000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000004000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", + "blockNumber": "0x3", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x2e93516b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0x11ba771a4e13324daee8f9edee84ddbe101a95d0b15b262fedee816acf1b50c0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", + "transactionIndex": "0x0", + "blockHash": "0xa446b7613e90ec0951926398e266b95b8d56b570b67efe73fffdf641c1191fd1", + "blockNumber": "0x4", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x28d9d418", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "root": "0xe979fafa179a267111c76218bd2ae26b7e67dcaaa22d06e9c8b24c39d421c2f4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", + "transactionIndex": "0x0", + "blockHash": "0x7b2562f762d0277fe9a640fb710e8d78df6cd9b898e696a3ca855847b75a73a1", + "blockNumber": "0x5", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x23fa562d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0xa4778652fefacbb49fcb28db70c1eb99fbf7aac1273620daf8cdcd7fda794a69" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", + "transactionIndex": "0x0", + "blockHash": "0x480e3e246ffe2146c92f77740dc4c45007ba5917fa03c2a77bece38d59f4e4da", + "blockNumber": "0x6", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1faddd23", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x4428bf85c507dcefe7bec332bb83befa42dd993538b3eebbd1a8dff1f493b066" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", + "transactionIndex": "0x0", + "blockHash": "0x459ad2f41e07f276a610ee4034bf8e881acbcf700efac36af22052f48167f39b", + "blockNumber": "0x7", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1bb99721", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x0795e76c053fb1affb5a795544fb08e956d312975920044da2fd07e2b65c2750" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc136ba0cd0e6f5e1e9b3e7ecd0aae33d5f38422ad1845ba571a53ab8948eba7f", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2d0c7", + "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionIndex": "0x0", + "blockHash": "0xc136ba0cd0e6f5e1e9b3e7ecd0aae33d5f38422ad1845ba571a53ab8948eba7f", + "blockNumber": "0x8", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x1843ab3d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x346a9c5261689c12c9552c51ddaa747a85fdeabf5a0d27652a6a5e9d3dabcb18" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853" + ], + "data": "0x", + "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d0c8", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d0c8", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d0c8", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x000000000000000000000000004000004000000000000000008000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000000000001000008000000000000000000000000000000004000000000000000000008000000000000000000000000c0000000000000000000000000000000000000000000000040000000000000000000000000000000008000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000800000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", + "blockNumber": "0x9", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x15a950a9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "root": "0x6a7a46b961a0b7c24296c6111e8f6b456537c8f7c011732fa09b727477a6f804" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", + "transactionIndex": "0x0", + "blockHash": "0x8dd050695d82156b376e9cacbd683db229e701dfbbe9f13002f21d12bac07825", + "blockNumber": "0xa", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x12feafd8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "root": "0x2af22cfa604b30de4b230408ff3bb628d2fd0b401f281c0febc5470efe79d73a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xc80559d771e64a5698430e9f5bd178f331179948bbe2dab6a29e55ec46839e1d", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d0ca", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0xc80559d771e64a5698430e9f5bd178f331179948bbe2dab6a29e55ec46839e1d", + "blockNumber": "0xb", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x10b25bcd", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0xe6f42239a619b96437911e44c6f9c74ab2ce5b5fab2bd9b004eb94726f106221" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", + "transactionIndex": "0x0", + "blockHash": "0xe12541b2c6768edf4580dbcde1dd777669d133fc190aee7462bc5be159512349", + "blockNumber": "0xc", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xeb26bcb", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0x75a8ace8ae6ed9c67f0093e8a431bca4e4d5b5c324eaf925454151f1d749f12a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0x982b612d51316cf753f059560110a02a998a5f408db269b3287ae7dd6f36ec59", + "blockNumber": "0xd", + "blockTimestamp": "0x66a2d0cc", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0x982b612d51316cf753f059560110a02a998a5f408db269b3287ae7dd6f36ec59", + "blockNumber": "0xd", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0xd07152f", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0xb552499dec4a4b3b1d7f9772f5036d9595129f56eefc4f61b47e232159cffb0d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x4f8f2155b54f19f6b76053ccb849d76d03557e2674fabd960bd95879e4f43f76", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d0cd", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0x4f8f2155b54f19f6b76053ccb849d76d03557e2674fabd960bd95879e4f43f76", + "blockNumber": "0xe", + "gasUsed": "0xb061", + "effectiveGasPrice": "0xb677654", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x30bcc094da06d3b658e06ead2cfdc131d9470eedffc6f05f76440f591af95e15" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", + "blockNumber": "0xf", + "blockTimestamp": "0x66a2d0ce", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", + "blockNumber": "0xf", + "blockTimestamp": "0x66a2d0ce", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", + "blockNumber": "0xf", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x9fba0c3", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x2ada78f0437474e259b54e9796ec054023da068a206e1bea4cc91d5eca108f89" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d0cf", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d0cf", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000008000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000400000000000000001000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", + "blockNumber": "0x10", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x8bdafea", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0xd8a22da18127fd113548eae3fc48d55584fa0936a8061c452ca7d51dafa1e03a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x1eda0969aa96d1eb7ba0b966a69f8e36986fe76cd4dd35bd6e5822ba5571bd51", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d0d0", + "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000020000000000000000100000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionIndex": "0x0", + "blockHash": "0x1eda0969aa96d1eb7ba0b966a69f8e36986fe76cd4dd35bd6e5822ba5571bd51", + "blockNumber": "0x11", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x7a6fb5d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x59c699722e791904155dc2e15877391184909ce62bb4f158d564e9c14b3789ed" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946304, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json new file mode 100644 index 00000000..2f6b786c --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0x30cba3426c3b24c4f0e613d490bec14bea8aea75408500e00783d950c3f64b5e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "function": null, + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb6cd43d6a81dec427e461850f7ece00763987530551b2fd234ba8e9727849848", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "function": null, + "arguments": [ + "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa20fb6b4f0c511804431c8e386c4b3a2187275875b1d5870a11eba2b00aa1d39", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "function": null, + "arguments": [ + "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb66f336895630a60eda438379fa54751ee92d5cd8a2dcbff0c7de16d9bc41fb6", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb2176abfa086a67bcee158d196cc5def2528c2e04d90b871bf8a0f81d35605e6", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "transfer(address,uint256)", + "arguments": [ + "0x9A676e781A523b5d0C0e43731313A708CB607508", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x12", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "function": null, + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x13", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xafd3a43663070ecae6305142683763956f54d509aabdfd4d0bb3db7acbe43f4a", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "function": null, + "arguments": [ + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c", + "nonce": "0x14", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec3be37d65c608ba5358b53b705bc5c8eea98a7e6cc7b9dfe83dc68ca040259b", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891", + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c63430008150033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d97b1de3619ed2c6beb3860147e30ca8a7dc98910000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba000000000000000000000000000000000000000000000000000000000000000100000000000000000000000048f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "function": "deposit(address,uint256)", + "arguments": [ + "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "function": "approve(address,uint256)", + "arguments": [ + "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x15", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x30cba3426c3b24c4f0e613d490bec14bea8aea75408500e00783d950c3f64b5e", + "transactionIndex": "0x0", + "blockHash": "0xf9f4d3773f4c1ec99645b14a14548533aaefbf209e2ba57cbb8630523b5ccfbf", + "blockNumber": "0x12", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x6b2dcf7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0xa28c92b393c1429d6ba4fbbdbab8c36990908b451b27f850f5a380935bbc6337" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x70f6b85d792115998ad3eede7cebd0a0efce39432790271f9b1b6a6cb8d8a90c", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d0d7", + "transactionHash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000002000000000000000000000000400000000000", + "type": "0x2", + "transactionHash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", + "transactionIndex": "0x0", + "blockHash": "0x70f6b85d792115998ad3eede7cebd0a0efce39432790271f9b1b6a6cb8d8a90c", + "blockNumber": "0x13", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x5dcce2c", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0x2f9532c0dd02d5016ebac09b980b143f0853fded7dabcec916a56a2b197474c8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x", + "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d0d8", + "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d0d8", + "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d0d8", + "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000400000000000020000000000000100000800000000000000000000040000000000400000000000000000000800000000000000000200000080000000000000000000000000000000040000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000020000000000000000000000", + "type": "0x2", + "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", + "transactionIndex": "0x0", + "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", + "blockNumber": "0x14", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x53c015e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "root": "0xeef93b09d53e64f3cb15542066446ee79f1cd18fe9c000ced1e8013c2982aaa9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb6cd43d6a81dec427e461850f7ece00763987530551b2fd234ba8e9727849848", + "transactionIndex": "0x0", + "blockHash": "0xb440107f762bd6b285320dd8eaa585d7fd35dfa20b9f5c55b7d19c1faf263286", + "blockNumber": "0x15", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x4974e50", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "root": "0x1552d8c9a30bcfc17cc51ce6b408204f85f6ecb11779e0b024be20f2f138ed4f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa20fb6b4f0c511804431c8e386c4b3a2187275875b1d5870a11eba2b00aa1d39", + "transactionIndex": "0x0", + "blockHash": "0x3cdac221c5a2a5744074140abe97aabc7a39705471049c15037146ba16aa098d", + "blockNumber": "0x16", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x40b1b30", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "root": "0x835ea54a6ccbfae9ddcc77ee1175e520334663663f0325adf11f22dd2b06d03a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb66f336895630a60eda438379fa54751ee92d5cd8a2dcbff0c7de16d9bc41fb6", + "transactionIndex": "0x0", + "blockHash": "0xb55e6c6cd29bd87e867557456fe9821e634700d6c364e35ac1bdb34a28b8ded4", + "blockNumber": "0x17", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x38f6de5", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0xbbcfb7c5536abae74118968502525f08f5d0f7fa6fb254d837ecb2ea77f5f261" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb2176abfa086a67bcee158d196cc5def2528c2e04d90b871bf8a0f81d35605e6", + "transactionIndex": "0x0", + "blockHash": "0x141914fad0786da1e937d6d51d51a6f3fcd3f2a9c0fa9216c88d9b59c681dd00", + "blockNumber": "0x18", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x31daa27", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0xbdcd3f76594ba0519661563285fba87378624825e5707aef514a5ccce75a32f4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xe8065f7b647c5929b4cbf68831af740fe0d491bbbd1246fb4bd03e14e74be73f", + "blockNumber": "0x19", + "blockTimestamp": "0x66a2d0dd", + "transactionHash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000", + "type": "0x2", + "transactionHash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", + "transactionIndex": "0x0", + "blockHash": "0xe8065f7b647c5929b4cbf68831af740fe0d491bbbd1246fb4bd03e14e74be73f", + "blockNumber": "0x19", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x2ba19a3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "root": "0xbf0cbf2f857c824e75b0e43b8855f9eec3ea0524bb2b27728026e898820a3335" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x", + "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2d0de", + "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2d0de", + "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", + "blockNumber": "0x1a", + "blockTimestamp": "0x66a2d0de", + "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000800000010000000000010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000001000000004000000000000000000000020000000000000000", + "type": "0x2", + "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", + "transactionIndex": "0x0", + "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", + "blockNumber": "0x1a", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x26f3638", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", + "root": "0x0d4b7fadbf8fbc819ffe3c7cd6e56ce77738b3def6890aacc0d7cca204ded3e8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xafd3a43663070ecae6305142683763956f54d509aabdfd4d0bb3db7acbe43f4a", + "transactionIndex": "0x0", + "blockHash": "0xab215ecb60f50bbb4aa9f3f77f633a0f39656122da91f6700c20a97917edac6c", + "blockNumber": "0x1b", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x2227e94", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", + "root": "0xad108af4b45e5185dde7a98a6f557a70b7faad66f2b84795ff12d64a40dac01b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xd4905b22e3d98c8621d5f7974811d35a838b29ddb49dcc54f3bc72b42ba0f414", + "blockNumber": "0x1c", + "blockTimestamp": "0x66a2d0e0", + "transactionHash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", + "transactionIndex": "0x0", + "blockHash": "0xd4905b22e3d98c8621d5f7974811d35a838b29ddb49dcc54f3bc72b42ba0f414", + "blockNumber": "0x1c", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x1e06001", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "root": "0xf65ce052ab08841883446a16cc328524b0ae1ffeee2d89c82d8be3c321bdb696" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xec3be37d65c608ba5358b53b705bc5c8eea98a7e6cc7b9dfe83dc68ca040259b", + "transactionIndex": "0x0", + "blockHash": "0x8afde92bde6c0a0d6f8b6891858d6bf8dd8a9411af1932cc6230499e2e179b53", + "blockNumber": "0x1d", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0x1a6d73d", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "root": "0x4c1d0081f0c3c4e52e6cb77ef54b86dd7e98af977cdb4db5f65014357d0cfa44" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000048f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "blockHash": "0xef586ef979e9ea69f4a63bbd2246be646ac74232cd4ff147aee7db3decc9aaf1", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a2d0e2", + "transactionHash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", + "transactionIndex": "0x0", + "blockHash": "0xef586ef979e9ea69f4a63bbd2246be646ac74232cd4ff147aee7db3decc9aaf1", + "blockNumber": "0x1e", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x176d072", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "contractAddress": null, + "root": "0x337c14eda9d3ebfd6e8628c6e0ed25c9ab721f91bd1875a4cd08714132d60cc9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x8a9c6212f4889002dc53114793236d89623fef1d71b730d3a68962031fffeb4a", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a2d0e3", + "transactionHash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", + "transactionIndex": "0x0", + "blockHash": "0x8a9c6212f4889002dc53114793236d89623fef1d71b730d3a68962031fffeb4a", + "blockNumber": "0x1f", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x1481ac8", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "contractAddress": null, + "root": "0xd1c9552d9e0507a5ed34ab5a98e76f7b1fb270258d20f57e066c8c0681e490a1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", + "blockNumber": "0x20", + "blockTimestamp": "0x66a2d0e4", + "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", + "blockNumber": "0x20", + "blockTimestamp": "0x66a2d0e4", + "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000002000000000000000000000000000000020000000002000000200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", + "transactionIndex": "0x0", + "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", + "blockNumber": "0x20", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x11f370b", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "contractAddress": null, + "root": "0xab547e4ef30f7f9427ac7b8e3b2a0fbc3a9adde0cec2ae45776e71da9ee16d7b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", + "blockNumber": "0x21", + "blockTimestamp": "0x66a2d0e5", + "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", + "blockNumber": "0x21", + "blockTimestamp": "0x66a2d0e5", + "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000008000000000000000000000000000000000010000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000002000000000000000000000000000000020000000002000000000000000000000040000000000000400000000000000020000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", + "transactionIndex": "0x0", + "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", + "blockNumber": "0x21", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0xfb7bb0", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "contractAddress": null, + "root": "0x0273f139b5e0542bfef98639296833c87b0cbd22b449223a6a111ca6eab7b828" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x4ef94befd259891ed366aa45e854194bac22963ab37b0e29c77768e7ed719ea0", + "blockNumber": "0x22", + "blockTimestamp": "0x66a2d0e6", + "transactionHash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000002000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000000020000000000000000000000000002000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", + "transactionIndex": "0x0", + "blockHash": "0x4ef94befd259891ed366aa45e854194bac22963ab37b0e29c77768e7ed719ea0", + "blockNumber": "0x22", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0xdc2929", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "contractAddress": null, + "root": "0xd88947dad986951a8fc2df5e529a434051a35bce89f5fc972181341ec360eb0d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946326, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json new file mode 100644 index 00000000..5c5dd938 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0x7705e139e50f4c1c253a6b47a7a4a1d2623c40af537fe5d9cad41dcf0e9b7122", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x16", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "function": null, + "arguments": [ + "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000322813fd9a801c5507c9de605d63cea4f2ce6c4400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdfbd9e5d5b6865566602bbabe14866f5fcc3d6b6c66015b284dbf830b08137a1", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "function": null, + "arguments": [ + "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97d8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe60a0688a0f0b612e1106ee0296201d4a7c42be05fb981ec32dc2a3003066096", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "function": null, + "arguments": [ + "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2143", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x1a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa8a80f93783ac66df7cfe20eceab2bba12c171b4bd0f2035d4b78c6cebf7fe6d", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x1b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xff0950bf4987de6a1e2118fbde3878247344c404d43d667cf049b7a29937c7c0", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "transfer(address,uint256)", + "arguments": [ + "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x1c", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x1d", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "function": null, + "arguments": [ + "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf5593300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x1e", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7a8b7b866f21b1783878af8d51fa18c07a28dd2baa37ebdbb65da69d6aba8330", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", + "function": null, + "arguments": [ + "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e", + "nonce": "0x1f", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0fb6765ead22ae63dc973f6966f16e388efb877c4c8b097df3bdf9f0bc2d9061", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0", + "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c6343000815003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005ba149a7bd6dc1f937fa9046a9e05c05f3b18b0000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0xcC683A782f4B30c138787CB5576a86AF66fdc31d" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000cc683a782f4b30c138787cb5576a86af66fdc31d", + "nonce": "0xe", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0xf", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x10", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "function": "deposit(address,uint256)", + "arguments": [ + "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe6369000000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x11", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "function": "approve(address,uint256)", + "arguments": [ + "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x20", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7705e139e50f4c1c253a6b47a7a4a1d2623c40af537fe5d9cad41dcf0e9b7122", + "transactionIndex": "0x0", + "blockHash": "0x20e51be4a4bda65a653c13de4289cdc32e798cc6a454e39e5a4030c1e1cf7efb", + "blockNumber": "0x23", + "gasUsed": "0x5208", + "effectiveGasPrice": "0xc0b9b6", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x22a390f0f3c5fc718f2f728b01e1805d61247f6a7e41f3505e0bda5d548ccf71" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x615204426e5536430527d7356d210c08f35f1a834e3f34b967c1ce194e322dd6", + "blockNumber": "0x24", + "blockTimestamp": "0x66a2d0ec", + "transactionHash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000010000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", + "transactionIndex": "0x0", + "blockHash": "0x615204426e5536430527d7356d210c08f35f1a834e3f34b967c1ce194e322dd6", + "blockNumber": "0x24", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0xa8ab22", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", + "root": "0x7c4cf060980f8b28789f780bd5770bff81e6fc9c7935c54f3c72cb553bebb3f4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000322813fd9a801c5507c9de605d63cea4f2ce6c44" + ], + "data": "0x", + "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", + "blockNumber": "0x25", + "blockTimestamp": "0x66a2d0ed", + "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", + "blockNumber": "0x25", + "blockTimestamp": "0x66a2d0ed", + "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", + "blockNumber": "0x25", + "blockTimestamp": "0x66a2d0ed", + "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000040000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000800000000000000000008000008000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000001000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", + "transactionIndex": "0x0", + "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", + "blockNumber": "0x25", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x9698d1", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", + "root": "0x50feca275e29538c6c1eec4c0b4758e9e282d82523482d70a2b02bbe7cbfa03d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7586", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdfbd9e5d5b6865566602bbabe14866f5fcc3d6b6c66015b284dbf830b08137a1", + "transactionIndex": "0x0", + "blockHash": "0x972e5eb3aa41c70eba21b1dee32c269b29c37bc3d5437c9e30950b37615adb3a", + "blockNumber": "0x26", + "gasUsed": "0xa7586", + "effectiveGasPrice": "0x84164f", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", + "root": "0xfc2eed5aca3ed439c7261f440aadec81210a59c1ec1813382de8964708e83085" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a58", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe60a0688a0f0b612e1106ee0296201d4a7c42be05fb981ec32dc2a3003066096", + "transactionIndex": "0x0", + "blockHash": "0x4ab296d8c9d587482d3f9ebc06057d6c306fdbecd744a94d25f5015ad10480d1", + "blockNumber": "0x27", + "gasUsed": "0xa1a58", + "effectiveGasPrice": "0x7454ac", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "root": "0x20b5609cddb74629bc40adea1af6d43130726a078187ed5450939666df1aa723" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa8a80f93783ac66df7cfe20eceab2bba12c171b4bd0f2035d4b78c6cebf7fe6d", + "transactionIndex": "0x0", + "blockHash": "0x2434f4622453e848056a84074de805487276dd40ca43ea88006aed683b7c608d", + "blockNumber": "0x28", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x666e68", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0xb04995fedfcd81d0ef7dc393664be2a60caac6ed2c95725ef3848bf5d0544d5a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xff0950bf4987de6a1e2118fbde3878247344c404d43d667cf049b7a29937c7c0", + "transactionIndex": "0x0", + "blockHash": "0xdad02fc0518629b6bb8848dcb8a9ab3d80c427f823fa41547fe8681fcfdda8d7", + "blockNumber": "0x29", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x59a554", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x9b3a8d10e13fc0d30bd878362c44c212931496095eb97c652df903ce94a800ee" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x993ca239cfe4bcf6d0db123126ff97f81c5ef772465946b05fdaf8f28d31ba42", + "blockNumber": "0x2a", + "blockTimestamp": "0x66a2d0f2", + "transactionHash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000", + "type": "0x2", + "transactionHash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", + "transactionIndex": "0x0", + "blockHash": "0x993ca239cfe4bcf6d0db123126ff97f81c5ef772465946b05fdaf8f28d31ba42", + "blockNumber": "0x2a", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x4e74cb", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", + "root": "0xf2ef3ede74a61e5dbaafbe9e46352d5b012c095d44f5dc0b47037bb5fc6302cb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933" + ], + "data": "0x", + "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", + "blockNumber": "0x2b", + "blockTimestamp": "0x66a2d0f3", + "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", + "blockNumber": "0x2b", + "blockTimestamp": "0x66a2d0f3", + "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", + "blockNumber": "0x2b", + "blockTimestamp": "0x66a2d0f3", + "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000002001001000000000000000000000000000000000002020000000000000100000800000000000000000000000000080000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000010000000000000020000000200000000000000000000000002004000000000200000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", + "transactionIndex": "0x0", + "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", + "blockNumber": "0x2b", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x460a35", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", + "root": "0x6043c8983494659490e731ccd34649593b7305647715a5b83d6ba978bd4669da" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7a8b7b866f21b1783878af8d51fa18c07a28dd2baa37ebdbb65da69d6aba8330", + "transactionIndex": "0x0", + "blockHash": "0x6d73eb8b04e00bc2731edcae22ced3d34e000974feab87cfdce709f3f2dcbef8", + "blockNumber": "0x2c", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x3d6b00", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", + "root": "0x125a461b42208e5dfdb257cf048a0ebc98c81347dd50b01c667e8e5431169e7c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xe8b106644691f2682683fa6e59099a4e6ecda24bd9d3ccd8e5e6d39e2df7e15f", + "blockNumber": "0x2d", + "blockTimestamp": "0x66a2d0f5", + "transactionHash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000040000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", + "transactionIndex": "0x0", + "blockHash": "0xe8b106644691f2682683fa6e59099a4e6ecda24bd9d3ccd8e5e6d39e2df7e15f", + "blockNumber": "0x2d", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x35fcb4", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "root": "0x9b83024af4d63ec64086bf9c8bbfc4105f37b0ce561833b207835e3bf0208513" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0fb6765ead22ae63dc973f6966f16e388efb877c4c8b097df3bdf9f0bc2d9061", + "transactionIndex": "0x0", + "blockHash": "0x02374539ef9a8a5a83349fa4cd9ca2475b35ce5766b871d7e9509ef6d19c7f34", + "blockNumber": "0x2e", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0x2f8568", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "root": "0xd8d4e3a70ddb327437aac32816d8679af4f089d282e4c7b54a992dbd266b7843" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000cc683a782f4b30c138787cb5576a86af66fdc31d", + "blockHash": "0x512f2da0e75e3008d04fe4bcde75c3b96875092dd4b1942d295da19248ed60b1", + "blockNumber": "0x2f", + "blockTimestamp": "0x66a2d0f7", + "transactionHash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000040000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000002000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", + "transactionIndex": "0x0", + "blockHash": "0x512f2da0e75e3008d04fe4bcde75c3b96875092dd4b1942d295da19248ed60b1", + "blockNumber": "0x2f", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x2a1fa7", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "contractAddress": null, + "root": "0x1ad251d738e7e2cfe8a6924fff033cef7fcb892785a6f8ec05de760d5853de80" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x9c4e3c8dcfc9a40a7ecaa5d2c16f591f1aeafb6a0af3a4970c98ff86151692b6", + "blockNumber": "0x30", + "blockTimestamp": "0x66a2d0f8", + "transactionHash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000100000000000002000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", + "transactionIndex": "0x0", + "blockHash": "0x9c4e3c8dcfc9a40a7ecaa5d2c16f591f1aeafb6a0af3a4970c98ff86151692b6", + "blockNumber": "0x30", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x24dfca", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", + "contractAddress": null, + "root": "0xab9126a500a978594ad863d08b4bb9533d4a2c8ac46bf31ac35bc3428cafcd1c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", + "blockNumber": "0x31", + "blockTimestamp": "0x66a2d0f9", + "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", + "blockNumber": "0x31", + "blockTimestamp": "0x66a2d0f9", + "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000800200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000000040001000000000000", + "type": "0x2", + "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", + "transactionIndex": "0x0", + "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", + "blockNumber": "0x31", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x20475f", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "contractAddress": null, + "root": "0x3359517c444e13928c0c147412c7006f138d605e2600ceb8f3859921369975cb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", + "blockNumber": "0x32", + "blockTimestamp": "0x66a2d0fa", + "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", + "blockNumber": "0x32", + "blockTimestamp": "0x66a2d0fa", + "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000002000000020000000002000800000000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000000040001000000000000", + "type": "0x2", + "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", + "transactionIndex": "0x0", + "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", + "blockNumber": "0x32", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x1c4358", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "contractAddress": null, + "root": "0xd38c8707da0124b742cb72e511735ec96fd340c68848c8d3562a0bc60d82f4f8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xe30d55f1c97af146d32dde1e55701c8c3827f03bbeac58b78019c3d3df0bface", + "blockNumber": "0x33", + "blockTimestamp": "0x66a2d0fb", + "transactionHash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000100000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000020000000000000000000000000000000000000000800200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000040000000000000000", + "type": "0x2", + "transactionHash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", + "transactionIndex": "0x0", + "blockHash": "0xe30d55f1c97af146d32dde1e55701c8c3827f03bbeac58b78019c3d3df0bface", + "blockNumber": "0x33", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x18be2e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", + "contractAddress": null, + "root": "0x5e410eef027a26b863c1e74ff74720881549dc424dc885337574ba38cbf5b864" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946347, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json new file mode 100644 index 00000000..d50cb2e1 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0xce821002416ff8f50e7371ba0d5a88c15567e790b21a780212ab572ddb7f3ec6", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x21", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x22", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "function": null, + "arguments": [ + "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x23", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1f92594b5098c859d409a925648dc95b5f04f72c530bc2cfba82844c53b9da9e", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "function": null, + "arguments": [ + "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x24", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6420cb20ddecced6e1493b8e9280b82688cdf426e2231f5689be6ff2123b8909", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "function": null, + "arguments": [ + "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x25", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xefa44ba337ad29302c5aa1891c4ee1b83f5e3a28a54fc6b544c3f0d9f388d1c9", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x26", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83dab857bff5bac386d125f4d67f1a04b4fc963ed14bd78a45e82019dba20efe", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "transfer(address,uint256)", + "arguments": [ + "0x851356ae760d987E095750cCeb3bC6014560891C", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x27", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x28", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", + "function": null, + "arguments": [ + "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x29", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe8425ea3d0e5f973000216c22886bc3876622713e3d71ed29bbae0d9dde4fb57", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "function": null, + "arguments": [ + "0x4826533B4897376654Bb4d4AD88B7faFD0C98528" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528", + "nonce": "0x2a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x12", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2c855a5b0c3261efb7b550f953ae82bd73849775052f9ce325b4444aa75cab00", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0xfC9201f4116aE6b054722E10b98D904829b469c3", + "0x4826533B4897376654Bb4d4AD88B7faFD0C98528" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c63430008150033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc9201f4116ae6b054722e10b98d904829b469c30000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c985280000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x13", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0xD10932EB3616a937bd4a2652c87E9FeBbAce53e5" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d10932eb3616a937bd4a2652c87e9febbace53e5", + "nonce": "0x14", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x15", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x16", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "function": "deposit(address,uint256)", + "arguments": [ + "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef2400000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "function": "approve(address,uint256)", + "arguments": [ + "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c9852800000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x2b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xce821002416ff8f50e7371ba0d5a88c15567e790b21a780212ab572ddb7f3ec6", + "transactionIndex": "0x0", + "blockHash": "0x077c3da9cb50cf46a8440e7ef3c76de072e233f09832ab9abbed55e6a64f2d7a", + "blockNumber": "0x34", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x15a8d9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x19bbcee40cb7396166cebf461c2c9dd31beecd39d5a26167bbaf8a1fd9c7edc6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xbe4af2dc73ad82c1eb673235b410a4a3c45c123046c817cb5ff2a99a4ad43718", + "blockNumber": "0x35", + "blockTimestamp": "0x66a2d0fd", + "transactionHash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", + "transactionIndex": "0x0", + "blockHash": "0xbe4af2dc73ad82c1eb673235b410a4a3c45c123046c817cb5ff2a99a4ad43718", + "blockNumber": "0x35", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x12f4b7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "root": "0xa7eaa835f8ff6e78006fb0c31deb64653e9f03c25f4a01646829adbca27b3ff1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9" + ], + "data": "0x", + "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", + "blockNumber": "0x36", + "blockTimestamp": "0x66a2d0fe", + "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", + "blockNumber": "0x36", + "blockTimestamp": "0x66a2d0fe", + "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", + "blockNumber": "0x36", + "blockTimestamp": "0x66a2d0fe", + "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000008000000020000000000010100000800000000000000000000000000000000400000000000000000000800000000000000000000000090000000000400000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000004000000020000000000000000000000000000000000000000000000000000000000000001000", + "type": "0x2", + "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", + "transactionIndex": "0x0", + "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", + "blockNumber": "0x36", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x10ecc9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "root": "0xac0abce4eb1d5d3196dd8be38cec65d071c28181548af6a2f508f55fa22275c2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1f92594b5098c859d409a925648dc95b5f04f72c530bc2cfba82844c53b9da9e", + "transactionIndex": "0x0", + "blockHash": "0x9920288990324513b05da2505d879a04384353830e5b31dbf5af083e36156bf2", + "blockNumber": "0x37", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0xed83f", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", + "root": "0x24e6c696166aac46fe6bb99663175f598fc99af2416d50142f5b24b036a60912" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6420cb20ddecced6e1493b8e9280b82688cdf426e2231f5689be6ff2123b8909", + "transactionIndex": "0x0", + "blockHash": "0xce7acb12bf1202e065e576a30cdab55f8474093f90ae83fd5f35359bd7492ddf", + "blockNumber": "0x38", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0xd12ed", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", + "root": "0xb231c4d9dd167df04e02361cef1dd6e724fc491ed13b27dc03961f5d6e8ee35f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xefa44ba337ad29302c5aa1891c4ee1b83f5e3a28a54fc6b544c3f0d9f388d1c9", + "transactionIndex": "0x0", + "blockHash": "0x7a225d3d34e81ff90c024f1e818b836ea5facbcfec41adb984047d2a2a41b32e", + "blockNumber": "0x39", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xb8308", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0xaccbb53bfcd921714857a9ca80d951bd600752557ef536a3cc054a727bf583b9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x83dab857bff5bac386d125f4d67f1a04b4fc963ed14bd78a45e82019dba20efe", + "transactionIndex": "0x0", + "blockHash": "0xcb23d74a78bf407c60e91f819cbef2aeb4597b94daaa0f077cd29b66bdb84071", + "blockNumber": "0x3a", + "gasUsed": "0x545c", + "effectiveGasPrice": "0xa132f", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x3dddb3d80a58849f2b0a25144e9262c83344e116382f7f82c5146ad0285f4a79" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x21403e0c50cfca9392b9fc383ba0ede62654fbbf97c52b4b61eef7e03e558396", + "blockNumber": "0x3b", + "blockTimestamp": "0x66a2d103", + "transactionHash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", + "transactionIndex": "0x0", + "blockHash": "0x21403e0c50cfca9392b9fc383ba0ede62654fbbf97c52b4b61eef7e03e558396", + "blockNumber": "0x3b", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x8d141", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", + "root": "0x5af023ee677e64452e7204abae484fc3559e7b60fb7f3ad5cf0987de4c94718b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49" + ], + "data": "0x", + "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", + "blockNumber": "0x3c", + "blockTimestamp": "0x66a2d104", + "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", + "blockNumber": "0x3c", + "blockTimestamp": "0x66a2d104", + "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", + "blockNumber": "0x3c", + "blockTimestamp": "0x66a2d104", + "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000a00000000000000000000000000000000400000000000000000000800000000000000000000000080000040000000000080000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004001000000000000020000000000000000080000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", + "transactionIndex": "0x0", + "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", + "blockNumber": "0x3c", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x7df1c", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", + "root": "0xde3a223fa3d30337ee9405b6550b331df33a98f6f98b44e9f950713aac5d9795" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe8425ea3d0e5f973000216c22886bc3876622713e3d71ed29bbae0d9dde4fb57", + "transactionIndex": "0x0", + "blockHash": "0x9926b3651bb282f8a92f214ed179bd0182776d6b9798d8291cf5f7a97716f074", + "blockNumber": "0x3d", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x6e70d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "root": "0x62133c38d70c181d7b88bf72d5460558b80da56baae654b783483006ab1411df" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0x7980018cb4f90df24f50e973f81ea47eb90216cd98b799e7f8bbbc013d0c90ac", + "blockNumber": "0x3e", + "blockTimestamp": "0x66a2d106", + "transactionHash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000020000000000000010000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", + "transactionIndex": "0x0", + "blockHash": "0x7980018cb4f90df24f50e973f81ea47eb90216cd98b799e7f8bbbc013d0c90ac", + "blockNumber": "0x3e", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x61143", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "root": "0x0374693e52e9b1766a71fb8cf5c424c52895602104c310a3d4651e41b1ece207" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2c855a5b0c3261efb7b550f953ae82bd73849775052f9ce325b4444aa75cab00", + "transactionIndex": "0x0", + "blockHash": "0x5ebe9738a28714223f07ba2d051a82e6a10d2b7617569358322afc89431d12fd", + "blockNumber": "0x3f", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0x5573b", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "root": "0x2514fecf698ada223642b5fad92cf5a249766e76f5b1081c1fef77ff4f3b2c4f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d10932eb3616a937bd4a2652c87e9febbace53e5", + "blockHash": "0xdad2ae0183871d9625f2336cff765a4687a39c71b972870ee9608f0a0d933d7a", + "blockNumber": "0x40", + "blockTimestamp": "0x66a2d108", + "transactionHash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000020000000000000000000000000000000000000000000000000000000000000000004000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000200000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", + "transactionIndex": "0x0", + "blockHash": "0xdad2ae0183871d9625f2336cff765a4687a39c71b972870ee9608f0a0d933d7a", + "blockNumber": "0x40", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x4bbf1", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "contractAddress": null, + "root": "0x52cad839a439a3fb9d617f1464807102374a175f519a9289bef8c084fc3c9325" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xb638631004b0c5763ead3d820d2fcd0b8c5b2b483574f077fa3c5ed44cf131d2", + "blockNumber": "0x41", + "blockTimestamp": "0x66a2d109", + "transactionHash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000020000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", + "transactionIndex": "0x0", + "blockHash": "0xb638631004b0c5763ead3d820d2fcd0b8c5b2b483574f077fa3c5ed44cf131d2", + "blockNumber": "0x41", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x424e9", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", + "contractAddress": null, + "root": "0xc62e04e3495665a44e1dc0c8e5df19a0cf677d5a3f6ff6104d1eeb0517c0157d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", + "blockNumber": "0x42", + "blockTimestamp": "0x66a2d10a", + "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", + "blockNumber": "0x42", + "blockTimestamp": "0x66a2d10a", + "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000020000000002000000200000000000000040000000002000000000000020000020000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", + "transactionIndex": "0x0", + "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", + "blockNumber": "0x42", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x3a0b3", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "contractAddress": null, + "root": "0xbc4dd88675d5ffe32616c1d1a373d320d975a46bf29d5ef0815826b5814f1bbe" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", + "blockNumber": "0x43", + "blockTimestamp": "0x66a2d10b", + "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", + "blockNumber": "0x43", + "blockTimestamp": "0x66a2d10b", + "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000100000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000020000000002200000000000000000000040000000000000000000000020000020000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", + "transactionIndex": "0x0", + "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", + "blockNumber": "0x43", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x32d2a", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "contractAddress": null, + "root": "0x6dc943c8b29f4c4a3afd00f8c0cb771dd0a9f62a0944c53b22db03d05a007251" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x17545a7f907795f46e87098b27887381272a3290d8c23dc4fd522b09ee3b7966", + "blockNumber": "0x44", + "blockTimestamp": "0x66a2d10c", + "transactionHash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000200000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000020000000000000000000000000000000000020000000000000000000000000000000000000000200000000000000000000000002000000000000020000000000010000000000000000000008000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", + "transactionIndex": "0x0", + "blockHash": "0x17545a7f907795f46e87098b27887381272a3290d8c23dc4fd522b09ee3b7966", + "blockNumber": "0x44", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x2c7e3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", + "contractAddress": null, + "root": "0xa86413c33fa3384ce63439383f8ca577fd55325d9fa692accc2577dae447a1ea" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946364, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json new file mode 100644 index 00000000..38de803e --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json @@ -0,0 +1,929 @@ +{ + "transactions": [ + { + "hash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "function": null, + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "0xdaE97900D4B184c5D2012dcdB658c008966466DD", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2152", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "function": "transfer(address,uint256)", + "arguments": [ + "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "gas": "0x7484", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "function": null, + "arguments": [ + "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4856f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "function": null, + "arguments": [ + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef240000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", + "transactionIndex": "0x0", + "blockHash": "0x66e0571da6332fa142c938568e989693bcbaaff03dfc81a644c71ab6274fa4db", + "blockNumber": "0x1", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x5efbab106cea95288662cd38f2efe9a22608078752216cb6f4dcb65c57f52258" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xe02f420942f8f7d88a93ba4f56c67adb7587deea41430db0b0f2570552b9d2c2", + "blockNumber": "0x2", + "blockTimestamp": "0x66a2d170", + "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000004000000000000000000000000000000000000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", + "transactionIndex": "0x0", + "blockHash": "0xe02f420942f8f7d88a93ba4f56c67adb7587deea41430db0b0f2570552b9d2c2", + "blockNumber": "0x2", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x342a1c59", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x7a3af91a83f06ee97689fdaace3087fa21cad1c0cbd3fa2e94beebeaf704093d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + ], + "data": "0x", + "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d171", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d171", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", + "blockNumber": "0x3", + "blockTimestamp": "0x66a2d171", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000400000000000000400000000000000000800000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000004000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", + "transactionIndex": "0x0", + "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", + "blockNumber": "0x3", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x2e93516b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0x11ba771a4e13324daee8f9edee84ddbe101a95d0b15b262fedee816acf1b50c0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", + "transactionIndex": "0x0", + "blockHash": "0x7d26eb23e502dde94dd05168b50983a3d2d1a8b1c4ea54fc70282d7c44062431", + "blockNumber": "0x4", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x28d9d418", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "root": "0xe979fafa179a267111c76218bd2ae26b7e67dcaaa22d06e9c8b24c39d421c2f4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a64", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", + "transactionIndex": "0x0", + "blockHash": "0x8659b372c28dc38254988c7d96691c767a94dcbcc25904c21ac42923c167f27a", + "blockNumber": "0x5", + "gasUsed": "0xa1a64", + "effectiveGasPrice": "0x23fa562d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0xa4778652fefacbb49fcb28db70c1eb99fbf7aac1273620daf8cdcd7fda794a69" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", + "transactionIndex": "0x0", + "blockHash": "0xba18c56998baf6544aa7fcfaa4c7e1d470da597714cfcfc7cbca1b68b35411ac", + "blockNumber": "0x6", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1faddd23", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x4428bf85c507dcefe7bec332bb83befa42dd993538b3eebbd1a8dff1f493b066" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x545c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", + "transactionIndex": "0x0", + "blockHash": "0x426da8a8d3e921292e60850e09036c145aa0dd54b96e03b9abe910e7017065d9", + "blockNumber": "0x7", + "gasUsed": "0x545c", + "effectiveGasPrice": "0x1bb99721", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", + "contractAddress": null, + "root": "0x0795e76c053fb1affb5a795544fb08e956d312975920044da2fd07e2b65c2750" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x372cfe26de79a06f36a49f899947d4400c8753f1654889751ad5be1201a76263", + "blockNumber": "0x8", + "blockTimestamp": "0x66a2d176", + "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", + "transactionIndex": "0x0", + "blockHash": "0x372cfe26de79a06f36a49f899947d4400c8753f1654889751ad5be1201a76263", + "blockNumber": "0x8", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x1843ab3d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x346a9c5261689c12c9552c51ddaa747a85fdeabf5a0d27652a6a5e9d3dabcb18" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aa2", + "logs": [ + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853" + ], + "data": "0x", + "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d177", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d177", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d177", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x000000000000000000000000004000004000000000000000008000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000000000001000008000000000000000000000000000000004000000000000000000008000000000000000000000000c0000000000000000000000000000000000000000000000040000000000000000000000000000000008000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000800000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", + "transactionIndex": "0x0", + "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", + "blockNumber": "0x9", + "gasUsed": "0x37aa2", + "effectiveGasPrice": "0x15a950a9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "root": "0x6a7a46b961a0b7c24296c6111e8f6b456537c8f7c011732fa09b727477a6f804" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", + "transactionIndex": "0x0", + "blockHash": "0xbad468a47fbaf38e8d696fefd194fa1dbf8f3d0751614404074e8e98b4c4f582", + "blockNumber": "0xa", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0x12feafd8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "root": "0x2af22cfa604b30de4b230408ff3bb628d2fd0b401f281c0febc5470efe79d73a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0x385acc8a9067bbbc69467a57f6a725dc71488e06f339165b8ac5b95fd1771ad1", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d179", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0x385acc8a9067bbbc69467a57f6a725dc71488e06f339165b8ac5b95fd1771ad1", + "blockNumber": "0xb", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0x10b25bcd", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0xe6f42239a619b96437911e44c6f9c74ab2ce5b5fab2bd9b004eb94726f106221" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", + "transactionIndex": "0x0", + "blockHash": "0x81f01260782365377df275f7e83cc200f1023cfa892ea976aa0caa90423c38a2", + "blockNumber": "0xc", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xeb26bcb", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0x75a8ace8ae6ed9c67f0093e8a431bca4e4d5b5c324eaf925454151f1d749f12a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0x02a2460cccdfa0fdce0755a0f3d2f576b97c35b8a48d7e5b8b582f68bb7b3fc4", + "blockNumber": "0xd", + "blockTimestamp": "0x66a2d17b", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0x02a2460cccdfa0fdce0755a0f3d2f576b97c35b8a48d7e5b8b582f68bb7b3fc4", + "blockNumber": "0xd", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0xd07152f", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0xb552499dec4a4b3b1d7f9772f5036d9595129f56eefc4f61b47e232159cffb0d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa6dfdbaf8175be13ab6b9c18b01503ea27e5c41edd8cea7cb5f94b0ad28aa26f", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d17c", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0xa6dfdbaf8175be13ab6b9c18b01503ea27e5c41edd8cea7cb5f94b0ad28aa26f", + "blockNumber": "0xe", + "gasUsed": "0xb061", + "effectiveGasPrice": "0xb677654", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x30bcc094da06d3b658e06ead2cfdc131d9470eedffc6f05f76440f591af95e15" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", + "blockNumber": "0xf", + "blockTimestamp": "0x66a2d17d", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", + "blockNumber": "0xf", + "blockTimestamp": "0x66a2d17d", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", + "blockNumber": "0xf", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x9fba0c3", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x2ada78f0437474e259b54e9796ec054023da068a206e1bea4cc91d5eca108f89" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d17e", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d17e", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000008000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000400000000000000001000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", + "transactionIndex": "0x0", + "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", + "blockNumber": "0x10", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x8bdafea", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0xd8a22da18127fd113548eae3fc48d55584fa0936a8061c452ca7d51dafa1e03a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x7faa2edc4fc95482a952e04aa6f2fb2344fcf31fd07ddfb16c64c8cbe1bed2db", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d17f", + "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000020000000000000000100000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", + "transactionIndex": "0x0", + "blockHash": "0x7faa2edc4fc95482a952e04aa6f2fb2344fcf31fd07ddfb16c64c8cbe1bed2db", + "blockNumber": "0x11", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x7a6fb5d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x59c699722e791904155dc2e15877391184909ce62bb4f158d564e9c14b3789ed" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946479, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json new file mode 100644 index 00000000..915a91d7 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json @@ -0,0 +1,1078 @@ +{ + "transactions": [ + { + "hash": "0x43661fc3cc29f3ce1434910baf38d136c30b17c37f07f08236f0ee3334daec5e", + "transactionType": "CREATE2", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": null, + "arguments": [ + "\"test\"", + "\"TTK\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xdc2a5", + "value": "0x0", + "input": "0xe06a9a734277a91ec377b632ba7967256704e2ea8a50026b59d82caa0efbde6e60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1fb0a78ec7e12d78320248745b92897fef8c6462c65c1092a5b36787724a69db", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": [ + "\"zeta\"", + "\"ZETA\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9b8", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12f1aac7cc6047a2628e8ae64aabcb5877d941255a781f2d7dd81f58fd9f44a8", + "transactionType": "CREATE", + "contractName": "ReceiverEVM", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xfbdc6", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "function": null, + "arguments": [ + "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x51eb0363653eb210369e4fc02dd19ee21247284a2dd69657162086ea30ba176d", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2162", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "gas": "0x170a4", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": "transfer(address,uint256)", + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "gas": "0x125e1", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xc4d66de8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4857f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9f72f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x43661fc3cc29f3ce1434910baf38d136c30b17c37f07f08236f0ee3334daec5e", + "transactionIndex": "0x0", + "blockHash": "0xc52dd3b679013ac0537ae51f409ea321114f850e209a869d1aba06700e0a611b", + "blockNumber": "0x1", + "gasUsed": "0x9f72f", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "root": "0x297f6906ded1cda37a129989c419c4ae740a6abb8470788467409139fc35783d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9efb7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1fb0a78ec7e12d78320248745b92897fef8c6462c65c1092a5b36787724a69db", + "transactionIndex": "0x0", + "blockHash": "0x6d43621889776289fe5db4505d171690b9f8180b53337c4dffb03f9cb170be41", + "blockNumber": "0x2", + "gasUsed": "0x9efb7", + "effectiveGasPrice": "0x347a7c9e", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0xa9dc124b1fce9ce9dbf761a91e91a26250c1945eb9424161f9f5b85123023275" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc1ca8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x12f1aac7cc6047a2628e8ae64aabcb5877d941255a781f2d7dd81f58fd9f44a8", + "transactionIndex": "0x0", + "blockHash": "0xbd6014f660535397fa6501642863b46c226ab9be3d7a119c3bb4125aea77b717", + "blockNumber": "0x3", + "gasUsed": "0xc1ca8", + "effectiveGasPrice": "0x2e341455", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0xbe66cd4fa6758084cd1efef96e7ae66cb41e9726f6f790cefaeb3d77a4132a9e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionIndex": "0x0", + "blockHash": "0x17128b9a1aaefd6aefcf76a57c4956fc49071f8035ceaca1be31471c017ba500", + "blockNumber": "0x4", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x28bbcf21", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0xfea3e1e0b5466aca189eaa08f3bcbebba84d8a48ae76c612ebb6f1837dc6f439" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x652faffd818be261d3abeda97e7764512a78b9022271f79ba9cb9dc6fe8f4454", + "blockNumber": "0x5", + "blockTimestamp": "0x66a2d1b4", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", + "type": "0x2", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "blockHash": "0x652faffd818be261d3abeda97e7764512a78b9022271f79ba9cb9dc6fe8f4454", + "blockNumber": "0x5", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x23a62868", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0x129ce86d438f5ea045778497fe81f92ae8624be1b27428f5758405c332582e39" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x", + "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1b5", + "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1b5", + "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1b5", + "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", + "transactionIndex": "0x0", + "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", + "blockNumber": "0x6", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1fd45bca", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "root": "0x660c7c23628a3ba4d0497959cadb4d8e0540bf62a0414a1124e9d091741563cd" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionIndex": "0x0", + "blockHash": "0x8999652dc97c980acc62a77b2af1fbbe4b7912bcdf51f8ea773bd3e0ab627ae1", + "blockNumber": "0x7", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x1bead8f9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0x3627e650526e946a9ccd1f3605a63d45082ad2219625d6f6296af67d2ff82e1b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a70", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x51eb0363653eb210369e4fc02dd19ee21247284a2dd69657162086ea30ba176d", + "transactionIndex": "0x0", + "blockHash": "0xcfd208b63f521516cc38fb788ce956ac3abbcd47fa35ba27086650da59d57b20", + "blockNumber": "0x8", + "gasUsed": "0xa1a70", + "effectiveGasPrice": "0x189650c3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0xeefeb7cbb2905e9f918710a4a6e638449db772d97952ea5cabeb4b97b09e2432" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x10ae4", + "logs": [ + { + "address": "0x14c369bc7a80723988b417d266a97906069240e9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xd01649e12693f54b1e6af8c8694036ff5a5a8e634767554a787f2c68e64a3c7e", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d1b8", + "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000020000400000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionIndex": "0x0", + "blockHash": "0xd01649e12693f54b1e6af8c8694036ff5a5a8e634767554a787f2c68e64a3c7e", + "blockNumber": "0x9", + "gasUsed": "0x10ae4", + "effectiveGasPrice": "0x15a641a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "contractAddress": null, + "root": "0xcfc510a78a81773598a97805f1a342d4f992d88a0377ccc4d8c6a6f8291d601c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc8f2", + "logs": [ + { + "address": "0x14c369bc7a80723988b417d266a97906069240e9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000007a120", + "blockHash": "0xc8926c7e89ec3245922c9f483dbc8d74286fee518ae1cd9e0fd6f592ceb40ac6", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2d1b9", + "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000400000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000400000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionIndex": "0x0", + "blockHash": "0xc8926c7e89ec3245922c9f483dbc8d74286fee518ae1cd9e0fd6f592ceb40ac6", + "blockNumber": "0xa", + "gasUsed": "0xc8f2", + "effectiveGasPrice": "0x12f4a144", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "contractAddress": null, + "root": "0xb4320ed5ff01b7defca3641e9a34cc1130124522fb9d217d07c60f5605e4547e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xdefe5afb3d9c2f024932356ce3b1e2e8752a43585eb0e4470f1026dd3610e9c3", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d1ba", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "blockHash": "0xdefe5afb3d9c2f024932356ce3b1e2e8752a43585eb0e4470f1026dd3610e9c3", + "blockNumber": "0xb", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x109821a7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0xf9cf29e4864be7486b532d4dea19da64819941db442c45bdd545832675704bfb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aae", + "logs": [ + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x", + "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1bb", + "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1bb", + "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1bb", + "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", + "transactionIndex": "0x0", + "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", + "blockNumber": "0xc", + "gasUsed": "0x37aae", + "effectiveGasPrice": "0xed06a49", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0xa1f9ae24236f40f00b8835325d639123a830a34414b7f498b4d356e9c4464574" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionIndex": "0x0", + "blockHash": "0xa10383fbcb7a8c0ec25f2dc9adcf3d85d315ef648c0c19cb3595c9b17988b640", + "blockNumber": "0xd", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0xcfd91bf", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0x59eaf7490e7c0f8d2ae8ecd2826d01c3f6dfbba88a19d5b45ff7a83d543a19e5" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0x55f5d8aff87e7d83bd3f74afdca0a23ed77c59e0c6cf9ae552b8de0eeb4b3956", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d1bd", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0x55f5d8aff87e7d83bd3f74afdca0a23ed77c59e0c6cf9ae552b8de0eeb4b3956", + "blockNumber": "0xe", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0xb6b36dc", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0x235c59623484dfc634dc9edfe4ff9a12adc44b73142d1159730fafa03a2bfde0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionIndex": "0x0", + "blockHash": "0x18243d28d128a0e9eeffd271ff5d15f6b24556f67745be544bc0fc00d2556a12", + "blockNumber": "0xf", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xa0d1a41", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0x5dfc01e8618e8ad908e53b3b51ef568aba19f7b6141f93cf3d3d60f2f37ac99d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0xbf634663e3500e162423c20a675762703c9956f0483e3daaaf5723d44763d288", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d1bf", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0xbf634663e3500e162423c20a675762703c9956f0483e3daaaf5723d44763d288", + "blockNumber": "0x10", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x8e8d90c", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x82852dcfce3e819d524564c5dfb325d5e080aa317100c151d0407edd94fa8ca4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x4ceb9dcdae810d14dec96bdb282c4a77042f710e8c9af5ce7eb2be8f2a2375d2", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d1c0", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0x4ceb9dcdae810d14dec96bdb282c4a77042f710e8c9af5ce7eb2be8f2a2375d2", + "blockNumber": "0x11", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x7cc9b5b", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x91f12cc79d91f5b154fa636a166522092f1b310616e50021ae4548c1a675be1e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d1c1", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d1c1", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", + "blockNumber": "0x12", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x6d3c844", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0xdea388c8a5cfcf461c1a495204cacd5dbcd528bf6a7931f6b8c6e62d44a86204" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d1c2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d1c2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", + "blockNumber": "0x13", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x5fa5812", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x3d036221ae702b704bf98b9fe3df6e4638952ce5805ca201eba952f62e3306c9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xe985a8c8de4a0700812c527f654f9fbc9d1c96d5f6b9a39c15ce84a0f95df5af", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d1c3", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "blockHash": "0xe985a8c8de4a0700812c527f654f9fbc9d1c96d5f6b9a39c15ce84a0f95df5af", + "blockNumber": "0x14", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x53bbd20", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0xe6d88a169c0629274a0e80ab86d86c47bdb57d38d783983fa934ff923e1be18c" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946544, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json new file mode 100644 index 00000000..001ecafb --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json @@ -0,0 +1,1078 @@ +{ + "transactions": [ + { + "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": [ + "\"zeta\"", + "\"ZETA\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9b8", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionType": "CREATE", + "contractName": "ReceiverEVM", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xfbdc6", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3a59bb44038fff347155ec9e67b9dd4c22091d81985f8e8a862a2d8f7027ded8", + "transactionType": "CREATE2", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": null, + "arguments": [ + "\"test\"", + "\"TTK\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xdc2a5", + "value": "0x0", + "input": "0xe06a9a734277a91ec377b632ba7967256704e2ea8a50026b59d82caa0efbde6e60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "function": null, + "arguments": [ + "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2162", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "gas": "0x170a4", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", + "function": "transfer(address,uint256)", + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "gas": "0x125e1", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4857f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9efb7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionIndex": "0x0", + "blockHash": "0x3cba4e0c3a4adefe24d08d1d835aae71e1c1d481b699dcec2d80175ca21f5732", + "blockNumber": "0x1", + "gasUsed": "0x9efb7", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc1ca8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionIndex": "0x0", + "blockHash": "0x78fd01ac9b6a43fd61d420279cba454e8a69330451c596f5e4a134ef12105386", + "blockNumber": "0x2", + "gasUsed": "0xc1ca8", + "effectiveGasPrice": "0x347a3e61", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9f72f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3a59bb44038fff347155ec9e67b9dd4c22091d81985f8e8a862a2d8f7027ded8", + "transactionIndex": "0x0", + "blockHash": "0x3f23ad3c88a6f5f7cad5e68d14bbc546819360cc7b788d4a72ff63a7d28c015c", + "blockNumber": "0x3", + "gasUsed": "0x9f72f", + "effectiveGasPrice": "0x2e43d3c1", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "root": "0x6bfd9992456c3865aa9410eb8508e306534e5b5112d5e189ea1457d341367790" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionIndex": "0x0", + "blockHash": "0x4d154a3d82d855d9d5e9e751d0296c662f79593e2c02a9aaf0764949ebdee140", + "blockNumber": "0x4", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x28bbcf21", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x9d38ab87501bd85059bc381b5c504bbeae5f4eb6ce38e7e1831f5d79390c1d08" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x24b053f4a59383313bbd410fd17b70a96c18336d8956c0db099a134d02c1ebab", + "blockNumber": "0x5", + "blockTimestamp": "0x66a2d1dc", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", + "type": "0x2", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "blockHash": "0x24b053f4a59383313bbd410fd17b70a96c18336d8956c0db099a134d02c1ebab", + "blockNumber": "0x5", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x23a62868", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0x67b05fdb40497f4555c729b05799ba28588fb9cb47e553e380e40257278001d5" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x", + "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1dd", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1dd", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1dd", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", + "blockNumber": "0x6", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1fd45bca", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "root": "0xab0de36b4c2706addbc38e68e7b75664fded646313007287ac17906608746e5d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionIndex": "0x0", + "blockHash": "0x6d302c66b618c1fbc0de14826354635de239c0eff47c68882ba6b8375b595290", + "blockNumber": "0x7", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x1bead8f9", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0x2c82fb365cb6faeda4eee1c4752b9414a30c60bd09266a17208768520721f8fc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a70", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionIndex": "0x0", + "blockHash": "0x5806be3fed12b9cccffd9ddbc2741a6f127c99a20bc6c160bad371099bcc9f94", + "blockNumber": "0x8", + "gasUsed": "0xa1a70", + "effectiveGasPrice": "0x189650c3", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x30b60de59a9b897cea9206e1c78eb09694aa1893a0a9fdd073c4174490e9e0d3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x10ae4", + "logs": [ + { + "address": "0x14c369bc7a80723988b417d266a97906069240e9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x4316ab5b9b0cf99fdf45442dcbe4628b250f76b3c175aedacc54689c5dbac2de", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d1e0", + "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000020000400000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", + "transactionIndex": "0x0", + "blockHash": "0x4316ab5b9b0cf99fdf45442dcbe4628b250f76b3c175aedacc54689c5dbac2de", + "blockNumber": "0x9", + "gasUsed": "0x10ae4", + "effectiveGasPrice": "0x15a641a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "contractAddress": null, + "root": "0xdc8cb21b5b630197bf30917e2089bff5c89a66f28587615df5cc5b8ae5bc038e" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc8f2", + "logs": [ + { + "address": "0x14c369bc7a80723988b417d266a97906069240e9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000007a120", + "blockHash": "0xba5ef09b53708b168d3f960056360d490b7c35d8ffa1840817bb0cdbd1c20c64", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2d1e1", + "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000400000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000400000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", + "transactionIndex": "0x0", + "blockHash": "0xba5ef09b53708b168d3f960056360d490b7c35d8ffa1840817bb0cdbd1c20c64", + "blockNumber": "0xa", + "gasUsed": "0xc8f2", + "effectiveGasPrice": "0x12f4a144", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x14c369bc7a80723988b417d266a97906069240e9", + "contractAddress": null, + "root": "0x457e99ea5249edddf038b9164866c89991803178296ad4d4c783d3d98cbfafcd" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x8010cfbbd29e99a750208886c60c3359ea7e67199b41a643bb736916c2f298c6", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d1e2", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "blockHash": "0x8010cfbbd29e99a750208886c60c3359ea7e67199b41a643bb736916c2f298c6", + "blockNumber": "0xb", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x109821a7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0x83f3add7e3b7fc35f6b04c1f78d695a99922e79b037242704bc9a4132b5498f5" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aae", + "logs": [ + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x", + "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1e3", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1e3", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1e3", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", + "blockNumber": "0xc", + "gasUsed": "0x37aae", + "effectiveGasPrice": "0xed06a49", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0x4505aeb1d66e75c3c0749cb1817613c8a01700187d905cb33467a30bb4fdb100" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionIndex": "0x0", + "blockHash": "0x672e01c8f0f33393e78b260cbb55f08773aa992c5a169a71d20d187b1b04b6f7", + "blockNumber": "0xd", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0xcfd91bf", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0xf7780edb91892edd2a1533dc7802f4d0195f478f12ec0fb6ebe178b90caa504d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0x15f0421d5c5f07534d5d0cc906eae26a6981467f51643dcd8512a2c39381159b", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d1e5", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0x15f0421d5c5f07534d5d0cc906eae26a6981467f51643dcd8512a2c39381159b", + "blockNumber": "0xe", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0xb6b36dc", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0x2e3115a0a6a6454a91486e9cfff74d6dc4a8700424b33f508d5090d60884b810" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionIndex": "0x0", + "blockHash": "0xf3cdc61fd48bf058688532345d55965f080e42f0d2b01e2dcc77cc0cd294b155", + "blockNumber": "0xf", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xa0d1a41", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0xba34957d88446633621bf76e839af3a4f9ae46a4b173f9f9d57b0d290e119643" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0x7ccb557aafd24cfbdb6ca08d105384f89166d30196ff4058b6bc0e8164fbf566", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d1e7", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0x7ccb557aafd24cfbdb6ca08d105384f89166d30196ff4058b6bc0e8164fbf566", + "blockNumber": "0x10", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x8e8d90c", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0xa2aeeaac8814ec71f2c9ba969394347dc1a8000deba963abe9f36c83556264db" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x7fcdffdf2e1e28aaab7a772bdd4b29ddda6b9d6b71c7db8bcbb8fda9405d8b69", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d1e8", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0x7fcdffdf2e1e28aaab7a772bdd4b29ddda6b9d6b71c7db8bcbb8fda9405d8b69", + "blockNumber": "0x11", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x7cc9b5b", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0xb44ba2d9276c2ff06ccce15b0d0b18744ef3853a019c1dde5214ea0025668b2f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d1e9", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d1e9", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", + "blockNumber": "0x12", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x6d3c844", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x0034c9a388463245934cccfa0247c1e98824eb0a22310d664e9e2d8ad724495f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d1ea", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d1ea", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", + "blockNumber": "0x13", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x5fa5812", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0xa7804b725446f249d8f5b6184beae1e80a41169750347f35123f7271e5e9a2eb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xdae592d9f2fa1047074e5c04ecf26f9970073aee8dacb0e6b0516109275e4c67", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d1eb", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "blockHash": "0xdae592d9f2fa1047074e5c04ecf26f9970073aee8dacb0e6b0516109275e4c67", + "blockNumber": "0x14", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x53bbd20", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x85199726567003842ad6b6bcdea9dede6e09a24d7068f28152e6ccf314272db6" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946584, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json new file mode 100644 index 00000000..dcdb4dd7 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json @@ -0,0 +1,1077 @@ +{ + "transactions": [ + { + "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": [ + "\"zeta\"", + "\"ZETA\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9b8", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionType": "CREATE", + "contractName": "ReceiverEVM", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xfbdc6", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "\"test\"", + "\"TTK\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9a9", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "function": null, + "arguments": [ + "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2162", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x170a4", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "transfer(address,uint256)", + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x125e1", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4857f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9efb7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionIndex": "0x0", + "blockHash": "0xb01dbe91203b051a9546f54d1b1bbbf3bbab2cf774867ae69d60185dff43e1c8", + "blockNumber": "0x1", + "gasUsed": "0x9efb7", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc1ca8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionIndex": "0x0", + "blockHash": "0x8b8050f07623edbab285ba4baf3f68cc90c118c8ee22e6d12d50e03dab69b541", + "blockNumber": "0x2", + "gasUsed": "0xc1ca8", + "effectiveGasPrice": "0x347a3e61", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9efab", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", + "transactionIndex": "0x0", + "blockHash": "0x2f2ba9cd95af0045128e7d3d2a121b69b00aca6bae5694444b65d6dfe90f5326", + "blockNumber": "0x3", + "gasUsed": "0x9efab", + "effectiveGasPrice": "0x2e43d3c1", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0x31698f19fed6e38e20dde0f7d6ed2b646cfb8eeb81830a0f3814192faeefe11b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionIndex": "0x0", + "blockHash": "0xdb62169dfa360eb675983205c4fd76703261fab86b815a4997cb92bb3002f714", + "blockNumber": "0x4", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x28bb9e84", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x2292d9703f24b3cda9f7cafbf06aa5a706dfc483416d73d7b460d2e7f59c9d57" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", + "blockNumber": "0x5", + "blockTimestamp": "0x66a2d1f7", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", + "type": "0x2", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", + "blockNumber": "0x5", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x23a5fddc", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0xcd8e8bc032477978f16cff0ff1a3f6a685ad18fe9e91b863b03c7800a57da112" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1fd435cd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "root": "0x721bc40cb1cb9eca63f92ec0dedd1a72798b9bb2fa6796d3064518740bc23507" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionIndex": "0x0", + "blockHash": "0x6eba638702ae6c39e56bb83c4de910c85da956a1f04b17a6ead6efcd28b26b11", + "blockNumber": "0x7", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x1beab7a7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0xc674954f14deb2955a6c1800270190d206298572d1541eeb10b38a7ec020d956" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a70", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionIndex": "0x0", + "blockHash": "0xf40cabff8b16c711580def8fa770a58e3fc1ea4135f778cb3a0d992bcf245237", + "blockNumber": "0x8", + "gasUsed": "0xa1a70", + "effectiveGasPrice": "0x1896336b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x0b535303d66ed33fd44acd3b1350b50a204c4536614175249327e8936bd5aa0c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x10ae4", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d1fb", + "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionIndex": "0x0", + "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", + "blockNumber": "0x9", + "gasUsed": "0x10ae4", + "effectiveGasPrice": "0x15a627cd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa2d7f1f38c3d90a6252832c776a59ec01542bc2087dde87196f823a059566c69" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc8f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000007a120", + "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2d1fc", + "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000040200400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionIndex": "0x0", + "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", + "blockNumber": "0xa", + "gasUsed": "0xc8f2", + "effectiveGasPrice": "0x12f48aa4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x32e44eef29f483aa32cd00dd535efccdb6315141b8f7d2fc28cb8aefb9a7343b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d1fd", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", + "blockNumber": "0xb", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x10980dd8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0xb02e6cd5487b01aefc34ff1c151bcdc5785767c41864bc1c7274950081144063" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aae", + "logs": [ + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "gasUsed": "0x37aae", + "effectiveGasPrice": "0xed0589a", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0x9aaab81695f6a170f3a8cdca5ccf5681449434ec7419bf0214c99738f3f480d2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionIndex": "0x0", + "blockHash": "0xce6bc5bf786221de8da87cdb8820f5ce805d07392f4f1cb1019a6b06b5d8a9bd", + "blockNumber": "0xd", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0xcfd823d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0x5ff3fc7e23a1147fb65d4c517d66eafb2a6d6d947cadf2e76b6989eac9bf8690" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d200", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", + "blockNumber": "0xe", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0xb6b293a", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0xd56c0f56d9252985f925d349b5096ee9244a307d21bea8d76439a94b873d9ef6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionIndex": "0x0", + "blockHash": "0x274097d218db3649678f78c9e7513e7b3d460b4fb8769665d882f1902f80949e", + "blockNumber": "0xf", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xa0d0e41", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0x41cbfe8f0e4c56accb5a2780d491efb47a5b64ab02860081346b2951b7729cda" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d202", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", + "blockNumber": "0x10", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x8e8ce69", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x4790d22080e58e30dbec84a42d694dd733f4bf1b3637e6b1755752a309cef305" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d203", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", + "blockNumber": "0x11", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x7cc920c", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x60d17f5a0133ea0c63f6e63e6fc3e6ef70f006da2d65bff5205cb20082013b44" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d204", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d204", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x6d3c01e", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x5f87ad0846b5f78042b62f4e8efb9e2bcffca91556ddf12efa6d16447762ff88" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d205", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d205", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x5fa50ef", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x5bf81ca3c536b28c1ad54eae8430b5dc46dff5bc8b7deba710996393486989ad" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d206", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", + "blockNumber": "0x14", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x53bb6e0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x86dccf3ea6f169304b2b458158cf55c4e552ce16e02aedcd8cb035fde5e8416d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946611, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-latest.json b/v2/broadcast/Deploy.t.sol/31337/run-latest.json new file mode 100644 index 00000000..dcdb4dd7 --- /dev/null +++ b/v2/broadcast/Deploy.t.sol/31337/run-latest.json @@ -0,0 +1,1077 @@ +{ + "transactions": [ + { + "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "function": null, + "arguments": [ + "\"zeta\"", + "\"ZETA\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9b8", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionType": "CREATE", + "contractName": "ReceiverEVM", + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xfbdc6", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", + "transactionType": "CREATE", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": null, + "arguments": [ + "\"test\"", + "\"TTK\"" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xce9a9", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x714d", + "value": "0xde0b6b3a7640000", + "input": "0x", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionType": "CREATE", + "contractName": "GatewayEVM", + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a7ec5", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "function": null, + "arguments": [ + "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4f97a", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionType": "CREATE", + "contractName": "ERC20CustodyNew", + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd97e8", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x6", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionType": "CREATE", + "contractName": "ZetaConnectorNonNative", + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "function": null, + "arguments": [ + "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0xd2162", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", + "nonce": "0x7", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "mint(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x170a4", + "value": "0x0", + "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x8", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionType": "CALL", + "contractName": "TestERC20", + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "transfer(address,uint256)", + "arguments": [ + "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "500000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x125e1", + "value": "0x0", + "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", + "nonce": "0x9", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionType": "CREATE", + "contractName": "GatewayZEVM", + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x2a2e57", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", + "nonce": "0xa", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "function": null, + "arguments": [ + "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x4857f", + "value": "0x0", + "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", + "nonce": "0xb", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionType": "CREATE", + "contractName": "SenderZEVM", + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "function": null, + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x98bf5", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", + "nonce": "0xc", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionType": "CREATE", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0xc726a", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionType": "CREATE", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": null, + "arguments": [ + "\"TOKEN\"", + "\"TKN\"", + "18", + "1", + "0", + "0", + "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "gas": "0x1b2c6a", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasCoinZRC20(uint256,address)", + "arguments": [ + "1", + "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0xf58a", + "value": "0x0", + "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionType": "CALL", + "contractName": "SystemContractMock", + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "function": "setGasPrice(uint256,uint256)", + "arguments": [ + "1", + "1" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "gas": "0x101f4", + "value": "0x0", + "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x17f3b", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x4", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "deposit(address,uint256)", + "arguments": [ + "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "1000000" + ], + "transaction": { + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x122f7", + "value": "0x0", + "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0x5", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionType": "CALL", + "contractName": "ZRC20New", + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "function": "approve(address,uint256)", + "arguments": [ + "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "1000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "gas": "0x107da", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", + "nonce": "0xd", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9efb7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", + "transactionIndex": "0x0", + "blockHash": "0xb01dbe91203b051a9546f54d1b1bbbf3bbab2cf774867ae69d60185dff43e1c8", + "blockNumber": "0x1", + "gasUsed": "0x9efb7", + "effectiveGasPrice": "0x3b9aca01", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc1ca8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", + "transactionIndex": "0x0", + "blockHash": "0x8b8050f07623edbab285ba4baf3f68cc90c118c8ee22e6d12d50e03dab69b541", + "blockNumber": "0x2", + "gasUsed": "0xc1ca8", + "effectiveGasPrice": "0x347a3e61", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9efab", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", + "transactionIndex": "0x0", + "blockHash": "0x2f2ba9cd95af0045128e7d3d2a121b69b00aca6bae5694444b65d6dfe90f5326", + "blockNumber": "0x3", + "gasUsed": "0x9efab", + "effectiveGasPrice": "0x2e43d3c1", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "root": "0x31698f19fed6e38e20dde0f7d6ed2b646cfb8eeb81830a0f3814192faeefe11b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", + "transactionIndex": "0x0", + "blockHash": "0xdb62169dfa360eb675983205c4fd76703261fab86b815a4997cb92bb3002f714", + "blockNumber": "0x4", + "gasUsed": "0x5208", + "effectiveGasPrice": "0x28bb9e84", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "contractAddress": null, + "root": "0x2292d9703f24b3cda9f7cafbf06aa5a706dfc483416d73d7b460d2e7f59c9d57" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x20b2b5", + "logs": [ + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", + "blockNumber": "0x5", + "blockTimestamp": "0x66a2d1f7", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", + "type": "0x2", + "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", + "transactionIndex": "0x0", + "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", + "blockNumber": "0x5", + "gasUsed": "0x20b2b5", + "effectiveGasPrice": "0x23a5fddc", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "root": "0xcd8e8bc032477978f16cff0ff1a3f6a685ad18fe9e91b863b03c7800a57da112" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3d3e7", + "logs": [ + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "blockTimestamp": "0x66a2d1f8", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", + "transactionIndex": "0x0", + "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", + "blockNumber": "0x6", + "gasUsed": "0x3d3e7", + "effectiveGasPrice": "0x1fd435cd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "root": "0x721bc40cb1cb9eca63f92ec0dedd1a72798b9bb2fa6796d3064518740bc23507" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa7592", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", + "transactionIndex": "0x0", + "blockHash": "0x6eba638702ae6c39e56bb83c4de910c85da956a1f04b17a6ead6efcd28b26b11", + "blockNumber": "0x7", + "gasUsed": "0xa7592", + "effectiveGasPrice": "0x1beab7a7", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "root": "0xc674954f14deb2955a6c1800270190d206298572d1541eeb10b38a7ec020d956" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa1a70", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", + "transactionIndex": "0x0", + "blockHash": "0xf40cabff8b16c711580def8fa770a58e3fc1ea4135f778cb3a0d992bcf245237", + "blockNumber": "0x8", + "gasUsed": "0xa1a70", + "effectiveGasPrice": "0x1896336b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "root": "0x0b535303d66ed33fd44acd3b1350b50a204c4536614175249327e8936bd5aa0c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x10ae4", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", + "blockNumber": "0x9", + "blockTimestamp": "0x66a2d1fb", + "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", + "transactionIndex": "0x0", + "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", + "blockNumber": "0x9", + "gasUsed": "0x10ae4", + "effectiveGasPrice": "0x15a627cd", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa2d7f1f38c3d90a6252832c776a59ec01542bc2087dde87196f823a059566c69" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc8f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000007a120", + "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", + "blockNumber": "0xa", + "blockTimestamp": "0x66a2d1fc", + "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000040200400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", + "transactionIndex": "0x0", + "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", + "blockNumber": "0xa", + "gasUsed": "0xc8f2", + "effectiveGasPrice": "0x12f48aa4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x32e44eef29f483aa32cd00dd535efccdb6315141b8f7d2fc28cb8aefb9a7343b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2074d1", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", + "blockNumber": "0xb", + "blockTimestamp": "0x66a2d1fd", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", + "transactionIndex": "0x0", + "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", + "blockNumber": "0xb", + "gasUsed": "0x2074d1", + "effectiveGasPrice": "0x10980dd8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "root": "0xb02e6cd5487b01aefc34ff1c151bcdc5785767c41864bc1c7274950081144063" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x37aae", + "logs": [ + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "blockTimestamp": "0x66a2d1fe", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", + "transactionIndex": "0x0", + "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", + "blockNumber": "0xc", + "gasUsed": "0x37aae", + "effectiveGasPrice": "0xed0589a", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "root": "0x9aaab81695f6a170f3a8cdca5ccf5681449434ec7419bf0214c99738f3f480d2" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7587a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", + "transactionIndex": "0x0", + "blockHash": "0xce6bc5bf786221de8da87cdb8820f5ce805d07392f4f1cb1019a6b06b5d8a9bd", + "blockNumber": "0xd", + "gasUsed": "0x7587a", + "effectiveGasPrice": "0xcfd823d", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "root": "0x5ff3fc7e23a1147fb65d4c517d66eafb2a6d6d947cadf2e76b6989eac9bf8690" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x993d3", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" + ], + "data": "0x", + "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", + "blockNumber": "0xe", + "blockTimestamp": "0x66a2d200", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", + "type": "0x2", + "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", + "transactionIndex": "0x0", + "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", + "blockNumber": "0xe", + "gasUsed": "0x993d3", + "effectiveGasPrice": "0xb6b293a", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "root": "0xd56c0f56d9252985f925d349b5096ee9244a307d21bea8d76439a94b873d9ef6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x14e8cf", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", + "transactionIndex": "0x0", + "blockHash": "0x274097d218db3649678f78c9e7513e7b3d460b4fb8769665d882f1902f80949e", + "blockNumber": "0xf", + "gasUsed": "0x14e8cf", + "effectiveGasPrice": "0xa0d0e41", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": null, + "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "root": "0x41cbfe8f0e4c56accb5a2780d491efb47a5b64ab02860081346b2951b7729cda" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb1c5", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", + "blockNumber": "0x10", + "blockTimestamp": "0x66a2d202", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", + "transactionIndex": "0x0", + "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", + "blockNumber": "0x10", + "gasUsed": "0xb1c5", + "effectiveGasPrice": "0x8e8ce69", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x4790d22080e58e30dbec84a42d694dd733f4bf1b3637e6b1755752a309cef305" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb061", + "logs": [ + { + "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "topics": [ + "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", + "blockNumber": "0x11", + "blockTimestamp": "0x66a2d203", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", + "transactionIndex": "0x0", + "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", + "blockNumber": "0x11", + "gasUsed": "0xb061", + "effectiveGasPrice": "0x7cc920c", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", + "contractAddress": null, + "root": "0x60d17f5a0133ea0c63f6e63e6fc3e6ef70f006da2d65bff5205cb20082013b44" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x11574", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d204", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "blockTimestamp": "0x66a2d204", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", + "transactionIndex": "0x0", + "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", + "blockNumber": "0x12", + "gasUsed": "0x11574", + "effectiveGasPrice": "0x6d3c01e", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x5f87ad0846b5f78042b62f4e8efb9e2bcffca91556ddf12efa6d16447762ff88" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd2a8", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d205", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "blockTimestamp": "0x66a2d205", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", + "type": "0x2", + "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", + "transactionIndex": "0x0", + "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", + "blockNumber": "0x13", + "gasUsed": "0xd2a8", + "effectiveGasPrice": "0x5fa50ef", + "blobGasPrice": "0x1", + "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x5bf81ca3c536b28c1ad54eae8430b5dc46dff5bc8b7deba710996393486989ad" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb46a", + "logs": [ + { + "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", + "blockNumber": "0x14", + "blockTimestamp": "0x66a2d206", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", + "transactionIndex": "0x0", + "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", + "blockNumber": "0x14", + "gasUsed": "0xb46a", + "effectiveGasPrice": "0x53bb6e0", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "contractAddress": null, + "root": "0x86dccf3ea6f169304b2b458158cf55c4e552ce16e02aedcd8cb035fde5e8416d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1721946611, + "chain": 31337, + "commit": "a8ec2b1" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json new file mode 100644 index 00000000..c3f0071e --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x198143e5482fc224d6638260deef3b622f30ff146917a75387a34633b0fbc40b", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f093", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "blockHash": "0x198143e5482fc224d6638260deef3b622f30ff146917a75387a34633b0fbc40b", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019987, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json new file mode 100644 index 00000000..c09da23d --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa3f39357faa9ded24d236d24c51696448aef4639d61576984062b4f7e080e3a3", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f0fd", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "blockHash": "0xa3f39357faa9ded24d236d24c51696448aef4639d61576984062b4f7e080e3a3", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020072, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json new file mode 100644 index 00000000..bbc68aea --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa71393f844774fb7ecd53fc79b5ccdaaaa0c715348f73aa7497c8ff98f069783", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f159", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "blockHash": "0xa71393f844774fb7ecd53fc79b5ccdaaaa0c715348f73aa7497c8ff98f069783", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020162, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json new file mode 100644 index 00000000..9edacbdb --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xda589f6824f46444d71b8c9e4170398f636b3705adf30b57b758c72ac11bff0d", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f180", + "transactionHash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", + "transactionIndex": "0x0", + "blockHash": "0xda589f6824f46444d71b8c9e4170398f636b3705adf30b57b758c72ac11bff0d", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x2525317c2", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xacdc59cdf0040ae83d88ffc487fadddebd01503266b69efeb7f46720a2a298dd" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020201, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json new file mode 100644 index 00000000..6c57c857 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8f74c6fdb1b14e1bcf106331b2c7542c1e4c443bce4f4f7de52a43431fa32c19", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f1ab", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "blockHash": "0x8f74c6fdb1b14e1bcf106331b2c7542c1e4c443bce4f4f7de52a43431fa32c19", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020244, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json new file mode 100644 index 00000000..4b1594bd --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x99866cf796430305bf29394e78280270eb7680ecbf8905ece0d631a7ec0280e9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f1fa", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", + "transactionIndex": "0x0", + "blockHash": "0x99866cf796430305bf29394e78280270eb7680ecbf8905ece0d631a7ec0280e9", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020326, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json new file mode 100644 index 00000000..7fbd75af --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x612ed18ea6526927339f538354899305006572acff91174542e9172a1fc7061c", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f217", + "transactionHash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", + "transactionIndex": "0x0", + "blockHash": "0x612ed18ea6526927339f538354899305006572acff91174542e9172a1fc7061c", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252d5d8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x334d6162f695789b62cf0ed3edbe49aa8fd76a9599ad602c8d8d976c23688ff3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020353, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json new file mode 100644 index 00000000..0f983fd7 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf494ce1bf25e6c6c1d8a645df4a62d1c70da022310a976c78d157d581e51f00e", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f2d5", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xf494ce1bf25e6c6c1d8a645df4a62d1c70da022310a976c78d157d581e51f00e", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020544, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json new file mode 100644 index 00000000..d2365f08 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8a870b010187a9971109b11d6491374a1bfbab660ab29a600dc8cfb921a4ad42", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f30a", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x8a870b010187a9971109b11d6491374a1bfbab660ab29a600dc8cfb921a4ad42", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020594, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json new file mode 100644 index 00000000..0c34b5b1 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xaa2c1eaa51e0cf5863d9174bc0d3f5db063791211b0f3f15fa78a159f7ec4f99", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f33e", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xaa2c1eaa51e0cf5863d9174bc0d3f5db063791211b0f3f15fa78a159f7ec4f99", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020645, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json new file mode 100644 index 00000000..db16e87a --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa288f0d9de0b326efab2fbbb57a71d1568d46309c72cd5d70d0f2222df9f8596", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f355", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xa288f0d9de0b326efab2fbbb57a71d1568d46309c72cd5d70d0f2222df9f8596", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020667, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json new file mode 100644 index 00000000..774fabcd --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x08cf6a113342d42468d81594dbefeb37ac203a9f11362043e66b2f028325d911", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f39a", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x08cf6a113342d42468d81594dbefeb37ac203a9f11362043e66b2f028325d911", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020737, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json new file mode 100644 index 00000000..37548ffe --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x3586e202ffa678c55898bfa26b416e215c0f9b4440909eef10de6d301fedd11c", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f3af", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x3586e202ffa678c55898bfa26b416e215c0f9b4440909eef10de6d301fedd11c", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020759, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json new file mode 100644 index 00000000..3d9ccbfe --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x7766e34b97c6770a781b0727b78da7b97acbe08bf5b873afef41500666697fea", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f404", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x7766e34b97c6770a781b0727b78da7b97acbe08bf5b873afef41500666697fea", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020844, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json new file mode 100644 index 00000000..c8f89200 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5dcc9e5e032a949b59ece088529a6ed104780d90d2f4fd7f6daf958ee4abe9fe", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f42b", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x5dcc9e5e032a949b59ece088529a6ed104780d90d2f4fd7f6daf958ee4abe9fe", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020882, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json new file mode 100644 index 00000000..c8e69480 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa909da4d524ad84da2a9e2681b54ac540256f34165bd0ccab183130916e80e06", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f439", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xa909da4d524ad84da2a9e2681b54ac540256f34165bd0ccab183130916e80e06", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020898, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json new file mode 100644 index 00000000..933e7d42 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xfad5776fe413cd0ca78314dafe502ba960469638b77b17e720d00ae9101476be", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f472", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xfad5776fe413cd0ca78314dafe502ba960469638b77b17e720d00ae9101476be", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722020953, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json new file mode 100644 index 00000000..25a35a80 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf6f537ec609de6618333646713fb96c7fb87ff963ff670bdae4e004247b966c4", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f4d4", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xf6f537ec609de6618333646713fb96c7fb87ff963ff670bdae4e004247b966c4", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021051, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json new file mode 100644 index 00000000..a62b65f5 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x4542983b9e58e2b45a7bd952067587fdec4ae0c41bb6ac5f90f0c2859931568d", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f4ef", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x4542983b9e58e2b45a7bd952067587fdec4ae0c41bb6ac5f90f0c2859931568d", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021079, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json new file mode 100644 index 00000000..a54485cb --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x238dc945056ad798be071448fc330467d4921fbf0ce9bdda258dae2963a5b358", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f514", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x238dc945056ad798be071448fc330467d4921fbf0ce9bdda258dae2963a5b358", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021116, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json new file mode 100644 index 00000000..2f601c76 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x580e7a1a40b432fd111ac3a02545563cd10a685ca8ed489573b745acc9276edb", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f528", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0x580e7a1a40b432fd111ac3a02545563cd10a685ca8ed489573b745acc9276edb", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021137, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json new file mode 100644 index 00000000..3aaaffed --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xb258", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x79f2", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xb37c59a1b7d345f181bbdce5881eaf6a658b3200fa01387ff46e803606d2af35", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f541", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", + "transactionIndex": "0x0", + "blockHash": "0xb37c59a1b7d345f181bbdce5881eaf6a658b3200fa01387ff46e803606d2af35", + "blockNumber": "0x1d", + "gasUsed": "0x79f2", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021160, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json new file mode 100644 index 00000000..f415ef61 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0x68656c6c6f" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xa1a3", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7506", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0xde2a75f2d70f7b3ed0c64145d8b4949004e57a9b3afaac8ada4d843964b329fa", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f58c", + "transactionHash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", + "transactionIndex": "0x0", + "blockHash": "0xde2a75f2d70f7b3ed0c64145d8b4949004e57a9b3afaac8ada4d843964b329fa", + "blockNumber": "0x1d", + "gasUsed": "0x7506", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x3e3850febb0fdc125e0230fc5a89938279ded24f245f33d0a8a2acffabd6b3be" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021237, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json new file mode 100644 index 00000000..a8166502 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xa60a", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7836", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f5b5", + "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionIndex": "0x0", + "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", + "blockNumber": "0x1d", + "gasUsed": "0x7836", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xe592ee97621c4324669db2ad038d9888e5e928c200dd9bd34f54d98ffc30672d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021281, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-latest.json b/v2/broadcast/EvmCall.s.sol/31337/run-latest.json new file mode 100644 index 00000000..a8166502 --- /dev/null +++ b/v2/broadcast/EvmCall.s.sol/31337/run-latest.json @@ -0,0 +1,69 @@ +{ + "transactions": [ + { + "hash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "call(address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0xa60a", + "value": "0x0", + "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7836", + "logs": [ + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f5b5", + "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", + "transactionIndex": "0x0", + "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", + "blockNumber": "0x1d", + "gasUsed": "0x7836", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0xe592ee97621c4324669db2ad038d9888e5e928c200dd9bd34f54d98ffc30672d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021281, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json new file mode 100644 index 00000000..c370b4b9 --- /dev/null +++ b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json @@ -0,0 +1,144 @@ +{ + "transactions": [ + { + "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "function": "approve(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "gas": "0xf99a", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "depositAndCall(address,uint256,address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "1", + "0x9A676e781A523b5d0C0e43731313A708CB607508", + "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x122be", + "value": "0x0", + "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb4b6", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x0ea2a678ad5045f520c4cd44f21dec9cd9953a42a4b026867edc84888d8a1857", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3f6dc", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "blockHash": "0x0ea2a678ad5045f520c4cd44f21dec9cd9953a42a4b026867edc84888d8a1857", + "blockNumber": "0x1d", + "gasUsed": "0xb4b6", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "contractAddress": null, + "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd27f", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a3f6dd", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a3f6dd", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", + "blockNumber": "0x1e", + "gasUsed": "0xd27f", + "effectiveGasPrice": "0x2521f9d82", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722021596, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json new file mode 100644 index 00000000..cfcd9c8b --- /dev/null +++ b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json @@ -0,0 +1,144 @@ +{ + "transactions": [ + { + "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "function": "approve(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "gas": "0xf99a", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "depositAndCall(address,uint256,address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "1", + "0x9A676e781A523b5d0C0e43731313A708CB607508", + "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x122be", + "value": "0x0", + "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb4b6", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a406db", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", + "blockNumber": "0x1d", + "gasUsed": "0xb4b6", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "contractAddress": null, + "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd27f", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a406dc", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a406dc", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "gasUsed": "0xd27f", + "effectiveGasPrice": "0x2521f9d82", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722025672, + "chain": 31337, + "commit": "6114f6e" +} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json new file mode 100644 index 00000000..cfcd9c8b --- /dev/null +++ b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json @@ -0,0 +1,144 @@ +{ + "transactions": [ + { + "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "function": "approve(address,uint256)", + "arguments": [ + "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "1" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "gas": "0xf99a", + "value": "0x0", + "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "function": "depositAndCall(address,uint256,address,bytes)", + "arguments": [ + "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "1", + "0x9A676e781A523b5d0C0e43731313A708CB607508", + "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "gas": "0x122be", + "value": "0x0", + "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb4b6", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a406db", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", + "transactionIndex": "0x0", + "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", + "blockNumber": "0x1d", + "gasUsed": "0xb4b6", + "effectiveGasPrice": "0x25252c4a4", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "contractAddress": null, + "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd27f", + "logs": [ + { + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a406dc", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "topics": [ + "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "blockTimestamp": "0x66a406dc", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", + "type": "0x2", + "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", + "transactionIndex": "0x0", + "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", + "blockNumber": "0x1e", + "gasUsed": "0xd27f", + "effectiveGasPrice": "0x2521f9d82", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "contractAddress": null, + "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722025672, + "chain": 31337, + "commit": "6114f6e" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json new file mode 100644 index 00000000..638ac89f --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xc6e46c8b53849cd3037f2a9c8dd5184342cd954d240fa60ed081334234b95ba0", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c671", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xc6e46c8b53849cd3037f2a9c8dd5184342cd954d240fa60ed081334234b95ba0", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009201, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json new file mode 100644 index 00000000..b0708fa3 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xef5d40fd049230300cf85786d621e099b4f1464e8617f93cc9c422d44a55f149", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c6bc", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xef5d40fd049230300cf85786d621e099b4f1464e8617f93cc9c422d44a55f149", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009258, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json new file mode 100644 index 00000000..fa5f24d9 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x2f20708d9c7e2f1b465a979de8b5945d0c24470786b55f44c2a742bee9621cec", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c726", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x2f20708d9c7e2f1b465a979de8b5945d0c24470786b55f44c2a742bee9621cec", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009361, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json new file mode 100644 index 00000000..b41d8cf6 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x88b6a6c7eb5a4ac145f40bd5efd492de2b6fa32b8d2051efa4a03819fb281a58", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c76a", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x88b6a6c7eb5a4ac145f40bd5efd492de2b6fa32b8d2051efa4a03819fb281a58", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009428, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json new file mode 100644 index 00000000..ae77569b --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x55f973e43a67be7a2e8c257381b7ac10b39416ec1977248a02fcca286f6fcae9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c7c4", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x55f973e43a67be7a2e8c257381b7ac10b39416ec1977248a02fcca286f6fcae9", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009517, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json new file mode 100644 index 00000000..45c404ba --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x2f5f172b3f25f532ea4b94b2f8a12cfdc46b4e5d70ac8d924844eacbe06a89dd", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c86f", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x2f5f172b3f25f532ea4b94b2f8a12cfdc46b4e5d70ac8d924844eacbe06a89dd", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009689, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json new file mode 100644 index 00000000..b8c0b169 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8ecd465cb08aa758b5f22cd371aa063701a20e1048b83e81abaa5a52c098a2a7", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c934", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x8ecd465cb08aa758b5f22cd371aa063701a20e1048b83e81abaa5a52c098a2a7", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009885, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json new file mode 100644 index 00000000..9b23abb6 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5165bd3c70e00750659b78bae76a4108e6faeb7821de8ed4f05f5626f6597162", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c972", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x5165bd3c70e00750659b78bae76a4108e6faeb7821de8ed4f05f5626f6597162", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722009949, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json new file mode 100644 index 00000000..c0b71954 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x4718ba20ba3972c5bc1f5fda576ee65f5fb01f6f8c05c29e6be47b7732d8936e", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3c9ac", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "blockHash": "0x4718ba20ba3972c5bc1f5fda576ee65f5fb01f6f8c05c29e6be47b7732d8936e", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722010025, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json new file mode 100644 index 00000000..5445c4c6 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x1a3f7a810b5224b6759615a2b4216003d3dd1f538ebe3b9da94aa75f6701387f", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3c9ff", + "transactionHash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", + "transactionIndex": "0x0", + "blockHash": "0x1a3f7a810b5224b6759615a2b4216003d3dd1f538ebe3b9da94aa75f6701387f", + "blockNumber": "0x1f", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x2525d2b65", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x7095a25bfd1ebc4dff2d917744f3e326fe14a52b47530d3bdbf4d8b6d11d762a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722010111, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json new file mode 100644 index 00000000..7a6799ee --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x0ca7ae77bc4e65444f914575bccb491226749d9a6a432b8168725e7bc07a273b", + "blockNumber": "0x21", + "blockTimestamp": "0x66a3cb2a", + "transactionHash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", + "transactionIndex": "0x0", + "blockHash": "0x0ca7ae77bc4e65444f914575bccb491226749d9a6a432b8168725e7bc07a273b", + "blockNumber": "0x21", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252707315", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x7e3f3560d71f709f4e309cae879fd1beda6ca5d21fecb1411f51d48130363775" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722010410, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json new file mode 100644 index 00000000..d6613410 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1a", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf685c78e8f2cea4ac88e1afdcedee9b168e3cd0aa8051e62f8ee24bba8238af9", + "blockNumber": "0x23", + "blockTimestamp": "0x66a3cb3a", + "transactionHash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", + "transactionIndex": "0x0", + "blockHash": "0xf685c78e8f2cea4ac88e1afdcedee9b168e3cd0aa8051e62f8ee24bba8238af9", + "blockNumber": "0x23", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252895993", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xa9b6f4e112fd9d180618dba0760eab6df30327276c6c29bb3337a6a8d490dd5d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722010426, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json new file mode 100644 index 00000000..3d222b89 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x34513551ae16dc43b0896f8fb0c2249942538673d589f40a3e0770872a797a5f", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3cc4b", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x34513551ae16dc43b0896f8fb0c2249942538673d589f40a3e0770872a797a5f", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722010675, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json new file mode 100644 index 00000000..3e473ab8 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa4de9c819ba0613440573ff55cba504d54503a59a13fcbd2ebc8793df30e25a7", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3cdaf", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xa4de9c819ba0613440573ff55cba504d54503a59a13fcbd2ebc8793df30e25a7", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011033, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json new file mode 100644 index 00000000..76417f63 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x8f5175e673dd061fd14afcd3f879d0418db2c382a57afa267642eeb8899c3397", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3cf3e", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x8f5175e673dd061fd14afcd3f879d0418db2c382a57afa267642eeb8899c3397", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011431, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json new file mode 100644 index 00000000..c3e827ef --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xe3c472268f69e1e61ae3893b05552238ebffe8f82f8bc882257050e2210b9c82", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3cf5e", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xe3c472268f69e1e61ae3893b05552238ebffe8f82f8bc882257050e2210b9c82", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011464, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json new file mode 100644 index 00000000..720e18f3 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xbeedab60382d2448054d144a2c8bd2c2dc1a34dafc6f31a8b9a17279279d20fd", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3cfdf", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xbeedab60382d2448054d144a2c8bd2c2dc1a34dafc6f31a8b9a17279279d20fd", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011593, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json new file mode 100644 index 00000000..bd3255cc --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x9ff152d09d1534037b0301a559d28537a0c473244d9a31c326e7863977ed2b30", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d112", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0x9ff152d09d1534037b0301a559d28537a0c473244d9a31c326e7863977ed2b30", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011900, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json new file mode 100644 index 00000000..810e2db7 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x42ff6817a022620dabb8ffbee9caa1cbf280c17e648c716e5bf4071910a1a212", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d130", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "blockHash": "0x42ff6817a022620dabb8ffbee9caa1cbf280c17e648c716e5bf4071910a1a212", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722011932, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json new file mode 100644 index 00000000..26c2dc40 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x41859aaaf00e9645728ce285fdf71a3a5378331267a01ecffcab0d8a8e738c8a", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d1f9", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", + "transactionIndex": "0x0", + "blockHash": "0x41859aaaf00e9645728ce285fdf71a3a5378331267a01ecffcab0d8a8e738c8a", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012130, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json new file mode 100644 index 00000000..8d4a4036 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x18", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xff8e44ff2adb8b27feedafd6d4e13158570e433d268b08d2a2d4d75d3a8c1576", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3d1fb", + "transactionHash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", + "transactionIndex": "0x0", + "blockHash": "0xff8e44ff2adb8b27feedafd6d4e13158570e433d268b08d2a2d4d75d3a8c1576", + "blockNumber": "0x1f", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x2525d2b65", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x4a67eaf3a3da4bb551cb6d8d41d61acd208e25e79346fe3094aa1464598d6166" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012143, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json new file mode 100644 index 00000000..3ff33b12 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa3a39b83186fd52659096d1c448e99aa6a381c8032cd110a1e3ab3e3dfd3829c", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d276", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xa3a39b83186fd52659096d1c448e99aa6a381c8032cd110a1e3ab3e3dfd3829c", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012254, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json new file mode 100644 index 00000000..db6b0259 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xba439bb950790a45ed8409ec9b8126c589eb11628ef67abc2d3607500e0f18bf", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d36d", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xba439bb950790a45ed8409ec9b8126c589eb11628ef67abc2d3607500e0f18bf", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012502, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json new file mode 100644 index 00000000..bf0f8b81 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x49ed70a39edeb730cbfcd48a46dd454d877e886d574ee772ccf8264833e257d3", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3d406", + "transactionHash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", + "transactionIndex": "0x0", + "blockHash": "0x49ed70a39edeb730cbfcd48a46dd454d877e886d574ee772ccf8264833e257d3", + "blockNumber": "0x1f", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x2525d2b65", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x3a1004c7be16c0285e9d221a11e27eb9d49ce785ce027cf57a7d61df13fa1a90" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012678, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json new file mode 100644 index 00000000..95a6745b --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa736a84852ad15a3032bc28430e8e4faa067c21132f9056bd8bdb6901c557bbb", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d4c6", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xa736a84852ad15a3032bc28430e8e4faa067c21132f9056bd8bdb6901c557bbb", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012845, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json new file mode 100644 index 00000000..38341453 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xe819c6c15f5fc4dc4acb06784a2b543e1fe8c6e50c42e6cadfbf204ccdf0a4f6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3d4df", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", + "transactionIndex": "0x0", + "blockHash": "0xe819c6c15f5fc4dc4acb06784a2b543e1fe8c6e50c42e6cadfbf204ccdf0a4f6", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722012873, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json new file mode 100644 index 00000000..d12a55ed --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x998d715415cc8cd9c018e6406080fdf9a24b36d2312f9b1e72df218fcd8f3a42", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3eeb4", + "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionIndex": "0x0", + "blockHash": "0x998d715415cc8cd9c018e6406080fdf9a24b36d2312f9b1e72df218fcd8f3a42", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019487, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json new file mode 100644 index 00000000..48f2892b --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x9b6dc5bdb7aa71931830e7c53d6f8a58b82e2a4db0a89128eea87df17d0524aa", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3eed3", + "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", + "transactionIndex": "0x0", + "blockHash": "0x9b6dc5bdb7aa71931830e7c53d6f8a58b82e2a4db0a89128eea87df17d0524aa", + "blockNumber": "0x1d", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019521, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json new file mode 100644 index 00000000..fc3b9149 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", + "blockNumber": "0x21", + "blockTimestamp": "0x66a3ef27", + "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionIndex": "0x0", + "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", + "blockNumber": "0x21", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x25270b3c8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x082daded8e1e85c9233ba3ed91dbcf4c6a91af89151a498fce5e7d60f6229400" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019617, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json b/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json new file mode 100644 index 00000000..fc3b9149 --- /dev/null +++ b/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json @@ -0,0 +1,68 @@ +{ + "transactions": [ + { + "hash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "call(bytes,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0xc049", + "value": "0x0", + "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x1b", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b37", + "logs": [ + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", + "blockNumber": "0x21", + "blockTimestamp": "0x66a3ef27", + "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", + "transactionIndex": "0x0", + "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", + "blockNumber": "0x21", + "gasUsed": "0x8b37", + "effectiveGasPrice": "0x25270b3c8", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x082daded8e1e85c9233ba3ed91dbcf4c6a91af89151a498fce5e7d60f6229400" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019617, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json new file mode 100644 index 00000000..ba0a917c --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7b5", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722017717, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json new file mode 100644 index 00000000..40f1ac66 --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3e7f4", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722017758, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json new file mode 100644 index 00000000..20e66c57 --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3edcb", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019253, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json new file mode 100644 index 00000000..42190765 --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ede7", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019296, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json new file mode 100644 index 00000000..2f23022c --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ee4b", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019382, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json new file mode 100644 index 00000000..d87254ce --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3eed5", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", + "transactionIndex": "0x0", + "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", + "blockNumber": "0x1f", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x2525d2b65", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xbaa52ac0d568d2e13491e15edd24256f08bb598857c3ac15c42151c8ab6af664" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019532, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json new file mode 100644 index 00000000..70f0f26e --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x17", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "blockTimestamp": "0x66a3ef23", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", + "transactionIndex": "0x0", + "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", + "blockNumber": "0x1d", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x252530692", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019595, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json new file mode 100644 index 00000000..04ae5259 --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630ffffe", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x2525d559b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xdfc7350fb76ba13c3030a7fa53b249c55e065422c8fae1383895a3419d29368a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019611, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json new file mode 100644 index 00000000..04ae5259 --- /dev/null +++ b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json @@ -0,0 +1,150 @@ +{ + "transactions": [ + { + "hash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "function": "withdrawAndCall(bytes,uint256,address,bytes)", + "arguments": [ + "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "1", + "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "gas": "0x1e98e", + "value": "0x0", + "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x19", + "chainId": "0x7a69" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1626f", + "logs": [ + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + ], + "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630ffffe", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "topics": [ + "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "blockTimestamp": "0x66a3ef25", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", + "transactionIndex": "0x0", + "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", + "blockNumber": "0x1f", + "gasUsed": "0x1626f", + "effectiveGasPrice": "0x2525d559b", + "blobGasPrice": "0x1", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contractAddress": null, + "root": "0xdfc7350fb76ba13c3030a7fa53b249c55e065422c8fae1383895a3419d29368a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1722019611, + "chain": 31337, + "commit": "20f080c" +} \ No newline at end of file diff --git a/v2_localnet.md b/v2_localnet.md deleted file mode 100644 index 4b162346..00000000 --- a/v2_localnet.md +++ /dev/null @@ -1,139 +0,0 @@ -# V2 Contracts - Local Development Environment - -Important Notice: The new architecture (V2) is currently in active development. While the high-level interface presented in this document is expected to remain stable, some aspects of the architecture may change. - -## Introduction - -The new architecture aims to streamline the developer experience for building Universal Apps. Developers will primarily interact with two contracts: GatewayZEVM and GatewayEVM. - -* `GatewayEVM`: Deployed on each connected chain to interact with ZetaChain. -* `GatewayZEVM`: Deployed on ZetaChain to interact with connected chains. - -V2 contracts source code is currently located in [prototypes](/contracts/prototypes/) - -## Contract Interfaces - -The interface of the gateway contracts is centered around the deposit, withdraw, and call terminology: - -* Deposit: Transfer of assets from a connected chain to ZetaChain. -* Withdraw: Transfer of assets from ZetaChain to a connected chain. -* Call: Smart contract call involved in cross-chain transactions. - - -In consequence, the interface is as follow: -* `GatewayEVM`: `deposit`, `depositAndCall`, and `call` -* `GatewayZEVM`: `withdraw`, `withdrawAndCall`, and `call` - -The motivation behind this interface is intuitiveness and simplicity. We support different asset types by using function overloading. - -### `GatewayEVM` - -* Deposit of native tokens to addresses on ZetaChain: - -```solidity -function deposit(address receiver) payable -``` - -* Deposit of ERC-20 tokens to addresses on ZetaChain: - -```solidity -function deposit(address receiver, uint256 amount, address asset) -``` - -* Deposit of native tokens and smart contract call on ZetaChain: - -```solidity -function depositAndCall(address receiver, bytes calldata payload) payable -``` - -* Deposit of ERC-20 tokens and smart contract call on ZetaChain: - -```solidity -depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) -``` - -* Simple Universal App contract call: - -```solidity -function call(address receiver, bytes calldata payload) -``` - -### `GatewayZEVM` - -* Withdraw of ZRC-20 tokens to its native connected chain: - -```solidity -function withdraw(bytes memory receiver, uint256 amount, address zrc20) -``` - -* Withdraw of ZRC-20 tokens and smart contract call on connected chain: - -```solidity -function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) -``` - -* Simple call to a contract on a connected chain: - -```solidity -function call(bytes memory receiver, bytes calldata message) external -``` - -## Experimenting with the New Architecture - -To experiment with the new architecture, you can deploy a local network using Hardhat and test the gateways using the following commands: - -Clone the repository -``` -git clone https://github.com/zeta-chain/protocol-contracts.git -cd protocol-contracts -``` - -Start the local environment network -Note: `--hide="NODE"` is used to prevent verbose logging -``` -yarn -yarn localnet --hide="NODE" -``` - -The `localnet` command launches two processes: - -- A local Ethereum network (using Hardhat) with the two gateway contracts deployed -- A background worker that relay messages between the two gateway contracts. It simulates the cross-chain message relaying that would normally happen between live networks with the [observers/signers](https://www.zetachain.com/docs/developers/architecture/observers/) mechanism. This allows to simulate a cross-chain environment on a single local chain. - -Running the command will deploy the two gateway contracts: - -``` -[WORKER] GatewayEVM: 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 -[WORKER] GatewayZEVM: 0x0165878A594ca255338adfa4d48449f69242Eb8F -``` - -The developers can develop application using these addresses, the messages will automatically be relayed by the worker. - -The local environment uses Hardhat localnet. Therefore, the default Hardhat localnet accounts can be used to interact with the network. - -``` -Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH) -Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 - -Account #1: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000 ETH) -Private Key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d - -Account #2: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (10000 ETH) -Private Key: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a -``` - -### Examples - -The example contracts demonstrate how the V2 interface can be leveraged to build Universal Apps. - -* [TestZContract](/contracts/prototypes/zevm/TestZContract.sol): ZetaChain contract (Universal App) that can be called from a connected chains -* [SenderZEVM](/contracts/prototypes/zevm/SenderZEVM.sol): ZetaChain contract calling a smart contract on a connected chains -* [ReceiverEVM](/contracts/prototypes/evm/ReceiverEVM.sol): contract on connected chain that can be called from ZetaChain - -The following commands can be used to test interactions between these contracts: -``` -npx hardhat zevm-call --network localhost -npx hardhat zevm-withdraw-and-call --network localhost -npx hardhat evm-call --network localhost -npx hardhat evm-deposit-and-call --network localhost -``` \ No newline at end of file From 731aa1e2cba62c191720344aff27558b98f4ae1c Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 22:53:14 +0200 Subject: [PATCH 23/60] yarn generate for v1 --- .../evm/erc20custody.sol/erc20custody.go | 1868 +++++++++++++ .../connectorerrors.sol/connectorerrors.go | 181 ++ .../interfaces/zetaerrors.sol/zetaerrors.go | 181 ++ .../zetainteractorerrors.go | 181 ++ .../zetainterfaces.sol/zetacommonerrors.go | 181 ++ .../zetainterfaces.sol/zetaconnector.go | 212 ++ .../zetainterfaces.sol/zetainterfaces.go | 181 ++ .../zetainterfaces.sol/zetareceiver.go | 242 ++ .../zetainterfaces.sol/zetatokenconsumer.go | 838 ++++++ .../zetanonethinterface.go | 687 +++++ .../attackercontract.sol/attackercontract.go | 318 +++ .../testing/attackercontract.sol/victim.go | 223 ++ .../evm/testing/erc20mock.sol/erc20mock.go | 802 ++++++ .../inonfungiblepositionmanager.go | 864 ++++++ .../ipoolinitializer.go | 202 ++ .../zetainteractormock.go | 778 ++++++ .../zetareceivermock.sol/zetareceivermock.go | 532 ++++ .../immutablecreate2factory.go | 338 +++ .../immutablecreate2factory.sol/ownable.go | 202 ++ .../concentratedliquiditypoolfactory.go | 212 ++ .../tridentipoolrouter.sol/ipoolrouter.go | 326 +++ .../zetainteractor.sol/zetainteractor.go | 695 +++++ .../iswaprouterpancake.go | 263 ++ .../weth9.go | 202 ++ .../zetatokenconsumerpancakev3.go | 1067 +++++++ .../zetatokenconsumeruniv3errors.go | 181 ++ .../weth9.go | 265 ++ .../zetatokenconsumertrident.go | 974 +++++++ .../zetatokenconsumertridenterrors.go | 181 ++ .../zetatokenconsumeruniv2.go | 891 ++++++ .../zetatokenconsumeruniv2errors.go | 181 ++ .../weth9.go | 202 ++ .../zetatokenconsumeruniv3.go | 1067 +++++++ .../zetatokenconsumeruniv3errors.go | 181 ++ .../zetatokenconsumerzevm.go | 912 ++++++ .../zetatokenconsumerzevmerrors.go | 181 ++ v1/pkg/contracts/evm/zeta.eth.sol/zetaeth.go | 802 ++++++ .../evm/zeta.non-eth.sol/zetanoneth.go | 1706 ++++++++++++ .../zetaconnectorbase.go | 1695 ++++++++++++ .../zetaconnector.eth.sol/zetaconnectoreth.go | 1726 ++++++++++++ .../zetaconnectornoneth.go | 1913 +++++++++++++ .../zevm/interfaces/isystem.sol/isystem.go | 367 +++ .../iuniswapv2router01.go | 650 +++++ .../iuniswapv2router02.go | 755 +++++ .../zevm/interfaces/iwzeta.sol/iweth9.go | 977 +++++++ .../zevm/interfaces/izrc20.sol/izrc20.go | 463 ++++ .../interfaces/izrc20.sol/izrc20metadata.go | 556 ++++ .../zevm/interfaces/izrc20.sol/zrc20events.go | 1185 ++++++++ .../zcontract.sol/universalcontract.go | 237 ++ .../interfaces/zcontract.sol/zcontract.go | 209 ++ .../zevm/systemcontract.sol/systemcontract.go | 1421 ++++++++++ .../systemcontracterrors.go | 181 ++ .../systemcontracterrors.go | 181 ++ .../systemcontractmock.go | 1176 ++++++++ .../zevm/uniswap.sol/uniswapimports.go | 203 ++ .../uniswapperiphery.sol/uniswapimports.go | 203 ++ v1/pkg/contracts/zevm/wzeta.sol/weth9.go | 1113 ++++++++ .../zetaconnectorzevm.go | 1000 +++++++ .../zetaconnectorzevm.sol/zetainterfaces.go | 181 ++ .../zetaconnectorzevm.sol/zetareceiver.go | 242 ++ v1/pkg/contracts/zevm/zrc20.sol/zrc20.go | 1800 ++++++++++++ .../contracts/zevm/zrc20.sol/zrc20errors.go | 181 ++ .../zevm/zrc20new.sol/zrc20errors.go | 181 ++ .../contracts/zevm/zrc20new.sol/zrc20new.go | 1831 ++++++++++++ .../contracts/access/ownable.sol/ownable.go | 407 +++ .../access/ownable2step.sol/ownable2step.go | 612 ++++ .../security/pausable.sol/pausable.go | 480 ++++ .../reentrancyguard.sol/reentrancyguard.go | 181 ++ .../contracts/token/erc20/erc20.sol/erc20.go | 802 ++++++ .../erc20burnable.sol/erc20burnable.go | 822 ++++++ .../ierc20metadata.sol/ierc20metadata.go | 738 +++++ .../token/erc20/ierc20.sol/ierc20.go | 645 +++++ .../erc20/utils/safeerc20.sol/safeerc20.go | 203 ++ .../contracts/utils/address.sol/address.go | 203 ++ .../contracts/utils/context.sol/context.go | 181 ++ .../transferhelper.sol/transferhelper.go | 203 ++ .../contracts/interfaces/ierc20.sol/ierc20.go | 738 +++++ .../iuniswapv2callee.sol/iuniswapv2callee.go | 202 ++ .../iuniswapv2erc20.sol/iuniswapv2erc20.go | 852 ++++++ .../iuniswapv2factory.go | 554 ++++ .../iuniswapv2pair.sol/iuniswapv2pair.go | 1842 +++++++++++++ .../contracts/libraries/math.sol/math.go | 203 ++ .../libraries/safemath.sol/safemath.go | 203 ++ .../libraries/uq112x112.sol/uq112x112.go | 203 ++ .../uniswapv2erc20.sol/uniswapv2erc20.go | 874 ++++++ .../uniswapv2factory.sol/uniswapv2factory.go | 576 ++++ .../uniswapv2pair.sol/uniswapv2pair.go | 1864 +++++++++++++ .../contracts/interfaces/ierc20.sol/ierc20.go | 738 +++++ .../iuniswapv2router01.go | 650 +++++ .../iuniswapv2router02.go | 755 +++++ .../contracts/interfaces/iweth.sol/iweth.go | 244 ++ .../libraries/safemath.sol/safemath.go | 203 ++ .../uniswapv2library.sol/uniswapv2library.go | 203 ++ .../uniswapv2router02.go | 798 ++++++ .../iuniswapv3swapcallback.go | 202 ++ .../iuniswapv3factory.go | 807 ++++++ .../iuniswapv3pool.sol/iuniswapv3pool.go | 2455 +++++++++++++++++ .../iuniswapv3poolactions.go | 328 +++ .../iuniswapv3poolderivedstate.go | 276 ++ .../iuniswapv3poolevents.go | 1556 +++++++++++ .../iuniswapv3poolimmutables.go | 367 +++ .../iuniswapv3poolowneractions.go | 223 ++ .../iuniswapv3poolstate.go | 610 ++++ .../interfaces/iquoter.sol/iquoter.go | 265 ++ .../interfaces/iswaprouter.sol/iswaprouter.go | 328 +++ v1/typechain-types/hardhat.d.ts | 207 -- v1/typechain-types/index.ts | 46 - 107 files changed, 64723 insertions(+), 253 deletions(-) create mode 100644 v1/pkg/contracts/evm/erc20custody.sol/erc20custody.go create mode 100644 v1/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go create mode 100644 v1/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go create mode 100644 v1/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go create mode 100644 v1/pkg/contracts/evm/testing/attackercontract.sol/victim.go create mode 100644 v1/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go create mode 100644 v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go create mode 100644 v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go create mode 100644 v1/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go create mode 100644 v1/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go create mode 100644 v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go create mode 100644 v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go create mode 100644 v1/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go create mode 100644 v1/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go create mode 100644 v1/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go create mode 100644 v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go create mode 100644 v1/pkg/contracts/evm/zeta.eth.sol/zetaeth.go create mode 100644 v1/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go create mode 100644 v1/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go create mode 100644 v1/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go create mode 100644 v1/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go create mode 100644 v1/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go create mode 100644 v1/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go create mode 100644 v1/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go create mode 100644 v1/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go create mode 100644 v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go create mode 100644 v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go create mode 100644 v1/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go create mode 100644 v1/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go create mode 100644 v1/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go create mode 100644 v1/pkg/contracts/zevm/systemcontract.sol/systemcontract.go create mode 100644 v1/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go create mode 100644 v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go create mode 100644 v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go create mode 100644 v1/pkg/contracts/zevm/uniswap.sol/uniswapimports.go create mode 100644 v1/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go create mode 100644 v1/pkg/contracts/zevm/wzeta.sol/weth9.go create mode 100644 v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go create mode 100644 v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go create mode 100644 v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go create mode 100644 v1/pkg/contracts/zevm/zrc20.sol/zrc20.go create mode 100644 v1/pkg/contracts/zevm/zrc20.sol/zrc20errors.go create mode 100644 v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go create mode 100644 v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go create mode 100644 v1/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go create mode 100644 v1/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go create mode 100644 v1/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go create mode 100644 v1/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go create mode 100644 v1/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go create mode 100644 v1/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go create mode 100644 v1/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go create mode 100644 v1/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go create mode 100644 v1/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go create mode 100644 v1/pkg/openzeppelin/contracts/utils/address.sol/address.go create mode 100644 v1/pkg/openzeppelin/contracts/utils/context.sol/context.go create mode 100644 v1/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go create mode 100644 v1/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go create mode 100644 v1/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go create mode 100644 v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go create mode 100644 v1/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go create mode 100644 v1/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go diff --git a/v1/pkg/contracts/evm/erc20custody.sol/erc20custody.go b/v1/pkg/contracts/evm/erc20custody.sol/erc20custody.go new file mode 100644 index 00000000..0564dfec --- /dev/null +++ b/v1/pkg/contracts/evm/erc20custody.sol/erc20custody.go @@ -0,0 +1,1868 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20custody + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. +var ERC20CustodyMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaMaxFee_\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"zeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTSSUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaMaxFeeExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"}],\"name\":\"RenouncedTSSUpdater\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Unwhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"UpdatedTSSAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"UpdatedZetaFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Whitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TSSAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TSSAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTSSAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"unwhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"updateTSSAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"updateZetaFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeta\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaMaxFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b50604051620021a0380380620021a0833981810160405281019062000037919062000156565b6001600081905550846001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160808181525050505050505062000283565b600081519050620001228162000235565b92915050565b60008151905062000139816200024f565b92915050565b600081519050620001508162000269565b92915050565b600080600080600060a0868803121562000175576200017462000230565b5b6000620001858882890162000111565b9550506020620001988882890162000111565b9450506040620001ab888289016200013f565b9350506060620001be888289016200013f565b9250506080620001d18882890162000128565b9150509295509295909350565b6000620001eb8262000206565b9050919050565b6000620001ff82620001de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200024081620001de565b81146200024c57600080fd5b50565b6200025a81620001f2565b81146200026657600080fd5b50565b620002748162000226565b81146200028057600080fd5b50565b60805160a05160601c611edf620002c160003960008181610dca01528181610e31015261102d01526000818161042d0152610c310152611edf6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103ce565b6040516101249190611a04565b60405180910390f35b6101356103f2565b6040516101429190611a04565b60405180910390f35b610153610418565b6040516101609190611a7f565b60405180910390f35b61017161042b565b60405161017e9190611ba0565b60405180910390f35b61018f61044f565b005b6101ab60048036038101906101a691906116b3565b6105f5565b005b6101c760048036038101906101c29190611807565b61075c565b005b6101e360048036038101906101de9190611807565b61087f565b005b6101ff60048036038101906101fa9190611807565b6109a2565b60405161020c9190611a7f565b60405180910390f35b61022f600480360381019061022a91906116e0565b6109c2565b005b61024b60048036038101906102469190611834565b610b6f565b005b610255610cca565b6040516102629190611ba0565b60405180910390f35b61028560048036038101906102809190611760565b610cd0565b005b61028f61102b565b60405161029c9190611ae3565b60405180910390f35b6102ad61104f565b005b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610334576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff1661037a576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c49190611a04565b60405180910390a1565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff161561051b576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105eb9190611a04565b60405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067b576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947816040516107519190611a04565b60405180910390a150565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60046020528060005260406000206000915054906101000a900460ff1681565b6109ca6111f6565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ad2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610afd83828473ffffffffffffffffffffffffffffffffffffffff166112469092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b5a9190611ba0565b60405180910390a3610b6a6112cc565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c2f576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610c89576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cbf9190611ba0565b60405180910390a150565b60035481565b610cd86111f6565b600160009054906101000a900460ff1615610d1f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035414158015610e025750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610e7757610e763360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb29190611a04565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611861565b9050610f313330868873ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fa59190611a04565b60206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190611861565b610fff9190611bfe565b8787604051611012959493929190611a9a565b60405180910390a2506110236112cc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d5576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777336040516111ec9190611a04565b60405180910390a1565b6002600054141561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390611b80565b60405180910390fd5b6002600081905550565b6112c78363a9059cbb60e01b8484604051602401611265929190611a56565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b505050565b6001600081905550565b611359846323b872dd60e01b8585856040516024016112f793929190611a1f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b50505050565b60006113c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114269092919063ffffffff16565b905060008151111561142157808060200190518101906113e19190611733565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790611b60565b60405180910390fd5b5b505050565b6060611435848460008561143e565b90509392505050565b606082471015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90611b20565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ac91906119ed565b60006040518083038185875af1925050503d80600081146114e9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ee565b606091505b50915091506114ff8783838761150b565b92505050949350505050565b6060831561156e576000835114156115665761152685611581565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90611b40565b60405180910390fd5b5b829050611579565b61157883836115a4565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115b75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611afe565b60405180910390fd5b60008135905061160381611e4d565b92915050565b60008151905061161881611e64565b92915050565b60008083601f84011261163457611633611d38565b5b8235905067ffffffffffffffff81111561165157611650611d33565b5b60208301915083600182028301111561166d5761166c611d3d565b5b9250929050565b60008135905061168381611e7b565b92915050565b60008135905061169881611e92565b92915050565b6000815190506116ad81611e92565b92915050565b6000602082840312156116c9576116c8611d47565b5b60006116d7848285016115f4565b91505092915050565b6000806000606084860312156116f9576116f8611d47565b5b6000611707868287016115f4565b935050602061171886828701611674565b925050604061172986828701611689565b9150509250925092565b60006020828403121561174957611748611d47565b5b600061175784828501611609565b91505092915050565b6000806000806000806080878903121561177d5761177c611d47565b5b600087013567ffffffffffffffff81111561179b5761179a611d42565b5b6117a789828a0161161e565b965096505060206117ba89828a01611674565b94505060406117cb89828a01611689565b935050606087013567ffffffffffffffff8111156117ec576117eb611d42565b5b6117f889828a0161161e565b92509250509295509295509295565b60006020828403121561181d5761181c611d47565b5b600061182b84828501611674565b91505092915050565b60006020828403121561184a57611849611d47565b5b600061185884828501611689565b91505092915050565b60006020828403121561187757611876611d47565b5b60006118858482850161169e565b91505092915050565b61189781611c32565b82525050565b6118a681611c44565b82525050565b60006118b88385611bd1565b93506118c5838584611cc2565b6118ce83611d4c565b840190509392505050565b60006118e482611bbb565b6118ee8185611be2565b93506118fe818560208601611cd1565b80840191505092915050565b61191381611c8c565b82525050565b600061192482611bc6565b61192e8185611bed565b935061193e818560208601611cd1565b61194781611d4c565b840191505092915050565b600061195f602683611bed565b915061196a82611d5d565b604082019050919050565b6000611982601d83611bed565b915061198d82611dac565b602082019050919050565b60006119a5602a83611bed565b91506119b082611dd5565b604082019050919050565b60006119c8601f83611bed565b91506119d382611e24565b602082019050919050565b6119e781611c82565b82525050565b60006119f982846118d9565b915081905092915050565b6000602082019050611a19600083018461188e565b92915050565b6000606082019050611a34600083018661188e565b611a41602083018561188e565b611a4e60408301846119de565b949350505050565b6000604082019050611a6b600083018561188e565b611a7860208301846119de565b9392505050565b6000602082019050611a94600083018461189d565b92915050565b60006060820190508181036000830152611ab58187896118ac565b9050611ac460208301866119de565b8181036040830152611ad78184866118ac565b90509695505050505050565b6000602082019050611af8600083018461190a565b92915050565b60006020820190508181036000830152611b188184611919565b905092915050565b60006020820190508181036000830152611b3981611952565b9050919050565b60006020820190508181036000830152611b5981611975565b9050919050565b60006020820190508181036000830152611b7981611998565b9050919050565b60006020820190508181036000830152611b99816119bb565b9050919050565b6000602082019050611bb560008301846119de565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0982611c82565b9150611c1483611c82565b925082821015611c2757611c26611d04565b5b828203905092915050565b6000611c3d82611c62565b9050919050565b60008115159050919050565b6000611c5b82611c32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c9782611c9e565b9050919050565b6000611ca982611cb0565b9050919050565b6000611cbb82611c62565b9050919050565b82818337600083830152505050565b60005b83811015611cef578082015181840152602081019050611cd4565b83811115611cfe576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611e5681611c32565b8114611e6157600080fd5b50565b611e6d81611c44565b8114611e7857600080fd5b50565b611e8481611c50565b8114611e8f57600080fd5b50565b611e9b81611c82565b8114611ea657600080fd5b5056fea26469706673582212205768544075d85a56b1d380f8fcc0c8829b8a656c656277c25c81c31608d9e4ef64736f6c63430008070033", +} + +// ERC20CustodyABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyMetaData.ABI instead. +var ERC20CustodyABI = ERC20CustodyMetaData.ABI + +// ERC20CustodyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyMetaData.Bin instead. +var ERC20CustodyBin = ERC20CustodyMetaData.Bin + +// DeployERC20Custody deploys a new Ethereum contract, binding an instance of ERC20Custody to it. +func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, TSSAddress_ common.Address, TSSAddressUpdater_ common.Address, zetaFee_ *big.Int, zetaMaxFee_ *big.Int, zeta_ common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { + parsed, err := ERC20CustodyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, TSSAddress_, TSSAddressUpdater_, zetaFee_, zetaMaxFee_, zeta_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil +} + +// ERC20Custody is an auto generated Go binding around an Ethereum contract. +type ERC20Custody struct { + ERC20CustodyCaller // Read-only binding to the contract + ERC20CustodyTransactor // Write-only binding to the contract + ERC20CustodyFilterer // Log filterer for contract events +} + +// ERC20CustodyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20CustodySession struct { + Contract *ERC20Custody // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CustodyCallerSession struct { + Contract *ERC20CustodyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20CustodyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20CustodyTransactorSession struct { + Contract *ERC20CustodyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyRaw struct { + Contract *ERC20Custody // Generic contract binding to access the raw methods on +} + +// ERC20CustodyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyCallerRaw struct { + Contract *ERC20CustodyCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20CustodyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyTransactorRaw struct { + Contract *ERC20CustodyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Custody creates a new instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20Custody(address common.Address, backend bind.ContractBackend) (*ERC20Custody, error) { + contract, err := bindERC20Custody(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil +} + +// NewERC20CustodyCaller creates a new read-only instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyCaller, error) { + contract, err := bindERC20Custody(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyCaller{contract: contract}, nil +} + +// NewERC20CustodyTransactor creates a new write-only instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyTransactor, error) { + contract, err := bindERC20Custody(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyTransactor{contract: contract}, nil +} + +// NewERC20CustodyFilterer creates a new log filterer instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyFilterer, error) { + contract, err := bindERC20Custody(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20CustodyFilterer{contract: contract}, nil +} + +// bindERC20Custody binds a generic wrapper to an already deployed contract. +func bindERC20Custody(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Custody *ERC20CustodyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Custody.Contract.ERC20CustodyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Custody *ERC20CustodyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Custody *ERC20CustodyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Custody *ERC20CustodyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Custody.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Custody *ERC20CustodyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Custody *ERC20CustodyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Custody.Contract.contract.Transact(opts, method, params...) +} + +// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. +// +// Solidity: function TSSAddress() view returns(address) +func (_ERC20Custody *ERC20CustodyCaller) TSSAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "TSSAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. +// +// Solidity: function TSSAddress() view returns(address) +func (_ERC20Custody *ERC20CustodySession) TSSAddress() (common.Address, error) { + return _ERC20Custody.Contract.TSSAddress(&_ERC20Custody.CallOpts) +} + +// TSSAddress is a free data retrieval call binding the contract method 0x53ee30a3. +// +// Solidity: function TSSAddress() view returns(address) +func (_ERC20Custody *ERC20CustodyCallerSession) TSSAddress() (common.Address, error) { + return _ERC20Custody.Contract.TSSAddress(&_ERC20Custody.CallOpts) +} + +// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. +// +// Solidity: function TSSAddressUpdater() view returns(address) +func (_ERC20Custody *ERC20CustodyCaller) TSSAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "TSSAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. +// +// Solidity: function TSSAddressUpdater() view returns(address) +func (_ERC20Custody *ERC20CustodySession) TSSAddressUpdater() (common.Address, error) { + return _ERC20Custody.Contract.TSSAddressUpdater(&_ERC20Custody.CallOpts) +} + +// TSSAddressUpdater is a free data retrieval call binding the contract method 0x54b61e81. +// +// Solidity: function TSSAddressUpdater() view returns(address) +func (_ERC20Custody *ERC20CustodyCallerSession) TSSAddressUpdater() (common.Address, error) { + return _ERC20Custody.Contract.TSSAddressUpdater(&_ERC20Custody.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodyCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodySession) Paused() (bool, error) { + return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodyCallerSession) Paused() (bool, error) { + return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) +} + +// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. +// +// Solidity: function whitelisted(address ) view returns(bool) +func (_ERC20Custody *ERC20CustodyCaller) Whitelisted(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "whitelisted", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. +// +// Solidity: function whitelisted(address ) view returns(bool) +func (_ERC20Custody *ERC20CustodySession) Whitelisted(arg0 common.Address) (bool, error) { + return _ERC20Custody.Contract.Whitelisted(&_ERC20Custody.CallOpts, arg0) +} + +// Whitelisted is a free data retrieval call binding the contract method 0xd936547e. +// +// Solidity: function whitelisted(address ) view returns(bool) +func (_ERC20Custody *ERC20CustodyCallerSession) Whitelisted(arg0 common.Address) (bool, error) { + return _ERC20Custody.Contract.Whitelisted(&_ERC20Custody.CallOpts, arg0) +} + +// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. +// +// Solidity: function zeta() view returns(address) +func (_ERC20Custody *ERC20CustodyCaller) Zeta(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "zeta") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. +// +// Solidity: function zeta() view returns(address) +func (_ERC20Custody *ERC20CustodySession) Zeta() (common.Address, error) { + return _ERC20Custody.Contract.Zeta(&_ERC20Custody.CallOpts) +} + +// Zeta is a free data retrieval call binding the contract method 0xe8f9cb3a. +// +// Solidity: function zeta() view returns(address) +func (_ERC20Custody *ERC20CustodyCallerSession) Zeta() (common.Address, error) { + return _ERC20Custody.Contract.Zeta(&_ERC20Custody.CallOpts) +} + +// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. +// +// Solidity: function zetaFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodyCaller) ZetaFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "zetaFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. +// +// Solidity: function zetaFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodySession) ZetaFee() (*big.Int, error) { + return _ERC20Custody.Contract.ZetaFee(&_ERC20Custody.CallOpts) +} + +// ZetaFee is a free data retrieval call binding the contract method 0xe5408cfa. +// +// Solidity: function zetaFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodyCallerSession) ZetaFee() (*big.Int, error) { + return _ERC20Custody.Contract.ZetaFee(&_ERC20Custody.CallOpts) +} + +// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. +// +// Solidity: function zetaMaxFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodyCaller) ZetaMaxFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "zetaMaxFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. +// +// Solidity: function zetaMaxFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodySession) ZetaMaxFee() (*big.Int, error) { + return _ERC20Custody.Contract.ZetaMaxFee(&_ERC20Custody.CallOpts) +} + +// ZetaMaxFee is a free data retrieval call binding the contract method 0x7bdaded3. +// +// Solidity: function zetaMaxFee() view returns(uint256) +func (_ERC20Custody *ERC20CustodyCallerSession) ZetaMaxFee() (*big.Int, error) { + return _ERC20Custody.Contract.ZetaMaxFee(&_ERC20Custody.CallOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_ERC20Custody *ERC20CustodyTransactor) Deposit(opts *bind.TransactOpts, recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "deposit", recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_ERC20Custody *ERC20CustodySession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.Deposit(&_ERC20Custody.TransactOpts, recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.Deposit(&_ERC20Custody.TransactOpts, recipient, asset, amount, message) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodyTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodySession) Pause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Pause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) +} + +// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. +// +// Solidity: function renounceTSSAddressUpdater() returns() +func (_ERC20Custody *ERC20CustodyTransactor) RenounceTSSAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "renounceTSSAddressUpdater") +} + +// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. +// +// Solidity: function renounceTSSAddressUpdater() returns() +func (_ERC20Custody *ERC20CustodySession) RenounceTSSAddressUpdater() (*types.Transaction, error) { + return _ERC20Custody.Contract.RenounceTSSAddressUpdater(&_ERC20Custody.TransactOpts) +} + +// RenounceTSSAddressUpdater is a paid mutator transaction binding the contract method 0xed11692b. +// +// Solidity: function renounceTSSAddressUpdater() returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) RenounceTSSAddressUpdater() (*types.Transaction, error) { + return _ERC20Custody.Contract.RenounceTSSAddressUpdater(&_ERC20Custody.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodyTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodySession) Unpause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) +} + +// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. +// +// Solidity: function unwhitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodyTransactor) Unwhitelist(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "unwhitelist", asset) +} + +// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. +// +// Solidity: function unwhitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodySession) Unwhitelist(asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.Unwhitelist(&_ERC20Custody.TransactOpts, asset) +} + +// Unwhitelist is a paid mutator transaction binding the contract method 0x9a590427. +// +// Solidity: function unwhitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Unwhitelist(asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.Unwhitelist(&_ERC20Custody.TransactOpts, asset) +} + +// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. +// +// Solidity: function updateTSSAddress(address TSSAddress_) returns() +func (_ERC20Custody *ERC20CustodyTransactor) UpdateTSSAddress(opts *bind.TransactOpts, TSSAddress_ common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "updateTSSAddress", TSSAddress_) +} + +// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. +// +// Solidity: function updateTSSAddress(address TSSAddress_) returns() +func (_ERC20Custody *ERC20CustodySession) UpdateTSSAddress(TSSAddress_ common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.UpdateTSSAddress(&_ERC20Custody.TransactOpts, TSSAddress_) +} + +// UpdateTSSAddress is a paid mutator transaction binding the contract method 0x950837aa. +// +// Solidity: function updateTSSAddress(address TSSAddress_) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) UpdateTSSAddress(TSSAddress_ common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.UpdateTSSAddress(&_ERC20Custody.TransactOpts, TSSAddress_) +} + +// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. +// +// Solidity: function updateZetaFee(uint256 zetaFee_) returns() +func (_ERC20Custody *ERC20CustodyTransactor) UpdateZetaFee(opts *bind.TransactOpts, zetaFee_ *big.Int) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "updateZetaFee", zetaFee_) +} + +// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. +// +// Solidity: function updateZetaFee(uint256 zetaFee_) returns() +func (_ERC20Custody *ERC20CustodySession) UpdateZetaFee(zetaFee_ *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.UpdateZetaFee(&_ERC20Custody.TransactOpts, zetaFee_) +} + +// UpdateZetaFee is a paid mutator transaction binding the contract method 0xde2f6c5e. +// +// Solidity: function updateZetaFee(uint256 zetaFee_) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) UpdateZetaFee(zetaFee_ *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.UpdateZetaFee(&_ERC20Custody.TransactOpts, zetaFee_) +} + +// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. +// +// Solidity: function whitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodyTransactor) Whitelist(opts *bind.TransactOpts, asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "whitelist", asset) +} + +// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. +// +// Solidity: function whitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodySession) Whitelist(asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.Whitelist(&_ERC20Custody.TransactOpts, asset) +} + +// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a. +// +// Solidity: function whitelist(address asset) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Whitelist(asset common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.Whitelist(&_ERC20Custody.TransactOpts, asset) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_ERC20Custody *ERC20CustodyTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "withdraw", recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_ERC20Custody *ERC20CustodySession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, recipient, asset, amount) +} + +// ERC20CustodyDepositedIterator is returned from FilterDeposited and is used to iterate over the raw logs and unpacked data for Deposited events raised by the ERC20Custody contract. +type ERC20CustodyDepositedIterator struct { + Event *ERC20CustodyDeposited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyDepositedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyDeposited represents a Deposited event raised by the ERC20Custody contract. +type ERC20CustodyDeposited struct { + Recipient []byte + Asset common.Address + Amount *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposited is a free log retrieval operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. +// +// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) +func (_ERC20Custody *ERC20CustodyFilterer) FilterDeposited(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyDepositedIterator, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Deposited", assetRule) + if err != nil { + return nil, err + } + return &ERC20CustodyDepositedIterator{contract: _ERC20Custody.contract, event: "Deposited", logs: logs, sub: sub}, nil +} + +// WatchDeposited is a free log subscription operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. +// +// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) +func (_ERC20Custody *ERC20CustodyFilterer) WatchDeposited(opts *bind.WatchOpts, sink chan<- *ERC20CustodyDeposited, asset []common.Address) (event.Subscription, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Deposited", assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyDeposited) + if err := _ERC20Custody.contract.UnpackLog(event, "Deposited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposited is a log parse operation binding the contract event 0x1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae. +// +// Solidity: event Deposited(bytes recipient, address indexed asset, uint256 amount, bytes message) +func (_ERC20Custody *ERC20CustodyFilterer) ParseDeposited(log types.Log) (*ERC20CustodyDeposited, error) { + event := new(ERC20CustodyDeposited) + if err := _ERC20Custody.contract.UnpackLog(event, "Deposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC20Custody contract. +type ERC20CustodyPausedIterator struct { + Event *ERC20CustodyPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyPaused represents a Paused event raised by the ERC20Custody contract. +type ERC20CustodyPaused struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC20CustodyPausedIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC20CustodyPausedIterator{contract: _ERC20Custody.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyPaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyPaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) ParsePaused(log types.Log) (*ERC20CustodyPaused, error) { + event := new(ERC20CustodyPaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyRenouncedTSSUpdaterIterator is returned from FilterRenouncedTSSUpdater and is used to iterate over the raw logs and unpacked data for RenouncedTSSUpdater events raised by the ERC20Custody contract. +type ERC20CustodyRenouncedTSSUpdaterIterator struct { + Event *ERC20CustodyRenouncedTSSUpdater // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRenouncedTSSUpdater) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRenouncedTSSUpdater) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyRenouncedTSSUpdaterIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyRenouncedTSSUpdater represents a RenouncedTSSUpdater event raised by the ERC20Custody contract. +type ERC20CustodyRenouncedTSSUpdater struct { + TSSAddressUpdater common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRenouncedTSSUpdater is a free log retrieval operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. +// +// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) +func (_ERC20Custody *ERC20CustodyFilterer) FilterRenouncedTSSUpdater(opts *bind.FilterOpts) (*ERC20CustodyRenouncedTSSUpdaterIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "RenouncedTSSUpdater") + if err != nil { + return nil, err + } + return &ERC20CustodyRenouncedTSSUpdaterIterator{contract: _ERC20Custody.contract, event: "RenouncedTSSUpdater", logs: logs, sub: sub}, nil +} + +// WatchRenouncedTSSUpdater is a free log subscription operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. +// +// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) +func (_ERC20Custody *ERC20CustodyFilterer) WatchRenouncedTSSUpdater(opts *bind.WatchOpts, sink chan<- *ERC20CustodyRenouncedTSSUpdater) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "RenouncedTSSUpdater") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyRenouncedTSSUpdater) + if err := _ERC20Custody.contract.UnpackLog(event, "RenouncedTSSUpdater", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRenouncedTSSUpdater is a log parse operation binding the contract event 0x39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777. +// +// Solidity: event RenouncedTSSUpdater(address TSSAddressUpdater_) +func (_ERC20Custody *ERC20CustodyFilterer) ParseRenouncedTSSUpdater(log types.Log) (*ERC20CustodyRenouncedTSSUpdater, error) { + event := new(ERC20CustodyRenouncedTSSUpdater) + if err := _ERC20Custody.contract.UnpackLog(event, "RenouncedTSSUpdater", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC20Custody contract. +type ERC20CustodyUnpausedIterator struct { + Event *ERC20CustodyUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyUnpaused represents a Unpaused event raised by the ERC20Custody contract. +type ERC20CustodyUnpaused struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC20CustodyUnpausedIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC20CustodyUnpausedIterator{contract: _ERC20Custody.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyUnpaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address sender) +func (_ERC20Custody *ERC20CustodyFilterer) ParseUnpaused(log types.Log) (*ERC20CustodyUnpaused, error) { + event := new(ERC20CustodyUnpaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyUnwhitelistedIterator is returned from FilterUnwhitelisted and is used to iterate over the raw logs and unpacked data for Unwhitelisted events raised by the ERC20Custody contract. +type ERC20CustodyUnwhitelistedIterator struct { + Event *ERC20CustodyUnwhitelisted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyUnwhitelistedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnwhitelisted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnwhitelisted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyUnwhitelistedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyUnwhitelistedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyUnwhitelisted represents a Unwhitelisted event raised by the ERC20Custody contract. +type ERC20CustodyUnwhitelisted struct { + Asset common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnwhitelisted is a free log retrieval operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. +// +// Solidity: event Unwhitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) FilterUnwhitelisted(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyUnwhitelistedIterator, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Unwhitelisted", assetRule) + if err != nil { + return nil, err + } + return &ERC20CustodyUnwhitelistedIterator{contract: _ERC20Custody.contract, event: "Unwhitelisted", logs: logs, sub: sub}, nil +} + +// WatchUnwhitelisted is a free log subscription operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. +// +// Solidity: event Unwhitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) WatchUnwhitelisted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUnwhitelisted, asset []common.Address) (event.Subscription, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Unwhitelisted", assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyUnwhitelisted) + if err := _ERC20Custody.contract.UnpackLog(event, "Unwhitelisted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnwhitelisted is a log parse operation binding the contract event 0x51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da46791. +// +// Solidity: event Unwhitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) ParseUnwhitelisted(log types.Log) (*ERC20CustodyUnwhitelisted, error) { + event := new(ERC20CustodyUnwhitelisted) + if err := _ERC20Custody.contract.UnpackLog(event, "Unwhitelisted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyUpdatedTSSAddressIterator is returned from FilterUpdatedTSSAddress and is used to iterate over the raw logs and unpacked data for UpdatedTSSAddress events raised by the ERC20Custody contract. +type ERC20CustodyUpdatedTSSAddressIterator struct { + Event *ERC20CustodyUpdatedTSSAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyUpdatedTSSAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUpdatedTSSAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUpdatedTSSAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyUpdatedTSSAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyUpdatedTSSAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyUpdatedTSSAddress represents a UpdatedTSSAddress event raised by the ERC20Custody contract. +type ERC20CustodyUpdatedTSSAddress struct { + TSSAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedTSSAddress is a free log retrieval operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. +// +// Solidity: event UpdatedTSSAddress(address TSSAddress_) +func (_ERC20Custody *ERC20CustodyFilterer) FilterUpdatedTSSAddress(opts *bind.FilterOpts) (*ERC20CustodyUpdatedTSSAddressIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "UpdatedTSSAddress") + if err != nil { + return nil, err + } + return &ERC20CustodyUpdatedTSSAddressIterator{contract: _ERC20Custody.contract, event: "UpdatedTSSAddress", logs: logs, sub: sub}, nil +} + +// WatchUpdatedTSSAddress is a free log subscription operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. +// +// Solidity: event UpdatedTSSAddress(address TSSAddress_) +func (_ERC20Custody *ERC20CustodyFilterer) WatchUpdatedTSSAddress(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUpdatedTSSAddress) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "UpdatedTSSAddress") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyUpdatedTSSAddress) + if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedTSSAddress", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedTSSAddress is a log parse operation binding the contract event 0xcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947. +// +// Solidity: event UpdatedTSSAddress(address TSSAddress_) +func (_ERC20Custody *ERC20CustodyFilterer) ParseUpdatedTSSAddress(log types.Log) (*ERC20CustodyUpdatedTSSAddress, error) { + event := new(ERC20CustodyUpdatedTSSAddress) + if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedTSSAddress", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyUpdatedZetaFeeIterator is returned from FilterUpdatedZetaFee and is used to iterate over the raw logs and unpacked data for UpdatedZetaFee events raised by the ERC20Custody contract. +type ERC20CustodyUpdatedZetaFeeIterator struct { + Event *ERC20CustodyUpdatedZetaFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyUpdatedZetaFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUpdatedZetaFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUpdatedZetaFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyUpdatedZetaFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyUpdatedZetaFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyUpdatedZetaFee represents a UpdatedZetaFee event raised by the ERC20Custody contract. +type ERC20CustodyUpdatedZetaFee struct { + ZetaFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedZetaFee is a free log retrieval operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. +// +// Solidity: event UpdatedZetaFee(uint256 zetaFee_) +func (_ERC20Custody *ERC20CustodyFilterer) FilterUpdatedZetaFee(opts *bind.FilterOpts) (*ERC20CustodyUpdatedZetaFeeIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "UpdatedZetaFee") + if err != nil { + return nil, err + } + return &ERC20CustodyUpdatedZetaFeeIterator{contract: _ERC20Custody.contract, event: "UpdatedZetaFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedZetaFee is a free log subscription operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. +// +// Solidity: event UpdatedZetaFee(uint256 zetaFee_) +func (_ERC20Custody *ERC20CustodyFilterer) WatchUpdatedZetaFee(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUpdatedZetaFee) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "UpdatedZetaFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyUpdatedZetaFee) + if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedZetaFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedZetaFee is a log parse operation binding the contract event 0x6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d523. +// +// Solidity: event UpdatedZetaFee(uint256 zetaFee_) +func (_ERC20Custody *ERC20CustodyFilterer) ParseUpdatedZetaFee(log types.Log) (*ERC20CustodyUpdatedZetaFee, error) { + event := new(ERC20CustodyUpdatedZetaFee) + if err := _ERC20Custody.contract.UnpackLog(event, "UpdatedZetaFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyWhitelistedIterator is returned from FilterWhitelisted and is used to iterate over the raw logs and unpacked data for Whitelisted events raised by the ERC20Custody contract. +type ERC20CustodyWhitelistedIterator struct { + Event *ERC20CustodyWhitelisted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyWhitelistedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyWhitelisted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyWhitelisted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyWhitelistedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyWhitelistedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyWhitelisted represents a Whitelisted event raised by the ERC20Custody contract. +type ERC20CustodyWhitelisted struct { + Asset common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWhitelisted is a free log retrieval operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. +// +// Solidity: event Whitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) FilterWhitelisted(opts *bind.FilterOpts, asset []common.Address) (*ERC20CustodyWhitelistedIterator, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Whitelisted", assetRule) + if err != nil { + return nil, err + } + return &ERC20CustodyWhitelistedIterator{contract: _ERC20Custody.contract, event: "Whitelisted", logs: logs, sub: sub}, nil +} + +// WatchWhitelisted is a free log subscription operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. +// +// Solidity: event Whitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) WatchWhitelisted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWhitelisted, asset []common.Address) (event.Subscription, error) { + + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Whitelisted", assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyWhitelisted) + if err := _ERC20Custody.contract.UnpackLog(event, "Whitelisted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWhitelisted is a log parse operation binding the contract event 0xaab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a54. +// +// Solidity: event Whitelisted(address indexed asset) +func (_ERC20Custody *ERC20CustodyFilterer) ParseWhitelisted(log types.Log) (*ERC20CustodyWhitelisted, error) { + event := new(ERC20CustodyWhitelisted) + if err := _ERC20Custody.contract.UnpackLog(event, "Whitelisted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyWithdrawnIterator is returned from FilterWithdrawn and is used to iterate over the raw logs and unpacked data for Withdrawn events raised by the ERC20Custody contract. +type ERC20CustodyWithdrawnIterator struct { + Event *ERC20CustodyWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyWithdrawn represents a Withdrawn event raised by the ERC20Custody contract. +type ERC20CustodyWithdrawn struct { + Recipient common.Address + Asset common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawn is a free log retrieval operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. +// +// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) +func (_ERC20Custody *ERC20CustodyFilterer) FilterWithdrawn(opts *bind.FilterOpts, recipient []common.Address, asset []common.Address) (*ERC20CustodyWithdrawnIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Withdrawn", recipientRule, assetRule) + if err != nil { + return nil, err + } + return &ERC20CustodyWithdrawnIterator{contract: _ERC20Custody.contract, event: "Withdrawn", logs: logs, sub: sub}, nil +} + +// WatchWithdrawn is a free log subscription operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. +// +// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) +func (_ERC20Custody *ERC20CustodyFilterer) WatchWithdrawn(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWithdrawn, recipient []common.Address, asset []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + var assetRule []interface{} + for _, assetItem := range asset { + assetRule = append(assetRule, assetItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Withdrawn", recipientRule, assetRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyWithdrawn) + if err := _ERC20Custody.contract.UnpackLog(event, "Withdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawn is a log parse operation binding the contract event 0xd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb. +// +// Solidity: event Withdrawn(address indexed recipient, address indexed asset, uint256 amount) +func (_ERC20Custody *ERC20CustodyFilterer) ParseWithdrawn(log types.Log) (*ERC20CustodyWithdrawn, error) { + event := new(ERC20CustodyWithdrawn) + if err := _ERC20Custody.contract.UnpackLog(event, "Withdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go b/v1/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go new file mode 100644 index 00000000..b003ee00 --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/connectorerrors.sol/connectorerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package connectorerrors + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ConnectorErrorsMetaData contains all meta data concerning the ConnectorErrors contract. +var ConnectorErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"}]", +} + +// ConnectorErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ConnectorErrorsMetaData.ABI instead. +var ConnectorErrorsABI = ConnectorErrorsMetaData.ABI + +// ConnectorErrors is an auto generated Go binding around an Ethereum contract. +type ConnectorErrors struct { + ConnectorErrorsCaller // Read-only binding to the contract + ConnectorErrorsTransactor // Write-only binding to the contract + ConnectorErrorsFilterer // Log filterer for contract events +} + +// ConnectorErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ConnectorErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConnectorErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ConnectorErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConnectorErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ConnectorErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConnectorErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ConnectorErrorsSession struct { + Contract *ConnectorErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConnectorErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ConnectorErrorsCallerSession struct { + Contract *ConnectorErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ConnectorErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ConnectorErrorsTransactorSession struct { + Contract *ConnectorErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConnectorErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ConnectorErrorsRaw struct { + Contract *ConnectorErrors // Generic contract binding to access the raw methods on +} + +// ConnectorErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ConnectorErrorsCallerRaw struct { + Contract *ConnectorErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ConnectorErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ConnectorErrorsTransactorRaw struct { + Contract *ConnectorErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewConnectorErrors creates a new instance of ConnectorErrors, bound to a specific deployed contract. +func NewConnectorErrors(address common.Address, backend bind.ContractBackend) (*ConnectorErrors, error) { + contract, err := bindConnectorErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ConnectorErrors{ConnectorErrorsCaller: ConnectorErrorsCaller{contract: contract}, ConnectorErrorsTransactor: ConnectorErrorsTransactor{contract: contract}, ConnectorErrorsFilterer: ConnectorErrorsFilterer{contract: contract}}, nil +} + +// NewConnectorErrorsCaller creates a new read-only instance of ConnectorErrors, bound to a specific deployed contract. +func NewConnectorErrorsCaller(address common.Address, caller bind.ContractCaller) (*ConnectorErrorsCaller, error) { + contract, err := bindConnectorErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ConnectorErrorsCaller{contract: contract}, nil +} + +// NewConnectorErrorsTransactor creates a new write-only instance of ConnectorErrors, bound to a specific deployed contract. +func NewConnectorErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ConnectorErrorsTransactor, error) { + contract, err := bindConnectorErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ConnectorErrorsTransactor{contract: contract}, nil +} + +// NewConnectorErrorsFilterer creates a new log filterer instance of ConnectorErrors, bound to a specific deployed contract. +func NewConnectorErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ConnectorErrorsFilterer, error) { + contract, err := bindConnectorErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ConnectorErrorsFilterer{contract: contract}, nil +} + +// bindConnectorErrors binds a generic wrapper to an already deployed contract. +func bindConnectorErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ConnectorErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ConnectorErrors *ConnectorErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConnectorErrors.Contract.ConnectorErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ConnectorErrors *ConnectorErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConnectorErrors.Contract.ConnectorErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConnectorErrors *ConnectorErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConnectorErrors.Contract.ConnectorErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ConnectorErrors *ConnectorErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConnectorErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ConnectorErrors *ConnectorErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConnectorErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConnectorErrors *ConnectorErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConnectorErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go b/v1/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go new file mode 100644 index 00000000..b2b26337 --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetaerrors.sol/zetaerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaerrors + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaErrorsMetaData contains all meta data concerning the ZetaErrors contract. +var ZetaErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"}]", +} + +// ZetaErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaErrorsMetaData.ABI instead. +var ZetaErrorsABI = ZetaErrorsMetaData.ABI + +// ZetaErrors is an auto generated Go binding around an Ethereum contract. +type ZetaErrors struct { + ZetaErrorsCaller // Read-only binding to the contract + ZetaErrorsTransactor // Write-only binding to the contract + ZetaErrorsFilterer // Log filterer for contract events +} + +// ZetaErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaErrorsSession struct { + Contract *ZetaErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaErrorsCallerSession struct { + Contract *ZetaErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaErrorsTransactorSession struct { + Contract *ZetaErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaErrorsRaw struct { + Contract *ZetaErrors // Generic contract binding to access the raw methods on +} + +// ZetaErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaErrorsCallerRaw struct { + Contract *ZetaErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaErrorsTransactorRaw struct { + Contract *ZetaErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaErrors creates a new instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrors(address common.Address, backend bind.ContractBackend) (*ZetaErrors, error) { + contract, err := bindZetaErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaErrors{ZetaErrorsCaller: ZetaErrorsCaller{contract: contract}, ZetaErrorsTransactor: ZetaErrorsTransactor{contract: contract}, ZetaErrorsFilterer: ZetaErrorsFilterer{contract: contract}}, nil +} + +// NewZetaErrorsCaller creates a new read-only instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaErrorsCaller, error) { + contract, err := bindZetaErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaErrorsCaller{contract: contract}, nil +} + +// NewZetaErrorsTransactor creates a new write-only instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaErrorsTransactor, error) { + contract, err := bindZetaErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaErrorsTransactor{contract: contract}, nil +} + +// NewZetaErrorsFilterer creates a new log filterer instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaErrorsFilterer, error) { + contract, err := bindZetaErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaErrorsFilterer{contract: contract}, nil +} + +// bindZetaErrors binds a generic wrapper to an already deployed contract. +func bindZetaErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaErrors *ZetaErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaErrors.Contract.ZetaErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaErrors *ZetaErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaErrors *ZetaErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaErrors *ZetaErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaErrors *ZetaErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaErrors *ZetaErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go b/v1/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go new file mode 100644 index 00000000..d410cfe7 --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainteractorerrors.sol/zetainteractorerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainteractorerrors + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInteractorErrorsMetaData contains all meta data concerning the ZetaInteractorErrors contract. +var ZetaInteractorErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"}]", +} + +// ZetaInteractorErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaInteractorErrorsMetaData.ABI instead. +var ZetaInteractorErrorsABI = ZetaInteractorErrorsMetaData.ABI + +// ZetaInteractorErrors is an auto generated Go binding around an Ethereum contract. +type ZetaInteractorErrors struct { + ZetaInteractorErrorsCaller // Read-only binding to the contract + ZetaInteractorErrorsTransactor // Write-only binding to the contract + ZetaInteractorErrorsFilterer // Log filterer for contract events +} + +// ZetaInteractorErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaInteractorErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaInteractorErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaInteractorErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaInteractorErrorsSession struct { + Contract *ZetaInteractorErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaInteractorErrorsCallerSession struct { + Contract *ZetaInteractorErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaInteractorErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaInteractorErrorsTransactorSession struct { + Contract *ZetaInteractorErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaInteractorErrorsRaw struct { + Contract *ZetaInteractorErrors // Generic contract binding to access the raw methods on +} + +// ZetaInteractorErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaInteractorErrorsCallerRaw struct { + Contract *ZetaInteractorErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaInteractorErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaInteractorErrorsTransactorRaw struct { + Contract *ZetaInteractorErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaInteractorErrors creates a new instance of ZetaInteractorErrors, bound to a specific deployed contract. +func NewZetaInteractorErrors(address common.Address, backend bind.ContractBackend) (*ZetaInteractorErrors, error) { + contract, err := bindZetaInteractorErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaInteractorErrors{ZetaInteractorErrorsCaller: ZetaInteractorErrorsCaller{contract: contract}, ZetaInteractorErrorsTransactor: ZetaInteractorErrorsTransactor{contract: contract}, ZetaInteractorErrorsFilterer: ZetaInteractorErrorsFilterer{contract: contract}}, nil +} + +// NewZetaInteractorErrorsCaller creates a new read-only instance of ZetaInteractorErrors, bound to a specific deployed contract. +func NewZetaInteractorErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorErrorsCaller, error) { + contract, err := bindZetaInteractorErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorErrorsCaller{contract: contract}, nil +} + +// NewZetaInteractorErrorsTransactor creates a new write-only instance of ZetaInteractorErrors, bound to a specific deployed contract. +func NewZetaInteractorErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorErrorsTransactor, error) { + contract, err := bindZetaInteractorErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorErrorsTransactor{contract: contract}, nil +} + +// NewZetaInteractorErrorsFilterer creates a new log filterer instance of ZetaInteractorErrors, bound to a specific deployed contract. +func NewZetaInteractorErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorErrorsFilterer, error) { + contract, err := bindZetaInteractorErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaInteractorErrorsFilterer{contract: contract}, nil +} + +// bindZetaInteractorErrors binds a generic wrapper to an already deployed contract. +func bindZetaInteractorErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaInteractorErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractorErrors *ZetaInteractorErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractorErrors.Contract.ZetaInteractorErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractorErrors *ZetaInteractorErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractorErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractorErrors *ZetaInteractorErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractorErrors *ZetaInteractorErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractorErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go new file mode 100644 index 00000000..3560d1bc --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetacommonerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainterfaces + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaCommonErrorsMetaData contains all meta data concerning the ZetaCommonErrors contract. +var ZetaCommonErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"}]", +} + +// ZetaCommonErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaCommonErrorsMetaData.ABI instead. +var ZetaCommonErrorsABI = ZetaCommonErrorsMetaData.ABI + +// ZetaCommonErrors is an auto generated Go binding around an Ethereum contract. +type ZetaCommonErrors struct { + ZetaCommonErrorsCaller // Read-only binding to the contract + ZetaCommonErrorsTransactor // Write-only binding to the contract + ZetaCommonErrorsFilterer // Log filterer for contract events +} + +// ZetaCommonErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaCommonErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaCommonErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaCommonErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaCommonErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaCommonErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaCommonErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaCommonErrorsSession struct { + Contract *ZetaCommonErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaCommonErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaCommonErrorsCallerSession struct { + Contract *ZetaCommonErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaCommonErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaCommonErrorsTransactorSession struct { + Contract *ZetaCommonErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaCommonErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaCommonErrorsRaw struct { + Contract *ZetaCommonErrors // Generic contract binding to access the raw methods on +} + +// ZetaCommonErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaCommonErrorsCallerRaw struct { + Contract *ZetaCommonErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaCommonErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaCommonErrorsTransactorRaw struct { + Contract *ZetaCommonErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaCommonErrors creates a new instance of ZetaCommonErrors, bound to a specific deployed contract. +func NewZetaCommonErrors(address common.Address, backend bind.ContractBackend) (*ZetaCommonErrors, error) { + contract, err := bindZetaCommonErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaCommonErrors{ZetaCommonErrorsCaller: ZetaCommonErrorsCaller{contract: contract}, ZetaCommonErrorsTransactor: ZetaCommonErrorsTransactor{contract: contract}, ZetaCommonErrorsFilterer: ZetaCommonErrorsFilterer{contract: contract}}, nil +} + +// NewZetaCommonErrorsCaller creates a new read-only instance of ZetaCommonErrors, bound to a specific deployed contract. +func NewZetaCommonErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaCommonErrorsCaller, error) { + contract, err := bindZetaCommonErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaCommonErrorsCaller{contract: contract}, nil +} + +// NewZetaCommonErrorsTransactor creates a new write-only instance of ZetaCommonErrors, bound to a specific deployed contract. +func NewZetaCommonErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaCommonErrorsTransactor, error) { + contract, err := bindZetaCommonErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaCommonErrorsTransactor{contract: contract}, nil +} + +// NewZetaCommonErrorsFilterer creates a new log filterer instance of ZetaCommonErrors, bound to a specific deployed contract. +func NewZetaCommonErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaCommonErrorsFilterer, error) { + contract, err := bindZetaCommonErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaCommonErrorsFilterer{contract: contract}, nil +} + +// bindZetaCommonErrors binds a generic wrapper to an already deployed contract. +func bindZetaCommonErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaCommonErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaCommonErrors.Contract.ZetaCommonErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaCommonErrors.Contract.ZetaCommonErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaCommonErrors *ZetaCommonErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaCommonErrors.Contract.ZetaCommonErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaCommonErrors *ZetaCommonErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaCommonErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaCommonErrors *ZetaCommonErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaCommonErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaCommonErrors *ZetaCommonErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaCommonErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go new file mode 100644 index 00000000..f894d6e5 --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetaconnector.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainterfaces + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesSendInput struct { + DestinationChainId *big.Int + DestinationAddress []byte + DestinationGasLimit *big.Int + Message []byte + ZetaValueAndGas *big.Int + ZetaParams []byte +} + +// ZetaConnectorMetaData contains all meta data concerning the ZetaConnector contract. +var ZetaConnectorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZetaConnectorABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorMetaData.ABI instead. +var ZetaConnectorABI = ZetaConnectorMetaData.ABI + +// ZetaConnector is an auto generated Go binding around an Ethereum contract. +type ZetaConnector struct { + ZetaConnectorCaller // Read-only binding to the contract + ZetaConnectorTransactor // Write-only binding to the contract + ZetaConnectorFilterer // Log filterer for contract events +} + +// ZetaConnectorCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorSession struct { + Contract *ZetaConnector // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorCallerSession struct { + Contract *ZetaConnectorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorTransactorSession struct { + Contract *ZetaConnectorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorRaw struct { + Contract *ZetaConnector // Generic contract binding to access the raw methods on +} + +// ZetaConnectorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorCallerRaw struct { + Contract *ZetaConnectorCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorTransactorRaw struct { + Contract *ZetaConnectorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnector creates a new instance of ZetaConnector, bound to a specific deployed contract. +func NewZetaConnector(address common.Address, backend bind.ContractBackend) (*ZetaConnector, error) { + contract, err := bindZetaConnector(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnector{ZetaConnectorCaller: ZetaConnectorCaller{contract: contract}, ZetaConnectorTransactor: ZetaConnectorTransactor{contract: contract}, ZetaConnectorFilterer: ZetaConnectorFilterer{contract: contract}}, nil +} + +// NewZetaConnectorCaller creates a new read-only instance of ZetaConnector, bound to a specific deployed contract. +func NewZetaConnectorCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorCaller, error) { + contract, err := bindZetaConnector(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorCaller{contract: contract}, nil +} + +// NewZetaConnectorTransactor creates a new write-only instance of ZetaConnector, bound to a specific deployed contract. +func NewZetaConnectorTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorTransactor, error) { + contract, err := bindZetaConnector(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorTransactor{contract: contract}, nil +} + +// NewZetaConnectorFilterer creates a new log filterer instance of ZetaConnector, bound to a specific deployed contract. +func NewZetaConnectorFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorFilterer, error) { + contract, err := bindZetaConnector(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorFilterer{contract: contract}, nil +} + +// bindZetaConnector binds a generic wrapper to an already deployed contract. +func bindZetaConnector(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnector *ZetaConnectorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnector.Contract.ZetaConnectorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnector *ZetaConnectorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnector.Contract.ZetaConnectorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnector *ZetaConnectorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnector.Contract.ZetaConnectorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnector *ZetaConnectorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnector.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnector *ZetaConnectorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnector.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnector *ZetaConnectorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnector.Contract.contract.Transact(opts, method, params...) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnector *ZetaConnectorTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnector.contract.Transact(opts, "send", input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnector *ZetaConnectorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnector.Contract.Send(&_ZetaConnector.TransactOpts, input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnector *ZetaConnectorTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnector.Contract.Send(&_ZetaConnector.TransactOpts, input) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go new file mode 100644 index 00000000..fe6eef5b --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetainterfaces.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainterfaces + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesMetaData contains all meta data concerning the ZetaInterfaces contract. +var ZetaInterfacesMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ZetaInterfacesABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaInterfacesMetaData.ABI instead. +var ZetaInterfacesABI = ZetaInterfacesMetaData.ABI + +// ZetaInterfaces is an auto generated Go binding around an Ethereum contract. +type ZetaInterfaces struct { + ZetaInterfacesCaller // Read-only binding to the contract + ZetaInterfacesTransactor // Write-only binding to the contract + ZetaInterfacesFilterer // Log filterer for contract events +} + +// ZetaInterfacesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaInterfacesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaInterfacesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaInterfacesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaInterfacesSession struct { + Contract *ZetaInterfaces // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInterfacesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaInterfacesCallerSession struct { + Contract *ZetaInterfacesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaInterfacesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaInterfacesTransactorSession struct { + Contract *ZetaInterfacesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInterfacesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaInterfacesRaw struct { + Contract *ZetaInterfaces // Generic contract binding to access the raw methods on +} + +// ZetaInterfacesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaInterfacesCallerRaw struct { + Contract *ZetaInterfacesCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaInterfacesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaInterfacesTransactorRaw struct { + Contract *ZetaInterfacesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaInterfaces creates a new instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfaces(address common.Address, backend bind.ContractBackend) (*ZetaInterfaces, error) { + contract, err := bindZetaInterfaces(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaInterfaces{ZetaInterfacesCaller: ZetaInterfacesCaller{contract: contract}, ZetaInterfacesTransactor: ZetaInterfacesTransactor{contract: contract}, ZetaInterfacesFilterer: ZetaInterfacesFilterer{contract: contract}}, nil +} + +// NewZetaInterfacesCaller creates a new read-only instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesCaller(address common.Address, caller bind.ContractCaller) (*ZetaInterfacesCaller, error) { + contract, err := bindZetaInterfaces(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaInterfacesCaller{contract: contract}, nil +} + +// NewZetaInterfacesTransactor creates a new write-only instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInterfacesTransactor, error) { + contract, err := bindZetaInterfaces(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaInterfacesTransactor{contract: contract}, nil +} + +// NewZetaInterfacesFilterer creates a new log filterer instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInterfacesFilterer, error) { + contract, err := bindZetaInterfaces(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaInterfacesFilterer{contract: contract}, nil +} + +// bindZetaInterfaces binds a generic wrapper to an already deployed contract. +func bindZetaInterfaces(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaInterfacesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInterfaces *ZetaInterfacesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInterfaces.Contract.ZetaInterfacesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInterfaces *ZetaInterfacesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInterfaces *ZetaInterfacesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInterfaces *ZetaInterfacesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInterfaces.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go new file mode 100644 index 00000000..20dbd4ca --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetareceiver.go @@ -0,0 +1,242 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainterfaces + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaMessage struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte +} + +// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaRevert struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationAddress []byte + DestinationChainId *big.Int + RemainingZetaValue *big.Int + Message []byte +} + +// ZetaReceiverMetaData contains all meta data concerning the ZetaReceiver contract. +var ZetaReceiverMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZetaReceiverABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaReceiverMetaData.ABI instead. +var ZetaReceiverABI = ZetaReceiverMetaData.ABI + +// ZetaReceiver is an auto generated Go binding around an Ethereum contract. +type ZetaReceiver struct { + ZetaReceiverCaller // Read-only binding to the contract + ZetaReceiverTransactor // Write-only binding to the contract + ZetaReceiverFilterer // Log filterer for contract events +} + +// ZetaReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaReceiverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaReceiverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaReceiverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaReceiverSession struct { + Contract *ZetaReceiver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaReceiverCallerSession struct { + Contract *ZetaReceiverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaReceiverTransactorSession struct { + Contract *ZetaReceiverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaReceiverRaw struct { + Contract *ZetaReceiver // Generic contract binding to access the raw methods on +} + +// ZetaReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaReceiverCallerRaw struct { + Contract *ZetaReceiverCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaReceiverTransactorRaw struct { + Contract *ZetaReceiverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaReceiver creates a new instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiver(address common.Address, backend bind.ContractBackend) (*ZetaReceiver, error) { + contract, err := bindZetaReceiver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaReceiver{ZetaReceiverCaller: ZetaReceiverCaller{contract: contract}, ZetaReceiverTransactor: ZetaReceiverTransactor{contract: contract}, ZetaReceiverFilterer: ZetaReceiverFilterer{contract: contract}}, nil +} + +// NewZetaReceiverCaller creates a new read-only instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverCaller, error) { + contract, err := bindZetaReceiver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverCaller{contract: contract}, nil +} + +// NewZetaReceiverTransactor creates a new write-only instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverTransactor, error) { + contract, err := bindZetaReceiver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverTransactor{contract: contract}, nil +} + +// NewZetaReceiverFilterer creates a new log filterer instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverFilterer, error) { + contract, err := bindZetaReceiver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaReceiverFilterer{contract: contract}, nil +} + +// bindZetaReceiver binds a generic wrapper to an already deployed contract. +func bindZetaReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaReceiverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiver *ZetaReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiver.Contract.ZetaReceiverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiver *ZetaReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiver *ZetaReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiver *ZetaReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiver.Contract.contract.Transact(opts, method, params...) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.contract.Transact(opts, "onZetaMessage", zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.contract.Transact(opts, "onZetaRevert", zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) +} diff --git a/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go new file mode 100644 index 00000000..5a1a03a8 --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetainterfaces.sol/zetatokenconsumer.go @@ -0,0 +1,838 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainterfaces + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerMetaData contains all meta data concerning the ZetaTokenConsumer contract. +var ZetaTokenConsumerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// ZetaTokenConsumerABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerMetaData.ABI instead. +var ZetaTokenConsumerABI = ZetaTokenConsumerMetaData.ABI + +// ZetaTokenConsumer is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumer struct { + ZetaTokenConsumerCaller // Read-only binding to the contract + ZetaTokenConsumerTransactor // Write-only binding to the contract + ZetaTokenConsumerFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerSession struct { + Contract *ZetaTokenConsumer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerCallerSession struct { + Contract *ZetaTokenConsumerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerTransactorSession struct { + Contract *ZetaTokenConsumerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerRaw struct { + Contract *ZetaTokenConsumer // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerCallerRaw struct { + Contract *ZetaTokenConsumerCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTransactorRaw struct { + Contract *ZetaTokenConsumerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumer creates a new instance of ZetaTokenConsumer, bound to a specific deployed contract. +func NewZetaTokenConsumer(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumer, error) { + contract, err := bindZetaTokenConsumer(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumer{ZetaTokenConsumerCaller: ZetaTokenConsumerCaller{contract: contract}, ZetaTokenConsumerTransactor: ZetaTokenConsumerTransactor{contract: contract}, ZetaTokenConsumerFilterer: ZetaTokenConsumerFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerCaller creates a new read-only instance of ZetaTokenConsumer, bound to a specific deployed contract. +func NewZetaTokenConsumerCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerCaller, error) { + contract, err := bindZetaTokenConsumer(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerTransactor creates a new write-only instance of ZetaTokenConsumer, bound to a specific deployed contract. +func NewZetaTokenConsumerTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTransactor, error) { + contract, err := bindZetaTokenConsumer(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerFilterer creates a new log filterer instance of ZetaTokenConsumer, bound to a specific deployed contract. +func NewZetaTokenConsumerFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerFilterer, error) { + contract, err := bindZetaTokenConsumer(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumer binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumer.Contract.ZetaTokenConsumerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.ZetaTokenConsumerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumer *ZetaTokenConsumerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.ZetaTokenConsumerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumer *ZetaTokenConsumerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumer.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.contract.Transact(opts, method, params...) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumer *ZetaTokenConsumerCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumer.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumer *ZetaTokenConsumerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumer *ZetaTokenConsumerCallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumer.Contract.HasZetaLiquidity(&_ZetaTokenConsumer.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetEthFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetEthFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetTokenFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetTokenFromZeta(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetZetaFromEth(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetZetaFromEth(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetZetaFromToken(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumer *ZetaTokenConsumerTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumer.Contract.GetZetaFromToken(&_ZetaTokenConsumer.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// ZetaTokenConsumerEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerEthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerEthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerEthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerEthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerEthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerEthExchangedForZetaIterator{contract: _ZetaTokenConsumer.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerEthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerEthExchangedForZeta) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerEthExchangedForZeta, error) { + event := new(ZetaTokenConsumerEthExchangedForZeta) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerTokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerTokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerTokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTokenExchangedForZetaIterator{contract: _ZetaTokenConsumer.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerTokenExchangedForZeta) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerTokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerTokenExchangedForZeta) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZetaExchangedForEthIterator{contract: _ZetaTokenConsumer.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZetaExchangedForEth) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerZetaExchangedForEth) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumer contract. +type ZetaTokenConsumerZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZetaExchangedForTokenIterator{contract: _ZetaTokenConsumer.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumer.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZetaExchangedForToken) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumer *ZetaTokenConsumerFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerZetaExchangedForToken) + if err := _ZetaTokenConsumer.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go b/v1/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go new file mode 100644 index 00000000..7c55c86b --- /dev/null +++ b/v1/pkg/contracts/evm/interfaces/zetanonethinterface.sol/zetanonethinterface.go @@ -0,0 +1,687 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetanonethinterface + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaNonEthInterfaceMetaData contains all meta data concerning the ZetaNonEthInterface contract. +var ZetaNonEthInterfaceMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZetaNonEthInterfaceABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaNonEthInterfaceMetaData.ABI instead. +var ZetaNonEthInterfaceABI = ZetaNonEthInterfaceMetaData.ABI + +// ZetaNonEthInterface is an auto generated Go binding around an Ethereum contract. +type ZetaNonEthInterface struct { + ZetaNonEthInterfaceCaller // Read-only binding to the contract + ZetaNonEthInterfaceTransactor // Write-only binding to the contract + ZetaNonEthInterfaceFilterer // Log filterer for contract events +} + +// ZetaNonEthInterfaceCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaNonEthInterfaceFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaNonEthInterfaceSession struct { + Contract *ZetaNonEthInterface // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthInterfaceCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaNonEthInterfaceCallerSession struct { + Contract *ZetaNonEthInterfaceCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaNonEthInterfaceTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaNonEthInterfaceTransactorSession struct { + Contract *ZetaNonEthInterfaceTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthInterfaceRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaNonEthInterfaceRaw struct { + Contract *ZetaNonEthInterface // Generic contract binding to access the raw methods on +} + +// ZetaNonEthInterfaceCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceCallerRaw struct { + Contract *ZetaNonEthInterfaceCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaNonEthInterfaceTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceTransactorRaw struct { + Contract *ZetaNonEthInterfaceTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaNonEthInterface creates a new instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterface(address common.Address, backend bind.ContractBackend) (*ZetaNonEthInterface, error) { + contract, err := bindZetaNonEthInterface(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaNonEthInterface{ZetaNonEthInterfaceCaller: ZetaNonEthInterfaceCaller{contract: contract}, ZetaNonEthInterfaceTransactor: ZetaNonEthInterfaceTransactor{contract: contract}, ZetaNonEthInterfaceFilterer: ZetaNonEthInterfaceFilterer{contract: contract}}, nil +} + +// NewZetaNonEthInterfaceCaller creates a new read-only instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthInterfaceCaller, error) { + contract, err := bindZetaNonEthInterface(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceCaller{contract: contract}, nil +} + +// NewZetaNonEthInterfaceTransactor creates a new write-only instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthInterfaceTransactor, error) { + contract, err := bindZetaNonEthInterface(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceTransactor{contract: contract}, nil +} + +// NewZetaNonEthInterfaceFilterer creates a new log filterer instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthInterfaceFilterer, error) { + contract, err := bindZetaNonEthInterface(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceFilterer{contract: contract}, nil +} + +// bindZetaNonEthInterface binds a generic wrapper to an already deployed contract. +func bindZetaNonEthInterface(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaNonEthInterfaceMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEthInterface.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "mint", mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, amount) +} + +// ZetaNonEthInterfaceApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceApprovalIterator struct { + Event *ZetaNonEthInterfaceApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthInterfaceApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthInterfaceApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthInterfaceApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthInterfaceApproval represents a Approval event raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthInterfaceApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceApprovalIterator{contract: _ZetaNonEthInterface.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthInterfaceApproval) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseApproval(log types.Log) (*ZetaNonEthInterfaceApproval, error) { + event := new(ZetaNonEthInterfaceApproval) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthInterfaceTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceTransferIterator struct { + Event *ZetaNonEthInterfaceTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthInterfaceTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthInterfaceTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthInterfaceTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthInterfaceTransfer represents a Transfer event raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthInterfaceTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceTransferIterator{contract: _ZetaNonEthInterface.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthInterfaceTransfer) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseTransfer(log types.Log) (*ZetaNonEthInterfaceTransfer, error) { + event := new(ZetaNonEthInterfaceTransfer) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go b/v1/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go new file mode 100644 index 00000000..7c7840ec --- /dev/null +++ b/v1/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go @@ -0,0 +1,318 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package attackercontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AttackerContractMetaData contains all meta data concerning the AttackerContract contract. +var AttackerContractMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"victimContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wzeta\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"victimMethod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"victimContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620009ae380380620009ae8339818101604052810190620000379190620001a0565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620000f492919062000250565b602060405180830381600087803b1580156200010f57600080fd5b505af115801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620001fc565b50806001819055505050506200031a565b6000815190506200016c81620002cc565b92915050565b6000815190506200018381620002e6565b92915050565b6000815190506200019a8162000300565b92915050565b600080600060608486031215620001bc57620001bb620002c7565b5b6000620001cc868287016200015b565b9350506020620001df868287016200015b565b9250506040620001f28682870162000189565b9150509250925092565b600060208284031215620002155762000214620002c7565b5b6000620002258482850162000172565b91505092915050565b62000239816200027d565b82525050565b6200024a81620002bd565b82525050565b60006040820190506200026760008301856200022e565b6200027660208301846200023f565b9392505050565b60006200028a826200029d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b620002d7816200027d565b8114620002e357600080fd5b50565b620002f18162000291565b8114620002fd57600080fd5b50565b6200030b81620002bd565b81146200031757600080fd5b50565b610684806200032a6000396000f3fe6080604052600436106100435760003560e01c806323b872dd1461004f57806370a082311461008c57806389bc0bb7146100c9578063a9059cbb146100f45761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100766004803603810190610071919061034c565b610131565b60405161008391906104b3565b60405180910390f35b34801561009857600080fd5b506100b360048036038101906100ae919061031f565b610146565b6040516100c0919061051d565b60405180910390f35b3480156100d557600080fd5b506100de610159565b6040516100eb9190610461565b60405180910390f35b34801561010057600080fd5b5061011b6004803603810190610116919061039f565b61017d565b60405161012891906104b3565b60405180910390f35b600061013b610191565b600190509392505050565b6000610150610191565b60009050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610187610191565b6001905092915050565b6001805414156101a8576101a36101bf565b6101bd565b600260015414156101bc576101bb61024f565b5b5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e609055e3060006040518363ffffffff1660e01b815260040161021b9291906104ce565b600060405180830381600087803b15801561023557600080fd5b505af1158015610249573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9caed1273f39fd6e51aad88f6f4ce6ab8827279cfffb922663060006040518463ffffffff1660e01b81526004016102c19392919061047c565b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b50505050565b60008135905061030481610620565b92915050565b60008135905061031981610637565b92915050565b600060208284031215610335576103346105a3565b5b6000610343848285016102f5565b91505092915050565b600080600060608486031215610365576103646105a3565b5b6000610373868287016102f5565b9350506020610384868287016102f5565b92505060406103958682870161030a565b9150509250925092565b600080604083850312156103b6576103b56105a3565b5b60006103c4858286016102f5565b92505060206103d58582860161030a565b9150509250929050565b6103e881610549565b82525050565b6103f78161055b565b82525050565b61040681610591565b82525050565b6000610419600483610538565b9150610424826105a8565b602082019050919050565b600061043c602a83610538565b9150610447826105d1565b604082019050919050565b61045b81610587565b82525050565b600060208201905061047660008301846103df565b92915050565b600060608201905061049160008301866103df565b61049e60208301856103df565b6104ab60408301846103fd565b949350505050565b60006020820190506104c860008301846103ee565b92915050565b600060808201905081810360008301526104e78161042f565b90506104f660208301856103df565b61050360408301846103fd565b81810360608301526105148161040c565b90509392505050565b60006020820190506105326000830184610452565b92915050565b600082825260208201905092915050565b600061055482610567565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061059c82610587565b9050919050565b600080fd5b7f3078303000000000000000000000000000000000000000000000000000000000600082015250565b7f307866333946643665353161616438384636463463653661423838323732373960008201527f6366664662393232363600000000000000000000000000000000000000000000602082015250565b61062981610549565b811461063457600080fd5b50565b61064081610587565b811461064b57600080fd5b5056fea264697066735822122075954d652b0eb8d814b91524c47a04c537d638cec0eda3ca0e4ee67767e1a37064736f6c63430008070033", +} + +// AttackerContractABI is the input ABI used to generate the binding from. +// Deprecated: Use AttackerContractMetaData.ABI instead. +var AttackerContractABI = AttackerContractMetaData.ABI + +// AttackerContractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AttackerContractMetaData.Bin instead. +var AttackerContractBin = AttackerContractMetaData.Bin + +// DeployAttackerContract deploys a new Ethereum contract, binding an instance of AttackerContract to it. +func DeployAttackerContract(auth *bind.TransactOpts, backend bind.ContractBackend, victimContractAddress_ common.Address, wzeta common.Address, victimMethod *big.Int) (common.Address, *types.Transaction, *AttackerContract, error) { + parsed, err := AttackerContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AttackerContractBin), backend, victimContractAddress_, wzeta, victimMethod) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil +} + +// AttackerContract is an auto generated Go binding around an Ethereum contract. +type AttackerContract struct { + AttackerContractCaller // Read-only binding to the contract + AttackerContractTransactor // Write-only binding to the contract + AttackerContractFilterer // Log filterer for contract events +} + +// AttackerContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type AttackerContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AttackerContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AttackerContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AttackerContractSession struct { + Contract *AttackerContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AttackerContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AttackerContractCallerSession struct { + Contract *AttackerContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AttackerContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AttackerContractTransactorSession struct { + Contract *AttackerContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AttackerContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type AttackerContractRaw struct { + Contract *AttackerContract // Generic contract binding to access the raw methods on +} + +// AttackerContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AttackerContractCallerRaw struct { + Contract *AttackerContractCaller // Generic read-only contract binding to access the raw methods on +} + +// AttackerContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AttackerContractTransactorRaw struct { + Contract *AttackerContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAttackerContract creates a new instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContract(address common.Address, backend bind.ContractBackend) (*AttackerContract, error) { + contract, err := bindAttackerContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil +} + +// NewAttackerContractCaller creates a new read-only instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractCaller(address common.Address, caller bind.ContractCaller) (*AttackerContractCaller, error) { + contract, err := bindAttackerContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AttackerContractCaller{contract: contract}, nil +} + +// NewAttackerContractTransactor creates a new write-only instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractTransactor(address common.Address, transactor bind.ContractTransactor) (*AttackerContractTransactor, error) { + contract, err := bindAttackerContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AttackerContractTransactor{contract: contract}, nil +} + +// NewAttackerContractFilterer creates a new log filterer instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractFilterer(address common.Address, filterer bind.ContractFilterer) (*AttackerContractFilterer, error) { + contract, err := bindAttackerContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AttackerContractFilterer{contract: contract}, nil +} + +// bindAttackerContract binds a generic wrapper to an already deployed contract. +func bindAttackerContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AttackerContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AttackerContract *AttackerContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AttackerContract.Contract.AttackerContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AttackerContract *AttackerContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.Contract.AttackerContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AttackerContract *AttackerContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AttackerContract.Contract.AttackerContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AttackerContract *AttackerContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AttackerContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AttackerContract *AttackerContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AttackerContract *AttackerContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AttackerContract.Contract.contract.Transact(opts, method, params...) +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractCaller) VictimContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AttackerContract.contract.Call(opts, &out, "victimContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractSession) VictimContractAddress() (common.Address, error) { + return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractCallerSession) VictimContractAddress() (common.Address, error) { + return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractTransactor) BalanceOf(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "balanceOf", account) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractSession) BalanceOf(account common.Address) (*types.Transaction, error) { + return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractTransactorSession) BalanceOf(account common.Address) (*types.Transaction, error) { + return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractSession) Receive() (*types.Transaction, error) { + return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractTransactorSession) Receive() (*types.Transaction, error) { + return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) +} diff --git a/v1/pkg/contracts/evm/testing/attackercontract.sol/victim.go b/v1/pkg/contracts/evm/testing/attackercontract.sol/victim.go new file mode 100644 index 00000000..1aa58727 --- /dev/null +++ b/v1/pkg/contracts/evm/testing/attackercontract.sol/victim.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package attackercontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// VictimMetaData contains all meta data concerning the Victim contract. +var VictimMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// VictimABI is the input ABI used to generate the binding from. +// Deprecated: Use VictimMetaData.ABI instead. +var VictimABI = VictimMetaData.ABI + +// Victim is an auto generated Go binding around an Ethereum contract. +type Victim struct { + VictimCaller // Read-only binding to the contract + VictimTransactor // Write-only binding to the contract + VictimFilterer // Log filterer for contract events +} + +// VictimCaller is an auto generated read-only Go binding around an Ethereum contract. +type VictimCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VictimTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VictimFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VictimSession struct { + Contract *Victim // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VictimCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VictimCallerSession struct { + Contract *VictimCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VictimTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VictimTransactorSession struct { + Contract *VictimTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VictimRaw is an auto generated low-level Go binding around an Ethereum contract. +type VictimRaw struct { + Contract *Victim // Generic contract binding to access the raw methods on +} + +// VictimCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VictimCallerRaw struct { + Contract *VictimCaller // Generic read-only contract binding to access the raw methods on +} + +// VictimTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VictimTransactorRaw struct { + Contract *VictimTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVictim creates a new instance of Victim, bound to a specific deployed contract. +func NewVictim(address common.Address, backend bind.ContractBackend) (*Victim, error) { + contract, err := bindVictim(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Victim{VictimCaller: VictimCaller{contract: contract}, VictimTransactor: VictimTransactor{contract: contract}, VictimFilterer: VictimFilterer{contract: contract}}, nil +} + +// NewVictimCaller creates a new read-only instance of Victim, bound to a specific deployed contract. +func NewVictimCaller(address common.Address, caller bind.ContractCaller) (*VictimCaller, error) { + contract, err := bindVictim(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VictimCaller{contract: contract}, nil +} + +// NewVictimTransactor creates a new write-only instance of Victim, bound to a specific deployed contract. +func NewVictimTransactor(address common.Address, transactor bind.ContractTransactor) (*VictimTransactor, error) { + contract, err := bindVictim(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VictimTransactor{contract: contract}, nil +} + +// NewVictimFilterer creates a new log filterer instance of Victim, bound to a specific deployed contract. +func NewVictimFilterer(address common.Address, filterer bind.ContractFilterer) (*VictimFilterer, error) { + contract, err := bindVictim(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VictimFilterer{contract: contract}, nil +} + +// bindVictim binds a generic wrapper to an already deployed contract. +func bindVictim(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VictimMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Victim *VictimRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Victim.Contract.VictimCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Victim *VictimRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Victim.Contract.VictimTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Victim *VictimRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Victim.Contract.VictimTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Victim *VictimCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Victim.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Victim *VictimTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Victim.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Victim *VictimTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Victim.Contract.contract.Transact(opts, method, params...) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimTransactor) Deposit(opts *bind.TransactOpts, recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.contract.Transact(opts, "deposit", recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimTransactorSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.contract.Transact(opts, "withdraw", recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimTransactorSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) +} diff --git a/v1/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go b/v1/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go new file mode 100644 index 00000000..cd791a51 --- /dev/null +++ b/v1/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go @@ -0,0 +1,802 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20mock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20MockMetaData contains all meta data concerning the ERC20Mock contract. +var ERC20MockMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001beb38038062001beb833981810160405281019062000037919062000393565b838381600390805190602001906200005192919062000237565b5080600490805190602001906200006a92919062000237565b505050620000ac8262000082620000b660201b60201c565b60ff16600a620000939190620005e2565b83620000a091906200071f565b620000bf60201b60201c565b505050506200097c565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000129906200047b565b60405180910390fd5b62000146600083836200022d60201b60201c565b80600260008282546200015a91906200052a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200020d91906200049d565b60405180910390a362000229600083836200023260201b60201c565b5050565b505050565b505050565b8280546200024590620007f4565b90600052602060002090601f016020900481019282620002695760008555620002b5565b82601f106200028457805160ff1916838001178555620002b5565b82800160010185558215620002b5579182015b82811115620002b457825182559160200191906001019062000297565b5b509050620002c49190620002c8565b5090565b5b80821115620002e3576000816000905550600101620002c9565b5090565b6000620002fe620002f884620004e3565b620004ba565b9050828152602081018484840111156200031d576200031c620008f2565b5b6200032a848285620007be565b509392505050565b600081519050620003438162000948565b92915050565b600082601f830112620003615762000360620008ed565b5b815162000373848260208601620002e7565b91505092915050565b6000815190506200038d8162000962565b92915050565b60008060008060808587031215620003b057620003af620008fc565b5b600085015167ffffffffffffffff811115620003d157620003d0620008f7565b5b620003df8782880162000349565b945050602085015167ffffffffffffffff811115620004035762000402620008f7565b5b620004118782880162000349565b9350506040620004248782880162000332565b925050606062000437878288016200037c565b91505092959194509250565b600062000452601f8362000519565b91506200045f826200091f565b602082019050919050565b6200047581620007b4565b82525050565b60006020820190508181036000830152620004968162000443565b9050919050565b6000602082019050620004b460008301846200046a565b92915050565b6000620004c6620004d9565b9050620004d482826200082a565b919050565b6000604051905090565b600067ffffffffffffffff821115620005015762000500620008be565b5b6200050c8262000901565b9050602081019050919050565b600082825260208201905092915050565b60006200053782620007b4565b91506200054483620007b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200057c576200057b62000860565b5b828201905092915050565b6000808291508390505b6001851115620005d957808604811115620005b157620005b062000860565b5b6001851615620005c15780820291505b8081029050620005d18562000912565b945062000591565b94509492505050565b6000620005ef82620007b4565b9150620005fc83620007b4565b92506200062b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000633565b905092915050565b60008262000645576001905062000718565b8162000655576000905062000718565b81600181146200066e57600281146200067957620006af565b600191505062000718565b60ff8411156200068e576200068d62000860565b5b8360020a915084821115620006a857620006a762000860565b5b5062000718565b5060208310610133831016604e8410600b8410161715620006e95782820a905083811115620006e357620006e262000860565b5b62000718565b620006f8848484600162000587565b9250905081840481111562000712576200071162000860565b5b81810290505b9392505050565b60006200072c82620007b4565b91506200073983620007b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000775576200077462000860565b5b828202905092915050565b60006200078d8262000794565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620007de578082015181840152602081019050620007c1565b83811115620007ee576000848401525b50505050565b600060028204905060018216806200080d57607f821691505b602082108114156200082457620008236200088f565b5b50919050565b620008358262000901565b810181811067ffffffffffffffff82111715620008575762000856620008be565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620009538162000780565b81146200095f57600080fd5b50565b6200096d81620007b4565b81146200097957600080fd5b50565b61125f806200098c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea26469706673582212206e7d4645203c528cb4c5c20b28a6d1615134cd17e709cf6083e931dfc154394964736f6c63430008070033", +} + +// ERC20MockABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MockMetaData.ABI instead. +var ERC20MockABI = ERC20MockMetaData.ABI + +// ERC20MockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20MockMetaData.Bin instead. +var ERC20MockBin = ERC20MockMetaData.Bin + +// DeployERC20Mock deploys a new Ethereum contract, binding an instance of ERC20Mock to it. +func DeployERC20Mock(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ERC20Mock, error) { + parsed, err := ERC20MockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MockBin), backend, name, symbol, creator, initialSupply) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil +} + +// ERC20Mock is an auto generated Go binding around an Ethereum contract. +type ERC20Mock struct { + ERC20MockCaller // Read-only binding to the contract + ERC20MockTransactor // Write-only binding to the contract + ERC20MockFilterer // Log filterer for contract events +} + +// ERC20MockCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20MockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20MockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20MockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20MockSession struct { + Contract *ERC20Mock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20MockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20MockCallerSession struct { + Contract *ERC20MockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20MockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20MockTransactorSession struct { + Contract *ERC20MockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20MockRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20MockRaw struct { + Contract *ERC20Mock // Generic contract binding to access the raw methods on +} + +// ERC20MockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20MockCallerRaw struct { + Contract *ERC20MockCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20MockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20MockTransactorRaw struct { + Contract *ERC20MockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Mock creates a new instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20Mock(address common.Address, backend bind.ContractBackend) (*ERC20Mock, error) { + contract, err := bindERC20Mock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil +} + +// NewERC20MockCaller creates a new read-only instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockCaller(address common.Address, caller bind.ContractCaller) (*ERC20MockCaller, error) { + contract, err := bindERC20Mock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20MockCaller{contract: contract}, nil +} + +// NewERC20MockTransactor creates a new write-only instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MockTransactor, error) { + contract, err := bindERC20Mock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20MockTransactor{contract: contract}, nil +} + +// NewERC20MockFilterer creates a new log filterer instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MockFilterer, error) { + contract, err := bindERC20Mock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20MockFilterer{contract: contract}, nil +} + +// bindERC20Mock binds a generic wrapper to an already deployed contract. +func bindERC20Mock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mock *ERC20MockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mock.Contract.ERC20MockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mock *ERC20MockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mock *ERC20MockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mock *ERC20MockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mock *ERC20MockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mock *ERC20MockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mock.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockSession) Decimals() (uint8, error) { + return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockCallerSession) Decimals() (uint8, error) { + return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockSession) Name() (string, error) { + return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockCallerSession) Name() (string, error) { + return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockSession) Symbol() (string, error) { + return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockCallerSession) Symbol() (string, error) { + return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockSession) TotalSupply() (*big.Int, error) { + return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) +} + +// ERC20MockApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mock contract. +type ERC20MockApprovalIterator struct { + Event *ERC20MockApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MockApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MockApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MockApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MockApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MockApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MockApproval represents a Approval event raised by the ERC20Mock contract. +type ERC20MockApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MockApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20MockApprovalIterator{contract: _ERC20Mock.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MockApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MockApproval) + if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) ParseApproval(log types.Log) (*ERC20MockApproval, error) { + event := new(ERC20MockApproval) + if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20MockTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mock contract. +type ERC20MockTransferIterator struct { + Event *ERC20MockTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MockTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MockTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MockTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MockTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MockTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MockTransfer represents a Transfer event raised by the ERC20Mock contract. +type ERC20MockTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MockTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20MockTransferIterator{contract: _ERC20Mock.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MockTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MockTransfer) + if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) ParseTransfer(log types.Log) (*ERC20MockTransfer, error) { + event := new(ERC20MockTransfer) + if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go b/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go new file mode 100644 index 00000000..ac9cf207 --- /dev/null +++ b/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/inonfungiblepositionmanager.go @@ -0,0 +1,864 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package testuniswapv3contracts + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// INonfungiblePositionManagerCollectParams is an auto generated low-level Go binding around an user-defined struct. +type INonfungiblePositionManagerCollectParams struct { + TokenId *big.Int + Recipient common.Address + Amount0Max *big.Int + Amount1Max *big.Int +} + +// INonfungiblePositionManagerDecreaseLiquidityParams is an auto generated low-level Go binding around an user-defined struct. +type INonfungiblePositionManagerDecreaseLiquidityParams struct { + TokenId *big.Int + Liquidity *big.Int + Amount0Min *big.Int + Amount1Min *big.Int + Deadline *big.Int +} + +// INonfungiblePositionManagerIncreaseLiquidityParams is an auto generated low-level Go binding around an user-defined struct. +type INonfungiblePositionManagerIncreaseLiquidityParams struct { + TokenId *big.Int + Amount0Desired *big.Int + Amount1Desired *big.Int + Amount0Min *big.Int + Amount1Min *big.Int + Deadline *big.Int +} + +// INonfungiblePositionManagerMintParams is an auto generated low-level Go binding around an user-defined struct. +type INonfungiblePositionManagerMintParams struct { + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickLower *big.Int + TickUpper *big.Int + Amount0Desired *big.Int + Amount1Desired *big.Int + Amount0Min *big.Int + Amount1Min *big.Int + Recipient common.Address + Deadline *big.Int +} + +// INonfungiblePositionManagerMetaData contains all meta data concerning the INonfungiblePositionManager contract. +var INonfungiblePositionManagerMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"structINonfungiblePositionManager.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.IncreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"increaseLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"amount0Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Desired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"structINonfungiblePositionManager.MintParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// INonfungiblePositionManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use INonfungiblePositionManagerMetaData.ABI instead. +var INonfungiblePositionManagerABI = INonfungiblePositionManagerMetaData.ABI + +// INonfungiblePositionManager is an auto generated Go binding around an Ethereum contract. +type INonfungiblePositionManager struct { + INonfungiblePositionManagerCaller // Read-only binding to the contract + INonfungiblePositionManagerTransactor // Write-only binding to the contract + INonfungiblePositionManagerFilterer // Log filterer for contract events +} + +// INonfungiblePositionManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type INonfungiblePositionManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonfungiblePositionManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type INonfungiblePositionManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonfungiblePositionManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type INonfungiblePositionManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// INonfungiblePositionManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type INonfungiblePositionManagerSession struct { + Contract *INonfungiblePositionManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INonfungiblePositionManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type INonfungiblePositionManagerCallerSession struct { + Contract *INonfungiblePositionManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// INonfungiblePositionManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type INonfungiblePositionManagerTransactorSession struct { + Contract *INonfungiblePositionManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// INonfungiblePositionManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type INonfungiblePositionManagerRaw struct { + Contract *INonfungiblePositionManager // Generic contract binding to access the raw methods on +} + +// INonfungiblePositionManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type INonfungiblePositionManagerCallerRaw struct { + Contract *INonfungiblePositionManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// INonfungiblePositionManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type INonfungiblePositionManagerTransactorRaw struct { + Contract *INonfungiblePositionManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewINonfungiblePositionManager creates a new instance of INonfungiblePositionManager, bound to a specific deployed contract. +func NewINonfungiblePositionManager(address common.Address, backend bind.ContractBackend) (*INonfungiblePositionManager, error) { + contract, err := bindINonfungiblePositionManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &INonfungiblePositionManager{INonfungiblePositionManagerCaller: INonfungiblePositionManagerCaller{contract: contract}, INonfungiblePositionManagerTransactor: INonfungiblePositionManagerTransactor{contract: contract}, INonfungiblePositionManagerFilterer: INonfungiblePositionManagerFilterer{contract: contract}}, nil +} + +// NewINonfungiblePositionManagerCaller creates a new read-only instance of INonfungiblePositionManager, bound to a specific deployed contract. +func NewINonfungiblePositionManagerCaller(address common.Address, caller bind.ContractCaller) (*INonfungiblePositionManagerCaller, error) { + contract, err := bindINonfungiblePositionManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerCaller{contract: contract}, nil +} + +// NewINonfungiblePositionManagerTransactor creates a new write-only instance of INonfungiblePositionManager, bound to a specific deployed contract. +func NewINonfungiblePositionManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*INonfungiblePositionManagerTransactor, error) { + contract, err := bindINonfungiblePositionManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerTransactor{contract: contract}, nil +} + +// NewINonfungiblePositionManagerFilterer creates a new log filterer instance of INonfungiblePositionManager, bound to a specific deployed contract. +func NewINonfungiblePositionManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*INonfungiblePositionManagerFilterer, error) { + contract, err := bindINonfungiblePositionManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerFilterer{contract: contract}, nil +} + +// bindINonfungiblePositionManager binds a generic wrapper to an already deployed contract. +func bindINonfungiblePositionManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := INonfungiblePositionManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INonfungiblePositionManager *INonfungiblePositionManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.INonfungiblePositionManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_INonfungiblePositionManager *INonfungiblePositionManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _INonfungiblePositionManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.contract.Transact(opts, method, params...) +} + +// Positions is a free data retrieval call binding the contract method 0x99fbab88. +// +// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerCaller) Positions(opts *bind.CallOpts, tokenId *big.Int) (struct { + Nonce *big.Int + Operator common.Address + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickLower *big.Int + TickUpper *big.Int + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + var out []interface{} + err := _INonfungiblePositionManager.contract.Call(opts, &out, "positions", tokenId) + + outstruct := new(struct { + Nonce *big.Int + Operator common.Address + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickLower *big.Int + TickUpper *big.Int + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Nonce = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Operator = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Token0 = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.Token1 = *abi.ConvertType(out[3], new(common.Address)).(*common.Address) + outstruct.Fee = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.TickLower = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.TickUpper = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) + outstruct.Liquidity = *abi.ConvertType(out[7], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[8], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[9], new(*big.Int)).(**big.Int) + outstruct.TokensOwed0 = *abi.ConvertType(out[10], new(*big.Int)).(**big.Int) + outstruct.TokensOwed1 = *abi.ConvertType(out[11], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Positions is a free data retrieval call binding the contract method 0x99fbab88. +// +// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Positions(tokenId *big.Int) (struct { + Nonce *big.Int + Operator common.Address + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickLower *big.Int + TickUpper *big.Int + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _INonfungiblePositionManager.Contract.Positions(&_INonfungiblePositionManager.CallOpts, tokenId) +} + +// Positions is a free data retrieval call binding the contract method 0x99fbab88. +// +// Solidity: function positions(uint256 tokenId) view returns(uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerCallerSession) Positions(tokenId *big.Int) (struct { + Nonce *big.Int + Operator common.Address + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickLower *big.Int + TickUpper *big.Int + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _INonfungiblePositionManager.Contract.Positions(&_INonfungiblePositionManager.CallOpts, tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) payable returns() +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) { + return _INonfungiblePositionManager.contract.Transact(opts, "burn", tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) payable returns() +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Burn(&_INonfungiblePositionManager.TransactOpts, tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) payable returns() +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Burn(&_INonfungiblePositionManager.TransactOpts, tokenId) +} + +// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. +// +// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Collect(opts *bind.TransactOpts, params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.contract.Transact(opts, "collect", params) +} + +// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. +// +// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Collect(params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Collect(&_INonfungiblePositionManager.TransactOpts, params) +} + +// Collect is a paid mutator transaction binding the contract method 0xfc6f7865. +// +// Solidity: function collect((uint256,address,uint128,uint128) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Collect(params INonfungiblePositionManagerCollectParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Collect(&_INonfungiblePositionManager.TransactOpts, params) +} + +// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. +// +// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) DecreaseLiquidity(opts *bind.TransactOpts, params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.contract.Transact(opts, "decreaseLiquidity", params) +} + +// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. +// +// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) DecreaseLiquidity(params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.DecreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) +} + +// DecreaseLiquidity is a paid mutator transaction binding the contract method 0x0c49ccbe. +// +// Solidity: function decreaseLiquidity((uint256,uint128,uint256,uint256,uint256) params) payable returns(uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) DecreaseLiquidity(params INonfungiblePositionManagerDecreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.DecreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) +} + +// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. +// +// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) IncreaseLiquidity(opts *bind.TransactOpts, params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.contract.Transact(opts, "increaseLiquidity", params) +} + +// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. +// +// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) IncreaseLiquidity(params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.IncreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) +} + +// IncreaseLiquidity is a paid mutator transaction binding the contract method 0x219f5d17. +// +// Solidity: function increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256) params) payable returns(uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) IncreaseLiquidity(params INonfungiblePositionManagerIncreaseLiquidityParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.IncreaseLiquidity(&_INonfungiblePositionManager.TransactOpts, params) +} + +// Mint is a paid mutator transaction binding the contract method 0x88316456. +// +// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactor) Mint(opts *bind.TransactOpts, params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.contract.Transact(opts, "mint", params) +} + +// Mint is a paid mutator transaction binding the contract method 0x88316456. +// +// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerSession) Mint(params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Mint(&_INonfungiblePositionManager.TransactOpts, params) +} + +// Mint is a paid mutator transaction binding the contract method 0x88316456. +// +// Solidity: function mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256) params) payable returns(uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerTransactorSession) Mint(params INonfungiblePositionManagerMintParams) (*types.Transaction, error) { + return _INonfungiblePositionManager.Contract.Mint(&_INonfungiblePositionManager.TransactOpts, params) +} + +// INonfungiblePositionManagerCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerCollectIterator struct { + Event *INonfungiblePositionManagerCollect // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INonfungiblePositionManagerCollectIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INonfungiblePositionManagerCollectIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INonfungiblePositionManagerCollectIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INonfungiblePositionManagerCollect represents a Collect event raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerCollect struct { + TokenId *big.Int + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollect is a free log retrieval operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. +// +// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterCollect(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerCollectIterator, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "Collect", tokenIdRule) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerCollectIterator{contract: _INonfungiblePositionManager.contract, event: "Collect", logs: logs, sub: sub}, nil +} + +// WatchCollect is a free log subscription operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. +// +// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerCollect, tokenId []*big.Int) (event.Subscription, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "Collect", tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INonfungiblePositionManagerCollect) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "Collect", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCollect is a log parse operation binding the contract event 0x40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01. +// +// Solidity: event Collect(uint256 indexed tokenId, address recipient, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseCollect(log types.Log) (*INonfungiblePositionManagerCollect, error) { + event := new(INonfungiblePositionManagerCollect) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "Collect", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INonfungiblePositionManagerDecreaseLiquidityIterator is returned from FilterDecreaseLiquidity and is used to iterate over the raw logs and unpacked data for DecreaseLiquidity events raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerDecreaseLiquidityIterator struct { + Event *INonfungiblePositionManagerDecreaseLiquidity // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerDecreaseLiquidity) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerDecreaseLiquidity) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INonfungiblePositionManagerDecreaseLiquidityIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INonfungiblePositionManagerDecreaseLiquidity represents a DecreaseLiquidity event raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerDecreaseLiquidity struct { + TokenId *big.Int + Liquidity *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDecreaseLiquidity is a free log retrieval operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. +// +// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterDecreaseLiquidity(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerDecreaseLiquidityIterator, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "DecreaseLiquidity", tokenIdRule) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerDecreaseLiquidityIterator{contract: _INonfungiblePositionManager.contract, event: "DecreaseLiquidity", logs: logs, sub: sub}, nil +} + +// WatchDecreaseLiquidity is a free log subscription operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. +// +// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchDecreaseLiquidity(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerDecreaseLiquidity, tokenId []*big.Int) (event.Subscription, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "DecreaseLiquidity", tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INonfungiblePositionManagerDecreaseLiquidity) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "DecreaseLiquidity", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDecreaseLiquidity is a log parse operation binding the contract event 0x26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b4. +// +// Solidity: event DecreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseDecreaseLiquidity(log types.Log) (*INonfungiblePositionManagerDecreaseLiquidity, error) { + event := new(INonfungiblePositionManagerDecreaseLiquidity) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "DecreaseLiquidity", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// INonfungiblePositionManagerIncreaseLiquidityIterator is returned from FilterIncreaseLiquidity and is used to iterate over the raw logs and unpacked data for IncreaseLiquidity events raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerIncreaseLiquidityIterator struct { + Event *INonfungiblePositionManagerIncreaseLiquidity // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerIncreaseLiquidity) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(INonfungiblePositionManagerIncreaseLiquidity) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *INonfungiblePositionManagerIncreaseLiquidityIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// INonfungiblePositionManagerIncreaseLiquidity represents a IncreaseLiquidity event raised by the INonfungiblePositionManager contract. +type INonfungiblePositionManagerIncreaseLiquidity struct { + TokenId *big.Int + Liquidity *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIncreaseLiquidity is a free log retrieval operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. +// +// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) FilterIncreaseLiquidity(opts *bind.FilterOpts, tokenId []*big.Int) (*INonfungiblePositionManagerIncreaseLiquidityIterator, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.FilterLogs(opts, "IncreaseLiquidity", tokenIdRule) + if err != nil { + return nil, err + } + return &INonfungiblePositionManagerIncreaseLiquidityIterator{contract: _INonfungiblePositionManager.contract, event: "IncreaseLiquidity", logs: logs, sub: sub}, nil +} + +// WatchIncreaseLiquidity is a free log subscription operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. +// +// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) WatchIncreaseLiquidity(opts *bind.WatchOpts, sink chan<- *INonfungiblePositionManagerIncreaseLiquidity, tokenId []*big.Int) (event.Subscription, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _INonfungiblePositionManager.contract.WatchLogs(opts, "IncreaseLiquidity", tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(INonfungiblePositionManagerIncreaseLiquidity) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "IncreaseLiquidity", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseIncreaseLiquidity is a log parse operation binding the contract event 0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f. +// +// Solidity: event IncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1) +func (_INonfungiblePositionManager *INonfungiblePositionManagerFilterer) ParseIncreaseLiquidity(log types.Log) (*INonfungiblePositionManagerIncreaseLiquidity, error) { + event := new(INonfungiblePositionManagerIncreaseLiquidity) + if err := _INonfungiblePositionManager.contract.UnpackLog(event, "IncreaseLiquidity", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go b/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go new file mode 100644 index 00000000..33da23e4 --- /dev/null +++ b/v1/pkg/contracts/evm/testing/testuniswapv3contracts.sol/ipoolinitializer.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package testuniswapv3contracts + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IPoolInitializerMetaData contains all meta data concerning the IPoolInitializer contract. +var IPoolInitializerMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"createAndInitializePoolIfNecessary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}]", +} + +// IPoolInitializerABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoolInitializerMetaData.ABI instead. +var IPoolInitializerABI = IPoolInitializerMetaData.ABI + +// IPoolInitializer is an auto generated Go binding around an Ethereum contract. +type IPoolInitializer struct { + IPoolInitializerCaller // Read-only binding to the contract + IPoolInitializerTransactor // Write-only binding to the contract + IPoolInitializerFilterer // Log filterer for contract events +} + +// IPoolInitializerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoolInitializerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolInitializerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoolInitializerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolInitializerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoolInitializerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolInitializerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoolInitializerSession struct { + Contract *IPoolInitializer // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoolInitializerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoolInitializerCallerSession struct { + Contract *IPoolInitializerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPoolInitializerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoolInitializerTransactorSession struct { + Contract *IPoolInitializerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoolInitializerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoolInitializerRaw struct { + Contract *IPoolInitializer // Generic contract binding to access the raw methods on +} + +// IPoolInitializerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoolInitializerCallerRaw struct { + Contract *IPoolInitializerCaller // Generic read-only contract binding to access the raw methods on +} + +// IPoolInitializerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoolInitializerTransactorRaw struct { + Contract *IPoolInitializerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPoolInitializer creates a new instance of IPoolInitializer, bound to a specific deployed contract. +func NewIPoolInitializer(address common.Address, backend bind.ContractBackend) (*IPoolInitializer, error) { + contract, err := bindIPoolInitializer(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPoolInitializer{IPoolInitializerCaller: IPoolInitializerCaller{contract: contract}, IPoolInitializerTransactor: IPoolInitializerTransactor{contract: contract}, IPoolInitializerFilterer: IPoolInitializerFilterer{contract: contract}}, nil +} + +// NewIPoolInitializerCaller creates a new read-only instance of IPoolInitializer, bound to a specific deployed contract. +func NewIPoolInitializerCaller(address common.Address, caller bind.ContractCaller) (*IPoolInitializerCaller, error) { + contract, err := bindIPoolInitializer(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoolInitializerCaller{contract: contract}, nil +} + +// NewIPoolInitializerTransactor creates a new write-only instance of IPoolInitializer, bound to a specific deployed contract. +func NewIPoolInitializerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoolInitializerTransactor, error) { + contract, err := bindIPoolInitializer(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoolInitializerTransactor{contract: contract}, nil +} + +// NewIPoolInitializerFilterer creates a new log filterer instance of IPoolInitializer, bound to a specific deployed contract. +func NewIPoolInitializerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoolInitializerFilterer, error) { + contract, err := bindIPoolInitializer(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPoolInitializerFilterer{contract: contract}, nil +} + +// bindIPoolInitializer binds a generic wrapper to an already deployed contract. +func bindIPoolInitializer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoolInitializerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoolInitializer *IPoolInitializerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolInitializer.Contract.IPoolInitializerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoolInitializer *IPoolInitializerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolInitializer.Contract.IPoolInitializerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolInitializer *IPoolInitializerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolInitializer.Contract.IPoolInitializerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoolInitializer *IPoolInitializerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolInitializer.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoolInitializer *IPoolInitializerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolInitializer.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolInitializer *IPoolInitializerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolInitializer.Contract.contract.Transact(opts, method, params...) +} + +// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. +// +// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) +func (_IPoolInitializer *IPoolInitializerTransactor) CreateAndInitializePoolIfNecessary(opts *bind.TransactOpts, token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IPoolInitializer.contract.Transact(opts, "createAndInitializePoolIfNecessary", token0, token1, fee, sqrtPriceX96) +} + +// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. +// +// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) +func (_IPoolInitializer *IPoolInitializerSession) CreateAndInitializePoolIfNecessary(token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IPoolInitializer.Contract.CreateAndInitializePoolIfNecessary(&_IPoolInitializer.TransactOpts, token0, token1, fee, sqrtPriceX96) +} + +// CreateAndInitializePoolIfNecessary is a paid mutator transaction binding the contract method 0x13ead562. +// +// Solidity: function createAndInitializePoolIfNecessary(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) payable returns(address pool) +func (_IPoolInitializer *IPoolInitializerTransactorSession) CreateAndInitializePoolIfNecessary(token0 common.Address, token1 common.Address, fee *big.Int, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IPoolInitializer.Contract.CreateAndInitializePoolIfNecessary(&_IPoolInitializer.TransactOpts, token0, token1, fee, sqrtPriceX96) +} diff --git a/v1/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go b/v1/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go new file mode 100644 index 00000000..a5f6a8cd --- /dev/null +++ b/v1/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go @@ -0,0 +1,778 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainteractormock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaMessage struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte +} + +// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaRevert struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationAddress []byte + DestinationChainId *big.Int + RemainingZetaValue *big.Int + Message []byte +} + +// ZetaInteractorMockMetaData contains all meta data concerning the ZetaInteractorMock contract. +var ZetaInteractorMockMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaConnectorAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connector\",\"outputs\":[{\"internalType\":\"contractZetaConnector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"interactorsByChainId\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"contractAddress\",\"type\":\"bytes\"}],\"name\":\"setInteractorByChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea2646970667358221220639370598d8dcad7cc48e15d248474209bfbec01023d8ed4d055453bab66415464736f6c63430008070033", +} + +// ZetaInteractorMockABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaInteractorMockMetaData.ABI instead. +var ZetaInteractorMockABI = ZetaInteractorMockMetaData.ABI + +// ZetaInteractorMockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaInteractorMockMetaData.Bin instead. +var ZetaInteractorMockBin = ZetaInteractorMockMetaData.Bin + +// DeployZetaInteractorMock deploys a new Ethereum contract, binding an instance of ZetaInteractorMock to it. +func DeployZetaInteractorMock(auth *bind.TransactOpts, backend bind.ContractBackend, zetaConnectorAddress common.Address) (common.Address, *types.Transaction, *ZetaInteractorMock, error) { + parsed, err := ZetaInteractorMockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaInteractorMockBin), backend, zetaConnectorAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaInteractorMock{ZetaInteractorMockCaller: ZetaInteractorMockCaller{contract: contract}, ZetaInteractorMockTransactor: ZetaInteractorMockTransactor{contract: contract}, ZetaInteractorMockFilterer: ZetaInteractorMockFilterer{contract: contract}}, nil +} + +// ZetaInteractorMock is an auto generated Go binding around an Ethereum contract. +type ZetaInteractorMock struct { + ZetaInteractorMockCaller // Read-only binding to the contract + ZetaInteractorMockTransactor // Write-only binding to the contract + ZetaInteractorMockFilterer // Log filterer for contract events +} + +// ZetaInteractorMockCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaInteractorMockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorMockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaInteractorMockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaInteractorMockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorMockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaInteractorMockSession struct { + Contract *ZetaInteractorMock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaInteractorMockCallerSession struct { + Contract *ZetaInteractorMockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaInteractorMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaInteractorMockTransactorSession struct { + Contract *ZetaInteractorMockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorMockRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaInteractorMockRaw struct { + Contract *ZetaInteractorMock // Generic contract binding to access the raw methods on +} + +// ZetaInteractorMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaInteractorMockCallerRaw struct { + Contract *ZetaInteractorMockCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaInteractorMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaInteractorMockTransactorRaw struct { + Contract *ZetaInteractorMockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaInteractorMock creates a new instance of ZetaInteractorMock, bound to a specific deployed contract. +func NewZetaInteractorMock(address common.Address, backend bind.ContractBackend) (*ZetaInteractorMock, error) { + contract, err := bindZetaInteractorMock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaInteractorMock{ZetaInteractorMockCaller: ZetaInteractorMockCaller{contract: contract}, ZetaInteractorMockTransactor: ZetaInteractorMockTransactor{contract: contract}, ZetaInteractorMockFilterer: ZetaInteractorMockFilterer{contract: contract}}, nil +} + +// NewZetaInteractorMockCaller creates a new read-only instance of ZetaInteractorMock, bound to a specific deployed contract. +func NewZetaInteractorMockCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorMockCaller, error) { + contract, err := bindZetaInteractorMock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorMockCaller{contract: contract}, nil +} + +// NewZetaInteractorMockTransactor creates a new write-only instance of ZetaInteractorMock, bound to a specific deployed contract. +func NewZetaInteractorMockTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorMockTransactor, error) { + contract, err := bindZetaInteractorMock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorMockTransactor{contract: contract}, nil +} + +// NewZetaInteractorMockFilterer creates a new log filterer instance of ZetaInteractorMock, bound to a specific deployed contract. +func NewZetaInteractorMockFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorMockFilterer, error) { + contract, err := bindZetaInteractorMock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaInteractorMockFilterer{contract: contract}, nil +} + +// bindZetaInteractorMock binds a generic wrapper to an already deployed contract. +func bindZetaInteractorMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaInteractorMockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractorMock *ZetaInteractorMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractorMock.Contract.ZetaInteractorMockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractorMock *ZetaInteractorMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.ZetaInteractorMockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractorMock *ZetaInteractorMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.ZetaInteractorMockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractorMock *ZetaInteractorMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractorMock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractorMock *ZetaInteractorMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractorMock *ZetaInteractorMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.contract.Transact(opts, method, params...) +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCaller) Connector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractorMock.contract.Call(opts, &out, "connector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockSession) Connector() (common.Address, error) { + return _ZetaInteractorMock.Contract.Connector(&_ZetaInteractorMock.CallOpts) +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) Connector() (common.Address, error) { + return _ZetaInteractorMock.Contract.Connector(&_ZetaInteractorMock.CallOpts) +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractorMock *ZetaInteractorMockCaller) InteractorsByChainId(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) { + var out []interface{} + err := _ZetaInteractorMock.contract.Call(opts, &out, "interactorsByChainId", arg0) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractorMock *ZetaInteractorMockSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { + return _ZetaInteractorMock.Contract.InteractorsByChainId(&_ZetaInteractorMock.CallOpts, arg0) +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { + return _ZetaInteractorMock.Contract.InteractorsByChainId(&_ZetaInteractorMock.CallOpts, arg0) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractorMock.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockSession) Owner() (common.Address, error) { + return _ZetaInteractorMock.Contract.Owner(&_ZetaInteractorMock.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) Owner() (common.Address, error) { + return _ZetaInteractorMock.Contract.Owner(&_ZetaInteractorMock.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractorMock.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockSession) PendingOwner() (common.Address, error) { + return _ZetaInteractorMock.Contract.PendingOwner(&_ZetaInteractorMock.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractorMock *ZetaInteractorMockCallerSession) PendingOwner() (common.Address, error) { + return _ZetaInteractorMock.Contract.PendingOwner(&_ZetaInteractorMock.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) AcceptOwnership() (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.AcceptOwnership(&_ZetaInteractorMock.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.AcceptOwnership(&_ZetaInteractorMock.TransactOpts) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "onZetaMessage", zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.OnZetaMessage(&_ZetaInteractorMock.TransactOpts, zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.OnZetaMessage(&_ZetaInteractorMock.TransactOpts, zetaMessage) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "onZetaRevert", zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.OnZetaRevert(&_ZetaInteractorMock.TransactOpts, zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.OnZetaRevert(&_ZetaInteractorMock.TransactOpts, zetaRevert) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) RenounceOwnership() (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.RenounceOwnership(&_ZetaInteractorMock.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.RenounceOwnership(&_ZetaInteractorMock.TransactOpts) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) SetInteractorByChainId(opts *bind.TransactOpts, destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "setInteractorByChainId", destinationChainId, contractAddress) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.SetInteractorByChainId(&_ZetaInteractorMock.TransactOpts, destinationChainId, contractAddress) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.SetInteractorByChainId(&_ZetaInteractorMock.TransactOpts, destinationChainId, contractAddress) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractorMock.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractorMock *ZetaInteractorMockSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.TransferOwnership(&_ZetaInteractorMock.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractorMock *ZetaInteractorMockTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractorMock.Contract.TransferOwnership(&_ZetaInteractorMock.TransactOpts, newOwner) +} + +// ZetaInteractorMockOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ZetaInteractorMock contract. +type ZetaInteractorMockOwnershipTransferStartedIterator struct { + Event *ZetaInteractorMockOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorMockOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorMockOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaInteractorMockOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaInteractorMockOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ZetaInteractorMock contract. +type ZetaInteractorMockOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorMockOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractorMock.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ZetaInteractorMockOwnershipTransferStartedIterator{contract: _ZetaInteractorMock.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ZetaInteractorMockOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractorMock.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaInteractorMockOwnershipTransferStarted) + if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) ParseOwnershipTransferStarted(log types.Log) (*ZetaInteractorMockOwnershipTransferStarted, error) { + event := new(ZetaInteractorMockOwnershipTransferStarted) + if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaInteractorMockOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ZetaInteractorMock contract. +type ZetaInteractorMockOwnershipTransferredIterator struct { + Event *ZetaInteractorMockOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaInteractorMockOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorMockOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorMockOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaInteractorMockOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaInteractorMockOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaInteractorMockOwnershipTransferred represents a OwnershipTransferred event raised by the ZetaInteractorMock contract. +type ZetaInteractorMockOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorMockOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractorMock.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ZetaInteractorMockOwnershipTransferredIterator{contract: _ZetaInteractorMock.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ZetaInteractorMockOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractorMock.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaInteractorMockOwnershipTransferred) + if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractorMock *ZetaInteractorMockFilterer) ParseOwnershipTransferred(log types.Log) (*ZetaInteractorMockOwnershipTransferred, error) { + event := new(ZetaInteractorMockOwnershipTransferred) + if err := _ZetaInteractorMock.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go b/v1/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go new file mode 100644 index 00000000..0007dc5a --- /dev/null +++ b/v1/pkg/contracts/evm/testing/zetareceivermock.sol/zetareceivermock.go @@ -0,0 +1,532 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetareceivermock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaMessage struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte +} + +// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaRevert struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationAddress []byte + DestinationChainId *big.Int + RemainingZetaValue *big.Int + Message []byte +} + +// ZetaReceiverMockMetaData contains all meta data concerning the ZetaReceiverMock contract. +var ZetaReceiverMockMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"}],\"name\":\"MockOnZetaRevert\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506102d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633749c51a1461003b5780633ff0693c14610057575b600080fd5b6100556004803603810190610050919061018b565b610073565b005b610071600480360381019061006c91906101d4565b6100bf565b005b7f72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e8160400160208101906100a7919061015e565b6040516100b4919061022c565b60405180910390a150565b7f53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc48160000160208101906100f3919061015e565b604051610100919061022c565b60405180910390a150565b60008135905061011a81610288565b92915050565b600060a0828403121561013657610135610279565b5b81905092915050565b600060c0828403121561015557610154610279565b5b81905092915050565b60006020828403121561017457610173610283565b5b60006101828482850161010b565b91505092915050565b6000602082840312156101a1576101a0610283565b5b600082013567ffffffffffffffff8111156101bf576101be61027e565b5b6101cb84828501610120565b91505092915050565b6000602082840312156101ea576101e9610283565b5b600082013567ffffffffffffffff8111156102085761020761027e565b5b6102148482850161013f565b91505092915050565b61022681610247565b82525050565b6000602082019050610241600083018461021d565b92915050565b600061025282610259565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b600080fd5b600080fd5b61029181610247565b811461029c57600080fd5b5056fea26469706673582212206d3535c1f777f93a6d105378513b52ef987ededd64b301e5cc1914be4e5ba14564736f6c63430008070033", +} + +// ZetaReceiverMockABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaReceiverMockMetaData.ABI instead. +var ZetaReceiverMockABI = ZetaReceiverMockMetaData.ABI + +// ZetaReceiverMockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaReceiverMockMetaData.Bin instead. +var ZetaReceiverMockBin = ZetaReceiverMockMetaData.Bin + +// DeployZetaReceiverMock deploys a new Ethereum contract, binding an instance of ZetaReceiverMock to it. +func DeployZetaReceiverMock(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ZetaReceiverMock, error) { + parsed, err := ZetaReceiverMockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaReceiverMockBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaReceiverMock{ZetaReceiverMockCaller: ZetaReceiverMockCaller{contract: contract}, ZetaReceiverMockTransactor: ZetaReceiverMockTransactor{contract: contract}, ZetaReceiverMockFilterer: ZetaReceiverMockFilterer{contract: contract}}, nil +} + +// ZetaReceiverMock is an auto generated Go binding around an Ethereum contract. +type ZetaReceiverMock struct { + ZetaReceiverMockCaller // Read-only binding to the contract + ZetaReceiverMockTransactor // Write-only binding to the contract + ZetaReceiverMockFilterer // Log filterer for contract events +} + +// ZetaReceiverMockCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaReceiverMockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverMockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaReceiverMockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaReceiverMockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverMockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaReceiverMockSession struct { + Contract *ZetaReceiverMock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaReceiverMockCallerSession struct { + Contract *ZetaReceiverMockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaReceiverMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaReceiverMockTransactorSession struct { + Contract *ZetaReceiverMockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverMockRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaReceiverMockRaw struct { + Contract *ZetaReceiverMock // Generic contract binding to access the raw methods on +} + +// ZetaReceiverMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaReceiverMockCallerRaw struct { + Contract *ZetaReceiverMockCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaReceiverMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaReceiverMockTransactorRaw struct { + Contract *ZetaReceiverMockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaReceiverMock creates a new instance of ZetaReceiverMock, bound to a specific deployed contract. +func NewZetaReceiverMock(address common.Address, backend bind.ContractBackend) (*ZetaReceiverMock, error) { + contract, err := bindZetaReceiverMock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaReceiverMock{ZetaReceiverMockCaller: ZetaReceiverMockCaller{contract: contract}, ZetaReceiverMockTransactor: ZetaReceiverMockTransactor{contract: contract}, ZetaReceiverMockFilterer: ZetaReceiverMockFilterer{contract: contract}}, nil +} + +// NewZetaReceiverMockCaller creates a new read-only instance of ZetaReceiverMock, bound to a specific deployed contract. +func NewZetaReceiverMockCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverMockCaller, error) { + contract, err := bindZetaReceiverMock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverMockCaller{contract: contract}, nil +} + +// NewZetaReceiverMockTransactor creates a new write-only instance of ZetaReceiverMock, bound to a specific deployed contract. +func NewZetaReceiverMockTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverMockTransactor, error) { + contract, err := bindZetaReceiverMock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverMockTransactor{contract: contract}, nil +} + +// NewZetaReceiverMockFilterer creates a new log filterer instance of ZetaReceiverMock, bound to a specific deployed contract. +func NewZetaReceiverMockFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverMockFilterer, error) { + contract, err := bindZetaReceiverMock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaReceiverMockFilterer{contract: contract}, nil +} + +// bindZetaReceiverMock binds a generic wrapper to an already deployed contract. +func bindZetaReceiverMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaReceiverMockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiverMock *ZetaReceiverMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiverMock.Contract.ZetaReceiverMockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiverMock *ZetaReceiverMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.ZetaReceiverMockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiverMock *ZetaReceiverMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.ZetaReceiverMockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiverMock *ZetaReceiverMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiverMock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiverMock *ZetaReceiverMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiverMock *ZetaReceiverMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.contract.Transact(opts, method, params...) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiverMock *ZetaReceiverMockTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiverMock.contract.Transact(opts, "onZetaMessage", zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiverMock *ZetaReceiverMockSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.OnZetaMessage(&_ZetaReceiverMock.TransactOpts, zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiverMock *ZetaReceiverMockTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.OnZetaMessage(&_ZetaReceiverMock.TransactOpts, zetaMessage) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiverMock *ZetaReceiverMockTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiverMock.contract.Transact(opts, "onZetaRevert", zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiverMock *ZetaReceiverMockSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.OnZetaRevert(&_ZetaReceiverMock.TransactOpts, zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiverMock *ZetaReceiverMockTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiverMock.Contract.OnZetaRevert(&_ZetaReceiverMock.TransactOpts, zetaRevert) +} + +// ZetaReceiverMockMockOnZetaMessageIterator is returned from FilterMockOnZetaMessage and is used to iterate over the raw logs and unpacked data for MockOnZetaMessage events raised by the ZetaReceiverMock contract. +type ZetaReceiverMockMockOnZetaMessageIterator struct { + Event *ZetaReceiverMockMockOnZetaMessage // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaReceiverMockMockOnZetaMessageIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaReceiverMockMockOnZetaMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaReceiverMockMockOnZetaMessage) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaReceiverMockMockOnZetaMessageIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaReceiverMockMockOnZetaMessageIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaReceiverMockMockOnZetaMessage represents a MockOnZetaMessage event raised by the ZetaReceiverMock contract. +type ZetaReceiverMockMockOnZetaMessage struct { + DestinationAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMockOnZetaMessage is a free log retrieval operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. +// +// Solidity: event MockOnZetaMessage(address destinationAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) FilterMockOnZetaMessage(opts *bind.FilterOpts) (*ZetaReceiverMockMockOnZetaMessageIterator, error) { + + logs, sub, err := _ZetaReceiverMock.contract.FilterLogs(opts, "MockOnZetaMessage") + if err != nil { + return nil, err + } + return &ZetaReceiverMockMockOnZetaMessageIterator{contract: _ZetaReceiverMock.contract, event: "MockOnZetaMessage", logs: logs, sub: sub}, nil +} + +// WatchMockOnZetaMessage is a free log subscription operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. +// +// Solidity: event MockOnZetaMessage(address destinationAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) WatchMockOnZetaMessage(opts *bind.WatchOpts, sink chan<- *ZetaReceiverMockMockOnZetaMessage) (event.Subscription, error) { + + logs, sub, err := _ZetaReceiverMock.contract.WatchLogs(opts, "MockOnZetaMessage") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaReceiverMockMockOnZetaMessage) + if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaMessage", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMockOnZetaMessage is a log parse operation binding the contract event 0x72a301dee3abcbe15615f3e253229bf4b4f508460603d674991c9a777b833c6e. +// +// Solidity: event MockOnZetaMessage(address destinationAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) ParseMockOnZetaMessage(log types.Log) (*ZetaReceiverMockMockOnZetaMessage, error) { + event := new(ZetaReceiverMockMockOnZetaMessage) + if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaMessage", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaReceiverMockMockOnZetaRevertIterator is returned from FilterMockOnZetaRevert and is used to iterate over the raw logs and unpacked data for MockOnZetaRevert events raised by the ZetaReceiverMock contract. +type ZetaReceiverMockMockOnZetaRevertIterator struct { + Event *ZetaReceiverMockMockOnZetaRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaReceiverMockMockOnZetaRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaReceiverMockMockOnZetaRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaReceiverMockMockOnZetaRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaReceiverMockMockOnZetaRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaReceiverMockMockOnZetaRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaReceiverMockMockOnZetaRevert represents a MockOnZetaRevert event raised by the ZetaReceiverMock contract. +type ZetaReceiverMockMockOnZetaRevert struct { + ZetaTxSenderAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMockOnZetaRevert is a free log retrieval operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. +// +// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) FilterMockOnZetaRevert(opts *bind.FilterOpts) (*ZetaReceiverMockMockOnZetaRevertIterator, error) { + + logs, sub, err := _ZetaReceiverMock.contract.FilterLogs(opts, "MockOnZetaRevert") + if err != nil { + return nil, err + } + return &ZetaReceiverMockMockOnZetaRevertIterator{contract: _ZetaReceiverMock.contract, event: "MockOnZetaRevert", logs: logs, sub: sub}, nil +} + +// WatchMockOnZetaRevert is a free log subscription operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. +// +// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) WatchMockOnZetaRevert(opts *bind.WatchOpts, sink chan<- *ZetaReceiverMockMockOnZetaRevert) (event.Subscription, error) { + + logs, sub, err := _ZetaReceiverMock.contract.WatchLogs(opts, "MockOnZetaRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaReceiverMockMockOnZetaRevert) + if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMockOnZetaRevert is a log parse operation binding the contract event 0x53bd04e26f94f13ff43da96839541821041c309c6f624712192cbe3a2d133cc4. +// +// Solidity: event MockOnZetaRevert(address zetaTxSenderAddress) +func (_ZetaReceiverMock *ZetaReceiverMockFilterer) ParseMockOnZetaRevert(log types.Log) (*ZetaReceiverMockMockOnZetaRevert, error) { + event := new(ZetaReceiverMockMockOnZetaRevert) + if err := _ZetaReceiverMock.contract.UnpackLog(event, "MockOnZetaRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go b/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go new file mode 100644 index 00000000..f1140f79 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/immutablecreate2factory.go @@ -0,0 +1,338 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package immutablecreate2factory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ImmutableCreate2FactoryMetaData contains all meta data concerning the ImmutableCreate2Factory contract. +var ImmutableCreate2FactoryMetaData = &bind.MetaData{ + ABI: "[{\"constant\":true,\"inputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"name\":\"hasBeenDeployed\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2AndTransfer\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initializationCode\",\"type\":\"bytes\"}],\"name\":\"safeCreate2\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"findCreate2Address\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"findCreate2AddressViaHash\",\"outputs\":[{\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50610c54806100206000396000f3fe60806040526004361061004a5760003560e01c806308508b8f1461004f57806329346003146100b857806364e030871461017b57806385cf97ab14610280578063a49a7c9014610350575b600080fd5b34801561005b57600080fd5b5061009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103d5565b604051808215151515815260200191505060405180910390f35b610139600480360360408110156100ce57600080fd5b8101908080359060200190929190803590602001906401000000008111156100f557600080fd5b82018360208201111561010757600080fd5b8035906020019184600183028401116401000000008311171561012957600080fd5b909192939192939050505061042a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023e6004803603604081101561019157600080fd5b8101908080359060200190929190803590602001906401000000008111156101b857600080fd5b8201836020820111156101ca57600080fd5b803590602001918460018302840111640100000000831117156101ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506105cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561028c57600080fd5b5061030e600480360360408110156102a357600080fd5b8101908080359060200190929190803590602001906401000000008111156102ca57600080fd5b8201836020820111156102dc57600080fd5b803590602001918460018302840111640100000000831117156102fe57600080fd5b9091929391929390505050610698565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035c57600080fd5b506103936004803603604081101561037357600080fd5b8101908080359060200190929190803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000833373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16148061048b5750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b6104e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61052e8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108b4565b91508173ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b50505050509392505050565b6000823373ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1614806106305750600060601b6bffffffffffffffffffffffff1916816bffffffffffffffffffffffff1916145b610685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180610b956045913960600191505060405180910390fd5b61068f84846108b4565b91505092915050565b6000308484846040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b657600090506107b7565b5b9392505050565b600030838360405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108ad57600090506108ae565b5b92915050565b6000606082905060003085836040516020018082805190602001908083835b602083106108f657805182526020820191506020810190506020830392506108d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012060405160200180807fff000000000000000000000000000000000000000000000000000000000000008152506001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610b56603f913960400191505060405180910390fd5b81602001825186818334f5945050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180610bda6046913960600191505060405180910390fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050509291505056fe496e76616c696420636f6e7472616374206372656174696f6e202d20636f6e74726163742068617320616c7265616479206265656e206465706c6f7965642e496e76616c69642073616c74202d206669727374203230206279746573206f66207468652073616c74206d757374206d617463682063616c6c696e6720616464726573732e4661696c656420746f206465706c6f7920636f6e7472616374207573696e672070726f76696465642073616c7420616e6420696e697469616c697a6174696f6e20636f64652ea265627a7a72305820df6f8cf8f81946679a805d41e12170a28006ccfb64bce758c74108440cc9337b64736f6c634300050a0032", +} + +// ImmutableCreate2FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use ImmutableCreate2FactoryMetaData.ABI instead. +var ImmutableCreate2FactoryABI = ImmutableCreate2FactoryMetaData.ABI + +// ImmutableCreate2FactoryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ImmutableCreate2FactoryMetaData.Bin instead. +var ImmutableCreate2FactoryBin = ImmutableCreate2FactoryMetaData.Bin + +// DeployImmutableCreate2Factory deploys a new Ethereum contract, binding an instance of ImmutableCreate2Factory to it. +func DeployImmutableCreate2Factory(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ImmutableCreate2Factory, error) { + parsed, err := ImmutableCreate2FactoryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ImmutableCreate2FactoryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ImmutableCreate2Factory{ImmutableCreate2FactoryCaller: ImmutableCreate2FactoryCaller{contract: contract}, ImmutableCreate2FactoryTransactor: ImmutableCreate2FactoryTransactor{contract: contract}, ImmutableCreate2FactoryFilterer: ImmutableCreate2FactoryFilterer{contract: contract}}, nil +} + +// ImmutableCreate2Factory is an auto generated Go binding around an Ethereum contract. +type ImmutableCreate2Factory struct { + ImmutableCreate2FactoryCaller // Read-only binding to the contract + ImmutableCreate2FactoryTransactor // Write-only binding to the contract + ImmutableCreate2FactoryFilterer // Log filterer for contract events +} + +// ImmutableCreate2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ImmutableCreate2FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ImmutableCreate2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ImmutableCreate2FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ImmutableCreate2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ImmutableCreate2FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ImmutableCreate2FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ImmutableCreate2FactorySession struct { + Contract *ImmutableCreate2Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ImmutableCreate2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ImmutableCreate2FactoryCallerSession struct { + Contract *ImmutableCreate2FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ImmutableCreate2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ImmutableCreate2FactoryTransactorSession struct { + Contract *ImmutableCreate2FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ImmutableCreate2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ImmutableCreate2FactoryRaw struct { + Contract *ImmutableCreate2Factory // Generic contract binding to access the raw methods on +} + +// ImmutableCreate2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ImmutableCreate2FactoryCallerRaw struct { + Contract *ImmutableCreate2FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// ImmutableCreate2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ImmutableCreate2FactoryTransactorRaw struct { + Contract *ImmutableCreate2FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewImmutableCreate2Factory creates a new instance of ImmutableCreate2Factory, bound to a specific deployed contract. +func NewImmutableCreate2Factory(address common.Address, backend bind.ContractBackend) (*ImmutableCreate2Factory, error) { + contract, err := bindImmutableCreate2Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ImmutableCreate2Factory{ImmutableCreate2FactoryCaller: ImmutableCreate2FactoryCaller{contract: contract}, ImmutableCreate2FactoryTransactor: ImmutableCreate2FactoryTransactor{contract: contract}, ImmutableCreate2FactoryFilterer: ImmutableCreate2FactoryFilterer{contract: contract}}, nil +} + +// NewImmutableCreate2FactoryCaller creates a new read-only instance of ImmutableCreate2Factory, bound to a specific deployed contract. +func NewImmutableCreate2FactoryCaller(address common.Address, caller bind.ContractCaller) (*ImmutableCreate2FactoryCaller, error) { + contract, err := bindImmutableCreate2Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ImmutableCreate2FactoryCaller{contract: contract}, nil +} + +// NewImmutableCreate2FactoryTransactor creates a new write-only instance of ImmutableCreate2Factory, bound to a specific deployed contract. +func NewImmutableCreate2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*ImmutableCreate2FactoryTransactor, error) { + contract, err := bindImmutableCreate2Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ImmutableCreate2FactoryTransactor{contract: contract}, nil +} + +// NewImmutableCreate2FactoryFilterer creates a new log filterer instance of ImmutableCreate2Factory, bound to a specific deployed contract. +func NewImmutableCreate2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*ImmutableCreate2FactoryFilterer, error) { + contract, err := bindImmutableCreate2Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ImmutableCreate2FactoryFilterer{contract: contract}, nil +} + +// bindImmutableCreate2Factory binds a generic wrapper to an already deployed contract. +func bindImmutableCreate2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ImmutableCreate2FactoryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.ImmutableCreate2FactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ImmutableCreate2Factory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.contract.Transact(opts, method, params...) +} + +// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. +// +// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) FindCreate2Address(opts *bind.CallOpts, salt [32]byte, initCode []byte) (common.Address, error) { + var out []interface{} + err := _ImmutableCreate2Factory.contract.Call(opts, &out, "findCreate2Address", salt, initCode) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. +// +// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) FindCreate2Address(salt [32]byte, initCode []byte) (common.Address, error) { + return _ImmutableCreate2Factory.Contract.FindCreate2Address(&_ImmutableCreate2Factory.CallOpts, salt, initCode) +} + +// FindCreate2Address is a free data retrieval call binding the contract method 0x85cf97ab. +// +// Solidity: function findCreate2Address(bytes32 salt, bytes initCode) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) FindCreate2Address(salt [32]byte, initCode []byte) (common.Address, error) { + return _ImmutableCreate2Factory.Contract.FindCreate2Address(&_ImmutableCreate2Factory.CallOpts, salt, initCode) +} + +// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. +// +// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) FindCreate2AddressViaHash(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + var out []interface{} + err := _ImmutableCreate2Factory.contract.Call(opts, &out, "findCreate2AddressViaHash", salt, initCodeHash) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. +// +// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) FindCreate2AddressViaHash(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _ImmutableCreate2Factory.Contract.FindCreate2AddressViaHash(&_ImmutableCreate2Factory.CallOpts, salt, initCodeHash) +} + +// FindCreate2AddressViaHash is a free data retrieval call binding the contract method 0xa49a7c90. +// +// Solidity: function findCreate2AddressViaHash(bytes32 salt, bytes32 initCodeHash) view returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) FindCreate2AddressViaHash(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _ImmutableCreate2Factory.Contract.FindCreate2AddressViaHash(&_ImmutableCreate2Factory.CallOpts, salt, initCodeHash) +} + +// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. +// +// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCaller) HasBeenDeployed(opts *bind.CallOpts, deploymentAddress common.Address) (bool, error) { + var out []interface{} + err := _ImmutableCreate2Factory.contract.Call(opts, &out, "hasBeenDeployed", deploymentAddress) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. +// +// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) +func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) HasBeenDeployed(deploymentAddress common.Address) (bool, error) { + return _ImmutableCreate2Factory.Contract.HasBeenDeployed(&_ImmutableCreate2Factory.CallOpts, deploymentAddress) +} + +// HasBeenDeployed is a free data retrieval call binding the contract method 0x08508b8f. +// +// Solidity: function hasBeenDeployed(address deploymentAddress) view returns(bool) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryCallerSession) HasBeenDeployed(deploymentAddress common.Address) (bool, error) { + return _ImmutableCreate2Factory.Contract.HasBeenDeployed(&_ImmutableCreate2Factory.CallOpts, deploymentAddress) +} + +// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. +// +// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactor) SafeCreate2(opts *bind.TransactOpts, salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.contract.Transact(opts, "safeCreate2", salt, initializationCode) +} + +// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. +// +// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) SafeCreate2(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.SafeCreate2(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) +} + +// SafeCreate2 is a paid mutator transaction binding the contract method 0x64e03087. +// +// Solidity: function safeCreate2(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorSession) SafeCreate2(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.SafeCreate2(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) +} + +// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. +// +// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactor) SafeCreate2AndTransfer(opts *bind.TransactOpts, salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.contract.Transact(opts, "safeCreate2AndTransfer", salt, initializationCode) +} + +// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. +// +// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactorySession) SafeCreate2AndTransfer(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.SafeCreate2AndTransfer(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) +} + +// SafeCreate2AndTransfer is a paid mutator transaction binding the contract method 0x29346003. +// +// Solidity: function safeCreate2AndTransfer(bytes32 salt, bytes initializationCode) payable returns(address deploymentAddress) +func (_ImmutableCreate2Factory *ImmutableCreate2FactoryTransactorSession) SafeCreate2AndTransfer(salt [32]byte, initializationCode []byte) (*types.Transaction, error) { + return _ImmutableCreate2Factory.Contract.SafeCreate2AndTransfer(&_ImmutableCreate2Factory.TransactOpts, salt, initializationCode) +} diff --git a/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go b/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go new file mode 100644 index 00000000..5b66bb1b --- /dev/null +++ b/v1/pkg/contracts/evm/tools/immutablecreate2factory.sol/ownable.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package immutablecreate2factory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OwnableMetaData contains all meta data concerning the Ownable contract. +var OwnableMetaData = &bind.MetaData{ + ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// OwnableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableMetaData.ABI instead. +var OwnableABI = OwnableMetaData.ABI + +// Ownable is an auto generated Go binding around an Ethereum contract. +type Ownable struct { + OwnableCaller // Read-only binding to the contract + OwnableTransactor // Write-only binding to the contract + OwnableFilterer // Log filterer for contract events +} + +// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableSession struct { + Contract *Ownable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableCallerSession struct { + Contract *OwnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableTransactorSession struct { + Contract *OwnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableRaw struct { + Contract *Ownable // Generic contract binding to access the raw methods on +} + +// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableCallerRaw struct { + Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableTransactorRaw struct { + Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. +func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { + contract, err := bindOwnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil +} + +// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { + contract, err := bindOwnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableCaller{contract: contract}, nil +} + +// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { + contract, err := bindOwnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableTransactor{contract: contract}, nil +} + +// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. +func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { + contract, err := bindOwnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableFilterer{contract: contract}, nil +} + +// bindOwnable binds a generic wrapper to an already deployed contract. +func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transact(opts, method, params...) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} diff --git a/v1/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go b/v1/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go new file mode 100644 index 00000000..96c102f2 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/interfaces/tridentconcentratedliquiditypoolfactory.sol/concentratedliquiditypoolfactory.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package tridentconcentratedliquiditypoolfactory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ConcentratedLiquidityPoolFactoryMetaData contains all meta data concerning the ConcentratedLiquidityPoolFactory contract. +var ConcentratedLiquidityPoolFactoryMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// ConcentratedLiquidityPoolFactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use ConcentratedLiquidityPoolFactoryMetaData.ABI instead. +var ConcentratedLiquidityPoolFactoryABI = ConcentratedLiquidityPoolFactoryMetaData.ABI + +// ConcentratedLiquidityPoolFactory is an auto generated Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactory struct { + ConcentratedLiquidityPoolFactoryCaller // Read-only binding to the contract + ConcentratedLiquidityPoolFactoryTransactor // Write-only binding to the contract + ConcentratedLiquidityPoolFactoryFilterer // Log filterer for contract events +} + +// ConcentratedLiquidityPoolFactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ConcentratedLiquidityPoolFactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConcentratedLiquidityPoolFactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ConcentratedLiquidityPoolFactorySession struct { + Contract *ConcentratedLiquidityPoolFactory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConcentratedLiquidityPoolFactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ConcentratedLiquidityPoolFactoryCallerSession struct { + Contract *ConcentratedLiquidityPoolFactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ConcentratedLiquidityPoolFactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ConcentratedLiquidityPoolFactoryTransactorSession struct { + Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConcentratedLiquidityPoolFactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryRaw struct { + Contract *ConcentratedLiquidityPoolFactory // Generic contract binding to access the raw methods on +} + +// ConcentratedLiquidityPoolFactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryCallerRaw struct { + Contract *ConcentratedLiquidityPoolFactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// ConcentratedLiquidityPoolFactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ConcentratedLiquidityPoolFactoryTransactorRaw struct { + Contract *ConcentratedLiquidityPoolFactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewConcentratedLiquidityPoolFactory creates a new instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactory(address common.Address, backend bind.ContractBackend) (*ConcentratedLiquidityPoolFactory, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactory{ConcentratedLiquidityPoolFactoryCaller: ConcentratedLiquidityPoolFactoryCaller{contract: contract}, ConcentratedLiquidityPoolFactoryTransactor: ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, ConcentratedLiquidityPoolFactoryFilterer: ConcentratedLiquidityPoolFactoryFilterer{contract: contract}}, nil +} + +// NewConcentratedLiquidityPoolFactoryCaller creates a new read-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryCaller(address common.Address, caller bind.ContractCaller) (*ConcentratedLiquidityPoolFactoryCaller, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryCaller{contract: contract}, nil +} + +// NewConcentratedLiquidityPoolFactoryTransactor creates a new write-only instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*ConcentratedLiquidityPoolFactoryTransactor, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryTransactor{contract: contract}, nil +} + +// NewConcentratedLiquidityPoolFactoryFilterer creates a new log filterer instance of ConcentratedLiquidityPoolFactory, bound to a specific deployed contract. +func NewConcentratedLiquidityPoolFactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*ConcentratedLiquidityPoolFactoryFilterer, error) { + contract, err := bindConcentratedLiquidityPoolFactory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ConcentratedLiquidityPoolFactoryFilterer{contract: contract}, nil +} + +// bindConcentratedLiquidityPoolFactory binds a generic wrapper to an already deployed contract. +func bindConcentratedLiquidityPoolFactory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ConcentratedLiquidityPoolFactoryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.ConcentratedLiquidityPoolFactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ConcentratedLiquidityPoolFactory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ConcentratedLiquidityPoolFactory.Contract.contract.Transact(opts, method, params...) +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCaller) GetPools(opts *bind.CallOpts, token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + var out []interface{} + err := _ConcentratedLiquidityPoolFactory.contract.Call(opts, &out, "getPools", token0, token1, startIndex, count) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactorySession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) +} + +// GetPools is a free data retrieval call binding the contract method 0x71a25812. +// +// Solidity: function getPools(address token0, address token1, uint256 startIndex, uint256 count) view returns(address[] pairPools) +func (_ConcentratedLiquidityPoolFactory *ConcentratedLiquidityPoolFactoryCallerSession) GetPools(token0 common.Address, token1 common.Address, startIndex *big.Int, count *big.Int) ([]common.Address, error) { + return _ConcentratedLiquidityPoolFactory.Contract.GetPools(&_ConcentratedLiquidityPoolFactory.CallOpts, token0, token1, startIndex, count) +} diff --git a/v1/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go b/v1/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go new file mode 100644 index 00000000..a829cc0d --- /dev/null +++ b/v1/pkg/contracts/evm/tools/interfaces/tridentipoolrouter.sol/ipoolrouter.go @@ -0,0 +1,326 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package tridentipoolrouter + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IPoolRouterExactInputParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactInputParams struct { + TokenIn common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + Path []common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactInputSingleParams struct { + TokenIn common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + Pool common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactOutputParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactOutputParams struct { + TokenIn common.Address + AmountOut *big.Int + AmountInMaximum *big.Int + Path []common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterExactOutputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type IPoolRouterExactOutputSingleParams struct { + TokenIn common.Address + AmountOut *big.Int + AmountInMaximum *big.Int + Pool common.Address + To common.Address + Unwrap bool +} + +// IPoolRouterMetaData contains all meta data concerning the IPoolRouter contract. +var IPoolRouterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"internalType\":\"structIPoolRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", +} + +// IPoolRouterABI is the input ABI used to generate the binding from. +// Deprecated: Use IPoolRouterMetaData.ABI instead. +var IPoolRouterABI = IPoolRouterMetaData.ABI + +// IPoolRouter is an auto generated Go binding around an Ethereum contract. +type IPoolRouter struct { + IPoolRouterCaller // Read-only binding to the contract + IPoolRouterTransactor // Write-only binding to the contract + IPoolRouterFilterer // Log filterer for contract events +} + +// IPoolRouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPoolRouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPoolRouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPoolRouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPoolRouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPoolRouterSession struct { + Contract *IPoolRouter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoolRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPoolRouterCallerSession struct { + Contract *IPoolRouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPoolRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPoolRouterTransactorSession struct { + Contract *IPoolRouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPoolRouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPoolRouterRaw struct { + Contract *IPoolRouter // Generic contract binding to access the raw methods on +} + +// IPoolRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPoolRouterCallerRaw struct { + Contract *IPoolRouterCaller // Generic read-only contract binding to access the raw methods on +} + +// IPoolRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPoolRouterTransactorRaw struct { + Contract *IPoolRouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPoolRouter creates a new instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouter(address common.Address, backend bind.ContractBackend) (*IPoolRouter, error) { + contract, err := bindIPoolRouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPoolRouter{IPoolRouterCaller: IPoolRouterCaller{contract: contract}, IPoolRouterTransactor: IPoolRouterTransactor{contract: contract}, IPoolRouterFilterer: IPoolRouterFilterer{contract: contract}}, nil +} + +// NewIPoolRouterCaller creates a new read-only instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterCaller(address common.Address, caller bind.ContractCaller) (*IPoolRouterCaller, error) { + contract, err := bindIPoolRouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPoolRouterCaller{contract: contract}, nil +} + +// NewIPoolRouterTransactor creates a new write-only instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*IPoolRouterTransactor, error) { + contract, err := bindIPoolRouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPoolRouterTransactor{contract: contract}, nil +} + +// NewIPoolRouterFilterer creates a new log filterer instance of IPoolRouter, bound to a specific deployed contract. +func NewIPoolRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*IPoolRouterFilterer, error) { + contract, err := bindIPoolRouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPoolRouterFilterer{contract: contract}, nil +} + +// bindIPoolRouter binds a generic wrapper to an already deployed contract. +func bindIPoolRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPoolRouterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoolRouter *IPoolRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolRouter.Contract.IPoolRouterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoolRouter *IPoolRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolRouter.Contract.IPoolRouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolRouter *IPoolRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolRouter.Contract.IPoolRouterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IPoolRouter *IPoolRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPoolRouter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IPoolRouter *IPoolRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPoolRouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPoolRouter *IPoolRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPoolRouter.Contract.contract.Transact(opts, method, params...) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactor) ExactInput(opts *bind.TransactOpts, params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactInput", params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0x363a9dba. +// +// Solidity: function exactInput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactInput(params IPoolRouterExactInputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInput(&_IPoolRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactor) ExactInputSingle(opts *bind.TransactOpts, params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactInputSingle", params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0xc07f5c32. +// +// Solidity: function exactInputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountOut) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactInputSingle(params IPoolRouterExactInputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactInputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactor) ExactOutput(opts *bind.TransactOpts, params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactOutput", params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xbee20e05. +// +// Solidity: function exactOutput((address,uint256,uint256,address[],address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutput(params IPoolRouterExactOutputParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutput(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactor) ExactOutputSingle(opts *bind.TransactOpts, params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "exactOutputSingle", params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0x54c1b650. +// +// Solidity: function exactOutputSingle((address,uint256,uint256,address,address,bool) params) payable returns(uint256 amountIn) +func (_IPoolRouter *IPoolRouterTransactorSession) ExactOutputSingle(params IPoolRouterExactOutputSingleParams) (*types.Transaction, error) { + return _IPoolRouter.Contract.ExactOutputSingle(&_IPoolRouter.TransactOpts, params) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterTransactor) Sweep(opts *bind.TransactOpts, token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.contract.Transact(opts, "sweep", token, amount, recipient) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) +} + +// Sweep is a paid mutator transaction binding the contract method 0xdc2c256f. +// +// Solidity: function sweep(address token, uint256 amount, address recipient) payable returns() +func (_IPoolRouter *IPoolRouterTransactorSession) Sweep(token common.Address, amount *big.Int, recipient common.Address) (*types.Transaction, error) { + return _IPoolRouter.Contract.Sweep(&_IPoolRouter.TransactOpts, token, amount, recipient) +} diff --git a/v1/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go b/v1/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go new file mode 100644 index 00000000..183d90fe --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetainteractor.sol/zetainteractor.go @@ -0,0 +1,695 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetainteractor + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInteractorMetaData contains all meta data concerning the ZetaInteractor contract. +var ZetaInteractorMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connector\",\"outputs\":[{\"internalType\":\"contractZetaConnector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"interactorsByChainId\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"contractAddress\",\"type\":\"bytes\"}],\"name\":\"setInteractorByChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZetaInteractorABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaInteractorMetaData.ABI instead. +var ZetaInteractorABI = ZetaInteractorMetaData.ABI + +// ZetaInteractor is an auto generated Go binding around an Ethereum contract. +type ZetaInteractor struct { + ZetaInteractorCaller // Read-only binding to the contract + ZetaInteractorTransactor // Write-only binding to the contract + ZetaInteractorFilterer // Log filterer for contract events +} + +// ZetaInteractorCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaInteractorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaInteractorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaInteractorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInteractorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaInteractorSession struct { + Contract *ZetaInteractor // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaInteractorCallerSession struct { + Contract *ZetaInteractorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaInteractorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaInteractorTransactorSession struct { + Contract *ZetaInteractorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInteractorRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaInteractorRaw struct { + Contract *ZetaInteractor // Generic contract binding to access the raw methods on +} + +// ZetaInteractorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaInteractorCallerRaw struct { + Contract *ZetaInteractorCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaInteractorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaInteractorTransactorRaw struct { + Contract *ZetaInteractorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaInteractor creates a new instance of ZetaInteractor, bound to a specific deployed contract. +func NewZetaInteractor(address common.Address, backend bind.ContractBackend) (*ZetaInteractor, error) { + contract, err := bindZetaInteractor(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaInteractor{ZetaInteractorCaller: ZetaInteractorCaller{contract: contract}, ZetaInteractorTransactor: ZetaInteractorTransactor{contract: contract}, ZetaInteractorFilterer: ZetaInteractorFilterer{contract: contract}}, nil +} + +// NewZetaInteractorCaller creates a new read-only instance of ZetaInteractor, bound to a specific deployed contract. +func NewZetaInteractorCaller(address common.Address, caller bind.ContractCaller) (*ZetaInteractorCaller, error) { + contract, err := bindZetaInteractor(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorCaller{contract: contract}, nil +} + +// NewZetaInteractorTransactor creates a new write-only instance of ZetaInteractor, bound to a specific deployed contract. +func NewZetaInteractorTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInteractorTransactor, error) { + contract, err := bindZetaInteractor(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaInteractorTransactor{contract: contract}, nil +} + +// NewZetaInteractorFilterer creates a new log filterer instance of ZetaInteractor, bound to a specific deployed contract. +func NewZetaInteractorFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInteractorFilterer, error) { + contract, err := bindZetaInteractor(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaInteractorFilterer{contract: contract}, nil +} + +// bindZetaInteractor binds a generic wrapper to an already deployed contract. +func bindZetaInteractor(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaInteractorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractor *ZetaInteractorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractor.Contract.ZetaInteractorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractor *ZetaInteractorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractor.Contract.ZetaInteractorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractor *ZetaInteractorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractor.Contract.ZetaInteractorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInteractor *ZetaInteractorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInteractor.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInteractor *ZetaInteractorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractor.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInteractor *ZetaInteractorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInteractor.Contract.contract.Transact(opts, method, params...) +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractor *ZetaInteractorCaller) Connector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractor.contract.Call(opts, &out, "connector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractor *ZetaInteractorSession) Connector() (common.Address, error) { + return _ZetaInteractor.Contract.Connector(&_ZetaInteractor.CallOpts) +} + +// Connector is a free data retrieval call binding the contract method 0x83f3084f. +// +// Solidity: function connector() view returns(address) +func (_ZetaInteractor *ZetaInteractorCallerSession) Connector() (common.Address, error) { + return _ZetaInteractor.Contract.Connector(&_ZetaInteractor.CallOpts) +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractor *ZetaInteractorCaller) InteractorsByChainId(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) { + var out []interface{} + err := _ZetaInteractor.contract.Call(opts, &out, "interactorsByChainId", arg0) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractor *ZetaInteractorSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { + return _ZetaInteractor.Contract.InteractorsByChainId(&_ZetaInteractor.CallOpts, arg0) +} + +// InteractorsByChainId is a free data retrieval call binding the contract method 0x2618143f. +// +// Solidity: function interactorsByChainId(uint256 ) view returns(bytes) +func (_ZetaInteractor *ZetaInteractorCallerSession) InteractorsByChainId(arg0 *big.Int) ([]byte, error) { + return _ZetaInteractor.Contract.InteractorsByChainId(&_ZetaInteractor.CallOpts, arg0) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractor *ZetaInteractorCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractor.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractor *ZetaInteractorSession) Owner() (common.Address, error) { + return _ZetaInteractor.Contract.Owner(&_ZetaInteractor.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ZetaInteractor *ZetaInteractorCallerSession) Owner() (common.Address, error) { + return _ZetaInteractor.Contract.Owner(&_ZetaInteractor.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractor *ZetaInteractorCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaInteractor.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractor *ZetaInteractorSession) PendingOwner() (common.Address, error) { + return _ZetaInteractor.Contract.PendingOwner(&_ZetaInteractor.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ZetaInteractor *ZetaInteractorCallerSession) PendingOwner() (common.Address, error) { + return _ZetaInteractor.Contract.PendingOwner(&_ZetaInteractor.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractor *ZetaInteractorTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractor.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractor *ZetaInteractorSession) AcceptOwnership() (*types.Transaction, error) { + return _ZetaInteractor.Contract.AcceptOwnership(&_ZetaInteractor.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ZetaInteractor *ZetaInteractorTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _ZetaInteractor.Contract.AcceptOwnership(&_ZetaInteractor.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractor *ZetaInteractorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInteractor.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractor *ZetaInteractorSession) RenounceOwnership() (*types.Transaction, error) { + return _ZetaInteractor.Contract.RenounceOwnership(&_ZetaInteractor.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ZetaInteractor *ZetaInteractorTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ZetaInteractor.Contract.RenounceOwnership(&_ZetaInteractor.TransactOpts) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractor *ZetaInteractorTransactor) SetInteractorByChainId(opts *bind.TransactOpts, destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractor.contract.Transact(opts, "setInteractorByChainId", destinationChainId, contractAddress) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractor *ZetaInteractorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractor.Contract.SetInteractorByChainId(&_ZetaInteractor.TransactOpts, destinationChainId, contractAddress) +} + +// SetInteractorByChainId is a paid mutator transaction binding the contract method 0x4fd3f7d7. +// +// Solidity: function setInteractorByChainId(uint256 destinationChainId, bytes contractAddress) returns() +func (_ZetaInteractor *ZetaInteractorTransactorSession) SetInteractorByChainId(destinationChainId *big.Int, contractAddress []byte) (*types.Transaction, error) { + return _ZetaInteractor.Contract.SetInteractorByChainId(&_ZetaInteractor.TransactOpts, destinationChainId, contractAddress) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractor *ZetaInteractorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractor.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractor *ZetaInteractorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractor.Contract.TransferOwnership(&_ZetaInteractor.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ZetaInteractor *ZetaInteractorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ZetaInteractor.Contract.TransferOwnership(&_ZetaInteractor.TransactOpts, newOwner) +} + +// ZetaInteractorOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ZetaInteractor contract. +type ZetaInteractorOwnershipTransferStartedIterator struct { + Event *ZetaInteractorOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaInteractorOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaInteractorOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaInteractorOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaInteractorOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ZetaInteractor contract. +type ZetaInteractorOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractor.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ZetaInteractorOwnershipTransferStartedIterator{contract: _ZetaInteractor.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ZetaInteractorOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractor.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaInteractorOwnershipTransferStarted) + if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) ParseOwnershipTransferStarted(log types.Log) (*ZetaInteractorOwnershipTransferStarted, error) { + event := new(ZetaInteractorOwnershipTransferStarted) + if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaInteractorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ZetaInteractor contract. +type ZetaInteractorOwnershipTransferredIterator struct { + Event *ZetaInteractorOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaInteractorOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaInteractorOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaInteractorOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaInteractorOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaInteractorOwnershipTransferred represents a OwnershipTransferred event raised by the ZetaInteractor contract. +type ZetaInteractorOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ZetaInteractorOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractor.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ZetaInteractorOwnershipTransferredIterator{contract: _ZetaInteractor.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ZetaInteractorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ZetaInteractor.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaInteractorOwnershipTransferred) + if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ZetaInteractor *ZetaInteractorFilterer) ParseOwnershipTransferred(log types.Log) (*ZetaInteractorOwnershipTransferred, error) { + event := new(ZetaInteractorOwnershipTransferred) + if err := _ZetaInteractor.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go new file mode 100644 index 00000000..df6236ee --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go @@ -0,0 +1,263 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ISwapRouterPancakeExactInputParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterPancakeExactInputParams struct { + Path []byte + Recipient common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int +} + +// ISwapRouterPancakeExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterPancakeExactInputSingleParams struct { + TokenIn common.Address + TokenOut common.Address + Fee *big.Int + Recipient common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + SqrtPriceLimitX96 *big.Int +} + +// ISwapRouterPancakeMetaData contains all meta data concerning the ISwapRouterPancake contract. +var ISwapRouterPancakeMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouterPancake.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouterPancake.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ISwapRouterPancakeABI is the input ABI used to generate the binding from. +// Deprecated: Use ISwapRouterPancakeMetaData.ABI instead. +var ISwapRouterPancakeABI = ISwapRouterPancakeMetaData.ABI + +// ISwapRouterPancake is an auto generated Go binding around an Ethereum contract. +type ISwapRouterPancake struct { + ISwapRouterPancakeCaller // Read-only binding to the contract + ISwapRouterPancakeTransactor // Write-only binding to the contract + ISwapRouterPancakeFilterer // Log filterer for contract events +} + +// ISwapRouterPancakeCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISwapRouterPancakeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISwapRouterPancakeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISwapRouterPancakeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISwapRouterPancakeSession struct { + Contract *ISwapRouterPancake // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterPancakeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISwapRouterPancakeCallerSession struct { + Contract *ISwapRouterPancakeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISwapRouterPancakeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISwapRouterPancakeTransactorSession struct { + Contract *ISwapRouterPancakeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterPancakeRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISwapRouterPancakeRaw struct { + Contract *ISwapRouterPancake // Generic contract binding to access the raw methods on +} + +// ISwapRouterPancakeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISwapRouterPancakeCallerRaw struct { + Contract *ISwapRouterPancakeCaller // Generic read-only contract binding to access the raw methods on +} + +// ISwapRouterPancakeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISwapRouterPancakeTransactorRaw struct { + Contract *ISwapRouterPancakeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISwapRouterPancake creates a new instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancake(address common.Address, backend bind.ContractBackend) (*ISwapRouterPancake, error) { + contract, err := bindISwapRouterPancake(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISwapRouterPancake{ISwapRouterPancakeCaller: ISwapRouterPancakeCaller{contract: contract}, ISwapRouterPancakeTransactor: ISwapRouterPancakeTransactor{contract: contract}, ISwapRouterPancakeFilterer: ISwapRouterPancakeFilterer{contract: contract}}, nil +} + +// NewISwapRouterPancakeCaller creates a new read-only instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeCaller(address common.Address, caller bind.ContractCaller) (*ISwapRouterPancakeCaller, error) { + contract, err := bindISwapRouterPancake(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeCaller{contract: contract}, nil +} + +// NewISwapRouterPancakeTransactor creates a new write-only instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeTransactor(address common.Address, transactor bind.ContractTransactor) (*ISwapRouterPancakeTransactor, error) { + contract, err := bindISwapRouterPancake(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeTransactor{contract: contract}, nil +} + +// NewISwapRouterPancakeFilterer creates a new log filterer instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeFilterer(address common.Address, filterer bind.ContractFilterer) (*ISwapRouterPancakeFilterer, error) { + contract, err := bindISwapRouterPancake(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeFilterer{contract: contract}, nil +} + +// bindISwapRouterPancake binds a generic wrapper to an already deployed contract. +func bindISwapRouterPancake(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISwapRouterPancakeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouterPancake *ISwapRouterPancakeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouterPancake.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.contract.Transact(opts, method, params...) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInput(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "exactInput", params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInputSingle(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "exactInputSingle", params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go new file mode 100644 index 00000000..9268e000 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go new file mode 100644 index 00000000..91912db2 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go @@ -0,0 +1,1067 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerPancakeV3MetaData contains all meta data concerning the ZetaTokenConsumerPancakeV3 contract. +var ZetaTokenConsumerPancakeV3MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pancakeV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"zetaPoolFee_\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"tokenPoolFee_\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pancakeV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouterPancake\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Factory\",\"outputs\":[{\"internalType\":\"contractIUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea26469706673582212208a18b8a2abc958aa0cad934a5005344d1b05623bd9c3bfa606e20b2e17df210364736f6c63430008070033", +} + +// ZetaTokenConsumerPancakeV3ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.ABI instead. +var ZetaTokenConsumerPancakeV3ABI = ZetaTokenConsumerPancakeV3MetaData.ABI + +// ZetaTokenConsumerPancakeV3Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.Bin instead. +var ZetaTokenConsumerPancakeV3Bin = ZetaTokenConsumerPancakeV3MetaData.Bin + +// DeployZetaTokenConsumerPancakeV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerPancakeV3 to it. +func DeployZetaTokenConsumerPancakeV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, pancakeV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerPancakeV3, error) { + parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerPancakeV3Bin), backend, zetaToken_, pancakeV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil +} + +// ZetaTokenConsumerPancakeV3 is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3 struct { + ZetaTokenConsumerPancakeV3Caller // Read-only binding to the contract + ZetaTokenConsumerPancakeV3Transactor // Write-only binding to the contract + ZetaTokenConsumerPancakeV3Filterer // Log filterer for contract events +} + +// ZetaTokenConsumerPancakeV3Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerPancakeV3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerPancakeV3Session struct { + Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerPancakeV3CallerSession struct { + Contract *ZetaTokenConsumerPancakeV3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerPancakeV3TransactorSession struct { + Contract *ZetaTokenConsumerPancakeV3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Raw struct { + Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerPancakeV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3CallerRaw struct { + Contract *ZetaTokenConsumerPancakeV3Caller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerPancakeV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3TransactorRaw struct { + Contract *ZetaTokenConsumerPancakeV3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerPancakeV3 creates a new instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerPancakeV3, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerPancakeV3Caller creates a new read-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerPancakeV3Caller, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Caller{contract: contract}, nil +} + +// NewZetaTokenConsumerPancakeV3Transactor creates a new write-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerPancakeV3Transactor, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Transactor{contract: contract}, nil +} + +// NewZetaTokenConsumerPancakeV3Filterer creates a new log filterer instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerPancakeV3Filterer, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Filterer{contract: contract}, nil +} + +// bindZetaTokenConsumerPancakeV3 binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerPancakeV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Transact(opts, method, params...) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "WETH9Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) PancakeV3Router(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "pancakeV3Router") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) PancakeV3Router() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) PancakeV3Router() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) TokenPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "tokenPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "uniswapV3Factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) +} + +// ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerPancakeV3EthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3EthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3EthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3EthExchangedForZeta, error) { + event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerPancakeV3TokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3TokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3TokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3TokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerPancakeV3ZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerPancakeV3ZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go new file mode 100644 index 00000000..65658391 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV3ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV3Errors contract. +var ZetaTokenConsumerUniV3ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerUniV3ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV3ErrorsMetaData.ABI instead. +var ZetaTokenConsumerUniV3ErrorsABI = ZetaTokenConsumerUniV3ErrorsMetaData.ABI + +// ZetaTokenConsumerUniV3Errors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Errors struct { + ZetaTokenConsumerUniV3ErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerUniV3ErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerUniV3ErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV3ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV3ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV3ErrorsSession struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV3ErrorsCallerSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV3ErrorsTransactorSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsRaw struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCallerRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV3Errors creates a new instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3Errors, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Errors{ZetaTokenConsumerUniV3ErrorsCaller: ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV3ErrorsTransactor: ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV3ErrorsFilterer: ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3ErrorsCaller, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3ErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3ErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV3Errors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV3Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV3ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go new file mode 100644 index 00000000..b81ea215 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/weth9.go @@ -0,0 +1,265 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9Transactor) DepositTo(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "depositTo", to) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9Session) DepositTo(to common.Address) (*types.Transaction, error) { + return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) +} + +// DepositTo is a paid mutator transaction binding the contract method 0xb760faf9. +// +// Solidity: function depositTo(address to) payable returns() +func (_WETH9 *WETH9TransactorSession) DepositTo(to common.Address) (*types.Transaction, error) { + return _WETH9.Contract.DepositTo(&_WETH9.TransactOpts, to) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9Transactor) WithdrawTo(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdrawTo", to, value) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9Session) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) +} + +// WithdrawTo is a paid mutator transaction binding the contract method 0x205c2878. +// +// Solidity: function withdrawTo(address to, uint256 value) returns() +func (_WETH9 *WETH9TransactorSession) WithdrawTo(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.WithdrawTo(&_WETH9.TransactOpts, to, value) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go new file mode 100644 index 00000000..178c3599 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertrident.go @@ -0,0 +1,974 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerTridentMetaData contains all meta data concerning the ZetaTokenConsumerTrident contract. +var ZetaTokenConsumerTridentMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolFactory\",\"outputs\":[{\"internalType\":\"contractConcentratedLiquidityPoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tridentRouter\",\"outputs\":[{\"internalType\":\"contractIPoolRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6101006040523480156200001257600080fd5b5060405162002b5a38038062002b5a833981810160405281019062000038919062000245565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200030a565b6000815190506200023f81620002f0565b92915050565b60008060008060808587031215620002625762000261620002eb565b5b600062000272878288016200022e565b945050602062000285878288016200022e565b935050604062000298878288016200022e565b9250506060620002ab878288016200022e565b91505092959194509250565b6000620002c482620002cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002fb81620002b7565b81146200030757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6127466200041460003960008181610316015281816107000152818161080c01528181610b4201528181610d14015281816111e301526112cf0152600081816104620152818161068501528181610a4801528181610c5901528181610e7f01528181610f7401528181611128015261152b0152600081816102ea01528181610557015281816107dc01528181610c0f01528181610c7b01528181610cc701528181610dd9015281816110de0152818161114a0152818161119601526114b60152600081816102c9015281816106d4015281816107bb01528181610ce8015281816111b7015261129e01526127466000f3fe60806040526004361061007f5760003560e01c806354c49a2a1161004e57806354c49a2a1461014e57806364b5528a1461018b57806380801f84146101b6578063a53fb10b146101e157610086565b8063013b2ff81461008b57806321e093b1146100bb5780632405620a146100e65780634219dc401461012357610086565b3661008657005b600080fd5b6100a560048036038101906100a09190611c10565b61021e565b6040516100b2919061231a565b60405180910390f35b3480156100c757600080fd5b506100d0610555565b6040516100dd91906120ca565b60405180910390f35b3480156100f257600080fd5b5061010d60048036038101906101089190611c50565b610579565b60405161011a919061231a565b60405180910390f35b34801561012f57600080fd5b50610138610b40565b6040516101459190612205565b60405180910390f35b34801561015a57600080fd5b5061017560048036038101906101709190611cb7565b610b64565b604051610182919061231a565b60405180910390f35b34801561019757600080fd5b506101a0610f72565b6040516101ad9190612220565b60405180910390f35b3480156101c257600080fd5b506101cb610f96565b6040516101d891906121ea565b60405180910390f35b3480156101ed57600080fd5b5061020860048036038101906102039190611c50565b610f9b565b604051610215919061231a565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610286576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102c1576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061030e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610375949392919061210e565b60006040518083038186803b15801561038d57600080fd5b505afa1580156103a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906103ca9190611d0a565b905060006040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018781526020018360008151811061041657610415612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c3234846040518363ffffffff1660e01b81526004016104ba91906122ff565b6020604051808303818588803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061050c9190611d80565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053f929190612335565b60405180910390a1809550505050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610618576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610653576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106803330848673ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b6106cb7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806106f8857f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b815260040161075f949392919061210e565b60006040518083038186803b15801561077757600080fd5b505afa15801561078b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b49190611d0a565b90506108007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161086b949392919061210e565b60006040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108c09190611d0a565b90506000600267ffffffffffffffff8111156108df576108de612561565b5b60405190808252806020026020018201604052801561090d5781602001602082028036833780820191505090505b5090508260008151811061092457610923612532565b5b6020026020010151816000815181106109405761093f612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061098e5761098d612532565b5b6020026020010151816001815181106109aa576109a9612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b8152600401610a9f91906122dd565b602060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190611d80565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8a8a83604051610b26939291906121b3565b60405180910390a180975050505050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bcc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610c07576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c543330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b610cbf7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b600080610d0c7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401610d73949392919061210e565b60006040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dc89190611d0a565b905060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200187815260200188815260200183600081518110610e3357610e32612532565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c07f5c32836040518263ffffffff1660e01b8152600401610ed691906122ff565b602060405180830381600087803b158015610ef057600080fd5b505af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190611d80565b90507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8782604051610f5b929190612335565b60405180910390a180955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600090565b60008060009054906101000a900460ff1615610fe3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110645750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561109b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111233330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661168d909392919063ffffffff16565b61118e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117169092919063ffffffff16565b6000806111db7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061163d565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128484600060016040518563ffffffff1660e01b8152600401611242949392919061210e565b60006040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112979190611d0a565b90506112c37f00000000000000000000000000000000000000000000000000000000000000008761163d565b809350819450505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166371a258128585600060016040518563ffffffff1660e01b815260040161132e949392919061210e565b60006040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113839190611d0a565b90506000600267ffffffffffffffff8111156113a2576113a1612561565b5b6040519080825280602002602001820160405280156113d05781602001602082028036833780820191505090505b509050826000815181106113e7576113e6612532565b5b60200260200101518160008151811061140357611402612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508160008151811061145157611450612532565b5b60200260200101518160018151811061146d5761146c612532565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018b81526020018381526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663363a9dba836040518263ffffffff1660e01b815260040161158291906122dd565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190611d80565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8a8a83604051611609939291906121b3565b60405180910390a18097505050505050505060008060006101000a81548160ff021916908315150217905550949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16101561167f57838391509150611686565b8284915091505b9250929050565b611710846323b872dd60e01b8585856040516024016116ae93929190612153565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b50505050565b60008114806117af575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161175d9291906120e5565b60206040518083038186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ad9190611d80565b145b6117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906122bd565b60405180910390fd5b61186f8363095ea7b360e01b848460405160240161180d92919061218a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611874565b505050565b60006118d6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661193b9092919063ffffffff16565b905060008151111561193657808060200190518101906118f69190611d53565b611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c9061229d565b60405180910390fd5b5b505050565b606061194a8484600085611953565b90509392505050565b606082471015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061225d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119c191906120b3565b60006040518083038185875af1925050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5091509150611a1487838387611a20565b92505050949350505050565b60608315611a8357600083511415611a7b57611a3b85611a96565b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a719061227d565b60405180910390fd5b5b829050611a8e565b611a8d8383611ab9565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611acc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00919061223b565b60405180910390fd5b6000611b1c611b1784612383565b61235e565b90508083825260208201905082856020860282011115611b3f57611b3e612595565b5b60005b85811015611b6f5781611b558882611b8e565b845260208401935060208301925050600181019050611b42565b5050509392505050565b600081359050611b88816126cb565b92915050565b600081519050611b9d816126cb565b92915050565b600082601f830112611bb857611bb7612590565b5b8151611bc8848260208601611b09565b91505092915050565b600081519050611be0816126e2565b92915050565b600081359050611bf5816126f9565b92915050565b600081519050611c0a816126f9565b92915050565b60008060408385031215611c2757611c2661259f565b5b6000611c3585828601611b79565b9250506020611c4685828601611be6565b9150509250929050565b60008060008060808587031215611c6a57611c6961259f565b5b6000611c7887828801611b79565b9450506020611c8987828801611be6565b9350506040611c9a87828801611b79565b9250506060611cab87828801611be6565b91505092959194509250565b600080600060608486031215611cd057611ccf61259f565b5b6000611cde86828701611b79565b9350506020611cef86828701611be6565b9250506040611d0086828701611be6565b9150509250925092565b600060208284031215611d2057611d1f61259f565b5b600082015167ffffffffffffffff811115611d3e57611d3d61259a565b5b611d4a84828501611ba3565b91505092915050565b600060208284031215611d6957611d6861259f565b5b6000611d7784828501611bd1565b91505092915050565b600060208284031215611d9657611d9561259f565b5b6000611da484828501611bfb565b91505092915050565b6000611db98383611dc5565b60208301905092915050565b611dce8161241a565b82525050565b611ddd8161241a565b82525050565b6000611dee826123bf565b611df881856123ed565b9350611e03836123af565b8060005b83811015611e34578151611e1b8882611dad565b9750611e26836123e0565b925050600181019050611e07565b5085935050505092915050565b611e4a8161242c565b82525050565b611e598161242c565b82525050565b6000611e6a826123ca565b611e7481856123fe565b9350611e848185602086016124ce565b80840191505092915050565b611e9981612462565b82525050565b611ea881612474565b82525050565b611eb781612486565b82525050565b611ec681612498565b82525050565b6000611ed7826123d5565b611ee18185612409565b9350611ef18185602086016124ce565b611efa816125a4565b840191505092915050565b6000611f12602683612409565b9150611f1d826125b5565b604082019050919050565b6000611f35601d83612409565b9150611f4082612604565b602082019050919050565b6000611f58602a83612409565b9150611f638261262d565b604082019050919050565b6000611f7b603683612409565b9150611f868261267c565b604082019050919050565b600060c083016000830151611fa96000860182611dc5565b506020830151611fbc6020860182612095565b506040830151611fcf6040860182612095565b5060608301518482036060860152611fe78282611de3565b9150506080830151611ffc6080860182611dc5565b5060a083015161200f60a0860182611e41565b508091505092915050565b60c0820160008201516120306000850182611dc5565b5060208201516120436020850182612095565b5060408201516120566040850182612095565b5060608201516120696060850182611dc5565b50608082015161207c6080850182611dc5565b5060a082015161208f60a0850182611e41565b50505050565b61209e81612458565b82525050565b6120ad81612458565b82525050565b60006120bf8284611e5f565b915081905092915050565b60006020820190506120df6000830184611dd4565b92915050565b60006040820190506120fa6000830185611dd4565b6121076020830184611dd4565b9392505050565b60006080820190506121236000830187611dd4565b6121306020830186611dd4565b61213d6040830185611eae565b61214a6060830184611ebd565b95945050505050565b60006060820190506121686000830186611dd4565b6121756020830185611dd4565b61218260408301846120a4565b949350505050565b600060408201905061219f6000830185611dd4565b6121ac60208301846120a4565b9392505050565b60006060820190506121c86000830186611dd4565b6121d560208301856120a4565b6121e260408301846120a4565b949350505050565b60006020820190506121ff6000830184611e50565b92915050565b600060208201905061221a6000830184611e90565b92915050565b60006020820190506122356000830184611e9f565b92915050565b600060208201905081810360008301526122558184611ecc565b905092915050565b6000602082019050818103600083015261227681611f05565b9050919050565b6000602082019050818103600083015261229681611f28565b9050919050565b600060208201905081810360008301526122b681611f4b565b9050919050565b600060208201905081810360008301526122d681611f6e565b9050919050565b600060208201905081810360008301526122f78184611f91565b905092915050565b600060c082019050612314600083018461201a565b92915050565b600060208201905061232f60008301846120a4565b92915050565b600060408201905061234a60008301856120a4565b61235760208301846120a4565b9392505050565b6000612368612379565b90506123748282612501565b919050565b6000604051905090565b600067ffffffffffffffff82111561239e5761239d612561565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061242582612438565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061246d826124aa565b9050919050565b600061247f826124aa565b9050919050565b600061249182612458565b9050919050565b60006124a382612458565b9050919050565b60006124b5826124bc565b9050919050565b60006124c782612438565b9050919050565b60005b838110156124ec5780820151818401526020810190506124d1565b838111156124fb576000848401525b50505050565b61250a826125a4565b810181811067ffffffffffffffff8211171561252957612528612561565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6126d48161241a565b81146126df57600080fd5b50565b6126eb8161242c565b81146126f657600080fd5b50565b61270281612458565b811461270d57600080fd5b5056fea264697066735822122052bfd21f617a098a8e9f7179f87b0511ff7b45f29043d147ad39b847dabfaf1364736f6c63430008070033", +} + +// ZetaTokenConsumerTridentABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerTridentMetaData.ABI instead. +var ZetaTokenConsumerTridentABI = ZetaTokenConsumerTridentMetaData.ABI + +// ZetaTokenConsumerTridentBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerTridentMetaData.Bin instead. +var ZetaTokenConsumerTridentBin = ZetaTokenConsumerTridentMetaData.Bin + +// DeployZetaTokenConsumerTrident deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerTrident to it. +func DeployZetaTokenConsumerTrident(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, WETH9Address_ common.Address, poolFactory_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerTrident, error) { + parsed, err := ZetaTokenConsumerTridentMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerTridentBin), backend, zetaToken_, uniswapV3Router_, WETH9Address_, poolFactory_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil +} + +// ZetaTokenConsumerTrident is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerTrident struct { + ZetaTokenConsumerTridentCaller // Read-only binding to the contract + ZetaTokenConsumerTridentTransactor // Write-only binding to the contract + ZetaTokenConsumerTridentFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerTridentCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerTridentFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerTridentSession struct { + Contract *ZetaTokenConsumerTrident // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerTridentCallerSession struct { + Contract *ZetaTokenConsumerTridentCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerTridentTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerTridentTransactorSession struct { + Contract *ZetaTokenConsumerTridentTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentRaw struct { + Contract *ZetaTokenConsumerTrident // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentCallerRaw struct { + Contract *ZetaTokenConsumerTridentCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentTransactorRaw struct { + Contract *ZetaTokenConsumerTridentTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerTrident creates a new instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTrident(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTrident, error) { + contract, err := bindZetaTokenConsumerTrident(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTrident{ZetaTokenConsumerTridentCaller: ZetaTokenConsumerTridentCaller{contract: contract}, ZetaTokenConsumerTridentTransactor: ZetaTokenConsumerTridentTransactor{contract: contract}, ZetaTokenConsumerTridentFilterer: ZetaTokenConsumerTridentFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerTridentCaller creates a new read-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentCaller, error) { + contract, err := bindZetaTokenConsumerTrident(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentTransactor creates a new write-only instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentTransactor, error) { + contract, err := bindZetaTokenConsumerTrident(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentFilterer creates a new log filterer instance of ZetaTokenConsumerTrident, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentFilterer, error) { + contract, err := bindZetaTokenConsumerTrident(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerTrident binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerTrident(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerTridentMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaTokenConsumerTridentTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTrident.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.contract.Transact(opts, method, params...) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerTrident.Contract.HasZetaLiquidity(&_ZetaTokenConsumerTrident.CallOpts) +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) PoolFactory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "poolFactory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) PoolFactory() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) +} + +// PoolFactory is a free data retrieval call binding the contract method 0x4219dc40. +// +// Solidity: function poolFactory() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) PoolFactory() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.PoolFactory(&_ZetaTokenConsumerTrident.CallOpts) +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) TridentRouter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "tridentRouter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) TridentRouter() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) +} + +// TridentRouter is a free data retrieval call binding the contract method 0x64b5528a. +// +// Solidity: function tridentRouter() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) TridentRouter() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.TridentRouter(&_ZetaTokenConsumerTrident.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerTrident.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentCallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerTrident.Contract.ZetaToken(&_ZetaTokenConsumerTrident.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetEthFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetTokenFromZeta(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromEth(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.GetZetaFromToken(&_ZetaTokenConsumerTrident.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentTransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerTrident.Contract.Receive(&_ZetaTokenConsumerTrident.TransactOpts) +} + +// ZetaTokenConsumerTridentEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentEthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerTridentEthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentEthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentEthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentEthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentEthExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentEthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentEthExchangedForZeta, error) { + event := new(ZetaTokenConsumerTridentEthExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentTokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerTridentTokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentTokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentTokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentTokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentTokenExchangedForZetaIterator{contract: _ZetaTokenConsumerTrident.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentTokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerTridentTokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerTridentTokenExchangedForZeta) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerTridentZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentZetaExchangedForEthIterator{contract: _ZetaTokenConsumerTrident.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerTridentZetaExchangedForEth) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerTridentZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerTridentZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerTridentZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerTridentZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerTrident contract. +type ZetaTokenConsumerTridentZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerTridentZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerTrident.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerTridentZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerTrident.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerTrident *ZetaTokenConsumerTridentFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerTridentZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerTridentZetaExchangedForToken) + if err := _ZetaTokenConsumerTrident.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go new file mode 100644 index 00000000..da424409 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumertrident.strategy.sol/zetatokenconsumertridenterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumertrident + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerTridentErrorsMetaData contains all meta data concerning the ZetaTokenConsumerTridentErrors contract. +var ZetaTokenConsumerTridentErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerTridentErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerTridentErrorsMetaData.ABI instead. +var ZetaTokenConsumerTridentErrorsABI = ZetaTokenConsumerTridentErrorsMetaData.ABI + +// ZetaTokenConsumerTridentErrors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrors struct { + ZetaTokenConsumerTridentErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerTridentErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerTridentErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerTridentErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerTridentErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerTridentErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerTridentErrorsSession struct { + Contract *ZetaTokenConsumerTridentErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerTridentErrorsCallerSession struct { + Contract *ZetaTokenConsumerTridentErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerTridentErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerTridentErrorsTransactorSession struct { + Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerTridentErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsRaw struct { + Contract *ZetaTokenConsumerTridentErrors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsCallerRaw struct { + Contract *ZetaTokenConsumerTridentErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerTridentErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerTridentErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerTridentErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerTridentErrors creates a new instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerTridentErrors, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrors{ZetaTokenConsumerTridentErrorsCaller: ZetaTokenConsumerTridentErrorsCaller{contract: contract}, ZetaTokenConsumerTridentErrorsTransactor: ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, ZetaTokenConsumerTridentErrorsFilterer: ZetaTokenConsumerTridentErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerTridentErrorsCaller creates a new read-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerTridentErrorsCaller, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentErrorsTransactor creates a new write-only instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerTridentErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerTridentErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerTridentErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerTridentErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerTridentErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerTridentErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerTridentErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerTridentErrors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerTridentErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerTridentErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.ZetaTokenConsumerTridentErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerTridentErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerTridentErrors *ZetaTokenConsumerTridentErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerTridentErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go new file mode 100644 index 00000000..e64f4ae5 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2.go @@ -0,0 +1,891 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumeruniv2 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV2MetaData contains all meta data concerning the ZetaTokenConsumerUniV2 contract. +var ZetaTokenConsumerUniV2MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60e06040523480156200001157600080fd5b50604051620029a0380380620029a083398181016040528101906200003791906200024e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200021c565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002e8565b6000815190506200021681620002ce565b92915050565b600060208284031215620002355762000234620002c9565b5b6000620002458482850162000205565b91505092915050565b60008060408385031215620002685762000267620002c9565b5b6000620002788582860162000205565b92505060206200028b8582860162000205565b9150509250929050565b6000620002a282620002a9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002d98162000295565b8114620002e557600080fd5b50565b60805160601c60a05160601c60c05160601c6125c9620003d76000396000818161036a015281816105ce0152818161091701528181610b4501528181610cdb01528181610f400152818161115501526114be0152600081816102f9015281816104a001528181610727015281816108a501528181610afb01528181610b6701528181610bfb01528181610ed10152818161110b015281816111770152818161125f015261138e01526000818161028a01528181610618015281816106b80152818161083601528181610c6a01528181610e62015281816111bf015281816112ce01526113fd01526125c96000f3fe6080604052600436106100555760003560e01c8063013b2ff81461005a57806321e093b11461008a5780632405620a146100b557806354c49a2a146100f257806380801f841461012f578063a53fb10b1461015a575b600080fd5b610074600480360381019061006f9190611b65565b610197565b6040516100819190612098565b60405180910390f35b34801561009657600080fd5b5061009f61049e565b6040516100ac9190611ed0565b60405180910390f35b3480156100c157600080fd5b506100dc60048036038101906100d79190611ba5565b6104c2565b6040516100e99190612098565b60405180910390f35b3480156100fe57600080fd5b5061011960048036038101906101149190611c0c565b610a50565b6040516101269190612098565b60405180910390f35b34801561013b57600080fd5b50610144610e11565b6040516101519190611fab565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190611ba5565b611029565b60405161018e9190612098565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156101ff576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034141561023a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600267ffffffffffffffff811115610257576102566123e4565b5b6040519080825280602002602001820160405280156102855781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106102bd576102bc6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061032c5761032b6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637ff36ab53486858960c8426103b5919061223e565b6040518663ffffffff1660e01b81526004016103d494939291906120b3565b6000604051808303818588803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061042b9190611c5f565b90506000816001845161043e9190612294565b8151811061044f5761044e6123b5565b5b602002602001015190507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161048a9291906120ff565b60405180910390a180935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061052a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610561576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561059c576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c93330848673ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6106147f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561079957600267ffffffffffffffff811115610685576106846123e4565b5b6040519080825280602002602001820160405280156106b35781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106106eb576106ea6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061075a576107596123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610913565b600367ffffffffffffffff8111156107b4576107b36123e4565b5b6040519080825280602002602001820160405280156107e25781602001602082028036833780820191505090505b50905083816000815181106107fa576107f96123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610869576108686123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106108d8576108d76123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610962919061223e565b6040518663ffffffff1660e01b8152600401610982959493929190612128565b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109d99190611c5f565b9050600081600184516109ec9190612294565b815181106109fd576109fc6123b5565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f868683604051610a3a93929190611f74565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ab8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610af3576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b403330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b610bab7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b6000600267ffffffffffffffff811115610bc857610bc76123e4565b5b604051908082528060200260200182016040528015610bf65781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c2e57610c2d6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610c9d57610c9c6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58587858a60c842610d26919061223e565b6040518663ffffffff1660e01b8152600401610d46959493929190612128565b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d9d9190611c5f565b905060008160018451610db09190612294565b81518110610dc157610dc06123b5565b5b602002602001015190507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8582604051610dfc9291906120ff565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff811115610e2f57610e2e6123e4565b5b604051908082528060200260200182016040528015610e5d5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610e9557610e946123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0457610f036123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f6001836040518363ffffffff1660e01b8152600401610f9a929190611fc6565b60006040518083038186803b158015610fb257600080fd5b505afa925050508015610fe857506040513d6000823e3d601f19601f82011682018060405250810190610fe59190611c5f565b60015b610ff6576000915050611026565b600081600184516110079190612294565b81518110611018576110176123b5565b5b602002602001015111925050505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110915750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611103576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111503330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166115f7909392919063ffffffff16565b6111bb7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116809092919063ffffffff16565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134057600267ffffffffffffffff81111561122c5761122b6123e4565b5b60405190808252806020026020018201604052801561125a5781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611292576112916123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611301576113006123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114ba565b600367ffffffffffffffff81111561135b5761135a6123e4565b5b6040519080825280602002602001820160405280156113895781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106113c1576113c06123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106114305761142f6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160028151811061147f5761147e6123b5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842611509919061223e565b6040518663ffffffff1660e01b8152600401611529959493929190612128565b600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115809190611c5f565b9050600081600184516115939190612294565b815181106115a4576115a36123b5565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b8686836040516115e193929190611f74565b60405180910390a1809350505050949350505050565b61167a846323b872dd60e01b85858560405160240161161893929190611f14565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b50505050565b6000811480611719575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016116c7929190611eeb565b60206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190611cd5565b145b611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90612078565b60405180910390fd5b6117d98363095ea7b360e01b8484604051602401611777929190611f4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117de565b505050565b6000611840826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a59092919063ffffffff16565b90506000815111156118a057808060200190518101906118609190611ca8565b61189f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189690612058565b60405180910390fd5b5b505050565b60606118b484846000856118bd565b90509392505050565b606082471015611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990612018565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161192b9190611eb9565b60006040518083038185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b509150915061197e8783838761198a565b92505050949350505050565b606083156119ed576000835114156119e5576119a585611a00565b6119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90612038565b60405180910390fd5b5b8290506119f8565b6119f78383611a23565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611a365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9190611ff6565b60405180910390fd5b6000611a86611a81846121a7565b612182565b90508083825260208201905082856020860282011115611aa957611aa8612418565b5b60005b85811015611ad95781611abf8882611b50565b845260208401935060208301925050600181019050611aac565b5050509392505050565b600081359050611af28161254e565b92915050565b600082601f830112611b0d57611b0c612413565b5b8151611b1d848260208601611a73565b91505092915050565b600081519050611b3581612565565b92915050565b600081359050611b4a8161257c565b92915050565b600081519050611b5f8161257c565b92915050565b60008060408385031215611b7c57611b7b612422565b5b6000611b8a85828601611ae3565b9250506020611b9b85828601611b3b565b9150509250929050565b60008060008060808587031215611bbf57611bbe612422565b5b6000611bcd87828801611ae3565b9450506020611bde87828801611b3b565b9350506040611bef87828801611ae3565b9250506060611c0087828801611b3b565b91505092959194509250565b600080600060608486031215611c2557611c24612422565b5b6000611c3386828701611ae3565b9350506020611c4486828701611b3b565b9250506040611c5586828701611b3b565b9150509250925092565b600060208284031215611c7557611c74612422565b5b600082015167ffffffffffffffff811115611c9357611c9261241d565b5b611c9f84828501611af8565b91505092915050565b600060208284031215611cbe57611cbd612422565b5b6000611ccc84828501611b26565b91505092915050565b600060208284031215611ceb57611cea612422565b5b6000611cf984828501611b50565b91505092915050565b6000611d0e8383611d1a565b60208301905092915050565b611d23816122c8565b82525050565b611d32816122c8565b82525050565b6000611d43826121e3565b611d4d8185612211565b9350611d58836121d3565b8060005b83811015611d89578151611d708882611d02565b9750611d7b83612204565b925050600181019050611d5c565b5085935050505092915050565b611d9f816122da565b82525050565b6000611db0826121ee565b611dba8185612222565b9350611dca818560208601612322565b80840191505092915050565b611ddf81612310565b82525050565b6000611df0826121f9565b611dfa818561222d565b9350611e0a818560208601612322565b611e1381612427565b840191505092915050565b6000611e2b60268361222d565b9150611e3682612438565b604082019050919050565b6000611e4e601d8361222d565b9150611e5982612487565b602082019050919050565b6000611e71602a8361222d565b9150611e7c826124b0565b604082019050919050565b6000611e9460368361222d565b9150611e9f826124ff565b604082019050919050565b611eb381612306565b82525050565b6000611ec58284611da5565b915081905092915050565b6000602082019050611ee56000830184611d29565b92915050565b6000604082019050611f006000830185611d29565b611f0d6020830184611d29565b9392505050565b6000606082019050611f296000830186611d29565b611f366020830185611d29565b611f436040830184611eaa565b949350505050565b6000604082019050611f606000830185611d29565b611f6d6020830184611eaa565b9392505050565b6000606082019050611f896000830186611d29565b611f966020830185611eaa565b611fa36040830184611eaa565b949350505050565b6000602082019050611fc06000830184611d96565b92915050565b6000604082019050611fdb6000830185611dd6565b8181036020830152611fed8184611d38565b90509392505050565b600060208201905081810360008301526120108184611de5565b905092915050565b6000602082019050818103600083015261203181611e1e565b9050919050565b6000602082019050818103600083015261205181611e41565b9050919050565b6000602082019050818103600083015261207181611e64565b9050919050565b6000602082019050818103600083015261209181611e87565b9050919050565b60006020820190506120ad6000830184611eaa565b92915050565b60006080820190506120c86000830187611eaa565b81810360208301526120da8186611d38565b90506120e96040830185611d29565b6120f66060830184611eaa565b95945050505050565b60006040820190506121146000830185611eaa565b6121216020830184611eaa565b9392505050565b600060a08201905061213d6000830188611eaa565b61214a6020830187611eaa565b818103604083015261215c8186611d38565b905061216b6060830185611d29565b6121786080830184611eaa565b9695505050505050565b600061218c61219d565b90506121988282612355565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c2576121c16123e4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061224982612306565b915061225483612306565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228957612288612386565b5b828201905092915050565b600061229f82612306565b91506122aa83612306565b9250828210156122bd576122bc612386565b5b828203905092915050565b60006122d3826122e6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061231b82612306565b9050919050565b60005b83811015612340578082015181840152602081019050612325565b8381111561234f576000848401525b50505050565b61235e82612427565b810181811067ffffffffffffffff8211171561237d5761237c6123e4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b612557816122c8565b811461256257600080fd5b50565b61256e816122da565b811461257957600080fd5b50565b61258581612306565b811461259057600080fd5b5056fea264697066735822122043c2ef06b0d58aa4604eef6078aa0a569cff03f21dd48c315ad501590326c57264736f6c63430008070033", +} + +// ZetaTokenConsumerUniV2ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV2MetaData.ABI instead. +var ZetaTokenConsumerUniV2ABI = ZetaTokenConsumerUniV2MetaData.ABI + +// ZetaTokenConsumerUniV2Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerUniV2MetaData.Bin instead. +var ZetaTokenConsumerUniV2Bin = ZetaTokenConsumerUniV2MetaData.Bin + +// DeployZetaTokenConsumerUniV2 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerUniV2 to it. +func DeployZetaTokenConsumerUniV2(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV2Router_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV2, error) { + parsed, err := ZetaTokenConsumerUniV2MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV2Bin), backend, zetaToken_, uniswapV2Router_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerUniV2{ZetaTokenConsumerUniV2Caller: ZetaTokenConsumerUniV2Caller{contract: contract}, ZetaTokenConsumerUniV2Transactor: ZetaTokenConsumerUniV2Transactor{contract: contract}, ZetaTokenConsumerUniV2Filterer: ZetaTokenConsumerUniV2Filterer{contract: contract}}, nil +} + +// ZetaTokenConsumerUniV2 is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2 struct { + ZetaTokenConsumerUniV2Caller // Read-only binding to the contract + ZetaTokenConsumerUniV2Transactor // Write-only binding to the contract + ZetaTokenConsumerUniV2Filterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV2Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV2Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV2Session struct { + Contract *ZetaTokenConsumerUniV2 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV2CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV2CallerSession struct { + Contract *ZetaTokenConsumerUniV2Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV2TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV2TransactorSession struct { + Contract *ZetaTokenConsumerUniV2Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV2Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2Raw struct { + Contract *ZetaTokenConsumerUniV2 // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2CallerRaw struct { + Contract *ZetaTokenConsumerUniV2Caller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2TransactorRaw struct { + Contract *ZetaTokenConsumerUniV2Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV2 creates a new instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV2, error) { + contract, err := bindZetaTokenConsumerUniV2(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2{ZetaTokenConsumerUniV2Caller: ZetaTokenConsumerUniV2Caller{contract: contract}, ZetaTokenConsumerUniV2Transactor: ZetaTokenConsumerUniV2Transactor{contract: contract}, ZetaTokenConsumerUniV2Filterer: ZetaTokenConsumerUniV2Filterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV2Caller creates a new read-only instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV2Caller, error) { + contract, err := bindZetaTokenConsumerUniV2(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2Caller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV2Transactor creates a new write-only instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV2Transactor, error) { + contract, err := bindZetaTokenConsumerUniV2(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2Transactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV2Filterer creates a new log filterer instance of ZetaTokenConsumerUniV2, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV2Filterer, error) { + contract, err := bindZetaTokenConsumerUniV2(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2Filterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV2 binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV2MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.ZetaTokenConsumerUniV2Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV2.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.contract.Transact(opts, method, params...) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV2.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV2.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV2.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV2.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerUniV2.Contract.ZetaToken(&_ZetaTokenConsumerUniV2.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2CallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerUniV2.Contract.ZetaToken(&_ZetaTokenConsumerUniV2.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV2.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// ZetaTokenConsumerUniV2EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2EthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerUniV2EthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV2EthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV2EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2EthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2EthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2EthExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2EthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV2EthExchangedForZeta) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV2EthExchangedForZeta, error) { + event := new(ZetaTokenConsumerUniV2EthExchangedForZeta) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV2TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2TokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerUniV2TokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV2TokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV2TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2TokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2TokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2TokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV2TokenExchangedForZeta) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV2TokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerUniV2TokenExchangedForZeta) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV2ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2ZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerUniV2ZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV2ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2ZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2ZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2ZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV2ZetaExchangedForEth) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerUniV2ZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerUniV2ZetaExchangedForEth) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerUniV2ZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV2ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV2ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerUniV2 contract. +type ZetaTokenConsumerUniV2ZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerUniV2.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV2ZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV2.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV2ZetaExchangedForToken) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV2 *ZetaTokenConsumerUniV2Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerUniV2ZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerUniV2ZetaExchangedForToken) + if err := _ZetaTokenConsumerUniV2.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go new file mode 100644 index 00000000..a15bafe9 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv2.strategy.sol/zetatokenconsumeruniv2errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumeruniv2 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV2ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV2Errors contract. +var ZetaTokenConsumerUniV2ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerUniV2ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV2ErrorsMetaData.ABI instead. +var ZetaTokenConsumerUniV2ErrorsABI = ZetaTokenConsumerUniV2ErrorsMetaData.ABI + +// ZetaTokenConsumerUniV2Errors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2Errors struct { + ZetaTokenConsumerUniV2ErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerUniV2ErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerUniV2ErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV2ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV2ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV2ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV2ErrorsSession struct { + Contract *ZetaTokenConsumerUniV2Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV2ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV2ErrorsCallerSession struct { + Contract *ZetaTokenConsumerUniV2ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV2ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV2ErrorsTransactorSession struct { + Contract *ZetaTokenConsumerUniV2ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV2ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2ErrorsRaw struct { + Contract *ZetaTokenConsumerUniV2Errors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV2ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2ErrorsCallerRaw struct { + Contract *ZetaTokenConsumerUniV2ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV2ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV2ErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerUniV2ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV2Errors creates a new instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV2Errors, error) { + contract, err := bindZetaTokenConsumerUniV2Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2Errors{ZetaTokenConsumerUniV2ErrorsCaller: ZetaTokenConsumerUniV2ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV2ErrorsTransactor: ZetaTokenConsumerUniV2ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV2ErrorsFilterer: ZetaTokenConsumerUniV2ErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV2ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV2ErrorsCaller, error) { + contract, err := bindZetaTokenConsumerUniV2Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2ErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV2ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV2ErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerUniV2Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2ErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV2ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV2Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV2ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV2ErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerUniV2Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV2ErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV2Errors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV2Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV2ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2Errors.Contract.ZetaTokenConsumerUniV2ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV2Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV2Errors *ZetaTokenConsumerUniV2ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV2Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go new file mode 100644 index 00000000..f40eaea7 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/weth9.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumeruniv3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go new file mode 100644 index 00000000..619e9d8b --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3.go @@ -0,0 +1,1067 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumeruniv3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV3MetaData contains all meta data concerning the ZetaTokenConsumerUniV3 contract. +var ZetaTokenConsumerUniV3MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"zetaPoolFee_\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"tokenPoolFee_\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Factory\",\"outputs\":[{\"internalType\":\"contractIUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6101406040523480156200001257600080fd5b50604051620029833803806200298383398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6124ad620004d660003960008181610d900152610ddb01526000818161046f0152818161068f015281816107cd015281816108c2015281816109fd01528181610b6f0152818161115401526112b20152600081816103af0152818161056101528181610748015281816109b301528181610a1f01528181610a7301528181610e380152818161110a0152818161117601526111c90152600081816103730152818161070601528181610aaf01528181610c1c01528181610e170152818161120b01526113c10152600081816106e501528181610db4015261122c0152600081816103eb01528181610727015281816108e601528181610aeb01528181610e5901526111ea01526124ad6000f3fe6080604052600436106100a05760003560e01c806354c49a2a1161006457806354c49a2a1461019a5780635b549182146101d75780635d9dfdde1461020257806380801f841461022d578063a53fb10b14610258578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780632c76d7a6146101445780633cbd70051461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c1919061190a565b6102c0565b6040516100d391906120a2565b60405180910390f35b3480156100e857600080fd5b506100f161055f565b6040516100fe9190611e44565b60405180910390f35b34801561011357600080fd5b5061012e6004803603810190610129919061194a565b610583565b60405161013b91906120a2565b60405180910390f35b34801561015057600080fd5b506101596108c0565b6040516101669190611f71565b60405180910390f35b34801561017b57600080fd5b506101846108e4565b6040516101919190612087565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc91906119b1565b610908565b6040516101ce91906120a2565b60405180910390f35b3480156101e357600080fd5b506101ec610d8e565b6040516101f99190611f8c565b60405180910390f35b34801561020e57600080fd5b50610217610db2565b6040516102249190612087565b60405180910390f35b34801561023957600080fd5b50610242610dd6565b60405161024f9190611f56565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a919061194a565b610fc7565b60405161028c91906120a2565b60405180910390f35b3480156102a157600080fd5b506102aa6113bf565b6040516102b79190611e44565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160c84261043d9190612129565b8152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf38934846040518363ffffffff1660e01b81526004016104c7919061206b565b6020604051808303818588803b1580156104e057600080fd5b505af11580156104f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105199190611a5e565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161054c9291906120bd565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105eb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610622576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561065d576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068a3330848673ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6106d57f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a00160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405160200161077b959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c8426107b89190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016108249190612049565b602060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611a5e565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f8585836040516108ab93929190611f1f565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610970576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156109ab576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f83330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b610a637f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518061010001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160c842610b3d9190612129565b8152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b8152600401610bc6919061206b565b602060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190611a5e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c7391906120a2565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610cd69291906120bd565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610d0490611e2f565b60006040518083038185875af1925050503d8060008114610d41576040519150601f19603f3d011682016040523d82523d6000602084013e610d46565b606091505b5050905080610d81576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e9693929190611e88565b60206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee691906118dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f27576000915050610fc4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7457600080fd5b505afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190611a31565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff161561100f576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110905750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156110c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415611102576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166113e3909392919063ffffffff16565b6111ba7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661146c9092919063ffffffff16565b60006040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611260959493929190611db9565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200160c84261129d9190612129565b815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c04b8d59836040518263ffffffff1660e01b81526004016113099190612049565b602060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190611a5e565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161139093929190611f1f565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611466846323b872dd60e01b85858560405160240161140493929190611ebf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b50505050565b6000811480611505575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016114b3929190611e5f565b60206040518083038186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190611a5e565b145b611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90612029565b60405180910390fd5b6115c58363095ea7b360e01b8484604051602401611563929190611ef6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115ca565b505050565b600061162c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116919092919063ffffffff16565b905060008151111561168c578080602001905181019061164c9190611a04565b61168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612009565b60405180910390fd5b5b505050565b60606116a084846000856116a9565b90509392505050565b6060824710156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590611fc9565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117179190611e18565b60006040518083038185875af1925050503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b509150915061176a87838387611776565b92505050949350505050565b606083156117d9576000835114156117d157611791856117ec565b6117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790611fe9565b60405180910390fd5b5b8290506117e4565b6117e3838361180f565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156118225781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118569190611fa7565b60405180910390fd5b60008135905061186e8161241b565b92915050565b6000815190506118838161241b565b92915050565b60008151905061189881612432565b92915050565b6000815190506118ad81612449565b92915050565b6000813590506118c281612460565b92915050565b6000815190506118d781612460565b92915050565b6000602082840312156118f3576118f26122d2565b5b600061190184828501611874565b91505092915050565b60008060408385031215611921576119206122d2565b5b600061192f8582860161185f565b9250506020611940858286016118b3565b9150509250929050565b60008060008060808587031215611964576119636122d2565b5b60006119728782880161185f565b9450506020611983878288016118b3565b93505060406119948782880161185f565b92505060606119a5878288016118b3565b91505092959194509250565b6000806000606084860312156119ca576119c96122d2565b5b60006119d88682870161185f565b93505060206119e9868287016118b3565b92505060406119fa868287016118b3565b9150509250925092565b600060208284031215611a1a57611a196122d2565b5b6000611a2884828501611889565b91505092915050565b600060208284031215611a4757611a466122d2565b5b6000611a558482850161189e565b91505092915050565b600060208284031215611a7457611a736122d2565b5b6000611a82848285016118c8565b91505092915050565b611a948161217f565b82525050565b611aa38161217f565b82525050565b611aba611ab58261217f565b61226d565b82525050565b611ac981612191565b82525050565b6000611ada826120e6565b611ae481856120fc565b9350611af481856020860161223a565b611afd816122d7565b840191505092915050565b6000611b13826120e6565b611b1d818561210d565b9350611b2d81856020860161223a565b80840191505092915050565b611b42816121f2565b82525050565b611b5181612204565b82525050565b6000611b62826120f1565b611b6c8185612118565b9350611b7c81856020860161223a565b611b85816122d7565b840191505092915050565b6000611b9d602683612118565b9150611ba882612302565b604082019050919050565b6000611bc060008361210d565b9150611bcb82612351565b600082019050919050565b6000611be3601d83612118565b9150611bee82612354565b602082019050919050565b6000611c06602a83612118565b9150611c118261237d565b604082019050919050565b6000611c29603683612118565b9150611c34826123cc565b604082019050919050565b600060a0830160008301518482036000860152611c5c8282611acf565b9150506020830151611c716020860182611a8b565b506040830151611c846040860182611d9b565b506060830151611c976060860182611d9b565b506080830151611caa6080860182611d9b565b508091505092915050565b61010082016000820151611ccc6000850182611a8b565b506020820151611cdf6020850182611a8b565b506040820151611cf26040850182611d66565b506060820151611d056060850182611a8b565b506080820151611d186080850182611d9b565b5060a0820151611d2b60a0850182611d9b565b5060c0820151611d3e60c0850182611d9b565b5060e0820151611d5160e0850182611d57565b50505050565b611d60816121b9565b82525050565b611d6f816121d9565b82525050565b611d7e816121d9565b82525050565b611d95611d90826121d9565b612291565b82525050565b611da4816121e8565b82525050565b611db3816121e8565b82525050565b6000611dc58288611aa9565b601482019150611dd58287611d84565b600382019150611de58286611aa9565b601482019150611df58285611d84565b600382019150611e058284611aa9565b6014820191508190509695505050505050565b6000611e248284611b08565b915081905092915050565b6000611e3a82611bb3565b9150819050919050565b6000602082019050611e596000830184611a9a565b92915050565b6000604082019050611e746000830185611a9a565b611e816020830184611a9a565b9392505050565b6000606082019050611e9d6000830186611a9a565b611eaa6020830185611a9a565b611eb76040830184611d75565b949350505050565b6000606082019050611ed46000830186611a9a565b611ee16020830185611a9a565b611eee6040830184611daa565b949350505050565b6000604082019050611f0b6000830185611a9a565b611f186020830184611daa565b9392505050565b6000606082019050611f346000830186611a9a565b611f416020830185611daa565b611f4e6040830184611daa565b949350505050565b6000602082019050611f6b6000830184611ac0565b92915050565b6000602082019050611f866000830184611b39565b92915050565b6000602082019050611fa16000830184611b48565b92915050565b60006020820190508181036000830152611fc18184611b57565b905092915050565b60006020820190508181036000830152611fe281611b90565b9050919050565b6000602082019050818103600083015261200281611bd6565b9050919050565b6000602082019050818103600083015261202281611bf9565b9050919050565b6000602082019050818103600083015261204281611c1c565b9050919050565b600060208201905081810360008301526120638184611c3f565b905092915050565b6000610100820190506120816000830184611cb5565b92915050565b600060208201905061209c6000830184611d75565b92915050565b60006020820190506120b76000830184611daa565b92915050565b60006040820190506120d26000830185611daa565b6120df6020830184611daa565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612134826121e8565b915061213f836121e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612174576121736122a3565b5b828201905092915050565b600061218a826121b9565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121fd82612216565b9050919050565b600061220f82612216565b9050919050565b600061222182612228565b9050919050565b6000612233826121b9565b9050919050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b60006122788261227f565b9050919050565b600061228a826122f5565b9050919050565b600061229c826122e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6124248161217f565b811461242f57600080fd5b50565b61243b81612191565b811461244657600080fd5b50565b6124528161219d565b811461245d57600080fd5b50565b612469816121e8565b811461247457600080fd5b5056fea2646970667358221220c207c922259dc7e5a2e16505dd6095616db7c385800d654ff7d82add8972c36764736f6c63430008070033", +} + +// ZetaTokenConsumerUniV3ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV3MetaData.ABI instead. +var ZetaTokenConsumerUniV3ABI = ZetaTokenConsumerUniV3MetaData.ABI + +// ZetaTokenConsumerUniV3Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerUniV3MetaData.Bin instead. +var ZetaTokenConsumerUniV3Bin = ZetaTokenConsumerUniV3MetaData.Bin + +// DeployZetaTokenConsumerUniV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerUniV3 to it. +func DeployZetaTokenConsumerUniV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, uniswapV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerUniV3, error) { + parsed, err := ZetaTokenConsumerUniV3MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerUniV3Bin), backend, zetaToken_, uniswapV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerUniV3{ZetaTokenConsumerUniV3Caller: ZetaTokenConsumerUniV3Caller{contract: contract}, ZetaTokenConsumerUniV3Transactor: ZetaTokenConsumerUniV3Transactor{contract: contract}, ZetaTokenConsumerUniV3Filterer: ZetaTokenConsumerUniV3Filterer{contract: contract}}, nil +} + +// ZetaTokenConsumerUniV3 is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3 struct { + ZetaTokenConsumerUniV3Caller // Read-only binding to the contract + ZetaTokenConsumerUniV3Transactor // Write-only binding to the contract + ZetaTokenConsumerUniV3Filterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV3Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV3Session struct { + Contract *ZetaTokenConsumerUniV3 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV3CallerSession struct { + Contract *ZetaTokenConsumerUniV3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV3TransactorSession struct { + Contract *ZetaTokenConsumerUniV3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Raw struct { + Contract *ZetaTokenConsumerUniV3 // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3CallerRaw struct { + Contract *ZetaTokenConsumerUniV3Caller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3TransactorRaw struct { + Contract *ZetaTokenConsumerUniV3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV3 creates a new instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3, error) { + contract, err := bindZetaTokenConsumerUniV3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3{ZetaTokenConsumerUniV3Caller: ZetaTokenConsumerUniV3Caller{contract: contract}, ZetaTokenConsumerUniV3Transactor: ZetaTokenConsumerUniV3Transactor{contract: contract}, ZetaTokenConsumerUniV3Filterer: ZetaTokenConsumerUniV3Filterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV3Caller creates a new read-only instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3Caller, error) { + contract, err := bindZetaTokenConsumerUniV3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Caller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3Transactor creates a new write-only instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3Transactor, error) { + contract, err := bindZetaTokenConsumerUniV3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Transactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3Filterer creates a new log filterer instance of ZetaTokenConsumerUniV3, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3Filterer, error) { + contract, err := bindZetaTokenConsumerUniV3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Filterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV3 binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV3MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaTokenConsumerUniV3Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.contract.Transact(opts, method, params...) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "WETH9Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.WETH9Address(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerUniV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) TokenPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "tokenPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerUniV3.Contract.TokenPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerUniV3.Contract.TokenPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "uniswapV3Factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. +// +// Solidity: function uniswapV3Router() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) UniswapV3Router(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "uniswapV3Router") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. +// +// Solidity: function uniswapV3Router() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) UniswapV3Router() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Router(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// UniswapV3Router is a free data retrieval call binding the contract method 0x2c76d7a6. +// +// Solidity: function uniswapV3Router() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) UniswapV3Router() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.UniswapV3Router(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) ZetaPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "zetaPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerUniV3.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaToken(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3CallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerUniV3.Contract.ZetaToken(&_ZetaTokenConsumerUniV3.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerUniV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Session) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.Receive(&_ZetaTokenConsumerUniV3.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3TransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3.Contract.Receive(&_ZetaTokenConsumerUniV3.TransactOpts) +} + +// ZetaTokenConsumerUniV3EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3EthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerUniV3EthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV3EthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV3EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3EthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3EthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3EthExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3EthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV3EthExchangedForZeta) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV3EthExchangedForZeta, error) { + event := new(ZetaTokenConsumerUniV3EthExchangedForZeta) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV3TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3TokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerUniV3TokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV3TokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV3TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3TokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3TokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3TokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerUniV3TokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerUniV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV3ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3ZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerUniV3ZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV3ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3ZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3ZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3ZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerUniV3ZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerUniV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerUniV3ZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerUniV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerUniV3ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerUniV3 contract. +type ZetaTokenConsumerUniV3ZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerUniV3.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerUniV3ZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerUniV3.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerUniV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerUniV3 *ZetaTokenConsumerUniV3Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerUniV3ZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerUniV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerUniV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go new file mode 100644 index 00000000..efa2ded2 --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumeruniv3.strategy.sol/zetatokenconsumeruniv3errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumeruniv3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV3ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV3Errors contract. +var ZetaTokenConsumerUniV3ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerUniV3ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV3ErrorsMetaData.ABI instead. +var ZetaTokenConsumerUniV3ErrorsABI = ZetaTokenConsumerUniV3ErrorsMetaData.ABI + +// ZetaTokenConsumerUniV3Errors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Errors struct { + ZetaTokenConsumerUniV3ErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerUniV3ErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerUniV3ErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV3ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV3ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV3ErrorsSession struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV3ErrorsCallerSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV3ErrorsTransactorSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsRaw struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCallerRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV3Errors creates a new instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3Errors, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Errors{ZetaTokenConsumerUniV3ErrorsCaller: ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV3ErrorsTransactor: ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV3ErrorsFilterer: ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3ErrorsCaller, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3ErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3ErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV3Errors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV3Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV3ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go new file mode 100644 index 00000000..fcf406ff --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevm.go @@ -0,0 +1,912 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerZEVMMetaData contains all meta data concerning the ZetaTokenConsumerZEVM contract. +var ZetaTokenConsumerZEVMMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV2Router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidForZEVM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200220938038062002209833981810160405281019062000037919062000164565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200009f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620001fe565b6000815190506200015e81620001e4565b92915050565b600080604083850312156200017e576200017d620001df565b5b60006200018e858286016200014d565b9250506020620001a1858286016200014d565b9150509250929050565b6000620001b882620001bf565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001ef81620001ab565b8114620001fb57600080fd5b50565b60805160601c60a05160601c611f7e6200028b600039600081816105a4015281816106fa01528181610cb50152610e2b0152600081816060015281816103060152818161038c015281816104ee01528181610689015281816109180152818161095f01528181610bdf01528181610c6b01528181610cd701528181610d6b0152610f660152611f7e6000f3fe6080604052600436106100595760003560e01c8063013b2ff8146100ea5780632405620a1461011a57806354c49a2a1461015757806380801f8414610194578063a53fb10b146101bf578063c469cf14146101fc576100e5565b366100e5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100e3576040517f290ee5a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b61010460048036038101906100ff919061157c565b610227565b6040516101119190611aa8565b60405180910390f35b34801561012657600080fd5b50610141600480360381019061013c91906115bc565b610412565b60405161014e9190611aa8565b60405180910390f35b34801561016357600080fd5b5061017e60048036038101906101799190611623565b610833565b60405161018b9190611aa8565b60405180910390f35b3480156101a057600080fd5b506101a9610acf565b6040516101b691906119eb565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906115bc565b610b03565b6040516101f39190611aa8565b60405180910390f35b34801561020857600080fd5b50610211610f64565b60405161021e9190611910565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561028f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003414156102ca576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81341015610304576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50505050506103d083347f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f889092919063ffffffff16565b7f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da113434604051610401929190611ac3565b60405180910390a134905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061047a5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156104b1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156104ec576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610572576040517f6edfe50500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f3330848673ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b6105ea7f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff81111561060757610606611d96565b5b6040519080825280602002602001820160405280156106355781602001602082028036833780820191505090505b509050838160008151811061064d5761064c611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106106bc576106bb611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c8426107459190611c02565b6040518663ffffffff1660e01b8152600401610765959493929190611aec565b600060405180830381600087803b15801561077f57600080fd5b505af1158015610793573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107bc9190611676565b9050600081600184516107cf9190611c58565b815181106107e0576107df611d67565b5b602002602001015190507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f86868360405161081d939291906119b4565b60405180910390a1809350505050949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561089b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156108d6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015610910576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016109b69190611aa8565b600060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8283604051610a19929190611ac3565b60405180910390a160008473ffffffffffffffffffffffffffffffffffffffff1683604051610a47906118fb565b60006040518083038185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610ac4576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829150509392505050565b60006040517f0e6a82b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b6b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610ba2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610bdd576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c63576040517f8c51927900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb03330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661100e909392919063ffffffff16565b610d1b7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110979092919063ffffffff16565b6000600267ffffffffffffffff811115610d3857610d37611d96565b5b604051908082528060200260200182016040528015610d665781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610d9e57610d9d611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110610ded57610dec611d67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed17398588858b60c842610e769190611c02565b6040518663ffffffff1660e01b8152600401610e96959493929190611aec565b600060405180830381600087803b158015610eb057600080fd5b505af1158015610ec4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eed9190611676565b905060008160018451610f009190611c58565b81518110610f1157610f10611d67565b5b602002602001015190507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b868683604051610f4e939291906119b4565b60405180910390a1809350505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110098363a9059cbb60e01b8484604051602401610fa792919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b611091846323b872dd60e01b85858560405160240161102f93929190611954565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b50505050565b6000811480611130575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016110de92919061192b565b60206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906116ec565b145b61116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690611a88565b60405180910390fd5b6111f08363095ea7b360e01b848460405160240161118e92919061198b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111f5565b505050565b6000611257826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112bc9092919063ffffffff16565b90506000815111156112b7578080602001905181019061127791906116bf565b6112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90611a68565b60405180910390fd5b5b505050565b60606112cb84846000856112d4565b90509392505050565b606082471015611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090611a28565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134291906118e4565b60006040518083038185875af1925050503d806000811461137f576040519150601f19603f3d011682016040523d82523d6000602084013e611384565b606091505b5091509150611395878383876113a1565b92505050949350505050565b60608315611404576000835114156113fc576113bc85611417565b6113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290611a48565b60405180910390fd5b5b82905061140f565b61140e838361143a565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819190611a06565b60405180910390fd5b600061149d61149884611b6b565b611b46565b905080838252602082019050828560208602820111156114c0576114bf611dca565b5b60005b858110156114f057816114d68882611567565b8452602084019350602083019250506001810190506114c3565b5050509392505050565b60008135905061150981611f03565b92915050565b600082601f83011261152457611523611dc5565b5b815161153484826020860161148a565b91505092915050565b60008151905061154c81611f1a565b92915050565b60008135905061156181611f31565b92915050565b60008151905061157681611f31565b92915050565b6000806040838503121561159357611592611dd4565b5b60006115a1858286016114fa565b92505060206115b285828601611552565b9150509250929050565b600080600080608085870312156115d6576115d5611dd4565b5b60006115e4878288016114fa565b94505060206115f587828801611552565b9350506040611606878288016114fa565b925050606061161787828801611552565b91505092959194509250565b60008060006060848603121561163c5761163b611dd4565b5b600061164a868287016114fa565b935050602061165b86828701611552565b925050604061166c86828701611552565b9150509250925092565b60006020828403121561168c5761168b611dd4565b5b600082015167ffffffffffffffff8111156116aa576116a9611dcf565b5b6116b68482850161150f565b91505092915050565b6000602082840312156116d5576116d4611dd4565b5b60006116e38482850161153d565b91505092915050565b60006020828403121561170257611701611dd4565b5b600061171084828501611567565b91505092915050565b60006117258383611731565b60208301905092915050565b61173a81611c8c565b82525050565b61174981611c8c565b82525050565b600061175a82611ba7565b6117648185611bd5565b935061176f83611b97565b8060005b838110156117a05781516117878882611719565b975061179283611bc8565b925050600181019050611773565b5085935050505092915050565b6117b681611c9e565b82525050565b60006117c782611bb2565b6117d18185611be6565b93506117e1818560208601611cd4565b80840191505092915050565b60006117f882611bbd565b6118028185611bf1565b9350611812818560208601611cd4565b61181b81611dd9565b840191505092915050565b6000611833602683611bf1565b915061183e82611dea565b604082019050919050565b6000611856600083611be6565b915061186182611e39565b600082019050919050565b6000611879601d83611bf1565b915061188482611e3c565b602082019050919050565b600061189c602a83611bf1565b91506118a782611e65565b604082019050919050565b60006118bf603683611bf1565b91506118ca82611eb4565b604082019050919050565b6118de81611cca565b82525050565b60006118f082846117bc565b915081905092915050565b600061190682611849565b9150819050919050565b60006020820190506119256000830184611740565b92915050565b60006040820190506119406000830185611740565b61194d6020830184611740565b9392505050565b60006060820190506119696000830186611740565b6119766020830185611740565b61198360408301846118d5565b949350505050565b60006040820190506119a06000830185611740565b6119ad60208301846118d5565b9392505050565b60006060820190506119c96000830186611740565b6119d660208301856118d5565b6119e360408301846118d5565b949350505050565b6000602082019050611a0060008301846117ad565b92915050565b60006020820190508181036000830152611a2081846117ed565b905092915050565b60006020820190508181036000830152611a4181611826565b9050919050565b60006020820190508181036000830152611a618161186c565b9050919050565b60006020820190508181036000830152611a818161188f565b9050919050565b60006020820190508181036000830152611aa1816118b2565b9050919050565b6000602082019050611abd60008301846118d5565b92915050565b6000604082019050611ad860008301856118d5565b611ae560208301846118d5565b9392505050565b600060a082019050611b0160008301886118d5565b611b0e60208301876118d5565b8181036040830152611b20818661174f565b9050611b2f6060830185611740565b611b3c60808301846118d5565b9695505050505050565b6000611b50611b61565b9050611b5c8282611d07565b919050565b6000604051905090565b600067ffffffffffffffff821115611b8657611b85611d96565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0d82611cca565b9150611c1883611cca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c4d57611c4c611d38565b5b828201905092915050565b6000611c6382611cca565b9150611c6e83611cca565b925082821015611c8157611c80611d38565b5b828203905092915050565b6000611c9782611caa565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611cf2578082015181840152602081019050611cd7565b83811115611d01576000848401525b50505050565b611d1082611dd9565b810181811067ffffffffffffffff82111715611d2f57611d2e611d96565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b611f0c81611c8c565b8114611f1757600080fd5b50565b611f2381611c9e565b8114611f2e57600080fd5b50565b611f3a81611cca565b8114611f4557600080fd5b5056fea26469706673582212209d699fd174ff021ab8955aa2ab41ef5c683b288e3873f97ef4d0c4732ceebae264736f6c63430008070033", +} + +// ZetaTokenConsumerZEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerZEVMMetaData.ABI instead. +var ZetaTokenConsumerZEVMABI = ZetaTokenConsumerZEVMMetaData.ABI + +// ZetaTokenConsumerZEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerZEVMMetaData.Bin instead. +var ZetaTokenConsumerZEVMBin = ZetaTokenConsumerZEVMMetaData.Bin + +// DeployZetaTokenConsumerZEVM deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerZEVM to it. +func DeployZetaTokenConsumerZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, WETH9Address_ common.Address, uniswapV2Router_ common.Address) (common.Address, *types.Transaction, *ZetaTokenConsumerZEVM, error) { + parsed, err := ZetaTokenConsumerZEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerZEVMBin), backend, WETH9Address_, uniswapV2Router_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerZEVM{ZetaTokenConsumerZEVMCaller: ZetaTokenConsumerZEVMCaller{contract: contract}, ZetaTokenConsumerZEVMTransactor: ZetaTokenConsumerZEVMTransactor{contract: contract}, ZetaTokenConsumerZEVMFilterer: ZetaTokenConsumerZEVMFilterer{contract: contract}}, nil +} + +// ZetaTokenConsumerZEVM is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVM struct { + ZetaTokenConsumerZEVMCaller // Read-only binding to the contract + ZetaTokenConsumerZEVMTransactor // Write-only binding to the contract + ZetaTokenConsumerZEVMFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerZEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerZEVMSession struct { + Contract *ZetaTokenConsumerZEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerZEVMCallerSession struct { + Contract *ZetaTokenConsumerZEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerZEVMTransactorSession struct { + Contract *ZetaTokenConsumerZEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMRaw struct { + Contract *ZetaTokenConsumerZEVM // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMCallerRaw struct { + Contract *ZetaTokenConsumerZEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMTransactorRaw struct { + Contract *ZetaTokenConsumerZEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerZEVM creates a new instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVM(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerZEVM, error) { + contract, err := bindZetaTokenConsumerZEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVM{ZetaTokenConsumerZEVMCaller: ZetaTokenConsumerZEVMCaller{contract: contract}, ZetaTokenConsumerZEVMTransactor: ZetaTokenConsumerZEVMTransactor{contract: contract}, ZetaTokenConsumerZEVMFilterer: ZetaTokenConsumerZEVMFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerZEVMCaller creates a new read-only instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerZEVMCaller, error) { + contract, err := bindZetaTokenConsumerZEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerZEVMTransactor creates a new write-only instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerZEVMTransactor, error) { + contract, err := bindZetaTokenConsumerZEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerZEVMFilterer creates a new log filterer instance of ZetaTokenConsumerZEVM, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerZEVMFilterer, error) { + contract, err := bindZetaTokenConsumerZEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerZEVM binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerZEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.ZetaTokenConsumerZEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerZEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.contract.Transact(opts, method, params...) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCaller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerZEVM.contract.Call(opts, &out, "WETH9Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerZEVM.Contract.WETH9Address(&_ZetaTokenConsumerZEVM.CallOpts) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerZEVM.Contract.WETH9Address(&_ZetaTokenConsumerZEVM.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCaller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerZEVM.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerZEVM.Contract.HasZetaLiquidity(&_ZetaTokenConsumerZEVM.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMCallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerZEVM.Contract.HasZetaLiquidity(&_ZetaTokenConsumerZEVM.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetEthFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetEthFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetTokenFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetTokenFromZeta(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetZetaFromEth(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetZetaFromEth(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetZetaFromToken(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.GetZetaFromToken(&_ZetaTokenConsumerZEVM.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.Receive(&_ZetaTokenConsumerZEVM.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMTransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerZEVM.Contract.Receive(&_ZetaTokenConsumerZEVM.TransactOpts) +} + +// ZetaTokenConsumerZEVMEthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMEthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerZEVMEthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMEthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZEVMEthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZEVMEthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMEthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMEthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMEthExchangedForZetaIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMEthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZEVMEthExchangedForZeta) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerZEVMEthExchangedForZeta, error) { + event := new(ZetaTokenConsumerZEVMEthExchangedForZeta) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerZEVMTokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMTokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerZEVMTokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMTokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZEVMTokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZEVMTokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMTokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMTokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMTokenExchangedForZetaIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMTokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZEVMTokenExchangedForZeta) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerZEVMTokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerZEVMTokenExchangedForZeta) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerZEVMZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerZEVMZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZEVMZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZEVMZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMZetaExchangedForEthIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZEVMZetaExchangedForEth) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerZEVMZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerZEVMZetaExchangedForEth) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerZEVMZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerZEVMZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerZEVMZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerZEVMZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerZEVMZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerZEVM contract. +type ZetaTokenConsumerZEVMZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerZEVMZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerZEVM.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerZEVMZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerZEVM.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerZEVMZetaExchangedForToken) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerZEVM *ZetaTokenConsumerZEVMFilterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerZEVMZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerZEVMZetaExchangedForToken) + if err := _ZetaTokenConsumerZEVM.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go b/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go new file mode 100644 index 00000000..9886476b --- /dev/null +++ b/v1/pkg/contracts/evm/tools/zetatokenconsumerzevm.strategy.sol/zetatokenconsumerzevmerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerZEVMErrorsMetaData contains all meta data concerning the ZetaTokenConsumerZEVMErrors contract. +var ZetaTokenConsumerZEVMErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidForZEVM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputCantBeZeta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerZEVMErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerZEVMErrorsMetaData.ABI instead. +var ZetaTokenConsumerZEVMErrorsABI = ZetaTokenConsumerZEVMErrorsMetaData.ABI + +// ZetaTokenConsumerZEVMErrors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrors struct { + ZetaTokenConsumerZEVMErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerZEVMErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerZEVMErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerZEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerZEVMErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerZEVMErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerZEVMErrorsSession struct { + Contract *ZetaTokenConsumerZEVMErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerZEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerZEVMErrorsCallerSession struct { + Contract *ZetaTokenConsumerZEVMErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerZEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerZEVMErrorsTransactorSession struct { + Contract *ZetaTokenConsumerZEVMErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerZEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrorsRaw struct { + Contract *ZetaTokenConsumerZEVMErrors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerZEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrorsCallerRaw struct { + Contract *ZetaTokenConsumerZEVMErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerZEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerZEVMErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerZEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerZEVMErrors creates a new instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMErrors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerZEVMErrors, error) { + contract, err := bindZetaTokenConsumerZEVMErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMErrors{ZetaTokenConsumerZEVMErrorsCaller: ZetaTokenConsumerZEVMErrorsCaller{contract: contract}, ZetaTokenConsumerZEVMErrorsTransactor: ZetaTokenConsumerZEVMErrorsTransactor{contract: contract}, ZetaTokenConsumerZEVMErrorsFilterer: ZetaTokenConsumerZEVMErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerZEVMErrorsCaller creates a new read-only instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerZEVMErrorsCaller, error) { + contract, err := bindZetaTokenConsumerZEVMErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerZEVMErrorsTransactor creates a new write-only instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerZEVMErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerZEVMErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerZEVMErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerZEVMErrors, bound to a specific deployed contract. +func NewZetaTokenConsumerZEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerZEVMErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerZEVMErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerZEVMErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerZEVMErrors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerZEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerZEVMErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVMErrors.Contract.ZetaTokenConsumerZEVMErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerZEVMErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVMErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerZEVMErrors *ZetaTokenConsumerZEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerZEVMErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/evm/zeta.eth.sol/zetaeth.go b/v1/pkg/contracts/evm/zeta.eth.sol/zetaeth.go new file mode 100644 index 00000000..9bfabaa5 --- /dev/null +++ b/v1/pkg/contracts/evm/zeta.eth.sol/zetaeth.go @@ -0,0 +1,802 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaEthMetaData contains all meta data concerning the ZetaEth contract. +var ZetaEthMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001a5238038062001a5283398181016040528101906200003791906200037d565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200029f565b508060049080519060200190620000d49291906200029f565b5050506200011682620000ec6200011e60201b60201c565b60ff16600a620000fd919062000504565b836200010a919062000641565b6200012760201b60201c565b5050620007e3565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200019a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019190620003fc565b60405180910390fd5b620001ae600083836200029560201b60201c565b8060026000828254620001c291906200044c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200027591906200041e565b60405180910390a362000291600083836200029a60201b60201c565b5050565b505050565b505050565b828054620002ad90620006e0565b90600052602060002090601f016020900481019282620002d157600085556200031d565b82601f10620002ec57805160ff19168380011785556200031d565b828001600101855582156200031d579182015b828111156200031c578251825591602001919060010190620002ff565b5b5090506200032c919062000330565b5090565b5b808211156200034b57600081600090555060010162000331565b5090565b6000815190506200036081620007af565b92915050565b6000815190506200037781620007c9565b92915050565b6000806040838503121562000397576200039662000774565b5b6000620003a7858286016200034f565b9250506020620003ba8582860162000366565b9150509250929050565b6000620003d3601f836200043b565b9150620003e08262000786565b602082019050919050565b620003f681620006d6565b82525050565b600060208201905081810360008301526200041781620003c4565b9050919050565b6000602082019050620004356000830184620003eb565b92915050565b600082825260208201905092915050565b60006200045982620006d6565b91506200046683620006d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200049e576200049d62000716565b5b828201905092915050565b6000808291508390505b6001851115620004fb57808604811115620004d357620004d262000716565b5b6001851615620004e35780820291505b8081029050620004f38562000779565b9450620004b3565b94509492505050565b60006200051182620006d6565b91506200051e83620006d6565b92506200054d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000555565b905092915050565b6000826200056757600190506200063a565b816200057757600090506200063a565b81600181146200059057600281146200059b57620005d1565b60019150506200063a565b60ff841115620005b057620005af62000716565b5b8360020a915084821115620005ca57620005c962000716565b5b506200063a565b5060208310610133831016604e8410600b84101617156200060b5782820a90508381111562000605576200060462000716565b5b6200063a565b6200061a8484846001620004a9565b9250905081840481111562000634576200063362000716565b5b81810290505b9392505050565b60006200064e82620006d6565b91506200065b83620006d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000697576200069662000716565b5b828202905092915050565b6000620006af82620006b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620006f957607f821691505b6020821081141562000710576200070f62000745565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620007ba81620006a2565b8114620007c657600080fd5b50565b620007d481620006d6565b8114620007e057600080fd5b50565b61125f80620007f36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220e33277034a5236435f4dc6a93d4c4dc71fb8a6be9f4a752ea3f374446caf920b64736f6c63430008070033", +} + +// ZetaEthABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaEthMetaData.ABI instead. +var ZetaEthABI = ZetaEthMetaData.ABI + +// ZetaEthBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaEthMetaData.Bin instead. +var ZetaEthBin = ZetaEthMetaData.Bin + +// DeployZetaEth deploys a new Ethereum contract, binding an instance of ZetaEth to it. +func DeployZetaEth(auth *bind.TransactOpts, backend bind.ContractBackend, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ZetaEth, error) { + parsed, err := ZetaEthMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaEthBin), backend, creator, initialSupply) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaEth{ZetaEthCaller: ZetaEthCaller{contract: contract}, ZetaEthTransactor: ZetaEthTransactor{contract: contract}, ZetaEthFilterer: ZetaEthFilterer{contract: contract}}, nil +} + +// ZetaEth is an auto generated Go binding around an Ethereum contract. +type ZetaEth struct { + ZetaEthCaller // Read-only binding to the contract + ZetaEthTransactor // Write-only binding to the contract + ZetaEthFilterer // Log filterer for contract events +} + +// ZetaEthCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaEthCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaEthTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaEthTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaEthFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaEthSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaEthSession struct { + Contract *ZetaEth // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaEthCallerSession struct { + Contract *ZetaEthCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaEthTransactorSession struct { + Contract *ZetaEthTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaEthRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaEthRaw struct { + Contract *ZetaEth // Generic contract binding to access the raw methods on +} + +// ZetaEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaEthCallerRaw struct { + Contract *ZetaEthCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaEthTransactorRaw struct { + Contract *ZetaEthTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaEth creates a new instance of ZetaEth, bound to a specific deployed contract. +func NewZetaEth(address common.Address, backend bind.ContractBackend) (*ZetaEth, error) { + contract, err := bindZetaEth(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaEth{ZetaEthCaller: ZetaEthCaller{contract: contract}, ZetaEthTransactor: ZetaEthTransactor{contract: contract}, ZetaEthFilterer: ZetaEthFilterer{contract: contract}}, nil +} + +// NewZetaEthCaller creates a new read-only instance of ZetaEth, bound to a specific deployed contract. +func NewZetaEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaEthCaller, error) { + contract, err := bindZetaEth(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaEthCaller{contract: contract}, nil +} + +// NewZetaEthTransactor creates a new write-only instance of ZetaEth, bound to a specific deployed contract. +func NewZetaEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaEthTransactor, error) { + contract, err := bindZetaEth(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaEthTransactor{contract: contract}, nil +} + +// NewZetaEthFilterer creates a new log filterer instance of ZetaEth, bound to a specific deployed contract. +func NewZetaEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaEthFilterer, error) { + contract, err := bindZetaEth(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaEthFilterer{contract: contract}, nil +} + +// bindZetaEth binds a generic wrapper to an already deployed contract. +func bindZetaEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaEthMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaEth *ZetaEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaEth.Contract.ZetaEthCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaEth *ZetaEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaEth.Contract.ZetaEthTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaEth *ZetaEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaEth.Contract.ZetaEthTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaEth *ZetaEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaEth.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaEth *ZetaEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaEth.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaEth *ZetaEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaEth.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaEth *ZetaEthCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaEth *ZetaEthSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaEth.Contract.Allowance(&_ZetaEth.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaEth *ZetaEthCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaEth.Contract.Allowance(&_ZetaEth.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaEth *ZetaEthCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaEth *ZetaEthSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaEth.Contract.BalanceOf(&_ZetaEth.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaEth *ZetaEthCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaEth.Contract.BalanceOf(&_ZetaEth.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaEth *ZetaEthCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaEth *ZetaEthSession) Decimals() (uint8, error) { + return _ZetaEth.Contract.Decimals(&_ZetaEth.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaEth *ZetaEthCallerSession) Decimals() (uint8, error) { + return _ZetaEth.Contract.Decimals(&_ZetaEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaEth *ZetaEthCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaEth *ZetaEthSession) Name() (string, error) { + return _ZetaEth.Contract.Name(&_ZetaEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaEth *ZetaEthCallerSession) Name() (string, error) { + return _ZetaEth.Contract.Name(&_ZetaEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaEth *ZetaEthCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaEth *ZetaEthSession) Symbol() (string, error) { + return _ZetaEth.Contract.Symbol(&_ZetaEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaEth *ZetaEthCallerSession) Symbol() (string, error) { + return _ZetaEth.Contract.Symbol(&_ZetaEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaEth *ZetaEthCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaEth.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaEth *ZetaEthSession) TotalSupply() (*big.Int, error) { + return _ZetaEth.Contract.TotalSupply(&_ZetaEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaEth *ZetaEthCallerSession) TotalSupply() (*big.Int, error) { + return _ZetaEth.Contract.TotalSupply(&_ZetaEth.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.Approve(&_ZetaEth.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.Approve(&_ZetaEth.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaEth *ZetaEthTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaEth *ZetaEthSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.DecreaseAllowance(&_ZetaEth.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaEth *ZetaEthTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.DecreaseAllowance(&_ZetaEth.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaEth *ZetaEthTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaEth *ZetaEthSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.IncreaseAllowance(&_ZetaEth.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaEth *ZetaEthTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.IncreaseAllowance(&_ZetaEth.TransactOpts, spender, addedValue) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.Transfer(&_ZetaEth.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.Transfer(&_ZetaEth.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.TransferFrom(&_ZetaEth.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaEth *ZetaEthTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaEth.Contract.TransferFrom(&_ZetaEth.TransactOpts, from, to, amount) +} + +// ZetaEthApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaEth contract. +type ZetaEthApprovalIterator struct { + Event *ZetaEthApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaEthApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaEthApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaEthApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaEthApproval represents a Approval event raised by the ZetaEth contract. +type ZetaEthApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaEth *ZetaEthFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaEthApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaEth.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZetaEthApprovalIterator{contract: _ZetaEth.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaEth *ZetaEthFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaEthApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaEth.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaEthApproval) + if err := _ZetaEth.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaEth *ZetaEthFilterer) ParseApproval(log types.Log) (*ZetaEthApproval, error) { + event := new(ZetaEthApproval) + if err := _ZetaEth.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaEth contract. +type ZetaEthTransferIterator struct { + Event *ZetaEthTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaEthTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaEthTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaEthTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaEthTransfer represents a Transfer event raised by the ZetaEth contract. +type ZetaEthTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaEth *ZetaEthFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaEthTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaEth.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZetaEthTransferIterator{contract: _ZetaEth.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaEth *ZetaEthFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaEthTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaEth.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaEthTransfer) + if err := _ZetaEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaEth *ZetaEthFilterer) ParseTransfer(log types.Log) (*ZetaEthTransfer, error) { + event := new(ZetaEthTransfer) + if err := _ZetaEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go b/v1/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go new file mode 100644 index 00000000..24198413 --- /dev/null +++ b/v1/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go @@ -0,0 +1,1706 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaNonEthMetaData contains all meta data concerning the ZetaNonEth contract. +var ZetaNonEthMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burnee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newConnectorAddress\",\"type\":\"address\"}],\"name\":\"ConnectorAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connectorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"connectorAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAndConnectorAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea26469706673582212206bc837ff0828037cc8d7dacf17706538b4deb5a80c03f8e056ef18bae1a6288064736f6c63430008070033", +} + +// ZetaNonEthABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaNonEthMetaData.ABI instead. +var ZetaNonEthABI = ZetaNonEthMetaData.ABI + +// ZetaNonEthBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaNonEthMetaData.Bin instead. +var ZetaNonEthBin = ZetaNonEthMetaData.Bin + +// DeployZetaNonEth deploys a new Ethereum contract, binding an instance of ZetaNonEth to it. +func DeployZetaNonEth(auth *bind.TransactOpts, backend bind.ContractBackend, tssAddress_ common.Address, tssAddressUpdater_ common.Address) (common.Address, *types.Transaction, *ZetaNonEth, error) { + parsed, err := ZetaNonEthMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaNonEthBin), backend, tssAddress_, tssAddressUpdater_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil +} + +// ZetaNonEth is an auto generated Go binding around an Ethereum contract. +type ZetaNonEth struct { + ZetaNonEthCaller // Read-only binding to the contract + ZetaNonEthTransactor // Write-only binding to the contract + ZetaNonEthFilterer // Log filterer for contract events +} + +// ZetaNonEthCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaNonEthCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaNonEthTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaNonEthFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaNonEthSession struct { + Contract *ZetaNonEth // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaNonEthCallerSession struct { + Contract *ZetaNonEthCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaNonEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaNonEthTransactorSession struct { + Contract *ZetaNonEthTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaNonEthRaw struct { + Contract *ZetaNonEth // Generic contract binding to access the raw methods on +} + +// ZetaNonEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaNonEthCallerRaw struct { + Contract *ZetaNonEthCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaNonEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaNonEthTransactorRaw struct { + Contract *ZetaNonEthTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaNonEth creates a new instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEth(address common.Address, backend bind.ContractBackend) (*ZetaNonEth, error) { + contract, err := bindZetaNonEth(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil +} + +// NewZetaNonEthCaller creates a new read-only instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthCaller, error) { + contract, err := bindZetaNonEth(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthCaller{contract: contract}, nil +} + +// NewZetaNonEthTransactor creates a new write-only instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthTransactor, error) { + contract, err := bindZetaNonEth(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthTransactor{contract: contract}, nil +} + +// NewZetaNonEthFilterer creates a new log filterer instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthFilterer, error) { + contract, err := bindZetaNonEth(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaNonEthFilterer{contract: contract}, nil +} + +// bindZetaNonEth binds a generic wrapper to an already deployed contract. +func bindZetaNonEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaNonEthMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEth *ZetaNonEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEth.Contract.ZetaNonEthCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEth *ZetaNonEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEth *ZetaNonEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEth *ZetaNonEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEth.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEth.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) ConnectorAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "connectorAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) ConnectorAddress() (common.Address, error) { + return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) ConnectorAddress() (common.Address, error) { + return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthSession) Decimals() (uint8, error) { + return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthCallerSession) Decimals() (uint8, error) { + return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthSession) Name() (string, error) { + return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthCallerSession) Name() (string, error) { + return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthSession) Symbol() (string, error) { + return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthCallerSession) Symbol() (string, error) { + return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) TssAddress() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddress() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "tssAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) TssAddressUpdater() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddressUpdater() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.DecreaseAllowance(&_ZetaNonEth.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.DecreaseAllowance(&_ZetaNonEth.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.IncreaseAllowance(&_ZetaNonEth.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.IncreaseAllowance(&_ZetaNonEth.TransactOpts, spender, addedValue) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "mint", mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "renounceTssAddressUpdater") +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, amount) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) UpdateTssAndConnectorAddresses(opts *bind.TransactOpts, tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "updateTssAndConnectorAddresses", tssAddress_, connectorAddress_) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) +} + +// ZetaNonEthApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEth contract. +type ZetaNonEthApprovalIterator struct { + Event *ZetaNonEthApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthApproval represents a Approval event raised by the ZetaNonEth contract. +type ZetaNonEthApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZetaNonEthApprovalIterator{contract: _ZetaNonEth.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthApproval) + if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseApproval(log types.Log) (*ZetaNonEthApproval, error) { + event := new(ZetaNonEthApproval) + if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthBurntIterator is returned from FilterBurnt and is used to iterate over the raw logs and unpacked data for Burnt events raised by the ZetaNonEth contract. +type ZetaNonEthBurntIterator struct { + Event *ZetaNonEthBurnt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthBurntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthBurnt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthBurnt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthBurntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthBurntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthBurnt represents a Burnt event raised by the ZetaNonEth contract. +type ZetaNonEthBurnt struct { + Burnee common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnt is a free log retrieval operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterBurnt(opts *bind.FilterOpts, burnee []common.Address) (*ZetaNonEthBurntIterator, error) { + + var burneeRule []interface{} + for _, burneeItem := range burnee { + burneeRule = append(burneeRule, burneeItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Burnt", burneeRule) + if err != nil { + return nil, err + } + return &ZetaNonEthBurntIterator{contract: _ZetaNonEth.contract, event: "Burnt", logs: logs, sub: sub}, nil +} + +// WatchBurnt is a free log subscription operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchBurnt(opts *bind.WatchOpts, sink chan<- *ZetaNonEthBurnt, burnee []common.Address) (event.Subscription, error) { + + var burneeRule []interface{} + for _, burneeItem := range burnee { + burneeRule = append(burneeRule, burneeItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Burnt", burneeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthBurnt) + if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnt is a log parse operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseBurnt(log types.Log) (*ZetaNonEthBurnt, error) { + event := new(ZetaNonEthBurnt) + if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthConnectorAddressUpdatedIterator is returned from FilterConnectorAddressUpdated and is used to iterate over the raw logs and unpacked data for ConnectorAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdatedIterator struct { + Event *ZetaNonEthConnectorAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthConnectorAddressUpdated represents a ConnectorAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdated struct { + CallerAddress common.Address + NewConnectorAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConnectorAddressUpdated is a free log retrieval operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterConnectorAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthConnectorAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthConnectorAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "ConnectorAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchConnectorAddressUpdated is a free log subscription operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchConnectorAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthConnectorAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConnectorAddressUpdated is a log parse operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseConnectorAddressUpdated(log types.Log) (*ZetaNonEthConnectorAddressUpdated, error) { + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthMintedIterator is returned from FilterMinted and is used to iterate over the raw logs and unpacked data for Minted events raised by the ZetaNonEth contract. +type ZetaNonEthMintedIterator struct { + Event *ZetaNonEthMinted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthMintedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthMintedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthMintedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthMinted represents a Minted event raised by the ZetaNonEth contract. +type ZetaNonEthMinted struct { + Mintee common.Address + Amount *big.Int + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinted is a free log retrieval operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterMinted(opts *bind.FilterOpts, mintee []common.Address, internalSendHash [][32]byte) (*ZetaNonEthMintedIterator, error) { + + var minteeRule []interface{} + for _, minteeItem := range mintee { + minteeRule = append(minteeRule, minteeItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Minted", minteeRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaNonEthMintedIterator{contract: _ZetaNonEth.contract, event: "Minted", logs: logs, sub: sub}, nil +} + +// WatchMinted is a free log subscription operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchMinted(opts *bind.WatchOpts, sink chan<- *ZetaNonEthMinted, mintee []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var minteeRule []interface{} + for _, minteeItem := range mintee { + minteeRule = append(minteeRule, minteeItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Minted", minteeRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthMinted) + if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinted is a log parse operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseMinted(log types.Log) (*ZetaNonEthMinted, error) { + event := new(ZetaNonEthMinted) + if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEth contract. +type ZetaNonEthTransferIterator struct { + Event *ZetaNonEthTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTransfer represents a Transfer event raised by the ZetaNonEth contract. +type ZetaNonEthTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZetaNonEthTransferIterator{contract: _ZetaNonEth.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTransfer) + if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTransfer(log types.Log) (*ZetaNonEthTransfer, error) { + event := new(ZetaNonEthTransfer) + if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go b/v1/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go new file mode 100644 index 00000000..c9f2099a --- /dev/null +++ b/v1/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go @@ -0,0 +1,1695 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnector + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesSendInput struct { + DestinationChainId *big.Int + DestinationAddress []byte + DestinationGasLimit *big.Int + Message []byte + ZetaValueAndGas *big.Int + ZetaParams []byte +} + +// ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. +var ZetaConnectorBaseMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea2646970667358221220581b268b8dbd8d9f5c8f5e7e4d7ee7235e116fc6882d1ce0eb037e226f63b48064736f6c63430008070033", +} + +// ZetaConnectorBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorBaseMetaData.ABI instead. +var ZetaConnectorBaseABI = ZetaConnectorBaseMetaData.ABI + +// ZetaConnectorBaseBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorBaseMetaData.Bin instead. +var ZetaConnectorBaseBin = ZetaConnectorBaseMetaData.Bin + +// DeployZetaConnectorBase deploys a new Ethereum contract, binding an instance of ZetaConnectorBase to it. +func DeployZetaConnectorBase(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorBase, error) { + parsed, err := ZetaConnectorBaseMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorBaseBin), backend, zetaToken_, tssAddress_, tssAddressUpdater_, pauserAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorBase{ZetaConnectorBaseCaller: ZetaConnectorBaseCaller{contract: contract}, ZetaConnectorBaseTransactor: ZetaConnectorBaseTransactor{contract: contract}, ZetaConnectorBaseFilterer: ZetaConnectorBaseFilterer{contract: contract}}, nil +} + +// ZetaConnectorBase is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorBase struct { + ZetaConnectorBaseCaller // Read-only binding to the contract + ZetaConnectorBaseTransactor // Write-only binding to the contract + ZetaConnectorBaseFilterer // Log filterer for contract events +} + +// ZetaConnectorBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorBaseSession struct { + Contract *ZetaConnectorBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorBaseCallerSession struct { + Contract *ZetaConnectorBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorBaseTransactorSession struct { + Contract *ZetaConnectorBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorBaseRaw struct { + Contract *ZetaConnectorBase // Generic contract binding to access the raw methods on +} + +// ZetaConnectorBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorBaseCallerRaw struct { + Contract *ZetaConnectorBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorBaseTransactorRaw struct { + Contract *ZetaConnectorBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorBase creates a new instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorBase, error) { + contract, err := bindZetaConnectorBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorBase{ZetaConnectorBaseCaller: ZetaConnectorBaseCaller{contract: contract}, ZetaConnectorBaseTransactor: ZetaConnectorBaseTransactor{contract: contract}, ZetaConnectorBaseFilterer: ZetaConnectorBaseFilterer{contract: contract}}, nil +} + +// NewZetaConnectorBaseCaller creates a new read-only instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorBaseCaller, error) { + contract, err := bindZetaConnectorBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseCaller{contract: contract}, nil +} + +// NewZetaConnectorBaseTransactor creates a new write-only instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorBaseTransactor, error) { + contract, err := bindZetaConnectorBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseTransactor{contract: contract}, nil +} + +// NewZetaConnectorBaseFilterer creates a new log filterer instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorBaseFilterer, error) { + contract, err := bindZetaConnectorBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseFilterer{contract: contract}, nil +} + +// bindZetaConnectorBase binds a generic wrapper to an already deployed contract. +func bindZetaConnectorBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorBaseMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorBase *ZetaConnectorBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorBase.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Paused() (bool, error) { + return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) Paused() (bool, error) { + return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "pauserAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.PauserAddress(&_ZetaConnectorBase.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.PauserAddress(&_ZetaConnectorBase.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddressUpdater(&_ZetaConnectorBase.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddressUpdater(&_ZetaConnectorBase.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.OnReceive(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.OnReceive(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.OnRevert(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.OnRevert(&_ZetaConnectorBase.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "renounceTssAddressUpdater") +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RenounceTssAddressUpdater(&_ZetaConnectorBase.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RenounceTssAddressUpdater(&_ZetaConnectorBase.TransactOpts) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "send", input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Send(&_ZetaConnectorBase.TransactOpts, input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Send(&_ZetaConnectorBase.TransactOpts, input) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "updatePauserAddress", pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.UpdatePauserAddress(&_ZetaConnectorBase.TransactOpts, pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.UpdatePauserAddress(&_ZetaConnectorBase.TransactOpts, pauserAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "updateTssAddress", tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.UpdateTssAddress(&_ZetaConnectorBase.TransactOpts, tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.UpdateTssAddress(&_ZetaConnectorBase.TransactOpts, tssAddress_) +} + +// ZetaConnectorBasePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePausedIterator struct { + Event *ZetaConnectorBasePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBasePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBasePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBasePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBasePaused represents a Paused event raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorBasePausedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorBasePausedIterator{contract: _ZetaConnectorBase.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBasePaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePaused(log types.Log) (*ZetaConnectorBasePaused, error) { + event := new(ZetaConnectorBasePaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBasePauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePauserAddressUpdatedIterator struct { + Event *ZetaConnectorBasePauserAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBasePauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePauserAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBasePauserAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorBasePauserAddressUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePauserAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBasePauserAddressUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorBasePauserAddressUpdated, error) { + event := new(ZetaConnectorBasePauserAddressUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdatedIterator struct { + Event *ZetaConnectorBaseTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorBaseTSSAddressUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseTSSAddressUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdated, error) { + event := new(ZetaConnectorBaseTSSAddressUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorBaseTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseUnpausedIterator struct { + Event *ZetaConnectorBaseUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseUnpaused represents a Unpaused event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorBaseUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorBaseUnpausedIterator{contract: _ZetaConnectorBase.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseUnpaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorBaseUnpaused, error) { + event := new(ZetaConnectorBaseUnpaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaReceivedIterator struct { + Event *ZetaConnectorBaseZetaReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseZetaReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseZetaReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseZetaReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseZetaReceived represents a ZetaReceived event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaReceived struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorBaseZetaReceivedIterator, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseZetaReceivedIterator{contract: _ZetaConnectorBase.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil +} + +// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseZetaReceived) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorBaseZetaReceived, error) { + event := new(ZetaConnectorBaseZetaReceived) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaRevertedIterator struct { + Event *ZetaConnectorBaseZetaReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseZetaRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseZetaRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseZetaRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseZetaReverted represents a ZetaReverted event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaReverted struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationChainId *big.Int + DestinationAddress []byte + RemainingZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorBaseZetaRevertedIterator, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseZetaRevertedIterator{contract: _ZetaConnectorBase.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil +} + +// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseZetaReverted) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorBaseZetaReverted, error) { + event := new(ZetaConnectorBaseZetaReverted) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaSentIterator struct { + Event *ZetaConnectorBaseZetaSent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseZetaSentIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseZetaSentIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseZetaSentIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseZetaSent represents a ZetaSent event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseZetaSent struct { + SourceTxOriginAddress common.Address + ZetaTxSenderAddress common.Address + DestinationChainId *big.Int + DestinationAddress []byte + ZetaValueAndGas *big.Int + DestinationGasLimit *big.Int + Message []byte + ZetaParams []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorBaseZetaSentIterator, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseZetaSentIterator{contract: _ZetaConnectorBase.contract, event: "ZetaSent", logs: logs, sub: sub}, nil +} + +// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseZetaSent) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorBaseZetaSent, error) { + event := new(ZetaConnectorBaseZetaSent) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go b/v1/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go new file mode 100644 index 00000000..ed234187 --- /dev/null +++ b/v1/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go @@ -0,0 +1,1726 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnector + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesSendInput struct { + DestinationChainId *big.Int + DestinationAddress []byte + DestinationGasLimit *big.Int + Message []byte + ZetaValueAndGas *big.Int + ZetaParams []byte +} + +// ZetaConnectorEthMetaData contains all meta data concerning the ZetaConnectorEth contract. +var ZetaConnectorEthMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220aea116262018bae5c67a2e8d7df041d67768b80865d96b72392c003b54c708f264736f6c63430008070033", +} + +// ZetaConnectorEthABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorEthMetaData.ABI instead. +var ZetaConnectorEthABI = ZetaConnectorEthMetaData.ABI + +// ZetaConnectorEthBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorEthMetaData.Bin instead. +var ZetaConnectorEthBin = ZetaConnectorEthMetaData.Bin + +// DeployZetaConnectorEth deploys a new Ethereum contract, binding an instance of ZetaConnectorEth to it. +func DeployZetaConnectorEth(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorEth, error) { + parsed, err := ZetaConnectorEthMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorEthBin), backend, zetaToken_, tssAddress_, tssAddressUpdater_, pauserAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorEth{ZetaConnectorEthCaller: ZetaConnectorEthCaller{contract: contract}, ZetaConnectorEthTransactor: ZetaConnectorEthTransactor{contract: contract}, ZetaConnectorEthFilterer: ZetaConnectorEthFilterer{contract: contract}}, nil +} + +// ZetaConnectorEth is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorEth struct { + ZetaConnectorEthCaller // Read-only binding to the contract + ZetaConnectorEthTransactor // Write-only binding to the contract + ZetaConnectorEthFilterer // Log filterer for contract events +} + +// ZetaConnectorEthCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorEthCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorEthTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorEthTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorEthFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorEthSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorEthSession struct { + Contract *ZetaConnectorEth // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorEthCallerSession struct { + Contract *ZetaConnectorEthCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorEthTransactorSession struct { + Contract *ZetaConnectorEthTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorEthRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorEthRaw struct { + Contract *ZetaConnectorEth // Generic contract binding to access the raw methods on +} + +// ZetaConnectorEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorEthCallerRaw struct { + Contract *ZetaConnectorEthCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorEthTransactorRaw struct { + Contract *ZetaConnectorEthTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorEth creates a new instance of ZetaConnectorEth, bound to a specific deployed contract. +func NewZetaConnectorEth(address common.Address, backend bind.ContractBackend) (*ZetaConnectorEth, error) { + contract, err := bindZetaConnectorEth(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorEth{ZetaConnectorEthCaller: ZetaConnectorEthCaller{contract: contract}, ZetaConnectorEthTransactor: ZetaConnectorEthTransactor{contract: contract}, ZetaConnectorEthFilterer: ZetaConnectorEthFilterer{contract: contract}}, nil +} + +// NewZetaConnectorEthCaller creates a new read-only instance of ZetaConnectorEth, bound to a specific deployed contract. +func NewZetaConnectorEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorEthCaller, error) { + contract, err := bindZetaConnectorEth(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorEthCaller{contract: contract}, nil +} + +// NewZetaConnectorEthTransactor creates a new write-only instance of ZetaConnectorEth, bound to a specific deployed contract. +func NewZetaConnectorEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorEthTransactor, error) { + contract, err := bindZetaConnectorEth(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorEthTransactor{contract: contract}, nil +} + +// NewZetaConnectorEthFilterer creates a new log filterer instance of ZetaConnectorEth, bound to a specific deployed contract. +func NewZetaConnectorEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorEthFilterer, error) { + contract, err := bindZetaConnectorEth(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorEthFilterer{contract: contract}, nil +} + +// bindZetaConnectorEth binds a generic wrapper to an already deployed contract. +func bindZetaConnectorEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorEthMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorEth *ZetaConnectorEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorEth.Contract.ZetaConnectorEthCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorEth *ZetaConnectorEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.ZetaConnectorEthTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorEth *ZetaConnectorEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.ZetaConnectorEthTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorEth *ZetaConnectorEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorEth.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorEth *ZetaConnectorEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorEth *ZetaConnectorEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.contract.Transact(opts, method, params...) +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) GetLockedAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "getLockedAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorEth *ZetaConnectorEthSession) GetLockedAmount() (*big.Int, error) { + return _ZetaConnectorEth.Contract.GetLockedAmount(&_ZetaConnectorEth.CallOpts) +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) GetLockedAmount() (*big.Int, error) { + return _ZetaConnectorEth.Contract.GetLockedAmount(&_ZetaConnectorEth.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorEth *ZetaConnectorEthSession) Paused() (bool, error) { + return _ZetaConnectorEth.Contract.Paused(&_ZetaConnectorEth.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) Paused() (bool, error) { + return _ZetaConnectorEth.Contract.Paused(&_ZetaConnectorEth.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "pauserAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorEth.Contract.PauserAddress(&_ZetaConnectorEth.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorEth.Contract.PauserAddress(&_ZetaConnectorEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthSession) TssAddress() (common.Address, error) { + return _ZetaConnectorEth.Contract.TssAddress(&_ZetaConnectorEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorEth.Contract.TssAddress(&_ZetaConnectorEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "tssAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorEth.Contract.TssAddressUpdater(&_ZetaConnectorEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorEth.Contract.TssAddressUpdater(&_ZetaConnectorEth.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorEth.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorEth.Contract.ZetaToken(&_ZetaConnectorEth.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorEth *ZetaConnectorEthCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorEth.Contract.ZetaToken(&_ZetaConnectorEth.CallOpts) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.OnReceive(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.OnReceive(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.OnRevert(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.OnRevert(&_ZetaConnectorEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Pause(&_ZetaConnectorEth.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Pause(&_ZetaConnectorEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "renounceTssAddressUpdater") +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorEth.TransactOpts) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "send", input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Send(&_ZetaConnectorEth.TransactOpts, input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Send(&_ZetaConnectorEth.TransactOpts, input) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Unpause(&_ZetaConnectorEth.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.Unpause(&_ZetaConnectorEth.TransactOpts) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "updatePauserAddress", pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.UpdatePauserAddress(&_ZetaConnectorEth.TransactOpts, pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.UpdatePauserAddress(&_ZetaConnectorEth.TransactOpts, pauserAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.contract.Transact(opts, "updateTssAddress", tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.UpdateTssAddress(&_ZetaConnectorEth.TransactOpts, tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorEth *ZetaConnectorEthTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorEth.Contract.UpdateTssAddress(&_ZetaConnectorEth.TransactOpts, tssAddress_) +} + +// ZetaConnectorEthPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthPausedIterator struct { + Event *ZetaConnectorEthPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthPaused represents a Paused event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorEthPausedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorEthPausedIterator{contract: _ZetaConnectorEth.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthPaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthPaused) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParsePaused(log types.Log) (*ZetaConnectorEthPaused, error) { + event := new(ZetaConnectorEthPaused) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthPauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthPauserAddressUpdatedIterator struct { + Event *ZetaConnectorEthPauserAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthPauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthPauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthPauserAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthPauserAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorEthPauserAddressUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthPauserAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthPauserAddressUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorEthPauserAddressUpdated, error) { + event := new(ZetaConnectorEthPauserAddressUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdatedIterator struct { + Event *ZetaConnectorEthTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorEthTSSAddressUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthTSSAddressUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdated, error) { + event := new(ZetaConnectorEthTSSAddressUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthUnpausedIterator struct { + Event *ZetaConnectorEthUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthUnpaused represents a Unpaused event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorEthUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorEthUnpausedIterator{contract: _ZetaConnectorEth.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthUnpaused) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorEthUnpaused, error) { + event := new(ZetaConnectorEthUnpaused) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaReceivedIterator struct { + Event *ZetaConnectorEthZetaReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthZetaReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthZetaReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthZetaReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthZetaReceived represents a ZetaReceived event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaReceived struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorEthZetaReceivedIterator, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorEthZetaReceivedIterator{contract: _ZetaConnectorEth.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil +} + +// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthZetaReceived) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorEthZetaReceived, error) { + event := new(ZetaConnectorEthZetaReceived) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaRevertedIterator struct { + Event *ZetaConnectorEthZetaReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthZetaRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthZetaRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthZetaRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthZetaReverted represents a ZetaReverted event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaReverted struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationChainId *big.Int + DestinationAddress []byte + RemainingZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorEthZetaRevertedIterator, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorEthZetaRevertedIterator{contract: _ZetaConnectorEth.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil +} + +// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthZetaReverted) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorEthZetaReverted, error) { + event := new(ZetaConnectorEthZetaReverted) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorEthZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaSentIterator struct { + Event *ZetaConnectorEthZetaSent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthZetaSentIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthZetaSentIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthZetaSentIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthZetaSent represents a ZetaSent event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthZetaSent struct { + SourceTxOriginAddress common.Address + ZetaTxSenderAddress common.Address + DestinationChainId *big.Int + DestinationAddress []byte + ZetaValueAndGas *big.Int + DestinationGasLimit *big.Int + Message []byte + ZetaParams []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorEthZetaSentIterator, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return &ZetaConnectorEthZetaSentIterator{contract: _ZetaConnectorEth.contract, event: "ZetaSent", logs: logs, sub: sub}, nil +} + +// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthZetaSent) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorEthZetaSent, error) { + event := new(ZetaConnectorEthZetaSent) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go b/v1/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go new file mode 100644 index 00000000..62e6a691 --- /dev/null +++ b/v1/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go @@ -0,0 +1,1913 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnector + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesSendInput struct { + DestinationChainId *big.Int + DestinationAddress []byte + DestinationGasLimit *big.Int + Message []byte + ZetaValueAndGas *big.Int + ZetaParams []byte +} + +// ZetaConnectorNonEthMetaData contains all meta data concerning the ZetaConnectorNonEth contract. +var ZetaConnectorNonEthMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTokenAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxSupply\",\"type\":\"uint256\"}],\"name\":\"MaxSupplyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply_\",\"type\":\"uint256\"}],\"name\":\"setMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220c031f80b5c9d397027c78f70c718cbb340af3281424b52faca5743d7e7b4560464736f6c63430008070033", +} + +// ZetaConnectorNonEthABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNonEthMetaData.ABI instead. +var ZetaConnectorNonEthABI = ZetaConnectorNonEthMetaData.ABI + +// ZetaConnectorNonEthBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorNonEthMetaData.Bin instead. +var ZetaConnectorNonEthBin = ZetaConnectorNonEthMetaData.Bin + +// DeployZetaConnectorNonEth deploys a new Ethereum contract, binding an instance of ZetaConnectorNonEth to it. +func DeployZetaConnectorNonEth(auth *bind.TransactOpts, backend bind.ContractBackend, zetaTokenAddress_ common.Address, tssAddress_ common.Address, tssAddressUpdater_ common.Address, pauserAddress_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonEth, error) { + parsed, err := ZetaConnectorNonEthMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonEthBin), backend, zetaTokenAddress_, tssAddress_, tssAddressUpdater_, pauserAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorNonEth{ZetaConnectorNonEthCaller: ZetaConnectorNonEthCaller{contract: contract}, ZetaConnectorNonEthTransactor: ZetaConnectorNonEthTransactor{contract: contract}, ZetaConnectorNonEthFilterer: ZetaConnectorNonEthFilterer{contract: contract}}, nil +} + +// ZetaConnectorNonEth is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNonEth struct { + ZetaConnectorNonEthCaller // Read-only binding to the contract + ZetaConnectorNonEthTransactor // Write-only binding to the contract + ZetaConnectorNonEthFilterer // Log filterer for contract events +} + +// ZetaConnectorNonEthCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNonEthCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonEthTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNonEthTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNonEthFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonEthSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNonEthSession struct { + Contract *ZetaConnectorNonEth // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNonEthCallerSession struct { + Contract *ZetaConnectorNonEthCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNonEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNonEthTransactorSession struct { + Contract *ZetaConnectorNonEthTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonEthRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNonEthRaw struct { + Contract *ZetaConnectorNonEth // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNonEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNonEthCallerRaw struct { + Contract *ZetaConnectorNonEthCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNonEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNonEthTransactorRaw struct { + Contract *ZetaConnectorNonEthTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNonEth creates a new instance of ZetaConnectorNonEth, bound to a specific deployed contract. +func NewZetaConnectorNonEth(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNonEth, error) { + contract, err := bindZetaConnectorNonEth(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEth{ZetaConnectorNonEthCaller: ZetaConnectorNonEthCaller{contract: contract}, ZetaConnectorNonEthTransactor: ZetaConnectorNonEthTransactor{contract: contract}, ZetaConnectorNonEthFilterer: ZetaConnectorNonEthFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNonEthCaller creates a new read-only instance of ZetaConnectorNonEth, bound to a specific deployed contract. +func NewZetaConnectorNonEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNonEthCaller, error) { + contract, err := bindZetaConnectorNonEth(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthCaller{contract: contract}, nil +} + +// NewZetaConnectorNonEthTransactor creates a new write-only instance of ZetaConnectorNonEth, bound to a specific deployed contract. +func NewZetaConnectorNonEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNonEthTransactor, error) { + contract, err := bindZetaConnectorNonEth(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthTransactor{contract: contract}, nil +} + +// NewZetaConnectorNonEthFilterer creates a new log filterer instance of ZetaConnectorNonEth, bound to a specific deployed contract. +func NewZetaConnectorNonEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNonEthFilterer, error) { + contract, err := bindZetaConnectorNonEth(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthFilterer{contract: contract}, nil +} + +// bindZetaConnectorNonEth binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNonEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNonEthMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.ZetaConnectorNonEthTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonEth.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.contract.Transact(opts, method, params...) +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) GetLockedAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "getLockedAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) GetLockedAmount() (*big.Int, error) { + return _ZetaConnectorNonEth.Contract.GetLockedAmount(&_ZetaConnectorNonEth.CallOpts) +} + +// GetLockedAmount is a free data retrieval call binding the contract method 0x252bc886. +// +// Solidity: function getLockedAmount() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) GetLockedAmount() (*big.Int, error) { + return _ZetaConnectorNonEth.Contract.GetLockedAmount(&_ZetaConnectorNonEth.CallOpts) +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) MaxSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "maxSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) MaxSupply() (*big.Int, error) { + return _ZetaConnectorNonEth.Contract.MaxSupply(&_ZetaConnectorNonEth.CallOpts) +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) MaxSupply() (*big.Int, error) { + return _ZetaConnectorNonEth.Contract.MaxSupply(&_ZetaConnectorNonEth.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Paused() (bool, error) { + return _ZetaConnectorNonEth.Contract.Paused(&_ZetaConnectorNonEth.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) Paused() (bool, error) { + return _ZetaConnectorNonEth.Contract.Paused(&_ZetaConnectorNonEth.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) PauserAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "pauserAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.PauserAddress(&_ZetaConnectorNonEth.CallOpts) +} + +// PauserAddress is a free data retrieval call binding the contract method 0xf7fb869b. +// +// Solidity: function pauserAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) PauserAddress() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.PauserAddress(&_ZetaConnectorNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.TssAddress(&_ZetaConnectorNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.TssAddress(&_ZetaConnectorNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "tssAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.TssAddressUpdater(&_ZetaConnectorNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) TssAddressUpdater() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.TssAddressUpdater(&_ZetaConnectorNonEth.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonEth.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.ZetaToken(&_ZetaConnectorNonEth.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNonEth.Contract.ZetaToken(&_ZetaConnectorNonEth.CallOpts) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.OnReceive(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.OnReceive(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.OnRevert(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.OnRevert(&_ZetaConnectorNonEth.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Pause(&_ZetaConnectorNonEth.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Pause(&_ZetaConnectorNonEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "renounceTssAddressUpdater") +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorNonEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.RenounceTssAddressUpdater(&_ZetaConnectorNonEth.TransactOpts) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "send", input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Send(&_ZetaConnectorNonEth.TransactOpts, input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Send(&_ZetaConnectorNonEth.TransactOpts, input) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) SetMaxSupply(opts *bind.TransactOpts, maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "setMaxSupply", maxSupply_) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.SetMaxSupply(&_ZetaConnectorNonEth.TransactOpts, maxSupply_) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.SetMaxSupply(&_ZetaConnectorNonEth.TransactOpts, maxSupply_) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Unpause(&_ZetaConnectorNonEth.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.Unpause(&_ZetaConnectorNonEth.TransactOpts) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) UpdatePauserAddress(opts *bind.TransactOpts, pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "updatePauserAddress", pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.UpdatePauserAddress(&_ZetaConnectorNonEth.TransactOpts, pauserAddress_) +} + +// UpdatePauserAddress is a paid mutator transaction binding the contract method 0x6128480f. +// +// Solidity: function updatePauserAddress(address pauserAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) UpdatePauserAddress(pauserAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.UpdatePauserAddress(&_ZetaConnectorNonEth.TransactOpts, pauserAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactor) UpdateTssAddress(opts *bind.TransactOpts, tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.contract.Transact(opts, "updateTssAddress", tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.UpdateTssAddress(&_ZetaConnectorNonEth.TransactOpts, tssAddress_) +} + +// UpdateTssAddress is a paid mutator transaction binding the contract method 0x9122c344. +// +// Solidity: function updateTssAddress(address tssAddress_) returns() +func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) UpdateTssAddress(tssAddress_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonEth.Contract.UpdateTssAddress(&_ZetaConnectorNonEth.TransactOpts, tssAddress_) +} + +// ZetaConnectorNonEthMaxSupplyUpdatedIterator is returned from FilterMaxSupplyUpdated and is used to iterate over the raw logs and unpacked data for MaxSupplyUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthMaxSupplyUpdatedIterator struct { + Event *ZetaConnectorNonEthMaxSupplyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthMaxSupplyUpdated represents a MaxSupplyUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthMaxSupplyUpdated struct { + CallerAddress common.Address + NewMaxSupply *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxSupplyUpdated is a free log retrieval operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterMaxSupplyUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthMaxSupplyUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthMaxSupplyUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "MaxSupplyUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxSupplyUpdated is a free log subscription operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchMaxSupplyUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthMaxSupplyUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMaxSupplyUpdated is a log parse operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseMaxSupplyUpdated(log types.Log) (*ZetaConnectorNonEthMaxSupplyUpdated, error) { + event := new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthPausedIterator struct { + Event *ZetaConnectorNonEthPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthPaused represents a Paused event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorNonEthPausedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthPausedIterator{contract: _ZetaConnectorNonEth.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthPaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthPaused) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParsePaused(log types.Log) (*ZetaConnectorNonEthPaused, error) { + event := new(ZetaConnectorNonEthPaused) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthPauserAddressUpdatedIterator is returned from FilterPauserAddressUpdated and is used to iterate over the raw logs and unpacked data for PauserAddressUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthPauserAddressUpdatedIterator struct { + Event *ZetaConnectorNonEthPauserAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthPauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthPauserAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthPauserAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthPauserAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthPauserAddressUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "PauserAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthPauserAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "PauserAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthPauserAddressUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. +// +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorNonEthPauserAddressUpdated, error) { + event := new(ZetaConnectorNonEthPauserAddressUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdatedIterator struct { + Event *ZetaConnectorNonEthTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthTSSAddressUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthTSSAddressUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdated, error) { + event := new(ZetaConnectorNonEthTSSAddressUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthUnpausedIterator struct { + Event *ZetaConnectorNonEthUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthUnpaused represents a Unpaused event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorNonEthUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthUnpausedIterator{contract: _ZetaConnectorNonEth.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthUnpaused) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorNonEthUnpaused, error) { + event := new(ZetaConnectorNonEthUnpaused) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaReceivedIterator struct { + Event *ZetaConnectorNonEthZetaReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthZetaReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthZetaReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthZetaReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthZetaReceived represents a ZetaReceived event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaReceived struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorNonEthZetaReceivedIterator, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthZetaReceivedIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil +} + +// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthZetaReceived) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorNonEthZetaReceived, error) { + event := new(ZetaConnectorNonEthZetaReceived) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaRevertedIterator struct { + Event *ZetaConnectorNonEthZetaReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthZetaRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthZetaRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthZetaRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthZetaReverted represents a ZetaReverted event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaReverted struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationChainId *big.Int + DestinationAddress []byte + RemainingZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorNonEthZetaRevertedIterator, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthZetaRevertedIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil +} + +// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthZetaReverted) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorNonEthZetaReverted, error) { + event := new(ZetaConnectorNonEthZetaReverted) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonEthZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaSentIterator struct { + Event *ZetaConnectorNonEthZetaSent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthZetaSentIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthZetaSentIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthZetaSentIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthZetaSent represents a ZetaSent event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthZetaSent struct { + SourceTxOriginAddress common.Address + ZetaTxSenderAddress common.Address + DestinationChainId *big.Int + DestinationAddress []byte + ZetaValueAndGas *big.Int + DestinationGasLimit *big.Int + Message []byte + ZetaParams []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorNonEthZetaSentIterator, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthZetaSentIterator{contract: _ZetaConnectorNonEth.contract, event: "ZetaSent", logs: logs, sub: sub}, nil +} + +// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthZetaSent) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorNonEthZetaSent, error) { + event := new(ZetaConnectorNonEthZetaSent) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go b/v1/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go new file mode 100644 index 00000000..3291465d --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/isystem.sol/isystem.go @@ -0,0 +1,367 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package isystem + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ISystemMetaData contains all meta data concerning the ISystem contract. +var ISystemMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// ISystemABI is the input ABI used to generate the binding from. +// Deprecated: Use ISystemMetaData.ABI instead. +var ISystemABI = ISystemMetaData.ABI + +// ISystem is an auto generated Go binding around an Ethereum contract. +type ISystem struct { + ISystemCaller // Read-only binding to the contract + ISystemTransactor // Write-only binding to the contract + ISystemFilterer // Log filterer for contract events +} + +// ISystemCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISystemCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISystemTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISystemFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISystemSession struct { + Contract *ISystem // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISystemCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISystemCallerSession struct { + Contract *ISystemCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISystemTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISystemTransactorSession struct { + Contract *ISystemTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISystemRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISystemRaw struct { + Contract *ISystem // Generic contract binding to access the raw methods on +} + +// ISystemCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISystemCallerRaw struct { + Contract *ISystemCaller // Generic read-only contract binding to access the raw methods on +} + +// ISystemTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISystemTransactorRaw struct { + Contract *ISystemTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISystem creates a new instance of ISystem, bound to a specific deployed contract. +func NewISystem(address common.Address, backend bind.ContractBackend) (*ISystem, error) { + contract, err := bindISystem(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISystem{ISystemCaller: ISystemCaller{contract: contract}, ISystemTransactor: ISystemTransactor{contract: contract}, ISystemFilterer: ISystemFilterer{contract: contract}}, nil +} + +// NewISystemCaller creates a new read-only instance of ISystem, bound to a specific deployed contract. +func NewISystemCaller(address common.Address, caller bind.ContractCaller) (*ISystemCaller, error) { + contract, err := bindISystem(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISystemCaller{contract: contract}, nil +} + +// NewISystemTransactor creates a new write-only instance of ISystem, bound to a specific deployed contract. +func NewISystemTransactor(address common.Address, transactor bind.ContractTransactor) (*ISystemTransactor, error) { + contract, err := bindISystem(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISystemTransactor{contract: contract}, nil +} + +// NewISystemFilterer creates a new log filterer instance of ISystem, bound to a specific deployed contract. +func NewISystemFilterer(address common.Address, filterer bind.ContractFilterer) (*ISystemFilterer, error) { + contract, err := bindISystem(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISystemFilterer{contract: contract}, nil +} + +// bindISystem binds a generic wrapper to an already deployed contract. +func bindISystem(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISystemMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISystem *ISystemRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISystem.Contract.ISystemCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISystem *ISystemRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISystem.Contract.ISystemTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISystem *ISystemRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISystem.Contract.ISystemTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISystem *ISystemCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISystem.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISystem *ISystemTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISystem.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISystem *ISystemTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISystem.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasCoinZRC20ByChainId", chainID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCallerSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemCaller) GasPriceByChainId(opts *bind.CallOpts, chainID *big.Int) (*big.Int, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasPriceByChainId", chainID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { + return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemCallerSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { + return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCaller) GasZetaPoolByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasZetaPoolByChainId", chainID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCallerSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemSession) WZetaContractAddress() (common.Address, error) { + return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemCallerSession) WZetaContractAddress() (common.Address, error) { + return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) +} diff --git a/v1/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go b/v1/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go new file mode 100644 index 00000000..a3572ed2 --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go @@ -0,0 +1,650 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2router01 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2Router01MetaData contains all meta data concerning the IUniswapV2Router01 contract. +var IUniswapV2Router01MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2Router01ABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2Router01MetaData.ABI instead. +var IUniswapV2Router01ABI = IUniswapV2Router01MetaData.ABI + +// IUniswapV2Router01 is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Router01 struct { + IUniswapV2Router01Caller // Read-only binding to the contract + IUniswapV2Router01Transactor // Write-only binding to the contract + IUniswapV2Router01Filterer // Log filterer for contract events +} + +// IUniswapV2Router01Caller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2Router01Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2Router01Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2Router01Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2Router01Session struct { + Contract *IUniswapV2Router01 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router01CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2Router01CallerSession struct { + Contract *IUniswapV2Router01Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2Router01TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2Router01TransactorSession struct { + Contract *IUniswapV2Router01Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router01Raw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2Router01Raw struct { + Contract *IUniswapV2Router01 // Generic contract binding to access the raw methods on +} + +// IUniswapV2Router01CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2Router01CallerRaw struct { + Contract *IUniswapV2Router01Caller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2Router01TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2Router01TransactorRaw struct { + Contract *IUniswapV2Router01Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Router01 creates a new instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router01, error) { + contract, err := bindIUniswapV2Router01(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Router01{IUniswapV2Router01Caller: IUniswapV2Router01Caller{contract: contract}, IUniswapV2Router01Transactor: IUniswapV2Router01Transactor{contract: contract}, IUniswapV2Router01Filterer: IUniswapV2Router01Filterer{contract: contract}}, nil +} + +// NewIUniswapV2Router01Caller creates a new read-only instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router01Caller, error) { + contract, err := bindIUniswapV2Router01(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Caller{contract: contract}, nil +} + +// NewIUniswapV2Router01Transactor creates a new write-only instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router01Transactor, error) { + contract, err := bindIUniswapV2Router01(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Transactor{contract: contract}, nil +} + +// NewIUniswapV2Router01Filterer creates a new log filterer instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router01Filterer, error) { + contract, err := bindIUniswapV2Router01(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Filterer{contract: contract}, nil +} + +// bindIUniswapV2Router01 binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Router01(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2Router01MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router01 *IUniswapV2Router01CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router01.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.contract.Transact(opts, method, params...) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) WETH(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "WETH") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) WETH() (common.Address, error) { + return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) WETH() (common.Address, error) { + return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) Factory() (common.Address, error) { + return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Factory() (common.Address, error) { + return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsIn", amountOut, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsOut", amountIn, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} diff --git a/v1/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go b/v1/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go new file mode 100644 index 00000000..69969100 --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go @@ -0,0 +1,755 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2router02 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2Router02MetaData contains all meta data concerning the IUniswapV2Router02 contract. +var IUniswapV2Router02MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2Router02ABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2Router02MetaData.ABI instead. +var IUniswapV2Router02ABI = IUniswapV2Router02MetaData.ABI + +// IUniswapV2Router02 is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Router02 struct { + IUniswapV2Router02Caller // Read-only binding to the contract + IUniswapV2Router02Transactor // Write-only binding to the contract + IUniswapV2Router02Filterer // Log filterer for contract events +} + +// IUniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2Router02Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2Router02Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2Router02Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2Router02Session struct { + Contract *IUniswapV2Router02 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2Router02CallerSession struct { + Contract *IUniswapV2Router02Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2Router02TransactorSession struct { + Contract *IUniswapV2Router02Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2Router02Raw struct { + Contract *IUniswapV2Router02 // Generic contract binding to access the raw methods on +} + +// IUniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2Router02CallerRaw struct { + Contract *IUniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2Router02TransactorRaw struct { + Contract *IUniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Router02 creates a new instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router02, error) { + contract, err := bindIUniswapV2Router02(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Router02{IUniswapV2Router02Caller: IUniswapV2Router02Caller{contract: contract}, IUniswapV2Router02Transactor: IUniswapV2Router02Transactor{contract: contract}, IUniswapV2Router02Filterer: IUniswapV2Router02Filterer{contract: contract}}, nil +} + +// NewIUniswapV2Router02Caller creates a new read-only instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router02Caller, error) { + contract, err := bindIUniswapV2Router02(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Caller{contract: contract}, nil +} + +// NewIUniswapV2Router02Transactor creates a new write-only instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router02Transactor, error) { + contract, err := bindIUniswapV2Router02(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Transactor{contract: contract}, nil +} + +// NewIUniswapV2Router02Filterer creates a new log filterer instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router02Filterer, error) { + contract, err := bindIUniswapV2Router02(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Filterer{contract: contract}, nil +} + +// bindIUniswapV2Router02 binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2Router02MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router02 *IUniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router02.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.contract.Transact(opts, method, params...) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "WETH") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) WETH() (common.Address, error) { + return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) WETH() (common.Address, error) { + return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) Factory() (common.Address, error) { + return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Factory() (common.Address, error) { + return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} diff --git a/v1/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go b/v1/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go new file mode 100644 index 00000000..c152269a --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go @@ -0,0 +1,977 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iwzeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IWETH9MetaData contains all meta data concerning the IWETH9 contract. +var IWETH9MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use IWETH9MetaData.ABI instead. +var IWETH9ABI = IWETH9MetaData.ABI + +// IWETH9 is an auto generated Go binding around an Ethereum contract. +type IWETH9 struct { + IWETH9Caller // Read-only binding to the contract + IWETH9Transactor // Write-only binding to the contract + IWETH9Filterer // Log filterer for contract events +} + +// IWETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type IWETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IWETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWETH9Session struct { + Contract *IWETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWETH9CallerSession struct { + Contract *IWETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWETH9TransactorSession struct { + Contract *IWETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type IWETH9Raw struct { + Contract *IWETH9 // Generic contract binding to access the raw methods on +} + +// IWETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWETH9CallerRaw struct { + Contract *IWETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// IWETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWETH9TransactorRaw struct { + Contract *IWETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWETH9 creates a new instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9(address common.Address, backend bind.ContractBackend) (*IWETH9, error) { + contract, err := bindIWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWETH9{IWETH9Caller: IWETH9Caller{contract: contract}, IWETH9Transactor: IWETH9Transactor{contract: contract}, IWETH9Filterer: IWETH9Filterer{contract: contract}}, nil +} + +// NewIWETH9Caller creates a new read-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Caller(address common.Address, caller bind.ContractCaller) (*IWETH9Caller, error) { + contract, err := bindIWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWETH9Caller{contract: contract}, nil +} + +// NewIWETH9Transactor creates a new write-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*IWETH9Transactor, error) { + contract, err := bindIWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWETH9Transactor{contract: contract}, nil +} + +// NewIWETH9Filterer creates a new log filterer instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*IWETH9Filterer, error) { + contract, err := bindIWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWETH9Filterer{contract: contract}, nil +} + +// bindIWETH9 binds a generic wrapper to an already deployed contract. +func bindIWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.IWETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Session) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Approve(opts *bind.TransactOpts, spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "approve", spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Session) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Transfer(opts *bind.TransactOpts, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transfer", to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transferFrom", from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// IWETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IWETH9 contract. +type IWETH9ApprovalIterator struct { + Event *IWETH9Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Approval represents a Approval event raised by the IWETH9 contract. +type IWETH9Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IWETH9ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IWETH9ApprovalIterator{contract: _IWETH9.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IWETH9Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseApproval(log types.Log) (*IWETH9Approval, error) { + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IWETH9 contract. +type IWETH9DepositIterator struct { + Event *IWETH9Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Deposit represents a Deposit event raised by the IWETH9 contract. +type IWETH9Deposit struct { + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*IWETH9DepositIterator, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return &IWETH9DepositIterator{contract: _IWETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IWETH9Deposit, dst []common.Address) (event.Subscription, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseDeposit(log types.Log) (*IWETH9Deposit, error) { + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IWETH9 contract. +type IWETH9TransferIterator struct { + Event *IWETH9Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Transfer represents a Transfer event raised by the IWETH9 contract. +type IWETH9Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IWETH9TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IWETH9TransferIterator{contract: _IWETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IWETH9Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseTransfer(log types.Log) (*IWETH9Transfer, error) { + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IWETH9 contract. +type IWETH9WithdrawalIterator struct { + Event *IWETH9Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Withdrawal represents a Withdrawal event raised by the IWETH9 contract. +type IWETH9Withdrawal struct { + Src common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*IWETH9WithdrawalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return &IWETH9WithdrawalIterator{contract: _IWETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IWETH9Withdrawal, src []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseWithdrawal(log types.Log) (*IWETH9Withdrawal, error) { + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go new file mode 100644 index 00000000..115677f6 --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20.go @@ -0,0 +1,463 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZRC20MetaData contains all meta data concerning the IZRC20 contract. +var IZRC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IZRC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IZRC20MetaData.ABI instead. +var IZRC20ABI = IZRC20MetaData.ABI + +// IZRC20 is an auto generated Go binding around an Ethereum contract. +type IZRC20 struct { + IZRC20Caller // Read-only binding to the contract + IZRC20Transactor // Write-only binding to the contract + IZRC20Filterer // Log filterer for contract events +} + +// IZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IZRC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IZRC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZRC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZRC20Session struct { + Contract *IZRC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZRC20CallerSession struct { + Contract *IZRC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZRC20TransactorSession struct { + Contract *IZRC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IZRC20Raw struct { + Contract *IZRC20 // Generic contract binding to access the raw methods on +} + +// IZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZRC20CallerRaw struct { + Contract *IZRC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZRC20TransactorRaw struct { + Contract *IZRC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZRC20 creates a new instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20(address common.Address, backend bind.ContractBackend) (*IZRC20, error) { + contract, err := bindIZRC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZRC20{IZRC20Caller: IZRC20Caller{contract: contract}, IZRC20Transactor: IZRC20Transactor{contract: contract}, IZRC20Filterer: IZRC20Filterer{contract: contract}}, nil +} + +// NewIZRC20Caller creates a new read-only instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Caller(address common.Address, caller bind.ContractCaller) (*IZRC20Caller, error) { + contract, err := bindIZRC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZRC20Caller{contract: contract}, nil +} + +// NewIZRC20Transactor creates a new write-only instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20Transactor, error) { + contract, err := bindIZRC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZRC20Transactor{contract: contract}, nil +} + +// NewIZRC20Filterer creates a new log filterer instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20Filterer, error) { + contract, err := bindIZRC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZRC20Filterer{contract: contract}, nil +} + +// bindIZRC20 binds a generic wrapper to an already deployed contract. +func bindIZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZRC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20 *IZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20.Contract.IZRC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20 *IZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20.Contract.IZRC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20 *IZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20.Contract.IZRC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20 *IZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20 *IZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20 *IZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20.Contract.contract.Transact(opts, method, params...) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20Session) TotalSupply() (*big.Int, error) { + return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) TotalSupply() (*big.Int, error) { + return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) +} diff --git a/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go new file mode 100644 index 00000000..d60ed6ff --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/izrc20metadata.go @@ -0,0 +1,556 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZRC20MetadataMetaData contains all meta data concerning the IZRC20Metadata contract. +var IZRC20MetadataMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IZRC20MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IZRC20MetadataMetaData.ABI instead. +var IZRC20MetadataABI = IZRC20MetadataMetaData.ABI + +// IZRC20Metadata is an auto generated Go binding around an Ethereum contract. +type IZRC20Metadata struct { + IZRC20MetadataCaller // Read-only binding to the contract + IZRC20MetadataTransactor // Write-only binding to the contract + IZRC20MetadataFilterer // Log filterer for contract events +} + +// IZRC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IZRC20MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IZRC20MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZRC20MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZRC20MetadataSession struct { + Contract *IZRC20Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZRC20MetadataCallerSession struct { + Contract *IZRC20MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZRC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZRC20MetadataTransactorSession struct { + Contract *IZRC20MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IZRC20MetadataRaw struct { + Contract *IZRC20Metadata // Generic contract binding to access the raw methods on +} + +// IZRC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZRC20MetadataCallerRaw struct { + Contract *IZRC20MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IZRC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZRC20MetadataTransactorRaw struct { + Contract *IZRC20MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZRC20Metadata creates a new instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20Metadata(address common.Address, backend bind.ContractBackend) (*IZRC20Metadata, error) { + contract, err := bindIZRC20Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZRC20Metadata{IZRC20MetadataCaller: IZRC20MetadataCaller{contract: contract}, IZRC20MetadataTransactor: IZRC20MetadataTransactor{contract: contract}, IZRC20MetadataFilterer: IZRC20MetadataFilterer{contract: contract}}, nil +} + +// NewIZRC20MetadataCaller creates a new read-only instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IZRC20MetadataCaller, error) { + contract, err := bindIZRC20Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZRC20MetadataCaller{contract: contract}, nil +} + +// NewIZRC20MetadataTransactor creates a new write-only instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20MetadataTransactor, error) { + contract, err := bindIZRC20Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZRC20MetadataTransactor{contract: contract}, nil +} + +// NewIZRC20MetadataFilterer creates a new log filterer instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20MetadataFilterer, error) { + contract, err := bindIZRC20Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZRC20MetadataFilterer{contract: contract}, nil +} + +// bindIZRC20Metadata binds a generic wrapper to an already deployed contract. +func bindIZRC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZRC20MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20Metadata *IZRC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20Metadata.Contract.IZRC20MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20Metadata *IZRC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20Metadata *IZRC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20Metadata *IZRC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.contract.Transact(opts, method, params...) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataSession) Decimals() (uint8, error) { + return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Decimals() (uint8, error) { + return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataSession) Name() (string, error) { + return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Name() (string, error) { + return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataSession) Symbol() (string, error) { + return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Symbol() (string, error) { + return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) TotalSupply() (*big.Int, error) { + return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) TotalSupply() (*big.Int, error) { + return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) +} diff --git a/v1/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go new file mode 100644 index 00000000..3e3efb41 --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/izrc20.sol/zrc20events.go @@ -0,0 +1,1185 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20EventsMetaData contains all meta data concerning the ZRC20Events contract. +var ZRC20EventsMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"}]", +} + +// ZRC20EventsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20EventsMetaData.ABI instead. +var ZRC20EventsABI = ZRC20EventsMetaData.ABI + +// ZRC20Events is an auto generated Go binding around an Ethereum contract. +type ZRC20Events struct { + ZRC20EventsCaller // Read-only binding to the contract + ZRC20EventsTransactor // Write-only binding to the contract + ZRC20EventsFilterer // Log filterer for contract events +} + +// ZRC20EventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20EventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20EventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20EventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20EventsSession struct { + Contract *ZRC20Events // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20EventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20EventsCallerSession struct { + Contract *ZRC20EventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20EventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20EventsTransactorSession struct { + Contract *ZRC20EventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20EventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20EventsRaw struct { + Contract *ZRC20Events // Generic contract binding to access the raw methods on +} + +// ZRC20EventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20EventsCallerRaw struct { + Contract *ZRC20EventsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20EventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20EventsTransactorRaw struct { + Contract *ZRC20EventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Events creates a new instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20Events(address common.Address, backend bind.ContractBackend) (*ZRC20Events, error) { + contract, err := bindZRC20Events(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Events{ZRC20EventsCaller: ZRC20EventsCaller{contract: contract}, ZRC20EventsTransactor: ZRC20EventsTransactor{contract: contract}, ZRC20EventsFilterer: ZRC20EventsFilterer{contract: contract}}, nil +} + +// NewZRC20EventsCaller creates a new read-only instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20EventsCaller, error) { + contract, err := bindZRC20Events(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20EventsCaller{contract: contract}, nil +} + +// NewZRC20EventsTransactor creates a new write-only instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20EventsTransactor, error) { + contract, err := bindZRC20Events(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20EventsTransactor{contract: contract}, nil +} + +// NewZRC20EventsFilterer creates a new log filterer instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20EventsFilterer, error) { + contract, err := bindZRC20Events(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20EventsFilterer{contract: contract}, nil +} + +// bindZRC20Events binds a generic wrapper to an already deployed contract. +func bindZRC20Events(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20EventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Events *ZRC20EventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Events.Contract.ZRC20EventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Events *ZRC20EventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Events *ZRC20EventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Events *ZRC20EventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Events.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Events *ZRC20EventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Events.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Events *ZRC20EventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Events.Contract.contract.Transact(opts, method, params...) +} + +// ZRC20EventsApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20Events contract. +type ZRC20EventsApprovalIterator struct { + Event *ZRC20EventsApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsApproval represents a Approval event raised by the ZRC20Events contract. +type ZRC20EventsApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20EventsApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZRC20EventsApprovalIterator{contract: _ZRC20Events.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20EventsApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsApproval) + if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseApproval(log types.Log) (*ZRC20EventsApproval, error) { + event := new(ZRC20EventsApproval) + if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20Events contract. +type ZRC20EventsDepositIterator struct { + Event *ZRC20EventsDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsDeposit represents a Deposit event raised by the ZRC20Events contract. +type ZRC20EventsDeposit struct { + From []byte + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20EventsDepositIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return &ZRC20EventsDepositIterator{contract: _ZRC20Events.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsDeposit, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsDeposit) + if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseDeposit(log types.Log) (*ZRC20EventsDeposit, error) { + event := new(ZRC20EventsDeposit) + if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20Events contract. +type ZRC20EventsTransferIterator struct { + Event *ZRC20EventsTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsTransfer represents a Transfer event raised by the ZRC20Events contract. +type ZRC20EventsTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20EventsTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZRC20EventsTransferIterator{contract: _ZRC20Events.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20EventsTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsTransfer) + if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseTransfer(log types.Log) (*ZRC20EventsTransfer, error) { + event := new(ZRC20EventsTransfer) + if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGasLimitIterator struct { + Event *ZRC20EventsUpdatedGasLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedGasLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedGasLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedGasLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGasLimit struct { + GasLimit *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20EventsUpdatedGasLimitIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedGasLimitIterator{contract: _ZRC20Events.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedGasLimit) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedGasLimit) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20EventsUpdatedGasLimit, error) { + event := new(ZRC20EventsUpdatedGasLimit) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedProtocolFlatFeeIterator struct { + Event *ZRC20EventsUpdatedProtocolFlatFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedProtocolFlatFee struct { + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20EventsUpdatedProtocolFlatFeeIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedProtocolFlatFeeIterator{contract: _ZRC20Events.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedProtocolFlatFee) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedProtocolFlatFee) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20EventsUpdatedProtocolFlatFee, error) { + event := new(ZRC20EventsUpdatedProtocolFlatFee) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedSystemContractIterator struct { + Event *ZRC20EventsUpdatedSystemContract // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedSystemContractIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedSystemContractIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedSystemContractIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedSystemContract struct { + SystemContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20EventsUpdatedSystemContractIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedSystemContractIterator{contract: _ZRC20Events.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil +} + +// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedSystemContract) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedSystemContract) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20EventsUpdatedSystemContract, error) { + event := new(ZRC20EventsUpdatedSystemContract) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20Events contract. +type ZRC20EventsWithdrawalIterator struct { + Event *ZRC20EventsWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsWithdrawal represents a Withdrawal event raised by the ZRC20Events contract. +type ZRC20EventsWithdrawal struct { + From common.Address + To []byte + Value *big.Int + GasFee *big.Int + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20EventsWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &ZRC20EventsWithdrawalIterator{contract: _ZRC20Events.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20EventsWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsWithdrawal) + if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) ParseWithdrawal(log types.Log) (*ZRC20EventsWithdrawal, error) { + event := new(ZRC20EventsWithdrawal) + if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go b/v1/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go new file mode 100644 index 00000000..3d41b695 --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/zcontract.sol/universalcontract.go @@ -0,0 +1,237 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// RevertContext is an auto generated low-level Go binding around an user-defined struct. +type RevertContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// UniversalContractMetaData contains all meta data concerning the UniversalContract contract. +var UniversalContractMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// UniversalContractABI is the input ABI used to generate the binding from. +// Deprecated: Use UniversalContractMetaData.ABI instead. +var UniversalContractABI = UniversalContractMetaData.ABI + +// UniversalContract is an auto generated Go binding around an Ethereum contract. +type UniversalContract struct { + UniversalContractCaller // Read-only binding to the contract + UniversalContractTransactor // Write-only binding to the contract + UniversalContractFilterer // Log filterer for contract events +} + +// UniversalContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniversalContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniversalContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniversalContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniversalContractSession struct { + Contract *UniversalContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniversalContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniversalContractCallerSession struct { + Contract *UniversalContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniversalContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniversalContractTransactorSession struct { + Contract *UniversalContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniversalContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniversalContractRaw struct { + Contract *UniversalContract // Generic contract binding to access the raw methods on +} + +// UniversalContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniversalContractCallerRaw struct { + Contract *UniversalContractCaller // Generic read-only contract binding to access the raw methods on +} + +// UniversalContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniversalContractTransactorRaw struct { + Contract *UniversalContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniversalContract creates a new instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContract(address common.Address, backend bind.ContractBackend) (*UniversalContract, error) { + contract, err := bindUniversalContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniversalContract{UniversalContractCaller: UniversalContractCaller{contract: contract}, UniversalContractTransactor: UniversalContractTransactor{contract: contract}, UniversalContractFilterer: UniversalContractFilterer{contract: contract}}, nil +} + +// NewUniversalContractCaller creates a new read-only instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractCaller(address common.Address, caller bind.ContractCaller) (*UniversalContractCaller, error) { + contract, err := bindUniversalContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniversalContractCaller{contract: contract}, nil +} + +// NewUniversalContractTransactor creates a new write-only instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractTransactor(address common.Address, transactor bind.ContractTransactor) (*UniversalContractTransactor, error) { + contract, err := bindUniversalContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniversalContractTransactor{contract: contract}, nil +} + +// NewUniversalContractFilterer creates a new log filterer instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractFilterer(address common.Address, filterer bind.ContractFilterer) (*UniversalContractFilterer, error) { + contract, err := bindUniversalContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniversalContractFilterer{contract: contract}, nil +} + +// bindUniversalContract binds a generic wrapper to an already deployed contract. +func bindUniversalContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniversalContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniversalContract *UniversalContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniversalContract.Contract.UniversalContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniversalContract *UniversalContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniversalContract.Contract.UniversalContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniversalContract *UniversalContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniversalContract.Contract.UniversalContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniversalContract *UniversalContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniversalContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniversalContract *UniversalContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniversalContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniversalContract *UniversalContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniversalContract.Contract.contract.Transact(opts, method, params...) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactor) OnRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.contract.Transact(opts, "onRevert", context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactorSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} diff --git a/v1/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go b/v1/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go new file mode 100644 index 00000000..f0ab38de --- /dev/null +++ b/v1/pkg/contracts/zevm/interfaces/zcontract.sol/zcontract.go @@ -0,0 +1,209 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContractMetaData contains all meta data concerning the ZContract contract. +var ZContractMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZContractABI is the input ABI used to generate the binding from. +// Deprecated: Use ZContractMetaData.ABI instead. +var ZContractABI = ZContractMetaData.ABI + +// ZContract is an auto generated Go binding around an Ethereum contract. +type ZContract struct { + ZContractCaller // Read-only binding to the contract + ZContractTransactor // Write-only binding to the contract + ZContractFilterer // Log filterer for contract events +} + +// ZContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZContractSession struct { + Contract *ZContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZContractCallerSession struct { + Contract *ZContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZContractTransactorSession struct { + Contract *ZContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZContractRaw struct { + Contract *ZContract // Generic contract binding to access the raw methods on +} + +// ZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZContractCallerRaw struct { + Contract *ZContractCaller // Generic read-only contract binding to access the raw methods on +} + +// ZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZContractTransactorRaw struct { + Contract *ZContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZContract creates a new instance of ZContract, bound to a specific deployed contract. +func NewZContract(address common.Address, backend bind.ContractBackend) (*ZContract, error) { + contract, err := bindZContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZContract{ZContractCaller: ZContractCaller{contract: contract}, ZContractTransactor: ZContractTransactor{contract: contract}, ZContractFilterer: ZContractFilterer{contract: contract}}, nil +} + +// NewZContractCaller creates a new read-only instance of ZContract, bound to a specific deployed contract. +func NewZContractCaller(address common.Address, caller bind.ContractCaller) (*ZContractCaller, error) { + contract, err := bindZContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZContractCaller{contract: contract}, nil +} + +// NewZContractTransactor creates a new write-only instance of ZContract, bound to a specific deployed contract. +func NewZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ZContractTransactor, error) { + contract, err := bindZContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZContractTransactor{contract: contract}, nil +} + +// NewZContractFilterer creates a new log filterer instance of ZContract, bound to a specific deployed contract. +func NewZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ZContractFilterer, error) { + contract, err := bindZContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZContractFilterer{contract: contract}, nil +} + +// bindZContract binds a generic wrapper to an already deployed contract. +func bindZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZContract *ZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZContract.Contract.ZContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZContract *ZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZContract.Contract.ZContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZContract *ZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZContract.Contract.ZContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZContract *ZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZContract *ZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZContract *ZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZContract.Contract.contract.Transact(opts, method, params...) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) +} diff --git a/v1/pkg/contracts/zevm/systemcontract.sol/systemcontract.go b/v1/pkg/contracts/zevm/systemcontract.sol/systemcontract.go new file mode 100644 index 00000000..afe7e100 --- /dev/null +++ b/v1/pkg/contracts/zevm/systemcontract.sol/systemcontract.go @@ -0,0 +1,1421 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// SystemContractMetaData contains all meta data concerning the SystemContract contract. +var SystemContractMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Router02_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetConnectorZEVM\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasCoin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasZetaPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetWZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SystemContractDeployed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setConnectorZEVMAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"setGasCoinZRC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"setGasZetaPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setWZETAContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"uniswapv2PairFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2Router02Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnectorZEVMAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea264697066735822122074cb176058c64c566236e929fb1b59095f40ee7409bf1ff681139ad933115af464736f6c63430008070033", +} + +// SystemContractABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractMetaData.ABI instead. +var SystemContractABI = SystemContractMetaData.ABI + +// SystemContractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SystemContractMetaData.Bin instead. +var SystemContractBin = SystemContractMetaData.Bin + +// DeploySystemContract deploys a new Ethereum contract, binding an instance of SystemContract to it. +func DeploySystemContract(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContract, error) { + parsed, err := SystemContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil +} + +// SystemContract is an auto generated Go binding around an Ethereum contract. +type SystemContract struct { + SystemContractCaller // Read-only binding to the contract + SystemContractTransactor // Write-only binding to the contract + SystemContractFilterer // Log filterer for contract events +} + +// SystemContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractSession struct { + Contract *SystemContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractCallerSession struct { + Contract *SystemContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractTransactorSession struct { + Contract *SystemContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractRaw struct { + Contract *SystemContract // Generic contract binding to access the raw methods on +} + +// SystemContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractCallerRaw struct { + Contract *SystemContractCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractTransactorRaw struct { + Contract *SystemContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContract creates a new instance of SystemContract, bound to a specific deployed contract. +func NewSystemContract(address common.Address, backend bind.ContractBackend) (*SystemContract, error) { + contract, err := bindSystemContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil +} + +// NewSystemContractCaller creates a new read-only instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractCaller(address common.Address, caller bind.ContractCaller) (*SystemContractCaller, error) { + contract, err := bindSystemContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractCaller{contract: contract}, nil +} + +// NewSystemContractTransactor creates a new write-only instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractTransactor, error) { + contract, err := bindSystemContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractTransactor{contract: contract}, nil +} + +// NewSystemContractFilterer creates a new log filterer instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractFilterer, error) { + contract, err := bindSystemContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractFilterer{contract: contract}, nil +} + +// bindSystemContract binds a generic wrapper to an already deployed contract. +func bindSystemContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContract *SystemContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContract.Contract.SystemContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContract *SystemContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContract.Contract.SystemContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContract *SystemContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContract.Contract.SystemContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContract *SystemContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContract *SystemContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContract *SystemContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContract.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasPriceByChainId", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2Router02Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractCallerSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractSession) WZetaContractAddress() (common.Address, error) { + return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) WZetaContractAddress() (common.Address, error) { + return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractCaller) ZetaConnectorZEVMAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "zetaConnectorZEVMAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractSession) ZetaConnectorZEVMAddress() (common.Address, error) { + return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) ZetaConnectorZEVMAddress() (common.Address, error) { + return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractTransactor) SetConnectorZEVMAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setConnectorZEVMAddress", addr) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractTransactorSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasPrice", chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractTransactor) SetGasZetaPool(opts *bind.TransactOpts, chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasZetaPool", chainID, erc20) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setWZETAContractAddress", addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) +} + +// SystemContractSetConnectorZEVMIterator is returned from FilterSetConnectorZEVM and is used to iterate over the raw logs and unpacked data for SetConnectorZEVM events raised by the SystemContract contract. +type SystemContractSetConnectorZEVMIterator struct { + Event *SystemContractSetConnectorZEVM // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetConnectorZEVMIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetConnectorZEVM) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetConnectorZEVM) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetConnectorZEVMIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetConnectorZEVMIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetConnectorZEVM represents a SetConnectorZEVM event raised by the SystemContract contract. +type SystemContractSetConnectorZEVM struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetConnectorZEVM is a free log retrieval operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) FilterSetConnectorZEVM(opts *bind.FilterOpts) (*SystemContractSetConnectorZEVMIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetConnectorZEVM") + if err != nil { + return nil, err + } + return &SystemContractSetConnectorZEVMIterator{contract: _SystemContract.contract, event: "SetConnectorZEVM", logs: logs, sub: sub}, nil +} + +// WatchSetConnectorZEVM is a free log subscription operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) WatchSetConnectorZEVM(opts *bind.WatchOpts, sink chan<- *SystemContractSetConnectorZEVM) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetConnectorZEVM") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetConnectorZEVM) + if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetConnectorZEVM is a log parse operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) ParseSetConnectorZEVM(log types.Log) (*SystemContractSetConnectorZEVM, error) { + event := new(SystemContractSetConnectorZEVM) + if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContract contract. +type SystemContractSetGasCoinIterator struct { + Event *SystemContractSetGasCoin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasCoinIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasCoinIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasCoinIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasCoin represents a SetGasCoin event raised by the SystemContract contract. +type SystemContractSetGasCoin struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractSetGasCoinIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return &SystemContractSetGasCoinIterator{contract: _SystemContract.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil +} + +// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasCoin) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasCoin) + if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasCoin(log types.Log) (*SystemContractSetGasCoin, error) { + event := new(SystemContractSetGasCoin) + if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContract contract. +type SystemContractSetGasPriceIterator struct { + Event *SystemContractSetGasPrice // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasPriceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasPriceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasPriceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasPrice represents a SetGasPrice event raised by the SystemContract contract. +type SystemContractSetGasPrice struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractSetGasPriceIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return &SystemContractSetGasPriceIterator{contract: _SystemContract.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil +} + +// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasPrice) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasPrice) + if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasPrice(log types.Log) (*SystemContractSetGasPrice, error) { + event := new(SystemContractSetGasPrice) + if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContract contract. +type SystemContractSetGasZetaPoolIterator struct { + Event *SystemContractSetGasZetaPool // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasZetaPoolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasZetaPoolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasZetaPoolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContract contract. +type SystemContractSetGasZetaPool struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractSetGasZetaPoolIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return &SystemContractSetGasZetaPoolIterator{contract: _SystemContract.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil +} + +// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasZetaPool) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasZetaPool) + if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractSetGasZetaPool, error) { + event := new(SystemContractSetGasZetaPool) + if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContract contract. +type SystemContractSetWZetaIterator struct { + Event *SystemContractSetWZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetWZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetWZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetWZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetWZeta represents a SetWZeta event raised by the SystemContract contract. +type SystemContractSetWZeta struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractSetWZetaIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return &SystemContractSetWZetaIterator{contract: _SystemContract.contract, event: "SetWZeta", logs: logs, sub: sub}, nil +} + +// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractSetWZeta) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetWZeta) + if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) ParseSetWZeta(log types.Log) (*SystemContractSetWZeta, error) { + event := new(SystemContractSetWZeta) + if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContract contract. +type SystemContractSystemContractDeployedIterator struct { + Event *SystemContractSystemContractDeployed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSystemContractDeployedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSystemContractDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSystemContractDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContract contract. +type SystemContractSystemContractDeployed struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractSystemContractDeployedIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return &SystemContractSystemContractDeployedIterator{contract: _SystemContract.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil +} + +// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractSystemContractDeployed) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSystemContractDeployed) + if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractSystemContractDeployed, error) { + event := new(SystemContractSystemContractDeployed) + if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go b/v1/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go new file mode 100644 index 00000000..a20e3eb6 --- /dev/null +++ b/v1/pkg/contracts/zevm/systemcontract.sol/systemcontracterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. +var SystemContractErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", +} + +// SystemContractErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractErrorsMetaData.ABI instead. +var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI + +// SystemContractErrors is an auto generated Go binding around an Ethereum contract. +type SystemContractErrors struct { + SystemContractErrorsCaller // Read-only binding to the contract + SystemContractErrorsTransactor // Write-only binding to the contract + SystemContractErrorsFilterer // Log filterer for contract events +} + +// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractErrorsSession struct { + Contract *SystemContractErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractErrorsCallerSession struct { + Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractErrorsTransactorSession struct { + Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractErrorsRaw struct { + Contract *SystemContractErrors // Generic contract binding to access the raw methods on +} + +// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractErrorsCallerRaw struct { + Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactorRaw struct { + Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { + contract, err := bindSystemContractErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil +} + +// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { + contract, err := bindSystemContractErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsCaller{contract: contract}, nil +} + +// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { + contract, err := bindSystemContractErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsTransactor{contract: contract}, nil +} + +// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { + contract, err := bindSystemContractErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractErrorsFilterer{contract: contract}, nil +} + +// bindSystemContractErrors binds a generic wrapper to an already deployed contract. +func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go b/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go new file mode 100644 index 00000000..9dabc5e8 --- /dev/null +++ b/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. +var SystemContractErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"}]", +} + +// SystemContractErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractErrorsMetaData.ABI instead. +var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI + +// SystemContractErrors is an auto generated Go binding around an Ethereum contract. +type SystemContractErrors struct { + SystemContractErrorsCaller // Read-only binding to the contract + SystemContractErrorsTransactor // Write-only binding to the contract + SystemContractErrorsFilterer // Log filterer for contract events +} + +// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractErrorsSession struct { + Contract *SystemContractErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractErrorsCallerSession struct { + Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractErrorsTransactorSession struct { + Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractErrorsRaw struct { + Contract *SystemContractErrors // Generic contract binding to access the raw methods on +} + +// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractErrorsCallerRaw struct { + Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactorRaw struct { + Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { + contract, err := bindSystemContractErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil +} + +// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { + contract, err := bindSystemContractErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsCaller{contract: contract}, nil +} + +// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { + contract, err := bindSystemContractErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsTransactor{contract: contract}, nil +} + +// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { + contract, err := bindSystemContractErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractErrorsFilterer{contract: contract}, nil +} + +// bindSystemContractErrors binds a generic wrapper to an already deployed contract. +func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go b/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go new file mode 100644 index 00000000..2a02ad6c --- /dev/null +++ b/v1/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go @@ -0,0 +1,1176 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. +var SystemContractMockMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Router02_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasCoin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasZetaPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetWZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SystemContractDeployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"setGasCoinZRC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setWZETAContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"uniswapv2PairFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2Router02Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212200835245fdc75aa593111cf5a43e919740b2258e1512040bc79f39a56cedf119364736f6c63430008070033", +} + +// SystemContractMockABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractMockMetaData.ABI instead. +var SystemContractMockABI = SystemContractMockMetaData.ABI + +// SystemContractMockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SystemContractMockMetaData.Bin instead. +var SystemContractMockBin = SystemContractMockMetaData.Bin + +// DeploySystemContractMock deploys a new Ethereum contract, binding an instance of SystemContractMock to it. +func DeploySystemContractMock(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContractMock, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractMockBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// SystemContractMock is an auto generated Go binding around an Ethereum contract. +type SystemContractMock struct { + SystemContractMockCaller // Read-only binding to the contract + SystemContractMockTransactor // Write-only binding to the contract + SystemContractMockFilterer // Log filterer for contract events +} + +// SystemContractMockCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractMockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractMockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractMockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractMockSession struct { + Contract *SystemContractMock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractMockCallerSession struct { + Contract *SystemContractMockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractMockTransactorSession struct { + Contract *SystemContractMockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractMockRaw struct { + Contract *SystemContractMock // Generic contract binding to access the raw methods on +} + +// SystemContractMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractMockCallerRaw struct { + Contract *SystemContractMockCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractMockTransactorRaw struct { + Contract *SystemContractMockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractMock creates a new instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMock(address common.Address, backend bind.ContractBackend) (*SystemContractMock, error) { + contract, err := bindSystemContractMock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// NewSystemContractMockCaller creates a new read-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockCaller(address common.Address, caller bind.ContractCaller) (*SystemContractMockCaller, error) { + contract, err := bindSystemContractMock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractMockCaller{contract: contract}, nil +} + +// NewSystemContractMockTransactor creates a new write-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractMockTransactor, error) { + contract, err := bindSystemContractMock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractMockTransactor{contract: contract}, nil +} + +// NewSystemContractMockFilterer creates a new log filterer instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractMockFilterer, error) { + contract, err := bindSystemContractMock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractMockFilterer{contract: contract}, nil +} + +// bindSystemContractMock binds a generic wrapper to an already deployed contract. +func bindSystemContractMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.SystemContractMockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transact(opts, method, params...) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasPriceByChainId", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2Router02Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactor) OnCrossChainCall(opts *bind.TransactOpts, target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "onCrossChainCall", target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasPrice", chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setWZETAContractAddress", addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SystemContractMockSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContractMock contract. +type SystemContractMockSetGasCoinIterator struct { + Event *SystemContractMockSetGasCoin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasCoinIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasCoinIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasCoinIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasCoin represents a SetGasCoin event raised by the SystemContractMock contract. +type SystemContractMockSetGasCoin struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractMockSetGasCoinIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasCoinIterator{contract: _SystemContractMock.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil +} + +// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasCoin) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasCoin(log types.Log) (*SystemContractMockSetGasCoin, error) { + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContractMock contract. +type SystemContractMockSetGasPriceIterator struct { + Event *SystemContractMockSetGasPrice // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasPriceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasPriceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasPriceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasPrice represents a SetGasPrice event raised by the SystemContractMock contract. +type SystemContractMockSetGasPrice struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractMockSetGasPriceIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasPriceIterator{contract: _SystemContractMock.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil +} + +// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasPrice) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasPrice(log types.Log) (*SystemContractMockSetGasPrice, error) { + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPoolIterator struct { + Event *SystemContractMockSetGasZetaPool // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasZetaPoolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasZetaPoolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasZetaPoolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPool struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractMockSetGasZetaPoolIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasZetaPoolIterator{contract: _SystemContractMock.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil +} + +// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasZetaPool) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractMockSetGasZetaPool, error) { + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContractMock contract. +type SystemContractMockSetWZetaIterator struct { + Event *SystemContractMockSetWZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetWZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetWZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetWZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetWZeta represents a SetWZeta event raised by the SystemContractMock contract. +type SystemContractMockSetWZeta struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractMockSetWZetaIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return &SystemContractMockSetWZetaIterator{contract: _SystemContractMock.contract, event: "SetWZeta", logs: logs, sub: sub}, nil +} + +// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetWZeta) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetWZeta(log types.Log) (*SystemContractMockSetWZeta, error) { + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployedIterator struct { + Event *SystemContractMockSystemContractDeployed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSystemContractDeployedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSystemContractDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSystemContractDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployed struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractMockSystemContractDeployedIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return &SystemContractMockSystemContractDeployedIterator{contract: _SystemContractMock.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil +} + +// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractMockSystemContractDeployed) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractMockSystemContractDeployed, error) { + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/uniswap.sol/uniswapimports.go b/v1/pkg/contracts/zevm/uniswap.sol/uniswapimports.go new file mode 100644 index 00000000..4107336a --- /dev/null +++ b/v1/pkg/contracts/zevm/uniswap.sol/uniswapimports.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswap + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapImportsMetaData contains all meta data concerning the UniswapImports contract. +var UniswapImportsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820e9232a161dc235f259a171daf4cc9c53677aabc950914989e6b4f90c1688088664736f6c63430005100032", +} + +// UniswapImportsABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapImportsMetaData.ABI instead. +var UniswapImportsABI = UniswapImportsMetaData.ABI + +// UniswapImportsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapImportsMetaData.Bin instead. +var UniswapImportsBin = UniswapImportsMetaData.Bin + +// DeployUniswapImports deploys a new Ethereum contract, binding an instance of UniswapImports to it. +func DeployUniswapImports(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapImports, error) { + parsed, err := UniswapImportsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapImportsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil +} + +// UniswapImports is an auto generated Go binding around an Ethereum contract. +type UniswapImports struct { + UniswapImportsCaller // Read-only binding to the contract + UniswapImportsTransactor // Write-only binding to the contract + UniswapImportsFilterer // Log filterer for contract events +} + +// UniswapImportsCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapImportsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapImportsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapImportsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapImportsSession struct { + Contract *UniswapImports // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapImportsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapImportsCallerSession struct { + Contract *UniswapImportsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapImportsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapImportsTransactorSession struct { + Contract *UniswapImportsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapImportsRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapImportsRaw struct { + Contract *UniswapImports // Generic contract binding to access the raw methods on +} + +// UniswapImportsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapImportsCallerRaw struct { + Contract *UniswapImportsCaller // Generic read-only contract binding to access the raw methods on +} + +// UniswapImportsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapImportsTransactorRaw struct { + Contract *UniswapImportsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapImports creates a new instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImports(address common.Address, backend bind.ContractBackend) (*UniswapImports, error) { + contract, err := bindUniswapImports(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil +} + +// NewUniswapImportsCaller creates a new read-only instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsCaller(address common.Address, caller bind.ContractCaller) (*UniswapImportsCaller, error) { + contract, err := bindUniswapImports(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapImportsCaller{contract: contract}, nil +} + +// NewUniswapImportsTransactor creates a new write-only instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapImportsTransactor, error) { + contract, err := bindUniswapImports(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapImportsTransactor{contract: contract}, nil +} + +// NewUniswapImportsFilterer creates a new log filterer instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapImportsFilterer, error) { + contract, err := bindUniswapImports(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapImportsFilterer{contract: contract}, nil +} + +// bindUniswapImports binds a generic wrapper to an already deployed contract. +func bindUniswapImports(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapImportsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapImports *UniswapImportsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapImports.Contract.UniswapImportsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapImports *UniswapImportsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapImports *UniswapImportsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapImports *UniswapImportsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapImports.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapImports *UniswapImportsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapImports.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapImports *UniswapImportsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapImports.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go b/v1/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go new file mode 100644 index 00000000..45699f42 --- /dev/null +++ b/v1/pkg/contracts/zevm/uniswapperiphery.sol/uniswapimports.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapperiphery + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapImportsMetaData contains all meta data concerning the UniswapImports contract. +var UniswapImportsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220291c8a5b5fa81338f6eedd0a9b33e226da83e828449ba685880e3dc446a90e6464736f6c63430006060033", +} + +// UniswapImportsABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapImportsMetaData.ABI instead. +var UniswapImportsABI = UniswapImportsMetaData.ABI + +// UniswapImportsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapImportsMetaData.Bin instead. +var UniswapImportsBin = UniswapImportsMetaData.Bin + +// DeployUniswapImports deploys a new Ethereum contract, binding an instance of UniswapImports to it. +func DeployUniswapImports(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapImports, error) { + parsed, err := UniswapImportsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapImportsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil +} + +// UniswapImports is an auto generated Go binding around an Ethereum contract. +type UniswapImports struct { + UniswapImportsCaller // Read-only binding to the contract + UniswapImportsTransactor // Write-only binding to the contract + UniswapImportsFilterer // Log filterer for contract events +} + +// UniswapImportsCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapImportsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapImportsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapImportsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapImportsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapImportsSession struct { + Contract *UniswapImports // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapImportsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapImportsCallerSession struct { + Contract *UniswapImportsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapImportsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapImportsTransactorSession struct { + Contract *UniswapImportsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapImportsRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapImportsRaw struct { + Contract *UniswapImports // Generic contract binding to access the raw methods on +} + +// UniswapImportsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapImportsCallerRaw struct { + Contract *UniswapImportsCaller // Generic read-only contract binding to access the raw methods on +} + +// UniswapImportsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapImportsTransactorRaw struct { + Contract *UniswapImportsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapImports creates a new instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImports(address common.Address, backend bind.ContractBackend) (*UniswapImports, error) { + contract, err := bindUniswapImports(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapImports{UniswapImportsCaller: UniswapImportsCaller{contract: contract}, UniswapImportsTransactor: UniswapImportsTransactor{contract: contract}, UniswapImportsFilterer: UniswapImportsFilterer{contract: contract}}, nil +} + +// NewUniswapImportsCaller creates a new read-only instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsCaller(address common.Address, caller bind.ContractCaller) (*UniswapImportsCaller, error) { + contract, err := bindUniswapImports(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapImportsCaller{contract: contract}, nil +} + +// NewUniswapImportsTransactor creates a new write-only instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapImportsTransactor, error) { + contract, err := bindUniswapImports(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapImportsTransactor{contract: contract}, nil +} + +// NewUniswapImportsFilterer creates a new log filterer instance of UniswapImports, bound to a specific deployed contract. +func NewUniswapImportsFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapImportsFilterer, error) { + contract, err := bindUniswapImports(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapImportsFilterer{contract: contract}, nil +} + +// bindUniswapImports binds a generic wrapper to an already deployed contract. +func bindUniswapImports(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapImportsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapImports *UniswapImportsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapImports.Contract.UniswapImportsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapImports *UniswapImportsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapImports *UniswapImportsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapImports.Contract.UniswapImportsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapImports *UniswapImportsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapImports.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapImports *UniswapImportsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapImports.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapImports *UniswapImportsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapImports.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/wzeta.sol/weth9.go b/v1/pkg/contracts/zevm/wzeta.sol/weth9.go new file mode 100644 index 00000000..162a6c50 --- /dev/null +++ b/v1/pkg/contracts/zevm/wzeta.sol/weth9.go @@ -0,0 +1,1113 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package wzeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040526040518060400160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019062000051929190620000d0565b506040518060400160405280600481526020017f5745544800000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620000d0565b506012600260006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b50620001e5565b828054620000de9062000180565b90600052602060002090601f0160209004810192826200010257600085556200014e565b82601f106200011d57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014d57825182559160200191906001019062000130565b5b5090506200015d919062000161565b5090565b5b808211156200017c57600081600090555060010162000162565b5090565b600060028204905060018216806200019957607f821691505b60208210811415620001b057620001af620001b6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b610fd380620001f56000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce567146101ad57806370a08231146101d857806395d89b4114610215578063a9059cbb14610240578063d0e30db01461027d578063dd62ed3e14610287576100af565b806306fdde03146100b4578063095ea7b3146100df57806318160ddd1461011c57806323b872dd146101475780632e1a7d4d14610184576100af565b366100af576100ad6102c4565b005b600080fd5b3480156100c057600080fd5b506100c961036a565b6040516100d69190610d20565b60405180910390f35b3480156100eb57600080fd5b5061010660048036038101906101019190610c0f565b6103f8565b6040516101139190610d05565b60405180910390f35b34801561012857600080fd5b506101316104ea565b60405161013e9190610d62565b60405180910390f35b34801561015357600080fd5b5061016e60048036038101906101699190610bbc565b6104f2565b60405161017b9190610d05565b60405180910390f35b34801561019057600080fd5b506101ab60048036038101906101a69190610c4f565b6108c2565b005b3480156101b957600080fd5b506101c2610a32565b6040516101cf9190610d7d565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190610b4f565b610a45565b60405161020c9190610d62565b60405180910390f35b34801561022157600080fd5b5061022a610a5d565b6040516102379190610d20565b60405180910390f35b34801561024c57600080fd5b5061026760048036038101906102629190610c0f565b610aeb565b6040516102749190610d05565b60405180910390f35b6102856102c4565b005b34801561029357600080fd5b506102ae60048036038101906102a99190610b7c565b610b00565b6040516102bb9190610d62565b60405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103139190610db4565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516103609190610d62565b60405180910390a2565b6000805461037790610ec6565b80601f01602080910402602001604051908101604052809291908181526020018280546103a390610ec6565b80156103f05780601f106103c5576101008083540402835291602001916103f0565b820191906000526020600020905b8154815290600101906020018083116103d357829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104d89190610d62565b60405180910390a36001905092915050565b600047905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056d90610d42565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561064e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156107a65781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990610d42565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079e9190610e0a565b925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f59190610e0a565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461084b9190610db4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108af9190610d62565b60405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90610d42565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109939190610e0a565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109e0573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610a279190610d62565b60405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054610a6a90610ec6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9690610ec6565b8015610ae35780601f10610ab857610100808354040283529160200191610ae3565b820191906000526020600020905b815481529060010190602001808311610ac657829003601f168201915b505050505081565b6000610af83384846104f2565b905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600081359050610b3481610f6f565b92915050565b600081359050610b4981610f86565b92915050565b600060208284031215610b6557610b64610f56565b5b6000610b7384828501610b25565b91505092915050565b60008060408385031215610b9357610b92610f56565b5b6000610ba185828601610b25565b9250506020610bb285828601610b25565b9150509250929050565b600080600060608486031215610bd557610bd4610f56565b5b6000610be386828701610b25565b9350506020610bf486828701610b25565b9250506040610c0586828701610b3a565b9150509250925092565b60008060408385031215610c2657610c25610f56565b5b6000610c3485828601610b25565b9250506020610c4585828601610b3a565b9150509250929050565b600060208284031215610c6557610c64610f56565b5b6000610c7384828501610b3a565b91505092915050565b610c8581610e50565b82525050565b6000610c9682610d98565b610ca08185610da3565b9350610cb0818560208601610e93565b610cb981610f5b565b840191505092915050565b6000610cd1600083610da3565b9150610cdc82610f6c565b600082019050919050565b610cf081610e7c565b82525050565b610cff81610e86565b82525050565b6000602082019050610d1a6000830184610c7c565b92915050565b60006020820190508181036000830152610d3a8184610c8b565b905092915050565b60006020820190508181036000830152610d5b81610cc4565b9050919050565b6000602082019050610d776000830184610ce7565b92915050565b6000602082019050610d926000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610dbf82610e7c565b9150610dca83610e7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610dff57610dfe610ef8565b5b828201905092915050565b6000610e1582610e7c565b9150610e2083610e7c565b925082821015610e3357610e32610ef8565b5b828203905092915050565b6000610e4982610e5c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610eb1578082015181840152602081019050610e96565b83811115610ec0576000848401525b50505050565b60006002820490506001821680610ede57607f821691505b60208210811415610ef257610ef1610f27565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b50565b610f7881610e3e565b8114610f8357600080fd5b50565b610f8f81610e7c565b8114610f9a57600080fd5b5056fea2646970667358221220ed2297470e8d6c8e387b5cdc1c81dd38decdf0b011f3c15df9f52f6da3dcc17664736f6c63430008070033", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use WETH9MetaData.Bin instead. +var WETH9Bin = WETH9MetaData.Bin + +// DeployWETH9 deploys a new Ethereum contract, binding an instance of WETH9 to it. +func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WETH9, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(WETH9Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "allowance", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9Caller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "balanceOf", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9Session) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9CallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9Session) Decimals() (uint8, error) { + return _WETH9.Contract.Decimals(&_WETH9.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9CallerSession) Decimals() (uint8, error) { + return _WETH9.Contract.Decimals(&_WETH9.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9Session) Name() (string, error) { + return _WETH9.Contract.Name(&_WETH9.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9CallerSession) Name() (string, error) { + return _WETH9.Contract.Name(&_WETH9.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9Session) Symbol() (string, error) { + return _WETH9.Contract.Symbol(&_WETH9.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9CallerSession) Symbol() (string, error) { + return _WETH9.Contract.Symbol(&_WETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9Session) TotalSupply() (*big.Int, error) { + return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9CallerSession) TotalSupply() (*big.Int, error) { + return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) Approve(opts *bind.TransactOpts, guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "approve", guy, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) Transfer(opts *bind.TransactOpts, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "transfer", dst, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) TransferFrom(opts *bind.TransactOpts, src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "transferFrom", src, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9Session) Receive() (*types.Transaction, error) { + return _WETH9.Contract.Receive(&_WETH9.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9TransactorSession) Receive() (*types.Transaction, error) { + return _WETH9.Contract.Receive(&_WETH9.TransactOpts) +} + +// WETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WETH9 contract. +type WETH9ApprovalIterator struct { + Event *WETH9Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Approval represents a Approval event raised by the WETH9 contract. +type WETH9Approval struct { + Src common.Address + Guy common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterApproval(opts *bind.FilterOpts, src []common.Address, guy []common.Address) (*WETH9ApprovalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var guyRule []interface{} + for _, guyItem := range guy { + guyRule = append(guyRule, guyItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Approval", srcRule, guyRule) + if err != nil { + return nil, err + } + return &WETH9ApprovalIterator{contract: _WETH9.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *WETH9Approval, src []common.Address, guy []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var guyRule []interface{} + for _, guyItem := range guy { + guyRule = append(guyRule, guyItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Approval", srcRule, guyRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Approval) + if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseApproval(log types.Log) (*WETH9Approval, error) { + event := new(WETH9Approval) + if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the WETH9 contract. +type WETH9DepositIterator struct { + Event *WETH9Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Deposit represents a Deposit event raised by the WETH9 contract. +type WETH9Deposit struct { + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*WETH9DepositIterator, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return &WETH9DepositIterator{contract: _WETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *WETH9Deposit, dst []common.Address) (event.Subscription, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Deposit) + if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseDeposit(log types.Log) (*WETH9Deposit, error) { + event := new(WETH9Deposit) + if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the WETH9 contract. +type WETH9TransferIterator struct { + Event *WETH9Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Transfer represents a Transfer event raised by the WETH9 contract. +type WETH9Transfer struct { + Src common.Address + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterTransfer(opts *bind.FilterOpts, src []common.Address, dst []common.Address) (*WETH9TransferIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Transfer", srcRule, dstRule) + if err != nil { + return nil, err + } + return &WETH9TransferIterator{contract: _WETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *WETH9Transfer, src []common.Address, dst []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Transfer", srcRule, dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Transfer) + if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseTransfer(log types.Log) (*WETH9Transfer, error) { + event := new(WETH9Transfer) + if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the WETH9 contract. +type WETH9WithdrawalIterator struct { + Event *WETH9Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Withdrawal represents a Withdrawal event raised by the WETH9 contract. +type WETH9Withdrawal struct { + Src common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*WETH9WithdrawalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return &WETH9WithdrawalIterator{contract: _WETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *WETH9Withdrawal, src []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Withdrawal) + if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseWithdrawal(log types.Log) (*WETH9Withdrawal, error) { + event := new(WETH9Withdrawal) + if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go new file mode 100644 index 00000000..3778303e --- /dev/null +++ b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go @@ -0,0 +1,1000 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectorzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesSendInput is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesSendInput struct { + DestinationChainId *big.Int + DestinationAddress []byte + DestinationGasLimit *big.Int + Message []byte + ZetaValueAndGas *big.Int + ZetaParams []byte +} + +// ZetaConnectorZEVMMetaData contains all meta data concerning the ZetaConnectorZEVM contract. +var ZetaConnectorZEVMMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WZETATransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongValue\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"SetWZETA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"setWzetaAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wzeta\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040523480156200001157600080fd5b506040516200177d3803806200177d833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200011a565b6000815190506200008f8162000100565b92915050565b600060208284031215620000ae57620000ad620000fb565b5b6000620000be848285016200007e565b91505092915050565b6000620000d482620000db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200010b81620000c7565b81146200011757600080fd5b50565b611653806200012a6000396000f3fe6080604052600436106100585760003560e01c8062173d461461013757806329dd214d146101625780633ce4a5bc1461017e578063942a5e16146101a9578063eb3bacbd146101c5578063ec026901146101ee57610132565b366101325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156100f9575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610130576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561014357600080fd5b5061014c610217565b6040516101599190611276565b60405180910390f35b61017c60048036038101906101779190610f77565b61023b565b005b34801561018a57600080fd5b506101936105f1565b6040516101a09190611276565b60405180910390f35b6101c360048036038101906101be9190610e68565b610609565b005b3480156101d157600080fd5b506101ec60048036038101906101e79190610e3b565b6109b3565b005b3480156101fa57600080fd5b5061021560048036038101906102109190611046565b610aa6565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102b4576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8334146102ed576040517f98d4901c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3087876040518463ffffffff1660e01b81526004016103cb93929190611291565b602060405180830381600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d9190610f4a565b610453576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083839050111561058f578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161055c91906113f2565b600060405180830381600087803b15801561057657600080fd5b505af115801561058a573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b8989896040516105df9594939291906113a9565b60405180910390a45050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610682576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8334146106bb576040517f98d4901c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd308b876040518463ffffffff1660e01b815260040161079993929190611291565b602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190610f4a565b610821576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838390501115610963578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016109309190611414565b600060405180830381600087803b15801561094a57600080fd5b505af115801561095e573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516109a09796959493929190611344565b60405180910390a3505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2c576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d417681604051610a9b9190611276565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b8152600401610b0793929190611291565b602060405180830381600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190610f4a565b610b8f576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b8152600401610bec9190611436565b600060405180830381600087803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610c5c90611261565b60006040518083038185875af1925050503d8060008114610c99576040519150601f19603f3d011682016040523d82523d6000602084013e610c9e565b606091505b5050905080610cd9576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e432858060200190610d279190611451565b87608001358860400135898060600190610d419190611451565b8b8060a00190610d519190611451565b604051610d66999897969594939291906112c8565b60405180910390a35050565b600081359050610d81816115c1565b92915050565b600081519050610d96816115d8565b92915050565b600081359050610dab816115ef565b92915050565b60008083601f840112610dc757610dc6611585565b5b8235905067ffffffffffffffff811115610de457610de3611580565b5b602083019150836001820283011115610e0057610dff611599565b5b9250929050565b600060c08284031215610e1d57610e1c61158f565b5b81905092915050565b600081359050610e3581611606565b92915050565b600060208284031215610e5157610e506115a8565b5b6000610e5f84828501610d72565b91505092915050565b600080600080600080600080600060e08a8c031215610e8a57610e896115a8565b5b6000610e988c828d01610d72565b9950506020610ea98c828d01610e26565b98505060408a013567ffffffffffffffff811115610eca57610ec96115a3565b5b610ed68c828d01610db1565b97509750506060610ee98c828d01610e26565b9550506080610efa8c828d01610e26565b94505060a08a013567ffffffffffffffff811115610f1b57610f1a6115a3565b5b610f278c828d01610db1565b935093505060c0610f3a8c828d01610d9c565b9150509295985092959850929598565b600060208284031215610f6057610f5f6115a8565b5b6000610f6e84828501610d87565b91505092915050565b60008060008060008060008060c0898b031215610f9757610f966115a8565b5b600089013567ffffffffffffffff811115610fb557610fb46115a3565b5b610fc18b828c01610db1565b98509850506020610fd48b828c01610e26565b9650506040610fe58b828c01610d72565b9550506060610ff68b828c01610e26565b945050608089013567ffffffffffffffff811115611017576110166115a3565b5b6110238b828c01610db1565b935093505060a06110368b828c01610d9c565b9150509295985092959890939650565b60006020828403121561105c5761105b6115a8565b5b600082013567ffffffffffffffff81111561107a576110796115a3565b5b61108684828501610e07565b91505092915050565b611098816114ec565b82525050565b6110a7816114ec565b82525050565b60006110b983856114d0565b93506110c683858461153e565b6110cf836115ad565b840190509392505050565b60006110e5826114b4565b6110ef81856114bf565b93506110ff81856020860161154d565b611108816115ad565b840191505092915050565b60006111206000836114e1565b915061112b826115be565b600082019050919050565b600060a083016000830151848203600086015261115382826110da565b91505060208301516111686020860182611243565b50604083015161117b604086018261108f565b50606083015161118e6060860182611243565b50608083015184820360808601526111a682826110da565b9150508091505092915050565b600060c0830160008301516111cb600086018261108f565b5060208301516111de6020860182611243565b50604083015184820360408601526111f682826110da565b915050606083015161120b6060860182611243565b50608083015161121e6080860182611243565b5060a083015184820360a086015261123682826110da565b9150508091505092915050565b61124c81611534565b82525050565b61125b81611534565b82525050565b600061126c82611113565b9150819050919050565b600060208201905061128b600083018461109e565b92915050565b60006060820190506112a6600083018661109e565b6112b3602083018561109e565b6112c06040830184611252565b949350505050565b600060c0820190506112dd600083018c61109e565b81810360208301526112f0818a8c6110ad565b90506112ff6040830189611252565b61130c6060830188611252565b818103608083015261131f8186886110ad565b905081810360a08301526113348184866110ad565b90509a9950505050505050505050565b600060a082019050611359600083018a61109e565b6113666020830189611252565b81810360408301526113798187896110ad565b90506113886060830186611252565b818103608083015261139b8184866110ad565b905098975050505050505050565b600060608201905081810360008301526113c48187896110ad565b90506113d36020830186611252565b81810360408301526113e68184866110ad565b90509695505050505050565b6000602082019050818103600083015261140c8184611136565b905092915050565b6000602082019050818103600083015261142e81846111b3565b905092915050565b600060208201905061144b6000830184611252565b92915050565b6000808335600160200384360303811261146e5761146d611594565b5b80840192508235915067ffffffffffffffff8211156114905761148f61158a565b5b6020830192506001820236038313156114ac576114ab61159e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006114f782611514565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561156b578082015181840152602081019050611550565b8381111561157a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6115ca816114ec565b81146115d557600080fd5b50565b6115e1816114fe565b81146115ec57600080fd5b50565b6115f88161150a565b811461160357600080fd5b50565b61160f81611534565b811461161a57600080fd5b5056fea26469706673582212208fcfd4dd090449f8c32ab1dc30eb44ec918bcb60da6d7ed0572173ea3fdf6fd364736f6c63430008070033", +} + +// ZetaConnectorZEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorZEVMMetaData.ABI instead. +var ZetaConnectorZEVMABI = ZetaConnectorZEVMMetaData.ABI + +// ZetaConnectorZEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorZEVMMetaData.Bin instead. +var ZetaConnectorZEVMBin = ZetaConnectorZEVMMetaData.Bin + +// DeployZetaConnectorZEVM deploys a new Ethereum contract, binding an instance of ZetaConnectorZEVM to it. +func DeployZetaConnectorZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorZEVM, error) { + parsed, err := ZetaConnectorZEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorZEVMBin), backend, wzeta_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorZEVM{ZetaConnectorZEVMCaller: ZetaConnectorZEVMCaller{contract: contract}, ZetaConnectorZEVMTransactor: ZetaConnectorZEVMTransactor{contract: contract}, ZetaConnectorZEVMFilterer: ZetaConnectorZEVMFilterer{contract: contract}}, nil +} + +// ZetaConnectorZEVM is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorZEVM struct { + ZetaConnectorZEVMCaller // Read-only binding to the contract + ZetaConnectorZEVMTransactor // Write-only binding to the contract + ZetaConnectorZEVMFilterer // Log filterer for contract events +} + +// ZetaConnectorZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorZEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorZEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorZEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorZEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorZEVMSession struct { + Contract *ZetaConnectorZEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorZEVMCallerSession struct { + Contract *ZetaConnectorZEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorZEVMTransactorSession struct { + Contract *ZetaConnectorZEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorZEVMRaw struct { + Contract *ZetaConnectorZEVM // Generic contract binding to access the raw methods on +} + +// ZetaConnectorZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorZEVMCallerRaw struct { + Contract *ZetaConnectorZEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorZEVMTransactorRaw struct { + Contract *ZetaConnectorZEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorZEVM creates a new instance of ZetaConnectorZEVM, bound to a specific deployed contract. +func NewZetaConnectorZEVM(address common.Address, backend bind.ContractBackend) (*ZetaConnectorZEVM, error) { + contract, err := bindZetaConnectorZEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVM{ZetaConnectorZEVMCaller: ZetaConnectorZEVMCaller{contract: contract}, ZetaConnectorZEVMTransactor: ZetaConnectorZEVMTransactor{contract: contract}, ZetaConnectorZEVMFilterer: ZetaConnectorZEVMFilterer{contract: contract}}, nil +} + +// NewZetaConnectorZEVMCaller creates a new read-only instance of ZetaConnectorZEVM, bound to a specific deployed contract. +func NewZetaConnectorZEVMCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorZEVMCaller, error) { + contract, err := bindZetaConnectorZEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMCaller{contract: contract}, nil +} + +// NewZetaConnectorZEVMTransactor creates a new write-only instance of ZetaConnectorZEVM, bound to a specific deployed contract. +func NewZetaConnectorZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorZEVMTransactor, error) { + contract, err := bindZetaConnectorZEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMTransactor{contract: contract}, nil +} + +// NewZetaConnectorZEVMFilterer creates a new log filterer instance of ZetaConnectorZEVM, bound to a specific deployed contract. +func NewZetaConnectorZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorZEVMFilterer, error) { + contract, err := bindZetaConnectorZEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMFilterer{contract: contract}, nil +} + +// bindZetaConnectorZEVM binds a generic wrapper to an already deployed contract. +func bindZetaConnectorZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorZEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.ZetaConnectorZEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorZEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorZEVM.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZetaConnectorZEVM.Contract.FUNGIBLEMODULEADDRESS(&_ZetaConnectorZEVM.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZetaConnectorZEVM.Contract.FUNGIBLEMODULEADDRESS(&_ZetaConnectorZEVM.CallOpts) +} + +// Wzeta is a free data retrieval call binding the contract method 0x00173d46. +// +// Solidity: function wzeta() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMCaller) Wzeta(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorZEVM.contract.Call(opts, &out, "wzeta") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Wzeta is a free data retrieval call binding the contract method 0x00173d46. +// +// Solidity: function wzeta() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Wzeta() (common.Address, error) { + return _ZetaConnectorZEVM.Contract.Wzeta(&_ZetaConnectorZEVM.CallOpts) +} + +// Wzeta is a free data retrieval call binding the contract method 0x00173d46. +// +// Solidity: function wzeta() view returns(address) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMCallerSession) Wzeta() (common.Address, error) { + return _ZetaConnectorZEVM.Contract.Wzeta(&_ZetaConnectorZEVM.CallOpts) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) OnReceive(opts *bind.TransactOpts, zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.contract.Transact(opts, "onReceive", zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.OnReceive(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnReceive is a paid mutator transaction binding the contract method 0x29dd214d. +// +// Solidity: function onReceive(bytes zetaTxSenderAddress, uint256 sourceChainId, address destinationAddress, uint256 zetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) OnReceive(zetaTxSenderAddress []byte, sourceChainId *big.Int, destinationAddress common.Address, zetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.OnReceive(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, zetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) OnRevert(opts *bind.TransactOpts, zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.contract.Transact(opts, "onRevert", zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.OnRevert(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x942a5e16. +// +// Solidity: function onRevert(address zetaTxSenderAddress, uint256 sourceChainId, bytes destinationAddress, uint256 destinationChainId, uint256 remainingZetaValue, bytes message, bytes32 internalSendHash) payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) OnRevert(zetaTxSenderAddress common.Address, sourceChainId *big.Int, destinationAddress []byte, destinationChainId *big.Int, remainingZetaValue *big.Int, message []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.OnRevert(&_ZetaConnectorZEVM.TransactOpts, zetaTxSenderAddress, sourceChainId, destinationAddress, destinationChainId, remainingZetaValue, message, internalSendHash) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) Send(opts *bind.TransactOpts, input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorZEVM.contract.Transact(opts, "send", input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.Send(&_ZetaConnectorZEVM.TransactOpts, input) +} + +// Send is a paid mutator transaction binding the contract method 0xec026901. +// +// Solidity: function send((uint256,bytes,uint256,bytes,uint256,bytes) input) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) Send(input ZetaInterfacesSendInput) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.Send(&_ZetaConnectorZEVM.TransactOpts, input) +} + +// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. +// +// Solidity: function setWzetaAddress(address wzeta_) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) SetWzetaAddress(opts *bind.TransactOpts, wzeta_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorZEVM.contract.Transact(opts, "setWzetaAddress", wzeta_) +} + +// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. +// +// Solidity: function setWzetaAddress(address wzeta_) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) SetWzetaAddress(wzeta_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.SetWzetaAddress(&_ZetaConnectorZEVM.TransactOpts, wzeta_) +} + +// SetWzetaAddress is a paid mutator transaction binding the contract method 0xeb3bacbd. +// +// Solidity: function setWzetaAddress(address wzeta_) returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) SetWzetaAddress(wzeta_ common.Address) (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.SetWzetaAddress(&_ZetaConnectorZEVM.TransactOpts, wzeta_) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMSession) Receive() (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.Receive(&_ZetaConnectorZEVM.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaConnectorZEVM *ZetaConnectorZEVMTransactorSession) Receive() (*types.Transaction, error) { + return _ZetaConnectorZEVM.Contract.Receive(&_ZetaConnectorZEVM.TransactOpts) +} + +// ZetaConnectorZEVMSetWZETAIterator is returned from FilterSetWZETA and is used to iterate over the raw logs and unpacked data for SetWZETA events raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMSetWZETAIterator struct { + Event *ZetaConnectorZEVMSetWZETA // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorZEVMSetWZETAIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMSetWZETA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMSetWZETA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorZEVMSetWZETAIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorZEVMSetWZETAIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorZEVMSetWZETA represents a SetWZETA event raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMSetWZETA struct { + Wzeta common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZETA is a free log retrieval operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. +// +// Solidity: event SetWZETA(address wzeta_) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterSetWZETA(opts *bind.FilterOpts) (*ZetaConnectorZEVMSetWZETAIterator, error) { + + logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "SetWZETA") + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMSetWZETAIterator{contract: _ZetaConnectorZEVM.contract, event: "SetWZETA", logs: logs, sub: sub}, nil +} + +// WatchSetWZETA is a free log subscription operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. +// +// Solidity: event SetWZETA(address wzeta_) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchSetWZETA(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMSetWZETA) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "SetWZETA") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorZEVMSetWZETA) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "SetWZETA", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZETA is a log parse operation binding the contract event 0x7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d4176. +// +// Solidity: event SetWZETA(address wzeta_) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseSetWZETA(log types.Log) (*ZetaConnectorZEVMSetWZETA, error) { + event := new(ZetaConnectorZEVMSetWZETA) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "SetWZETA", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorZEVMZetaReceivedIterator is returned from FilterZetaReceived and is used to iterate over the raw logs and unpacked data for ZetaReceived events raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaReceivedIterator struct { + Event *ZetaConnectorZEVMZetaReceived // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorZEVMZetaReceivedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaReceived) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorZEVMZetaReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorZEVMZetaReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorZEVMZetaReceived represents a ZetaReceived event raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaReceived struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReceived is a free log retrieval operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaReceived(opts *bind.FilterOpts, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (*ZetaConnectorZEVMZetaReceivedIterator, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMZetaReceivedIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaReceived", logs: logs, sub: sub}, nil +} + +// WatchZetaReceived is a free log subscription operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaReceived(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaReceived, sourceChainId []*big.Int, destinationAddress []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var sourceChainIdRule []interface{} + for _, sourceChainIdItem := range sourceChainId { + sourceChainIdRule = append(sourceChainIdRule, sourceChainIdItem) + } + var destinationAddressRule []interface{} + for _, destinationAddressItem := range destinationAddress { + destinationAddressRule = append(destinationAddressRule, destinationAddressItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaReceived", sourceChainIdRule, destinationAddressRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorZEVMZetaReceived) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReceived is a log parse operation binding the contract event 0xf1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d698. +// +// Solidity: event ZetaReceived(bytes zetaTxSenderAddress, uint256 indexed sourceChainId, address indexed destinationAddress, uint256 zetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaReceived(log types.Log) (*ZetaConnectorZEVMZetaReceived, error) { + event := new(ZetaConnectorZEVMZetaReceived) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorZEVMZetaRevertedIterator is returned from FilterZetaReverted and is used to iterate over the raw logs and unpacked data for ZetaReverted events raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaRevertedIterator struct { + Event *ZetaConnectorZEVMZetaReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorZEVMZetaRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorZEVMZetaRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorZEVMZetaRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorZEVMZetaReverted represents a ZetaReverted event raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaReverted struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationChainId *big.Int + DestinationAddress []byte + RemainingZetaValue *big.Int + Message []byte + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaReverted is a free log retrieval operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaReverted(opts *bind.FilterOpts, destinationChainId []*big.Int, internalSendHash [][32]byte) (*ZetaConnectorZEVMZetaRevertedIterator, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMZetaRevertedIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaReverted", logs: logs, sub: sub}, nil +} + +// WatchZetaReverted is a free log subscription operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaReverted, destinationChainId []*big.Int, internalSendHash [][32]byte) (event.Subscription, error) { + + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaReverted", destinationChainIdRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorZEVMZetaReverted) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaReverted is a log parse operation binding the contract event 0x521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c88. +// +// Solidity: event ZetaReverted(address zetaTxSenderAddress, uint256 sourceChainId, uint256 indexed destinationChainId, bytes destinationAddress, uint256 remainingZetaValue, bytes message, bytes32 indexed internalSendHash) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaReverted(log types.Log) (*ZetaConnectorZEVMZetaReverted, error) { + event := new(ZetaConnectorZEVMZetaReverted) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaReverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorZEVMZetaSentIterator is returned from FilterZetaSent and is used to iterate over the raw logs and unpacked data for ZetaSent events raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaSentIterator struct { + Event *ZetaConnectorZEVMZetaSent // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorZEVMZetaSentIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorZEVMZetaSent) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorZEVMZetaSentIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorZEVMZetaSentIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorZEVMZetaSent represents a ZetaSent event raised by the ZetaConnectorZEVM contract. +type ZetaConnectorZEVMZetaSent struct { + SourceTxOriginAddress common.Address + ZetaTxSenderAddress common.Address + DestinationChainId *big.Int + DestinationAddress []byte + ZetaValueAndGas *big.Int + DestinationGasLimit *big.Int + Message []byte + ZetaParams []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaSent is a free log retrieval operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) FilterZetaSent(opts *bind.FilterOpts, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (*ZetaConnectorZEVMZetaSentIterator, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.FilterLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return &ZetaConnectorZEVMZetaSentIterator{contract: _ZetaConnectorZEVM.contract, event: "ZetaSent", logs: logs, sub: sub}, nil +} + +// WatchZetaSent is a free log subscription operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) WatchZetaSent(opts *bind.WatchOpts, sink chan<- *ZetaConnectorZEVMZetaSent, zetaTxSenderAddress []common.Address, destinationChainId []*big.Int) (event.Subscription, error) { + + var zetaTxSenderAddressRule []interface{} + for _, zetaTxSenderAddressItem := range zetaTxSenderAddress { + zetaTxSenderAddressRule = append(zetaTxSenderAddressRule, zetaTxSenderAddressItem) + } + var destinationChainIdRule []interface{} + for _, destinationChainIdItem := range destinationChainId { + destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem) + } + + logs, sub, err := _ZetaConnectorZEVM.contract.WatchLogs(opts, "ZetaSent", zetaTxSenderAddressRule, destinationChainIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorZEVMZetaSent) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaSent is a log parse operation binding the contract event 0x7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4. +// +// Solidity: event ZetaSent(address sourceTxOriginAddress, address indexed zetaTxSenderAddress, uint256 indexed destinationChainId, bytes destinationAddress, uint256 zetaValueAndGas, uint256 destinationGasLimit, bytes message, bytes zetaParams) +func (_ZetaConnectorZEVM *ZetaConnectorZEVMFilterer) ParseZetaSent(log types.Log) (*ZetaConnectorZEVMZetaSent, error) { + event := new(ZetaConnectorZEVMZetaSent) + if err := _ZetaConnectorZEVM.contract.UnpackLog(event, "ZetaSent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go new file mode 100644 index 00000000..8497e3ea --- /dev/null +++ b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectorzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesMetaData contains all meta data concerning the ZetaInterfaces contract. +var ZetaInterfacesMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ZetaInterfacesABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaInterfacesMetaData.ABI instead. +var ZetaInterfacesABI = ZetaInterfacesMetaData.ABI + +// ZetaInterfaces is an auto generated Go binding around an Ethereum contract. +type ZetaInterfaces struct { + ZetaInterfacesCaller // Read-only binding to the contract + ZetaInterfacesTransactor // Write-only binding to the contract + ZetaInterfacesFilterer // Log filterer for contract events +} + +// ZetaInterfacesCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaInterfacesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaInterfacesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaInterfacesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaInterfacesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaInterfacesSession struct { + Contract *ZetaInterfaces // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInterfacesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaInterfacesCallerSession struct { + Contract *ZetaInterfacesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaInterfacesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaInterfacesTransactorSession struct { + Contract *ZetaInterfacesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaInterfacesRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaInterfacesRaw struct { + Contract *ZetaInterfaces // Generic contract binding to access the raw methods on +} + +// ZetaInterfacesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaInterfacesCallerRaw struct { + Contract *ZetaInterfacesCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaInterfacesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaInterfacesTransactorRaw struct { + Contract *ZetaInterfacesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaInterfaces creates a new instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfaces(address common.Address, backend bind.ContractBackend) (*ZetaInterfaces, error) { + contract, err := bindZetaInterfaces(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaInterfaces{ZetaInterfacesCaller: ZetaInterfacesCaller{contract: contract}, ZetaInterfacesTransactor: ZetaInterfacesTransactor{contract: contract}, ZetaInterfacesFilterer: ZetaInterfacesFilterer{contract: contract}}, nil +} + +// NewZetaInterfacesCaller creates a new read-only instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesCaller(address common.Address, caller bind.ContractCaller) (*ZetaInterfacesCaller, error) { + contract, err := bindZetaInterfaces(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaInterfacesCaller{contract: contract}, nil +} + +// NewZetaInterfacesTransactor creates a new write-only instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaInterfacesTransactor, error) { + contract, err := bindZetaInterfaces(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaInterfacesTransactor{contract: contract}, nil +} + +// NewZetaInterfacesFilterer creates a new log filterer instance of ZetaInterfaces, bound to a specific deployed contract. +func NewZetaInterfacesFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaInterfacesFilterer, error) { + contract, err := bindZetaInterfaces(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaInterfacesFilterer{contract: contract}, nil +} + +// bindZetaInterfaces binds a generic wrapper to an already deployed contract. +func bindZetaInterfaces(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaInterfacesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInterfaces *ZetaInterfacesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInterfaces.Contract.ZetaInterfacesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInterfaces *ZetaInterfacesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInterfaces *ZetaInterfacesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.ZetaInterfacesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaInterfaces *ZetaInterfacesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaInterfaces.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaInterfaces *ZetaInterfacesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaInterfaces.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go new file mode 100644 index 00000000..36f6edc1 --- /dev/null +++ b/v1/pkg/contracts/zevm/zetaconnectorzevm.sol/zetareceiver.go @@ -0,0 +1,242 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectorzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaMessage struct { + ZetaTxSenderAddress []byte + SourceChainId *big.Int + DestinationAddress common.Address + ZetaValue *big.Int + Message []byte +} + +// ZetaInterfacesZetaRevert is an auto generated low-level Go binding around an user-defined struct. +type ZetaInterfacesZetaRevert struct { + ZetaTxSenderAddress common.Address + SourceChainId *big.Int + DestinationAddress []byte + DestinationChainId *big.Int + RemainingZetaValue *big.Int + Message []byte +} + +// ZetaReceiverMetaData contains all meta data concerning the ZetaReceiver contract. +var ZetaReceiverMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ZetaReceiverABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaReceiverMetaData.ABI instead. +var ZetaReceiverABI = ZetaReceiverMetaData.ABI + +// ZetaReceiver is an auto generated Go binding around an Ethereum contract. +type ZetaReceiver struct { + ZetaReceiverCaller // Read-only binding to the contract + ZetaReceiverTransactor // Write-only binding to the contract + ZetaReceiverFilterer // Log filterer for contract events +} + +// ZetaReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaReceiverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaReceiverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaReceiverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaReceiverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaReceiverSession struct { + Contract *ZetaReceiver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaReceiverCallerSession struct { + Contract *ZetaReceiverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaReceiverTransactorSession struct { + Contract *ZetaReceiverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaReceiverRaw struct { + Contract *ZetaReceiver // Generic contract binding to access the raw methods on +} + +// ZetaReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaReceiverCallerRaw struct { + Contract *ZetaReceiverCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaReceiverTransactorRaw struct { + Contract *ZetaReceiverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaReceiver creates a new instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiver(address common.Address, backend bind.ContractBackend) (*ZetaReceiver, error) { + contract, err := bindZetaReceiver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaReceiver{ZetaReceiverCaller: ZetaReceiverCaller{contract: contract}, ZetaReceiverTransactor: ZetaReceiverTransactor{contract: contract}, ZetaReceiverFilterer: ZetaReceiverFilterer{contract: contract}}, nil +} + +// NewZetaReceiverCaller creates a new read-only instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverCaller(address common.Address, caller bind.ContractCaller) (*ZetaReceiverCaller, error) { + contract, err := bindZetaReceiver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverCaller{contract: contract}, nil +} + +// NewZetaReceiverTransactor creates a new write-only instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaReceiverTransactor, error) { + contract, err := bindZetaReceiver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaReceiverTransactor{contract: contract}, nil +} + +// NewZetaReceiverFilterer creates a new log filterer instance of ZetaReceiver, bound to a specific deployed contract. +func NewZetaReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaReceiverFilterer, error) { + contract, err := bindZetaReceiver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaReceiverFilterer{contract: contract}, nil +} + +// bindZetaReceiver binds a generic wrapper to an already deployed contract. +func bindZetaReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaReceiverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiver *ZetaReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiver.Contract.ZetaReceiverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiver *ZetaReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiver *ZetaReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiver.Contract.ZetaReceiverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaReceiver *ZetaReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaReceiver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaReceiver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaReceiver *ZetaReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaReceiver.Contract.contract.Transact(opts, method, params...) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaMessage(opts *bind.TransactOpts, zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.contract.Transact(opts, "onZetaMessage", zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) +} + +// OnZetaMessage is a paid mutator transaction binding the contract method 0x3749c51a. +// +// Solidity: function onZetaMessage((bytes,uint256,address,uint256,bytes) zetaMessage) returns() +func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaMessage(zetaMessage ZetaInterfacesZetaMessage) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaMessage(&_ZetaReceiver.TransactOpts, zetaMessage) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverTransactor) OnZetaRevert(opts *bind.TransactOpts, zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.contract.Transact(opts, "onZetaRevert", zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) +} + +// OnZetaRevert is a paid mutator transaction binding the contract method 0x3ff0693c. +// +// Solidity: function onZetaRevert((address,uint256,bytes,uint256,uint256,bytes) zetaRevert) returns() +func (_ZetaReceiver *ZetaReceiverTransactorSession) OnZetaRevert(zetaRevert ZetaInterfacesZetaRevert) (*types.Transaction, error) { + return _ZetaReceiver.Contract.OnZetaRevert(&_ZetaReceiver.TransactOpts, zetaRevert) +} diff --git a/v1/pkg/contracts/zevm/zrc20.sol/zrc20.go b/v1/pkg/contracts/zevm/zrc20.sol/zrc20.go new file mode 100644 index 00000000..ce73d030 --- /dev/null +++ b/v1/pkg/contracts/zevm/zrc20.sol/zrc20.go @@ -0,0 +1,1800 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20MetaData contains all meta data concerning the ZRC20 contract. +var ZRC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200272c3803806200272c833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61208e6200069e60003960006108d501526000818161081f01528181610ba20152610cd7015261208e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385e1f4d0116100b8578063c835d7cc1161007c578063c835d7cc146103a5578063d9eeebed146103c1578063dd62ed3e146103e0578063eddeb12314610410578063f2441b321461042c578063f687d12a1461044a57610142565b806385e1f4d0146102eb57806395d89b4114610309578063a3413d0314610327578063a9059cbb14610345578063c70126261461037557610142565b8063313ce5671161010a578063313ce567146102015780633ce4a5bc1461021f57806342966c681461023d57806347e7ef241461026d5780634d8943bb1461029d57806370a08231146102bb57610142565b806306fdde0314610147578063091d278814610165578063095ea7b31461018357806318160ddd146101b357806323b872dd146101d1575b600080fd5b61014f610466565b60405161015c9190611c04565b60405180910390f35b61016d6104f8565b60405161017a9190611c26565b60405180910390f35b61019d600480360381019061019891906118c5565b6104fe565b6040516101aa9190611b52565b60405180910390f35b6101bb61051c565b6040516101c89190611c26565b60405180910390f35b6101eb60048036038101906101e69190611872565b610526565b6040516101f89190611b52565b60405180910390f35b61020961061e565b6040516102169190611c41565b60405180910390f35b610227610635565b6040516102349190611ad7565b60405180910390f35b6102576004803603810190610252919061198e565b61064d565b6040516102649190611b52565b60405180910390f35b610287600480360381019061028291906118c5565b610662565b6040516102949190611b52565b60405180910390f35b6102a56107ce565b6040516102b29190611c26565b60405180910390f35b6102d560048036038101906102d091906117d8565b6107d4565b6040516102e29190611c26565b60405180910390f35b6102f361081d565b6040516103009190611c26565b60405180910390f35b610311610841565b60405161031e9190611c04565b60405180910390f35b61032f6108d3565b60405161033c9190611be9565b60405180910390f35b61035f600480360381019061035a91906118c5565b6108f7565b60405161036c9190611b52565b60405180910390f35b61038f600480360381019061038a9190611932565b610915565b60405161039c9190611b52565b60405180910390f35b6103bf60048036038101906103ba91906117d8565b610a6b565b005b6103c9610b5e565b6040516103d7929190611b29565b60405180910390f35b6103fa60048036038101906103f59190611832565b610dcb565b6040516104079190611c26565b60405180910390f35b61042a6004803603810190610425919061198e565b610e52565b005b610434610f0c565b6040516104419190611ad7565b60405180910390f35b610464600480360381019061045f919061198e565b610f30565b005b60606006805461047590611e8a565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190611e8a565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60015481565b600061051261050b610fea565b8484610ff2565b6001905092915050565b6000600554905090565b60006105338484846111ab565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057e610fea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105f5576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061285610601610fea565b858461060d9190611d9a565b610ff2565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006106593383611407565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610700575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610737576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074183836115bf565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab60405160200161079e9190611abc565b604051602081830303815290604052846040516107bc929190611b6d565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461085090611e8a565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90611e8a565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090b610904610fea565b84846111ab565b6001905092915050565b6000806000610922610b5e565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161097793929190611af2565b602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611905565b6109ff576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a093385611407565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610a579493929190611b9d565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610b539190611ad7565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610bdd9190611c26565b60206040518083038186803b158015610bf557600080fd5b505afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190611805565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c96576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d129190611c26565b60206040518083038186803b158015610d2a57600080fd5b505afa158015610d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6291906119bb565b90506000811415610d9f576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db29190611d40565b610dbc9190611cea565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610f019190611c26565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a81604051610fdf9190611c26565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611059576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e9190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611279576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f7576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113039190611d9a565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113959190611cea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f99190611c26565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ec576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816114f89190611d9a565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816005600082825461154d9190611d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b29190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611626576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546116389190611cea565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168e9190611cea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f39190611c26565b60405180910390a35050565b600061171261170d84611c81565b611c5c565b90508281526020810184848401111561172e5761172d611fd2565b5b611739848285611e48565b509392505050565b60008135905061175081612013565b92915050565b60008151905061176581612013565b92915050565b60008151905061177a8161202a565b92915050565b600082601f83011261179557611794611fcd565b5b81356117a58482602086016116ff565b91505092915050565b6000813590506117bd81612041565b92915050565b6000815190506117d281612041565b92915050565b6000602082840312156117ee576117ed611fdc565b5b60006117fc84828501611741565b91505092915050565b60006020828403121561181b5761181a611fdc565b5b600061182984828501611756565b91505092915050565b6000806040838503121561184957611848611fdc565b5b600061185785828601611741565b925050602061186885828601611741565b9150509250929050565b60008060006060848603121561188b5761188a611fdc565b5b600061189986828701611741565b93505060206118aa86828701611741565b92505060406118bb868287016117ae565b9150509250925092565b600080604083850312156118dc576118db611fdc565b5b60006118ea85828601611741565b92505060206118fb858286016117ae565b9150509250929050565b60006020828403121561191b5761191a611fdc565b5b60006119298482850161176b565b91505092915050565b6000806040838503121561194957611948611fdc565b5b600083013567ffffffffffffffff81111561196757611966611fd7565b5b61197385828601611780565b9250506020611984858286016117ae565b9150509250929050565b6000602082840312156119a4576119a3611fdc565b5b60006119b2848285016117ae565b91505092915050565b6000602082840312156119d1576119d0611fdc565b5b60006119df848285016117c3565b91505092915050565b6119f181611dce565b82525050565b611a08611a0382611dce565b611eed565b82525050565b611a1781611de0565b82525050565b6000611a2882611cb2565b611a328185611cc8565b9350611a42818560208601611e57565b611a4b81611fe1565b840191505092915050565b611a5f81611e36565b82525050565b6000611a7082611cbd565b611a7a8185611cd9565b9350611a8a818560208601611e57565b611a9381611fe1565b840191505092915050565b611aa781611e1f565b82525050565b611ab681611e29565b82525050565b6000611ac882846119f7565b60148201915081905092915050565b6000602082019050611aec60008301846119e8565b92915050565b6000606082019050611b0760008301866119e8565b611b1460208301856119e8565b611b216040830184611a9e565b949350505050565b6000604082019050611b3e60008301856119e8565b611b4b6020830184611a9e565b9392505050565b6000602082019050611b676000830184611a0e565b92915050565b60006040820190508181036000830152611b878185611a1d565b9050611b966020830184611a9e565b9392505050565b60006080820190508181036000830152611bb78187611a1d565b9050611bc66020830186611a9e565b611bd36040830185611a9e565b611be06060830184611a9e565b95945050505050565b6000602082019050611bfe6000830184611a56565b92915050565b60006020820190508181036000830152611c1e8184611a65565b905092915050565b6000602082019050611c3b6000830184611a9e565b92915050565b6000602082019050611c566000830184611aad565b92915050565b6000611c66611c77565b9050611c728282611ebc565b919050565b6000604051905090565b600067ffffffffffffffff821115611c9c57611c9b611f9e565b5b611ca582611fe1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cf582611e1f565b9150611d0083611e1f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d3557611d34611f11565b5b828201905092915050565b6000611d4b82611e1f565b9150611d5683611e1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8f57611d8e611f11565b5b828202905092915050565b6000611da582611e1f565b9150611db083611e1f565b925082821015611dc357611dc2611f11565b5b828203905092915050565b6000611dd982611dff565b9050919050565b60008115159050919050565b6000819050611dfa82611fff565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611e4182611dec565b9050919050565b82818337600083830152505050565b60005b83811015611e75578082015181840152602081019050611e5a565b83811115611e84576000848401525b50505050565b60006002820490506001821680611ea257607f821691505b60208210811415611eb657611eb5611f6f565b5b50919050565b611ec582611fe1565b810181811067ffffffffffffffff82111715611ee457611ee3611f9e565b5b80604052505050565b6000611ef882611eff565b9050919050565b6000611f0a82611ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120105761200f611f40565b5b50565b61201c81611dce565b811461202757600080fd5b50565b61203381611de0565b811461203e57600080fd5b50565b61204a81611e1f565b811461205557600080fd5b5056fea2646970667358221220afef7d1a51c1829fcaf89af9a3239ae43ab2f828aa86ff901f729544637e39d464736f6c63430008070033", +} + +// ZRC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20MetaData.ABI instead. +var ZRC20ABI = ZRC20MetaData.ABI + +// ZRC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZRC20MetaData.Bin instead. +var ZRC20Bin = ZRC20MetaData.Bin + +// DeployZRC20 deploys a new Ethereum contract, binding an instance of ZRC20 to it. +func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20, error) { + parsed, err := ZRC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20Bin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil +} + +// ZRC20 is an auto generated Go binding around an Ethereum contract. +type ZRC20 struct { + ZRC20Caller // Read-only binding to the contract + ZRC20Transactor // Write-only binding to the contract + ZRC20Filterer // Log filterer for contract events +} + +// ZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20Session struct { + Contract *ZRC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20CallerSession struct { + Contract *ZRC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20TransactorSession struct { + Contract *ZRC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20Raw struct { + Contract *ZRC20 // Generic contract binding to access the raw methods on +} + +// ZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20CallerRaw struct { + Contract *ZRC20Caller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20TransactorRaw struct { + Contract *ZRC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20 creates a new instance of ZRC20, bound to a specific deployed contract. +func NewZRC20(address common.Address, backend bind.ContractBackend) (*ZRC20, error) { + contract, err := bindZRC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil +} + +// NewZRC20Caller creates a new read-only instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Caller(address common.Address, caller bind.ContractCaller) (*ZRC20Caller, error) { + contract, err := bindZRC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20Caller{contract: contract}, nil +} + +// NewZRC20Transactor creates a new write-only instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20Transactor, error) { + contract, err := bindZRC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20Transactor{contract: contract}, nil +} + +// NewZRC20Filterer creates a new log filterer instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20Filterer, error) { + contract, err := bindZRC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20Filterer{contract: contract}, nil +} + +// bindZRC20 binds a generic wrapper to an already deployed contract. +func bindZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20 *ZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20.Contract.ZRC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20 *ZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20.Contract.ZRC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20 *ZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20.Contract.ZRC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20 *ZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20 *ZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20 *ZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20.Contract.contract.Transact(opts, method, params...) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20 *ZRC20Caller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "CHAIN_ID") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20 *ZRC20Session) CHAINID() (*big.Int, error) { + return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) CHAINID() (*big.Int, error) { + return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20 *ZRC20Caller) COINTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "COIN_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20 *ZRC20Session) COINTYPE() (uint8, error) { + return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20 *ZRC20CallerSession) COINTYPE() (uint8, error) { + return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20Caller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20Session) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20CallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20 *ZRC20Caller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "GAS_LIMIT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20 *ZRC20Session) GASLIMIT() (*big.Int, error) { + return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) GASLIMIT() (*big.Int, error) { + return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20 *ZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20 *ZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20Caller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20Session) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20 *ZRC20CallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20Session) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20CallerSession) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20Session) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20CallerSession) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20Session) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20CallerSession) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20 *ZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20 *ZRC20Session) TotalSupply() (*big.Int, error) { + return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) TotalSupply() (*big.Int, error) { + return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20 *ZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _ZRC20.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20 *ZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20 *ZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20 *ZRC20Transactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateGasLimit", gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20 *ZRC20Session) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20 *ZRC20Transactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20 *ZRC20Session) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20 *ZRC20Transactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateSystemContractAddress", addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20 *ZRC20Session) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20 *ZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) +} + +// ZRC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20 contract. +type ZRC20ApprovalIterator struct { + Event *ZRC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20Approval represents a Approval event raised by the ZRC20 contract. +type ZRC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20 *ZRC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZRC20ApprovalIterator{contract: _ZRC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20 *ZRC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20Approval) + if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20 *ZRC20Filterer) ParseApproval(log types.Log) (*ZRC20Approval, error) { + event := new(ZRC20Approval) + if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20 contract. +type ZRC20DepositIterator struct { + Event *ZRC20Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20Deposit represents a Deposit event raised by the ZRC20 contract. +type ZRC20Deposit struct { + From []byte + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20DepositIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return &ZRC20DepositIterator{contract: _ZRC20.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20Deposit, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20Deposit) + if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) ParseDeposit(log types.Log) (*ZRC20Deposit, error) { + event := new(ZRC20Deposit) + if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20 contract. +type ZRC20TransferIterator struct { + Event *ZRC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20Transfer represents a Transfer event raised by the ZRC20 contract. +type ZRC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZRC20TransferIterator{contract: _ZRC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20Transfer) + if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20 *ZRC20Filterer) ParseTransfer(log types.Log) (*ZRC20Transfer, error) { + event := new(ZRC20Transfer) + if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20UpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20 contract. +type ZRC20UpdatedGasLimitIterator struct { + Event *ZRC20UpdatedGasLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20UpdatedGasLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20UpdatedGasLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20UpdatedGasLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20UpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20 contract. +type ZRC20UpdatedGasLimit struct { + GasLimit *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20 *ZRC20Filterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20UpdatedGasLimitIterator, error) { + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return &ZRC20UpdatedGasLimitIterator{contract: _ZRC20.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20 *ZRC20Filterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedGasLimit) (event.Subscription, error) { + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20UpdatedGasLimit) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20 *ZRC20Filterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20UpdatedGasLimit, error) { + event := new(ZRC20UpdatedGasLimit) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20UpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20 contract. +type ZRC20UpdatedProtocolFlatFeeIterator struct { + Event *ZRC20UpdatedProtocolFlatFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20UpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20 contract. +type ZRC20UpdatedProtocolFlatFee struct { + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20UpdatedProtocolFlatFeeIterator, error) { + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return &ZRC20UpdatedProtocolFlatFeeIterator{contract: _ZRC20.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedProtocolFlatFee) (event.Subscription, error) { + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20UpdatedProtocolFlatFee) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20UpdatedProtocolFlatFee, error) { + event := new(ZRC20UpdatedProtocolFlatFee) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20UpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20 contract. +type ZRC20UpdatedSystemContractIterator struct { + Event *ZRC20UpdatedSystemContract // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20UpdatedSystemContractIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20UpdatedSystemContractIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20UpdatedSystemContractIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20UpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20 contract. +type ZRC20UpdatedSystemContract struct { + SystemContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20 *ZRC20Filterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20UpdatedSystemContractIterator, error) { + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return &ZRC20UpdatedSystemContractIterator{contract: _ZRC20.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil +} + +// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20 *ZRC20Filterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedSystemContract) (event.Subscription, error) { + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20UpdatedSystemContract) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20 *ZRC20Filterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20UpdatedSystemContract, error) { + event := new(ZRC20UpdatedSystemContract) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20 contract. +type ZRC20WithdrawalIterator struct { + Event *ZRC20Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20Withdrawal represents a Withdrawal event raised by the ZRC20 contract. +type ZRC20Withdrawal struct { + From common.Address + To []byte + Value *big.Int + GasFee *big.Int + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20WithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &ZRC20WithdrawalIterator{contract: _ZRC20.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20Withdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20Withdrawal) + if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20 *ZRC20Filterer) ParseWithdrawal(log types.Log) (*ZRC20Withdrawal, error) { + event := new(ZRC20Withdrawal) + if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/contracts/zevm/zrc20.sol/zrc20errors.go b/v1/pkg/contracts/zevm/zrc20.sol/zrc20errors.go new file mode 100644 index 00000000..d822cd2c --- /dev/null +++ b/v1/pkg/contracts/zevm/zrc20.sol/zrc20errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. +var ZRC20ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}]", +} + +// ZRC20ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. +var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI + +// ZRC20Errors is an auto generated Go binding around an Ethereum contract. +type ZRC20Errors struct { + ZRC20ErrorsCaller // Read-only binding to the contract + ZRC20ErrorsTransactor // Write-only binding to the contract + ZRC20ErrorsFilterer // Log filterer for contract events +} + +// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20ErrorsSession struct { + Contract *ZRC20Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20ErrorsCallerSession struct { + Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20ErrorsTransactorSession struct { + Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20ErrorsRaw struct { + Contract *ZRC20Errors // Generic contract binding to access the raw methods on +} + +// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCallerRaw struct { + Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactorRaw struct { + Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { + contract, err := bindZRC20Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil +} + +// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { + contract, err := bindZRC20Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsCaller{contract: contract}, nil +} + +// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { + contract, err := bindZRC20Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsTransactor{contract: contract}, nil +} + +// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { + contract, err := bindZRC20Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20ErrorsFilterer{contract: contract}, nil +} + +// bindZRC20Errors binds a generic wrapper to an already deployed contract. +func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go new file mode 100644 index 00000000..6939b531 --- /dev/null +++ b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20new + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. +var ZRC20ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}]", +} + +// ZRC20ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. +var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI + +// ZRC20Errors is an auto generated Go binding around an Ethereum contract. +type ZRC20Errors struct { + ZRC20ErrorsCaller // Read-only binding to the contract + ZRC20ErrorsTransactor // Write-only binding to the contract + ZRC20ErrorsFilterer // Log filterer for contract events +} + +// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20ErrorsSession struct { + Contract *ZRC20Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20ErrorsCallerSession struct { + Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20ErrorsTransactorSession struct { + Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20ErrorsRaw struct { + Contract *ZRC20Errors // Generic contract binding to access the raw methods on +} + +// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCallerRaw struct { + Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactorRaw struct { + Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { + contract, err := bindZRC20Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil +} + +// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { + contract, err := bindZRC20Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsCaller{contract: contract}, nil +} + +// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { + contract, err := bindZRC20Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsTransactor{contract: contract}, nil +} + +// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { + contract, err := bindZRC20Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20ErrorsFilterer{contract: contract}, nil +} + +// bindZRC20Errors binds a generic wrapper to an already deployed contract. +func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go new file mode 100644 index 00000000..16e077b9 --- /dev/null +++ b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go @@ -0,0 +1,1831 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20new + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. +var ZRC20NewMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122088cc6797a637e9f7f0d8220bcf745a632c2a8fcb9c479e8f3633f88f9d369ecc64736f6c63430008070033", +} + +// ZRC20NewABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20NewMetaData.ABI instead. +var ZRC20NewABI = ZRC20NewMetaData.ABI + +// ZRC20NewBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZRC20NewMetaData.Bin instead. +var ZRC20NewBin = ZRC20NewMetaData.Bin + +// DeployZRC20New deploys a new Ethereum contract, binding an instance of ZRC20New to it. +func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20New, error) { + parsed, err := ZRC20NewMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20NewBin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil +} + +// ZRC20New is an auto generated Go binding around an Ethereum contract. +type ZRC20New struct { + ZRC20NewCaller // Read-only binding to the contract + ZRC20NewTransactor // Write-only binding to the contract + ZRC20NewFilterer // Log filterer for contract events +} + +// ZRC20NewCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20NewCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20NewTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20NewFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20NewSession struct { + Contract *ZRC20New // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20NewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20NewCallerSession struct { + Contract *ZRC20NewCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20NewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20NewTransactorSession struct { + Contract *ZRC20NewTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20NewRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20NewRaw struct { + Contract *ZRC20New // Generic contract binding to access the raw methods on +} + +// ZRC20NewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20NewCallerRaw struct { + Contract *ZRC20NewCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20NewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20NewTransactorRaw struct { + Contract *ZRC20NewTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20New creates a new instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20New(address common.Address, backend bind.ContractBackend) (*ZRC20New, error) { + contract, err := bindZRC20New(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil +} + +// NewZRC20NewCaller creates a new read-only instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewCaller(address common.Address, caller bind.ContractCaller) (*ZRC20NewCaller, error) { + contract, err := bindZRC20New(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20NewCaller{contract: contract}, nil +} + +// NewZRC20NewTransactor creates a new write-only instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20NewTransactor, error) { + contract, err := bindZRC20New(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20NewTransactor{contract: contract}, nil +} + +// NewZRC20NewFilterer creates a new log filterer instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20NewFilterer, error) { + contract, err := bindZRC20New(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20NewFilterer{contract: contract}, nil +} + +// bindZRC20New binds a generic wrapper to an already deployed contract. +func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20NewMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20New *ZRC20NewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20New.Contract.ZRC20NewCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20New *ZRC20NewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20New *ZRC20NewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20New *ZRC20NewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20New.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20New *ZRC20NewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20New.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20New *ZRC20NewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20New.Contract.contract.Transact(opts, method, params...) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "CHAIN_ID") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) CHAINID() (*big.Int, error) { + return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) CHAINID() (*big.Int, error) { + return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "COIN_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewSession) COINTYPE() (uint8, error) { + return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewCallerSession) COINTYPE() (uint8, error) { + return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "GAS_LIMIT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) GASLIMIT() (*big.Int, error) { + return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) GASLIMIT() (*big.Int, error) { + return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewSession) Decimals() (uint8, error) { + return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewCallerSession) Decimals() (uint8, error) { + return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewSession) Name() (string, error) { + return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewCallerSession) Name() (string, error) { + return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewSession) Symbol() (string, error) { + return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewCallerSession) Symbol() (string, error) { + return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) TotalSupply() (*big.Int, error) { + return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) TotalSupply() (*big.Int, error) { + return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateGasLimit", gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateSystemContractAddress", addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +} + +// ZRC20NewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20New contract. +type ZRC20NewApprovalIterator struct { + Event *ZRC20NewApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewApproval represents a Approval event raised by the ZRC20New contract. +type ZRC20NewApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20NewApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZRC20NewApprovalIterator{contract: _ZRC20New.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20NewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewApproval) + if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseApproval(log types.Log) (*ZRC20NewApproval, error) { + event := new(ZRC20NewApproval) + if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20New contract. +type ZRC20NewDepositIterator struct { + Event *ZRC20NewDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewDeposit represents a Deposit event raised by the ZRC20New contract. +type ZRC20NewDeposit struct { + From []byte + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20NewDepositIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return &ZRC20NewDepositIterator{contract: _ZRC20New.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20NewDeposit, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewDeposit) + if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseDeposit(log types.Log) (*ZRC20NewDeposit, error) { + event := new(ZRC20NewDeposit) + if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20New contract. +type ZRC20NewTransferIterator struct { + Event *ZRC20NewTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewTransfer represents a Transfer event raised by the ZRC20New contract. +type ZRC20NewTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20NewTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZRC20NewTransferIterator{contract: _ZRC20New.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20NewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewTransfer) + if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseTransfer(log types.Log) (*ZRC20NewTransfer, error) { + event := new(ZRC20NewTransfer) + if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20New contract. +type ZRC20NewUpdatedGasLimitIterator struct { + Event *ZRC20NewUpdatedGasLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedGasLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedGasLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20New contract. +type ZRC20NewUpdatedGasLimit struct { + GasLimit *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20NewUpdatedGasLimitIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedGasLimitIterator{contract: _ZRC20New.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedGasLimit) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedGasLimit) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20NewUpdatedGasLimit, error) { + event := new(ZRC20NewUpdatedGasLimit) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20New contract. +type ZRC20NewUpdatedProtocolFlatFeeIterator struct { + Event *ZRC20NewUpdatedProtocolFlatFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20New contract. +type ZRC20NewUpdatedProtocolFlatFee struct { + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20NewUpdatedProtocolFlatFeeIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedProtocolFlatFeeIterator{contract: _ZRC20New.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedProtocolFlatFee) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedProtocolFlatFee) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20NewUpdatedProtocolFlatFee, error) { + event := new(ZRC20NewUpdatedProtocolFlatFee) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20New contract. +type ZRC20NewUpdatedSystemContractIterator struct { + Event *ZRC20NewUpdatedSystemContract // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedSystemContractIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedSystemContractIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20New contract. +type ZRC20NewUpdatedSystemContract struct { + SystemContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20NewUpdatedSystemContractIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedSystemContractIterator{contract: _ZRC20New.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil +} + +// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedSystemContract) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedSystemContract) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20NewUpdatedSystemContract, error) { + event := new(ZRC20NewUpdatedSystemContract) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20New contract. +type ZRC20NewWithdrawalIterator struct { + Event *ZRC20NewWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewWithdrawal represents a Withdrawal event raised by the ZRC20New contract. +type ZRC20NewWithdrawal struct { + From common.Address + To []byte + Value *big.Int + GasFee *big.Int + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20NewWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &ZRC20NewWithdrawalIterator{contract: _ZRC20New.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20NewWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewWithdrawal) + if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) ParseWithdrawal(log types.Log) (*ZRC20NewWithdrawal, error) { + event := new(ZRC20NewWithdrawal) + if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go b/v1/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go new file mode 100644 index 00000000..eae94262 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/access/ownable.sol/ownable.go @@ -0,0 +1,407 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ownable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OwnableMetaData contains all meta data concerning the Ownable contract. +var OwnableMetaData = &bind.MetaData{ + 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\"}]", +} + +// OwnableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableMetaData.ABI instead. +var OwnableABI = OwnableMetaData.ABI + +// Ownable is an auto generated Go binding around an Ethereum contract. +type Ownable struct { + OwnableCaller // Read-only binding to the contract + OwnableTransactor // Write-only binding to the contract + OwnableFilterer // Log filterer for contract events +} + +// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableSession struct { + Contract *Ownable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableCallerSession struct { + Contract *OwnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableTransactorSession struct { + Contract *OwnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableRaw struct { + Contract *Ownable // Generic contract binding to access the raw methods on +} + +// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableCallerRaw struct { + Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableTransactorRaw struct { + Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. +func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { + contract, err := bindOwnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil +} + +// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { + contract, err := bindOwnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableCaller{contract: contract}, nil +} + +// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { + contract, err := bindOwnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableTransactor{contract: contract}, nil +} + +// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. +func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { + contract, err := bindOwnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableFilterer{contract: contract}, nil +} + +// bindOwnable binds a generic wrapper to an already deployed contract. +func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. +type OwnableOwnershipTransferredIterator struct { + Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. +type OwnableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go b/v1/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go new file mode 100644 index 00000000..c5ccc6fc --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/access/ownable2step.sol/ownable2step.go @@ -0,0 +1,612 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ownable2step + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// Ownable2StepMetaData contains all meta data concerning the Ownable2Step contract. +var Ownable2StepMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"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\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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\"}]", +} + +// Ownable2StepABI is the input ABI used to generate the binding from. +// Deprecated: Use Ownable2StepMetaData.ABI instead. +var Ownable2StepABI = Ownable2StepMetaData.ABI + +// Ownable2Step is an auto generated Go binding around an Ethereum contract. +type Ownable2Step struct { + Ownable2StepCaller // Read-only binding to the contract + Ownable2StepTransactor // Write-only binding to the contract + Ownable2StepFilterer // Log filterer for contract events +} + +// Ownable2StepCaller is an auto generated read-only Go binding around an Ethereum contract. +type Ownable2StepCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Ownable2StepTransactor is an auto generated write-only Go binding around an Ethereum contract. +type Ownable2StepTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Ownable2StepFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type Ownable2StepFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Ownable2StepSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type Ownable2StepSession struct { + Contract *Ownable2Step // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Ownable2StepCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type Ownable2StepCallerSession struct { + Contract *Ownable2StepCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// Ownable2StepTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type Ownable2StepTransactorSession struct { + Contract *Ownable2StepTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Ownable2StepRaw is an auto generated low-level Go binding around an Ethereum contract. +type Ownable2StepRaw struct { + Contract *Ownable2Step // Generic contract binding to access the raw methods on +} + +// Ownable2StepCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type Ownable2StepCallerRaw struct { + Contract *Ownable2StepCaller // Generic read-only contract binding to access the raw methods on +} + +// Ownable2StepTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type Ownable2StepTransactorRaw struct { + Contract *Ownable2StepTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable2Step creates a new instance of Ownable2Step, bound to a specific deployed contract. +func NewOwnable2Step(address common.Address, backend bind.ContractBackend) (*Ownable2Step, error) { + contract, err := bindOwnable2Step(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable2Step{Ownable2StepCaller: Ownable2StepCaller{contract: contract}, Ownable2StepTransactor: Ownable2StepTransactor{contract: contract}, Ownable2StepFilterer: Ownable2StepFilterer{contract: contract}}, nil +} + +// NewOwnable2StepCaller creates a new read-only instance of Ownable2Step, bound to a specific deployed contract. +func NewOwnable2StepCaller(address common.Address, caller bind.ContractCaller) (*Ownable2StepCaller, error) { + contract, err := bindOwnable2Step(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &Ownable2StepCaller{contract: contract}, nil +} + +// NewOwnable2StepTransactor creates a new write-only instance of Ownable2Step, bound to a specific deployed contract. +func NewOwnable2StepTransactor(address common.Address, transactor bind.ContractTransactor) (*Ownable2StepTransactor, error) { + contract, err := bindOwnable2Step(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &Ownable2StepTransactor{contract: contract}, nil +} + +// NewOwnable2StepFilterer creates a new log filterer instance of Ownable2Step, bound to a specific deployed contract. +func NewOwnable2StepFilterer(address common.Address, filterer bind.ContractFilterer) (*Ownable2StepFilterer, error) { + contract, err := bindOwnable2Step(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &Ownable2StepFilterer{contract: contract}, nil +} + +// bindOwnable2Step binds a generic wrapper to an already deployed contract. +func bindOwnable2Step(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := Ownable2StepMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable2Step *Ownable2StepRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable2Step.Contract.Ownable2StepCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable2Step *Ownable2StepRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable2Step.Contract.Ownable2StepTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable2Step *Ownable2StepRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable2Step.Contract.Ownable2StepTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable2Step *Ownable2StepCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable2Step.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable2Step *Ownable2StepTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable2Step.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable2Step *Ownable2StepTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable2Step.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable2Step *Ownable2StepCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable2Step.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable2Step *Ownable2StepSession) Owner() (common.Address, error) { + return _Ownable2Step.Contract.Owner(&_Ownable2Step.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable2Step *Ownable2StepCallerSession) Owner() (common.Address, error) { + return _Ownable2Step.Contract.Owner(&_Ownable2Step.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Ownable2Step *Ownable2StepCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable2Step.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Ownable2Step *Ownable2StepSession) PendingOwner() (common.Address, error) { + return _Ownable2Step.Contract.PendingOwner(&_Ownable2Step.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Ownable2Step *Ownable2StepCallerSession) PendingOwner() (common.Address, error) { + return _Ownable2Step.Contract.PendingOwner(&_Ownable2Step.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Ownable2Step *Ownable2StepTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable2Step.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Ownable2Step *Ownable2StepSession) AcceptOwnership() (*types.Transaction, error) { + return _Ownable2Step.Contract.AcceptOwnership(&_Ownable2Step.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Ownable2Step *Ownable2StepTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _Ownable2Step.Contract.AcceptOwnership(&_Ownable2Step.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable2Step *Ownable2StepTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable2Step.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable2Step *Ownable2StepSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable2Step.Contract.RenounceOwnership(&_Ownable2Step.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable2Step *Ownable2StepTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable2Step.Contract.RenounceOwnership(&_Ownable2Step.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable2Step *Ownable2StepTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable2Step.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable2Step *Ownable2StepSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable2Step.Contract.TransferOwnership(&_Ownable2Step.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable2Step *Ownable2StepTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable2Step.Contract.TransferOwnership(&_Ownable2Step.TransactOpts, newOwner) +} + +// Ownable2StepOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Ownable2Step contract. +type Ownable2StepOwnershipTransferStartedIterator struct { + Event *Ownable2StepOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *Ownable2StepOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(Ownable2StepOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(Ownable2StepOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *Ownable2StepOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *Ownable2StepOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// Ownable2StepOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Ownable2Step contract. +type Ownable2StepOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Ownable2StepOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable2Step.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &Ownable2StepOwnershipTransferStartedIterator{contract: _Ownable2Step.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *Ownable2StepOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable2Step.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(Ownable2StepOwnershipTransferStarted) + if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) ParseOwnershipTransferStarted(log types.Log) (*Ownable2StepOwnershipTransferStarted, error) { + event := new(Ownable2StepOwnershipTransferStarted) + if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// Ownable2StepOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable2Step contract. +type Ownable2StepOwnershipTransferredIterator struct { + Event *Ownable2StepOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *Ownable2StepOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(Ownable2StepOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(Ownable2StepOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *Ownable2StepOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *Ownable2StepOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// Ownable2StepOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable2Step contract. +type Ownable2StepOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Ownable2StepOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable2Step.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &Ownable2StepOwnershipTransferredIterator{contract: _Ownable2Step.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *Ownable2StepOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable2Step.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(Ownable2StepOwnershipTransferred) + if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable2Step *Ownable2StepFilterer) ParseOwnershipTransferred(log types.Log) (*Ownable2StepOwnershipTransferred, error) { + event := new(Ownable2StepOwnershipTransferred) + if err := _Ownable2Step.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go b/v1/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go new file mode 100644 index 00000000..22199c55 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/security/pausable.sol/pausable.go @@ -0,0 +1,480 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package pausable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PausableMetaData contains all meta data concerning the Pausable contract. +var PausableMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// PausableABI is the input ABI used to generate the binding from. +// Deprecated: Use PausableMetaData.ABI instead. +var PausableABI = PausableMetaData.ABI + +// Pausable is an auto generated Go binding around an Ethereum contract. +type Pausable struct { + PausableCaller // Read-only binding to the contract + PausableTransactor // Write-only binding to the contract + PausableFilterer // Log filterer for contract events +} + +// PausableCaller is an auto generated read-only Go binding around an Ethereum contract. +type PausableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PausableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PausableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PausableSession struct { + Contract *Pausable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PausableCallerSession struct { + Contract *PausableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PausableTransactorSession struct { + Contract *PausableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableRaw is an auto generated low-level Go binding around an Ethereum contract. +type PausableRaw struct { + Contract *Pausable // Generic contract binding to access the raw methods on +} + +// PausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PausableCallerRaw struct { + Contract *PausableCaller // Generic read-only contract binding to access the raw methods on +} + +// PausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PausableTransactorRaw struct { + Contract *PausableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPausable creates a new instance of Pausable, bound to a specific deployed contract. +func NewPausable(address common.Address, backend bind.ContractBackend) (*Pausable, error) { + contract, err := bindPausable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil +} + +// NewPausableCaller creates a new read-only instance of Pausable, bound to a specific deployed contract. +func NewPausableCaller(address common.Address, caller bind.ContractCaller) (*PausableCaller, error) { + contract, err := bindPausable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PausableCaller{contract: contract}, nil +} + +// NewPausableTransactor creates a new write-only instance of Pausable, bound to a specific deployed contract. +func NewPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableTransactor, error) { + contract, err := bindPausable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PausableTransactor{contract: contract}, nil +} + +// NewPausableFilterer creates a new log filterer instance of Pausable, bound to a specific deployed contract. +func NewPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableFilterer, error) { + contract, err := bindPausable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PausableFilterer{contract: contract}, nil +} + +// bindPausable binds a generic wrapper to an already deployed contract. +func bindPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PausableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Pausable *PausableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.Contract.PausableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Pausable *PausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Pausable *PausableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Pausable *PausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Pausable.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableSession) Paused() (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableCallerSession) Paused() (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts) +} + +// PausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Pausable contract. +type PausablePausedIterator struct { + Event *PausablePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausablePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausablePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausablePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausablePaused represents a Paused event raised by the Pausable contract. +type PausablePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) FilterPaused(opts *bind.FilterOpts) (*PausablePausedIterator, error) { + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &PausablePausedIterator{contract: _Pausable.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausablePaused) (event.Subscription, error) { + + logs, sub, err := _Pausable.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausablePaused) + if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused, error) { + event := new(PausablePaused) + if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Pausable contract. +type PausableUnpausedIterator struct { + Event *PausableUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausableUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausableUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUnpaused represents a Unpaused event raised by the Pausable contract. +type PausableUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PausableUnpausedIterator, error) { + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &PausableUnpausedIterator{contract: _Pausable.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUnpaused) (event.Subscription, error) { + + logs, sub, err := _Pausable.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausableUnpaused) + if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) ParseUnpaused(log types.Log) (*PausableUnpaused, error) { + event := new(PausableUnpaused) + if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go b/v1/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go new file mode 100644 index 00000000..e62fdc89 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package reentrancyguard + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. +var ReentrancyGuardMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ReentrancyGuardABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardMetaData.ABI instead. +var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI + +// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuard struct { + ReentrancyGuardCaller // Read-only binding to the contract + ReentrancyGuardTransactor // Write-only binding to the contract + ReentrancyGuardFilterer // Log filterer for contract events +} + +// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardSession struct { + Contract *ReentrancyGuard // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardCallerSession struct { + Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardTransactorSession struct { + Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardRaw struct { + Contract *ReentrancyGuard // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardCallerRaw struct { + Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactorRaw struct { + Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { + contract, err := bindReentrancyGuard(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { + contract, err := bindReentrancyGuard(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardCaller{contract: contract}, nil +} + +// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { + contract, err := bindReentrancyGuard(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardTransactor{contract: contract}, nil +} + +// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { + contract, err := bindReentrancyGuard(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardFilterer{contract: contract}, nil +} + +// bindReentrancyGuard binds a generic wrapper to an already deployed contract. +func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go b/v1/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go new file mode 100644 index 00000000..f196876b --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/token/erc20/erc20.sol/erc20.go @@ -0,0 +1,802 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20MetaData contains all meta data concerning the ERC20 contract. +var ERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620016173803806200161783398181016040528101906200003791906200019f565b81600390805190602001906200004f92919062000071565b5080600490805190602001906200006892919062000071565b505050620003a8565b8280546200007f90620002b9565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200024d565b62000224565b90508281526020810184848401111562000157576200015662000388565b5b6200016484828562000283565b509392505050565b600082601f83011262000184576200018362000383565b5b81516200019684826020860162000121565b91505092915050565b60008060408385031215620001b957620001b862000392565b5b600083015167ffffffffffffffff811115620001da57620001d96200038d565b5b620001e8858286016200016c565b925050602083015167ffffffffffffffff8111156200020c576200020b6200038d565b5b6200021a858286016200016c565b9150509250929050565b60006200023062000243565b90506200023e8282620002ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026b576200026a62000354565b5b620002768262000397565b9050602081019050919050565b60005b83811015620002a357808201518184015260208101905062000286565b83811115620002b3576000848401525b50505050565b60006002820490506001821680620002d257607f821691505b60208210811415620002e957620002e862000325565b5b50919050565b620002fa8262000397565b810181811067ffffffffffffffff821117156200031c576200031b62000354565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61125f80620003b86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea2646970667358221220c70e1992046ff573bf7e5981f8f62872dc98f375e08ea9d8a16f2a8da731c7ec64736f6c63430008070033", +} + +// ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MetaData.ABI instead. +var ERC20ABI = ERC20MetaData.ABI + +// ERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20MetaData.Bin instead. +var ERC20Bin = ERC20MetaData.Bin + +// DeployERC20 deploys a new Ethereum contract, binding an instance of ERC20 to it. +func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string) (common.Address, *types.Transaction, *ERC20, error) { + parsed, err := ERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend, name_, symbol_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil +} + +// ERC20 is an auto generated Go binding around an Ethereum contract. +type ERC20 struct { + ERC20Caller // Read-only binding to the contract + ERC20Transactor // Write-only binding to the contract + ERC20Filterer // Log filterer for contract events +} + +// ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20Session struct { + Contract *ERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CallerSession struct { + Contract *ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20TransactorSession struct { + Contract *ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20Raw struct { + Contract *ERC20 // Generic contract binding to access the raw methods on +} + +// ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CallerRaw struct { + Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20TransactorRaw struct { + Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. +func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { + contract, err := bindERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil +} + +// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { + contract, err := bindERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20Caller{contract: contract}, nil +} + +// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { + contract, err := bindERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20Transactor{contract: contract}, nil +} + +// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. +func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { + contract, err := bindERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20Filterer{contract: contract}, nil +} + +// bindERC20 binds a generic wrapper to an already deployed contract. +func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20Session) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20Session) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20CallerSession) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Session) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20 *ERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, amount) +} + +// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. +type ERC20ApprovalIterator struct { + Event *ERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Approval represents a Approval event raised by the ERC20 contract. +type ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. +type ERC20TransferIterator struct { + Event *ERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Transfer represents a Transfer event raised by the ERC20 contract. +type ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go b/v1/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go new file mode 100644 index 00000000..2d68dea7 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/token/erc20/extensions/erc20burnable.sol/erc20burnable.go @@ -0,0 +1,822 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20burnable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. +var ERC20BurnableMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ERC20BurnableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20BurnableMetaData.ABI instead. +var ERC20BurnableABI = ERC20BurnableMetaData.ABI + +// ERC20Burnable is an auto generated Go binding around an Ethereum contract. +type ERC20Burnable struct { + ERC20BurnableCaller // Read-only binding to the contract + ERC20BurnableTransactor // Write-only binding to the contract + ERC20BurnableFilterer // Log filterer for contract events +} + +// ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20BurnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20BurnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20BurnableSession struct { + Contract *ERC20Burnable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20BurnableCallerSession struct { + Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20BurnableTransactorSession struct { + Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20BurnableRaw struct { + Contract *ERC20Burnable // Generic contract binding to access the raw methods on +} + +// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20BurnableCallerRaw struct { + Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactorRaw struct { + Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { + contract, err := bindERC20Burnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil +} + +// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { + contract, err := bindERC20Burnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableCaller{contract: contract}, nil +} + +// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { + contract, err := bindERC20Burnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableTransactor{contract: contract}, nil +} + +// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { + contract, err := bindERC20Burnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20BurnableFilterer{contract: contract}, nil +} + +// bindERC20Burnable binds a generic wrapper to an already deployed contract. +func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20BurnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCallerSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, amount) +} + +// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. +type ERC20BurnableApprovalIterator struct { + Event *ERC20BurnableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. +type ERC20BurnableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. +type ERC20BurnableTransferIterator struct { + Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. +type ERC20BurnableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go b/v1/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go new file mode 100644 index 00000000..f4daadad --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/token/erc20/extensions/ierc20metadata.sol/ierc20metadata.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20metadata + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetadataMetaData contains all meta data concerning the IERC20Metadata contract. +var IERC20MetadataMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetadataMetaData.ABI instead. +var IERC20MetadataABI = IERC20MetadataMetaData.ABI + +// IERC20Metadata is an auto generated Go binding around an Ethereum contract. +type IERC20Metadata struct { + IERC20MetadataCaller // Read-only binding to the contract + IERC20MetadataTransactor // Write-only binding to the contract + IERC20MetadataFilterer // Log filterer for contract events +} + +// IERC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20MetadataSession struct { + Contract *IERC20Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20MetadataCallerSession struct { + Contract *IERC20MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20MetadataTransactorSession struct { + Contract *IERC20MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20MetadataRaw struct { + Contract *IERC20Metadata // Generic contract binding to access the raw methods on +} + +// IERC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20MetadataCallerRaw struct { + Contract *IERC20MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactorRaw struct { + Contract *IERC20MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Metadata creates a new instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20Metadata(address common.Address, backend bind.ContractBackend) (*IERC20Metadata, error) { + contract, err := bindIERC20Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Metadata{IERC20MetadataCaller: IERC20MetadataCaller{contract: contract}, IERC20MetadataTransactor: IERC20MetadataTransactor{contract: contract}, IERC20MetadataFilterer: IERC20MetadataFilterer{contract: contract}}, nil +} + +// NewIERC20MetadataCaller creates a new read-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC20MetadataCaller, error) { + contract, err := bindIERC20Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataCaller{contract: contract}, nil +} + +// NewIERC20MetadataTransactor creates a new write-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MetadataTransactor, error) { + contract, err := bindIERC20Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataTransactor{contract: contract}, nil +} + +// NewIERC20MetadataFilterer creates a new log filterer instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MetadataFilterer, error) { + contract, err := bindIERC20Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20MetadataFilterer{contract: contract}, nil +} + +// bindIERC20Metadata binds a generic wrapper to an already deployed contract. +func bindIERC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.IERC20MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, amount) +} + +// IERC20MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Metadata contract. +type IERC20MetadataApprovalIterator struct { + Event *IERC20MetadataApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataApproval represents a Approval event raised by the IERC20Metadata contract. +type IERC20MetadataApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20MetadataApprovalIterator{contract: _IERC20Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IERC20MetadataApproval, error) { + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Metadata contract. +type IERC20MetadataTransferIterator struct { + Event *IERC20MetadataTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataTransfer represents a Transfer event raised by the IERC20Metadata contract. +type IERC20MetadataTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20MetadataTransferIterator{contract: _IERC20Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IERC20MetadataTransfer, error) { + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go b/v1/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go new file mode 100644 index 00000000..3dbe231f --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/token/erc20/ierc20.sol/ierc20.go @@ -0,0 +1,645 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go b/v1/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go new file mode 100644 index 00000000..912d47c8 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/token/erc20/utils/safeerc20.sol/safeerc20.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package safeerc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a9b2fb39f884561bad7a62544d63197e691ed9b4bf51396178c74c59a554ce2f64736f6c63430008070033", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around an Ethereum contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/openzeppelin/contracts/utils/address.sol/address.go b/v1/pkg/openzeppelin/contracts/utils/address.sol/address.go new file mode 100644 index 00000000..9afb1c3a --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/utils/address.sol/address.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package address + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220707b19f8ce8fee8f6afc7520aba0995f8916b0cf807093a219746de5a8d7065664736f6c63430008070033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/openzeppelin/contracts/utils/context.sol/context.go b/v1/pkg/openzeppelin/contracts/utils/context.sol/context.go new file mode 100644 index 00000000..90b3cdd0 --- /dev/null +++ b/v1/pkg/openzeppelin/contracts/utils/context.sol/context.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package context + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ContextMetaData contains all meta data concerning the Context contract. +var ContextMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ContextABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextMetaData.ABI instead. +var ContextABI = ContextMetaData.ABI + +// Context is an auto generated Go binding around an Ethereum contract. +type Context struct { + ContextCaller // Read-only binding to the contract + ContextTransactor // Write-only binding to the contract + ContextFilterer // Log filterer for contract events +} + +// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextSession struct { + Contract *Context // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextCallerSession struct { + Contract *ContextCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextTransactorSession struct { + Contract *ContextTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextRaw struct { + Contract *Context // Generic contract binding to access the raw methods on +} + +// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextCallerRaw struct { + Contract *ContextCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextTransactorRaw struct { + Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContext creates a new instance of Context, bound to a specific deployed contract. +func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { + contract, err := bindContext(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil +} + +// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. +func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { + contract, err := bindContext(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextCaller{contract: contract}, nil +} + +// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. +func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { + contract, err := bindContext(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextTransactor{contract: contract}, nil +} + +// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. +func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { + contract, err := bindContext(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextFilterer{contract: contract}, nil +} + +// bindContext binds a generic wrapper to an already deployed contract. +func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go b/v1/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go new file mode 100644 index 00000000..648cd746 --- /dev/null +++ b/v1/pkg/uniswap/lib/contracts/libraries/transferhelper.sol/transferhelper.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package transferhelper + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TransferHelperMetaData contains all meta data concerning the TransferHelper contract. +var TransferHelperMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc8360e2264df1f2cb9f3c42ca667d72961924439936105dfdf91ec11cb5a40964736f6c63430008070033", +} + +// TransferHelperABI is the input ABI used to generate the binding from. +// Deprecated: Use TransferHelperMetaData.ABI instead. +var TransferHelperABI = TransferHelperMetaData.ABI + +// TransferHelperBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TransferHelperMetaData.Bin instead. +var TransferHelperBin = TransferHelperMetaData.Bin + +// DeployTransferHelper deploys a new Ethereum contract, binding an instance of TransferHelper to it. +func DeployTransferHelper(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TransferHelper, error) { + parsed, err := TransferHelperMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TransferHelperBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil +} + +// TransferHelper is an auto generated Go binding around an Ethereum contract. +type TransferHelper struct { + TransferHelperCaller // Read-only binding to the contract + TransferHelperTransactor // Write-only binding to the contract + TransferHelperFilterer // Log filterer for contract events +} + +// TransferHelperCaller is an auto generated read-only Go binding around an Ethereum contract. +type TransferHelperCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransferHelperTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TransferHelperTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransferHelperFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TransferHelperFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransferHelperSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TransferHelperSession struct { + Contract *TransferHelper // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TransferHelperCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TransferHelperCallerSession struct { + Contract *TransferHelperCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TransferHelperTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TransferHelperTransactorSession struct { + Contract *TransferHelperTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TransferHelperRaw is an auto generated low-level Go binding around an Ethereum contract. +type TransferHelperRaw struct { + Contract *TransferHelper // Generic contract binding to access the raw methods on +} + +// TransferHelperCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TransferHelperCallerRaw struct { + Contract *TransferHelperCaller // Generic read-only contract binding to access the raw methods on +} + +// TransferHelperTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TransferHelperTransactorRaw struct { + Contract *TransferHelperTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTransferHelper creates a new instance of TransferHelper, bound to a specific deployed contract. +func NewTransferHelper(address common.Address, backend bind.ContractBackend) (*TransferHelper, error) { + contract, err := bindTransferHelper(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil +} + +// NewTransferHelperCaller creates a new read-only instance of TransferHelper, bound to a specific deployed contract. +func NewTransferHelperCaller(address common.Address, caller bind.ContractCaller) (*TransferHelperCaller, error) { + contract, err := bindTransferHelper(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TransferHelperCaller{contract: contract}, nil +} + +// NewTransferHelperTransactor creates a new write-only instance of TransferHelper, bound to a specific deployed contract. +func NewTransferHelperTransactor(address common.Address, transactor bind.ContractTransactor) (*TransferHelperTransactor, error) { + contract, err := bindTransferHelper(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TransferHelperTransactor{contract: contract}, nil +} + +// NewTransferHelperFilterer creates a new log filterer instance of TransferHelper, bound to a specific deployed contract. +func NewTransferHelperFilterer(address common.Address, filterer bind.ContractFilterer) (*TransferHelperFilterer, error) { + contract, err := bindTransferHelper(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TransferHelperFilterer{contract: contract}, nil +} + +// bindTransferHelper binds a generic wrapper to an already deployed contract. +func bindTransferHelper(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TransferHelperMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TransferHelper *TransferHelperRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransferHelper.Contract.TransferHelperCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TransferHelper *TransferHelperRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransferHelper.Contract.TransferHelperTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TransferHelper *TransferHelperRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransferHelper.Contract.TransferHelperTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TransferHelper *TransferHelperCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransferHelper.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TransferHelper *TransferHelperTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransferHelper.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TransferHelper *TransferHelperTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransferHelper.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go b/v1/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go new file mode 100644 index 00000000..31d0fc1f --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/interfaces/ierc20.sol/ierc20.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Session) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20CallerSession) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Session) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20CallerSession) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Session) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20CallerSession) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go new file mode 100644 index 00000000..f955a7fa --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2callee.sol/iuniswapv2callee.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2callee + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2CalleeMetaData contains all meta data concerning the IUniswapV2Callee contract. +var IUniswapV2CalleeMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV2Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2CalleeABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2CalleeMetaData.ABI instead. +var IUniswapV2CalleeABI = IUniswapV2CalleeMetaData.ABI + +// IUniswapV2Callee is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Callee struct { + IUniswapV2CalleeCaller // Read-only binding to the contract + IUniswapV2CalleeTransactor // Write-only binding to the contract + IUniswapV2CalleeFilterer // Log filterer for contract events +} + +// IUniswapV2CalleeCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2CalleeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2CalleeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2CalleeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2CalleeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2CalleeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2CalleeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2CalleeSession struct { + Contract *IUniswapV2Callee // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2CalleeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2CalleeCallerSession struct { + Contract *IUniswapV2CalleeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2CalleeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2CalleeTransactorSession struct { + Contract *IUniswapV2CalleeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2CalleeRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2CalleeRaw struct { + Contract *IUniswapV2Callee // Generic contract binding to access the raw methods on +} + +// IUniswapV2CalleeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2CalleeCallerRaw struct { + Contract *IUniswapV2CalleeCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2CalleeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2CalleeTransactorRaw struct { + Contract *IUniswapV2CalleeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Callee creates a new instance of IUniswapV2Callee, bound to a specific deployed contract. +func NewIUniswapV2Callee(address common.Address, backend bind.ContractBackend) (*IUniswapV2Callee, error) { + contract, err := bindIUniswapV2Callee(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Callee{IUniswapV2CalleeCaller: IUniswapV2CalleeCaller{contract: contract}, IUniswapV2CalleeTransactor: IUniswapV2CalleeTransactor{contract: contract}, IUniswapV2CalleeFilterer: IUniswapV2CalleeFilterer{contract: contract}}, nil +} + +// NewIUniswapV2CalleeCaller creates a new read-only instance of IUniswapV2Callee, bound to a specific deployed contract. +func NewIUniswapV2CalleeCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2CalleeCaller, error) { + contract, err := bindIUniswapV2Callee(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2CalleeCaller{contract: contract}, nil +} + +// NewIUniswapV2CalleeTransactor creates a new write-only instance of IUniswapV2Callee, bound to a specific deployed contract. +func NewIUniswapV2CalleeTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2CalleeTransactor, error) { + contract, err := bindIUniswapV2Callee(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2CalleeTransactor{contract: contract}, nil +} + +// NewIUniswapV2CalleeFilterer creates a new log filterer instance of IUniswapV2Callee, bound to a specific deployed contract. +func NewIUniswapV2CalleeFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2CalleeFilterer, error) { + contract, err := bindIUniswapV2Callee(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2CalleeFilterer{contract: contract}, nil +} + +// bindIUniswapV2Callee binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Callee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2CalleeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Callee.Contract.IUniswapV2CalleeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.IUniswapV2CalleeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Callee *IUniswapV2CalleeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.IUniswapV2CalleeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Callee *IUniswapV2CalleeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Callee.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Callee *IUniswapV2CalleeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Callee *IUniswapV2CalleeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.contract.Transact(opts, method, params...) +} + +// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. +// +// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV2Callee *IUniswapV2CalleeTransactor) UniswapV2Call(opts *bind.TransactOpts, sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV2Callee.contract.Transact(opts, "uniswapV2Call", sender, amount0, amount1, data) +} + +// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. +// +// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV2Callee *IUniswapV2CalleeSession) UniswapV2Call(sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.UniswapV2Call(&_IUniswapV2Callee.TransactOpts, sender, amount0, amount1, data) +} + +// UniswapV2Call is a paid mutator transaction binding the contract method 0x10d1e85c. +// +// Solidity: function uniswapV2Call(address sender, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV2Callee *IUniswapV2CalleeTransactorSession) UniswapV2Call(sender common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV2Callee.Contract.UniswapV2Call(&_IUniswapV2Callee.TransactOpts, sender, amount0, amount1, data) +} diff --git a/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go new file mode 100644 index 00000000..39df5698 --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2erc20.sol/iuniswapv2erc20.go @@ -0,0 +1,852 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2erc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2ERC20MetaData contains all meta data concerning the IUniswapV2ERC20 contract. +var IUniswapV2ERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2ERC20MetaData.ABI instead. +var IUniswapV2ERC20ABI = IUniswapV2ERC20MetaData.ABI + +// IUniswapV2ERC20 is an auto generated Go binding around an Ethereum contract. +type IUniswapV2ERC20 struct { + IUniswapV2ERC20Caller // Read-only binding to the contract + IUniswapV2ERC20Transactor // Write-only binding to the contract + IUniswapV2ERC20Filterer // Log filterer for contract events +} + +// IUniswapV2ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2ERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2ERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2ERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2ERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2ERC20Session struct { + Contract *IUniswapV2ERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2ERC20CallerSession struct { + Contract *IUniswapV2ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2ERC20TransactorSession struct { + Contract *IUniswapV2ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2ERC20Raw struct { + Contract *IUniswapV2ERC20 // Generic contract binding to access the raw methods on +} + +// IUniswapV2ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2ERC20CallerRaw struct { + Contract *IUniswapV2ERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2ERC20TransactorRaw struct { + Contract *IUniswapV2ERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2ERC20 creates a new instance of IUniswapV2ERC20, bound to a specific deployed contract. +func NewIUniswapV2ERC20(address common.Address, backend bind.ContractBackend) (*IUniswapV2ERC20, error) { + contract, err := bindIUniswapV2ERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20{IUniswapV2ERC20Caller: IUniswapV2ERC20Caller{contract: contract}, IUniswapV2ERC20Transactor: IUniswapV2ERC20Transactor{contract: contract}, IUniswapV2ERC20Filterer: IUniswapV2ERC20Filterer{contract: contract}}, nil +} + +// NewIUniswapV2ERC20Caller creates a new read-only instance of IUniswapV2ERC20, bound to a specific deployed contract. +func NewIUniswapV2ERC20Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2ERC20Caller, error) { + contract, err := bindIUniswapV2ERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20Caller{contract: contract}, nil +} + +// NewIUniswapV2ERC20Transactor creates a new write-only instance of IUniswapV2ERC20, bound to a specific deployed contract. +func NewIUniswapV2ERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2ERC20Transactor, error) { + contract, err := bindIUniswapV2ERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20Transactor{contract: contract}, nil +} + +// NewIUniswapV2ERC20Filterer creates a new log filterer instance of IUniswapV2ERC20, bound to a specific deployed contract. +func NewIUniswapV2ERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2ERC20Filterer, error) { + contract, err := bindIUniswapV2ERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20Filterer{contract: contract}, nil +} + +// bindIUniswapV2ERC20 binds a generic wrapper to an already deployed contract. +func bindIUniswapV2ERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2ERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2ERC20 *IUniswapV2ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.IUniswapV2ERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2ERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) DOMAINSEPARATOR() ([32]byte, error) { + return _IUniswapV2ERC20.Contract.DOMAINSEPARATOR(&_IUniswapV2ERC20.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IUniswapV2ERC20.Contract.DOMAINSEPARATOR(&_IUniswapV2ERC20.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "PERMIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) PERMITTYPEHASH() ([32]byte, error) { + return _IUniswapV2ERC20.Contract.PERMITTYPEHASH(&_IUniswapV2ERC20.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) PERMITTYPEHASH() ([32]byte, error) { + return _IUniswapV2ERC20.Contract.PERMITTYPEHASH(&_IUniswapV2ERC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.Allowance(&_IUniswapV2ERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.Allowance(&_IUniswapV2ERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.BalanceOf(&_IUniswapV2ERC20.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.BalanceOf(&_IUniswapV2ERC20.CallOpts, owner) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Decimals() (uint8, error) { + return _IUniswapV2ERC20.Contract.Decimals(&_IUniswapV2ERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Decimals() (uint8, error) { + return _IUniswapV2ERC20.Contract.Decimals(&_IUniswapV2ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Name() (string, error) { + return _IUniswapV2ERC20.Contract.Name(&_IUniswapV2ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Name() (string, error) { + return _IUniswapV2ERC20.Contract.Name(&_IUniswapV2ERC20.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Nonces(owner common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.Nonces(&_IUniswapV2ERC20.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IUniswapV2ERC20.Contract.Nonces(&_IUniswapV2ERC20.CallOpts, owner) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Symbol() (string, error) { + return _IUniswapV2ERC20.Contract.Symbol(&_IUniswapV2ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) Symbol() (string, error) { + return _IUniswapV2ERC20.Contract.Symbol(&_IUniswapV2ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2ERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) TotalSupply() (*big.Int, error) { + return _IUniswapV2ERC20.Contract.TotalSupply(&_IUniswapV2ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2ERC20 *IUniswapV2ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IUniswapV2ERC20.Contract.TotalSupply(&_IUniswapV2ERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Approve(&_IUniswapV2ERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Approve(&_IUniswapV2ERC20.TransactOpts, spender, value) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2ERC20.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Permit(&_IUniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Permit(&_IUniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Transfer(&_IUniswapV2ERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.Transfer(&_IUniswapV2ERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.TransferFrom(&_IUniswapV2ERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2ERC20 *IUniswapV2ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2ERC20.Contract.TransferFrom(&_IUniswapV2ERC20.TransactOpts, from, to, value) +} + +// IUniswapV2ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IUniswapV2ERC20 contract. +type IUniswapV2ERC20ApprovalIterator struct { + Event *IUniswapV2ERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2ERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2ERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2ERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2ERC20Approval represents a Approval event raised by the IUniswapV2ERC20 contract. +type IUniswapV2ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IUniswapV2ERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IUniswapV2ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20ApprovalIterator{contract: _IUniswapV2ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IUniswapV2ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IUniswapV2ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2ERC20Approval) + if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) ParseApproval(log types.Log) (*IUniswapV2ERC20Approval, error) { + event := new(IUniswapV2ERC20Approval) + if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IUniswapV2ERC20 contract. +type IUniswapV2ERC20TransferIterator struct { + Event *IUniswapV2ERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2ERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2ERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2ERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2ERC20Transfer represents a Transfer event raised by the IUniswapV2ERC20 contract. +type IUniswapV2ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IUniswapV2ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IUniswapV2ERC20TransferIterator{contract: _IUniswapV2ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IUniswapV2ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2ERC20Transfer) + if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2ERC20 *IUniswapV2ERC20Filterer) ParseTransfer(log types.Log) (*IUniswapV2ERC20Transfer, error) { + event := new(IUniswapV2ERC20Transfer) + if err := _IUniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go new file mode 100644 index 00000000..a8ab2860 --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2factory.sol/iuniswapv2factory.go @@ -0,0 +1,554 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2factory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2FactoryMetaData contains all meta data concerning the IUniswapV2Factory contract. +var IUniswapV2FactoryMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2FactoryMetaData.ABI instead. +var IUniswapV2FactoryABI = IUniswapV2FactoryMetaData.ABI + +// IUniswapV2Factory is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Factory struct { + IUniswapV2FactoryCaller // Read-only binding to the contract + IUniswapV2FactoryTransactor // Write-only binding to the contract + IUniswapV2FactoryFilterer // Log filterer for contract events +} + +// IUniswapV2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2FactorySession struct { + Contract *IUniswapV2Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2FactoryCallerSession struct { + Contract *IUniswapV2FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2FactoryTransactorSession struct { + Contract *IUniswapV2FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2FactoryRaw struct { + Contract *IUniswapV2Factory // Generic contract binding to access the raw methods on +} + +// IUniswapV2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2FactoryCallerRaw struct { + Contract *IUniswapV2FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2FactoryTransactorRaw struct { + Contract *IUniswapV2FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Factory creates a new instance of IUniswapV2Factory, bound to a specific deployed contract. +func NewIUniswapV2Factory(address common.Address, backend bind.ContractBackend) (*IUniswapV2Factory, error) { + contract, err := bindIUniswapV2Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Factory{IUniswapV2FactoryCaller: IUniswapV2FactoryCaller{contract: contract}, IUniswapV2FactoryTransactor: IUniswapV2FactoryTransactor{contract: contract}, IUniswapV2FactoryFilterer: IUniswapV2FactoryFilterer{contract: contract}}, nil +} + +// NewIUniswapV2FactoryCaller creates a new read-only instance of IUniswapV2Factory, bound to a specific deployed contract. +func NewIUniswapV2FactoryCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2FactoryCaller, error) { + contract, err := bindIUniswapV2Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2FactoryCaller{contract: contract}, nil +} + +// NewIUniswapV2FactoryTransactor creates a new write-only instance of IUniswapV2Factory, bound to a specific deployed contract. +func NewIUniswapV2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2FactoryTransactor, error) { + contract, err := bindIUniswapV2Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2FactoryTransactor{contract: contract}, nil +} + +// NewIUniswapV2FactoryFilterer creates a new log filterer instance of IUniswapV2Factory, bound to a specific deployed contract. +func NewIUniswapV2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2FactoryFilterer, error) { + contract, err := bindIUniswapV2Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2FactoryFilterer{contract: contract}, nil +} + +// bindIUniswapV2Factory binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2FactoryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Factory.Contract.IUniswapV2FactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.IUniswapV2FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Factory *IUniswapV2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.IUniswapV2FactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Factory *IUniswapV2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Factory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Factory *IUniswapV2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Factory *IUniswapV2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.contract.Transact(opts, method, params...) +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryCaller) AllPairs(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Factory.contract.Call(opts, &out, "allPairs", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactorySession) AllPairs(arg0 *big.Int) (common.Address, error) { + return _IUniswapV2Factory.Contract.AllPairs(&_IUniswapV2Factory.CallOpts, arg0) +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) AllPairs(arg0 *big.Int) (common.Address, error) { + return _IUniswapV2Factory.Contract.AllPairs(&_IUniswapV2Factory.CallOpts, arg0) +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_IUniswapV2Factory *IUniswapV2FactoryCaller) AllPairsLength(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Factory.contract.Call(opts, &out, "allPairsLength") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_IUniswapV2Factory *IUniswapV2FactorySession) AllPairsLength() (*big.Int, error) { + return _IUniswapV2Factory.Contract.AllPairsLength(&_IUniswapV2Factory.CallOpts) +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) AllPairsLength() (*big.Int, error) { + return _IUniswapV2Factory.Contract.AllPairsLength(&_IUniswapV2Factory.CallOpts) +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactoryCaller) FeeTo(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Factory.contract.Call(opts, &out, "feeTo") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactorySession) FeeTo() (common.Address, error) { + return _IUniswapV2Factory.Contract.FeeTo(&_IUniswapV2Factory.CallOpts) +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) FeeTo() (common.Address, error) { + return _IUniswapV2Factory.Contract.FeeTo(&_IUniswapV2Factory.CallOpts) +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactoryCaller) FeeToSetter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Factory.contract.Call(opts, &out, "feeToSetter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactorySession) FeeToSetter() (common.Address, error) { + return _IUniswapV2Factory.Contract.FeeToSetter(&_IUniswapV2Factory.CallOpts) +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) FeeToSetter() (common.Address, error) { + return _IUniswapV2Factory.Contract.FeeToSetter(&_IUniswapV2Factory.CallOpts) +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryCaller) GetPair(opts *bind.CallOpts, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Factory.contract.Call(opts, &out, "getPair", tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactorySession) GetPair(tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _IUniswapV2Factory.Contract.GetPair(&_IUniswapV2Factory.CallOpts, tokenA, tokenB) +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address tokenA, address tokenB) view returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryCallerSession) GetPair(tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _IUniswapV2Factory.Contract.GetPair(&_IUniswapV2Factory.CallOpts, tokenA, tokenB) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) CreatePair(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.contract.Transact(opts, "createPair", tokenA, tokenB) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactorySession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.CreatePair(&_IUniswapV2Factory.TransactOpts, tokenA, tokenB) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.CreatePair(&_IUniswapV2Factory.TransactOpts, tokenA, tokenB) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) SetFeeTo(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.contract.Transact(opts, "setFeeTo", arg0) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactorySession) SetFeeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.SetFeeTo(&_IUniswapV2Factory.TransactOpts, arg0) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) SetFeeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.SetFeeTo(&_IUniswapV2Factory.TransactOpts, arg0) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactoryTransactor) SetFeeToSetter(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.contract.Transact(opts, "setFeeToSetter", arg0) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactorySession) SetFeeToSetter(arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.SetFeeToSetter(&_IUniswapV2Factory.TransactOpts, arg0) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address ) returns() +func (_IUniswapV2Factory *IUniswapV2FactoryTransactorSession) SetFeeToSetter(arg0 common.Address) (*types.Transaction, error) { + return _IUniswapV2Factory.Contract.SetFeeToSetter(&_IUniswapV2Factory.TransactOpts, arg0) +} + +// IUniswapV2FactoryPairCreatedIterator is returned from FilterPairCreated and is used to iterate over the raw logs and unpacked data for PairCreated events raised by the IUniswapV2Factory contract. +type IUniswapV2FactoryPairCreatedIterator struct { + Event *IUniswapV2FactoryPairCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2FactoryPairCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2FactoryPairCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2FactoryPairCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2FactoryPairCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2FactoryPairCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2FactoryPairCreated represents a PairCreated event raised by the IUniswapV2Factory contract. +type IUniswapV2FactoryPairCreated struct { + Token0 common.Address + Token1 common.Address + Pair common.Address + Arg3 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPairCreated is a free log retrieval operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) FilterPairCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address) (*IUniswapV2FactoryPairCreatedIterator, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + + logs, sub, err := _IUniswapV2Factory.contract.FilterLogs(opts, "PairCreated", token0Rule, token1Rule) + if err != nil { + return nil, err + } + return &IUniswapV2FactoryPairCreatedIterator{contract: _IUniswapV2Factory.contract, event: "PairCreated", logs: logs, sub: sub}, nil +} + +// WatchPairCreated is a free log subscription operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) WatchPairCreated(opts *bind.WatchOpts, sink chan<- *IUniswapV2FactoryPairCreated, token0 []common.Address, token1 []common.Address) (event.Subscription, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + + logs, sub, err := _IUniswapV2Factory.contract.WatchLogs(opts, "PairCreated", token0Rule, token1Rule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2FactoryPairCreated) + if err := _IUniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePairCreated is a log parse operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_IUniswapV2Factory *IUniswapV2FactoryFilterer) ParsePairCreated(log types.Log) (*IUniswapV2FactoryPairCreated, error) { + event := new(IUniswapV2FactoryPairCreated) + if err := _IUniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go new file mode 100644 index 00000000..61cf1f4b --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/interfaces/iuniswapv2pair.sol/iuniswapv2pair.go @@ -0,0 +1,1842 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2pair + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2PairMetaData contains all meta data concerning the IUniswapV2Pair contract. +var IUniswapV2PairMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2PairABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2PairMetaData.ABI instead. +var IUniswapV2PairABI = IUniswapV2PairMetaData.ABI + +// IUniswapV2Pair is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Pair struct { + IUniswapV2PairCaller // Read-only binding to the contract + IUniswapV2PairTransactor // Write-only binding to the contract + IUniswapV2PairFilterer // Log filterer for contract events +} + +// IUniswapV2PairCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2PairCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2PairTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2PairTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2PairFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2PairFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2PairSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2PairSession struct { + Contract *IUniswapV2Pair // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2PairCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2PairCallerSession struct { + Contract *IUniswapV2PairCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2PairTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2PairTransactorSession struct { + Contract *IUniswapV2PairTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2PairRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2PairRaw struct { + Contract *IUniswapV2Pair // Generic contract binding to access the raw methods on +} + +// IUniswapV2PairCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2PairCallerRaw struct { + Contract *IUniswapV2PairCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2PairTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2PairTransactorRaw struct { + Contract *IUniswapV2PairTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Pair creates a new instance of IUniswapV2Pair, bound to a specific deployed contract. +func NewIUniswapV2Pair(address common.Address, backend bind.ContractBackend) (*IUniswapV2Pair, error) { + contract, err := bindIUniswapV2Pair(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Pair{IUniswapV2PairCaller: IUniswapV2PairCaller{contract: contract}, IUniswapV2PairTransactor: IUniswapV2PairTransactor{contract: contract}, IUniswapV2PairFilterer: IUniswapV2PairFilterer{contract: contract}}, nil +} + +// NewIUniswapV2PairCaller creates a new read-only instance of IUniswapV2Pair, bound to a specific deployed contract. +func NewIUniswapV2PairCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV2PairCaller, error) { + contract, err := bindIUniswapV2Pair(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2PairCaller{contract: contract}, nil +} + +// NewIUniswapV2PairTransactor creates a new write-only instance of IUniswapV2Pair, bound to a specific deployed contract. +func NewIUniswapV2PairTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2PairTransactor, error) { + contract, err := bindIUniswapV2Pair(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2PairTransactor{contract: contract}, nil +} + +// NewIUniswapV2PairFilterer creates a new log filterer instance of IUniswapV2Pair, bound to a specific deployed contract. +func NewIUniswapV2PairFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2PairFilterer, error) { + contract, err := bindIUniswapV2Pair(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2PairFilterer{contract: contract}, nil +} + +// bindIUniswapV2Pair binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Pair(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2PairMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Pair *IUniswapV2PairRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Pair.Contract.IUniswapV2PairCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Pair *IUniswapV2PairRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.IUniswapV2PairTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Pair *IUniswapV2PairRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.IUniswapV2PairTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Pair *IUniswapV2PairCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Pair.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Pair *IUniswapV2PairTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Pair *IUniswapV2PairTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IUniswapV2Pair.Contract.DOMAINSEPARATOR(&_IUniswapV2Pair.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IUniswapV2Pair.Contract.DOMAINSEPARATOR(&_IUniswapV2Pair.CallOpts) +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) MINIMUMLIQUIDITY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "MINIMUM_LIQUIDITY") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) MINIMUMLIQUIDITY() (*big.Int, error) { + return _IUniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_IUniswapV2Pair.CallOpts) +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() pure returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) MINIMUMLIQUIDITY() (*big.Int, error) { + return _IUniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_IUniswapV2Pair.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairCaller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "PERMIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairSession) PERMITTYPEHASH() ([32]byte, error) { + return _IUniswapV2Pair.Contract.PERMITTYPEHASH(&_IUniswapV2Pair.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() pure returns(bytes32) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) PERMITTYPEHASH() ([32]byte, error) { + return _IUniswapV2Pair.Contract.PERMITTYPEHASH(&_IUniswapV2Pair.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.Allowance(&_IUniswapV2Pair.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.Allowance(&_IUniswapV2Pair.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.BalanceOf(&_IUniswapV2Pair.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.BalanceOf(&_IUniswapV2Pair.CallOpts, owner) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2Pair *IUniswapV2PairSession) Decimals() (uint8, error) { + return _IUniswapV2Pair.Contract.Decimals(&_IUniswapV2Pair.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() pure returns(uint8) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Decimals() (uint8, error) { + return _IUniswapV2Pair.Contract.Decimals(&_IUniswapV2Pair.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairSession) Factory() (common.Address, error) { + return _IUniswapV2Pair.Contract.Factory(&_IUniswapV2Pair.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Factory() (common.Address, error) { + return _IUniswapV2Pair.Contract.Factory(&_IUniswapV2Pair.CallOpts) +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) +func (_IUniswapV2Pair *IUniswapV2PairCaller) GetReserves(opts *bind.CallOpts) (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "getReserves") + + outstruct := new(struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Reserve0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Reserve1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.BlockTimestampLast = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) +func (_IUniswapV2Pair *IUniswapV2PairSession) GetReserves() (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + return _IUniswapV2Pair.Contract.GetReserves(&_IUniswapV2Pair.CallOpts) +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) GetReserves() (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + return _IUniswapV2Pair.Contract.GetReserves(&_IUniswapV2Pair.CallOpts) +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) KLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "kLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) KLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.KLast(&_IUniswapV2Pair.CallOpts) +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) KLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.KLast(&_IUniswapV2Pair.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairSession) Name() (string, error) { + return _IUniswapV2Pair.Contract.Name(&_IUniswapV2Pair.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Name() (string, error) { + return _IUniswapV2Pair.Contract.Name(&_IUniswapV2Pair.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) Nonces(owner common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.Nonces(&_IUniswapV2Pair.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IUniswapV2Pair.Contract.Nonces(&_IUniswapV2Pair.CallOpts, owner) +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Price0CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "price0CumulativeLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) Price0CumulativeLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.Price0CumulativeLast(&_IUniswapV2Pair.CallOpts) +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Price0CumulativeLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.Price0CumulativeLast(&_IUniswapV2Pair.CallOpts) +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Price1CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "price1CumulativeLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) Price1CumulativeLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.Price1CumulativeLast(&_IUniswapV2Pair.CallOpts) +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Price1CumulativeLast() (*big.Int, error) { + return _IUniswapV2Pair.Contract.Price1CumulativeLast(&_IUniswapV2Pair.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairSession) Symbol() (string, error) { + return _IUniswapV2Pair.Contract.Symbol(&_IUniswapV2Pair.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() pure returns(string) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Symbol() (string, error) { + return _IUniswapV2Pair.Contract.Symbol(&_IUniswapV2Pair.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairSession) Token0() (common.Address, error) { + return _IUniswapV2Pair.Contract.Token0(&_IUniswapV2Pair.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Token0() (common.Address, error) { + return _IUniswapV2Pair.Contract.Token0(&_IUniswapV2Pair.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairSession) Token1() (common.Address, error) { + return _IUniswapV2Pair.Contract.Token1(&_IUniswapV2Pair.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) Token1() (common.Address, error) { + return _IUniswapV2Pair.Contract.Token1(&_IUniswapV2Pair.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Pair.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairSession) TotalSupply() (*big.Int, error) { + return _IUniswapV2Pair.Contract.TotalSupply(&_IUniswapV2Pair.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IUniswapV2Pair *IUniswapV2PairCallerSession) TotalSupply() (*big.Int, error) { + return _IUniswapV2Pair.Contract.TotalSupply(&_IUniswapV2Pair.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Approve(&_IUniswapV2Pair.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Approve(&_IUniswapV2Pair.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Burn(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "burn", to) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairSession) Burn(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Burn(&_IUniswapV2Pair.TransactOpts, to) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Burn(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Burn(&_IUniswapV2Pair.TransactOpts, to) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address , address ) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Initialize(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "initialize", arg0, arg1) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address , address ) returns() +func (_IUniswapV2Pair *IUniswapV2PairSession) Initialize(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Initialize(&_IUniswapV2Pair.TransactOpts, arg0, arg1) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address , address ) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Initialize(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Initialize(&_IUniswapV2Pair.TransactOpts, arg0, arg1) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Mint(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "mint", to) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_IUniswapV2Pair *IUniswapV2PairSession) Mint(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Mint(&_IUniswapV2Pair.TransactOpts, to) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Mint(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Mint(&_IUniswapV2Pair.TransactOpts, to) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2Pair *IUniswapV2PairSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Permit(&_IUniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Permit(&_IUniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Skim(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "skim", to) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_IUniswapV2Pair *IUniswapV2PairSession) Skim(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Skim(&_IUniswapV2Pair.TransactOpts, to) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Skim(to common.Address) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Skim(&_IUniswapV2Pair.TransactOpts, to) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Swap(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "swap", amount0Out, amount1Out, to, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_IUniswapV2Pair *IUniswapV2PairSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Swap(&_IUniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Swap(&_IUniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Sync(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "sync") +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_IUniswapV2Pair *IUniswapV2PairSession) Sync() (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Sync(&_IUniswapV2Pair.TransactOpts) +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Sync() (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Sync(&_IUniswapV2Pair.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Transfer(&_IUniswapV2Pair.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.Transfer(&_IUniswapV2Pair.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.TransferFrom(&_IUniswapV2Pair.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IUniswapV2Pair *IUniswapV2PairTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IUniswapV2Pair.Contract.TransferFrom(&_IUniswapV2Pair.TransactOpts, from, to, value) +} + +// IUniswapV2PairApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IUniswapV2Pair contract. +type IUniswapV2PairApprovalIterator struct { + Event *IUniswapV2PairApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairApproval represents a Approval event raised by the IUniswapV2Pair contract. +type IUniswapV2PairApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IUniswapV2PairApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IUniswapV2PairApprovalIterator{contract: _IUniswapV2Pair.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairApproval) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseApproval(log types.Log) (*IUniswapV2PairApproval, error) { + event := new(IUniswapV2PairApproval) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2PairBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV2Pair contract. +type IUniswapV2PairBurnIterator struct { + Event *IUniswapV2PairBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairBurn represents a Burn event raised by the IUniswapV2Pair contract. +type IUniswapV2PairBurn struct { + Sender common.Address + Amount0 *big.Int + Amount1 *big.Int + To common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterBurn(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*IUniswapV2PairBurnIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Burn", senderRule, toRule) + if err != nil { + return nil, err + } + return &IUniswapV2PairBurnIterator{contract: _IUniswapV2Pair.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairBurn, sender []common.Address, to []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Burn", senderRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairBurn) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseBurn(log types.Log) (*IUniswapV2PairBurn, error) { + event := new(IUniswapV2PairBurn) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2PairMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV2Pair contract. +type IUniswapV2PairMintIterator struct { + Event *IUniswapV2PairMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairMint represents a Mint event raised by the IUniswapV2Pair contract. +type IUniswapV2PairMint struct { + Sender common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterMint(opts *bind.FilterOpts, sender []common.Address) (*IUniswapV2PairMintIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Mint", senderRule) + if err != nil { + return nil, err + } + return &IUniswapV2PairMintIterator{contract: _IUniswapV2Pair.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairMint, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Mint", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairMint) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseMint(log types.Log) (*IUniswapV2PairMint, error) { + event := new(IUniswapV2PairMint) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2PairSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV2Pair contract. +type IUniswapV2PairSwapIterator struct { + Event *IUniswapV2PairSwap // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairSwapIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairSwap represents a Swap event raised by the IUniswapV2Pair contract. +type IUniswapV2PairSwap struct { + Sender common.Address + Amount0In *big.Int + Amount1In *big.Int + Amount0Out *big.Int + Amount1Out *big.Int + To common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*IUniswapV2PairSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Swap", senderRule, toRule) + if err != nil { + return nil, err + } + return &IUniswapV2PairSwapIterator{contract: _IUniswapV2Pair.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairSwap, sender []common.Address, to []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Swap", senderRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairSwap) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwap is a log parse operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseSwap(log types.Log) (*IUniswapV2PairSwap, error) { + event := new(IUniswapV2PairSwap) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2PairSyncIterator is returned from FilterSync and is used to iterate over the raw logs and unpacked data for Sync events raised by the IUniswapV2Pair contract. +type IUniswapV2PairSyncIterator struct { + Event *IUniswapV2PairSync // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairSyncIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairSync) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairSync) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairSyncIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairSyncIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairSync represents a Sync event raised by the IUniswapV2Pair contract. +type IUniswapV2PairSync struct { + Reserve0 *big.Int + Reserve1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSync is a free log retrieval operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterSync(opts *bind.FilterOpts) (*IUniswapV2PairSyncIterator, error) { + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Sync") + if err != nil { + return nil, err + } + return &IUniswapV2PairSyncIterator{contract: _IUniswapV2Pair.contract, event: "Sync", logs: logs, sub: sub}, nil +} + +// WatchSync is a free log subscription operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchSync(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairSync) (event.Subscription, error) { + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Sync") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairSync) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSync is a log parse operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseSync(log types.Log) (*IUniswapV2PairSync, error) { + event := new(IUniswapV2PairSync) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV2PairTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IUniswapV2Pair contract. +type IUniswapV2PairTransferIterator struct { + Event *IUniswapV2PairTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV2PairTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV2PairTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV2PairTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV2PairTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV2PairTransfer represents a Transfer event raised by the IUniswapV2Pair contract. +type IUniswapV2PairTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IUniswapV2PairTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IUniswapV2PairTransferIterator{contract: _IUniswapV2Pair.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IUniswapV2PairTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IUniswapV2Pair.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV2PairTransfer) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IUniswapV2Pair *IUniswapV2PairFilterer) ParseTransfer(log types.Log) (*IUniswapV2PairTransfer, error) { + event := new(IUniswapV2PairTransfer) + if err := _IUniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go b/v1/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go new file mode 100644 index 00000000..da2c97a0 --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/libraries/math.sol/math.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package math + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MathMetaData contains all meta data concerning the Math contract. +var MathMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582036ebcfaac2554db76c89ce048a11e2a035fd87545ae459a0f16e5e15e0c6532964736f6c63430005100032", +} + +// MathABI is the input ABI used to generate the binding from. +// Deprecated: Use MathMetaData.ABI instead. +var MathABI = MathMetaData.ABI + +// MathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MathMetaData.Bin instead. +var MathBin = MathMetaData.Bin + +// DeployMath deploys a new Ethereum contract, binding an instance of Math to it. +func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// Math is an auto generated Go binding around an Ethereum contract. +type Math struct { + MathCaller // Read-only binding to the contract + MathTransactor // Write-only binding to the contract + MathFilterer // Log filterer for contract events +} + +// MathCaller is an auto generated read-only Go binding around an Ethereum contract. +type MathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MathSession struct { + Contract *Math // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MathCallerSession struct { + Contract *MathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MathTransactorSession struct { + Contract *MathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathRaw is an auto generated low-level Go binding around an Ethereum contract. +type MathRaw struct { + Contract *Math // Generic contract binding to access the raw methods on +} + +// MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MathCallerRaw struct { + Contract *MathCaller // Generic read-only contract binding to access the raw methods on +} + +// MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MathTransactorRaw struct { + Contract *MathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMath creates a new instance of Math, bound to a specific deployed contract. +func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) { + contract, err := bindMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract. +func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) { + contract, err := bindMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MathCaller{contract: contract}, nil +} + +// NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract. +func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) { + contract, err := bindMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MathTransactor{contract: contract}, nil +} + +// NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract. +func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) { + contract, err := bindMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MathFilterer{contract: contract}, nil +} + +// bindMath binds a generic wrapper to an already deployed contract. +func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go b/v1/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go new file mode 100644 index 00000000..dd80cb9b --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/libraries/safemath.sol/safemath.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package safemath + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SafeMathMetaData contains all meta data concerning the SafeMath contract. +var SafeMathMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc1c290dcae2f326bd131e1959ee8796f40aded46d889061bd483ecfcb42f19664736f6c63430005100032", +} + +// SafeMathABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeMathMetaData.ABI instead. +var SafeMathABI = SafeMathMetaData.ABI + +// SafeMathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeMathMetaData.Bin instead. +var SafeMathBin = SafeMathMetaData.Bin + +// DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it. +func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) { + parsed, err := SafeMathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil +} + +// SafeMath is an auto generated Go binding around an Ethereum contract. +type SafeMath struct { + SafeMathCaller // Read-only binding to the contract + SafeMathTransactor // Write-only binding to the contract + SafeMathFilterer // Log filterer for contract events +} + +// SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeMathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeMathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeMathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeMathSession struct { + Contract *SafeMath // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeMathCallerSession struct { + Contract *SafeMathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeMathTransactorSession struct { + Contract *SafeMathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeMathRaw struct { + Contract *SafeMath // Generic contract binding to access the raw methods on +} + +// SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeMathCallerRaw struct { + Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeMathTransactorRaw struct { + Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract. +func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) { + contract, err := bindSafeMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil +} + +// NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) { + contract, err := bindSafeMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeMathCaller{contract: contract}, nil +} + +// NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) { + contract, err := bindSafeMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeMathTransactor{contract: contract}, nil +} + +// NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) { + contract, err := bindSafeMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeMathFilterer{contract: contract}, nil +} + +// bindSafeMath binds a generic wrapper to an already deployed contract. +func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeMathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeMath.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeMath.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeMath.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go b/v1/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go new file mode 100644 index 00000000..13e1b83d --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/libraries/uq112x112.sol/uq112x112.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uq112x112 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UQ112x112MetaData contains all meta data concerning the UQ112x112 contract. +var UQ112x112MetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820c4e545b71eb450fec89d3fbcceea2f62f8971fce94db924228248b088e907ed864736f6c63430005100032", +} + +// UQ112x112ABI is the input ABI used to generate the binding from. +// Deprecated: Use UQ112x112MetaData.ABI instead. +var UQ112x112ABI = UQ112x112MetaData.ABI + +// UQ112x112Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UQ112x112MetaData.Bin instead. +var UQ112x112Bin = UQ112x112MetaData.Bin + +// DeployUQ112x112 deploys a new Ethereum contract, binding an instance of UQ112x112 to it. +func DeployUQ112x112(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UQ112x112, error) { + parsed, err := UQ112x112MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UQ112x112Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UQ112x112{UQ112x112Caller: UQ112x112Caller{contract: contract}, UQ112x112Transactor: UQ112x112Transactor{contract: contract}, UQ112x112Filterer: UQ112x112Filterer{contract: contract}}, nil +} + +// UQ112x112 is an auto generated Go binding around an Ethereum contract. +type UQ112x112 struct { + UQ112x112Caller // Read-only binding to the contract + UQ112x112Transactor // Write-only binding to the contract + UQ112x112Filterer // Log filterer for contract events +} + +// UQ112x112Caller is an auto generated read-only Go binding around an Ethereum contract. +type UQ112x112Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UQ112x112Transactor is an auto generated write-only Go binding around an Ethereum contract. +type UQ112x112Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UQ112x112Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UQ112x112Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UQ112x112Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UQ112x112Session struct { + Contract *UQ112x112 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UQ112x112CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UQ112x112CallerSession struct { + Contract *UQ112x112Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UQ112x112TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UQ112x112TransactorSession struct { + Contract *UQ112x112Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UQ112x112Raw is an auto generated low-level Go binding around an Ethereum contract. +type UQ112x112Raw struct { + Contract *UQ112x112 // Generic contract binding to access the raw methods on +} + +// UQ112x112CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UQ112x112CallerRaw struct { + Contract *UQ112x112Caller // Generic read-only contract binding to access the raw methods on +} + +// UQ112x112TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UQ112x112TransactorRaw struct { + Contract *UQ112x112Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewUQ112x112 creates a new instance of UQ112x112, bound to a specific deployed contract. +func NewUQ112x112(address common.Address, backend bind.ContractBackend) (*UQ112x112, error) { + contract, err := bindUQ112x112(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UQ112x112{UQ112x112Caller: UQ112x112Caller{contract: contract}, UQ112x112Transactor: UQ112x112Transactor{contract: contract}, UQ112x112Filterer: UQ112x112Filterer{contract: contract}}, nil +} + +// NewUQ112x112Caller creates a new read-only instance of UQ112x112, bound to a specific deployed contract. +func NewUQ112x112Caller(address common.Address, caller bind.ContractCaller) (*UQ112x112Caller, error) { + contract, err := bindUQ112x112(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UQ112x112Caller{contract: contract}, nil +} + +// NewUQ112x112Transactor creates a new write-only instance of UQ112x112, bound to a specific deployed contract. +func NewUQ112x112Transactor(address common.Address, transactor bind.ContractTransactor) (*UQ112x112Transactor, error) { + contract, err := bindUQ112x112(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UQ112x112Transactor{contract: contract}, nil +} + +// NewUQ112x112Filterer creates a new log filterer instance of UQ112x112, bound to a specific deployed contract. +func NewUQ112x112Filterer(address common.Address, filterer bind.ContractFilterer) (*UQ112x112Filterer, error) { + contract, err := bindUQ112x112(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UQ112x112Filterer{contract: contract}, nil +} + +// bindUQ112x112 binds a generic wrapper to an already deployed contract. +func bindUQ112x112(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UQ112x112MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UQ112x112 *UQ112x112Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UQ112x112.Contract.UQ112x112Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UQ112x112 *UQ112x112Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UQ112x112.Contract.UQ112x112Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UQ112x112 *UQ112x112Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UQ112x112.Contract.UQ112x112Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UQ112x112 *UQ112x112CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UQ112x112.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UQ112x112 *UQ112x112TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UQ112x112.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UQ112x112 *UQ112x112TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UQ112x112.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go b/v1/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go new file mode 100644 index 00000000..f8b3aaed --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/uniswapv2erc20.sol/uniswapv2erc20.go @@ -0,0 +1,874 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapv2erc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapV2ERC20MetaData contains all meta data concerning the UniswapV2ERC20 contract. +var UniswapV2ERC20MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506040514690806052610b898239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550610a9b806100ee6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea265627a7a72315820fbe850bc397a587736b017d75ce8021dd8dafcfd54ab43add14fd21753cc6c3564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", +} + +// UniswapV2ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapV2ERC20MetaData.ABI instead. +var UniswapV2ERC20ABI = UniswapV2ERC20MetaData.ABI + +// UniswapV2ERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapV2ERC20MetaData.Bin instead. +var UniswapV2ERC20Bin = UniswapV2ERC20MetaData.Bin + +// DeployUniswapV2ERC20 deploys a new Ethereum contract, binding an instance of UniswapV2ERC20 to it. +func DeployUniswapV2ERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2ERC20, error) { + parsed, err := UniswapV2ERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2ERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapV2ERC20{UniswapV2ERC20Caller: UniswapV2ERC20Caller{contract: contract}, UniswapV2ERC20Transactor: UniswapV2ERC20Transactor{contract: contract}, UniswapV2ERC20Filterer: UniswapV2ERC20Filterer{contract: contract}}, nil +} + +// UniswapV2ERC20 is an auto generated Go binding around an Ethereum contract. +type UniswapV2ERC20 struct { + UniswapV2ERC20Caller // Read-only binding to the contract + UniswapV2ERC20Transactor // Write-only binding to the contract + UniswapV2ERC20Filterer // Log filterer for contract events +} + +// UniswapV2ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapV2ERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapV2ERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapV2ERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2ERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapV2ERC20Session struct { + Contract *UniswapV2ERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapV2ERC20CallerSession struct { + Contract *UniswapV2ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapV2ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapV2ERC20TransactorSession struct { + Contract *UniswapV2ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapV2ERC20Raw struct { + Contract *UniswapV2ERC20 // Generic contract binding to access the raw methods on +} + +// UniswapV2ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapV2ERC20CallerRaw struct { + Contract *UniswapV2ERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// UniswapV2ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapV2ERC20TransactorRaw struct { + Contract *UniswapV2ERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapV2ERC20 creates a new instance of UniswapV2ERC20, bound to a specific deployed contract. +func NewUniswapV2ERC20(address common.Address, backend bind.ContractBackend) (*UniswapV2ERC20, error) { + contract, err := bindUniswapV2ERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapV2ERC20{UniswapV2ERC20Caller: UniswapV2ERC20Caller{contract: contract}, UniswapV2ERC20Transactor: UniswapV2ERC20Transactor{contract: contract}, UniswapV2ERC20Filterer: UniswapV2ERC20Filterer{contract: contract}}, nil +} + +// NewUniswapV2ERC20Caller creates a new read-only instance of UniswapV2ERC20, bound to a specific deployed contract. +func NewUniswapV2ERC20Caller(address common.Address, caller bind.ContractCaller) (*UniswapV2ERC20Caller, error) { + contract, err := bindUniswapV2ERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapV2ERC20Caller{contract: contract}, nil +} + +// NewUniswapV2ERC20Transactor creates a new write-only instance of UniswapV2ERC20, bound to a specific deployed contract. +func NewUniswapV2ERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2ERC20Transactor, error) { + contract, err := bindUniswapV2ERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapV2ERC20Transactor{contract: contract}, nil +} + +// NewUniswapV2ERC20Filterer creates a new log filterer instance of UniswapV2ERC20, bound to a specific deployed contract. +func NewUniswapV2ERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2ERC20Filterer, error) { + contract, err := bindUniswapV2ERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapV2ERC20Filterer{contract: contract}, nil +} + +// bindUniswapV2ERC20 binds a generic wrapper to an already deployed contract. +func bindUniswapV2ERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapV2ERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2ERC20.Contract.UniswapV2ERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.UniswapV2ERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2ERC20 *UniswapV2ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.UniswapV2ERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2ERC20 *UniswapV2ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2ERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) DOMAINSEPARATOR() ([32]byte, error) { + return _UniswapV2ERC20.Contract.DOMAINSEPARATOR(&_UniswapV2ERC20.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _UniswapV2ERC20.Contract.DOMAINSEPARATOR(&_UniswapV2ERC20.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "PERMIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) PERMITTYPEHASH() ([32]byte, error) { + return _UniswapV2ERC20.Contract.PERMITTYPEHASH(&_UniswapV2ERC20.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) PERMITTYPEHASH() ([32]byte, error) { + return _UniswapV2ERC20.Contract.PERMITTYPEHASH(&_UniswapV2ERC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "allowance", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.Allowance(&_UniswapV2ERC20.CallOpts, arg0, arg1) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.Allowance(&_UniswapV2ERC20.CallOpts, arg0, arg1) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "balanceOf", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.BalanceOf(&_UniswapV2ERC20.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.BalanceOf(&_UniswapV2ERC20.CallOpts, arg0) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Decimals() (uint8, error) { + return _UniswapV2ERC20.Contract.Decimals(&_UniswapV2ERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Decimals() (uint8, error) { + return _UniswapV2ERC20.Contract.Decimals(&_UniswapV2ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Name() (string, error) { + return _UniswapV2ERC20.Contract.Name(&_UniswapV2ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Name() (string, error) { + return _UniswapV2ERC20.Contract.Name(&_UniswapV2ERC20.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "nonces", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Nonces(arg0 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.Nonces(&_UniswapV2ERC20.CallOpts, arg0) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Nonces(arg0 common.Address) (*big.Int, error) { + return _UniswapV2ERC20.Contract.Nonces(&_UniswapV2ERC20.CallOpts, arg0) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Symbol() (string, error) { + return _UniswapV2ERC20.Contract.Symbol(&_UniswapV2ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) Symbol() (string, error) { + return _UniswapV2ERC20.Contract.Symbol(&_UniswapV2ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2ERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) TotalSupply() (*big.Int, error) { + return _UniswapV2ERC20.Contract.TotalSupply(&_UniswapV2ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2ERC20 *UniswapV2ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _UniswapV2ERC20.Contract.TotalSupply(&_UniswapV2ERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Approve(&_UniswapV2ERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Approve(&_UniswapV2ERC20.TransactOpts, spender, value) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2ERC20.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Permit(&_UniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Permit(&_UniswapV2ERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Transfer(&_UniswapV2ERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.Transfer(&_UniswapV2ERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.TransferFrom(&_UniswapV2ERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2ERC20 *UniswapV2ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2ERC20.Contract.TransferFrom(&_UniswapV2ERC20.TransactOpts, from, to, value) +} + +// UniswapV2ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the UniswapV2ERC20 contract. +type UniswapV2ERC20ApprovalIterator struct { + Event *UniswapV2ERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2ERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2ERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2ERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2ERC20Approval represents a Approval event raised by the UniswapV2ERC20 contract. +type UniswapV2ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*UniswapV2ERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _UniswapV2ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &UniswapV2ERC20ApprovalIterator{contract: _UniswapV2ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *UniswapV2ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _UniswapV2ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2ERC20Approval) + if err := _UniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) ParseApproval(log types.Log) (*UniswapV2ERC20Approval, error) { + event := new(UniswapV2ERC20Approval) + if err := _UniswapV2ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the UniswapV2ERC20 contract. +type UniswapV2ERC20TransferIterator struct { + Event *UniswapV2ERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2ERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2ERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2ERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2ERC20Transfer represents a Transfer event raised by the UniswapV2ERC20 contract. +type UniswapV2ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*UniswapV2ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &UniswapV2ERC20TransferIterator{contract: _UniswapV2ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *UniswapV2ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2ERC20Transfer) + if err := _UniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2ERC20 *UniswapV2ERC20Filterer) ParseTransfer(log types.Log) (*UniswapV2ERC20Transfer, error) { + event := new(UniswapV2ERC20Transfer) + if err := _UniswapV2ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go b/v1/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go new file mode 100644 index 00000000..90df63d4 --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/uniswapv2factory.sol/uniswapv2factory.go @@ -0,0 +1,576 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapv2factory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapV2FactoryMetaData contains all meta data concerning the UniswapV2Factory contract. +var UniswapV2FactoryMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820841b93a7dff584da07aecb7efe1de139d1b94052d48051f920879ff29f44c0f264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a7231582077bc274fa98d252ff2309addaae7f2e624d726c5087635460bbf380e8727721864736f6c63430005100032", +} + +// UniswapV2FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapV2FactoryMetaData.ABI instead. +var UniswapV2FactoryABI = UniswapV2FactoryMetaData.ABI + +// UniswapV2FactoryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapV2FactoryMetaData.Bin instead. +var UniswapV2FactoryBin = UniswapV2FactoryMetaData.Bin + +// DeployUniswapV2Factory deploys a new Ethereum contract, binding an instance of UniswapV2Factory to it. +func DeployUniswapV2Factory(auth *bind.TransactOpts, backend bind.ContractBackend, _feeToSetter common.Address) (common.Address, *types.Transaction, *UniswapV2Factory, error) { + parsed, err := UniswapV2FactoryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2FactoryBin), backend, _feeToSetter) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapV2Factory{UniswapV2FactoryCaller: UniswapV2FactoryCaller{contract: contract}, UniswapV2FactoryTransactor: UniswapV2FactoryTransactor{contract: contract}, UniswapV2FactoryFilterer: UniswapV2FactoryFilterer{contract: contract}}, nil +} + +// UniswapV2Factory is an auto generated Go binding around an Ethereum contract. +type UniswapV2Factory struct { + UniswapV2FactoryCaller // Read-only binding to the contract + UniswapV2FactoryTransactor // Write-only binding to the contract + UniswapV2FactoryFilterer // Log filterer for contract events +} + +// UniswapV2FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapV2FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapV2FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapV2FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapV2FactorySession struct { + Contract *UniswapV2Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapV2FactoryCallerSession struct { + Contract *UniswapV2FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapV2FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapV2FactoryTransactorSession struct { + Contract *UniswapV2FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapV2FactoryRaw struct { + Contract *UniswapV2Factory // Generic contract binding to access the raw methods on +} + +// UniswapV2FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapV2FactoryCallerRaw struct { + Contract *UniswapV2FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// UniswapV2FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapV2FactoryTransactorRaw struct { + Contract *UniswapV2FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapV2Factory creates a new instance of UniswapV2Factory, bound to a specific deployed contract. +func NewUniswapV2Factory(address common.Address, backend bind.ContractBackend) (*UniswapV2Factory, error) { + contract, err := bindUniswapV2Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapV2Factory{UniswapV2FactoryCaller: UniswapV2FactoryCaller{contract: contract}, UniswapV2FactoryTransactor: UniswapV2FactoryTransactor{contract: contract}, UniswapV2FactoryFilterer: UniswapV2FactoryFilterer{contract: contract}}, nil +} + +// NewUniswapV2FactoryCaller creates a new read-only instance of UniswapV2Factory, bound to a specific deployed contract. +func NewUniswapV2FactoryCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2FactoryCaller, error) { + contract, err := bindUniswapV2Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapV2FactoryCaller{contract: contract}, nil +} + +// NewUniswapV2FactoryTransactor creates a new write-only instance of UniswapV2Factory, bound to a specific deployed contract. +func NewUniswapV2FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2FactoryTransactor, error) { + contract, err := bindUniswapV2Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapV2FactoryTransactor{contract: contract}, nil +} + +// NewUniswapV2FactoryFilterer creates a new log filterer instance of UniswapV2Factory, bound to a specific deployed contract. +func NewUniswapV2FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2FactoryFilterer, error) { + contract, err := bindUniswapV2Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapV2FactoryFilterer{contract: contract}, nil +} + +// bindUniswapV2Factory binds a generic wrapper to an already deployed contract. +func bindUniswapV2Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapV2FactoryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Factory *UniswapV2FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Factory.Contract.UniswapV2FactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Factory *UniswapV2FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.UniswapV2FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Factory *UniswapV2FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.UniswapV2FactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Factory *UniswapV2FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Factory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Factory *UniswapV2FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Factory *UniswapV2FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.contract.Transact(opts, method, params...) +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCaller) AllPairs(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _UniswapV2Factory.contract.Call(opts, &out, "allPairs", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactorySession) AllPairs(arg0 *big.Int) (common.Address, error) { + return _UniswapV2Factory.Contract.AllPairs(&_UniswapV2Factory.CallOpts, arg0) +} + +// AllPairs is a free data retrieval call binding the contract method 0x1e3dd18b. +// +// Solidity: function allPairs(uint256 ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCallerSession) AllPairs(arg0 *big.Int) (common.Address, error) { + return _UniswapV2Factory.Contract.AllPairs(&_UniswapV2Factory.CallOpts, arg0) +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_UniswapV2Factory *UniswapV2FactoryCaller) AllPairsLength(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Factory.contract.Call(opts, &out, "allPairsLength") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_UniswapV2Factory *UniswapV2FactorySession) AllPairsLength() (*big.Int, error) { + return _UniswapV2Factory.Contract.AllPairsLength(&_UniswapV2Factory.CallOpts) +} + +// AllPairsLength is a free data retrieval call binding the contract method 0x574f2ba3. +// +// Solidity: function allPairsLength() view returns(uint256) +func (_UniswapV2Factory *UniswapV2FactoryCallerSession) AllPairsLength() (*big.Int, error) { + return _UniswapV2Factory.Contract.AllPairsLength(&_UniswapV2Factory.CallOpts) +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCaller) FeeTo(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Factory.contract.Call(opts, &out, "feeTo") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_UniswapV2Factory *UniswapV2FactorySession) FeeTo() (common.Address, error) { + return _UniswapV2Factory.Contract.FeeTo(&_UniswapV2Factory.CallOpts) +} + +// FeeTo is a free data retrieval call binding the contract method 0x017e7e58. +// +// Solidity: function feeTo() view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCallerSession) FeeTo() (common.Address, error) { + return _UniswapV2Factory.Contract.FeeTo(&_UniswapV2Factory.CallOpts) +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCaller) FeeToSetter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Factory.contract.Call(opts, &out, "feeToSetter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_UniswapV2Factory *UniswapV2FactorySession) FeeToSetter() (common.Address, error) { + return _UniswapV2Factory.Contract.FeeToSetter(&_UniswapV2Factory.CallOpts) +} + +// FeeToSetter is a free data retrieval call binding the contract method 0x094b7415. +// +// Solidity: function feeToSetter() view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCallerSession) FeeToSetter() (common.Address, error) { + return _UniswapV2Factory.Contract.FeeToSetter(&_UniswapV2Factory.CallOpts) +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address , address ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCaller) GetPair(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (common.Address, error) { + var out []interface{} + err := _UniswapV2Factory.contract.Call(opts, &out, "getPair", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address , address ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactorySession) GetPair(arg0 common.Address, arg1 common.Address) (common.Address, error) { + return _UniswapV2Factory.Contract.GetPair(&_UniswapV2Factory.CallOpts, arg0, arg1) +} + +// GetPair is a free data retrieval call binding the contract method 0xe6a43905. +// +// Solidity: function getPair(address , address ) view returns(address) +func (_UniswapV2Factory *UniswapV2FactoryCallerSession) GetPair(arg0 common.Address, arg1 common.Address) (common.Address, error) { + return _UniswapV2Factory.Contract.GetPair(&_UniswapV2Factory.CallOpts, arg0, arg1) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_UniswapV2Factory *UniswapV2FactoryTransactor) CreatePair(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.contract.Transact(opts, "createPair", tokenA, tokenB) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_UniswapV2Factory *UniswapV2FactorySession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.CreatePair(&_UniswapV2Factory.TransactOpts, tokenA, tokenB) +} + +// CreatePair is a paid mutator transaction binding the contract method 0xc9c65396. +// +// Solidity: function createPair(address tokenA, address tokenB) returns(address pair) +func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) CreatePair(tokenA common.Address, tokenB common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.CreatePair(&_UniswapV2Factory.TransactOpts, tokenA, tokenB) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address _feeTo) returns() +func (_UniswapV2Factory *UniswapV2FactoryTransactor) SetFeeTo(opts *bind.TransactOpts, _feeTo common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.contract.Transact(opts, "setFeeTo", _feeTo) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address _feeTo) returns() +func (_UniswapV2Factory *UniswapV2FactorySession) SetFeeTo(_feeTo common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.SetFeeTo(&_UniswapV2Factory.TransactOpts, _feeTo) +} + +// SetFeeTo is a paid mutator transaction binding the contract method 0xf46901ed. +// +// Solidity: function setFeeTo(address _feeTo) returns() +func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) SetFeeTo(_feeTo common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.SetFeeTo(&_UniswapV2Factory.TransactOpts, _feeTo) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address _feeToSetter) returns() +func (_UniswapV2Factory *UniswapV2FactoryTransactor) SetFeeToSetter(opts *bind.TransactOpts, _feeToSetter common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.contract.Transact(opts, "setFeeToSetter", _feeToSetter) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address _feeToSetter) returns() +func (_UniswapV2Factory *UniswapV2FactorySession) SetFeeToSetter(_feeToSetter common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.SetFeeToSetter(&_UniswapV2Factory.TransactOpts, _feeToSetter) +} + +// SetFeeToSetter is a paid mutator transaction binding the contract method 0xa2e74af6. +// +// Solidity: function setFeeToSetter(address _feeToSetter) returns() +func (_UniswapV2Factory *UniswapV2FactoryTransactorSession) SetFeeToSetter(_feeToSetter common.Address) (*types.Transaction, error) { + return _UniswapV2Factory.Contract.SetFeeToSetter(&_UniswapV2Factory.TransactOpts, _feeToSetter) +} + +// UniswapV2FactoryPairCreatedIterator is returned from FilterPairCreated and is used to iterate over the raw logs and unpacked data for PairCreated events raised by the UniswapV2Factory contract. +type UniswapV2FactoryPairCreatedIterator struct { + Event *UniswapV2FactoryPairCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2FactoryPairCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2FactoryPairCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2FactoryPairCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2FactoryPairCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2FactoryPairCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2FactoryPairCreated represents a PairCreated event raised by the UniswapV2Factory contract. +type UniswapV2FactoryPairCreated struct { + Token0 common.Address + Token1 common.Address + Pair common.Address + Arg3 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPairCreated is a free log retrieval operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_UniswapV2Factory *UniswapV2FactoryFilterer) FilterPairCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address) (*UniswapV2FactoryPairCreatedIterator, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + + logs, sub, err := _UniswapV2Factory.contract.FilterLogs(opts, "PairCreated", token0Rule, token1Rule) + if err != nil { + return nil, err + } + return &UniswapV2FactoryPairCreatedIterator{contract: _UniswapV2Factory.contract, event: "PairCreated", logs: logs, sub: sub}, nil +} + +// WatchPairCreated is a free log subscription operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_UniswapV2Factory *UniswapV2FactoryFilterer) WatchPairCreated(opts *bind.WatchOpts, sink chan<- *UniswapV2FactoryPairCreated, token0 []common.Address, token1 []common.Address) (event.Subscription, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + + logs, sub, err := _UniswapV2Factory.contract.WatchLogs(opts, "PairCreated", token0Rule, token1Rule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2FactoryPairCreated) + if err := _UniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePairCreated is a log parse operation binding the contract event 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9. +// +// Solidity: event PairCreated(address indexed token0, address indexed token1, address pair, uint256 arg3) +func (_UniswapV2Factory *UniswapV2FactoryFilterer) ParsePairCreated(log types.Log) (*UniswapV2FactoryPairCreated, error) { + event := new(UniswapV2FactoryPairCreated) + if err := _UniswapV2Factory.contract.UnpackLog(event, "PairCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go b/v1/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go new file mode 100644 index 00000000..e96f2391 --- /dev/null +++ b/v1/pkg/uniswap/v2-core/contracts/uniswapv2pair.sol/uniswapv2pair.go @@ -0,0 +1,1864 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapv2pair + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapV2PairMetaData contains all meta data concerning the UniswapV2Pair contract. +var UniswapV2PairMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820841b93a7dff584da07aecb7efe1de139d1b94052d48051f920879ff29f44c0f264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", +} + +// UniswapV2PairABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapV2PairMetaData.ABI instead. +var UniswapV2PairABI = UniswapV2PairMetaData.ABI + +// UniswapV2PairBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapV2PairMetaData.Bin instead. +var UniswapV2PairBin = UniswapV2PairMetaData.Bin + +// DeployUniswapV2Pair deploys a new Ethereum contract, binding an instance of UniswapV2Pair to it. +func DeployUniswapV2Pair(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2Pair, error) { + parsed, err := UniswapV2PairMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2PairBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapV2Pair{UniswapV2PairCaller: UniswapV2PairCaller{contract: contract}, UniswapV2PairTransactor: UniswapV2PairTransactor{contract: contract}, UniswapV2PairFilterer: UniswapV2PairFilterer{contract: contract}}, nil +} + +// UniswapV2Pair is an auto generated Go binding around an Ethereum contract. +type UniswapV2Pair struct { + UniswapV2PairCaller // Read-only binding to the contract + UniswapV2PairTransactor // Write-only binding to the contract + UniswapV2PairFilterer // Log filterer for contract events +} + +// UniswapV2PairCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapV2PairCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2PairTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapV2PairTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2PairFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapV2PairFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2PairSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapV2PairSession struct { + Contract *UniswapV2Pair // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2PairCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapV2PairCallerSession struct { + Contract *UniswapV2PairCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapV2PairTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapV2PairTransactorSession struct { + Contract *UniswapV2PairTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2PairRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapV2PairRaw struct { + Contract *UniswapV2Pair // Generic contract binding to access the raw methods on +} + +// UniswapV2PairCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapV2PairCallerRaw struct { + Contract *UniswapV2PairCaller // Generic read-only contract binding to access the raw methods on +} + +// UniswapV2PairTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapV2PairTransactorRaw struct { + Contract *UniswapV2PairTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapV2Pair creates a new instance of UniswapV2Pair, bound to a specific deployed contract. +func NewUniswapV2Pair(address common.Address, backend bind.ContractBackend) (*UniswapV2Pair, error) { + contract, err := bindUniswapV2Pair(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapV2Pair{UniswapV2PairCaller: UniswapV2PairCaller{contract: contract}, UniswapV2PairTransactor: UniswapV2PairTransactor{contract: contract}, UniswapV2PairFilterer: UniswapV2PairFilterer{contract: contract}}, nil +} + +// NewUniswapV2PairCaller creates a new read-only instance of UniswapV2Pair, bound to a specific deployed contract. +func NewUniswapV2PairCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2PairCaller, error) { + contract, err := bindUniswapV2Pair(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapV2PairCaller{contract: contract}, nil +} + +// NewUniswapV2PairTransactor creates a new write-only instance of UniswapV2Pair, bound to a specific deployed contract. +func NewUniswapV2PairTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2PairTransactor, error) { + contract, err := bindUniswapV2Pair(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapV2PairTransactor{contract: contract}, nil +} + +// NewUniswapV2PairFilterer creates a new log filterer instance of UniswapV2Pair, bound to a specific deployed contract. +func NewUniswapV2PairFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2PairFilterer, error) { + contract, err := bindUniswapV2Pair(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapV2PairFilterer{contract: contract}, nil +} + +// bindUniswapV2Pair binds a generic wrapper to an already deployed contract. +func bindUniswapV2Pair(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapV2PairMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Pair *UniswapV2PairRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Pair.Contract.UniswapV2PairCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Pair *UniswapV2PairRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.UniswapV2PairTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Pair *UniswapV2PairRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.UniswapV2PairTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Pair *UniswapV2PairCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Pair.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Pair *UniswapV2PairTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Pair *UniswapV2PairTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairSession) DOMAINSEPARATOR() ([32]byte, error) { + return _UniswapV2Pair.Contract.DOMAINSEPARATOR(&_UniswapV2Pair.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _UniswapV2Pair.Contract.DOMAINSEPARATOR(&_UniswapV2Pair.CallOpts) +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) MINIMUMLIQUIDITY(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "MINIMUM_LIQUIDITY") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) MINIMUMLIQUIDITY() (*big.Int, error) { + return _UniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_UniswapV2Pair.CallOpts) +} + +// MINIMUMLIQUIDITY is a free data retrieval call binding the contract method 0xba9a7a56. +// +// Solidity: function MINIMUM_LIQUIDITY() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) MINIMUMLIQUIDITY() (*big.Int, error) { + return _UniswapV2Pair.Contract.MINIMUMLIQUIDITY(&_UniswapV2Pair.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairCaller) PERMITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "PERMIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairSession) PERMITTYPEHASH() ([32]byte, error) { + return _UniswapV2Pair.Contract.PERMITTYPEHASH(&_UniswapV2Pair.CallOpts) +} + +// PERMITTYPEHASH is a free data retrieval call binding the contract method 0x30adf81f. +// +// Solidity: function PERMIT_TYPEHASH() view returns(bytes32) +func (_UniswapV2Pair *UniswapV2PairCallerSession) PERMITTYPEHASH() ([32]byte, error) { + return _UniswapV2Pair.Contract.PERMITTYPEHASH(&_UniswapV2Pair.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "allowance", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.Allowance(&_UniswapV2Pair.CallOpts, arg0, arg1) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.Allowance(&_UniswapV2Pair.CallOpts, arg0, arg1) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "balanceOf", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.BalanceOf(&_UniswapV2Pair.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.BalanceOf(&_UniswapV2Pair.CallOpts, arg0) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2Pair *UniswapV2PairCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2Pair *UniswapV2PairSession) Decimals() (uint8, error) { + return _UniswapV2Pair.Contract.Decimals(&_UniswapV2Pair.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Decimals() (uint8, error) { + return _UniswapV2Pair.Contract.Decimals(&_UniswapV2Pair.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Pair *UniswapV2PairSession) Factory() (common.Address, error) { + return _UniswapV2Pair.Contract.Factory(&_UniswapV2Pair.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Factory() (common.Address, error) { + return _UniswapV2Pair.Contract.Factory(&_UniswapV2Pair.CallOpts) +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) +func (_UniswapV2Pair *UniswapV2PairCaller) GetReserves(opts *bind.CallOpts) (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "getReserves") + + outstruct := new(struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Reserve0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Reserve1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.BlockTimestampLast = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) +func (_UniswapV2Pair *UniswapV2PairSession) GetReserves() (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + return _UniswapV2Pair.Contract.GetReserves(&_UniswapV2Pair.CallOpts) +} + +// GetReserves is a free data retrieval call binding the contract method 0x0902f1ac. +// +// Solidity: function getReserves() view returns(uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) +func (_UniswapV2Pair *UniswapV2PairCallerSession) GetReserves() (struct { + Reserve0 *big.Int + Reserve1 *big.Int + BlockTimestampLast uint32 +}, error) { + return _UniswapV2Pair.Contract.GetReserves(&_UniswapV2Pair.CallOpts) +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) KLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "kLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) KLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.KLast(&_UniswapV2Pair.CallOpts) +} + +// KLast is a free data retrieval call binding the contract method 0x7464fc3d. +// +// Solidity: function kLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) KLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.KLast(&_UniswapV2Pair.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2Pair *UniswapV2PairCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2Pair *UniswapV2PairSession) Name() (string, error) { + return _UniswapV2Pair.Contract.Name(&_UniswapV2Pair.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Name() (string, error) { + return _UniswapV2Pair.Contract.Name(&_UniswapV2Pair.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "nonces", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) Nonces(arg0 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.Nonces(&_UniswapV2Pair.CallOpts, arg0) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Nonces(arg0 common.Address) (*big.Int, error) { + return _UniswapV2Pair.Contract.Nonces(&_UniswapV2Pair.CallOpts, arg0) +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) Price0CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "price0CumulativeLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) Price0CumulativeLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.Price0CumulativeLast(&_UniswapV2Pair.CallOpts) +} + +// Price0CumulativeLast is a free data retrieval call binding the contract method 0x5909c0d5. +// +// Solidity: function price0CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Price0CumulativeLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.Price0CumulativeLast(&_UniswapV2Pair.CallOpts) +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) Price1CumulativeLast(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "price1CumulativeLast") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) Price1CumulativeLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.Price1CumulativeLast(&_UniswapV2Pair.CallOpts) +} + +// Price1CumulativeLast is a free data retrieval call binding the contract method 0x5a3d5493. +// +// Solidity: function price1CumulativeLast() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Price1CumulativeLast() (*big.Int, error) { + return _UniswapV2Pair.Contract.Price1CumulativeLast(&_UniswapV2Pair.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2Pair *UniswapV2PairCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2Pair *UniswapV2PairSession) Symbol() (string, error) { + return _UniswapV2Pair.Contract.Symbol(&_UniswapV2Pair.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Symbol() (string, error) { + return _UniswapV2Pair.Contract.Symbol(&_UniswapV2Pair.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_UniswapV2Pair *UniswapV2PairSession) Token0() (common.Address, error) { + return _UniswapV2Pair.Contract.Token0(&_UniswapV2Pair.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Token0() (common.Address, error) { + return _UniswapV2Pair.Contract.Token0(&_UniswapV2Pair.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_UniswapV2Pair *UniswapV2PairSession) Token1() (common.Address, error) { + return _UniswapV2Pair.Contract.Token1(&_UniswapV2Pair.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_UniswapV2Pair *UniswapV2PairCallerSession) Token1() (common.Address, error) { + return _UniswapV2Pair.Contract.Token1(&_UniswapV2Pair.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Pair.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairSession) TotalSupply() (*big.Int, error) { + return _UniswapV2Pair.Contract.TotalSupply(&_UniswapV2Pair.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_UniswapV2Pair *UniswapV2PairCallerSession) TotalSupply() (*big.Int, error) { + return _UniswapV2Pair.Contract.TotalSupply(&_UniswapV2Pair.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Approve(&_UniswapV2Pair.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Approve(&_UniswapV2Pair.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairTransactor) Burn(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "burn", to) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairSession) Burn(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Burn(&_UniswapV2Pair.TransactOpts, to) +} + +// Burn is a paid mutator transaction binding the contract method 0x89afcb44. +// +// Solidity: function burn(address to) returns(uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Burn(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Burn(&_UniswapV2Pair.TransactOpts, to) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _token0, address _token1) returns() +func (_UniswapV2Pair *UniswapV2PairTransactor) Initialize(opts *bind.TransactOpts, _token0 common.Address, _token1 common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "initialize", _token0, _token1) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _token0, address _token1) returns() +func (_UniswapV2Pair *UniswapV2PairSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Initialize(&_UniswapV2Pair.TransactOpts, _token0, _token1) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _token0, address _token1) returns() +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Initialize(_token0 common.Address, _token1 common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Initialize(&_UniswapV2Pair.TransactOpts, _token0, _token1) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_UniswapV2Pair *UniswapV2PairTransactor) Mint(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "mint", to) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_UniswapV2Pair *UniswapV2PairSession) Mint(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Mint(&_UniswapV2Pair.TransactOpts, to) +} + +// Mint is a paid mutator transaction binding the contract method 0x6a627842. +// +// Solidity: function mint(address to) returns(uint256 liquidity) +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Mint(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Mint(&_UniswapV2Pair.TransactOpts, to) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2Pair *UniswapV2PairTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2Pair *UniswapV2PairSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Permit(&_UniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Permit(&_UniswapV2Pair.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_UniswapV2Pair *UniswapV2PairTransactor) Skim(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "skim", to) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_UniswapV2Pair *UniswapV2PairSession) Skim(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Skim(&_UniswapV2Pair.TransactOpts, to) +} + +// Skim is a paid mutator transaction binding the contract method 0xbc25cf77. +// +// Solidity: function skim(address to) returns() +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Skim(to common.Address) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Skim(&_UniswapV2Pair.TransactOpts, to) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_UniswapV2Pair *UniswapV2PairTransactor) Swap(opts *bind.TransactOpts, amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "swap", amount0Out, amount1Out, to, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_UniswapV2Pair *UniswapV2PairSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Swap(&_UniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x022c0d9f. +// +// Solidity: function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data) returns() +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Swap(amount0Out *big.Int, amount1Out *big.Int, to common.Address, data []byte) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Swap(&_UniswapV2Pair.TransactOpts, amount0Out, amount1Out, to, data) +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_UniswapV2Pair *UniswapV2PairTransactor) Sync(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "sync") +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_UniswapV2Pair *UniswapV2PairSession) Sync() (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Sync(&_UniswapV2Pair.TransactOpts) +} + +// Sync is a paid mutator transaction binding the contract method 0xfff6cae9. +// +// Solidity: function sync() returns() +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Sync() (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Sync(&_UniswapV2Pair.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Transfer(&_UniswapV2Pair.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.Transfer(&_UniswapV2Pair.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.TransferFrom(&_UniswapV2Pair.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_UniswapV2Pair *UniswapV2PairTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _UniswapV2Pair.Contract.TransferFrom(&_UniswapV2Pair.TransactOpts, from, to, value) +} + +// UniswapV2PairApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the UniswapV2Pair contract. +type UniswapV2PairApprovalIterator struct { + Event *UniswapV2PairApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairApproval represents a Approval event raised by the UniswapV2Pair contract. +type UniswapV2PairApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*UniswapV2PairApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &UniswapV2PairApprovalIterator{contract: _UniswapV2Pair.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *UniswapV2PairApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairApproval) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseApproval(log types.Log) (*UniswapV2PairApproval, error) { + event := new(UniswapV2PairApproval) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2PairBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the UniswapV2Pair contract. +type UniswapV2PairBurnIterator struct { + Event *UniswapV2PairBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairBurn represents a Burn event raised by the UniswapV2Pair contract. +type UniswapV2PairBurn struct { + Sender common.Address + Amount0 *big.Int + Amount1 *big.Int + To common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterBurn(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*UniswapV2PairBurnIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Burn", senderRule, toRule) + if err != nil { + return nil, err + } + return &UniswapV2PairBurnIterator{contract: _UniswapV2Pair.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *UniswapV2PairBurn, sender []common.Address, to []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Burn", senderRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairBurn) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496. +// +// Solidity: event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseBurn(log types.Log) (*UniswapV2PairBurn, error) { + event := new(UniswapV2PairBurn) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2PairMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the UniswapV2Pair contract. +type UniswapV2PairMintIterator struct { + Event *UniswapV2PairMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairMint represents a Mint event raised by the UniswapV2Pair contract. +type UniswapV2PairMint struct { + Sender common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterMint(opts *bind.FilterOpts, sender []common.Address) (*UniswapV2PairMintIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Mint", senderRule) + if err != nil { + return nil, err + } + return &UniswapV2PairMintIterator{contract: _UniswapV2Pair.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *UniswapV2PairMint, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Mint", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairMint) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f. +// +// Solidity: event Mint(address indexed sender, uint256 amount0, uint256 amount1) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseMint(log types.Log) (*UniswapV2PairMint, error) { + event := new(UniswapV2PairMint) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2PairSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the UniswapV2Pair contract. +type UniswapV2PairSwapIterator struct { + Event *UniswapV2PairSwap // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairSwapIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairSwap represents a Swap event raised by the UniswapV2Pair contract. +type UniswapV2PairSwap struct { + Sender common.Address + Amount0In *big.Int + Amount1In *big.Int + Amount0Out *big.Int + Amount1Out *big.Int + To common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, to []common.Address) (*UniswapV2PairSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Swap", senderRule, toRule) + if err != nil { + return nil, err + } + return &UniswapV2PairSwapIterator{contract: _UniswapV2Pair.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *UniswapV2PairSwap, sender []common.Address, to []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Swap", senderRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairSwap) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwap is a log parse operation binding the contract event 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822. +// +// Solidity: event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseSwap(log types.Log) (*UniswapV2PairSwap, error) { + event := new(UniswapV2PairSwap) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2PairSyncIterator is returned from FilterSync and is used to iterate over the raw logs and unpacked data for Sync events raised by the UniswapV2Pair contract. +type UniswapV2PairSyncIterator struct { + Event *UniswapV2PairSync // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairSyncIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairSync) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairSync) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairSyncIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairSyncIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairSync represents a Sync event raised by the UniswapV2Pair contract. +type UniswapV2PairSync struct { + Reserve0 *big.Int + Reserve1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSync is a free log retrieval operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterSync(opts *bind.FilterOpts) (*UniswapV2PairSyncIterator, error) { + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Sync") + if err != nil { + return nil, err + } + return &UniswapV2PairSyncIterator{contract: _UniswapV2Pair.contract, event: "Sync", logs: logs, sub: sub}, nil +} + +// WatchSync is a free log subscription operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchSync(opts *bind.WatchOpts, sink chan<- *UniswapV2PairSync) (event.Subscription, error) { + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Sync") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairSync) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSync is a log parse operation binding the contract event 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1. +// +// Solidity: event Sync(uint112 reserve0, uint112 reserve1) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseSync(log types.Log) (*UniswapV2PairSync, error) { + event := new(UniswapV2PairSync) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Sync", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UniswapV2PairTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the UniswapV2Pair contract. +type UniswapV2PairTransferIterator struct { + Event *UniswapV2PairTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UniswapV2PairTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UniswapV2PairTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UniswapV2PairTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UniswapV2PairTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UniswapV2PairTransfer represents a Transfer event raised by the UniswapV2Pair contract. +type UniswapV2PairTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*UniswapV2PairTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &UniswapV2PairTransferIterator{contract: _UniswapV2Pair.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *UniswapV2PairTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _UniswapV2Pair.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UniswapV2PairTransfer) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_UniswapV2Pair *UniswapV2PairFilterer) ParseTransfer(log types.Log) (*UniswapV2PairTransfer, error) { + event := new(UniswapV2PairTransfer) + if err := _UniswapV2Pair.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go new file mode 100644 index 00000000..31d0fc1f --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/ierc20.sol/ierc20.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, owner) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Session) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20CallerSession) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Session) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20CallerSession) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Session) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20CallerSession) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go new file mode 100644 index 00000000..a3572ed2 --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router01.sol/iuniswapv2router01.go @@ -0,0 +1,650 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2router01 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2Router01MetaData contains all meta data concerning the IUniswapV2Router01 contract. +var IUniswapV2Router01MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2Router01ABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2Router01MetaData.ABI instead. +var IUniswapV2Router01ABI = IUniswapV2Router01MetaData.ABI + +// IUniswapV2Router01 is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Router01 struct { + IUniswapV2Router01Caller // Read-only binding to the contract + IUniswapV2Router01Transactor // Write-only binding to the contract + IUniswapV2Router01Filterer // Log filterer for contract events +} + +// IUniswapV2Router01Caller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2Router01Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2Router01Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2Router01Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router01Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2Router01Session struct { + Contract *IUniswapV2Router01 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router01CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2Router01CallerSession struct { + Contract *IUniswapV2Router01Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2Router01TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2Router01TransactorSession struct { + Contract *IUniswapV2Router01Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router01Raw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2Router01Raw struct { + Contract *IUniswapV2Router01 // Generic contract binding to access the raw methods on +} + +// IUniswapV2Router01CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2Router01CallerRaw struct { + Contract *IUniswapV2Router01Caller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2Router01TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2Router01TransactorRaw struct { + Contract *IUniswapV2Router01Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Router01 creates a new instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router01, error) { + contract, err := bindIUniswapV2Router01(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Router01{IUniswapV2Router01Caller: IUniswapV2Router01Caller{contract: contract}, IUniswapV2Router01Transactor: IUniswapV2Router01Transactor{contract: contract}, IUniswapV2Router01Filterer: IUniswapV2Router01Filterer{contract: contract}}, nil +} + +// NewIUniswapV2Router01Caller creates a new read-only instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router01Caller, error) { + contract, err := bindIUniswapV2Router01(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Caller{contract: contract}, nil +} + +// NewIUniswapV2Router01Transactor creates a new write-only instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router01Transactor, error) { + contract, err := bindIUniswapV2Router01(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Transactor{contract: contract}, nil +} + +// NewIUniswapV2Router01Filterer creates a new log filterer instance of IUniswapV2Router01, bound to a specific deployed contract. +func NewIUniswapV2Router01Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router01Filterer, error) { + contract, err := bindIUniswapV2Router01(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2Router01Filterer{contract: contract}, nil +} + +// bindIUniswapV2Router01 binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Router01(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2Router01MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router01 *IUniswapV2Router01Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.IUniswapV2Router01Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router01 *IUniswapV2Router01CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router01.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.contract.Transact(opts, method, params...) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) WETH(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "WETH") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) WETH() (common.Address, error) { + return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) WETH() (common.Address, error) { + return _IUniswapV2Router01.Contract.WETH(&_IUniswapV2Router01.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) Factory() (common.Address, error) { + return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Factory() (common.Address, error) { + return _IUniswapV2Router01.Contract.Factory(&_IUniswapV2Router01.CallOpts) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountIn(&_IUniswapV2Router01.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountOut(&_IUniswapV2Router01.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsIn", amountOut, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsIn(&_IUniswapV2Router01.CallOpts, amountOut, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "getAmountsOut", amountIn, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router01.Contract.GetAmountsOut(&_IUniswapV2Router01.CallOpts, amountIn, path) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router01.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router01.Contract.Quote(&_IUniswapV2Router01.CallOpts, amountA, reserveA, reserveB) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.AddLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidity(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETH(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router01.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router01.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapETHForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactETHForTokens(&_IUniswapV2Router01.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForETH(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapExactTokensForTokens(&_IUniswapV2Router01.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactETH(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router01 *IUniswapV2Router01TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router01.Contract.SwapTokensForExactTokens(&_IUniswapV2Router01.TransactOpts, amountOut, amountInMax, path, to, deadline) +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go new file mode 100644 index 00000000..69969100 --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iuniswapv2router02.sol/iuniswapv2router02.go @@ -0,0 +1,755 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv2router02 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV2Router02MetaData contains all meta data concerning the IUniswapV2Router02 contract. +var IUniswapV2Router02MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV2Router02ABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV2Router02MetaData.ABI instead. +var IUniswapV2Router02ABI = IUniswapV2Router02MetaData.ABI + +// IUniswapV2Router02 is an auto generated Go binding around an Ethereum contract. +type IUniswapV2Router02 struct { + IUniswapV2Router02Caller // Read-only binding to the contract + IUniswapV2Router02Transactor // Write-only binding to the contract + IUniswapV2Router02Filterer // Log filterer for contract events +} + +// IUniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV2Router02Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV2Router02Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV2Router02Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV2Router02Session struct { + Contract *IUniswapV2Router02 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV2Router02CallerSession struct { + Contract *IUniswapV2Router02Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV2Router02TransactorSession struct { + Contract *IUniswapV2Router02Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV2Router02Raw struct { + Contract *IUniswapV2Router02 // Generic contract binding to access the raw methods on +} + +// IUniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV2Router02CallerRaw struct { + Contract *IUniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV2Router02TransactorRaw struct { + Contract *IUniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV2Router02 creates a new instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*IUniswapV2Router02, error) { + contract, err := bindIUniswapV2Router02(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV2Router02{IUniswapV2Router02Caller: IUniswapV2Router02Caller{contract: contract}, IUniswapV2Router02Transactor: IUniswapV2Router02Transactor{contract: contract}, IUniswapV2Router02Filterer: IUniswapV2Router02Filterer{contract: contract}}, nil +} + +// NewIUniswapV2Router02Caller creates a new read-only instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*IUniswapV2Router02Caller, error) { + contract, err := bindIUniswapV2Router02(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Caller{contract: contract}, nil +} + +// NewIUniswapV2Router02Transactor creates a new write-only instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV2Router02Transactor, error) { + contract, err := bindIUniswapV2Router02(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Transactor{contract: contract}, nil +} + +// NewIUniswapV2Router02Filterer creates a new log filterer instance of IUniswapV2Router02, bound to a specific deployed contract. +func NewIUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV2Router02Filterer, error) { + contract, err := bindIUniswapV2Router02(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV2Router02Filterer{contract: contract}, nil +} + +// bindIUniswapV2Router02 binds a generic wrapper to an already deployed contract. +func bindIUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV2Router02MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router02 *IUniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.IUniswapV2Router02Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV2Router02 *IUniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV2Router02.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.contract.Transact(opts, method, params...) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "WETH") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) WETH() (common.Address, error) { + return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) WETH() (common.Address, error) { + return _IUniswapV2Router02.Contract.WETH(&_IUniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) Factory() (common.Address, error) { + return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() pure returns(address) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Factory() (common.Address, error) { + return _IUniswapV2Router02.Contract.Factory(&_IUniswapV2Router02.CallOpts) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountIn(&_IUniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountOut(&_IUniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsIn(&_IUniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _IUniswapV2Router02.Contract.GetAmountsOut(&_IUniswapV2Router02.CallOpts, amountIn, path) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _IUniswapV2Router02.Contract.Quote(&_IUniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.AddLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidity(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETH(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_IUniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapETHForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETH(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_IUniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactETH(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_IUniswapV2Router02 *IUniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _IUniswapV2Router02.Contract.SwapTokensForExactTokens(&_IUniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go new file mode 100644 index 00000000..5e2c9dc5 --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/interfaces/iweth.sol/iweth.go @@ -0,0 +1,244 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iweth + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IWETHMetaData contains all meta data concerning the IWETH contract. +var IWETHMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWETHABI is the input ABI used to generate the binding from. +// Deprecated: Use IWETHMetaData.ABI instead. +var IWETHABI = IWETHMetaData.ABI + +// IWETH is an auto generated Go binding around an Ethereum contract. +type IWETH struct { + IWETHCaller // Read-only binding to the contract + IWETHTransactor // Write-only binding to the contract + IWETHFilterer // Log filterer for contract events +} + +// IWETHCaller is an auto generated read-only Go binding around an Ethereum contract. +type IWETHCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETHTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IWETHTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETHFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWETHFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETHSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWETHSession struct { + Contract *IWETH // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETHCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWETHCallerSession struct { + Contract *IWETHCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWETHTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWETHTransactorSession struct { + Contract *IWETHTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETHRaw is an auto generated low-level Go binding around an Ethereum contract. +type IWETHRaw struct { + Contract *IWETH // Generic contract binding to access the raw methods on +} + +// IWETHCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWETHCallerRaw struct { + Contract *IWETHCaller // Generic read-only contract binding to access the raw methods on +} + +// IWETHTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWETHTransactorRaw struct { + Contract *IWETHTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWETH creates a new instance of IWETH, bound to a specific deployed contract. +func NewIWETH(address common.Address, backend bind.ContractBackend) (*IWETH, error) { + contract, err := bindIWETH(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWETH{IWETHCaller: IWETHCaller{contract: contract}, IWETHTransactor: IWETHTransactor{contract: contract}, IWETHFilterer: IWETHFilterer{contract: contract}}, nil +} + +// NewIWETHCaller creates a new read-only instance of IWETH, bound to a specific deployed contract. +func NewIWETHCaller(address common.Address, caller bind.ContractCaller) (*IWETHCaller, error) { + contract, err := bindIWETH(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWETHCaller{contract: contract}, nil +} + +// NewIWETHTransactor creates a new write-only instance of IWETH, bound to a specific deployed contract. +func NewIWETHTransactor(address common.Address, transactor bind.ContractTransactor) (*IWETHTransactor, error) { + contract, err := bindIWETH(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWETHTransactor{contract: contract}, nil +} + +// NewIWETHFilterer creates a new log filterer instance of IWETH, bound to a specific deployed contract. +func NewIWETHFilterer(address common.Address, filterer bind.ContractFilterer) (*IWETHFilterer, error) { + contract, err := bindIWETH(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWETHFilterer{contract: contract}, nil +} + +// bindIWETH binds a generic wrapper to an already deployed contract. +func bindIWETH(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWETHMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH *IWETHRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH.Contract.IWETHCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH *IWETHRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH.Contract.IWETHTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH *IWETHRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH.Contract.IWETHTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH *IWETHCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH *IWETHTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH *IWETHTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH.Contract.contract.Transact(opts, method, params...) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH *IWETHTransactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH *IWETHSession) Deposit() (*types.Transaction, error) { + return _IWETH.Contract.Deposit(&_IWETH.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH *IWETHTransactorSession) Deposit() (*types.Transaction, error) { + return _IWETH.Contract.Deposit(&_IWETH.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IWETH *IWETHTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IWETH.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IWETH *IWETHSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IWETH.Contract.Transfer(&_IWETH.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IWETH *IWETHTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IWETH.Contract.Transfer(&_IWETH.TransactOpts, to, value) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 ) returns() +func (_IWETH *IWETHTransactor) Withdraw(opts *bind.TransactOpts, arg0 *big.Int) (*types.Transaction, error) { + return _IWETH.contract.Transact(opts, "withdraw", arg0) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 ) returns() +func (_IWETH *IWETHSession) Withdraw(arg0 *big.Int) (*types.Transaction, error) { + return _IWETH.Contract.Withdraw(&_IWETH.TransactOpts, arg0) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 ) returns() +func (_IWETH *IWETHTransactorSession) Withdraw(arg0 *big.Int) (*types.Transaction, error) { + return _IWETH.Contract.Withdraw(&_IWETH.TransactOpts, arg0) +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go b/v1/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go new file mode 100644 index 00000000..cb7868e2 --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/libraries/safemath.sol/safemath.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package safemath + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SafeMathMetaData contains all meta data concerning the SafeMath contract. +var SafeMathMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209280478828a71436ad42fb262d99756ed7d7277ccde8fb7ef92c2abeb2d8f36164736f6c63430006060033", +} + +// SafeMathABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeMathMetaData.ABI instead. +var SafeMathABI = SafeMathMetaData.ABI + +// SafeMathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeMathMetaData.Bin instead. +var SafeMathBin = SafeMathMetaData.Bin + +// DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it. +func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) { + parsed, err := SafeMathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil +} + +// SafeMath is an auto generated Go binding around an Ethereum contract. +type SafeMath struct { + SafeMathCaller // Read-only binding to the contract + SafeMathTransactor // Write-only binding to the contract + SafeMathFilterer // Log filterer for contract events +} + +// SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeMathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeMathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeMathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeMathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeMathSession struct { + Contract *SafeMath // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeMathCallerSession struct { + Contract *SafeMathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeMathTransactorSession struct { + Contract *SafeMathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeMathRaw struct { + Contract *SafeMath // Generic contract binding to access the raw methods on +} + +// SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeMathCallerRaw struct { + Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeMathTransactorRaw struct { + Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract. +func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) { + contract, err := bindSafeMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil +} + +// NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) { + contract, err := bindSafeMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeMathCaller{contract: contract}, nil +} + +// NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) { + contract, err := bindSafeMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeMathTransactor{contract: contract}, nil +} + +// NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract. +func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) { + contract, err := bindSafeMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeMathFilterer{contract: contract}, nil +} + +// bindSafeMath binds a generic wrapper to an already deployed contract. +func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeMathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeMath.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeMath.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeMath.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go b/v1/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go new file mode 100644 index 00000000..ea7744ae --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/libraries/uniswapv2library.sol/uniswapv2library.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapv2library + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapV2LibraryMetaData contains all meta data concerning the UniswapV2Library contract. +var UniswapV2LibraryMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208421bd92ba607f7025ef11dd3ba3c30a46c62559adc890b6863b512efbd8984464736f6c63430006060033", +} + +// UniswapV2LibraryABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapV2LibraryMetaData.ABI instead. +var UniswapV2LibraryABI = UniswapV2LibraryMetaData.ABI + +// UniswapV2LibraryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapV2LibraryMetaData.Bin instead. +var UniswapV2LibraryBin = UniswapV2LibraryMetaData.Bin + +// DeployUniswapV2Library deploys a new Ethereum contract, binding an instance of UniswapV2Library to it. +func DeployUniswapV2Library(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UniswapV2Library, error) { + parsed, err := UniswapV2LibraryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2LibraryBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapV2Library{UniswapV2LibraryCaller: UniswapV2LibraryCaller{contract: contract}, UniswapV2LibraryTransactor: UniswapV2LibraryTransactor{contract: contract}, UniswapV2LibraryFilterer: UniswapV2LibraryFilterer{contract: contract}}, nil +} + +// UniswapV2Library is an auto generated Go binding around an Ethereum contract. +type UniswapV2Library struct { + UniswapV2LibraryCaller // Read-only binding to the contract + UniswapV2LibraryTransactor // Write-only binding to the contract + UniswapV2LibraryFilterer // Log filterer for contract events +} + +// UniswapV2LibraryCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapV2LibraryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2LibraryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapV2LibraryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2LibraryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapV2LibraryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2LibrarySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapV2LibrarySession struct { + Contract *UniswapV2Library // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2LibraryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapV2LibraryCallerSession struct { + Contract *UniswapV2LibraryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapV2LibraryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapV2LibraryTransactorSession struct { + Contract *UniswapV2LibraryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2LibraryRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapV2LibraryRaw struct { + Contract *UniswapV2Library // Generic contract binding to access the raw methods on +} + +// UniswapV2LibraryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapV2LibraryCallerRaw struct { + Contract *UniswapV2LibraryCaller // Generic read-only contract binding to access the raw methods on +} + +// UniswapV2LibraryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapV2LibraryTransactorRaw struct { + Contract *UniswapV2LibraryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapV2Library creates a new instance of UniswapV2Library, bound to a specific deployed contract. +func NewUniswapV2Library(address common.Address, backend bind.ContractBackend) (*UniswapV2Library, error) { + contract, err := bindUniswapV2Library(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapV2Library{UniswapV2LibraryCaller: UniswapV2LibraryCaller{contract: contract}, UniswapV2LibraryTransactor: UniswapV2LibraryTransactor{contract: contract}, UniswapV2LibraryFilterer: UniswapV2LibraryFilterer{contract: contract}}, nil +} + +// NewUniswapV2LibraryCaller creates a new read-only instance of UniswapV2Library, bound to a specific deployed contract. +func NewUniswapV2LibraryCaller(address common.Address, caller bind.ContractCaller) (*UniswapV2LibraryCaller, error) { + contract, err := bindUniswapV2Library(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapV2LibraryCaller{contract: contract}, nil +} + +// NewUniswapV2LibraryTransactor creates a new write-only instance of UniswapV2Library, bound to a specific deployed contract. +func NewUniswapV2LibraryTransactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2LibraryTransactor, error) { + contract, err := bindUniswapV2Library(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapV2LibraryTransactor{contract: contract}, nil +} + +// NewUniswapV2LibraryFilterer creates a new log filterer instance of UniswapV2Library, bound to a specific deployed contract. +func NewUniswapV2LibraryFilterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2LibraryFilterer, error) { + contract, err := bindUniswapV2Library(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapV2LibraryFilterer{contract: contract}, nil +} + +// bindUniswapV2Library binds a generic wrapper to an already deployed contract. +func bindUniswapV2Library(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapV2LibraryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Library *UniswapV2LibraryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Library.Contract.UniswapV2LibraryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Library *UniswapV2LibraryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Library.Contract.UniswapV2LibraryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Library *UniswapV2LibraryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Library.Contract.UniswapV2LibraryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Library *UniswapV2LibraryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Library.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Library *UniswapV2LibraryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Library.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Library *UniswapV2LibraryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Library.Contract.contract.Transact(opts, method, params...) +} diff --git a/v1/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go b/v1/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go new file mode 100644 index 00000000..42fa8489 --- /dev/null +++ b/v1/pkg/uniswap/v2-periphery/contracts/uniswapv2router02.sol/uniswapv2router02.go @@ -0,0 +1,798 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uniswapv2router02 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UniswapV2Router02MetaData contains all meta data concerning the UniswapV2Router02 contract. +var UniswapV2Router02MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200573e3803806200573e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155b762000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb528061444a528061448d52806147ed52806149ce5280614f49528061502a52806150aa52506155b76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a2646970667358221220d767e6d3ae379997e75048713bb6ac2dcd987d96aa9e28fe4d4f219ea31a4f8864736f6c63430006060033", +} + +// UniswapV2Router02ABI is the input ABI used to generate the binding from. +// Deprecated: Use UniswapV2Router02MetaData.ABI instead. +var UniswapV2Router02ABI = UniswapV2Router02MetaData.ABI + +// UniswapV2Router02Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UniswapV2Router02MetaData.Bin instead. +var UniswapV2Router02Bin = UniswapV2Router02MetaData.Bin + +// DeployUniswapV2Router02 deploys a new Ethereum contract, binding an instance of UniswapV2Router02 to it. +func DeployUniswapV2Router02(auth *bind.TransactOpts, backend bind.ContractBackend, _factory common.Address, _WETH common.Address) (common.Address, *types.Transaction, *UniswapV2Router02, error) { + parsed, err := UniswapV2Router02MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UniswapV2Router02Bin), backend, _factory, _WETH) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UniswapV2Router02{UniswapV2Router02Caller: UniswapV2Router02Caller{contract: contract}, UniswapV2Router02Transactor: UniswapV2Router02Transactor{contract: contract}, UniswapV2Router02Filterer: UniswapV2Router02Filterer{contract: contract}}, nil +} + +// UniswapV2Router02 is an auto generated Go binding around an Ethereum contract. +type UniswapV2Router02 struct { + UniswapV2Router02Caller // Read-only binding to the contract + UniswapV2Router02Transactor // Write-only binding to the contract + UniswapV2Router02Filterer // Log filterer for contract events +} + +// UniswapV2Router02Caller is an auto generated read-only Go binding around an Ethereum contract. +type UniswapV2Router02Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2Router02Transactor is an auto generated write-only Go binding around an Ethereum contract. +type UniswapV2Router02Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2Router02Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniswapV2Router02Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniswapV2Router02Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniswapV2Router02Session struct { + Contract *UniswapV2Router02 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2Router02CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniswapV2Router02CallerSession struct { + Contract *UniswapV2Router02Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniswapV2Router02TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniswapV2Router02TransactorSession struct { + Contract *UniswapV2Router02Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniswapV2Router02Raw is an auto generated low-level Go binding around an Ethereum contract. +type UniswapV2Router02Raw struct { + Contract *UniswapV2Router02 // Generic contract binding to access the raw methods on +} + +// UniswapV2Router02CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniswapV2Router02CallerRaw struct { + Contract *UniswapV2Router02Caller // Generic read-only contract binding to access the raw methods on +} + +// UniswapV2Router02TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniswapV2Router02TransactorRaw struct { + Contract *UniswapV2Router02Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniswapV2Router02 creates a new instance of UniswapV2Router02, bound to a specific deployed contract. +func NewUniswapV2Router02(address common.Address, backend bind.ContractBackend) (*UniswapV2Router02, error) { + contract, err := bindUniswapV2Router02(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniswapV2Router02{UniswapV2Router02Caller: UniswapV2Router02Caller{contract: contract}, UniswapV2Router02Transactor: UniswapV2Router02Transactor{contract: contract}, UniswapV2Router02Filterer: UniswapV2Router02Filterer{contract: contract}}, nil +} + +// NewUniswapV2Router02Caller creates a new read-only instance of UniswapV2Router02, bound to a specific deployed contract. +func NewUniswapV2Router02Caller(address common.Address, caller bind.ContractCaller) (*UniswapV2Router02Caller, error) { + contract, err := bindUniswapV2Router02(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniswapV2Router02Caller{contract: contract}, nil +} + +// NewUniswapV2Router02Transactor creates a new write-only instance of UniswapV2Router02, bound to a specific deployed contract. +func NewUniswapV2Router02Transactor(address common.Address, transactor bind.ContractTransactor) (*UniswapV2Router02Transactor, error) { + contract, err := bindUniswapV2Router02(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniswapV2Router02Transactor{contract: contract}, nil +} + +// NewUniswapV2Router02Filterer creates a new log filterer instance of UniswapV2Router02, bound to a specific deployed contract. +func NewUniswapV2Router02Filterer(address common.Address, filterer bind.ContractFilterer) (*UniswapV2Router02Filterer, error) { + contract, err := bindUniswapV2Router02(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniswapV2Router02Filterer{contract: contract}, nil +} + +// bindUniswapV2Router02 binds a generic wrapper to an already deployed contract. +func bindUniswapV2Router02(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniswapV2Router02MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Router02 *UniswapV2Router02Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Router02.Contract.UniswapV2Router02Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Router02 *UniswapV2Router02Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.UniswapV2Router02Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Router02 *UniswapV2Router02Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.UniswapV2Router02Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniswapV2Router02 *UniswapV2Router02CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniswapV2Router02.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniswapV2Router02 *UniswapV2Router02TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniswapV2Router02 *UniswapV2Router02TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.contract.Transact(opts, method, params...) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02Caller) WETH(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "WETH") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02Session) WETH() (common.Address, error) { + return _UniswapV2Router02.Contract.WETH(&_UniswapV2Router02.CallOpts) +} + +// WETH is a free data retrieval call binding the contract method 0xad5c4648. +// +// Solidity: function WETH() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) WETH() (common.Address, error) { + return _UniswapV2Router02.Contract.WETH(&_UniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02Caller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02Session) Factory() (common.Address, error) { + return _UniswapV2Router02.Contract.Factory(&_UniswapV2Router02.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) Factory() (common.Address, error) { + return _UniswapV2Router02.Contract.Factory(&_UniswapV2Router02.CallOpts) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountIn(opts *bind.CallOpts, amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountIn", amountOut, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountIn(&_UniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountIn is a free data retrieval call binding the contract method 0x85f8c259. +// +// Solidity: function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountIn) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountIn(amountOut *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountIn(&_UniswapV2Router02.CallOpts, amountOut, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountOut(opts *bind.CallOpts, amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountOut", amountIn, reserveIn, reserveOut) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountOut(&_UniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountOut is a free data retrieval call binding the contract method 0x054d50d4. +// +// Solidity: function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns(uint256 amountOut) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountOut(amountIn *big.Int, reserveIn *big.Int, reserveOut *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountOut(&_UniswapV2Router02.CallOpts, amountIn, reserveIn, reserveOut) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountsIn(opts *bind.CallOpts, amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountsIn", amountOut, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountsIn(&_UniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsIn is a free data retrieval call binding the contract method 0x1f00ca74. +// +// Solidity: function getAmountsIn(uint256 amountOut, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountsIn(amountOut *big.Int, path []common.Address) ([]*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountsIn(&_UniswapV2Router02.CallOpts, amountOut, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Caller) GetAmountsOut(opts *bind.CallOpts, amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "getAmountsOut", amountIn, path) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountsOut(&_UniswapV2Router02.CallOpts, amountIn, path) +} + +// GetAmountsOut is a free data retrieval call binding the contract method 0xd06ca61f. +// +// Solidity: function getAmountsOut(uint256 amountIn, address[] path) view returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) GetAmountsOut(amountIn *big.Int, path []common.Address) ([]*big.Int, error) { + return _UniswapV2Router02.Contract.GetAmountsOut(&_UniswapV2Router02.CallOpts, amountIn, path) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Caller) Quote(opts *bind.CallOpts, amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + var out []interface{} + err := _UniswapV2Router02.contract.Call(opts, &out, "quote", amountA, reserveA, reserveB) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Session) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.Quote(&_UniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// Quote is a free data retrieval call binding the contract method 0xad615dec. +// +// Solidity: function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns(uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02CallerSession) Quote(amountA *big.Int, reserveA *big.Int, reserveB *big.Int) (*big.Int, error) { + return _UniswapV2Router02.Contract.Quote(&_UniswapV2Router02.CallOpts, amountA, reserveA, reserveB) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) AddLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "addLiquidity", tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02Session) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.AddLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidity is a paid mutator transaction binding the contract method 0xe8e33700. +// +// Solidity: function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) AddLiquidity(tokenA common.Address, tokenB common.Address, amountADesired *big.Int, amountBDesired *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.AddLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) AddLiquidityETH(opts *bind.TransactOpts, token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "addLiquidityETH", token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02Session) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.AddLiquidityETH(&_UniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// AddLiquidityETH is a paid mutator transaction binding the contract method 0xf305d719. +// +// Solidity: function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns(uint256 amountToken, uint256 amountETH, uint256 liquidity) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) AddLiquidityETH(token common.Address, amountTokenDesired *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.AddLiquidityETH(&_UniswapV2Router02.TransactOpts, token, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidity(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidity", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidity is a paid mutator transaction binding the contract method 0xbaa2abde. +// +// Solidity: function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidity(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidity(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETH(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETH", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETH(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETH is a paid mutator transaction binding the contract method 0x02751cec. +// +// Solidity: function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETH(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETH(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xaf2979eb. +// +// Solidity: function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHWithPermit(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermit", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermit is a paid mutator transaction binding the contract method 0xded9382a. +// +// Solidity: function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountToken, uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermit(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermit(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(opts *bind.TransactOpts, token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5b0d5984. +// +// Solidity: function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountETH) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(token common.Address, liquidity *big.Int, amountTokenMin *big.Int, amountETHMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityETHWithPermitSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, token, liquidity, amountTokenMin, amountETHMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) RemoveLiquidityWithPermit(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "removeLiquidityWithPermit", tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02Session) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// RemoveLiquidityWithPermit is a paid mutator transaction binding the contract method 0x2195995c. +// +// Solidity: function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns(uint256 amountA, uint256 amountB) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) RemoveLiquidityWithPermit(tokenA common.Address, tokenB common.Address, liquidity *big.Int, amountAMin *big.Int, amountBMin *big.Int, to common.Address, deadline *big.Int, approveMax bool, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.RemoveLiquidityWithPermit(&_UniswapV2Router02.TransactOpts, tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline, approveMax, v, r, s) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapETHForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapETHForExactTokens", amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapETHForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapETHForExactTokens is a paid mutator transaction binding the contract method 0xfb3bdb41. +// +// Solidity: function swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapETHForExactTokens(amountOut *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapETHForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactETHForTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactETHForTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactETHForTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokens is a paid mutator transaction binding the contract method 0x7ff36ab5. +// +// Solidity: function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactETHForTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactETHForTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactETHForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactETHForTokensSupportingFeeOnTransferTokens", amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactETHForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0xb6f9de95. +// +// Solidity: function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns() +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactETHForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForETH(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForETH", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForETH(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETH is a paid mutator transaction binding the contract method 0x18cbafe5. +// +// Solidity: function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForETH(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForETH(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForETHSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForETHSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForETHSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x791ac947. +// +// Solidity: function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForETHSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForETHSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokens is a paid mutator transaction binding the contract method 0x38ed1739. +// +// Solidity: function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapExactTokensForTokensSupportingFeeOnTransferTokens(opts *bind.TransactOpts, amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapExactTokensForTokensSupportingFeeOnTransferTokens", amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapExactTokensForTokensSupportingFeeOnTransferTokens is a paid mutator transaction binding the contract method 0x5c11d795. +// +// Solidity: function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns() +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn *big.Int, amountOutMin *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapExactTokensForTokensSupportingFeeOnTransferTokens(&_UniswapV2Router02.TransactOpts, amountIn, amountOutMin, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapTokensForExactETH(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapTokensForExactETH", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapTokensForExactETH(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactETH is a paid mutator transaction binding the contract method 0x4a25d94a. +// +// Solidity: function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapTokensForExactETH(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapTokensForExactETH(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Transactor) SwapTokensForExactTokens(opts *bind.TransactOpts, amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.contract.Transact(opts, "swapTokensForExactTokens", amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02Session) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapTokensForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// SwapTokensForExactTokens is a paid mutator transaction binding the contract method 0x8803dbee. +// +// Solidity: function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns(uint256[] amounts) +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) SwapTokensForExactTokens(amountOut *big.Int, amountInMax *big.Int, path []common.Address, to common.Address, deadline *big.Int) (*types.Transaction, error) { + return _UniswapV2Router02.Contract.SwapTokensForExactTokens(&_UniswapV2Router02.TransactOpts, amountOut, amountInMax, path, to, deadline) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_UniswapV2Router02 *UniswapV2Router02Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniswapV2Router02.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_UniswapV2Router02 *UniswapV2Router02Session) Receive() (*types.Transaction, error) { + return _UniswapV2Router02.Contract.Receive(&_UniswapV2Router02.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_UniswapV2Router02 *UniswapV2Router02TransactorSession) Receive() (*types.Transaction, error) { + return _UniswapV2Router02.Contract.Receive(&_UniswapV2Router02.TransactOpts) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go new file mode 100644 index 00000000..cefe4347 --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/callback/iuniswapv3swapcallback.sol/iuniswapv3swapcallback.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3swapcallback + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3SwapCallbackMetaData contains all meta data concerning the IUniswapV3SwapCallback contract. +var IUniswapV3SwapCallbackMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3SwapCallbackABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3SwapCallbackMetaData.ABI instead. +var IUniswapV3SwapCallbackABI = IUniswapV3SwapCallbackMetaData.ABI + +// IUniswapV3SwapCallback is an auto generated Go binding around an Ethereum contract. +type IUniswapV3SwapCallback struct { + IUniswapV3SwapCallbackCaller // Read-only binding to the contract + IUniswapV3SwapCallbackTransactor // Write-only binding to the contract + IUniswapV3SwapCallbackFilterer // Log filterer for contract events +} + +// IUniswapV3SwapCallbackCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3SwapCallbackCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3SwapCallbackTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3SwapCallbackTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3SwapCallbackFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3SwapCallbackFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3SwapCallbackSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3SwapCallbackSession struct { + Contract *IUniswapV3SwapCallback // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3SwapCallbackCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3SwapCallbackCallerSession struct { + Contract *IUniswapV3SwapCallbackCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3SwapCallbackTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3SwapCallbackTransactorSession struct { + Contract *IUniswapV3SwapCallbackTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3SwapCallbackRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3SwapCallbackRaw struct { + Contract *IUniswapV3SwapCallback // Generic contract binding to access the raw methods on +} + +// IUniswapV3SwapCallbackCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3SwapCallbackCallerRaw struct { + Contract *IUniswapV3SwapCallbackCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3SwapCallbackTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3SwapCallbackTransactorRaw struct { + Contract *IUniswapV3SwapCallbackTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3SwapCallback creates a new instance of IUniswapV3SwapCallback, bound to a specific deployed contract. +func NewIUniswapV3SwapCallback(address common.Address, backend bind.ContractBackend) (*IUniswapV3SwapCallback, error) { + contract, err := bindIUniswapV3SwapCallback(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3SwapCallback{IUniswapV3SwapCallbackCaller: IUniswapV3SwapCallbackCaller{contract: contract}, IUniswapV3SwapCallbackTransactor: IUniswapV3SwapCallbackTransactor{contract: contract}, IUniswapV3SwapCallbackFilterer: IUniswapV3SwapCallbackFilterer{contract: contract}}, nil +} + +// NewIUniswapV3SwapCallbackCaller creates a new read-only instance of IUniswapV3SwapCallback, bound to a specific deployed contract. +func NewIUniswapV3SwapCallbackCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3SwapCallbackCaller, error) { + contract, err := bindIUniswapV3SwapCallback(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3SwapCallbackCaller{contract: contract}, nil +} + +// NewIUniswapV3SwapCallbackTransactor creates a new write-only instance of IUniswapV3SwapCallback, bound to a specific deployed contract. +func NewIUniswapV3SwapCallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3SwapCallbackTransactor, error) { + contract, err := bindIUniswapV3SwapCallback(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3SwapCallbackTransactor{contract: contract}, nil +} + +// NewIUniswapV3SwapCallbackFilterer creates a new log filterer instance of IUniswapV3SwapCallback, bound to a specific deployed contract. +func NewIUniswapV3SwapCallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3SwapCallbackFilterer, error) { + contract, err := bindIUniswapV3SwapCallback(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3SwapCallbackFilterer{contract: contract}, nil +} + +// bindIUniswapV3SwapCallback binds a generic wrapper to an already deployed contract. +func bindIUniswapV3SwapCallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3SwapCallbackMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.IUniswapV3SwapCallbackTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3SwapCallback.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.contract.Transact(opts, method, params...) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.UniswapV3SwapCallback(&_IUniswapV3SwapCallback.TransactOpts, amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_IUniswapV3SwapCallback *IUniswapV3SwapCallbackTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3SwapCallback.Contract.UniswapV3SwapCallback(&_IUniswapV3SwapCallback.TransactOpts, amount0Delta, amount1Delta, data) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go new file mode 100644 index 00000000..048c69bd --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3factory.sol/iuniswapv3factory.go @@ -0,0 +1,807 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3factory + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3FactoryMetaData contains all meta data concerning the IUniswapV3Factory contract. +var IUniswapV3FactoryMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3FactoryABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3FactoryMetaData.ABI instead. +var IUniswapV3FactoryABI = IUniswapV3FactoryMetaData.ABI + +// IUniswapV3Factory is an auto generated Go binding around an Ethereum contract. +type IUniswapV3Factory struct { + IUniswapV3FactoryCaller // Read-only binding to the contract + IUniswapV3FactoryTransactor // Write-only binding to the contract + IUniswapV3FactoryFilterer // Log filterer for contract events +} + +// IUniswapV3FactoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3FactoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3FactoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3FactoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3FactorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3FactorySession struct { + Contract *IUniswapV3Factory // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3FactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3FactoryCallerSession struct { + Contract *IUniswapV3FactoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3FactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3FactoryTransactorSession struct { + Contract *IUniswapV3FactoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3FactoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3FactoryRaw struct { + Contract *IUniswapV3Factory // Generic contract binding to access the raw methods on +} + +// IUniswapV3FactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3FactoryCallerRaw struct { + Contract *IUniswapV3FactoryCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3FactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3FactoryTransactorRaw struct { + Contract *IUniswapV3FactoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3Factory creates a new instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3Factory(address common.Address, backend bind.ContractBackend) (*IUniswapV3Factory, error) { + contract, err := bindIUniswapV3Factory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3Factory{IUniswapV3FactoryCaller: IUniswapV3FactoryCaller{contract: contract}, IUniswapV3FactoryTransactor: IUniswapV3FactoryTransactor{contract: contract}, IUniswapV3FactoryFilterer: IUniswapV3FactoryFilterer{contract: contract}}, nil +} + +// NewIUniswapV3FactoryCaller creates a new read-only instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3FactoryCaller, error) { + contract, err := bindIUniswapV3Factory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryCaller{contract: contract}, nil +} + +// NewIUniswapV3FactoryTransactor creates a new write-only instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3FactoryTransactor, error) { + contract, err := bindIUniswapV3Factory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryTransactor{contract: contract}, nil +} + +// NewIUniswapV3FactoryFilterer creates a new log filterer instance of IUniswapV3Factory, bound to a specific deployed contract. +func NewIUniswapV3FactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3FactoryFilterer, error) { + contract, err := bindIUniswapV3Factory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryFilterer{contract: contract}, nil +} + +// bindIUniswapV3Factory binds a generic wrapper to an already deployed contract. +func bindIUniswapV3Factory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3FactoryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Factory *IUniswapV3FactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.IUniswapV3FactoryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3Factory *IUniswapV3FactoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Factory.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.contract.Transact(opts, method, params...) +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) FeeAmountTickSpacing(opts *bind.CallOpts, fee *big.Int) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "feeAmountTickSpacing", fee) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactorySession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { + return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) +} + +// FeeAmountTickSpacing is a free data retrieval call binding the contract method 0x22afcccb. +// +// Solidity: function feeAmountTickSpacing(uint24 fee) view returns(int24) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) FeeAmountTickSpacing(fee *big.Int) (*big.Int, error) { + return _IUniswapV3Factory.Contract.FeeAmountTickSpacing(&_IUniswapV3Factory.CallOpts, fee) +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) GetPool(opts *bind.CallOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "getPool", tokenA, tokenB, fee) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactorySession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) +} + +// GetPool is a free data retrieval call binding the contract method 0x1698ee82. +// +// Solidity: function getPool(address tokenA, address tokenB, uint24 fee) view returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) GetPool(tokenA common.Address, tokenB common.Address, fee *big.Int) (common.Address, error) { + return _IUniswapV3Factory.Contract.GetPool(&_IUniswapV3Factory.CallOpts, tokenA, tokenB, fee) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactoryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Factory.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactorySession) Owner() (common.Address, error) { + return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IUniswapV3Factory *IUniswapV3FactoryCallerSession) Owner() (common.Address, error) { + return _IUniswapV3Factory.Contract.Owner(&_IUniswapV3Factory.CallOpts) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) CreatePool(opts *bind.TransactOpts, tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "createPool", tokenA, tokenB, fee) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactorySession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) +} + +// CreatePool is a paid mutator transaction binding the contract method 0xa1671295. +// +// Solidity: function createPool(address tokenA, address tokenB, uint24 fee) returns(address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) CreatePool(tokenA common.Address, tokenB common.Address, fee *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.CreatePool(&_IUniswapV3Factory.TransactOpts, tokenA, tokenB, fee) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) EnableFeeAmount(opts *bind.TransactOpts, fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "enableFeeAmount", fee, tickSpacing) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactorySession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) +} + +// EnableFeeAmount is a paid mutator transaction binding the contract method 0x8a7c195f. +// +// Solidity: function enableFeeAmount(uint24 fee, int24 tickSpacing) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) EnableFeeAmount(fee *big.Int, tickSpacing *big.Int) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.EnableFeeAmount(&_IUniswapV3Factory.TransactOpts, fee, tickSpacing) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactor) SetOwner(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.contract.Transact(opts, "setOwner", _owner) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactorySession) SetOwner(_owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) +} + +// SetOwner is a paid mutator transaction binding the contract method 0x13af4035. +// +// Solidity: function setOwner(address _owner) returns() +func (_IUniswapV3Factory *IUniswapV3FactoryTransactorSession) SetOwner(_owner common.Address) (*types.Transaction, error) { + return _IUniswapV3Factory.Contract.SetOwner(&_IUniswapV3Factory.TransactOpts, _owner) +} + +// IUniswapV3FactoryFeeAmountEnabledIterator is returned from FilterFeeAmountEnabled and is used to iterate over the raw logs and unpacked data for FeeAmountEnabled events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryFeeAmountEnabledIterator struct { + Event *IUniswapV3FactoryFeeAmountEnabled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryFeeAmountEnabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryFeeAmountEnabled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryFeeAmountEnabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryFeeAmountEnabled represents a FeeAmountEnabled event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryFeeAmountEnabled struct { + Fee *big.Int + TickSpacing *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeeAmountEnabled is a free log retrieval operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterFeeAmountEnabled(opts *bind.FilterOpts, fee []*big.Int, tickSpacing []*big.Int) (*IUniswapV3FactoryFeeAmountEnabledIterator, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + var tickSpacingRule []interface{} + for _, tickSpacingItem := range tickSpacing { + tickSpacingRule = append(tickSpacingRule, tickSpacingItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryFeeAmountEnabledIterator{contract: _IUniswapV3Factory.contract, event: "FeeAmountEnabled", logs: logs, sub: sub}, nil +} + +// WatchFeeAmountEnabled is a free log subscription operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchFeeAmountEnabled(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryFeeAmountEnabled, fee []*big.Int, tickSpacing []*big.Int) (event.Subscription, error) { + + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + var tickSpacingRule []interface{} + for _, tickSpacingItem := range tickSpacing { + tickSpacingRule = append(tickSpacingRule, tickSpacingItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "FeeAmountEnabled", feeRule, tickSpacingRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3FactoryFeeAmountEnabled) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeeAmountEnabled is a log parse operation binding the contract event 0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc. +// +// Solidity: event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseFeeAmountEnabled(log types.Log) (*IUniswapV3FactoryFeeAmountEnabled, error) { + event := new(IUniswapV3FactoryFeeAmountEnabled) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "FeeAmountEnabled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3FactoryOwnerChangedIterator is returned from FilterOwnerChanged and is used to iterate over the raw logs and unpacked data for OwnerChanged events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryOwnerChangedIterator struct { + Event *IUniswapV3FactoryOwnerChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3FactoryOwnerChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryOwnerChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryOwnerChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3FactoryOwnerChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryOwnerChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryOwnerChanged represents a OwnerChanged event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryOwnerChanged struct { + OldOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnerChanged is a free log retrieval operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterOwnerChanged(opts *bind.FilterOpts, oldOwner []common.Address, newOwner []common.Address) (*IUniswapV3FactoryOwnerChangedIterator, error) { + + var oldOwnerRule []interface{} + for _, oldOwnerItem := range oldOwner { + oldOwnerRule = append(oldOwnerRule, oldOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryOwnerChangedIterator{contract: _IUniswapV3Factory.contract, event: "OwnerChanged", logs: logs, sub: sub}, nil +} + +// WatchOwnerChanged is a free log subscription operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchOwnerChanged(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryOwnerChanged, oldOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var oldOwnerRule []interface{} + for _, oldOwnerItem := range oldOwner { + oldOwnerRule = append(oldOwnerRule, oldOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "OwnerChanged", oldOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3FactoryOwnerChanged) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnerChanged is a log parse operation binding the contract event 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c. +// +// Solidity: event OwnerChanged(address indexed oldOwner, address indexed newOwner) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParseOwnerChanged(log types.Log) (*IUniswapV3FactoryOwnerChanged, error) { + event := new(IUniswapV3FactoryOwnerChanged) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "OwnerChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3FactoryPoolCreatedIterator is returned from FilterPoolCreated and is used to iterate over the raw logs and unpacked data for PoolCreated events raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryPoolCreatedIterator struct { + Event *IUniswapV3FactoryPoolCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3FactoryPoolCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryPoolCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3FactoryPoolCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3FactoryPoolCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3FactoryPoolCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3FactoryPoolCreated represents a PoolCreated event raised by the IUniswapV3Factory contract. +type IUniswapV3FactoryPoolCreated struct { + Token0 common.Address + Token1 common.Address + Fee *big.Int + TickSpacing *big.Int + Pool common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPoolCreated is a free log retrieval operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) FilterPoolCreated(opts *bind.FilterOpts, token0 []common.Address, token1 []common.Address, fee []*big.Int) (*IUniswapV3FactoryPoolCreatedIterator, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.FilterLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) + if err != nil { + return nil, err + } + return &IUniswapV3FactoryPoolCreatedIterator{contract: _IUniswapV3Factory.contract, event: "PoolCreated", logs: logs, sub: sub}, nil +} + +// WatchPoolCreated is a free log subscription operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) WatchPoolCreated(opts *bind.WatchOpts, sink chan<- *IUniswapV3FactoryPoolCreated, token0 []common.Address, token1 []common.Address, fee []*big.Int) (event.Subscription, error) { + + var token0Rule []interface{} + for _, token0Item := range token0 { + token0Rule = append(token0Rule, token0Item) + } + var token1Rule []interface{} + for _, token1Item := range token1 { + token1Rule = append(token1Rule, token1Item) + } + var feeRule []interface{} + for _, feeItem := range fee { + feeRule = append(feeRule, feeItem) + } + + logs, sub, err := _IUniswapV3Factory.contract.WatchLogs(opts, "PoolCreated", token0Rule, token1Rule, feeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3FactoryPoolCreated) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePoolCreated is a log parse operation binding the contract event 0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118. +// +// Solidity: event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool) +func (_IUniswapV3Factory *IUniswapV3FactoryFilterer) ParsePoolCreated(log types.Log) (*IUniswapV3FactoryPoolCreated, error) { + event := new(IUniswapV3FactoryPoolCreated) + if err := _IUniswapV3Factory.contract.UnpackLog(event, "PoolCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go new file mode 100644 index 00000000..9a6f17ab --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/iuniswapv3pool.sol/iuniswapv3pool.go @@ -0,0 +1,2455 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3pool + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolMetaData contains all meta data concerning the IUniswapV3Pool contract. +var IUniswapV3PoolMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolMetaData.ABI instead. +var IUniswapV3PoolABI = IUniswapV3PoolMetaData.ABI + +// IUniswapV3Pool is an auto generated Go binding around an Ethereum contract. +type IUniswapV3Pool struct { + IUniswapV3PoolCaller // Read-only binding to the contract + IUniswapV3PoolTransactor // Write-only binding to the contract + IUniswapV3PoolFilterer // Log filterer for contract events +} + +// IUniswapV3PoolCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolSession struct { + Contract *IUniswapV3Pool // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolCallerSession struct { + Contract *IUniswapV3PoolCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolTransactorSession struct { + Contract *IUniswapV3PoolTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolRaw struct { + Contract *IUniswapV3Pool // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolCallerRaw struct { + Contract *IUniswapV3PoolCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolTransactorRaw struct { + Contract *IUniswapV3PoolTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3Pool creates a new instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3Pool(address common.Address, backend bind.ContractBackend) (*IUniswapV3Pool, error) { + contract, err := bindIUniswapV3Pool(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3Pool{IUniswapV3PoolCaller: IUniswapV3PoolCaller{contract: contract}, IUniswapV3PoolTransactor: IUniswapV3PoolTransactor{contract: contract}, IUniswapV3PoolFilterer: IUniswapV3PoolFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolCaller creates a new read-only instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolCaller, error) { + contract, err := bindIUniswapV3Pool(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolTransactor creates a new write-only instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolTransactor, error) { + contract, err := bindIUniswapV3Pool(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolFilterer creates a new log filterer instance of IUniswapV3Pool, bound to a specific deployed contract. +func NewIUniswapV3PoolFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolFilterer, error) { + contract, err := bindIUniswapV3Pool(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolFilterer{contract: contract}, nil +} + +// bindIUniswapV3Pool binds a generic wrapper to an already deployed contract. +func bindIUniswapV3Pool(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3Pool *IUniswapV3PoolRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Pool.Contract.IUniswapV3PoolCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3Pool *IUniswapV3PoolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Pool *IUniswapV3PoolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IUniswapV3PoolTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3Pool *IUniswapV3PoolCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3Pool.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3Pool *IUniswapV3PoolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.contract.Transact(opts, method, params...) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Factory() (common.Address, error) { + return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Factory() (common.Address, error) { + return _IUniswapV3Pool.Contract.Factory(&_IUniswapV3Pool.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Fee() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Fee() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Fee(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal0X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal0X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "feeGrowthGlobal1X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3Pool.Contract.FeeGrowthGlobal1X128(&_IUniswapV3Pool.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "liquidity") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Liquidity() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Liquidity() (*big.Int, error) { + return _IUniswapV3Pool.Contract.Liquidity(&_IUniswapV3Pool.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "maxLiquidityPerTick") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3Pool.Contract.MaxLiquidityPerTick(&_IUniswapV3Pool.CallOpts) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "observations", index) + + outstruct := new(struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) + outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) + + return *outstruct, err + +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Observations(&_IUniswapV3Pool.CallOpts, index) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "observe", secondsAgos) + + outstruct := new(struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3Pool.Contract.Observe(&_IUniswapV3Pool.CallOpts, secondsAgos) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "positions", key) + + outstruct := new(struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.Positions(&_IUniswapV3Pool.CallOpts, key) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) ProtocolFees(opts *bind.CallOpts) (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "protocolFees") + + outstruct := new(struct { + Token0 *big.Int + Token1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3Pool.Contract.ProtocolFees(&_IUniswapV3Pool.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Slot0(opts *bind.CallOpts) (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "slot0") + + outstruct := new(struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) + outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) + outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) + + return *outstruct, err + +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3Pool.Contract.Slot0(&_IUniswapV3Pool.CallOpts) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) + + outstruct := new(struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3Pool.Contract.SnapshotCumulativesInside(&_IUniswapV3Pool.CallOpts, tickLower, tickUpper) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "tickBitmap", wordPosition) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickBitmap(&_IUniswapV3Pool.CallOpts, wordPosition) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "tickSpacing") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3Pool.Contract.TickSpacing(&_IUniswapV3Pool.CallOpts) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "ticks", tick) + + outstruct := new(struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) + outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) + + return *outstruct, err + +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3Pool.Contract.Ticks(&_IUniswapV3Pool.CallOpts, tick) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Token0() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token0() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token0(&_IUniswapV3Pool.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3Pool.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Token1() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3Pool *IUniswapV3PoolCallerSession) Token1() (common.Address, error) { + return _IUniswapV3Pool.Contract.Token1(&_IUniswapV3Pool.CallOpts) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "burn", tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Burn(&_IUniswapV3Pool.TransactOpts, tickLower, tickUpper, amount) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Collect(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.CollectProtocol(&_IUniswapV3Pool.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "flash", recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Flash(&_IUniswapV3Pool.TransactOpts, recipient, amount0, amount1, data) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3Pool.TransactOpts, observationCardinalityNext) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "initialize", sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Initialize(&_IUniswapV3Pool.TransactOpts, sqrtPriceX96) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Mint(&_IUniswapV3Pool.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.SetFeeProtocol(&_IUniswapV3Pool.TransactOpts, feeProtocol0, feeProtocol1) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3Pool.Contract.Swap(&_IUniswapV3Pool.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// IUniswapV3PoolBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolBurnIterator struct { + Event *IUniswapV3PoolBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolBurn represents a Burn event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolBurn struct { + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolBurnIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolBurnIterator{contract: _IUniswapV3Pool.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolBurn) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolBurn, error) { + event := new(IUniswapV3PoolBurn) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectIterator struct { + Event *IUniswapV3PoolCollect // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolCollectIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolCollectIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolCollectIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolCollect represents a Collect event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollect struct { + Owner common.Address + Recipient common.Address + TickLower *big.Int + TickUpper *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolCollectIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCollectIterator{contract: _IUniswapV3Pool.contract, event: "Collect", logs: logs, sub: sub}, nil +} + +// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolCollect) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolCollect, error) { + event := new(IUniswapV3PoolCollect) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Collect", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectProtocolIterator struct { + Event *IUniswapV3PoolCollectProtocol // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolCollectProtocolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolCollectProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolCollectProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolCollectProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolCollectProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolCollectProtocol represents a CollectProtocol event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolCollectProtocol struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolCollectProtocolIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolCollectProtocolIterator{contract: _IUniswapV3Pool.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil +} + +// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolCollectProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolCollectProtocol, error) { + event := new(IUniswapV3PoolCollectProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolFlashIterator struct { + Event *IUniswapV3PoolFlash // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolFlashIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolFlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolFlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolFlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolFlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolFlash represents a Flash event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolFlash struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Paid0 *big.Int + Paid1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolFlashIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolFlashIterator{contract: _IUniswapV3Pool.contract, event: "Flash", logs: logs, sub: sub}, nil +} + +// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolFlash) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolFlash, error) { + event := new(IUniswapV3PoolFlash) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Flash", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolIncreaseObservationCardinalityNextIterator struct { + Event *IUniswapV3PoolIncreaseObservationCardinalityNext // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolIncreaseObservationCardinalityNextIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolIncreaseObservationCardinalityNext struct { + ObservationCardinalityNextOld uint16 + ObservationCardinalityNextNew uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolIncreaseObservationCardinalityNextIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return &IUniswapV3PoolIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3Pool.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil +} + +// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolIncreaseObservationCardinalityNext) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolIncreaseObservationCardinalityNext, error) { + event := new(IUniswapV3PoolIncreaseObservationCardinalityNext) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolInitializeIterator struct { + Event *IUniswapV3PoolInitialize // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolInitializeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolInitialize) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolInitialize) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolInitializeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolInitializeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolInitialize represents a Initialize event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolInitialize struct { + SqrtPriceX96 *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolInitializeIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return &IUniswapV3PoolInitializeIterator{contract: _IUniswapV3Pool.contract, event: "Initialize", logs: logs, sub: sub}, nil +} + +// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolInitialize) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolInitialize) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolInitialize, error) { + event := new(IUniswapV3PoolInitialize) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Initialize", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolMintIterator struct { + Event *IUniswapV3PoolMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolMint represents a Mint event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolMint struct { + Sender common.Address + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolMintIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolMintIterator{contract: _IUniswapV3Pool.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolMint) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseMint(log types.Log) (*IUniswapV3PoolMint, error) { + event := new(IUniswapV3PoolMint) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSetFeeProtocolIterator struct { + Event *IUniswapV3PoolSetFeeProtocol // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolSetFeeProtocolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolSetFeeProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolSetFeeProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolSetFeeProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolSetFeeProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSetFeeProtocol struct { + FeeProtocol0Old uint8 + FeeProtocol1Old uint8 + FeeProtocol0New uint8 + FeeProtocol1New uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolSetFeeProtocolIterator, error) { + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return &IUniswapV3PoolSetFeeProtocolIterator{contract: _IUniswapV3Pool.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil +} + +// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSetFeeProtocol) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolSetFeeProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolSetFeeProtocol, error) { + event := new(IUniswapV3PoolSetFeeProtocol) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSwapIterator struct { + Event *IUniswapV3PoolSwap // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolSwapIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolSwap represents a Swap event raised by the IUniswapV3Pool contract. +type IUniswapV3PoolSwap struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + SqrtPriceX96 *big.Int + Liquidity *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolSwapIterator{contract: _IUniswapV3Pool.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3Pool.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolSwap) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3Pool *IUniswapV3PoolFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolSwap, error) { + event := new(IUniswapV3PoolSwap) + if err := _IUniswapV3Pool.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go new file mode 100644 index 00000000..faa639bc --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolactions.sol/iuniswapv3poolactions.go @@ -0,0 +1,328 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolactions + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolActionsMetaData contains all meta data concerning the IUniswapV3PoolActions contract. +var IUniswapV3PoolActionsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolActionsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolActionsMetaData.ABI instead. +var IUniswapV3PoolActionsABI = IUniswapV3PoolActionsMetaData.ABI + +// IUniswapV3PoolActions is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolActions struct { + IUniswapV3PoolActionsCaller // Read-only binding to the contract + IUniswapV3PoolActionsTransactor // Write-only binding to the contract + IUniswapV3PoolActionsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolActionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolActionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolActionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolActionsSession struct { + Contract *IUniswapV3PoolActions // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolActionsCallerSession struct { + Contract *IUniswapV3PoolActionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolActionsTransactorSession struct { + Contract *IUniswapV3PoolActionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolActionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolActionsRaw struct { + Contract *IUniswapV3PoolActions // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsCallerRaw struct { + Contract *IUniswapV3PoolActionsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolActionsTransactorRaw struct { + Contract *IUniswapV3PoolActionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolActions creates a new instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolActions, error) { + contract, err := bindIUniswapV3PoolActions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActions{IUniswapV3PoolActionsCaller: IUniswapV3PoolActionsCaller{contract: contract}, IUniswapV3PoolActionsTransactor: IUniswapV3PoolActionsTransactor{contract: contract}, IUniswapV3PoolActionsFilterer: IUniswapV3PoolActionsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolActionsCaller creates a new read-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolActionsCaller, error) { + contract, err := bindIUniswapV3PoolActions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolActionsTransactor creates a new write-only instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolActionsTransactor, error) { + contract, err := bindIUniswapV3PoolActions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolActionsFilterer creates a new log filterer instance of IUniswapV3PoolActions, bound to a specific deployed contract. +func NewIUniswapV3PoolActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolActionsFilterer, error) { + contract, err := bindIUniswapV3PoolActions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolActionsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolActions binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolActionsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IUniswapV3PoolActionsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolActions.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.contract.Transact(opts, method, params...) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Burn(opts *bind.TransactOpts, tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "burn", tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0xa34123a7. +// +// Solidity: function burn(int24 tickLower, int24 tickUpper, uint128 amount) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Burn(tickLower *big.Int, tickUpper *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Burn(&_IUniswapV3PoolActions.TransactOpts, tickLower, tickUpper, amount) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Collect(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "collect", recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Collect is a paid mutator transaction binding the contract method 0x4f1eb3d8. +// +// Solidity: function collect(address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Collect(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Collect(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount0Requested, amount1Requested) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Flash(opts *bind.TransactOpts, recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "flash", recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) +} + +// Flash is a paid mutator transaction binding the contract method 0x490e6cbc. +// +// Solidity: function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Flash(recipient common.Address, amount0 *big.Int, amount1 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Flash(&_IUniswapV3PoolActions.TransactOpts, recipient, amount0, amount1, data) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) IncreaseObservationCardinalityNext(opts *bind.TransactOpts, observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "increaseObservationCardinalityNext", observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) +} + +// IncreaseObservationCardinalityNext is a paid mutator transaction binding the contract method 0x32148f67. +// +// Solidity: function increaseObservationCardinalityNext(uint16 observationCardinalityNext) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) IncreaseObservationCardinalityNext(observationCardinalityNext uint16) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.IncreaseObservationCardinalityNext(&_IUniswapV3PoolActions.TransactOpts, observationCardinalityNext) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Initialize(opts *bind.TransactOpts, sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "initialize", sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) +} + +// Initialize is a paid mutator transaction binding the contract method 0xf637731d. +// +// Solidity: function initialize(uint160 sqrtPriceX96) returns() +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Initialize(sqrtPriceX96 *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Initialize(&_IUniswapV3PoolActions.TransactOpts, sqrtPriceX96) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Mint(opts *bind.TransactOpts, recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "mint", recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Mint is a paid mutator transaction binding the contract method 0x3c8a7d8d. +// +// Solidity: function mint(address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes data) returns(uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Mint(recipient common.Address, tickLower *big.Int, tickUpper *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Mint(&_IUniswapV3PoolActions.TransactOpts, recipient, tickLower, tickUpper, amount, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactor) Swap(opts *bind.TransactOpts, recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.contract.Transact(opts, "swap", recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} + +// Swap is a paid mutator transaction binding the contract method 0x128acb08. +// +// Solidity: function swap(address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes data) returns(int256 amount0, int256 amount1) +func (_IUniswapV3PoolActions *IUniswapV3PoolActionsTransactorSession) Swap(recipient common.Address, zeroForOne bool, amountSpecified *big.Int, sqrtPriceLimitX96 *big.Int, data []byte) (*types.Transaction, error) { + return _IUniswapV3PoolActions.Contract.Swap(&_IUniswapV3PoolActions.TransactOpts, recipient, zeroForOne, amountSpecified, sqrtPriceLimitX96, data) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go new file mode 100644 index 00000000..efcbc37a --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolderivedstate.sol/iuniswapv3poolderivedstate.go @@ -0,0 +1,276 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolderivedstate + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolDerivedStateMetaData contains all meta data concerning the IUniswapV3PoolDerivedState contract. +var IUniswapV3PoolDerivedStateMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolDerivedStateABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolDerivedStateMetaData.ABI instead. +var IUniswapV3PoolDerivedStateABI = IUniswapV3PoolDerivedStateMetaData.ABI + +// IUniswapV3PoolDerivedState is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedState struct { + IUniswapV3PoolDerivedStateCaller // Read-only binding to the contract + IUniswapV3PoolDerivedStateTransactor // Write-only binding to the contract + IUniswapV3PoolDerivedStateFilterer // Log filterer for contract events +} + +// IUniswapV3PoolDerivedStateCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolDerivedStateFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolDerivedStateSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolDerivedStateSession struct { + Contract *IUniswapV3PoolDerivedState // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolDerivedStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolDerivedStateCallerSession struct { + Contract *IUniswapV3PoolDerivedStateCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolDerivedStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolDerivedStateTransactorSession struct { + Contract *IUniswapV3PoolDerivedStateTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolDerivedStateRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateRaw struct { + Contract *IUniswapV3PoolDerivedState // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolDerivedStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateCallerRaw struct { + Contract *IUniswapV3PoolDerivedStateCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolDerivedStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolDerivedStateTransactorRaw struct { + Contract *IUniswapV3PoolDerivedStateTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolDerivedState creates a new instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolDerivedState, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedState{IUniswapV3PoolDerivedStateCaller: IUniswapV3PoolDerivedStateCaller{contract: contract}, IUniswapV3PoolDerivedStateTransactor: IUniswapV3PoolDerivedStateTransactor{contract: contract}, IUniswapV3PoolDerivedStateFilterer: IUniswapV3PoolDerivedStateFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolDerivedStateCaller creates a new read-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolDerivedStateCaller, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolDerivedStateTransactor creates a new write-only instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolDerivedStateTransactor, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolDerivedStateFilterer creates a new log filterer instance of IUniswapV3PoolDerivedState, bound to a specific deployed contract. +func NewIUniswapV3PoolDerivedStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolDerivedStateFilterer, error) { + contract, err := bindIUniswapV3PoolDerivedState(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolDerivedStateFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolDerivedState binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolDerivedState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolDerivedStateMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.IUniswapV3PoolDerivedStateTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolDerivedState.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolDerivedState.Contract.contract.Transact(opts, method, params...) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) Observe(opts *bind.CallOpts, secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "observe", secondsAgos) + + outstruct := new(struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulatives = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + outstruct.SecondsPerLiquidityCumulativeX128s = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) +} + +// Observe is a free data retrieval call binding the contract method 0x883bdbfd. +// +// Solidity: function observe(uint32[] secondsAgos) view returns(int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) Observe(secondsAgos []uint32) (struct { + TickCumulatives []*big.Int + SecondsPerLiquidityCumulativeX128s []*big.Int +}, error) { + return _IUniswapV3PoolDerivedState.Contract.Observe(&_IUniswapV3PoolDerivedState.CallOpts, secondsAgos) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCaller) SnapshotCumulativesInside(opts *bind.CallOpts, tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + var out []interface{} + err := _IUniswapV3PoolDerivedState.contract.Call(opts, &out, "snapshotCumulativesInside", tickLower, tickUpper) + + outstruct := new(struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.TickCumulativeInside = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityInsideX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsInside = *abi.ConvertType(out[2], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) +} + +// SnapshotCumulativesInside is a free data retrieval call binding the contract method 0xa38807f2. +// +// Solidity: function snapshotCumulativesInside(int24 tickLower, int24 tickUpper) view returns(int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside) +func (_IUniswapV3PoolDerivedState *IUniswapV3PoolDerivedStateCallerSession) SnapshotCumulativesInside(tickLower *big.Int, tickUpper *big.Int) (struct { + TickCumulativeInside *big.Int + SecondsPerLiquidityInsideX128 *big.Int + SecondsInside uint32 +}, error) { + return _IUniswapV3PoolDerivedState.Contract.SnapshotCumulativesInside(&_IUniswapV3PoolDerivedState.CallOpts, tickLower, tickUpper) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go new file mode 100644 index 00000000..36eaf690 --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolevents.sol/iuniswapv3poolevents.go @@ -0,0 +1,1556 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolevents + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolEventsMetaData contains all meta data concerning the IUniswapV3PoolEvents contract. +var IUniswapV3PoolEventsMetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}]", +} + +// IUniswapV3PoolEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolEventsMetaData.ABI instead. +var IUniswapV3PoolEventsABI = IUniswapV3PoolEventsMetaData.ABI + +// IUniswapV3PoolEvents is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolEvents struct { + IUniswapV3PoolEventsCaller // Read-only binding to the contract + IUniswapV3PoolEventsTransactor // Write-only binding to the contract + IUniswapV3PoolEventsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolEventsSession struct { + Contract *IUniswapV3PoolEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolEventsCallerSession struct { + Contract *IUniswapV3PoolEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolEventsTransactorSession struct { + Contract *IUniswapV3PoolEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolEventsRaw struct { + Contract *IUniswapV3PoolEvents // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsCallerRaw struct { + Contract *IUniswapV3PoolEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolEventsTransactorRaw struct { + Contract *IUniswapV3PoolEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolEvents creates a new instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEvents(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolEvents, error) { + contract, err := bindIUniswapV3PoolEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEvents{IUniswapV3PoolEventsCaller: IUniswapV3PoolEventsCaller{contract: contract}, IUniswapV3PoolEventsTransactor: IUniswapV3PoolEventsTransactor{contract: contract}, IUniswapV3PoolEventsFilterer: IUniswapV3PoolEventsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolEventsCaller creates a new read-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolEventsCaller, error) { + contract, err := bindIUniswapV3PoolEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolEventsTransactor creates a new write-only instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolEventsTransactor, error) { + contract, err := bindIUniswapV3PoolEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolEventsFilterer creates a new log filterer instance of IUniswapV3PoolEvents, bound to a specific deployed contract. +func NewIUniswapV3PoolEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolEventsFilterer, error) { + contract, err := bindIUniswapV3PoolEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolEvents binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.IUniswapV3PoolEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolEvents.Contract.contract.Transact(opts, method, params...) +} + +// IUniswapV3PoolEventsBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsBurnIterator struct { + Event *IUniswapV3PoolEventsBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsBurn represents a Burn event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsBurn struct { + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterBurn(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsBurnIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsBurnIterator{contract: _IUniswapV3PoolEvents.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsBurn, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Burn", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsBurn) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0x0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c. +// +// Solidity: event Burn(address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseBurn(log types.Log) (*IUniswapV3PoolEventsBurn, error) { + event := new(IUniswapV3PoolEventsBurn) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsCollectIterator is returned from FilterCollect and is used to iterate over the raw logs and unpacked data for Collect events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectIterator struct { + Event *IUniswapV3PoolEventsCollect // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsCollectIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsCollect) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsCollectIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsCollectIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsCollect represents a Collect event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollect struct { + Owner common.Address + Recipient common.Address + TickLower *big.Int + TickUpper *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollect is a free log retrieval operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollect(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsCollectIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCollectIterator{contract: _IUniswapV3PoolEvents.contract, event: "Collect", logs: logs, sub: sub}, nil +} + +// WatchCollect is a free log subscription operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollect(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollect, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Collect", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsCollect) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCollect is a log parse operation binding the contract event 0x70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0. +// +// Solidity: event Collect(address indexed owner, address recipient, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollect(log types.Log) (*IUniswapV3PoolEventsCollect, error) { + event := new(IUniswapV3PoolEventsCollect) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Collect", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsCollectProtocolIterator is returned from FilterCollectProtocol and is used to iterate over the raw logs and unpacked data for CollectProtocol events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectProtocolIterator struct { + Event *IUniswapV3PoolEventsCollectProtocol // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsCollectProtocolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsCollectProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsCollectProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsCollectProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsCollectProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsCollectProtocol represents a CollectProtocol event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsCollectProtocol struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCollectProtocol is a free log retrieval operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterCollectProtocol(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsCollectProtocolIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsCollectProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "CollectProtocol", logs: logs, sub: sub}, nil +} + +// WatchCollectProtocol is a free log subscription operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchCollectProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsCollectProtocol, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "CollectProtocol", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsCollectProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCollectProtocol is a log parse operation binding the contract event 0x596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151. +// +// Solidity: event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseCollectProtocol(log types.Log) (*IUniswapV3PoolEventsCollectProtocol, error) { + event := new(IUniswapV3PoolEventsCollectProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "CollectProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsFlashIterator is returned from FilterFlash and is used to iterate over the raw logs and unpacked data for Flash events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsFlashIterator struct { + Event *IUniswapV3PoolEventsFlash // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsFlashIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsFlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsFlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsFlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsFlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsFlash represents a Flash event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsFlash struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + Paid0 *big.Int + Paid1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFlash is a free log retrieval operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterFlash(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsFlashIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsFlashIterator{contract: _IUniswapV3PoolEvents.contract, event: "Flash", logs: logs, sub: sub}, nil +} + +// WatchFlash is a free log subscription operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchFlash(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsFlash, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Flash", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsFlash) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFlash is a log parse operation binding the contract event 0xbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca633. +// +// Solidity: event Flash(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseFlash(log types.Log) (*IUniswapV3PoolEventsFlash, error) { + event := new(IUniswapV3PoolEventsFlash) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Flash", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator is returned from FilterIncreaseObservationCardinalityNext and is used to iterate over the raw logs and unpacked data for IncreaseObservationCardinalityNext events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator struct { + Event *IUniswapV3PoolEventsIncreaseObservationCardinalityNext // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsIncreaseObservationCardinalityNext represents a IncreaseObservationCardinalityNext event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsIncreaseObservationCardinalityNext struct { + ObservationCardinalityNextOld uint16 + ObservationCardinalityNextNew uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIncreaseObservationCardinalityNext is a free log retrieval operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterIncreaseObservationCardinalityNext(opts *bind.FilterOpts) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsIncreaseObservationCardinalityNextIterator{contract: _IUniswapV3PoolEvents.contract, event: "IncreaseObservationCardinalityNext", logs: logs, sub: sub}, nil +} + +// WatchIncreaseObservationCardinalityNext is a free log subscription operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchIncreaseObservationCardinalityNext(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsIncreaseObservationCardinalityNext) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "IncreaseObservationCardinalityNext") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseIncreaseObservationCardinalityNext is a log parse operation binding the contract event 0xac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a. +// +// Solidity: event IncreaseObservationCardinalityNext(uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseIncreaseObservationCardinalityNext(log types.Log) (*IUniswapV3PoolEventsIncreaseObservationCardinalityNext, error) { + event := new(IUniswapV3PoolEventsIncreaseObservationCardinalityNext) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "IncreaseObservationCardinalityNext", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsInitializeIterator is returned from FilterInitialize and is used to iterate over the raw logs and unpacked data for Initialize events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsInitializeIterator struct { + Event *IUniswapV3PoolEventsInitialize // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsInitializeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsInitialize) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsInitialize) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsInitializeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsInitializeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsInitialize represents a Initialize event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsInitialize struct { + SqrtPriceX96 *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialize is a free log retrieval operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterInitialize(opts *bind.FilterOpts) (*IUniswapV3PoolEventsInitializeIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsInitializeIterator{contract: _IUniswapV3PoolEvents.contract, event: "Initialize", logs: logs, sub: sub}, nil +} + +// WatchInitialize is a free log subscription operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchInitialize(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsInitialize) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Initialize") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsInitialize) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialize is a log parse operation binding the contract event 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95. +// +// Solidity: event Initialize(uint160 sqrtPriceX96, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseInitialize(log types.Log) (*IUniswapV3PoolEventsInitialize, error) { + event := new(IUniswapV3PoolEventsInitialize) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Initialize", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsMintIterator struct { + Event *IUniswapV3PoolEventsMint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsMintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsMint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsMintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsMintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsMint represents a Mint event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsMint struct { + Sender common.Address + Owner common.Address + TickLower *big.Int + TickUpper *big.Int + Amount *big.Int + Amount0 *big.Int + Amount1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMint is a free log retrieval operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterMint(opts *bind.FilterOpts, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (*IUniswapV3PoolEventsMintIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsMintIterator{contract: _IUniswapV3PoolEvents.contract, event: "Mint", logs: logs, sub: sub}, nil +} + +// WatchMint is a free log subscription operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsMint, owner []common.Address, tickLower []*big.Int, tickUpper []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tickLowerRule []interface{} + for _, tickLowerItem := range tickLower { + tickLowerRule = append(tickLowerRule, tickLowerItem) + } + var tickUpperRule []interface{} + for _, tickUpperItem := range tickUpper { + tickUpperRule = append(tickUpperRule, tickUpperItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Mint", ownerRule, tickLowerRule, tickUpperRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsMint) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMint is a log parse operation binding the contract event 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde. +// +// Solidity: event Mint(address sender, address indexed owner, int24 indexed tickLower, int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseMint(log types.Log) (*IUniswapV3PoolEventsMint, error) { + event := new(IUniswapV3PoolEventsMint) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Mint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsSetFeeProtocolIterator is returned from FilterSetFeeProtocol and is used to iterate over the raw logs and unpacked data for SetFeeProtocol events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSetFeeProtocolIterator struct { + Event *IUniswapV3PoolEventsSetFeeProtocol // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsSetFeeProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsSetFeeProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsSetFeeProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsSetFeeProtocol represents a SetFeeProtocol event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSetFeeProtocol struct { + FeeProtocol0Old uint8 + FeeProtocol1Old uint8 + FeeProtocol0New uint8 + FeeProtocol1New uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetFeeProtocol is a free log retrieval operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSetFeeProtocol(opts *bind.FilterOpts) (*IUniswapV3PoolEventsSetFeeProtocolIterator, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsSetFeeProtocolIterator{contract: _IUniswapV3PoolEvents.contract, event: "SetFeeProtocol", logs: logs, sub: sub}, nil +} + +// WatchSetFeeProtocol is a free log subscription operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSetFeeProtocol(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSetFeeProtocol) (event.Subscription, error) { + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "SetFeeProtocol") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsSetFeeProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetFeeProtocol is a log parse operation binding the contract event 0x973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b133. +// +// Solidity: event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSetFeeProtocol(log types.Log) (*IUniswapV3PoolEventsSetFeeProtocol, error) { + event := new(IUniswapV3PoolEventsSetFeeProtocol) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "SetFeeProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IUniswapV3PoolEventsSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSwapIterator struct { + Event *IUniswapV3PoolEventsSwap // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IUniswapV3PoolEventsSwapIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IUniswapV3PoolEventsSwap) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IUniswapV3PoolEventsSwapIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IUniswapV3PoolEventsSwapIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IUniswapV3PoolEventsSwap represents a Swap event raised by the IUniswapV3PoolEvents contract. +type IUniswapV3PoolEventsSwap struct { + Sender common.Address + Recipient common.Address + Amount0 *big.Int + Amount1 *big.Int + SqrtPriceX96 *big.Int + Liquidity *big.Int + Tick *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwap is a free log retrieval operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) FilterSwap(opts *bind.FilterOpts, sender []common.Address, recipient []common.Address) (*IUniswapV3PoolEventsSwapIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.FilterLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return &IUniswapV3PoolEventsSwapIterator{contract: _IUniswapV3PoolEvents.contract, event: "Swap", logs: logs, sub: sub}, nil +} + +// WatchSwap is a free log subscription operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *IUniswapV3PoolEventsSwap, sender []common.Address, recipient []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IUniswapV3PoolEvents.contract.WatchLogs(opts, "Swap", senderRule, recipientRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IUniswapV3PoolEventsSwap) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwap is a log parse operation binding the contract event 0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67. +// +// Solidity: event Swap(address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick) +func (_IUniswapV3PoolEvents *IUniswapV3PoolEventsFilterer) ParseSwap(log types.Log) (*IUniswapV3PoolEventsSwap, error) { + event := new(IUniswapV3PoolEventsSwap) + if err := _IUniswapV3PoolEvents.contract.UnpackLog(event, "Swap", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go new file mode 100644 index 00000000..9126c9db --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolimmutables.sol/iuniswapv3poolimmutables.go @@ -0,0 +1,367 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolimmutables + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolImmutablesMetaData contains all meta data concerning the IUniswapV3PoolImmutables contract. +var IUniswapV3PoolImmutablesMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolImmutablesABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolImmutablesMetaData.ABI instead. +var IUniswapV3PoolImmutablesABI = IUniswapV3PoolImmutablesMetaData.ABI + +// IUniswapV3PoolImmutables is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolImmutables struct { + IUniswapV3PoolImmutablesCaller // Read-only binding to the contract + IUniswapV3PoolImmutablesTransactor // Write-only binding to the contract + IUniswapV3PoolImmutablesFilterer // Log filterer for contract events +} + +// IUniswapV3PoolImmutablesCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolImmutablesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolImmutablesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolImmutablesSession struct { + Contract *IUniswapV3PoolImmutables // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolImmutablesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolImmutablesCallerSession struct { + Contract *IUniswapV3PoolImmutablesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolImmutablesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolImmutablesTransactorSession struct { + Contract *IUniswapV3PoolImmutablesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolImmutablesRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesRaw struct { + Contract *IUniswapV3PoolImmutables // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolImmutablesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesCallerRaw struct { + Contract *IUniswapV3PoolImmutablesCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolImmutablesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolImmutablesTransactorRaw struct { + Contract *IUniswapV3PoolImmutablesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolImmutables creates a new instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutables(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolImmutables, error) { + contract, err := bindIUniswapV3PoolImmutables(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutables{IUniswapV3PoolImmutablesCaller: IUniswapV3PoolImmutablesCaller{contract: contract}, IUniswapV3PoolImmutablesTransactor: IUniswapV3PoolImmutablesTransactor{contract: contract}, IUniswapV3PoolImmutablesFilterer: IUniswapV3PoolImmutablesFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolImmutablesCaller creates a new read-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolImmutablesCaller, error) { + contract, err := bindIUniswapV3PoolImmutables(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolImmutablesTransactor creates a new write-only instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolImmutablesTransactor, error) { + contract, err := bindIUniswapV3PoolImmutables(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolImmutablesFilterer creates a new log filterer instance of IUniswapV3PoolImmutables, bound to a specific deployed contract. +func NewIUniswapV3PoolImmutablesFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolImmutablesFilterer, error) { + contract, err := bindIUniswapV3PoolImmutables(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolImmutablesFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolImmutables binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolImmutables(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolImmutablesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.IUniswapV3PoolImmutablesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolImmutables.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolImmutables.Contract.contract.Transact(opts, method, params...) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Factory() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Factory is a free data retrieval call binding the contract method 0xc45a0155. +// +// Solidity: function factory() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Factory() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Factory(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Fee() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Fee() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.Fee(&_IUniswapV3PoolImmutables.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) MaxLiquidityPerTick(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "maxLiquidityPerTick") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) +} + +// MaxLiquidityPerTick is a free data retrieval call binding the contract method 0x70cf754a. +// +// Solidity: function maxLiquidityPerTick() view returns(uint128) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) MaxLiquidityPerTick() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.MaxLiquidityPerTick(&_IUniswapV3PoolImmutables.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) TickSpacing(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "tickSpacing") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) +} + +// TickSpacing is a free data retrieval call binding the contract method 0xd0c93a7c. +// +// Solidity: function tickSpacing() view returns(int24) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) TickSpacing() (*big.Int, error) { + return _IUniswapV3PoolImmutables.Contract.TickSpacing(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token0(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token0") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token0() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token0 is a free data retrieval call binding the contract method 0x0dfe1681. +// +// Solidity: function token0() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token0() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token0(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCaller) Token1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IUniswapV3PoolImmutables.contract.Call(opts, &out, "token1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesSession) Token1() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) +} + +// Token1 is a free data retrieval call binding the contract method 0xd21220a7. +// +// Solidity: function token1() view returns(address) +func (_IUniswapV3PoolImmutables *IUniswapV3PoolImmutablesCallerSession) Token1() (common.Address, error) { + return _IUniswapV3PoolImmutables.Contract.Token1(&_IUniswapV3PoolImmutables.CallOpts) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go new file mode 100644 index 00000000..a5bd7aeb --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolowneractions.sol/iuniswapv3poolowneractions.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolowneractions + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolOwnerActionsMetaData contains all meta data concerning the IUniswapV3PoolOwnerActions contract. +var IUniswapV3PoolOwnerActionsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolOwnerActionsABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolOwnerActionsMetaData.ABI instead. +var IUniswapV3PoolOwnerActionsABI = IUniswapV3PoolOwnerActionsMetaData.ABI + +// IUniswapV3PoolOwnerActions is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActions struct { + IUniswapV3PoolOwnerActionsCaller // Read-only binding to the contract + IUniswapV3PoolOwnerActionsTransactor // Write-only binding to the contract + IUniswapV3PoolOwnerActionsFilterer // Log filterer for contract events +} + +// IUniswapV3PoolOwnerActionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolOwnerActionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolOwnerActionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolOwnerActionsSession struct { + Contract *IUniswapV3PoolOwnerActions // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolOwnerActionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolOwnerActionsCallerSession struct { + Contract *IUniswapV3PoolOwnerActionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolOwnerActionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolOwnerActionsTransactorSession struct { + Contract *IUniswapV3PoolOwnerActionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolOwnerActionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsRaw struct { + Contract *IUniswapV3PoolOwnerActions // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolOwnerActionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsCallerRaw struct { + Contract *IUniswapV3PoolOwnerActionsCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolOwnerActionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolOwnerActionsTransactorRaw struct { + Contract *IUniswapV3PoolOwnerActionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolOwnerActions creates a new instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActions(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolOwnerActions, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActions{IUniswapV3PoolOwnerActionsCaller: IUniswapV3PoolOwnerActionsCaller{contract: contract}, IUniswapV3PoolOwnerActionsTransactor: IUniswapV3PoolOwnerActionsTransactor{contract: contract}, IUniswapV3PoolOwnerActionsFilterer: IUniswapV3PoolOwnerActionsFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolOwnerActionsCaller creates a new read-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolOwnerActionsCaller, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolOwnerActionsTransactor creates a new write-only instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolOwnerActionsTransactor, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolOwnerActionsFilterer creates a new log filterer instance of IUniswapV3PoolOwnerActions, bound to a specific deployed contract. +func NewIUniswapV3PoolOwnerActionsFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolOwnerActionsFilterer, error) { + contract, err := bindIUniswapV3PoolOwnerActions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolOwnerActionsFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolOwnerActions binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolOwnerActions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolOwnerActionsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.IUniswapV3PoolOwnerActionsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolOwnerActions.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.contract.Transact(opts, method, params...) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) CollectProtocol(opts *bind.TransactOpts, recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "collectProtocol", recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// CollectProtocol is a paid mutator transaction binding the contract method 0x85b66729. +// +// Solidity: function collectProtocol(address recipient, uint128 amount0Requested, uint128 amount1Requested) returns(uint128 amount0, uint128 amount1) +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) CollectProtocol(recipient common.Address, amount0Requested *big.Int, amount1Requested *big.Int) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.CollectProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, recipient, amount0Requested, amount1Requested) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactor) SetFeeProtocol(opts *bind.TransactOpts, feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.contract.Transact(opts, "setFeeProtocol", feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) +} + +// SetFeeProtocol is a paid mutator transaction binding the contract method 0x8206a4d1. +// +// Solidity: function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) returns() +func (_IUniswapV3PoolOwnerActions *IUniswapV3PoolOwnerActionsTransactorSession) SetFeeProtocol(feeProtocol0 uint8, feeProtocol1 uint8) (*types.Transaction, error) { + return _IUniswapV3PoolOwnerActions.Contract.SetFeeProtocol(&_IUniswapV3PoolOwnerActions.TransactOpts, feeProtocol0, feeProtocol1) +} diff --git a/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go new file mode 100644 index 00000000..11fc3c9e --- /dev/null +++ b/v1/pkg/uniswap/v3-core/contracts/interfaces/pool/iuniswapv3poolstate.sol/iuniswapv3poolstate.go @@ -0,0 +1,610 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iuniswapv3poolstate + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUniswapV3PoolStateMetaData contains all meta data concerning the IUniswapV3PoolState contract. +var IUniswapV3PoolStateMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", +} + +// IUniswapV3PoolStateABI is the input ABI used to generate the binding from. +// Deprecated: Use IUniswapV3PoolStateMetaData.ABI instead. +var IUniswapV3PoolStateABI = IUniswapV3PoolStateMetaData.ABI + +// IUniswapV3PoolState is an auto generated Go binding around an Ethereum contract. +type IUniswapV3PoolState struct { + IUniswapV3PoolStateCaller // Read-only binding to the contract + IUniswapV3PoolStateTransactor // Write-only binding to the contract + IUniswapV3PoolStateFilterer // Log filterer for contract events +} + +// IUniswapV3PoolStateCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUniswapV3PoolStateFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUniswapV3PoolStateSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUniswapV3PoolStateSession struct { + Contract *IUniswapV3PoolState // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolStateCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUniswapV3PoolStateCallerSession struct { + Contract *IUniswapV3PoolStateCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUniswapV3PoolStateTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUniswapV3PoolStateTransactorSession struct { + Contract *IUniswapV3PoolStateTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUniswapV3PoolStateRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUniswapV3PoolStateRaw struct { + Contract *IUniswapV3PoolState // Generic contract binding to access the raw methods on +} + +// IUniswapV3PoolStateCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateCallerRaw struct { + Contract *IUniswapV3PoolStateCaller // Generic read-only contract binding to access the raw methods on +} + +// IUniswapV3PoolStateTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUniswapV3PoolStateTransactorRaw struct { + Contract *IUniswapV3PoolStateTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUniswapV3PoolState creates a new instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolState(address common.Address, backend bind.ContractBackend) (*IUniswapV3PoolState, error) { + contract, err := bindIUniswapV3PoolState(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUniswapV3PoolState{IUniswapV3PoolStateCaller: IUniswapV3PoolStateCaller{contract: contract}, IUniswapV3PoolStateTransactor: IUniswapV3PoolStateTransactor{contract: contract}, IUniswapV3PoolStateFilterer: IUniswapV3PoolStateFilterer{contract: contract}}, nil +} + +// NewIUniswapV3PoolStateCaller creates a new read-only instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateCaller(address common.Address, caller bind.ContractCaller) (*IUniswapV3PoolStateCaller, error) { + contract, err := bindIUniswapV3PoolState(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateCaller{contract: contract}, nil +} + +// NewIUniswapV3PoolStateTransactor creates a new write-only instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateTransactor(address common.Address, transactor bind.ContractTransactor) (*IUniswapV3PoolStateTransactor, error) { + contract, err := bindIUniswapV3PoolState(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateTransactor{contract: contract}, nil +} + +// NewIUniswapV3PoolStateFilterer creates a new log filterer instance of IUniswapV3PoolState, bound to a specific deployed contract. +func NewIUniswapV3PoolStateFilterer(address common.Address, filterer bind.ContractFilterer) (*IUniswapV3PoolStateFilterer, error) { + contract, err := bindIUniswapV3PoolState(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUniswapV3PoolStateFilterer{contract: contract}, nil +} + +// bindIUniswapV3PoolState binds a generic wrapper to an already deployed contract. +func bindIUniswapV3PoolState(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUniswapV3PoolStateMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolState *IUniswapV3PoolStateRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.IUniswapV3PoolStateTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUniswapV3PoolState.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUniswapV3PoolState *IUniswapV3PoolStateTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUniswapV3PoolState.Contract.contract.Transact(opts, method, params...) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal0X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal0X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal0X128 is a free data retrieval call binding the contract method 0xf3058399. +// +// Solidity: function feeGrowthGlobal0X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal0X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal0X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) FeeGrowthGlobal1X128(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "feeGrowthGlobal1X128") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) +} + +// FeeGrowthGlobal1X128 is a free data retrieval call binding the contract method 0x46141319. +// +// Solidity: function feeGrowthGlobal1X128() view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) FeeGrowthGlobal1X128() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.FeeGrowthGlobal1X128(&_IUniswapV3PoolState.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Liquidity(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "liquidity") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Liquidity() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) +} + +// Liquidity is a free data retrieval call binding the contract method 0x1a686502. +// +// Solidity: function liquidity() view returns(uint128) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Liquidity() (*big.Int, error) { + return _IUniswapV3PoolState.Contract.Liquidity(&_IUniswapV3PoolState.CallOpts) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Observations(opts *bind.CallOpts, index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "observations", index) + + outstruct := new(struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockTimestamp = *abi.ConvertType(out[0], new(uint32)).(*uint32) + outstruct.TickCumulative = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityCumulativeX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.Initialized = *abi.ConvertType(out[3], new(bool)).(*bool) + + return *outstruct, err + +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) +} + +// Observations is a free data retrieval call binding the contract method 0x252c09d7. +// +// Solidity: function observations(uint256 index) view returns(uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Observations(index *big.Int) (struct { + BlockTimestamp uint32 + TickCumulative *big.Int + SecondsPerLiquidityCumulativeX128 *big.Int + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Observations(&_IUniswapV3PoolState.CallOpts, index) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Positions(opts *bind.CallOpts, key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "positions", key) + + outstruct := new(struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Liquidity = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside0LastX128 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthInside1LastX128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.TokensOwed0 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TokensOwed1 = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) +} + +// Positions is a free data retrieval call binding the contract method 0x514ea4bf. +// +// Solidity: function positions(bytes32 key) view returns(uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Positions(key [32]byte) (struct { + Liquidity *big.Int + FeeGrowthInside0LastX128 *big.Int + FeeGrowthInside1LastX128 *big.Int + TokensOwed0 *big.Int + TokensOwed1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.Positions(&_IUniswapV3PoolState.CallOpts, key) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) ProtocolFees(opts *bind.CallOpts) (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "protocolFees") + + outstruct := new(struct { + Token0 *big.Int + Token1 *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Token0 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Token1 = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) +} + +// ProtocolFees is a free data retrieval call binding the contract method 0x1ad8b03b. +// +// Solidity: function protocolFees() view returns(uint128 token0, uint128 token1) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) ProtocolFees() (struct { + Token0 *big.Int + Token1 *big.Int +}, error) { + return _IUniswapV3PoolState.Contract.ProtocolFees(&_IUniswapV3PoolState.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Slot0(opts *bind.CallOpts) (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "slot0") + + outstruct := new(struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.SqrtPriceX96 = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Tick = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.ObservationIndex = *abi.ConvertType(out[2], new(uint16)).(*uint16) + outstruct.ObservationCardinality = *abi.ConvertType(out[3], new(uint16)).(*uint16) + outstruct.ObservationCardinalityNext = *abi.ConvertType(out[4], new(uint16)).(*uint16) + outstruct.FeeProtocol = *abi.ConvertType(out[5], new(uint8)).(*uint8) + outstruct.Unlocked = *abi.ConvertType(out[6], new(bool)).(*bool) + + return *outstruct, err + +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) +} + +// Slot0 is a free data retrieval call binding the contract method 0x3850c7bd. +// +// Solidity: function slot0() view returns(uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Slot0() (struct { + SqrtPriceX96 *big.Int + Tick *big.Int + ObservationIndex uint16 + ObservationCardinality uint16 + ObservationCardinalityNext uint16 + FeeProtocol uint8 + Unlocked bool +}, error) { + return _IUniswapV3PoolState.Contract.Slot0(&_IUniswapV3PoolState.CallOpts) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) TickBitmap(opts *bind.CallOpts, wordPosition int16) (*big.Int, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "tickBitmap", wordPosition) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) +} + +// TickBitmap is a free data retrieval call binding the contract method 0x5339c296. +// +// Solidity: function tickBitmap(int16 wordPosition) view returns(uint256) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) TickBitmap(wordPosition int16) (*big.Int, error) { + return _IUniswapV3PoolState.Contract.TickBitmap(&_IUniswapV3PoolState.CallOpts, wordPosition) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCaller) Ticks(opts *bind.CallOpts, tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + var out []interface{} + err := _IUniswapV3PoolState.contract.Call(opts, &out, "ticks", tick) + + outstruct := new(struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.LiquidityGross = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.LiquidityNet = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside0X128 = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.FeeGrowthOutside1X128 = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.TickCumulativeOutside = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.SecondsPerLiquidityOutsideX128 = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.SecondsOutside = *abi.ConvertType(out[6], new(uint32)).(*uint32) + outstruct.Initialized = *abi.ConvertType(out[7], new(bool)).(*bool) + + return *outstruct, err + +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) +} + +// Ticks is a free data retrieval call binding the contract method 0xf30dba93. +// +// Solidity: function ticks(int24 tick) view returns(uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized) +func (_IUniswapV3PoolState *IUniswapV3PoolStateCallerSession) Ticks(tick *big.Int) (struct { + LiquidityGross *big.Int + LiquidityNet *big.Int + FeeGrowthOutside0X128 *big.Int + FeeGrowthOutside1X128 *big.Int + TickCumulativeOutside *big.Int + SecondsPerLiquidityOutsideX128 *big.Int + SecondsOutside uint32 + Initialized bool +}, error) { + return _IUniswapV3PoolState.Contract.Ticks(&_IUniswapV3PoolState.CallOpts, tick) +} diff --git a/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go b/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go new file mode 100644 index 00000000..1c64cfed --- /dev/null +++ b/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iquoter.sol/iquoter.go @@ -0,0 +1,265 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iquoter + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IQuoterMetaData contains all meta data concerning the IQuoter contract. +var IQuoterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"quoteExactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"quoteExactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IQuoterABI is the input ABI used to generate the binding from. +// Deprecated: Use IQuoterMetaData.ABI instead. +var IQuoterABI = IQuoterMetaData.ABI + +// IQuoter is an auto generated Go binding around an Ethereum contract. +type IQuoter struct { + IQuoterCaller // Read-only binding to the contract + IQuoterTransactor // Write-only binding to the contract + IQuoterFilterer // Log filterer for contract events +} + +// IQuoterCaller is an auto generated read-only Go binding around an Ethereum contract. +type IQuoterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IQuoterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IQuoterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IQuoterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IQuoterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IQuoterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IQuoterSession struct { + Contract *IQuoter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IQuoterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IQuoterCallerSession struct { + Contract *IQuoterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IQuoterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IQuoterTransactorSession struct { + Contract *IQuoterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IQuoterRaw is an auto generated low-level Go binding around an Ethereum contract. +type IQuoterRaw struct { + Contract *IQuoter // Generic contract binding to access the raw methods on +} + +// IQuoterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IQuoterCallerRaw struct { + Contract *IQuoterCaller // Generic read-only contract binding to access the raw methods on +} + +// IQuoterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IQuoterTransactorRaw struct { + Contract *IQuoterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIQuoter creates a new instance of IQuoter, bound to a specific deployed contract. +func NewIQuoter(address common.Address, backend bind.ContractBackend) (*IQuoter, error) { + contract, err := bindIQuoter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IQuoter{IQuoterCaller: IQuoterCaller{contract: contract}, IQuoterTransactor: IQuoterTransactor{contract: contract}, IQuoterFilterer: IQuoterFilterer{contract: contract}}, nil +} + +// NewIQuoterCaller creates a new read-only instance of IQuoter, bound to a specific deployed contract. +func NewIQuoterCaller(address common.Address, caller bind.ContractCaller) (*IQuoterCaller, error) { + contract, err := bindIQuoter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IQuoterCaller{contract: contract}, nil +} + +// NewIQuoterTransactor creates a new write-only instance of IQuoter, bound to a specific deployed contract. +func NewIQuoterTransactor(address common.Address, transactor bind.ContractTransactor) (*IQuoterTransactor, error) { + contract, err := bindIQuoter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IQuoterTransactor{contract: contract}, nil +} + +// NewIQuoterFilterer creates a new log filterer instance of IQuoter, bound to a specific deployed contract. +func NewIQuoterFilterer(address common.Address, filterer bind.ContractFilterer) (*IQuoterFilterer, error) { + contract, err := bindIQuoter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IQuoterFilterer{contract: contract}, nil +} + +// bindIQuoter binds a generic wrapper to an already deployed contract. +func bindIQuoter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IQuoterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IQuoter *IQuoterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IQuoter.Contract.IQuoterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IQuoter *IQuoterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IQuoter.Contract.IQuoterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IQuoter *IQuoterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IQuoter.Contract.IQuoterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IQuoter *IQuoterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IQuoter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IQuoter *IQuoterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IQuoter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IQuoter *IQuoterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IQuoter.Contract.contract.Transact(opts, method, params...) +} + +// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. +// +// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) +func (_IQuoter *IQuoterTransactor) QuoteExactInput(opts *bind.TransactOpts, path []byte, amountIn *big.Int) (*types.Transaction, error) { + return _IQuoter.contract.Transact(opts, "quoteExactInput", path, amountIn) +} + +// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. +// +// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) +func (_IQuoter *IQuoterSession) QuoteExactInput(path []byte, amountIn *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactInput(&_IQuoter.TransactOpts, path, amountIn) +} + +// QuoteExactInput is a paid mutator transaction binding the contract method 0xcdca1753. +// +// Solidity: function quoteExactInput(bytes path, uint256 amountIn) returns(uint256 amountOut) +func (_IQuoter *IQuoterTransactorSession) QuoteExactInput(path []byte, amountIn *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactInput(&_IQuoter.TransactOpts, path, amountIn) +} + +// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. +// +// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) +func (_IQuoter *IQuoterTransactor) QuoteExactInputSingle(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.contract.Transact(opts, "quoteExactInputSingle", tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) +} + +// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. +// +// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) +func (_IQuoter *IQuoterSession) QuoteExactInputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactInputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) +} + +// QuoteExactInputSingle is a paid mutator transaction binding the contract method 0xf7729d43. +// +// Solidity: function quoteExactInputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountIn, uint160 sqrtPriceLimitX96) returns(uint256 amountOut) +func (_IQuoter *IQuoterTransactorSession) QuoteExactInputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountIn *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactInputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96) +} + +// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. +// +// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) +func (_IQuoter *IQuoterTransactor) QuoteExactOutput(opts *bind.TransactOpts, path []byte, amountOut *big.Int) (*types.Transaction, error) { + return _IQuoter.contract.Transact(opts, "quoteExactOutput", path, amountOut) +} + +// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. +// +// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) +func (_IQuoter *IQuoterSession) QuoteExactOutput(path []byte, amountOut *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactOutput(&_IQuoter.TransactOpts, path, amountOut) +} + +// QuoteExactOutput is a paid mutator transaction binding the contract method 0x2f80bb1d. +// +// Solidity: function quoteExactOutput(bytes path, uint256 amountOut) returns(uint256 amountIn) +func (_IQuoter *IQuoterTransactorSession) QuoteExactOutput(path []byte, amountOut *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactOutput(&_IQuoter.TransactOpts, path, amountOut) +} + +// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. +// +// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) +func (_IQuoter *IQuoterTransactor) QuoteExactOutputSingle(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.contract.Transact(opts, "quoteExactOutputSingle", tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) +} + +// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. +// +// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) +func (_IQuoter *IQuoterSession) QuoteExactOutputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactOutputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) +} + +// QuoteExactOutputSingle is a paid mutator transaction binding the contract method 0x30d07f21. +// +// Solidity: function quoteExactOutputSingle(address tokenIn, address tokenOut, uint24 fee, uint256 amountOut, uint160 sqrtPriceLimitX96) returns(uint256 amountIn) +func (_IQuoter *IQuoterTransactorSession) QuoteExactOutputSingle(tokenIn common.Address, tokenOut common.Address, fee *big.Int, amountOut *big.Int, sqrtPriceLimitX96 *big.Int) (*types.Transaction, error) { + return _IQuoter.Contract.QuoteExactOutputSingle(&_IQuoter.TransactOpts, tokenIn, tokenOut, fee, amountOut, sqrtPriceLimitX96) +} diff --git a/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go b/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go new file mode 100644 index 00000000..b50bc355 --- /dev/null +++ b/v1/pkg/uniswap/v3-periphery/contracts/interfaces/iswaprouter.sol/iswaprouter.go @@ -0,0 +1,328 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iswaprouter + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ISwapRouterExactInputParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterExactInputParams struct { + Path []byte + Recipient common.Address + Deadline *big.Int + AmountIn *big.Int + AmountOutMinimum *big.Int +} + +// ISwapRouterExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterExactInputSingleParams struct { + TokenIn common.Address + TokenOut common.Address + Fee *big.Int + Recipient common.Address + Deadline *big.Int + AmountIn *big.Int + AmountOutMinimum *big.Int + SqrtPriceLimitX96 *big.Int +} + +// ISwapRouterExactOutputParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterExactOutputParams struct { + Path []byte + Recipient common.Address + Deadline *big.Int + AmountOut *big.Int + AmountInMaximum *big.Int +} + +// ISwapRouterExactOutputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterExactOutputSingleParams struct { + TokenIn common.Address + TokenOut common.Address + Fee *big.Int + Recipient common.Address + Deadline *big.Int + AmountOut *big.Int + AmountInMaximum *big.Int + SqrtPriceLimitX96 *big.Int +} + +// ISwapRouterMetaData contains all meta data concerning the ISwapRouter contract. +var ISwapRouterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ISwapRouterABI is the input ABI used to generate the binding from. +// Deprecated: Use ISwapRouterMetaData.ABI instead. +var ISwapRouterABI = ISwapRouterMetaData.ABI + +// ISwapRouter is an auto generated Go binding around an Ethereum contract. +type ISwapRouter struct { + ISwapRouterCaller // Read-only binding to the contract + ISwapRouterTransactor // Write-only binding to the contract + ISwapRouterFilterer // Log filterer for contract events +} + +// ISwapRouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISwapRouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISwapRouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISwapRouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISwapRouterSession struct { + Contract *ISwapRouter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISwapRouterCallerSession struct { + Contract *ISwapRouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISwapRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISwapRouterTransactorSession struct { + Contract *ISwapRouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISwapRouterRaw struct { + Contract *ISwapRouter // Generic contract binding to access the raw methods on +} + +// ISwapRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISwapRouterCallerRaw struct { + Contract *ISwapRouterCaller // Generic read-only contract binding to access the raw methods on +} + +// ISwapRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISwapRouterTransactorRaw struct { + Contract *ISwapRouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISwapRouter creates a new instance of ISwapRouter, bound to a specific deployed contract. +func NewISwapRouter(address common.Address, backend bind.ContractBackend) (*ISwapRouter, error) { + contract, err := bindISwapRouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISwapRouter{ISwapRouterCaller: ISwapRouterCaller{contract: contract}, ISwapRouterTransactor: ISwapRouterTransactor{contract: contract}, ISwapRouterFilterer: ISwapRouterFilterer{contract: contract}}, nil +} + +// NewISwapRouterCaller creates a new read-only instance of ISwapRouter, bound to a specific deployed contract. +func NewISwapRouterCaller(address common.Address, caller bind.ContractCaller) (*ISwapRouterCaller, error) { + contract, err := bindISwapRouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISwapRouterCaller{contract: contract}, nil +} + +// NewISwapRouterTransactor creates a new write-only instance of ISwapRouter, bound to a specific deployed contract. +func NewISwapRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*ISwapRouterTransactor, error) { + contract, err := bindISwapRouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISwapRouterTransactor{contract: contract}, nil +} + +// NewISwapRouterFilterer creates a new log filterer instance of ISwapRouter, bound to a specific deployed contract. +func NewISwapRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*ISwapRouterFilterer, error) { + contract, err := bindISwapRouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISwapRouterFilterer{contract: contract}, nil +} + +// bindISwapRouter binds a generic wrapper to an already deployed contract. +func bindISwapRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISwapRouterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouter *ISwapRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouter.Contract.ISwapRouterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouter *ISwapRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouter.Contract.ISwapRouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouter *ISwapRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouter.Contract.ISwapRouterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouter *ISwapRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouter *ISwapRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouter *ISwapRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouter.Contract.contract.Transact(opts, method, params...) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. +// +// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterTransactor) ExactInput(opts *bind.TransactOpts, params ISwapRouterExactInputParams) (*types.Transaction, error) { + return _ISwapRouter.contract.Transact(opts, "exactInput", params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. +// +// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterSession) ExactInput(params ISwapRouterExactInputParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactInput(&_ISwapRouter.TransactOpts, params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xc04b8d59. +// +// Solidity: function exactInput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterTransactorSession) ExactInput(params ISwapRouterExactInputParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactInput(&_ISwapRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterTransactor) ExactInputSingle(opts *bind.TransactOpts, params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.contract.Transact(opts, "exactInputSingle", params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterSession) ExactInputSingle(params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactInputSingle(&_ISwapRouter.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x414bf389. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouter *ISwapRouterTransactorSession) ExactInputSingle(params ISwapRouterExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactInputSingle(&_ISwapRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. +// +// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterTransactor) ExactOutput(opts *bind.TransactOpts, params ISwapRouterExactOutputParams) (*types.Transaction, error) { + return _ISwapRouter.contract.Transact(opts, "exactOutput", params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. +// +// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterSession) ExactOutput(params ISwapRouterExactOutputParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactOutput(&_ISwapRouter.TransactOpts, params) +} + +// ExactOutput is a paid mutator transaction binding the contract method 0xf28c0498. +// +// Solidity: function exactOutput((bytes,address,uint256,uint256,uint256) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterTransactorSession) ExactOutput(params ISwapRouterExactOutputParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactOutput(&_ISwapRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. +// +// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterTransactor) ExactOutputSingle(opts *bind.TransactOpts, params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.contract.Transact(opts, "exactOutputSingle", params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. +// +// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterSession) ExactOutputSingle(params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactOutputSingle(&_ISwapRouter.TransactOpts, params) +} + +// ExactOutputSingle is a paid mutator transaction binding the contract method 0xdb3e2198. +// +// Solidity: function exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160) params) payable returns(uint256 amountIn) +func (_ISwapRouter *ISwapRouterTransactorSession) ExactOutputSingle(params ISwapRouterExactOutputSingleParams) (*types.Transaction, error) { + return _ISwapRouter.Contract.ExactOutputSingle(&_ISwapRouter.TransactOpts, params) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouter *ISwapRouterTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouter.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouter *ISwapRouterSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouter.Contract.UniswapV3SwapCallback(&_ISwapRouter.TransactOpts, amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouter *ISwapRouterTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouter.Contract.UniswapV3SwapCallback(&_ISwapRouter.TransactOpts, amount0Delta, amount1Delta, data) +} diff --git a/v1/typechain-types/hardhat.d.ts b/v1/typechain-types/hardhat.d.ts index 42e43d12..ddb1792a 100644 --- a/v1/typechain-types/hardhat.d.ts +++ b/v1/typechain-types/hardhat.d.ts @@ -300,98 +300,6 @@ declare module "hardhat/types/runtime" { name: "ZetaConnectorNonEth", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC20CustodyNew", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayEVMUpgradeTest", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20CustodyNewErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20CustodyNewEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVMErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Revertable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IReceiverEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IZetaConnectorEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IZetaNonEthNew", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ReceiverEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TestERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNative", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNewBase", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorNonNative", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatewayZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVMErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IGatewayZEVMEvents", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SenderZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TestZContract", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ISystem", signerOrOptions?: ethers.Signer | FactoryOptions @@ -833,121 +741,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC20CustodyNew", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayEVMUpgradeTest", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20CustodyNewErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20CustodyNewEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVMErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Revertable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IReceiverEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IZetaConnectorEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IZetaNonEthNew", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ReceiverEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TestERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNative", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNewBase", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorNonNative", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatewayZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVMErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IGatewayZEVMEvents", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SenderZEVM", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TestZContract", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ISystem", address: string, diff --git a/v1/typechain-types/index.ts b/v1/typechain-types/index.ts index ed1e7c0b..01624e90 100644 --- a/v1/typechain-types/index.ts +++ b/v1/typechain-types/index.ts @@ -140,52 +140,6 @@ export type { ZetaConnectorEth } from "./contracts/evm/ZetaConnector.eth.sol/Zet export { ZetaConnectorEth__factory } from "./factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory"; export type { ZetaConnectorNonEth } from "./contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth"; export { ZetaConnectorNonEth__factory } from "./factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory"; -export type { ERC20CustodyNew } from "./contracts/prototypes/evm/ERC20CustodyNew"; -export { ERC20CustodyNew__factory } from "./factories/contracts/prototypes/evm/ERC20CustodyNew__factory"; -export type { GatewayEVM } from "./contracts/prototypes/evm/GatewayEVM"; -export { GatewayEVM__factory } from "./factories/contracts/prototypes/evm/GatewayEVM__factory"; -export type { GatewayEVMUpgradeTest } from "./contracts/prototypes/evm/GatewayEVMUpgradeTest"; -export { GatewayEVMUpgradeTest__factory } from "./factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory"; -export type { IERC20CustodyNewErrors } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; -export { IERC20CustodyNewErrors__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory"; -export type { IERC20CustodyNewEvents } from "./contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; -export { IERC20CustodyNewEvents__factory } from "./factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory"; -export type { IGatewayEVM } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM"; -export { IGatewayEVM__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory"; -export type { IGatewayEVMErrors } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors"; -export { IGatewayEVMErrors__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory"; -export type { IGatewayEVMEvents } from "./contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents"; -export { IGatewayEVMEvents__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory"; -export type { Revertable } from "./contracts/prototypes/evm/IGatewayEVM.sol/Revertable"; -export { Revertable__factory } from "./factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory"; -export type { IReceiverEVMEvents } from "./contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents"; -export { IReceiverEVMEvents__factory } from "./factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory"; -export type { IZetaConnectorEvents } from "./contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; -export { IZetaConnectorEvents__factory } from "./factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory"; -export type { IZetaNonEthNew } from "./contracts/prototypes/evm/IZetaNonEthNew"; -export { IZetaNonEthNew__factory } from "./factories/contracts/prototypes/evm/IZetaNonEthNew__factory"; -export type { ReceiverEVM } from "./contracts/prototypes/evm/ReceiverEVM"; -export { ReceiverEVM__factory } from "./factories/contracts/prototypes/evm/ReceiverEVM__factory"; -export type { TestERC20 } from "./contracts/prototypes/evm/TestERC20"; -export { TestERC20__factory } from "./factories/contracts/prototypes/evm/TestERC20__factory"; -export type { ZetaConnectorNative } from "./contracts/prototypes/evm/ZetaConnectorNative"; -export { ZetaConnectorNative__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNative__factory"; -export type { ZetaConnectorNewBase } from "./contracts/prototypes/evm/ZetaConnectorNewBase"; -export { ZetaConnectorNewBase__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory"; -export type { ZetaConnectorNonNative } from "./contracts/prototypes/evm/ZetaConnectorNonNative"; -export { ZetaConnectorNonNative__factory } from "./factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory"; -export type { GatewayZEVM } from "./contracts/prototypes/zevm/GatewayZEVM"; -export { GatewayZEVM__factory } from "./factories/contracts/prototypes/zevm/GatewayZEVM__factory"; -export type { IGatewayZEVM } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM"; -export { IGatewayZEVM__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory"; -export type { IGatewayZEVMErrors } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors"; -export { IGatewayZEVMErrors__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory"; -export type { IGatewayZEVMEvents } from "./contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents"; -export { IGatewayZEVMEvents__factory } from "./factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory"; -export type { SenderZEVM } from "./contracts/prototypes/zevm/SenderZEVM"; -export { SenderZEVM__factory } from "./factories/contracts/prototypes/zevm/SenderZEVM__factory"; -export type { TestZContract } from "./contracts/prototypes/zevm/TestZContract"; -export { TestZContract__factory } from "./factories/contracts/prototypes/zevm/TestZContract__factory"; export type { ISystem } from "./contracts/zevm/interfaces/ISystem"; export { ISystem__factory } from "./factories/contracts/zevm/interfaces/ISystem__factory"; export type { IWETH9 } from "./contracts/zevm/interfaces/IWZETA.sol/IWETH9"; From 3d6a870113390d6e67177be1bbacbbbe40101075 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 22:55:12 +0200 Subject: [PATCH 24/60] cleanup --- contracts/prototypes/evm/IERC20CustodyNew.sol | 36 - contracts/prototypes/evm/IZetaConnector.sol | 23 - .../ierc20custodynewerrors.go | 181 ----- .../ierc20custodynewevents.go | 645 ------------------ .../izetaconnectorevents.go | 618 ----------------- .../IERC20CustodyNewErrors.ts | 56 -- .../IERC20CustodyNewEvents.ts | 140 ---- .../evm/IERC20CustodyNew.sol/index.ts | 5 - .../IZetaConnectorEvents.ts | 131 ---- .../evm/IZetaConnector.sol/index.ts | 4 - .../IERC20CustodyNewErrors__factory.ts | 40 -- .../IERC20CustodyNewEvents__factory.ts | 117 ---- .../evm/IERC20CustodyNew.sol/index.ts | 5 - .../IZetaConnectorEvents__factory.ts | 99 --- .../evm/IZetaConnector.sol/index.ts | 4 - 15 files changed, 2104 deletions(-) delete mode 100644 contracts/prototypes/evm/IERC20CustodyNew.sol delete mode 100644 contracts/prototypes/evm/IZetaConnector.sol delete mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go delete mode 100644 pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go delete mode 100644 pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go delete mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts delete mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts delete mode 100644 typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts delete mode 100644 typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts delete mode 100644 typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts delete mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts delete mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts delete mode 100644 typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts delete mode 100644 typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts delete mode 100644 typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts diff --git a/contracts/prototypes/evm/IERC20CustodyNew.sol b/contracts/prototypes/evm/IERC20CustodyNew.sol deleted file mode 100644 index add4b3cf..00000000 --- a/contracts/prototypes/evm/IERC20CustodyNew.sol +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/// @title IERC20CustodyNewEvents -/// @notice Interface for the events emitted by the ERC20 custody contract. -interface IERC20CustodyNewEvents { - /// @notice Emitted when tokens are withdrawn. - /// @param token The address of the ERC20 token. - /// @param to The address receiving the tokens. - /// @param amount The amount of tokens withdrawn. - event Withdraw(address indexed token, address indexed to, uint256 amount); - - /// @notice Emitted when tokens are withdrawn and a contract call is made. - /// @param token The address of the ERC20 token. - /// @param to The address receiving the tokens. - /// @param amount The amount of tokens withdrawn. - /// @param data The calldata passed to the contract call. - event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); - - /// @notice Emitted when tokens are withdrawn and a revertable contract call is made. - /// @param token The address of the ERC20 token. - /// @param to The address receiving the tokens. - /// @param amount The amount of tokens withdrawn. - /// @param data The calldata passed to the contract call. - event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); -} - -/// @title IERC20CustodyNewErrors -/// @notice Interface for the errors used in the ERC20 custody contract. -interface IERC20CustodyNewErrors { - /// @notice Error for zero address input. - error ZeroAddress(); - - /// @notice Error for invalid sender. - error InvalidSender(); -} \ No newline at end of file diff --git a/contracts/prototypes/evm/IZetaConnector.sol b/contracts/prototypes/evm/IZetaConnector.sol deleted file mode 100644 index 9a3acf30..00000000 --- a/contracts/prototypes/evm/IZetaConnector.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/// @title IZetaConnectorEvents -/// @notice Interface for the events emitted by the ZetaConnector contracts. -interface IZetaConnectorEvents { - /// @notice Emitted when tokens are withdrawn. - /// @param to The address to which the tokens are withdrawn. - /// @param amount The amount of tokens withdrawn. - event Withdraw(address indexed to, uint256 amount); - - /// @notice Emitted when tokens are withdrawn and a contract is called. - /// @param to The address to which the tokens are withdrawn. - /// @param amount The amount of tokens withdrawn. - /// @param data The calldata passed to the contract call. - event WithdrawAndCall(address indexed to, uint256 amount, bytes data); - - /// @notice Emitted when tokens are withdrawn and a contract is called with a revert callback. - /// @param to The address to which the tokens are withdrawn. - /// @param amount The amount of tokens withdrawn. - /// @param data The calldata passed to the contract call. - event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); -} diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go deleted file mode 100644 index d3f0af38..00000000 --- a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20CustodyNewErrorsMetaData contains all meta data concerning the IERC20CustodyNewErrors contract. -var IERC20CustodyNewErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"}]", -} - -// IERC20CustodyNewErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewErrorsMetaData.ABI instead. -var IERC20CustodyNewErrorsABI = IERC20CustodyNewErrorsMetaData.ABI - -// IERC20CustodyNewErrors is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewErrors struct { - IERC20CustodyNewErrorsCaller // Read-only binding to the contract - IERC20CustodyNewErrorsTransactor // Write-only binding to the contract - IERC20CustodyNewErrorsFilterer // Log filterer for contract events -} - -// IERC20CustodyNewErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20CustodyNewErrorsSession struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CustodyNewErrorsCallerSession struct { - Contract *IERC20CustodyNewErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20CustodyNewErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20CustodyNewErrorsTransactorSession struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsRaw struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCallerRaw struct { - Contract *IERC20CustodyNewErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactorRaw struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20CustodyNewErrors creates a new instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewErrors, error) { - contract, err := bindIERC20CustodyNewErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrors{IERC20CustodyNewErrorsCaller: IERC20CustodyNewErrorsCaller{contract: contract}, IERC20CustodyNewErrorsTransactor: IERC20CustodyNewErrorsTransactor{contract: contract}, IERC20CustodyNewErrorsFilterer: IERC20CustodyNewErrorsFilterer{contract: contract}}, nil -} - -// NewIERC20CustodyNewErrorsCaller creates a new read-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewErrorsCaller, error) { - contract, err := bindIERC20CustodyNewErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsCaller{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsTransactor creates a new write-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewErrorsTransactor, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsTransactor{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsFilterer creates a new log filterer instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewErrorsFilterer, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsFilterer{contract: contract}, nil -} - -// bindIERC20CustodyNewErrors binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go b/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go deleted file mode 100644 index bae33183..00000000 --- a/pkg/contracts/prototypes/evm/ierc20custodynew.sol/ierc20custodynewevents.go +++ /dev/null @@ -1,645 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20CustodyNewEventsMetaData contains all meta data concerning the IERC20CustodyNewEvents contract. -var IERC20CustodyNewEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", -} - -// IERC20CustodyNewEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewEventsMetaData.ABI instead. -var IERC20CustodyNewEventsABI = IERC20CustodyNewEventsMetaData.ABI - -// IERC20CustodyNewEvents is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewEvents struct { - IERC20CustodyNewEventsCaller // Read-only binding to the contract - IERC20CustodyNewEventsTransactor // Write-only binding to the contract - IERC20CustodyNewEventsFilterer // Log filterer for contract events -} - -// IERC20CustodyNewEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20CustodyNewEventsSession struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CustodyNewEventsCallerSession struct { - Contract *IERC20CustodyNewEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20CustodyNewEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20CustodyNewEventsTransactorSession struct { - Contract *IERC20CustodyNewEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewEventsRaw struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to access the raw methods on -} - -// IERC20CustodyNewEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCallerRaw struct { - Contract *IERC20CustodyNewEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20CustodyNewEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactorRaw struct { - Contract *IERC20CustodyNewEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20CustodyNewEvents creates a new instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewEvents, error) { - contract, err := bindIERC20CustodyNewEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEvents{IERC20CustodyNewEventsCaller: IERC20CustodyNewEventsCaller{contract: contract}, IERC20CustodyNewEventsTransactor: IERC20CustodyNewEventsTransactor{contract: contract}, IERC20CustodyNewEventsFilterer: IERC20CustodyNewEventsFilterer{contract: contract}}, nil -} - -// NewIERC20CustodyNewEventsCaller creates a new read-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewEventsCaller, error) { - contract, err := bindIERC20CustodyNewEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsCaller{contract: contract}, nil -} - -// NewIERC20CustodyNewEventsTransactor creates a new write-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewEventsTransactor, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsTransactor{contract: contract}, nil -} - -// NewIERC20CustodyNewEventsFilterer creates a new log filterer instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewEventsFilterer, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsFilterer{contract: contract}, nil -} - -// bindIERC20CustodyNewEvents binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transact(opts, method, params...) -} - -// IERC20CustodyNewEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawIterator struct { - Event *IERC20CustodyNewEventsWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdraw represents a Withdraw event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdraw struct { - Token common.Address - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawIterator{contract: _IERC20CustodyNewEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. -// -// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyNewEventsWithdraw, error) { - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20CustodyNewEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCallIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCall struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndCallIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawAndCallIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. -// -// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyNewEventsWithdrawAndCall, error) { - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IERC20CustodyNewEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IERC20CustodyNewEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevert struct { - Token common.Address - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndRevertIterator, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return &IERC20CustodyNewEventsWithdrawAndRevertIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { - - var tokenRule []interface{} - for _, tokenItem := range token { - tokenRule = append(tokenRule, tokenItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. -// -// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyNewEventsWithdrawAndRevert, error) { - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go b/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go deleted file mode 100644 index ecd0bb09..00000000 --- a/pkg/contracts/prototypes/evm/izetaconnector.sol/izetaconnectorevents.go +++ /dev/null @@ -1,618 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package izetaconnector - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IZetaConnectorEventsMetaData contains all meta data concerning the IZetaConnectorEvents contract. -var IZetaConnectorEventsMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"}]", -} - -// IZetaConnectorEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IZetaConnectorEventsMetaData.ABI instead. -var IZetaConnectorEventsABI = IZetaConnectorEventsMetaData.ABI - -// IZetaConnectorEvents is an auto generated Go binding around an Ethereum contract. -type IZetaConnectorEvents struct { - IZetaConnectorEventsCaller // Read-only binding to the contract - IZetaConnectorEventsTransactor // Write-only binding to the contract - IZetaConnectorEventsFilterer // Log filterer for contract events -} - -// IZetaConnectorEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IZetaConnectorEventsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IZetaConnectorEventsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IZetaConnectorEventsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IZetaConnectorEventsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IZetaConnectorEventsSession struct { - Contract *IZetaConnectorEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaConnectorEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IZetaConnectorEventsCallerSession struct { - Contract *IZetaConnectorEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IZetaConnectorEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IZetaConnectorEventsTransactorSession struct { - Contract *IZetaConnectorEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IZetaConnectorEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IZetaConnectorEventsRaw struct { - Contract *IZetaConnectorEvents // Generic contract binding to access the raw methods on -} - -// IZetaConnectorEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IZetaConnectorEventsCallerRaw struct { - Contract *IZetaConnectorEventsCaller // Generic read-only contract binding to access the raw methods on -} - -// IZetaConnectorEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IZetaConnectorEventsTransactorRaw struct { - Contract *IZetaConnectorEventsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIZetaConnectorEvents creates a new instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEvents(address common.Address, backend bind.ContractBackend) (*IZetaConnectorEvents, error) { - contract, err := bindIZetaConnectorEvents(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IZetaConnectorEvents{IZetaConnectorEventsCaller: IZetaConnectorEventsCaller{contract: contract}, IZetaConnectorEventsTransactor: IZetaConnectorEventsTransactor{contract: contract}, IZetaConnectorEventsFilterer: IZetaConnectorEventsFilterer{contract: contract}}, nil -} - -// NewIZetaConnectorEventsCaller creates a new read-only instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsCaller(address common.Address, caller bind.ContractCaller) (*IZetaConnectorEventsCaller, error) { - contract, err := bindIZetaConnectorEvents(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsCaller{contract: contract}, nil -} - -// NewIZetaConnectorEventsTransactor creates a new write-only instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaConnectorEventsTransactor, error) { - contract, err := bindIZetaConnectorEvents(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsTransactor{contract: contract}, nil -} - -// NewIZetaConnectorEventsFilterer creates a new log filterer instance of IZetaConnectorEvents, bound to a specific deployed contract. -func NewIZetaConnectorEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaConnectorEventsFilterer, error) { - contract, err := bindIZetaConnectorEvents(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsFilterer{contract: contract}, nil -} - -// bindIZetaConnectorEvents binds a generic wrapper to an already deployed contract. -func bindIZetaConnectorEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IZetaConnectorEventsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IZetaConnectorEvents *IZetaConnectorEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IZetaConnectorEvents.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IZetaConnectorEvents.Contract.contract.Transact(opts, method, params...) -} - -// IZetaConnectorEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawIterator struct { - Event *IZetaConnectorEventsWithdraw // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdraw) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdraw represents a Withdraw event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdraw struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawIterator{contract: _IZetaConnectorEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil -} - -// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdraw, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "Withdraw", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdraw) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. -// -// Solidity: event Withdraw(address indexed to, uint256 amount) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdraw(log types.Log) (*IZetaConnectorEventsWithdraw, error) { - event := new(IZetaConnectorEventsWithdraw) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IZetaConnectorEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndCallIterator struct { - Event *IZetaConnectorEventsWithdrawAndCall // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndCall) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawAndCallIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndCall struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndCallIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawAndCallIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndCall, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndCall", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdrawAndCall) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. -// -// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IZetaConnectorEventsWithdrawAndCall, error) { - event := new(IZetaConnectorEventsWithdrawAndCall) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// IZetaConnectorEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndRevertIterator struct { - Event *IZetaConnectorEventsWithdrawAndRevert // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(IZetaConnectorEventsWithdrawAndRevert) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// IZetaConnectorEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IZetaConnectorEvents contract. -type IZetaConnectorEventsWithdrawAndRevert struct { - To common.Address - Amount *big.Int - Data []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndRevertIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return &IZetaConnectorEventsWithdrawAndRevertIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil -} - -// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndRevert, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(IZetaConnectorEventsWithdrawAndRevert) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. -// -// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IZetaConnectorEventsWithdrawAndRevert, error) { - event := new(IZetaConnectorEventsWithdrawAndRevert) - if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts deleted file mode 100644 index 6791a1db..00000000 --- a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20CustodyNewErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IERC20CustodyNewErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20CustodyNewErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts deleted file mode 100644 index 68bcc9d8..00000000 --- a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20CustodyNewEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface IERC20CustodyNewEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20CustodyNewEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 8106a206..00000000 --- a/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC20CustodyNewErrors } from "./IERC20CustodyNewErrors"; -export type { IERC20CustodyNewEvents } from "./IERC20CustodyNewEvents"; diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts deleted file mode 100644 index 555e26e0..00000000 --- a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IZetaConnectorEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface IZetaConnectorEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IZetaConnectorEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts deleted file mode 100644 index eb97bbe0..00000000 --- a/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IZetaConnectorEvents } from "./IZetaConnectorEvents"; diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts deleted file mode 100644 index d751d847..00000000 --- a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20CustodyNewErrors, - IERC20CustodyNewErrorsInterface, -} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; - -const _abi = [ - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, -] as const; - -export class IERC20CustodyNewErrors__factory { - static readonly abi = _abi; - static createInterface(): IERC20CustodyNewErrorsInterface { - return new utils.Interface(_abi) as IERC20CustodyNewErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC20CustodyNewErrors { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC20CustodyNewErrors; - } -} diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts deleted file mode 100644 index aff1dbc0..00000000 --- a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20CustodyNewEvents, - IERC20CustodyNewEventsInterface, -} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, -] as const; - -export class IERC20CustodyNewEvents__factory { - static readonly abi = _abi; - static createInterface(): IERC20CustodyNewEventsInterface { - return new utils.Interface(_abi) as IERC20CustodyNewEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC20CustodyNewEvents { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC20CustodyNewEvents; - } -} diff --git a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 9f3d2112..00000000 --- a/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC20CustodyNewErrors__factory } from "./IERC20CustodyNewErrors__factory"; -export { IERC20CustodyNewEvents__factory } from "./IERC20CustodyNewEvents__factory"; diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts deleted file mode 100644 index c7408d4c..00000000 --- a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IZetaConnectorEvents, - IZetaConnectorEventsInterface, -} from "../../../../../contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, -] as const; - -export class IZetaConnectorEvents__factory { - static readonly abi = _abi; - static createInterface(): IZetaConnectorEventsInterface { - return new utils.Interface(_abi) as IZetaConnectorEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IZetaConnectorEvents { - return new Contract( - address, - _abi, - signerOrProvider - ) as IZetaConnectorEvents; - } -} diff --git a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts deleted file mode 100644 index a60ddc89..00000000 --- a/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IZetaConnectorEvents__factory } from "./IZetaConnectorEvents__factory"; From 3d736e50cccd725befc32429f2c971f878de5669 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:24:42 +0200 Subject: [PATCH 25/60] conflicts --- v2/src/evm/ERC20CustodyNew.sol | 6 +-- v2/src/evm/GatewayEVM.sol | 11 +---- v2/src/evm/ZetaConnectorNewBase.sol | 50 +++++++++++++--------- v2/src/evm/interfaces/IERC20CustodyNew.sol | 25 ++++++++++- v2/src/evm/interfaces/IZetaConnector.sol | 15 +++++++ v2/src/evm/interfaces/IZetaNonEthNew.sol | 4 +- v2/src/zevm/interfaces/ISystem.sol | 6 +-- v2/src/zevm/interfaces/IWZeta.sol | 2 + v2/src/zevm/interfaces/IZRC20.sol | 6 +++ v2/test/GatewayEVM.t.sol | 19 ++++---- v2/test/GatewayEVMUpgrade.t.sol | 10 +++-- v2/test/ZetaConnectorNative.t.sol | 20 +++------ v2/test/utils/GatewayEVMUpgradeTest.sol | 12 ++---- 13 files changed, 114 insertions(+), 72 deletions(-) diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol index 00da7d05..5e269135 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -4,13 +4,9 @@ pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; - import "./interfaces//IGatewayEVM.sol"; import "./interfaces/IERC20CustodyNew.sol"; -import "./IGatewayEVM.sol"; -import "./IERC20CustodyNew.sol"; - /// @title ERC20CustodyNew /// @notice Holds the ERC20 tokens deposited on ZetaChain and includes functionality to call a contract. /// @dev This contract does not call smart contracts directly, it passes through the Gateway contract. @@ -80,4 +76,4 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen emit WithdrawAndRevert(token, to, amount, data); } -} +} \ No newline at end of file diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index 84be7fa4..0e707593 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -1,21 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; import "./ZetaConnectorNewBase.sol"; import "./interfaces/IGatewayEVM.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; - -import "./IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; /// @title GatewayEVM /// @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol index 67ab2a57..bf1a0fe2 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -5,20 +5,28 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./interfaces/IGatewayEVM.sol"; -import "./interfaces/IZetaConnector.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/interfaces/IZetaConnector.sol"; +/// @title ZetaConnectorNewBase +/// @notice Abstract base contract for ZetaConnector. +/// @dev This contract implements basic functionality for handling tokens and interacting with the Gateway contract. abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { using SafeERC20 for IERC20; + /// @notice Error indicating that a zero address was provided. error ZeroAddress(); + /// @notice Error indicating that the sender is invalid. error InvalidSender(); + /// @notice The Gateway contract used for executing cross-chain calls. IGatewayEVM public immutable gateway; + /// @notice The address of the Zeta token. address public immutable zetaToken; + /// @notice The address of the TSS (Threshold Signature Scheme) contract. address public tssAddress; - // @dev Only TSS address allowed modifier. + /// @dev Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { revert InvalidSender(); @@ -35,25 +43,27 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard tssAddress = _tssAddress; } + /// @notice Withdraw tokens to a specified address. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param internalSendHash A hash used for internal tracking of the transaction. function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; - function withdrawAndCall( - address to, - uint256 amount, - bytes calldata data, - bytes32 internalSendHash - ) - external - virtual; - - function withdrawAndRevert( - address to, - uint256 amount, - bytes calldata data, - bytes32 internalSendHash - ) - external - virtual; + /// @notice Withdraw tokens and call a contract through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + /// @notice Withdraw tokens and call a contract with a revert callback through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + + /// @notice Handle received tokens. + /// @param amount The amount of tokens received. function receiveTokens(uint256 amount) external virtual; } diff --git a/v2/src/evm/interfaces/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20CustodyNew.sol index fa762ef3..027758bc 100644 --- a/v2/src/evm/interfaces/IERC20CustodyNew.sol +++ b/v2/src/evm/interfaces/IERC20CustodyNew.sol @@ -1,13 +1,36 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +/// @title IERC20CustodyNewEvents +/// @notice Interface for the events emitted by the ERC20 custody contract. interface IERC20CustodyNewEvents { + /// @notice Emitted when tokens are withdrawn. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. event Withdraw(address indexed token, address indexed to, uint256 amount); + + /// @notice Emitted when tokens are withdrawn and a contract call is made. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when tokens are withdrawn and a revertable contract call is made. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); } +/// @title IERC20CustodyNewErrors +/// @notice Interface for the errors used in the ERC20 custody contract. interface IERC20CustodyNewErrors { + /// @notice Error for zero address input. error ZeroAddress(); + + /// @notice Error for invalid sender. error InvalidSender(); -} +} \ No newline at end of file diff --git a/v2/src/evm/interfaces/IZetaConnector.sol b/v2/src/evm/interfaces/IZetaConnector.sol index 615fadd6..b53a1eb7 100644 --- a/v2/src/evm/interfaces/IZetaConnector.sol +++ b/v2/src/evm/interfaces/IZetaConnector.sol @@ -1,8 +1,23 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +/// @title IZetaConnectorEvents +/// @notice Interface for the events emitted by the ZetaConnector contracts. interface IZetaConnectorEvents { + /// @notice Emitted when tokens are withdrawn. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. event Withdraw(address indexed to, uint256 amount); + + /// @notice Emitted when tokens are withdrawn and a contract is called. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndCall(address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when tokens are withdrawn and a contract is called with a revert callback. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); } diff --git a/v2/src/evm/interfaces/IZetaNonEthNew.sol b/v2/src/evm/interfaces/IZetaNonEthNew.sol index 41003757..a92f833f 100644 --- a/v2/src/evm/interfaces/IZetaNonEthNew.sol +++ b/v2/src/evm/interfaces/IZetaNonEthNew.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; @@ -18,4 +18,4 @@ interface IZetaNonEthNew is IERC20 { /// @param internalSendHash A hash used for internal tracking of the minting transaction. /// @dev Emits a {Transfer} event with `from` set to the zero address. function mint(address mintee, uint256 value, bytes32 internalSendHash) external; -} +} \ No newline at end of file diff --git a/v2/src/zevm/interfaces/ISystem.sol b/v2/src/zevm/interfaces/ISystem.sol index 7538c46d..6a9e4585 100644 --- a/v2/src/zevm/interfaces/ISystem.sol +++ b/v2/src/zevm/interfaces/ISystem.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -/** - * @dev Interfaces of SystemContract and ZRC20 to make easier to import. - */ +/// @title ISystem +/// @notice Interface for the System contract. +/// @dev Defines functions for system contract callable by fungible module. interface ISystem { function FUNGIBLE_MODULE_ADDRESS() external view returns (address); diff --git a/v2/src/zevm/interfaces/IWZeta.sol b/v2/src/zevm/interfaces/IWZeta.sol index 536ca4c4..5c5c4b73 100644 --- a/v2/src/zevm/interfaces/IWZeta.sol +++ b/v2/src/zevm/interfaces/IWZeta.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +/// @title IWETH9 +/// @notice Interface for the Weth9 contract. interface IWETH9 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); diff --git a/v2/src/zevm/interfaces/IZRC20.sol b/v2/src/zevm/interfaces/IZRC20.sol index 34bdafb5..bb383621 100644 --- a/v2/src/zevm/interfaces/IZRC20.sol +++ b/v2/src/zevm/interfaces/IZRC20.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +/// @title IZRC20 +/// @notice Interface for the ZRC20 token contract. interface IZRC20 { function totalSupply() external view returns (uint256); @@ -25,6 +27,8 @@ interface IZRC20 { function PROTOCOL_FLAT_FEE() external view returns (uint256); } +/// @title IZRC20Metadata +/// @notice Interface for the ZRC20 metadata. interface IZRC20Metadata is IZRC20 { function name() external view returns (string memory); @@ -33,6 +37,8 @@ interface IZRC20Metadata is IZRC20 { function decimals() external view returns (uint8); } +/// @title ZRC20Events +/// @notice Interface for the ZRC20 events. interface ZRC20Events { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index c5fb229f..52405fa6 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -10,11 +10,14 @@ import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IERC20CustodyNew.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; +import "./utils/IReceiverEVM.sol"; contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { using SafeERC20 for IERC20; @@ -416,10 +419,10 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR token = new TestERC20("test", "TTK"); zeta = new TestERC20("zeta", "ZETA"); - address proxy = address(new ERC1967Proxy( - address(new GatewayEVM()), - abi.encodeWithSelector(GatewayEVM.initialize.selector, tssAddress, address(zeta)) - )); + + proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + ); gateway = GatewayEVM(proxy); custody = new ERC20CustodyNew(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index 06242a5a..f46374d1 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -13,10 +13,14 @@ import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; + +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNonNative.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index d34a9408..2eba5093 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -10,11 +10,14 @@ import "./utils/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; -import "contracts/prototypes/evm/IZetaConnector.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IZetaConnector.sol"; +import "src/evm/GatewayEVM.sol"; +import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ZetaConnectorNative.sol"; contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { using SafeERC20 for IERC20; @@ -82,15 +85,6 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, zetaConnector.withdraw(destination, amount, internalSendHash); } - function testWithdrawAndCallReceiveERC20() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - - vm.prank(owner); - vm.expectRevert(InvalidSender.selector); - zetaConnector.withdraw(destination, amount, internalSendHash); - } - function testWithdrawAndCallReceiveERC20() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index 464979de..a587de95 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -1,19 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; -import "./IGatewayEVM.sol"; -import "./ZetaConnectorNewBase.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/ZetaConnectorNewBase.sol"; /// @title GatewayEVMUpgradeTest /// @notice Modified GatewayEVM contract for testing upgrades @@ -65,7 +61,7 @@ contract GatewayEVMUpgradeTest is revert ZeroAddress(); } - __Ownable_init(); + __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); From 0ec2a7202d031a69cacf7fa40c1a40a49cb64d8d Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:27:56 +0200 Subject: [PATCH 26/60] try to fix build action --- .github/workflows/build.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index afd8d666..40a2c2fd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,6 +13,10 @@ on: - reopened - ready_for_review +defaults: + run: + working-directory: ./v1 + jobs: lint: runs-on: ubuntu-latest From b334516ae4a1fbcba405672e7737186fb56f34e8 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:33:10 +0200 Subject: [PATCH 27/60] fixing v1 actions --- .../workflows/{build.yaml => build_v1.yaml} | 6 +- .github/workflows/coverage.yaml | 86 +- ...ted-files.yaml => generated-files_v1.yaml} | 6 +- .github/workflows/{lint.yaml => lint_v1.yaml} | 6 +- .../{publish-npm.yaml => publish-npm_v1.yaml} | 6 +- .github/workflows/slither.yaml | 110 +- .github/workflows/{test.yaml => test_v1.yaml} | 6 +- .../contracts/prototypes/ERC20Custody.ts | 245 - .../contracts/prototypes/ERC20CustodyNew.ts | 245 - .../contracts/prototypes/Gateway.ts | 704 - .../prototypes/GatewayUpgradeTest.ts | 559 - .../prototypes/GatewayV2.sol/Gateway.ts | 559 - .../prototypes/GatewayV2.sol/GatewayV2.ts | 559 - .../prototypes/GatewayV2.sol/index.ts | 5 - .../contracts/prototypes/GatewayV2.ts | 559 - .../contracts/prototypes/Receiver.ts | 336 - .../contracts/prototypes/TestERC20.ts | 501 - .../contracts/prototypes/WETH9.ts | 480 - .../prototypes/evm/ERC20CustodyNew.ts | 349 - .../evm/ERC20CustodyNewEchidnaTest.ts | 331 - .../contracts/prototypes/evm/Gateway.ts | 704 - .../evm/GatewayEVM.sol/GatewayEVM.ts | 1075 - .../evm/GatewayEVM.sol/Revertable.ts | 102 - .../prototypes/evm/GatewayEVM.sol/index.ts | 5 - .../evm/GatewayEVM.t.sol/GatewayEVMTest.ts | 1023 - .../prototypes/evm/GatewayEVM.t.sol/index.ts | 4 - .../contracts/prototypes/evm/GatewayEVM.ts | 1075 - .../prototypes/evm/GatewayEVMEchidnaTest.ts | 935 - .../prototypes/evm/GatewayEVMUpgradeTest.ts | 1100 -- .../prototypes/evm/GatewayUpgradeTest.ts | 704 - .../IERC20CustodyNewErrors.ts | 56 - .../IERC20CustodyNewEvents.ts | 140 - .../evm/IERC20CustodyNew.sol/index.ts | 5 - .../evm/IGatewayEVM.sol/IGatewayEVM.ts | 219 - .../evm/IGatewayEVM.sol/IGatewayEVMErrors.ts | 56 - .../evm/IGatewayEVM.sol/IGatewayEVMEvents.ts | 219 - .../evm/IGatewayEVM.sol/Revertable.ts | 102 - .../prototypes/evm/IGatewayEVM.sol/index.ts | 7 - .../IReceiverEVM.sol/IReceiverEVMEvents.ts | 181 - .../prototypes/evm/IReceiverEVM.sol/index.ts | 4 - .../IZetaConnectorEvents.ts | 131 - .../evm/IZetaConnector.sol/index.ts | 4 - .../prototypes/evm/IZetaNonEthNew.ts | 425 - .../contracts/prototypes/evm/Receiver.ts | 360 - .../contracts/prototypes/evm/ReceiverEVM.ts | 460 - .../contracts/prototypes/evm/TestERC20.ts | 501 - .../prototypes/evm/ZetaConnectorNative.ts | 389 - .../prototypes/evm/ZetaConnectorNew.ts | 237 - .../prototypes/evm/ZetaConnectorNewBase.ts | 389 - .../prototypes/evm/ZetaConnectorNonNative.ts | 454 - .../contracts/prototypes/evm/index.ts | 20 - .../prototypes/evm/interfaces.sol/IGateway.ts | 250 - .../evm/interfaces.sol/IGatewayEVM.ts | 219 - .../evm/interfaces.sol/IGatewayEVMErrors.ts | 56 - .../evm/interfaces.sol/IGatewayEVMEvents.ts | 219 - .../evm/interfaces.sol/IReceiverEVMEvents.ts | 162 - .../prototypes/evm/interfaces.sol/index.ts | 7 - .../contracts/prototypes/index.ts | 7 - .../prototypes/interfaces.sol/IGateway.ts | 165 - .../prototypes/interfaces.sol/index.ts | 4 - .../GatewayEVM.t.sol/GatewayEVMInboundTest.ts | 1257 -- .../test/GatewayEVM.t.sol/GatewayEVMTest.ts | 1195 -- .../prototypes/test/GatewayEVM.t.sol/index.ts | 5 - .../GatewayEVMZEVMTest.ts | 1197 -- .../test/GatewayEVMZEVM.t.sol/index.ts | 4 - .../GatewayIntegrationTest.ts | 1078 - .../test/GatewayIntegration.t.sol/index.ts | 4 - .../GatewayZEVMInboundTest.ts | 918 - .../GatewayZEVMOutboundTest.ts | 955 - .../test/GatewayZEVM.t.sol/index.ts | 5 - .../contracts/prototypes/test/index.ts | 9 - .../contracts/prototypes/zevm/GatewayZEVM.ts | 1051 - .../zevm/IGatewayZEVM.sol/IGatewayZEVM.ts | 389 - .../IGatewayZEVM.sol/IGatewayZEVMErrors.ts | 56 - .../IGatewayZEVM.sol/IGatewayZEVMEvents.ts | 117 - .../prototypes/zevm/IGatewayZEVM.sol/index.ts | 6 - .../contracts/prototypes/zevm/Sender.ts | 210 - .../contracts/prototypes/zevm/SenderZEVM.ts | 210 - .../prototypes/zevm/TestZContract.ts | 272 - .../zevm/ZRC20New.sol/ZRC20Errors.ts | 56 - .../prototypes/zevm/ZRC20New.sol/ZRC20New.ts | 854 - .../prototypes/zevm/ZRC20New.sol/index.ts | 5 - .../contracts/prototypes/zevm/index.ts | 8 - .../zevm/interfaces.sol/IGatewayZEVM.ts | 389 - .../zevm/interfaces.sol/IGatewayZEVMErrors.ts | 56 - .../zevm/interfaces.sol/IGatewayZEVMEvents.ts | 117 - .../prototypes/zevm/interfaces.sol/index.ts | 6 - .../prototypes/ERC20CustodyNew__factory.ts | 196 - .../prototypes/ERC20Custody__factory.ts | 196 - .../prototypes/GatewayUpgradeTest__factory.ts | 374 - .../GatewayV2.sol/GatewayV2__factory.ts | 374 - .../GatewayV2.sol/Gateway__factory.ts | 374 - .../prototypes/GatewayV2.sol/index.ts | 5 - .../prototypes/GatewayV2__factory.ts | 374 - .../contracts/prototypes/Gateway__factory.ts | 560 - .../contracts/prototypes/Receiver__factory.ts | 251 - .../prototypes/TestERC20__factory.ts | 371 - .../contracts/prototypes/WETH9__factory.ts | 340 - .../ERC20CustodyNewEchidnaTest__factory.ts | 246 - .../evm/ERC20CustodyNew__factory.ts | 289 - .../evm/GatewayEVM.sol/GatewayEVM__factory.ts | 731 - .../evm/GatewayEVM.sol/Revertable__factory.ts | 39 - .../prototypes/evm/GatewayEVM.sol/index.ts | 5 - .../GatewayEVMTest__factory.ts | 910 - .../prototypes/evm/GatewayEVM.t.sol/index.ts | 4 - .../evm/GatewayEVMEchidnaTest__factory.ts | 638 - .../evm/GatewayEVMUpgradeTest__factory.ts | 759 - .../prototypes/evm/GatewayEVM__factory.ts | 730 - .../evm/GatewayUpgradeTest__factory.ts | 488 - .../prototypes/evm/Gateway__factory.ts | 488 - .../IERC20CustodyNewErrors__factory.ts | 40 - .../IERC20CustodyNewEvents__factory.ts | 117 - .../evm/IERC20CustodyNew.sol/index.ts | 5 - .../IGatewayEVMErrors__factory.ts | 66 - .../IGatewayEVMEvents__factory.ts | 200 - .../IGatewayEVM.sol/IGatewayEVM__factory.ts | 106 - .../IGatewayEVM.sol/Revertable__factory.ts | 39 - .../prototypes/evm/IGatewayEVM.sol/index.ts | 7 - .../IReceiverEVMEvents__factory.ts | 157 - .../prototypes/evm/IReceiverEVM.sol/index.ts | 4 - .../IZetaConnectorEvents__factory.ts | 99 - .../evm/IZetaConnector.sol/index.ts | 4 - .../prototypes/evm/IZetaNonEthNew__factory.ts | 250 - .../prototypes/evm/ReceiverEVM__factory.ts | 319 - .../prototypes/evm/Receiver__factory.ts | 251 - .../prototypes/evm/TestERC20__factory.ts | 371 - .../evm/ZetaConnectorNative__factory.ts | 310 - .../evm/ZetaConnectorNewBase__factory.ts | 240 - .../evm/ZetaConnectorNewEth__factory.ts | 226 - .../evm/ZetaConnectorNewNonEth__factory.ts | 230 - .../evm/ZetaConnectorNew__factory.ts | 203 - .../evm/ZetaConnectorNonNative__factory.ts | 314 - .../contracts/prototypes/evm/index.ts | 16 - .../IGatewayEVMErrors__factory.ts | 61 - .../IGatewayEVMEvents__factory.ts | 200 - .../interfaces.sol/IGatewayEVM__factory.ts | 112 - .../evm/interfaces.sol/IGateway__factory.ts | 125 - .../IReceiverEVMEvents__factory.ts | 138 - .../prototypes/evm/interfaces.sol/index.ts | 7 - .../factories/contracts/prototypes/index.ts | 5 - .../interfaces.sol/IGateway__factory.ts | 84 - .../prototypes/interfaces.sol/index.ts | 4 - .../GatewayEVMInboundTest__factory.ts | 970 - .../GatewayEVMTest__factory.ts | 994 - .../prototypes/test/GatewayEVM.t.sol/index.ts | 5 - .../GatewayEVMZEVMTest__factory.ts | 1106 -- .../test/GatewayEVMZEVM.t.sol/index.ts | 4 - .../GatewayIntegrationTest__factory.ts | 982 - .../test/GatewayIntegration.t.sol/index.ts | 4 - .../GatewayZEVMInboundTest__factory.ts | 766 - .../GatewayZEVMOutboundTest__factory.ts | 803 - .../test/GatewayZEVM.t.sol/index.ts | 5 - .../contracts/prototypes/test/index.ts | 6 - .../prototypes/zevm/GatewayZEVM__factory.ts | 757 - .../IGatewayZEVMErrors__factory.ts | 71 - .../IGatewayZEVMEvents__factory.ts | 100 - .../IGatewayZEVM.sol/IGatewayZEVM__factory.ts | 218 - .../prototypes/zevm/IGatewayZEVM.sol/index.ts | 6 - .../prototypes/zevm/SenderZEVM__factory.ts | 160 - .../prototypes/zevm/Sender__factory.ts | 157 - .../prototypes/zevm/TestZContract__factory.ts | 235 - .../zevm/ZRC20New.sol/ZRC20Errors__factory.ts | 66 - .../zevm/ZRC20New.sol/ZRC20New__factory.ts | 730 - .../prototypes/zevm/ZRC20New.sol/index.ts | 5 - .../contracts/prototypes/zevm/index.ts | 7 - .../IGatewayZEVMErrors__factory.ts | 71 - .../IGatewayZEVMEvents__factory.ts | 100 - .../interfaces.sol/IGatewayZEVM__factory.ts | 218 - .../prototypes/zevm/interfaces.sol/index.ts | 6 - .../forge-std/StdAssertions__factory.ts | 403 - .../StdError.sol/StdError__factory.ts | 180 - .../factories/forge-std/StdError.sol/index.ts | 4 - .../forge-std/StdInvariant__factory.ts | 204 - .../StdStorage.sol/StdStorageSafe__factory.ts | 113 - .../forge-std/StdStorage.sol/index.ts | 4 - .../factories/forge-std/Test__factory.ts | 588 - .../forge-std/Vm.sol/VmSafe__factory.ts | 7315 ------- .../factories/forge-std/Vm.sol/Vm__factory.ts | 8645 --------- .../factories/forge-std/Vm.sol/index.ts | 5 - .../factories/forge-std/index.ts | 11 - .../forge-std/interfaces/IERC165__factory.ts | 45 - .../forge-std/interfaces/IERC20__factory.ts | 245 - .../IERC721.sol/IERC721Enumerable__factory.ts | 367 - .../IERC721.sol/IERC721Metadata__factory.ts | 356 - .../IERC721TokenReceiver__factory.ts | 64 - .../IERC721.sol/IERC721__factory.ts | 311 - .../forge-std/interfaces/IERC721.sol/index.ts | 7 - .../interfaces/IMulticall3__factory.ts | 464 - .../factories/forge-std/interfaces/index.ts | 7 - .../forge-std/mocks/MockERC20__factory.ts | 383 - .../forge-std/mocks/MockERC721__factory.ts | 411 - .../factories/forge-std/mocks/index.ts | 5 - v1/typechain-types/forge-std/StdAssertions.ts | 457 - .../forge-std/StdError.sol/StdError.ts | 249 - .../forge-std/StdError.sol/index.ts | 4 - v1/typechain-types/forge-std/StdInvariant.ts | 357 - .../StdStorage.sol/StdStorageSafe.ts | 109 - .../forge-std/StdStorage.sol/index.ts | 4 - v1/typechain-types/forge-std/Test.ts | 760 - v1/typechain-types/forge-std/Vm.sol/Vm.ts | 16207 ---------------- v1/typechain-types/forge-std/Vm.sol/VmSafe.ts | 13288 ------------- v1/typechain-types/forge-std/Vm.sol/index.ts | 5 - v1/typechain-types/forge-std/index.ts | 16 - .../forge-std/interfaces/IERC165.ts | 103 - .../forge-std/interfaces/IERC20.ts | 384 - .../interfaces/IERC721.sol/IERC721.ts | 560 - .../IERC721.sol/IERC721Enumerable.ts | 655 - .../interfaces/IERC721.sol/IERC721Metadata.ts | 620 - .../IERC721.sol/IERC721TokenReceiver.ts | 126 - .../forge-std/interfaces/IERC721.sol/index.ts | 7 - .../forge-std/interfaces/IMulticall3.ts | 598 - .../forge-std/interfaces/index.ts | 8 - .../forge-std/mocks/MockERC20.ts | 552 - .../forge-std/mocks/MockERC721.ts | 657 - v1/typechain-types/forge-std/mocks/index.ts | 5 - 215 files changed, 121 insertions(+), 105613 deletions(-) rename .github/workflows/{build.yaml => build_v1.yaml} (91%) rename .github/workflows/{generated-files.yaml => generated-files_v1.yaml} (94%) rename .github/workflows/{lint.yaml => lint_v1.yaml} (91%) rename .github/workflows/{publish-npm.yaml => publish-npm_v1.yaml} (94%) rename .github/workflows/{test.yaml => test_v1.yaml} (92%) delete mode 100644 v1/typechain-types/contracts/prototypes/ERC20Custody.ts delete mode 100644 v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts delete mode 100644 v1/typechain-types/contracts/prototypes/Gateway.ts delete mode 100644 v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts delete mode 100644 v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts delete mode 100644 v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/GatewayV2.ts delete mode 100644 v1/typechain-types/contracts/prototypes/Receiver.ts delete mode 100644 v1/typechain-types/contracts/prototypes/TestERC20.ts delete mode 100644 v1/typechain-types/contracts/prototypes/WETH9.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/Gateway.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/Receiver.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/TestERC20.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts delete mode 100644 v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/test/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/Sender.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/index.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts delete mode 100644 v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/test/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/index.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts delete mode 100644 v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdAssertions__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdError.sol/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdInvariant__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/Test__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/Vm.sol/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/interfaces/index.ts delete mode 100644 v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts delete mode 100644 v1/typechain-types/factories/forge-std/mocks/index.ts delete mode 100644 v1/typechain-types/forge-std/StdAssertions.ts delete mode 100644 v1/typechain-types/forge-std/StdError.sol/StdError.ts delete mode 100644 v1/typechain-types/forge-std/StdError.sol/index.ts delete mode 100644 v1/typechain-types/forge-std/StdInvariant.ts delete mode 100644 v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts delete mode 100644 v1/typechain-types/forge-std/StdStorage.sol/index.ts delete mode 100644 v1/typechain-types/forge-std/Test.ts delete mode 100644 v1/typechain-types/forge-std/Vm.sol/Vm.ts delete mode 100644 v1/typechain-types/forge-std/Vm.sol/VmSafe.ts delete mode 100644 v1/typechain-types/forge-std/Vm.sol/index.ts delete mode 100644 v1/typechain-types/forge-std/index.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC165.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC20.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/IMulticall3.ts delete mode 100644 v1/typechain-types/forge-std/interfaces/index.ts delete mode 100644 v1/typechain-types/forge-std/mocks/MockERC20.ts delete mode 100644 v1/typechain-types/forge-std/mocks/MockERC721.ts delete mode 100644 v1/typechain-types/forge-std/mocks/index.ts diff --git a/.github/workflows/build.yaml b/.github/workflows/build_v1.yaml similarity index 91% rename from .github/workflows/build.yaml rename to .github/workflows/build_v1.yaml index 40a2c2fd..779371bc 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build_v1.yaml @@ -1,4 +1,4 @@ -name: Build +name: Build (V1) on: push: @@ -14,8 +14,8 @@ on: - ready_for_review defaults: - run: - working-directory: ./v1 + run: + working-directory: ./v1 jobs: lint: diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index e58a721b..d2bcafc0 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -1,43 +1,43 @@ -name: Coverage - -on: - push: - branches: - - main - pull_request: - branches: - - "*" - types: - - synchronize - - opened - - reopened - - ready_for_review - -jobs: - coverage: - runs-on: ubuntu-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - node-version: "18" - registry-url: "https://registry.npmjs.org" - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: Install Dependencies - run: yarn install - - - name: Test with coverage - run: yarn coverage - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4.0.1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: lcov.info +# name: Coverage + +# on: +# push: +# branches: +# - main +# pull_request: +# branches: +# - "*" +# types: +# - synchronize +# - opened +# - reopened +# - ready_for_review + +# jobs: +# coverage: +# runs-on: ubuntu-latest + +# steps: +# - name: Checkout Repository +# uses: actions/checkout@v3 + +# - name: Setup Node.js +# uses: actions/setup-node@v3 +# with: +# node-version: "18" +# registry-url: "https://registry.npmjs.org" + +# - name: Install Foundry +# uses: foundry-rs/foundry-toolchain@v1 + +# - name: Install Dependencies +# run: yarn install + +# - name: Test with coverage +# run: yarn coverage + +# - name: Upload coverage reports to Codecov +# uses: codecov/codecov-action@v4.0.1 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} +# files: lcov.info diff --git a/.github/workflows/generated-files.yaml b/.github/workflows/generated-files_v1.yaml similarity index 94% rename from .github/workflows/generated-files.yaml rename to .github/workflows/generated-files_v1.yaml index bbbd540d..03194751 100644 --- a/.github/workflows/generated-files.yaml +++ b/.github/workflows/generated-files_v1.yaml @@ -1,4 +1,4 @@ -name: Generated Files are Updated +name: Generated Files are Updated (V1) on: push: @@ -13,6 +13,10 @@ on: - reopened - ready_for_review +defaults: + run: + working-directory: ./v1 + jobs: generate: runs-on: ubuntu-latest diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint_v1.yaml similarity index 91% rename from .github/workflows/lint.yaml rename to .github/workflows/lint_v1.yaml index e991d8eb..20d63b02 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint_v1.yaml @@ -1,4 +1,4 @@ -name: Lint TS/JS +name: Lint TS/JS (V1) on: push: @@ -13,6 +13,10 @@ on: - reopened - ready_for_review +defaults: + run: + working-directory: ./v1 + jobs: lint: runs-on: ubuntu-latest diff --git a/.github/workflows/publish-npm.yaml b/.github/workflows/publish-npm_v1.yaml similarity index 94% rename from .github/workflows/publish-npm.yaml rename to .github/workflows/publish-npm_v1.yaml index 91cedb1b..1688d33a 100644 --- a/.github/workflows/publish-npm.yaml +++ b/.github/workflows/publish-npm_v1.yaml @@ -1,9 +1,13 @@ -name: Publish to NPM +name: Publish to NPM (V1) on: release: types: [published] +defaults: + run: + working-directory: ./v1 + jobs: publish: runs-on: ubuntu-latest diff --git a/.github/workflows/slither.yaml b/.github/workflows/slither.yaml index 7ba3bb2d..2327b45f 100644 --- a/.github/workflows/slither.yaml +++ b/.github/workflows/slither.yaml @@ -1,55 +1,55 @@ -name: Slither - -on: - push: - branches: - - main - pull_request: - branches: - - "*" - types: - - synchronize - - opened - - reopened - - ready_for_review - -jobs: - slither: - runs-on: ubuntu-latest - permissions: - contents: read - security-events: write - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Install Node.js - uses: actions/setup-node@v2 - with: - node-version: "18" - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: Install dependencies - run: yarn install - - - name: Build project - run: yarn build - - - name: Run Slither - uses: crytic/slither-action@main - id: slither - continue-on-error: true - with: - sarif: results.sarif - node-version: "18" - fail-on: none - - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: ${{ steps.slither.outputs.sarif }} +# name: Slither + +# on: +# push: +# branches: +# - main +# pull_request: +# branches: +# - "*" +# types: +# - synchronize +# - opened +# - reopened +# - ready_for_review + +# jobs: +# slither: +# runs-on: ubuntu-latest +# permissions: +# contents: read +# security-events: write + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 +# with: +# submodules: recursive + +# - name: Install Node.js +# uses: actions/setup-node@v2 +# with: +# node-version: "18" + +# - name: Install Foundry +# uses: foundry-rs/foundry-toolchain@v1 + +# - name: Install dependencies +# run: yarn install + +# - name: Build project +# run: yarn build + +# - name: Run Slither +# uses: crytic/slither-action@main +# id: slither +# continue-on-error: true +# with: +# sarif: results.sarif +# node-version: "18" +# fail-on: none + +# - name: Upload SARIF file +# uses: github/codeql-action/upload-sarif@v3 +# with: +# sarif_file: ${{ steps.slither.outputs.sarif }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test_v1.yaml similarity index 92% rename from .github/workflows/test.yaml rename to .github/workflows/test_v1.yaml index 2e2a20b4..969709a8 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test_v1.yaml @@ -1,4 +1,4 @@ -name: Test +name: Test (V1) on: push: @@ -13,6 +13,10 @@ on: - reopened - ready_for_review +defaults: + run: + working-directory: ./v1 + jobs: test: runs-on: ubuntu-latest diff --git a/v1/typechain-types/contracts/prototypes/ERC20Custody.ts b/v1/typechain-types/contracts/prototypes/ERC20Custody.ts deleted file mode 100644 index f1b2b774..00000000 --- a/v1/typechain-types/contracts/prototypes/ERC20Custody.ts +++ /dev/null @@ -1,245 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ERC20CustodyInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "withdraw(address,address,uint256)": FunctionFragment; - "withdrawAndCall(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "gateway" | "withdraw" | "withdrawAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface ERC20Custody extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20CustodyInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts b/v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts deleted file mode 100644 index c2f1889d..00000000 --- a/v1/typechain-types/contracts/prototypes/ERC20CustodyNew.ts +++ /dev/null @@ -1,245 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ERC20CustodyNewInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "withdraw(address,address,uint256)": FunctionFragment; - "withdrawAndCall(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "gateway" | "withdraw" | "withdrawAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface ERC20CustodyNew extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20CustodyNewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/Gateway.ts b/v1/typechain-types/contracts/prototypes/Gateway.ts deleted file mode 100644 index 5e76a81a..00000000 --- a/v1/typechain-types/contracts/prototypes/Gateway.ts +++ /dev/null @@ -1,704 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface GatewayInterface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "send(bytes,uint256)": FunctionFragment; - "sendERC20(bytes,address,uint256)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "send" - | "sendERC20" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "send", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sendERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendERC20", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Send(bytes,uint256)": EventFragment; - "SendERC20(bytes,address,uint256)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Send"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SendERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface SendEventObject { - recipient: string; - amount: BigNumber; -} -export type SendEvent = TypedEvent<[string, BigNumber], SendEventObject>; - -export type SendEventFilter = TypedEventFilter; - -export interface SendERC20EventObject { - recipient: string; - asset: string; - amount: BigNumber; -} -export type SendERC20Event = TypedEvent< - [string, string, BigNumber], - SendERC20EventObject ->; - -export type SendERC20EventFilter = TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface Gateway extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Send(bytes,uint256)"(recipient?: null, amount?: null): SendEventFilter; - Send(recipient?: null, amount?: null): SendEventFilter; - - "SendERC20(bytes,address,uint256)"( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - SendERC20( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts deleted file mode 100644 index d870814a..00000000 --- a/v1/typechain-types/contracts/prototypes/GatewayUpgradeTest.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface GatewayUpgradeTestInterface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize()": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "setCustody" - | "transferOwnership" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20V2(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20V2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20V2EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20V2Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20V2EventObject ->; - -export type ExecutedWithERC20V2EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayUpgradeTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayUpgradeTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20V2(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - ExecutedWithERC20V2( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts deleted file mode 100644 index 52121e90..00000000 --- a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/Gateway.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayInterface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize()": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "setCustody" - | "transferOwnership" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20V2(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20V2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20V2EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20V2Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20V2EventObject ->; - -export type ExecutedWithERC20V2EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface Gateway extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20V2(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - ExecutedWithERC20V2( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts deleted file mode 100644 index a3b2787d..00000000 --- a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/GatewayV2.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayV2Interface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize()": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "setCustody" - | "transferOwnership" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20V2(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20V2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20V2EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20V2Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20V2EventObject ->; - -export type ExecutedWithERC20V2EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayV2 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayV2Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20V2(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - ExecutedWithERC20V2( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts deleted file mode 100644 index cc062d9c..00000000 --- a/v1/typechain-types/contracts/prototypes/GatewayV2.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { Gateway } from "./Gateway"; -export type { GatewayV2 } from "./GatewayV2"; diff --git a/v1/typechain-types/contracts/prototypes/GatewayV2.ts b/v1/typechain-types/contracts/prototypes/GatewayV2.ts deleted file mode 100644 index 9d367e00..00000000 --- a/v1/typechain-types/contracts/prototypes/GatewayV2.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface GatewayV2Interface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize()": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "setCustody" - | "transferOwnership" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20V2(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20V2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20V2EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20V2Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20V2EventObject ->; - -export type ExecutedWithERC20V2EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayV2 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayV2Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20V2(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - ExecutedWithERC20V2( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20V2EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/Receiver.ts b/v1/typechain-types/contracts/prototypes/Receiver.ts deleted file mode 100644 index 4e82b83e..00000000 --- a/v1/typechain-types/contracts/prototypes/Receiver.ts +++ /dev/null @@ -1,336 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface ReceiverInterface extends utils.Interface { - functions: { - "receiveA(string,uint256,bool)": FunctionFragment; - "receiveB(string[],uint256[],bool)": FunctionFragment; - "receiveC(uint256,address,address)": FunctionFragment; - "receiveD()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "receiveA" | "receiveB" | "receiveC" | "receiveD" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "receiveA", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receiveB", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receiveC", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "receiveD", values?: undefined): string; - - decodeFunctionResult(functionFragment: "receiveA", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "receiveB", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "receiveC", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "receiveD", data: BytesLike): Result; - - events: { - "ReceivedA(address,uint256,string,uint256,bool)": EventFragment; - "ReceivedB(address,string[],uint256[],bool)": EventFragment; - "ReceivedC(address,uint256,address,address)": EventFragment; - "ReceivedD(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ReceivedA"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedB"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedC"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedD"): EventFragment; -} - -export interface ReceivedAEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedAEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedAEventObject ->; - -export type ReceivedAEventFilter = TypedEventFilter; - -export interface ReceivedBEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedBEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedBEventObject ->; - -export type ReceivedBEventFilter = TypedEventFilter; - -export interface ReceivedCEventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedCEvent = TypedEvent< - [string, BigNumber, string, string], - ReceivedCEventObject ->; - -export type ReceivedCEventFilter = TypedEventFilter; - -export interface ReceivedDEventObject { - sender: string; -} -export type ReceivedDEvent = TypedEvent<[string], ReceivedDEventObject>; - -export type ReceivedDEventFilter = TypedEventFilter; - -export interface Receiver extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReceiverInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - receiveA( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - receiveB( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveC( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveD( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - receiveA( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - receiveB( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveC( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveD( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - receiveA( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveB( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveC( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveD(overrides?: CallOverrides): Promise; - }; - - filters: { - "ReceivedA(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedAEventFilter; - ReceivedA( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedAEventFilter; - - "ReceivedB(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedBEventFilter; - ReceivedB( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedBEventFilter; - - "ReceivedC(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedCEventFilter; - ReceivedC( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedCEventFilter; - - "ReceivedD(address)"(sender?: null): ReceivedDEventFilter; - ReceivedD(sender?: null): ReceivedDEventFilter; - }; - - estimateGas: { - receiveA( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - receiveB( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveC( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveD( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - receiveA( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - receiveB( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveC( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveD( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/TestERC20.ts b/v1/typechain-types/contracts/prototypes/TestERC20.ts deleted file mode 100644 index 580edbbc..00000000 --- a/v1/typechain-types/contracts/prototypes/TestERC20.ts +++ /dev/null @@ -1,501 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface TestERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "decreaseAllowance" - | "increaseAllowance" - | "mint" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface TestERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/WETH9.ts b/v1/typechain-types/contracts/prototypes/WETH9.ts deleted file mode 100644 index cc4355f3..00000000 --- a/v1/typechain-types/contracts/prototypes/WETH9.ts +++ /dev/null @@ -1,480 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface WETH9Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "deposit()": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "deposit" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - | "withdraw" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData(functionFragment: "deposit", values?: undefined): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Deposit(address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - "Withdrawal(address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface ApprovalEventObject { - src: string; - guy: string; - wad: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface DepositEventObject { - dst: string; - wad: BigNumber; -} -export type DepositEvent = TypedEvent<[string, BigNumber], DepositEventObject>; - -export type DepositEventFilter = TypedEventFilter; - -export interface TransferEventObject { - src: string; - dst: string; - wad: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - src: string; - wad: BigNumber; -} -export type WithdrawalEvent = TypedEvent< - [string, BigNumber], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface WETH9 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: WETH9Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - guy: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - deposit( - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - src: PromiseOrValue, - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - guy: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - src: PromiseOrValue, - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - guy: PromiseOrValue, - wad: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - src: PromiseOrValue, - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - wad: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - src?: PromiseOrValue | null, - guy?: PromiseOrValue | null, - wad?: null - ): ApprovalEventFilter; - Approval( - src?: PromiseOrValue | null, - guy?: PromiseOrValue | null, - wad?: null - ): ApprovalEventFilter; - - "Deposit(address,uint256)"( - dst?: PromiseOrValue | null, - wad?: null - ): DepositEventFilter; - Deposit( - dst?: PromiseOrValue | null, - wad?: null - ): DepositEventFilter; - - "Transfer(address,address,uint256)"( - src?: PromiseOrValue | null, - dst?: PromiseOrValue | null, - wad?: null - ): TransferEventFilter; - Transfer( - src?: PromiseOrValue | null, - dst?: PromiseOrValue | null, - wad?: null - ): TransferEventFilter; - - "Withdrawal(address,uint256)"( - src?: PromiseOrValue | null, - wad?: null - ): WithdrawalEventFilter; - Withdrawal( - src?: PromiseOrValue | null, - wad?: null - ): WithdrawalEventFilter; - }; - - estimateGas: { - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - guy: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - src: PromiseOrValue, - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - arg0: PromiseOrValue, - arg1: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - guy: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - src: PromiseOrValue, - dst: PromiseOrValue, - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - wad: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts b/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts deleted file mode 100644 index 99bed03f..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNew.ts +++ /dev/null @@ -1,349 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ERC20CustodyNewInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "tssAddress()": FunctionFragment; - "withdraw(address,address,uint256)": FunctionFragment; - "withdrawAndCall(address,address,uint256,bytes)": FunctionFragment; - "withdrawAndRevert(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gateway" - | "tssAddress" - | "withdraw" - | "withdrawAndCall" - | "withdrawAndRevert" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndRevert", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndRevert", - data: BytesLike - ): Result; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface ERC20CustodyNew extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20CustodyNewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - gateway(overrides?: CallOverrides): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndRevert( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts b/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts deleted file mode 100644 index 7f3451e7..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest.ts +++ /dev/null @@ -1,331 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ERC20CustodyNewEchidnaTestInterface extends utils.Interface { - functions: { - "echidnaCaller()": FunctionFragment; - "gateway()": FunctionFragment; - "testERC20()": FunctionFragment; - "testWithdrawAndCall(address,uint256,bytes)": FunctionFragment; - "withdraw(address,address,uint256)": FunctionFragment; - "withdrawAndCall(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "echidnaCaller" - | "gateway" - | "testERC20" - | "testWithdrawAndCall" - | "withdraw" - | "withdrawAndCall" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "echidnaCaller", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; - encodeFunctionData( - functionFragment: "testWithdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "echidnaCaller", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "testWithdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface ERC20CustodyNewEchidnaTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20CustodyNewEchidnaTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - echidnaCaller(overrides?: CallOverrides): Promise<[string]>; - - gateway(overrides?: CallOverrides): Promise<[string]>; - - testERC20(overrides?: CallOverrides): Promise<[string]>; - - testWithdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - echidnaCaller(overrides?: CallOverrides): Promise; - - gateway(overrides?: CallOverrides): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testWithdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - echidnaCaller(overrides?: CallOverrides): Promise; - - gateway(overrides?: CallOverrides): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testWithdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - }; - - estimateGas: { - echidnaCaller(overrides?: CallOverrides): Promise; - - gateway(overrides?: CallOverrides): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testWithdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - echidnaCaller(overrides?: CallOverrides): Promise; - - gateway(overrides?: CallOverrides): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testWithdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/Gateway.ts b/v1/typechain-types/contracts/prototypes/evm/Gateway.ts deleted file mode 100644 index b016bda1..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/Gateway.ts +++ /dev/null @@ -1,704 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayInterface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "send(bytes,uint256)": FunctionFragment; - "sendERC20(bytes,address,uint256)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "send" - | "sendERC20" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "send", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sendERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendERC20", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Send(bytes,uint256)": EventFragment; - "SendERC20(bytes,address,uint256)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Send"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SendERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface SendEventObject { - recipient: string; - amount: BigNumber; -} -export type SendEvent = TypedEvent<[string, BigNumber], SendEventObject>; - -export type SendEventFilter = TypedEventFilter; - -export interface SendERC20EventObject { - recipient: string; - asset: string; - amount: BigNumber; -} -export type SendERC20Event = TypedEvent< - [string, string, BigNumber], - SendERC20EventObject ->; - -export type SendERC20EventFilter = TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface Gateway extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Send(bytes,uint256)"(recipient?: null, amount?: null): SendEventFilter; - Send(recipient?: null, amount?: null): SendEventFilter; - - "SendERC20(bytes,address,uint256)"( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - SendERC20( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts deleted file mode 100644 index 73fefe7e..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM.ts +++ /dev/null @@ -1,1075 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface GatewayEVMInterface extends utils.Interface { - functions: { - "call(address,bytes)": FunctionFragment; - "custody()": FunctionFragment; - "deposit(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall(address,bytes)": FunctionFragment; - "depositAndCall(address,uint256,address,bytes)": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeRevert(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "revertWithERC20(address,address,uint256,bytes)": FunctionFragment; - "setConnector(address)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - "zeta()": FunctionFragment; - "zetaConnector()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "custody" - | "deposit(address)" - | "deposit(address,uint256,address)" - | "depositAndCall(address,bytes)" - | "depositAndCall(address,uint256,address,bytes)" - | "execute" - | "executeRevert" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "revertWithERC20" - | "setConnector" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - | "zeta" - | "zetaConnector" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeRevert", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "revertWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setConnector", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "zeta", values?: undefined): string; - encodeFunctionData( - functionFragment: "zetaConnector", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeRevert", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revertWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setConnector", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zeta", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "zetaConnector", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise<[string]>; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zeta: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise<[string]>; - - zetaConnector(overrides?: CallOverrides): Promise<[string]>; - }; - - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zeta: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zeta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zeta: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zeta: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts deleted file mode 100644 index f1bb069b..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/Revertable.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface RevertableInterface extends utils.Interface { - functions: { - "onRevert(bytes)": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "onRevert"): FunctionFragment; - - encodeFunctionData( - functionFragment: "onRevert", - values: [PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; - - events: {}; -} - -export interface Revertable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: RevertableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onRevert( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts deleted file mode 100644 index 367fce50..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayEVM } from "./GatewayEVM"; -export type { Revertable } from "./Revertable"; diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts deleted file mode 100644 index 0572c60f..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest.ts +++ /dev/null @@ -1,1023 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayEVMTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testForwardCallToReceivePayable()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testForwardCallToReceivePayable" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceivePayable", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceivePayable", - data: BytesLike - ): Result; - - events: { - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayEVMTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceivePayable(overrides?: CallOverrides): Promise; - }; - - filters: { - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts deleted file mode 100644 index 5c8fc539..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayEVMTest } from "./GatewayEVMTest"; diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts deleted file mode 100644 index dc679c97..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVM.ts +++ /dev/null @@ -1,1075 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayEVMInterface extends utils.Interface { - functions: { - "call(address,bytes)": FunctionFragment; - "custody()": FunctionFragment; - "deposit(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall(address,bytes)": FunctionFragment; - "depositAndCall(address,uint256,address,bytes)": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeRevert(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "revertWithERC20(address,address,uint256,bytes)": FunctionFragment; - "setConnector(address)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - "zetaConnector()": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "custody" - | "deposit(address)" - | "deposit(address,uint256,address)" - | "depositAndCall(address,bytes)" - | "depositAndCall(address,uint256,address,bytes)" - | "execute" - | "executeRevert" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "revertWithERC20" - | "setConnector" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - | "zetaConnector" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeRevert", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "revertWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setConnector", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "zetaConnector", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeRevert", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revertWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setConnector", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "zetaConnector", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise<[string]>; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise<[string]>; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts deleted file mode 100644 index 5a7945e3..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVMEchidnaTest.ts +++ /dev/null @@ -1,935 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayEVMEchidnaTestInterface extends utils.Interface { - functions: { - "call(address,bytes)": FunctionFragment; - "custody()": FunctionFragment; - "deposit(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall(address,bytes)": FunctionFragment; - "depositAndCall(address,uint256,address,bytes)": FunctionFragment; - "echidnaCaller()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "setCustody(address)": FunctionFragment; - "testERC20()": FunctionFragment; - "testExecuteWithERC20(address,uint256,bytes)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "custody" - | "deposit(address)" - | "deposit(address,uint256,address)" - | "depositAndCall(address,bytes)" - | "depositAndCall(address,uint256,address,bytes)" - | "echidnaCaller" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "setCustody" - | "testERC20" - | "testExecuteWithERC20" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "echidnaCaller", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; - encodeFunctionData( - functionFragment: "testExecuteWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "echidnaCaller", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "testExecuteWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayEVMEchidnaTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMEchidnaTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise<[string]>; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - echidnaCaller(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testERC20(overrides?: CallOverrides): Promise<[string]>; - - testExecuteWithERC20( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - echidnaCaller(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testExecuteWithERC20( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - echidnaCaller(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testExecuteWithERC20( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - echidnaCaller(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testExecuteWithERC20( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - echidnaCaller(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testERC20(overrides?: CallOverrides): Promise; - - testExecuteWithERC20( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts deleted file mode 100644 index b9234477..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayEVMUpgradeTest.ts +++ /dev/null @@ -1,1100 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayEVMUpgradeTestInterface extends utils.Interface { - functions: { - "call(address,bytes)": FunctionFragment; - "custody()": FunctionFragment; - "deposit(address)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall(address,bytes)": FunctionFragment; - "depositAndCall(address,uint256,address,bytes)": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeRevert(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address,address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "revertWithERC20(address,address,uint256,bytes)": FunctionFragment; - "setConnector(address)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - "zetaConnector()": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "custody" - | "deposit(address)" - | "deposit(address,uint256,address)" - | "depositAndCall(address,bytes)" - | "depositAndCall(address,uint256,address,bytes)" - | "execute" - | "executeRevert" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "revertWithERC20" - | "setConnector" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - | "zetaConnector" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit(address,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeRevert", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "revertWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setConnector", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "zetaConnector", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deposit(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deposit(address,uint256,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall(address,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeRevert", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revertWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setConnector", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "zetaConnector", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayEVMUpgradeTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMUpgradeTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise<[string]>; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise<[string]>; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - custody(overrides?: CallOverrides): Promise; - - "deposit(address)"( - receiver: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "deposit(address,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,bytes)"( - receiver: PromiseOrValue, - payload: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall(address,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - asset: PromiseOrValue, - payload: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setConnector( - _zetaConnector: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - zetaConnector(overrides?: CallOverrides): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts b/v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts deleted file mode 100644 index e3880b5e..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/GatewayUpgradeTest.ts +++ /dev/null @@ -1,704 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface GatewayUpgradeTestInterface extends utils.Interface { - functions: { - "custody()": FunctionFragment; - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "initialize(address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "send(bytes,uint256)": FunctionFragment; - "sendERC20(bytes,address,uint256)": FunctionFragment; - "setCustody(address)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "tssAddress()": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "custody" - | "execute" - | "executeWithERC20" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "send" - | "sendERC20" - | "setCustody" - | "transferOwnership" - | "tssAddress" - | "upgradeTo" - | "upgradeToAndCall" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "custody", values?: undefined): string; - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "send", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sendERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setCustody", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendERC20", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "ExecutedV2(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Send(bytes,uint256)": EventFragment; - "SendERC20(bytes,address,uint256)": EventFragment; - "Upgraded(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedV2"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Send"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SendERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface ExecutedV2EventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedV2Event = TypedEvent< - [string, BigNumber, string], - ExecutedV2EventObject ->; - -export type ExecutedV2EventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface SendEventObject { - recipient: string; - amount: BigNumber; -} -export type SendEvent = TypedEvent<[string, BigNumber], SendEventObject>; - -export type SendEventFilter = TypedEventFilter; - -export interface SendERC20EventObject { - recipient: string; - asset: string; - amount: BigNumber; -} -export type SendERC20Event = TypedEvent< - [string, string, BigNumber], - SendERC20EventObject ->; - -export type SendERC20EventFilter = TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface GatewayUpgradeTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayUpgradeTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - custody(overrides?: CallOverrides): Promise<[string]>; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "ExecutedV2(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - ExecutedV2( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedV2EventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Send(bytes,uint256)"(recipient?: null, amount?: null): SendEventFilter; - Send(recipient?: null, amount?: null): SendEventFilter; - - "SendERC20(bytes,address,uint256)"( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - SendERC20( - recipient?: null, - asset?: PromiseOrValue | null, - amount?: null - ): SendERC20EventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - }; - - estimateGas: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - custody(overrides?: CallOverrides): Promise; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - token: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setCustody( - _custody: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts deleted file mode 100644 index 6791a1db..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20CustodyNewErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IERC20CustodyNewErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20CustodyNewErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts deleted file mode 100644 index 68bcc9d8..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IERC20CustodyNewEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Withdraw(address,address,uint256)": EventFragment; - "WithdrawAndCall(address,address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - token: string; - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface IERC20CustodyNewEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20CustodyNewEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Withdraw(address,address,uint256)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 8106a206..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC20CustodyNewErrors } from "./IERC20CustodyNewErrors"; -export type { IERC20CustodyNewEvents } from "./IERC20CustodyNewEvents"; diff --git a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts deleted file mode 100644 index 26e0e153..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMInterface extends utils.Interface { - functions: { - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "revertWithERC20(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "execute" | "executeWithERC20" | "revertWithERC20" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "revertWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revertWithERC20", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IGatewayEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts deleted file mode 100644 index 83722e4a..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IGatewayEVMErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts deleted file mode 100644 index 6f43bb14..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface IGatewayEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts deleted file mode 100644 index f1bb069b..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/Revertable.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface RevertableInterface extends utils.Interface { - functions: { - "onRevert(bytes)": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "onRevert"): FunctionFragment; - - encodeFunctionData( - functionFragment: "onRevert", - values: [PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; - - events: {}; -} - -export interface Revertable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: RevertableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onRevert( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts deleted file mode 100644 index 52962cd9..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IGatewayEVM.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IGatewayEVM } from "./IGatewayEVM"; -export type { IGatewayEVMErrors } from "./IGatewayEVMErrors"; -export type { IGatewayEVMEvents } from "./IGatewayEVMEvents"; -export type { Revertable } from "./Revertable"; diff --git a/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts deleted file mode 100644 index 071b4afd..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IReceiverEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "ReceivedRevert(address,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedRevert"): EventFragment; -} - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface ReceivedRevertEventObject { - sender: string; - data: string; -} -export type ReceivedRevertEvent = TypedEvent< - [string, string], - ReceivedRevertEventObject ->; - -export type ReceivedRevertEventFilter = TypedEventFilter; - -export interface IReceiverEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IReceiverEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "ReceivedRevert(address,bytes)"( - sender?: null, - data?: null - ): ReceivedRevertEventFilter; - ReceivedRevert(sender?: null, data?: null): ReceivedRevertEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts deleted file mode 100644 index 6abc6179..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IReceiverEVM.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IReceiverEVMEvents } from "./IReceiverEVMEvents"; diff --git a/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts deleted file mode 100644 index 555e26e0..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IZetaConnectorEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface IZetaConnectorEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IZetaConnectorEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts deleted file mode 100644 index eb97bbe0..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IZetaConnector.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IZetaConnectorEvents } from "./IZetaConnectorEvents"; diff --git a/v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts b/v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts deleted file mode 100644 index eba3b2e0..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/IZetaNonEthNew.ts +++ /dev/null @@ -1,425 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IZetaNonEthNewInterface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "burnFrom(address,uint256)": FunctionFragment; - "mint(address,uint256,bytes32)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "burnFrom" - | "mint" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "burnFrom", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IZetaNonEthNew extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IZetaNonEthNewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - burnFrom( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - mintee: PromiseOrValue, - value: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burnFrom( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - mintee: PromiseOrValue, - value: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burnFrom( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - mint( - mintee: PromiseOrValue, - value: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burnFrom( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - mintee: PromiseOrValue, - value: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burnFrom( - account: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - mintee: PromiseOrValue, - value: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/Receiver.ts b/v1/typechain-types/contracts/prototypes/evm/Receiver.ts deleted file mode 100644 index 99e27603..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/Receiver.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ReceiverInterface extends utils.Interface { - functions: { - "receiveERC20(uint256,address,address)": FunctionFragment; - "receiveNoParams()": FunctionFragment; - "receiveNonPayable(string[],uint256[],bool)": FunctionFragment; - "receivePayable(string,uint256,bool)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "receiveERC20" - | "receiveNoParams" - | "receiveNonPayable" - | "receivePayable" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "receiveERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receiveNoParams", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "receiveNonPayable", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receivePayable", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "receiveERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receiveNoParams", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receiveNonPayable", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receivePayable", - data: BytesLike - ): Result; - - events: { - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; -} - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface Receiver extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReceiverInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveNoParams(overrides?: CallOverrides): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - }; - - estimateGas: { - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts b/v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts deleted file mode 100644 index b7b1ca45..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ReceiverEVM.ts +++ /dev/null @@ -1,460 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ReceiverEVMInterface extends utils.Interface { - functions: { - "onRevert(bytes)": FunctionFragment; - "receiveERC20(uint256,address,address)": FunctionFragment; - "receiveERC20Partial(uint256,address,address)": FunctionFragment; - "receiveNoParams()": FunctionFragment; - "receiveNonPayable(string[],uint256[],bool)": FunctionFragment; - "receivePayable(string,uint256,bool)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "onRevert" - | "receiveERC20" - | "receiveERC20Partial" - | "receiveNoParams" - | "receiveNonPayable" - | "receivePayable" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "onRevert", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "receiveERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receiveERC20Partial", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receiveNoParams", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "receiveNonPayable", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "receivePayable", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "receiveERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receiveERC20Partial", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receiveNoParams", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receiveNonPayable", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "receivePayable", - data: BytesLike - ): Result; - - events: { - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "ReceivedRevert(address,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedRevert"): EventFragment; -} - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface ReceivedRevertEventObject { - sender: string; - data: string; -} -export type ReceivedRevertEvent = TypedEvent< - [string, string], - ReceivedRevertEventObject ->; - -export type ReceivedRevertEventFilter = TypedEventFilter; - -export interface ReceiverEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReceiverEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20Partial( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20Partial( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onRevert( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveERC20Partial( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receiveNoParams(overrides?: CallOverrides): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "ReceivedRevert(address,bytes)"( - sender?: null, - data?: null - ): ReceivedRevertEventFilter; - ReceivedRevert(sender?: null, data?: null): ReceivedRevertEventFilter; - }; - - estimateGas: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20Partial( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onRevert( - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveERC20Partial( - amount: PromiseOrValue, - token: PromiseOrValue, - destination: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receiveNonPayable( - strs: PromiseOrValue[], - nums: PromiseOrValue[], - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - receivePayable( - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/TestERC20.ts b/v1/typechain-types/contracts/prototypes/evm/TestERC20.ts deleted file mode 100644 index e72cddfe..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/TestERC20.ts +++ /dev/null @@ -1,501 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface TestERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "decreaseAllowance" - | "increaseAllowance" - | "mint" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "mint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface TestERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - mint( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts deleted file mode 100644 index 80eca2cf..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNative.ts +++ /dev/null @@ -1,389 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZetaConnectorNativeInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "receiveTokens(uint256)": FunctionFragment; - "tssAddress()": FunctionFragment; - "withdraw(address,uint256,bytes32)": FunctionFragment; - "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; - "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gateway" - | "receiveTokens" - | "tssAddress" - | "withdraw" - | "withdrawAndCall" - | "withdrawAndRevert" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "receiveTokens", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndRevert", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "receiveTokens", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndRevert", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface ZetaConnectorNative extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaConnectorNativeInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts deleted file mode 100644 index 812ea2e0..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNew.ts +++ /dev/null @@ -1,237 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZetaConnectorNewInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "withdraw(address,uint256)": FunctionFragment; - "withdrawAndCall(address,uint256,bytes)": FunctionFragment; - "zeta()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "gateway" | "withdraw" | "withdrawAndCall" | "zeta" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "zeta", values?: undefined): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zeta", data: BytesLike): Result; - - events: { - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; -} - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface ZetaConnectorNew extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaConnectorNewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise<[string]>; - }; - - gateway(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - }; - - filters: { - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zeta(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts deleted file mode 100644 index cfd60395..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNewBase.ts +++ /dev/null @@ -1,389 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZetaConnectorNewBaseInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "receiveTokens(uint256)": FunctionFragment; - "tssAddress()": FunctionFragment; - "withdraw(address,uint256,bytes32)": FunctionFragment; - "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; - "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gateway" - | "receiveTokens" - | "tssAddress" - | "withdraw" - | "withdrawAndCall" - | "withdrawAndRevert" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "receiveTokens", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndRevert", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "receiveTokens", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndRevert", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface ZetaConnectorNewBase extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaConnectorNewBaseInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts b/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts deleted file mode 100644 index ec008409..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/ZetaConnectorNonNative.ts +++ /dev/null @@ -1,454 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZetaConnectorNonNativeInterface extends utils.Interface { - functions: { - "gateway()": FunctionFragment; - "maxSupply()": FunctionFragment; - "receiveTokens(uint256)": FunctionFragment; - "setMaxSupply(uint256)": FunctionFragment; - "tssAddress()": FunctionFragment; - "withdraw(address,uint256,bytes32)": FunctionFragment; - "withdrawAndCall(address,uint256,bytes,bytes32)": FunctionFragment; - "withdrawAndRevert(address,uint256,bytes,bytes32)": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gateway" - | "maxSupply" - | "receiveTokens" - | "setMaxSupply" - | "tssAddress" - | "withdraw" - | "withdrawAndCall" - | "withdrawAndRevert" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData(functionFragment: "maxSupply", values?: undefined): string; - encodeFunctionData( - functionFragment: "receiveTokens", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setMaxSupply", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndRevert", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "maxSupply", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "receiveTokens", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setMaxSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndRevert", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "MaxSupplyUpdated(uint256)": EventFragment; - "Withdraw(address,uint256)": EventFragment; - "WithdrawAndCall(address,uint256,bytes)": EventFragment; - "WithdrawAndRevert(address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "MaxSupplyUpdated"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WithdrawAndRevert"): EventFragment; -} - -export interface MaxSupplyUpdatedEventObject { - maxSupply: BigNumber; -} -export type MaxSupplyUpdatedEvent = TypedEvent< - [BigNumber], - MaxSupplyUpdatedEventObject ->; - -export type MaxSupplyUpdatedEventFilter = - TypedEventFilter; - -export interface WithdrawEventObject { - to: string; - amount: BigNumber; -} -export type WithdrawEvent = TypedEvent< - [string, BigNumber], - WithdrawEventObject ->; - -export type WithdrawEventFilter = TypedEventFilter; - -export interface WithdrawAndCallEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndCallEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndCallEventObject ->; - -export type WithdrawAndCallEventFilter = TypedEventFilter; - -export interface WithdrawAndRevertEventObject { - to: string; - amount: BigNumber; - data: string; -} -export type WithdrawAndRevertEvent = TypedEvent< - [string, BigNumber, string], - WithdrawAndRevertEventObject ->; - -export type WithdrawAndRevertEventFilter = - TypedEventFilter; - -export interface ZetaConnectorNonNative extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaConnectorNonNativeInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gateway(overrides?: CallOverrides): Promise<[string]>; - - maxSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxSupply( - _maxSupply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise<[string]>; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - gateway(overrides?: CallOverrides): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxSupply( - _maxSupply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - gateway(overrides?: CallOverrides): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setMaxSupply( - _maxSupply: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "MaxSupplyUpdated(uint256)"(maxSupply?: null): MaxSupplyUpdatedEventFilter; - MaxSupplyUpdated(maxSupply?: null): MaxSupplyUpdatedEventFilter; - - "Withdraw(address,uint256)"( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - Withdraw( - to?: PromiseOrValue | null, - amount?: null - ): WithdrawEventFilter; - - "WithdrawAndCall(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - WithdrawAndCall( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndCallEventFilter; - - "WithdrawAndRevert(address,uint256,bytes)"( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - WithdrawAndRevert( - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): WithdrawAndRevertEventFilter; - }; - - estimateGas: { - gateway(overrides?: CallOverrides): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxSupply( - _maxSupply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gateway(overrides?: CallOverrides): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - receiveTokens( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setMaxSupply( - _maxSupply: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - tssAddress(overrides?: CallOverrides): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndRevert( - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - internalSendHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/index.ts b/v1/typechain-types/contracts/prototypes/evm/index.ts deleted file mode 100644 index bac93995..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; -export type { ierc20CustodyNewSol }; -import type * as iGatewayEvmSol from "./IGatewayEVM.sol"; -export type { iGatewayEvmSol }; -import type * as iReceiverEvmSol from "./IReceiverEVM.sol"; -export type { iReceiverEvmSol }; -import type * as iZetaConnectorSol from "./IZetaConnector.sol"; -export type { iZetaConnectorSol }; -export type { ERC20CustodyNew } from "./ERC20CustodyNew"; -export type { GatewayEVM } from "./GatewayEVM"; -export type { GatewayEVMUpgradeTest } from "./GatewayEVMUpgradeTest"; -export type { IZetaNonEthNew } from "./IZetaNonEthNew"; -export type { ReceiverEVM } from "./ReceiverEVM"; -export type { TestERC20 } from "./TestERC20"; -export type { ZetaConnectorNative } from "./ZetaConnectorNative"; -export type { ZetaConnectorNewBase } from "./ZetaConnectorNewBase"; -export type { ZetaConnectorNonNative } from "./ZetaConnectorNonNative"; diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts deleted file mode 100644 index 9eb52ca6..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGateway.ts +++ /dev/null @@ -1,250 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayInterface extends utils.Interface { - functions: { - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "send(bytes,uint256)": FunctionFragment; - "sendERC20(bytes,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "execute" - | "executeWithERC20" - | "send" - | "sendERC20" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "send", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sendERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sendERC20", data: BytesLike): Result; - - events: {}; -} - -export interface IGateway extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - asset: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - asset: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - asset: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - asset: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - send( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - sendERC20( - recipient: PromiseOrValue, - asset: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts deleted file mode 100644 index ba50c19d..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVM.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMInterface extends utils.Interface { - functions: { - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - "revertWithERC20(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "execute" | "executeWithERC20" | "revertWithERC20" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "revertWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revertWithERC20", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IGatewayEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts deleted file mode 100644 index 83722e4a..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IGatewayEVMErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts deleted file mode 100644 index 6f43bb14..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface IGatewayEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts deleted file mode 100644 index b29196dc..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents.ts +++ /dev/null @@ -1,162 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IReceiverEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; -} - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface IReceiverEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IReceiverEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts deleted file mode 100644 index 87e4491f..00000000 --- a/v1/typechain-types/contracts/prototypes/evm/interfaces.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IGatewayEVM } from "./IGatewayEVM"; -export type { IGatewayEVMErrors } from "./IGatewayEVMErrors"; -export type { IGatewayEVMEvents } from "./IGatewayEVMEvents"; -export type { IReceiverEVMEvents } from "./IReceiverEVMEvents"; diff --git a/v1/typechain-types/contracts/prototypes/index.ts b/v1/typechain-types/contracts/prototypes/index.ts deleted file mode 100644 index 9efb820b..00000000 --- a/v1/typechain-types/contracts/prototypes/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as evm from "./evm"; -export type { evm }; -import type * as zevm from "./zevm"; -export type { zevm }; diff --git a/v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts b/v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts deleted file mode 100644 index 969095cb..00000000 --- a/v1/typechain-types/contracts/prototypes/interfaces.sol/IGateway.ts +++ /dev/null @@ -1,165 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IGatewayInterface extends utils.Interface { - functions: { - "execute(address,bytes)": FunctionFragment; - "executeWithERC20(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "execute" | "executeWithERC20" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "execute", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "executeWithERC20", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeWithERC20", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IGateway extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - execute( - destination: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - executeWithERC20( - token: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts deleted file mode 100644 index 878cfe66..00000000 --- a/v1/typechain-types/contracts/prototypes/interfaces.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IGateway } from "./IGateway"; diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts deleted file mode 100644 index 931a9fba..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest.ts +++ /dev/null @@ -1,1257 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayEVMInboundTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testCallWithPayload()": FunctionFragment; - "testDepositERC20ToCustody()": FunctionFragment; - "testDepositERC20ToCustodyWithPayload()": FunctionFragment; - "testDepositEthToTss()": FunctionFragment; - "testDepositEthToTssWithPayload()": FunctionFragment; - "testFailDepositERC20ToCustodyIfAmountIs0()": FunctionFragment; - "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0()": FunctionFragment; - "testFailDepositEthToTssIfAmountIs0()": FunctionFragment; - "testFailDepositEthToTssWithPayloadIfAmountIs0()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testCallWithPayload" - | "testDepositERC20ToCustody" - | "testDepositERC20ToCustodyWithPayload" - | "testDepositEthToTss" - | "testDepositEthToTssWithPayload" - | "testFailDepositERC20ToCustodyIfAmountIs0" - | "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0" - | "testFailDepositEthToTssIfAmountIs0" - | "testFailDepositEthToTssWithPayloadIfAmountIs0" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testCallWithPayload", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDepositERC20ToCustody", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDepositERC20ToCustodyWithPayload", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDepositEthToTss", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDepositEthToTssWithPayload", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testFailDepositERC20ToCustodyIfAmountIs0", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testFailDepositEthToTssIfAmountIs0", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testFailDepositEthToTssWithPayloadIfAmountIs0", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testCallWithPayload", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDepositERC20ToCustody", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDepositERC20ToCustodyWithPayload", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDepositEthToTss", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDepositEthToTssWithPayload", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testFailDepositERC20ToCustodyIfAmountIs0", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testFailDepositEthToTssIfAmountIs0", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testFailDepositEthToTssWithPayloadIfAmountIs0", - data: BytesLike - ): Result; - - events: { - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayEVMInboundTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMInboundTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testCallWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustodyWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTss( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTssWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustodyWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTss( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTssWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallWithPayload(overrides?: CallOverrides): Promise; - - testDepositERC20ToCustody(overrides?: CallOverrides): Promise; - - testDepositERC20ToCustodyWithPayload( - overrides?: CallOverrides - ): Promise; - - testDepositEthToTss(overrides?: CallOverrides): Promise; - - testDepositEthToTssWithPayload(overrides?: CallOverrides): Promise; - - testFailDepositERC20ToCustodyIfAmountIs0( - overrides?: CallOverrides - ): Promise; - - testFailDepositERC20ToCustodyWithPayloadIfAmountIs0( - overrides?: CallOverrides - ): Promise; - - testFailDepositEthToTssIfAmountIs0( - overrides?: CallOverrides - ): Promise; - - testFailDepositEthToTssWithPayloadIfAmountIs0( - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustodyWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTss( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTssWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositERC20ToCustodyWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTss( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositEthToTssWithPayload( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositERC20ToCustodyWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testFailDepositEthToTssWithPayloadIfAmountIs0( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts deleted file mode 100644 index c5bfb328..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest.ts +++ /dev/null @@ -1,1195 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayEVMTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testForwardCallToReceiveERC20ThroughCustody()": FunctionFragment; - "testForwardCallToReceiveNoParams()": FunctionFragment; - "testForwardCallToReceiveNoParamsThroughCustody()": FunctionFragment; - "testForwardCallToReceiveNonPayable()": FunctionFragment; - "testForwardCallToReceivePayable()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testForwardCallToReceiveERC20ThroughCustody" - | "testForwardCallToReceiveNoParams" - | "testForwardCallToReceiveNoParamsThroughCustody" - | "testForwardCallToReceiveNonPayable" - | "testForwardCallToReceivePayable" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceiveERC20ThroughCustody", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceiveNoParams", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceiveNoParamsThroughCustody", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceiveNonPayable", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testForwardCallToReceivePayable", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceiveERC20ThroughCustody", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceiveNoParams", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceiveNoParamsThroughCustody", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceiveNonPayable", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testForwardCallToReceivePayable", - data: BytesLike - ): Result; - - events: { - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "Reverted(address,uint256,bytes)": EventFragment; - "RevertedWithERC20(address,address,uint256,bytes)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - payload: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayEVMTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testForwardCallToReceiveERC20ThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParamsThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNonPayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceiveERC20ThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParamsThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNonPayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceiveERC20ThroughCustody( - overrides?: CallOverrides - ): Promise; - - testForwardCallToReceiveNoParams(overrides?: CallOverrides): Promise; - - testForwardCallToReceiveNoParamsThroughCustody( - overrides?: CallOverrides - ): Promise; - - testForwardCallToReceiveNonPayable( - overrides?: CallOverrides - ): Promise; - - testForwardCallToReceivePayable(overrides?: CallOverrides): Promise; - }; - - filters: { - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): CallEventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "Reverted(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - Reverted( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): RevertedEventFilter; - - "RevertedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - RevertedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): RevertedWithERC20EventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceiveERC20ThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParamsThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNonPayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testForwardCallToReceiveERC20ThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParams( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNoParamsThroughCustody( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceiveNonPayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testForwardCallToReceivePayable( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts deleted file mode 100644 index 0359fc63..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayEVM.t.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayEVMInboundTest } from "./GatewayEVMInboundTest"; -export type { GatewayEVMTest } from "./GatewayEVMTest"; diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts deleted file mode 100644 index 45d14fb8..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest.ts +++ /dev/null @@ -1,1197 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayEVMZEVMTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testCallReceiverEVMFromSenderZEVM()": FunctionFragment; - "testCallReceiverEVMFromZEVM()": FunctionFragment; - "testWithdrawAndCallReceiverEVMFromSenderZEVM()": FunctionFragment; - "testWithdrawAndCallReceiverEVMFromZEVM()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testCallReceiverEVMFromSenderZEVM" - | "testCallReceiverEVMFromZEVM" - | "testWithdrawAndCallReceiverEVMFromSenderZEVM" - | "testWithdrawAndCallReceiverEVMFromZEVM" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testCallReceiverEVMFromSenderZEVM", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testCallReceiverEVMFromZEVM", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testWithdrawAndCallReceiverEVMFromSenderZEVM", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testWithdrawAndCallReceiverEVMFromZEVM", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testCallReceiverEVMFromSenderZEVM", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testCallReceiverEVMFromZEVM", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testWithdrawAndCallReceiverEVMFromSenderZEVM", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testWithdrawAndCallReceiverEVMFromZEVM", - data: BytesLike - ): Result; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call(address,bytes,bytes)"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Call(address,address,bytes)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Reverted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RevertedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface Call_address_bytes_bytes_EventObject { - sender: string; - receiver: string; - message: string; -} -export type Call_address_bytes_bytes_Event = TypedEvent< - [string, string, string], - Call_address_bytes_bytes_EventObject ->; - -export type Call_address_bytes_bytes_EventFilter = - TypedEventFilter; - -export interface Call_address_address_bytes_EventObject { - sender: string; - receiver: string; - payload: string; -} -export type Call_address_address_bytes_Event = TypedEvent< - [string, string, string], - Call_address_address_bytes_EventObject ->; - -export type Call_address_address_bytes_EventFilter = - TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface RevertedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type RevertedEvent = TypedEvent< - [string, BigNumber, string], - RevertedEventObject ->; - -export type RevertedEventFilter = TypedEventFilter; - -export interface RevertedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type RevertedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - RevertedWithERC20EventObject ->; - -export type RevertedWithERC20EventFilter = - TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - zrc20: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayEVMZEVMTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayEVMZEVMTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromSenderZEVM(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromZEVM(overrides?: CallOverrides): Promise; - - testWithdrawAndCallReceiverEVMFromSenderZEVM( - overrides?: CallOverrides - ): Promise; - - testWithdrawAndCallReceiverEVMFromZEVM( - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): Call_address_bytes_bytes_EventFilter; - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): Call_address_address_bytes_EventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromSenderZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawAndCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts deleted file mode 100644 index b6ce7797..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayEVMZEVMTest } from "./GatewayEVMZEVMTest"; diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts deleted file mode 100644 index 5dbb0271..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest.ts +++ /dev/null @@ -1,1078 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayIntegrationTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testCallReceiverEVMFromZEVM()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testCallReceiverEVMFromZEVM" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testCallReceiverEVMFromZEVM", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testCallReceiverEVMFromZEVM", - data: BytesLike - ): Result; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "Call(address,address,bytes)": EventFragment; - "Deposit(address,address,uint256,address,bytes)": EventFragment; - "Executed(address,uint256,bytes)": EventFragment; - "ExecutedWithERC20(address,address,uint256,bytes)": EventFragment; - "ReceivedERC20(address,uint256,address,address)": EventFragment; - "ReceivedNoParams(address)": EventFragment; - "ReceivedNonPayable(address,string[],uint256[],bool)": EventFragment; - "ReceivedPayable(address,uint256,string,uint256,bool)": EventFragment; - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call(address,bytes,bytes)"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "Call(address,address,bytes)" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Executed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ExecutedWithERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedERC20"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNoParams"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedNonPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ReceivedPayable"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface Call_address_bytes_bytes_EventObject { - sender: string; - receiver: string; - message: string; -} -export type Call_address_bytes_bytes_Event = TypedEvent< - [string, string, string], - Call_address_bytes_bytes_EventObject ->; - -export type Call_address_bytes_bytes_EventFilter = - TypedEventFilter; - -export interface Call_address_address_bytes_EventObject { - sender: string; - receiver: string; - payload: string; -} -export type Call_address_address_bytes_Event = TypedEvent< - [string, string, string], - Call_address_address_bytes_EventObject ->; - -export type Call_address_address_bytes_EventFilter = - TypedEventFilter; - -export interface DepositEventObject { - sender: string; - receiver: string; - amount: BigNumber; - asset: string; - payload: string; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber, string, string], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface ExecutedEventObject { - destination: string; - value: BigNumber; - data: string; -} -export type ExecutedEvent = TypedEvent< - [string, BigNumber, string], - ExecutedEventObject ->; - -export type ExecutedEventFilter = TypedEventFilter; - -export interface ExecutedWithERC20EventObject { - token: string; - to: string; - amount: BigNumber; - data: string; -} -export type ExecutedWithERC20Event = TypedEvent< - [string, string, BigNumber, string], - ExecutedWithERC20EventObject ->; - -export type ExecutedWithERC20EventFilter = - TypedEventFilter; - -export interface ReceivedERC20EventObject { - sender: string; - amount: BigNumber; - token: string; - destination: string; -} -export type ReceivedERC20Event = TypedEvent< - [string, BigNumber, string, string], - ReceivedERC20EventObject ->; - -export type ReceivedERC20EventFilter = TypedEventFilter; - -export interface ReceivedNoParamsEventObject { - sender: string; -} -export type ReceivedNoParamsEvent = TypedEvent< - [string], - ReceivedNoParamsEventObject ->; - -export type ReceivedNoParamsEventFilter = - TypedEventFilter; - -export interface ReceivedNonPayableEventObject { - sender: string; - strs: string[]; - nums: BigNumber[]; - flag: boolean; -} -export type ReceivedNonPayableEvent = TypedEvent< - [string, string[], BigNumber[], boolean], - ReceivedNonPayableEventObject ->; - -export type ReceivedNonPayableEventFilter = - TypedEventFilter; - -export interface ReceivedPayableEventObject { - sender: string; - value: BigNumber; - str: string; - num: BigNumber; - flag: boolean; -} -export type ReceivedPayableEvent = TypedEvent< - [string, BigNumber, string, BigNumber, boolean], - ReceivedPayableEventObject ->; - -export type ReceivedPayableEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayIntegrationTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayIntegrationTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromZEVM(overrides?: CallOverrides): Promise; - }; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): Call_address_bytes_bytes_EventFilter; - "Call(address,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - payload?: null - ): Call_address_address_bytes_EventFilter; - - "Deposit(address,address,uint256,address,bytes)"( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - Deposit( - sender?: PromiseOrValue | null, - receiver?: PromiseOrValue | null, - amount?: null, - asset?: null, - payload?: null - ): DepositEventFilter; - - "Executed(address,uint256,bytes)"( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - Executed( - destination?: PromiseOrValue | null, - value?: null, - data?: null - ): ExecutedEventFilter; - - "ExecutedWithERC20(address,address,uint256,bytes)"( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - ExecutedWithERC20( - token?: PromiseOrValue | null, - to?: PromiseOrValue | null, - amount?: null, - data?: null - ): ExecutedWithERC20EventFilter; - - "ReceivedERC20(address,uint256,address,address)"( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - ReceivedERC20( - sender?: null, - amount?: null, - token?: null, - destination?: null - ): ReceivedERC20EventFilter; - - "ReceivedNoParams(address)"(sender?: null): ReceivedNoParamsEventFilter; - ReceivedNoParams(sender?: null): ReceivedNoParamsEventFilter; - - "ReceivedNonPayable(address,string[],uint256[],bool)"( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - ReceivedNonPayable( - sender?: null, - strs?: null, - nums?: null, - flag?: null - ): ReceivedNonPayableEventFilter; - - "ReceivedPayable(address,uint256,string,uint256,bool)"( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - ReceivedPayable( - sender?: null, - value?: null, - str?: null, - num?: null, - flag?: null - ): ReceivedPayableEventFilter; - - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCallReceiverEVMFromZEVM( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts deleted file mode 100644 index de1fe6cd..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayIntegrationTest } from "./GatewayIntegrationTest"; diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts deleted file mode 100644 index ab4a8e54..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest.ts +++ /dev/null @@ -1,918 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayZEVMInboundTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testCall()": FunctionFragment; - "testWithdrawZRC20()": FunctionFragment; - "testWithdrawZRC20WithMessage()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testCall" - | "testWithdrawZRC20" - | "testWithdrawZRC20WithMessage" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "testCall", values?: undefined): string; - encodeFunctionData( - functionFragment: "testWithdrawZRC20", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testWithdrawZRC20WithMessage", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "testCall", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "testWithdrawZRC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testWithdrawZRC20WithMessage", - data: BytesLike - ): Result; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - message: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayZEVMInboundTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayZEVMInboundTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testCall( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20WithMessage( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCall( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20WithMessage( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCall(overrides?: CallOverrides): Promise; - - testWithdrawZRC20(overrides?: CallOverrides): Promise; - - testWithdrawZRC20WithMessage(overrides?: CallOverrides): Promise; - }; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCall( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20WithMessage( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testCall( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testWithdrawZRC20WithMessage( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts deleted file mode 100644 index 5957605b..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest.ts +++ /dev/null @@ -1,955 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface GatewayZEVMOutboundTestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "setUp()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - "testDeposit()": FunctionFragment; - "testDepositAndCallZContract()": FunctionFragment; - "testExecuteZContract()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "setUp" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - | "testDeposit" - | "testDepositAndCallZContract" - | "testExecuteZContract" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData(functionFragment: "setUp", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDeposit", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testDepositAndCallZContract", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "testExecuteZContract", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDeposit", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testDepositAndCallZContract", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "testExecuteZContract", - data: BytesLike - ): Result; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "ContextData(bytes,address,uint256,address,string)": EventFragment; - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ContextData"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - message: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface ContextDataEventObject { - origin: string; - sender: string; - chainID: BigNumber; - msgSender: string; - message: string; -} -export type ContextDataEvent = TypedEvent< - [string, string, BigNumber, string, string], - ContextDataEventObject ->; - -export type ContextDataEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface GatewayZEVMOutboundTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayZEVMOutboundTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - - testDeposit( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositAndCallZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testExecuteZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testDeposit( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositAndCallZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testExecuteZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testDeposit(overrides?: CallOverrides): Promise; - - testDepositAndCallZContract(overrides?: CallOverrides): Promise; - - testExecuteZContract(overrides?: CallOverrides): Promise; - }; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - - "ContextData(bytes,address,uint256,address,string)"( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataEventFilter; - ContextData( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataEventFilter; - - "Withdrawal(address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testDeposit( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositAndCallZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testExecuteZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - setUp( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - testDeposit( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testDepositAndCallZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - testExecuteZContract( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts b/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts deleted file mode 100644 index 684be4ec..00000000 --- a/v1/typechain-types/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { GatewayZEVMInboundTest } from "./GatewayZEVMInboundTest"; -export type { GatewayZEVMOutboundTest } from "./GatewayZEVMOutboundTest"; diff --git a/v1/typechain-types/contracts/prototypes/test/index.ts b/v1/typechain-types/contracts/prototypes/test/index.ts deleted file mode 100644 index 03c36b6c..00000000 --- a/v1/typechain-types/contracts/prototypes/test/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as gatewayEvmTSol from "./GatewayEVM.t.sol"; -export type { gatewayEvmTSol }; -import type * as gatewayEvmzevmTSol from "./GatewayEVMZEVM.t.sol"; -export type { gatewayEvmzevmTSol }; -import type * as gatewayZevmTSol from "./GatewayZEVM.t.sol"; -export type { gatewayZevmTSol }; diff --git a/v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts deleted file mode 100644 index 4779aa74..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/GatewayZEVM.ts +++ /dev/null @@ -1,1051 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export type ZContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type ZContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export type RevertContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type RevertContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export interface GatewayZEVMInterface extends utils.Interface { - functions: { - "FUNGIBLE_MODULE_ADDRESS()": FunctionFragment; - "call(bytes,bytes)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall((bytes,address,uint256),uint256,address,bytes)": FunctionFragment; - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "depositAndRevert((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "execute((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "executeRevert((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "initialize(address)": FunctionFragment; - "owner()": FunctionFragment; - "proxiableUUID()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "upgradeTo(address)": FunctionFragment; - "upgradeToAndCall(address,bytes)": FunctionFragment; - "withdraw(bytes,uint256,address)": FunctionFragment; - "withdraw(uint256)": FunctionFragment; - "withdrawAndCall(uint256,bytes)": FunctionFragment; - "withdrawAndCall(bytes,uint256,address,bytes)": FunctionFragment; - "zetaToken()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "FUNGIBLE_MODULE_ADDRESS" - | "call" - | "deposit" - | "depositAndCall((bytes,address,uint256),uint256,address,bytes)" - | "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)" - | "depositAndRevert" - | "execute" - | "executeRevert" - | "initialize" - | "owner" - | "proxiableUUID" - | "renounceOwnership" - | "transferOwnership" - | "upgradeTo" - | "upgradeToAndCall" - | "withdraw(bytes,uint256,address)" - | "withdraw(uint256)" - | "withdrawAndCall(uint256,bytes)" - | "withdrawAndCall(bytes,uint256,address,bytes)" - | "zetaToken" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndRevert", - values: [ - RevertContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "executeRevert", - values: [ - RevertContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "proxiableUUID", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "upgradeToAndCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdraw(bytes,uint256,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall(uint256,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; - - decodeFunctionResult( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "depositAndRevert", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "executeRevert", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "proxiableUUID", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "upgradeToAndCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdraw(bytes,uint256,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdraw(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall(uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; - - events: { - "AdminChanged(address,address)": EventFragment; - "BeaconUpgraded(address)": EventFragment; - "Call(address,bytes,bytes)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Upgraded(address)": EventFragment; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AdminChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface AdminChangedEventObject { - previousAdmin: string; - newAdmin: string; -} -export type AdminChangedEvent = TypedEvent< - [string, string], - AdminChangedEventObject ->; - -export type AdminChangedEventFilter = TypedEventFilter; - -export interface BeaconUpgradedEventObject { - beacon: string; -} -export type BeaconUpgradedEvent = TypedEvent< - [string], - BeaconUpgradedEventObject ->; - -export type BeaconUpgradedEventFilter = TypedEventFilter; - -export interface CallEventObject { - sender: string; - receiver: string; - message: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface InitializedEventObject { - version: number; -} -export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface OwnershipTransferredEventObject { - previousOwner: string; - newOwner: string; -} -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - OwnershipTransferredEventObject ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface UpgradedEventObject { - implementation: string; -} -export type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>; - -export type UpgradedEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - zrc20: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface GatewayZEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatewayZEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),uint256,address,bytes)"( - context: ZContextStruct, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)"( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise<[string]>; - - proxiableUUID(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(bytes,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(uint256,bytes)"( - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(bytes,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise<[string]>; - }; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),uint256,address,bytes)"( - context: ZContextStruct, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)"( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(bytes,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(uint256,bytes)"( - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(bytes,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - - callStatic: { - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall((bytes,address,uint256),uint256,address,bytes)"( - context: ZContextStruct, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)"( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - depositAndRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - executeRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - _zetaToken: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "withdraw(bytes,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "withdrawAndCall(uint256,bytes)"( - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "withdrawAndCall(bytes,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - filters: { - "AdminChanged(address,address)"( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - AdminChanged( - previousAdmin?: null, - newAdmin?: null - ): AdminChangedEventFilter; - - "BeaconUpgraded(address)"( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - BeaconUpgraded( - beacon?: PromiseOrValue | null - ): BeaconUpgradedEventFilter; - - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: PromiseOrValue | null, - newOwner?: PromiseOrValue | null - ): OwnershipTransferredEventFilter; - - "Upgraded(address)"( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - Upgraded( - implementation?: PromiseOrValue | null - ): UpgradedEventFilter; - - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - }; - - estimateGas: { - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),uint256,address,bytes)"( - context: ZContextStruct, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)"( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(bytes,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(uint256,bytes)"( - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(bytes,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - FUNGIBLE_MODULE_ADDRESS( - overrides?: CallOverrides - ): Promise; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),uint256,address,bytes)"( - context: ZContextStruct, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)"( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - executeRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - initialize( - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - owner(overrides?: CallOverrides): Promise; - - proxiableUUID(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferOwnership( - newOwner: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeTo( - newImplementation: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - upgradeToAndCall( - newImplementation: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(bytes,uint256,address)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdraw(uint256)"( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(uint256,bytes)"( - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "withdrawAndCall(bytes,uint256,address,bytes)"( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - zetaToken(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts deleted file mode 100644 index 12f1fa68..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM.ts +++ /dev/null @@ -1,389 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export type ZContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type ZContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export interface IGatewayZEVMInterface extends utils.Interface { - functions: { - "call(bytes,bytes)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "execute((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "withdraw(bytes,uint256,address)": FunctionFragment; - "withdrawAndCall(bytes,uint256,address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "deposit" - | "depositAndCall" - | "execute" - | "withdraw" - | "withdrawAndCall" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "depositAndCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IGatewayZEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts deleted file mode 100644 index 74cfd7ba..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayZEVMErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IGatewayZEVMErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts deleted file mode 100644 index 829208d9..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayZEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - message: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - zrc20: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface IGatewayZEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts deleted file mode 100644 index 736bdfc6..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IGatewayZEVM } from "./IGatewayZEVM"; -export type { IGatewayZEVMErrors } from "./IGatewayZEVMErrors"; -export type { IGatewayZEVMEvents } from "./IGatewayZEVMEvents"; diff --git a/v1/typechain-types/contracts/prototypes/zevm/Sender.ts b/v1/typechain-types/contracts/prototypes/zevm/Sender.ts deleted file mode 100644 index 35786b7c..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/Sender.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface SenderInterface extends utils.Interface { - functions: { - "callReceiver(bytes,string,uint256,bool)": FunctionFragment; - "gateway()": FunctionFragment; - "withdrawAndCallReceiver(bytes,uint256,address,string,uint256,bool)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "callReceiver" - | "gateway" - | "withdrawAndCallReceiver" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "callReceiver", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdrawAndCallReceiver", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "callReceiver", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCallReceiver", - data: BytesLike - ): Result; - - events: {}; -} - -export interface Sender extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SenderInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise<[string]>; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts deleted file mode 100644 index 26711238..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/SenderZEVM.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface SenderZEVMInterface extends utils.Interface { - functions: { - "callReceiver(bytes,string,uint256,bool)": FunctionFragment; - "gateway()": FunctionFragment; - "withdrawAndCallReceiver(bytes,uint256,address,string,uint256,bool)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "callReceiver" - | "gateway" - | "withdrawAndCallReceiver" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "callReceiver", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "gateway", values?: undefined): string; - encodeFunctionData( - functionFragment: "withdrawAndCallReceiver", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "callReceiver", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCallReceiver", - data: BytesLike - ): Result; - - events: {}; -} - -export interface SenderZEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SenderZEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise<[string]>; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - callReceiver( - receiver: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - gateway(overrides?: CallOverrides): Promise; - - withdrawAndCallReceiver( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - str: PromiseOrValue, - num: PromiseOrValue, - flag: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts b/v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts deleted file mode 100644 index 52795556..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/TestZContract.ts +++ /dev/null @@ -1,272 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export type ZContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type ZContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export type RevertContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type RevertContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export interface TestZContractInterface extends utils.Interface { - functions: { - "onCrossChainCall((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; - "onRevert((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "onCrossChainCall" | "onRevert" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "onCrossChainCall", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "onRevert", - values: [ - RevertContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "onCrossChainCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; - - events: { - "ContextData(bytes,address,uint256,address,string)": EventFragment; - "ContextDataRevert(bytes,address,uint256,address,string)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ContextData"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ContextDataRevert"): EventFragment; -} - -export interface ContextDataEventObject { - origin: string; - sender: string; - chainID: BigNumber; - msgSender: string; - message: string; -} -export type ContextDataEvent = TypedEvent< - [string, string, BigNumber, string, string], - ContextDataEventObject ->; - -export type ContextDataEventFilter = TypedEventFilter; - -export interface ContextDataRevertEventObject { - origin: string; - sender: string; - chainID: BigNumber; - msgSender: string; - message: string; -} -export type ContextDataRevertEvent = TypedEvent< - [string, string, BigNumber, string, string], - ContextDataRevertEventObject ->; - -export type ContextDataRevertEventFilter = - TypedEventFilter; - -export interface TestZContract extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestZContractInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "ContextData(bytes,address,uint256,address,string)"( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataEventFilter; - ContextData( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataEventFilter; - - "ContextDataRevert(bytes,address,uint256,address,string)"( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataRevertEventFilter; - ContextDataRevert( - origin?: null, - sender?: null, - chainID?: null, - msgSender?: null, - message?: null - ): ContextDataRevertEventFilter; - }; - - estimateGas: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts deleted file mode 100644 index 097645d4..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface ZRC20ErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface ZRC20Errors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZRC20ErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts deleted file mode 100644 index 7acc65b2..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New.ts +++ /dev/null @@ -1,854 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface ZRC20NewInterface extends utils.Interface { - functions: { - "CHAIN_ID()": FunctionFragment; - "COIN_TYPE()": FunctionFragment; - "FUNGIBLE_MODULE_ADDRESS()": FunctionFragment; - "GAS_LIMIT()": FunctionFragment; - "GATEWAY_CONTRACT_ADDRESS()": FunctionFragment; - "PROTOCOL_FLAT_FEE()": FunctionFragment; - "SYSTEM_CONTRACT_ADDRESS()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "burn(uint256)": FunctionFragment; - "decimals()": FunctionFragment; - "deposit(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "updateGasLimit(uint256)": FunctionFragment; - "updateProtocolFlatFee(uint256)": FunctionFragment; - "updateSystemContractAddress(address)": FunctionFragment; - "withdraw(bytes,uint256)": FunctionFragment; - "withdrawGasFee()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "CHAIN_ID" - | "COIN_TYPE" - | "FUNGIBLE_MODULE_ADDRESS" - | "GAS_LIMIT" - | "GATEWAY_CONTRACT_ADDRESS" - | "PROTOCOL_FLAT_FEE" - | "SYSTEM_CONTRACT_ADDRESS" - | "allowance" - | "approve" - | "balanceOf" - | "burn" - | "decimals" - | "deposit" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - | "updateGasLimit" - | "updateProtocolFlatFee" - | "updateSystemContractAddress" - | "withdraw" - | "withdrawGasFee" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "CHAIN_ID", values?: undefined): string; - encodeFunctionData(functionFragment: "COIN_TYPE", values?: undefined): string; - encodeFunctionData( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; - encodeFunctionData( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "PROTOCOL_FLAT_FEE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "burn", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "updateGasLimit", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "updateProtocolFlatFee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "updateSystemContractAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdrawGasFee", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "CHAIN_ID", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "COIN_TYPE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "PROTOCOL_FLAT_FEE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateGasLimit", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateProtocolFlatFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateSystemContractAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawGasFee", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Deposit(bytes,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - "UpdatedGasLimit(uint256)": EventFragment; - "UpdatedProtocolFlatFee(uint256)": EventFragment; - "UpdatedSystemContract(address)": EventFragment; - "Withdrawal(address,bytes,uint256,uint256,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedGasLimit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedProtocolFlatFee"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedSystemContract"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface DepositEventObject { - from: string; - to: string; - value: BigNumber; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface UpdatedGasLimitEventObject { - gasLimit: BigNumber; -} -export type UpdatedGasLimitEvent = TypedEvent< - [BigNumber], - UpdatedGasLimitEventObject ->; - -export type UpdatedGasLimitEventFilter = TypedEventFilter; - -export interface UpdatedProtocolFlatFeeEventObject { - protocolFlatFee: BigNumber; -} -export type UpdatedProtocolFlatFeeEvent = TypedEvent< - [BigNumber], - UpdatedProtocolFlatFeeEventObject ->; - -export type UpdatedProtocolFlatFeeEventFilter = - TypedEventFilter; - -export interface UpdatedSystemContractEventObject { - systemContract: string; -} -export type UpdatedSystemContractEvent = TypedEvent< - [string], - UpdatedSystemContractEventObject ->; - -export type UpdatedSystemContractEventFilter = - TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; -} -export type WithdrawalEvent = TypedEvent< - [string, string, BigNumber, BigNumber, BigNumber], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface ZRC20New extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZRC20NewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - CHAIN_ID(overrides?: CallOverrides): Promise<[BigNumber]>; - - COIN_TYPE(overrides?: CallOverrides): Promise<[number]>; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - GAS_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - }; - - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - - callStatic: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Deposit(bytes,address,uint256)"( - from?: null, - to?: PromiseOrValue | null, - value?: null - ): DepositEventFilter; - Deposit( - from?: null, - to?: PromiseOrValue | null, - value?: null - ): DepositEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - - "UpdatedGasLimit(uint256)"(gasLimit?: null): UpdatedGasLimitEventFilter; - UpdatedGasLimit(gasLimit?: null): UpdatedGasLimitEventFilter; - - "UpdatedProtocolFlatFee(uint256)"( - protocolFlatFee?: null - ): UpdatedProtocolFlatFeeEventFilter; - UpdatedProtocolFlatFee( - protocolFlatFee?: null - ): UpdatedProtocolFlatFeeEventFilter; - - "UpdatedSystemContract(address)"( - systemContract?: null - ): UpdatedSystemContractEventFilter; - UpdatedSystemContract( - systemContract?: null - ): UpdatedSystemContractEventFilter; - - "Withdrawal(address,bytes,uint256,uint256,uint256)"( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null - ): WithdrawalEventFilter; - }; - - estimateGas: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS( - overrides?: CallOverrides - ): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS( - overrides?: CallOverrides - ): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS( - overrides?: CallOverrides - ): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts deleted file mode 100644 index ea6138df..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/ZRC20New.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ZRC20Errors } from "./ZRC20Errors"; -export type { ZRC20New } from "./ZRC20New"; diff --git a/v1/typechain-types/contracts/prototypes/zevm/index.ts b/v1/typechain-types/contracts/prototypes/zevm/index.ts deleted file mode 100644 index edbfa71c..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as iGatewayZevmSol from "./IGatewayZEVM.sol"; -export type { iGatewayZevmSol }; -export type { GatewayZEVM } from "./GatewayZEVM"; -export type { SenderZEVM } from "./SenderZEVM"; -export type { TestZContract } from "./TestZContract"; diff --git a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts deleted file mode 100644 index 12f1fa68..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM.ts +++ /dev/null @@ -1,389 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export type ZContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type ZContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export interface IGatewayZEVMInterface extends utils.Interface { - functions: { - "call(bytes,bytes)": FunctionFragment; - "deposit(address,uint256,address)": FunctionFragment; - "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "execute((bytes,address,uint256),address,uint256,address,bytes)": FunctionFragment; - "withdraw(bytes,uint256,address)": FunctionFragment; - "withdrawAndCall(bytes,uint256,address,bytes)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "call" - | "deposit" - | "depositAndCall" - | "execute" - | "withdraw" - | "withdrawAndCall" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "call", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deposit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "depositAndCall", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "execute", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "depositAndCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawAndCall", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IGatewayZEVM extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - call( - receiver: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deposit( - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - depositAndCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - execute( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - target: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawAndCall( - receiver: PromiseOrValue, - amount: PromiseOrValue, - zrc20: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts deleted file mode 100644 index 74cfd7ba..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayZEVMErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface IGatewayZEVMErrors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts deleted file mode 100644 index 829208d9..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../common"; - -export interface IGatewayZEVMEventsInterface extends utils.Interface { - functions: {}; - - events: { - "Call(address,bytes,bytes)": EventFragment; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Call"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface CallEventObject { - sender: string; - receiver: string; - message: string; -} -export type CallEvent = TypedEvent<[string, string, string], CallEventObject>; - -export type CallEventFilter = TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - zrc20: string; - to: string; - value: BigNumber; - gasfee: BigNumber; - protocolFlatFee: BigNumber; - message: string; -} -export type WithdrawalEvent = TypedEvent< - [string, string, string, BigNumber, BigNumber, BigNumber, string], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface IGatewayZEVMEvents extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IGatewayZEVMEventsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Call(address,bytes,bytes)"( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - Call( - sender?: PromiseOrValue | null, - receiver?: null, - message?: null - ): CallEventFilter; - - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)"( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - zrc20?: null, - to?: null, - value?: null, - gasfee?: null, - protocolFlatFee?: null, - message?: null - ): WithdrawalEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts b/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts deleted file mode 100644 index 736bdfc6..00000000 --- a/v1/typechain-types/contracts/prototypes/zevm/interfaces.sol/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IGatewayZEVM } from "./IGatewayZEVM"; -export type { IGatewayZEVMErrors } from "./IGatewayZEVMErrors"; -export type { IGatewayZEVMEvents } from "./IGatewayZEVMEvents"; diff --git a/v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts deleted file mode 100644 index 8dc23c23..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/ERC20CustodyNew__factory.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - ERC20CustodyNew, - ERC20CustodyNewInterface, -} from "../../../contracts/prototypes/ERC20CustodyNew"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGateway", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610a66380380610a668339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61094f806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b91906106b6565b60405180910390f35b61007e600480360381019061007991906104e7565b6100c0565b005b61009a60048036038101906100959190610494565b610297565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161011b92919061068d565b602060405180830381600087803b15801561013557600080fd5b505af1158015610149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016d919061056f565b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101cf95949392919061063f565b600060405180830381600087803b1580156101e957600080fd5b505af11580156101fd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610226919061059c565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610288939291906106ec565b60405180910390a35050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016102d292919061068d565b602060405180830381600087803b1580156102ec57600080fd5b505af1158015610300573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610324919061056f565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161038291906106d1565b60405180910390a3505050565b60006103a261039d84610743565b61071e565b9050828152602081018484840111156103be576103bd6108b4565b5b6103c9848285610812565b509392505050565b6000813590506103e0816108d4565b92915050565b6000815190506103f5816108eb565b92915050565b60008083601f840112610411576104106108aa565b5b8235905067ffffffffffffffff81111561042e5761042d6108a5565b5b60208301915083600182028301111561044a576104496108af565b5b9250929050565b600082601f830112610466576104656108aa565b5b815161047684826020860161038f565b91505092915050565b60008135905061048e81610902565b92915050565b6000806000606084860312156104ad576104ac6108be565b5b60006104bb868287016103d1565b93505060206104cc868287016103d1565b92505060406104dd8682870161047f565b9150509250925092565b600080600080600060808688031215610503576105026108be565b5b6000610511888289016103d1565b9550506020610522888289016103d1565b94505060406105338882890161047f565b935050606086013567ffffffffffffffff811115610554576105536108b9565b5b610560888289016103fb565b92509250509295509295909350565b600060208284031215610585576105846108be565b5b6000610593848285016103e6565b91505092915050565b6000602082840312156105b2576105b16108be565b5b600082015167ffffffffffffffff8111156105d0576105cf6108b9565b5b6105dc84828501610451565b91505092915050565b6105ee81610785565b82525050565b60006106008385610774565b935061060d838584610803565b610616836108c3565b840190509392505050565b61062a816107cd565b82525050565b610639816107c3565b82525050565b600060808201905061065460008301886105e5565b61066160208301876105e5565b61066e6040830186610630565b81810360608301526106818184866105f4565b90509695505050505050565b60006040820190506106a260008301856105e5565b6106af6020830184610630565b9392505050565b60006020820190506106cb6000830184610621565b92915050565b60006020820190506106e66000830184610630565b92915050565b60006040820190506107016000830186610630565b81810360208301526107148184866105f4565b9050949350505050565b6000610728610739565b90506107348282610845565b919050565b6000604051905090565b600067ffffffffffffffff82111561075e5761075d610876565b5b610767826108c3565b9050602081019050919050565b600082825260208201905092915050565b6000610790826107a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006107d8826107df565b9050919050565b60006107ea826107f1565b9050919050565b60006107fc826107a3565b9050919050565b82818337600083830152505050565b60005b83811015610830578082015181840152602081019050610815565b8381111561083f576000848401525b50505050565b61084e826108c3565b810181811067ffffffffffffffff8211171561086d5761086c610876565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6108dd81610785565b81146108e857600080fd5b50565b6108f481610797565b81146108ff57600080fd5b50565b61090b816107c3565b811461091657600080fd5b5056fea26469706673582212203656518e4aa8f541dde5a4d09490f8b82b1ab5258bd18825341fe0e14e94eab164736f6c63430008070033"; - -type ERC20CustodyNewConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20CustodyNewConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20CustodyNew__factory extends ContractFactory { - constructor(...args: ERC20CustodyNewConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(_gateway, overrides || {}) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, overrides || {}); - } - override attach(address: string): ERC20CustodyNew { - return super.attach(address) as ERC20CustodyNew; - } - override connect(signer: Signer): ERC20CustodyNew__factory { - return super.connect(signer) as ERC20CustodyNew__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20CustodyNewInterface { - return new utils.Interface(_abi) as ERC20CustodyNewInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20CustodyNew { - return new Contract(address, _abi, signerOrProvider) as ERC20CustodyNew; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts b/v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts deleted file mode 100644 index ab89fca7..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/ERC20Custody__factory.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - ERC20Custody, - ERC20CustodyInterface, -} from "../../../contracts/prototypes/ERC20Custody"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract Gateway", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610a66380380610a668339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61094f806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b91906106b6565b60405180910390f35b61007e600480360381019061007991906104e7565b6100c0565b005b61009a60048036038101906100959190610494565b610297565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161011b92919061068d565b602060405180830381600087803b15801561013557600080fd5b505af1158015610149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016d919061056f565b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101cf95949392919061063f565b600060405180830381600087803b1580156101e957600080fd5b505af11580156101fd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610226919061059c565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610288939291906106ec565b60405180910390a35050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016102d292919061068d565b602060405180830381600087803b1580156102ec57600080fd5b505af1158015610300573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610324919061056f565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161038291906106d1565b60405180910390a3505050565b60006103a261039d84610743565b61071e565b9050828152602081018484840111156103be576103bd6108b4565b5b6103c9848285610812565b509392505050565b6000813590506103e0816108d4565b92915050565b6000815190506103f5816108eb565b92915050565b60008083601f840112610411576104106108aa565b5b8235905067ffffffffffffffff81111561042e5761042d6108a5565b5b60208301915083600182028301111561044a576104496108af565b5b9250929050565b600082601f830112610466576104656108aa565b5b815161047684826020860161038f565b91505092915050565b60008135905061048e81610902565b92915050565b6000806000606084860312156104ad576104ac6108be565b5b60006104bb868287016103d1565b93505060206104cc868287016103d1565b92505060406104dd8682870161047f565b9150509250925092565b600080600080600060808688031215610503576105026108be565b5b6000610511888289016103d1565b9550506020610522888289016103d1565b94505060406105338882890161047f565b935050606086013567ffffffffffffffff811115610554576105536108b9565b5b610560888289016103fb565b92509250509295509295909350565b600060208284031215610585576105846108be565b5b6000610593848285016103e6565b91505092915050565b6000602082840312156105b2576105b16108be565b5b600082015167ffffffffffffffff8111156105d0576105cf6108b9565b5b6105dc84828501610451565b91505092915050565b6105ee81610785565b82525050565b60006106008385610774565b935061060d838584610803565b610616836108c3565b840190509392505050565b61062a816107cd565b82525050565b610639816107c3565b82525050565b600060808201905061065460008301886105e5565b61066160208301876105e5565b61066e6040830186610630565b81810360608301526106818184866105f4565b90509695505050505050565b60006040820190506106a260008301856105e5565b6106af6020830184610630565b9392505050565b60006020820190506106cb6000830184610621565b92915050565b60006020820190506106e66000830184610630565b92915050565b60006040820190506107016000830186610630565b81810360208301526107148184866105f4565b9050949350505050565b6000610728610739565b90506107348282610845565b919050565b6000604051905090565b600067ffffffffffffffff82111561075e5761075d610876565b5b610767826108c3565b9050602081019050919050565b600082825260208201905092915050565b6000610790826107a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006107d8826107df565b9050919050565b60006107ea826107f1565b9050919050565b60006107fc826107a3565b9050919050565b82818337600083830152505050565b60005b83811015610830578082015181840152602081019050610815565b8381111561083f576000848401525b50505050565b61084e826108c3565b810181811067ffffffffffffffff8211171561086d5761086c610876565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6108dd81610785565b81146108e857600080fd5b50565b6108f481610797565b81146108ff57600080fd5b50565b61090b816107c3565b811461091657600080fd5b5056fea2646970667358221220cb809fd2ac9895fe37c1796ed199ed89d6354f2770a02612b93ed2e3ae0dab2864736f6c63430008070033"; - -type ERC20CustodyConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20CustodyConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20Custody__factory extends ContractFactory { - constructor(...args: ERC20CustodyConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(_gateway, overrides || {}) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, overrides || {}); - } - override attach(address: string): ERC20Custody { - return super.attach(address) as ERC20Custody; - } - override connect(signer: Signer): ERC20Custody__factory { - return super.connect(signer) as ERC20Custody__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20CustodyInterface { - return new utils.Interface(_abi) as ERC20CustodyInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20Custody { - return new Contract(address, _abi, signerOrProvider) as ERC20Custody; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts deleted file mode 100644 index 09a34d87..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/GatewayUpgradeTest__factory.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - GatewayUpgradeTest, - GatewayUpgradeTestInterface, -} from "../../../contracts/prototypes/GatewayUpgradeTest"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20V2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6121c062000243600039600081816102c4015281816103530152818161044d015281816104dc015261087801526121c06000f3fe60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461017e5780638129fc1c146101955780638da5cb5b146101ac578063ae7a3a6f146101d7578063dda79b7514610200578063f2fde38b1461022b5761009c565b80631cff79cd146100a15780633659cfe6146100d15780634f1ef286146100fa5780635131ab591461011657806352d1902d14610153575b600080fd5b6100bb60048036038101906100b69190611554565b610254565b6040516100c89190611a10565b60405180910390f35b3480156100dd57600080fd5b506100f860048036038101906100f3919061149f565b6102c2565b005b610114600480360381019061010f91906115b4565b61044b565b005b34801561012257600080fd5b5061013d600480360381019061013891906114cc565b610588565b60405161014a9190611a10565b60405180910390f35b34801561015f57600080fd5b50610168610874565b60405161017591906119f5565b60405180910390f35b34801561018a57600080fd5b5061019361092d565b005b3480156101a157600080fd5b506101aa610941565b005b3480156101b857600080fd5b506101c1610a87565b6040516101ce9190611988565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061149f565b610ab1565b005b34801561020c57600080fd5b50610215610af5565b6040516102229190611988565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061149f565b610b1b565b005b60606000610263858585610b9f565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516102af93929190611bcf565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034890611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610390610c56565b73ffffffffffffffffffffffffffffffffffffffff16146103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd90611aaf565b60405180910390fd5b6103ef81610cad565b61044881600067ffffffffffffffff81111561040e5761040d611d90565b5b6040519080825280601f01601f1916602001820160405280156104405781602001600182028036833780820191505090505b506000610cb8565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610519610c56565b73ffffffffffffffffffffffffffffffffffffffff161461056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690611aaf565b60405180910390fd5b61057882610cad565b61058482826001610cb8565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016105c59291906119cc565b602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190611610565b506000610625868585610b9f565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b81526004016106639291906119a3565b602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611610565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f19190611988565b60206040518083038186803b15801561070957600080fd5b505afa15801561071d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610741919061166a565b905060008111156107fd578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107a99291906119cc565b602060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190611610565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f887e0acc3616142401641abfc50d7d7ae169b6ce55d8dc06ff5e21501ddb341b88888860405161085e93929190611bcf565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611acf565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b610935610e35565b61093f6000610eb3565b565b60008060019054906101000a900460ff161590508080156109725750600160008054906101000a900460ff1660ff16105b8061099f575061098130610f79565b15801561099e5750600160008054906101000a900460ff1660ff16145b5b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590611b0f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a1b576001600060016101000a81548160ff0219169083151502179055505b610a23610f9c565b610a2b610ff5565b8015610a845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a7b9190611a32565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b23610e35565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611a6f565b60405180910390fd5b610b9c81610eb3565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610bcc929190611958565b60006040518083038185875af1925050503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c4a576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000610c847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cb5610e35565b50565b610ce47f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611050565b60000160009054906101000a900460ff1615610d0857610d038361105a565b610e30565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4e57600080fd5b505afa925050508015610d7f57506040513d601f19601f82011682018060405250810190610d7c919061163d565b60015b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611b2f565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90611aef565b60405180910390fd5b50610e2f838383611113565b5b505050565b610e3d61113f565b73ffffffffffffffffffffffffffffffffffffffff16610e5b610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890611b6f565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611baf565b60405180910390fd5b610ff3611147565b565b600060019054906101000a900460ff16611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90611baf565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61106381610f79565b6110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990611b4f565b60405180910390fd5b806110cf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61111c836111a8565b6000825111806111295750805b1561113a5761113883836111f7565b505b505050565b600033905090565b600060019054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90611baf565b60405180910390fd5b6111a66111a161113f565b610eb3565b565b6111b18161105a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061121c838360405180606001604052806027815260200161216460279139611224565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161124e9190611971565b600060405180830381855af49150503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b509150915061129f868383876112aa565b925050509392505050565b6060831561130d57600083511415611305576112c585610f79565b611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90611b8f565b60405180910390fd5b5b829050611318565b6113178383611320565b5b949350505050565b6000825111156113335781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679190611a4d565b60405180910390fd5b600061138361137e84611c26565b611c01565b90508281526020810184848401111561139f5761139e611dce565b5b6113aa848285611d1d565b509392505050565b6000813590506113c181612107565b92915050565b6000815190506113d68161211e565b92915050565b6000815190506113eb81612135565b92915050565b60008083601f84011261140757611406611dc4565b5b8235905067ffffffffffffffff81111561142457611423611dbf565b5b6020830191508360018202830111156114405761143f611dc9565b5b9250929050565b600082601f83011261145c5761145b611dc4565b5b813561146c848260208601611370565b91505092915050565b6000813590506114848161214c565b92915050565b6000815190506114998161214c565b92915050565b6000602082840312156114b5576114b4611dd8565b5b60006114c3848285016113b2565b91505092915050565b6000806000806000608086880312156114e8576114e7611dd8565b5b60006114f6888289016113b2565b9550506020611507888289016113b2565b945050604061151888828901611475565b935050606086013567ffffffffffffffff81111561153957611538611dd3565b5b611545888289016113f1565b92509250509295509295909350565b60008060006040848603121561156d5761156c611dd8565b5b600061157b868287016113b2565b935050602084013567ffffffffffffffff81111561159c5761159b611dd3565b5b6115a8868287016113f1565b92509250509250925092565b600080604083850312156115cb576115ca611dd8565b5b60006115d9858286016113b2565b925050602083013567ffffffffffffffff8111156115fa576115f9611dd3565b5b61160685828601611447565b9150509250929050565b60006020828403121561162657611625611dd8565b5b6000611634848285016113c7565b91505092915050565b60006020828403121561165357611652611dd8565b5b6000611661848285016113dc565b91505092915050565b6000602082840312156116805761167f611dd8565b5b600061168e8482850161148a565b91505092915050565b6116a081611c9a565b82525050565b6116af81611cb8565b82525050565b60006116c18385611c6d565b93506116ce838584611d1d565b6116d783611ddd565b840190509392505050565b60006116ee8385611c7e565b93506116fb838584611d1d565b82840190509392505050565b600061171282611c57565b61171c8185611c6d565b935061172c818560208601611d2c565b61173581611ddd565b840191505092915050565b600061174b82611c57565b6117558185611c7e565b9350611765818560208601611d2c565b80840191505092915050565b61177a81611cf9565b82525050565b61178981611d0b565b82525050565b600061179a82611c62565b6117a48185611c89565b93506117b4818560208601611d2c565b6117bd81611ddd565b840191505092915050565b60006117d5602683611c89565b91506117e082611dee565b604082019050919050565b60006117f8602c83611c89565b915061180382611e3d565b604082019050919050565b600061181b602c83611c89565b915061182682611e8c565b604082019050919050565b600061183e603883611c89565b915061184982611edb565b604082019050919050565b6000611861602983611c89565b915061186c82611f2a565b604082019050919050565b6000611884602e83611c89565b915061188f82611f79565b604082019050919050565b60006118a7602e83611c89565b91506118b282611fc8565b604082019050919050565b60006118ca602d83611c89565b91506118d582612017565b604082019050919050565b60006118ed602083611c89565b91506118f882612066565b602082019050919050565b6000611910601d83611c89565b915061191b8261208f565b602082019050919050565b6000611933602b83611c89565b915061193e826120b8565b604082019050919050565b61195281611ce2565b82525050565b60006119658284866116e2565b91508190509392505050565b600061197d8284611740565b915081905092915050565b600060208201905061199d6000830184611697565b92915050565b60006040820190506119b86000830185611697565b6119c56020830184611771565b9392505050565b60006040820190506119e16000830185611697565b6119ee6020830184611949565b9392505050565b6000602082019050611a0a60008301846116a6565b92915050565b60006020820190508181036000830152611a2a8184611707565b905092915050565b6000602082019050611a476000830184611780565b92915050565b60006020820190508181036000830152611a67818461178f565b905092915050565b60006020820190508181036000830152611a88816117c8565b9050919050565b60006020820190508181036000830152611aa8816117eb565b9050919050565b60006020820190508181036000830152611ac88161180e565b9050919050565b60006020820190508181036000830152611ae881611831565b9050919050565b60006020820190508181036000830152611b0881611854565b9050919050565b60006020820190508181036000830152611b2881611877565b9050919050565b60006020820190508181036000830152611b488161189a565b9050919050565b60006020820190508181036000830152611b68816118bd565b9050919050565b60006020820190508181036000830152611b88816118e0565b9050919050565b60006020820190508181036000830152611ba881611903565b9050919050565b60006020820190508181036000830152611bc881611926565b9050919050565b6000604082019050611be46000830186611949565b8181036020830152611bf78184866116b5565b9050949350505050565b6000611c0b611c1c565b9050611c178282611d5f565b919050565b6000604051905090565b600067ffffffffffffffff821115611c4157611c40611d90565b5b611c4a82611ddd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611ca582611cc2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611d0482611ce2565b9050919050565b6000611d1682611cec565b9050919050565b82818337600083830152505050565b60005b83811015611d4a578082015181840152602081019050611d2f565b83811115611d59576000848401525b50505050565b611d6882611ddd565b810181811067ffffffffffffffff82111715611d8757611d86611d90565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b61211081611c9a565b811461211b57600080fd5b50565b61212781611cac565b811461213257600080fd5b50565b61213e81611cb8565b811461214957600080fd5b50565b61215581611ce2565b811461216057600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202a6bc713190b6dd8d6ca2e7230a1fbf1a51901427e8b2269756c2b4888fc2cd164736f6c63430008070033"; - -type GatewayUpgradeTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayUpgradeTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayUpgradeTest__factory extends ContractFactory { - constructor(...args: GatewayUpgradeTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayUpgradeTest { - return super.attach(address) as GatewayUpgradeTest; - } - override connect(signer: Signer): GatewayUpgradeTest__factory { - return super.connect(signer) as GatewayUpgradeTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayUpgradeTestInterface { - return new utils.Interface(_abi) as GatewayUpgradeTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayUpgradeTest { - return new Contract(address, _abi, signerOrProvider) as GatewayUpgradeTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts deleted file mode 100644 index 9f8e5fb0..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/GatewayV2__factory.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayV2, - GatewayV2Interface, -} from "../../../../contracts/prototypes/GatewayV2.sol/GatewayV2"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20V2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6121c062000243600039600081816102c4015281816103530152818161044d015281816104dc015261087801526121c06000f3fe60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461017e5780638129fc1c146101955780638da5cb5b146101ac578063ae7a3a6f146101d7578063dda79b7514610200578063f2fde38b1461022b5761009c565b80631cff79cd146100a15780633659cfe6146100d15780634f1ef286146100fa5780635131ab591461011657806352d1902d14610153575b600080fd5b6100bb60048036038101906100b69190611554565b610254565b6040516100c89190611a10565b60405180910390f35b3480156100dd57600080fd5b506100f860048036038101906100f3919061149f565b6102c2565b005b610114600480360381019061010f91906115b4565b61044b565b005b34801561012257600080fd5b5061013d600480360381019061013891906114cc565b610588565b60405161014a9190611a10565b60405180910390f35b34801561015f57600080fd5b50610168610874565b60405161017591906119f5565b60405180910390f35b34801561018a57600080fd5b5061019361092d565b005b3480156101a157600080fd5b506101aa610941565b005b3480156101b857600080fd5b506101c1610a87565b6040516101ce9190611988565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061149f565b610ab1565b005b34801561020c57600080fd5b50610215610af5565b6040516102229190611988565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061149f565b610b1b565b005b60606000610263858585610b9f565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516102af93929190611bcf565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034890611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610390610c56565b73ffffffffffffffffffffffffffffffffffffffff16146103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd90611aaf565b60405180910390fd5b6103ef81610cad565b61044881600067ffffffffffffffff81111561040e5761040d611d90565b5b6040519080825280601f01601f1916602001820160405280156104405781602001600182028036833780820191505090505b506000610cb8565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610519610c56565b73ffffffffffffffffffffffffffffffffffffffff161461056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690611aaf565b60405180910390fd5b61057882610cad565b61058482826001610cb8565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016105c59291906119cc565b602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190611610565b506000610625868585610b9f565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b81526004016106639291906119a3565b602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611610565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f19190611988565b60206040518083038186803b15801561070957600080fd5b505afa15801561071d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610741919061166a565b905060008111156107fd578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107a99291906119cc565b602060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190611610565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f887e0acc3616142401641abfc50d7d7ae169b6ce55d8dc06ff5e21501ddb341b88888860405161085e93929190611bcf565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611acf565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b610935610e35565b61093f6000610eb3565b565b60008060019054906101000a900460ff161590508080156109725750600160008054906101000a900460ff1660ff16105b8061099f575061098130610f79565b15801561099e5750600160008054906101000a900460ff1660ff16145b5b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590611b0f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a1b576001600060016101000a81548160ff0219169083151502179055505b610a23610f9c565b610a2b610ff5565b8015610a845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a7b9190611a32565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b23610e35565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611a6f565b60405180910390fd5b610b9c81610eb3565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610bcc929190611958565b60006040518083038185875af1925050503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c4a576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000610c847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cb5610e35565b50565b610ce47f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611050565b60000160009054906101000a900460ff1615610d0857610d038361105a565b610e30565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4e57600080fd5b505afa925050508015610d7f57506040513d601f19601f82011682018060405250810190610d7c919061163d565b60015b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611b2f565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90611aef565b60405180910390fd5b50610e2f838383611113565b5b505050565b610e3d61113f565b73ffffffffffffffffffffffffffffffffffffffff16610e5b610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890611b6f565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611baf565b60405180910390fd5b610ff3611147565b565b600060019054906101000a900460ff16611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90611baf565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61106381610f79565b6110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990611b4f565b60405180910390fd5b806110cf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61111c836111a8565b6000825111806111295750805b1561113a5761113883836111f7565b505b505050565b600033905090565b600060019054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90611baf565b60405180910390fd5b6111a66111a161113f565b610eb3565b565b6111b18161105a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061121c838360405180606001604052806027815260200161216460279139611224565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161124e9190611971565b600060405180830381855af49150503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b509150915061129f868383876112aa565b925050509392505050565b6060831561130d57600083511415611305576112c585610f79565b611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90611b8f565b60405180910390fd5b5b829050611318565b6113178383611320565b5b949350505050565b6000825111156113335781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679190611a4d565b60405180910390fd5b600061138361137e84611c26565b611c01565b90508281526020810184848401111561139f5761139e611dce565b5b6113aa848285611d1d565b509392505050565b6000813590506113c181612107565b92915050565b6000815190506113d68161211e565b92915050565b6000815190506113eb81612135565b92915050565b60008083601f84011261140757611406611dc4565b5b8235905067ffffffffffffffff81111561142457611423611dbf565b5b6020830191508360018202830111156114405761143f611dc9565b5b9250929050565b600082601f83011261145c5761145b611dc4565b5b813561146c848260208601611370565b91505092915050565b6000813590506114848161214c565b92915050565b6000815190506114998161214c565b92915050565b6000602082840312156114b5576114b4611dd8565b5b60006114c3848285016113b2565b91505092915050565b6000806000806000608086880312156114e8576114e7611dd8565b5b60006114f6888289016113b2565b9550506020611507888289016113b2565b945050604061151888828901611475565b935050606086013567ffffffffffffffff81111561153957611538611dd3565b5b611545888289016113f1565b92509250509295509295909350565b60008060006040848603121561156d5761156c611dd8565b5b600061157b868287016113b2565b935050602084013567ffffffffffffffff81111561159c5761159b611dd3565b5b6115a8868287016113f1565b92509250509250925092565b600080604083850312156115cb576115ca611dd8565b5b60006115d9858286016113b2565b925050602083013567ffffffffffffffff8111156115fa576115f9611dd3565b5b61160685828601611447565b9150509250929050565b60006020828403121561162657611625611dd8565b5b6000611634848285016113c7565b91505092915050565b60006020828403121561165357611652611dd8565b5b6000611661848285016113dc565b91505092915050565b6000602082840312156116805761167f611dd8565b5b600061168e8482850161148a565b91505092915050565b6116a081611c9a565b82525050565b6116af81611cb8565b82525050565b60006116c18385611c6d565b93506116ce838584611d1d565b6116d783611ddd565b840190509392505050565b60006116ee8385611c7e565b93506116fb838584611d1d565b82840190509392505050565b600061171282611c57565b61171c8185611c6d565b935061172c818560208601611d2c565b61173581611ddd565b840191505092915050565b600061174b82611c57565b6117558185611c7e565b9350611765818560208601611d2c565b80840191505092915050565b61177a81611cf9565b82525050565b61178981611d0b565b82525050565b600061179a82611c62565b6117a48185611c89565b93506117b4818560208601611d2c565b6117bd81611ddd565b840191505092915050565b60006117d5602683611c89565b91506117e082611dee565b604082019050919050565b60006117f8602c83611c89565b915061180382611e3d565b604082019050919050565b600061181b602c83611c89565b915061182682611e8c565b604082019050919050565b600061183e603883611c89565b915061184982611edb565b604082019050919050565b6000611861602983611c89565b915061186c82611f2a565b604082019050919050565b6000611884602e83611c89565b915061188f82611f79565b604082019050919050565b60006118a7602e83611c89565b91506118b282611fc8565b604082019050919050565b60006118ca602d83611c89565b91506118d582612017565b604082019050919050565b60006118ed602083611c89565b91506118f882612066565b602082019050919050565b6000611910601d83611c89565b915061191b8261208f565b602082019050919050565b6000611933602b83611c89565b915061193e826120b8565b604082019050919050565b61195281611ce2565b82525050565b60006119658284866116e2565b91508190509392505050565b600061197d8284611740565b915081905092915050565b600060208201905061199d6000830184611697565b92915050565b60006040820190506119b86000830185611697565b6119c56020830184611771565b9392505050565b60006040820190506119e16000830185611697565b6119ee6020830184611949565b9392505050565b6000602082019050611a0a60008301846116a6565b92915050565b60006020820190508181036000830152611a2a8184611707565b905092915050565b6000602082019050611a476000830184611780565b92915050565b60006020820190508181036000830152611a67818461178f565b905092915050565b60006020820190508181036000830152611a88816117c8565b9050919050565b60006020820190508181036000830152611aa8816117eb565b9050919050565b60006020820190508181036000830152611ac88161180e565b9050919050565b60006020820190508181036000830152611ae881611831565b9050919050565b60006020820190508181036000830152611b0881611854565b9050919050565b60006020820190508181036000830152611b2881611877565b9050919050565b60006020820190508181036000830152611b488161189a565b9050919050565b60006020820190508181036000830152611b68816118bd565b9050919050565b60006020820190508181036000830152611b88816118e0565b9050919050565b60006020820190508181036000830152611ba881611903565b9050919050565b60006020820190508181036000830152611bc881611926565b9050919050565b6000604082019050611be46000830186611949565b8181036020830152611bf78184866116b5565b9050949350505050565b6000611c0b611c1c565b9050611c178282611d5f565b919050565b6000604051905090565b600067ffffffffffffffff821115611c4157611c40611d90565b5b611c4a82611ddd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611ca582611cc2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611d0482611ce2565b9050919050565b6000611d1682611cec565b9050919050565b82818337600083830152505050565b60005b83811015611d4a578082015181840152602081019050611d2f565b83811115611d59576000848401525b50505050565b611d6882611ddd565b810181811067ffffffffffffffff82111715611d8757611d86611d90565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b61211081611c9a565b811461211b57600080fd5b50565b61212781611cac565b811461213257600080fd5b50565b61213e81611cb8565b811461214957600080fd5b50565b61215581611ce2565b811461216057600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a349306a7d1588b676f5b6e95783cf1d798266d946f8cdd77432870e89cdcd4f64736f6c63430008070033"; - -type GatewayV2ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayV2ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayV2__factory extends ContractFactory { - constructor(...args: GatewayV2ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayV2 { - return super.attach(address) as GatewayV2; - } - override connect(signer: Signer): GatewayV2__factory { - return super.connect(signer) as GatewayV2__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayV2Interface { - return new utils.Interface(_abi) as GatewayV2Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayV2 { - return new Contract(address, _abi, signerOrProvider) as GatewayV2; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts deleted file mode 100644 index 509a9f46..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/Gateway__factory.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - Gateway, - GatewayInterface, -} from "../../../../contracts/prototypes/GatewayV2.sol/Gateway"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20V2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6121c062000243600039600081816102c4015281816103530152818161044d015281816104dc015261087801526121c06000f3fe60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461017e5780638129fc1c146101955780638da5cb5b146101ac578063ae7a3a6f146101d7578063dda79b7514610200578063f2fde38b1461022b5761009c565b80631cff79cd146100a15780633659cfe6146100d15780634f1ef286146100fa5780635131ab591461011657806352d1902d14610153575b600080fd5b6100bb60048036038101906100b69190611554565b610254565b6040516100c89190611a10565b60405180910390f35b3480156100dd57600080fd5b506100f860048036038101906100f3919061149f565b6102c2565b005b610114600480360381019061010f91906115b4565b61044b565b005b34801561012257600080fd5b5061013d600480360381019061013891906114cc565b610588565b60405161014a9190611a10565b60405180910390f35b34801561015f57600080fd5b50610168610874565b60405161017591906119f5565b60405180910390f35b34801561018a57600080fd5b5061019361092d565b005b3480156101a157600080fd5b506101aa610941565b005b3480156101b857600080fd5b506101c1610a87565b6040516101ce9190611988565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061149f565b610ab1565b005b34801561020c57600080fd5b50610215610af5565b6040516102229190611988565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061149f565b610b1b565b005b60606000610263858585610b9f565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516102af93929190611bcf565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034890611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610390610c56565b73ffffffffffffffffffffffffffffffffffffffff16146103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd90611aaf565b60405180910390fd5b6103ef81610cad565b61044881600067ffffffffffffffff81111561040e5761040d611d90565b5b6040519080825280601f01601f1916602001820160405280156104405781602001600182028036833780820191505090505b506000610cb8565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610519610c56565b73ffffffffffffffffffffffffffffffffffffffff161461056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690611aaf565b60405180910390fd5b61057882610cad565b61058482826001610cb8565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016105c59291906119cc565b602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190611610565b506000610625868585610b9f565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b81526004016106639291906119a3565b602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611610565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f19190611988565b60206040518083038186803b15801561070957600080fd5b505afa15801561071d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610741919061166a565b905060008111156107fd578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107a99291906119cc565b602060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190611610565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f887e0acc3616142401641abfc50d7d7ae169b6ce55d8dc06ff5e21501ddb341b88888860405161085e93929190611bcf565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611acf565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b610935610e35565b61093f6000610eb3565b565b60008060019054906101000a900460ff161590508080156109725750600160008054906101000a900460ff1660ff16105b8061099f575061098130610f79565b15801561099e5750600160008054906101000a900460ff1660ff16145b5b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590611b0f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a1b576001600060016101000a81548160ff0219169083151502179055505b610a23610f9c565b610a2b610ff5565b8015610a845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a7b9190611a32565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b23610e35565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611a6f565b60405180910390fd5b610b9c81610eb3565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610bcc929190611958565b60006040518083038185875af1925050503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c4a576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000610c847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cb5610e35565b50565b610ce47f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611050565b60000160009054906101000a900460ff1615610d0857610d038361105a565b610e30565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4e57600080fd5b505afa925050508015610d7f57506040513d601f19601f82011682018060405250810190610d7c919061163d565b60015b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611b2f565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90611aef565b60405180910390fd5b50610e2f838383611113565b5b505050565b610e3d61113f565b73ffffffffffffffffffffffffffffffffffffffff16610e5b610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890611b6f565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611baf565b60405180910390fd5b610ff3611147565b565b600060019054906101000a900460ff16611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90611baf565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61106381610f79565b6110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990611b4f565b60405180910390fd5b806110cf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61111c836111a8565b6000825111806111295750805b1561113a5761113883836111f7565b505b505050565b600033905090565b600060019054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90611baf565b60405180910390fd5b6111a66111a161113f565b610eb3565b565b6111b18161105a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061121c838360405180606001604052806027815260200161216460279139611224565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161124e9190611971565b600060405180830381855af49150503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b509150915061129f868383876112aa565b925050509392505050565b6060831561130d57600083511415611305576112c585610f79565b611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90611b8f565b60405180910390fd5b5b829050611318565b6113178383611320565b5b949350505050565b6000825111156113335781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679190611a4d565b60405180910390fd5b600061138361137e84611c26565b611c01565b90508281526020810184848401111561139f5761139e611dce565b5b6113aa848285611d1d565b509392505050565b6000813590506113c181612107565b92915050565b6000815190506113d68161211e565b92915050565b6000815190506113eb81612135565b92915050565b60008083601f84011261140757611406611dc4565b5b8235905067ffffffffffffffff81111561142457611423611dbf565b5b6020830191508360018202830111156114405761143f611dc9565b5b9250929050565b600082601f83011261145c5761145b611dc4565b5b813561146c848260208601611370565b91505092915050565b6000813590506114848161214c565b92915050565b6000815190506114998161214c565b92915050565b6000602082840312156114b5576114b4611dd8565b5b60006114c3848285016113b2565b91505092915050565b6000806000806000608086880312156114e8576114e7611dd8565b5b60006114f6888289016113b2565b9550506020611507888289016113b2565b945050604061151888828901611475565b935050606086013567ffffffffffffffff81111561153957611538611dd3565b5b611545888289016113f1565b92509250509295509295909350565b60008060006040848603121561156d5761156c611dd8565b5b600061157b868287016113b2565b935050602084013567ffffffffffffffff81111561159c5761159b611dd3565b5b6115a8868287016113f1565b92509250509250925092565b600080604083850312156115cb576115ca611dd8565b5b60006115d9858286016113b2565b925050602083013567ffffffffffffffff8111156115fa576115f9611dd3565b5b61160685828601611447565b9150509250929050565b60006020828403121561162657611625611dd8565b5b6000611634848285016113c7565b91505092915050565b60006020828403121561165357611652611dd8565b5b6000611661848285016113dc565b91505092915050565b6000602082840312156116805761167f611dd8565b5b600061168e8482850161148a565b91505092915050565b6116a081611c9a565b82525050565b6116af81611cb8565b82525050565b60006116c18385611c6d565b93506116ce838584611d1d565b6116d783611ddd565b840190509392505050565b60006116ee8385611c7e565b93506116fb838584611d1d565b82840190509392505050565b600061171282611c57565b61171c8185611c6d565b935061172c818560208601611d2c565b61173581611ddd565b840191505092915050565b600061174b82611c57565b6117558185611c7e565b9350611765818560208601611d2c565b80840191505092915050565b61177a81611cf9565b82525050565b61178981611d0b565b82525050565b600061179a82611c62565b6117a48185611c89565b93506117b4818560208601611d2c565b6117bd81611ddd565b840191505092915050565b60006117d5602683611c89565b91506117e082611dee565b604082019050919050565b60006117f8602c83611c89565b915061180382611e3d565b604082019050919050565b600061181b602c83611c89565b915061182682611e8c565b604082019050919050565b600061183e603883611c89565b915061184982611edb565b604082019050919050565b6000611861602983611c89565b915061186c82611f2a565b604082019050919050565b6000611884602e83611c89565b915061188f82611f79565b604082019050919050565b60006118a7602e83611c89565b91506118b282611fc8565b604082019050919050565b60006118ca602d83611c89565b91506118d582612017565b604082019050919050565b60006118ed602083611c89565b91506118f882612066565b602082019050919050565b6000611910601d83611c89565b915061191b8261208f565b602082019050919050565b6000611933602b83611c89565b915061193e826120b8565b604082019050919050565b61195281611ce2565b82525050565b60006119658284866116e2565b91508190509392505050565b600061197d8284611740565b915081905092915050565b600060208201905061199d6000830184611697565b92915050565b60006040820190506119b86000830185611697565b6119c56020830184611771565b9392505050565b60006040820190506119e16000830185611697565b6119ee6020830184611949565b9392505050565b6000602082019050611a0a60008301846116a6565b92915050565b60006020820190508181036000830152611a2a8184611707565b905092915050565b6000602082019050611a476000830184611780565b92915050565b60006020820190508181036000830152611a67818461178f565b905092915050565b60006020820190508181036000830152611a88816117c8565b9050919050565b60006020820190508181036000830152611aa8816117eb565b9050919050565b60006020820190508181036000830152611ac88161180e565b9050919050565b60006020820190508181036000830152611ae881611831565b9050919050565b60006020820190508181036000830152611b0881611854565b9050919050565b60006020820190508181036000830152611b2881611877565b9050919050565b60006020820190508181036000830152611b488161189a565b9050919050565b60006020820190508181036000830152611b68816118bd565b9050919050565b60006020820190508181036000830152611b88816118e0565b9050919050565b60006020820190508181036000830152611ba881611903565b9050919050565b60006020820190508181036000830152611bc881611926565b9050919050565b6000604082019050611be46000830186611949565b8181036020830152611bf78184866116b5565b9050949350505050565b6000611c0b611c1c565b9050611c178282611d5f565b919050565b6000604051905090565b600067ffffffffffffffff821115611c4157611c40611d90565b5b611c4a82611ddd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611ca582611cc2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611d0482611ce2565b9050919050565b6000611d1682611cec565b9050919050565b82818337600083830152505050565b60005b83811015611d4a578082015181840152602081019050611d2f565b83811115611d59576000848401525b50505050565b611d6882611ddd565b810181811067ffffffffffffffff82111715611d8757611d86611d90565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b61211081611c9a565b811461211b57600080fd5b50565b61212781611cac565b811461213257600080fd5b50565b61213e81611cb8565b811461214957600080fd5b50565b61215581611ce2565b811461216057600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220213f444e22fb8d2fd03bb477d5cc3358e8755ef51e023e5b9d5f77bcc506f84f64736f6c63430008070033"; - -type GatewayConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Gateway__factory extends ContractFactory { - constructor(...args: GatewayConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Gateway { - return super.attach(address) as Gateway; - } - override connect(signer: Signer): Gateway__factory { - return super.connect(signer) as Gateway__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayInterface { - return new utils.Interface(_abi) as GatewayInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Gateway { - return new Contract(address, _abi, signerOrProvider) as Gateway; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts deleted file mode 100644 index 3e3376ed..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/GatewayV2.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { Gateway__factory } from "./Gateway__factory"; -export { GatewayV2__factory } from "./GatewayV2__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts b/v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts deleted file mode 100644 index b07067d2..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/GatewayV2__factory.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - GatewayV2, - GatewayV2Interface, -} from "../../../contracts/prototypes/GatewayV2"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20V2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6121c062000243600039600081816102c4015281816103530152818161044d015281816104dc015261087801526121c06000f3fe60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461017e5780638129fc1c146101955780638da5cb5b146101ac578063ae7a3a6f146101d7578063dda79b7514610200578063f2fde38b1461022b5761009c565b80631cff79cd146100a15780633659cfe6146100d15780634f1ef286146100fa5780635131ab591461011657806352d1902d14610153575b600080fd5b6100bb60048036038101906100b69190611554565b610254565b6040516100c89190611a10565b60405180910390f35b3480156100dd57600080fd5b506100f860048036038101906100f3919061149f565b6102c2565b005b610114600480360381019061010f91906115b4565b61044b565b005b34801561012257600080fd5b5061013d600480360381019061013891906114cc565b610588565b60405161014a9190611a10565b60405180910390f35b34801561015f57600080fd5b50610168610874565b60405161017591906119f5565b60405180910390f35b34801561018a57600080fd5b5061019361092d565b005b3480156101a157600080fd5b506101aa610941565b005b3480156101b857600080fd5b506101c1610a87565b6040516101ce9190611988565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061149f565b610ab1565b005b34801561020c57600080fd5b50610215610af5565b6040516102229190611988565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061149f565b610b1b565b005b60606000610263858585610b9f565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516102af93929190611bcf565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034890611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610390610c56565b73ffffffffffffffffffffffffffffffffffffffff16146103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd90611aaf565b60405180910390fd5b6103ef81610cad565b61044881600067ffffffffffffffff81111561040e5761040d611d90565b5b6040519080825280601f01601f1916602001820160405280156104405781602001600182028036833780820191505090505b506000610cb8565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190611a8f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610519610c56565b73ffffffffffffffffffffffffffffffffffffffff161461056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690611aaf565b60405180910390fd5b61057882610cad565b61058482826001610cb8565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016105c59291906119cc565b602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190611610565b506000610625868585610b9f565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b81526004016106639291906119a3565b602060405180830381600087803b15801561067d57600080fd5b505af1158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611610565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f19190611988565b60206040518083038186803b15801561070957600080fd5b505afa15801561071d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610741919061166a565b905060008111156107fd578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107a99291906119cc565b602060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190611610565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f887e0acc3616142401641abfc50d7d7ae169b6ce55d8dc06ff5e21501ddb341b88888860405161085e93929190611bcf565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611acf565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b610935610e35565b61093f6000610eb3565b565b60008060019054906101000a900460ff161590508080156109725750600160008054906101000a900460ff1660ff16105b8061099f575061098130610f79565b15801561099e5750600160008054906101000a900460ff1660ff16145b5b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590611b0f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a1b576001600060016101000a81548160ff0219169083151502179055505b610a23610f9c565b610a2b610ff5565b8015610a845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a7b9190611a32565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b23610e35565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611a6f565b60405180910390fd5b610b9c81610eb3565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610bcc929190611958565b60006040518083038185875af1925050503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c4a576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000610c847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cb5610e35565b50565b610ce47f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611050565b60000160009054906101000a900460ff1615610d0857610d038361105a565b610e30565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4e57600080fd5b505afa925050508015610d7f57506040513d601f19601f82011682018060405250810190610d7c919061163d565b60015b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611b2f565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90611aef565b60405180910390fd5b50610e2f838383611113565b5b505050565b610e3d61113f565b73ffffffffffffffffffffffffffffffffffffffff16610e5b610a87565b73ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890611b6f565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611baf565b60405180910390fd5b610ff3611147565b565b600060019054906101000a900460ff16611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b90611baf565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61106381610f79565b6110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990611b4f565b60405180910390fd5b806110cf7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611046565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61111c836111a8565b6000825111806111295750805b1561113a5761113883836111f7565b505b505050565b600033905090565b600060019054906101000a900460ff16611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90611baf565b60405180910390fd5b6111a66111a161113f565b610eb3565b565b6111b18161105a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061121c838360405180606001604052806027815260200161216460279139611224565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161124e9190611971565b600060405180830381855af49150503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b509150915061129f868383876112aa565b925050509392505050565b6060831561130d57600083511415611305576112c585610f79565b611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90611b8f565b60405180910390fd5b5b829050611318565b6113178383611320565b5b949350505050565b6000825111156113335781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113679190611a4d565b60405180910390fd5b600061138361137e84611c26565b611c01565b90508281526020810184848401111561139f5761139e611dce565b5b6113aa848285611d1d565b509392505050565b6000813590506113c181612107565b92915050565b6000815190506113d68161211e565b92915050565b6000815190506113eb81612135565b92915050565b60008083601f84011261140757611406611dc4565b5b8235905067ffffffffffffffff81111561142457611423611dbf565b5b6020830191508360018202830111156114405761143f611dc9565b5b9250929050565b600082601f83011261145c5761145b611dc4565b5b813561146c848260208601611370565b91505092915050565b6000813590506114848161214c565b92915050565b6000815190506114998161214c565b92915050565b6000602082840312156114b5576114b4611dd8565b5b60006114c3848285016113b2565b91505092915050565b6000806000806000608086880312156114e8576114e7611dd8565b5b60006114f6888289016113b2565b9550506020611507888289016113b2565b945050604061151888828901611475565b935050606086013567ffffffffffffffff81111561153957611538611dd3565b5b611545888289016113f1565b92509250509295509295909350565b60008060006040848603121561156d5761156c611dd8565b5b600061157b868287016113b2565b935050602084013567ffffffffffffffff81111561159c5761159b611dd3565b5b6115a8868287016113f1565b92509250509250925092565b600080604083850312156115cb576115ca611dd8565b5b60006115d9858286016113b2565b925050602083013567ffffffffffffffff8111156115fa576115f9611dd3565b5b61160685828601611447565b9150509250929050565b60006020828403121561162657611625611dd8565b5b6000611634848285016113c7565b91505092915050565b60006020828403121561165357611652611dd8565b5b6000611661848285016113dc565b91505092915050565b6000602082840312156116805761167f611dd8565b5b600061168e8482850161148a565b91505092915050565b6116a081611c9a565b82525050565b6116af81611cb8565b82525050565b60006116c18385611c6d565b93506116ce838584611d1d565b6116d783611ddd565b840190509392505050565b60006116ee8385611c7e565b93506116fb838584611d1d565b82840190509392505050565b600061171282611c57565b61171c8185611c6d565b935061172c818560208601611d2c565b61173581611ddd565b840191505092915050565b600061174b82611c57565b6117558185611c7e565b9350611765818560208601611d2c565b80840191505092915050565b61177a81611cf9565b82525050565b61178981611d0b565b82525050565b600061179a82611c62565b6117a48185611c89565b93506117b4818560208601611d2c565b6117bd81611ddd565b840191505092915050565b60006117d5602683611c89565b91506117e082611dee565b604082019050919050565b60006117f8602c83611c89565b915061180382611e3d565b604082019050919050565b600061181b602c83611c89565b915061182682611e8c565b604082019050919050565b600061183e603883611c89565b915061184982611edb565b604082019050919050565b6000611861602983611c89565b915061186c82611f2a565b604082019050919050565b6000611884602e83611c89565b915061188f82611f79565b604082019050919050565b60006118a7602e83611c89565b91506118b282611fc8565b604082019050919050565b60006118ca602d83611c89565b91506118d582612017565b604082019050919050565b60006118ed602083611c89565b91506118f882612066565b602082019050919050565b6000611910601d83611c89565b915061191b8261208f565b602082019050919050565b6000611933602b83611c89565b915061193e826120b8565b604082019050919050565b61195281611ce2565b82525050565b60006119658284866116e2565b91508190509392505050565b600061197d8284611740565b915081905092915050565b600060208201905061199d6000830184611697565b92915050565b60006040820190506119b86000830185611697565b6119c56020830184611771565b9392505050565b60006040820190506119e16000830185611697565b6119ee6020830184611949565b9392505050565b6000602082019050611a0a60008301846116a6565b92915050565b60006020820190508181036000830152611a2a8184611707565b905092915050565b6000602082019050611a476000830184611780565b92915050565b60006020820190508181036000830152611a67818461178f565b905092915050565b60006020820190508181036000830152611a88816117c8565b9050919050565b60006020820190508181036000830152611aa8816117eb565b9050919050565b60006020820190508181036000830152611ac88161180e565b9050919050565b60006020820190508181036000830152611ae881611831565b9050919050565b60006020820190508181036000830152611b0881611854565b9050919050565b60006020820190508181036000830152611b2881611877565b9050919050565b60006020820190508181036000830152611b488161189a565b9050919050565b60006020820190508181036000830152611b68816118bd565b9050919050565b60006020820190508181036000830152611b88816118e0565b9050919050565b60006020820190508181036000830152611ba881611903565b9050919050565b60006020820190508181036000830152611bc881611926565b9050919050565b6000604082019050611be46000830186611949565b8181036020830152611bf78184866116b5565b9050949350505050565b6000611c0b611c1c565b9050611c178282611d5f565b919050565b6000604051905090565b600067ffffffffffffffff821115611c4157611c40611d90565b5b611c4a82611ddd565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611ca582611cc2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611d0482611ce2565b9050919050565b6000611d1682611cec565b9050919050565b82818337600083830152505050565b60005b83811015611d4a578082015181840152602081019050611d2f565b83811115611d59576000848401525b50505050565b611d6882611ddd565b810181811067ffffffffffffffff82111715611d8757611d86611d90565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b61211081611c9a565b811461211b57600080fd5b50565b61212781611cac565b811461213257600080fd5b50565b61213e81611cb8565b811461214957600080fd5b50565b61215581611ce2565b811461216057600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a349306a7d1588b676f5b6e95783cf1d798266d946f8cdd77432870e89cdcd4f64736f6c63430008070033"; - -type GatewayV2ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayV2ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayV2__factory extends ContractFactory { - constructor(...args: GatewayV2ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayV2 { - return super.attach(address) as GatewayV2; - } - override connect(signer: Signer): GatewayV2__factory { - return super.connect(signer) as GatewayV2__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayV2Interface { - return new utils.Interface(_abi) as GatewayV2Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayV2 { - return new Contract(address, _abi, signerOrProvider) as GatewayV2; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts deleted file mode 100644 index ff914666..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/Gateway__factory.ts +++ /dev/null @@ -1,560 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Gateway, - GatewayInterface, -} from "../../../contracts/prototypes/Gateway"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "SendFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Send", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: true, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "SendERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "send", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "sendERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6126b5620002436000396000818161038701528181610416015281816105100152818161059f015261093b01526126b56000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063c4d66de811610059578063c4d66de814610271578063cb0271ed1461029a578063dda79b75146102c3578063f2fde38b146102ee576100dd565b80638da5cb5b146102015780639372c4ab1461022c578063ae7a3a6f14610248576100dd565b80635131ab59116100bb5780635131ab591461015757806352d1902d146101945780635b112591146101bf578063715018a6146101ea576100dd565b80631cff79cd146100e25780633659cfe6146101125780634f1ef2861461013b575b600080fd5b6100fc60048036038101906100f791906118d1565b610317565b6040516101099190611f02565b60405180910390f35b34801561011e57600080fd5b506101396004803603810190610134919061181c565b610385565b005b61015560048036038101906101509190611931565b61050e565b005b34801561016357600080fd5b5061017e60048036038101906101799190611849565b61064b565b60405161018b9190611f02565b60405180910390f35b3480156101a057600080fd5b506101a9610937565b6040516101b69190611eb5565b60405180910390f35b3480156101cb57600080fd5b506101d46109f0565b6040516101e19190611e11565b60405180910390f35b3480156101f657600080fd5b506101ff610a16565b005b34801561020d57600080fd5b50610216610a2a565b6040516102239190611e11565b60405180910390f35b61024660048036038101906102419190611a5b565b610a54565b005b34801561025457600080fd5b5061026f600480360381019061026a919061181c565b610b9c565b005b34801561027d57600080fd5b506102986004803603810190610293919061181c565b610be0565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906119e7565b610d68565b005b3480156102cf57600080fd5b506102d8610e72565b6040516102e59190611e11565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061181c565b610e98565b005b60606000610326858585610f1c565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348686604051610372939291906120c1565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610453610fd3565b73ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a090611fa1565b60405180910390fd5b6104b28161102a565b61050b81600067ffffffffffffffff8111156104d1576104d0612282565b5b6040519080825280601f01601f1916602001820160405280156105035781602001600182028036833780820191505090505b506000611035565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105dc610fd3565b73ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990611fa1565b60405180910390fd5b61063b8261102a565b61064782826001611035565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610688929190611e8c565b602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da919061198d565b5060006106e8868585610f1c565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b8152600401610726929190611e63565b602060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610778919061198d565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107b49190611e11565b60206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190611abb565b905060008111156108c0578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161086c929190611e8c565b602060405180830381600087803b15801561088657600080fd5b505af115801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be919061198d565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610921939291906120c1565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be90611fc1565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1e6111b2565b610a286000611230565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80341015610a8e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610ad690611dfc565b60006040518083038185875af1925050503d8060008114610b13576040519150601f19603f3d011682016040523d82523d6000602084013e610b18565b606091505b50509050600015158115151415610b5b576040517f81063e5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa93afc57f3be4641cf20c7165d11856f3b46dd376108e5fffb06f73f2b2a6d58848484604051610b8e93929190611ed0565b60405180910390a150505050565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610c115750600160008054906101000a900460ff1660ff16105b80610c3e5750610c20306112f6565b158015610c3d5750600160008054906101000a900460ff1660ff16145b5b610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612001565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610cba576001600060016101000a81548160ff0219169083151502179055505b610cc2611319565b610cca611372565b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d645760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d5b9190611f24565b60405180910390a15b5050565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610dc793929190611e2c565b602060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061198d565b508173ffffffffffffffffffffffffffffffffffffffff167f35fb30ed1b8e81eb91001dad742b13b1491a67c722e8c593a886a18500f7d9af858584604051610e6493929190611ed0565b60405180910390a250505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ea06111b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790611f61565b60405180910390fd5b610f1981611230565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610f49929190611dcc565b60006040518083038185875af1925050503d8060008114610f86576040519150601f19603f3d011682016040523d82523d6000602084013e610f8b565b606091505b509150915081610fc7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006110017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110326111b2565b50565b6110617f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6113cd565b60000160009054906101000a900460ff161561108557611080836113d7565b6111ad565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110cb57600080fd5b505afa9250505080156110fc57506040513d601f19601f820116820180604052508101906110f991906119ba565b60015b61113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612021565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790611fe1565b60405180910390fd5b506111ac838383611490565b5b505050565b6111ba6114bc565b73ffffffffffffffffffffffffffffffffffffffff166111d8610a2a565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612061565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f906120a1565b60405180910390fd5b6113706114c4565b565b600060019054906101000a900460ff166113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b8906120a1565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6113e0816112f6565b61141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612041565b60405180910390fd5b8061144c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61149983611525565b6000825111806114a65750805b156114b7576114b58383611574565b505b505050565b600033905090565b600060019054906101000a900460ff16611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906120a1565b60405180910390fd5b61152361151e6114bc565b611230565b565b61152e816113d7565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606115998383604051806060016040528060278152602001612659602791396115a1565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115cb9190611de5565b600060405180830381855af49150503d8060008114611606576040519150601f19603f3d011682016040523d82523d6000602084013e61160b565b606091505b509150915061161c86838387611627565b925050509392505050565b6060831561168a5760008351141561168257611642856112f6565b611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612081565b60405180910390fd5b5b829050611695565b611694838361169d565b5b949350505050565b6000825111156116b05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e49190611f3f565b60405180910390fd5b60006117006116fb84612118565b6120f3565b90508281526020810184848401111561171c5761171b6122c0565b5b61172784828561220f565b509392505050565b60008135905061173e816125fc565b92915050565b60008151905061175381612613565b92915050565b6000815190506117688161262a565b92915050565b60008083601f840112611784576117836122b6565b5b8235905067ffffffffffffffff8111156117a1576117a06122b1565b5b6020830191508360018202830111156117bd576117bc6122bb565b5b9250929050565b600082601f8301126117d9576117d86122b6565b5b81356117e98482602086016116ed565b91505092915050565b60008135905061180181612641565b92915050565b60008151905061181681612641565b92915050565b600060208284031215611832576118316122ca565b5b60006118408482850161172f565b91505092915050565b600080600080600060808688031215611865576118646122ca565b5b60006118738882890161172f565b95505060206118848882890161172f565b9450506040611895888289016117f2565b935050606086013567ffffffffffffffff8111156118b6576118b56122c5565b5b6118c28882890161176e565b92509250509295509295909350565b6000806000604084860312156118ea576118e96122ca565b5b60006118f88682870161172f565b935050602084013567ffffffffffffffff811115611919576119186122c5565b5b6119258682870161176e565b92509250509250925092565b60008060408385031215611948576119476122ca565b5b60006119568582860161172f565b925050602083013567ffffffffffffffff811115611977576119766122c5565b5b611983858286016117c4565b9150509250929050565b6000602082840312156119a3576119a26122ca565b5b60006119b184828501611744565b91505092915050565b6000602082840312156119d0576119cf6122ca565b5b60006119de84828501611759565b91505092915050565b60008060008060608587031215611a0157611a006122ca565b5b600085013567ffffffffffffffff811115611a1f57611a1e6122c5565b5b611a2b8782880161176e565b94509450506020611a3e8782880161172f565b9250506040611a4f878288016117f2565b91505092959194509250565b600080600060408486031215611a7457611a736122ca565b5b600084013567ffffffffffffffff811115611a9257611a916122c5565b5b611a9e8682870161176e565b93509350506020611ab1868287016117f2565b9150509250925092565b600060208284031215611ad157611ad06122ca565b5b6000611adf84828501611807565b91505092915050565b611af18161218c565b82525050565b611b00816121aa565b82525050565b6000611b12838561215f565b9350611b1f83858461220f565b611b28836122cf565b840190509392505050565b6000611b3f8385612170565b9350611b4c83858461220f565b82840190509392505050565b6000611b6382612149565b611b6d818561215f565b9350611b7d81856020860161221e565b611b86816122cf565b840191505092915050565b6000611b9c82612149565b611ba68185612170565b9350611bb681856020860161221e565b80840191505092915050565b611bcb816121eb565b82525050565b611bda816121fd565b82525050565b6000611beb82612154565b611bf5818561217b565b9350611c0581856020860161221e565b611c0e816122cf565b840191505092915050565b6000611c2660268361217b565b9150611c31826122e0565b604082019050919050565b6000611c49602c8361217b565b9150611c548261232f565b604082019050919050565b6000611c6c602c8361217b565b9150611c778261237e565b604082019050919050565b6000611c8f60388361217b565b9150611c9a826123cd565b604082019050919050565b6000611cb260298361217b565b9150611cbd8261241c565b604082019050919050565b6000611cd5602e8361217b565b9150611ce08261246b565b604082019050919050565b6000611cf8602e8361217b565b9150611d03826124ba565b604082019050919050565b6000611d1b602d8361217b565b9150611d2682612509565b604082019050919050565b6000611d3e60208361217b565b9150611d4982612558565b602082019050919050565b6000611d61600083612170565b9150611d6c82612581565b600082019050919050565b6000611d84601d8361217b565b9150611d8f82612584565b602082019050919050565b6000611da7602b8361217b565b9150611db2826125ad565b604082019050919050565b611dc6816121d4565b82525050565b6000611dd9828486611b33565b91508190509392505050565b6000611df18284611b91565b915081905092915050565b6000611e0782611d54565b9150819050919050565b6000602082019050611e266000830184611ae8565b92915050565b6000606082019050611e416000830186611ae8565b611e4e6020830185611ae8565b611e5b6040830184611dbd565b949350505050565b6000604082019050611e786000830185611ae8565b611e856020830184611bc2565b9392505050565b6000604082019050611ea16000830185611ae8565b611eae6020830184611dbd565b9392505050565b6000602082019050611eca6000830184611af7565b92915050565b60006040820190508181036000830152611eeb818587611b06565b9050611efa6020830184611dbd565b949350505050565b60006020820190508181036000830152611f1c8184611b58565b905092915050565b6000602082019050611f396000830184611bd1565b92915050565b60006020820190508181036000830152611f598184611be0565b905092915050565b60006020820190508181036000830152611f7a81611c19565b9050919050565b60006020820190508181036000830152611f9a81611c3c565b9050919050565b60006020820190508181036000830152611fba81611c5f565b9050919050565b60006020820190508181036000830152611fda81611c82565b9050919050565b60006020820190508181036000830152611ffa81611ca5565b9050919050565b6000602082019050818103600083015261201a81611cc8565b9050919050565b6000602082019050818103600083015261203a81611ceb565b9050919050565b6000602082019050818103600083015261205a81611d0e565b9050919050565b6000602082019050818103600083015261207a81611d31565b9050919050565b6000602082019050818103600083015261209a81611d77565b9050919050565b600060208201905081810360008301526120ba81611d9a565b9050919050565b60006040820190506120d66000830186611dbd565b81810360208301526120e9818486611b06565b9050949350505050565b60006120fd61210e565b90506121098282612251565b919050565b6000604051905090565b600067ffffffffffffffff82111561213357612132612282565b5b61213c826122cf565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612197826121b4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121f6826121d4565b9050919050565b6000612208826121de565b9050919050565b82818337600083830152505050565b60005b8381101561223c578082015181840152602081019050612221565b8381111561224b576000848401525b50505050565b61225a826122cf565b810181811067ffffffffffffffff8211171561227957612278612282565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6126058161218c565b811461261057600080fd5b50565b61261c8161219e565b811461262757600080fd5b50565b612633816121aa565b811461263e57600080fd5b50565b61264a816121d4565b811461265557600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e7cbd929e55cc43e5cdc66ed6524d47d8a9264ddfb58047ebf2e1dd71bfa92e64736f6c63430008070033"; - -type GatewayConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Gateway__factory extends ContractFactory { - constructor(...args: GatewayConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Gateway { - return super.attach(address) as Gateway; - } - override connect(signer: Signer): Gateway__factory { - return super.connect(signer) as Gateway__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayInterface { - return new utils.Interface(_abi) as GatewayInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Gateway { - return new Contract(address, _abi, signerOrProvider) as Gateway; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts b/v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts deleted file mode 100644 index bd3f76e9..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/Receiver__factory.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - Receiver, - ReceiverInterface, -} from "../../../contracts/prototypes/Receiver"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedA", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedB", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedC", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedD", - type: "event", - }, - { - inputs: [ - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receiveA", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receiveB", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "receiveC", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "receiveD", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610bbf806100206000396000f3fe60806040526004361061003f5760003560e01c806352df08b6146100445780636fa220ad1461006d57806386c4519214610089578063f5db6b39146100a0575b600080fd5b34801561005057600080fd5b5061006b6004803603810190610066919061059f565b6100c9565b005b61008760048036038101906100829190610530565b61019b565b005b34801561009557600080fd5b5061009e6101df565b005b3480156100ac57600080fd5b506100c760048036038101906100c29190610478565b610218565b005b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3383866040518463ffffffff1660e01b8152600401610106939291906107ba565b602060405180830381600087803b15801561012057600080fd5b505af1158015610134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101589190610503565b507fe8077791e8d0f63b9e4c0b6d386cbbf6c65e1acb2a103019edba9d1cc0b329003384848460405161018e9493929190610844565b60405180910390a1505050565b7f87d67858b5cc03bdd16a3fcc56773bd59410e946cff7193cf374402c6e8fb6ee33348585856040516101d2959493929190610889565b60405180910390a1505050565b7fcf0e6f18d967cb5a3ca7781d74b1d66411d1b8984e2dd2a066709c204a66d8623360405161020e919061079f565b60405180910390a1565b7f463b3e5d6969d17b19e10c4ca95f5f1b6fdef8678f980af98071bd38f0d885c23384848460405161024d94939291906107f1565b60405180910390a1505050565b600061026d61026884610908565b6108e3565b905080838252602082019050828560208602820111156102905761028f610b1f565b5b60005b858110156102de57813567ffffffffffffffff8111156102b6576102b5610b1a565b5b8086016102c38982610435565b85526020850194506020840193505050600181019050610293565b5050509392505050565b60006102fb6102f684610934565b6108e3565b9050808382526020820190508285602086028201111561031e5761031d610b1f565b5b60005b8581101561034e57816103348882610463565b845260208401935060208301925050600181019050610321565b5050509392505050565b600061036b61036684610960565b6108e3565b90508281526020810184848401111561038757610386610b24565b5b610392848285610a78565b509392505050565b6000813590506103a981610b44565b92915050565b600082601f8301126103c4576103c3610b1a565b5b81356103d484826020860161025a565b91505092915050565b600082601f8301126103f2576103f1610b1a565b5b81356104028482602086016102e8565b91505092915050565b60008135905061041a81610b5b565b92915050565b60008151905061042f81610b5b565b92915050565b600082601f83011261044a57610449610b1a565b5b813561045a848260208601610358565b91505092915050565b60008135905061047281610b72565b92915050565b60008060006060848603121561049157610490610b2e565b5b600084013567ffffffffffffffff8111156104af576104ae610b29565b5b6104bb868287016103af565b935050602084013567ffffffffffffffff8111156104dc576104db610b29565b5b6104e8868287016103dd565b92505060406104f98682870161040b565b9150509250925092565b60006020828403121561051957610518610b2e565b5b600061052784828501610420565b91505092915050565b60008060006060848603121561054957610548610b2e565b5b600084013567ffffffffffffffff81111561056757610566610b29565b5b61057386828701610435565b935050602061058486828701610463565b92505060406105958682870161040b565b9150509250925092565b6000806000606084860312156105b8576105b7610b2e565b5b60006105c686828701610463565b93505060206105d78682870161039a565b92505060406105e88682870161039a565b9150509250925092565b60006105fe838361070f565b905092915050565b60006106128383610781565b60208301905092915050565b61062781610a30565b82525050565b6000610638826109b1565b61064281856109ec565b93508360208202850161065485610991565b8060005b85811015610690578484038952815161067185826105f2565b945061067c836109d2565b925060208a01995050600181019050610658565b50829750879550505050505092915050565b60006106ad826109bc565b6106b781856109fd565b93506106c2836109a1565b8060005b838110156106f35781516106da8882610606565b97506106e5836109df565b9250506001810190506106c6565b5085935050505092915050565b61070981610a42565b82525050565b600061071a826109c7565b6107248185610a0e565b9350610734818560208601610a87565b61073d81610b33565b840191505092915050565b6000610753826109c7565b61075d8185610a1f565b935061076d818560208601610a87565b61077681610b33565b840191505092915050565b61078a81610a6e565b82525050565b61079981610a6e565b82525050565b60006020820190506107b4600083018461061e565b92915050565b60006060820190506107cf600083018661061e565b6107dc602083018561061e565b6107e96040830184610790565b949350505050565b6000608082019050610806600083018761061e565b8181036020830152610818818661062d565b9050818103604083015261082c81856106a2565b905061083b6060830184610700565b95945050505050565b6000608082019050610859600083018761061e565b6108666020830186610790565b610873604083018561061e565b610880606083018461061e565b95945050505050565b600060a08201905061089e600083018861061e565b6108ab6020830187610790565b81810360408301526108bd8186610748565b90506108cc6060830185610790565b6108d96080830184610700565b9695505050505050565b60006108ed6108fe565b90506108f98282610aba565b919050565b6000604051905090565b600067ffffffffffffffff82111561092357610922610aeb565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561094f5761094e610aeb565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561097b5761097a610aeb565b5b61098482610b33565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610a3b82610a4e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610aa5578082015181840152602081019050610a8a565b83811115610ab4576000848401525b50505050565b610ac382610b33565b810181811067ffffffffffffffff82111715610ae257610ae1610aeb565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610b4d81610a30565b8114610b5857600080fd5b50565b610b6481610a42565b8114610b6f57600080fd5b50565b610b7b81610a6e565b8114610b8657600080fd5b5056fea264697066735822122071e33ff7a639cea7ba0e3fa2cb4106a312f1b8080d32e972b0ef4823ad974cf264736f6c63430008070033"; - -type ReceiverConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReceiverConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Receiver__factory extends ContractFactory { - constructor(...args: ReceiverConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Receiver { - return super.attach(address) as Receiver; - } - override connect(signer: Signer): Receiver__factory { - return super.connect(signer) as Receiver__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReceiverInterface { - return new utils.Interface(_abi) as ReceiverInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Receiver { - return new Contract(address, _abi, signerOrProvider) as Receiver; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts b/v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts deleted file mode 100644 index f5181c5f..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/TestERC20__factory.ts +++ /dev/null @@ -1,371 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - TestERC20, - TestERC20Interface, -} from "../../../contracts/prototypes/TestERC20"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "subtractedValue", - type: "uint256", - }, - ], - name: "decreaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "addedValue", - type: "uint256", - }, - ], - name: "increaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220fbf11f91cf796c0a9cb08e9bb25ad1c8c2a857df80f7507d9fd3d5493eb4f35a64736f6c63430008070033"; - -type TestERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TestERC20__factory extends ContractFactory { - constructor(...args: TestERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name: PromiseOrValue, - symbol: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(name, symbol, overrides || {}) as Promise; - } - override getDeployTransaction( - name: PromiseOrValue, - symbol: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(name, symbol, overrides || {}); - } - override attach(address: string): TestERC20 { - return super.attach(address) as TestERC20; - } - override connect(signer: Signer): TestERC20__factory { - return super.connect(signer) as TestERC20__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestERC20Interface { - return new utils.Interface(_abi) as TestERC20Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TestERC20 { - return new Contract(address, _abi, signerOrProvider) as TestERC20; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts b/v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts deleted file mode 100644 index 756734af..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/WETH9__factory.ts +++ /dev/null @@ -1,340 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - WETH9, - WETH9Interface, -} from "../../../contracts/prototypes/WETH9"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "guy", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "guy", - type: "address", - }, - { - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "deposit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "src", - type: "address", - }, - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "wad", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b50610115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b61011291905b808211156100f457600081556001016100fe565b90565b6108b3806101246000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea264697066735822122099293912112e50e68e1ad037d9f6a633955e9c0d7bc152fdf5024d741236eb3b64736f6c63430006060033"; - -type WETH9ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: WETH9ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class WETH9__factory extends ContractFactory { - constructor(...args: WETH9ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): WETH9 { - return super.attach(address) as WETH9; - } - override connect(signer: Signer): WETH9__factory { - return super.connect(signer) as WETH9__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): WETH9Interface { - return new utils.Interface(_abi) as WETH9Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): WETH9 { - return new Contract(address, _abi, signerOrProvider) as WETH9; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts deleted file mode 100644 index 498c7549..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNewEchidnaTest__factory.ts +++ /dev/null @@ -1,246 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ERC20CustodyNewEchidnaTest, - ERC20CustodyNewEchidnaTestInterface, -} from "../../../../contracts/prototypes/evm/ERC20CustodyNewEchidnaTest"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "echidnaCaller", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testERC20", - outputs: [ - { - internalType: "contract TestERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "testWithdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405233600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620000539062000355565b604051809103906000f08015801562000070573d6000803e3d6000fd5b50600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000be57600080fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000152576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4d66de8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620002139190620003d0565b600060405180830381600087803b1580156200022e57600080fd5b505af115801562000243573d6000803e3d6000fd5b50505050604051620002559062000363565b6200026090620003ed565b604051809103906000f0801580156200027d573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f306040518263ffffffff1660e01b81526004016200031b9190620003d0565b600060405180830381600087803b1580156200033657600080fd5b505af11580156200034b573d6000803e3d6000fd5b50505050620004bb565b6131a4806200191083390190565b6118138062004ab483390190565b6200037c8162000435565b82525050565b60006200039160048362000424565b91506200039e8262000469565b602082019050919050565b6000620003b860048362000424565b9150620003c58262000492565b602082019050919050565b6000602082019050620003e7600083018462000371565b92915050565b600060408201905081810360008301526200040881620003a9565b905081810360208301526200041d8162000382565b9050919050565b600082825260208201905092915050565b6000620004428262000449565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f5445535400000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b61144580620004cb6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063116191b61461006757806321fc65f2146100855780633c2f05a8146100a15780636133b4bb146100bf57806381100bf0146100db578063d9caed12146100f9575b600080fd5b61006f610115565b60405161007c9190610ef5565b60405180910390f35b61009f600480360381019061009a9190610b16565b61013b565b005b6100a96102c3565b6040516100b69190610f10565b60405180910390f35b6100d960048036038101906100d49190610b9e565b6102e9565b005b6100e3610569565b6040516100f09190610e3a565b60405180910390f35b610113600480360381019061010e9190610ac3565b61058f565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610143610634565b610190600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106849092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101f3959493929190610e55565b600060405180830381600087803b15801561020d57600080fd5b505af1158015610221573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061024a9190610c3f565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102ac93929190610fe8565b60405180910390a36102bc61070a565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193060058661033591906110b3565b6040518363ffffffff1660e01b8152600401610352929190610ecc565b600060405180830381600087803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056040518363ffffffff1660e01b8152600401610404929190610ea3565b602060405180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104569190610c12565b50610486600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585858561013b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016105059190610e3a565b60206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190610c88565b146105635761056261121e565b5b50505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610597610634565b6105c282828573ffffffffffffffffffffffffffffffffffffffff166106849092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161061f9190610fcd565b60405180910390a361062f61070a565b505050565b6002600054141561067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190610fad565b60405180910390fd5b6002600081905550565b6107058363a9059cbb60e01b84846040516024016106a3929190610ecc565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610714565b505050565b6001600081905550565b6000610776826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107db9092919063ffffffff16565b90506000815111156107d657808060200190518101906107969190610c12565b6107d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cc90610f8d565b60405180910390fd5b5b505050565b60606107ea84846000856107f3565b90509392505050565b606082471015610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90610f4d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108619190610e23565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b50915091506108b4878383876108c0565b92505050949350505050565b606083156109235760008351141561091b576108db85610936565b61091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190610f6d565b60405180910390fd5b5b82905061092e565b61092d8383610959565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096c5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a09190610f2b565b60405180910390fd5b60006109bc6109b78461103f565b61101a565b9050828152602081018484840111156109d8576109d76112ba565b5b6109e38482856111ba565b509392505050565b6000813590506109fa816113ca565b92915050565b600081519050610a0f816113e1565b92915050565b60008083601f840112610a2b57610a2a6112b0565b5b8235905067ffffffffffffffff811115610a4857610a476112ab565b5b602083019150836001820283011115610a6457610a636112b5565b5b9250929050565b600082601f830112610a8057610a7f6112b0565b5b8151610a908482602086016109a9565b91505092915050565b600081359050610aa8816113f8565b92915050565b600081519050610abd816113f8565b92915050565b600080600060608486031215610adc57610adb6112c4565b5b6000610aea868287016109eb565b9350506020610afb868287016109eb565b9250506040610b0c86828701610a99565b9150509250925092565b600080600080600060808688031215610b3257610b316112c4565b5b6000610b40888289016109eb565b9550506020610b51888289016109eb565b9450506040610b6288828901610a99565b935050606086013567ffffffffffffffff811115610b8357610b826112bf565b5b610b8f88828901610a15565b92509250509295509295909350565b60008060008060608587031215610bb857610bb76112c4565b5b6000610bc6878288016109eb565b9450506020610bd787828801610a99565b935050604085013567ffffffffffffffff811115610bf857610bf76112bf565b5b610c0487828801610a15565b925092505092959194509250565b600060208284031215610c2857610c276112c4565b5b6000610c3684828501610a00565b91505092915050565b600060208284031215610c5557610c546112c4565b5b600082015167ffffffffffffffff811115610c7357610c726112bf565b5b610c7f84828501610a6b565b91505092915050565b600060208284031215610c9e57610c9d6112c4565b5b6000610cac84828501610aae565b91505092915050565b610cbe81611109565b82525050565b6000610cd08385611086565b9350610cdd8385846111ab565b610ce6836112c9565b840190509392505050565b6000610cfc82611070565b610d068185611097565b9350610d168185602086016111ba565b80840191505092915050565b610d2b81611151565b82525050565b610d3a81611163565b82525050565b610d4981611175565b82525050565b6000610d5a8261107b565b610d6481856110a2565b9350610d748185602086016111ba565b610d7d816112c9565b840191505092915050565b6000610d956026836110a2565b9150610da0826112da565b604082019050919050565b6000610db8601d836110a2565b9150610dc382611329565b602082019050919050565b6000610ddb602a836110a2565b9150610de682611352565b604082019050919050565b6000610dfe601f836110a2565b9150610e09826113a1565b602082019050919050565b610e1d81611147565b82525050565b6000610e2f8284610cf1565b915081905092915050565b6000602082019050610e4f6000830184610cb5565b92915050565b6000608082019050610e6a6000830188610cb5565b610e776020830187610cb5565b610e846040830186610e14565b8181036060830152610e97818486610cc4565b90509695505050505050565b6000604082019050610eb86000830185610cb5565b610ec56020830184610d40565b9392505050565b6000604082019050610ee16000830185610cb5565b610eee6020830184610e14565b9392505050565b6000602082019050610f0a6000830184610d22565b92915050565b6000602082019050610f256000830184610d31565b92915050565b60006020820190508181036000830152610f458184610d4f565b905092915050565b60006020820190508181036000830152610f6681610d88565b9050919050565b60006020820190508181036000830152610f8681610dab565b9050919050565b60006020820190508181036000830152610fa681610dce565b9050919050565b60006020820190508181036000830152610fc681610df1565b9050919050565b6000602082019050610fe26000830184610e14565b92915050565b6000604082019050610ffd6000830186610e14565b8181036020830152611010818486610cc4565b9050949350505050565b6000611024611035565b905061103082826111ed565b919050565b6000604051905090565b600067ffffffffffffffff82111561105a5761105961127c565b5b611063826112c9565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110be82611147565b91506110c983611147565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110fe576110fd61124d565b5b828201905092915050565b600061111482611127565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061115c82611187565b9050919050565b600061116e82611187565b9050919050565b600061118082611147565b9050919050565b600061119282611199565b9050919050565b60006111a482611127565b9050919050565b82818337600083830152505050565b60005b838110156111d85780820151818401526020810190506111bd565b838111156111e7576000848401525b50505050565b6111f6826112c9565b810181811067ffffffffffffffff821117156112155761121461127c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113d381611109565b81146113de57600080fd5b50565b6113ea8161111b565b81146113f557600080fd5b50565b61140181611147565b811461140c57600080fd5b5056fea2646970667358221220f417d4334eb699326c25c4fc9a8ab62d25be219ba070b670d3e9b5d877dbcfb464736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613123610081600039600081816105fc0152818161068b01528181610785015281816108140152610bae01526131236000f3fe6080604052600436106100fe5760003560e01c8063715018a611610095578063c4d66de811610064578063c4d66de8146102e4578063dda79b751461030d578063f2fde38b14610338578063f340fa0114610361578063f45346dc1461037d576100fe565b8063715018a6146102505780638c6f037f146102675780638da5cb5b14610290578063ae7a3a6f146102bb576100fe565b80634f1ef286116100d15780634f1ef286146101a15780635131ab59146101bd57806352d1902d146101fa5780635b11259114610225576100fe565b80631b8b921d146101035780631cff79cd1461012c57806329c59b5d1461015c5780633659cfe614610178575b600080fd5b34801561010f57600080fd5b5061012a60048036038101906101259190612183565b6103a6565b005b61014660048036038101906101419190612183565b610412565b6040516101539190612816565b60405180910390f35b61017660048036038101906101719190612183565b610480565b005b34801561018457600080fd5b5061019f600480360381019061019a91906120ce565b6105fa565b005b6101bb60048036038101906101b691906121e3565b610783565b005b3480156101c957600080fd5b506101e460048036038101906101df91906120fb565b6108c0565b6040516101f19190612816565b60405180910390f35b34801561020657600080fd5b5061020f610baa565b60405161021c91906127d7565b60405180910390f35b34801561023157600080fd5b5061023a610c63565b6040516102479190612733565b60405180910390f35b34801561025c57600080fd5b50610265610c89565b005b34801561027357600080fd5b5061028e60048036038101906102899190612292565b610c9d565b005b34801561029c57600080fd5b506102a5610d99565b6040516102b29190612733565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906120ce565b610dc3565b005b3480156102f057600080fd5b5061030b600480360381019061030691906120ce565b610e8f565b005b34801561031957600080fd5b5061032261107e565b60405161032f9190612733565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906120ce565b6110a4565b005b61037b600480360381019061037691906120ce565b611128565b005b34801561038957600080fd5b506103a4600480360381019061039f919061223f565b61129c565b005b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516104059291906127f2565b60405180910390a3505050565b60606000610421858585611392565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161046d93929190612a91565b60405180910390a2809150509392505050565b60003414156104bb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516105039061271e565b60006040518083038185875af1925050503d8060008114610540576040519150601f19603f3d011682016040523d82523d6000602084013e610545565b606091505b50509050600015158115151415610588576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516105ec9493929190612a15565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106c8611449565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906128b5565b60405180910390fd5b610727816114a0565b61078081600067ffffffffffffffff81111561074657610745612c52565b5b6040519080825280601f01601f1916602001820160405280156107785781602001600182028036833780820191505090505b5060006114ab565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610851611449565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906128b5565b60405180910390fd5b6108b0826114a0565b6108bc828260016114ab565b5050565b606060008414156108fd576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109078686611628565b61093d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016109789291906127ae565b602060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca919061231a565b610a00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0d868585611392565b9050610a198787611628565b610a4f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a8a9190612733565b60206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190612374565b90506000811115610b3357610b3260c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828a73ffffffffffffffffffffffffffffffffffffffff166116c09092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610b9493929190612a91565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906128f5565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c91611746565b610c9b60006117c4565b565b6000841415610cd8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d273360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868673ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610d8a9493929190612a15565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610ec05750600160008054906101000a900460ff1660ff16105b80610eed5750610ecf30611913565b158015610eec5750600160008054906101000a900460ff1660ff16145b5b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612935565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610f69576001600060016101000a81548160ff0219169083151502179055505b610f71611936565b610f7961198f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561107a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110719190612838565b60405180910390a15b5050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac611746565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612875565b60405180910390fd5b611125816117c4565b50565b6000341415611163576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516111ab9061271e565b60006040518083038185875af1925050503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b50509050600015158115151415611230576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611290929190612a55565b60405180910390a35050565b60008214156112d7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113263360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611385929190612a55565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516113bf9291906126ee565b60006040518083038185875af1925050503d80600081146113fc576040519150601f19603f3d011682016040523d82523d6000602084013e611401565b606091505b50915091508161143d576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006114777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611746565b50565b6114d77f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6119ea565b60000160009054906101000a900460ff16156114fb576114f6836119f4565b611623565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154157600080fd5b505afa92505050801561157257506040513d601f19601f8201168201806040525081019061156f9190612347565b60015b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612955565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90612915565b60405180910390fd5b50611622838383611aad565b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611666929190612785565b602060405180830381600087803b15801561168057600080fd5b505af1158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061231a565b905092915050565b6117418363a9059cbb60e01b84846040516024016116df9291906127ae565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b505050565b61174e611ba0565b73ffffffffffffffffffffffffffffffffffffffff1661176c610d99565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612995565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61190d846323b872dd60e01b8585856040516024016118ab9392919061274e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906129d5565b60405180910390fd5b61198d611ba8565b565b600060019054906101000a900460ff166119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906129d5565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6119fd81611913565b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612975565b60405180910390fd5b80611a697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ab683611c09565b600082511180611ac35750805b15611ad457611ad28383611c58565b505b505050565b6000611b3b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c859092919063ffffffff16565b9050600081511115611b9b5780806020019051810190611b5b919061231a565b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906129f5565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff16611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906129d5565b60405180910390fd5b611c07611c02611ba0565b6117c4565b565b611c12816119f4565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060611c7d83836040518060600160405280602781526020016130c760279139611c9d565b905092915050565b6060611c948484600085611d23565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611cc79190612707565b600060405180830381855af49150503d8060008114611d02576040519150601f19603f3d011682016040523d82523d6000602084013e611d07565b606091505b5091509150611d1886838387611df0565b925050509392505050565b606082471015611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906128d5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d919190612707565b60006040518083038185875af1925050503d8060008114611dce576040519150601f19603f3d011682016040523d82523d6000602084013e611dd3565b606091505b5091509150611de487838387611e66565b92505050949350505050565b60608315611e5357600083511415611e4b57611e0b85611913565b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906129b5565b60405180910390fd5b5b829050611e5e565b611e5d8383611edc565b5b949350505050565b60608315611ec957600083511415611ec157611e8185611f2c565b611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906129b5565b60405180910390fd5b5b829050611ed4565b611ed38383611f4f565b5b949350505050565b600082511115611eef5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239190612853565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611f625781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f969190612853565b60405180910390fd5b6000611fb2611fad84612ae8565b612ac3565b905082815260208101848484011115611fce57611fcd612c90565b5b611fd9848285612bdf565b509392505050565b600081359050611ff08161306a565b92915050565b60008151905061200581613081565b92915050565b60008151905061201a81613098565b92915050565b60008083601f84011261203657612035612c86565b5b8235905067ffffffffffffffff81111561205357612052612c81565b5b60208301915083600182028301111561206f5761206e612c8b565b5b9250929050565b600082601f83011261208b5761208a612c86565b5b813561209b848260208601611f9f565b91505092915050565b6000813590506120b3816130af565b92915050565b6000815190506120c8816130af565b92915050565b6000602082840312156120e4576120e3612c9a565b5b60006120f284828501611fe1565b91505092915050565b60008060008060006080868803121561211757612116612c9a565b5b600061212588828901611fe1565b955050602061213688828901611fe1565b9450506040612147888289016120a4565b935050606086013567ffffffffffffffff81111561216857612167612c95565b5b61217488828901612020565b92509250509295509295909350565b60008060006040848603121561219c5761219b612c9a565b5b60006121aa86828701611fe1565b935050602084013567ffffffffffffffff8111156121cb576121ca612c95565b5b6121d786828701612020565b92509250509250925092565b600080604083850312156121fa576121f9612c9a565b5b600061220885828601611fe1565b925050602083013567ffffffffffffffff81111561222957612228612c95565b5b61223585828601612076565b9150509250929050565b60008060006060848603121561225857612257612c9a565b5b600061226686828701611fe1565b9350506020612277868287016120a4565b925050604061228886828701611fe1565b9150509250925092565b6000806000806000608086880312156122ae576122ad612c9a565b5b60006122bc88828901611fe1565b95505060206122cd888289016120a4565b94505060406122de88828901611fe1565b935050606086013567ffffffffffffffff8111156122ff576122fe612c95565b5b61230b88828901612020565b92509250509295509295909350565b6000602082840312156123305761232f612c9a565b5b600061233e84828501611ff6565b91505092915050565b60006020828403121561235d5761235c612c9a565b5b600061236b8482850161200b565b91505092915050565b60006020828403121561238a57612389612c9a565b5b6000612398848285016120b9565b91505092915050565b6123aa81612b5c565b82525050565b6123b981612b7a565b82525050565b60006123cb8385612b2f565b93506123d8838584612bdf565b6123e183612c9f565b840190509392505050565b60006123f88385612b40565b9350612405838584612bdf565b82840190509392505050565b600061241c82612b19565b6124268185612b2f565b9350612436818560208601612bee565b61243f81612c9f565b840191505092915050565b600061245582612b19565b61245f8185612b40565b935061246f818560208601612bee565b80840191505092915050565b61248481612bbb565b82525050565b61249381612bcd565b82525050565b60006124a482612b24565b6124ae8185612b4b565b93506124be818560208601612bee565b6124c781612c9f565b840191505092915050565b60006124df602683612b4b565b91506124ea82612cb0565b604082019050919050565b6000612502602c83612b4b565b915061250d82612cff565b604082019050919050565b6000612525602c83612b4b565b915061253082612d4e565b604082019050919050565b6000612548602683612b4b565b915061255382612d9d565b604082019050919050565b600061256b603883612b4b565b915061257682612dec565b604082019050919050565b600061258e602983612b4b565b915061259982612e3b565b604082019050919050565b60006125b1602e83612b4b565b91506125bc82612e8a565b604082019050919050565b60006125d4602e83612b4b565b91506125df82612ed9565b604082019050919050565b60006125f7602d83612b4b565b915061260282612f28565b604082019050919050565b600061261a602083612b4b565b915061262582612f77565b602082019050919050565b600061263d600083612b2f565b915061264882612fa0565b600082019050919050565b6000612660600083612b40565b915061266b82612fa0565b600082019050919050565b6000612683601d83612b4b565b915061268e82612fa3565b602082019050919050565b60006126a6602b83612b4b565b91506126b182612fcc565b604082019050919050565b60006126c9602a83612b4b565b91506126d48261301b565b604082019050919050565b6126e881612ba4565b82525050565b60006126fb8284866123ec565b91508190509392505050565b6000612713828461244a565b915081905092915050565b600061272982612653565b9150819050919050565b600060208201905061274860008301846123a1565b92915050565b600060608201905061276360008301866123a1565b61277060208301856123a1565b61277d60408301846126df565b949350505050565b600060408201905061279a60008301856123a1565b6127a7602083018461247b565b9392505050565b60006040820190506127c360008301856123a1565b6127d060208301846126df565b9392505050565b60006020820190506127ec60008301846123b0565b92915050565b6000602082019050818103600083015261280d8184866123bf565b90509392505050565b600060208201905081810360008301526128308184612411565b905092915050565b600060208201905061284d600083018461248a565b92915050565b6000602082019050818103600083015261286d8184612499565b905092915050565b6000602082019050818103600083015261288e816124d2565b9050919050565b600060208201905081810360008301526128ae816124f5565b9050919050565b600060208201905081810360008301526128ce81612518565b9050919050565b600060208201905081810360008301526128ee8161253b565b9050919050565b6000602082019050818103600083015261290e8161255e565b9050919050565b6000602082019050818103600083015261292e81612581565b9050919050565b6000602082019050818103600083015261294e816125a4565b9050919050565b6000602082019050818103600083015261296e816125c7565b9050919050565b6000602082019050818103600083015261298e816125ea565b9050919050565b600060208201905081810360008301526129ae8161260d565b9050919050565b600060208201905081810360008301526129ce81612676565b9050919050565b600060208201905081810360008301526129ee81612699565b9050919050565b60006020820190508181036000830152612a0e816126bc565b9050919050565b6000606082019050612a2a60008301876126df565b612a3760208301866123a1565b8181036040830152612a4a8184866123bf565b905095945050505050565b6000606082019050612a6a60008301856126df565b612a7760208301846123a1565b8181036040830152612a8881612630565b90509392505050565b6000604082019050612aa660008301866126df565b8181036020830152612ab98184866123bf565b9050949350505050565b6000612acd612ade565b9050612ad98282612c21565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0357612b02612c52565b5b612b0c82612c9f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b6782612b84565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612bc682612ba4565b9050919050565b6000612bd882612bae565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612c9f565b810181811067ffffffffffffffff82111715612c4957612c48612c52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61307381612b5c565b811461307e57600080fd5b50565b61308a81612b6e565b811461309557600080fd5b50565b6130a181612b7a565b81146130ac57600080fd5b50565b6130b881612ba4565b81146130c357600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220abb4e7f2513bc503240d32330e252dd6afa03f582abbc890f23aff412f65551d64736f6c6343000807003360806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c63430008070033"; - -type ERC20CustodyNewEchidnaTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20CustodyNewEchidnaTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20CustodyNewEchidnaTest__factory extends ContractFactory { - constructor(...args: ERC20CustodyNewEchidnaTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): ERC20CustodyNewEchidnaTest { - return super.attach(address) as ERC20CustodyNewEchidnaTest; - } - override connect(signer: Signer): ERC20CustodyNewEchidnaTest__factory { - return super.connect(signer) as ERC20CustodyNewEchidnaTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20CustodyNewEchidnaTestInterface { - return new utils.Interface(_abi) as ERC20CustodyNewEchidnaTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20CustodyNewEchidnaTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as ERC20CustodyNewEchidnaTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts deleted file mode 100644 index 0c59a62b..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts +++ /dev/null @@ -1,289 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ERC20CustodyNew, - ERC20CustodyNewInterface, -} from "../../../../contracts/prototypes/evm/ERC20CustodyNew"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033"; - -type ERC20CustodyNewConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20CustodyNewConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20CustodyNew__factory extends ContractFactory { - constructor(...args: ERC20CustodyNewConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _tssAddress, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, _tssAddress, overrides || {}); - } - override attach(address: string): ERC20CustodyNew { - return super.attach(address) as ERC20CustodyNew; - } - override connect(signer: Signer): ERC20CustodyNew__factory { - return super.connect(signer) as ERC20CustodyNew__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20CustodyNewInterface { - return new utils.Interface(_abi) as ERC20CustodyNewInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20CustodyNew { - return new Contract(address, _abi, signerOrProvider) as ERC20CustodyNew; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts deleted file mode 100644 index f39562b3..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM__factory.ts +++ /dev/null @@ -1,731 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayEVM, - GatewayEVMInterface, -} from "../../../../../contracts/prototypes/evm/GatewayEVM.sol/GatewayEVM"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeRevert", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - { - internalType: "address", - name: "_zeta", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "revertWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_zetaConnector", - type: "address", - }, - ], - name: "setConnector", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [], - name: "zeta", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "zetaConnector", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613a91620002436000396000818161099501528181610a2401528181610d8e01528181610e1d01526112490152613a916000f3fe6080604052600436106101355760003560e01c80635b112591116100ab578063b8969bd41161006f578063b8969bd4146103b4578063dda79b75146103dd578063e8f9cb3a14610408578063f2fde38b14610433578063f340fa011461045c578063f45346dc1461047857610135565b80635b112591146102f5578063715018a6146103205780638c6f037f146103375780638da5cb5b14610360578063ae7a3a6f1461038b57610135565b80633659cfe6116100fd5780633659cfe6146101f4578063485cc9551461021d5780634f1ef286146102465780635131ab591461026257806352d1902d1461029f57806357bec62f146102ca57610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806329c59b5d146101bc57806335c018db146101d8575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612990565b6104a1565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612a85565b6105d4565b005b6101a660048036038101906101a19190612a85565b610640565b6040516101b3919061313b565b60405180910390f35b6101d660048036038101906101d19190612a85565b6106ae565b005b6101f260048036038101906101ed9190612a85565b610828565b005b34801561020057600080fd5b5061021b60048036038101906102169190612990565b610993565b005b34801561022957600080fd5b50610244600480360381019061023f91906129bd565b610b1c565b005b610260600480360381019061025b9190612ae5565b610d8c565b005b34801561026e57600080fd5b50610289600480360381019061028491906129fd565b610ec9565b604051610296919061313b565b60405180910390f35b3480156102ab57600080fd5b506102b4611245565b6040516102c191906130fc565b60405180910390f35b3480156102d657600080fd5b506102df6112fe565b6040516102ec9190613058565b60405180910390f35b34801561030157600080fd5b5061030a611324565b6040516103179190613058565b60405180910390f35b34801561032c57600080fd5b5061033561134a565b005b34801561034357600080fd5b5061035e60048036038101906103599190612b94565b61135e565b005b34801561036c57600080fd5b506103756114dc565b6040516103829190613058565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190612990565b611506565b005b3480156103c057600080fd5b506103db60048036038101906103d691906129fd565b611639565b005b3480156103e957600080fd5b506103f261178c565b6040516103ff9190613058565b60405180910390f35b34801561041457600080fd5b5061041d6117b2565b60405161042a9190613058565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612990565b6117d8565b005b61047660048036038101906104719190612990565b61185c565b005b34801561048457600080fd5b5061049f600480360381019061049a9190612b41565b6119d0565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610529576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610590576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610633929190613117565b60405180910390a3505050565b6060600061064f858585611b48565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161069b939291906133d6565b60405180910390a2809150509392505050565b60003414156106e9576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161073190613043565b60006040518083038185875af1925050503d806000811461076e576040519150601f19603f3d011682016040523d82523d6000602084013e610773565b606091505b505090506000151581151514156107b6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161081a949392919061335a565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161084f90613043565b60006040518083038185875af1925050503d806000811461088c576040519150601f19603f3d011682016040523d82523d6000602084013e610891565b606091505b5091509150816108cd576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610908929190613117565b600060405180830381600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610984939291906133d6565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a19906131ba565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a61611bff565b73ffffffffffffffffffffffffffffffffffffffff1614610ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aae906131da565b60405180910390fd5b610ac081611c56565b610b1981600067ffffffffffffffff811115610adf57610ade613597565b5b6040519080825280601f01601f191660200182016040528015610b115781602001600182028036833780820191505090505b506000611c61565b50565b60008060019054906101000a900460ff16159050808015610b4d5750600160008054906101000a900460ff1660ff16105b80610b7a5750610b5c30611dde565b158015610b795750600160008054906101000a900460ff1660ff16145b5b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb09061325a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610bf6576001600060016101000a81548160ff0219169083151502179055505b610bfe611e01565b610c06611e5a565b610c0e611eab565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c755750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610cac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d875760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d7e919061315d565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906131ba565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e5a611bff565b73ffffffffffffffffffffffffffffffffffffffff1614610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea7906131da565b60405180910390fd5b610eb982611c56565b610ec582826001611c61565b5050565b6060610ed3611f04565b6000841415610f0e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f188686611f54565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610f899291906130d3565b602060405180830381600087803b158015610fa357600080fd5b505af1158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612c1c565b611011576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061101e868585611b48565b905061102a8787611f54565b611060576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161109b9190613058565b60206040518083038186803b1580156110b357600080fd5b505afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb9190612c76565b905060008111156111c657600060fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156111995760fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6111c481838b73ffffffffffffffffffffffffffffffffffffffff16611fec9092919063ffffffff16565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051611227939291906133d6565b60405180910390a3819250505061123c612072565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc9061321a565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61135261207c565b61135c60006120fa565b565b6000841415611399576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561143c5760fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6114693382878773ffffffffffffffffffffffffffffffffffffffff166121c0909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4878787876040516114cc949392919061335a565b60405180910390a3505050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115f5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611641611f04565b600083141561167c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116a784848773ffffffffffffffffffffffffffffffffffffffff16611fec9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016116e2929190613117565b600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611775939291906133d6565b60405180910390a3611785612072565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117e061207c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118479061319a565b60405180910390fd5b611859816120fa565b50565b6000341415611897576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516118df90613043565b60006040518083038185875af1925050503d806000811461191c576040519150601f19603f3d011682016040523d82523d6000602084013e611921565b606091505b50509050600015158115151415611964576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460006040516119c492919061339a565b60405180910390a35050565b6000821415611a0b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aae5760fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b611adb3382858573ffffffffffffffffffffffffffffffffffffffff166121c0909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48585604051611b3a92919061339a565b60405180910390a350505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611b75929190613013565b60006040518083038185875af1925050503d8060008114611bb2576040519150601f19603f3d011682016040523d82523d6000602084013e611bb7565b606091505b509150915081611bf3576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c2d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612249565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c5e61207c565b50565b611c8d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612253565b60000160009054906101000a900460ff1615611cb157611cac8361225d565b611dd9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cf757600080fd5b505afa925050508015611d2857506040513d601f19601f82011682018060405250810190611d259190612c49565b60015b611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e9061327a565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc39061323a565b60405180910390fd5b50611dd8838383612316565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e47906132fa565b60405180910390fd5b611e58612342565b565b600060019054906101000a900460ff16611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea0906132fa565b60405180910390fd5b565b600060019054906101000a900460ff16611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef1906132fa565b60405180910390fd5b611f026123a3565b565b600260c9541415611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f419061333a565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611f929291906130aa565b602060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190612c1c565b905092915050565b61206d8363a9059cbb60e01b848460405160240161200b9291906130d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123fc565b505050565b600160c981905550565b6120846124c3565b73ffffffffffffffffffffffffffffffffffffffff166120a26114dc565b73ffffffffffffffffffffffffffffffffffffffff16146120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ef906132ba565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612243846323b872dd60e01b8585856040516024016121e193929190613073565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123fc565b50505050565b6000819050919050565b6000819050919050565b61226681611dde565b6122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c9061329a565b60405180910390fd5b806122d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612249565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61231f836124cb565b60008251118061232c5750805b1561233d5761233b838361251a565b505b505050565b600060019054906101000a900460ff16612391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612388906132fa565b60405180910390fd5b6123a161239c6124c3565b6120fa565b565b600060019054906101000a900460ff166123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e9906132fa565b60405180910390fd5b600160c981905550565b600061245e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166125479092919063ffffffff16565b90506000815111156124be578080602001905181019061247e9190612c1c565b6124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b49061331a565b60405180910390fd5b5b505050565b600033905090565b6124d48161225d565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061253f8383604051806060016040528060278152602001613a356027913961255f565b905092915050565b606061255684846000856125e5565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612589919061302c565b600060405180830381855af49150503d80600081146125c4576040519150601f19603f3d011682016040523d82523d6000602084013e6125c9565b606091505b50915091506125da868383876126b2565b925050509392505050565b60608247101561262a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612621906131fa565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612653919061302c565b60006040518083038185875af1925050503d8060008114612690576040519150601f19603f3d011682016040523d82523d6000602084013e612695565b606091505b50915091506126a687838387612728565b92505050949350505050565b606083156127155760008351141561270d576126cd85611dde565b61270c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612703906132da565b60405180910390fd5b5b829050612720565b61271f838361279e565b5b949350505050565b6060831561278b5760008351141561278357612743856127ee565b612782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612779906132da565b60405180910390fd5b5b829050612796565b6127958383612811565b5b949350505050565b6000825111156127b15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e59190613178565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156128245781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128589190613178565b60405180910390fd5b600061287461286f8461342d565b613408565b9050828152602081018484840111156128905761288f6135d5565b5b61289b848285613524565b509392505050565b6000813590506128b2816139d8565b92915050565b6000815190506128c7816139ef565b92915050565b6000815190506128dc81613a06565b92915050565b60008083601f8401126128f8576128f76135cb565b5b8235905067ffffffffffffffff811115612915576129146135c6565b5b602083019150836001820283011115612931576129306135d0565b5b9250929050565b600082601f83011261294d5761294c6135cb565b5b813561295d848260208601612861565b91505092915050565b60008135905061297581613a1d565b92915050565b60008151905061298a81613a1d565b92915050565b6000602082840312156129a6576129a56135df565b5b60006129b4848285016128a3565b91505092915050565b600080604083850312156129d4576129d36135df565b5b60006129e2858286016128a3565b92505060206129f3858286016128a3565b9150509250929050565b600080600080600060808688031215612a1957612a186135df565b5b6000612a27888289016128a3565b9550506020612a38888289016128a3565b9450506040612a4988828901612966565b935050606086013567ffffffffffffffff811115612a6a57612a696135da565b5b612a76888289016128e2565b92509250509295509295909350565b600080600060408486031215612a9e57612a9d6135df565b5b6000612aac868287016128a3565b935050602084013567ffffffffffffffff811115612acd57612acc6135da565b5b612ad9868287016128e2565b92509250509250925092565b60008060408385031215612afc57612afb6135df565b5b6000612b0a858286016128a3565b925050602083013567ffffffffffffffff811115612b2b57612b2a6135da565b5b612b3785828601612938565b9150509250929050565b600080600060608486031215612b5a57612b596135df565b5b6000612b68868287016128a3565b9350506020612b7986828701612966565b9250506040612b8a868287016128a3565b9150509250925092565b600080600080600060808688031215612bb057612baf6135df565b5b6000612bbe888289016128a3565b9550506020612bcf88828901612966565b9450506040612be0888289016128a3565b935050606086013567ffffffffffffffff811115612c0157612c006135da565b5b612c0d888289016128e2565b92509250509295509295909350565b600060208284031215612c3257612c316135df565b5b6000612c40848285016128b8565b91505092915050565b600060208284031215612c5f57612c5e6135df565b5b6000612c6d848285016128cd565b91505092915050565b600060208284031215612c8c57612c8b6135df565b5b6000612c9a8482850161297b565b91505092915050565b612cac816134a1565b82525050565b612cbb816134bf565b82525050565b6000612ccd8385613474565b9350612cda838584613524565b612ce3836135e4565b840190509392505050565b6000612cfa8385613485565b9350612d07838584613524565b82840190509392505050565b6000612d1e8261345e565b612d288185613474565b9350612d38818560208601613533565b612d41816135e4565b840191505092915050565b6000612d578261345e565b612d618185613485565b9350612d71818560208601613533565b80840191505092915050565b612d8681613500565b82525050565b612d9581613512565b82525050565b6000612da682613469565b612db08185613490565b9350612dc0818560208601613533565b612dc9816135e4565b840191505092915050565b6000612de1602683613490565b9150612dec826135f5565b604082019050919050565b6000612e04602c83613490565b9150612e0f82613644565b604082019050919050565b6000612e27602c83613490565b9150612e3282613693565b604082019050919050565b6000612e4a602683613490565b9150612e55826136e2565b604082019050919050565b6000612e6d603883613490565b9150612e7882613731565b604082019050919050565b6000612e90602983613490565b9150612e9b82613780565b604082019050919050565b6000612eb3602e83613490565b9150612ebe826137cf565b604082019050919050565b6000612ed6602e83613490565b9150612ee18261381e565b604082019050919050565b6000612ef9602d83613490565b9150612f048261386d565b604082019050919050565b6000612f1c602083613490565b9150612f27826138bc565b602082019050919050565b6000612f3f600083613474565b9150612f4a826138e5565b600082019050919050565b6000612f62600083613485565b9150612f6d826138e5565b600082019050919050565b6000612f85601d83613490565b9150612f90826138e8565b602082019050919050565b6000612fa8602b83613490565b9150612fb382613911565b604082019050919050565b6000612fcb602a83613490565b9150612fd682613960565b604082019050919050565b6000612fee601f83613490565b9150612ff9826139af565b602082019050919050565b61300d816134e9565b82525050565b6000613020828486612cee565b91508190509392505050565b60006130388284612d4c565b915081905092915050565b600061304e82612f55565b9150819050919050565b600060208201905061306d6000830184612ca3565b92915050565b60006060820190506130886000830186612ca3565b6130956020830185612ca3565b6130a26040830184613004565b949350505050565b60006040820190506130bf6000830185612ca3565b6130cc6020830184612d7d565b9392505050565b60006040820190506130e86000830185612ca3565b6130f56020830184613004565b9392505050565b60006020820190506131116000830184612cb2565b92915050565b60006020820190508181036000830152613132818486612cc1565b90509392505050565b600060208201905081810360008301526131558184612d13565b905092915050565b60006020820190506131726000830184612d8c565b92915050565b600060208201905081810360008301526131928184612d9b565b905092915050565b600060208201905081810360008301526131b381612dd4565b9050919050565b600060208201905081810360008301526131d381612df7565b9050919050565b600060208201905081810360008301526131f381612e1a565b9050919050565b6000602082019050818103600083015261321381612e3d565b9050919050565b6000602082019050818103600083015261323381612e60565b9050919050565b6000602082019050818103600083015261325381612e83565b9050919050565b6000602082019050818103600083015261327381612ea6565b9050919050565b6000602082019050818103600083015261329381612ec9565b9050919050565b600060208201905081810360008301526132b381612eec565b9050919050565b600060208201905081810360008301526132d381612f0f565b9050919050565b600060208201905081810360008301526132f381612f78565b9050919050565b6000602082019050818103600083015261331381612f9b565b9050919050565b6000602082019050818103600083015261333381612fbe565b9050919050565b6000602082019050818103600083015261335381612fe1565b9050919050565b600060608201905061336f6000830187613004565b61337c6020830186612ca3565b818103604083015261338f818486612cc1565b905095945050505050565b60006060820190506133af6000830185613004565b6133bc6020830184612ca3565b81810360408301526133cd81612f32565b90509392505050565b60006040820190506133eb6000830186613004565b81810360208301526133fe818486612cc1565b9050949350505050565b6000613412613423565b905061341e8282613566565b919050565b6000604051905090565b600067ffffffffffffffff82111561344857613447613597565b5b613451826135e4565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006134ac826134c9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061350b826134e9565b9050919050565b600061351d826134f3565b9050919050565b82818337600083830152505050565b60005b83811015613551578082015181840152602081019050613536565b83811115613560576000848401525b50505050565b61356f826135e4565b810181811067ffffffffffffffff8211171561358e5761358d613597565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6139e1816134a1565b81146139ec57600080fd5b50565b6139f8816134b3565b8114613a0357600080fd5b50565b613a0f816134bf565b8114613a1a57600080fd5b50565b613a26816134e9565b8114613a3157600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220268b99b0ba9f89c2f88b0515815860e3b68f70e837bc82475662cd0a194f5f2464736f6c63430008070033"; - -type GatewayEVMConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVM__factory extends ContractFactory { - constructor(...args: GatewayEVMConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVM { - return super.attach(address) as GatewayEVM; - } - override connect(signer: Signer): GatewayEVM__factory { - return super.connect(signer) as GatewayEVM__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMInterface { - return new utils.Interface(_abi) as GatewayEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVM { - return new Contract(address, _abi, signerOrProvider) as GatewayEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts deleted file mode 100644 index 54f5f101..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/Revertable__factory.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - Revertable, - RevertableInterface, -} from "../../../../../contracts/prototypes/evm/GatewayEVM.sol/Revertable"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class Revertable__factory { - static readonly abi = _abi; - static createInterface(): RevertableInterface { - return new utils.Interface(_abi) as RevertableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Revertable { - return new Contract(address, _abi, signerOrProvider) as Revertable; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts deleted file mode 100644 index cfc1ca8c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayEVM__factory } from "./GatewayEVM__factory"; -export { Revertable__factory } from "./Revertable__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts deleted file mode 100644 index b933279a..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest__factory.ts +++ /dev/null @@ -1,910 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayEVMTest, - GatewayEVMTestInterface, -} from "../../../../../contracts/prototypes/evm/GatewayEVM.t.sol/GatewayEVMTest"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceivePayable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b5061807d806100566000396000f3fe60806040523480156200001157600080fd5b5060043610620001005760003560e01c8063916a17c61162000099578063ba414fa6116200006f578063ba414fa61462000243578063e20c9f711462000265578063fa7626d41462000287578063fe7bdbb214620002a95762000100565b8063916a17c614620001dd578063b0464fdc14620001ff578063b5508aa914620002215762000100565b80633e5e3c2311620000db5780633e5e3c2314620001555780633f7286f4146200017757806366d9a9a0146200019957806385226c8114620001bb5762000100565b80630a9254e414620001055780631ed7831c14620001115780632ade38801462000133575b600080fd5b6200010f620002b5565b005b6200011b620007f5565b6040516200012a919062001fc1565b60405180910390f35b6200013d62000885565b6040516200014c91906200202d565b60405180910390f35b6200015f62000a1f565b6040516200016e919062001fc1565b60405180910390f35b6200018162000aaf565b60405162000190919062001fc1565b60405180910390f35b620001a362000b3f565b604051620001b2919062002009565b60405180910390f35b620001c562000cd6565b604051620001d4919062001fe5565b60405180910390f35b620001e762000db9565b604051620001f6919062002051565b60405180910390f35b6200020962000f0c565b60405162000218919062002051565b60405180910390f35b6200022b6200105f565b6040516200023a919062001fe5565b60405180910390f35b6200024d62001142565b6040516200025c919062002075565b60405180910390f35b6200026f62001275565b6040516200027e919062001fc1565b60405180910390f35b6200029162001305565b604051620002a0919062002075565b60405180910390f35b620002b362001318565b005b30602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615678602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200038a90620016d2565b620003959062002133565b604051809103906000f080158015620003b2573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200040190620016e0565b604051809103906000f0801580156200041e573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200049090620016ee565b6200049c919062001ea5565b604051809103906000f080158015620004b9573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4d66de8602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000579919062001ea5565b600060405180830381600087803b1580156200059457600080fd5b505af1158015620005a9573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200062c919062001ea5565b600060405180830381600087803b1580156200064757600080fd5b505af11580156200065c573d6000803e3d6000fd5b50505050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b8152600401620006e492919062001f23565b600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b50505050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166207a1206040518363ffffffff1660e01b81526004016200079c92919062001f50565b602060405180830381600087803b158015620007b757600080fd5b505af1158015620007cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f29190620017a8565b50565b606060168054806020026020016040519081016040528092919081815260200182805480156200087b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000830575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000a1657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015620009fe5783829060005260206000200180546200096a906200248b565b80601f016020809104026020016040519081016040528092919081815260200182805462000998906200248b565b8015620009e95780601f10620009bd57610100808354040283529160200191620009e9565b820191906000526020600020905b815481529060010190602001808311620009cb57829003601f168201915b50505050508152602001906001019062000948565b505050508152505081526020019060010190620008a9565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000aa557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000a5a575b5050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000b3557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000aea575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000ccd578382906000526020600020906002020160405180604001604052908160008201805462000b99906200248b565b80601f016020809104026020016040519081016040528092919081815260200182805462000bc7906200248b565b801562000c185780601f1062000bec5761010080835404028352916020019162000c18565b820191906000526020600020905b81548152906001019060200180831162000bfa57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562000cb457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000c605790505b5050505050815250508152602001906001019062000b63565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000db057838290600052602060002001805462000d1c906200248b565b80601f016020809104026020016040519081016040528092919081815260200182805462000d4a906200248b565b801562000d9b5780601f1062000d6f5761010080835404028352916020019162000d9b565b820191906000526020600020905b81548152906001019060200180831162000d7d57829003601f168201915b50505050508152602001906001019062000cfa565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562000f0357838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180548060200260200160405190810160405280929190818152602001828054801562000eea57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e965790505b5050505050815250508152602001906001019062000ddd565b50505050905090565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156200105657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054806020026020016040519081016040528092919081815260200182805480156200103d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000fe95790505b5050505050815250508152602001906001019062000f30565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001139578382906000526020600020018054620010a5906200248b565b80601f0160208091040260200160405190810160405280929190818152602001828054620010d3906200248b565b8015620011245780601f10620010f85761010080835404028352916020019162001124565b820191906000526020600020905b8154815290600101906020018083116200110657829003601f168201915b50505050508152602001906001019062001083565b50505050905090565b6000600860009054906101000a900460ff16156200117257600860009054906101000a900460ff16905062001272565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016200121992919062001ec2565b60206040518083038186803b1580156200123257600080fd5b505afa15801562001247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126d9190620017da565b141590505b90565b60606015805480602002602001604051908101604052809291908181526020018280548015620012fb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620012b0575b5050505050905090565b601f60009054906101000a900460ff1681565b60006040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525090506000602a90506000600190506000670de0b6b3a7640000905060008484846040516024016200138493929190620020ef565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f30c7ba3602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684846040518463ffffffff1660e01b8152600401620014879392919062001f7d565b600060405180830381600087803b158015620014a257600080fd5b505af1158015620014b7573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200154595949392919062002092565b600060405180830381600087803b1580156200156057600080fd5b505af115801562001575573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f8383604051620015e59291906200216a565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cff79cd83602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b81526004016200166f92919062001eef565b6000604051808303818588803b1580156200168957600080fd5b505af11580156200169e573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190620016ca91906200180c565b505050505050565b611813806200260183390190565b6131a48062003e1483390190565b6110908062006fb883390190565b6000620017136200170d84620021c7565b6200219e565b9050828152602081018484840111156200173257620017316200255a565b5b6200173f84828562002455565b509392505050565b6000815190506200175881620025cc565b92915050565b6000815190506200176f81620025e6565b92915050565b600082601f8301126200178d576200178c62002555565b5b81516200179f848260208601620016fc565b91505092915050565b600060208284031215620017c157620017c062002564565b5b6000620017d18482850162001747565b91505092915050565b600060208284031215620017f357620017f262002564565b5b600062001803848285016200175e565b91505092915050565b60006020828403121562001825576200182462002564565b5b600082015167ffffffffffffffff8111156200184657620018456200255f565b5b620018548482850162001775565b91505092915050565b60006200186b8383620018e9565b60208301905092915050565b600062001885838362001c86565b60208301905092915050565b60006200189f838362001cfa565b905092915050565b6000620018b5838362001dca565b905092915050565b6000620018cb838362001e12565b905092915050565b6000620018e1838362001e53565b905092915050565b620018f481620023ad565b82525050565b6200190581620023ad565b82525050565b600062001918826200225d565b62001924818562002303565b93506200193183620021fd565b8060005b83811015620019685781516200194c88826200185d565b97506200195983620022b5565b92505060018101905062001935565b5085935050505092915050565b6000620019828262002268565b6200198e818562002314565b93506200199b836200220d565b8060005b83811015620019d2578151620019b6888262001877565b9750620019c383620022c2565b9250506001810190506200199f565b5085935050505092915050565b6000620019ec8262002273565b620019f8818562002325565b93508360208202850162001a0c856200221d565b8060005b8581101562001a4e578484038952815162001a2c858262001891565b945062001a3983620022cf565b925060208a0199505060018101905062001a10565b50829750879550505050505092915050565b600062001a6d8262002273565b62001a79818562002336565b93508360208202850162001a8d856200221d565b8060005b8581101562001acf578484038952815162001aad858262001891565b945062001aba83620022cf565b925060208a0199505060018101905062001a91565b50829750879550505050505092915050565b600062001aee826200227e565b62001afa818562002347565b93508360208202850162001b0e856200222d565b8060005b8581101562001b50578484038952815162001b2e8582620018a7565b945062001b3b83620022dc565b925060208a0199505060018101905062001b12565b50829750879550505050505092915050565b600062001b6f8262002289565b62001b7b818562002358565b93508360208202850162001b8f856200223d565b8060005b8581101562001bd1578484038952815162001baf8582620018bd565b945062001bbc83620022e9565b925060208a0199505060018101905062001b93565b50829750879550505050505092915050565b600062001bf08262002294565b62001bfc818562002369565b93508360208202850162001c10856200224d565b8060005b8581101562001c52578484038952815162001c308582620018d3565b945062001c3d83620022f6565b925060208a0199505060018101905062001c14565b50829750879550505050505092915050565b62001c6f81620023c1565b82525050565b62001c8081620023cd565b82525050565b62001c9181620023d7565b82525050565b600062001ca4826200229f565b62001cb081856200237a565b935062001cc281856020860162002455565b62001ccd8162002569565b840191505092915050565b62001ce3816200242d565b82525050565b62001cf48162002441565b82525050565b600062001d0782620022aa565b62001d1381856200238b565b935062001d2581856020860162002455565b62001d308162002569565b840191505092915050565b600062001d4882620022aa565b62001d5481856200239c565b935062001d6681856020860162002455565b62001d718162002569565b840191505092915050565b600062001d8b6003836200239c565b915062001d98826200257a565b602082019050919050565b600062001db26004836200239c565b915062001dbf82620025a3565b602082019050919050565b6000604083016000830151848203600086015262001de9828262001cfa565b9150506020830151848203602086015262001e05828262001975565b9150508091505092915050565b600060408301600083015162001e2c6000860182620018e9565b506020830151848203602086015262001e468282620019df565b9150508091505092915050565b600060408301600083015162001e6d6000860182620018e9565b506020830151848203602086015262001e87828262001975565b9150508091505092915050565b62001e9f8162002423565b82525050565b600060208201905062001ebc6000830184620018fa565b92915050565b600060408201905062001ed96000830185620018fa565b62001ee8602083018462001c75565b9392505050565b600060408201905062001f066000830185620018fa565b818103602083015262001f1a818462001c97565b90509392505050565b600060408201905062001f3a6000830185620018fa565b62001f49602083018462001cd8565b9392505050565b600060408201905062001f676000830185620018fa565b62001f76602083018462001ce9565b9392505050565b600060608201905062001f946000830186620018fa565b62001fa3602083018562001e94565b818103604083015262001fb7818462001c97565b9050949350505050565b6000602082019050818103600083015262001fdd81846200190b565b905092915050565b6000602082019050818103600083015262002001818462001a60565b905092915050565b6000602082019050818103600083015262002025818462001ae1565b905092915050565b6000602082019050818103600083015262002049818462001b62565b905092915050565b600060208201905081810360008301526200206d818462001be3565b905092915050565b60006020820190506200208c600083018462001c64565b92915050565b600060a082019050620020a9600083018862001c64565b620020b8602083018762001c64565b620020c7604083018662001c64565b620020d6606083018562001c64565b620020e56080830184620018fa565b9695505050505050565b600060608201905081810360008301526200210b818662001d3b565b90506200211c602083018562001e94565b6200212b604083018462001c64565b949350505050565b600060408201905081810360008301526200214e8162001da3565b90508181036020830152620021638162001d7c565b9050919050565b600060408201905062002181600083018562001e94565b818103602083015262002195818462001c97565b90509392505050565b6000620021aa620021bd565b9050620021b88282620024c1565b919050565b6000604051905090565b600067ffffffffffffffff821115620021e557620021e462002526565b5b620021f08262002569565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620023ba8262002403565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200243a8262002423565b9050919050565b60006200244e8262002423565b9050919050565b60005b838110156200247557808201518184015260208101905062002458565b8381111562002485576000848401525b50505050565b60006002820490506001821680620024a457607f821691505b60208210811415620024bb57620024ba620024f7565b5b50919050565b620024cc8262002569565b810181811067ffffffffffffffff82111715620024ee57620024ed62002526565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f54544b0000000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b620025d781620023c1565b8114620025e357600080fd5b50565b620025f181620023cd565b8114620025fd57600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613123610081600039600081816105fc0152818161068b01528181610785015281816108140152610bae01526131236000f3fe6080604052600436106100fe5760003560e01c8063715018a611610095578063c4d66de811610064578063c4d66de8146102e4578063dda79b751461030d578063f2fde38b14610338578063f340fa0114610361578063f45346dc1461037d576100fe565b8063715018a6146102505780638c6f037f146102675780638da5cb5b14610290578063ae7a3a6f146102bb576100fe565b80634f1ef286116100d15780634f1ef286146101a15780635131ab59146101bd57806352d1902d146101fa5780635b11259114610225576100fe565b80631b8b921d146101035780631cff79cd1461012c57806329c59b5d1461015c5780633659cfe614610178575b600080fd5b34801561010f57600080fd5b5061012a60048036038101906101259190612183565b6103a6565b005b61014660048036038101906101419190612183565b610412565b6040516101539190612816565b60405180910390f35b61017660048036038101906101719190612183565b610480565b005b34801561018457600080fd5b5061019f600480360381019061019a91906120ce565b6105fa565b005b6101bb60048036038101906101b691906121e3565b610783565b005b3480156101c957600080fd5b506101e460048036038101906101df91906120fb565b6108c0565b6040516101f19190612816565b60405180910390f35b34801561020657600080fd5b5061020f610baa565b60405161021c91906127d7565b60405180910390f35b34801561023157600080fd5b5061023a610c63565b6040516102479190612733565b60405180910390f35b34801561025c57600080fd5b50610265610c89565b005b34801561027357600080fd5b5061028e60048036038101906102899190612292565b610c9d565b005b34801561029c57600080fd5b506102a5610d99565b6040516102b29190612733565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906120ce565b610dc3565b005b3480156102f057600080fd5b5061030b600480360381019061030691906120ce565b610e8f565b005b34801561031957600080fd5b5061032261107e565b60405161032f9190612733565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906120ce565b6110a4565b005b61037b600480360381019061037691906120ce565b611128565b005b34801561038957600080fd5b506103a4600480360381019061039f919061223f565b61129c565b005b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516104059291906127f2565b60405180910390a3505050565b60606000610421858585611392565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161046d93929190612a91565b60405180910390a2809150509392505050565b60003414156104bb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516105039061271e565b60006040518083038185875af1925050503d8060008114610540576040519150601f19603f3d011682016040523d82523d6000602084013e610545565b606091505b50509050600015158115151415610588576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516105ec9493929190612a15565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106c8611449565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906128b5565b60405180910390fd5b610727816114a0565b61078081600067ffffffffffffffff81111561074657610745612c52565b5b6040519080825280601f01601f1916602001820160405280156107785781602001600182028036833780820191505090505b5060006114ab565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610851611449565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906128b5565b60405180910390fd5b6108b0826114a0565b6108bc828260016114ab565b5050565b606060008414156108fd576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109078686611628565b61093d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016109789291906127ae565b602060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca919061231a565b610a00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0d868585611392565b9050610a198787611628565b610a4f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a8a9190612733565b60206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190612374565b90506000811115610b3357610b3260c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828a73ffffffffffffffffffffffffffffffffffffffff166116c09092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610b9493929190612a91565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906128f5565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c91611746565b610c9b60006117c4565b565b6000841415610cd8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d273360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868673ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610d8a9493929190612a15565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610ec05750600160008054906101000a900460ff1660ff16105b80610eed5750610ecf30611913565b158015610eec5750600160008054906101000a900460ff1660ff16145b5b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612935565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610f69576001600060016101000a81548160ff0219169083151502179055505b610f71611936565b610f7961198f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561107a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110719190612838565b60405180910390a15b5050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac611746565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612875565b60405180910390fd5b611125816117c4565b50565b6000341415611163576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516111ab9061271e565b60006040518083038185875af1925050503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b50509050600015158115151415611230576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611290929190612a55565b60405180910390a35050565b60008214156112d7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113263360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611385929190612a55565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516113bf9291906126ee565b60006040518083038185875af1925050503d80600081146113fc576040519150601f19603f3d011682016040523d82523d6000602084013e611401565b606091505b50915091508161143d576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006114777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611746565b50565b6114d77f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6119ea565b60000160009054906101000a900460ff16156114fb576114f6836119f4565b611623565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154157600080fd5b505afa92505050801561157257506040513d601f19601f8201168201806040525081019061156f9190612347565b60015b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612955565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90612915565b60405180910390fd5b50611622838383611aad565b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611666929190612785565b602060405180830381600087803b15801561168057600080fd5b505af1158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061231a565b905092915050565b6117418363a9059cbb60e01b84846040516024016116df9291906127ae565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b505050565b61174e611ba0565b73ffffffffffffffffffffffffffffffffffffffff1661176c610d99565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612995565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61190d846323b872dd60e01b8585856040516024016118ab9392919061274e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906129d5565b60405180910390fd5b61198d611ba8565b565b600060019054906101000a900460ff166119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906129d5565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6119fd81611913565b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612975565b60405180910390fd5b80611a697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ab683611c09565b600082511180611ac35750805b15611ad457611ad28383611c58565b505b505050565b6000611b3b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c859092919063ffffffff16565b9050600081511115611b9b5780806020019051810190611b5b919061231a565b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906129f5565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff16611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906129d5565b60405180910390fd5b611c07611c02611ba0565b6117c4565b565b611c12816119f4565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060611c7d83836040518060600160405280602781526020016130c760279139611c9d565b905092915050565b6060611c948484600085611d23565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611cc79190612707565b600060405180830381855af49150503d8060008114611d02576040519150601f19603f3d011682016040523d82523d6000602084013e611d07565b606091505b5091509150611d1886838387611df0565b925050509392505050565b606082471015611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906128d5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d919190612707565b60006040518083038185875af1925050503d8060008114611dce576040519150601f19603f3d011682016040523d82523d6000602084013e611dd3565b606091505b5091509150611de487838387611e66565b92505050949350505050565b60608315611e5357600083511415611e4b57611e0b85611913565b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906129b5565b60405180910390fd5b5b829050611e5e565b611e5d8383611edc565b5b949350505050565b60608315611ec957600083511415611ec157611e8185611f2c565b611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906129b5565b60405180910390fd5b5b829050611ed4565b611ed38383611f4f565b5b949350505050565b600082511115611eef5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239190612853565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611f625781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f969190612853565b60405180910390fd5b6000611fb2611fad84612ae8565b612ac3565b905082815260208101848484011115611fce57611fcd612c90565b5b611fd9848285612bdf565b509392505050565b600081359050611ff08161306a565b92915050565b60008151905061200581613081565b92915050565b60008151905061201a81613098565b92915050565b60008083601f84011261203657612035612c86565b5b8235905067ffffffffffffffff81111561205357612052612c81565b5b60208301915083600182028301111561206f5761206e612c8b565b5b9250929050565b600082601f83011261208b5761208a612c86565b5b813561209b848260208601611f9f565b91505092915050565b6000813590506120b3816130af565b92915050565b6000815190506120c8816130af565b92915050565b6000602082840312156120e4576120e3612c9a565b5b60006120f284828501611fe1565b91505092915050565b60008060008060006080868803121561211757612116612c9a565b5b600061212588828901611fe1565b955050602061213688828901611fe1565b9450506040612147888289016120a4565b935050606086013567ffffffffffffffff81111561216857612167612c95565b5b61217488828901612020565b92509250509295509295909350565b60008060006040848603121561219c5761219b612c9a565b5b60006121aa86828701611fe1565b935050602084013567ffffffffffffffff8111156121cb576121ca612c95565b5b6121d786828701612020565b92509250509250925092565b600080604083850312156121fa576121f9612c9a565b5b600061220885828601611fe1565b925050602083013567ffffffffffffffff81111561222957612228612c95565b5b61223585828601612076565b9150509250929050565b60008060006060848603121561225857612257612c9a565b5b600061226686828701611fe1565b9350506020612277868287016120a4565b925050604061228886828701611fe1565b9150509250925092565b6000806000806000608086880312156122ae576122ad612c9a565b5b60006122bc88828901611fe1565b95505060206122cd888289016120a4565b94505060406122de88828901611fe1565b935050606086013567ffffffffffffffff8111156122ff576122fe612c95565b5b61230b88828901612020565b92509250509295509295909350565b6000602082840312156123305761232f612c9a565b5b600061233e84828501611ff6565b91505092915050565b60006020828403121561235d5761235c612c9a565b5b600061236b8482850161200b565b91505092915050565b60006020828403121561238a57612389612c9a565b5b6000612398848285016120b9565b91505092915050565b6123aa81612b5c565b82525050565b6123b981612b7a565b82525050565b60006123cb8385612b2f565b93506123d8838584612bdf565b6123e183612c9f565b840190509392505050565b60006123f88385612b40565b9350612405838584612bdf565b82840190509392505050565b600061241c82612b19565b6124268185612b2f565b9350612436818560208601612bee565b61243f81612c9f565b840191505092915050565b600061245582612b19565b61245f8185612b40565b935061246f818560208601612bee565b80840191505092915050565b61248481612bbb565b82525050565b61249381612bcd565b82525050565b60006124a482612b24565b6124ae8185612b4b565b93506124be818560208601612bee565b6124c781612c9f565b840191505092915050565b60006124df602683612b4b565b91506124ea82612cb0565b604082019050919050565b6000612502602c83612b4b565b915061250d82612cff565b604082019050919050565b6000612525602c83612b4b565b915061253082612d4e565b604082019050919050565b6000612548602683612b4b565b915061255382612d9d565b604082019050919050565b600061256b603883612b4b565b915061257682612dec565b604082019050919050565b600061258e602983612b4b565b915061259982612e3b565b604082019050919050565b60006125b1602e83612b4b565b91506125bc82612e8a565b604082019050919050565b60006125d4602e83612b4b565b91506125df82612ed9565b604082019050919050565b60006125f7602d83612b4b565b915061260282612f28565b604082019050919050565b600061261a602083612b4b565b915061262582612f77565b602082019050919050565b600061263d600083612b2f565b915061264882612fa0565b600082019050919050565b6000612660600083612b40565b915061266b82612fa0565b600082019050919050565b6000612683601d83612b4b565b915061268e82612fa3565b602082019050919050565b60006126a6602b83612b4b565b91506126b182612fcc565b604082019050919050565b60006126c9602a83612b4b565b91506126d48261301b565b604082019050919050565b6126e881612ba4565b82525050565b60006126fb8284866123ec565b91508190509392505050565b6000612713828461244a565b915081905092915050565b600061272982612653565b9150819050919050565b600060208201905061274860008301846123a1565b92915050565b600060608201905061276360008301866123a1565b61277060208301856123a1565b61277d60408301846126df565b949350505050565b600060408201905061279a60008301856123a1565b6127a7602083018461247b565b9392505050565b60006040820190506127c360008301856123a1565b6127d060208301846126df565b9392505050565b60006020820190506127ec60008301846123b0565b92915050565b6000602082019050818103600083015261280d8184866123bf565b90509392505050565b600060208201905081810360008301526128308184612411565b905092915050565b600060208201905061284d600083018461248a565b92915050565b6000602082019050818103600083015261286d8184612499565b905092915050565b6000602082019050818103600083015261288e816124d2565b9050919050565b600060208201905081810360008301526128ae816124f5565b9050919050565b600060208201905081810360008301526128ce81612518565b9050919050565b600060208201905081810360008301526128ee8161253b565b9050919050565b6000602082019050818103600083015261290e8161255e565b9050919050565b6000602082019050818103600083015261292e81612581565b9050919050565b6000602082019050818103600083015261294e816125a4565b9050919050565b6000602082019050818103600083015261296e816125c7565b9050919050565b6000602082019050818103600083015261298e816125ea565b9050919050565b600060208201905081810360008301526129ae8161260d565b9050919050565b600060208201905081810360008301526129ce81612676565b9050919050565b600060208201905081810360008301526129ee81612699565b9050919050565b60006020820190508181036000830152612a0e816126bc565b9050919050565b6000606082019050612a2a60008301876126df565b612a3760208301866123a1565b8181036040830152612a4a8184866123bf565b905095945050505050565b6000606082019050612a6a60008301856126df565b612a7760208301846123a1565b8181036040830152612a8881612630565b90509392505050565b6000604082019050612aa660008301866126df565b8181036020830152612ab98184866123bf565b9050949350505050565b6000612acd612ade565b9050612ad98282612c21565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0357612b02612c52565b5b612b0c82612c9f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b6782612b84565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612bc682612ba4565b9050919050565b6000612bd882612bae565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612c9f565b810181811067ffffffffffffffff82111715612c4957612c48612c52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61307381612b5c565b811461307e57600080fd5b50565b61308a81612b6e565b811461309557600080fd5b50565b6130a181612b7a565b81146130ac57600080fd5b50565b6130b881612ba4565b81146130c357600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220154452ab17b7ec6558ae20cf0777deee4780b8e192489db9d10e2ac9e3d689a364736f6c6343000807003360806040523480156200001157600080fd5b506040516200109038038062001090833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ef5806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b9190610a98565b60405180910390f35b61007e600480360381019061007991906107bc565b6100c2565b005b61009a60048036038101906100959190610769565b61024a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ca6102ef565b610117600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b815260040161017a959493929190610a21565b600060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101d19190610871565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023393929190610b70565b60405180910390a36102436103c5565b5050505050565b6102526102ef565b61027d82828573ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516102da9190610b55565b60405180910390a36102ea6103c5565b505050565b60026000541415610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610b35565b60405180910390fd5b6002600081905550565b6103c08363a9059cbb60e01b848460405160240161035e929190610a6f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103cf565b505050565b6001600081905550565b6000610431826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104969092919063ffffffff16565b905060008151111561049157808060200190518101906104519190610844565b610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b15565b60405180910390fd5b5b505050565b60606104a584846000856104ae565b90509392505050565b6060824710156104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ea90610ad5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161051c9190610a0a565b60006040518083038185875af1925050503d8060008114610559576040519150601f19603f3d011682016040523d82523d6000602084013e61055e565b606091505b509150915061056f8783838761057b565b92505050949350505050565b606083156105de576000835114156105d657610596856105f1565b6105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cc90610af5565b60405180910390fd5b5b8290506105e9565b6105e88383610614565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106275781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065b9190610ab3565b60405180910390fd5b600061067761067284610bc7565b610ba2565b90508281526020810184848401111561069357610692610d6a565b5b61069e848285610cc8565b509392505050565b6000813590506106b581610e7a565b92915050565b6000815190506106ca81610e91565b92915050565b60008083601f8401126106e6576106e5610d60565b5b8235905067ffffffffffffffff81111561070357610702610d5b565b5b60208301915083600182028301111561071f5761071e610d65565b5b9250929050565b600082601f83011261073b5761073a610d60565b5b815161074b848260208601610664565b91505092915050565b60008135905061076381610ea8565b92915050565b60008060006060848603121561078257610781610d74565b5b6000610790868287016106a6565b93505060206107a1868287016106a6565b92505060406107b286828701610754565b9150509250925092565b6000806000806000608086880312156107d8576107d7610d74565b5b60006107e6888289016106a6565b95505060206107f7888289016106a6565b945050604061080888828901610754565b935050606086013567ffffffffffffffff81111561082957610828610d6f565b5b610835888289016106d0565b92509250509295509295909350565b60006020828403121561085a57610859610d74565b5b6000610868848285016106bb565b91505092915050565b60006020828403121561088757610886610d74565b5b600082015167ffffffffffffffff8111156108a5576108a4610d6f565b5b6108b184828501610726565b91505092915050565b6108c381610c3b565b82525050565b60006108d58385610c0e565b93506108e2838584610cb9565b6108eb83610d79565b840190509392505050565b600061090182610bf8565b61090b8185610c1f565b935061091b818560208601610cc8565b80840191505092915050565b61093081610c83565b82525050565b600061094182610c03565b61094b8185610c2a565b935061095b818560208601610cc8565b61096481610d79565b840191505092915050565b600061097c602683610c2a565b915061098782610d8a565b604082019050919050565b600061099f601d83610c2a565b91506109aa82610dd9565b602082019050919050565b60006109c2602a83610c2a565b91506109cd82610e02565b604082019050919050565b60006109e5601f83610c2a565b91506109f082610e51565b602082019050919050565b610a0481610c79565b82525050565b6000610a1682846108f6565b915081905092915050565b6000608082019050610a3660008301886108ba565b610a4360208301876108ba565b610a5060408301866109fb565b8181036060830152610a638184866108c9565b90509695505050505050565b6000604082019050610a8460008301856108ba565b610a9160208301846109fb565b9392505050565b6000602082019050610aad6000830184610927565b92915050565b60006020820190508181036000830152610acd8184610936565b905092915050565b60006020820190508181036000830152610aee8161096f565b9050919050565b60006020820190508181036000830152610b0e81610992565b9050919050565b60006020820190508181036000830152610b2e816109b5565b9050919050565b60006020820190508181036000830152610b4e816109d8565b9050919050565b6000602082019050610b6a60008301846109fb565b92915050565b6000604082019050610b8560008301866109fb565b8181036020830152610b988184866108c9565b9050949350505050565b6000610bac610bbd565b9050610bb88282610cfb565b919050565b6000604051905090565b600067ffffffffffffffff821115610be257610be1610d2c565b5b610beb82610d79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c4682610c59565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c8e82610c95565b9050919050565b6000610ca082610ca7565b9050919050565b6000610cb282610c59565b9050919050565b82818337600083830152505050565b60005b83811015610ce6578082015181840152602081019050610ccb565b83811115610cf5576000848401525b50505050565b610d0482610d79565b810181811067ffffffffffffffff82111715610d2357610d22610d2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e8381610c3b565b8114610e8e57600080fd5b50565b610e9a81610c4d565b8114610ea557600080fd5b50565b610eb181610c79565b8114610ebc57600080fd5b5056fea2646970667358221220c6f7c0f9935341aaaabcabf7504d01bbd38a0606132004742a97e6a200eb432564736f6c63430008070033a26469706673582212205276a06083a66336c3a9855d369b9661cebdc0d261752bda69a28038ccb1c94164736f6c63430008070033"; - -type GatewayEVMTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMTest__factory extends ContractFactory { - constructor(...args: GatewayEVMTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMTest { - return super.attach(address) as GatewayEVMTest; - } - override connect(signer: Signer): GatewayEVMTest__factory { - return super.connect(signer) as GatewayEVMTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMTestInterface { - return new utils.Interface(_abi) as GatewayEVMTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMTest { - return new Contract(address, _abi, signerOrProvider) as GatewayEVMTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts deleted file mode 100644 index 9427818e..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayEVMTest__factory } from "./GatewayEVMTest__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts deleted file mode 100644 index 8f1ef1a7..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMEchidnaTest__factory.ts +++ /dev/null @@ -1,638 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayEVMEchidnaTest, - GatewayEVMEchidnaTestInterface, -} from "../../../../contracts/prototypes/evm/GatewayEVMEchidnaTest"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "echidnaCaller", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testERC20", - outputs: [ - { - internalType: "contract TestERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "testExecuteWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503360cc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008857600080fd5b50620000bc60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001b260201b60201c565b604051620000ca90620005e6565b620000d5906200071c565b604051809103906000f080158015620000f2573d6000803e3d6000fd5b5060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550306040516200014290620005f4565b6200014e9190620006c0565b604051809103906000f0801580156200016b573d6000803e3d6000fd5b5060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008cb565b60008060019054906101000a900460ff16159050808015620001e45750600160008054906101000a900460ff1660ff16105b806200022057506200020130620003c960201b620015fe1760201c565b1580156200021f5750600160008054906101000a900460ff1660ff16145b5b62000262576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025990620006fa565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015620002a0576001600060016101000a81548160ff0219169083151502179055505b620002b0620003ec60201b60201c565b620002c06200045060201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000328576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015620003c55760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051620003bc9190620006dd565b60405180910390a15b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166200043e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004359062000753565b60405180910390fd5b6200044e620004a460201b60201c565b565b600060019054906101000a900460ff16620004a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004999062000753565b60405180910390fd5b565b600060019054906101000a900460ff16620004f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ed9062000753565b60405180910390fd5b620005166200050a6200051860201b60201c565b6200052060201b60201c565b565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6118138062003d9883390190565b61109080620055ab83390190565b6200060d8162000786565b82525050565b6200061e81620007c7565b82525050565b600062000633602e8362000775565b91506200064082620007db565b604082019050919050565b60006200065a60048362000775565b915062000667826200082a565b602082019050919050565b60006200068160048362000775565b91506200068e8262000853565b602082019050919050565b6000620006a8602b8362000775565b9150620006b5826200087c565b604082019050919050565b6000602082019050620006d7600083018462000602565b92915050565b6000602082019050620006f4600083018462000613565b92915050565b60006020820190508181036000830152620007158162000624565b9050919050565b60006040820190508181036000830152620007378162000672565b905081810360208301526200074c816200064b565b9050919050565b600060208201905081810360008301526200076e8162000699565b9050919050565b600082825260208201905092915050565b600062000793826200079a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060ff82169050919050565b6000620007d482620007ba565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f5445535400000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60805160601c613492620009066000396000818161069c0152818161072b0152818161084b015281816108da0152610c7401526134926000f3fe60806040526004361061011f5760003560e01c8063715018a6116100a0578063c4d66de811610064578063c4d66de814610384578063dda79b75146103ad578063f2fde38b146103d8578063f340fa0114610401578063f45346dc1461041d5761011f565b8063715018a6146102c557806381100bf0146102dc5780638c6f037f146103075780638da5cb5b14610330578063ae7a3a6f1461035b5761011f565b80634f1ef286116100e75780634f1ef286146101ed5780635131ab591461020957806352d1902d146102465780635b112591146102715780636ab90f9b1461029c5761011f565b80631b8b921d146101245780631cff79cd1461014d57806329c59b5d1461017d5780633659cfe6146101995780633c2f05a8146101c2575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906123ef565b610446565b005b610167600480360381019061016291906123ef565b6104b2565b6040516101749190612b05565b60405180910390f35b610197600480360381019061019291906123ef565b610520565b005b3480156101a557600080fd5b506101c060048036038101906101bb919061233a565b61069a565b005b3480156101ce57600080fd5b506101d7610823565b6040516101e49190612b27565b60405180910390f35b6102076004803603810190610202919061244f565b610849565b005b34801561021557600080fd5b50610230600480360381019061022b9190612367565b610986565b60405161023d9190612b05565b60405180910390f35b34801561025257600080fd5b5061025b610c70565b6040516102689190612ac6565b60405180910390f35b34801561027d57600080fd5b50610286610d29565b6040516102939190612a22565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612586565b610d4f565b005b3480156102d157600080fd5b506102da610ecf565b005b3480156102e857600080fd5b506102f1610ee3565b6040516102fe9190612a22565b60405180910390f35b34801561031357600080fd5b5061032e600480360381019061032991906124fe565b610f09565b005b34801561033c57600080fd5b50610345611005565b6040516103529190612a22565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d919061233a565b61102f565b005b34801561039057600080fd5b506103ab60048036038101906103a6919061233a565b6110fb565b005b3480156103b957600080fd5b506103c26112ea565b6040516103cf9190612a22565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061233a565b611310565b005b61041b6004803603810190610416919061233a565b611394565b005b34801561042957600080fd5b50610444600480360381019061043f91906124ab565b611508565b005b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516104a5929190612ae1565b60405180910390a3505050565b606060006104c1858585611621565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161050d93929190612d9b565b60405180910390a2809150509392505050565b600034141561055b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516105a390612a0d565b60006040518083038185875af1925050503d80600081146105e0576040519150601f19603f3d011682016040523d82523d6000602084013e6105e5565b606091505b50509050600015158115151415610628576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161068c9493929190612d1f565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072090612b9f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107686116d8565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612bbf565b60405180910390fd5b6107c78161172f565b61082081600067ffffffffffffffff8111156107e6576107e5612fc1565b5b6040519080825280601f01601f1916602001820160405280156108185781602001600182028036833780820191505090505b50600061173a565b50565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf90612b9f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166109176116d8565b73ffffffffffffffffffffffffffffffffffffffff161461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096490612bbf565b60405180910390fd5b6109768261172f565b6109828282600161173a565b5050565b606060008414156109c3576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109cd86866118b7565b610a03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610a3e929190612a9d565b602060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9091906125fa565b610ac6576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ad3868585611621565b9050610adf87876118b7565b610b15576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b509190612a22565b60206040518083038186803b158015610b6857600080fd5b505afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612654565b90506000811115610bf957610bf860c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828a73ffffffffffffffffffffffffffffffffffffffff1661194f9092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610c5a93929190612d9b565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790612bff565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930856040518363ffffffff1660e01b8152600401610dac929190612a9d565b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050610e0d60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685858585610986565b50600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e6b9190612a22565b60206040518083038186803b158015610e8357600080fd5b505afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190612654565b14610ec957610ec8612f92565b5b50505050565b610ed76119d5565b610ee16000611a53565b565b60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000841415610f44576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f933360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868673ffffffffffffffffffffffffffffffffffffffff16611b19909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610ff69493929190612d1f565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff1615905080801561112c5750600160008054906101000a900460ff1660ff16105b80611159575061113b306115fe565b1580156111585750600160008054906101000a900460ff1660ff16145b5b611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90612c3f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156111d5576001600060016101000a81548160ff0219169083151502179055505b6111dd611ba2565b6111e5611bfb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561124c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156112e65760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516112dd9190612b42565b60405180910390a15b5050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113186119d5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90612b7f565b60405180910390fd5b61139181611a53565b50565b60003414156113cf576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161141790612a0d565b60006040518083038185875af1925050503d8060008114611454576040519150601f19603f3d011682016040523d82523d6000602084013e611459565b606091505b5050905060001515811515141561149c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460006040516114fc929190612d5f565b60405180910390a35050565b6000821415611543576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115923360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff16611b19909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516115f1929190612d5f565b60405180910390a3505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1634868660405161164e9291906129dd565b60006040518083038185875af1925050503d806000811461168b576040519150601f19603f3d011682016040523d82523d6000602084013e611690565b606091505b5091509150816116cc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006117067f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611c4c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117376119d5565b50565b6117667f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611c56565b60000160009054906101000a900460ff161561178a5761178583611c60565b6118b2565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d057600080fd5b505afa92505050801561180157506040513d601f19601f820116820180604052508101906117fe9190612627565b60015b611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790612c5f565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90612c1f565b60405180910390fd5b506118b1838383611d19565b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b81526004016118f5929190612a74565b602060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194791906125fa565b905092915050565b6119d08363a9059cbb60e01b848460405160240161196e929190612a9d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d45565b505050565b6119dd611e0c565b73ffffffffffffffffffffffffffffffffffffffff166119fb611005565b73ffffffffffffffffffffffffffffffffffffffff1614611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4890612c9f565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611b9c846323b872dd60e01b858585604051602401611b3a93929190612a3d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d45565b50505050565b600060019054906101000a900460ff16611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890612cdf565b60405180910390fd5b611bf9611e14565b565b600060019054906101000a900460ff16611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190612cdf565b60405180910390fd5b565b6000819050919050565b6000819050919050565b611c69816115fe565b611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90612c7f565b60405180910390fd5b80611cd57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b611c4c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d2283611e75565b600082511180611d2f5750805b15611d4057611d3e8383611ec4565b505b505050565b6000611da7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611ef19092919063ffffffff16565b9050600081511115611e075780806020019051810190611dc791906125fa565b611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd90612cff565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff16611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90612cdf565b60405180910390fd5b611e73611e6e611e0c565b611a53565b565b611e7e81611c60565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060611ee9838360405180606001604052806027815260200161343660279139611f09565b905092915050565b6060611f008484600085611f8f565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611f3391906129f6565b600060405180830381855af49150503d8060008114611f6e576040519150601f19603f3d011682016040523d82523d6000602084013e611f73565b606091505b5091509150611f848683838761205c565b925050509392505050565b606082471015611fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcb90612bdf565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611ffd91906129f6565b60006040518083038185875af1925050503d806000811461203a576040519150601f19603f3d011682016040523d82523d6000602084013e61203f565b606091505b5091509150612050878383876120d2565b92505050949350505050565b606083156120bf576000835114156120b757612077856115fe565b6120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad90612cbf565b60405180910390fd5b5b8290506120ca565b6120c98383612148565b5b949350505050565b606083156121355760008351141561212d576120ed85612198565b61212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390612cbf565b60405180910390fd5b5b829050612140565b61213f83836121bb565b5b949350505050565b60008251111561215b5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f9190612b5d565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156121ce5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122029190612b5d565b60405180910390fd5b600061221e61221984612df2565b612dcd565b90508281526020810184848401111561223a57612239612fff565b5b612245848285612f1f565b509392505050565b60008135905061225c816133d9565b92915050565b600081519050612271816133f0565b92915050565b60008151905061228681613407565b92915050565b60008083601f8401126122a2576122a1612ff5565b5b8235905067ffffffffffffffff8111156122bf576122be612ff0565b5b6020830191508360018202830111156122db576122da612ffa565b5b9250929050565b600082601f8301126122f7576122f6612ff5565b5b813561230784826020860161220b565b91505092915050565b60008135905061231f8161341e565b92915050565b6000815190506123348161341e565b92915050565b6000602082840312156123505761234f613009565b5b600061235e8482850161224d565b91505092915050565b60008060008060006080868803121561238357612382613009565b5b60006123918882890161224d565b95505060206123a28882890161224d565b94505060406123b388828901612310565b935050606086013567ffffffffffffffff8111156123d4576123d3613004565b5b6123e08882890161228c565b92509250509295509295909350565b60008060006040848603121561240857612407613009565b5b60006124168682870161224d565b935050602084013567ffffffffffffffff81111561243757612436613004565b5b6124438682870161228c565b92509250509250925092565b6000806040838503121561246657612465613009565b5b60006124748582860161224d565b925050602083013567ffffffffffffffff81111561249557612494613004565b5b6124a1858286016122e2565b9150509250929050565b6000806000606084860312156124c4576124c3613009565b5b60006124d28682870161224d565b93505060206124e386828701612310565b92505060406124f48682870161224d565b9150509250925092565b60008060008060006080868803121561251a57612519613009565b5b60006125288882890161224d565b955050602061253988828901612310565b945050604061254a8882890161224d565b935050606086013567ffffffffffffffff81111561256b5761256a613004565b5b6125778882890161228c565b92509250509295509295909350565b600080600080606085870312156125a05761259f613009565b5b60006125ae8782880161224d565b94505060206125bf87828801612310565b935050604085013567ffffffffffffffff8111156125e0576125df613004565b5b6125ec8782880161228c565b925092505092959194509250565b6000602082840312156126105761260f613009565b5b600061261e84828501612262565b91505092915050565b60006020828403121561263d5761263c613009565b5b600061264b84828501612277565b91505092915050565b60006020828403121561266a57612669613009565b5b600061267884828501612325565b91505092915050565b61268a81612e66565b82525050565b61269981612e84565b82525050565b60006126ab8385612e39565b93506126b8838584612f1f565b6126c18361300e565b840190509392505050565b60006126d88385612e4a565b93506126e5838584612f1f565b82840190509392505050565b60006126fc82612e23565b6127068185612e39565b9350612716818560208601612f2e565b61271f8161300e565b840191505092915050565b600061273582612e23565b61273f8185612e4a565b935061274f818560208601612f2e565b80840191505092915050565b61276481612ec5565b82525050565b61277381612ed7565b82525050565b61278281612ee9565b82525050565b600061279382612e2e565b61279d8185612e55565b93506127ad818560208601612f2e565b6127b68161300e565b840191505092915050565b60006127ce602683612e55565b91506127d98261301f565b604082019050919050565b60006127f1602c83612e55565b91506127fc8261306e565b604082019050919050565b6000612814602c83612e55565b915061281f826130bd565b604082019050919050565b6000612837602683612e55565b91506128428261310c565b604082019050919050565b600061285a603883612e55565b91506128658261315b565b604082019050919050565b600061287d602983612e55565b9150612888826131aa565b604082019050919050565b60006128a0602e83612e55565b91506128ab826131f9565b604082019050919050565b60006128c3602e83612e55565b91506128ce82613248565b604082019050919050565b60006128e6602d83612e55565b91506128f182613297565b604082019050919050565b6000612909602083612e55565b9150612914826132e6565b602082019050919050565b600061292c600083612e39565b91506129378261330f565b600082019050919050565b600061294f600083612e4a565b915061295a8261330f565b600082019050919050565b6000612972601d83612e55565b915061297d82613312565b602082019050919050565b6000612995602b83612e55565b91506129a08261333b565b604082019050919050565b60006129b8602a83612e55565b91506129c38261338a565b604082019050919050565b6129d781612eae565b82525050565b60006129ea8284866126cc565b91508190509392505050565b6000612a02828461272a565b915081905092915050565b6000612a1882612942565b9150819050919050565b6000602082019050612a376000830184612681565b92915050565b6000606082019050612a526000830186612681565b612a5f6020830185612681565b612a6c60408301846129ce565b949350505050565b6000604082019050612a896000830185612681565b612a96602083018461276a565b9392505050565b6000604082019050612ab26000830185612681565b612abf60208301846129ce565b9392505050565b6000602082019050612adb6000830184612690565b92915050565b60006020820190508181036000830152612afc81848661269f565b90509392505050565b60006020820190508181036000830152612b1f81846126f1565b905092915050565b6000602082019050612b3c600083018461275b565b92915050565b6000602082019050612b576000830184612779565b92915050565b60006020820190508181036000830152612b778184612788565b905092915050565b60006020820190508181036000830152612b98816127c1565b9050919050565b60006020820190508181036000830152612bb8816127e4565b9050919050565b60006020820190508181036000830152612bd881612807565b9050919050565b60006020820190508181036000830152612bf88161282a565b9050919050565b60006020820190508181036000830152612c188161284d565b9050919050565b60006020820190508181036000830152612c3881612870565b9050919050565b60006020820190508181036000830152612c5881612893565b9050919050565b60006020820190508181036000830152612c78816128b6565b9050919050565b60006020820190508181036000830152612c98816128d9565b9050919050565b60006020820190508181036000830152612cb8816128fc565b9050919050565b60006020820190508181036000830152612cd881612965565b9050919050565b60006020820190508181036000830152612cf881612988565b9050919050565b60006020820190508181036000830152612d18816129ab565b9050919050565b6000606082019050612d3460008301876129ce565b612d416020830186612681565b8181036040830152612d5481848661269f565b905095945050505050565b6000606082019050612d7460008301856129ce565b612d816020830184612681565b8181036040830152612d928161291f565b90509392505050565b6000604082019050612db060008301866129ce565b8181036020830152612dc381848661269f565b9050949350505050565b6000612dd7612de8565b9050612de38282612f61565b919050565b6000604051905090565b600067ffffffffffffffff821115612e0d57612e0c612fc1565b5b612e168261300e565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e7182612e8e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612ed082612efb565b9050919050565b6000612ee282612eae565b9050919050565b6000612ef482612eb8565b9050919050565b6000612f0682612f0d565b9050919050565b6000612f1882612e8e565b9050919050565b82818337600083830152505050565b60005b83811015612f4c578082015181840152602081019050612f31565b83811115612f5b576000848401525b50505050565b612f6a8261300e565b810181811067ffffffffffffffff82111715612f8957612f88612fc1565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6133e281612e66565b81146133ed57600080fd5b50565b6133f981612e78565b811461340457600080fd5b50565b61341081612e84565b811461341b57600080fd5b50565b61342781612eae565b811461343257600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f112d5efe1e763268f5c92f76775b109b07e2274abe56f58b212deae1f64ee6464736f6c6343000807003360806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360806040523480156200001157600080fd5b506040516200109038038062001090833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ef5806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b9190610a98565b60405180910390f35b61007e600480360381019061007991906107bc565b6100c2565b005b61009a60048036038101906100959190610769565b61024a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ca6102ef565b610117600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b815260040161017a959493929190610a21565b600060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101d19190610871565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023393929190610b70565b60405180910390a36102436103c5565b5050505050565b6102526102ef565b61027d82828573ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516102da9190610b55565b60405180910390a36102ea6103c5565b505050565b60026000541415610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610b35565b60405180910390fd5b6002600081905550565b6103c08363a9059cbb60e01b848460405160240161035e929190610a6f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103cf565b505050565b6001600081905550565b6000610431826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104969092919063ffffffff16565b905060008151111561049157808060200190518101906104519190610844565b610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b15565b60405180910390fd5b5b505050565b60606104a584846000856104ae565b90509392505050565b6060824710156104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ea90610ad5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161051c9190610a0a565b60006040518083038185875af1925050503d8060008114610559576040519150601f19603f3d011682016040523d82523d6000602084013e61055e565b606091505b509150915061056f8783838761057b565b92505050949350505050565b606083156105de576000835114156105d657610596856105f1565b6105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cc90610af5565b60405180910390fd5b5b8290506105e9565b6105e88383610614565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106275781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065b9190610ab3565b60405180910390fd5b600061067761067284610bc7565b610ba2565b90508281526020810184848401111561069357610692610d6a565b5b61069e848285610cc8565b509392505050565b6000813590506106b581610e7a565b92915050565b6000815190506106ca81610e91565b92915050565b60008083601f8401126106e6576106e5610d60565b5b8235905067ffffffffffffffff81111561070357610702610d5b565b5b60208301915083600182028301111561071f5761071e610d65565b5b9250929050565b600082601f83011261073b5761073a610d60565b5b815161074b848260208601610664565b91505092915050565b60008135905061076381610ea8565b92915050565b60008060006060848603121561078257610781610d74565b5b6000610790868287016106a6565b93505060206107a1868287016106a6565b92505060406107b286828701610754565b9150509250925092565b6000806000806000608086880312156107d8576107d7610d74565b5b60006107e6888289016106a6565b95505060206107f7888289016106a6565b945050604061080888828901610754565b935050606086013567ffffffffffffffff81111561082957610828610d6f565b5b610835888289016106d0565b92509250509295509295909350565b60006020828403121561085a57610859610d74565b5b6000610868848285016106bb565b91505092915050565b60006020828403121561088757610886610d74565b5b600082015167ffffffffffffffff8111156108a5576108a4610d6f565b5b6108b184828501610726565b91505092915050565b6108c381610c3b565b82525050565b60006108d58385610c0e565b93506108e2838584610cb9565b6108eb83610d79565b840190509392505050565b600061090182610bf8565b61090b8185610c1f565b935061091b818560208601610cc8565b80840191505092915050565b61093081610c83565b82525050565b600061094182610c03565b61094b8185610c2a565b935061095b818560208601610cc8565b61096481610d79565b840191505092915050565b600061097c602683610c2a565b915061098782610d8a565b604082019050919050565b600061099f601d83610c2a565b91506109aa82610dd9565b602082019050919050565b60006109c2602a83610c2a565b91506109cd82610e02565b604082019050919050565b60006109e5601f83610c2a565b91506109f082610e51565b602082019050919050565b610a0481610c79565b82525050565b6000610a1682846108f6565b915081905092915050565b6000608082019050610a3660008301886108ba565b610a4360208301876108ba565b610a5060408301866109fb565b8181036060830152610a638184866108c9565b90509695505050505050565b6000604082019050610a8460008301856108ba565b610a9160208301846109fb565b9392505050565b6000602082019050610aad6000830184610927565b92915050565b60006020820190508181036000830152610acd8184610936565b905092915050565b60006020820190508181036000830152610aee8161096f565b9050919050565b60006020820190508181036000830152610b0e81610992565b9050919050565b60006020820190508181036000830152610b2e816109b5565b9050919050565b60006020820190508181036000830152610b4e816109d8565b9050919050565b6000602082019050610b6a60008301846109fb565b92915050565b6000604082019050610b8560008301866109fb565b8181036020830152610b988184866108c9565b9050949350505050565b6000610bac610bbd565b9050610bb88282610cfb565b919050565b6000604051905090565b600067ffffffffffffffff821115610be257610be1610d2c565b5b610beb82610d79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c4682610c59565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c8e82610c95565b9050919050565b6000610ca082610ca7565b9050919050565b6000610cb282610c59565b9050919050565b82818337600083830152505050565b60005b83811015610ce6578082015181840152602081019050610ccb565b83811115610cf5576000848401525b50505050565b610d0482610d79565b810181811067ffffffffffffffff82111715610d2357610d22610d2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e8381610c3b565b8114610e8e57600080fd5b50565b610e9a81610c4d565b8114610ea557600080fd5b50565b610eb181610c79565b8114610ebc57600080fd5b5056fea2646970667358221220046fb4aa2d281b0818a76af1349cb058a259f6e9a48634a5fc3313b1b0fdddf764736f6c63430008070033"; - -type GatewayEVMEchidnaTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMEchidnaTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMEchidnaTest__factory extends ContractFactory { - constructor(...args: GatewayEVMEchidnaTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMEchidnaTest { - return super.attach(address) as GatewayEVMEchidnaTest; - } - override connect(signer: Signer): GatewayEVMEchidnaTest__factory { - return super.connect(signer) as GatewayEVMEchidnaTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMEchidnaTestInterface { - return new utils.Interface(_abi) as GatewayEVMEchidnaTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMEchidnaTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayEVMEchidnaTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts deleted file mode 100644 index f0150f4d..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts +++ /dev/null @@ -1,759 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayEVMUpgradeTest, - GatewayEVMUpgradeTestInterface, -} from "../../../../contracts/prototypes/evm/GatewayEVMUpgradeTest"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeRevert", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "revertWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_zetaConnector", - type: "address", - }, - ], - name: "setConnector", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [], - name: "zetaConnector", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613f1861008160003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d431fcc4399349f48c7db34c81b6c68de55fb20be12bb7fc941bdb48c9369ed464736f6c63430008070033"; - -type GatewayEVMUpgradeTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMUpgradeTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMUpgradeTest__factory extends ContractFactory { - constructor(...args: GatewayEVMUpgradeTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMUpgradeTest { - return super.attach(address) as GatewayEVMUpgradeTest; - } - override connect(signer: Signer): GatewayEVMUpgradeTest__factory { - return super.connect(signer) as GatewayEVMUpgradeTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMUpgradeTestInterface { - return new utils.Interface(_abi) as GatewayEVMUpgradeTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMUpgradeTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayEVMUpgradeTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts deleted file mode 100644 index 360cfccd..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts +++ /dev/null @@ -1,730 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayEVM, - GatewayEVMInterface, -} from "../../../../contracts/prototypes/evm/GatewayEVM"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - { - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeRevert", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "revertWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_zetaConnector", - type: "address", - }, - ], - name: "setConnector", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [], - name: "zetaConnector", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613f186200024360003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7048633db9aaa83300dde783147476ddfc6bd1f9af1387dc5143ffa7cf6418064736f6c63430008070033"; - -type GatewayEVMConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVM__factory extends ContractFactory { - constructor(...args: GatewayEVMConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVM { - return super.attach(address) as GatewayEVM; - } - override connect(signer: Signer): GatewayEVM__factory { - return super.connect(signer) as GatewayEVM__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMInterface { - return new utils.Interface(_abi) as GatewayEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVM { - return new Contract(address, _abi, signerOrProvider) as GatewayEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts deleted file mode 100644 index 1bf811e3..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/GatewayUpgradeTest__factory.ts +++ /dev/null @@ -1,488 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayUpgradeTest, - GatewayUpgradeTestInterface, -} from "../../../../contracts/prototypes/evm/GatewayUpgradeTest"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "SendFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedV2", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Send", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: true, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "SendERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "send", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "sendERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6126b5620002436000396000818161038701528181610416015281816105100152818161059f015261093b01526126b56000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063c4d66de811610059578063c4d66de814610271578063cb0271ed1461029a578063dda79b75146102c3578063f2fde38b146102ee576100dd565b80638da5cb5b146102015780639372c4ab1461022c578063ae7a3a6f14610248576100dd565b80635131ab59116100bb5780635131ab591461015757806352d1902d146101945780635b112591146101bf578063715018a6146101ea576100dd565b80631cff79cd146100e25780633659cfe6146101125780634f1ef2861461013b575b600080fd5b6100fc60048036038101906100f791906118d1565b610317565b6040516101099190611f02565b60405180910390f35b34801561011e57600080fd5b506101396004803603810190610134919061181c565b610385565b005b61015560048036038101906101509190611931565b61050e565b005b34801561016357600080fd5b5061017e60048036038101906101799190611849565b61064b565b60405161018b9190611f02565b60405180910390f35b3480156101a057600080fd5b506101a9610937565b6040516101b69190611eb5565b60405180910390f35b3480156101cb57600080fd5b506101d46109f0565b6040516101e19190611e11565b60405180910390f35b3480156101f657600080fd5b506101ff610a16565b005b34801561020d57600080fd5b50610216610a2a565b6040516102239190611e11565b60405180910390f35b61024660048036038101906102419190611a5b565b610a54565b005b34801561025457600080fd5b5061026f600480360381019061026a919061181c565b610b9c565b005b34801561027d57600080fd5b506102986004803603810190610293919061181c565b610be0565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906119e7565b610d68565b005b3480156102cf57600080fd5b506102d8610e72565b6040516102e59190611e11565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061181c565b610e98565b005b60606000610326858585610f1c565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348686604051610372939291906120c1565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610453610fd3565b73ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a090611fa1565b60405180910390fd5b6104b28161102a565b61050b81600067ffffffffffffffff8111156104d1576104d0612282565b5b6040519080825280601f01601f1916602001820160405280156105035781602001600182028036833780820191505090505b506000611035565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105dc610fd3565b73ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990611fa1565b60405180910390fd5b61063b8261102a565b61064782826001611035565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610688929190611e8c565b602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da919061198d565b5060006106e8868585610f1c565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b8152600401610726929190611e63565b602060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610778919061198d565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107b49190611e11565b60206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190611abb565b905060008111156108c0578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161086c929190611e8c565b602060405180830381600087803b15801561088657600080fd5b505af115801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be919061198d565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610921939291906120c1565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be90611fc1565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1e6111b2565b610a286000611230565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80341015610a8e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610ad690611dfc565b60006040518083038185875af1925050503d8060008114610b13576040519150601f19603f3d011682016040523d82523d6000602084013e610b18565b606091505b50509050600015158115151415610b5b576040517f81063e5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa93afc57f3be4641cf20c7165d11856f3b46dd376108e5fffb06f73f2b2a6d58848484604051610b8e93929190611ed0565b60405180910390a150505050565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610c115750600160008054906101000a900460ff1660ff16105b80610c3e5750610c20306112f6565b158015610c3d5750600160008054906101000a900460ff1660ff16145b5b610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612001565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610cba576001600060016101000a81548160ff0219169083151502179055505b610cc2611319565b610cca611372565b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d645760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d5b9190611f24565b60405180910390a15b5050565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610dc793929190611e2c565b602060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061198d565b508173ffffffffffffffffffffffffffffffffffffffff167f35fb30ed1b8e81eb91001dad742b13b1491a67c722e8c593a886a18500f7d9af858584604051610e6493929190611ed0565b60405180910390a250505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ea06111b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790611f61565b60405180910390fd5b610f1981611230565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610f49929190611dcc565b60006040518083038185875af1925050503d8060008114610f86576040519150601f19603f3d011682016040523d82523d6000602084013e610f8b565b606091505b509150915081610fc7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006110017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110326111b2565b50565b6110617f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6113cd565b60000160009054906101000a900460ff161561108557611080836113d7565b6111ad565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110cb57600080fd5b505afa9250505080156110fc57506040513d601f19601f820116820180604052508101906110f991906119ba565b60015b61113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612021565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790611fe1565b60405180910390fd5b506111ac838383611490565b5b505050565b6111ba6114bc565b73ffffffffffffffffffffffffffffffffffffffff166111d8610a2a565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612061565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f906120a1565b60405180910390fd5b6113706114c4565b565b600060019054906101000a900460ff166113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b8906120a1565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6113e0816112f6565b61141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612041565b60405180910390fd5b8061144c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61149983611525565b6000825111806114a65750805b156114b7576114b58383611574565b505b505050565b600033905090565b600060019054906101000a900460ff16611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906120a1565b60405180910390fd5b61152361151e6114bc565b611230565b565b61152e816113d7565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606115998383604051806060016040528060278152602001612659602791396115a1565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115cb9190611de5565b600060405180830381855af49150503d8060008114611606576040519150601f19603f3d011682016040523d82523d6000602084013e61160b565b606091505b509150915061161c86838387611627565b925050509392505050565b6060831561168a5760008351141561168257611642856112f6565b611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612081565b60405180910390fd5b5b829050611695565b611694838361169d565b5b949350505050565b6000825111156116b05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e49190611f3f565b60405180910390fd5b60006117006116fb84612118565b6120f3565b90508281526020810184848401111561171c5761171b6122c0565b5b61172784828561220f565b509392505050565b60008135905061173e816125fc565b92915050565b60008151905061175381612613565b92915050565b6000815190506117688161262a565b92915050565b60008083601f840112611784576117836122b6565b5b8235905067ffffffffffffffff8111156117a1576117a06122b1565b5b6020830191508360018202830111156117bd576117bc6122bb565b5b9250929050565b600082601f8301126117d9576117d86122b6565b5b81356117e98482602086016116ed565b91505092915050565b60008135905061180181612641565b92915050565b60008151905061181681612641565b92915050565b600060208284031215611832576118316122ca565b5b60006118408482850161172f565b91505092915050565b600080600080600060808688031215611865576118646122ca565b5b60006118738882890161172f565b95505060206118848882890161172f565b9450506040611895888289016117f2565b935050606086013567ffffffffffffffff8111156118b6576118b56122c5565b5b6118c28882890161176e565b92509250509295509295909350565b6000806000604084860312156118ea576118e96122ca565b5b60006118f88682870161172f565b935050602084013567ffffffffffffffff811115611919576119186122c5565b5b6119258682870161176e565b92509250509250925092565b60008060408385031215611948576119476122ca565b5b60006119568582860161172f565b925050602083013567ffffffffffffffff811115611977576119766122c5565b5b611983858286016117c4565b9150509250929050565b6000602082840312156119a3576119a26122ca565b5b60006119b184828501611744565b91505092915050565b6000602082840312156119d0576119cf6122ca565b5b60006119de84828501611759565b91505092915050565b60008060008060608587031215611a0157611a006122ca565b5b600085013567ffffffffffffffff811115611a1f57611a1e6122c5565b5b611a2b8782880161176e565b94509450506020611a3e8782880161172f565b9250506040611a4f878288016117f2565b91505092959194509250565b600080600060408486031215611a7457611a736122ca565b5b600084013567ffffffffffffffff811115611a9257611a916122c5565b5b611a9e8682870161176e565b93509350506020611ab1868287016117f2565b9150509250925092565b600060208284031215611ad157611ad06122ca565b5b6000611adf84828501611807565b91505092915050565b611af18161218c565b82525050565b611b00816121aa565b82525050565b6000611b12838561215f565b9350611b1f83858461220f565b611b28836122cf565b840190509392505050565b6000611b3f8385612170565b9350611b4c83858461220f565b82840190509392505050565b6000611b6382612149565b611b6d818561215f565b9350611b7d81856020860161221e565b611b86816122cf565b840191505092915050565b6000611b9c82612149565b611ba68185612170565b9350611bb681856020860161221e565b80840191505092915050565b611bcb816121eb565b82525050565b611bda816121fd565b82525050565b6000611beb82612154565b611bf5818561217b565b9350611c0581856020860161221e565b611c0e816122cf565b840191505092915050565b6000611c2660268361217b565b9150611c31826122e0565b604082019050919050565b6000611c49602c8361217b565b9150611c548261232f565b604082019050919050565b6000611c6c602c8361217b565b9150611c778261237e565b604082019050919050565b6000611c8f60388361217b565b9150611c9a826123cd565b604082019050919050565b6000611cb260298361217b565b9150611cbd8261241c565b604082019050919050565b6000611cd5602e8361217b565b9150611ce08261246b565b604082019050919050565b6000611cf8602e8361217b565b9150611d03826124ba565b604082019050919050565b6000611d1b602d8361217b565b9150611d2682612509565b604082019050919050565b6000611d3e60208361217b565b9150611d4982612558565b602082019050919050565b6000611d61600083612170565b9150611d6c82612581565b600082019050919050565b6000611d84601d8361217b565b9150611d8f82612584565b602082019050919050565b6000611da7602b8361217b565b9150611db2826125ad565b604082019050919050565b611dc6816121d4565b82525050565b6000611dd9828486611b33565b91508190509392505050565b6000611df18284611b91565b915081905092915050565b6000611e0782611d54565b9150819050919050565b6000602082019050611e266000830184611ae8565b92915050565b6000606082019050611e416000830186611ae8565b611e4e6020830185611ae8565b611e5b6040830184611dbd565b949350505050565b6000604082019050611e786000830185611ae8565b611e856020830184611bc2565b9392505050565b6000604082019050611ea16000830185611ae8565b611eae6020830184611dbd565b9392505050565b6000602082019050611eca6000830184611af7565b92915050565b60006040820190508181036000830152611eeb818587611b06565b9050611efa6020830184611dbd565b949350505050565b60006020820190508181036000830152611f1c8184611b58565b905092915050565b6000602082019050611f396000830184611bd1565b92915050565b60006020820190508181036000830152611f598184611be0565b905092915050565b60006020820190508181036000830152611f7a81611c19565b9050919050565b60006020820190508181036000830152611f9a81611c3c565b9050919050565b60006020820190508181036000830152611fba81611c5f565b9050919050565b60006020820190508181036000830152611fda81611c82565b9050919050565b60006020820190508181036000830152611ffa81611ca5565b9050919050565b6000602082019050818103600083015261201a81611cc8565b9050919050565b6000602082019050818103600083015261203a81611ceb565b9050919050565b6000602082019050818103600083015261205a81611d0e565b9050919050565b6000602082019050818103600083015261207a81611d31565b9050919050565b6000602082019050818103600083015261209a81611d77565b9050919050565b600060208201905081810360008301526120ba81611d9a565b9050919050565b60006040820190506120d66000830186611dbd565b81810360208301526120e9818486611b06565b9050949350505050565b60006120fd61210e565b90506121098282612251565b919050565b6000604051905090565b600067ffffffffffffffff82111561213357612132612282565b5b61213c826122cf565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612197826121b4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121f6826121d4565b9050919050565b6000612208826121de565b9050919050565b82818337600083830152505050565b60005b8381101561223c578082015181840152602081019050612221565b8381111561224b576000848401525b50505050565b61225a826122cf565b810181811067ffffffffffffffff8211171561227957612278612282565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6126058161218c565b811461261057600080fd5b50565b61261c8161219e565b811461262757600080fd5b50565b612633816121aa565b811461263e57600080fd5b50565b61264a816121d4565b811461265557600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f9e6a4cee513b2822548c38bc338fc47226488d211aa133e6b4c074eac2122a764736f6c63430008070033"; - -type GatewayUpgradeTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayUpgradeTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayUpgradeTest__factory extends ContractFactory { - constructor(...args: GatewayUpgradeTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayUpgradeTest { - return super.attach(address) as GatewayUpgradeTest; - } - override connect(signer: Signer): GatewayUpgradeTest__factory { - return super.connect(signer) as GatewayUpgradeTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayUpgradeTestInterface { - return new utils.Interface(_abi) as GatewayUpgradeTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayUpgradeTest { - return new Contract(address, _abi, signerOrProvider) as GatewayUpgradeTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts deleted file mode 100644 index a19f6505..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/Gateway__factory.ts +++ /dev/null @@ -1,488 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - Gateway, - GatewayInterface, -} from "../../../../contracts/prototypes/evm/Gateway"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "SendFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Send", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - indexed: true, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "SendERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - inputs: [], - name: "custody", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "send", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "sendERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_custody", - type: "address", - }, - ], - name: "setCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6126b5620002436000396000818161038701528181610416015281816105100152818161059f015261093b01526126b56000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063c4d66de811610059578063c4d66de814610271578063cb0271ed1461029a578063dda79b75146102c3578063f2fde38b146102ee576100dd565b80638da5cb5b146102015780639372c4ab1461022c578063ae7a3a6f14610248576100dd565b80635131ab59116100bb5780635131ab591461015757806352d1902d146101945780635b112591146101bf578063715018a6146101ea576100dd565b80631cff79cd146100e25780633659cfe6146101125780634f1ef2861461013b575b600080fd5b6100fc60048036038101906100f791906118d1565b610317565b6040516101099190611f02565b60405180910390f35b34801561011e57600080fd5b506101396004803603810190610134919061181c565b610385565b005b61015560048036038101906101509190611931565b61050e565b005b34801561016357600080fd5b5061017e60048036038101906101799190611849565b61064b565b60405161018b9190611f02565b60405180910390f35b3480156101a057600080fd5b506101a9610937565b6040516101b69190611eb5565b60405180910390f35b3480156101cb57600080fd5b506101d46109f0565b6040516101e19190611e11565b60405180910390f35b3480156101f657600080fd5b506101ff610a16565b005b34801561020d57600080fd5b50610216610a2a565b6040516102239190611e11565b60405180910390f35b61024660048036038101906102419190611a5b565b610a54565b005b34801561025457600080fd5b5061026f600480360381019061026a919061181c565b610b9c565b005b34801561027d57600080fd5b506102986004803603810190610293919061181c565b610be0565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906119e7565b610d68565b005b3480156102cf57600080fd5b506102d8610e72565b6040516102e59190611e11565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061181c565b610e98565b005b60606000610326858585610f1c565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348686604051610372939291906120c1565b60405180910390a2809150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610453610fd3565b73ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a090611fa1565b60405180910390fd5b6104b28161102a565b61050b81600067ffffffffffffffff8111156104d1576104d0612282565b5b6040519080825280601f01601f1916602001820160405280156105035781602001600182028036833780820191505090505b506000611035565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490611f81565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166105dc610fd3565b73ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990611fa1565b60405180910390fd5b61063b8261102a565b61064782826001611035565b5050565b60608573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610688929190611e8c565b602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da919061198d565b5060006106e8868585610f1c565b90508673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38760006040518363ffffffff1660e01b8152600401610726929190611e63565b602060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610778919061198d565b5060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107b49190611e11565b60206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190611abb565b905060008111156108c0578773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161086c929190611e8c565b602060405180830381600087803b15801561088657600080fd5b505af115801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be919061198d565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610921939291906120c1565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be90611fc1565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1e6111b2565b610a286000611230565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80341015610a8e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610ad690611dfc565b60006040518083038185875af1925050503d8060008114610b13576040519150601f19603f3d011682016040523d82523d6000602084013e610b18565b606091505b50509050600015158115151415610b5b576040517f81063e5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa93afc57f3be4641cf20c7165d11856f3b46dd376108e5fffb06f73f2b2a6d58848484604051610b8e93929190611ed0565b60405180910390a150505050565b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610c115750600160008054906101000a900460ff1660ff16105b80610c3e5750610c20306112f6565b158015610c3d5750600160008054906101000a900460ff1660ff16145b5b610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612001565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610cba576001600060016101000a81548160ff0219169083151502179055505b610cc2611319565b610cca611372565b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d645760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d5b9190611f24565b60405180910390a15b5050565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610dc793929190611e2c565b602060405180830381600087803b158015610de157600080fd5b505af1158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061198d565b508173ffffffffffffffffffffffffffffffffffffffff167f35fb30ed1b8e81eb91001dad742b13b1491a67c722e8c593a886a18500f7d9af858584604051610e6493929190611ed0565b60405180910390a250505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ea06111b2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790611f61565b60405180910390fd5b610f1981611230565b50565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051610f49929190611dcc565b60006040518083038185875af1925050503d8060008114610f86576040519150601f19603f3d011682016040523d82523d6000602084013e610f8b565b606091505b509150915081610fc7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006110017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110326111b2565b50565b6110617f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6113cd565b60000160009054906101000a900460ff161561108557611080836113d7565b6111ad565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110cb57600080fd5b505afa9250505080156110fc57506040513d601f19601f820116820180604052508101906110f991906119ba565b60015b61113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612021565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790611fe1565b60405180910390fd5b506111ac838383611490565b5b505050565b6111ba6114bc565b73ffffffffffffffffffffffffffffffffffffffff166111d8610a2a565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612061565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f906120a1565b60405180910390fd5b6113706114c4565b565b600060019054906101000a900460ff166113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b8906120a1565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6113e0816112f6565b61141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612041565b60405180910390fd5b8061144c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6113c3565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61149983611525565b6000825111806114a65750805b156114b7576114b58383611574565b505b505050565b600033905090565b600060019054906101000a900460ff16611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906120a1565b60405180910390fd5b61152361151e6114bc565b611230565b565b61152e816113d7565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606115998383604051806060016040528060278152602001612659602791396115a1565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115cb9190611de5565b600060405180830381855af49150503d8060008114611606576040519150601f19603f3d011682016040523d82523d6000602084013e61160b565b606091505b509150915061161c86838387611627565b925050509392505050565b6060831561168a5760008351141561168257611642856112f6565b611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612081565b60405180910390fd5b5b829050611695565b611694838361169d565b5b949350505050565b6000825111156116b05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e49190611f3f565b60405180910390fd5b60006117006116fb84612118565b6120f3565b90508281526020810184848401111561171c5761171b6122c0565b5b61172784828561220f565b509392505050565b60008135905061173e816125fc565b92915050565b60008151905061175381612613565b92915050565b6000815190506117688161262a565b92915050565b60008083601f840112611784576117836122b6565b5b8235905067ffffffffffffffff8111156117a1576117a06122b1565b5b6020830191508360018202830111156117bd576117bc6122bb565b5b9250929050565b600082601f8301126117d9576117d86122b6565b5b81356117e98482602086016116ed565b91505092915050565b60008135905061180181612641565b92915050565b60008151905061181681612641565b92915050565b600060208284031215611832576118316122ca565b5b60006118408482850161172f565b91505092915050565b600080600080600060808688031215611865576118646122ca565b5b60006118738882890161172f565b95505060206118848882890161172f565b9450506040611895888289016117f2565b935050606086013567ffffffffffffffff8111156118b6576118b56122c5565b5b6118c28882890161176e565b92509250509295509295909350565b6000806000604084860312156118ea576118e96122ca565b5b60006118f88682870161172f565b935050602084013567ffffffffffffffff811115611919576119186122c5565b5b6119258682870161176e565b92509250509250925092565b60008060408385031215611948576119476122ca565b5b60006119568582860161172f565b925050602083013567ffffffffffffffff811115611977576119766122c5565b5b611983858286016117c4565b9150509250929050565b6000602082840312156119a3576119a26122ca565b5b60006119b184828501611744565b91505092915050565b6000602082840312156119d0576119cf6122ca565b5b60006119de84828501611759565b91505092915050565b60008060008060608587031215611a0157611a006122ca565b5b600085013567ffffffffffffffff811115611a1f57611a1e6122c5565b5b611a2b8782880161176e565b94509450506020611a3e8782880161172f565b9250506040611a4f878288016117f2565b91505092959194509250565b600080600060408486031215611a7457611a736122ca565b5b600084013567ffffffffffffffff811115611a9257611a916122c5565b5b611a9e8682870161176e565b93509350506020611ab1868287016117f2565b9150509250925092565b600060208284031215611ad157611ad06122ca565b5b6000611adf84828501611807565b91505092915050565b611af18161218c565b82525050565b611b00816121aa565b82525050565b6000611b12838561215f565b9350611b1f83858461220f565b611b28836122cf565b840190509392505050565b6000611b3f8385612170565b9350611b4c83858461220f565b82840190509392505050565b6000611b6382612149565b611b6d818561215f565b9350611b7d81856020860161221e565b611b86816122cf565b840191505092915050565b6000611b9c82612149565b611ba68185612170565b9350611bb681856020860161221e565b80840191505092915050565b611bcb816121eb565b82525050565b611bda816121fd565b82525050565b6000611beb82612154565b611bf5818561217b565b9350611c0581856020860161221e565b611c0e816122cf565b840191505092915050565b6000611c2660268361217b565b9150611c31826122e0565b604082019050919050565b6000611c49602c8361217b565b9150611c548261232f565b604082019050919050565b6000611c6c602c8361217b565b9150611c778261237e565b604082019050919050565b6000611c8f60388361217b565b9150611c9a826123cd565b604082019050919050565b6000611cb260298361217b565b9150611cbd8261241c565b604082019050919050565b6000611cd5602e8361217b565b9150611ce08261246b565b604082019050919050565b6000611cf8602e8361217b565b9150611d03826124ba565b604082019050919050565b6000611d1b602d8361217b565b9150611d2682612509565b604082019050919050565b6000611d3e60208361217b565b9150611d4982612558565b602082019050919050565b6000611d61600083612170565b9150611d6c82612581565b600082019050919050565b6000611d84601d8361217b565b9150611d8f82612584565b602082019050919050565b6000611da7602b8361217b565b9150611db2826125ad565b604082019050919050565b611dc6816121d4565b82525050565b6000611dd9828486611b33565b91508190509392505050565b6000611df18284611b91565b915081905092915050565b6000611e0782611d54565b9150819050919050565b6000602082019050611e266000830184611ae8565b92915050565b6000606082019050611e416000830186611ae8565b611e4e6020830185611ae8565b611e5b6040830184611dbd565b949350505050565b6000604082019050611e786000830185611ae8565b611e856020830184611bc2565b9392505050565b6000604082019050611ea16000830185611ae8565b611eae6020830184611dbd565b9392505050565b6000602082019050611eca6000830184611af7565b92915050565b60006040820190508181036000830152611eeb818587611b06565b9050611efa6020830184611dbd565b949350505050565b60006020820190508181036000830152611f1c8184611b58565b905092915050565b6000602082019050611f396000830184611bd1565b92915050565b60006020820190508181036000830152611f598184611be0565b905092915050565b60006020820190508181036000830152611f7a81611c19565b9050919050565b60006020820190508181036000830152611f9a81611c3c565b9050919050565b60006020820190508181036000830152611fba81611c5f565b9050919050565b60006020820190508181036000830152611fda81611c82565b9050919050565b60006020820190508181036000830152611ffa81611ca5565b9050919050565b6000602082019050818103600083015261201a81611cc8565b9050919050565b6000602082019050818103600083015261203a81611ceb565b9050919050565b6000602082019050818103600083015261205a81611d0e565b9050919050565b6000602082019050818103600083015261207a81611d31565b9050919050565b6000602082019050818103600083015261209a81611d77565b9050919050565b600060208201905081810360008301526120ba81611d9a565b9050919050565b60006040820190506120d66000830186611dbd565b81810360208301526120e9818486611b06565b9050949350505050565b60006120fd61210e565b90506121098282612251565b919050565b6000604051905090565b600067ffffffffffffffff82111561213357612132612282565b5b61213c826122cf565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612197826121b4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121f6826121d4565b9050919050565b6000612208826121de565b9050919050565b82818337600083830152505050565b60005b8381101561223c578082015181840152602081019050612221565b8381111561224b576000848401525b50505050565b61225a826122cf565b810181811067ffffffffffffffff8211171561227957612278612282565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6126058161218c565b811461261057600080fd5b50565b61261c8161219e565b811461262757600080fd5b50565b612633816121aa565b811461263e57600080fd5b50565b61264a816121d4565b811461265557600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220723434571cc9cd7e95021f49aa480cf09a88e70f379bcd364628ebd80d926ab464736f6c63430008070033"; - -type GatewayConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Gateway__factory extends ContractFactory { - constructor(...args: GatewayConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Gateway { - return super.attach(address) as Gateway; - } - override connect(signer: Signer): Gateway__factory { - return super.connect(signer) as Gateway__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayInterface { - return new utils.Interface(_abi) as GatewayInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Gateway { - return new Contract(address, _abi, signerOrProvider) as Gateway; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts deleted file mode 100644 index d751d847..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20CustodyNewErrors, - IERC20CustodyNewErrorsInterface, -} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewErrors"; - -const _abi = [ - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, -] as const; - -export class IERC20CustodyNewErrors__factory { - static readonly abi = _abi; - static createInterface(): IERC20CustodyNewErrorsInterface { - return new utils.Interface(_abi) as IERC20CustodyNewErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC20CustodyNewErrors { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC20CustodyNewErrors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts deleted file mode 100644 index aff1dbc0..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20CustodyNewEvents, - IERC20CustodyNewEventsInterface, -} from "../../../../../contracts/prototypes/evm/IERC20CustodyNew.sol/IERC20CustodyNewEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, -] as const; - -export class IERC20CustodyNewEvents__factory { - static readonly abi = _abi; - static createInterface(): IERC20CustodyNewEventsInterface { - return new utils.Interface(_abi) as IERC20CustodyNewEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC20CustodyNewEvents { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC20CustodyNewEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 9f3d2112..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC20CustodyNewErrors__factory } from "./IERC20CustodyNewErrors__factory"; -export { IERC20CustodyNewEvents__factory } from "./IERC20CustodyNewEvents__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts deleted file mode 100644 index 43023c05..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVMErrors, - IGatewayEVMErrorsInterface, -} from "../../../../../contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMErrors"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, -] as const; - -export class IGatewayEVMErrors__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMErrorsInterface { - return new utils.Interface(_abi) as IGatewayEVMErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVMErrors { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVMErrors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts deleted file mode 100644 index bee0368f..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts +++ /dev/null @@ -1,200 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVMEvents, - IGatewayEVMEventsInterface, -} from "../../../../../contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, -] as const; - -export class IGatewayEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMEventsInterface { - return new utils.Interface(_abi) as IGatewayEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts deleted file mode 100644 index 37378738..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM__factory.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVM, - IGatewayEVMInterface, -} from "../../../../../contracts/prototypes/evm/IGatewayEVM.sol/IGatewayEVM"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "revertWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGatewayEVM__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMInterface { - return new utils.Interface(_abi) as IGatewayEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVM { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts deleted file mode 100644 index 0f36d38b..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/Revertable__factory.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - Revertable, - RevertableInterface, -} from "../../../../../contracts/prototypes/evm/IGatewayEVM.sol/Revertable"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class Revertable__factory { - static readonly abi = _abi; - static createInterface(): RevertableInterface { - return new utils.Interface(_abi) as RevertableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Revertable { - return new Contract(address, _abi, signerOrProvider) as Revertable; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts deleted file mode 100644 index 5f406b5d..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IGatewayEVM.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IGatewayEVM__factory } from "./IGatewayEVM__factory"; -export { IGatewayEVMErrors__factory } from "./IGatewayEVMErrors__factory"; -export { IGatewayEVMEvents__factory } from "./IGatewayEVMEvents__factory"; -export { Revertable__factory } from "./Revertable__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts deleted file mode 100644 index 58b48916..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IReceiverEVMEvents, - IReceiverEVMEventsInterface, -} from "../../../../../contracts/prototypes/evm/IReceiverEVM.sol/IReceiverEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ReceivedRevert", - type: "event", - }, -] as const; - -export class IReceiverEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IReceiverEVMEventsInterface { - return new utils.Interface(_abi) as IReceiverEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IReceiverEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IReceiverEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts deleted file mode 100644 index 49a704f0..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IReceiverEVM.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IReceiverEVMEvents__factory } from "./IReceiverEVMEvents__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts deleted file mode 100644 index c7408d4c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents__factory.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IZetaConnectorEvents, - IZetaConnectorEventsInterface, -} from "../../../../../contracts/prototypes/evm/IZetaConnector.sol/IZetaConnectorEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, -] as const; - -export class IZetaConnectorEvents__factory { - static readonly abi = _abi; - static createInterface(): IZetaConnectorEventsInterface { - return new utils.Interface(_abi) as IZetaConnectorEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IZetaConnectorEvents { - return new Contract( - address, - _abi, - signerOrProvider - ) as IZetaConnectorEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts deleted file mode 100644 index a60ddc89..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaConnector.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IZetaConnectorEvents__factory } from "./IZetaConnectorEvents__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts deleted file mode 100644 index 78938556..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/IZetaNonEthNew__factory.ts +++ /dev/null @@ -1,250 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IZetaNonEthNew, - IZetaNonEthNewInterface, -} from "../../../../contracts/prototypes/evm/IZetaNonEthNew"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burnFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "mintee", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IZetaNonEthNew__factory { - static readonly abi = _abi; - static createInterface(): IZetaNonEthNewInterface { - return new utils.Interface(_abi) as IZetaNonEthNewInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IZetaNonEthNew { - return new Contract(address, _abi, signerOrProvider) as IZetaNonEthNew; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts deleted file mode 100644 index e8598851..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts +++ /dev/null @@ -1,319 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ReceiverEVM, - ReceiverEVMInterface, -} from "../../../../contracts/prototypes/evm/ReceiverEVM"; - -const _abi = [ - { - inputs: [], - name: "ZeroAmount", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ReceivedRevert", - type: "event", - }, - { - stateMutability: "payable", - type: "fallback", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "receiveERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "receiveERC20Partial", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "receiveNoParams", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receiveNonPayable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receivePayable", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220c31e8a5ca88f5ae54034b6491a4128b8c7599ac4cdb009070ccdd45a512dc07f64736f6c63430008070033"; - -type ReceiverEVMConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReceiverEVMConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ReceiverEVM__factory extends ContractFactory { - constructor(...args: ReceiverEVMConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): ReceiverEVM { - return super.attach(address) as ReceiverEVM; - } - override connect(signer: Signer): ReceiverEVM__factory { - return super.connect(signer) as ReceiverEVM__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReceiverEVMInterface { - return new utils.Interface(_abi) as ReceiverEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ReceiverEVM { - return new Contract(address, _abi, signerOrProvider) as ReceiverEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts deleted file mode 100644 index bdb9e619..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/Receiver__factory.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - Receiver, - ReceiverInterface, -} from "../../../../contracts/prototypes/evm/Receiver"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "receiveERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "receiveNoParams", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receiveNonPayable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "receivePayable", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061108a806100206000396000f3fe60806040526004361061003f5760003560e01c8063357fc5a2146100445780636ed701691461006d578063e04d4f9714610084578063f05b6abf146100a0575b600080fd5b34801561005057600080fd5b5061006b6004803603810190610066919061085a565b6100c9565b005b34801561007957600080fd5b50610082610138565b005b61009e600480360381019061009991906107eb565b610171565b005b3480156100ac57600080fd5b506100c760048036038101906100c29190610733565b6101b5565b005b6100f63382858573ffffffffffffffffffffffffffffffffffffffff166101f7909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af603384848460405161012b9493929190610bb0565b60405180910390a1505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101679190610b0b565b60405180910390a1565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516101a8959493929190610bf5565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516101ea9493929190610b5d565b60405180910390a1505050565b61027a846323b872dd60e01b85858560405160240161021893929190610b26565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610280565b50505050565b60006102e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166103479092919063ffffffff16565b9050600081511115610342578080602001905181019061030291906107be565b610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890610cb1565b60405180910390fd5b5b505050565b6060610356848460008561035f565b90509392505050565b6060824710156103a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039b90610c71565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516103cd9190610af4565b60006040518083038185875af1925050503d806000811461040a576040519150601f19603f3d011682016040523d82523d6000602084013e61040f565b606091505b50915091506104208783838761042c565b92505050949350505050565b6060831561048f5760008351141561048757610447856104a2565b610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90610c91565b60405180910390fd5b5b82905061049a565b61049983836104c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156104d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050c9190610c4f565b60405180910390fd5b600061052861052384610cf6565b610cd1565b9050808382526020820190508285602086028201111561054b5761054a610f23565b5b60005b8581101561059957813567ffffffffffffffff81111561057157610570610f1e565b5b80860161057e89826106f0565b8552602085019450602084019350505060018101905061054e565b5050509392505050565b60006105b66105b184610d22565b610cd1565b905080838252602082019050828560208602820111156105d9576105d8610f23565b5b60005b8581101561060957816105ef888261071e565b8452602084019350602083019250506001810190506105dc565b5050509392505050565b600061062661062184610d4e565b610cd1565b90508281526020810184848401111561064257610641610f28565b5b61064d848285610e7c565b509392505050565b6000813590506106648161100f565b92915050565b600082601f83011261067f5761067e610f1e565b5b813561068f848260208601610515565b91505092915050565b600082601f8301126106ad576106ac610f1e565b5b81356106bd8482602086016105a3565b91505092915050565b6000813590506106d581611026565b92915050565b6000815190506106ea81611026565b92915050565b600082601f83011261070557610704610f1e565b5b8135610715848260208601610613565b91505092915050565b60008135905061072d8161103d565b92915050565b60008060006060848603121561074c5761074b610f32565b5b600084013567ffffffffffffffff81111561076a57610769610f2d565b5b6107768682870161066a565b935050602084013567ffffffffffffffff81111561079757610796610f2d565b5b6107a386828701610698565b92505060406107b4868287016106c6565b9150509250925092565b6000602082840312156107d4576107d3610f32565b5b60006107e2848285016106db565b91505092915050565b60008060006060848603121561080457610803610f32565b5b600084013567ffffffffffffffff81111561082257610821610f2d565b5b61082e868287016106f0565b935050602061083f8682870161071e565b9250506040610850868287016106c6565b9150509250925092565b60008060006060848603121561087357610872610f32565b5b60006108818682870161071e565b935050602061089286828701610655565b92505060406108a386828701610655565b9150509250925092565b60006108b983836109fb565b905092915050565b60006108cd8383610ad6565b60208301905092915050565b6108e281610e34565b82525050565b60006108f382610d9f565b6108fd8185610de5565b93508360208202850161090f85610d7f565b8060005b8581101561094b578484038952815161092c85826108ad565b945061093783610dcb565b925060208a01995050600181019050610913565b50829750879550505050505092915050565b600061096882610daa565b6109728185610df6565b935061097d83610d8f565b8060005b838110156109ae57815161099588826108c1565b97506109a083610dd8565b925050600181019050610981565b5085935050505092915050565b6109c481610e46565b82525050565b60006109d582610db5565b6109df8185610e07565b93506109ef818560208601610e8b565b80840191505092915050565b6000610a0682610dc0565b610a108185610e12565b9350610a20818560208601610e8b565b610a2981610f37565b840191505092915050565b6000610a3f82610dc0565b610a498185610e23565b9350610a59818560208601610e8b565b610a6281610f37565b840191505092915050565b6000610a7a602683610e23565b9150610a8582610f48565b604082019050919050565b6000610a9d601d83610e23565b9150610aa882610f97565b602082019050919050565b6000610ac0602a83610e23565b9150610acb82610fc0565b604082019050919050565b610adf81610e72565b82525050565b610aee81610e72565b82525050565b6000610b0082846109ca565b915081905092915050565b6000602082019050610b2060008301846108d9565b92915050565b6000606082019050610b3b60008301866108d9565b610b4860208301856108d9565b610b556040830184610ae5565b949350505050565b6000608082019050610b7260008301876108d9565b8181036020830152610b8481866108e8565b90508181036040830152610b98818561095d565b9050610ba760608301846109bb565b95945050505050565b6000608082019050610bc560008301876108d9565b610bd26020830186610ae5565b610bdf60408301856108d9565b610bec60608301846108d9565b95945050505050565b600060a082019050610c0a60008301886108d9565b610c176020830187610ae5565b8181036040830152610c298186610a34565b9050610c386060830185610ae5565b610c4560808301846109bb565b9695505050505050565b60006020820190508181036000830152610c698184610a34565b905092915050565b60006020820190508181036000830152610c8a81610a6d565b9050919050565b60006020820190508181036000830152610caa81610a90565b9050919050565b60006020820190508181036000830152610cca81610ab3565b9050919050565b6000610cdb610cec565b9050610ce78282610ebe565b919050565b6000604051905090565b600067ffffffffffffffff821115610d1157610d10610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d3d57610d3c610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d6957610d68610eef565b5b610d7282610f37565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610e3f82610e52565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610ea9578082015181840152602081019050610e8e565b83811115610eb8576000848401525b50505050565b610ec782610f37565b810181811067ffffffffffffffff82111715610ee657610ee5610eef565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61101881610e34565b811461102357600080fd5b50565b61102f81610e46565b811461103a57600080fd5b50565b61104681610e72565b811461105157600080fd5b5056fea264697066735822122069722b36f6aa512f9b0f76207f5b5cbc4a4f69e9581bf19d4c36cde9ee1c6c3e64736f6c63430008070033"; - -type ReceiverConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReceiverConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Receiver__factory extends ContractFactory { - constructor(...args: ReceiverConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): Receiver { - return super.attach(address) as Receiver; - } - override connect(signer: Signer): Receiver__factory { - return super.connect(signer) as Receiver__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReceiverInterface { - return new utils.Interface(_abi) as ReceiverInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Receiver { - return new Contract(address, _abi, signerOrProvider) as Receiver; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts deleted file mode 100644 index 344afa71..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts +++ /dev/null @@ -1,371 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - TestERC20, - TestERC20Interface, -} from "../../../../contracts/prototypes/evm/TestERC20"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "subtractedValue", - type: "uint256", - }, - ], - name: "decreaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "addedValue", - type: "uint256", - }, - ], - name: "increaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea26469706673582212203c8c0934d33c58546e4ab2e4e41476df7926eae7ae1412541fc4d914f04b2c8364736f6c63430008070033"; - -type TestERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TestERC20__factory extends ContractFactory { - constructor(...args: TestERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name: PromiseOrValue, - symbol: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(name, symbol, overrides || {}) as Promise; - } - override getDeployTransaction( - name: PromiseOrValue, - symbol: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(name, symbol, overrides || {}); - } - override attach(address: string): TestERC20 { - return super.attach(address) as TestERC20; - } - override connect(signer: Signer): TestERC20__factory { - return super.connect(signer) as TestERC20__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestERC20Interface { - return new utils.Interface(_abi) as TestERC20Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TestERC20 { - return new Contract(address, _abi, signerOrProvider) as TestERC20; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts deleted file mode 100644 index e0e2a177..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ZetaConnectorNative, - ZetaConnectorNativeInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNative"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "receiveTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033"; - -type ZetaConnectorNativeConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorNativeConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorNative__factory extends ContractFactory { - constructor(...args: ZetaConnectorNativeConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _zetaToken, - _tssAddress, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - _gateway, - _zetaToken, - _tssAddress, - overrides || {} - ); - } - override attach(address: string): ZetaConnectorNative { - return super.attach(address) as ZetaConnectorNative; - } - override connect(signer: Signer): ZetaConnectorNative__factory { - return super.connect(signer) as ZetaConnectorNative__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorNativeInterface { - return new utils.Interface(_abi) as ZetaConnectorNativeInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNative { - return new Contract(address, _abi, signerOrProvider) as ZetaConnectorNative; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts deleted file mode 100644 index 1a3db640..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewBase__factory.ts +++ /dev/null @@ -1,240 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZetaConnectorNewBase, - ZetaConnectorNewBaseInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNewBase"; - -const _abi = [ - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "receiveTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class ZetaConnectorNewBase__factory { - static readonly abi = _abi; - static createInterface(): ZetaConnectorNewBaseInterface { - return new utils.Interface(_abi) as ZetaConnectorNewBaseInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNewBase { - return new Contract( - address, - _abi, - signerOrProvider - ) as ZetaConnectorNewBase; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts deleted file mode 100644 index 87da7e03..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewEth__factory.ts +++ /dev/null @@ -1,226 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ZetaConnectorNewEth, - ZetaConnectorNewEthInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNewEth"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "receiveTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620011f8380380620011f8833981810160405281019062000037919062000170565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a95750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506200020a565b6000815190506200016a81620001f0565b92915050565b600080604083850312156200018a5762000189620001eb565b5b60006200019a8582860162000159565b9250506020620001ad8582860162000159565b9150509250929050565b6000620001c482620001cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001fb81620001b7565b81146200020757600080fd5b50565b60805160601c60a05160601c610f996200025f6000396000818160fb015281816101c00152818161021101528181610293015261037901526000818161019c015281816101ef01526102570152610f996000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063106e62901461005c578063116191b61461007857806321e093b1146100965780635e3e9fef146100b4578063743e0c9b146100d0575b600080fd5b61007660048036038101906100719190610871565b6100ec565b005b61008061019a565b60405161008d9190610bd6565b60405180910390f35b61009e6101be565b6040516100ab9190610b0d565b60405180910390f35b6100ce60048036038101906100c991906108c4565b6101e2565b005b6100ea60048036038101906100e59190610979565b610369565b005b6100f46103c9565b61013f83837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104199092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516101859190610c93565b60405180910390a261019561049f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6101ea6103c9565b6102557f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104199092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102d6959493929190610b5f565b600060405180830381600087803b1580156102f057600080fd5b505af1158015610304573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161035293929190610cae565b60405180910390a261036261049f565b5050505050565b6103716103c9565b6103be3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104a9909392919063ffffffff16565b6103c661049f565b50565b6002600054141561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690610c73565b60405180910390fd5b6002600081905550565b61049a8363a9059cbb60e01b8484604051602401610438929190610bad565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610532565b505050565b6001600081905550565b61052c846323b872dd60e01b8585856040516024016104ca93929190610b28565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610532565b50505050565b6000610594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105f99092919063ffffffff16565b90506000815111156105f457808060200190518101906105b4919061094c565b6105f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ea90610c53565b60405180910390fd5b5b505050565b60606106088484600085610611565b90509392505050565b606082471015610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d90610c13565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161067f9190610af6565b60006040518083038185875af1925050503d80600081146106bc576040519150601f19603f3d011682016040523d82523d6000602084013e6106c1565b606091505b50915091506106d2878383876106de565b92505050949350505050565b6060831561074157600083511415610739576106f985610754565b610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90610c33565b60405180910390fd5b5b82905061074c565b61074b8383610777565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561078a5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be9190610bf1565b60405180910390fd5b6000813590506107d681610f07565b92915050565b6000815190506107eb81610f1e565b92915050565b60008135905061080081610f35565b92915050565b60008083601f84011261081c5761081b610df2565b5b8235905067ffffffffffffffff81111561083957610838610ded565b5b60208301915083600182028301111561085557610854610df7565b5b9250929050565b60008135905061086b81610f4c565b92915050565b60008060006060848603121561088a57610889610e01565b5b6000610898868287016107c7565b93505060206108a98682870161085c565b92505060406108ba868287016107f1565b9150509250925092565b6000806000806000608086880312156108e0576108df610e01565b5b60006108ee888289016107c7565b95505060206108ff8882890161085c565b945050604086013567ffffffffffffffff8111156109205761091f610dfc565b5b61092c88828901610806565b9350935050606061093f888289016107f1565b9150509295509295909350565b60006020828403121561096257610961610e01565b5b6000610970848285016107dc565b91505092915050565b60006020828403121561098f5761098e610e01565b5b600061099d8482850161085c565b91505092915050565b6109af81610d23565b82525050565b60006109c18385610cf6565b93506109ce838584610dab565b6109d783610e06565b840190509392505050565b60006109ed82610ce0565b6109f78185610d07565b9350610a07818560208601610dba565b80840191505092915050565b610a1c81610d75565b82525050565b6000610a2d82610ceb565b610a378185610d12565b9350610a47818560208601610dba565b610a5081610e06565b840191505092915050565b6000610a68602683610d12565b9150610a7382610e17565b604082019050919050565b6000610a8b601d83610d12565b9150610a9682610e66565b602082019050919050565b6000610aae602a83610d12565b9150610ab982610e8f565b604082019050919050565b6000610ad1601f83610d12565b9150610adc82610ede565b602082019050919050565b610af081610d6b565b82525050565b6000610b0282846109e2565b915081905092915050565b6000602082019050610b2260008301846109a6565b92915050565b6000606082019050610b3d60008301866109a6565b610b4a60208301856109a6565b610b576040830184610ae7565b949350505050565b6000608082019050610b7460008301886109a6565b610b8160208301876109a6565b610b8e6040830186610ae7565b8181036060830152610ba18184866109b5565b90509695505050505050565b6000604082019050610bc260008301856109a6565b610bcf6020830184610ae7565b9392505050565b6000602082019050610beb6000830184610a13565b92915050565b60006020820190508181036000830152610c0b8184610a22565b905092915050565b60006020820190508181036000830152610c2c81610a5b565b9050919050565b60006020820190508181036000830152610c4c81610a7e565b9050919050565b60006020820190508181036000830152610c6c81610aa1565b9050919050565b60006020820190508181036000830152610c8c81610ac4565b9050919050565b6000602082019050610ca86000830184610ae7565b92915050565b6000604082019050610cc36000830186610ae7565b8181036020830152610cd68184866109b5565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d2e82610d4b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d8082610d87565b9050919050565b6000610d9282610d99565b9050919050565b6000610da482610d4b565b9050919050565b82818337600083830152505050565b60005b83811015610dd8578082015181840152602081019050610dbd565b83811115610de7576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610f1081610d23565b8114610f1b57600080fd5b50565b610f2781610d35565b8114610f3257600080fd5b50565b610f3e81610d41565b8114610f4957600080fd5b50565b610f5581610d6b565b8114610f6057600080fd5b5056fea264697066735822122091075d1eeef27fe44b0eaedb3337a61ceaeefaf51461670f2fbf1bc67c152e6064736f6c63430008070033"; - -type ZetaConnectorNewEthConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorNewEthConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorNewEth__factory extends ContractFactory { - constructor(...args: ZetaConnectorNewEthConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _zetaToken, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, _zetaToken, overrides || {}); - } - override attach(address: string): ZetaConnectorNewEth { - return super.attach(address) as ZetaConnectorNewEth; - } - override connect(signer: Signer): ZetaConnectorNewEth__factory { - return super.connect(signer) as ZetaConnectorNewEth__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorNewEthInterface { - return new utils.Interface(_abi) as ZetaConnectorNewEthInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNewEth { - return new Contract(address, _abi, signerOrProvider) as ZetaConnectorNewEth; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts deleted file mode 100644 index 58920e9b..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNewNonEth__factory.ts +++ /dev/null @@ -1,230 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ZetaConnectorNewNonEth, - ZetaConnectorNewNonEthInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNewNonEth"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "receiveTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c060405234801561001057600080fd5b50604051610c18380380610c1883398181016040528101906100329190610166565b81816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806100a35750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156100da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050506101f4565b600081519050610160816101dd565b92915050565b6000806040838503121561017d5761017c6101d8565b5b600061018b85828601610151565b925050602061019c85828601610151565b9150509250929050565b60006101b1826101b8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6101e6816101a6565b81146101f157600080fd5b50565b60805160601c60a05160601c6109d06102486000396000818160f601528181610204015281816102300152818161031b01526103f30152600081816101e00152818161026c01526102df01526109d06000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063106e62901461005c578063116191b61461007857806321e093b1146100965780635e3e9fef146100b4578063743e0c9b146100d0575b600080fd5b61007660048036038101906100719190610570565b6100ec565b005b6100806101de565b60405161008d91906107cd565b60405180910390f35b61009e610202565b6040516100ab9190610704565b60405180910390f35b6100ce60048036038101906100c991906105c3565b610226565b005b6100ea60048036038101906100e5919061064b565b6103f1565b005b6100f4610481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161015193929190610796565b600060405180830381600087803b15801561016b57600080fd5b505af115801561017f573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516101c99190610808565b60405180910390a26101d96104d1565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61022e610481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b81526004016102ab93929190610796565b600060405180830381600087803b1580156102c557600080fd5b505af11580156102d9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161035e95949392919061071f565b600060405180830381600087803b15801561037857600080fd5b505af115801561038c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103da93929190610823565b60405180910390a26103ea6104d1565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b815260040161044c92919061076d565b600060405180830381600087803b15801561046657600080fd5b505af115801561047a573d6000803e3d6000fd5b5050505050565b600260005414156104c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104be906107e8565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506104ea81610955565b92915050565b6000813590506104ff8161096c565b92915050565b60008083601f84011261051b5761051a610907565b5b8235905067ffffffffffffffff81111561053857610537610902565b5b6020830191508360018202830111156105545761055361090c565b5b9250929050565b60008135905061056a81610983565b92915050565b60008060006060848603121561058957610588610916565b5b6000610597868287016104db565b93505060206105a88682870161055b565b92505060406105b9868287016104f0565b9150509250925092565b6000806000806000608086880312156105df576105de610916565b5b60006105ed888289016104db565b95505060206105fe8882890161055b565b945050604086013567ffffffffffffffff81111561061f5761061e610911565b5b61062b88828901610505565b9350935050606061063e888289016104f0565b9150509295509295909350565b60006020828403121561066157610660610916565b5b600061066f8482850161055b565b91505092915050565b61068181610877565b82525050565b61069081610889565b82525050565b60006106a28385610855565b93506106af8385846108f3565b6106b88361091b565b840190509392505050565b6106cc816108bd565b82525050565b60006106df601f83610866565b91506106ea8261092c565b602082019050919050565b6106fe816108b3565b82525050565b60006020820190506107196000830184610678565b92915050565b60006080820190506107346000830188610678565b6107416020830187610678565b61074e60408301866106f5565b8181036060830152610761818486610696565b90509695505050505050565b60006040820190506107826000830185610678565b61078f60208301846106f5565b9392505050565b60006060820190506107ab6000830186610678565b6107b860208301856106f5565b6107c56040830184610687565b949350505050565b60006020820190506107e260008301846106c3565b92915050565b60006020820190508181036000830152610801816106d2565b9050919050565b600060208201905061081d60008301846106f5565b92915050565b600060408201905061083860008301866106f5565b818103602083015261084b818486610696565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b600061088282610893565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006108c8826108cf565b9050919050565b60006108da826108e1565b9050919050565b60006108ec82610893565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61095e81610877565b811461096957600080fd5b50565b61097581610889565b811461098057600080fd5b50565b61098c816108b3565b811461099757600080fd5b5056fea2646970667358221220af55d5f61addbf319928a723001d411ec2b726404eeedec369e4d204c7f69a1164736f6c63430008070033"; - -type ZetaConnectorNewNonEthConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorNewNonEthConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorNewNonEth__factory extends ContractFactory { - constructor(...args: ZetaConnectorNewNonEthConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _zetaToken, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, _zetaToken, overrides || {}); - } - override attach(address: string): ZetaConnectorNewNonEth { - return super.attach(address) as ZetaConnectorNewNonEth; - } - override connect(signer: Signer): ZetaConnectorNewNonEth__factory { - return super.connect(signer) as ZetaConnectorNewNonEth__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorNewNonEthInterface { - return new utils.Interface(_abi) as ZetaConnectorNewNonEthInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNewNonEth { - return new Contract( - address, - _abi, - signerOrProvider - ) as ZetaConnectorNewNonEth; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts deleted file mode 100644 index b14f7c62..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNew__factory.ts +++ /dev/null @@ -1,203 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ZetaConnectorNew, - ZetaConnectorNewInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNew"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "contract IERC20", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200103a3803806200103a83398181016040528101906200003791906200016c565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505062000206565b6000815190506200016681620001ec565b92915050565b60008060408385031215620001865762000185620001e7565b5b6000620001968582860162000155565b9250506020620001a98582860162000155565b9150509250929050565b6000620001c082620001c7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001f781620001b3565b81146200020357600080fd5b50565b60805160601c60a05160601c610de7620002536000396000818160f4015281816101760152818161027101526102a201526000818160d20152818161013a015261024d0152610de76000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806302a04c0d14610051578063116191b61461006d57806321e093b11461008b578063f3fef3a3146100a9575b600080fd5b61006b6004803603810190610066919061078a565b6100c5565b005b61007561024b565b6040516100829190610a33565b60405180910390f35b61009361026f565b6040516100a09190610a18565b60405180910390f35b6100c360048036038101906100be919061074a565b610293565b005b6100cd610340565b6101387f0000000000000000000000000000000000000000000000000000000000000000847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103909092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000868686866040518663ffffffff1660e01b81526004016101b99594939291906109a1565b600060405180830381600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced84848460405161023593929190610b0b565b60405180910390a2610245610416565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61029b610340565b6102e682827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103909092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648260405161032c9190610af0565b60405180910390a261033c610416565b5050565b60026000541415610386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037d90610ad0565b60405180910390fd5b6002600081905550565b6104118363a9059cbb60e01b84846040516024016103af9291906109ef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610420565b505050565b6001600081905550565b6000610482826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104e79092919063ffffffff16565b90506000815111156104e257808060200190518101906104a291906107fe565b6104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d890610ab0565b60405180910390fd5b5b505050565b60606104f684846000856104ff565b90509392505050565b606082471015610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053b90610a70565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161056d919061098a565b60006040518083038185875af1925050503d80600081146105aa576040519150601f19603f3d011682016040523d82523d6000602084013e6105af565b606091505b50915091506105c0878383876105cc565b92505050949350505050565b6060831561062f57600083511415610627576105e785610642565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061d90610a90565b60405180910390fd5b5b82905061063a565b6106398383610665565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106785781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac9190610a4e565b60405180910390fd5b6000813590506106c481610d6c565b92915050565b6000815190506106d981610d83565b92915050565b60008083601f8401126106f5576106f4610c57565b5b8235905067ffffffffffffffff81111561071257610711610c52565b5b60208301915083600182028301111561072e5761072d610c5c565b5b9250929050565b60008135905061074481610d9a565b92915050565b6000806040838503121561076157610760610c66565b5b600061076f858286016106b5565b925050602061078085828601610735565b9150509250929050565b600080600080606085870312156107a4576107a3610c66565b5b60006107b2878288016106b5565b94505060206107c387828801610735565b935050604085013567ffffffffffffffff8111156107e4576107e3610c61565b5b6107f0878288016106df565b925092505092959194509250565b60006020828403121561081457610813610c66565b5b6000610822848285016106ca565b91505092915050565b61083481610b80565b82525050565b60006108468385610b53565b9350610853838584610c10565b61085c83610c6b565b840190509392505050565b600061087282610b3d565b61087c8185610b64565b935061088c818560208601610c1f565b80840191505092915050565b6108a181610bc8565b82525050565b6108b081610bda565b82525050565b60006108c182610b48565b6108cb8185610b6f565b93506108db818560208601610c1f565b6108e481610c6b565b840191505092915050565b60006108fc602683610b6f565b915061090782610c7c565b604082019050919050565b600061091f601d83610b6f565b915061092a82610ccb565b602082019050919050565b6000610942602a83610b6f565b915061094d82610cf4565b604082019050919050565b6000610965601f83610b6f565b915061097082610d43565b602082019050919050565b61098481610bbe565b82525050565b60006109968284610867565b915081905092915050565b60006080820190506109b6600083018861082b565b6109c3602083018761082b565b6109d0604083018661097b565b81810360608301526109e381848661083a565b90509695505050505050565b6000604082019050610a04600083018561082b565b610a11602083018461097b565b9392505050565b6000602082019050610a2d6000830184610898565b92915050565b6000602082019050610a4860008301846108a7565b92915050565b60006020820190508181036000830152610a6881846108b6565b905092915050565b60006020820190508181036000830152610a89816108ef565b9050919050565b60006020820190508181036000830152610aa981610912565b9050919050565b60006020820190508181036000830152610ac981610935565b9050919050565b60006020820190508181036000830152610ae981610958565b9050919050565b6000602082019050610b05600083018461097b565b92915050565b6000604082019050610b20600083018661097b565b8181036020830152610b3381848661083a565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610b8b82610b9e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610bd382610bec565b9050919050565b6000610be582610bec565b9050919050565b6000610bf782610bfe565b9050919050565b6000610c0982610b9e565b9050919050565b82818337600083830152505050565b60005b83811015610c3d578082015181840152602081019050610c22565b83811115610c4c576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610d7581610b80565b8114610d8057600080fd5b50565b610d8c81610b92565b8114610d9757600080fd5b50565b610da381610bbe565b8114610dae57600080fd5b5056fea2646970667358221220d14dddafe100dbbc372627ee1d188fb3a3858e5b2f46489e67f1a557d54b3c3764736f6c63430008070033"; - -type ZetaConnectorNewConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorNewConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorNew__factory extends ContractFactory { - constructor(...args: ZetaConnectorNewConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _zetaToken, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, _zetaToken, overrides || {}); - } - override attach(address: string): ZetaConnectorNew { - return super.attach(address) as ZetaConnectorNew; - } - override connect(signer: Signer): ZetaConnectorNew__factory { - return super.connect(signer) as ZetaConnectorNew__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorNewInterface { - return new utils.Interface(_abi) as ZetaConnectorNewInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNew { - return new Contract(address, _abi, signerOrProvider) as ZetaConnectorNew; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts deleted file mode 100644 index e418b28d..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts +++ /dev/null @@ -1,314 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - ZetaConnectorNonNative, - ZetaConnectorNonNativeInterface, -} from "../../../../contracts/prototypes/evm/ZetaConnectorNonNative"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - { - internalType: "address", - name: "_tssAddress", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "Withdraw", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "WithdrawAndRevert", - type: "event", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "contract IGatewayEVM", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "receiveTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tssAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "internalSendHash", - type: "bytes32", - }, - ], - name: "withdrawAndRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620010c3380380620010c38339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c610db66200030d600039600081816101dd015281816102c80152818161042f0152818161053d015281816106160152818161070101526107d90152600081816102190152818161028c015281816105190152818161065201526106c50152610db66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c600480360381019061009791906109a9565b61014c565b005b6100b860048036038101906100b39190610956565b61039e565b005b6100c2610517565b6040516100cf9190610bb3565b60405180910390f35b6100e061053b565b6040516100ed9190610aea565b60405180910390f35b6100fe61055f565b60405161010b9190610aea565b60405180910390f35b61012e600480360381019061012991906109a9565b610585565b005b61014a60048036038101906101459190610a31565b6107d7565b005b610154610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161025893929190610b7c565b600060405180830381600087803b15801561027257600080fd5b505af1158015610286573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161030b959493929190610b05565b600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161038793929190610c09565b60405180910390a26103976108b7565b5050505050565b6103a6610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461042d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b815260040161048a93929190610b7c565b600060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516105029190610bee565b60405180910390a26105126108b7565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61058d610867565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161069193929190610b7c565b600060405180830381600087803b1580156106ab57600080fd5b505af11580156106bf573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610744959493929190610b05565b600060405180830381600087803b15801561075e57600080fd5b505af1158015610772573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516107c093929190610c09565b60405180910390a26107d06108b7565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610832929190610b53565b600060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b5050505050565b600260005414156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490610bce565b60405180910390fd5b6002600081905550565b6001600081905550565b6000813590506108d081610d3b565b92915050565b6000813590506108e581610d52565b92915050565b60008083601f84011261090157610900610ced565b5b8235905067ffffffffffffffff81111561091e5761091d610ce8565b5b60208301915083600182028301111561093a57610939610cf2565b5b9250929050565b60008135905061095081610d69565b92915050565b60008060006060848603121561096f5761096e610cfc565b5b600061097d868287016108c1565b935050602061098e86828701610941565b925050604061099f868287016108d6565b9150509250925092565b6000806000806000608086880312156109c5576109c4610cfc565b5b60006109d3888289016108c1565b95505060206109e488828901610941565b945050604086013567ffffffffffffffff811115610a0557610a04610cf7565b5b610a11888289016108eb565b93509350506060610a24888289016108d6565b9150509295509295909350565b600060208284031215610a4757610a46610cfc565b5b6000610a5584828501610941565b91505092915050565b610a6781610c5d565b82525050565b610a7681610c6f565b82525050565b6000610a888385610c3b565b9350610a95838584610cd9565b610a9e83610d01565b840190509392505050565b610ab281610ca3565b82525050565b6000610ac5601f83610c4c565b9150610ad082610d12565b602082019050919050565b610ae481610c99565b82525050565b6000602082019050610aff6000830184610a5e565b92915050565b6000608082019050610b1a6000830188610a5e565b610b276020830187610a5e565b610b346040830186610adb565b8181036060830152610b47818486610a7c565b90509695505050505050565b6000604082019050610b686000830185610a5e565b610b756020830184610adb565b9392505050565b6000606082019050610b916000830186610a5e565b610b9e6020830185610adb565b610bab6040830184610a6d565b949350505050565b6000602082019050610bc86000830184610aa9565b92915050565b60006020820190508181036000830152610be781610ab8565b9050919050565b6000602082019050610c036000830184610adb565b92915050565b6000604082019050610c1e6000830186610adb565b8181036020830152610c31818486610a7c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610c6882610c79565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cae82610cb5565b9050919050565b6000610cc082610cc7565b9050919050565b6000610cd282610c79565b9050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610d4481610c5d565b8114610d4f57600080fd5b50565b610d5b81610c6f565b8114610d6657600080fd5b50565b610d7281610c99565b8114610d7d57600080fd5b5056fea26469706673582212209d543e668c793d4944964e21ce09680a6432aef47847a599106ee141e7a8a01264736f6c63430008070033"; - -type ZetaConnectorNonNativeConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorNonNativeConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorNonNative__factory extends ContractFactory { - constructor(...args: ZetaConnectorNonNativeConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - _gateway, - _zetaToken, - _tssAddress, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - _zetaToken: PromiseOrValue, - _tssAddress: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - _gateway, - _zetaToken, - _tssAddress, - overrides || {} - ); - } - override attach(address: string): ZetaConnectorNonNative { - return super.attach(address) as ZetaConnectorNonNative; - } - override connect(signer: Signer): ZetaConnectorNonNative__factory { - return super.connect(signer) as ZetaConnectorNonNative__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorNonNativeInterface { - return new utils.Interface(_abi) as ZetaConnectorNonNativeInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorNonNative { - return new Contract( - address, - _abi, - signerOrProvider - ) as ZetaConnectorNonNative; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/index.ts deleted file mode 100644 index 8daa7b8c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; -export * as iGatewayEvmSol from "./IGatewayEVM.sol"; -export * as iReceiverEvmSol from "./IReceiverEVM.sol"; -export * as iZetaConnectorSol from "./IZetaConnector.sol"; -export { ERC20CustodyNew__factory } from "./ERC20CustodyNew__factory"; -export { GatewayEVM__factory } from "./GatewayEVM__factory"; -export { GatewayEVMUpgradeTest__factory } from "./GatewayEVMUpgradeTest__factory"; -export { IZetaNonEthNew__factory } from "./IZetaNonEthNew__factory"; -export { ReceiverEVM__factory } from "./ReceiverEVM__factory"; -export { TestERC20__factory } from "./TestERC20__factory"; -export { ZetaConnectorNative__factory } from "./ZetaConnectorNative__factory"; -export { ZetaConnectorNewBase__factory } from "./ZetaConnectorNewBase__factory"; -export { ZetaConnectorNonNative__factory } from "./ZetaConnectorNonNative__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts deleted file mode 100644 index 72c92896..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors__factory.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVMErrors, - IGatewayEVMErrorsInterface, -} from "../../../../../contracts/prototypes/evm/interfaces.sol/IGatewayEVMErrors"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, -] as const; - -export class IGatewayEVMErrors__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMErrorsInterface { - return new utils.Interface(_abi) as IGatewayEVMErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVMErrors { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVMErrors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts deleted file mode 100644 index 7d100484..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents__factory.ts +++ /dev/null @@ -1,200 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVMEvents, - IGatewayEVMEventsInterface, -} from "../../../../../contracts/prototypes/evm/interfaces.sol/IGatewayEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, -] as const; - -export class IGatewayEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMEventsInterface { - return new utils.Interface(_abi) as IGatewayEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts deleted file mode 100644 index 83f8069c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGatewayEVM__factory.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayEVM, - IGatewayEVMInterface, -} from "../../../../../contracts/prototypes/evm/interfaces.sol/IGatewayEVM"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "revertWithERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGatewayEVM__factory { - static readonly abi = _abi; - static createInterface(): IGatewayEVMInterface { - return new utils.Interface(_abi) as IGatewayEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayEVM { - return new Contract(address, _abi, signerOrProvider) as IGatewayEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts deleted file mode 100644 index e612fd3e..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IGateway__factory.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGateway, - IGatewayInterface, -} from "../../../../../contracts/prototypes/evm/interfaces.sol/IGateway"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "send", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "recipient", - type: "bytes", - }, - { - internalType: "address", - name: "asset", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "sendERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGateway__factory { - static readonly abi = _abi; - static createInterface(): IGatewayInterface { - return new utils.Interface(_abi) as IGatewayInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGateway { - return new Contract(address, _abi, signerOrProvider) as IGateway; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts deleted file mode 100644 index 9f9d68c4..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents__factory.ts +++ /dev/null @@ -1,138 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IReceiverEVMEvents, - IReceiverEVMEventsInterface, -} from "../../../../../contracts/prototypes/evm/interfaces.sol/IReceiverEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, -] as const; - -export class IReceiverEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IReceiverEVMEventsInterface { - return new utils.Interface(_abi) as IReceiverEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IReceiverEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IReceiverEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts deleted file mode 100644 index 0f9f3b51..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/evm/interfaces.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IGatewayEVM__factory } from "./IGatewayEVM__factory"; -export { IGatewayEVMErrors__factory } from "./IGatewayEVMErrors__factory"; -export { IGatewayEVMEvents__factory } from "./IGatewayEVMEvents__factory"; -export { IReceiverEVMEvents__factory } from "./IReceiverEVMEvents__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/index.ts b/v1/typechain-types/factories/contracts/prototypes/index.ts deleted file mode 100644 index 33289123..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as evm from "./evm"; -export * as zevm from "./zevm"; diff --git a/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts b/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts deleted file mode 100644 index 20c69449..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/IGateway__factory.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGateway, - IGatewayInterface, -} from "../../../../contracts/prototypes/interfaces.sol/IGateway"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "destination", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "execute", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "executeWithERC20", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGateway__factory { - static readonly abi = _abi; - static createInterface(): IGatewayInterface { - return new utils.Interface(_abi) as IGatewayInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGateway { - return new Contract(address, _abi, signerOrProvider) as IGateway; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts deleted file mode 100644 index d3a5c88a..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/interfaces.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IGateway__factory } from "./IGateway__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts deleted file mode 100644 index fc0a9953..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest__factory.ts +++ /dev/null @@ -1,970 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayEVMInboundTest, - GatewayEVMInboundTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMInboundTest"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testCallWithPayload", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testDepositERC20ToCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testDepositERC20ToCustodyWithPayload", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testDepositEthToTss", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testDepositEthToTssWithPayload", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testFailDepositERC20ToCustodyIfAmountIs0", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testFailDepositEthToTssIfAmountIs0", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testFailDepositEthToTssWithPayloadIfAmountIs0", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff021916908315150217905550620f424060255534801561004d57600080fd5b50619b58806200005e6000396000f3fe60806040523480156200001157600080fd5b5060043610620001605760003560e01c8063916a17c611620000c9578063ba414fa61162000087578063ba414fa614620002eb578063bb93f11e146200030d578063c13d738f1462000319578063e20c9f711462000325578063f96c02df1462000347578063fa7626d414620003535762000160565b8063916a17c6146200026d5780639fd1e597146200028f578063aa030c1c146200029b578063b0464fdc14620002a7578063b5508aa914620002c95762000160565b806330f7c04f116200012357806330f7c04f14620001cd5780633e5e3c2314620001d95780633f7286f414620001fb5780636459542a146200021d57806366d9a9a0146200022957806385226c81146200024b5762000160565b806306978ca314620001655780630724d8e314620001715780630a9254e4146200017d5780631ed7831c14620001895780632ade388014620001ab575b600080fd5b6200016f62000375565b005b6200017b620004be565b005b6200018762000780565b005b6200019362000be4565b604051620001a29190620039be565b60405180910390f35b620001b562000c74565b604051620001c4919062003a2a565b60405180910390f35b620001d762000e0e565b005b620001e3620014ce565b604051620001f29190620039be565b60405180910390f35b620002056200155e565b604051620002149190620039be565b60405180910390f35b62000227620015ee565b005b6200023362001bf3565b60405162000242919062003a06565b60405180910390f35b6200025562001d8a565b604051620002649190620039e2565b60405180910390f35b6200027762001e6d565b60405162000286919062003a4e565b60405180910390f35b6200029962001fc0565b005b620002a56200233d565b005b620002b162002614565b604051620002c0919062003a4e565b60405180910390f35b620002d362002767565b604051620002e29190620039e2565b60405180910390f35b620002f56200284a565b60405162000304919062003a72565b60405180910390f35b620003176200297d565b005b6200032362002ba3565b005b6200032f62002da4565b6040516200033e9190620039be565b60405180910390f35b6200035162002e34565b005b6200035d6200307a565b6040516200036c919062003a72565b60405180910390f35b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb36040518163ffffffff1660e01b8152600401620003d39062003b69565b600060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000487919062003882565b6000604051808303818588803b158015620004a157600080fd5b505af1158015620004b6573d6000803e3d6000fd5b505050505050565b6000620186a090506000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200058e95949392919062003a8f565b600060405180830381600087803b158015620005a957600080fd5b505af1158015620005be573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48460006040516200066892919062003bcf565b60405180910390a3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0183602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620006f0919062003882565b6000604051808303818588803b1580156200070a57600080fd5b505af11580156200071f573d6000803e3d6000fd5b50505050506000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163190506200077b838362000774919062003dee565b826200308d565b505050565b30602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615678602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620008559062003123565b620008609062003b32565b604051809103906000f0801580156200087d573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620008cc9062003131565b604051809103906000f080158015620008e9573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200095b906200313f565b62000967919062003882565b604051809103906000f08015801562000984573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4d66de8602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000a44919062003882565b600060405180830381600087803b15801562000a5f57600080fd5b505af115801562000a74573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000af7919062003882565b600060405180830381600087803b15801562000b1257600080fd5b505af115801562000b27573d6000803e3d6000fd5b50505050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166025546040518363ffffffff1660e01b815260040162000bae92919062003900565b600060405180830381600087803b15801562000bc957600080fd5b505af115801562000bde573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000c6a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000c1f575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000e0557838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101562000ded57838290600052602060002001805462000d599062003f3c565b80601f016020809104026020016040519081016040528092919081815260200182805462000d879062003f3c565b801562000dd85780601f1062000dac5761010080835404028352916020019162000dd8565b820191906000526020600020905b81548152906001019060200180831162000dba57829003601f168201915b50505050508152602001906001019062000d37565b50505050815250508152602001906001019062000c98565b50505050905090565b6000620186a090506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000e97919062003882565b60206040518083038186803b15801562000eb057600080fd5b505afa15801562000ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eeb9190620031f6565b905062000efa6000826200308d565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160240162000f31919062003882565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016200103192919062003900565b602060405180830381600087803b1580156200104c57600080fd5b505af115801562001061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001087919062003192565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200111295949392919062003a8f565b600060405180830381600087803b1580156200112d57600080fd5b505af115801562001142573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a485602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040516200120f9392919062003b8b565b60405180910390a3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6f037f602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518563ffffffff1660e01b8152600401620012be94939291906200396a565b600060405180830381600087803b158015620012d957600080fd5b505af1158015620012ee573d6000803e3d6000fd5b505050506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001373919062003882565b60206040518083038186803b1580156200138c57600080fd5b505afa158015620013a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013c79190620031f6565b9050620013d584826200308d565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001456919062003882565b60206040518083038186803b1580156200146f57600080fd5b505afa15801562001484573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014aa9190620031f6565b9050620014c785602554620014c0919062003e4b565b826200308d565b5050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156200155457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001509575b5050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620015e457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001599575b5050505050905090565b6000620186a090506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001677919062003882565b60206040518083038186803b1580156200169057600080fd5b505afa158015620016a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cb9190620031f6565b9050620016da6000826200308d565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016200175b92919062003900565b602060405180830381600087803b1580156200177657600080fd5b505af11580156200178b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b1919062003192565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200183c95949392919062003a8f565b600060405180830381600087803b1580156200185757600080fd5b505af11580156200186c573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200193792919062003bcf565b60405180910390a3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f45346dc602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401620019e4939291906200392d565b600060405180830381600087803b158015620019ff57600080fd5b505af115801562001a14573d6000803e3d6000fd5b505050506000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001a99919062003882565b60206040518083038186803b15801562001ab257600080fd5b505afa15801562001ac7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001aed9190620031f6565b905062001afb83826200308d565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001b7c919062003882565b60206040518083038186803b15801562001b9557600080fd5b505afa15801562001baa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bd09190620031f6565b905062001bed8460255462001be6919062003e4b565b826200308d565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001d81578382906000526020600020906002020160405180604001604052908160008201805462001c4d9062003f3c565b80601f016020809104026020016040519081016040528092919081815260200182805462001c7b9062003f3c565b801562001ccc5780601f1062001ca05761010080835404028352916020019162001ccc565b820191906000526020600020905b81548152906001019060200180831162001cae57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001d6857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001d145790505b5050505050815250508152602001906001019062001c17565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001e6457838290600052602060002001805462001dd09062003f3c565b80601f016020809104026020016040519081016040528092919081815260200182805462001dfe9062003f3c565b801562001e4f5780601f1062001e235761010080835404028352916020019162001e4f565b820191906000526020600020905b81548152906001019060200180831162001e3157829003601f168201915b50505050508152602001906001019062001dae565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562001fb757838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180548060200260200160405190810160405280929190818152602001828054801562001f9e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001f4a5790505b5050505050815250508152602001906001019062001e91565b50505050905090565b6000620186a090506000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163190506000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516024016200203d919062003882565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200214695949392919062003a8f565b600060405180830381600087803b1580156200216157600080fd5b505af115801562002176573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a485600085604051620022229392919062003b8b565b60405180910390a3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329c59b5d84602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401620022ac929190620038cc565b6000604051808303818588803b158015620022c657600080fd5b505af1158015620022db573d6000803e3d6000fd5b50505050506000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1631905062002337848462002330919062003dee565b826200308d565b50505050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160240162002374919062003882565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200247d95949392919062003a8f565b600060405180830381600087803b1580156200249857600080fd5b505af1158015620024ad573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38360405162002554919062003aec565b60405180910390a3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b8b921d602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401620025dd929190620038cc565b600060405180830381600087803b158015620025f857600080fd5b505af11580156200260d573d6000803e3d6000fd5b5050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156200275e57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054806020026020016040519081016040528092919081815260200182805480156200274557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620026f15790505b5050505050815250508152602001906001019062002638565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562002841578382906000526020600020018054620027ad9062003f3c565b80601f0160208091040260200160405190810160405280929190818152602001828054620027db9062003f3c565b80156200282c5780601f1062002800576101008083540402835291602001916200282c565b820191906000526020600020905b8154815290600101906020018083116200280e57829003601f168201915b5050505050815260200190600101906200278b565b50505050905090565b6000600860009054906101000a900460ff16156200287a57600860009054906101000a900460ff1690506200297a565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401620029219291906200389f565b60206040518083038186803b1580156200293a57600080fd5b505afa1580156200294f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029759190620031c4565b141590505b90565b600080602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051602401620029b5919062003882565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb36040518163ffffffff1660e01b815260040162002a909062003b10565b600060405180830381600087803b15801562002aab57600080fd5b505af115801562002ac0573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c6f037f602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518563ffffffff1660e01b815260040162002b6b94939291906200396a565b600060405180830381600087803b15801562002b8657600080fd5b505af115801562002b9b573d6000803e3d6000fd5b505050505050565b600080602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160240162002bdb919062003882565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb36040518163ffffffff1660e01b815260040162002cb69062003b69565b600060405180830381600087803b15801562002cd157600080fd5b505af115801562002ce6573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329c59b5d83602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040162002d6c929190620038cc565b6000604051808303818588803b15801562002d8657600080fd5b505af115801562002d9b573d6000803e3d6000fd5b50505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801562002e2a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162002ddf575b5050505050905090565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040162002eb792919062003900565b602060405180830381600087803b15801562002ed257600080fd5b505af115801562002ee7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f0d919062003192565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f28dceb36040518163ffffffff1660e01b815260040162002f6a9062003b10565b600060405180830381600087803b15801562002f8557600080fd5b505af115801562002f9a573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f45346dc602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b815260040162003043939291906200392d565b600060405180830381600087803b1580156200305e57600080fd5b505af115801562003073573d6000803e3d6000fd5b5050505050565b601f60009054906101000a900460ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166398296c5483836040518363ffffffff1660e01b8152600401620030ed92919062003c11565b60006040518083038186803b1580156200310657600080fd5b505afa1580156200311b573d6000803e3d6000fd5b505050505050565b61181380620040dc83390190565b6131a480620058ef83390190565b6110908062008a9383390190565b6000815190506200315e816200408d565b92915050565b6000815190506200317581620040a7565b92915050565b6000815190506200318c81620040c1565b92915050565b600060208284031215620031ab57620031aa62003fd0565b5b6000620031bb848285016200314d565b91505092915050565b600060208284031215620031dd57620031dc62003fd0565b5b6000620031ed8482850162003164565b91505092915050565b6000602082840312156200320f576200320e62003fd0565b5b60006200321f848285016200317b565b91505092915050565b6000620032368383620032b4565b60208301905092915050565b600062003250838362003651565b60208301905092915050565b60006200326a8383620036a3565b905092915050565b6000620032808383620037a7565b905092915050565b6000620032968383620037ef565b905092915050565b6000620032ac838362003830565b905092915050565b620032bf8162003e86565b82525050565b620032d08162003e86565b82525050565b6000620032e38262003c9e565b620032ef818562003d44565b9350620032fc8362003c3e565b8060005b838110156200333357815162003317888262003228565b9750620033248362003cf6565b92505060018101905062003300565b5085935050505092915050565b60006200334d8262003ca9565b62003359818562003d55565b9350620033668362003c4e565b8060005b838110156200339d57815162003381888262003242565b97506200338e8362003d03565b9250506001810190506200336a565b5085935050505092915050565b6000620033b78262003cb4565b620033c3818562003d66565b935083602082028501620033d78562003c5e565b8060005b85811015620034195784840389528151620033f785826200325c565b9450620034048362003d10565b925060208a01995050600181019050620033db565b50829750879550505050505092915050565b6000620034388262003cb4565b62003444818562003d77565b935083602082028501620034588562003c5e565b8060005b858110156200349a57848403895281516200347885826200325c565b9450620034858362003d10565b925060208a019950506001810190506200345c565b50829750879550505050505092915050565b6000620034b98262003cbf565b620034c5818562003d88565b935083602082028501620034d98562003c6e565b8060005b858110156200351b5784840389528151620034f9858262003272565b9450620035068362003d1d565b925060208a01995050600181019050620034dd565b50829750879550505050505092915050565b60006200353a8262003cca565b62003546818562003d99565b9350836020820285016200355a8562003c7e565b8060005b858110156200359c57848403895281516200357a858262003288565b9450620035878362003d2a565b925060208a019950506001810190506200355e565b50829750879550505050505092915050565b6000620035bb8262003cd5565b620035c7818562003daa565b935083602082028501620035db8562003c8e565b8060005b858110156200361d5784840389528151620035fb85826200329e565b9450620036088362003d37565b925060208a01995050600181019050620035df565b50829750879550505050505092915050565b6200363a8162003e9a565b82525050565b6200364b8162003ea6565b82525050565b6200365c8162003eb0565b82525050565b60006200366f8262003ce0565b6200367b818562003dbb565b93506200368d81856020860162003f06565b620036988162003fd5565b840191505092915050565b6000620036b08262003ceb565b620036bc818562003dcc565b9350620036ce81856020860162003f06565b620036d98162003fd5565b840191505092915050565b6000620036f360038362003ddd565b9150620037008262003fe6565b602082019050919050565b60006200371a60178362003dbb565b915062003727826200400f565b602082019050919050565b60006200374160048362003ddd565b91506200374e8262004038565b602082019050919050565b60006200376860008362003dbb565b9150620037758262004061565b600082019050919050565b60006200378f60158362003dbb565b91506200379c8262004064565b602082019050919050565b60006040830160008301518482036000860152620037c68282620036a3565b91505060208301518482036020860152620037e2828262003340565b9150508091505092915050565b6000604083016000830151620038096000860182620032b4565b5060208301518482036020860152620038238282620033aa565b9150508091505092915050565b60006040830160008301516200384a6000860182620032b4565b506020830151848203602086015262003864828262003340565b9150508091505092915050565b6200387c8162003efc565b82525050565b6000602082019050620038996000830184620032c5565b92915050565b6000604082019050620038b66000830185620032c5565b620038c5602083018462003640565b9392505050565b6000604082019050620038e36000830185620032c5565b8181036020830152620038f7818462003662565b90509392505050565b6000604082019050620039176000830185620032c5565b62003926602083018462003871565b9392505050565b6000606082019050620039446000830186620032c5565b62003953602083018562003871565b620039626040830184620032c5565b949350505050565b6000608082019050620039816000830187620032c5565b62003990602083018662003871565b6200399f6040830185620032c5565b8181036060830152620039b3818462003662565b905095945050505050565b60006020820190508181036000830152620039da8184620032d6565b905092915050565b60006020820190508181036000830152620039fe81846200342b565b905092915050565b6000602082019050818103600083015262003a228184620034ac565b905092915050565b6000602082019050818103600083015262003a4681846200352d565b905092915050565b6000602082019050818103600083015262003a6a8184620035ae565b905092915050565b600060208201905062003a8960008301846200362f565b92915050565b600060a08201905062003aa660008301886200362f565b62003ab560208301876200362f565b62003ac460408301866200362f565b62003ad360608301856200362f565b62003ae26080830184620032c5565b9695505050505050565b6000602082019050818103600083015262003b08818462003662565b905092915050565b6000602082019050818103600083015262003b2b816200370b565b9050919050565b6000604082019050818103600083015262003b4d8162003732565b9050818103602083015262003b6281620036e4565b9050919050565b6000602082019050818103600083015262003b848162003780565b9050919050565b600060608201905062003ba2600083018662003871565b62003bb16020830185620032c5565b818103604083015262003bc5818462003662565b9050949350505050565b600060608201905062003be6600083018562003871565b62003bf56020830184620032c5565b818103604083015262003c088162003759565b90509392505050565b600060408201905062003c28600083018562003871565b62003c37602083018462003871565b9392505050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600062003dfb8262003efc565b915062003e088362003efc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562003e405762003e3f62003f72565b5b828201905092915050565b600062003e588262003efc565b915062003e658362003efc565b92508282101562003e7b5762003e7a62003f72565b5b828203905092915050565b600062003e938262003edc565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562003f2657808201518184015260208101905062003f09565b8381111562003f36576000848401525b50505050565b6000600282049050600182168062003f5557607f821691505b6020821081141562003f6c5762003f6b62003fa1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f54544b0000000000000000000000000000000000000000000000000000000000600082015250565b7f496e73756666696369656e744552433230416d6f756e74000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b50565b7f496e73756666696369656e74455448416d6f756e740000000000000000000000600082015250565b620040988162003e9a565b8114620040a457600080fd5b50565b620040b28162003ea6565b8114620040be57600080fd5b50565b620040cc8162003efc565b8114620040d857600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613123610081600039600081816105fc0152818161068b01528181610785015281816108140152610bae01526131236000f3fe6080604052600436106100fe5760003560e01c8063715018a611610095578063c4d66de811610064578063c4d66de8146102e4578063dda79b751461030d578063f2fde38b14610338578063f340fa0114610361578063f45346dc1461037d576100fe565b8063715018a6146102505780638c6f037f146102675780638da5cb5b14610290578063ae7a3a6f146102bb576100fe565b80634f1ef286116100d15780634f1ef286146101a15780635131ab59146101bd57806352d1902d146101fa5780635b11259114610225576100fe565b80631b8b921d146101035780631cff79cd1461012c57806329c59b5d1461015c5780633659cfe614610178575b600080fd5b34801561010f57600080fd5b5061012a60048036038101906101259190612183565b6103a6565b005b61014660048036038101906101419190612183565b610412565b6040516101539190612816565b60405180910390f35b61017660048036038101906101719190612183565b610480565b005b34801561018457600080fd5b5061019f600480360381019061019a91906120ce565b6105fa565b005b6101bb60048036038101906101b691906121e3565b610783565b005b3480156101c957600080fd5b506101e460048036038101906101df91906120fb565b6108c0565b6040516101f19190612816565b60405180910390f35b34801561020657600080fd5b5061020f610baa565b60405161021c91906127d7565b60405180910390f35b34801561023157600080fd5b5061023a610c63565b6040516102479190612733565b60405180910390f35b34801561025c57600080fd5b50610265610c89565b005b34801561027357600080fd5b5061028e60048036038101906102899190612292565b610c9d565b005b34801561029c57600080fd5b506102a5610d99565b6040516102b29190612733565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906120ce565b610dc3565b005b3480156102f057600080fd5b5061030b600480360381019061030691906120ce565b610e8f565b005b34801561031957600080fd5b5061032261107e565b60405161032f9190612733565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906120ce565b6110a4565b005b61037b600480360381019061037691906120ce565b611128565b005b34801561038957600080fd5b506103a4600480360381019061039f919061223f565b61129c565b005b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516104059291906127f2565b60405180910390a3505050565b60606000610421858585611392565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161046d93929190612a91565b60405180910390a2809150509392505050565b60003414156104bb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516105039061271e565b60006040518083038185875af1925050503d8060008114610540576040519150601f19603f3d011682016040523d82523d6000602084013e610545565b606091505b50509050600015158115151415610588576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516105ec9493929190612a15565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106c8611449565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906128b5565b60405180910390fd5b610727816114a0565b61078081600067ffffffffffffffff81111561074657610745612c52565b5b6040519080825280601f01601f1916602001820160405280156107785781602001600182028036833780820191505090505b5060006114ab565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610851611449565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906128b5565b60405180910390fd5b6108b0826114a0565b6108bc828260016114ab565b5050565b606060008414156108fd576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109078686611628565b61093d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016109789291906127ae565b602060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca919061231a565b610a00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0d868585611392565b9050610a198787611628565b610a4f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a8a9190612733565b60206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190612374565b90506000811115610b3357610b3260c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828a73ffffffffffffffffffffffffffffffffffffffff166116c09092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610b9493929190612a91565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906128f5565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c91611746565b610c9b60006117c4565b565b6000841415610cd8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d273360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868673ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610d8a9493929190612a15565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610ec05750600160008054906101000a900460ff1660ff16105b80610eed5750610ecf30611913565b158015610eec5750600160008054906101000a900460ff1660ff16145b5b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612935565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610f69576001600060016101000a81548160ff0219169083151502179055505b610f71611936565b610f7961198f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561107a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110719190612838565b60405180910390a15b5050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac611746565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612875565b60405180910390fd5b611125816117c4565b50565b6000341415611163576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516111ab9061271e565b60006040518083038185875af1925050503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b50509050600015158115151415611230576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611290929190612a55565b60405180910390a35050565b60008214156112d7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113263360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611385929190612a55565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516113bf9291906126ee565b60006040518083038185875af1925050503d80600081146113fc576040519150601f19603f3d011682016040523d82523d6000602084013e611401565b606091505b50915091508161143d576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006114777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611746565b50565b6114d77f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6119ea565b60000160009054906101000a900460ff16156114fb576114f6836119f4565b611623565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154157600080fd5b505afa92505050801561157257506040513d601f19601f8201168201806040525081019061156f9190612347565b60015b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612955565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90612915565b60405180910390fd5b50611622838383611aad565b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611666929190612785565b602060405180830381600087803b15801561168057600080fd5b505af1158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061231a565b905092915050565b6117418363a9059cbb60e01b84846040516024016116df9291906127ae565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b505050565b61174e611ba0565b73ffffffffffffffffffffffffffffffffffffffff1661176c610d99565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612995565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61190d846323b872dd60e01b8585856040516024016118ab9392919061274e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906129d5565b60405180910390fd5b61198d611ba8565b565b600060019054906101000a900460ff166119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906129d5565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6119fd81611913565b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612975565b60405180910390fd5b80611a697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ab683611c09565b600082511180611ac35750805b15611ad457611ad28383611c58565b505b505050565b6000611b3b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c859092919063ffffffff16565b9050600081511115611b9b5780806020019051810190611b5b919061231a565b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906129f5565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff16611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906129d5565b60405180910390fd5b611c07611c02611ba0565b6117c4565b565b611c12816119f4565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060611c7d83836040518060600160405280602781526020016130c760279139611c9d565b905092915050565b6060611c948484600085611d23565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611cc79190612707565b600060405180830381855af49150503d8060008114611d02576040519150601f19603f3d011682016040523d82523d6000602084013e611d07565b606091505b5091509150611d1886838387611df0565b925050509392505050565b606082471015611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906128d5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d919190612707565b60006040518083038185875af1925050503d8060008114611dce576040519150601f19603f3d011682016040523d82523d6000602084013e611dd3565b606091505b5091509150611de487838387611e66565b92505050949350505050565b60608315611e5357600083511415611e4b57611e0b85611913565b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906129b5565b60405180910390fd5b5b829050611e5e565b611e5d8383611edc565b5b949350505050565b60608315611ec957600083511415611ec157611e8185611f2c565b611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906129b5565b60405180910390fd5b5b829050611ed4565b611ed38383611f4f565b5b949350505050565b600082511115611eef5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239190612853565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611f625781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f969190612853565b60405180910390fd5b6000611fb2611fad84612ae8565b612ac3565b905082815260208101848484011115611fce57611fcd612c90565b5b611fd9848285612bdf565b509392505050565b600081359050611ff08161306a565b92915050565b60008151905061200581613081565b92915050565b60008151905061201a81613098565b92915050565b60008083601f84011261203657612035612c86565b5b8235905067ffffffffffffffff81111561205357612052612c81565b5b60208301915083600182028301111561206f5761206e612c8b565b5b9250929050565b600082601f83011261208b5761208a612c86565b5b813561209b848260208601611f9f565b91505092915050565b6000813590506120b3816130af565b92915050565b6000815190506120c8816130af565b92915050565b6000602082840312156120e4576120e3612c9a565b5b60006120f284828501611fe1565b91505092915050565b60008060008060006080868803121561211757612116612c9a565b5b600061212588828901611fe1565b955050602061213688828901611fe1565b9450506040612147888289016120a4565b935050606086013567ffffffffffffffff81111561216857612167612c95565b5b61217488828901612020565b92509250509295509295909350565b60008060006040848603121561219c5761219b612c9a565b5b60006121aa86828701611fe1565b935050602084013567ffffffffffffffff8111156121cb576121ca612c95565b5b6121d786828701612020565b92509250509250925092565b600080604083850312156121fa576121f9612c9a565b5b600061220885828601611fe1565b925050602083013567ffffffffffffffff81111561222957612228612c95565b5b61223585828601612076565b9150509250929050565b60008060006060848603121561225857612257612c9a565b5b600061226686828701611fe1565b9350506020612277868287016120a4565b925050604061228886828701611fe1565b9150509250925092565b6000806000806000608086880312156122ae576122ad612c9a565b5b60006122bc88828901611fe1565b95505060206122cd888289016120a4565b94505060406122de88828901611fe1565b935050606086013567ffffffffffffffff8111156122ff576122fe612c95565b5b61230b88828901612020565b92509250509295509295909350565b6000602082840312156123305761232f612c9a565b5b600061233e84828501611ff6565b91505092915050565b60006020828403121561235d5761235c612c9a565b5b600061236b8482850161200b565b91505092915050565b60006020828403121561238a57612389612c9a565b5b6000612398848285016120b9565b91505092915050565b6123aa81612b5c565b82525050565b6123b981612b7a565b82525050565b60006123cb8385612b2f565b93506123d8838584612bdf565b6123e183612c9f565b840190509392505050565b60006123f88385612b40565b9350612405838584612bdf565b82840190509392505050565b600061241c82612b19565b6124268185612b2f565b9350612436818560208601612bee565b61243f81612c9f565b840191505092915050565b600061245582612b19565b61245f8185612b40565b935061246f818560208601612bee565b80840191505092915050565b61248481612bbb565b82525050565b61249381612bcd565b82525050565b60006124a482612b24565b6124ae8185612b4b565b93506124be818560208601612bee565b6124c781612c9f565b840191505092915050565b60006124df602683612b4b565b91506124ea82612cb0565b604082019050919050565b6000612502602c83612b4b565b915061250d82612cff565b604082019050919050565b6000612525602c83612b4b565b915061253082612d4e565b604082019050919050565b6000612548602683612b4b565b915061255382612d9d565b604082019050919050565b600061256b603883612b4b565b915061257682612dec565b604082019050919050565b600061258e602983612b4b565b915061259982612e3b565b604082019050919050565b60006125b1602e83612b4b565b91506125bc82612e8a565b604082019050919050565b60006125d4602e83612b4b565b91506125df82612ed9565b604082019050919050565b60006125f7602d83612b4b565b915061260282612f28565b604082019050919050565b600061261a602083612b4b565b915061262582612f77565b602082019050919050565b600061263d600083612b2f565b915061264882612fa0565b600082019050919050565b6000612660600083612b40565b915061266b82612fa0565b600082019050919050565b6000612683601d83612b4b565b915061268e82612fa3565b602082019050919050565b60006126a6602b83612b4b565b91506126b182612fcc565b604082019050919050565b60006126c9602a83612b4b565b91506126d48261301b565b604082019050919050565b6126e881612ba4565b82525050565b60006126fb8284866123ec565b91508190509392505050565b6000612713828461244a565b915081905092915050565b600061272982612653565b9150819050919050565b600060208201905061274860008301846123a1565b92915050565b600060608201905061276360008301866123a1565b61277060208301856123a1565b61277d60408301846126df565b949350505050565b600060408201905061279a60008301856123a1565b6127a7602083018461247b565b9392505050565b60006040820190506127c360008301856123a1565b6127d060208301846126df565b9392505050565b60006020820190506127ec60008301846123b0565b92915050565b6000602082019050818103600083015261280d8184866123bf565b90509392505050565b600060208201905081810360008301526128308184612411565b905092915050565b600060208201905061284d600083018461248a565b92915050565b6000602082019050818103600083015261286d8184612499565b905092915050565b6000602082019050818103600083015261288e816124d2565b9050919050565b600060208201905081810360008301526128ae816124f5565b9050919050565b600060208201905081810360008301526128ce81612518565b9050919050565b600060208201905081810360008301526128ee8161253b565b9050919050565b6000602082019050818103600083015261290e8161255e565b9050919050565b6000602082019050818103600083015261292e81612581565b9050919050565b6000602082019050818103600083015261294e816125a4565b9050919050565b6000602082019050818103600083015261296e816125c7565b9050919050565b6000602082019050818103600083015261298e816125ea565b9050919050565b600060208201905081810360008301526129ae8161260d565b9050919050565b600060208201905081810360008301526129ce81612676565b9050919050565b600060208201905081810360008301526129ee81612699565b9050919050565b60006020820190508181036000830152612a0e816126bc565b9050919050565b6000606082019050612a2a60008301876126df565b612a3760208301866123a1565b8181036040830152612a4a8184866123bf565b905095945050505050565b6000606082019050612a6a60008301856126df565b612a7760208301846123a1565b8181036040830152612a8881612630565b90509392505050565b6000604082019050612aa660008301866126df565b8181036020830152612ab98184866123bf565b9050949350505050565b6000612acd612ade565b9050612ad98282612c21565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0357612b02612c52565b5b612b0c82612c9f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b6782612b84565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612bc682612ba4565b9050919050565b6000612bd882612bae565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612c9f565b810181811067ffffffffffffffff82111715612c4957612c48612c52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61307381612b5c565b811461307e57600080fd5b50565b61308a81612b6e565b811461309557600080fd5b50565b6130a181612b7a565b81146130ac57600080fd5b50565b6130b881612ba4565b81146130c357600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bda16da68115d43d899e50b7ec6d5a336fd24cf187474373ee646397da0aedcc64736f6c6343000807003360806040523480156200001157600080fd5b506040516200109038038062001090833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ef5806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b9190610a98565b60405180910390f35b61007e600480360381019061007991906107bc565b6100c2565b005b61009a60048036038101906100959190610769565b61024a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ca6102ef565b610117600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b815260040161017a959493929190610a21565b600060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101d19190610871565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023393929190610b70565b60405180910390a36102436103c5565b5050505050565b6102526102ef565b61027d82828573ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516102da9190610b55565b60405180910390a36102ea6103c5565b505050565b60026000541415610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610b35565b60405180910390fd5b6002600081905550565b6103c08363a9059cbb60e01b848460405160240161035e929190610a6f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103cf565b505050565b6001600081905550565b6000610431826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104969092919063ffffffff16565b905060008151111561049157808060200190518101906104519190610844565b610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b15565b60405180910390fd5b5b505050565b60606104a584846000856104ae565b90509392505050565b6060824710156104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ea90610ad5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161051c9190610a0a565b60006040518083038185875af1925050503d8060008114610559576040519150601f19603f3d011682016040523d82523d6000602084013e61055e565b606091505b509150915061056f8783838761057b565b92505050949350505050565b606083156105de576000835114156105d657610596856105f1565b6105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cc90610af5565b60405180910390fd5b5b8290506105e9565b6105e88383610614565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106275781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065b9190610ab3565b60405180910390fd5b600061067761067284610bc7565b610ba2565b90508281526020810184848401111561069357610692610d6a565b5b61069e848285610cc8565b509392505050565b6000813590506106b581610e7a565b92915050565b6000815190506106ca81610e91565b92915050565b60008083601f8401126106e6576106e5610d60565b5b8235905067ffffffffffffffff81111561070357610702610d5b565b5b60208301915083600182028301111561071f5761071e610d65565b5b9250929050565b600082601f83011261073b5761073a610d60565b5b815161074b848260208601610664565b91505092915050565b60008135905061076381610ea8565b92915050565b60008060006060848603121561078257610781610d74565b5b6000610790868287016106a6565b93505060206107a1868287016106a6565b92505060406107b286828701610754565b9150509250925092565b6000806000806000608086880312156107d8576107d7610d74565b5b60006107e6888289016106a6565b95505060206107f7888289016106a6565b945050604061080888828901610754565b935050606086013567ffffffffffffffff81111561082957610828610d6f565b5b610835888289016106d0565b92509250509295509295909350565b60006020828403121561085a57610859610d74565b5b6000610868848285016106bb565b91505092915050565b60006020828403121561088757610886610d74565b5b600082015167ffffffffffffffff8111156108a5576108a4610d6f565b5b6108b184828501610726565b91505092915050565b6108c381610c3b565b82525050565b60006108d58385610c0e565b93506108e2838584610cb9565b6108eb83610d79565b840190509392505050565b600061090182610bf8565b61090b8185610c1f565b935061091b818560208601610cc8565b80840191505092915050565b61093081610c83565b82525050565b600061094182610c03565b61094b8185610c2a565b935061095b818560208601610cc8565b61096481610d79565b840191505092915050565b600061097c602683610c2a565b915061098782610d8a565b604082019050919050565b600061099f601d83610c2a565b91506109aa82610dd9565b602082019050919050565b60006109c2602a83610c2a565b91506109cd82610e02565b604082019050919050565b60006109e5601f83610c2a565b91506109f082610e51565b602082019050919050565b610a0481610c79565b82525050565b6000610a1682846108f6565b915081905092915050565b6000608082019050610a3660008301886108ba565b610a4360208301876108ba565b610a5060408301866109fb565b8181036060830152610a638184866108c9565b90509695505050505050565b6000604082019050610a8460008301856108ba565b610a9160208301846109fb565b9392505050565b6000602082019050610aad6000830184610927565b92915050565b60006020820190508181036000830152610acd8184610936565b905092915050565b60006020820190508181036000830152610aee8161096f565b9050919050565b60006020820190508181036000830152610b0e81610992565b9050919050565b60006020820190508181036000830152610b2e816109b5565b9050919050565b60006020820190508181036000830152610b4e816109d8565b9050919050565b6000602082019050610b6a60008301846109fb565b92915050565b6000604082019050610b8560008301866109fb565b8181036020830152610b988184866108c9565b9050949350505050565b6000610bac610bbd565b9050610bb88282610cfb565b919050565b6000604051905090565b600067ffffffffffffffff821115610be257610be1610d2c565b5b610beb82610d79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c4682610c59565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c8e82610c95565b9050919050565b6000610ca082610ca7565b9050919050565b6000610cb282610c59565b9050919050565b82818337600083830152505050565b60005b83811015610ce6578082015181840152602081019050610ccb565b83811115610cf5576000848401525b50505050565b610d0482610d79565b810181811067ffffffffffffffff82111715610d2357610d22610d2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e8381610c3b565b8114610e8e57600080fd5b50565b610e9a81610c4d565b8114610ea557600080fd5b50565b610eb181610c79565b8114610ebc57600080fd5b5056fea2646970667358221220c6f7c0f9935341aaaabcabf7504d01bbd38a0606132004742a97e6a200eb432564736f6c63430008070033a26469706673582212202ce8815d151e695af42ea67f3ed856bc49e806dac3d45f97220dc65e9895f17664736f6c63430008070033"; - -type GatewayEVMInboundTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMInboundTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMInboundTest__factory extends ContractFactory { - constructor(...args: GatewayEVMInboundTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMInboundTest { - return super.attach(address) as GatewayEVMInboundTest; - } - override connect(signer: Signer): GatewayEVMInboundTest__factory { - return super.connect(signer) as GatewayEVMInboundTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMInboundTestInterface { - return new utils.Interface(_abi) as GatewayEVMInboundTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMInboundTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayEVMInboundTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts deleted file mode 100644 index 4eb80216..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest__factory.ts +++ /dev/null @@ -1,994 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayEVMTest, - GatewayEVMTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayEVM.t.sol/GatewayEVMTest"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceiveERC20ThroughCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceiveNoParams", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceiveNoParamsThroughCustody", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceiveNonPayable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testForwardCallToReceivePayable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b50619ec7806100566000396000f3fe60806040523480156200001157600080fd5b5060043610620001005760003560e01c8063916a17c61162000099578063ba414fa6116200006f578063ba414fa61462000243578063e20c9f711462000265578063fa7626d41462000287578063fe7bdbb214620002a95762000100565b8063916a17c614620001dd578063b0464fdc14620001ff578063b5508aa914620002215762000100565b80633e5e3c2311620000db5780633e5e3c2314620001555780633f7286f4146200017757806366d9a9a0146200019957806385226c8114620001bb5762000100565b80630a9254e414620001055780631ed7831c14620001115780632ade38801462000133575b600080fd5b6200010f620002b5565b005b6200011b62000a02565b6040516200012a919062002257565b60405180910390f35b6200013d62000a92565b6040516200014c9190620022c3565b60405180910390f35b6200015f62000c2c565b6040516200016e919062002257565b60405180910390f35b6200018162000cbc565b60405162000190919062002257565b60405180910390f35b620001a362000d4c565b604051620001b291906200229f565b60405180910390f35b620001c562000ee3565b604051620001d491906200227b565b60405180910390f35b620001e762000fc6565b604051620001f69190620022e7565b60405180910390f35b6200020962001119565b604051620002189190620022e7565b60405180910390f35b6200022b6200126c565b6040516200023a91906200227b565b60405180910390f35b6200024d6200134f565b6040516200025c91906200230b565b60405180910390f35b6200026f62001482565b6040516200027e919062002257565b60405180910390f35b6200029162001512565b604051620002a091906200230b565b60405180910390f35b620002b362001525565b005b30602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615678602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200038a90620018df565b620003959062002400565b604051809103906000f080158015620003b2573d6000803e3d6000fd5b50602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200040190620018df565b6200040c90620023c9565b604051809103906000f08015801562000429573d6000803e3d6000fd5b50602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200047890620018ed565b604051809103906000f08015801562000495573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200050790620018fb565b6200051391906200210e565b604051809103906000f08015801562000530573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005c59062001909565b620005d29291906200212b565b604051809103906000f080158015620005ef573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663485cc955602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620006d39291906200212b565b600060405180830381600087803b158015620006ee57600080fd5b505af115801562000703573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200078691906200210e565b600060405180830381600087803b158015620007a157600080fd5b505af1158015620007b6573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310188aef602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200083991906200210e565b600060405180830381600087803b1580156200085457600080fd5b505af115801562000869573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b8152600401620008f1929190620021b9565b600060405180830381600087803b1580156200090c57600080fd5b505af115801562000921573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166207a1206040518363ffffffff1660e01b8152600401620009a9929190620021e6565b602060405180830381600087803b158015620009c457600080fd5b505af1158015620009d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009ff9190620019c3565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801562000a8857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000a3d575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000c2357838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101562000c0b57838290600052602060002001805462000b779062002758565b80601f016020809104026020016040519081016040528092919081815260200182805462000ba59062002758565b801562000bf65780601f1062000bca5761010080835404028352916020019162000bf6565b820191906000526020600020905b81548152906001019060200180831162000bd857829003601f168201915b50505050508152602001906001019062000b55565b50505050815250508152602001906001019062000ab6565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000cb257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000c67575b5050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000d4257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000cf7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000eda578382906000526020600020906002020160405180604001604052908160008201805462000da69062002758565b80601f016020809104026020016040519081016040528092919081815260200182805462000dd49062002758565b801562000e255780601f1062000df95761010080835404028352916020019162000e25565b820191906000526020600020905b81548152906001019060200180831162000e0757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562000ec157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e6d5790505b5050505050815250508152602001906001019062000d70565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000fbd57838290600052602060002001805462000f299062002758565b80601f016020809104026020016040519081016040528092919081815260200182805462000f579062002758565b801562000fa85780601f1062000f7c5761010080835404028352916020019162000fa8565b820191906000526020600020905b81548152906001019060200180831162000f8a57829003601f168201915b50505050508152602001906001019062000f07565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156200111057838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620010f757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010a35790505b5050505050815250508152602001906001019062000fea565b50505050905090565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156200126357838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054806020026020016040519081016040528092919081815260200182805480156200124a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620011f65790505b505050505081525050815260200190600101906200113d565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001346578382906000526020600020018054620012b29062002758565b80601f0160208091040260200160405190810160405280929190818152602001828054620012e09062002758565b8015620013315780601f10620013055761010080835404028352916020019162001331565b820191906000526020600020905b8154815290600101906020018083116200131357829003601f168201915b50505050508152602001906001019062001290565b50505050905090565b6000600860009054906101000a900460ff16156200137f57600860009054906101000a900460ff1690506200147f565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016200142692919062002158565b60206040518083038186803b1580156200143f57600080fd5b505afa15801562001454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147a9190620019f5565b141590505b90565b606060158054806020026020016040519081016040528092919081815260200182805480156200150857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620014bd575b5050505050905090565b601f60009054906101000a900460ff1681565b60006040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525090506000602a90506000600190506000670de0b6b3a764000090506000848484604051602401620015919392919062002385565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f30c7ba3602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684846040518463ffffffff1660e01b8152600401620016949392919062002213565b600060405180830381600087803b158015620016af57600080fd5b505af1158015620016c4573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200175295949392919062002328565b600060405180830381600087803b1580156200176d57600080fd5b505af115801562001782573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f8383604051620017f292919062002437565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cff79cd83602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b81526004016200187c92919062002185565b6000604051808303818588803b1580156200189657600080fd5b505af1158015620018ab573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190620018d7919062001a27565b505050505050565b611813806200292083390190565b613972806200413383390190565b6112198062007aa583390190565b6111d48062008cbe83390190565b60006200192e620019288462002494565b6200246b565b9050828152602081018484840111156200194d576200194c62002827565b5b6200195a84828562002722565b509392505050565b6000815190506200197381620028eb565b92915050565b6000815190506200198a8162002905565b92915050565b600082601f830112620019a857620019a762002822565b5b8151620019ba84826020860162001917565b91505092915050565b600060208284031215620019dc57620019db62002831565b5b6000620019ec8482850162001962565b91505092915050565b60006020828403121562001a0e5762001a0d62002831565b5b600062001a1e8482850162001979565b91505092915050565b60006020828403121562001a405762001a3f62002831565b5b600082015167ffffffffffffffff81111562001a615762001a606200282c565b5b62001a6f8482850162001990565b91505092915050565b600062001a86838362001b04565b60208301905092915050565b600062001aa0838362001ea1565b60208301905092915050565b600062001aba838362001f15565b905092915050565b600062001ad0838362002033565b905092915050565b600062001ae683836200207b565b905092915050565b600062001afc8383620020bc565b905092915050565b62001b0f816200267a565b82525050565b62001b20816200267a565b82525050565b600062001b33826200252a565b62001b3f8185620025d0565b935062001b4c83620024ca565b8060005b8381101562001b8357815162001b67888262001a78565b975062001b748362002582565b92505060018101905062001b50565b5085935050505092915050565b600062001b9d8262002535565b62001ba98185620025e1565b935062001bb683620024da565b8060005b8381101562001bed57815162001bd1888262001a92565b975062001bde836200258f565b92505060018101905062001bba565b5085935050505092915050565b600062001c078262002540565b62001c138185620025f2565b93508360208202850162001c2785620024ea565b8060005b8581101562001c69578484038952815162001c47858262001aac565b945062001c54836200259c565b925060208a0199505060018101905062001c2b565b50829750879550505050505092915050565b600062001c888262002540565b62001c94818562002603565b93508360208202850162001ca885620024ea565b8060005b8581101562001cea578484038952815162001cc8858262001aac565b945062001cd5836200259c565b925060208a0199505060018101905062001cac565b50829750879550505050505092915050565b600062001d09826200254b565b62001d15818562002614565b93508360208202850162001d2985620024fa565b8060005b8581101562001d6b578484038952815162001d49858262001ac2565b945062001d5683620025a9565b925060208a0199505060018101905062001d2d565b50829750879550505050505092915050565b600062001d8a8262002556565b62001d96818562002625565b93508360208202850162001daa856200250a565b8060005b8581101562001dec578484038952815162001dca858262001ad8565b945062001dd783620025b6565b925060208a0199505060018101905062001dae565b50829750879550505050505092915050565b600062001e0b8262002561565b62001e17818562002636565b93508360208202850162001e2b856200251a565b8060005b8581101562001e6d578484038952815162001e4b858262001aee565b945062001e5883620025c3565b925060208a0199505060018101905062001e2f565b50829750879550505050505092915050565b62001e8a816200268e565b82525050565b62001e9b816200269a565b82525050565b62001eac81620026a4565b82525050565b600062001ebf826200256c565b62001ecb818562002647565b935062001edd81856020860162002722565b62001ee88162002836565b840191505092915050565b62001efe81620026fa565b82525050565b62001f0f816200270e565b82525050565b600062001f228262002577565b62001f2e818562002658565b935062001f4081856020860162002722565b62001f4b8162002836565b840191505092915050565b600062001f638262002577565b62001f6f818562002669565b935062001f8181856020860162002722565b62001f8c8162002836565b840191505092915050565b600062001fa660038362002669565b915062001fb38262002847565b602082019050919050565b600062001fcd60048362002669565b915062001fda8262002870565b602082019050919050565b600062001ff460048362002669565b9150620020018262002899565b602082019050919050565b60006200201b60048362002669565b91506200202882620028c2565b602082019050919050565b6000604083016000830151848203600086015262002052828262001f15565b915050602083015184820360208601526200206e828262001b90565b9150508091505092915050565b600060408301600083015162002095600086018262001b04565b5060208301518482036020860152620020af828262001bfa565b9150508091505092915050565b6000604083016000830151620020d6600086018262001b04565b5060208301518482036020860152620020f0828262001b90565b9150508091505092915050565b6200210881620026f0565b82525050565b600060208201905062002125600083018462001b15565b92915050565b600060408201905062002142600083018562001b15565b62002151602083018462001b15565b9392505050565b60006040820190506200216f600083018562001b15565b6200217e602083018462001e90565b9392505050565b60006040820190506200219c600083018562001b15565b8181036020830152620021b0818462001eb2565b90509392505050565b6000604082019050620021d0600083018562001b15565b620021df602083018462001ef3565b9392505050565b6000604082019050620021fd600083018562001b15565b6200220c602083018462001f04565b9392505050565b60006060820190506200222a600083018662001b15565b620022396020830185620020fd565b81810360408301526200224d818462001eb2565b9050949350505050565b6000602082019050818103600083015262002273818462001b26565b905092915050565b6000602082019050818103600083015262002297818462001c7b565b905092915050565b60006020820190508181036000830152620022bb818462001cfc565b905092915050565b60006020820190508181036000830152620022df818462001d7d565b905092915050565b6000602082019050818103600083015262002303818462001dfe565b905092915050565b600060208201905062002322600083018462001e7f565b92915050565b600060a0820190506200233f600083018862001e7f565b6200234e602083018762001e7f565b6200235d604083018662001e7f565b6200236c606083018562001e7f565b6200237b608083018462001b15565b9695505050505050565b60006060820190508181036000830152620023a1818662001f56565b9050620023b26020830185620020fd565b620023c1604083018462001e7f565b949350505050565b60006040820190508181036000830152620023e48162001fbe565b90508181036020830152620023f98162001fe5565b9050919050565b600060408201905081810360008301526200241b816200200c565b90508181036020830152620024308162001f97565b9050919050565b60006040820190506200244e6000830185620020fd565b818103602083015262002462818462001eb2565b90509392505050565b6000620024776200248a565b90506200248582826200278e565b919050565b6000604051905090565b600067ffffffffffffffff821115620024b257620024b1620027f3565b5b620024bd8262002836565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200268782620026d0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200270782620026f0565b9050919050565b60006200271b82620026f0565b9050919050565b60005b838110156200274257808201518184015260208101905062002725565b8381111562002752576000848401525b50505050565b600060028204905060018216806200277157607f821691505b60208210811415620027885762002787620027c4565b5b50919050565b620027998262002836565b810181811067ffffffffffffffff82111715620027bb57620027ba620027f3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f54544b0000000000000000000000000000000000000000000000000000000000600082015250565b7f7a65746100000000000000000000000000000000000000000000000000000000600082015250565b7f5a45544100000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b620028f6816200268e565b81146200290257600080fd5b50565b62002910816200269a565b81146200291c57600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c6138f16100816000396000818161082a015281816108b901528181610c1b01528181610caa01526110c601526138f16000f3fe6080604052600436106101355760003560e01c8063715018a6116100ab578063b8969bd41161006f578063b8969bd4146103b4578063dda79b75146103dd578063e8f9cb3a14610408578063f2fde38b14610433578063f340fa011461045c578063f45346dc1461047857610135565b8063715018a6146103045780638c6f037f1461031b5780638da5cb5b146103445780638ee0f9f21461036f578063ae7a3a6f1461038b57610135565b8063485cc955116100fd578063485cc955146102015780634f1ef2861461022a5780635131ab591461024657806352d1902d1461028357806357bec62f146102ae5780635b112591146102d957610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806329c59b5d146101bc5780633659cfe6146101d8575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c919061285c565b6104a1565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612951565b6105d4565b005b6101a660048036038101906101a19190612951565b610640565b6040516101b39190612fe4565b60405180910390f35b6101d660048036038101906101d19190612951565b6106ae565b005b3480156101e457600080fd5b506101ff60048036038101906101fa919061285c565b610828565b005b34801561020d57600080fd5b5061022860048036038101906102239190612889565b6109b1565b005b610244600480360381019061023f91906129b1565b610c19565b005b34801561025257600080fd5b5061026d600480360381019061026891906128c9565b610d56565b60405161027a9190612fe4565b60405180910390f35b34801561028f57600080fd5b506102986110c2565b6040516102a59190612fa5565b60405180910390f35b3480156102ba57600080fd5b506102c361117b565b6040516102d09190612f01565b60405180910390f35b3480156102e557600080fd5b506102ee6111a1565b6040516102fb9190612f01565b60405180910390f35b34801561031057600080fd5b506103196111c7565b005b34801561032757600080fd5b50610342600480360381019061033d9190612a60565b6111db565b005b34801561035057600080fd5b50610359611359565b6040516103669190612f01565b60405180910390f35b61038960048036038101906103849190612951565b611383565b005b34801561039757600080fd5b506103b260048036038101906103ad919061285c565b6114ee565b005b3480156103c057600080fd5b506103db60048036038101906103d691906128c9565b611621565b005b3480156103e957600080fd5b506103f2611764565b6040516103ff9190612f01565b60405180910390f35b34801561041457600080fd5b5061041d61178a565b60405161042a9190612f01565b60405180910390f35b34801561043f57600080fd5b5061045a6004803603810190610455919061285c565b6117b0565b005b6104766004803603810190610471919061285c565b611834565b005b34801561048457600080fd5b5061049f600480360381019061049a9190612a0d565b6119a8565b005b600073ffffffffffffffffffffffffffffffffffffffff1660cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610529576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610590576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610633929190612fc0565b60405180910390a3505050565b6060600061064f858585611b20565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161069b9392919061325f565b60405180910390a2809150509392505050565b60003414156106e9576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161073190612eec565b60006040518083038185875af1925050503d806000811461076e576040519150601f19603f3d011682016040523d82523d6000602084013e610773565b606091505b505090506000151581151514156107b6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161081a94939291906131e3565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90613063565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108f6611bd7565b73ffffffffffffffffffffffffffffffffffffffff161461094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390613083565b60405180910390fd5b61095581611c2e565b6109ae81600067ffffffffffffffff81111561097457610973613420565b5b6040519080825280601f01601f1916602001820160405280156109a65781602001600182028036833780820191505090505b506000611c39565b50565b60008060019054906101000a900460ff161590508080156109e25750600160008054906101000a900460ff1660ff16105b80610a0f57506109f130611db6565b158015610a0e5750600160008054906101000a900460ff1660ff16145b5b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590613103565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a8b576001600060016101000a81548160ff0219169083151502179055505b610a93611dd9565b610a9b611e32565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b025750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610b39576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610c145760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610c0b9190613006565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90613063565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ce7611bd7565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613083565b60405180910390fd5b610d4682611c2e565b610d5282826001611c39565b5050565b60606000841415610d93576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9d8686611e83565b610dd3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610e0e929190612f7c565b602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190612ae8565b610e96576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ea3868585611b20565b9050610eaf8787611e83565b610ee5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f209190612f01565b60206040518083038186803b158015610f3857600080fd5b505afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190612b42565b9050600081111561104b57600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561101e5760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b61104981838b73ffffffffffffffffffffffffffffffffffffffff16611f1b9092919063ffffffff16565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828888886040516110ac9392919061325f565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906130c3565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111cf611fa1565b6111d9600061201f565b565b6000841415611216576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112b95760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6112e63382878773ffffffffffffffffffffffffffffffffffffffff166120e5909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48787878760405161134994939291906131e3565b60405180910390a3505050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516113aa90612eec565b60006040518083038185875af1925050503d80600081146113e7576040519150601f19603f3d011682016040523d82523d6000602084013e6113ec565b606091505b509150915081611428576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401611463929190612fc0565b600060405180830381600087803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516114df9392919061325f565b60405180910390a25050505050565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600083141561165c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168784848773ffffffffffffffffffffffffffffffffffffffff16611f1b9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016116c2929190612fc0565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516117559392919061325f565b60405180910390a35050505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b8611fa1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613043565b60405180910390fd5b6118318161201f565b50565b600034141561186f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516118b790612eec565b60006040518083038185875af1925050503d80600081146118f4576040519150601f19603f3d011682016040523d82523d6000602084013e6118f9565b606091505b5050905060001515811515141561193c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161199c929190613223565b60405180910390a35050565b60008214156119e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a865760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b611ab33382858573ffffffffffffffffffffffffffffffffffffffff166120e5909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48585604051611b12929190613223565b60405180910390a350505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611b4d929190612ebc565b60006040518083038185875af1925050503d8060008114611b8a576040519150601f19603f3d011682016040523d82523d6000602084013e611b8f565b606091505b509150915081611bcb576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c057f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61216e565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c36611fa1565b50565b611c657f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612178565b60000160009054906101000a900460ff1615611c8957611c8483612182565b611db1565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ccf57600080fd5b505afa925050508015611d0057506040513d601f19601f82011682018060405250810190611cfd9190612b15565b60015b611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3690613123565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b906130e3565b60405180910390fd5b50611db083838361223b565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f906131a3565b60405180910390fd5b611e30612267565b565b600060019054906101000a900460ff16611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e78906131a3565b60405180910390fd5b565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ec1929190612f53565b602060405180830381600087803b158015611edb57600080fd5b505af1158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f139190612ae8565b905092915050565b611f9c8363a9059cbb60e01b8484604051602401611f3a929190612f7c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122c8565b505050565b611fa961238f565b73ffffffffffffffffffffffffffffffffffffffff16611fc7611359565b73ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613163565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612168846323b872dd60e01b85858560405160240161210693929190612f1c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122c8565b50505050565b6000819050919050565b6000819050919050565b61218b81611db6565b6121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190613143565b60405180910390fd5b806121f77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61216e565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61224483612397565b6000825111806122515750805b156122625761226083836123e6565b505b505050565b600060019054906101000a900460ff166122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906131a3565b60405180910390fd5b6122c66122c161238f565b61201f565b565b600061232a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124139092919063ffffffff16565b905060008151111561238a578080602001905181019061234a9190612ae8565b612389576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612380906131c3565b60405180910390fd5b5b505050565b600033905090565b6123a081612182565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061240b83836040518060600160405280602781526020016138956027913961242b565b905092915050565b606061242284846000856124b1565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516124559190612ed5565b600060405180830381855af49150503d8060008114612490576040519150601f19603f3d011682016040523d82523d6000602084013e612495565b606091505b50915091506124a68683838761257e565b925050509392505050565b6060824710156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed906130a3565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161251f9190612ed5565b60006040518083038185875af1925050503d806000811461255c576040519150601f19603f3d011682016040523d82523d6000602084013e612561565b606091505b5091509150612572878383876125f4565b92505050949350505050565b606083156125e1576000835114156125d95761259985611db6565b6125d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cf90613183565b60405180910390fd5b5b8290506125ec565b6125eb838361266a565b5b949350505050565b606083156126575760008351141561264f5761260f856126ba565b61264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613183565b60405180910390fd5b5b829050612662565b61266183836126dd565b5b949350505050565b60008251111561267d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190613021565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156126f05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127249190613021565b60405180910390fd5b600061274061273b846132b6565b613291565b90508281526020810184848401111561275c5761275b61345e565b5b6127678482856133ad565b509392505050565b60008135905061277e81613838565b92915050565b6000815190506127938161384f565b92915050565b6000815190506127a881613866565b92915050565b60008083601f8401126127c4576127c3613454565b5b8235905067ffffffffffffffff8111156127e1576127e061344f565b5b6020830191508360018202830111156127fd576127fc613459565b5b9250929050565b600082601f83011261281957612818613454565b5b813561282984826020860161272d565b91505092915050565b6000813590506128418161387d565b92915050565b6000815190506128568161387d565b92915050565b60006020828403121561287257612871613468565b5b60006128808482850161276f565b91505092915050565b600080604083850312156128a05761289f613468565b5b60006128ae8582860161276f565b92505060206128bf8582860161276f565b9150509250929050565b6000806000806000608086880312156128e5576128e4613468565b5b60006128f38882890161276f565b95505060206129048882890161276f565b945050604061291588828901612832565b935050606086013567ffffffffffffffff81111561293657612935613463565b5b612942888289016127ae565b92509250509295509295909350565b60008060006040848603121561296a57612969613468565b5b60006129788682870161276f565b935050602084013567ffffffffffffffff81111561299957612998613463565b5b6129a5868287016127ae565b92509250509250925092565b600080604083850312156129c8576129c7613468565b5b60006129d68582860161276f565b925050602083013567ffffffffffffffff8111156129f7576129f6613463565b5b612a0385828601612804565b9150509250929050565b600080600060608486031215612a2657612a25613468565b5b6000612a348682870161276f565b9350506020612a4586828701612832565b9250506040612a568682870161276f565b9150509250925092565b600080600080600060808688031215612a7c57612a7b613468565b5b6000612a8a8882890161276f565b9550506020612a9b88828901612832565b9450506040612aac8882890161276f565b935050606086013567ffffffffffffffff811115612acd57612acc613463565b5b612ad9888289016127ae565b92509250509295509295909350565b600060208284031215612afe57612afd613468565b5b6000612b0c84828501612784565b91505092915050565b600060208284031215612b2b57612b2a613468565b5b6000612b3984828501612799565b91505092915050565b600060208284031215612b5857612b57613468565b5b6000612b6684828501612847565b91505092915050565b612b788161332a565b82525050565b612b8781613348565b82525050565b6000612b9983856132fd565b9350612ba68385846133ad565b612baf8361346d565b840190509392505050565b6000612bc6838561330e565b9350612bd38385846133ad565b82840190509392505050565b6000612bea826132e7565b612bf481856132fd565b9350612c048185602086016133bc565b612c0d8161346d565b840191505092915050565b6000612c23826132e7565b612c2d818561330e565b9350612c3d8185602086016133bc565b80840191505092915050565b612c5281613389565b82525050565b612c618161339b565b82525050565b6000612c72826132f2565b612c7c8185613319565b9350612c8c8185602086016133bc565b612c958161346d565b840191505092915050565b6000612cad602683613319565b9150612cb88261347e565b604082019050919050565b6000612cd0602c83613319565b9150612cdb826134cd565b604082019050919050565b6000612cf3602c83613319565b9150612cfe8261351c565b604082019050919050565b6000612d16602683613319565b9150612d218261356b565b604082019050919050565b6000612d39603883613319565b9150612d44826135ba565b604082019050919050565b6000612d5c602983613319565b9150612d6782613609565b604082019050919050565b6000612d7f602e83613319565b9150612d8a82613658565b604082019050919050565b6000612da2602e83613319565b9150612dad826136a7565b604082019050919050565b6000612dc5602d83613319565b9150612dd0826136f6565b604082019050919050565b6000612de8602083613319565b9150612df382613745565b602082019050919050565b6000612e0b6000836132fd565b9150612e168261376e565b600082019050919050565b6000612e2e60008361330e565b9150612e398261376e565b600082019050919050565b6000612e51601d83613319565b9150612e5c82613771565b602082019050919050565b6000612e74602b83613319565b9150612e7f8261379a565b604082019050919050565b6000612e97602a83613319565b9150612ea2826137e9565b604082019050919050565b612eb681613372565b82525050565b6000612ec9828486612bba565b91508190509392505050565b6000612ee18284612c18565b915081905092915050565b6000612ef782612e21565b9150819050919050565b6000602082019050612f166000830184612b6f565b92915050565b6000606082019050612f316000830186612b6f565b612f3e6020830185612b6f565b612f4b6040830184612ead565b949350505050565b6000604082019050612f686000830185612b6f565b612f756020830184612c49565b9392505050565b6000604082019050612f916000830185612b6f565b612f9e6020830184612ead565b9392505050565b6000602082019050612fba6000830184612b7e565b92915050565b60006020820190508181036000830152612fdb818486612b8d565b90509392505050565b60006020820190508181036000830152612ffe8184612bdf565b905092915050565b600060208201905061301b6000830184612c58565b92915050565b6000602082019050818103600083015261303b8184612c67565b905092915050565b6000602082019050818103600083015261305c81612ca0565b9050919050565b6000602082019050818103600083015261307c81612cc3565b9050919050565b6000602082019050818103600083015261309c81612ce6565b9050919050565b600060208201905081810360008301526130bc81612d09565b9050919050565b600060208201905081810360008301526130dc81612d2c565b9050919050565b600060208201905081810360008301526130fc81612d4f565b9050919050565b6000602082019050818103600083015261311c81612d72565b9050919050565b6000602082019050818103600083015261313c81612d95565b9050919050565b6000602082019050818103600083015261315c81612db8565b9050919050565b6000602082019050818103600083015261317c81612ddb565b9050919050565b6000602082019050818103600083015261319c81612e44565b9050919050565b600060208201905081810360008301526131bc81612e67565b9050919050565b600060208201905081810360008301526131dc81612e8a565b9050919050565b60006060820190506131f86000830187612ead565b6132056020830186612b6f565b8181036040830152613218818486612b8d565b905095945050505050565b60006060820190506132386000830185612ead565b6132456020830184612b6f565b818103604083015261325681612dfe565b90509392505050565b60006040820190506132746000830186612ead565b8181036020830152613287818486612b8d565b9050949350505050565b600061329b6132ac565b90506132a782826133ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156132d1576132d0613420565b5b6132da8261346d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061333582613352565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061339482613372565b9050919050565b60006133a68261337c565b9050919050565b82818337600083830152505050565b60005b838110156133da5780820151818401526020810190506133bf565b838111156133e9576000848401525b50505050565b6133f88261346d565b810181811067ffffffffffffffff8211171561341757613416613420565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6138418161332a565b811461384c57600080fd5b50565b6138588161333c565b811461386357600080fd5b50565b61386f81613348565b811461387a57600080fd5b50565b61388681613372565b811461389157600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209f492532b152769362ab43ba037efaf19136209d3a4482b99c545df62acdbfa164736f6c6343000807003360806040523480156200001157600080fd5b506040516200121938038062001219833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b61107e806200019b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063116191b61461005157806321fc65f21461006f578063c8a023621461008b578063d9caed12146100a7575b600080fd5b6100596100c3565b6040516100669190610c21565b60405180910390f35b61008960048036038101906100849190610945565b6100e9565b005b6100a560048036038101906100a09190610945565b610271565b005b6100c160048036038101906100bc91906108f2565b6103d3565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100f1610478565b61013e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101a1959493929190610baa565b600060405180830381600087803b1580156101bb57600080fd5b505af11580156101cf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101f891906109fa565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161025a93929190610cf9565b60405180910390a361026a61054e565b5050505050565b610279610478565b6102c6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610329959493929190610baa565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516103bc93929190610cf9565b60405180910390a36103cc61054e565b5050505050565b6103db610478565b61040682828573ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104639190610cde565b60405180910390a361047361054e565b505050565b600260005414156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b590610cbe565b60405180910390fd5b6002600081905550565b6105498363a9059cbb60e01b84846040516024016104e7929190610bf8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610558565b505050565b6001600081905550565b60006105ba826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661061f9092919063ffffffff16565b905060008151111561061a57808060200190518101906105da91906109cd565b610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061090610c9e565b60405180910390fd5b5b505050565b606061062e8484600085610637565b90509392505050565b60608247101561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610c5e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106a59190610b93565b60006040518083038185875af1925050503d80600081146106e2576040519150601f19603f3d011682016040523d82523d6000602084013e6106e7565b606091505b50915091506106f887838387610704565b92505050949350505050565b606083156107675760008351141561075f5761071f8561077a565b61075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590610c7e565b60405180910390fd5b5b829050610772565b610771838361079d565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156107b05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e49190610c3c565b60405180910390fd5b60006108006107fb84610d50565b610d2b565b90508281526020810184848401111561081c5761081b610ef3565b5b610827848285610e51565b509392505050565b60008135905061083e81611003565b92915050565b6000815190506108538161101a565b92915050565b60008083601f84011261086f5761086e610ee9565b5b8235905067ffffffffffffffff81111561088c5761088b610ee4565b5b6020830191508360018202830111156108a8576108a7610eee565b5b9250929050565b600082601f8301126108c4576108c3610ee9565b5b81516108d48482602086016107ed565b91505092915050565b6000813590506108ec81611031565b92915050565b60008060006060848603121561090b5761090a610efd565b5b60006109198682870161082f565b935050602061092a8682870161082f565b925050604061093b868287016108dd565b9150509250925092565b60008060008060006080868803121561096157610960610efd565b5b600061096f8882890161082f565b95505060206109808882890161082f565b9450506040610991888289016108dd565b935050606086013567ffffffffffffffff8111156109b2576109b1610ef8565b5b6109be88828901610859565b92509250509295509295909350565b6000602082840312156109e3576109e2610efd565b5b60006109f184828501610844565b91505092915050565b600060208284031215610a1057610a0f610efd565b5b600082015167ffffffffffffffff811115610a2e57610a2d610ef8565b5b610a3a848285016108af565b91505092915050565b610a4c81610dc4565b82525050565b6000610a5e8385610d97565b9350610a6b838584610e42565b610a7483610f02565b840190509392505050565b6000610a8a82610d81565b610a948185610da8565b9350610aa4818560208601610e51565b80840191505092915050565b610ab981610e0c565b82525050565b6000610aca82610d8c565b610ad48185610db3565b9350610ae4818560208601610e51565b610aed81610f02565b840191505092915050565b6000610b05602683610db3565b9150610b1082610f13565b604082019050919050565b6000610b28601d83610db3565b9150610b3382610f62565b602082019050919050565b6000610b4b602a83610db3565b9150610b5682610f8b565b604082019050919050565b6000610b6e601f83610db3565b9150610b7982610fda565b602082019050919050565b610b8d81610e02565b82525050565b6000610b9f8284610a7f565b915081905092915050565b6000608082019050610bbf6000830188610a43565b610bcc6020830187610a43565b610bd96040830186610b84565b8181036060830152610bec818486610a52565b90509695505050505050565b6000604082019050610c0d6000830185610a43565b610c1a6020830184610b84565b9392505050565b6000602082019050610c366000830184610ab0565b92915050565b60006020820190508181036000830152610c568184610abf565b905092915050565b60006020820190508181036000830152610c7781610af8565b9050919050565b60006020820190508181036000830152610c9781610b1b565b9050919050565b60006020820190508181036000830152610cb781610b3e565b9050919050565b60006020820190508181036000830152610cd781610b61565b9050919050565b6000602082019050610cf36000830184610b84565b92915050565b6000604082019050610d0e6000830186610b84565b8181036020830152610d21818486610a52565b9050949350505050565b6000610d35610d46565b9050610d418282610e84565b919050565b6000604051905090565b600067ffffffffffffffff821115610d6b57610d6a610eb5565b5b610d7482610f02565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610dcf82610de2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610e1782610e1e565b9050919050565b6000610e2982610e30565b9050919050565b6000610e3b82610de2565b9050919050565b82818337600083830152505050565b60005b83811015610e6f578082015181840152602081019050610e54565b83811115610e7e576000848401525b50505050565b610e8d82610f02565b810181811067ffffffffffffffff82111715610eac57610eab610eb5565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61100c81610dc4565b811461101757600080fd5b50565b61102381610dd6565b811461102e57600080fd5b50565b61103a81610e02565b811461104557600080fd5b5056fea2646970667358221220326721c0766c1858ba7ddfe1b887e1200ee1a6de1216da56899a4be08731568f64736f6c6343000807003360c06040523480156200001157600080fd5b50604051620011d4380380620011d483398181016040528101906200003791906200016c565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505062000206565b6000815190506200016681620001ec565b92915050565b60008060408385031215620001865762000185620001e7565b5b6000620001968582860162000155565b9250506020620001a98582860162000155565b9150509250929050565b6000620001c082620001c7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001f781620001b3565b81146200020357600080fd5b50565b60805160601c60a05160601c610f81620002536000396000818160f4015281816101760152818161029701526102c801526000818160d20152818161013a01526102730152610f816000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806302a04c0d14610051578063116191b61461006d578063e8f9cb3a1461008b578063f3fef3a3146100a9575b600080fd5b61006b60048036038101906100669190610820565b6100c5565b005b610075610271565b6040516100829190610b12565b60405180910390f35b610093610295565b6040516100a09190610af7565b60405180910390f35b6100c360048036038101906100be91906107e0565b6102b9565b005b6100cd610366565b6101387f0000000000000000000000000000000000000000000000000000000000000000847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103b69092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000868686866040518663ffffffff1660e01b81526004016101b9959493929190610a80565b600060405180830381600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061021091906108c1565b508373ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced84848460405161025b93929190610bea565b60405180910390a261026b61043c565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c1610366565b61030c82827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103b69092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040516103529190610bcf565b60405180910390a261036261043c565b5050565b600260005414156103ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a390610baf565b60405180910390fd5b6002600081905550565b6104378363a9059cbb60e01b84846040516024016103d5929190610ace565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610446565b505050565b6001600081905550565b60006104a8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661050d9092919063ffffffff16565b905060008151111561050857808060200190518101906104c89190610894565b610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe90610b8f565b60405180910390fd5b5b505050565b606061051c8484600085610525565b90509392505050565b60608247101561056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056190610b4f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105939190610a69565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e6878383876105f2565b92505050949350505050565b606083156106555760008351141561064d5761060d85610668565b61064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610b6f565b60405180910390fd5b5b829050610660565b61065f838361068b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561069e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d29190610b2d565b60405180910390fd5b60006106ee6106e984610c41565b610c1c565b90508281526020810184848401111561070a57610709610df6565b5b610715848285610d54565b509392505050565b60008135905061072c81610f06565b92915050565b60008151905061074181610f1d565b92915050565b60008083601f84011261075d5761075c610dec565b5b8235905067ffffffffffffffff81111561077a57610779610de7565b5b60208301915083600182028301111561079657610795610df1565b5b9250929050565b600082601f8301126107b2576107b1610dec565b5b81516107c28482602086016106db565b91505092915050565b6000813590506107da81610f34565b92915050565b600080604083850312156107f7576107f6610e00565b5b60006108058582860161071d565b9250506020610816858286016107cb565b9150509250929050565b6000806000806060858703121561083a57610839610e00565b5b60006108488782880161071d565b9450506020610859878288016107cb565b935050604085013567ffffffffffffffff81111561087a57610879610dfb565b5b61088687828801610747565b925092505092959194509250565b6000602082840312156108aa576108a9610e00565b5b60006108b884828501610732565b91505092915050565b6000602082840312156108d7576108d6610e00565b5b600082015167ffffffffffffffff8111156108f5576108f4610dfb565b5b6109018482850161079d565b91505092915050565b61091381610cb5565b82525050565b60006109258385610c88565b9350610932838584610d45565b61093b83610e05565b840190509392505050565b600061095182610c72565b61095b8185610c99565b935061096b818560208601610d54565b80840191505092915050565b61098081610cfd565b82525050565b61098f81610d0f565b82525050565b60006109a082610c7d565b6109aa8185610ca4565b93506109ba818560208601610d54565b6109c381610e05565b840191505092915050565b60006109db602683610ca4565b91506109e682610e16565b604082019050919050565b60006109fe601d83610ca4565b9150610a0982610e65565b602082019050919050565b6000610a21602a83610ca4565b9150610a2c82610e8e565b604082019050919050565b6000610a44601f83610ca4565b9150610a4f82610edd565b602082019050919050565b610a6381610cf3565b82525050565b6000610a758284610946565b915081905092915050565b6000608082019050610a95600083018861090a565b610aa2602083018761090a565b610aaf6040830186610a5a565b8181036060830152610ac2818486610919565b90509695505050505050565b6000604082019050610ae3600083018561090a565b610af06020830184610a5a565b9392505050565b6000602082019050610b0c6000830184610977565b92915050565b6000602082019050610b276000830184610986565b92915050565b60006020820190508181036000830152610b478184610995565b905092915050565b60006020820190508181036000830152610b68816109ce565b9050919050565b60006020820190508181036000830152610b88816109f1565b9050919050565b60006020820190508181036000830152610ba881610a14565b9050919050565b60006020820190508181036000830152610bc881610a37565b9050919050565b6000602082019050610be46000830184610a5a565b92915050565b6000604082019050610bff6000830186610a5a565b8181036020830152610c12818486610919565b9050949350505050565b6000610c26610c37565b9050610c328282610d87565b919050565b6000604051905090565b600067ffffffffffffffff821115610c5c57610c5b610db8565b5b610c6582610e05565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cc082610cd3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d0882610d21565b9050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610cd3565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b610d9082610e05565b810181811067ffffffffffffffff82111715610daf57610dae610db8565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610f0f81610cb5565b8114610f1a57600080fd5b50565b610f2681610cc7565b8114610f3157600080fd5b50565b610f3d81610cf3565b8114610f4857600080fd5b5056fea2646970667358221220da212ba2d53390dc4639c6db16c2028d714e1179b80a39e1f053509901d87aeb64736f6c63430008070033a2646970667358221220a946037480c9d2889e70ba3469adf2155b0f9bbd1f6f3dea2f6931315d89b40a64736f6c63430008070033"; - -type GatewayEVMTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMTest__factory extends ContractFactory { - constructor(...args: GatewayEVMTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMTest { - return super.attach(address) as GatewayEVMTest; - } - override connect(signer: Signer): GatewayEVMTest__factory { - return super.connect(signer) as GatewayEVMTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMTestInterface { - return new utils.Interface(_abi) as GatewayEVMTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMTest { - return new Contract(address, _abi, signerOrProvider) as GatewayEVMTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts deleted file mode 100644 index aa9a507c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVM.t.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayEVMInboundTest__factory } from "./GatewayEVMInboundTest__factory"; -export { GatewayEVMTest__factory } from "./GatewayEVMTest__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts deleted file mode 100644 index 3931e6ae..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest__factory.ts +++ /dev/null @@ -1,1106 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayEVMZEVMTest, - GatewayEVMZEVMTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayEVMZEVM.t.sol/GatewayEVMZEVMTest"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "FailedZetaSent", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "WZETATransferFailed", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Reverted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "RevertedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "zrc20", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testCallReceiverEVMFromSenderZEVM", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testCallReceiverEVMFromZEVM", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testWithdrawAndCallReceiverEVMFromSenderZEVM", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testWithdrawAndCallReceiverEVMFromZEVM", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b50620141b580620000586000396000f3fe60806040523480156200001157600080fd5b5060043610620001005760003560e01c8063916a17c61162000099578063b5508aa9116200006f578063b5508aa9146200022d578063ba414fa6146200024f578063e20c9f711462000271578063fa7626d414620002935762000100565b8063916a17c614620001dd5780639683c69514620001ff578063b0464fdc146200020b5762000100565b80633e5e3c2311620000db5780633e5e3c2314620001555780633f7286f4146200017757806366d9a9a0146200019957806385226c8114620001bb5762000100565b80630a9254e414620001055780631ed7831c14620001115780632ade38801462000133575b600080fd5b6200010f620002b5565b005b6200011b6200135c565b6040516200012a919062002fcc565b60405180910390f35b6200013d620013ec565b6040516200014c919062003038565b60405180910390f35b6200015f62001586565b6040516200016e919062002fcc565b60405180910390f35b6200018162001616565b60405162000190919062002fcc565b60405180910390f35b620001a3620016a6565b604051620001b2919062003014565b60405180910390f35b620001c56200183d565b604051620001d4919062002ff0565b60405180910390f35b620001e762001920565b604051620001f691906200305c565b60405180910390f35b6200020962001a73565b005b6200021562002112565b6040516200022491906200305c565b60405180910390f35b6200023762002265565b60405162000246919062002ff0565b60405180910390f35b6200025962002348565b60405162000268919062003080565b60405180910390f35b6200027b6200247b565b6040516200028a919062002fcc565b60405180910390f35b6200029d6200250b565b604051620002ac919062003080565b60405180910390f35b30602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615678602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614321602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003cd906200251e565b620003d890620032a2565b604051809103906000f080158015620003f5573d6000803e3d6000fd5b50602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405162000444906200251e565b6200044f90620031d3565b604051809103906000f0801580156200046c573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620004bb906200252c565b604051809103906000f080158015620004d8573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200054a906200253a565b62000556919062002e5d565b604051809103906000f08015801562000573573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006089062002548565b6200061592919062002e7a565b604051809103906000f08015801562000632573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663485cc955602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016200071692919062002e7a565b600060405180830381600087803b1580156200073157600080fd5b505af115801562000746573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200077b906200253a565b62000787919062002e5d565b604051809103906000f080158015620007a4573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000864919062002e5d565b600060405180830381600087803b1580156200087f57600080fd5b505af115801562000894573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310188aef602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000917919062002e5d565b600060405180830381600087803b1580156200093257600080fd5b505af115801562000947573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b8152600401620009cf92919062002f45565b600060405180830381600087803b158015620009ea57600080fd5b505af1158015620009ff573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166207a1206040518363ffffffff1660e01b815260040162000a8792919062002f72565b602060405180830381600087803b15801562000aa257600080fd5b505af115801562000ab7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000add919062002648565b5060405162000aec9062002556565b604051809103906000f08015801562000b09573d6000803e3d6000fd5b50602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405162000b589062002564565b604051809103906000f08015801562000b75573d6000803e3d6000fd5b50602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000be79062002572565b62000bf3919062002e5d565b604051809103906000f08015801562000c10573d6000803e3d6000fd5b50602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073735b14bb79463307aacbed86daf3322b1e6226ab90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166306447d56826040518263ffffffff1660e01b815260040162000cc8919062002e5d565b600060405180830381600087803b15801562000ce357600080fd5b505af115801562000cf8573d6000803e3d6000fd5b50505050600080600060405162000d0f9062002580565b62000d1d9392919062002ea7565b604051809103906000f08015801562000d3a573d6000803e3d6000fd5b50602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060126001600080602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000dd6906200258e565b62000de7969594939291906200320a565b604051809103906000f08015801562000e04573d6000803e3d6000fd5b50602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee2815ba6001602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000ec792919062003135565b600060405180830381600087803b15801562000ee257600080fd5b505af115801562000ef7573d6000803e3d6000fd5b50505050602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7cb05076001806040518363ffffffff1660e01b815260040162000f5b92919062003162565b600060405180830381600087803b15801562000f7657600080fd5b505af115801562000f8b573d6000803e3d6000fd5b50505050602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b81526004016200101392919062002f45565b602060405180830381600087803b1580156200102e57600080fd5b505af115801562001043573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001069919062002648565b50602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b8152600401620010ee92919062002f45565b602060405180830381600087803b1580156200110957600080fd5b505af11580156200111e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001144919062002648565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620011b157600080fd5b505af1158015620011c6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200124a919062002e5d565b600060405180830381600087803b1580156200126557600080fd5b505af11580156200127a573d6000803e3d6000fd5b50505050602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b81526004016200130292919062002f45565b602060405180830381600087803b1580156200131d57600080fd5b505af115801562001332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001358919062002648565b5050565b60606016805480602002602001604051908101604052809291908181526020018280548015620013e257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001397575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156200157d57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101562001565578382906000526020600020018054620014d190620036a8565b80601f0160208091040260200160405190810160405280929190818152602001828054620014ff90620036a8565b8015620015505780601f10620015245761010080835404028352916020019162001550565b820191906000526020600020905b8154815290600101906020018083116200153257829003601f168201915b505050505081526020019060010190620014af565b50505050815250508152602001906001019062001410565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156200160c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620015c1575b5050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200169c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001651575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200183457838290600052602060002090600202016040518060400160405290816000820180546200170090620036a8565b80601f01602080910402602001604051908101604052809291908181526020018280546200172e90620036a8565b80156200177f5780601f1062001753576101008083540402835291602001916200177f565b820191906000526020600020905b8154815290600101906020018083116200176157829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200181b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620017c75790505b50505050508152505081526020019060010190620016ca565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620019175783829060005260206000200180546200188390620036a8565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b190620036a8565b8015620019025780601f10620018d65761010080835404028352916020019162001902565b820191906000526020600020905b815481529060010190602001808311620018e457829003601f168201915b50505050508152602001906001019062001861565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562001a6a57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180548060200260200160405190810160405280929190818152602001828054801562001a5157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620019fd5790505b5050505050815250508152602001906001019062001944565b50505050905090565b60006040518060400160405280600f81526020017f48656c6c6f2c204861726468617421000000000000000000000000000000000081525090506000602a90506000600190506000670de0b6b3a76400009050600063e04d4f9760e01b85858560405160240162001ae7939291906200318f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001bc6919062002e5d565b600060405180830381600087803b15801562001be157600080fd5b505af115801562001bf6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162001c849594939291906200309d565b600060405180830381600087803b15801562001c9f57600080fd5b505af115801562001cb4573d6000803e3d6000fd5b50505050602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001d47919062002e40565b6040516020818303038152906040528360405162001d67929190620030fa565b60405180910390a2602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001de2919062002e40565b604051602081830303815290604052836040518363ffffffff1660e01b815260040162001e11929190620030fa565b600060405180830381600087803b15801562001e2c57600080fd5b505af115801562001e41573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663c88a5e6d601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040162001ec792919062002f9f565b600060405180830381600087803b15801562001ee257600080fd5b505af115801562001ef7573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162001f859594939291906200309d565b600060405180830381600087803b15801562001fa057600080fd5b505af115801562001fb5573d6000803e3d6000fd5b50505050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f838360405162002025929190620032d9565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cff79cd83602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401620020af92919062002f11565b6000604051808303818588803b158015620020c957600080fd5b505af1158015620020de573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906200210a9190620026ac565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156200225c57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054806020026020016040519081016040528092919081815260200182805480156200224357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620021ef5790505b5050505050815250508152602001906001019062002136565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200233f578382906000526020600020018054620022ab90620036a8565b80601f0160208091040260200160405190810160405280929190818152602001828054620022d990620036a8565b80156200232a5780601f10620022fe576101008083540402835291602001916200232a565b820191906000526020600020905b8154815290600101906020018083116200230c57829003601f168201915b50505050508152602001906001019062002289565b50505050905090565b6000600860009054906101000a900460ff16156200237857600860009054906101000a900460ff16905062002478565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016200241f92919062002ee4565b60206040518083038186803b1580156200243857600080fd5b505afa1580156200244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200247391906200267a565b141590505b90565b606060158054806020026020016040519081016040528092919081815260200182805480156200250157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620024b6575b5050505050905090565b601f60009054906101000a900460ff1681565b611813806200393d83390190565b613972806200515083390190565b6112198062008ac283390190565b6111d48062009cdb83390190565b6110aa806200aeaf83390190565b613d56806200bf5983390190565b610bcd806200fcaf83390190565b6110d7806201087c83390190565b61282d806201195383390190565b6000620025b3620025ad8462003336565b6200330d565b905082815260208101848484011115620025d257620025d1620037ce565b5b620025df84828562003672565b509392505050565b600081519050620025f88162003908565b92915050565b6000815190506200260f8162003922565b92915050565b600082601f8301126200262d576200262c620037c9565b5b81516200263f8482602086016200259c565b91505092915050565b600060208284031215620026615762002660620037d8565b5b60006200267184828501620025e7565b91505092915050565b600060208284031215620026935762002692620037d8565b5b6000620026a384828501620025fe565b91505092915050565b600060208284031215620026c557620026c4620037d8565b5b600082015167ffffffffffffffff811115620026e657620026e5620037d3565b5b620026f48482850162002615565b91505092915050565b60006200270b838362002789565b60208301905092915050565b600062002725838362002b26565b60208301905092915050565b60006200273f838362002bf9565b905092915050565b600062002755838362002d65565b905092915050565b60006200276b838362002dad565b905092915050565b600062002781838362002dee565b905092915050565b62002794816200351c565b82525050565b620027a5816200351c565b82525050565b6000620027b882620033cc565b620027c4818562003472565b9350620027d1836200336c565b8060005b8381101562002808578151620027ec8882620026fd565b9750620027f98362003424565b925050600181019050620027d5565b5085935050505092915050565b60006200282282620033d7565b6200282e818562003483565b93506200283b836200337c565b8060005b838110156200287257815162002856888262002717565b9750620028638362003431565b9250506001810190506200283f565b5085935050505092915050565b60006200288c82620033e2565b62002898818562003494565b935083602082028501620028ac856200338c565b8060005b85811015620028ee5784840389528151620028cc858262002731565b9450620028d9836200343e565b925060208a01995050600181019050620028b0565b50829750879550505050505092915050565b60006200290d82620033e2565b620029198185620034a5565b9350836020820285016200292d856200338c565b8060005b858110156200296f57848403895281516200294d858262002731565b94506200295a836200343e565b925060208a0199505060018101905062002931565b50829750879550505050505092915050565b60006200298e82620033ed565b6200299a8185620034b6565b935083602082028501620029ae856200339c565b8060005b85811015620029f05784840389528151620029ce858262002747565b9450620029db836200344b565b925060208a01995050600181019050620029b2565b50829750879550505050505092915050565b600062002a0f82620033f8565b62002a1b8185620034c7565b93508360208202850162002a2f85620033ac565b8060005b8581101562002a71578484038952815162002a4f85826200275d565b945062002a5c8362003458565b925060208a0199505060018101905062002a33565b50829750879550505050505092915050565b600062002a908262003403565b62002a9c8185620034d8565b93508360208202850162002ab085620033bc565b8060005b8581101562002af2578484038952815162002ad0858262002773565b945062002add8362003465565b925060208a0199505060018101905062002ab4565b50829750879550505050505092915050565b62002b0f8162003530565b82525050565b62002b20816200353c565b82525050565b62002b318162003546565b82525050565b600062002b44826200340e565b62002b508185620034e9565b935062002b6281856020860162003672565b62002b6d81620037dd565b840191505092915050565b62002b8d62002b8782620035be565b62003714565b82525050565b62002b9e81620035d2565b82525050565b62002baf81620035e6565b82525050565b62002bc081620035fa565b82525050565b62002bd1816200360e565b82525050565b62002be28162003622565b82525050565b62002bf38162003636565b82525050565b600062002c068262003419565b62002c128185620034fa565b935062002c2481856020860162003672565b62002c2f81620037dd565b840191505092915050565b600062002c478262003419565b62002c5381856200350b565b935062002c6581856020860162003672565b62002c7081620037dd565b840191505092915050565b600062002c8a6003836200350b565b915062002c9782620037fb565b602082019050919050565b600062002cb16004836200350b565b915062002cbe8262003824565b602082019050919050565b600062002cd86004836200350b565b915062002ce5826200384d565b602082019050919050565b600062002cff6005836200350b565b915062002d0c8262003876565b602082019050919050565b600062002d266004836200350b565b915062002d33826200389f565b602082019050919050565b600062002d4d6003836200350b565b915062002d5a82620038c8565b602082019050919050565b6000604083016000830151848203600086015262002d84828262002bf9565b9150506020830151848203602086015262002da0828262002815565b9150508091505092915050565b600060408301600083015162002dc7600086018262002789565b506020830151848203602086015262002de182826200287f565b9150508091505092915050565b600060408301600083015162002e08600086018262002789565b506020830151848203602086015262002e22828262002815565b9150508091505092915050565b62002e3a81620035a7565b82525050565b600062002e4e828462002b78565b60148201915081905092915050565b600060208201905062002e7460008301846200279a565b92915050565b600060408201905062002e9160008301856200279a565b62002ea060208301846200279a565b9392505050565b600060608201905062002ebe60008301866200279a565b62002ecd60208301856200279a565b62002edc60408301846200279a565b949350505050565b600060408201905062002efb60008301856200279a565b62002f0a602083018462002b15565b9392505050565b600060408201905062002f2860008301856200279a565b818103602083015262002f3c818462002b37565b90509392505050565b600060408201905062002f5c60008301856200279a565b62002f6b602083018462002bb5565b9392505050565b600060408201905062002f8960008301856200279a565b62002f98602083018462002be8565b9392505050565b600060408201905062002fb660008301856200279a565b62002fc5602083018462002e2f565b9392505050565b6000602082019050818103600083015262002fe88184620027ab565b905092915050565b600060208201905081810360008301526200300c818462002900565b905092915050565b6000602082019050818103600083015262003030818462002981565b905092915050565b6000602082019050818103600083015262003054818462002a02565b905092915050565b6000602082019050818103600083015262003078818462002a83565b905092915050565b600060208201905062003097600083018462002b04565b92915050565b600060a082019050620030b4600083018862002b04565b620030c3602083018762002b04565b620030d2604083018662002b04565b620030e1606083018562002b04565b620030f060808301846200279a565b9695505050505050565b6000604082019050818103600083015262003116818562002b37565b905081810360208301526200312c818462002b37565b90509392505050565b60006040820190506200314c600083018562002bd7565b6200315b60208301846200279a565b9392505050565b600060408201905062003179600083018562002bd7565b62003188602083018462002bd7565b9392505050565b60006060820190508181036000830152620031ab818662002c3a565b9050620031bc602083018562002e2f565b620031cb604083018462002b04565b949350505050565b60006040820190508181036000830152620031ee8162002ca2565b90508181036020830152620032038162002cc9565b9050919050565b6000610100820190508181036000830152620032268162002cf0565b905081810360208301526200323b8162002d3e565b90506200324c604083018962002bc6565b6200325b606083018862002bd7565b6200326a608083018762002b93565b6200327960a083018662002ba4565b6200328860c08301856200279a565b6200329760e08301846200279a565b979650505050505050565b60006040820190508181036000830152620032bd8162002d17565b90508181036020830152620032d28162002c7b565b9050919050565b6000604082019050620032f0600083018562002e2f565b818103602083015262003304818462002b37565b90509392505050565b6000620033196200332c565b9050620033278282620036de565b919050565b6000604051905090565b600067ffffffffffffffff8211156200335457620033536200379a565b5b6200335f82620037dd565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620035298262003587565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60008190506200358282620038f1565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620035cb826200364a565b9050919050565b6000620035df8262003572565b9050919050565b6000620035f382620035a7565b9050919050565b60006200360782620035a7565b9050919050565b60006200361b82620035b1565b9050919050565b60006200362f82620035a7565b9050919050565b60006200364382620035a7565b9050919050565b600062003657826200365e565b9050919050565b60006200366b8262003587565b9050919050565b60005b838110156200369257808201518184015260208101905062003675565b83811115620036a2576000848401525b50505050565b60006002820490506001821680620036c157607f821691505b60208210811415620036d857620036d76200376b565b5b50919050565b620036e982620037dd565b810181811067ffffffffffffffff821117156200370b576200370a6200379a565b5b80604052505050565b6000620037218262003728565b9050919050565b60006200373582620037ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f54544b0000000000000000000000000000000000000000000000000000000000600082015250565b7f7a65746100000000000000000000000000000000000000000000000000000000600082015250565b7f5a45544100000000000000000000000000000000000000000000000000000000600082015250565b7f544f4b454e000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b7f544b4e0000000000000000000000000000000000000000000000000000000000600082015250565b600381106200390557620039046200373c565b5b50565b620039138162003530565b81146200391f57600080fd5b50565b6200392d816200353c565b81146200393957600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c6138f16100816000396000818161082a015281816108b901528181610c1b01528181610caa01526110c601526138f16000f3fe6080604052600436106101355760003560e01c8063715018a6116100ab578063b8969bd41161006f578063b8969bd4146103b4578063dda79b75146103dd578063e8f9cb3a14610408578063f2fde38b14610433578063f340fa011461045c578063f45346dc1461047857610135565b8063715018a6146103045780638c6f037f1461031b5780638da5cb5b146103445780638ee0f9f21461036f578063ae7a3a6f1461038b57610135565b8063485cc955116100fd578063485cc955146102015780634f1ef2861461022a5780635131ab591461024657806352d1902d1461028357806357bec62f146102ae5780635b112591146102d957610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806329c59b5d146101bc5780633659cfe6146101d8575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c919061285c565b6104a1565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612951565b6105d4565b005b6101a660048036038101906101a19190612951565b610640565b6040516101b39190612fe4565b60405180910390f35b6101d660048036038101906101d19190612951565b6106ae565b005b3480156101e457600080fd5b506101ff60048036038101906101fa919061285c565b610828565b005b34801561020d57600080fd5b5061022860048036038101906102239190612889565b6109b1565b005b610244600480360381019061023f91906129b1565b610c19565b005b34801561025257600080fd5b5061026d600480360381019061026891906128c9565b610d56565b60405161027a9190612fe4565b60405180910390f35b34801561028f57600080fd5b506102986110c2565b6040516102a59190612fa5565b60405180910390f35b3480156102ba57600080fd5b506102c361117b565b6040516102d09190612f01565b60405180910390f35b3480156102e557600080fd5b506102ee6111a1565b6040516102fb9190612f01565b60405180910390f35b34801561031057600080fd5b506103196111c7565b005b34801561032757600080fd5b50610342600480360381019061033d9190612a60565b6111db565b005b34801561035057600080fd5b50610359611359565b6040516103669190612f01565b60405180910390f35b61038960048036038101906103849190612951565b611383565b005b34801561039757600080fd5b506103b260048036038101906103ad919061285c565b6114ee565b005b3480156103c057600080fd5b506103db60048036038101906103d691906128c9565b611621565b005b3480156103e957600080fd5b506103f2611764565b6040516103ff9190612f01565b60405180910390f35b34801561041457600080fd5b5061041d61178a565b60405161042a9190612f01565b60405180910390f35b34801561043f57600080fd5b5061045a6004803603810190610455919061285c565b6117b0565b005b6104766004803603810190610471919061285c565b611834565b005b34801561048457600080fd5b5061049f600480360381019061049a9190612a0d565b6119a8565b005b600073ffffffffffffffffffffffffffffffffffffffff1660cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610529576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610590576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610633929190612fc0565b60405180910390a3505050565b6060600061064f858585611b20565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161069b9392919061325f565b60405180910390a2809150509392505050565b60003414156106e9576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161073190612eec565b60006040518083038185875af1925050503d806000811461076e576040519150601f19603f3d011682016040523d82523d6000602084013e610773565b606091505b505090506000151581151514156107b6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161081a94939291906131e3565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90613063565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108f6611bd7565b73ffffffffffffffffffffffffffffffffffffffff161461094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390613083565b60405180910390fd5b61095581611c2e565b6109ae81600067ffffffffffffffff81111561097457610973613420565b5b6040519080825280601f01601f1916602001820160405280156109a65781602001600182028036833780820191505090505b506000611c39565b50565b60008060019054906101000a900460ff161590508080156109e25750600160008054906101000a900460ff1660ff16105b80610a0f57506109f130611db6565b158015610a0e5750600160008054906101000a900460ff1660ff16145b5b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590613103565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610a8b576001600060016101000a81548160ff0219169083151502179055505b610a93611dd9565b610a9b611e32565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b025750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610b39576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610c145760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610c0b9190613006565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90613063565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ce7611bd7565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613083565b60405180910390fd5b610d4682611c2e565b610d5282826001611c39565b5050565b60606000841415610d93576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9d8686611e83565b610dd3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b8152600401610e0e929190612f7c565b602060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190612ae8565b610e96576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ea3868585611b20565b9050610eaf8787611e83565b610ee5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f209190612f01565b60206040518083038186803b158015610f3857600080fd5b505afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190612b42565b9050600081111561104b57600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561101e5760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b61104981838b73ffffffffffffffffffffffffffffffffffffffff16611f1b9092919063ffffffff16565b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828888886040516110ac9392919061325f565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611149906130c3565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111cf611fa1565b6111d9600061201f565b565b6000841415611216576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112b95760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b6112e63382878773ffffffffffffffffffffffffffffffffffffffff166120e5909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48787878760405161134994939291906131e3565b60405180910390a3505050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516113aa90612eec565b60006040518083038185875af1925050503d80600081146113e7576040519150601f19603f3d011682016040523d82523d6000602084013e6113ec565b606091505b509150915081611428576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401611463929190612fc0565b600060405180830381600087803b15801561147d57600080fd5b505af1158015611491573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516114df9392919061325f565b60405180910390a25050505050565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600083141561165c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168784848773ffffffffffffffffffffffffffffffffffffffff16611f1b9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016116c2929190612fc0565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516117559392919061325f565b60405180910390a35050505050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b8611fa1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613043565b60405180910390fd5b6118318161201f565b50565b600034141561186f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516118b790612eec565b60006040518083038185875af1925050503d80600081146118f4576040519150601f19603f3d011682016040523d82523d6000602084013e6118f9565b606091505b5050905060001515811515141561193c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161199c929190613223565b60405180910390a35050565b60008214156119e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060cc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a865760cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b611ab33382858573ffffffffffffffffffffffffffffffffffffffff166120e5909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48585604051611b12929190613223565b60405180910390a350505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611b4d929190612ebc565b60006040518083038185875af1925050503d8060008114611b8a576040519150601f19603f3d011682016040523d82523d6000602084013e611b8f565b606091505b509150915081611bcb576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c057f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61216e565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c36611fa1565b50565b611c657f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612178565b60000160009054906101000a900460ff1615611c8957611c8483612182565b611db1565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ccf57600080fd5b505afa925050508015611d0057506040513d601f19601f82011682018060405250810190611cfd9190612b15565b60015b611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3690613123565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b906130e3565b60405180910390fd5b50611db083838361223b565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f906131a3565b60405180910390fd5b611e30612267565b565b600060019054906101000a900460ff16611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e78906131a3565b60405180910390fd5b565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ec1929190612f53565b602060405180830381600087803b158015611edb57600080fd5b505af1158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f139190612ae8565b905092915050565b611f9c8363a9059cbb60e01b8484604051602401611f3a929190612f7c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122c8565b505050565b611fa961238f565b73ffffffffffffffffffffffffffffffffffffffff16611fc7611359565b73ffffffffffffffffffffffffffffffffffffffff161461201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613163565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612168846323b872dd60e01b85858560405160240161210693929190612f1c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122c8565b50505050565b6000819050919050565b6000819050919050565b61218b81611db6565b6121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190613143565b60405180910390fd5b806121f77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61216e565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61224483612397565b6000825111806122515750805b156122625761226083836123e6565b505b505050565b600060019054906101000a900460ff166122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906131a3565b60405180910390fd5b6122c66122c161238f565b61201f565b565b600061232a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124139092919063ffffffff16565b905060008151111561238a578080602001905181019061234a9190612ae8565b612389576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612380906131c3565b60405180910390fd5b5b505050565b600033905090565b6123a081612182565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061240b83836040518060600160405280602781526020016138956027913961242b565b905092915050565b606061242284846000856124b1565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516124559190612ed5565b600060405180830381855af49150503d8060008114612490576040519150601f19603f3d011682016040523d82523d6000602084013e612495565b606091505b50915091506124a68683838761257e565b925050509392505050565b6060824710156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed906130a3565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161251f9190612ed5565b60006040518083038185875af1925050503d806000811461255c576040519150601f19603f3d011682016040523d82523d6000602084013e612561565b606091505b5091509150612572878383876125f4565b92505050949350505050565b606083156125e1576000835114156125d95761259985611db6565b6125d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cf90613183565b60405180910390fd5b5b8290506125ec565b6125eb838361266a565b5b949350505050565b606083156126575760008351141561264f5761260f856126ba565b61264e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264590613183565b60405180910390fd5b5b829050612662565b61266183836126dd565b5b949350505050565b60008251111561267d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190613021565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156126f05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127249190613021565b60405180910390fd5b600061274061273b846132b6565b613291565b90508281526020810184848401111561275c5761275b61345e565b5b6127678482856133ad565b509392505050565b60008135905061277e81613838565b92915050565b6000815190506127938161384f565b92915050565b6000815190506127a881613866565b92915050565b60008083601f8401126127c4576127c3613454565b5b8235905067ffffffffffffffff8111156127e1576127e061344f565b5b6020830191508360018202830111156127fd576127fc613459565b5b9250929050565b600082601f83011261281957612818613454565b5b813561282984826020860161272d565b91505092915050565b6000813590506128418161387d565b92915050565b6000815190506128568161387d565b92915050565b60006020828403121561287257612871613468565b5b60006128808482850161276f565b91505092915050565b600080604083850312156128a05761289f613468565b5b60006128ae8582860161276f565b92505060206128bf8582860161276f565b9150509250929050565b6000806000806000608086880312156128e5576128e4613468565b5b60006128f38882890161276f565b95505060206129048882890161276f565b945050604061291588828901612832565b935050606086013567ffffffffffffffff81111561293657612935613463565b5b612942888289016127ae565b92509250509295509295909350565b60008060006040848603121561296a57612969613468565b5b60006129788682870161276f565b935050602084013567ffffffffffffffff81111561299957612998613463565b5b6129a5868287016127ae565b92509250509250925092565b600080604083850312156129c8576129c7613468565b5b60006129d68582860161276f565b925050602083013567ffffffffffffffff8111156129f7576129f6613463565b5b612a0385828601612804565b9150509250929050565b600080600060608486031215612a2657612a25613468565b5b6000612a348682870161276f565b9350506020612a4586828701612832565b9250506040612a568682870161276f565b9150509250925092565b600080600080600060808688031215612a7c57612a7b613468565b5b6000612a8a8882890161276f565b9550506020612a9b88828901612832565b9450506040612aac8882890161276f565b935050606086013567ffffffffffffffff811115612acd57612acc613463565b5b612ad9888289016127ae565b92509250509295509295909350565b600060208284031215612afe57612afd613468565b5b6000612b0c84828501612784565b91505092915050565b600060208284031215612b2b57612b2a613468565b5b6000612b3984828501612799565b91505092915050565b600060208284031215612b5857612b57613468565b5b6000612b6684828501612847565b91505092915050565b612b788161332a565b82525050565b612b8781613348565b82525050565b6000612b9983856132fd565b9350612ba68385846133ad565b612baf8361346d565b840190509392505050565b6000612bc6838561330e565b9350612bd38385846133ad565b82840190509392505050565b6000612bea826132e7565b612bf481856132fd565b9350612c048185602086016133bc565b612c0d8161346d565b840191505092915050565b6000612c23826132e7565b612c2d818561330e565b9350612c3d8185602086016133bc565b80840191505092915050565b612c5281613389565b82525050565b612c618161339b565b82525050565b6000612c72826132f2565b612c7c8185613319565b9350612c8c8185602086016133bc565b612c958161346d565b840191505092915050565b6000612cad602683613319565b9150612cb88261347e565b604082019050919050565b6000612cd0602c83613319565b9150612cdb826134cd565b604082019050919050565b6000612cf3602c83613319565b9150612cfe8261351c565b604082019050919050565b6000612d16602683613319565b9150612d218261356b565b604082019050919050565b6000612d39603883613319565b9150612d44826135ba565b604082019050919050565b6000612d5c602983613319565b9150612d6782613609565b604082019050919050565b6000612d7f602e83613319565b9150612d8a82613658565b604082019050919050565b6000612da2602e83613319565b9150612dad826136a7565b604082019050919050565b6000612dc5602d83613319565b9150612dd0826136f6565b604082019050919050565b6000612de8602083613319565b9150612df382613745565b602082019050919050565b6000612e0b6000836132fd565b9150612e168261376e565b600082019050919050565b6000612e2e60008361330e565b9150612e398261376e565b600082019050919050565b6000612e51601d83613319565b9150612e5c82613771565b602082019050919050565b6000612e74602b83613319565b9150612e7f8261379a565b604082019050919050565b6000612e97602a83613319565b9150612ea2826137e9565b604082019050919050565b612eb681613372565b82525050565b6000612ec9828486612bba565b91508190509392505050565b6000612ee18284612c18565b915081905092915050565b6000612ef782612e21565b9150819050919050565b6000602082019050612f166000830184612b6f565b92915050565b6000606082019050612f316000830186612b6f565b612f3e6020830185612b6f565b612f4b6040830184612ead565b949350505050565b6000604082019050612f686000830185612b6f565b612f756020830184612c49565b9392505050565b6000604082019050612f916000830185612b6f565b612f9e6020830184612ead565b9392505050565b6000602082019050612fba6000830184612b7e565b92915050565b60006020820190508181036000830152612fdb818486612b8d565b90509392505050565b60006020820190508181036000830152612ffe8184612bdf565b905092915050565b600060208201905061301b6000830184612c58565b92915050565b6000602082019050818103600083015261303b8184612c67565b905092915050565b6000602082019050818103600083015261305c81612ca0565b9050919050565b6000602082019050818103600083015261307c81612cc3565b9050919050565b6000602082019050818103600083015261309c81612ce6565b9050919050565b600060208201905081810360008301526130bc81612d09565b9050919050565b600060208201905081810360008301526130dc81612d2c565b9050919050565b600060208201905081810360008301526130fc81612d4f565b9050919050565b6000602082019050818103600083015261311c81612d72565b9050919050565b6000602082019050818103600083015261313c81612d95565b9050919050565b6000602082019050818103600083015261315c81612db8565b9050919050565b6000602082019050818103600083015261317c81612ddb565b9050919050565b6000602082019050818103600083015261319c81612e44565b9050919050565b600060208201905081810360008301526131bc81612e67565b9050919050565b600060208201905081810360008301526131dc81612e8a565b9050919050565b60006060820190506131f86000830187612ead565b6132056020830186612b6f565b8181036040830152613218818486612b8d565b905095945050505050565b60006060820190506132386000830185612ead565b6132456020830184612b6f565b818103604083015261325681612dfe565b90509392505050565b60006040820190506132746000830186612ead565b8181036020830152613287818486612b8d565b9050949350505050565b600061329b6132ac565b90506132a782826133ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156132d1576132d0613420565b5b6132da8261346d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061333582613352565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061339482613372565b9050919050565b60006133a68261337c565b9050919050565b82818337600083830152505050565b60005b838110156133da5780820151818401526020810190506133bf565b838111156133e9576000848401525b50505050565b6133f88261346d565b810181811067ffffffffffffffff8211171561341757613416613420565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6138418161332a565b811461384c57600080fd5b50565b6138588161333c565b811461386357600080fd5b50565b61386f81613348565b811461387a57600080fd5b50565b61388681613372565b811461389157600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209f492532b152769362ab43ba037efaf19136209d3a4482b99c545df62acdbfa164736f6c6343000807003360806040523480156200001157600080fd5b506040516200121938038062001219833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b61107e806200019b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063116191b61461005157806321fc65f21461006f578063c8a023621461008b578063d9caed12146100a7575b600080fd5b6100596100c3565b6040516100669190610c21565b60405180910390f35b61008960048036038101906100849190610945565b6100e9565b005b6100a560048036038101906100a09190610945565b610271565b005b6100c160048036038101906100bc91906108f2565b6103d3565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100f1610478565b61013e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b81526004016101a1959493929190610baa565b600060405180830381600087803b1580156101bb57600080fd5b505af11580156101cf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101f891906109fa565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161025a93929190610cf9565b60405180910390a361026a61054e565b5050505050565b610279610478565b6102c6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610329959493929190610baa565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516103bc93929190610cf9565b60405180910390a36103cc61054e565b5050505050565b6103db610478565b61040682828573ffffffffffffffffffffffffffffffffffffffff166104c89092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104639190610cde565b60405180910390a361047361054e565b505050565b600260005414156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b590610cbe565b60405180910390fd5b6002600081905550565b6105498363a9059cbb60e01b84846040516024016104e7929190610bf8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610558565b505050565b6001600081905550565b60006105ba826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661061f9092919063ffffffff16565b905060008151111561061a57808060200190518101906105da91906109cd565b610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061090610c9e565b60405180910390fd5b5b505050565b606061062e8484600085610637565b90509392505050565b60608247101561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610c5e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106a59190610b93565b60006040518083038185875af1925050503d80600081146106e2576040519150601f19603f3d011682016040523d82523d6000602084013e6106e7565b606091505b50915091506106f887838387610704565b92505050949350505050565b606083156107675760008351141561075f5761071f8561077a565b61075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590610c7e565b60405180910390fd5b5b829050610772565b610771838361079d565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156107b05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e49190610c3c565b60405180910390fd5b60006108006107fb84610d50565b610d2b565b90508281526020810184848401111561081c5761081b610ef3565b5b610827848285610e51565b509392505050565b60008135905061083e81611003565b92915050565b6000815190506108538161101a565b92915050565b60008083601f84011261086f5761086e610ee9565b5b8235905067ffffffffffffffff81111561088c5761088b610ee4565b5b6020830191508360018202830111156108a8576108a7610eee565b5b9250929050565b600082601f8301126108c4576108c3610ee9565b5b81516108d48482602086016107ed565b91505092915050565b6000813590506108ec81611031565b92915050565b60008060006060848603121561090b5761090a610efd565b5b60006109198682870161082f565b935050602061092a8682870161082f565b925050604061093b868287016108dd565b9150509250925092565b60008060008060006080868803121561096157610960610efd565b5b600061096f8882890161082f565b95505060206109808882890161082f565b9450506040610991888289016108dd565b935050606086013567ffffffffffffffff8111156109b2576109b1610ef8565b5b6109be88828901610859565b92509250509295509295909350565b6000602082840312156109e3576109e2610efd565b5b60006109f184828501610844565b91505092915050565b600060208284031215610a1057610a0f610efd565b5b600082015167ffffffffffffffff811115610a2e57610a2d610ef8565b5b610a3a848285016108af565b91505092915050565b610a4c81610dc4565b82525050565b6000610a5e8385610d97565b9350610a6b838584610e42565b610a7483610f02565b840190509392505050565b6000610a8a82610d81565b610a948185610da8565b9350610aa4818560208601610e51565b80840191505092915050565b610ab981610e0c565b82525050565b6000610aca82610d8c565b610ad48185610db3565b9350610ae4818560208601610e51565b610aed81610f02565b840191505092915050565b6000610b05602683610db3565b9150610b1082610f13565b604082019050919050565b6000610b28601d83610db3565b9150610b3382610f62565b602082019050919050565b6000610b4b602a83610db3565b9150610b5682610f8b565b604082019050919050565b6000610b6e601f83610db3565b9150610b7982610fda565b602082019050919050565b610b8d81610e02565b82525050565b6000610b9f8284610a7f565b915081905092915050565b6000608082019050610bbf6000830188610a43565b610bcc6020830187610a43565b610bd96040830186610b84565b8181036060830152610bec818486610a52565b90509695505050505050565b6000604082019050610c0d6000830185610a43565b610c1a6020830184610b84565b9392505050565b6000602082019050610c366000830184610ab0565b92915050565b60006020820190508181036000830152610c568184610abf565b905092915050565b60006020820190508181036000830152610c7781610af8565b9050919050565b60006020820190508181036000830152610c9781610b1b565b9050919050565b60006020820190508181036000830152610cb781610b3e565b9050919050565b60006020820190508181036000830152610cd781610b61565b9050919050565b6000602082019050610cf36000830184610b84565b92915050565b6000604082019050610d0e6000830186610b84565b8181036020830152610d21818486610a52565b9050949350505050565b6000610d35610d46565b9050610d418282610e84565b919050565b6000604051905090565b600067ffffffffffffffff821115610d6b57610d6a610eb5565b5b610d7482610f02565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610dcf82610de2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610e1782610e1e565b9050919050565b6000610e2982610e30565b9050919050565b6000610e3b82610de2565b9050919050565b82818337600083830152505050565b60005b83811015610e6f578082015181840152602081019050610e54565b83811115610e7e576000848401525b50505050565b610e8d82610f02565b810181811067ffffffffffffffff82111715610eac57610eab610eb5565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61100c81610dc4565b811461101757600080fd5b50565b61102381610dd6565b811461102e57600080fd5b50565b61103a81610e02565b811461104557600080fd5b5056fea2646970667358221220326721c0766c1858ba7ddfe1b887e1200ee1a6de1216da56899a4be08731568f64736f6c6343000807003360c06040523480156200001157600080fd5b50604051620011d4380380620011d483398181016040528101906200003791906200016c565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505062000206565b6000815190506200016681620001ec565b92915050565b60008060408385031215620001865762000185620001e7565b5b6000620001968582860162000155565b9250506020620001a98582860162000155565b9150509250929050565b6000620001c082620001c7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001f781620001b3565b81146200020357600080fd5b50565b60805160601c60a05160601c610f81620002536000396000818160f4015281816101760152818161029701526102c801526000818160d20152818161013a01526102730152610f816000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806302a04c0d14610051578063116191b61461006d578063e8f9cb3a1461008b578063f3fef3a3146100a9575b600080fd5b61006b60048036038101906100669190610820565b6100c5565b005b610075610271565b6040516100829190610b12565b60405180910390f35b610093610295565b6040516100a09190610af7565b60405180910390f35b6100c360048036038101906100be91906107e0565b6102b9565b005b6100cd610366565b6101387f0000000000000000000000000000000000000000000000000000000000000000847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103b69092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000868686866040518663ffffffff1660e01b81526004016101b9959493929190610a80565b600060405180830381600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061021091906108c1565b508373ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced84848460405161025b93929190610bea565b60405180910390a261026b61043c565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c1610366565b61030c82827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166103b69092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040516103529190610bcf565b60405180910390a261036261043c565b5050565b600260005414156103ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a390610baf565b60405180910390fd5b6002600081905550565b6104378363a9059cbb60e01b84846040516024016103d5929190610ace565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610446565b505050565b6001600081905550565b60006104a8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661050d9092919063ffffffff16565b905060008151111561050857808060200190518101906104c89190610894565b610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe90610b8f565b60405180910390fd5b5b505050565b606061051c8484600085610525565b90509392505050565b60608247101561056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056190610b4f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105939190610a69565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e6878383876105f2565b92505050949350505050565b606083156106555760008351141561064d5761060d85610668565b61064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610b6f565b60405180910390fd5b5b829050610660565b61065f838361068b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561069e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d29190610b2d565b60405180910390fd5b60006106ee6106e984610c41565b610c1c565b90508281526020810184848401111561070a57610709610df6565b5b610715848285610d54565b509392505050565b60008135905061072c81610f06565b92915050565b60008151905061074181610f1d565b92915050565b60008083601f84011261075d5761075c610dec565b5b8235905067ffffffffffffffff81111561077a57610779610de7565b5b60208301915083600182028301111561079657610795610df1565b5b9250929050565b600082601f8301126107b2576107b1610dec565b5b81516107c28482602086016106db565b91505092915050565b6000813590506107da81610f34565b92915050565b600080604083850312156107f7576107f6610e00565b5b60006108058582860161071d565b9250506020610816858286016107cb565b9150509250929050565b6000806000806060858703121561083a57610839610e00565b5b60006108488782880161071d565b9450506020610859878288016107cb565b935050604085013567ffffffffffffffff81111561087a57610879610dfb565b5b61088687828801610747565b925092505092959194509250565b6000602082840312156108aa576108a9610e00565b5b60006108b884828501610732565b91505092915050565b6000602082840312156108d7576108d6610e00565b5b600082015167ffffffffffffffff8111156108f5576108f4610dfb565b5b6109018482850161079d565b91505092915050565b61091381610cb5565b82525050565b60006109258385610c88565b9350610932838584610d45565b61093b83610e05565b840190509392505050565b600061095182610c72565b61095b8185610c99565b935061096b818560208601610d54565b80840191505092915050565b61098081610cfd565b82525050565b61098f81610d0f565b82525050565b60006109a082610c7d565b6109aa8185610ca4565b93506109ba818560208601610d54565b6109c381610e05565b840191505092915050565b60006109db602683610ca4565b91506109e682610e16565b604082019050919050565b60006109fe601d83610ca4565b9150610a0982610e65565b602082019050919050565b6000610a21602a83610ca4565b9150610a2c82610e8e565b604082019050919050565b6000610a44601f83610ca4565b9150610a4f82610edd565b602082019050919050565b610a6381610cf3565b82525050565b6000610a758284610946565b915081905092915050565b6000608082019050610a95600083018861090a565b610aa2602083018761090a565b610aaf6040830186610a5a565b8181036060830152610ac2818486610919565b90509695505050505050565b6000604082019050610ae3600083018561090a565b610af06020830184610a5a565b9392505050565b6000602082019050610b0c6000830184610977565b92915050565b6000602082019050610b276000830184610986565b92915050565b60006020820190508181036000830152610b478184610995565b905092915050565b60006020820190508181036000830152610b68816109ce565b9050919050565b60006020820190508181036000830152610b88816109f1565b9050919050565b60006020820190508181036000830152610ba881610a14565b9050919050565b60006020820190508181036000830152610bc881610a37565b9050919050565b6000602082019050610be46000830184610a5a565b92915050565b6000604082019050610bff6000830186610a5a565b8181036020830152610c12818486610919565b9050949350505050565b6000610c26610c37565b9050610c328282610d87565b919050565b6000604051905090565b600067ffffffffffffffff821115610c5c57610c5b610db8565b5b610c6582610e05565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cc082610cd3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d0882610d21565b9050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610cd3565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b610d9082610e05565b810181811067ffffffffffffffff82111715610daf57610dae610db8565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610f0f81610cb5565b8114610f1a57600080fd5b50565b610f2681610cc7565b8114610f3157600080fd5b50565b610f3d81610cf3565b8114610f4857600080fd5b5056fea2646970667358221220da212ba2d53390dc4639c6db16c2028d714e1179b80a39e1f053509901d87aeb64736f6c63430008070033608060405234801561001057600080fd5b5061108a806100206000396000f3fe60806040526004361061003f5760003560e01c8063357fc5a2146100445780636ed701691461006d578063e04d4f9714610084578063f05b6abf146100a0575b600080fd5b34801561005057600080fd5b5061006b6004803603810190610066919061085a565b6100c9565b005b34801561007957600080fd5b50610082610138565b005b61009e600480360381019061009991906107eb565b610171565b005b3480156100ac57600080fd5b506100c760048036038101906100c29190610733565b6101b5565b005b6100f63382858573ffffffffffffffffffffffffffffffffffffffff166101f7909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af603384848460405161012b9493929190610bb0565b60405180910390a1505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101679190610b0b565b60405180910390a1565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516101a8959493929190610bf5565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516101ea9493929190610b5d565b60405180910390a1505050565b61027a846323b872dd60e01b85858560405160240161021893929190610b26565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610280565b50505050565b60006102e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166103479092919063ffffffff16565b9050600081511115610342578080602001905181019061030291906107be565b610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890610cb1565b60405180910390fd5b5b505050565b6060610356848460008561035f565b90509392505050565b6060824710156103a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039b90610c71565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516103cd9190610af4565b60006040518083038185875af1925050503d806000811461040a576040519150601f19603f3d011682016040523d82523d6000602084013e61040f565b606091505b50915091506104208783838761042c565b92505050949350505050565b6060831561048f5760008351141561048757610447856104a2565b610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90610c91565b60405180910390fd5b5b82905061049a565b61049983836104c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156104d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050c9190610c4f565b60405180910390fd5b600061052861052384610cf6565b610cd1565b9050808382526020820190508285602086028201111561054b5761054a610f23565b5b60005b8581101561059957813567ffffffffffffffff81111561057157610570610f1e565b5b80860161057e89826106f0565b8552602085019450602084019350505060018101905061054e565b5050509392505050565b60006105b66105b184610d22565b610cd1565b905080838252602082019050828560208602820111156105d9576105d8610f23565b5b60005b8581101561060957816105ef888261071e565b8452602084019350602083019250506001810190506105dc565b5050509392505050565b600061062661062184610d4e565b610cd1565b90508281526020810184848401111561064257610641610f28565b5b61064d848285610e7c565b509392505050565b6000813590506106648161100f565b92915050565b600082601f83011261067f5761067e610f1e565b5b813561068f848260208601610515565b91505092915050565b600082601f8301126106ad576106ac610f1e565b5b81356106bd8482602086016105a3565b91505092915050565b6000813590506106d581611026565b92915050565b6000815190506106ea81611026565b92915050565b600082601f83011261070557610704610f1e565b5b8135610715848260208601610613565b91505092915050565b60008135905061072d8161103d565b92915050565b60008060006060848603121561074c5761074b610f32565b5b600084013567ffffffffffffffff81111561076a57610769610f2d565b5b6107768682870161066a565b935050602084013567ffffffffffffffff81111561079757610796610f2d565b5b6107a386828701610698565b92505060406107b4868287016106c6565b9150509250925092565b6000602082840312156107d4576107d3610f32565b5b60006107e2848285016106db565b91505092915050565b60008060006060848603121561080457610803610f32565b5b600084013567ffffffffffffffff81111561082257610821610f2d565b5b61082e868287016106f0565b935050602061083f8682870161071e565b9250506040610850868287016106c6565b9150509250925092565b60008060006060848603121561087357610872610f32565b5b60006108818682870161071e565b935050602061089286828701610655565b92505060406108a386828701610655565b9150509250925092565b60006108b983836109fb565b905092915050565b60006108cd8383610ad6565b60208301905092915050565b6108e281610e34565b82525050565b60006108f382610d9f565b6108fd8185610de5565b93508360208202850161090f85610d7f565b8060005b8581101561094b578484038952815161092c85826108ad565b945061093783610dcb565b925060208a01995050600181019050610913565b50829750879550505050505092915050565b600061096882610daa565b6109728185610df6565b935061097d83610d8f565b8060005b838110156109ae57815161099588826108c1565b97506109a083610dd8565b925050600181019050610981565b5085935050505092915050565b6109c481610e46565b82525050565b60006109d582610db5565b6109df8185610e07565b93506109ef818560208601610e8b565b80840191505092915050565b6000610a0682610dc0565b610a108185610e12565b9350610a20818560208601610e8b565b610a2981610f37565b840191505092915050565b6000610a3f82610dc0565b610a498185610e23565b9350610a59818560208601610e8b565b610a6281610f37565b840191505092915050565b6000610a7a602683610e23565b9150610a8582610f48565b604082019050919050565b6000610a9d601d83610e23565b9150610aa882610f97565b602082019050919050565b6000610ac0602a83610e23565b9150610acb82610fc0565b604082019050919050565b610adf81610e72565b82525050565b610aee81610e72565b82525050565b6000610b0082846109ca565b915081905092915050565b6000602082019050610b2060008301846108d9565b92915050565b6000606082019050610b3b60008301866108d9565b610b4860208301856108d9565b610b556040830184610ae5565b949350505050565b6000608082019050610b7260008301876108d9565b8181036020830152610b8481866108e8565b90508181036040830152610b98818561095d565b9050610ba760608301846109bb565b95945050505050565b6000608082019050610bc560008301876108d9565b610bd26020830186610ae5565b610bdf60408301856108d9565b610bec60608301846108d9565b95945050505050565b600060a082019050610c0a60008301886108d9565b610c176020830187610ae5565b8181036040830152610c298186610a34565b9050610c386060830185610ae5565b610c4560808301846109bb565b9695505050505050565b60006020820190508181036000830152610c698184610a34565b905092915050565b60006020820190508181036000830152610c8a81610a6d565b9050919050565b60006020820190508181036000830152610caa81610a90565b9050919050565b60006020820190508181036000830152610cca81610ab3565b9050919050565b6000610cdb610cec565b9050610ce78282610ebe565b919050565b6000604051905090565b600067ffffffffffffffff821115610d1157610d10610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d3d57610d3c610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d6957610d68610eef565b5b610d7282610f37565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610e3f82610e52565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610ea9578082015181840152602081019050610e8e565b83811115610eb8576000848401525b50505050565b610ec782610f37565b810181811067ffffffffffffffff82111715610ee657610ee5610eef565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61101881610e34565b811461102357600080fd5b50565b61102f81610e46565b811461103a57600080fd5b50565b61104681610e72565b811461105157600080fd5b5056fea2646970667358221220086a1c9f56ed96506c7198d50cf431a5b03003c16cd4168d2395cdedfc1ac06164736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613b1362000243600039600081816108d30152818161096201528181610b6801528181610bf70152610ca70152613b136000f3fe60806040526004361061011e5760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610373578063c39aca371461039c578063c4d66de8146103c5578063f2fde38b146103ee578063f45346dc146104175761011e565b806352d1902d146102b4578063715018a6146102df5780637993c1e0146102f65780638da5cb5b1461031f578063a613f3bb1461034a5761011e565b80632e1a7d4d116100e75780632e1a7d4d146101f25780633659cfe61461021b5780633ce4a5bc14610244578063430e8e321461026f5780634f1ef286146102985761011e565b8062173d46146101235780630ac7c44c1461014e578063135390f91461017757806321501a95146101a0578063267e75a0146101c9575b600080fd5b34801561012f57600080fd5b50610138610440565b6040516101459190612f7d565b60405180910390f35b34801561015a57600080fd5b50610175600480360381019061017091906126c5565b610466565b005b34801561018357600080fd5b5061019e60048036038101906101999190612741565b6104bd565b005b3480156101ac57600080fd5b506101c760048036038101906101c291906129c0565b6105a4565b005b3480156101d557600080fd5b506101f060048036038101906101eb9190612abe565b610773565b005b3480156101fe57600080fd5b5061021960048036038101906102149190612a64565b610825565b005b34801561022757600080fd5b50610242600480360381019061023d919061254f565b6108d1565b005b34801561025057600080fd5b50610259610a5a565b6040516102669190612f7d565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612854565b610a72565b005b6102b260048036038101906102ad919061257c565b610b66565b005b3480156102c057600080fd5b506102c9610ca3565b6040516102d691906131b4565b60405180910390f35b3480156102eb57600080fd5b506102f4610d5c565b005b34801561030257600080fd5b5061031d600480360381019061031891906127b0565b610d70565b005b34801561032b57600080fd5b50610334610e5d565b6040516103419190612f7d565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190612854565b610e87565b005b34801561037f57600080fd5b5061039a6004803603810190610395919061290a565b6110b9565b005b3480156103a857600080fd5b506103c360048036038101906103be919061290a565b6111ad565b005b3480156103d157600080fd5b506103ec60048036038101906103e7919061254f565b6113df565b005b3480156103fa57600080fd5b506104156004803603810190610410919061254f565b611567565b005b34801561042357600080fd5b5061043e60048036038101906104399190612618565b6115eb565b005b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104b0939291906131cf565b60405180910390a2505050565b60006104c983836117a7565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105859190612a91565b60405161059695949392919061311e565b60405180910390a250505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061069657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156106cd576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d78484611a97565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161073a9594939291906133fa565b600060405180830381600087803b15801561075457600080fd5b505af1158015610768573d6000803e3d6000fd5b505050505050505050565b6107918373735b14bb79463307aacbed86daf3322b1e6226ab611a97565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716600073735b14bb79463307aacbed86daf3322b1e6226ab6040516020016107f09190612f36565b6040516020818303038152906040528660008088886040516108189796959493929190612fcf565b60405180910390a2505050565b6108438173735b14bb79463307aacbed86daf3322b1e6226ab611a97565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716600073735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108a29190612f36565b604051602081830303815290604052846000806040516108c6959493929190613040565b60405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790613265565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661099f611cb3565b73ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec90613285565b60405180910390fd5b6109fe81611d0a565b610a5781600067ffffffffffffffff811115610a1d57610a1c6136bf565b5b6040519080825280601f01601f191660200182016040528015610a4f5781602001600182028036833780820191505090505b506000611d15565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610b2c9594939291906133a5565b600060405180830381600087803b158015610b4657600080fd5b505af1158015610b5a573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90613265565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c34611cb3565b73ffffffffffffffffffffffffffffffffffffffff1614610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190613285565b60405180910390fd5b610c9382611d0a565b610c9f82826001611d15565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a906132a5565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b610d64611e92565b610d6e6000611f10565b565b6000610d7c85856117a7565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0057600080fd5b505afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190612a91565b8989604051610e4d97969594939291906130ad565b60405180910390a2505050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610f7957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fb0576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610feb92919061318b565b602060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d919061266b565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b815260040161107f9594939291906133a5565b600060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611132576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016111739594939291906133fa565b600060405180830381600087803b15801561118d57600080fd5b505af11580156111a1573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611226576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061129f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156112d6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161131192919061318b565b602060405180830381600087803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061266b565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016113a59594939291906133fa565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156114105750600160008054906101000a900460ff1660ff16105b8061143d575061141f30611fd6565b15801561143c5750600160008054906101000a900460ff1660ff16145b5b61147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906132e5565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156114b9576001600060016101000a81548160ff0219169083151502179055505b6114c1611ff9565b6114c9612052565b8160c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156115635760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161155a9190613208565b60405180910390a15b5050565b61156f611e92565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613245565b60405180910390fd5b6115e881611f10565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611664576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806116dd57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15611714576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161174f92919061318b565b602060405180830381600087803b15801561176957600080fd5b505af115801561177d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a1919061266b565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b1580156117f157600080fd5b505afa158015611805573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182991906125d8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161187e93929190612f98565b602060405180830381600087803b15801561189857600080fd5b505af11580156118ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d0919061266b565b611906576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b815260040161194393929190612f98565b602060405180830381600087803b15801561195d57600080fd5b505af1158015611971573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611995919061266b565b6119cb576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611a04919061344f565b602060405180830381600087803b158015611a1e57600080fd5b505af1158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a56919061266b565b611a8c576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611af693929190612f98565b602060405180830381600087803b158015611b1057600080fd5b505af1158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b48919061266b565b611b7e576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611bd9919061344f565b600060405180830381600087803b158015611bf357600080fd5b505af1158015611c07573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611c3190612f68565b60006040518083038185875af1925050503d8060008114611c6e576040519150601f19603f3d011682016040523d82523d6000602084013e611c73565b606091505b5050905080611cae576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611ce17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6120a3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d12611e92565b50565b611d417f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6120ad565b60000160009054906101000a900460ff1615611d6557611d60836120b7565b611e8d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dab57600080fd5b505afa925050508015611ddc57506040513d601f19601f82011682018060405250810190611dd99190612698565b60015b611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290613305565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e77906132c5565b60405180910390fd5b50611e8c838383612170565b5b505050565b611e9a61219c565b73ffffffffffffffffffffffffffffffffffffffff16611eb8610e5d565b73ffffffffffffffffffffffffffffffffffffffff1614611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613345565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f90613385565b60405180910390fd5b6120506121a4565b565b600060019054906101000a900460ff166120a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209890613385565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6120c081611fd6565b6120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613325565b60405180910390fd5b8061212c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6120a3565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61217983612205565b6000825111806121865750805b15612197576121958383612254565b505b505050565b600033905090565b600060019054906101000a900460ff166121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90613385565b60405180910390fd5b6122036121fe61219c565b611f10565b565b61220e816120b7565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606122798383604051806060016040528060278152602001613ab760279139612281565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516122ab9190612f51565b600060405180830381855af49150503d80600081146122e6576040519150601f19603f3d011682016040523d82523d6000602084013e6122eb565b606091505b50915091506122fc86838387612307565b925050509392505050565b6060831561236a576000835114156123625761232285611fd6565b612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890613365565b60405180910390fd5b5b829050612375565b612374838361237d565b5b949350505050565b6000825111156123905781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49190613223565b60405180910390fd5b60006123e06123db8461348f565b61346a565b9050828152602081018484840111156123fc576123fb61370c565b5b612407848285613628565b509392505050565b60008135905061241e81613a5a565b92915050565b60008151905061243381613a5a565b92915050565b60008151905061244881613a71565b92915050565b60008151905061245d81613a88565b92915050565b60008083601f840112612479576124786136f8565b5b8235905067ffffffffffffffff811115612496576124956136f3565b5b6020830191508360018202830111156124b2576124b1613707565b5b9250929050565b600082601f8301126124ce576124cd6136f8565b5b81356124de8482602086016123cd565b91505092915050565b6000606082840312156124fd576124fc6136fd565b5b81905092915050565b60006060828403121561251c5761251b6136fd565b5b81905092915050565b60008135905061253481613a9f565b92915050565b60008151905061254981613a9f565b92915050565b6000602082840312156125655761256461371b565b5b60006125738482850161240f565b91505092915050565b600080604083850312156125935761259261371b565b5b60006125a18582860161240f565b925050602083013567ffffffffffffffff8111156125c2576125c1613711565b5b6125ce858286016124b9565b9150509250929050565b600080604083850312156125ef576125ee61371b565b5b60006125fd85828601612424565b925050602061260e8582860161253a565b9150509250929050565b6000806000606084860312156126315761263061371b565b5b600061263f8682870161240f565b935050602061265086828701612525565b92505060406126618682870161240f565b9150509250925092565b6000602082840312156126815761268061371b565b5b600061268f84828501612439565b91505092915050565b6000602082840312156126ae576126ad61371b565b5b60006126bc8482850161244e565b91505092915050565b6000806000604084860312156126de576126dd61371b565b5b600084013567ffffffffffffffff8111156126fc576126fb613711565b5b612708868287016124b9565b935050602084013567ffffffffffffffff81111561272957612728613711565b5b61273586828701612463565b92509250509250925092565b60008060006060848603121561275a5761275961371b565b5b600084013567ffffffffffffffff81111561277857612777613711565b5b612784868287016124b9565b935050602061279586828701612525565b92505060406127a68682870161240f565b9150509250925092565b6000806000806000608086880312156127cc576127cb61371b565b5b600086013567ffffffffffffffff8111156127ea576127e9613711565b5b6127f6888289016124b9565b955050602061280788828901612525565b94505060406128188882890161240f565b935050606086013567ffffffffffffffff81111561283957612838613711565b5b61284588828901612463565b92509250509295509295909350565b60008060008060008060a087890312156128715761287061371b565b5b600087013567ffffffffffffffff81111561288f5761288e613711565b5b61289b89828a016124e7565b96505060206128ac89828a0161240f565b95505060406128bd89828a01612525565b94505060606128ce89828a0161240f565b935050608087013567ffffffffffffffff8111156128ef576128ee613711565b5b6128fb89828a01612463565b92509250509295509295509295565b60008060008060008060a087890312156129275761292661371b565b5b600087013567ffffffffffffffff81111561294557612944613711565b5b61295189828a01612506565b965050602061296289828a0161240f565b955050604061297389828a01612525565b945050606061298489828a0161240f565b935050608087013567ffffffffffffffff8111156129a5576129a4613711565b5b6129b189828a01612463565b92509250509295509295509295565b6000806000806000608086880312156129dc576129db61371b565b5b600086013567ffffffffffffffff8111156129fa576129f9613711565b5b612a0688828901612506565b9550506020612a1788828901612525565b9450506040612a288882890161240f565b935050606086013567ffffffffffffffff811115612a4957612a48613711565b5b612a5588828901612463565b92509250509295509295909350565b600060208284031215612a7a57612a7961371b565b5b6000612a8884828501612525565b91505092915050565b600060208284031215612aa757612aa661371b565b5b6000612ab58482850161253a565b91505092915050565b600080600060408486031215612ad757612ad661371b565b5b6000612ae586828701612525565b935050602084013567ffffffffffffffff811115612b0657612b05613711565b5b612b1286828701612463565b92509250509250925092565b612b27816135a5565b82525050565b612b36816135a5565b82525050565b612b4d612b48826135a5565b61369b565b82525050565b612b5c816135c3565b82525050565b6000612b6e83856134d6565b9350612b7b838584613628565b612b8483613720565b840190509392505050565b6000612b9b83856134e7565b9350612ba8838584613628565b612bb183613720565b840190509392505050565b6000612bc7826134c0565b612bd181856134e7565b9350612be1818560208601613637565b612bea81613720565b840191505092915050565b6000612c00826134c0565b612c0a81856134f8565b9350612c1a818560208601613637565b80840191505092915050565b612c2f81613604565b82525050565b612c3e81613616565b82525050565b6000612c4f826134cb565b612c598185613503565b9350612c69818560208601613637565b612c7281613720565b840191505092915050565b6000612c8a602683613503565b9150612c958261373e565b604082019050919050565b6000612cad602c83613503565b9150612cb88261378d565b604082019050919050565b6000612cd0602c83613503565b9150612cdb826137dc565b604082019050919050565b6000612cf3603883613503565b9150612cfe8261382b565b604082019050919050565b6000612d16602983613503565b9150612d218261387a565b604082019050919050565b6000612d39602e83613503565b9150612d44826138c9565b604082019050919050565b6000612d5c602e83613503565b9150612d6782613918565b604082019050919050565b6000612d7f602d83613503565b9150612d8a82613967565b604082019050919050565b6000612da2602083613503565b9150612dad826139b6565b602082019050919050565b6000612dc56000836134e7565b9150612dd0826139df565b600082019050919050565b6000612de86000836134f8565b9150612df3826139df565b600082019050919050565b6000612e0b601d83613503565b9150612e16826139e2565b602082019050919050565b6000612e2e602b83613503565b9150612e3982613a0b565b604082019050919050565b600060608301612e57600084018461352b565b8583036000870152612e6a838284612b62565b92505050612e7b6020840184613514565b612e886020860182612b1e565b50612e96604084018461358e565b612ea36040860182612f18565b508091505092915050565b600060608301612ec1600084018461352b565b8583036000870152612ed4838284612b62565b92505050612ee56020840184613514565b612ef26020860182612b1e565b50612f00604084018461358e565b612f0d6040860182612f18565b508091505092915050565b612f21816135ed565b82525050565b612f30816135ed565b82525050565b6000612f428284612b3c565b60148201915081905092915050565b6000612f5d8284612bf5565b915081905092915050565b6000612f7382612ddb565b9150819050919050565b6000602082019050612f926000830184612b2d565b92915050565b6000606082019050612fad6000830186612b2d565b612fba6020830185612b2d565b612fc76040830184612f27565b949350505050565b600060c082019050612fe4600083018a612b2d565b8181036020830152612ff68189612bbc565b90506130056040830188612f27565b6130126060830187612c26565b61301f6080830186612c26565b81810360a0830152613032818486612b8f565b905098975050505050505050565b600060c0820190506130556000830188612b2d565b81810360208301526130678187612bbc565b90506130766040830186612f27565b6130836060830185612c26565b6130906080830184612c26565b81810360a08301526130a181612db8565b90509695505050505050565b600060c0820190506130c2600083018a612b2d565b81810360208301526130d48189612bbc565b90506130e36040830188612f27565b6130f06060830187612f27565b6130fd6080830186612f27565b81810360a0830152613110818486612b8f565b905098975050505050505050565b600060c0820190506131336000830188612b2d565b81810360208301526131458187612bbc565b90506131546040830186612f27565b6131616060830185612f27565b61316e6080830184612f27565b81810360a083015261317f81612db8565b90509695505050505050565b60006040820190506131a06000830185612b2d565b6131ad6020830184612f27565b9392505050565b60006020820190506131c96000830184612b53565b92915050565b600060408201905081810360008301526131e98186612bbc565b905081810360208301526131fe818486612b8f565b9050949350505050565b600060208201905061321d6000830184612c35565b92915050565b6000602082019050818103600083015261323d8184612c44565b905092915050565b6000602082019050818103600083015261325e81612c7d565b9050919050565b6000602082019050818103600083015261327e81612ca0565b9050919050565b6000602082019050818103600083015261329e81612cc3565b9050919050565b600060208201905081810360008301526132be81612ce6565b9050919050565b600060208201905081810360008301526132de81612d09565b9050919050565b600060208201905081810360008301526132fe81612d2c565b9050919050565b6000602082019050818103600083015261331e81612d4f565b9050919050565b6000602082019050818103600083015261333e81612d72565b9050919050565b6000602082019050818103600083015261335e81612d95565b9050919050565b6000602082019050818103600083015261337e81612dfe565b9050919050565b6000602082019050818103600083015261339e81612e21565b9050919050565b600060808201905081810360008301526133bf8188612e44565b90506133ce6020830187612b2d565b6133db6040830186612f27565b81810360608301526133ee818486612b8f565b90509695505050505050565b600060808201905081810360008301526134148188612eae565b90506134236020830187612b2d565b6134306040830186612f27565b8181036060830152613443818486612b8f565b90509695505050505050565b60006020820190506134646000830184612f27565b92915050565b6000613474613485565b9050613480828261366a565b919050565b6000604051905090565b600067ffffffffffffffff8211156134aa576134a96136bf565b5b6134b382613720565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613523602084018461240f565b905092915050565b6000808335600160200384360303811261354857613547613716565b5b83810192508235915060208301925067ffffffffffffffff8211156135705761356f6136ee565b5b60018202360384131561358657613585613702565b5b509250929050565b600061359d6020840184612525565b905092915050565b60006135b0826135cd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061360f826135ed565b9050919050565b6000613621826135f7565b9050919050565b82818337600083830152505050565b60005b8381101561365557808201518184015260208101905061363a565b83811115613664576000848401525b50505050565b61367382613720565b810181811067ffffffffffffffff82111715613692576136916136bf565b5b80604052505050565b60006136a6826136ad565b9050919050565b60006136b882613731565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b613a63816135a5565b8114613a6e57600080fd5b50565b613a7a816135b7565b8114613a8557600080fd5b50565b613a91816135c3565b8114613a9c57600080fd5b50565b613aa8816135ed565b8114613ab357600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200dd477a7fa41750f0fe91930c4aaeeb63880b6585663dcaae30d49ba9d74c7c664736f6c63430008070033608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea264697066735822122071a41b7e8232f98e8257a24fd602c7cc7b7cd2eab6d352fb5c5fbe1412f3398364736f6c6343000807003360806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212200835245fdc75aa593111cf5a43e919740b2258e1512040bc79f39a56cedf119364736f6c6343000807003360c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212206982505c1a546edfb86a1aaaca0ad6b7e5542f2d1f24ac30a032805fc80a650e64736f6c63430008070033a2646970667358221220c4176ab65169278ea88f794813ad4a1d4ae35802891e629c00eb44b06934003764736f6c63430008070033"; - -type GatewayEVMZEVMTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayEVMZEVMTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayEVMZEVMTest__factory extends ContractFactory { - constructor(...args: GatewayEVMZEVMTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayEVMZEVMTest { - return super.attach(address) as GatewayEVMZEVMTest; - } - override connect(signer: Signer): GatewayEVMZEVMTest__factory { - return super.connect(signer) as GatewayEVMZEVMTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayEVMZEVMTestInterface { - return new utils.Interface(_abi) as GatewayEVMZEVMTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayEVMZEVMTest { - return new Contract(address, _abi, signerOrProvider) as GatewayEVMZEVMTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts deleted file mode 100644 index e6bf3cc8..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayEVMZEVM.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayEVMZEVMTest__factory } from "./GatewayEVMZEVMTest__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts deleted file mode 100644 index d4983137..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest__factory.ts +++ /dev/null @@ -1,982 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayIntegrationTest, - GatewayIntegrationTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayIntegration.t.sol/GatewayIntegrationTest"; - -const _abi = [ - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [], - name: "CustodyInitialized", - type: "error", - }, - { - inputs: [], - name: "DepositFailed", - type: "error", - }, - { - inputs: [], - name: "ExecutionFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientERC20Amount", - type: "error", - }, - { - inputs: [], - name: "InsufficientETHAmount", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "receiver", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "payload", - type: "bytes", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "destination", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "Executed", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "ExecutedWithERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "destination", - type: "address", - }, - ], - name: "ReceivedERC20", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - ], - name: "ReceivedNoParams", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "string[]", - name: "strs", - type: "string[]", - }, - { - indexed: false, - internalType: "uint256[]", - name: "nums", - type: "uint256[]", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedNonPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "string", - name: "str", - type: "string", - }, - { - indexed: false, - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - indexed: false, - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "ReceivedPayable", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testCallReceiverEVMFromZEVM", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b506201142f80620000586000396000f3fe60806040523480156200001157600080fd5b5060043610620001005760003560e01c8063916a17c61162000099578063b5508aa9116200006f578063b5508aa9146200022d578063ba414fa6146200024f578063e20c9f711462000271578063fa7626d414620002935762000100565b8063916a17c614620001dd5780639683c69514620001ff578063b0464fdc146200020b5762000100565b80633e5e3c2311620000db5780633e5e3c2314620001555780633f7286f4146200017757806366d9a9a0146200019957806385226c8114620001bb5762000100565b80630a9254e414620001055780631ed7831c14620001115780632ade38801462000133575b600080fd5b6200010f620002b5565b005b6200011b620010b4565b6040516200012a919062002c9b565b60405180910390f35b6200013d62001144565b6040516200014c919062002d07565b60405180910390f35b6200015f620012de565b6040516200016e919062002c9b565b60405180910390f35b620001816200136e565b60405162000190919062002c9b565b60405180910390f35b620001a3620013fe565b604051620001b2919062002ce3565b60405180910390f35b620001c562001595565b604051620001d4919062002cbf565b60405180910390f35b620001e762001678565b604051620001f6919062002d2b565b60405180910390f35b62000209620017cb565b005b6200021562001e6a565b60405162000224919062002d2b565b60405180910390f35b6200023762001fbd565b60405162000246919062002cbf565b60405180910390f35b62000259620020a0565b60405162000268919062002d4f565b60405180910390f35b6200027b620021d3565b6040516200028a919062002c9b565b60405180910390f35b6200029d62002263565b604051620002ac919062002d4f565b60405180910390f35b30602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615678602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614321602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003cd9062002276565b620003d89062002f3a565b604051809103906000f080158015620003f5573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620004449062002284565b604051809103906000f08015801562000461573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620004d39062002292565b620004df919062002b59565b604051809103906000f080158015620004fc573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4d66de8602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620005bc919062002b59565b600060405180830381600087803b158015620005d757600080fd5b505af1158015620005ec573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae7a3a6f602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200066f919062002b59565b600060405180830381600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b50505050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b81526004016200072792919062002c14565b600060405180830381600087803b1580156200074257600080fd5b505af115801562000757573d6000803e3d6000fd5b50505050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166207a1206040518363ffffffff1660e01b8152600401620007df92919062002c41565b602060405180830381600087803b158015620007fa57600080fd5b505af11580156200080f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000835919062002392565b506040516200084490620022a0565b604051809103906000f08015801562000861573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620008b090620022ae565b604051809103906000f080158015620008cd573d6000803e3d6000fd5b50602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200093f90620022bc565b6200094b919062002b59565b604051809103906000f08015801562000968573d6000803e3d6000fd5b50602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073735b14bb79463307aacbed86daf3322b1e6226ab90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166306447d56826040518263ffffffff1660e01b815260040162000a20919062002b59565b600060405180830381600087803b15801562000a3b57600080fd5b505af115801562000a50573d6000803e3d6000fd5b50505050600080600060405162000a6790620022ca565b62000a759392919062002b76565b604051809103906000f08015801562000a92573d6000803e3d6000fd5b50602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060126001600080602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000b2e90620022d8565b62000b3f9695949392919062002ea2565b604051809103906000f08015801562000b5c573d6000803e3d6000fd5b50602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee2815ba6001602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000c1f92919062002e04565b600060405180830381600087803b15801562000c3a57600080fd5b505af115801562000c4f573d6000803e3d6000fd5b50505050602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7cb05076001806040518363ffffffff1660e01b815260040162000cb392919062002e31565b600060405180830381600087803b15801562000cce57600080fd5b505af115801562000ce3573d6000803e3d6000fd5b50505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b815260040162000d6b92919062002c14565b602060405180830381600087803b15801562000d8657600080fd5b505af115801562000d9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dc1919062002392565b50602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b815260040162000e4692919062002c14565b602060405180830381600087803b15801562000e6157600080fd5b505af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062002392565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000f0957600080fd5b505af115801562000f1e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000fa2919062002b59565b600060405180830381600087803b15801562000fbd57600080fd5b505af115801562000fd2573d6000803e3d6000fd5b50505050602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620f42406040518363ffffffff1660e01b81526004016200105a92919062002c14565b602060405180830381600087803b1580156200107557600080fd5b505af11580156200108a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010b0919062002392565b5050565b606060168054806020026020016040519081016040528092919081815260200182805480156200113a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620010ef575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015620012d557838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015620012bd578382906000526020600020018054620012299062003340565b80601f0160208091040260200160405190810160405280929190818152602001828054620012579062003340565b8015620012a85780601f106200127c57610100808354040283529160200191620012a8565b820191906000526020600020905b8154815290600101906020018083116200128a57829003601f168201915b50505050508152602001906001019062001207565b50505050815250508152602001906001019062001168565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156200136457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001319575b5050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620013f457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620013a9575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200158c5783829060005260206000209060020201604051806040016040529081600082018054620014589062003340565b80601f0160208091040260200160405190810160405280929190818152602001828054620014869062003340565b8015620014d75780601f10620014ab57610100808354040283529160200191620014d7565b820191906000526020600020905b815481529060010190602001808311620014b957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200157357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200151f5790505b5050505050815250508152602001906001019062001422565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200166f578382906000526020600020018054620015db9062003340565b80601f0160208091040260200160405190810160405280929190818152602001828054620016099062003340565b80156200165a5780601f106200162e576101008083540402835291602001916200165a565b820191906000526020600020905b8154815290600101906020018083116200163c57829003601f168201915b505050505081526020019060010190620015b9565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015620017c257838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620017a957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620017555790505b505050505081525050815260200190600101906200169c565b50505050905090565b60006040518060400160405280600f81526020017f48656c6c6f2c204861726468617421000000000000000000000000000000000081525090506000602a90506000600190506000670de0b6b3a76400009050600063e04d4f9760e01b8585856040516024016200183f9392919062002e5e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200191e919062002b59565b600060405180830381600087803b1580156200193957600080fd5b505af11580156200194e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401620019dc95949392919062002d6c565b600060405180830381600087803b158015620019f757600080fd5b505af115801562001a0c573d6000803e3d6000fd5b50505050602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001a9f919062002b3c565b6040516020818303038152906040528360405162001abf92919062002dc9565b60405180910390a2602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001b3a919062002b3c565b604051602081830303815290604052836040518363ffffffff1660e01b815260040162001b6992919062002dc9565b600060405180830381600087803b15801562001b8457600080fd5b505af115801562001b99573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663c88a5e6d601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040162001c1f92919062002c6e565b600060405180830381600087803b15801562001c3a57600080fd5b505af115801562001c4f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162001cdd95949392919062002d6c565b600060405180830381600087803b15801562001cf857600080fd5b505af115801562001d0d573d6000803e3d6000fd5b50505050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f838360405162001d7d92919062002f71565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cff79cd83602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040162001e0792919062002be0565b6000604051808303818588803b15801562001e2157600080fd5b505af115801562001e36573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019062001e629190620023f6565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562001fb457838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180548060200260200160405190810160405280929190818152602001828054801562001f9b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001f475790505b5050505050815250508152602001906001019062001e8e565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562002097578382906000526020600020018054620020039062003340565b80601f0160208091040260200160405190810160405280929190818152602001828054620020319062003340565b8015620020825780601f10620020565761010080835404028352916020019162002082565b820191906000526020600020905b8154815290600101906020018083116200206457829003601f168201915b50505050508152602001906001019062001fe1565b50505050905090565b6000600860009054906101000a900460ff1615620020d057600860009054906101000a900460ff169050620021d0565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016200217792919062002bb3565b60206040518083038186803b1580156200219057600080fd5b505afa158015620021a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021cb9190620023c4565b141590505b90565b606060158054806020026020016040519081016040528092919081815260200182805480156200225957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200220e575b5050505050905090565b601f60009054906101000a900460ff1681565b611813806200358383390190565b6131a48062004d9683390190565b6110908062007f3a83390190565b6110aa8062008fca83390190565b612eb5806200a07483390190565b610bcd806200cf2983390190565b6110d7806200daf683390190565b61282d806200ebcd83390190565b6000620022fd620022f78462002fce565b62002fa5565b9050828152602081018484840111156200231c576200231b62003466565b5b620023298482856200330a565b509392505050565b60008151905062002342816200354e565b92915050565b600081519050620023598162003568565b92915050565b600082601f83011262002377576200237662003461565b5b815162002389848260208601620022e6565b91505092915050565b600060208284031215620023ab57620023aa62003470565b5b6000620023bb8482850162002331565b91505092915050565b600060208284031215620023dd57620023dc62003470565b5b6000620023ed8482850162002348565b91505092915050565b6000602082840312156200240f576200240e62003470565b5b600082015167ffffffffffffffff81111562002430576200242f6200346b565b5b6200243e848285016200235f565b91505092915050565b6000620024558383620024d3565b60208301905092915050565b60006200246f838362002870565b60208301905092915050565b600062002489838362002943565b905092915050565b60006200249f838362002a61565b905092915050565b6000620024b5838362002aa9565b905092915050565b6000620024cb838362002aea565b905092915050565b620024de81620031b4565b82525050565b620024ef81620031b4565b82525050565b6000620025028262003064565b6200250e81856200310a565b93506200251b8362003004565b8060005b838110156200255257815162002536888262002447565b97506200254383620030bc565b9250506001810190506200251f565b5085935050505092915050565b60006200256c826200306f565b6200257881856200311b565b9350620025858362003014565b8060005b83811015620025bc578151620025a0888262002461565b9750620025ad83620030c9565b92505060018101905062002589565b5085935050505092915050565b6000620025d6826200307a565b620025e281856200312c565b935083602082028501620025f68562003024565b8060005b858110156200263857848403895281516200261685826200247b565b94506200262383620030d6565b925060208a01995050600181019050620025fa565b50829750879550505050505092915050565b600062002657826200307a565b6200266381856200313d565b935083602082028501620026778562003024565b8060005b85811015620026b957848403895281516200269785826200247b565b9450620026a483620030d6565b925060208a019950506001810190506200267b565b50829750879550505050505092915050565b6000620026d88262003085565b620026e481856200314e565b935083602082028501620026f88562003034565b8060005b858110156200273a578484038952815162002718858262002491565b94506200272583620030e3565b925060208a01995050600181019050620026fc565b50829750879550505050505092915050565b6000620027598262003090565b6200276581856200315f565b935083602082028501620027798562003044565b8060005b85811015620027bb5784840389528151620027998582620024a7565b9450620027a683620030f0565b925060208a019950506001810190506200277d565b50829750879550505050505092915050565b6000620027da826200309b565b620027e6818562003170565b935083602082028501620027fa8562003054565b8060005b858110156200283c57848403895281516200281a8582620024bd565b94506200282783620030fd565b925060208a01995050600181019050620027fe565b50829750879550505050505092915050565b6200285981620031c8565b82525050565b6200286a81620031d4565b82525050565b6200287b81620031de565b82525050565b60006200288e82620030a6565b6200289a818562003181565b9350620028ac8185602086016200330a565b620028b78162003475565b840191505092915050565b620028d7620028d18262003256565b620033ac565b82525050565b620028e8816200326a565b82525050565b620028f9816200327e565b82525050565b6200290a8162003292565b82525050565b6200291b81620032a6565b82525050565b6200292c81620032ba565b82525050565b6200293d81620032ce565b82525050565b60006200295082620030b1565b6200295c818562003192565b93506200296e8185602086016200330a565b620029798162003475565b840191505092915050565b60006200299182620030b1565b6200299d8185620031a3565b9350620029af8185602086016200330a565b620029ba8162003475565b840191505092915050565b6000620029d4600383620031a3565b9150620029e18262003493565b602082019050919050565b6000620029fb600583620031a3565b915062002a0882620034bc565b602082019050919050565b600062002a22600483620031a3565b915062002a2f82620034e5565b602082019050919050565b600062002a49600383620031a3565b915062002a56826200350e565b602082019050919050565b6000604083016000830151848203600086015262002a80828262002943565b9150506020830151848203602086015262002a9c82826200255f565b9150508091505092915050565b600060408301600083015162002ac36000860182620024d3565b506020830151848203602086015262002add8282620025c9565b9150508091505092915050565b600060408301600083015162002b046000860182620024d3565b506020830151848203602086015262002b1e82826200255f565b9150508091505092915050565b62002b36816200323f565b82525050565b600062002b4a8284620028c2565b60148201915081905092915050565b600060208201905062002b706000830184620024e4565b92915050565b600060608201905062002b8d6000830186620024e4565b62002b9c6020830185620024e4565b62002bab6040830184620024e4565b949350505050565b600060408201905062002bca6000830185620024e4565b62002bd960208301846200285f565b9392505050565b600060408201905062002bf76000830185620024e4565b818103602083015262002c0b818462002881565b90509392505050565b600060408201905062002c2b6000830185620024e4565b62002c3a6020830184620028ff565b9392505050565b600060408201905062002c586000830185620024e4565b62002c67602083018462002932565b9392505050565b600060408201905062002c856000830185620024e4565b62002c94602083018462002b2b565b9392505050565b6000602082019050818103600083015262002cb78184620024f5565b905092915050565b6000602082019050818103600083015262002cdb81846200264a565b905092915050565b6000602082019050818103600083015262002cff8184620026cb565b905092915050565b6000602082019050818103600083015262002d2381846200274c565b905092915050565b6000602082019050818103600083015262002d478184620027cd565b905092915050565b600060208201905062002d6660008301846200284e565b92915050565b600060a08201905062002d8360008301886200284e565b62002d9260208301876200284e565b62002da160408301866200284e565b62002db060608301856200284e565b62002dbf6080830184620024e4565b9695505050505050565b6000604082019050818103600083015262002de5818562002881565b9050818103602083015262002dfb818462002881565b90509392505050565b600060408201905062002e1b600083018562002921565b62002e2a6020830184620024e4565b9392505050565b600060408201905062002e48600083018562002921565b62002e57602083018462002921565b9392505050565b6000606082019050818103600083015262002e7a818662002984565b905062002e8b602083018562002b2b565b62002e9a60408301846200284e565b949350505050565b600061010082019050818103600083015262002ebe81620029ec565b9050818103602083015262002ed38162002a3a565b905062002ee4604083018962002910565b62002ef3606083018862002921565b62002f026080830187620028dd565b62002f1160a0830186620028ee565b62002f2060c0830185620024e4565b62002f2f60e0830184620024e4565b979650505050505050565b6000604082019050818103600083015262002f558162002a13565b9050818103602083015262002f6a81620029c5565b9050919050565b600060408201905062002f88600083018562002b2b565b818103602083015262002f9c818462002881565b90509392505050565b600062002fb162002fc4565b905062002fbf828262003376565b919050565b6000604051905090565b600067ffffffffffffffff82111562002fec5762002feb62003432565b5b62002ff78262003475565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620031c1826200321f565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60008190506200321a8262003537565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006200326382620032e2565b9050919050565b600062003277826200320a565b9050919050565b60006200328b826200323f565b9050919050565b60006200329f826200323f565b9050919050565b6000620032b38262003249565b9050919050565b6000620032c7826200323f565b9050919050565b6000620032db826200323f565b9050919050565b6000620032ef82620032f6565b9050919050565b600062003303826200321f565b9050919050565b60005b838110156200332a5780820151818401526020810190506200330d565b838111156200333a576000848401525b50505050565b600060028204905060018216806200335957607f821691505b6020821081141562003370576200336f62003403565b5b50919050565b620033818262003475565b810181811067ffffffffffffffff82111715620033a357620033a262003432565b5b80604052505050565b6000620033b982620033c0565b9050919050565b6000620033cd8262003486565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f54544b0000000000000000000000000000000000000000000000000000000000600082015250565b7f544f4b454e000000000000000000000000000000000000000000000000000000600082015250565b7f7465737400000000000000000000000000000000000000000000000000000000600082015250565b7f544b4e0000000000000000000000000000000000000000000000000000000000600082015250565b600381106200354b576200354a620033d4565b5b50565b6200355981620031c8565b81146200356557600080fd5b50565b6200357381620031d4565b81146200357f57600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220d4c96329400732e284f624232c8d7228fc90c00ee7b1a48a85080262107815d864736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613123610081600039600081816105fc0152818161068b01528181610785015281816108140152610bae01526131236000f3fe6080604052600436106100fe5760003560e01c8063715018a611610095578063c4d66de811610064578063c4d66de8146102e4578063dda79b751461030d578063f2fde38b14610338578063f340fa0114610361578063f45346dc1461037d576100fe565b8063715018a6146102505780638c6f037f146102675780638da5cb5b14610290578063ae7a3a6f146102bb576100fe565b80634f1ef286116100d15780634f1ef286146101a15780635131ab59146101bd57806352d1902d146101fa5780635b11259114610225576100fe565b80631b8b921d146101035780631cff79cd1461012c57806329c59b5d1461015c5780633659cfe614610178575b600080fd5b34801561010f57600080fd5b5061012a60048036038101906101259190612183565b6103a6565b005b61014660048036038101906101419190612183565b610412565b6040516101539190612816565b60405180910390f35b61017660048036038101906101719190612183565b610480565b005b34801561018457600080fd5b5061019f600480360381019061019a91906120ce565b6105fa565b005b6101bb60048036038101906101b691906121e3565b610783565b005b3480156101c957600080fd5b506101e460048036038101906101df91906120fb565b6108c0565b6040516101f19190612816565b60405180910390f35b34801561020657600080fd5b5061020f610baa565b60405161021c91906127d7565b60405180910390f35b34801561023157600080fd5b5061023a610c63565b6040516102479190612733565b60405180910390f35b34801561025c57600080fd5b50610265610c89565b005b34801561027357600080fd5b5061028e60048036038101906102899190612292565b610c9d565b005b34801561029c57600080fd5b506102a5610d99565b6040516102b29190612733565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906120ce565b610dc3565b005b3480156102f057600080fd5b5061030b600480360381019061030691906120ce565b610e8f565b005b34801561031957600080fd5b5061032261107e565b60405161032f9190612733565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906120ce565b6110a4565b005b61037b600480360381019061037691906120ce565b611128565b005b34801561038957600080fd5b506103a4600480360381019061039f919061223f565b61129c565b005b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516104059291906127f2565b60405180910390a3505050565b60606000610421858585611392565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161046d93929190612a91565b60405180910390a2809150509392505050565b60003414156104bb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516105039061271e565b60006040518083038185875af1925050503d8060008114610540576040519150601f19603f3d011682016040523d82523d6000602084013e610545565b606091505b50509050600015158115151415610588576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516105ec9493929190612a15565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106c8611449565b73ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906128b5565b60405180910390fd5b610727816114a0565b61078081600067ffffffffffffffff81111561074657610745612c52565b5b6040519080825280601f01601f1916602001820160405280156107785781602001600182028036833780820191505090505b5060006114ab565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080990612895565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610851611449565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906128b5565b60405180910390fd5b6108b0826114a0565b6108bc828260016114ab565b5050565b606060008414156108fd576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109078686611628565b61093d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663095ea7b386866040518363ffffffff1660e01b81526004016109789291906127ae565b602060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca919061231a565b610a00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a0d868585611392565b9050610a198787611628565b610a4f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a8a9190612733565b60206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190612374565b90506000811115610b3357610b3260c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828a73ffffffffffffffffffffffffffffffffffffffff166116c09092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610b9493929190612a91565b60405180910390a3819250505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906128f5565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c91611746565b610c9b60006117c4565b565b6000841415610cd8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d273360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868673ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610d8a9493929190612a15565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060c960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060019054906101000a900460ff16159050808015610ec05750600160008054906101000a900460ff1660ff16105b80610eed5750610ecf30611913565b158015610eec5750600160008054906101000a900460ff1660ff16145b5b610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390612935565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610f69576001600060016101000a81548160ff0219169083151502179055505b610f71611936565b610f7961198f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561107a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110719190612838565b60405180910390a15b5050565b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac611746565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612875565b60405180910390fd5b611125816117c4565b50565b6000341415611163576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516111ab9061271e565b60006040518083038185875af1925050503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b50509050600015158115151415611230576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611290929190612a55565b60405180910390a35050565b60008214156112d7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113263360c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff1661188a909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611385929190612a55565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516113bf9291906126ee565b60006040518083038185875af1925050503d80600081146113fc576040519150601f19603f3d011682016040523d82523d6000602084013e611401565b606091505b50915091508161143d576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006114777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611746565b50565b6114d77f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6119ea565b60000160009054906101000a900460ff16156114fb576114f6836119f4565b611623565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561154157600080fd5b505afa92505050801561157257506040513d601f19601f8201168201806040525081019061156f9190612347565b60015b6115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612955565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90612915565b60405180910390fd5b50611622838383611aad565b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611666929190612785565b602060405180830381600087803b15801561168057600080fd5b505af1158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b8919061231a565b905092915050565b6117418363a9059cbb60e01b84846040516024016116df9291906127ae565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b505050565b61174e611ba0565b73ffffffffffffffffffffffffffffffffffffffff1661176c610d99565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612995565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61190d846323b872dd60e01b8585856040516024016118ab9392919061274e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ad9565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c906129d5565b60405180910390fd5b61198d611ba8565b565b600060019054906101000a900460ff166119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906129d5565b60405180910390fd5b565b6000819050919050565b6000819050919050565b6119fd81611913565b611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390612975565b60405180910390fd5b80611a697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6119e0565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ab683611c09565b600082511180611ac35750805b15611ad457611ad28383611c58565b505b505050565b6000611b3b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c859092919063ffffffff16565b9050600081511115611b9b5780806020019051810190611b5b919061231a565b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906129f5565b60405180910390fd5b5b505050565b600033905090565b600060019054906101000a900460ff16611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906129d5565b60405180910390fd5b611c07611c02611ba0565b6117c4565b565b611c12816119f4565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060611c7d83836040518060600160405280602781526020016130c760279139611c9d565b905092915050565b6060611c948484600085611d23565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611cc79190612707565b600060405180830381855af49150503d8060008114611d02576040519150601f19603f3d011682016040523d82523d6000602084013e611d07565b606091505b5091509150611d1886838387611df0565b925050509392505050565b606082471015611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906128d5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d919190612707565b60006040518083038185875af1925050503d8060008114611dce576040519150601f19603f3d011682016040523d82523d6000602084013e611dd3565b606091505b5091509150611de487838387611e66565b92505050949350505050565b60608315611e5357600083511415611e4b57611e0b85611913565b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906129b5565b60405180910390fd5b5b829050611e5e565b611e5d8383611edc565b5b949350505050565b60608315611ec957600083511415611ec157611e8185611f2c565b611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906129b5565b60405180910390fd5b5b829050611ed4565b611ed38383611f4f565b5b949350505050565b600082511115611eef5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239190612853565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115611f625781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f969190612853565b60405180910390fd5b6000611fb2611fad84612ae8565b612ac3565b905082815260208101848484011115611fce57611fcd612c90565b5b611fd9848285612bdf565b509392505050565b600081359050611ff08161306a565b92915050565b60008151905061200581613081565b92915050565b60008151905061201a81613098565b92915050565b60008083601f84011261203657612035612c86565b5b8235905067ffffffffffffffff81111561205357612052612c81565b5b60208301915083600182028301111561206f5761206e612c8b565b5b9250929050565b600082601f83011261208b5761208a612c86565b5b813561209b848260208601611f9f565b91505092915050565b6000813590506120b3816130af565b92915050565b6000815190506120c8816130af565b92915050565b6000602082840312156120e4576120e3612c9a565b5b60006120f284828501611fe1565b91505092915050565b60008060008060006080868803121561211757612116612c9a565b5b600061212588828901611fe1565b955050602061213688828901611fe1565b9450506040612147888289016120a4565b935050606086013567ffffffffffffffff81111561216857612167612c95565b5b61217488828901612020565b92509250509295509295909350565b60008060006040848603121561219c5761219b612c9a565b5b60006121aa86828701611fe1565b935050602084013567ffffffffffffffff8111156121cb576121ca612c95565b5b6121d786828701612020565b92509250509250925092565b600080604083850312156121fa576121f9612c9a565b5b600061220885828601611fe1565b925050602083013567ffffffffffffffff81111561222957612228612c95565b5b61223585828601612076565b9150509250929050565b60008060006060848603121561225857612257612c9a565b5b600061226686828701611fe1565b9350506020612277868287016120a4565b925050604061228886828701611fe1565b9150509250925092565b6000806000806000608086880312156122ae576122ad612c9a565b5b60006122bc88828901611fe1565b95505060206122cd888289016120a4565b94505060406122de88828901611fe1565b935050606086013567ffffffffffffffff8111156122ff576122fe612c95565b5b61230b88828901612020565b92509250509295509295909350565b6000602082840312156123305761232f612c9a565b5b600061233e84828501611ff6565b91505092915050565b60006020828403121561235d5761235c612c9a565b5b600061236b8482850161200b565b91505092915050565b60006020828403121561238a57612389612c9a565b5b6000612398848285016120b9565b91505092915050565b6123aa81612b5c565b82525050565b6123b981612b7a565b82525050565b60006123cb8385612b2f565b93506123d8838584612bdf565b6123e183612c9f565b840190509392505050565b60006123f88385612b40565b9350612405838584612bdf565b82840190509392505050565b600061241c82612b19565b6124268185612b2f565b9350612436818560208601612bee565b61243f81612c9f565b840191505092915050565b600061245582612b19565b61245f8185612b40565b935061246f818560208601612bee565b80840191505092915050565b61248481612bbb565b82525050565b61249381612bcd565b82525050565b60006124a482612b24565b6124ae8185612b4b565b93506124be818560208601612bee565b6124c781612c9f565b840191505092915050565b60006124df602683612b4b565b91506124ea82612cb0565b604082019050919050565b6000612502602c83612b4b565b915061250d82612cff565b604082019050919050565b6000612525602c83612b4b565b915061253082612d4e565b604082019050919050565b6000612548602683612b4b565b915061255382612d9d565b604082019050919050565b600061256b603883612b4b565b915061257682612dec565b604082019050919050565b600061258e602983612b4b565b915061259982612e3b565b604082019050919050565b60006125b1602e83612b4b565b91506125bc82612e8a565b604082019050919050565b60006125d4602e83612b4b565b91506125df82612ed9565b604082019050919050565b60006125f7602d83612b4b565b915061260282612f28565b604082019050919050565b600061261a602083612b4b565b915061262582612f77565b602082019050919050565b600061263d600083612b2f565b915061264882612fa0565b600082019050919050565b6000612660600083612b40565b915061266b82612fa0565b600082019050919050565b6000612683601d83612b4b565b915061268e82612fa3565b602082019050919050565b60006126a6602b83612b4b565b91506126b182612fcc565b604082019050919050565b60006126c9602a83612b4b565b91506126d48261301b565b604082019050919050565b6126e881612ba4565b82525050565b60006126fb8284866123ec565b91508190509392505050565b6000612713828461244a565b915081905092915050565b600061272982612653565b9150819050919050565b600060208201905061274860008301846123a1565b92915050565b600060608201905061276360008301866123a1565b61277060208301856123a1565b61277d60408301846126df565b949350505050565b600060408201905061279a60008301856123a1565b6127a7602083018461247b565b9392505050565b60006040820190506127c360008301856123a1565b6127d060208301846126df565b9392505050565b60006020820190506127ec60008301846123b0565b92915050565b6000602082019050818103600083015261280d8184866123bf565b90509392505050565b600060208201905081810360008301526128308184612411565b905092915050565b600060208201905061284d600083018461248a565b92915050565b6000602082019050818103600083015261286d8184612499565b905092915050565b6000602082019050818103600083015261288e816124d2565b9050919050565b600060208201905081810360008301526128ae816124f5565b9050919050565b600060208201905081810360008301526128ce81612518565b9050919050565b600060208201905081810360008301526128ee8161253b565b9050919050565b6000602082019050818103600083015261290e8161255e565b9050919050565b6000602082019050818103600083015261292e81612581565b9050919050565b6000602082019050818103600083015261294e816125a4565b9050919050565b6000602082019050818103600083015261296e816125c7565b9050919050565b6000602082019050818103600083015261298e816125ea565b9050919050565b600060208201905081810360008301526129ae8161260d565b9050919050565b600060208201905081810360008301526129ce81612676565b9050919050565b600060208201905081810360008301526129ee81612699565b9050919050565b60006020820190508181036000830152612a0e816126bc565b9050919050565b6000606082019050612a2a60008301876126df565b612a3760208301866123a1565b8181036040830152612a4a8184866123bf565b905095945050505050565b6000606082019050612a6a60008301856126df565b612a7760208301846123a1565b8181036040830152612a8881612630565b90509392505050565b6000604082019050612aa660008301866126df565b8181036020830152612ab98184866123bf565b9050949350505050565b6000612acd612ade565b9050612ad98282612c21565b919050565b6000604051905090565b600067ffffffffffffffff821115612b0357612b02612c52565b5b612b0c82612c9f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b6782612b84565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612bc682612ba4565b9050919050565b6000612bd882612bae565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612c9f565b810181811067ffffffffffffffff82111715612c4957612c48612c52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61307381612b5c565b811461307e57600080fd5b50565b61308a81612b6e565b811461309557600080fd5b50565b6130a181612b7a565b81146130ac57600080fd5b50565b6130b881612ba4565b81146130c357600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220154452ab17b7ec6558ae20cf0777deee4780b8e192489db9d10e2ac9e3d689a364736f6c6343000807003360806040523480156200001157600080fd5b506040516200109038038062001090833981810160405281019062000037919062000106565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000a7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018b565b600081519050620001008162000171565b92915050565b6000602082840312156200011f576200011e6200016c565b5b60006200012f84828501620000ef565b91505092915050565b600062000145826200014c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017c8162000138565b81146200018857600080fd5b50565b610ef5806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063116191b61461004657806321fc65f214610064578063d9caed1214610080575b600080fd5b61004e61009c565b60405161005b9190610a98565b60405180910390f35b61007e600480360381019061007991906107bc565b6100c2565b005b61009a60048036038101906100959190610769565b61024a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ca6102ef565b610117600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b815260040161017a959493929190610a21565b600060405180830381600087803b15801561019457600080fd5b505af11580156101a8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101d19190610871565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e85858560405161023393929190610b70565b60405180910390a36102436103c5565b5050505050565b6102526102ef565b61027d82828573ffffffffffffffffffffffffffffffffffffffff1661033f9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516102da9190610b55565b60405180910390a36102ea6103c5565b505050565b60026000541415610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610b35565b60405180910390fd5b6002600081905550565b6103c08363a9059cbb60e01b848460405160240161035e929190610a6f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103cf565b505050565b6001600081905550565b6000610431826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166104969092919063ffffffff16565b905060008151111561049157808060200190518101906104519190610844565b610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790610b15565b60405180910390fd5b5b505050565b60606104a584846000856104ae565b90509392505050565b6060824710156104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ea90610ad5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161051c9190610a0a565b60006040518083038185875af1925050503d8060008114610559576040519150601f19603f3d011682016040523d82523d6000602084013e61055e565b606091505b509150915061056f8783838761057b565b92505050949350505050565b606083156105de576000835114156105d657610596856105f1565b6105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cc90610af5565b60405180910390fd5b5b8290506105e9565b6105e88383610614565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106275781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065b9190610ab3565b60405180910390fd5b600061067761067284610bc7565b610ba2565b90508281526020810184848401111561069357610692610d6a565b5b61069e848285610cc8565b509392505050565b6000813590506106b581610e7a565b92915050565b6000815190506106ca81610e91565b92915050565b60008083601f8401126106e6576106e5610d60565b5b8235905067ffffffffffffffff81111561070357610702610d5b565b5b60208301915083600182028301111561071f5761071e610d65565b5b9250929050565b600082601f83011261073b5761073a610d60565b5b815161074b848260208601610664565b91505092915050565b60008135905061076381610ea8565b92915050565b60008060006060848603121561078257610781610d74565b5b6000610790868287016106a6565b93505060206107a1868287016106a6565b92505060406107b286828701610754565b9150509250925092565b6000806000806000608086880312156107d8576107d7610d74565b5b60006107e6888289016106a6565b95505060206107f7888289016106a6565b945050604061080888828901610754565b935050606086013567ffffffffffffffff81111561082957610828610d6f565b5b610835888289016106d0565b92509250509295509295909350565b60006020828403121561085a57610859610d74565b5b6000610868848285016106bb565b91505092915050565b60006020828403121561088757610886610d74565b5b600082015167ffffffffffffffff8111156108a5576108a4610d6f565b5b6108b184828501610726565b91505092915050565b6108c381610c3b565b82525050565b60006108d58385610c0e565b93506108e2838584610cb9565b6108eb83610d79565b840190509392505050565b600061090182610bf8565b61090b8185610c1f565b935061091b818560208601610cc8565b80840191505092915050565b61093081610c83565b82525050565b600061094182610c03565b61094b8185610c2a565b935061095b818560208601610cc8565b61096481610d79565b840191505092915050565b600061097c602683610c2a565b915061098782610d8a565b604082019050919050565b600061099f601d83610c2a565b91506109aa82610dd9565b602082019050919050565b60006109c2602a83610c2a565b91506109cd82610e02565b604082019050919050565b60006109e5601f83610c2a565b91506109f082610e51565b602082019050919050565b610a0481610c79565b82525050565b6000610a1682846108f6565b915081905092915050565b6000608082019050610a3660008301886108ba565b610a4360208301876108ba565b610a5060408301866109fb565b8181036060830152610a638184866108c9565b90509695505050505050565b6000604082019050610a8460008301856108ba565b610a9160208301846109fb565b9392505050565b6000602082019050610aad6000830184610927565b92915050565b60006020820190508181036000830152610acd8184610936565b905092915050565b60006020820190508181036000830152610aee8161096f565b9050919050565b60006020820190508181036000830152610b0e81610992565b9050919050565b60006020820190508181036000830152610b2e816109b5565b9050919050565b60006020820190508181036000830152610b4e816109d8565b9050919050565b6000602082019050610b6a60008301846109fb565b92915050565b6000604082019050610b8560008301866109fb565b8181036020830152610b988184866108c9565b9050949350505050565b6000610bac610bbd565b9050610bb88282610cfb565b919050565b6000604051905090565b600067ffffffffffffffff821115610be257610be1610d2c565b5b610beb82610d79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610c4682610c59565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c8e82610c95565b9050919050565b6000610ca082610ca7565b9050919050565b6000610cb282610c59565b9050919050565b82818337600083830152505050565b60005b83811015610ce6578082015181840152602081019050610ccb565b83811115610cf5576000848401525b50505050565b610d0482610d79565b810181811067ffffffffffffffff82111715610d2357610d22610d2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b610e8381610c3b565b8114610e8e57600080fd5b50565b610e9a81610c4d565b8114610ea557600080fd5b50565b610eb181610c79565b8114610ebc57600080fd5b5056fea2646970667358221220c6f7c0f9935341aaaabcabf7504d01bbd38a0606132004742a97e6a200eb432564736f6c63430008070033608060405234801561001057600080fd5b5061108a806100206000396000f3fe60806040526004361061003f5760003560e01c8063357fc5a2146100445780636ed701691461006d578063e04d4f9714610084578063f05b6abf146100a0575b600080fd5b34801561005057600080fd5b5061006b6004803603810190610066919061085a565b6100c9565b005b34801561007957600080fd5b50610082610138565b005b61009e600480360381019061009991906107eb565b610171565b005b3480156100ac57600080fd5b506100c760048036038101906100c29190610733565b6101b5565b005b6100f63382858573ffffffffffffffffffffffffffffffffffffffff166101f7909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af603384848460405161012b9493929190610bb0565b60405180910390a1505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101679190610b0b565b60405180910390a1565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516101a8959493929190610bf5565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516101ea9493929190610b5d565b60405180910390a1505050565b61027a846323b872dd60e01b85858560405160240161021893929190610b26565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610280565b50505050565b60006102e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166103479092919063ffffffff16565b9050600081511115610342578080602001905181019061030291906107be565b610341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033890610cb1565b60405180910390fd5b5b505050565b6060610356848460008561035f565b90509392505050565b6060824710156103a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039b90610c71565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516103cd9190610af4565b60006040518083038185875af1925050503d806000811461040a576040519150601f19603f3d011682016040523d82523d6000602084013e61040f565b606091505b50915091506104208783838761042c565b92505050949350505050565b6060831561048f5760008351141561048757610447856104a2565b610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90610c91565b60405180910390fd5b5b82905061049a565b61049983836104c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156104d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050c9190610c4f565b60405180910390fd5b600061052861052384610cf6565b610cd1565b9050808382526020820190508285602086028201111561054b5761054a610f23565b5b60005b8581101561059957813567ffffffffffffffff81111561057157610570610f1e565b5b80860161057e89826106f0565b8552602085019450602084019350505060018101905061054e565b5050509392505050565b60006105b66105b184610d22565b610cd1565b905080838252602082019050828560208602820111156105d9576105d8610f23565b5b60005b8581101561060957816105ef888261071e565b8452602084019350602083019250506001810190506105dc565b5050509392505050565b600061062661062184610d4e565b610cd1565b90508281526020810184848401111561064257610641610f28565b5b61064d848285610e7c565b509392505050565b6000813590506106648161100f565b92915050565b600082601f83011261067f5761067e610f1e565b5b813561068f848260208601610515565b91505092915050565b600082601f8301126106ad576106ac610f1e565b5b81356106bd8482602086016105a3565b91505092915050565b6000813590506106d581611026565b92915050565b6000815190506106ea81611026565b92915050565b600082601f83011261070557610704610f1e565b5b8135610715848260208601610613565b91505092915050565b60008135905061072d8161103d565b92915050565b60008060006060848603121561074c5761074b610f32565b5b600084013567ffffffffffffffff81111561076a57610769610f2d565b5b6107768682870161066a565b935050602084013567ffffffffffffffff81111561079757610796610f2d565b5b6107a386828701610698565b92505060406107b4868287016106c6565b9150509250925092565b6000602082840312156107d4576107d3610f32565b5b60006107e2848285016106db565b91505092915050565b60008060006060848603121561080457610803610f32565b5b600084013567ffffffffffffffff81111561082257610821610f2d565b5b61082e868287016106f0565b935050602061083f8682870161071e565b9250506040610850868287016106c6565b9150509250925092565b60008060006060848603121561087357610872610f32565b5b60006108818682870161071e565b935050602061089286828701610655565b92505060406108a386828701610655565b9150509250925092565b60006108b983836109fb565b905092915050565b60006108cd8383610ad6565b60208301905092915050565b6108e281610e34565b82525050565b60006108f382610d9f565b6108fd8185610de5565b93508360208202850161090f85610d7f565b8060005b8581101561094b578484038952815161092c85826108ad565b945061093783610dcb565b925060208a01995050600181019050610913565b50829750879550505050505092915050565b600061096882610daa565b6109728185610df6565b935061097d83610d8f565b8060005b838110156109ae57815161099588826108c1565b97506109a083610dd8565b925050600181019050610981565b5085935050505092915050565b6109c481610e46565b82525050565b60006109d582610db5565b6109df8185610e07565b93506109ef818560208601610e8b565b80840191505092915050565b6000610a0682610dc0565b610a108185610e12565b9350610a20818560208601610e8b565b610a2981610f37565b840191505092915050565b6000610a3f82610dc0565b610a498185610e23565b9350610a59818560208601610e8b565b610a6281610f37565b840191505092915050565b6000610a7a602683610e23565b9150610a8582610f48565b604082019050919050565b6000610a9d601d83610e23565b9150610aa882610f97565b602082019050919050565b6000610ac0602a83610e23565b9150610acb82610fc0565b604082019050919050565b610adf81610e72565b82525050565b610aee81610e72565b82525050565b6000610b0082846109ca565b915081905092915050565b6000602082019050610b2060008301846108d9565b92915050565b6000606082019050610b3b60008301866108d9565b610b4860208301856108d9565b610b556040830184610ae5565b949350505050565b6000608082019050610b7260008301876108d9565b8181036020830152610b8481866108e8565b90508181036040830152610b98818561095d565b9050610ba760608301846109bb565b95945050505050565b6000608082019050610bc560008301876108d9565b610bd26020830186610ae5565b610bdf60408301856108d9565b610bec60608301846108d9565b95945050505050565b600060a082019050610c0a60008301886108d9565b610c176020830187610ae5565b8181036040830152610c298186610a34565b9050610c386060830185610ae5565b610c4560808301846109bb565b9695505050505050565b60006020820190508181036000830152610c698184610a34565b905092915050565b60006020820190508181036000830152610c8a81610a6d565b9050919050565b60006020820190508181036000830152610caa81610a90565b9050919050565b60006020820190508181036000830152610cca81610ab3565b9050919050565b6000610cdb610cec565b9050610ce78282610ebe565b919050565b6000604051905090565b600067ffffffffffffffff821115610d1157610d10610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d3d57610d3c610eef565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610d6957610d68610eef565b5b610d7282610f37565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610e3f82610e52565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610ea9578082015181840152602081019050610e8e565b83811115610eb8576000848401525b50505050565b610ec782610f37565b810181811067ffffffffffffffff82111715610ee657610ee5610eef565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61101881610e34565b811461102357600080fd5b50565b61102f81610e46565b811461103a57600080fd5b50565b61104681610e72565b811461105157600080fd5b5056fea2646970667358221220086a1c9f56ed96506c7198d50cf431a5b03003c16cd4168d2395cdedfc1ac06164736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c612c726200024360003960008181610433015281816104c2015281816105d40152818161066301526107130152612c726000f3fe6080604052600436106100dd5760003560e01c80637993c1e01161007f578063bcf7f32b11610059578063bcf7f32b14610251578063c39aca371461027a578063f2fde38b146102a3578063f45346dc146102cc576100dd565b80637993c1e0146101e65780638129fc1c1461020f5780638da5cb5b14610226576100dd565b80633ce4a5bc116100bb5780633ce4a5bc1461015d5780634f1ef2861461018857806352d1902d146101a4578063715018a6146101cf576100dd565b80630ac7c44c146100e2578063135390f91461010b5780633659cfe614610134575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611c80565b6102f5565b005b34801561011757600080fd5b50610132600480360381019061012d9190611cfc565b61034c565b005b34801561014057600080fd5b5061015b60048036038101906101569190611b0a565b610431565b005b34801561016957600080fd5b506101726105ba565b60405161017f919061226e565b60405180910390f35b6101a2600480360381019061019d9190611b37565b6105d2565b005b3480156101b057600080fd5b506101b961070f565b6040516101c691906122e9565b60405180910390f35b3480156101db57600080fd5b506101e46107c8565b005b3480156101f257600080fd5b5061020d60048036038101906102089190611d6b565b6107dc565b005b34801561021b57600080fd5b506102246108c7565b005b34801561023257600080fd5b5061023b610a0d565b604051610248919061226e565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611e0f565b610a37565b005b34801561028657600080fd5b506102a1600480360381019061029c9190611e0f565b610b2b565b005b3480156102af57600080fd5b506102ca60048036038101906102c59190611b0a565b610d5d565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190611bd3565b610de1565b005b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f84848460405161033f93929190612304565b60405180910390a2505050565b60006103588383610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8585848673ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103db57600080fd5b505afa1580156103ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104139190611ec5565b60405161042394939291906123a0565b60405180910390a250505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b79061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104ff61128d565b73ffffffffffffffffffffffffffffffffffffffff1614610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c9061247c565b60405180910390fd5b61055e816112e4565b6105b781600067ffffffffffffffff81111561057d5761057c61282b565b5b6040519080825280601f01601f1916602001820160405280156105af5781602001600182028036833780820191505090505b5060006112ef565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106589061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a061128d565b73ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed9061247c565b60405180910390fd5b6106ff826112e4565b61070b828260016112ef565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107969061249c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6107d061146c565b6107da60006114ea565b565b60006107e88585610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8787848873ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190611ec5565b88886040516108b79695949392919061233d565b60405180910390a2505050505050565b60008060019054906101000a900460ff161590508080156108f85750600160008054906101000a900460ff1660ff16105b806109255750610907306115b0565b1580156109245750600160008054906101000a900460ff1660ff16145b5b610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906124dc565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156109a1576001600060016101000a81548160ff0219169083151502179055505b6109a96115d3565b6109b161162c565b8015610a0a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a0191906123ff565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610af195949392919061259c565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c1d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610c54576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610c8f9291906122c0565b602060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611c26565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610d2395949392919061259c565b600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b50505050505050505050565b610d6561146c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc9061243c565b60405180910390fd5b610dde816114ea565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610ed357503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b8152600401610f459291906122c0565b602060405180830381600087803b158015610f5f57600080fd5b505af1158015610f73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f979190611c26565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190611b93565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161107493929190612289565b602060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190611c26565b6110fc576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b815260040161113993929190612289565b602060405180830381600087803b15801561115357600080fd5b505af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190611c26565b6111c1576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b81526004016111fa91906125f1565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611c26565b611282576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60006112bb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ec61146c565b50565b61131b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611687565b60000160009054906101000a900460ff161561133f5761133a83611691565b611467565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561138557600080fd5b505afa9250505080156113b657506040513d601f19601f820116820180604052508101906113b39190611c53565b60015b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906124fc565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461145a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611451906124bc565b60405180910390fd5b5061146683838361174a565b5b505050565b611474611776565b73ffffffffffffffffffffffffffffffffffffffff16611492610a0d565b73ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df9061253c565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116199061257c565b60405180910390fd5b61162a61177e565b565b600060019054906101000a900460ff1661167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061257c565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61169a816115b0565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d09061251c565b60405180910390fd5b806117067f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611753836117df565b6000825111806117605750805b156117715761176f838361182e565b505b505050565b600033905090565b600060019054906101000a900460ff166117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061257c565b60405180910390fd5b6117dd6117d8611776565b6114ea565b565b6117e881611691565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606118538383604051806060016040528060278152602001612c166027913961185b565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516118859190612257565b600060405180830381855af49150503d80600081146118c0576040519150601f19603f3d011682016040523d82523d6000602084013e6118c5565b606091505b50915091506118d6868383876118e1565b925050509392505050565b606083156119445760008351141561193c576118fc856115b0565b61193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061255c565b60405180910390fd5b5b82905061194f565b61194e8383611957565b5b949350505050565b60008251111561196a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e919061241a565b60405180910390fd5b60006119ba6119b584612631565b61260c565b9050828152602081018484840111156119d6576119d5612878565b5b6119e18482856127b8565b509392505050565b6000813590506119f881612bb9565b92915050565b600081519050611a0d81612bb9565b92915050565b600081519050611a2281612bd0565b92915050565b600081519050611a3781612be7565b92915050565b60008083601f840112611a5357611a52612864565b5b8235905067ffffffffffffffff811115611a7057611a6f61285f565b5b602083019150836001820283011115611a8c57611a8b612873565b5b9250929050565b600082601f830112611aa857611aa7612864565b5b8135611ab88482602086016119a7565b91505092915050565b600060608284031215611ad757611ad6612869565b5b81905092915050565b600081359050611aef81612bfe565b92915050565b600081519050611b0481612bfe565b92915050565b600060208284031215611b2057611b1f612887565b5b6000611b2e848285016119e9565b91505092915050565b60008060408385031215611b4e57611b4d612887565b5b6000611b5c858286016119e9565b925050602083013567ffffffffffffffff811115611b7d57611b7c61287d565b5b611b8985828601611a93565b9150509250929050565b60008060408385031215611baa57611ba9612887565b5b6000611bb8858286016119fe565b9250506020611bc985828601611af5565b9150509250929050565b600080600060608486031215611bec57611beb612887565b5b6000611bfa868287016119e9565b9350506020611c0b86828701611ae0565b9250506040611c1c868287016119e9565b9150509250925092565b600060208284031215611c3c57611c3b612887565b5b6000611c4a84828501611a13565b91505092915050565b600060208284031215611c6957611c68612887565b5b6000611c7784828501611a28565b91505092915050565b600080600060408486031215611c9957611c98612887565b5b600084013567ffffffffffffffff811115611cb757611cb661287d565b5b611cc386828701611a93565b935050602084013567ffffffffffffffff811115611ce457611ce361287d565b5b611cf086828701611a3d565b92509250509250925092565b600080600060608486031215611d1557611d14612887565b5b600084013567ffffffffffffffff811115611d3357611d3261287d565b5b611d3f86828701611a93565b9350506020611d5086828701611ae0565b9250506040611d61868287016119e9565b9150509250925092565b600080600080600060808688031215611d8757611d86612887565b5b600086013567ffffffffffffffff811115611da557611da461287d565b5b611db188828901611a93565b9550506020611dc288828901611ae0565b9450506040611dd3888289016119e9565b935050606086013567ffffffffffffffff811115611df457611df361287d565b5b611e0088828901611a3d565b92509250509295509295909350565b60008060008060008060a08789031215611e2c57611e2b612887565b5b600087013567ffffffffffffffff811115611e4a57611e4961287d565b5b611e5689828a01611ac1565b9650506020611e6789828a016119e9565b9550506040611e7889828a01611ae0565b9450506060611e8989828a016119e9565b935050608087013567ffffffffffffffff811115611eaa57611ea961287d565b5b611eb689828a01611a3d565b92509250509295509295509295565b600060208284031215611edb57611eda612887565b5b6000611ee984828501611af5565b91505092915050565b611efb81612747565b82525050565b611f0a81612747565b82525050565b611f1981612765565b82525050565b6000611f2b8385612678565b9350611f388385846127b8565b611f418361288c565b840190509392505050565b6000611f588385612689565b9350611f658385846127b8565b611f6e8361288c565b840190509392505050565b6000611f8482612662565b611f8e8185612689565b9350611f9e8185602086016127c7565b611fa78161288c565b840191505092915050565b6000611fbd82612662565b611fc7818561269a565b9350611fd78185602086016127c7565b80840191505092915050565b611fec816127a6565b82525050565b6000611ffd8261266d565b61200781856126a5565b93506120178185602086016127c7565b6120208161288c565b840191505092915050565b60006120386026836126a5565b91506120438261289d565b604082019050919050565b600061205b602c836126a5565b9150612066826128ec565b604082019050919050565b600061207e602c836126a5565b91506120898261293b565b604082019050919050565b60006120a16038836126a5565b91506120ac8261298a565b604082019050919050565b60006120c46029836126a5565b91506120cf826129d9565b604082019050919050565b60006120e7602e836126a5565b91506120f282612a28565b604082019050919050565b600061210a602e836126a5565b915061211582612a77565b604082019050919050565b600061212d602d836126a5565b915061213882612ac6565b604082019050919050565b60006121506020836126a5565b915061215b82612b15565b602082019050919050565b6000612173600083612689565b915061217e82612b3e565b600082019050919050565b6000612196601d836126a5565b91506121a182612b41565b602082019050919050565b60006121b9602b836126a5565b91506121c482612b6a565b604082019050919050565b6000606083016121e260008401846126cd565b85830360008701526121f5838284611f1f565b9250505061220660208401846126b6565b6122136020860182611ef2565b506122216040840184612730565b61222e6040860182612239565b508091505092915050565b6122428161278f565b82525050565b6122518161278f565b82525050565b60006122638284611fb2565b915081905092915050565b60006020820190506122836000830184611f01565b92915050565b600060608201905061229e6000830186611f01565b6122ab6020830185611f01565b6122b86040830184612248565b949350505050565b60006040820190506122d56000830185611f01565b6122e26020830184612248565b9392505050565b60006020820190506122fe6000830184611f10565b92915050565b6000604082019050818103600083015261231e8186611f79565b90508181036020830152612333818486611f4c565b9050949350505050565b600060a08201905081810360008301526123578189611f79565b90506123666020830188612248565b6123736040830187612248565b6123806060830186612248565b8181036080830152612393818486611f4c565b9050979650505050505050565b600060a08201905081810360008301526123ba8187611f79565b90506123c96020830186612248565b6123d66040830185612248565b6123e36060830184612248565b81810360808301526123f481612166565b905095945050505050565b60006020820190506124146000830184611fe3565b92915050565b600060208201905081810360008301526124348184611ff2565b905092915050565b600060208201905081810360008301526124558161202b565b9050919050565b600060208201905081810360008301526124758161204e565b9050919050565b6000602082019050818103600083015261249581612071565b9050919050565b600060208201905081810360008301526124b581612094565b9050919050565b600060208201905081810360008301526124d5816120b7565b9050919050565b600060208201905081810360008301526124f5816120da565b9050919050565b60006020820190508181036000830152612515816120fd565b9050919050565b6000602082019050818103600083015261253581612120565b9050919050565b6000602082019050818103600083015261255581612143565b9050919050565b6000602082019050818103600083015261257581612189565b9050919050565b60006020820190508181036000830152612595816121ac565b9050919050565b600060808201905081810360008301526125b681886121cf565b90506125c56020830187611f01565b6125d26040830186612248565b81810360608301526125e5818486611f4c565b90509695505050505050565b60006020820190506126066000830184612248565b92915050565b6000612616612627565b905061262282826127fa565b919050565b6000604051905090565b600067ffffffffffffffff82111561264c5761264b61282b565b5b6126558261288c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006126c560208401846119e9565b905092915050565b600080833560016020038436030381126126ea576126e9612882565b5b83810192508235915060208301925067ffffffffffffffff8211156127125761271161285a565b5b6001820236038413156127285761272761286e565b5b509250929050565b600061273f6020840184611ae0565b905092915050565b60006127528261276f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006127b182612799565b9050919050565b82818337600083830152505050565b60005b838110156127e55780820151818401526020810190506127ca565b838111156127f4576000848401525b50505050565b6128038261288c565b810181811067ffffffffffffffff821117156128225761282161282b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b612bc281612747565b8114612bcd57600080fd5b50565b612bd981612759565b8114612be457600080fd5b50565b612bf081612765565b8114612bfb57600080fd5b50565b612c078161278f565b8114612c1257600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122015c949adac746922ae292180700af4f4a4ce97a3db9d7b2c84f6c7beb1452aaa64736f6c63430008070033608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea26469706673582212205b143977db6155828f5d21dccf3e39e1abbc3e6abfa0cfb9b988a47a7ff289c864736f6c6343000807003360806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212202a32df31a933796903f60b841b0f44768ba91c1035d163fc0f04fe249f5f2e7464736f6c6343000807003360c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212204256743d8281ef8d828896d1bab08cb03656cd913941f2ab189ea466016eead564736f6c63430008070033a264697066735822122061a51f9afd0e3be660d02e15aa3ec2c11dcb8b25643f9be51d4c39275da350c064736f6c63430008070033"; - -type GatewayIntegrationTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayIntegrationTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayIntegrationTest__factory extends ContractFactory { - constructor(...args: GatewayIntegrationTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayIntegrationTest { - return super.attach(address) as GatewayIntegrationTest; - } - override connect(signer: Signer): GatewayIntegrationTest__factory { - return super.connect(signer) as GatewayIntegrationTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayIntegrationTestInterface { - return new utils.Interface(_abi) as GatewayIntegrationTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayIntegrationTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayIntegrationTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts deleted file mode 100644 index c9d4b01a..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayIntegration.t.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayIntegrationTest__factory } from "./GatewayIntegrationTest__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts deleted file mode 100644 index 12f9f220..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest__factory.ts +++ /dev/null @@ -1,766 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayZEVMInboundTest, - GatewayZEVMInboundTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMInboundTest"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testWithdrawZRC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testWithdrawZRC20WithMessage", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b5061ad9f80620000576000396000f3fe60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063916a17c611620000a5578063ba414fa6116200006f578063ba414fa61462000273578063e20c9f711462000295578063fa7626d414620002b7578063fbc611c814620002d95762000118565b8063916a17c61462000201578063b0464fdc1462000223578063b5508aa91462000245578063b7f0583614620002675762000118565b80633e5e3c2311620000e75780633e5e3c2314620001795780633f7286f4146200019b57806366d9a9a014620001bd57806385226c8114620001df5762000118565b80630a9254e4146200011d5780631e63d2b914620001295780631ed7831c14620001355780632ade38801462000157575b600080fd5b62000127620002e5565b005b6200013362000c35565b005b6200013f620011d5565b6040516200014e919062002e5e565b60405180910390f35b6200016162001265565b60405162000170919062002eca565b60405180910390f35b62000183620013ff565b60405162000192919062002e5e565b60405180910390f35b620001a56200148f565b604051620001b4919062002e5e565b60405180910390f35b620001c76200151f565b604051620001d6919062002ea6565b60405180910390f35b620001e9620016b6565b604051620001f8919062002e82565b60405180910390f35b6200020b62001799565b6040516200021a919062002eee565b60405180910390f35b6200022d620018ec565b6040516200023c919062002eee565b60405180910390f35b6200024f62001a3f565b6040516200025e919062002e82565b60405180910390f35b6200027162001b22565b005b6200027d62001e26565b6040516200028c919062002f12565b60405180910390f35b6200029f62001f59565b604051620002ae919062002e5e565b60405180910390f35b620002c162001fe9565b604051620002d0919062002f12565b60405180910390f35b620002e362001ffc565b005b30602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003779062002577565b604051809103906000f08015801562000394573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003e39062002585565b604051809103906000f08015801562000400573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166306447d56601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e957600080fd5b505afa158015620004fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052491906200260b565b6040518263ffffffff1660e01b815260040162000542919062002d7d565b600060405180830381600087803b1580156200055d57600080fd5b505af115801562000572573d6000803e3d6000fd5b505050506000806000604051620005899062002593565b620005979392919062002d9a565b604051809103906000f080158015620005b4573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060126001806000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065090620025a1565b620006619695949392919062003194565b604051809103906000f0801580156200067e573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee2815ba6001602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620007419291906200313a565b600060405180830381600087803b1580156200075c57600080fd5b505af115801562000771573d6000803e3d6000fd5b50505050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7cb05076001806040518363ffffffff1660e01b8152600401620007d592919062003167565b600060405180830381600087803b158015620007f057600080fd5b505af115801562000805573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663c88a5e6d601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008b157600080fd5b505afa158015620008c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ec91906200260b565b633b9aca006040518363ffffffff1660e01b81526004016200091092919062002e04565b600060405180830381600087803b1580156200092b57600080fd5b505af115801562000940573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620186a06040518363ffffffff1660e01b8152600401620009c892919062002e31565b602060405180830381600087803b158015620009e357600080fd5b505af1158015620009f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1e91906200263d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000a8b57600080fd5b505af115801562000aa0573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000b24919062002d7d565b600060405180830381600087803b15801562000b3f57600080fd5b505af115801562000b54573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620186a06040518363ffffffff1660e01b815260040162000bdc92919062002e31565b602060405180830381600087803b15801562000bf757600080fd5b505af115801562000c0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c3291906200263d565b50565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000cb6919062002d7d565b60206040518083038186803b15801562000ccf57600080fd5b505afa15801562000ce4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d0a9190620026a1565b90506000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160240162000d43919062002d7d565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162000e4c95949392919062002f2f565b600060405180830381600087803b15801562000e6757600080fd5b505af115801562000e7c573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162000f0f919062002d60565b60405160208183030381529060405260016000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f8b57600080fd5b505afa15801562000fa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fc69190620026a1565b8660405162000fda95949392919062003066565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001055919062002d60565b6040516020818303038152906040526001602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518563ffffffff1660e01b8152600401620010ab94939291906200300b565b600060405180830381600087803b158015620010c657600080fd5b505af1158015620010db573d6000803e3d6000fd5b505050506000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001160919062002d7d565b60206040518083038186803b1580156200117957600080fd5b505afa1580156200118e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b49190620026a1565b9050620011d0600184620011c9919062003409565b82620024e1565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156200125b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001210575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015620013f657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015620013de5783829060005260206000200180546200134a9062003594565b80601f0160208091040260200160405190810160405280929190818152602001828054620013789062003594565b8015620013c95780601f106200139d57610100808354040283529160200191620013c9565b820191906000526020600020905b815481529060010190602001808311620013ab57829003601f168201915b50505050508152602001906001019062001328565b50505050815250508152602001906001019062001289565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156200148557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200143a575b5050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200151557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311620014ca575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620016ad5783829060005260206000209060020201604051806040016040529081600082018054620015799062003594565b80601f0160208091040260200160405190810160405280929190818152602001828054620015a79062003594565b8015620015f85780601f10620015cc57610100808354040283529160200191620015f8565b820191906000526020600020905b815481529060010190602001808311620015da57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200169457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620016405790505b5050505050815250508152602001906001019062001543565b50505050905090565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001790578382906000526020600020018054620016fc9062003594565b80601f01602080910402602001604051908101604052809291908181526020018280546200172a9062003594565b80156200177b5780601f106200174f576101008083540402835291602001916200177b565b820191906000526020600020905b8154815290600101906020018083116200175d57829003601f168201915b505050505081526020019060010190620016da565b50505050905090565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015620018e357838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620018ca57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018765790505b50505050508152505081526020019060010190620017bd565b50505050905090565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562001a3657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180548060200260200160405190810160405280929190818152602001828054801562001a1d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620019c95790505b5050505050815250508152602001906001019062001910565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001b1957838290600052602060002001805462001a859062003594565b80601f016020809104026020016040519081016040528092919081815260200182805462001ab39062003594565b801562001b045780601f1062001ad85761010080835404028352916020019162001b04565b820191906000526020600020905b81548152906001019060200180831162001ae657829003601f168201915b50505050508152602001906001019062001a63565b50505050905090565b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160240162001b59919062002d7d565b6040516020818303038152906040527f84fae760000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162001c6295949392919062002f2f565b600060405180830381600087803b15801562001c7d57600080fd5b505af115801562001c92573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001d25919062002d60565b6040516020818303038152906040528360405162001d4592919062002f8c565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001dc0919062002d60565b604051602081830303815290604052836040518363ffffffff1660e01b815260040162001def92919062002f8c565b600060405180830381600087803b15801562001e0a57600080fd5b505af115801562001e1f573d6000803e3d6000fd5b5050505050565b6000600860009054906101000a900460ff161562001e5657600860009054906101000a900460ff16905062001f56565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b815260040162001efd92919062002dd7565b60206040518083038186803b15801562001f1657600080fd5b505afa15801562001f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f5191906200266f565b141590505b90565b6060601580548060200260200160405190810160405280929190818152602001828054801562001fdf57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162001f94575b5050505050905090565b601f60009054906101000a900460ff1681565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200207d919062002d7d565b60206040518083038186803b1580156200209657600080fd5b505afa158015620020ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020d19190620026a1565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016200215d95949392919062002f2f565b600060405180830381600087803b1580156200217857600080fd5b505af11580156200218d573d6000803e3d6000fd5b50505050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162002220919062002d60565b60405160208183030381529060405260016000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200229c57600080fd5b505afa158015620022b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d79190620026a1565b604051620022e99493929190620030d1565b60405180910390a2601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663135390f9602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162002364919062002d60565b6040516020818303038152906040526001602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401620023b89392919062002fc7565b600060405180830381600087803b158015620023d357600080fd5b505af1158015620023e8573d6000803e3d6000fd5b505050506000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016200246d919062002d7d565b60206040518083038186803b1580156200248657600080fd5b505afa1580156200249b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024c19190620026a1565b9050620024dd600183620024d6919062003409565b82620024e1565b5050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166398296c5483836040518363ffffffff1660e01b8152600401620025419291906200322c565b60006040518083038186803b1580156200255a57600080fd5b505afa1580156200256f573d6000803e3d6000fd5b505050505050565b612eb5806200377783390190565b610667806200662c83390190565b6118aa8062006c9383390190565b61282d806200853d83390190565b600081519050620025c0816200370e565b92915050565b600081519050620025d78162003728565b92915050565b600081519050620025ee8162003742565b92915050565b60008151905062002605816200375c565b92915050565b6000602082840312156200262457620026236200367f565b5b60006200263484828501620025af565b91505092915050565b6000602082840312156200265657620026556200367f565b5b60006200266684828501620025c6565b91505092915050565b6000602082840312156200268857620026876200367f565b5b60006200269884828501620025dd565b91505092915050565b600060208284031215620026ba57620026b96200367f565b5b6000620026ca84828501620025f4565b91505092915050565b6000620026e183836200275f565b60208301905092915050565b6000620026fb838362002b17565b60208301905092915050565b600062002715838362002bcf565b905092915050565b60006200272b838362002c85565b905092915050565b600062002741838362002ccd565b905092915050565b600062002757838362002d0e565b905092915050565b6200276a8162003444565b82525050565b6200277b8162003444565b82525050565b62002796620027908262003444565b620035ca565b82525050565b6000620027a982620032b9565b620027b581856200335f565b9350620027c28362003259565b8060005b83811015620027f9578151620027dd8882620026d3565b9750620027ea8362003311565b925050600181019050620027c6565b5085935050505092915050565b60006200281382620032c4565b6200281f818562003370565b93506200282c8362003269565b8060005b8381101562002863578151620028478882620026ed565b975062002854836200331e565b92505060018101905062002830565b5085935050505092915050565b60006200287d82620032cf565b62002889818562003381565b9350836020820285016200289d8562003279565b8060005b85811015620028df5784840389528151620028bd858262002707565b9450620028ca836200332b565b925060208a01995050600181019050620028a1565b50829750879550505050505092915050565b6000620028fe82620032cf565b6200290a818562003392565b9350836020820285016200291e8562003279565b8060005b858110156200296057848403895281516200293e858262002707565b94506200294b836200332b565b925060208a0199505060018101905062002922565b50829750879550505050505092915050565b60006200297f82620032da565b6200298b8185620033a3565b9350836020820285016200299f8562003289565b8060005b85811015620029e15784840389528151620029bf85826200271d565b9450620029cc8362003338565b925060208a01995050600181019050620029a3565b50829750879550505050505092915050565b600062002a0082620032e5565b62002a0c8185620033b4565b93508360208202850162002a208562003299565b8060005b8581101562002a62578484038952815162002a40858262002733565b945062002a4d8362003345565b925060208a0199505060018101905062002a24565b50829750879550505050505092915050565b600062002a8182620032f0565b62002a8d8185620033c5565b93508360208202850162002aa185620032a9565b8060005b8581101562002ae3578484038952815162002ac1858262002749565b945062002ace8362003352565b925060208a0199505060018101905062002aa5565b50829750879550505050505092915050565b62002b008162003458565b82525050565b62002b118162003464565b82525050565b62002b22816200346e565b82525050565b600062002b3582620032fb565b62002b418185620033d6565b935062002b538185602086016200355e565b62002b5e8162003684565b840191505092915050565b62002b7481620034e6565b82525050565b62002b8581620034fa565b82525050565b62002b96816200350e565b82525050565b62002ba78162003522565b82525050565b62002bb88162003536565b82525050565b62002bc9816200354a565b82525050565b600062002bdc8262003306565b62002be88185620033e7565b935062002bfa8185602086016200355e565b62002c058162003684565b840191505092915050565b600062002c1f600583620033f8565b915062002c2c82620036a2565b602082019050919050565b600062002c46600383620033f8565b915062002c5382620036cb565b602082019050919050565b600062002c6d600083620033d6565b915062002c7a82620036f4565b600082019050919050565b6000604083016000830151848203600086015262002ca4828262002bcf565b9150506020830151848203602086015262002cc0828262002806565b9150508091505092915050565b600060408301600083015162002ce760008601826200275f565b506020830151848203602086015262002d01828262002870565b9150508091505092915050565b600060408301600083015162002d2860008601826200275f565b506020830151848203602086015262002d42828262002806565b9150508091505092915050565b62002d5a81620034cf565b82525050565b600062002d6e828462002781565b60148201915081905092915050565b600060208201905062002d94600083018462002770565b92915050565b600060608201905062002db1600083018662002770565b62002dc0602083018562002770565b62002dcf604083018462002770565b949350505050565b600060408201905062002dee600083018562002770565b62002dfd602083018462002b06565b9392505050565b600060408201905062002e1b600083018562002770565b62002e2a602083018462002b8b565b9392505050565b600060408201905062002e48600083018562002770565b62002e57602083018462002b9c565b9392505050565b6000602082019050818103600083015262002e7a81846200279c565b905092915050565b6000602082019050818103600083015262002e9e8184620028f1565b905092915050565b6000602082019050818103600083015262002ec2818462002972565b905092915050565b6000602082019050818103600083015262002ee68184620029f3565b905092915050565b6000602082019050818103600083015262002f0a818462002a74565b905092915050565b600060208201905062002f29600083018462002af5565b92915050565b600060a08201905062002f46600083018862002af5565b62002f55602083018762002af5565b62002f64604083018662002af5565b62002f73606083018562002af5565b62002f82608083018462002770565b9695505050505050565b6000604082019050818103600083015262002fa8818562002b28565b9050818103602083015262002fbe818462002b28565b90509392505050565b6000606082019050818103600083015262002fe3818662002b28565b905062002ff4602083018562002bbe565b62003003604083018462002770565b949350505050565b6000608082019050818103600083015262003027818762002b28565b905062003038602083018662002bbe565b62003047604083018562002770565b81810360608301526200305b818462002b28565b905095945050505050565b600060a082019050818103600083015262003082818862002b28565b905062003093602083018762002bbe565b620030a2604083018662002b7a565b620030b1606083018562002d4f565b8181036080830152620030c5818462002b28565b90509695505050505050565b600060a0820190508181036000830152620030ed818762002b28565b9050620030fe602083018662002bbe565b6200310d604083018562002b7a565b6200311c606083018462002d4f565b81810360808301526200312f8162002c5e565b905095945050505050565b600060408201905062003151600083018562002bbe565b62003160602083018462002770565b9392505050565b60006040820190506200317e600083018562002bbe565b6200318d602083018462002bbe565b9392505050565b6000610100820190508181036000830152620031b08162002c10565b90508181036020830152620031c58162002c37565b9050620031d6604083018962002bad565b620031e5606083018862002bbe565b620031f4608083018762002b69565b6200320360a083018662002b7a565b6200321260c083018562002770565b6200322160e083018462002770565b979650505050505050565b600060408201905062003243600083018562002d4f565b62003252602083018462002d4f565b9392505050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200341682620034cf565b91506200342383620034cf565b925082821015620034395762003438620035f2565b5b828203905092915050565b60006200345182620034af565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050620034aa82620036f7565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620034f3826200349a565b9050919050565b60006200350782620034cf565b9050919050565b60006200351b82620034cf565b9050919050565b60006200352f82620034cf565b9050919050565b60006200354382620034d9565b9050919050565b60006200355782620034cf565b9050919050565b60005b838110156200357e57808201518184015260208101905062003561565b838111156200358e576000848401525b50505050565b60006002820490506001821680620035ad57607f821691505b60208210811415620035c457620035c362003650565b5b50919050565b6000620035d782620035de565b9050919050565b6000620035eb8262003695565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f544f4b454e000000000000000000000000000000000000000000000000000000600082015250565b7f544b4e0000000000000000000000000000000000000000000000000000000000600082015250565b50565b600381106200370b576200370a62003621565b5b50565b620037198162003444565b81146200372557600080fd5b50565b620037338162003458565b81146200373f57600080fd5b50565b6200374d8162003464565b81146200375957600080fd5b50565b6200376781620034cf565b81146200377357600080fd5b5056fe60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c612c726200024360003960008181610433015281816104c2015281816105d40152818161066301526107130152612c726000f3fe6080604052600436106100dd5760003560e01c80637993c1e01161007f578063bcf7f32b11610059578063bcf7f32b14610251578063c39aca371461027a578063f2fde38b146102a3578063f45346dc146102cc576100dd565b80637993c1e0146101e65780638129fc1c1461020f5780638da5cb5b14610226576100dd565b80633ce4a5bc116100bb5780633ce4a5bc1461015d5780634f1ef2861461018857806352d1902d146101a4578063715018a6146101cf576100dd565b80630ac7c44c146100e2578063135390f91461010b5780633659cfe614610134575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611c80565b6102f5565b005b34801561011757600080fd5b50610132600480360381019061012d9190611cfc565b61034c565b005b34801561014057600080fd5b5061015b60048036038101906101569190611b0a565b610431565b005b34801561016957600080fd5b506101726105ba565b60405161017f919061226e565b60405180910390f35b6101a2600480360381019061019d9190611b37565b6105d2565b005b3480156101b057600080fd5b506101b961070f565b6040516101c691906122e9565b60405180910390f35b3480156101db57600080fd5b506101e46107c8565b005b3480156101f257600080fd5b5061020d60048036038101906102089190611d6b565b6107dc565b005b34801561021b57600080fd5b506102246108c7565b005b34801561023257600080fd5b5061023b610a0d565b604051610248919061226e565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611e0f565b610a37565b005b34801561028657600080fd5b506102a1600480360381019061029c9190611e0f565b610b2b565b005b3480156102af57600080fd5b506102ca60048036038101906102c59190611b0a565b610d5d565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190611bd3565b610de1565b005b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f84848460405161033f93929190612304565b60405180910390a2505050565b60006103588383610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8585848673ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103db57600080fd5b505afa1580156103ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104139190611ec5565b60405161042394939291906123a0565b60405180910390a250505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b79061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104ff61128d565b73ffffffffffffffffffffffffffffffffffffffff1614610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c9061247c565b60405180910390fd5b61055e816112e4565b6105b781600067ffffffffffffffff81111561057d5761057c61282b565b5b6040519080825280601f01601f1916602001820160405280156105af5781602001600182028036833780820191505090505b5060006112ef565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106589061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a061128d565b73ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed9061247c565b60405180910390fd5b6106ff826112e4565b61070b828260016112ef565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107969061249c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6107d061146c565b6107da60006114ea565b565b60006107e88585610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8787848873ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190611ec5565b88886040516108b79695949392919061233d565b60405180910390a2505050505050565b60008060019054906101000a900460ff161590508080156108f85750600160008054906101000a900460ff1660ff16105b806109255750610907306115b0565b1580156109245750600160008054906101000a900460ff1660ff16145b5b610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906124dc565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156109a1576001600060016101000a81548160ff0219169083151502179055505b6109a96115d3565b6109b161162c565b8015610a0a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a0191906123ff565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610af195949392919061259c565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c1d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610c54576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610c8f9291906122c0565b602060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611c26565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610d2395949392919061259c565b600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b50505050505050505050565b610d6561146c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc9061243c565b60405180910390fd5b610dde816114ea565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610ed357503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b8152600401610f459291906122c0565b602060405180830381600087803b158015610f5f57600080fd5b505af1158015610f73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f979190611c26565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190611b93565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161107493929190612289565b602060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190611c26565b6110fc576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b815260040161113993929190612289565b602060405180830381600087803b15801561115357600080fd5b505af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190611c26565b6111c1576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b81526004016111fa91906125f1565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611c26565b611282576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60006112bb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ec61146c565b50565b61131b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611687565b60000160009054906101000a900460ff161561133f5761133a83611691565b611467565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561138557600080fd5b505afa9250505080156113b657506040513d601f19601f820116820180604052508101906113b39190611c53565b60015b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906124fc565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461145a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611451906124bc565b60405180910390fd5b5061146683838361174a565b5b505050565b611474611776565b73ffffffffffffffffffffffffffffffffffffffff16611492610a0d565b73ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df9061253c565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116199061257c565b60405180910390fd5b61162a61177e565b565b600060019054906101000a900460ff1661167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061257c565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61169a816115b0565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d09061251c565b60405180910390fd5b806117067f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611753836117df565b6000825111806117605750805b156117715761176f838361182e565b505b505050565b600033905090565b600060019054906101000a900460ff166117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061257c565b60405180910390fd5b6117dd6117d8611776565b6114ea565b565b6117e881611691565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606118538383604051806060016040528060278152602001612c166027913961185b565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516118859190612257565b600060405180830381855af49150503d80600081146118c0576040519150601f19603f3d011682016040523d82523d6000602084013e6118c5565b606091505b50915091506118d6868383876118e1565b925050509392505050565b606083156119445760008351141561193c576118fc856115b0565b61193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061255c565b60405180910390fd5b5b82905061194f565b61194e8383611957565b5b949350505050565b60008251111561196a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e919061241a565b60405180910390fd5b60006119ba6119b584612631565b61260c565b9050828152602081018484840111156119d6576119d5612878565b5b6119e18482856127b8565b509392505050565b6000813590506119f881612bb9565b92915050565b600081519050611a0d81612bb9565b92915050565b600081519050611a2281612bd0565b92915050565b600081519050611a3781612be7565b92915050565b60008083601f840112611a5357611a52612864565b5b8235905067ffffffffffffffff811115611a7057611a6f61285f565b5b602083019150836001820283011115611a8c57611a8b612873565b5b9250929050565b600082601f830112611aa857611aa7612864565b5b8135611ab88482602086016119a7565b91505092915050565b600060608284031215611ad757611ad6612869565b5b81905092915050565b600081359050611aef81612bfe565b92915050565b600081519050611b0481612bfe565b92915050565b600060208284031215611b2057611b1f612887565b5b6000611b2e848285016119e9565b91505092915050565b60008060408385031215611b4e57611b4d612887565b5b6000611b5c858286016119e9565b925050602083013567ffffffffffffffff811115611b7d57611b7c61287d565b5b611b8985828601611a93565b9150509250929050565b60008060408385031215611baa57611ba9612887565b5b6000611bb8858286016119fe565b9250506020611bc985828601611af5565b9150509250929050565b600080600060608486031215611bec57611beb612887565b5b6000611bfa868287016119e9565b9350506020611c0b86828701611ae0565b9250506040611c1c868287016119e9565b9150509250925092565b600060208284031215611c3c57611c3b612887565b5b6000611c4a84828501611a13565b91505092915050565b600060208284031215611c6957611c68612887565b5b6000611c7784828501611a28565b91505092915050565b600080600060408486031215611c9957611c98612887565b5b600084013567ffffffffffffffff811115611cb757611cb661287d565b5b611cc386828701611a93565b935050602084013567ffffffffffffffff811115611ce457611ce361287d565b5b611cf086828701611a3d565b92509250509250925092565b600080600060608486031215611d1557611d14612887565b5b600084013567ffffffffffffffff811115611d3357611d3261287d565b5b611d3f86828701611a93565b9350506020611d5086828701611ae0565b9250506040611d61868287016119e9565b9150509250925092565b600080600080600060808688031215611d8757611d86612887565b5b600086013567ffffffffffffffff811115611da557611da461287d565b5b611db188828901611a93565b9550506020611dc288828901611ae0565b9450506040611dd3888289016119e9565b935050606086013567ffffffffffffffff811115611df457611df361287d565b5b611e0088828901611a3d565b92509250509295509295909350565b60008060008060008060a08789031215611e2c57611e2b612887565b5b600087013567ffffffffffffffff811115611e4a57611e4961287d565b5b611e5689828a01611ac1565b9650506020611e6789828a016119e9565b9550506040611e7889828a01611ae0565b9450506060611e8989828a016119e9565b935050608087013567ffffffffffffffff811115611eaa57611ea961287d565b5b611eb689828a01611a3d565b92509250509295509295509295565b600060208284031215611edb57611eda612887565b5b6000611ee984828501611af5565b91505092915050565b611efb81612747565b82525050565b611f0a81612747565b82525050565b611f1981612765565b82525050565b6000611f2b8385612678565b9350611f388385846127b8565b611f418361288c565b840190509392505050565b6000611f588385612689565b9350611f658385846127b8565b611f6e8361288c565b840190509392505050565b6000611f8482612662565b611f8e8185612689565b9350611f9e8185602086016127c7565b611fa78161288c565b840191505092915050565b6000611fbd82612662565b611fc7818561269a565b9350611fd78185602086016127c7565b80840191505092915050565b611fec816127a6565b82525050565b6000611ffd8261266d565b61200781856126a5565b93506120178185602086016127c7565b6120208161288c565b840191505092915050565b60006120386026836126a5565b91506120438261289d565b604082019050919050565b600061205b602c836126a5565b9150612066826128ec565b604082019050919050565b600061207e602c836126a5565b91506120898261293b565b604082019050919050565b60006120a16038836126a5565b91506120ac8261298a565b604082019050919050565b60006120c46029836126a5565b91506120cf826129d9565b604082019050919050565b60006120e7602e836126a5565b91506120f282612a28565b604082019050919050565b600061210a602e836126a5565b915061211582612a77565b604082019050919050565b600061212d602d836126a5565b915061213882612ac6565b604082019050919050565b60006121506020836126a5565b915061215b82612b15565b602082019050919050565b6000612173600083612689565b915061217e82612b3e565b600082019050919050565b6000612196601d836126a5565b91506121a182612b41565b602082019050919050565b60006121b9602b836126a5565b91506121c482612b6a565b604082019050919050565b6000606083016121e260008401846126cd565b85830360008701526121f5838284611f1f565b9250505061220660208401846126b6565b6122136020860182611ef2565b506122216040840184612730565b61222e6040860182612239565b508091505092915050565b6122428161278f565b82525050565b6122518161278f565b82525050565b60006122638284611fb2565b915081905092915050565b60006020820190506122836000830184611f01565b92915050565b600060608201905061229e6000830186611f01565b6122ab6020830185611f01565b6122b86040830184612248565b949350505050565b60006040820190506122d56000830185611f01565b6122e26020830184612248565b9392505050565b60006020820190506122fe6000830184611f10565b92915050565b6000604082019050818103600083015261231e8186611f79565b90508181036020830152612333818486611f4c565b9050949350505050565b600060a08201905081810360008301526123578189611f79565b90506123666020830188612248565b6123736040830187612248565b6123806060830186612248565b8181036080830152612393818486611f4c565b9050979650505050505050565b600060a08201905081810360008301526123ba8187611f79565b90506123c96020830186612248565b6123d66040830185612248565b6123e36060830184612248565b81810360808301526123f481612166565b905095945050505050565b60006020820190506124146000830184611fe3565b92915050565b600060208201905081810360008301526124348184611ff2565b905092915050565b600060208201905081810360008301526124558161202b565b9050919050565b600060208201905081810360008301526124758161204e565b9050919050565b6000602082019050818103600083015261249581612071565b9050919050565b600060208201905081810360008301526124b581612094565b9050919050565b600060208201905081810360008301526124d5816120b7565b9050919050565b600060208201905081810360008301526124f5816120da565b9050919050565b60006020820190508181036000830152612515816120fd565b9050919050565b6000602082019050818103600083015261253581612120565b9050919050565b6000602082019050818103600083015261255581612143565b9050919050565b6000602082019050818103600083015261257581612189565b9050919050565b60006020820190508181036000830152612595816121ac565b9050919050565b600060808201905081810360008301526125b681886121cf565b90506125c56020830187611f01565b6125d26040830186612248565b81810360608301526125e5818486611f4c565b90509695505050505050565b60006020820190506126066000830184612248565b92915050565b6000612616612627565b905061262282826127fa565b919050565b6000604051905090565b600067ffffffffffffffff82111561264c5761264b61282b565b5b6126558261288c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006126c560208401846119e9565b905092915050565b600080833560016020038436030381126126ea576126e9612882565b5b83810192508235915060208301925067ffffffffffffffff8211156127125761271161285a565b5b6001820236038413156127285761272761286e565b5b509250929050565b600061273f6020840184611ae0565b905092915050565b60006127528261276f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006127b182612799565b9050919050565b82818337600083830152505050565b60005b838110156127e55780820151818401526020810190506127ca565b838111156127f4576000848401525b50505050565b6128038261288c565b810181811067ffffffffffffffff821117156128225761282161282b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b612bc281612747565b8114612bcd57600080fd5b50565b612bd981612759565b8114612be457600080fd5b50565b612bf081612765565b8114612bfb57600080fd5b50565b612c078161278f565b8114612c1257600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220627eb039ecb52d09fd70ebde1f5eca61fe0f91321a96929ebe38dc8e38d999ab64736f6c63430008070033608060405234801561001057600080fd5b50610647806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a60048036038101906100459190610251565b61004c565b005b6000828281019061005d9190610208565b90507fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e86806000019061009091906103dc565b8860200160208101906100a391906101db565b896040013533866040516100bc96959493929190610379565b60405180910390a1505050505050565b60006100df6100da84610464565b61043f565b9050828152602081018484840111156100fb576100fa6105c3565b5b6101068482856104fe565b509392505050565b60008135905061011d816105e3565b92915050565b60008083601f840112610139576101386105a5565b5b8235905067ffffffffffffffff811115610156576101556105a0565b5b602083019150836001820283011115610172576101716105b9565b5b9250929050565b600082601f83011261018e5761018d6105a5565b5b813561019e8482602086016100cc565b91505092915050565b6000606082840312156101bd576101bc6105af565b5b81905092915050565b6000813590506101d5816105fa565b92915050565b6000602082840312156101f1576101f06105cd565b5b60006101ff8482850161010e565b91505092915050565b60006020828403121561021e5761021d6105cd565b5b600082013567ffffffffffffffff81111561023c5761023b6105c8565b5b61024884828501610179565b91505092915050565b60008060008060006080868803121561026d5761026c6105cd565b5b600086013567ffffffffffffffff81111561028b5761028a6105c8565b5b610297888289016101a7565b95505060206102a88882890161010e565b94505060406102b9888289016101c6565b935050606086013567ffffffffffffffff8111156102da576102d96105c8565b5b6102e688828901610123565b92509250509295509295909350565b6102fe816104c2565b82525050565b600061031083856104a0565b935061031d8385846104fe565b610326836105d2565b840190509392505050565b600061033c82610495565b61034681856104b1565b935061035681856020860161050d565b61035f816105d2565b840191505092915050565b610373816104f4565b82525050565b600060a082019050818103600083015261039481888a610304565b90506103a360208301876102f5565b6103b0604083018661036a565b6103bd60608301856102f5565b81810360808301526103cf8184610331565b9050979650505050505050565b600080833560016020038436030381126103f9576103f86105b4565b5b80840192508235915067ffffffffffffffff82111561041b5761041a6105aa565b5b602083019250600182023603831315610437576104366105be565b5b509250929050565b600061044961045a565b90506104558282610540565b919050565b6000604051905090565b600067ffffffffffffffff82111561047f5761047e610571565b5b610488826105d2565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006104cd826104d4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561052b578082015181840152602081019050610510565b8381111561053a576000848401525b50505050565b610549826105d2565b810181811067ffffffffffffffff8211171561056857610567610571565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6105ec816104c2565b81146105f757600080fd5b50565b610603816104f4565b811461060e57600080fd5b5056fea2646970667358221220658b8c56b21b674d6677fa444091a4a714b74ee72bac7b4972c1063bda6d73d764736f6c6343000807003360c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea2646970667358221220d4ce96458ff64ee4f053e26fd8b557fd7f878bb640565177b81a6aa0b251c3d964736f6c6343000807003360c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212206982505c1a546edfb86a1aaaca0ad6b7e5542f2d1f24ac30a032805fc80a650e64736f6c63430008070033a264697066735822122010027f2dc18e901383c97a3e4520ec38a6ca6c841d4c9ec83ba0a9f75515c22764736f6c63430008070033"; - -type GatewayZEVMInboundTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayZEVMInboundTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayZEVMInboundTest__factory extends ContractFactory { - constructor(...args: GatewayZEVMInboundTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayZEVMInboundTest { - return super.attach(address) as GatewayZEVMInboundTest; - } - override connect(signer: Signer): GatewayZEVMInboundTest__factory { - return super.connect(signer) as GatewayZEVMInboundTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayZEVMInboundTestInterface { - return new utils.Interface(_abi) as GatewayZEVMInboundTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayZEVMInboundTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayZEVMInboundTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts deleted file mode 100644 index 62b338db..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest__factory.ts +++ /dev/null @@ -1,803 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - GatewayZEVMOutboundTest, - GatewayZEVMOutboundTestInterface, -} from "../../../../../contracts/prototypes/test/GatewayZEVM.t.sol/GatewayZEVMOutboundTest"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "msgSender", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "message", - type: "string", - }, - ], - name: "ContextData", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - 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: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "testDeposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testDepositAndCallZContract", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "testExecuteZContract", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x60806040526001600c60006101000a81548160ff0219169083151502179055506001601f60006101000a81548160ff02191690831515021790555034801561004657600080fd5b5061b0e380620000576000396000f3fe60806040523480156200001157600080fd5b5060043610620001185760003560e01c806385226c8111620000a5578063b5508aa9116200006f578063b5508aa9146200025d578063ba414fa6146200027f578063e20c9f7114620002a1578063fa7626d414620002c35762000118565b806385226c8114620001eb5780638ec6a7c4146200020d578063916a17c61462000219578063b0464fdc146200023b5762000118565b80633f7286f411620000e75780633f7286f4146200018f57806366d9a9a014620001b1578063720b9aa914620001d35780637f924c4e14620001df5762000118565b80630a9254e4146200011d5780631ed7831c14620001295780632ade3880146200014b5780633e5e3c23146200016d575b600080fd5b62000127620002e5565b005b6200013362000c35565b60405162000142919062003251565b60405180910390f35b6200015562000cc5565b604051620001649190620032bd565b60405180910390f35b6200017762000e5f565b60405162000186919062003251565b60405180910390f35b6200019962000eef565b604051620001a8919062003251565b60405180910390f35b620001bb62000f7f565b604051620001ca919062003299565b60405180910390f35b620001dd62001116565b005b620001e962001673565b005b620001f562001a4e565b60405162000204919062003275565b60405180910390f35b6200021762001b31565b005b6200022362002258565b604051620002329190620032e1565b60405180910390f35b62000245620023ab565b604051620002549190620032e1565b60405180910390f35b62000267620024fe565b60405162000276919062003275565b60405180910390f35b62000289620025e1565b60405162000298919062003305565b60405180910390f35b620002ab62002714565b604051620002ba919062003251565b60405180910390f35b620002cd620027a4565b604051620002dc919062003305565b60405180910390f35b30602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611234602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405162000377906200284d565b604051809103906000f08015801562000394573d6000803e3d6000fd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003e3906200285b565b604051809103906000f08015801562000400573d6000803e3d6000fd5b50602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166306447d56601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e957600080fd5b505afa158015620004fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005249190620028e1565b6040518263ffffffff1660e01b815260040162000542919062003133565b600060405180830381600087803b1580156200055d57600080fd5b505af115801562000572573d6000803e3d6000fd5b505050506000806000604051620005899062002869565b620005979392919062003150565b604051809103906000f080158015620005b4573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060126001806000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006509062002877565b620006619695949392919062003464565b604051809103906000f0801580156200067e573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee2815ba6001602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000741929190620033e8565b600060405180830381600087803b1580156200075c57600080fd5b505af115801562000771573d6000803e3d6000fd5b50505050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7cb05076001806040518363ffffffff1660e01b8152600401620007d592919062003415565b600060405180830381600087803b158015620007f057600080fd5b505af115801562000805573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663c88a5e6d601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008b157600080fd5b505afa158015620008c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ec9190620028e1565b633b9aca006040518363ffffffff1660e01b815260040162000910929190620031ba565b600060405180830381600087803b1580156200092b57600080fd5b505af115801562000940573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347e7ef24602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620186a06040518363ffffffff1660e01b8152600401620009c8929190620031e7565b602060405180830381600087803b158015620009e357600080fd5b505af1158015620009f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1e919062002913565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000a8b57600080fd5b505af115801562000aa0573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000b24919062003133565b600060405180830381600087803b15801562000b3f57600080fd5b505af115801562000b54573d6000803e3d6000fd5b50505050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620186a06040518363ffffffff1660e01b815260040162000bdc929190620031e7565b602060405180830381600087803b15801562000bf757600080fd5b505af115801562000c0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c32919062002913565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801562000cbb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000c70575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000e5657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101562000e3e57838290600052602060002001805462000daa90620038e1565b80601f016020809104026020016040519081016040528092919081815260200182805462000dd890620038e1565b801562000e295780601f1062000dfd5761010080835404028352916020019162000e29565b820191906000526020600020905b81548152906001019060200180831162000e0b57829003601f168201915b50505050508152602001906001019062000d88565b50505050815250508152602001906001019062000ce9565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000ee557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000e9a575b5050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000f7557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000f2a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200110d578382906000526020600020906002020160405180604001604052908160008201805462000fd990620038e1565b80601f01602080910402602001604051908101604052809291908181526020018280546200100790620038e1565b8015620010585780601f106200102c5761010080835404028352916020019162001058565b820191906000526020600020905b8154815290600101906020018083116200103a57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620010f457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010a05790505b5050505050815250508152602001906001019062000fa3565b50505050905090565b6000604051602001620011299062003442565b604051602081830303815290604052905060006040518060600160405280601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516020016200117c9190620030f9565b6040516020818303038152906040528152602001601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620011f957600080fd5b505afa1580156200120e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012349190620028e1565b73ffffffffffffffffffffffffffffffffffffffff168152602001600181525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401620012e095949392919062003322565b600060405180830381600087803b158015620012fb57600080fd5b505af115801562001310573d6000803e3d6000fd5b505050507fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516020016200136a919062003116565b604051602081830303815290604052601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620013e257600080fd5b505afa158015620013f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141d9190620028e1565b6001601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200145494939291906200337f565b60405180910390a17f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200150457600080fd5b505afa15801562001519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200153f9190620028e1565b6040518263ffffffff1660e01b81526004016200155d919062003133565b600060405180830381600087803b1580156200157857600080fd5b505af11580156200158d573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bcf7f32b82602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518663ffffffff1660e01b81526004016200163b959493929190620034fc565b600060405180830381600087803b1580156200165657600080fd5b505af11580156200166b573d6000803e3d6000fd5b505050505050565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620016f4919062003133565b60206040518083038186803b1580156200170d57600080fd5b505afa15801562001722573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001748919062002977565b905062001757600082620027b7565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015620017ff57600080fd5b505afa15801562001814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183a9190620028e1565b6040518263ffffffff1660e01b815260040162001858919062003133565b600060405180830381600087803b1580156200187357600080fd5b505af115801562001888573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f45346dc602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401620019329392919062003214565b600060405180830381600087803b1580156200194d57600080fd5b505af115801562001962573d6000803e3d6000fd5b505050506000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620019e7919062003133565b60206040518083038186803b15801562001a0057600080fd5b505afa15801562001a15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3b919062002977565b905062001a4a600182620027b7565b5050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001b2857838290600052602060002001805462001a9490620038e1565b80601f016020809104026020016040519081016040528092919081815260200182805462001ac290620038e1565b801562001b135780601f1062001ae75761010080835404028352916020019162001b13565b820191906000526020600020905b81548152906001019060200180831162001af557829003601f168201915b50505050508152602001906001019062001a72565b50505050905090565b6000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162001bb2919062003133565b60206040518083038186803b15801562001bcb57600080fd5b505afa15801562001be0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c06919062002977565b905062001c15600082620027b7565b600060405160200162001c289062003442565b604051602081830303815290604052905060006040518060600160405280601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001c7b9190620030f9565b6040516020818303038152906040528152602001601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001cf857600080fd5b505afa15801562001d0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d339190620028e1565b73ffffffffffffffffffffffffffffffffffffffff168152602001600181525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166381bad6f3600180600180602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040162001ddf95949392919062003322565b600060405180830381600087803b15801562001dfa57600080fd5b505af115801562001e0f573d6000803e3d6000fd5b505050507fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405160200162001e69919062003116565b604051602081830303815290604052601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001ee157600080fd5b505afa15801562001ef6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f1c9190620028e1565b6001601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162001f5394939291906200337f565b60405180910390a17f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663ca669fa7601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ce4a5bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200200357600080fd5b505afa15801562002018573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200203e9190620028e1565b6040518263ffffffff1660e01b81526004016200205c919062003133565b600060405180830381600087803b1580156200207757600080fd5b505af11580156200208c573d6000803e3d6000fd5b50505050601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c39aca3782602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518663ffffffff1660e01b81526004016200213a959493929190620034fc565b600060405180830381600087803b1580156200215557600080fd5b505af11580156200216a573d6000803e3d6000fd5b505050506000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620021ef919062003133565b60206040518083038186803b1580156200220857600080fd5b505afa1580156200221d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002243919062002977565b905062002252600182620027b7565b50505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015620023a257838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054806020026020016040519081016040528092919081815260200182805480156200238957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620023355790505b505050505081525050815260200190600101906200227c565b50505050905090565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015620024f557838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020018280548015620024dc57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620024885790505b50505050508152505081526020019060010190620023cf565b50505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620025d85783829060005260206000200180546200254490620038e1565b80601f01602080910402602001604051908101604052809291908181526020018280546200257290620038e1565b8015620025c35780601f106200259757610100808354040283529160200191620025c3565b820191906000526020600020905b815481529060010190602001808311620025a557829003601f168201915b50505050508152602001906001019062002522565b50505050905090565b6000600860009054906101000a900460ff16156200261157600860009054906101000a900460ff16905062002711565b6000801b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663667f9d707f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c7f6661696c656400000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401620026b89291906200318d565b60206040518083038186803b158015620026d157600080fd5b505afa158015620026e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200270c919062002945565b141590505b90565b606060158054806020026020016040519081016040528092919081815260200182805480156200279a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200274f575b5050505050905090565b601f60009054906101000a900460ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166398296c5483836040518363ffffffff1660e01b81526004016200281792919062003567565b60006040518083038186803b1580156200283057600080fd5b505afa15801562002845573d6000803e3d6000fd5b505050505050565b612eb58062003abb83390190565b610667806200697083390190565b6118aa8062006fd783390190565b61282d806200888183390190565b600081519050620028968162003a52565b92915050565b600081519050620028ad8162003a6c565b92915050565b600081519050620028c48162003a86565b92915050565b600081519050620028db8162003aa0565b92915050565b600060208284031215620028fa57620028f96200399d565b5b60006200290a8482850162002885565b91505092915050565b6000602082840312156200292c576200292b6200399d565b5b60006200293c848285016200289c565b91505092915050565b6000602082840312156200295e576200295d6200399d565b5b60006200296e84828501620028b3565b91505092915050565b60006020828403121562002990576200298f6200399d565b5b6000620029a084828501620028ca565b91505092915050565b6000620029b7838362002a35565b60208301905092915050565b6000620029d1838362002ded565b60208301905092915050565b6000620029eb838362002f01565b905092915050565b600062002a01838362002fb7565b905092915050565b600062002a17838362002fff565b905092915050565b600062002a2d838362003040565b905092915050565b62002a408162003755565b82525050565b62002a518162003755565b82525050565b62002a6c62002a668262003755565b62003917565b82525050565b600062002a7f82620035f4565b62002a8b81856200369a565b935062002a988362003594565b8060005b8381101562002acf57815162002ab38882620029a9565b975062002ac0836200364c565b92505060018101905062002a9c565b5085935050505092915050565b600062002ae982620035ff565b62002af58185620036ab565b935062002b0283620035a4565b8060005b8381101562002b3957815162002b1d8882620029c3565b975062002b2a8362003659565b92505060018101905062002b06565b5085935050505092915050565b600062002b53826200360a565b62002b5f8185620036bc565b93508360208202850162002b7385620035b4565b8060005b8581101562002bb5578484038952815162002b938582620029dd565b945062002ba08362003666565b925060208a0199505060018101905062002b77565b50829750879550505050505092915050565b600062002bd4826200360a565b62002be08185620036cd565b93508360208202850162002bf485620035b4565b8060005b8581101562002c36578484038952815162002c148582620029dd565b945062002c218362003666565b925060208a0199505060018101905062002bf8565b50829750879550505050505092915050565b600062002c558262003615565b62002c618185620036de565b93508360208202850162002c7585620035c4565b8060005b8581101562002cb7578484038952815162002c958582620029f3565b945062002ca28362003673565b925060208a0199505060018101905062002c79565b50829750879550505050505092915050565b600062002cd68262003620565b62002ce28185620036ef565b93508360208202850162002cf685620035d4565b8060005b8581101562002d38578484038952815162002d16858262002a09565b945062002d238362003680565b925060208a0199505060018101905062002cfa565b50829750879550505050505092915050565b600062002d57826200362b565b62002d63818562003700565b93508360208202850162002d7785620035e4565b8060005b8581101562002db9578484038952815162002d97858262002a1f565b945062002da4836200368d565b925060208a0199505060018101905062002d7b565b50829750879550505050505092915050565b62002dd68162003769565b82525050565b62002de78162003775565b82525050565b62002df8816200377f565b82525050565b600062002e0b8262003636565b62002e17818562003711565b935062002e29818560208601620038ab565b62002e3481620039a2565b840191505092915050565b600062002e4c8262003636565b62002e58818562003722565b935062002e6a818560208601620038ab565b62002e7581620039a2565b840191505092915050565b62002e9562002e8f82620037f7565b62003917565b82525050565b62002ea6816200380b565b82525050565b62002eb7816200381f565b82525050565b62002ec88162003833565b82525050565b62002ed98162003847565b82525050565b62002eea816200385b565b82525050565b62002efb816200386f565b82525050565b600062002f0e8262003641565b62002f1a818562003733565b935062002f2c818560208601620038ab565b62002f3781620039a2565b840191505092915050565b600062002f5160058362003744565b915062002f5e82620039c0565b602082019050919050565b600062002f7860058362003744565b915062002f8582620039e9565b602082019050919050565b600062002f9f60038362003744565b915062002fac8262003a12565b602082019050919050565b6000604083016000830151848203600086015262002fd6828262002f01565b9150506020830151848203602086015262002ff2828262002adc565b9150508091505092915050565b600060408301600083015162003019600086018262002a35565b506020830151848203602086015262003033828262002b46565b9150508091505092915050565b60006040830160008301516200305a600086018262002a35565b506020830151848203602086015262003074828262002adc565b9150508091505092915050565b60006060830160008301518482036000860152620030a0828262002dfe565b9150506020830151620030b7602086018262002a35565b506040830151620030cc6040860182620030d7565b508091505092915050565b620030e281620037e0565b82525050565b620030f381620037e0565b82525050565b600062003107828462002a57565b60148201915081905092915050565b600062003124828462002e80565b60148201915081905092915050565b60006020820190506200314a600083018462002a46565b92915050565b600060608201905062003167600083018662002a46565b62003176602083018562002a46565b62003185604083018462002a46565b949350505050565b6000604082019050620031a4600083018562002a46565b620031b3602083018462002ddc565b9392505050565b6000604082019050620031d1600083018562002a46565b620031e0602083018462002ebd565b9392505050565b6000604082019050620031fe600083018562002a46565b6200320d602083018462002ece565b9392505050565b60006060820190506200322b600083018662002a46565b6200323a602083018562002ef0565b62003249604083018462002a46565b949350505050565b600060208201905081810360008301526200326d818462002a72565b905092915050565b6000602082019050818103600083015262003291818462002bc7565b905092915050565b60006020820190508181036000830152620032b5818462002c48565b905092915050565b60006020820190508181036000830152620032d9818462002cc9565b905092915050565b60006020820190508181036000830152620032fd818462002d4a565b905092915050565b60006020820190506200331c600083018462002dcb565b92915050565b600060a08201905062003339600083018862002dcb565b62003348602083018762002dcb565b62003357604083018662002dcb565b62003366606083018562002dcb565b62003375608083018462002a46565b9695505050505050565b600060a08201905081810360008301526200339b818762002e3f565b9050620033ac602083018662002a46565b620033bb604083018562002ef0565b620033ca606083018462002a46565b8181036080830152620033dd8162002f42565b905095945050505050565b6000604082019050620033ff600083018562002ef0565b6200340e602083018462002a46565b9392505050565b60006040820190506200342c600083018562002ef0565b6200343b602083018462002ef0565b9392505050565b600060208201905081810360008301526200345d8162002f42565b9050919050565b6000610100820190508181036000830152620034808162002f69565b90508181036020830152620034958162002f90565b9050620034a6604083018962002edf565b620034b5606083018862002ef0565b620034c4608083018762002e9b565b620034d360a083018662002eac565b620034e260c083018562002a46565b620034f160e083018462002a46565b979650505050505050565b600060a082019050818103600083015262003518818862003081565b905062003529602083018762002a46565b62003538604083018662002ef0565b62003547606083018562002a46565b81810360808301526200355b818462002e3f565b90509695505050505050565b60006040820190506200357e6000830185620030e8565b6200358d6020830184620030e8565b9392505050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200376282620037c0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050620037bb8262003a3b565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620038048262003883565b9050919050565b60006200381882620037ab565b9050919050565b60006200382c82620037e0565b9050919050565b60006200384082620037e0565b9050919050565b60006200385482620037e0565b9050919050565b60006200386882620037ea565b9050919050565b60006200387c82620037e0565b9050919050565b6000620038908262003897565b9050919050565b6000620038a482620037c0565b9050919050565b60005b83811015620038cb578082015181840152602081019050620038ae565b83811115620038db576000848401525b50505050565b60006002820490506001821680620038fa57607f821691505b602082108114156200391157620039106200396e565b5b50919050565b600062003924826200392b565b9050919050565b60006200393882620039b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f68656c6c6f000000000000000000000000000000000000000000000000000000600082015250565b7f544f4b454e000000000000000000000000000000000000000000000000000000600082015250565b7f544b4e0000000000000000000000000000000000000000000000000000000000600082015250565b6003811062003a4f5762003a4e6200393f565b5b50565b62003a5d8162003755565b811462003a6957600080fd5b50565b62003a778162003769565b811462003a8357600080fd5b50565b62003a918162003775565b811462003a9d57600080fd5b50565b62003aab81620037e0565b811462003ab757600080fd5b5056fe60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c612c726200024360003960008181610433015281816104c2015281816105d40152818161066301526107130152612c726000f3fe6080604052600436106100dd5760003560e01c80637993c1e01161007f578063bcf7f32b11610059578063bcf7f32b14610251578063c39aca371461027a578063f2fde38b146102a3578063f45346dc146102cc576100dd565b80637993c1e0146101e65780638129fc1c1461020f5780638da5cb5b14610226576100dd565b80633ce4a5bc116100bb5780633ce4a5bc1461015d5780634f1ef2861461018857806352d1902d146101a4578063715018a6146101cf576100dd565b80630ac7c44c146100e2578063135390f91461010b5780633659cfe614610134575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611c80565b6102f5565b005b34801561011757600080fd5b50610132600480360381019061012d9190611cfc565b61034c565b005b34801561014057600080fd5b5061015b60048036038101906101569190611b0a565b610431565b005b34801561016957600080fd5b506101726105ba565b60405161017f919061226e565b60405180910390f35b6101a2600480360381019061019d9190611b37565b6105d2565b005b3480156101b057600080fd5b506101b961070f565b6040516101c691906122e9565b60405180910390f35b3480156101db57600080fd5b506101e46107c8565b005b3480156101f257600080fd5b5061020d60048036038101906102089190611d6b565b6107dc565b005b34801561021b57600080fd5b506102246108c7565b005b34801561023257600080fd5b5061023b610a0d565b604051610248919061226e565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611e0f565b610a37565b005b34801561028657600080fd5b506102a1600480360381019061029c9190611e0f565b610b2b565b005b3480156102af57600080fd5b506102ca60048036038101906102c59190611b0a565b610d5d565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190611bd3565b610de1565b005b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f84848460405161033f93929190612304565b60405180910390a2505050565b60006103588383610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8585848673ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103db57600080fd5b505afa1580156103ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104139190611ec5565b60405161042394939291906123a0565b60405180910390a250505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156104c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b79061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166104ff61128d565b73ffffffffffffffffffffffffffffffffffffffff1614610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c9061247c565b60405180910390fd5b61055e816112e4565b6105b781600067ffffffffffffffff81111561057d5761057c61282b565b5b6040519080825280601f01601f1916602001820160405280156105af5781602001600182028036833780820191505090505b5060006112ef565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106589061245c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106a061128d565b73ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed9061247c565b60405180910390fd5b6106ff826112e4565b61070b828260016112ef565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107969061249c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6107d061146c565b6107da60006114ea565b565b60006107e88585610f9d565b90503373ffffffffffffffffffffffffffffffffffffffff167f1866ad2994816c79f4103e1eddacc7b085eb7c635205243a28940be69b01536d8787848873ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190611ec5565b88886040516108b79695949392919061233d565b60405180910390a2505050505050565b60008060019054906101000a900460ff161590508080156108f85750600160008054906101000a900460ff1660ff16105b806109255750610907306115b0565b1580156109245750600160008054906101000a900460ff1660ff16145b5b610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906124dc565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156109a1576001600060016101000a81548160ff0219169083151502179055505b6109a96115d3565b6109b161162c565b8015610a0a5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a0191906123ff565b60405180910390a15b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610af195949392919061259c565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c1d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610c54576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610c8f9291906122c0565b602060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611c26565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610d2395949392919061259c565b600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b50505050505050505050565b610d6561146c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc9061243c565b60405180910390fd5b610dde816114ea565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610ed357503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b8152600401610f459291906122c0565b602060405180830381600087803b158015610f5f57600080fd5b505af1158015610f73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f979190611c26565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190611b93565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161107493929190612289565b602060405180830381600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190611c26565b6110fc576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b815260040161113993929190612289565b602060405180830381600087803b15801561115357600080fd5b505af1158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190611c26565b6111c1576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b81526004016111fa91906125f1565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611c26565b611282576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60006112bb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ec61146c565b50565b61131b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b611687565b60000160009054906101000a900460ff161561133f5761133a83611691565b611467565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561138557600080fd5b505afa9250505080156113b657506040513d601f19601f820116820180604052508101906113b39190611c53565b60015b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec906124fc565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461145a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611451906124bc565b60405180910390fd5b5061146683838361174a565b5b505050565b611474611776565b73ffffffffffffffffffffffffffffffffffffffff16611492610a0d565b73ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df9061253c565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116199061257c565b60405180910390fd5b61162a61177e565b565b600060019054906101000a900460ff1661167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061257c565b60405180910390fd5b565b6000819050919050565b6000819050919050565b61169a816115b0565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d09061251c565b60405180910390fd5b806117067f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61167d565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611753836117df565b6000825111806117605750805b156117715761176f838361182e565b505b505050565b600033905090565b600060019054906101000a900460ff166117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061257c565b60405180910390fd5b6117dd6117d8611776565b6114ea565b565b6117e881611691565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606118538383604051806060016040528060278152602001612c166027913961185b565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516118859190612257565b600060405180830381855af49150503d80600081146118c0576040519150601f19603f3d011682016040523d82523d6000602084013e6118c5565b606091505b50915091506118d6868383876118e1565b925050509392505050565b606083156119445760008351141561193c576118fc856115b0565b61193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061255c565b60405180910390fd5b5b82905061194f565b61194e8383611957565b5b949350505050565b60008251111561196a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e919061241a565b60405180910390fd5b60006119ba6119b584612631565b61260c565b9050828152602081018484840111156119d6576119d5612878565b5b6119e18482856127b8565b509392505050565b6000813590506119f881612bb9565b92915050565b600081519050611a0d81612bb9565b92915050565b600081519050611a2281612bd0565b92915050565b600081519050611a3781612be7565b92915050565b60008083601f840112611a5357611a52612864565b5b8235905067ffffffffffffffff811115611a7057611a6f61285f565b5b602083019150836001820283011115611a8c57611a8b612873565b5b9250929050565b600082601f830112611aa857611aa7612864565b5b8135611ab88482602086016119a7565b91505092915050565b600060608284031215611ad757611ad6612869565b5b81905092915050565b600081359050611aef81612bfe565b92915050565b600081519050611b0481612bfe565b92915050565b600060208284031215611b2057611b1f612887565b5b6000611b2e848285016119e9565b91505092915050565b60008060408385031215611b4e57611b4d612887565b5b6000611b5c858286016119e9565b925050602083013567ffffffffffffffff811115611b7d57611b7c61287d565b5b611b8985828601611a93565b9150509250929050565b60008060408385031215611baa57611ba9612887565b5b6000611bb8858286016119fe565b9250506020611bc985828601611af5565b9150509250929050565b600080600060608486031215611bec57611beb612887565b5b6000611bfa868287016119e9565b9350506020611c0b86828701611ae0565b9250506040611c1c868287016119e9565b9150509250925092565b600060208284031215611c3c57611c3b612887565b5b6000611c4a84828501611a13565b91505092915050565b600060208284031215611c6957611c68612887565b5b6000611c7784828501611a28565b91505092915050565b600080600060408486031215611c9957611c98612887565b5b600084013567ffffffffffffffff811115611cb757611cb661287d565b5b611cc386828701611a93565b935050602084013567ffffffffffffffff811115611ce457611ce361287d565b5b611cf086828701611a3d565b92509250509250925092565b600080600060608486031215611d1557611d14612887565b5b600084013567ffffffffffffffff811115611d3357611d3261287d565b5b611d3f86828701611a93565b9350506020611d5086828701611ae0565b9250506040611d61868287016119e9565b9150509250925092565b600080600080600060808688031215611d8757611d86612887565b5b600086013567ffffffffffffffff811115611da557611da461287d565b5b611db188828901611a93565b9550506020611dc288828901611ae0565b9450506040611dd3888289016119e9565b935050606086013567ffffffffffffffff811115611df457611df361287d565b5b611e0088828901611a3d565b92509250509295509295909350565b60008060008060008060a08789031215611e2c57611e2b612887565b5b600087013567ffffffffffffffff811115611e4a57611e4961287d565b5b611e5689828a01611ac1565b9650506020611e6789828a016119e9565b9550506040611e7889828a01611ae0565b9450506060611e8989828a016119e9565b935050608087013567ffffffffffffffff811115611eaa57611ea961287d565b5b611eb689828a01611a3d565b92509250509295509295509295565b600060208284031215611edb57611eda612887565b5b6000611ee984828501611af5565b91505092915050565b611efb81612747565b82525050565b611f0a81612747565b82525050565b611f1981612765565b82525050565b6000611f2b8385612678565b9350611f388385846127b8565b611f418361288c565b840190509392505050565b6000611f588385612689565b9350611f658385846127b8565b611f6e8361288c565b840190509392505050565b6000611f8482612662565b611f8e8185612689565b9350611f9e8185602086016127c7565b611fa78161288c565b840191505092915050565b6000611fbd82612662565b611fc7818561269a565b9350611fd78185602086016127c7565b80840191505092915050565b611fec816127a6565b82525050565b6000611ffd8261266d565b61200781856126a5565b93506120178185602086016127c7565b6120208161288c565b840191505092915050565b60006120386026836126a5565b91506120438261289d565b604082019050919050565b600061205b602c836126a5565b9150612066826128ec565b604082019050919050565b600061207e602c836126a5565b91506120898261293b565b604082019050919050565b60006120a16038836126a5565b91506120ac8261298a565b604082019050919050565b60006120c46029836126a5565b91506120cf826129d9565b604082019050919050565b60006120e7602e836126a5565b91506120f282612a28565b604082019050919050565b600061210a602e836126a5565b915061211582612a77565b604082019050919050565b600061212d602d836126a5565b915061213882612ac6565b604082019050919050565b60006121506020836126a5565b915061215b82612b15565b602082019050919050565b6000612173600083612689565b915061217e82612b3e565b600082019050919050565b6000612196601d836126a5565b91506121a182612b41565b602082019050919050565b60006121b9602b836126a5565b91506121c482612b6a565b604082019050919050565b6000606083016121e260008401846126cd565b85830360008701526121f5838284611f1f565b9250505061220660208401846126b6565b6122136020860182611ef2565b506122216040840184612730565b61222e6040860182612239565b508091505092915050565b6122428161278f565b82525050565b6122518161278f565b82525050565b60006122638284611fb2565b915081905092915050565b60006020820190506122836000830184611f01565b92915050565b600060608201905061229e6000830186611f01565b6122ab6020830185611f01565b6122b86040830184612248565b949350505050565b60006040820190506122d56000830185611f01565b6122e26020830184612248565b9392505050565b60006020820190506122fe6000830184611f10565b92915050565b6000604082019050818103600083015261231e8186611f79565b90508181036020830152612333818486611f4c565b9050949350505050565b600060a08201905081810360008301526123578189611f79565b90506123666020830188612248565b6123736040830187612248565b6123806060830186612248565b8181036080830152612393818486611f4c565b9050979650505050505050565b600060a08201905081810360008301526123ba8187611f79565b90506123c96020830186612248565b6123d66040830185612248565b6123e36060830184612248565b81810360808301526123f481612166565b905095945050505050565b60006020820190506124146000830184611fe3565b92915050565b600060208201905081810360008301526124348184611ff2565b905092915050565b600060208201905081810360008301526124558161202b565b9050919050565b600060208201905081810360008301526124758161204e565b9050919050565b6000602082019050818103600083015261249581612071565b9050919050565b600060208201905081810360008301526124b581612094565b9050919050565b600060208201905081810360008301526124d5816120b7565b9050919050565b600060208201905081810360008301526124f5816120da565b9050919050565b60006020820190508181036000830152612515816120fd565b9050919050565b6000602082019050818103600083015261253581612120565b9050919050565b6000602082019050818103600083015261255581612143565b9050919050565b6000602082019050818103600083015261257581612189565b9050919050565b60006020820190508181036000830152612595816121ac565b9050919050565b600060808201905081810360008301526125b681886121cf565b90506125c56020830187611f01565b6125d26040830186612248565b81810360608301526125e5818486611f4c565b90509695505050505050565b60006020820190506126066000830184612248565b92915050565b6000612616612627565b905061262282826127fa565b919050565b6000604051905090565b600067ffffffffffffffff82111561264c5761264b61282b565b5b6126558261288c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006126c560208401846119e9565b905092915050565b600080833560016020038436030381126126ea576126e9612882565b5b83810192508235915060208301925067ffffffffffffffff8211156127125761271161285a565b5b6001820236038413156127285761272761286e565b5b509250929050565b600061273f6020840184611ae0565b905092915050565b60006127528261276f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006127b182612799565b9050919050565b82818337600083830152505050565b60005b838110156127e55780820151818401526020810190506127ca565b838111156127f4576000848401525b50505050565b6128038261288c565b810181811067ffffffffffffffff821117156128225761282161282b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b612bc281612747565b8114612bcd57600080fd5b50565b612bd981612759565b8114612be457600080fd5b50565b612bf081612765565b8114612bfb57600080fd5b50565b612c078161278f565b8114612c1257600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220627eb039ecb52d09fd70ebde1f5eca61fe0f91321a96929ebe38dc8e38d999ab64736f6c63430008070033608060405234801561001057600080fd5b50610647806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a60048036038101906100459190610251565b61004c565b005b6000828281019061005d9190610208565b90507fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e86806000019061009091906103dc565b8860200160208101906100a391906101db565b896040013533866040516100bc96959493929190610379565b60405180910390a1505050505050565b60006100df6100da84610464565b61043f565b9050828152602081018484840111156100fb576100fa6105c3565b5b6101068482856104fe565b509392505050565b60008135905061011d816105e3565b92915050565b60008083601f840112610139576101386105a5565b5b8235905067ffffffffffffffff811115610156576101556105a0565b5b602083019150836001820283011115610172576101716105b9565b5b9250929050565b600082601f83011261018e5761018d6105a5565b5b813561019e8482602086016100cc565b91505092915050565b6000606082840312156101bd576101bc6105af565b5b81905092915050565b6000813590506101d5816105fa565b92915050565b6000602082840312156101f1576101f06105cd565b5b60006101ff8482850161010e565b91505092915050565b60006020828403121561021e5761021d6105cd565b5b600082013567ffffffffffffffff81111561023c5761023b6105c8565b5b61024884828501610179565b91505092915050565b60008060008060006080868803121561026d5761026c6105cd565b5b600086013567ffffffffffffffff81111561028b5761028a6105c8565b5b610297888289016101a7565b95505060206102a88882890161010e565b94505060406102b9888289016101c6565b935050606086013567ffffffffffffffff8111156102da576102d96105c8565b5b6102e688828901610123565b92509250509295509295909350565b6102fe816104c2565b82525050565b600061031083856104a0565b935061031d8385846104fe565b610326836105d2565b840190509392505050565b600061033c82610495565b61034681856104b1565b935061035681856020860161050d565b61035f816105d2565b840191505092915050565b610373816104f4565b82525050565b600060a082019050818103600083015261039481888a610304565b90506103a360208301876102f5565b6103b0604083018661036a565b6103bd60608301856102f5565b81810360808301526103cf8184610331565b9050979650505050505050565b600080833560016020038436030381126103f9576103f86105b4565b5b80840192508235915067ffffffffffffffff82111561041b5761041a6105aa565b5b602083019250600182023603831315610437576104366105be565b5b509250929050565b600061044961045a565b90506104558282610540565b919050565b6000604051905090565b600067ffffffffffffffff82111561047f5761047e610571565b5b610488826105d2565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006104cd826104d4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561052b578082015181840152602081019050610510565b8381111561053a576000848401525b50505050565b610549826105d2565b810181811067ffffffffffffffff8211171561056857610567610571565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6105ec816104c2565b81146105f757600080fd5b50565b610603816104f4565b811461060e57600080fd5b5056fea2646970667358221220658b8c56b21b674d6677fa444091a4a714b74ee72bac7b4972c1063bda6d73d764736f6c6343000807003360c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea2646970667358221220d4ce96458ff64ee4f053e26fd8b557fd7f878bb640565177b81a6aa0b251c3d964736f6c6343000807003360c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea26469706673582212206982505c1a546edfb86a1aaaca0ad6b7e5542f2d1f24ac30a032805fc80a650e64736f6c63430008070033a26469706673582212206788f7df595f155b554c8aa4aed64d329373738cae05614df5d86307d5eeda1a64736f6c63430008070033"; - -type GatewayZEVMOutboundTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayZEVMOutboundTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayZEVMOutboundTest__factory extends ContractFactory { - constructor(...args: GatewayZEVMOutboundTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayZEVMOutboundTest { - return super.attach(address) as GatewayZEVMOutboundTest; - } - override connect(signer: Signer): GatewayZEVMOutboundTest__factory { - return super.connect(signer) as GatewayZEVMOutboundTest__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayZEVMOutboundTestInterface { - return new utils.Interface(_abi) as GatewayZEVMOutboundTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayZEVMOutboundTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as GatewayZEVMOutboundTest; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts deleted file mode 100644 index 4539323d..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/GatewayZEVM.t.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { GatewayZEVMInboundTest__factory } from "./GatewayZEVMInboundTest__factory"; -export { GatewayZEVMOutboundTest__factory } from "./GatewayZEVMOutboundTest__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/test/index.ts b/v1/typechain-types/factories/contracts/prototypes/test/index.ts deleted file mode 100644 index 1bdb30ca..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/test/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as gatewayEvmTSol from "./GatewayEVM.t.sol"; -export * as gatewayEvmzevmTSol from "./GatewayEVMZEVM.t.sol"; -export * as gatewayZevmTSol from "./GatewayZEVM.t.sol"; diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts deleted file mode 100644 index d4e05ae4..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts +++ /dev/null @@ -1,757 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - GatewayZEVM, - GatewayZEVMInterface, -} from "../../../../contracts/prototypes/zevm/GatewayZEVM"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "FailedZetaSent", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "OnlyWZETAOrFungible", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "previousAdmin", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "newAdmin", - type: "address", - }, - ], - name: "AdminChanged", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "beacon", - type: "address", - }, - ], - name: "BeaconUpgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Upgraded", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "zrc20", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - inputs: [], - name: "FUNGIBLE_MODULE_ADDRESS", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct revertContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "depositAndRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct revertContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "executeRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_zetaToken", - type: "address", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "proxiableUUID", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - 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", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - ], - name: "upgradeTo", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newImplementation", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "upgradeToAndCall", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "zetaToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -] as const; - -const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220378b717703092a88bbd7020c74cb919fe0a2dcf0feb2bf8581734d32a89387ac64736f6c63430008070033"; - -type GatewayZEVMConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatewayZEVMConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatewayZEVM__factory extends ContractFactory { - constructor(...args: GatewayZEVMConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): GatewayZEVM { - return super.attach(address) as GatewayZEVM; - } - override connect(signer: Signer): GatewayZEVM__factory { - return super.connect(signer) as GatewayZEVM__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatewayZEVMInterface { - return new utils.Interface(_abi) as GatewayZEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatewayZEVM { - return new Contract(address, _abi, signerOrProvider) as GatewayZEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts deleted file mode 100644 index 63b3a271..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVMErrors, - IGatewayZEVMErrorsInterface, -} from "../../../../../contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMErrors"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "FailedZetaSent", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "OnlyWZETAOrFungible", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, -] as const; - -export class IGatewayZEVMErrors__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMErrorsInterface { - return new utils.Interface(_abi) as IGatewayZEVMErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVMErrors { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVMErrors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts deleted file mode 100644 index 64cc4932..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVMEvents, - IGatewayZEVMEventsInterface, -} from "../../../../../contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "zrc20", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, -] as const; - -export class IGatewayZEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMEventsInterface { - return new utils.Interface(_abi) as IGatewayZEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts deleted file mode 100644 index d9cd417d..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM__factory.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVM, - IGatewayZEVMInterface, -} from "../../../../../contracts/prototypes/zevm/IGatewayZEVM.sol/IGatewayZEVM"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGatewayZEVM__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMInterface { - return new utils.Interface(_abi) as IGatewayZEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVM { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts deleted file mode 100644 index 0b6212ee..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/IGatewayZEVM.sol/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IGatewayZEVM__factory } from "./IGatewayZEVM__factory"; -export { IGatewayZEVMErrors__factory } from "./IGatewayZEVMErrors__factory"; -export { IGatewayZEVMEvents__factory } from "./IGatewayZEVMEvents__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts deleted file mode 100644 index 992bea27..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts +++ /dev/null @@ -1,160 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - SenderZEVM, - SenderZEVMInterface, -} from "../../../../contracts/prototypes/zevm/SenderZEVM"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "callReceiver", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "withdrawAndCallReceiver", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea26469706673582212208589b7fc9598202eaf46c595855edab9daadb2791c73209ade07df3bbb24033e64736f6c63430008070033"; - -type SenderZEVMConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SenderZEVMConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SenderZEVM__factory extends ContractFactory { - constructor(...args: SenderZEVMConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(_gateway, overrides || {}) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, overrides || {}); - } - override attach(address: string): SenderZEVM { - return super.attach(address) as SenderZEVM; - } - override connect(signer: Signer): SenderZEVM__factory { - return super.connect(signer) as SenderZEVM__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SenderZEVMInterface { - return new utils.Interface(_abi) as SenderZEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SenderZEVM { - return new Contract(address, _abi, signerOrProvider) as SenderZEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts deleted file mode 100644 index 3e8d5164..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/Sender__factory.ts +++ /dev/null @@ -1,157 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - Sender, - SenderInterface, -} from "../../../../contracts/prototypes/zevm/Sender"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_gateway", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "ApprovalFailed", - type: "error", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "callReceiver", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "gateway", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "string", - name: "str", - type: "string", - }, - { - internalType: "uint256", - name: "num", - type: "uint256", - }, - { - internalType: "bool", - name: "flag", - type: "bool", - }, - ], - name: "withdrawAndCallReceiver", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea2646970667358221220ef1adb339e85463eb7fc8992fa1513ffe98ce4f59d2fb2b57db08574d1cccd0864736f6c63430008070033"; - -type SenderConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SenderConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Sender__factory extends ContractFactory { - constructor(...args: SenderConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(_gateway, overrides || {}) as Promise; - } - override getDeployTransaction( - _gateway: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(_gateway, overrides || {}); - } - override attach(address: string): Sender { - return super.attach(address) as Sender; - } - override connect(signer: Signer): Sender__factory { - return super.connect(signer) as Sender__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SenderInterface { - return new utils.Interface(_abi) as SenderInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): Sender { - return new Contract(address, _abi, signerOrProvider) as Sender; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts deleted file mode 100644 index 085cf1d2..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - TestZContract, - TestZContractInterface, -} from "../../../../contracts/prototypes/zevm/TestZContract"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "msgSender", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "message", - type: "string", - }, - ], - name: "ContextData", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "msgSender", - type: "address", - }, - { - indexed: false, - internalType: "string", - name: "message", - type: "string", - }, - ], - name: "ContextDataRevert", - type: "event", - }, - { - stateMutability: "payable", - type: "fallback", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "onCrossChainCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct revertContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "onRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220febf3f8cf5fd0742329aa443cb341b916e26ee1be7a429c48a3a28b956bd845f64736f6c63430008070033"; - -type TestZContractConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestZContractConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TestZContract__factory extends ContractFactory { - constructor(...args: TestZContractConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): TestZContract { - return super.attach(address) as TestZContract; - } - override connect(signer: Signer): TestZContract__factory { - return super.connect(signer) as TestZContract__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestZContractInterface { - return new utils.Interface(_abi) as TestZContractInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TestZContract { - return new Contract(address, _abi, signerOrProvider) as TestZContract; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts deleted file mode 100644 index 299c388e..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors__factory.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZRC20Errors, - ZRC20ErrorsInterface, -} from "../../../../../contracts/prototypes/zevm/ZRC20New.sol/ZRC20Errors"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "LowAllowance", - type: "error", - }, - { - inputs: [], - name: "LowBalance", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - inputs: [], - name: "ZeroGasCoin", - type: "error", - }, - { - inputs: [], - name: "ZeroGasPrice", - type: "error", - }, -] as const; - -export class ZRC20Errors__factory { - static readonly abi = _abi; - static createInterface(): ZRC20ErrorsInterface { - return new utils.Interface(_abi) as ZRC20ErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZRC20Errors { - return new Contract(address, _abi, signerOrProvider) as ZRC20Errors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts deleted file mode 100644 index 2bb551e4..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/ZRC20New__factory.ts +++ /dev/null @@ -1,730 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - BigNumberish, - Overrides, -} from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; -import type { - ZRC20New, - ZRC20NewInterface, -} from "../../../../../contracts/prototypes/zevm/ZRC20New.sol/ZRC20New"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string", - }, - { - internalType: "string", - name: "symbol_", - type: "string", - }, - { - internalType: "uint8", - name: "decimals_", - type: "uint8", - }, - { - internalType: "uint256", - name: "chainid_", - type: "uint256", - }, - { - internalType: "enum CoinType", - name: "coinType_", - type: "uint8", - }, - { - internalType: "uint256", - name: "gasLimit_", - type: "uint256", - }, - { - internalType: "address", - name: "systemContractAddress_", - type: "address", - }, - { - internalType: "address", - name: "gatewayContractAddress_", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InvalidSender", - type: "error", - }, - { - inputs: [], - name: "LowAllowance", - type: "error", - }, - { - inputs: [], - name: "LowBalance", - type: "error", - }, - { - inputs: [], - name: "ZeroAddress", - type: "error", - }, - { - inputs: [], - name: "ZeroGasCoin", - type: "error", - }, - { - inputs: [], - name: "ZeroGasPrice", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes", - name: "from", - type: "bytes", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Deposit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "gasLimit", - type: "uint256", - }, - ], - name: "UpdatedGasLimit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - ], - name: "UpdatedProtocolFlatFee", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "systemContract", - type: "address", - }, - ], - name: "UpdatedSystemContract", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - ], - name: "Withdrawal", - type: "event", - }, - { - inputs: [], - name: "CHAIN_ID", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "COIN_TYPE", - outputs: [ - { - internalType: "enum CoinType", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "FUNGIBLE_MODULE_ADDRESS", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "GAS_LIMIT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "GATEWAY_CONTRACT_ADDRESS", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "PROTOCOL_FLAT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "SYSTEM_CONTRACT_ADDRESS", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burn", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "deposit", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "gasLimit", - type: "uint256", - }, - ], - name: "updateGasLimit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - ], - name: "updateProtocolFlatFee", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - ], - name: "updateSystemContractAddress", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "withdraw", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "withdrawGasFee", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122085b4c6eb609c2ec9eedeef1680fa0db3223e3761749585aa8f078d9f9c25dbfd64736f6c63430008070033"; - -type ZRC20NewConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZRC20NewConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZRC20New__factory extends ContractFactory { - constructor(...args: ZRC20NewConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - chainid_: PromiseOrValue, - coinType_: PromiseOrValue, - gasLimit_: PromiseOrValue, - systemContractAddress_: PromiseOrValue, - gatewayContractAddress_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - name_, - symbol_, - decimals_, - chainid_, - coinType_, - gasLimit_, - systemContractAddress_, - gatewayContractAddress_, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - chainid_: PromiseOrValue, - coinType_: PromiseOrValue, - gasLimit_: PromiseOrValue, - systemContractAddress_: PromiseOrValue, - gatewayContractAddress_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - name_, - symbol_, - decimals_, - chainid_, - coinType_, - gasLimit_, - systemContractAddress_, - gatewayContractAddress_, - overrides || {} - ); - } - override attach(address: string): ZRC20New { - return super.attach(address) as ZRC20New; - } - override connect(signer: Signer): ZRC20New__factory { - return super.connect(signer) as ZRC20New__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZRC20NewInterface { - return new utils.Interface(_abi) as ZRC20NewInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZRC20New { - return new Contract(address, _abi, signerOrProvider) as ZRC20New; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts deleted file mode 100644 index 7e4b987c..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/ZRC20New.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ZRC20Errors__factory } from "./ZRC20Errors__factory"; -export { ZRC20New__factory } from "./ZRC20New__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/index.ts deleted file mode 100644 index d8c3ab1e..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as iGatewayZevmSol from "./IGatewayZEVM.sol"; -export { GatewayZEVM__factory } from "./GatewayZEVM__factory"; -export { SenderZEVM__factory } from "./SenderZEVM__factory"; -export { TestZContract__factory } from "./TestZContract__factory"; diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts deleted file mode 100644 index 9240eeb0..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors__factory.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVMErrors, - IGatewayZEVMErrorsInterface, -} from "../../../../../contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMErrors"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "FailedZetaSent", - type: "error", - }, - { - inputs: [], - name: "GasFeeTransferFailed", - type: "error", - }, - { - inputs: [], - name: "InsufficientZRC20Amount", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "WZETATransferFailed", - type: "error", - }, - { - inputs: [], - name: "WithdrawalFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20BurnFailed", - type: "error", - }, - { - inputs: [], - name: "ZRC20TransferFailed", - type: "error", - }, -] as const; - -export class IGatewayZEVMErrors__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMErrorsInterface { - return new utils.Interface(_abi) as IGatewayZEVMErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVMErrors { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVMErrors; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts deleted file mode 100644 index 2c3a8834..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents__factory.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVMEvents, - IGatewayZEVMEventsInterface, -} from "../../../../../contracts/prototypes/zevm/interfaces.sol/IGatewayZEVMEvents"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Call", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "zrc20", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "to", - type: "bytes", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "gasfee", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "protocolFlatFee", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "Withdrawal", - type: "event", - }, -] as const; - -export class IGatewayZEVMEvents__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMEventsInterface { - return new utils.Interface(_abi) as IGatewayZEVMEventsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVMEvents { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVMEvents; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts deleted file mode 100644 index aef304ee..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM__factory.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IGatewayZEVM, - IGatewayZEVMInterface, -} from "../../../../../contracts/prototypes/zevm/interfaces.sol/IGatewayZEVM"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "call", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "deposit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "depositAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct zContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "execute", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - ], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "receiver", - type: "bytes", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "withdrawAndCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IGatewayZEVM__factory { - static readonly abi = _abi; - static createInterface(): IGatewayZEVMInterface { - return new utils.Interface(_abi) as IGatewayZEVMInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IGatewayZEVM { - return new Contract(address, _abi, signerOrProvider) as IGatewayZEVM; - } -} diff --git a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts b/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts deleted file mode 100644 index 0b6212ee..00000000 --- a/v1/typechain-types/factories/contracts/prototypes/zevm/interfaces.sol/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IGatewayZEVM__factory } from "./IGatewayZEVM__factory"; -export { IGatewayZEVMErrors__factory } from "./IGatewayZEVMErrors__factory"; -export { IGatewayZEVMEvents__factory } from "./IGatewayZEVMEvents__factory"; diff --git a/v1/typechain-types/factories/forge-std/StdAssertions__factory.ts b/v1/typechain-types/factories/forge-std/StdAssertions__factory.ts deleted file mode 100644 index 5fc55ec1..00000000 --- a/v1/typechain-types/factories/forge-std/StdAssertions__factory.ts +++ /dev/null @@ -1,403 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - StdAssertions, - StdAssertionsInterface, -} from "../../forge-std/StdAssertions"; - -const _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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "failed", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class StdAssertions__factory { - static readonly abi = _abi; - static createInterface(): StdAssertionsInterface { - return new utils.Interface(_abi) as StdAssertionsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): StdAssertions { - return new Contract(address, _abi, signerOrProvider) as StdAssertions; - } -} diff --git a/v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts b/v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts deleted file mode 100644 index 0bdc6b38..00000000 --- a/v1/typechain-types/factories/forge-std/StdError.sol/StdError__factory.ts +++ /dev/null @@ -1,180 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - StdError, - StdErrorInterface, -} from "../../../forge-std/StdError.sol/StdError"; - -const _abi = [ - { - inputs: [], - name: "arithmeticError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "assertionError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "divisionError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "encodeStorageError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "enumConversionError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "indexOOBError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "memOverflowError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "popError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "zeroVarError", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x6109ec610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063986c5f6811610070578063986c5f681461011a578063b22dc54d14610138578063b67689da14610156578063d160e4de14610174578063fa784a44146101925761009d565b806305ee8612146100a257806310332977146100c05780631de45560146100de5780638995290f146100fc575b600080fd5b6100aa6101b0565b6040516100b79190610792565b60405180910390f35b6100c8610242565b6040516100d59190610792565b60405180910390f35b6100e66102d4565b6040516100f39190610792565b60405180910390f35b610104610366565b6040516101119190610792565b60405180910390f35b6101226103f8565b60405161012f9190610792565b60405180910390f35b61014061048a565b60405161014d9190610792565b60405180910390f35b61015e61051c565b60405161016b9190610792565b60405180910390f35b61017c6105ae565b6040516101899190610792565b60405180910390f35b61019a610640565b6040516101a79190610792565b60405180910390f35b60326040516024016101c29190610856565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b600160405160240161025491906107ea565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b60216040516024016102e69190610805565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b601160405160240161037891906107b4565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b604160405160240161040a9190610871565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b603160405160240161049c919061083b565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b605160405160240161052e919061088c565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b60226040516024016105c09190610820565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b601260405160240161065291906107cf565b6040516020818303038152906040527f4e487b71000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081565b60006106dd826108a7565b6106e781856108b2565b93506106f7818560208601610972565b610700816109a5565b840191505092915050565b610714816108d0565b82525050565b610723816108e2565b82525050565b610732816108f4565b82525050565b61074181610906565b82525050565b61075081610918565b82525050565b61075f8161092a565b82525050565b61076e8161093c565b82525050565b61077d8161094e565b82525050565b61078c81610960565b82525050565b600060208201905081810360008301526107ac81846106d2565b905092915050565b60006020820190506107c9600083018461070b565b92915050565b60006020820190506107e4600083018461071a565b92915050565b60006020820190506107ff6000830184610729565b92915050565b600060208201905061081a6000830184610738565b92915050565b60006020820190506108356000830184610747565b92915050565b60006020820190506108506000830184610756565b92915050565b600060208201905061086b6000830184610765565b92915050565b60006020820190506108866000830184610774565b92915050565b60006020820190506108a16000830184610783565b92915050565b600081519050919050565b600082825260208201905092915050565b600060ff82169050919050565b60006108db826108c3565b9050919050565b60006108ed826108c3565b9050919050565b60006108ff826108c3565b9050919050565b6000610911826108c3565b9050919050565b6000610923826108c3565b9050919050565b6000610935826108c3565b9050919050565b6000610947826108c3565b9050919050565b6000610959826108c3565b9050919050565b600061096b826108c3565b9050919050565b60005b83811015610990578082015181840152602081019050610975565b8381111561099f576000848401525b50505050565b6000601f19601f830116905091905056fea264697066735822122086a066b9b91d74494e9ce1d74ef0b42568574cbc8d6ec51dc4e6feec0c5260d764736f6c63430008070033"; - -type StdErrorConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: StdErrorConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class StdError__factory extends ContractFactory { - constructor(...args: StdErrorConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): StdError { - return super.attach(address) as StdError; - } - override connect(signer: Signer): StdError__factory { - return super.connect(signer) as StdError__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): StdErrorInterface { - return new utils.Interface(_abi) as StdErrorInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): StdError { - return new Contract(address, _abi, signerOrProvider) as StdError; - } -} diff --git a/v1/typechain-types/factories/forge-std/StdError.sol/index.ts b/v1/typechain-types/factories/forge-std/StdError.sol/index.ts deleted file mode 100644 index 5c898ac1..00000000 --- a/v1/typechain-types/factories/forge-std/StdError.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { StdError__factory } from "./StdError__factory"; diff --git a/v1/typechain-types/factories/forge-std/StdInvariant__factory.ts b/v1/typechain-types/factories/forge-std/StdInvariant__factory.ts deleted file mode 100644 index 555a0609..00000000 --- a/v1/typechain-types/factories/forge-std/StdInvariant__factory.ts +++ /dev/null @@ -1,204 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - StdInvariant, - StdInvariantInterface, -} from "../../forge-std/StdInvariant"; - -const _abi = [ - { - inputs: [], - name: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class StdInvariant__factory { - static readonly abi = _abi; - static createInterface(): StdInvariantInterface { - return new utils.Interface(_abi) as StdInvariantInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): StdInvariant { - return new Contract(address, _abi, signerOrProvider) as StdInvariant; - } -} diff --git a/v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts b/v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts deleted file mode 100644 index 8abad169..00000000 --- a/v1/typechain-types/factories/forge-std/StdStorage.sol/StdStorageSafe__factory.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - StdStorageSafe, - StdStorageSafeInterface, -} from "../../../forge-std/StdStorage.sol/StdStorageSafe"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "who", - type: "address", - }, - { - indexed: false, - internalType: "bytes4", - name: "fsig", - type: "bytes4", - }, - { - indexed: false, - internalType: "bytes32", - name: "keysHash", - type: "bytes32", - }, - { - indexed: false, - internalType: "uint256", - name: "slot", - type: "uint256", - }, - ], - name: "SlotFound", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "who", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "slot", - type: "uint256", - }, - ], - name: "WARNING_UninitedSlot", - type: "event", - }, -] as const; - -const _bytecode = - "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d00bd3f77bc95c5f63c719093a6d31da7bdf9c8d48a9ab8306cc99545a0bf89664736f6c63430008070033"; - -type StdStorageSafeConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: StdStorageSafeConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class StdStorageSafe__factory extends ContractFactory { - constructor(...args: StdStorageSafeConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): StdStorageSafe { - return super.attach(address) as StdStorageSafe; - } - override connect(signer: Signer): StdStorageSafe__factory { - return super.connect(signer) as StdStorageSafe__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): StdStorageSafeInterface { - return new utils.Interface(_abi) as StdStorageSafeInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): StdStorageSafe { - return new Contract(address, _abi, signerOrProvider) as StdStorageSafe; - } -} diff --git a/v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts b/v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts deleted file mode 100644 index 4f4de1e2..00000000 --- a/v1/typechain-types/factories/forge-std/StdStorage.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { StdStorageSafe__factory } from "./StdStorageSafe__factory"; diff --git a/v1/typechain-types/factories/forge-std/Test__factory.ts b/v1/typechain-types/factories/forge-std/Test__factory.ts deleted file mode 100644 index d9624aae..00000000 --- a/v1/typechain-types/factories/forge-std/Test__factory.ts +++ /dev/null @@ -1,588 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { Test, TestInterface } from "../../forge-std/Test"; - -const _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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_array", - 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: "uint256[]", - name: "val", - type: "uint256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "int256[]", - name: "val", - type: "int256[]", - }, - ], - name: "log_named_array", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "string", - name: "key", - type: "string", - }, - { - indexed: false, - internalType: "address[]", - name: "val", - type: "address[]", - }, - ], - name: "log_named_array", - 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: "excludeArtifacts", - outputs: [ - { - internalType: "string[]", - name: "excludedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeContracts", - outputs: [ - { - internalType: "address[]", - name: "excludedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "excludedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "excludeSenders", - outputs: [ - { - internalType: "address[]", - name: "excludedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "failed", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifactSelectors", - outputs: [ - { - components: [ - { - internalType: "string", - name: "artifact", - type: "string", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzArtifactSelector[]", - name: "targetedArtifactSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetArtifacts", - outputs: [ - { - internalType: "string[]", - name: "targetedArtifacts_", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetContracts", - outputs: [ - { - internalType: "address[]", - name: "targetedContracts_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetInterfaces", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "string[]", - name: "artifacts", - type: "string[]", - }, - ], - internalType: "struct StdInvariant.FuzzInterface[]", - name: "targetedInterfaces_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSelectors", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bytes4[]", - name: "selectors", - type: "bytes4[]", - }, - ], - internalType: "struct StdInvariant.FuzzSelector[]", - name: "targetedSelectors_", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "targetSenders", - outputs: [ - { - internalType: "address[]", - name: "targetedSenders_", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class Test__factory { - static readonly abi = _abi; - static createInterface(): TestInterface { - return new utils.Interface(_abi) as TestInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): Test { - return new Contract(address, _abi, signerOrProvider) as Test; - } -} diff --git a/v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts b/v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts deleted file mode 100644 index ec546568..00000000 --- a/v1/typechain-types/factories/forge-std/Vm.sol/VmSafe__factory.ts +++ /dev/null @@ -1,7315 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { VmSafe, VmSafeInterface } from "../../../forge-std/Vm.sol/VmSafe"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "accesses", - outputs: [ - { - internalType: "bytes32[]", - name: "readSlots", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "writeSlots", - type: "bytes32[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "addr", - outputs: [ - { - internalType: "address", - name: "keyAddr", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertFalse", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assertFalse", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assertTrue", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertTrue", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assume", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "char", - type: "string", - }, - ], - name: "breakpoint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "char", - type: "string", - }, - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "breakpoint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - ], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "closeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "salt", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "initCodeHash", - type: "bytes32", - }, - ], - name: "computeCreate2Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "salt", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "initCodeHash", - type: "bytes32", - }, - { - internalType: "address", - name: "deployer", - type: "address", - }, - ], - name: "computeCreate2Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "deployer", - type: "address", - }, - { - internalType: "uint256", - name: "nonce", - type: "uint256", - }, - ], - name: "computeCreateAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "from", - type: "string", - }, - { - internalType: "string", - name: "to", - type: "string", - }, - ], - name: "copyFile", - outputs: [ - { - internalType: "uint64", - name: "copied", - type: "uint64", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bool", - name: "recursive", - type: "bool", - }, - ], - name: "createDir", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "walletLabel", - type: "string", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "string", - name: "walletLabel", - type: "string", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "string", - name: "derivationPath", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - { - internalType: "string", - name: "language", - type: "string", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - { - internalType: "string", - name: "language", - type: "string", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "string", - name: "derivationPath", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "ensNamehash", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envAddress", - outputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envAddress", - outputs: [ - { - internalType: "address[]", - name: "value", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBool", - outputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBool", - outputs: [ - { - internalType: "bool[]", - name: "value", - type: "bool[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBytes", - outputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBytes", - outputs: [ - { - internalType: "bytes[]", - name: "value", - type: "bytes[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBytes32", - outputs: [ - { - internalType: "bytes32[]", - name: "value", - type: "bytes32[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBytes32", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envExists", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envInt", - outputs: [ - { - internalType: "int256[]", - name: "value", - type: "int256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envInt", - outputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bytes32[]", - name: "defaultValue", - type: "bytes32[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes32[]", - name: "value", - type: "bytes32[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "int256[]", - name: "defaultValue", - type: "int256[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "int256[]", - name: "value", - type: "int256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bool", - name: "defaultValue", - type: "bool", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "address", - name: "defaultValue", - type: "address", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "uint256", - name: "defaultValue", - type: "uint256", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bytes[]", - name: "defaultValue", - type: "bytes[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes[]", - name: "value", - type: "bytes[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "uint256[]", - name: "defaultValue", - type: "uint256[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "uint256[]", - name: "value", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "string[]", - name: "defaultValue", - type: "string[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "string[]", - name: "value", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bytes", - name: "defaultValue", - type: "bytes", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bytes32", - name: "defaultValue", - type: "bytes32", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "int256", - name: "defaultValue", - type: "int256", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "address[]", - name: "defaultValue", - type: "address[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "address[]", - name: "value", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "defaultValue", - type: "string", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "string", - name: "value", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bool[]", - name: "defaultValue", - type: "bool[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bool[]", - name: "value", - type: "bool[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envString", - outputs: [ - { - internalType: "string[]", - name: "value", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envString", - outputs: [ - { - internalType: "string", - name: "value", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envUint", - outputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envUint", - outputs: [ - { - internalType: "uint256[]", - name: "value", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "fromBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "toBlock", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - ], - name: "eth_getLogs", - outputs: [ - { - components: [ - { - internalType: "address", - name: "emitter", - type: "address", - }, - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - { - internalType: "uint64", - name: "blockNumber", - type: "uint64", - }, - { - internalType: "bytes32", - name: "transactionHash", - type: "bytes32", - }, - { - internalType: "uint64", - name: "transactionIndex", - type: "uint64", - }, - { - internalType: "uint256", - name: "logIndex", - type: "uint256", - }, - { - internalType: "bool", - name: "removed", - type: "bool", - }, - ], - internalType: "struct VmSafe.EthGetLogs[]", - name: "logs", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "commandInput", - type: "string[]", - }, - ], - name: "ffi", - outputs: [ - { - internalType: "bytes", - name: "result", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "fsMetadata", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - { - internalType: "uint256", - name: "length", - type: "uint256", - }, - { - internalType: "bool", - name: "readOnly", - type: "bool", - }, - { - internalType: "uint256", - name: "modified", - type: "uint256", - }, - { - internalType: "uint256", - name: "accessed", - type: "uint256", - }, - { - internalType: "uint256", - name: "created", - type: "uint256", - }, - ], - internalType: "struct VmSafe.FsMetadata", - name: "metadata", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlobBaseFee", - outputs: [ - { - internalType: "uint256", - name: "blobBaseFee", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlockNumber", - outputs: [ - { - internalType: "uint256", - name: "height", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlockTimestamp", - outputs: [ - { - internalType: "uint256", - name: "timestamp", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "artifactPath", - type: "string", - }, - ], - name: "getCode", - outputs: [ - { - internalType: "bytes", - name: "creationBytecode", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "artifactPath", - type: "string", - }, - ], - name: "getDeployedCode", - outputs: [ - { - internalType: "bytes", - name: "runtimeBytecode", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "getLabel", - outputs: [ - { - internalType: "string", - name: "currentLabel", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "elementSlot", - type: "bytes32", - }, - ], - name: "getMappingKeyAndParentOf", - outputs: [ - { - internalType: "bool", - name: "found", - type: "bool", - }, - { - internalType: "bytes32", - name: "key", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "parent", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "mappingSlot", - type: "bytes32", - }, - ], - name: "getMappingLength", - outputs: [ - { - internalType: "uint256", - name: "length", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "mappingSlot", - type: "bytes32", - }, - { - internalType: "uint256", - name: "idx", - type: "uint256", - }, - ], - name: "getMappingSlotAt", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "getNonce", - outputs: [ - { - internalType: "uint64", - name: "nonce", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - name: "getNonce", - outputs: [ - { - internalType: "uint64", - name: "nonce", - type: "uint64", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getRecordedLogs", - outputs: [ - { - components: [ - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "address", - name: "emitter", - type: "address", - }, - ], - internalType: "struct VmSafe.Log[]", - name: "logs", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "indexOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "enum VmSafe.ForgeContext", - name: "context", - type: "uint8", - }, - ], - name: "isContext", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "isDir", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "isFile", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExistsJson", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExistsToml", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "string", - name: "newLabel", - type: "string", - }, - ], - name: "label", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "lastCallGas", - outputs: [ - { - components: [ - { - internalType: "uint64", - name: "gasLimit", - type: "uint64", - }, - { - internalType: "uint64", - name: "gasTotalUsed", - type: "uint64", - }, - { - internalType: "uint64", - name: "gasMemoryUsed", - type: "uint64", - }, - { - internalType: "int64", - name: "gasRefunded", - type: "int64", - }, - { - internalType: "uint64", - name: "gasRemaining", - type: "uint64", - }, - ], - internalType: "struct VmSafe.Gas", - name: "gas", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "slot", - type: "bytes32", - }, - ], - name: "load", - outputs: [ - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseAddress", - outputs: [ - { - internalType: "address", - name: "parsedValue", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBool", - outputs: [ - { - internalType: "bool", - name: "parsedValue", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBytes", - outputs: [ - { - internalType: "bytes", - name: "parsedValue", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBytes32", - outputs: [ - { - internalType: "bytes32", - name: "parsedValue", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseInt", - outputs: [ - { - internalType: "int256", - name: "parsedValue", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - name: "parseJson", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJson", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonAddressArray", - outputs: [ - { - internalType: "address[]", - name: "", - type: "address[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBoolArray", - outputs: [ - { - internalType: "bool[]", - name: "", - type: "bool[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes32", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes32Array", - outputs: [ - { - internalType: "bytes32[]", - name: "", - type: "bytes32[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytesArray", - outputs: [ - { - internalType: "bytes[]", - name: "", - type: "bytes[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonInt", - outputs: [ - { - internalType: "int256", - name: "", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonIntArray", - outputs: [ - { - internalType: "int256[]", - name: "", - type: "int256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonKeys", - outputs: [ - { - internalType: "string[]", - name: "keys", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonString", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonStringArray", - outputs: [ - { - internalType: "string[]", - name: "", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonUintArray", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseToml", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - ], - name: "parseToml", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlAddressArray", - outputs: [ - { - internalType: "address[]", - name: "", - type: "address[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBoolArray", - outputs: [ - { - internalType: "bool[]", - name: "", - type: "bool[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes32", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes32Array", - outputs: [ - { - internalType: "bytes32[]", - name: "", - type: "bytes32[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytesArray", - outputs: [ - { - internalType: "bytes[]", - name: "", - type: "bytes[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlInt", - outputs: [ - { - internalType: "int256", - name: "", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlIntArray", - outputs: [ - { - internalType: "int256[]", - name: "", - type: "int256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlKeys", - outputs: [ - { - internalType: "string[]", - name: "keys", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlString", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlStringArray", - outputs: [ - { - internalType: "string[]", - name: "", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlUintArray", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseUint", - outputs: [ - { - internalType: "uint256", - name: "parsedValue", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "pauseGasMetering", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "projectRoot", - outputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "prompt", - outputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptSecret", - outputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptSecretUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "randomAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "randomUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "min", - type: "uint256", - }, - { - internalType: "uint256", - name: "max", - type: "uint256", - }, - ], - name: "randomUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "maxDepth", - type: "uint64", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "maxDepth", - type: "uint64", - }, - { - internalType: "bool", - name: "followLinks", - type: "bool", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readFile", - outputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readFileBinary", - outputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readLine", - outputs: [ - { - internalType: "string", - name: "line", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "linkPath", - type: "string", - }, - ], - name: "readLink", - outputs: [ - { - internalType: "string", - name: "targetPath", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "record", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "recordLogs", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "rememberKey", - outputs: [ - { - internalType: "address", - name: "keyAddr", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bool", - name: "recursive", - type: "bool", - }, - ], - name: "removeDir", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "removeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "from", - type: "string", - }, - { - internalType: "string", - name: "to", - type: "string", - }, - ], - name: "replace", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "resumeGasMetering", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "method", - type: "string", - }, - { - internalType: "string", - name: "params", - type: "string", - }, - ], - name: "rpc", - outputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "rpcAlias", - type: "string", - }, - ], - name: "rpcUrl", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rpcUrlStructs", - outputs: [ - { - components: [ - { - internalType: "string", - name: "key", - type: "string", - }, - { - internalType: "string", - name: "url", - type: "string", - }, - ], - internalType: "struct VmSafe.Rpc[]", - name: "urls", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rpcUrls", - outputs: [ - { - internalType: "string[2][]", - name: "urls", - type: "string[2][]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "address[]", - name: "values", - type: "address[]", - }, - ], - name: "serializeAddress", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "address", - name: "value", - type: "address", - }, - ], - name: "serializeAddress", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bool[]", - name: "values", - type: "bool[]", - }, - ], - name: "serializeBool", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "serializeBool", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes[]", - name: "values", - type: "bytes[]", - }, - ], - name: "serializeBytes", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - name: "serializeBytes", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes32[]", - name: "values", - type: "bytes32[]", - }, - ], - name: "serializeBytes32", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - name: "serializeBytes32", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - name: "serializeInt", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "int256[]", - name: "values", - type: "int256[]", - }, - ], - name: "serializeInt", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "serializeJson", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "string[]", - name: "values", - type: "string[]", - }, - ], - name: "serializeString", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "serializeString", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "serializeUint", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256[]", - name: "values", - type: "uint256[]", - }, - ], - name: "serializeUint", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "serializeUintToHex", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "setEnv", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "signP256", - outputs: [ - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "duration", - type: "uint256", - }, - ], - name: "sleep", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "delimiter", - type: "string", - }, - ], - name: "split", - outputs: [ - { - internalType: "string[]", - name: "outputs", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - ], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "startMappingRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "startStateDiffRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopAndReturnStateDiff", - outputs: [ - { - components: [ - { - components: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - { - internalType: "uint256", - name: "chainId", - type: "uint256", - }, - ], - internalType: "struct VmSafe.ChainInfo", - name: "chainInfo", - type: "tuple", - }, - { - internalType: "enum VmSafe.AccountAccessKind", - name: "kind", - type: "uint8", - }, - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "address", - name: "accessor", - type: "address", - }, - { - internalType: "bool", - name: "initialized", - type: "bool", - }, - { - internalType: "uint256", - name: "oldBalance", - type: "uint256", - }, - { - internalType: "uint256", - name: "newBalance", - type: "uint256", - }, - { - internalType: "bytes", - name: "deployedCode", - type: "bytes", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bool", - name: "reverted", - type: "bool", - }, - { - components: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "bytes32", - name: "slot", - type: "bytes32", - }, - { - internalType: "bool", - name: "isWrite", - type: "bool", - }, - { - internalType: "bytes32", - name: "previousValue", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "newValue", - type: "bytes32", - }, - { - internalType: "bool", - name: "reverted", - type: "bool", - }, - ], - internalType: "struct VmSafe.StorageAccess[]", - name: "storageAccesses", - type: "tuple[]", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - ], - internalType: "struct VmSafe.AccountAccess[]", - name: "accountAccesses", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopMappingRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "toBase64", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "toBase64", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "toBase64URL", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "toBase64URL", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "toLowercase", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "toUppercase", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "trim", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "commandInput", - type: "string[]", - }, - ], - name: "tryFfi", - outputs: [ - { - components: [ - { - internalType: "int32", - name: "exitCode", - type: "int32", - }, - { - internalType: "bytes", - name: "stdout", - type: "bytes", - }, - { - internalType: "bytes", - name: "stderr", - type: "bytes", - }, - ], - internalType: "struct VmSafe.FfiResult", - name: "result", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "unixTime", - outputs: [ - { - internalType: "uint256", - name: "milliseconds", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "writeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "writeFileBinary", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - ], - name: "writeJson", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "writeJson", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "writeLine", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - ], - name: "writeToml", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "writeToml", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class VmSafe__factory { - static readonly abi = _abi; - static createInterface(): VmSafeInterface { - return new utils.Interface(_abi) as VmSafeInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): VmSafe { - return new Contract(address, _abi, signerOrProvider) as VmSafe; - } -} diff --git a/v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts b/v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts deleted file mode 100644 index 5942aaef..00000000 --- a/v1/typechain-types/factories/forge-std/Vm.sol/Vm__factory.ts +++ /dev/null @@ -1,8645 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { Vm, VmInterface } from "../../../forge-std/Vm.sol/Vm"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - ], - name: "accesses", - outputs: [ - { - internalType: "bytes32[]", - name: "readSlots", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "writeSlots", - type: "bytes32[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "activeFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "addr", - outputs: [ - { - internalType: "address", - name: "keyAddr", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "allowCheatcodes", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbs", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqAbsDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - ], - name: "assertApproxEqRel", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "maxPercentDelta", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertApproxEqRelDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertFalse", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assertFalse", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertGtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLe", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLeDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertLt", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertLtDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "left", - type: "bool", - }, - { - internalType: "bool", - name: "right", - type: "bool", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "left", - type: "bool[]", - }, - { - internalType: "bool[]", - name: "right", - type: "bool[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "left", - type: "address[]", - }, - { - internalType: "address[]", - name: "right", - type: "address[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "left", - type: "string", - }, - { - internalType: "string", - name: "right", - type: "string", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "left", - type: "bytes", - }, - { - internalType: "bytes", - name: "right", - type: "bytes", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "left", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "right", - type: "uint256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "left", - type: "address", - }, - { - internalType: "address", - name: "right", - type: "address", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "left", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "right", - type: "bytes32", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "left", - type: "bytes32[]", - }, - { - internalType: "bytes32[]", - name: "right", - type: "bytes32[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "left", - type: "string[]", - }, - { - internalType: "string[]", - name: "right", - type: "string[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256[]", - name: "left", - type: "int256[]", - }, - { - internalType: "int256[]", - name: "right", - type: "int256[]", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes[]", - name: "left", - type: "bytes[]", - }, - { - internalType: "bytes[]", - name: "right", - type: "bytes[]", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - ], - name: "assertNotEq", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "left", - type: "int256", - }, - { - internalType: "int256", - name: "right", - type: "int256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "left", - type: "uint256", - }, - { - internalType: "uint256", - name: "right", - type: "uint256", - }, - { - internalType: "uint256", - name: "decimals", - type: "uint256", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertNotEqDecimal", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assertTrue", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - { - internalType: "string", - name: "error", - type: "string", - }, - ], - name: "assertTrue", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "condition", - type: "bool", - }, - ], - name: "assume", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newBlobBaseFee", - type: "uint256", - }, - ], - name: "blobBaseFee", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32[]", - name: "hashes", - type: "bytes32[]", - }, - ], - name: "blobhashes", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "char", - type: "string", - }, - ], - name: "breakpoint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "char", - type: "string", - }, - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "breakpoint", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - ], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "broadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newChainId", - type: "uint256", - }, - ], - name: "chainId", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "clearMockedCalls", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "closeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newCoinbase", - type: "address", - }, - ], - name: "coinbase", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "salt", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "initCodeHash", - type: "bytes32", - }, - ], - name: "computeCreate2Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "salt", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "initCodeHash", - type: "bytes32", - }, - { - internalType: "address", - name: "deployer", - type: "address", - }, - ], - name: "computeCreate2Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "deployer", - type: "address", - }, - { - internalType: "uint256", - name: "nonce", - type: "uint256", - }, - ], - name: "computeCreateAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "from", - type: "string", - }, - { - internalType: "string", - name: "to", - type: "string", - }, - ], - name: "copyFile", - outputs: [ - { - internalType: "uint64", - name: "copied", - type: "uint64", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bool", - name: "recursive", - type: "bool", - }, - ], - name: "createDir", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - ], - name: "createFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "createFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "createFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "createSelectFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "createSelectFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "urlOrAlias", - type: "string", - }, - ], - name: "createSelectFork", - outputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "walletLabel", - type: "string", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "string", - name: "walletLabel", - type: "string", - }, - ], - name: "createWallet", - outputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "newBalance", - type: "uint256", - }, - ], - name: "deal", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "snapshotId", - type: "uint256", - }, - ], - name: "deleteSnapshot", - outputs: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "deleteSnapshots", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "string", - name: "derivationPath", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - { - internalType: "string", - name: "language", - type: "string", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - { - internalType: "string", - name: "language", - type: "string", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "mnemonic", - type: "string", - }, - { - internalType: "string", - name: "derivationPath", - type: "string", - }, - { - internalType: "uint32", - name: "index", - type: "uint32", - }, - ], - name: "deriveKey", - outputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newDifficulty", - type: "uint256", - }, - ], - name: "difficulty", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "pathToStateJson", - type: "string", - }, - ], - name: "dumpState", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "ensNamehash", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envAddress", - outputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envAddress", - outputs: [ - { - internalType: "address[]", - name: "value", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBool", - outputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBool", - outputs: [ - { - internalType: "bool[]", - name: "value", - type: "bool[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBytes", - outputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBytes", - outputs: [ - { - internalType: "bytes[]", - name: "value", - type: "bytes[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envBytes32", - outputs: [ - { - internalType: "bytes32[]", - name: "value", - type: "bytes32[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envBytes32", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envExists", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envInt", - outputs: [ - { - internalType: "int256[]", - name: "value", - type: "int256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envInt", - outputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bytes32[]", - name: "defaultValue", - type: "bytes32[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes32[]", - name: "value", - type: "bytes32[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "int256[]", - name: "defaultValue", - type: "int256[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "int256[]", - name: "value", - type: "int256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bool", - name: "defaultValue", - type: "bool", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "address", - name: "defaultValue", - type: "address", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "uint256", - name: "defaultValue", - type: "uint256", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bytes[]", - name: "defaultValue", - type: "bytes[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes[]", - name: "value", - type: "bytes[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "uint256[]", - name: "defaultValue", - type: "uint256[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "uint256[]", - name: "value", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "string[]", - name: "defaultValue", - type: "string[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "string[]", - name: "value", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bytes", - name: "defaultValue", - type: "bytes", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "bytes32", - name: "defaultValue", - type: "bytes32", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "int256", - name: "defaultValue", - type: "int256", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "address[]", - name: "defaultValue", - type: "address[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "address[]", - name: "value", - type: "address[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "defaultValue", - type: "string", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "string", - name: "value", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - { - internalType: "bool[]", - name: "defaultValue", - type: "bool[]", - }, - ], - name: "envOr", - outputs: [ - { - internalType: "bool[]", - name: "value", - type: "bool[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envString", - outputs: [ - { - internalType: "string[]", - name: "value", - type: "string[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envString", - outputs: [ - { - internalType: "string", - name: "value", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - ], - name: "envUint", - outputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "delim", - type: "string", - }, - ], - name: "envUint", - outputs: [ - { - internalType: "uint256[]", - name: "value", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "newRuntimeBytecode", - type: "bytes", - }, - ], - name: "etch", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "fromBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "toBlock", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - ], - name: "eth_getLogs", - outputs: [ - { - components: [ - { - internalType: "address", - name: "emitter", - type: "address", - }, - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - { - internalType: "uint64", - name: "blockNumber", - type: "uint64", - }, - { - internalType: "bytes32", - name: "transactionHash", - type: "bytes32", - }, - { - internalType: "uint64", - name: "transactionIndex", - type: "uint64", - }, - { - internalType: "uint256", - name: "logIndex", - type: "uint256", - }, - { - internalType: "bool", - name: "removed", - type: "bool", - }, - ], - internalType: "struct VmSafe.EthGetLogs[]", - name: "logs", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "uint64", - name: "gas", - type: "uint64", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "uint64", - name: "gas", - type: "uint64", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "uint64", - name: "count", - type: "uint64", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "uint64", - name: "count", - type: "uint64", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "uint64", - name: "count", - type: "uint64", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "expectCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "uint64", - name: "minGas", - type: "uint64", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "expectCallMinGas", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "uint64", - name: "minGas", - type: "uint64", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "uint64", - name: "count", - type: "uint64", - }, - ], - name: "expectCallMinGas", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "expectEmit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "checkTopic1", - type: "bool", - }, - { - internalType: "bool", - name: "checkTopic2", - type: "bool", - }, - { - internalType: "bool", - name: "checkTopic3", - type: "bool", - }, - { - internalType: "bool", - name: "checkData", - type: "bool", - }, - ], - name: "expectEmit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "checkTopic1", - type: "bool", - }, - { - internalType: "bool", - name: "checkTopic2", - type: "bool", - }, - { - internalType: "bool", - name: "checkTopic3", - type: "bool", - }, - { - internalType: "bool", - name: "checkData", - type: "bool", - }, - { - internalType: "address", - name: "emitter", - type: "address", - }, - ], - name: "expectEmit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "emitter", - type: "address", - }, - ], - name: "expectEmit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "revertData", - type: "bytes4", - }, - ], - name: "expectRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "revertData", - type: "bytes", - }, - ], - name: "expectRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "expectRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint64", - name: "min", - type: "uint64", - }, - { - internalType: "uint64", - name: "max", - type: "uint64", - }, - ], - name: "expectSafeMemory", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint64", - name: "min", - type: "uint64", - }, - { - internalType: "uint64", - name: "max", - type: "uint64", - }, - ], - name: "expectSafeMemoryCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newBasefee", - type: "uint256", - }, - ], - name: "fee", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "commandInput", - type: "string[]", - }, - ], - name: "ffi", - outputs: [ - { - internalType: "bytes", - name: "result", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "fsMetadata", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - { - internalType: "uint256", - name: "length", - type: "uint256", - }, - { - internalType: "bool", - name: "readOnly", - type: "bool", - }, - { - internalType: "uint256", - name: "modified", - type: "uint256", - }, - { - internalType: "uint256", - name: "accessed", - type: "uint256", - }, - { - internalType: "uint256", - name: "created", - type: "uint256", - }, - ], - internalType: "struct VmSafe.FsMetadata", - name: "metadata", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlobBaseFee", - outputs: [ - { - internalType: "uint256", - name: "blobBaseFee", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlobhashes", - outputs: [ - { - internalType: "bytes32[]", - name: "hashes", - type: "bytes32[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlockNumber", - outputs: [ - { - internalType: "uint256", - name: "height", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlockTimestamp", - outputs: [ - { - internalType: "uint256", - name: "timestamp", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "artifactPath", - type: "string", - }, - ], - name: "getCode", - outputs: [ - { - internalType: "bytes", - name: "creationBytecode", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "artifactPath", - type: "string", - }, - ], - name: "getDeployedCode", - outputs: [ - { - internalType: "bytes", - name: "runtimeBytecode", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "getLabel", - outputs: [ - { - internalType: "string", - name: "currentLabel", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "elementSlot", - type: "bytes32", - }, - ], - name: "getMappingKeyAndParentOf", - outputs: [ - { - internalType: "bool", - name: "found", - type: "bool", - }, - { - internalType: "bytes32", - name: "key", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "parent", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "mappingSlot", - type: "bytes32", - }, - ], - name: "getMappingLength", - outputs: [ - { - internalType: "uint256", - name: "length", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "mappingSlot", - type: "bytes32", - }, - { - internalType: "uint256", - name: "idx", - type: "uint256", - }, - ], - name: "getMappingSlotAt", - outputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "getNonce", - outputs: [ - { - internalType: "uint64", - name: "nonce", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - ], - name: "getNonce", - outputs: [ - { - internalType: "uint64", - name: "nonce", - type: "uint64", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getRecordedLogs", - outputs: [ - { - components: [ - { - internalType: "bytes32[]", - name: "topics", - type: "bytes32[]", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "address", - name: "emitter", - type: "address", - }, - ], - internalType: "struct VmSafe.Log[]", - name: "logs", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "indexOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "enum VmSafe.ForgeContext", - name: "context", - type: "uint8", - }, - ], - name: "isContext", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "isDir", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "isFile", - outputs: [ - { - internalType: "bool", - name: "result", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "isPersistent", - outputs: [ - { - internalType: "bool", - name: "persistent", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExistsJson", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "keyExistsToml", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "string", - name: "newLabel", - type: "string", - }, - ], - name: "label", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "lastCallGas", - outputs: [ - { - components: [ - { - internalType: "uint64", - name: "gasLimit", - type: "uint64", - }, - { - internalType: "uint64", - name: "gasTotalUsed", - type: "uint64", - }, - { - internalType: "uint64", - name: "gasMemoryUsed", - type: "uint64", - }, - { - internalType: "int64", - name: "gasRefunded", - type: "int64", - }, - { - internalType: "uint64", - name: "gasRemaining", - type: "uint64", - }, - ], - internalType: "struct VmSafe.Gas", - name: "gas", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "slot", - type: "bytes32", - }, - ], - name: "load", - outputs: [ - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "pathToAllocsJson", - type: "string", - }, - ], - name: "loadAllocs", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "accounts", - type: "address[]", - }, - ], - name: "makePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account0", - type: "address", - }, - { - internalType: "address", - name: "account1", - type: "address", - }, - ], - name: "makePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "makePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account0", - type: "address", - }, - { - internalType: "address", - name: "account1", - type: "address", - }, - { - internalType: "address", - name: "account2", - type: "address", - }, - ], - name: "makePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - name: "mockCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - name: "mockCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "uint256", - name: "msgValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes", - name: "revertData", - type: "bytes", - }, - ], - name: "mockCallRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "callee", - type: "address", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bytes", - name: "revertData", - type: "bytes", - }, - ], - name: "mockCallRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseAddress", - outputs: [ - { - internalType: "address", - name: "parsedValue", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBool", - outputs: [ - { - internalType: "bool", - name: "parsedValue", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBytes", - outputs: [ - { - internalType: "bytes", - name: "parsedValue", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseBytes32", - outputs: [ - { - internalType: "bytes32", - name: "parsedValue", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseInt", - outputs: [ - { - internalType: "int256", - name: "parsedValue", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - name: "parseJson", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJson", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonAddressArray", - outputs: [ - { - internalType: "address[]", - name: "", - type: "address[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBoolArray", - outputs: [ - { - internalType: "bool[]", - name: "", - type: "bool[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes32", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytes32Array", - outputs: [ - { - internalType: "bytes32[]", - name: "", - type: "bytes32[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonBytesArray", - outputs: [ - { - internalType: "bytes[]", - name: "", - type: "bytes[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonInt", - outputs: [ - { - internalType: "int256", - name: "", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonIntArray", - outputs: [ - { - internalType: "int256[]", - name: "", - type: "int256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonKeys", - outputs: [ - { - internalType: "string[]", - name: "keys", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonString", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonStringArray", - outputs: [ - { - internalType: "string[]", - name: "", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseJsonUintArray", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseToml", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - ], - name: "parseToml", - outputs: [ - { - internalType: "bytes", - name: "abiEncodedData", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlAddressArray", - outputs: [ - { - internalType: "address[]", - name: "", - type: "address[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBoolArray", - outputs: [ - { - internalType: "bool[]", - name: "", - type: "bool[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes32", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytes32Array", - outputs: [ - { - internalType: "bytes32[]", - name: "", - type: "bytes32[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlBytesArray", - outputs: [ - { - internalType: "bytes[]", - name: "", - type: "bytes[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlInt", - outputs: [ - { - internalType: "int256", - name: "", - type: "int256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlIntArray", - outputs: [ - { - internalType: "int256[]", - name: "", - type: "int256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlKeys", - outputs: [ - { - internalType: "string[]", - name: "keys", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlString", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlStringArray", - outputs: [ - { - internalType: "string[]", - name: "", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "toml", - type: "string", - }, - { - internalType: "string", - name: "key", - type: "string", - }, - ], - name: "parseTomlUintArray", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - name: "parseUint", - outputs: [ - { - internalType: "uint256", - name: "parsedValue", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "pauseGasMetering", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "msgSender", - type: "address", - }, - { - internalType: "address", - name: "txOrigin", - type: "address", - }, - ], - name: "prank", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "msgSender", - type: "address", - }, - ], - name: "prank", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "newPrevrandao", - type: "bytes32", - }, - ], - name: "prevrandao", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newPrevrandao", - type: "uint256", - }, - ], - name: "prevrandao", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "projectRoot", - outputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "prompt", - outputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptSecret", - outputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptSecretUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "promptText", - type: "string", - }, - ], - name: "promptUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "randomAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "randomUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "min", - type: "uint256", - }, - { - internalType: "uint256", - name: "max", - type: "uint256", - }, - ], - name: "randomUint", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "readCallers", - outputs: [ - { - internalType: "enum VmSafe.CallerMode", - name: "callerMode", - type: "uint8", - }, - { - internalType: "address", - name: "msgSender", - type: "address", - }, - { - internalType: "address", - name: "txOrigin", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "maxDepth", - type: "uint64", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "maxDepth", - type: "uint64", - }, - { - internalType: "bool", - name: "followLinks", - type: "bool", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readDir", - outputs: [ - { - components: [ - { - internalType: "string", - name: "errorMessage", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - { - internalType: "bool", - name: "isDir", - type: "bool", - }, - { - internalType: "bool", - name: "isSymlink", - type: "bool", - }, - ], - internalType: "struct VmSafe.DirEntry[]", - name: "entries", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readFile", - outputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readFileBinary", - outputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "readLine", - outputs: [ - { - internalType: "string", - name: "line", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "linkPath", - type: "string", - }, - ], - name: "readLink", - outputs: [ - { - internalType: "string", - name: "targetPath", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "record", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "recordLogs", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "rememberKey", - outputs: [ - { - internalType: "address", - name: "keyAddr", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bool", - name: "recursive", - type: "bool", - }, - ], - name: "removeDir", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "removeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "from", - type: "string", - }, - { - internalType: "string", - name: "to", - type: "string", - }, - ], - name: "replace", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "resetNonce", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "resumeGasMetering", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "snapshotId", - type: "uint256", - }, - ], - name: "revertTo", - outputs: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "snapshotId", - type: "uint256", - }, - ], - name: "revertToAndDelete", - outputs: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address[]", - name: "accounts", - type: "address[]", - }, - ], - name: "revokePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "revokePersistent", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newHeight", - type: "uint256", - }, - ], - name: "roll", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "rollFork", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "rollFork", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "rollFork", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "rollFork", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "method", - type: "string", - }, - { - internalType: "string", - name: "params", - type: "string", - }, - ], - name: "rpc", - outputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "rpcAlias", - type: "string", - }, - ], - name: "rpcUrl", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rpcUrlStructs", - outputs: [ - { - components: [ - { - internalType: "string", - name: "key", - type: "string", - }, - { - internalType: "string", - name: "url", - type: "string", - }, - ], - internalType: "struct VmSafe.Rpc[]", - name: "urls", - type: "tuple[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "rpcUrls", - outputs: [ - { - internalType: "string[2][]", - name: "urls", - type: "string[2][]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - ], - name: "selectFork", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "address[]", - name: "values", - type: "address[]", - }, - ], - name: "serializeAddress", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "address", - name: "value", - type: "address", - }, - ], - name: "serializeAddress", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bool[]", - name: "values", - type: "bool[]", - }, - ], - name: "serializeBool", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "serializeBool", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes[]", - name: "values", - type: "bytes[]", - }, - ], - name: "serializeBytes", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - name: "serializeBytes", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes32[]", - name: "values", - type: "bytes32[]", - }, - ], - name: "serializeBytes32", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - name: "serializeBytes32", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - name: "serializeInt", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "int256[]", - name: "values", - type: "int256[]", - }, - ], - name: "serializeInt", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "serializeJson", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "string[]", - name: "values", - type: "string[]", - }, - ], - name: "serializeString", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "serializeString", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "serializeUint", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256[]", - name: "values", - type: "uint256[]", - }, - ], - name: "serializeUint", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "objectKey", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "serializeUintToHex", - outputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "value", - type: "string", - }, - ], - name: "setEnv", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint64", - name: "newNonce", - type: "uint64", - }, - ], - name: "setNonce", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint64", - name: "newNonce", - type: "uint64", - }, - ], - name: "setNonceUnsafe", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "uint256", - name: "publicKeyX", - type: "uint256", - }, - { - internalType: "uint256", - name: "publicKeyY", - type: "uint256", - }, - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - internalType: "struct VmSafe.Wallet", - name: "wallet", - type: "tuple", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "sign", - outputs: [ - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - { - internalType: "bytes32", - name: "digest", - type: "bytes32", - }, - ], - name: "signP256", - outputs: [ - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "skipTest", - type: "bool", - }, - ], - name: "skip", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "duration", - type: "uint256", - }, - ], - name: "sleep", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "snapshot", - outputs: [ - { - internalType: "uint256", - name: "snapshotId", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - { - internalType: "string", - name: "delimiter", - type: "string", - }, - ], - name: "split", - outputs: [ - { - internalType: "string[]", - name: "outputs", - type: "string[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "signer", - type: "address", - }, - ], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "privateKey", - type: "uint256", - }, - ], - name: "startBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "startMappingRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "msgSender", - type: "address", - }, - ], - name: "startPrank", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "msgSender", - type: "address", - }, - { - internalType: "address", - name: "txOrigin", - type: "address", - }, - ], - name: "startPrank", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "startStateDiffRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopAndReturnStateDiff", - outputs: [ - { - components: [ - { - components: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - { - internalType: "uint256", - name: "chainId", - type: "uint256", - }, - ], - internalType: "struct VmSafe.ChainInfo", - name: "chainInfo", - type: "tuple", - }, - { - internalType: "enum VmSafe.AccountAccessKind", - name: "kind", - type: "uint8", - }, - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "address", - name: "accessor", - type: "address", - }, - { - internalType: "bool", - name: "initialized", - type: "bool", - }, - { - internalType: "uint256", - name: "oldBalance", - type: "uint256", - }, - { - internalType: "uint256", - name: "newBalance", - type: "uint256", - }, - { - internalType: "bytes", - name: "deployedCode", - type: "bytes", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - { - internalType: "bool", - name: "reverted", - type: "bool", - }, - { - components: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "bytes32", - name: "slot", - type: "bytes32", - }, - { - internalType: "bool", - name: "isWrite", - type: "bool", - }, - { - internalType: "bytes32", - name: "previousValue", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "newValue", - type: "bytes32", - }, - { - internalType: "bool", - name: "reverted", - type: "bool", - }, - ], - internalType: "struct VmSafe.StorageAccess[]", - name: "storageAccesses", - type: "tuple[]", - }, - { - internalType: "uint64", - name: "depth", - type: "uint64", - }, - ], - internalType: "struct VmSafe.AccountAccess[]", - name: "accountAccesses", - type: "tuple[]", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopBroadcast", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopExpectSafeMemory", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopMappingRecording", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "stopPrank", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes32", - name: "slot", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - name: "store", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "toBase64", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "toBase64", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "toBase64URL", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "toBase64URL", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "toLowercase", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "value", - type: "address", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes", - name: "value", - type: "bytes", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "value", - type: "bool", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "int256", - name: "value", - type: "int256", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "value", - type: "bytes32", - }, - ], - name: "toString", - outputs: [ - { - internalType: "string", - name: "stringifiedValue", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "toUppercase", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "forkId", - type: "uint256", - }, - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "transact", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "txHash", - type: "bytes32", - }, - ], - name: "transact", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "input", - type: "string", - }, - ], - name: "trim", - outputs: [ - { - internalType: "string", - name: "output", - type: "string", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "string[]", - name: "commandInput", - type: "string[]", - }, - ], - name: "tryFfi", - outputs: [ - { - components: [ - { - internalType: "int32", - name: "exitCode", - type: "int32", - }, - { - internalType: "bytes", - name: "stdout", - type: "bytes", - }, - { - internalType: "bytes", - name: "stderr", - type: "bytes", - }, - ], - internalType: "struct VmSafe.FfiResult", - name: "result", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newGasPrice", - type: "uint256", - }, - ], - name: "txGasPrice", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "unixTime", - outputs: [ - { - internalType: "uint256", - name: "milliseconds", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newTimestamp", - type: "uint256", - }, - ], - name: "warp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "writeFile", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "writeFileBinary", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - ], - name: "writeJson", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "writeJson", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "data", - type: "string", - }, - ], - name: "writeLine", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - { - internalType: "string", - name: "valueKey", - type: "string", - }, - ], - name: "writeToml", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "json", - type: "string", - }, - { - internalType: "string", - name: "path", - type: "string", - }, - ], - name: "writeToml", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class Vm__factory { - static readonly abi = _abi; - static createInterface(): VmInterface { - return new utils.Interface(_abi) as VmInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): Vm { - return new Contract(address, _abi, signerOrProvider) as Vm; - } -} diff --git a/v1/typechain-types/factories/forge-std/Vm.sol/index.ts b/v1/typechain-types/factories/forge-std/Vm.sol/index.ts deleted file mode 100644 index fcea6ed4..00000000 --- a/v1/typechain-types/factories/forge-std/Vm.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { Vm__factory } from "./Vm__factory"; -export { VmSafe__factory } from "./VmSafe__factory"; diff --git a/v1/typechain-types/factories/forge-std/index.ts b/v1/typechain-types/factories/forge-std/index.ts deleted file mode 100644 index cfff7dbd..00000000 --- a/v1/typechain-types/factories/forge-std/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as stdErrorSol from "./StdError.sol"; -export * as stdStorageSol from "./StdStorage.sol"; -export * as vmSol from "./Vm.sol"; -export * as interfaces from "./interfaces"; -export * as mocks from "./mocks"; -export { StdAssertions__factory } from "./StdAssertions__factory"; -export { StdInvariant__factory } from "./StdInvariant__factory"; -export { Test__factory } from "./Test__factory"; diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts deleted file mode 100644 index f9cd3aa8..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC165__factory.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC165, - IERC165Interface, -} from "../../../forge-std/interfaces/IERC165"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceID", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class IERC165__factory { - static readonly abi = _abi; - static createInterface(): IERC165Interface { - return new utils.Interface(_abi) as IERC165Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC165 { - return new Contract(address, _abi, signerOrProvider) as IERC165; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts deleted file mode 100644 index 41f9852d..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC20__factory.ts +++ /dev/null @@ -1,245 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC20, - IERC20Interface, -} from "../../../forge-std/interfaces/IERC20"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IERC20__factory { - static readonly abi = _abi; - static createInterface(): IERC20Interface { - return new utils.Interface(_abi) as IERC20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { - return new Contract(address, _abi, signerOrProvider) as IERC20; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts deleted file mode 100644 index 2a446610..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Enumerable__factory.ts +++ /dev/null @@ -1,367 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC721Enumerable, - IERC721EnumerableInterface, -} from "../../../../forge-std/interfaces/IERC721.sol/IERC721Enumerable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_operator", - type: "address", - }, - { - indexed: false, - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "ApprovalForAll", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "_approved", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "address", - name: "_operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_operator", - type: "address", - }, - { - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceID", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_index", - type: "uint256", - }, - ], - name: "tokenByIndex", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "uint256", - name: "_index", - type: "uint256", - }, - ], - name: "tokenOfOwnerByIndex", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -export class IERC721Enumerable__factory { - static readonly abi = _abi; - static createInterface(): IERC721EnumerableInterface { - return new utils.Interface(_abi) as IERC721EnumerableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721Enumerable { - return new Contract(address, _abi, signerOrProvider) as IERC721Enumerable; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts deleted file mode 100644 index 6a62b2da..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721Metadata__factory.ts +++ /dev/null @@ -1,356 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC721Metadata, - IERC721MetadataInterface, -} from "../../../../forge-std/interfaces/IERC721.sol/IERC721Metadata"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_operator", - type: "address", - }, - { - indexed: false, - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "ApprovalForAll", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "_approved", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "address", - name: "_operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "_name", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_operator", - type: "address", - }, - { - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceID", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "_symbol", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -export class IERC721Metadata__factory { - static readonly abi = _abi; - static createInterface(): IERC721MetadataInterface { - return new utils.Interface(_abi) as IERC721MetadataInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721Metadata { - return new Contract(address, _abi, signerOrProvider) as IERC721Metadata; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts deleted file mode 100644 index 6f25120a..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver__factory.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC721TokenReceiver, - IERC721TokenReceiverInterface, -} from "../../../../forge-std/interfaces/IERC721.sol/IERC721TokenReceiver"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "_operator", - type: "address", - }, - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class IERC721TokenReceiver__factory { - static readonly abi = _abi; - static createInterface(): IERC721TokenReceiverInterface { - return new utils.Interface(_abi) as IERC721TokenReceiverInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721TokenReceiver { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721TokenReceiver; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts deleted file mode 100644 index ea8578bc..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/IERC721__factory.ts +++ /dev/null @@ -1,311 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IERC721, - IERC721Interface, -} from "../../../../forge-std/interfaces/IERC721.sol/IERC721"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_operator", - type: "address", - }, - { - indexed: false, - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "ApprovalForAll", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "_approved", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_owner", - type: "address", - }, - { - internalType: "address", - name: "_operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_operator", - type: "address", - }, - { - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceID", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_from", - type: "address", - }, - { - internalType: "address", - name: "_to", - type: "address", - }, - { - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -export class IERC721__factory { - static readonly abi = _abi; - static createInterface(): IERC721Interface { - return new utils.Interface(_abi) as IERC721Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721 { - return new Contract(address, _abi, signerOrProvider) as IERC721; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts b/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts deleted file mode 100644 index 93147b21..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IERC721.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC721__factory } from "./IERC721__factory"; -export { IERC721Enumerable__factory } from "./IERC721Enumerable__factory"; -export { IERC721Metadata__factory } from "./IERC721Metadata__factory"; -export { IERC721TokenReceiver__factory } from "./IERC721TokenReceiver__factory"; diff --git a/v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts b/v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts deleted file mode 100644 index 66051d4f..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/IMulticall3__factory.ts +++ /dev/null @@ -1,464 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - IMulticall3, - IMulticall3Interface, -} from "../../../forge-std/interfaces/IMulticall3"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "aggregate", - outputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bool", - name: "allowFailure", - type: "bool", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call3[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "aggregate3", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Result[]", - name: "returnData", - type: "tuple[]", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bool", - name: "allowFailure", - type: "bool", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call3Value[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "aggregate3Value", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Result[]", - name: "returnData", - type: "tuple[]", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "blockAndAggregate", - outputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - { - components: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Result[]", - name: "returnData", - type: "tuple[]", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [], - name: "getBasefee", - outputs: [ - { - internalType: "uint256", - name: "basefee", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - name: "getBlockHash", - outputs: [ - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getBlockNumber", - outputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getChainId", - outputs: [ - { - internalType: "uint256", - name: "chainid", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getCurrentBlockCoinbase", - outputs: [ - { - internalType: "address", - name: "coinbase", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getCurrentBlockDifficulty", - outputs: [ - { - internalType: "uint256", - name: "difficulty", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getCurrentBlockGasLimit", - outputs: [ - { - internalType: "uint256", - name: "gaslimit", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getCurrentBlockTimestamp", - outputs: [ - { - internalType: "uint256", - name: "timestamp", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - ], - name: "getEthBalance", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getLastBlockHash", - outputs: [ - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "requireSuccess", - type: "bool", - }, - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "tryAggregate", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Result[]", - name: "returnData", - type: "tuple[]", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "requireSuccess", - type: "bool", - }, - { - components: [ - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "bytes", - name: "callData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Call[]", - name: "calls", - type: "tuple[]", - }, - ], - name: "tryBlockAndAggregate", - outputs: [ - { - internalType: "uint256", - name: "blockNumber", - type: "uint256", - }, - { - internalType: "bytes32", - name: "blockHash", - type: "bytes32", - }, - { - components: [ - { - internalType: "bool", - name: "success", - type: "bool", - }, - { - internalType: "bytes", - name: "returnData", - type: "bytes", - }, - ], - internalType: "struct IMulticall3.Result[]", - name: "returnData", - type: "tuple[]", - }, - ], - stateMutability: "payable", - type: "function", - }, -] as const; - -export class IMulticall3__factory { - static readonly abi = _abi; - static createInterface(): IMulticall3Interface { - return new utils.Interface(_abi) as IMulticall3Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IMulticall3 { - return new Contract(address, _abi, signerOrProvider) as IMulticall3; - } -} diff --git a/v1/typechain-types/factories/forge-std/interfaces/index.ts b/v1/typechain-types/factories/forge-std/interfaces/index.ts deleted file mode 100644 index 174beea6..00000000 --- a/v1/typechain-types/factories/forge-std/interfaces/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export * as ierc721Sol from "./IERC721.sol"; -export { IERC165__factory } from "./IERC165__factory"; -export { IERC20__factory } from "./IERC20__factory"; -export { IMulticall3__factory } from "./IMulticall3__factory"; diff --git a/v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts b/v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts deleted file mode 100644 index c6cedc7c..00000000 --- a/v1/typechain-types/factories/forge-std/mocks/MockERC20__factory.ts +++ /dev/null @@ -1,383 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockERC20, - MockERC20Interface, -} from "../../../forge-std/mocks/MockERC20"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [], - name: "DOMAIN_SEPARATOR", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string", - }, - { - internalType: "string", - name: "symbol_", - type: "string", - }, - { - internalType: "uint8", - name: "decimals_", - type: "uint8", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "nonces", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "value", - type: "uint256", - }, - { - internalType: "uint256", - name: "deadline", - type: "uint256", - }, - { - internalType: "uint8", - name: "v", - type: "uint8", - }, - { - internalType: "bytes32", - name: "r", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "s", - type: "bytes32", - }, - ], - name: "permit", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50611c60806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b4114610228578063a9059cbb14610246578063d505accf14610276578063dd62ed3e14610292576100cf565b80633644e515146101aa57806370a08231146101c85780637ecebe00146101f8576100cf565b806306fdde03146100d4578063095ea7b3146100f25780631624f6c61461012257806318160ddd1461013e57806323b872dd1461015c578063313ce5671461018c575b600080fd5b6100dc6102c2565b6040516100e99190611681565b60405180910390f35b61010c6004803603810190610107919061124d565b610354565b6040516101199190611552565b60405180910390f35b61013c6004803603810190610137919061128d565b610446565b005b61014661051b565b6040516101539190611743565b60405180910390f35b61017660048036038101906101719190611158565b610525565b6040516101839190611552565b60405180910390f35b6101946107c4565b6040516101a1919061175e565b60405180910390f35b6101b26107db565b6040516101bf919061156d565b60405180910390f35b6101e260048036038101906101dd91906110eb565b610803565b6040516101ef9190611743565b60405180910390f35b610212600480360381019061020d91906110eb565b61084c565b60405161021f9190611743565b60405180910390f35b610230610864565b60405161023d9190611681565b60405180910390f35b610260600480360381019061025b919061124d565b6108f6565b60405161026d9190611552565b60405180910390f35b610290600480360381019061028b91906111ab565b610a7f565b005b6102ac60048036038101906102a79190611118565b610d7e565b6040516102b99190611743565b60405180910390f35b6060600080546102d190611941565b80601f01602080910402602001604051908101604052809291908181526020018280546102fd90611941565b801561034a5780601f1061031f5761010080835404028352916020019161034a565b820191906000526020600020905b81548152906001019060200180831161032d57829003601f168201915b5050505050905090565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104349190611743565b60405180910390a36001905092915050565b600960009054906101000a900460ff1615610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048d906116a3565b60405180910390fd5b82600090805190602001906104ac929190610f7a565b5081600190805190602001906104c3929190610f7a565b5080600260006101000a81548160ff021916908360ff1602179055506104e7610e05565b6006819055506104f5610e28565b6007819055506001600960006101000a81548160ff021916908315150217905550505050565b6000600354905090565b600080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600019811461063b576105ba8184610ebb565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610684600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484610ebb565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610710600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484610f14565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516107b09190611743565b60405180910390a360019150509392505050565b6000600260009054906101000a900460ff16905090565b60006006546107e8610e05565b146107fa576107f5610e28565b6107fe565b6007545b905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60086020528060005260406000206000915090505481565b60606001805461087390611941565b80601f016020809104026020016040519081016040528092919081815260200182805461089f90611941565b80156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b5050505050905090565b6000610941600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ebb565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109cd600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f14565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a6d9190611743565b60405180910390a36001905092915050565b42841015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990611723565b60405180910390fd5b60006001610ace6107db565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b42906119a4565b919050558b604051602001610b5c96959493929190611588565b60405160208183030381529060405280519060200120604051602001610b8392919061151b565b6040516020818303038152906040528051906020012085858560405160008152602001604052604051610bb9949392919061163c565b6020604051602081039080840390855afa158015610bdb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610c4f57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590611703565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92588604051610d6c9190611743565b60405180910390a35050505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611000610f729050611000819050610e218163ffffffff16565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610e5a9190611504565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610e8b610e05565b30604051602001610ea09594939291906115e9565b60405160208183030381529060405280519060200120905090565b600081831015610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906116c3565b60405180910390fd5b8183610f0c919061186c565b905092915050565b6000808284610f239190611816565b905083811015610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f906116e3565b60405180910390fd5b8091505092915050565b600046905090565b828054610f8690611941565b90600052602060002090601f016020900481019282610fa85760008555610fef565b82601f10610fc157805160ff1916838001178555610fef565b82800160010185558215610fef579182015b82811115610fee578251825591602001919060010190610fd3565b5b509050610ffc919061100a565b5090565b611008611a84565b565b5b8082111561102357600081600090555060010161100b565b5090565b600061103a6110358461179e565b611779565b90508281526020810184848401111561105657611055611ab8565b5b6110618482856118ff565b509392505050565b60008135905061107881611bce565b92915050565b60008135905061108d81611be5565b92915050565b600082601f8301126110a8576110a7611ab3565b5b81356110b8848260208601611027565b91505092915050565b6000813590506110d081611bfc565b92915050565b6000813590506110e581611c13565b92915050565b60006020828403121561110157611100611ac2565b5b600061110f84828501611069565b91505092915050565b6000806040838503121561112f5761112e611ac2565b5b600061113d85828601611069565b925050602061114e85828601611069565b9150509250929050565b60008060006060848603121561117157611170611ac2565b5b600061117f86828701611069565b935050602061119086828701611069565b92505060406111a1868287016110c1565b9150509250925092565b600080600080600080600060e0888a0312156111ca576111c9611ac2565b5b60006111d88a828b01611069565b97505060206111e98a828b01611069565b96505060406111fa8a828b016110c1565b955050606061120b8a828b016110c1565b945050608061121c8a828b016110d6565b93505060a061122d8a828b0161107e565b92505060c061123e8a828b0161107e565b91505092959891949750929550565b6000806040838503121561126457611263611ac2565b5b600061127285828601611069565b9250506020611283858286016110c1565b9150509250929050565b6000806000606084860312156112a6576112a5611ac2565b5b600084013567ffffffffffffffff8111156112c4576112c3611abd565b5b6112d086828701611093565b935050602084013567ffffffffffffffff8111156112f1576112f0611abd565b5b6112fd86828701611093565b925050604061130e868287016110d6565b9150509250925092565b611321816118a0565b82525050565b611330816118b2565b82525050565b61133f816118be565b82525050565b611356611351826118be565b6119ed565b82525050565b6000815461136981611941565b61137381866117ef565b9450600182166000811461138e576001811461139f576113d2565b60ff198316865281860193506113d2565b6113a8856117cf565b60005b838110156113ca578154818901526001820191506020810190506113ab565b838801955050505b50505092915050565b60006113e6826117e4565b6113f081856117fa565b935061140081856020860161190e565b61140981611ac7565b840191505092915050565b60006114216013836117fa565b915061142c82611ad8565b602082019050919050565b600061144460028361180b565b915061144f82611b01565b600282019050919050565b6000611467601c836117fa565b915061147282611b2a565b602082019050919050565b600061148a6018836117fa565b915061149582611b53565b602082019050919050565b60006114ad600e836117fa565b91506114b882611b7c565b602082019050919050565b60006114d06017836117fa565b91506114db82611ba5565b602082019050919050565b6114ef816118e8565b82525050565b6114fe816118f2565b82525050565b6000611510828461135c565b915081905092915050565b600061152682611437565b91506115328285611345565b6020820191506115428284611345565b6020820191508190509392505050565b60006020820190506115676000830184611327565b92915050565b60006020820190506115826000830184611336565b92915050565b600060c08201905061159d6000830189611336565b6115aa6020830188611318565b6115b76040830187611318565b6115c460608301866114e6565b6115d160808301856114e6565b6115de60a08301846114e6565b979650505050505050565b600060a0820190506115fe6000830188611336565b61160b6020830187611336565b6116186040830186611336565b61162560608301856114e6565b6116326080830184611318565b9695505050505050565b60006080820190506116516000830187611336565b61165e60208301866114f5565b61166b6040830185611336565b6116786060830184611336565b95945050505050565b6000602082019050818103600083015261169b81846113db565b905092915050565b600060208201905081810360008301526116bc81611414565b9050919050565b600060208201905081810360008301526116dc8161145a565b9050919050565b600060208201905081810360008301526116fc8161147d565b9050919050565b6000602082019050818103600083015261171c816114a0565b9050919050565b6000602082019050818103600083015261173c816114c3565b9050919050565b600060208201905061175860008301846114e6565b92915050565b600060208201905061177360008301846114f5565b92915050565b6000611783611794565b905061178f8282611973565b919050565b6000604051905090565b600067ffffffffffffffff8211156117b9576117b8611a55565b5b6117c282611ac7565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000611821826118e8565b915061182c836118e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611861576118606119f7565b5b828201905092915050565b6000611877826118e8565b9150611882836118e8565b925082821015611895576118946119f7565b5b828203905092915050565b60006118ab826118c8565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561192c578082015181840152602081019050611911565b8381111561193b576000848401525b50505050565b6000600282049050600182168061195957607f821691505b6020821081141561196d5761196c611a26565b5b50919050565b61197c82611ac7565b810181811067ffffffffffffffff8211171561199b5761199a611a55565b5b80604052505050565b60006119af826118e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119e2576119e16119f7565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f414c52454144595f494e495449414c495a454400000000000000000000000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a207375627472616374696f6e20756e646572666c6f7700000000600082015250565b7f45524332303a206164646974696f6e206f766572666c6f770000000000000000600082015250565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b611bd7816118a0565b8114611be257600080fd5b50565b611bee816118be565b8114611bf957600080fd5b50565b611c05816118e8565b8114611c1057600080fd5b50565b611c1c816118f2565b8114611c2757600080fd5b5056fea2646970667358221220ee7d0358f6dc54d9a0daa9ec1987cc49290bece08d5b0890a343184933a9ba8f64736f6c63430008070033"; - -type MockERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class MockERC20__factory extends ContractFactory { - constructor(...args: MockERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockERC20 { - return super.attach(address) as MockERC20; - } - override connect(signer: Signer): MockERC20__factory { - return super.connect(signer) as MockERC20__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockERC20Interface { - return new utils.Interface(_abi) as MockERC20Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): MockERC20 { - return new Contract(address, _abi, signerOrProvider) as MockERC20; - } -} diff --git a/v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts b/v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts deleted file mode 100644 index 8c286383..00000000 --- a/v1/typechain-types/factories/forge-std/mocks/MockERC721__factory.ts +++ /dev/null @@ -1,411 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - MockERC721, - MockERC721Interface, -} from "../../../forge-std/mocks/MockERC721"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_operator", - type: "address", - }, - { - indexed: false, - internalType: "bool", - name: "_approved", - type: "bool", - }, - ], - name: "ApprovalForAll", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "_to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "_tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string", - }, - { - internalType: "string", - name: "symbol_", - type: "string", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - { - internalType: "bool", - name: "approved", - type: "bool", - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "id", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "payable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b50611e69806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb465146102a9578063b88d4fde146102d2578063c87b56dd146102ee578063e985e9c51461032b576100dd565b80636352211e1461020457806370a082311461024157806395d89b411461027e576100dd565b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd146101a357806342842e0e146101bf5780634cd88b76146101db576100dd565b806301ffc9a7146100e257806306fdde031461011f578063081812fc1461014a575b600080fd5b3480156100ee57600080fd5b5061010960048036038101906101049190611519565b610368565b6040516101169190611880565b60405180910390f35b34801561012b57600080fd5b506101346103fa565b604051610141919061189b565b60405180910390f35b34801561015657600080fd5b50610171600480360381019061016c91906115eb565b61048c565b60405161017e91906117cf565b60405180910390f35b6101a1600480360381019061019c91906114d9565b6104c9565b005b6101bd60048036038101906101b891906113c3565b6106b2565b005b6101d960048036038101906101d491906113c3565b610abd565b005b3480156101e757600080fd5b5061020260048036038101906101fd9190611573565b610bf3565b005b34801561021057600080fd5b5061022b600480360381019061022691906115eb565b610c90565b60405161023891906117cf565b60405180910390f35b34801561024d57600080fd5b5061026860048036038101906102639190611356565b610d3c565b604051610275919061199d565b60405180910390f35b34801561028a57600080fd5b50610293610df4565b6040516102a0919061189b565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190611499565b610e86565b005b6102ec60048036038101906102e79190611416565b610f83565b005b3480156102fa57600080fd5b50610315600480360381019061031091906115eb565b6110bc565b604051610322919061189b565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190611383565b6110c3565b60405161035f9190611880565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103c357506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f35750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606000805461040990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461043590611b57565b80156104825780601f1061045757610100808354040283529160200191610482565b820191906000526020600020905b81548152906001019060200180831161046557829003601f168201915b5050505050905090565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105c15750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f79061193d565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a9061197d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba906118dd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108835750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806108ec57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61092b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109229061193d565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061097b90611b2d565b9190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906109d090611bba565b9190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610ac88383836106b2565b610ad182611157565b1580610baf575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610b3c93929190611836565b602060405180830381600087803b158015610b5657600080fd5b505af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611546565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be59061191d565b60405180910390fd5b505050565b600660009054906101000a900460ff1615610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a906118bd565b60405180910390fd5b8160009080519060200190610c5992919061116a565b508060019080519060200190610c7092919061116a565b506001600660006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e9061195d565b60405180910390fd5b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da4906118fd565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e0390611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2f90611b57565b8015610e7c5780601f10610e5157610100808354040283529160200191610e7c565b820191906000526020600020905b815481529060010190602001808311610e5f57829003601f168201915b5050505050905090565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f779190611880565b60405180910390a35050565b610f8e8484846106b2565b610f9783611157565b1580611077575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b815260040161100494939291906117ea565b602060405180830381600087803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110569190611546565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad9061191d565b60405180910390fd5b50505050565b6060919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080823b905060008111915050919050565b82805461117690611b57565b90600052602060002090601f01602090048101928261119857600085556111df565b82601f106111b157805160ff19168380011785556111df565b828001600101855582156111df579182015b828111156111de5782518255916020019190600101906111c3565b5b5090506111ec91906111f0565b5090565b5b808211156112095760008160009055506001016111f1565b5090565b600061122061121b846119dd565b6119b8565b90508281526020810184848401111561123c5761123b611c95565b5b611247848285611aeb565b509392505050565b600061126261125d84611a0e565b6119b8565b90508281526020810184848401111561127e5761127d611c95565b5b611289848285611aeb565b509392505050565b6000813590506112a081611dd7565b92915050565b6000813590506112b581611dee565b92915050565b6000813590506112ca81611e05565b92915050565b6000815190506112df81611e05565b92915050565b600082601f8301126112fa576112f9611c90565b5b813561130a84826020860161120d565b91505092915050565b600082601f83011261132857611327611c90565b5b813561133884826020860161124f565b91505092915050565b60008135905061135081611e1c565b92915050565b60006020828403121561136c5761136b611c9f565b5b600061137a84828501611291565b91505092915050565b6000806040838503121561139a57611399611c9f565b5b60006113a885828601611291565b92505060206113b985828601611291565b9150509250929050565b6000806000606084860312156113dc576113db611c9f565b5b60006113ea86828701611291565b93505060206113fb86828701611291565b925050604061140c86828701611341565b9150509250925092565b600080600080608085870312156114305761142f611c9f565b5b600061143e87828801611291565b945050602061144f87828801611291565b935050604061146087828801611341565b925050606085013567ffffffffffffffff81111561148157611480611c9a565b5b61148d878288016112e5565b91505092959194509250565b600080604083850312156114b0576114af611c9f565b5b60006114be85828601611291565b92505060206114cf858286016112a6565b9150509250929050565b600080604083850312156114f0576114ef611c9f565b5b60006114fe85828601611291565b925050602061150f85828601611341565b9150509250929050565b60006020828403121561152f5761152e611c9f565b5b600061153d848285016112bb565b91505092915050565b60006020828403121561155c5761155b611c9f565b5b600061156a848285016112d0565b91505092915050565b6000806040838503121561158a57611589611c9f565b5b600083013567ffffffffffffffff8111156115a8576115a7611c9a565b5b6115b485828601611313565b925050602083013567ffffffffffffffff8111156115d5576115d4611c9a565b5b6115e185828601611313565b9150509250929050565b60006020828403121561160157611600611c9f565b5b600061160f84828501611341565b91505092915050565b61162181611a77565b82525050565b61163081611a89565b82525050565b600061164182611a3f565b61164b8185611a55565b935061165b818560208601611afa565b61166481611ca4565b840191505092915050565b600061167a82611a4a565b6116848185611a66565b9350611694818560208601611afa565b61169d81611ca4565b840191505092915050565b60006116b5601383611a66565b91506116c082611cb5565b602082019050919050565b60006116d8601183611a66565b91506116e382611cde565b602082019050919050565b60006116fb600c83611a66565b915061170682611d07565b602082019050919050565b600061171e601083611a66565b915061172982611d30565b602082019050919050565b6000611741600083611a55565b915061174c82611d59565b600082019050919050565b6000611764600e83611a66565b915061176f82611d5c565b602082019050919050565b6000611787600a83611a66565b915061179282611d85565b602082019050919050565b60006117aa600a83611a66565b91506117b582611dae565b602082019050919050565b6117c981611ae1565b82525050565b60006020820190506117e46000830184611618565b92915050565b60006080820190506117ff6000830187611618565b61180c6020830186611618565b61181960408301856117c0565b818103606083015261182b8184611636565b905095945050505050565b600060808201905061184b6000830186611618565b6118586020830185611618565b61186560408301846117c0565b818103606083015261187681611734565b9050949350505050565b60006020820190506118956000830184611627565b92915050565b600060208201905081810360008301526118b5818461166f565b905092915050565b600060208201905081810360008301526118d6816116a8565b9050919050565b600060208201905081810360008301526118f6816116cb565b9050919050565b60006020820190508181036000830152611916816116ee565b9050919050565b6000602082019050818103600083015261193681611711565b9050919050565b6000602082019050818103600083015261195681611757565b9050919050565b600060208201905081810360008301526119768161177a565b9050919050565b600060208201905081810360008301526119968161179d565b9050919050565b60006020820190506119b260008301846117c0565b92915050565b60006119c26119d3565b90506119ce8282611b89565b919050565b6000604051905090565b600067ffffffffffffffff8211156119f8576119f7611c61565b5b611a0182611ca4565b9050602081019050919050565b600067ffffffffffffffff821115611a2957611a28611c61565b5b611a3282611ca4565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611a8282611ac1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611b18578082015181840152602081019050611afd565b83811115611b27576000848401525b50505050565b6000611b3882611ae1565b91506000821415611b4c57611b4b611c03565b5b600182039050919050565b60006002820490506001821680611b6f57607f821691505b60208210811415611b8357611b82611c32565b5b50919050565b611b9282611ca4565b810181811067ffffffffffffffff82111715611bb157611bb0611c61565b5b80604052505050565b6000611bc582611ae1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611bf857611bf7611c03565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f414c52454144595f494e495449414c495a454400000000000000000000000000600082015250565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b611de081611a77565b8114611deb57600080fd5b50565b611df781611a89565b8114611e0257600080fd5b50565b611e0e81611a95565b8114611e1957600080fd5b50565b611e2581611ae1565b8114611e3057600080fd5b5056fea264697066735822122096b381bcc1d3bc0c5ed578328f1d7697016e32ad0e05efb995b62d3457df066664736f6c63430008070033"; - -type MockERC721ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockERC721ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class MockERC721__factory extends ContractFactory { - constructor(...args: MockERC721ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): MockERC721 { - return super.attach(address) as MockERC721; - } - override connect(signer: Signer): MockERC721__factory { - return super.connect(signer) as MockERC721__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockERC721Interface { - return new utils.Interface(_abi) as MockERC721Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): MockERC721 { - return new Contract(address, _abi, signerOrProvider) as MockERC721; - } -} diff --git a/v1/typechain-types/factories/forge-std/mocks/index.ts b/v1/typechain-types/factories/forge-std/mocks/index.ts deleted file mode 100644 index 81493a9e..00000000 --- a/v1/typechain-types/factories/forge-std/mocks/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { MockERC20__factory } from "./MockERC20__factory"; -export { MockERC721__factory } from "./MockERC721__factory"; diff --git a/v1/typechain-types/forge-std/StdAssertions.ts b/v1/typechain-types/forge-std/StdAssertions.ts deleted file mode 100644 index faa5b50a..00000000 --- a/v1/typechain-types/forge-std/StdAssertions.ts +++ /dev/null @@ -1,457 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../common"; - -export interface StdAssertionsInterface extends utils.Interface { - functions: { - "failed()": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "failed"): FunctionFragment; - - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - - events: { - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface StdAssertions extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: StdAssertionsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - failed(overrides?: CallOverrides): Promise<[boolean]>; - }; - - failed(overrides?: CallOverrides): Promise; - - callStatic: { - failed(overrides?: CallOverrides): Promise; - }; - - filters: { - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - failed(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - failed(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/StdError.sol/StdError.ts b/v1/typechain-types/forge-std/StdError.sol/StdError.ts deleted file mode 100644 index 1a90c16e..00000000 --- a/v1/typechain-types/forge-std/StdError.sol/StdError.ts +++ /dev/null @@ -1,249 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface StdErrorInterface extends utils.Interface { - functions: { - "arithmeticError()": FunctionFragment; - "assertionError()": FunctionFragment; - "divisionError()": FunctionFragment; - "encodeStorageError()": FunctionFragment; - "enumConversionError()": FunctionFragment; - "indexOOBError()": FunctionFragment; - "memOverflowError()": FunctionFragment; - "popError()": FunctionFragment; - "zeroVarError()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "arithmeticError" - | "assertionError" - | "divisionError" - | "encodeStorageError" - | "enumConversionError" - | "indexOOBError" - | "memOverflowError" - | "popError" - | "zeroVarError" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "arithmeticError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "assertionError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "divisionError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "encodeStorageError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "enumConversionError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "indexOOBError", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "memOverflowError", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "popError", values?: undefined): string; - encodeFunctionData( - functionFragment: "zeroVarError", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "arithmeticError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertionError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "divisionError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "encodeStorageError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "enumConversionError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "indexOOBError", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "memOverflowError", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "popError", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "zeroVarError", - data: BytesLike - ): Result; - - events: {}; -} - -export interface StdError extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: StdErrorInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - arithmeticError(overrides?: CallOverrides): Promise<[string]>; - - assertionError(overrides?: CallOverrides): Promise<[string]>; - - divisionError(overrides?: CallOverrides): Promise<[string]>; - - encodeStorageError(overrides?: CallOverrides): Promise<[string]>; - - enumConversionError(overrides?: CallOverrides): Promise<[string]>; - - indexOOBError(overrides?: CallOverrides): Promise<[string]>; - - memOverflowError(overrides?: CallOverrides): Promise<[string]>; - - popError(overrides?: CallOverrides): Promise<[string]>; - - zeroVarError(overrides?: CallOverrides): Promise<[string]>; - }; - - arithmeticError(overrides?: CallOverrides): Promise; - - assertionError(overrides?: CallOverrides): Promise; - - divisionError(overrides?: CallOverrides): Promise; - - encodeStorageError(overrides?: CallOverrides): Promise; - - enumConversionError(overrides?: CallOverrides): Promise; - - indexOOBError(overrides?: CallOverrides): Promise; - - memOverflowError(overrides?: CallOverrides): Promise; - - popError(overrides?: CallOverrides): Promise; - - zeroVarError(overrides?: CallOverrides): Promise; - - callStatic: { - arithmeticError(overrides?: CallOverrides): Promise; - - assertionError(overrides?: CallOverrides): Promise; - - divisionError(overrides?: CallOverrides): Promise; - - encodeStorageError(overrides?: CallOverrides): Promise; - - enumConversionError(overrides?: CallOverrides): Promise; - - indexOOBError(overrides?: CallOverrides): Promise; - - memOverflowError(overrides?: CallOverrides): Promise; - - popError(overrides?: CallOverrides): Promise; - - zeroVarError(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - arithmeticError(overrides?: CallOverrides): Promise; - - assertionError(overrides?: CallOverrides): Promise; - - divisionError(overrides?: CallOverrides): Promise; - - encodeStorageError(overrides?: CallOverrides): Promise; - - enumConversionError(overrides?: CallOverrides): Promise; - - indexOOBError(overrides?: CallOverrides): Promise; - - memOverflowError(overrides?: CallOverrides): Promise; - - popError(overrides?: CallOverrides): Promise; - - zeroVarError(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - arithmeticError(overrides?: CallOverrides): Promise; - - assertionError(overrides?: CallOverrides): Promise; - - divisionError(overrides?: CallOverrides): Promise; - - encodeStorageError( - overrides?: CallOverrides - ): Promise; - - enumConversionError( - overrides?: CallOverrides - ): Promise; - - indexOOBError(overrides?: CallOverrides): Promise; - - memOverflowError(overrides?: CallOverrides): Promise; - - popError(overrides?: CallOverrides): Promise; - - zeroVarError(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/StdError.sol/index.ts b/v1/typechain-types/forge-std/StdError.sol/index.ts deleted file mode 100644 index 011e98fa..00000000 --- a/v1/typechain-types/forge-std/StdError.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { StdError } from "./StdError"; diff --git a/v1/typechain-types/forge-std/StdInvariant.ts b/v1/typechain-types/forge-std/StdInvariant.ts deleted file mode 100644 index f104b23c..00000000 --- a/v1/typechain-types/forge-std/StdInvariant.ts +++ /dev/null @@ -1,357 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface StdInvariantInterface extends utils.Interface { - functions: { - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - - events: {}; -} - -export interface StdInvariant extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: StdInvariantInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - }; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - callStatic: { - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts b/v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts deleted file mode 100644 index d4c1eb04..00000000 --- a/v1/typechain-types/forge-std/StdStorage.sol/StdStorageSafe.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, BigNumber, Signer, utils } from "ethers"; -import type { EventFragment } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface StdStorageSafeInterface extends utils.Interface { - functions: {}; - - events: { - "SlotFound(address,bytes4,bytes32,uint256)": EventFragment; - "WARNING_UninitedSlot(address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "SlotFound"): EventFragment; - getEvent(nameOrSignatureOrTopic: "WARNING_UninitedSlot"): EventFragment; -} - -export interface SlotFoundEventObject { - who: string; - fsig: string; - keysHash: string; - slot: BigNumber; -} -export type SlotFoundEvent = TypedEvent< - [string, string, string, BigNumber], - SlotFoundEventObject ->; - -export type SlotFoundEventFilter = TypedEventFilter; - -export interface WARNING_UninitedSlotEventObject { - who: string; - slot: BigNumber; -} -export type WARNING_UninitedSlotEvent = TypedEvent< - [string, BigNumber], - WARNING_UninitedSlotEventObject ->; - -export type WARNING_UninitedSlotEventFilter = - TypedEventFilter; - -export interface StdStorageSafe extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: StdStorageSafeInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "SlotFound(address,bytes4,bytes32,uint256)"( - who?: null, - fsig?: null, - keysHash?: null, - slot?: null - ): SlotFoundEventFilter; - SlotFound( - who?: null, - fsig?: null, - keysHash?: null, - slot?: null - ): SlotFoundEventFilter; - - "WARNING_UninitedSlot(address,uint256)"( - who?: null, - slot?: null - ): WARNING_UninitedSlotEventFilter; - WARNING_UninitedSlot( - who?: null, - slot?: null - ): WARNING_UninitedSlotEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/forge-std/StdStorage.sol/index.ts b/v1/typechain-types/forge-std/StdStorage.sol/index.ts deleted file mode 100644 index 8a3fb579..00000000 --- a/v1/typechain-types/forge-std/StdStorage.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { StdStorageSafe } from "./StdStorageSafe"; diff --git a/v1/typechain-types/forge-std/Test.ts b/v1/typechain-types/forge-std/Test.ts deleted file mode 100644 index b1a7e754..00000000 --- a/v1/typechain-types/forge-std/Test.ts +++ /dev/null @@ -1,760 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../common"; - -export declare namespace StdInvariant { - export type FuzzSelectorStruct = { - addr: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzSelectorStructOutput = [string, string[]] & { - addr: string; - selectors: string[]; - }; - - export type FuzzArtifactSelectorStruct = { - artifact: PromiseOrValue; - selectors: PromiseOrValue[]; - }; - - export type FuzzArtifactSelectorStructOutput = [string, string[]] & { - artifact: string; - selectors: string[]; - }; - - export type FuzzInterfaceStruct = { - addr: PromiseOrValue; - artifacts: PromiseOrValue[]; - }; - - export type FuzzInterfaceStructOutput = [string, string[]] & { - addr: string; - artifacts: string[]; - }; -} - -export interface TestInterface extends utils.Interface { - functions: { - "IS_TEST()": FunctionFragment; - "excludeArtifacts()": FunctionFragment; - "excludeContracts()": FunctionFragment; - "excludeSelectors()": FunctionFragment; - "excludeSenders()": FunctionFragment; - "failed()": FunctionFragment; - "targetArtifactSelectors()": FunctionFragment; - "targetArtifacts()": FunctionFragment; - "targetContracts()": FunctionFragment; - "targetInterfaces()": FunctionFragment; - "targetSelectors()": FunctionFragment; - "targetSenders()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "IS_TEST" - | "excludeArtifacts" - | "excludeContracts" - | "excludeSelectors" - | "excludeSenders" - | "failed" - | "targetArtifactSelectors" - | "targetArtifacts" - | "targetContracts" - | "targetInterfaces" - | "targetSelectors" - | "targetSenders" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; - encodeFunctionData( - functionFragment: "excludeArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "excludeSenders", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "failed", values?: undefined): string; - encodeFunctionData( - functionFragment: "targetArtifactSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetArtifacts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetContracts", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetInterfaces", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSelectors", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "targetSenders", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "excludeArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "excludeSenders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "targetArtifactSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetArtifacts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetContracts", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSelectors", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "targetSenders", - data: BytesLike - ): Result; - - events: { - "log(string)": EventFragment; - "log_address(address)": EventFragment; - "log_array(uint256[])": EventFragment; - "log_array(int256[])": EventFragment; - "log_array(address[])": EventFragment; - "log_bytes(bytes)": EventFragment; - "log_bytes32(bytes32)": EventFragment; - "log_int(int256)": EventFragment; - "log_named_address(string,address)": EventFragment; - "log_named_array(string,uint256[])": EventFragment; - "log_named_array(string,int256[])": EventFragment; - "log_named_array(string,address[])": EventFragment; - "log_named_bytes(string,bytes)": EventFragment; - "log_named_bytes32(string,bytes32)": EventFragment; - "log_named_decimal_int(string,int256,uint256)": EventFragment; - "log_named_decimal_uint(string,uint256,uint256)": EventFragment; - "log_named_int(string,int256)": EventFragment; - "log_named_string(string,string)": EventFragment; - "log_named_uint(string,uint256)": EventFragment; - "log_string(string)": EventFragment; - "log_uint(uint256)": EventFragment; - "logs(bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "log"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_address"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(uint256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(int256[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_array(address[])"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_address"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,uint256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,int256[])" - ): EventFragment; - getEvent( - nameOrSignatureOrTopic: "log_named_array(string,address[])" - ): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_bytes32"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_decimal_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_int"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_named_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_string"): EventFragment; - getEvent(nameOrSignatureOrTopic: "log_uint"): EventFragment; - getEvent(nameOrSignatureOrTopic: "logs"): EventFragment; -} - -export interface logEventObject { - arg0: string; -} -export type logEvent = TypedEvent<[string], logEventObject>; - -export type logEventFilter = TypedEventFilter; - -export interface log_addressEventObject { - arg0: string; -} -export type log_addressEvent = TypedEvent<[string], log_addressEventObject>; - -export type log_addressEventFilter = TypedEventFilter; - -export interface log_array_uint256_array_EventObject { - val: BigNumber[]; -} -export type log_array_uint256_array_Event = TypedEvent< - [BigNumber[]], - log_array_uint256_array_EventObject ->; - -export type log_array_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_array_int256_array_EventObject { - val: BigNumber[]; -} -export type log_array_int256_array_Event = TypedEvent< - [BigNumber[]], - log_array_int256_array_EventObject ->; - -export type log_array_int256_array_EventFilter = - TypedEventFilter; - -export interface log_array_address_array_EventObject { - val: string[]; -} -export type log_array_address_array_Event = TypedEvent< - [string[]], - log_array_address_array_EventObject ->; - -export type log_array_address_array_EventFilter = - TypedEventFilter; - -export interface log_bytesEventObject { - arg0: string; -} -export type log_bytesEvent = TypedEvent<[string], log_bytesEventObject>; - -export type log_bytesEventFilter = TypedEventFilter; - -export interface log_bytes32EventObject { - arg0: string; -} -export type log_bytes32Event = TypedEvent<[string], log_bytes32EventObject>; - -export type log_bytes32EventFilter = TypedEventFilter; - -export interface log_intEventObject { - arg0: BigNumber; -} -export type log_intEvent = TypedEvent<[BigNumber], log_intEventObject>; - -export type log_intEventFilter = TypedEventFilter; - -export interface log_named_addressEventObject { - key: string; - val: string; -} -export type log_named_addressEvent = TypedEvent< - [string, string], - log_named_addressEventObject ->; - -export type log_named_addressEventFilter = - TypedEventFilter; - -export interface log_named_array_string_uint256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_uint256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_uint256_array_EventObject ->; - -export type log_named_array_string_uint256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_int256_array_EventObject { - key: string; - val: BigNumber[]; -} -export type log_named_array_string_int256_array_Event = TypedEvent< - [string, BigNumber[]], - log_named_array_string_int256_array_EventObject ->; - -export type log_named_array_string_int256_array_EventFilter = - TypedEventFilter; - -export interface log_named_array_string_address_array_EventObject { - key: string; - val: string[]; -} -export type log_named_array_string_address_array_Event = TypedEvent< - [string, string[]], - log_named_array_string_address_array_EventObject ->; - -export type log_named_array_string_address_array_EventFilter = - TypedEventFilter; - -export interface log_named_bytesEventObject { - key: string; - val: string; -} -export type log_named_bytesEvent = TypedEvent< - [string, string], - log_named_bytesEventObject ->; - -export type log_named_bytesEventFilter = TypedEventFilter; - -export interface log_named_bytes32EventObject { - key: string; - val: string; -} -export type log_named_bytes32Event = TypedEvent< - [string, string], - log_named_bytes32EventObject ->; - -export type log_named_bytes32EventFilter = - TypedEventFilter; - -export interface log_named_decimal_intEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_intEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_intEventObject ->; - -export type log_named_decimal_intEventFilter = - TypedEventFilter; - -export interface log_named_decimal_uintEventObject { - key: string; - val: BigNumber; - decimals: BigNumber; -} -export type log_named_decimal_uintEvent = TypedEvent< - [string, BigNumber, BigNumber], - log_named_decimal_uintEventObject ->; - -export type log_named_decimal_uintEventFilter = - TypedEventFilter; - -export interface log_named_intEventObject { - key: string; - val: BigNumber; -} -export type log_named_intEvent = TypedEvent< - [string, BigNumber], - log_named_intEventObject ->; - -export type log_named_intEventFilter = TypedEventFilter; - -export interface log_named_stringEventObject { - key: string; - val: string; -} -export type log_named_stringEvent = TypedEvent< - [string, string], - log_named_stringEventObject ->; - -export type log_named_stringEventFilter = - TypedEventFilter; - -export interface log_named_uintEventObject { - key: string; - val: BigNumber; -} -export type log_named_uintEvent = TypedEvent< - [string, BigNumber], - log_named_uintEventObject ->; - -export type log_named_uintEventFilter = TypedEventFilter; - -export interface log_stringEventObject { - arg0: string; -} -export type log_stringEvent = TypedEvent<[string], log_stringEventObject>; - -export type log_stringEventFilter = TypedEventFilter; - -export interface log_uintEventObject { - arg0: BigNumber; -} -export type log_uintEvent = TypedEvent<[BigNumber], log_uintEventObject>; - -export type log_uintEventFilter = TypedEventFilter; - -export interface logsEventObject { - arg0: string; -} -export type logsEvent = TypedEvent<[string], logsEventObject>; - -export type logsEventFilter = TypedEventFilter; - -export interface Test extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - IS_TEST(overrides?: CallOverrides): Promise<[boolean]>; - - excludeArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedArtifacts_: string[] }>; - - excludeContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedContracts_: string[] }>; - - excludeSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - excludedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - excludeSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { excludedSenders_: string[] }>; - - failed(overrides?: CallOverrides): Promise<[boolean]>; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzArtifactSelectorStructOutput[]] & { - targetedArtifactSelectors_: StdInvariant.FuzzArtifactSelectorStructOutput[]; - } - >; - - targetArtifacts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedArtifacts_: string[] }>; - - targetContracts( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedContracts_: string[] }>; - - targetInterfaces( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzInterfaceStructOutput[]] & { - targetedInterfaces_: StdInvariant.FuzzInterfaceStructOutput[]; - } - >; - - targetSelectors( - overrides?: CallOverrides - ): Promise< - [StdInvariant.FuzzSelectorStructOutput[]] & { - targetedSelectors_: StdInvariant.FuzzSelectorStructOutput[]; - } - >; - - targetSenders( - overrides?: CallOverrides - ): Promise<[string[]] & { targetedSenders_: string[] }>; - }; - - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - - callStatic: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors( - overrides?: CallOverrides - ): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces( - overrides?: CallOverrides - ): Promise; - - targetSelectors( - overrides?: CallOverrides - ): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; - - filters: { - "log(string)"(arg0?: null): logEventFilter; - log(arg0?: null): logEventFilter; - - "log_address(address)"(arg0?: null): log_addressEventFilter; - log_address(arg0?: null): log_addressEventFilter; - - "log_array(uint256[])"(val?: null): log_array_uint256_array_EventFilter; - "log_array(int256[])"(val?: null): log_array_int256_array_EventFilter; - "log_array(address[])"(val?: null): log_array_address_array_EventFilter; - - "log_bytes(bytes)"(arg0?: null): log_bytesEventFilter; - log_bytes(arg0?: null): log_bytesEventFilter; - - "log_bytes32(bytes32)"(arg0?: null): log_bytes32EventFilter; - log_bytes32(arg0?: null): log_bytes32EventFilter; - - "log_int(int256)"(arg0?: null): log_intEventFilter; - log_int(arg0?: null): log_intEventFilter; - - "log_named_address(string,address)"( - key?: null, - val?: null - ): log_named_addressEventFilter; - log_named_address(key?: null, val?: null): log_named_addressEventFilter; - - "log_named_array(string,uint256[])"( - key?: null, - val?: null - ): log_named_array_string_uint256_array_EventFilter; - "log_named_array(string,int256[])"( - key?: null, - val?: null - ): log_named_array_string_int256_array_EventFilter; - "log_named_array(string,address[])"( - key?: null, - val?: null - ): log_named_array_string_address_array_EventFilter; - - "log_named_bytes(string,bytes)"( - key?: null, - val?: null - ): log_named_bytesEventFilter; - log_named_bytes(key?: null, val?: null): log_named_bytesEventFilter; - - "log_named_bytes32(string,bytes32)"( - key?: null, - val?: null - ): log_named_bytes32EventFilter; - log_named_bytes32(key?: null, val?: null): log_named_bytes32EventFilter; - - "log_named_decimal_int(string,int256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - log_named_decimal_int( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_intEventFilter; - - "log_named_decimal_uint(string,uint256,uint256)"( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - log_named_decimal_uint( - key?: null, - val?: null, - decimals?: null - ): log_named_decimal_uintEventFilter; - - "log_named_int(string,int256)"( - key?: null, - val?: null - ): log_named_intEventFilter; - log_named_int(key?: null, val?: null): log_named_intEventFilter; - - "log_named_string(string,string)"( - key?: null, - val?: null - ): log_named_stringEventFilter; - log_named_string(key?: null, val?: null): log_named_stringEventFilter; - - "log_named_uint(string,uint256)"( - key?: null, - val?: null - ): log_named_uintEventFilter; - log_named_uint(key?: null, val?: null): log_named_uintEventFilter; - - "log_string(string)"(arg0?: null): log_stringEventFilter; - log_string(arg0?: null): log_stringEventFilter; - - "log_uint(uint256)"(arg0?: null): log_uintEventFilter; - log_uint(arg0?: null): log_uintEventFilter; - - "logs(bytes)"(arg0?: null): logsEventFilter; - logs(arg0?: null): logsEventFilter; - }; - - estimateGas: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - targetArtifactSelectors(overrides?: CallOverrides): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - IS_TEST(overrides?: CallOverrides): Promise; - - excludeArtifacts(overrides?: CallOverrides): Promise; - - excludeContracts(overrides?: CallOverrides): Promise; - - excludeSelectors(overrides?: CallOverrides): Promise; - - excludeSenders(overrides?: CallOverrides): Promise; - - failed(overrides?: CallOverrides): Promise; - - targetArtifactSelectors( - overrides?: CallOverrides - ): Promise; - - targetArtifacts(overrides?: CallOverrides): Promise; - - targetContracts(overrides?: CallOverrides): Promise; - - targetInterfaces(overrides?: CallOverrides): Promise; - - targetSelectors(overrides?: CallOverrides): Promise; - - targetSenders(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/Vm.sol/Vm.ts b/v1/typechain-types/forge-std/Vm.sol/Vm.ts deleted file mode 100644 index a7b56645..00000000 --- a/v1/typechain-types/forge-std/Vm.sol/Vm.ts +++ /dev/null @@ -1,16207 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace VmSafe { - export type WalletStruct = { - addr: PromiseOrValue; - publicKeyX: PromiseOrValue; - publicKeyY: PromiseOrValue; - privateKey: PromiseOrValue; - }; - - export type WalletStructOutput = [string, BigNumber, BigNumber, BigNumber] & { - addr: string; - publicKeyX: BigNumber; - publicKeyY: BigNumber; - privateKey: BigNumber; - }; - - export type EthGetLogsStruct = { - emitter: PromiseOrValue; - topics: PromiseOrValue[]; - data: PromiseOrValue; - blockHash: PromiseOrValue; - blockNumber: PromiseOrValue; - transactionHash: PromiseOrValue; - transactionIndex: PromiseOrValue; - logIndex: PromiseOrValue; - removed: PromiseOrValue; - }; - - export type EthGetLogsStructOutput = [ - string, - string[], - string, - string, - BigNumber, - string, - BigNumber, - BigNumber, - boolean - ] & { - emitter: string; - topics: string[]; - data: string; - blockHash: string; - blockNumber: BigNumber; - transactionHash: string; - transactionIndex: BigNumber; - logIndex: BigNumber; - removed: boolean; - }; - - export type FsMetadataStruct = { - isDir: PromiseOrValue; - isSymlink: PromiseOrValue; - length: PromiseOrValue; - readOnly: PromiseOrValue; - modified: PromiseOrValue; - accessed: PromiseOrValue; - created: PromiseOrValue; - }; - - export type FsMetadataStructOutput = [ - boolean, - boolean, - BigNumber, - boolean, - BigNumber, - BigNumber, - BigNumber - ] & { - isDir: boolean; - isSymlink: boolean; - length: BigNumber; - readOnly: boolean; - modified: BigNumber; - accessed: BigNumber; - created: BigNumber; - }; - - export type LogStruct = { - topics: PromiseOrValue[]; - data: PromiseOrValue; - emitter: PromiseOrValue; - }; - - export type LogStructOutput = [string[], string, string] & { - topics: string[]; - data: string; - emitter: string; - }; - - export type GasStruct = { - gasLimit: PromiseOrValue; - gasTotalUsed: PromiseOrValue; - gasMemoryUsed: PromiseOrValue; - gasRefunded: PromiseOrValue; - gasRemaining: PromiseOrValue; - }; - - export type GasStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber - ] & { - gasLimit: BigNumber; - gasTotalUsed: BigNumber; - gasMemoryUsed: BigNumber; - gasRefunded: BigNumber; - gasRemaining: BigNumber; - }; - - export type DirEntryStruct = { - errorMessage: PromiseOrValue; - path: PromiseOrValue; - depth: PromiseOrValue; - isDir: PromiseOrValue; - isSymlink: PromiseOrValue; - }; - - export type DirEntryStructOutput = [ - string, - string, - BigNumber, - boolean, - boolean - ] & { - errorMessage: string; - path: string; - depth: BigNumber; - isDir: boolean; - isSymlink: boolean; - }; - - export type RpcStruct = { - key: PromiseOrValue; - url: PromiseOrValue; - }; - - export type RpcStructOutput = [string, string] & { key: string; url: string }; - - export type ChainInfoStruct = { - forkId: PromiseOrValue; - chainId: PromiseOrValue; - }; - - export type ChainInfoStructOutput = [BigNumber, BigNumber] & { - forkId: BigNumber; - chainId: BigNumber; - }; - - export type StorageAccessStruct = { - account: PromiseOrValue; - slot: PromiseOrValue; - isWrite: PromiseOrValue; - previousValue: PromiseOrValue; - newValue: PromiseOrValue; - reverted: PromiseOrValue; - }; - - export type StorageAccessStructOutput = [ - string, - string, - boolean, - string, - string, - boolean - ] & { - account: string; - slot: string; - isWrite: boolean; - previousValue: string; - newValue: string; - reverted: boolean; - }; - - export type AccountAccessStruct = { - chainInfo: VmSafe.ChainInfoStruct; - kind: PromiseOrValue; - account: PromiseOrValue; - accessor: PromiseOrValue; - initialized: PromiseOrValue; - oldBalance: PromiseOrValue; - newBalance: PromiseOrValue; - deployedCode: PromiseOrValue; - value: PromiseOrValue; - data: PromiseOrValue; - reverted: PromiseOrValue; - storageAccesses: VmSafe.StorageAccessStruct[]; - depth: PromiseOrValue; - }; - - export type AccountAccessStructOutput = [ - VmSafe.ChainInfoStructOutput, - number, - string, - string, - boolean, - BigNumber, - BigNumber, - string, - BigNumber, - string, - boolean, - VmSafe.StorageAccessStructOutput[], - BigNumber - ] & { - chainInfo: VmSafe.ChainInfoStructOutput; - kind: number; - account: string; - accessor: string; - initialized: boolean; - oldBalance: BigNumber; - newBalance: BigNumber; - deployedCode: string; - value: BigNumber; - data: string; - reverted: boolean; - storageAccesses: VmSafe.StorageAccessStructOutput[]; - depth: BigNumber; - }; - - export type FfiResultStruct = { - exitCode: PromiseOrValue; - stdout: PromiseOrValue; - stderr: PromiseOrValue; - }; - - export type FfiResultStructOutput = [number, string, string] & { - exitCode: number; - stdout: string; - stderr: string; - }; -} - -export interface VmInterface extends utils.Interface { - functions: { - "accesses(address)": FunctionFragment; - "activeFork()": FunctionFragment; - "addr(uint256)": FunctionFragment; - "allowCheatcodes(address)": FunctionFragment; - "assertApproxEqAbs(uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbs(int256,int256,uint256)": FunctionFragment; - "assertApproxEqAbs(int256,int256,uint256,string)": FunctionFragment; - "assertApproxEqAbs(uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRel(uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRel(uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqRel(int256,int256,uint256,string)": FunctionFragment; - "assertApproxEqRel(int256,int256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)": FunctionFragment; - "assertEq(bytes32[],bytes32[])": FunctionFragment; - "assertEq(int256[],int256[],string)": FunctionFragment; - "assertEq(address,address,string)": FunctionFragment; - "assertEq(string,string,string)": FunctionFragment; - "assertEq(address[],address[])": FunctionFragment; - "assertEq(address[],address[],string)": FunctionFragment; - "assertEq(bool,bool,string)": FunctionFragment; - "assertEq(address,address)": FunctionFragment; - "assertEq(uint256[],uint256[],string)": FunctionFragment; - "assertEq(bool[],bool[])": FunctionFragment; - "assertEq(int256[],int256[])": FunctionFragment; - "assertEq(int256,int256,string)": FunctionFragment; - "assertEq(bytes32,bytes32)": FunctionFragment; - "assertEq(uint256,uint256,string)": FunctionFragment; - "assertEq(uint256[],uint256[])": FunctionFragment; - "assertEq(bytes,bytes)": FunctionFragment; - "assertEq(uint256,uint256)": FunctionFragment; - "assertEq(bytes32,bytes32,string)": FunctionFragment; - "assertEq(string[],string[])": FunctionFragment; - "assertEq(bytes32[],bytes32[],string)": FunctionFragment; - "assertEq(bytes,bytes,string)": FunctionFragment; - "assertEq(bool[],bool[],string)": FunctionFragment; - "assertEq(bytes[],bytes[])": FunctionFragment; - "assertEq(string[],string[],string)": FunctionFragment; - "assertEq(string,string)": FunctionFragment; - "assertEq(bytes[],bytes[],string)": FunctionFragment; - "assertEq(bool,bool)": FunctionFragment; - "assertEq(int256,int256)": FunctionFragment; - "assertEqDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertEqDecimal(int256,int256,uint256)": FunctionFragment; - "assertEqDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertEqDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertFalse(bool,string)": FunctionFragment; - "assertFalse(bool)": FunctionFragment; - "assertGe(int256,int256)": FunctionFragment; - "assertGe(int256,int256,string)": FunctionFragment; - "assertGe(uint256,uint256)": FunctionFragment; - "assertGe(uint256,uint256,string)": FunctionFragment; - "assertGeDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertGeDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertGeDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertGeDecimal(int256,int256,uint256)": FunctionFragment; - "assertGt(int256,int256)": FunctionFragment; - "assertGt(uint256,uint256,string)": FunctionFragment; - "assertGt(uint256,uint256)": FunctionFragment; - "assertGt(int256,int256,string)": FunctionFragment; - "assertGtDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertGtDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertGtDecimal(int256,int256,uint256)": FunctionFragment; - "assertGtDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLe(int256,int256,string)": FunctionFragment; - "assertLe(uint256,uint256)": FunctionFragment; - "assertLe(int256,int256)": FunctionFragment; - "assertLe(uint256,uint256,string)": FunctionFragment; - "assertLeDecimal(int256,int256,uint256)": FunctionFragment; - "assertLeDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertLeDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertLeDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLt(int256,int256)": FunctionFragment; - "assertLt(uint256,uint256,string)": FunctionFragment; - "assertLt(int256,int256,string)": FunctionFragment; - "assertLt(uint256,uint256)": FunctionFragment; - "assertLtDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLtDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertLtDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertLtDecimal(int256,int256,uint256)": FunctionFragment; - "assertNotEq(bytes32[],bytes32[])": FunctionFragment; - "assertNotEq(int256[],int256[])": FunctionFragment; - "assertNotEq(bool,bool,string)": FunctionFragment; - "assertNotEq(bytes[],bytes[],string)": FunctionFragment; - "assertNotEq(bool,bool)": FunctionFragment; - "assertNotEq(bool[],bool[])": FunctionFragment; - "assertNotEq(bytes,bytes)": FunctionFragment; - "assertNotEq(address[],address[])": FunctionFragment; - "assertNotEq(int256,int256,string)": FunctionFragment; - "assertNotEq(uint256[],uint256[])": FunctionFragment; - "assertNotEq(bool[],bool[],string)": FunctionFragment; - "assertNotEq(string,string)": FunctionFragment; - "assertNotEq(address[],address[],string)": FunctionFragment; - "assertNotEq(string,string,string)": FunctionFragment; - "assertNotEq(address,address,string)": FunctionFragment; - "assertNotEq(bytes32,bytes32)": FunctionFragment; - "assertNotEq(bytes,bytes,string)": FunctionFragment; - "assertNotEq(uint256,uint256,string)": FunctionFragment; - "assertNotEq(uint256[],uint256[],string)": FunctionFragment; - "assertNotEq(address,address)": FunctionFragment; - "assertNotEq(bytes32,bytes32,string)": FunctionFragment; - "assertNotEq(string[],string[],string)": FunctionFragment; - "assertNotEq(uint256,uint256)": FunctionFragment; - "assertNotEq(bytes32[],bytes32[],string)": FunctionFragment; - "assertNotEq(string[],string[])": FunctionFragment; - "assertNotEq(int256[],int256[],string)": FunctionFragment; - "assertNotEq(bytes[],bytes[])": FunctionFragment; - "assertNotEq(int256,int256)": FunctionFragment; - "assertNotEqDecimal(int256,int256,uint256)": FunctionFragment; - "assertNotEqDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertNotEqDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertNotEqDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertTrue(bool)": FunctionFragment; - "assertTrue(bool,string)": FunctionFragment; - "assume(bool)": FunctionFragment; - "blobBaseFee(uint256)": FunctionFragment; - "blobhashes(bytes32[])": FunctionFragment; - "breakpoint(string)": FunctionFragment; - "breakpoint(string,bool)": FunctionFragment; - "broadcast()": FunctionFragment; - "broadcast(address)": FunctionFragment; - "broadcast(uint256)": FunctionFragment; - "chainId(uint256)": FunctionFragment; - "clearMockedCalls()": FunctionFragment; - "closeFile(string)": FunctionFragment; - "coinbase(address)": FunctionFragment; - "computeCreate2Address(bytes32,bytes32)": FunctionFragment; - "computeCreate2Address(bytes32,bytes32,address)": FunctionFragment; - "computeCreateAddress(address,uint256)": FunctionFragment; - "copyFile(string,string)": FunctionFragment; - "createDir(string,bool)": FunctionFragment; - "createFork(string)": FunctionFragment; - "createFork(string,uint256)": FunctionFragment; - "createFork(string,bytes32)": FunctionFragment; - "createSelectFork(string,uint256)": FunctionFragment; - "createSelectFork(string,bytes32)": FunctionFragment; - "createSelectFork(string)": FunctionFragment; - "createWallet(string)": FunctionFragment; - "createWallet(uint256)": FunctionFragment; - "createWallet(uint256,string)": FunctionFragment; - "deal(address,uint256)": FunctionFragment; - "deleteSnapshot(uint256)": FunctionFragment; - "deleteSnapshots()": FunctionFragment; - "deriveKey(string,string,uint32,string)": FunctionFragment; - "deriveKey(string,uint32,string)": FunctionFragment; - "deriveKey(string,uint32)": FunctionFragment; - "deriveKey(string,string,uint32)": FunctionFragment; - "difficulty(uint256)": FunctionFragment; - "dumpState(string)": FunctionFragment; - "ensNamehash(string)": FunctionFragment; - "envAddress(string)": FunctionFragment; - "envAddress(string,string)": FunctionFragment; - "envBool(string)": FunctionFragment; - "envBool(string,string)": FunctionFragment; - "envBytes(string)": FunctionFragment; - "envBytes(string,string)": FunctionFragment; - "envBytes32(string,string)": FunctionFragment; - "envBytes32(string)": FunctionFragment; - "envExists(string)": FunctionFragment; - "envInt(string,string)": FunctionFragment; - "envInt(string)": FunctionFragment; - "envOr(string,string,bytes32[])": FunctionFragment; - "envOr(string,string,int256[])": FunctionFragment; - "envOr(string,bool)": FunctionFragment; - "envOr(string,address)": FunctionFragment; - "envOr(string,uint256)": FunctionFragment; - "envOr(string,string,bytes[])": FunctionFragment; - "envOr(string,string,uint256[])": FunctionFragment; - "envOr(string,string,string[])": FunctionFragment; - "envOr(string,bytes)": FunctionFragment; - "envOr(string,bytes32)": FunctionFragment; - "envOr(string,int256)": FunctionFragment; - "envOr(string,string,address[])": FunctionFragment; - "envOr(string,string)": FunctionFragment; - "envOr(string,string,bool[])": FunctionFragment; - "envString(string,string)": FunctionFragment; - "envString(string)": FunctionFragment; - "envUint(string)": FunctionFragment; - "envUint(string,string)": FunctionFragment; - "etch(address,bytes)": FunctionFragment; - "eth_getLogs(uint256,uint256,address,bytes32[])": FunctionFragment; - "exists(string)": FunctionFragment; - "expectCall(address,uint256,uint64,bytes)": FunctionFragment; - "expectCall(address,uint256,uint64,bytes,uint64)": FunctionFragment; - "expectCall(address,uint256,bytes,uint64)": FunctionFragment; - "expectCall(address,bytes)": FunctionFragment; - "expectCall(address,bytes,uint64)": FunctionFragment; - "expectCall(address,uint256,bytes)": FunctionFragment; - "expectCallMinGas(address,uint256,uint64,bytes)": FunctionFragment; - "expectCallMinGas(address,uint256,uint64,bytes,uint64)": FunctionFragment; - "expectEmit()": FunctionFragment; - "expectEmit(bool,bool,bool,bool)": FunctionFragment; - "expectEmit(bool,bool,bool,bool,address)": FunctionFragment; - "expectEmit(address)": FunctionFragment; - "expectRevert(bytes4)": FunctionFragment; - "expectRevert(bytes)": FunctionFragment; - "expectRevert()": FunctionFragment; - "expectSafeMemory(uint64,uint64)": FunctionFragment; - "expectSafeMemoryCall(uint64,uint64)": FunctionFragment; - "fee(uint256)": FunctionFragment; - "ffi(string[])": FunctionFragment; - "fsMetadata(string)": FunctionFragment; - "getBlobBaseFee()": FunctionFragment; - "getBlobhashes()": FunctionFragment; - "getBlockNumber()": FunctionFragment; - "getBlockTimestamp()": FunctionFragment; - "getCode(string)": FunctionFragment; - "getDeployedCode(string)": FunctionFragment; - "getLabel(address)": FunctionFragment; - "getMappingKeyAndParentOf(address,bytes32)": FunctionFragment; - "getMappingLength(address,bytes32)": FunctionFragment; - "getMappingSlotAt(address,bytes32,uint256)": FunctionFragment; - "getNonce(address)": FunctionFragment; - "getNonce((address,uint256,uint256,uint256))": FunctionFragment; - "getRecordedLogs()": FunctionFragment; - "indexOf(string,string)": FunctionFragment; - "isContext(uint8)": FunctionFragment; - "isDir(string)": FunctionFragment; - "isFile(string)": FunctionFragment; - "isPersistent(address)": FunctionFragment; - "keyExists(string,string)": FunctionFragment; - "keyExistsJson(string,string)": FunctionFragment; - "keyExistsToml(string,string)": FunctionFragment; - "label(address,string)": FunctionFragment; - "lastCallGas()": FunctionFragment; - "load(address,bytes32)": FunctionFragment; - "loadAllocs(string)": FunctionFragment; - "makePersistent(address[])": FunctionFragment; - "makePersistent(address,address)": FunctionFragment; - "makePersistent(address)": FunctionFragment; - "makePersistent(address,address,address)": FunctionFragment; - "mockCall(address,uint256,bytes,bytes)": FunctionFragment; - "mockCall(address,bytes,bytes)": FunctionFragment; - "mockCallRevert(address,uint256,bytes,bytes)": FunctionFragment; - "mockCallRevert(address,bytes,bytes)": FunctionFragment; - "parseAddress(string)": FunctionFragment; - "parseBool(string)": FunctionFragment; - "parseBytes(string)": FunctionFragment; - "parseBytes32(string)": FunctionFragment; - "parseInt(string)": FunctionFragment; - "parseJson(string)": FunctionFragment; - "parseJson(string,string)": FunctionFragment; - "parseJsonAddress(string,string)": FunctionFragment; - "parseJsonAddressArray(string,string)": FunctionFragment; - "parseJsonBool(string,string)": FunctionFragment; - "parseJsonBoolArray(string,string)": FunctionFragment; - "parseJsonBytes(string,string)": FunctionFragment; - "parseJsonBytes32(string,string)": FunctionFragment; - "parseJsonBytes32Array(string,string)": FunctionFragment; - "parseJsonBytesArray(string,string)": FunctionFragment; - "parseJsonInt(string,string)": FunctionFragment; - "parseJsonIntArray(string,string)": FunctionFragment; - "parseJsonKeys(string,string)": FunctionFragment; - "parseJsonString(string,string)": FunctionFragment; - "parseJsonStringArray(string,string)": FunctionFragment; - "parseJsonUint(string,string)": FunctionFragment; - "parseJsonUintArray(string,string)": FunctionFragment; - "parseToml(string,string)": FunctionFragment; - "parseToml(string)": FunctionFragment; - "parseTomlAddress(string,string)": FunctionFragment; - "parseTomlAddressArray(string,string)": FunctionFragment; - "parseTomlBool(string,string)": FunctionFragment; - "parseTomlBoolArray(string,string)": FunctionFragment; - "parseTomlBytes(string,string)": FunctionFragment; - "parseTomlBytes32(string,string)": FunctionFragment; - "parseTomlBytes32Array(string,string)": FunctionFragment; - "parseTomlBytesArray(string,string)": FunctionFragment; - "parseTomlInt(string,string)": FunctionFragment; - "parseTomlIntArray(string,string)": FunctionFragment; - "parseTomlKeys(string,string)": FunctionFragment; - "parseTomlString(string,string)": FunctionFragment; - "parseTomlStringArray(string,string)": FunctionFragment; - "parseTomlUint(string,string)": FunctionFragment; - "parseTomlUintArray(string,string)": FunctionFragment; - "parseUint(string)": FunctionFragment; - "pauseGasMetering()": FunctionFragment; - "prank(address,address)": FunctionFragment; - "prank(address)": FunctionFragment; - "prevrandao(bytes32)": FunctionFragment; - "prevrandao(uint256)": FunctionFragment; - "projectRoot()": FunctionFragment; - "prompt(string)": FunctionFragment; - "promptAddress(string)": FunctionFragment; - "promptSecret(string)": FunctionFragment; - "promptSecretUint(string)": FunctionFragment; - "promptUint(string)": FunctionFragment; - "randomAddress()": FunctionFragment; - "randomUint()": FunctionFragment; - "randomUint(uint256,uint256)": FunctionFragment; - "readCallers()": FunctionFragment; - "readDir(string,uint64)": FunctionFragment; - "readDir(string,uint64,bool)": FunctionFragment; - "readDir(string)": FunctionFragment; - "readFile(string)": FunctionFragment; - "readFileBinary(string)": FunctionFragment; - "readLine(string)": FunctionFragment; - "readLink(string)": FunctionFragment; - "record()": FunctionFragment; - "recordLogs()": FunctionFragment; - "rememberKey(uint256)": FunctionFragment; - "removeDir(string,bool)": FunctionFragment; - "removeFile(string)": FunctionFragment; - "replace(string,string,string)": FunctionFragment; - "resetNonce(address)": FunctionFragment; - "resumeGasMetering()": FunctionFragment; - "revertTo(uint256)": FunctionFragment; - "revertToAndDelete(uint256)": FunctionFragment; - "revokePersistent(address[])": FunctionFragment; - "revokePersistent(address)": FunctionFragment; - "roll(uint256)": FunctionFragment; - "rollFork(bytes32)": FunctionFragment; - "rollFork(uint256,uint256)": FunctionFragment; - "rollFork(uint256)": FunctionFragment; - "rollFork(uint256,bytes32)": FunctionFragment; - "rpc(string,string)": FunctionFragment; - "rpcUrl(string)": FunctionFragment; - "rpcUrlStructs()": FunctionFragment; - "rpcUrls()": FunctionFragment; - "selectFork(uint256)": FunctionFragment; - "serializeAddress(string,string,address[])": FunctionFragment; - "serializeAddress(string,string,address)": FunctionFragment; - "serializeBool(string,string,bool[])": FunctionFragment; - "serializeBool(string,string,bool)": FunctionFragment; - "serializeBytes(string,string,bytes[])": FunctionFragment; - "serializeBytes(string,string,bytes)": FunctionFragment; - "serializeBytes32(string,string,bytes32[])": FunctionFragment; - "serializeBytes32(string,string,bytes32)": FunctionFragment; - "serializeInt(string,string,int256)": FunctionFragment; - "serializeInt(string,string,int256[])": FunctionFragment; - "serializeJson(string,string)": FunctionFragment; - "serializeString(string,string,string[])": FunctionFragment; - "serializeString(string,string,string)": FunctionFragment; - "serializeUint(string,string,uint256)": FunctionFragment; - "serializeUint(string,string,uint256[])": FunctionFragment; - "serializeUintToHex(string,string,uint256)": FunctionFragment; - "setEnv(string,string)": FunctionFragment; - "setNonce(address,uint64)": FunctionFragment; - "setNonceUnsafe(address,uint64)": FunctionFragment; - "sign(bytes32)": FunctionFragment; - "sign(address,bytes32)": FunctionFragment; - "sign((address,uint256,uint256,uint256),bytes32)": FunctionFragment; - "sign(uint256,bytes32)": FunctionFragment; - "signP256(uint256,bytes32)": FunctionFragment; - "skip(bool)": FunctionFragment; - "sleep(uint256)": FunctionFragment; - "snapshot()": FunctionFragment; - "split(string,string)": FunctionFragment; - "startBroadcast()": FunctionFragment; - "startBroadcast(address)": FunctionFragment; - "startBroadcast(uint256)": FunctionFragment; - "startMappingRecording()": FunctionFragment; - "startPrank(address)": FunctionFragment; - "startPrank(address,address)": FunctionFragment; - "startStateDiffRecording()": FunctionFragment; - "stopAndReturnStateDiff()": FunctionFragment; - "stopBroadcast()": FunctionFragment; - "stopExpectSafeMemory()": FunctionFragment; - "stopMappingRecording()": FunctionFragment; - "stopPrank()": FunctionFragment; - "store(address,bytes32,bytes32)": FunctionFragment; - "toBase64(string)": FunctionFragment; - "toBase64(bytes)": FunctionFragment; - "toBase64URL(string)": FunctionFragment; - "toBase64URL(bytes)": FunctionFragment; - "toLowercase(string)": FunctionFragment; - "toString(address)": FunctionFragment; - "toString(uint256)": FunctionFragment; - "toString(bytes)": FunctionFragment; - "toString(bool)": FunctionFragment; - "toString(int256)": FunctionFragment; - "toString(bytes32)": FunctionFragment; - "toUppercase(string)": FunctionFragment; - "transact(uint256,bytes32)": FunctionFragment; - "transact(bytes32)": FunctionFragment; - "trim(string)": FunctionFragment; - "tryFfi(string[])": FunctionFragment; - "txGasPrice(uint256)": FunctionFragment; - "unixTime()": FunctionFragment; - "warp(uint256)": FunctionFragment; - "writeFile(string,string)": FunctionFragment; - "writeFileBinary(string,bytes)": FunctionFragment; - "writeJson(string,string,string)": FunctionFragment; - "writeJson(string,string)": FunctionFragment; - "writeLine(string,string)": FunctionFragment; - "writeToml(string,string,string)": FunctionFragment; - "writeToml(string,string)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "accesses" - | "activeFork" - | "addr" - | "allowCheatcodes" - | "assertApproxEqAbs(uint256,uint256,uint256)" - | "assertApproxEqAbs(int256,int256,uint256)" - | "assertApproxEqAbs(int256,int256,uint256,string)" - | "assertApproxEqAbs(uint256,uint256,uint256,string)" - | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" - | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" - | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" - | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" - | "assertApproxEqRel(uint256,uint256,uint256,string)" - | "assertApproxEqRel(uint256,uint256,uint256)" - | "assertApproxEqRel(int256,int256,uint256,string)" - | "assertApproxEqRel(int256,int256,uint256)" - | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" - | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" - | "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" - | "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" - | "assertEq(bytes32[],bytes32[])" - | "assertEq(int256[],int256[],string)" - | "assertEq(address,address,string)" - | "assertEq(string,string,string)" - | "assertEq(address[],address[])" - | "assertEq(address[],address[],string)" - | "assertEq(bool,bool,string)" - | "assertEq(address,address)" - | "assertEq(uint256[],uint256[],string)" - | "assertEq(bool[],bool[])" - | "assertEq(int256[],int256[])" - | "assertEq(int256,int256,string)" - | "assertEq(bytes32,bytes32)" - | "assertEq(uint256,uint256,string)" - | "assertEq(uint256[],uint256[])" - | "assertEq(bytes,bytes)" - | "assertEq(uint256,uint256)" - | "assertEq(bytes32,bytes32,string)" - | "assertEq(string[],string[])" - | "assertEq(bytes32[],bytes32[],string)" - | "assertEq(bytes,bytes,string)" - | "assertEq(bool[],bool[],string)" - | "assertEq(bytes[],bytes[])" - | "assertEq(string[],string[],string)" - | "assertEq(string,string)" - | "assertEq(bytes[],bytes[],string)" - | "assertEq(bool,bool)" - | "assertEq(int256,int256)" - | "assertEqDecimal(uint256,uint256,uint256)" - | "assertEqDecimal(int256,int256,uint256)" - | "assertEqDecimal(int256,int256,uint256,string)" - | "assertEqDecimal(uint256,uint256,uint256,string)" - | "assertFalse(bool,string)" - | "assertFalse(bool)" - | "assertGe(int256,int256)" - | "assertGe(int256,int256,string)" - | "assertGe(uint256,uint256)" - | "assertGe(uint256,uint256,string)" - | "assertGeDecimal(uint256,uint256,uint256)" - | "assertGeDecimal(int256,int256,uint256,string)" - | "assertGeDecimal(uint256,uint256,uint256,string)" - | "assertGeDecimal(int256,int256,uint256)" - | "assertGt(int256,int256)" - | "assertGt(uint256,uint256,string)" - | "assertGt(uint256,uint256)" - | "assertGt(int256,int256,string)" - | "assertGtDecimal(int256,int256,uint256,string)" - | "assertGtDecimal(uint256,uint256,uint256,string)" - | "assertGtDecimal(int256,int256,uint256)" - | "assertGtDecimal(uint256,uint256,uint256)" - | "assertLe(int256,int256,string)" - | "assertLe(uint256,uint256)" - | "assertLe(int256,int256)" - | "assertLe(uint256,uint256,string)" - | "assertLeDecimal(int256,int256,uint256)" - | "assertLeDecimal(uint256,uint256,uint256,string)" - | "assertLeDecimal(int256,int256,uint256,string)" - | "assertLeDecimal(uint256,uint256,uint256)" - | "assertLt(int256,int256)" - | "assertLt(uint256,uint256,string)" - | "assertLt(int256,int256,string)" - | "assertLt(uint256,uint256)" - | "assertLtDecimal(uint256,uint256,uint256)" - | "assertLtDecimal(int256,int256,uint256,string)" - | "assertLtDecimal(uint256,uint256,uint256,string)" - | "assertLtDecimal(int256,int256,uint256)" - | "assertNotEq(bytes32[],bytes32[])" - | "assertNotEq(int256[],int256[])" - | "assertNotEq(bool,bool,string)" - | "assertNotEq(bytes[],bytes[],string)" - | "assertNotEq(bool,bool)" - | "assertNotEq(bool[],bool[])" - | "assertNotEq(bytes,bytes)" - | "assertNotEq(address[],address[])" - | "assertNotEq(int256,int256,string)" - | "assertNotEq(uint256[],uint256[])" - | "assertNotEq(bool[],bool[],string)" - | "assertNotEq(string,string)" - | "assertNotEq(address[],address[],string)" - | "assertNotEq(string,string,string)" - | "assertNotEq(address,address,string)" - | "assertNotEq(bytes32,bytes32)" - | "assertNotEq(bytes,bytes,string)" - | "assertNotEq(uint256,uint256,string)" - | "assertNotEq(uint256[],uint256[],string)" - | "assertNotEq(address,address)" - | "assertNotEq(bytes32,bytes32,string)" - | "assertNotEq(string[],string[],string)" - | "assertNotEq(uint256,uint256)" - | "assertNotEq(bytes32[],bytes32[],string)" - | "assertNotEq(string[],string[])" - | "assertNotEq(int256[],int256[],string)" - | "assertNotEq(bytes[],bytes[])" - | "assertNotEq(int256,int256)" - | "assertNotEqDecimal(int256,int256,uint256)" - | "assertNotEqDecimal(int256,int256,uint256,string)" - | "assertNotEqDecimal(uint256,uint256,uint256)" - | "assertNotEqDecimal(uint256,uint256,uint256,string)" - | "assertTrue(bool)" - | "assertTrue(bool,string)" - | "assume" - | "blobBaseFee" - | "blobhashes" - | "breakpoint(string)" - | "breakpoint(string,bool)" - | "broadcast()" - | "broadcast(address)" - | "broadcast(uint256)" - | "chainId" - | "clearMockedCalls" - | "closeFile" - | "coinbase" - | "computeCreate2Address(bytes32,bytes32)" - | "computeCreate2Address(bytes32,bytes32,address)" - | "computeCreateAddress" - | "copyFile" - | "createDir" - | "createFork(string)" - | "createFork(string,uint256)" - | "createFork(string,bytes32)" - | "createSelectFork(string,uint256)" - | "createSelectFork(string,bytes32)" - | "createSelectFork(string)" - | "createWallet(string)" - | "createWallet(uint256)" - | "createWallet(uint256,string)" - | "deal" - | "deleteSnapshot" - | "deleteSnapshots" - | "deriveKey(string,string,uint32,string)" - | "deriveKey(string,uint32,string)" - | "deriveKey(string,uint32)" - | "deriveKey(string,string,uint32)" - | "difficulty" - | "dumpState" - | "ensNamehash" - | "envAddress(string)" - | "envAddress(string,string)" - | "envBool(string)" - | "envBool(string,string)" - | "envBytes(string)" - | "envBytes(string,string)" - | "envBytes32(string,string)" - | "envBytes32(string)" - | "envExists" - | "envInt(string,string)" - | "envInt(string)" - | "envOr(string,string,bytes32[])" - | "envOr(string,string,int256[])" - | "envOr(string,bool)" - | "envOr(string,address)" - | "envOr(string,uint256)" - | "envOr(string,string,bytes[])" - | "envOr(string,string,uint256[])" - | "envOr(string,string,string[])" - | "envOr(string,bytes)" - | "envOr(string,bytes32)" - | "envOr(string,int256)" - | "envOr(string,string,address[])" - | "envOr(string,string)" - | "envOr(string,string,bool[])" - | "envString(string,string)" - | "envString(string)" - | "envUint(string)" - | "envUint(string,string)" - | "etch" - | "eth_getLogs" - | "exists" - | "expectCall(address,uint256,uint64,bytes)" - | "expectCall(address,uint256,uint64,bytes,uint64)" - | "expectCall(address,uint256,bytes,uint64)" - | "expectCall(address,bytes)" - | "expectCall(address,bytes,uint64)" - | "expectCall(address,uint256,bytes)" - | "expectCallMinGas(address,uint256,uint64,bytes)" - | "expectCallMinGas(address,uint256,uint64,bytes,uint64)" - | "expectEmit()" - | "expectEmit(bool,bool,bool,bool)" - | "expectEmit(bool,bool,bool,bool,address)" - | "expectEmit(address)" - | "expectRevert(bytes4)" - | "expectRevert(bytes)" - | "expectRevert()" - | "expectSafeMemory" - | "expectSafeMemoryCall" - | "fee" - | "ffi" - | "fsMetadata" - | "getBlobBaseFee" - | "getBlobhashes" - | "getBlockNumber" - | "getBlockTimestamp" - | "getCode" - | "getDeployedCode" - | "getLabel" - | "getMappingKeyAndParentOf" - | "getMappingLength" - | "getMappingSlotAt" - | "getNonce(address)" - | "getNonce((address,uint256,uint256,uint256))" - | "getRecordedLogs" - | "indexOf" - | "isContext" - | "isDir" - | "isFile" - | "isPersistent" - | "keyExists" - | "keyExistsJson" - | "keyExistsToml" - | "label" - | "lastCallGas" - | "load" - | "loadAllocs" - | "makePersistent(address[])" - | "makePersistent(address,address)" - | "makePersistent(address)" - | "makePersistent(address,address,address)" - | "mockCall(address,uint256,bytes,bytes)" - | "mockCall(address,bytes,bytes)" - | "mockCallRevert(address,uint256,bytes,bytes)" - | "mockCallRevert(address,bytes,bytes)" - | "parseAddress" - | "parseBool" - | "parseBytes" - | "parseBytes32" - | "parseInt" - | "parseJson(string)" - | "parseJson(string,string)" - | "parseJsonAddress" - | "parseJsonAddressArray" - | "parseJsonBool" - | "parseJsonBoolArray" - | "parseJsonBytes" - | "parseJsonBytes32" - | "parseJsonBytes32Array" - | "parseJsonBytesArray" - | "parseJsonInt" - | "parseJsonIntArray" - | "parseJsonKeys" - | "parseJsonString" - | "parseJsonStringArray" - | "parseJsonUint" - | "parseJsonUintArray" - | "parseToml(string,string)" - | "parseToml(string)" - | "parseTomlAddress" - | "parseTomlAddressArray" - | "parseTomlBool" - | "parseTomlBoolArray" - | "parseTomlBytes" - | "parseTomlBytes32" - | "parseTomlBytes32Array" - | "parseTomlBytesArray" - | "parseTomlInt" - | "parseTomlIntArray" - | "parseTomlKeys" - | "parseTomlString" - | "parseTomlStringArray" - | "parseTomlUint" - | "parseTomlUintArray" - | "parseUint" - | "pauseGasMetering" - | "prank(address,address)" - | "prank(address)" - | "prevrandao(bytes32)" - | "prevrandao(uint256)" - | "projectRoot" - | "prompt" - | "promptAddress" - | "promptSecret" - | "promptSecretUint" - | "promptUint" - | "randomAddress" - | "randomUint()" - | "randomUint(uint256,uint256)" - | "readCallers" - | "readDir(string,uint64)" - | "readDir(string,uint64,bool)" - | "readDir(string)" - | "readFile" - | "readFileBinary" - | "readLine" - | "readLink" - | "record" - | "recordLogs" - | "rememberKey" - | "removeDir" - | "removeFile" - | "replace" - | "resetNonce" - | "resumeGasMetering" - | "revertTo" - | "revertToAndDelete" - | "revokePersistent(address[])" - | "revokePersistent(address)" - | "roll" - | "rollFork(bytes32)" - | "rollFork(uint256,uint256)" - | "rollFork(uint256)" - | "rollFork(uint256,bytes32)" - | "rpc" - | "rpcUrl" - | "rpcUrlStructs" - | "rpcUrls" - | "selectFork" - | "serializeAddress(string,string,address[])" - | "serializeAddress(string,string,address)" - | "serializeBool(string,string,bool[])" - | "serializeBool(string,string,bool)" - | "serializeBytes(string,string,bytes[])" - | "serializeBytes(string,string,bytes)" - | "serializeBytes32(string,string,bytes32[])" - | "serializeBytes32(string,string,bytes32)" - | "serializeInt(string,string,int256)" - | "serializeInt(string,string,int256[])" - | "serializeJson" - | "serializeString(string,string,string[])" - | "serializeString(string,string,string)" - | "serializeUint(string,string,uint256)" - | "serializeUint(string,string,uint256[])" - | "serializeUintToHex" - | "setEnv" - | "setNonce" - | "setNonceUnsafe" - | "sign(bytes32)" - | "sign(address,bytes32)" - | "sign((address,uint256,uint256,uint256),bytes32)" - | "sign(uint256,bytes32)" - | "signP256" - | "skip" - | "sleep" - | "snapshot" - | "split" - | "startBroadcast()" - | "startBroadcast(address)" - | "startBroadcast(uint256)" - | "startMappingRecording" - | "startPrank(address)" - | "startPrank(address,address)" - | "startStateDiffRecording" - | "stopAndReturnStateDiff" - | "stopBroadcast" - | "stopExpectSafeMemory" - | "stopMappingRecording" - | "stopPrank" - | "store" - | "toBase64(string)" - | "toBase64(bytes)" - | "toBase64URL(string)" - | "toBase64URL(bytes)" - | "toLowercase" - | "toString(address)" - | "toString(uint256)" - | "toString(bytes)" - | "toString(bool)" - | "toString(int256)" - | "toString(bytes32)" - | "toUppercase" - | "transact(uint256,bytes32)" - | "transact(bytes32)" - | "trim" - | "tryFfi" - | "txGasPrice" - | "unixTime" - | "warp" - | "writeFile" - | "writeFileBinary" - | "writeJson(string,string,string)" - | "writeJson(string,string)" - | "writeLine" - | "writeToml(string,string,string)" - | "writeToml(string,string)" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "accesses", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "activeFork", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "addr", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "allowCheatcodes", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32[],bytes32[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256[],int256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address,address,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address[],address[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address[],address[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool,bool,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256[],uint256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool[],bool[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256[],int256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256[],uint256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32,bytes32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string[],string[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32[],bytes32[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes,bytes,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool[],bool[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string[],string[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes[],bytes[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertFalse(bool,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertFalse(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGe(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGt(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGt(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGt(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGt(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLe(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLe(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLe(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLe(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLt(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32[],bytes32[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256[],int256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool,bool,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes[],bytes[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool[],bool[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address[],address[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256[],uint256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool[],bool[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address[],address[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address,address,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes,bytes,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256[],uint256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32,bytes32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string[],string[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32[],bytes32[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string[],string[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256[],int256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertTrue(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertTrue(bool,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assume", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "blobBaseFee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "blobhashes", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "breakpoint(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "breakpoint(string,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "broadcast()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "broadcast(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "broadcast(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "chainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "clearMockedCalls", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "closeFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "coinbase", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "computeCreate2Address(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "computeCreate2Address(bytes32,bytes32,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "computeCreateAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "copyFile", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createDir", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createFork(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createFork(string,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createFork(string,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createSelectFork(string,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createSelectFork(string,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createSelectFork(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(uint256,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deal", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deleteSnapshot", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deleteSnapshots", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,string,uint32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,uint32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,uint32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,string,uint32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "difficulty", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "dumpState", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "ensNamehash", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envAddress(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envAddress(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBool(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBool(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes32(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes32(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envExists", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envInt(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envInt(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bytes32[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,int256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,uint256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,string[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,address[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bool[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envString(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envString(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envUint(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envUint(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "etch", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "eth_getLogs", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "exists", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,uint256,uint64,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,uint256,uint64,bytes,uint64)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,uint256,bytes,uint64)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,bytes,uint64)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCall(address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCallMinGas(address,uint256,uint64,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectCallMinGas(address,uint256,uint64,bytes,uint64)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectEmit()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "expectEmit(bool,bool,bool,bool)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectEmit(bool,bool,bool,bool,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "expectEmit(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectRevert(bytes4)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectRevert(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectRevert()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "expectSafeMemory", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "expectSafeMemoryCall", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "fee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "ffi", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "fsMetadata", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getBlobBaseFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlobhashes", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlockNumber", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlockTimestamp", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCode", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getDeployedCode", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getLabel", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingKeyAndParentOf", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingLength", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingSlotAt", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "getNonce(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getNonce((address,uint256,uint256,uint256))", - values: [VmSafe.WalletStruct] - ): string; - encodeFunctionData( - functionFragment: "getRecordedLogs", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "indexOf", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isContext", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isDir", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isPersistent", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExists", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExistsJson", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExistsToml", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "label", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "lastCallGas", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "load", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "loadAllocs", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "makePersistent(address[])", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "makePersistent(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "makePersistent(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "makePersistent(address,address,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "mockCall(address,uint256,bytes,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "mockCall(address,bytes,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "mockCallRevert(address,uint256,bytes,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "mockCallRevert(address,bytes,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "parseAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBool", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBytes", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBytes32", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseInt", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJson(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJson(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonAddressArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBool", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBoolArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes32", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes32Array", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytesArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonInt", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonIntArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonKeys", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonString", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonStringArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonUint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonUintArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseToml(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseToml(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlAddressArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBool", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBoolArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes32", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes32Array", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytesArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlInt", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlIntArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlKeys", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlString", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlStringArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlUint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlUintArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "pauseGasMetering", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "prank(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "prank(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "prevrandao(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "prevrandao(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "projectRoot", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "prompt", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptSecret", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptSecretUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "randomAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "randomUint()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "randomUint(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readCallers", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "readDir(string,uint64)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readDir(string,uint64,bool)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "readDir(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readFileBinary", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readLine", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readLink", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "record", values?: undefined): string; - encodeFunctionData( - functionFragment: "recordLogs", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "rememberKey", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "removeDir", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "removeFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "replace", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "resetNonce", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "resumeGasMetering", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "revertTo", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "revertToAndDelete", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "revokePersistent(address[])", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "revokePersistent(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "roll", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rollFork(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rollFork(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rollFork(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rollFork(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rpc", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rpcUrl", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rpcUrlStructs", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "rpcUrls", values?: undefined): string; - encodeFunctionData( - functionFragment: "selectFork", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "serializeAddress(string,string,address[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeAddress(string,string,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBool(string,string,bool[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBool(string,string,bool)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes(string,string,bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes(string,string,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes32(string,string,bytes32[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes32(string,string,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeInt(string,string,int256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeInt(string,string,int256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeJson", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "serializeString(string,string,string[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeString(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUint(string,string,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUint(string,string,uint256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUintToHex", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setEnv", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setNonce", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setNonceUnsafe", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(address,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", - values: [VmSafe.WalletStruct, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "signP256", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "skip", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sleep", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "snapshot", values?: undefined): string; - encodeFunctionData( - functionFragment: "split", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startBroadcast()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "startBroadcast(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startBroadcast(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startMappingRecording", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "startPrank(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startPrank(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startStateDiffRecording", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopAndReturnStateDiff", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopBroadcast", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopExpectSafeMemory", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopMappingRecording", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "stopPrank", values?: undefined): string; - encodeFunctionData( - functionFragment: "store", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "toBase64(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64URL(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64URL(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toLowercase", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(int256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toUppercase", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transact(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transact(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "trim", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tryFfi", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "txGasPrice", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "unixTime", values?: undefined): string; - encodeFunctionData( - functionFragment: "warp", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeFile", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeFileBinary", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeJson(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "writeJson(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeLine", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeToml(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "writeToml(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "accesses", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "activeFork", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "addr", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "allowCheatcodes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32[],bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256[],int256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address,address,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address[],address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address[],address[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool,bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256[],uint256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool[],bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256[],int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256[],uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32,bytes32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string[],string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32[],bytes32[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes,bytes,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool[],bool[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes[],bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string[],string[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes[],bytes[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertFalse(bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertFalse(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32[],bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256[],int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool,bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes[],bytes[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool[],bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address[],address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256[],uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool[],bool[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address[],address[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address,address,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes,bytes,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256[],uint256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32,bytes32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string[],string[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32[],bytes32[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string[],string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256[],int256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes[],bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertTrue(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertTrue(bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "assume", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "blobBaseFee", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "blobhashes", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "breakpoint(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "breakpoint(string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "clearMockedCalls", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "closeFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "coinbase", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "computeCreate2Address(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "computeCreate2Address(bytes32,bytes32,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "computeCreateAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "copyFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "createDir", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "createFork(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createFork(string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createFork(string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createSelectFork(string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createSelectFork(string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createSelectFork(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createWallet(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createWallet(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createWallet(uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "deal", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "deleteSnapshot", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deleteSnapshots", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,string,uint32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,uint32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,uint32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,string,uint32)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "difficulty", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "dumpState", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "ensNamehash", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envAddress(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envAddress(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBool(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBool(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes32(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes32(string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "envExists", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "envInt(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envInt(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envString(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envString(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envUint(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envUint(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "etch", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "eth_getLogs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,uint256,uint64,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,uint256,uint64,bytes,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,uint256,bytes,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,bytes,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCall(address,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCallMinGas(address,uint256,uint64,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectCallMinGas(address,uint256,uint64,bytes,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectEmit()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectEmit(bool,bool,bool,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectEmit(bool,bool,bool,bool,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectEmit(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectRevert(bytes4)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectRevert(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectRevert()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectSafeMemory", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "expectSafeMemoryCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "fee", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ffi", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "fsMetadata", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getBlobBaseFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlobhashes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlockTimestamp", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getCode", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getDeployedCode", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getLabel", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getMappingKeyAndParentOf", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getMappingLength", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getMappingSlotAt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNonce(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNonce((address,uint256,uint256,uint256))", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getRecordedLogs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "indexOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isContext", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isDir", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isPersistent", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "keyExists", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "keyExistsJson", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "keyExistsToml", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "label", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "lastCallGas", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "load", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "loadAllocs", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "makePersistent(address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "makePersistent(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "makePersistent(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "makePersistent(address,address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "mockCall(address,uint256,bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "mockCall(address,bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "mockCallRevert(address,uint256,bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "mockCallRevert(address,bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseBool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "parseBytes", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "parseBytes32", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseInt", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "parseJson(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJson(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonAddressArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBool", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBoolArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes32", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes32Array", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytesArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonInt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonIntArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonKeys", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonString", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonStringArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonUint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonUintArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseToml(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseToml(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlAddressArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBool", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBoolArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes32", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes32Array", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytesArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlInt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlIntArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlKeys", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlString", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlStringArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlUint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlUintArray", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseUint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "pauseGasMetering", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "prank(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "prank(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "prevrandao(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "prevrandao(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "projectRoot", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "prompt", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "promptAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "promptSecret", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "promptSecretUint", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "promptUint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "randomAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "randomUint()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "randomUint(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readCallers", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string,uint64,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "readFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "readFileBinary", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "readLine", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "readLink", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "record", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "recordLogs", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "rememberKey", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "removeDir", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "removeFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "replace", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "resetNonce", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "resumeGasMetering", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "revertTo", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "revertToAndDelete", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revokePersistent(address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "revokePersistent(address)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "roll", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "rollFork(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "rollFork(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "rollFork(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "rollFork(uint256,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "rpc", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "rpcUrl", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "rpcUrlStructs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "rpcUrls", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "selectFork", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "serializeAddress(string,string,address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeAddress(string,string,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBool(string,string,bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBool(string,string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes(string,string,bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes(string,string,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes32(string,string,bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes32(string,string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeInt(string,string,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeInt(string,string,int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeJson", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeString(string,string,string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeString(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUint(string,string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUint(string,string,uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUintToHex", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setEnv", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setNonce", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setNonceUnsafe", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign(address,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign(uint256,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "signP256", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "skip", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sleep", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "snapshot", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "split", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "startBroadcast()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startBroadcast(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startBroadcast(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startMappingRecording", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startPrank(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startPrank(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startStateDiffRecording", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopAndReturnStateDiff", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopBroadcast", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopExpectSafeMemory", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopMappingRecording", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "stopPrank", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "store", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "toBase64(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64URL(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64URL(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toLowercase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toUppercase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transact(uint256,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transact(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "trim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tryFfi", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "txGasPrice", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "unixTime", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "warp", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "writeFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "writeFileBinary", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeJson(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeJson(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "writeLine", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "writeToml(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeToml(string,string)", - data: BytesLike - ): Result; - - events: {}; -} - -export interface Vm extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: VmInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - activeFork( - overrides?: CallOverrides - ): Promise<[BigNumber] & { forkId: BigNumber }>; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { keyAddr: string }>; - - allowCheatcodes( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - blobBaseFee( - newBlobBaseFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - blobhashes( - hashes: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - chainId( - newChainId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - clearMockedCalls( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - coinbase( - newCoinbase: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deal( - account: PromiseOrValue, - newBalance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshot( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshots( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - difficulty( - newDifficulty: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - dumpState( - pathToStateJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { value: boolean }>; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]] & { value: boolean[] }>; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { result: boolean }>; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { value: boolean }>; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[boolean[]] & { value: boolean[] }>; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - etch( - target: PromiseOrValue, - newRuntimeBytecode: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes,uint64)"( - callee: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool,address)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(address)"( - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes4)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemory( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemoryCall( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fee( - newBasefee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.FsMetadataStructOutput] & { - metadata: VmSafe.FsMetadataStructOutput; - } - >; - - getBlobBaseFee( - overrides?: CallOverrides - ): Promise<[BigNumber] & { blobBaseFee: BigNumber }>; - - getBlobhashes( - overrides?: CallOverrides - ): Promise<[string[]] & { hashes: string[] }>; - - getBlockNumber( - overrides?: CallOverrides - ): Promise<[BigNumber] & { height: BigNumber }>; - - getBlockTimestamp( - overrides?: CallOverrides - ): Promise<[BigNumber] & { timestamp: BigNumber }>; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { creationBytecode: string }>; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { runtimeBytecode: string }>; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { currentLabel: string }>; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { nonce: BigNumber }>; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { result: boolean }>; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isPersistent( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { persistent: boolean }>; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas( - overrides?: CallOverrides - ): Promise<[VmSafe.GasStructOutput] & { gas: VmSafe.GasStructOutput }>; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - loadAllocs( - pathToAllocsJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - account2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { parsedValue: boolean }>; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { parsedValue: BigNumber }>; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]]>; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { keys: string[] }>; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]]>; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { keys: string[] }>; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { parsedValue: BigNumber }>; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(bytes32)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(uint256)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot( - overrides?: CallOverrides - ): Promise<[string] & { path: string }>; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - readCallers( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { line: string }>; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { targetPath: string }>; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - resetNonce( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertTo( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertToAndDelete( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - roll( - newHeight: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,uint256)"( - forkId: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256)"( - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { json: string }>; - - rpcUrlStructs( - overrides?: CallOverrides - ): Promise<[VmSafe.RpcStructOutput[]] & { urls: VmSafe.RpcStructOutput[] }>; - - rpcUrls( - overrides?: CallOverrides - ): Promise<[[string, string][]] & { urls: [string, string][] }>; - - selectFork( - forkId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonce( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonceUnsafe( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - skip( - skipTest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - snapshot( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { outputs: string[] }>; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopExpectSafeMemory( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopPrank( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - store( - target: PromiseOrValue, - slot: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - "transact(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "transact(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - txGasPrice( - newGasPrice: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - warp( - newTimestamp: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - activeFork(overrides?: CallOverrides): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - allowCheatcodes( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - blobBaseFee( - newBlobBaseFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - blobhashes( - hashes: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - chainId( - newChainId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - clearMockedCalls( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - coinbase( - newCoinbase: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deal( - account: PromiseOrValue, - newBalance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshot( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshots( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - difficulty( - newDifficulty: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - dumpState( - pathToStateJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - etch( - target: PromiseOrValue, - newRuntimeBytecode: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes,uint64)"( - callee: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool,address)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(address)"( - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes4)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemory( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemoryCall( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fee( - newBasefee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlobhashes(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isPersistent( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - loadAllocs( - pathToAllocsJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - account2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(bytes32)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(uint256)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - readCallers( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resetNonce( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertTo( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertToAndDelete( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - roll( - newHeight: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,uint256)"( - forkId: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256)"( - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>; - - selectFork( - forkId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonce( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonceUnsafe( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - skip( - skipTest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - snapshot( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopExpectSafeMemory( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopPrank( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - store( - target: PromiseOrValue, - slot: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "transact(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "transact(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - txGasPrice( - newGasPrice: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - warp( - newTimestamp: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - accesses( - target: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [string[], string[]] & { readSlots: string[]; writeSlots: string[] } - >; - - activeFork(overrides?: CallOverrides): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - allowCheatcodes( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - blobBaseFee( - newBlobBaseFee: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - blobhashes( - hashes: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "broadcast()"(overrides?: CallOverrides): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - chainId( - newChainId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - clearMockedCalls(overrides?: CallOverrides): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - coinbase( - newCoinbase: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createSelectFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createSelectFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createSelectFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deal( - account: PromiseOrValue, - newBalance: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deleteSnapshot( - snapshotId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - deleteSnapshots(overrides?: CallOverrides): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - difficulty( - newDifficulty: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - dumpState( - pathToStateJson: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - etch( - target: PromiseOrValue, - newRuntimeBytecode: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,uint256,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,bytes,uint64)"( - callee: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCall(address,uint256,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectEmit()"(overrides?: CallOverrides): Promise; - - "expectEmit(bool,bool,bool,bool)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectEmit(bool,bool,bool,bool,address)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - emitter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectEmit(address)"( - emitter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectRevert(bytes4)"( - revertData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectRevert(bytes)"( - revertData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "expectRevert()"(overrides?: CallOverrides): Promise; - - expectSafeMemory( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - expectSafeMemoryCall( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - fee( - newBasefee: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlobhashes(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [boolean, string, string] & { - found: boolean; - key: string; - parent: string; - } - >; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: CallOverrides - ): Promise; - - getRecordedLogs( - overrides?: CallOverrides - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isPersistent( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - loadAllocs( - pathToAllocsJson: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "makePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "makePersistent(address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "makePersistent(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "makePersistent(address,address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - account2: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "mockCall(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "mockCall(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "mockCallRevert(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "mockCallRevert(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering(overrides?: CallOverrides): Promise; - - "prank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "prank(address)"( - msgSender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "prevrandao(bytes32)"( - newPrevrandao: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "prevrandao(uint256)"( - newPrevrandao: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - randomAddress(overrides?: CallOverrides): Promise; - - "randomUint()"(overrides?: CallOverrides): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readCallers( - overrides?: CallOverrides - ): Promise< - [number, string, string] & { - callerMode: number; - msgSender: string; - txOrigin: string; - } - >; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record(overrides?: CallOverrides): Promise; - - recordLogs(overrides?: CallOverrides): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resetNonce( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resumeGasMetering(overrides?: CallOverrides): Promise; - - revertTo( - snapshotId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - revertToAndDelete( - snapshotId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "revokePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "revokePersistent(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - roll( - newHeight: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "rollFork(bytes32)"( - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "rollFork(uint256,uint256)"( - forkId: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "rollFork(uint256)"( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "rollFork(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>; - - selectFork( - forkId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setNonce( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setNonceUnsafe( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - skip( - skipTest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - snapshot(overrides?: CallOverrides): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"(overrides?: CallOverrides): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - startMappingRecording(overrides?: CallOverrides): Promise; - - "startPrank(address)"( - msgSender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startPrank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - startStateDiffRecording(overrides?: CallOverrides): Promise; - - stopAndReturnStateDiff( - overrides?: CallOverrides - ): Promise; - - stopBroadcast(overrides?: CallOverrides): Promise; - - stopExpectSafeMemory(overrides?: CallOverrides): Promise; - - stopMappingRecording(overrides?: CallOverrides): Promise; - - stopPrank(overrides?: CallOverrides): Promise; - - store( - target: PromiseOrValue, - slot: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "transact(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "transact(bytes32)"( - txHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - txGasPrice( - newGasPrice: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - unixTime(overrides?: CallOverrides): Promise; - - warp( - newTimestamp: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - activeFork(overrides?: CallOverrides): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - allowCheatcodes( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - blobBaseFee( - newBlobBaseFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - blobhashes( - hashes: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - chainId( - newChainId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - clearMockedCalls( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - coinbase( - newCoinbase: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deal( - account: PromiseOrValue, - newBalance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshot( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshots( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - difficulty( - newDifficulty: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - dumpState( - pathToStateJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - etch( - target: PromiseOrValue, - newRuntimeBytecode: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes,uint64)"( - callee: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool,address)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(address)"( - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes4)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemory( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemoryCall( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fee( - newBasefee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlobhashes(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isPersistent( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - loadAllocs( - pathToAllocsJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - account2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(bytes32)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(uint256)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - readCallers( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resetNonce( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertTo( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertToAndDelete( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - roll( - newHeight: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,uint256)"( - forkId: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256)"( - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise; - - selectFork( - forkId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonce( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonceUnsafe( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - skip( - skipTest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - snapshot( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopExpectSafeMemory( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopPrank( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - store( - target: PromiseOrValue, - slot: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "transact(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "transact(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - txGasPrice( - newGasPrice: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - warp( - newTimestamp: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - activeFork(overrides?: CallOverrides): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - allowCheatcodes( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - blobBaseFee( - newBlobBaseFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - blobhashes( - hashes: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - chainId( - newChainId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - clearMockedCalls( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - coinbase( - newCoinbase: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,uint256)"( - urlOrAlias: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string,bytes32)"( - urlOrAlias: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createSelectFork(string)"( - urlOrAlias: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deal( - account: PromiseOrValue, - newBalance: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshot( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - deleteSnapshots( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - difficulty( - newDifficulty: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - dumpState( - pathToStateJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - etch( - target: PromiseOrValue, - newRuntimeBytecode: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - gas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,bytes,uint64)"( - callee: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCall(address,uint256,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectCallMinGas(address,uint256,uint64,bytes,uint64)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - minGas: PromiseOrValue, - data: PromiseOrValue, - count: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(bool,bool,bool,bool,address)"( - checkTopic1: PromiseOrValue, - checkTopic2: PromiseOrValue, - checkTopic3: PromiseOrValue, - checkData: PromiseOrValue, - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectEmit(address)"( - emitter: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes4)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert(bytes)"( - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "expectRevert()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemory( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - expectSafeMemoryCall( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fee( - newBasefee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlobhashes(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isPersistent( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - loadAllocs( - pathToAllocsJson: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "makePersistent(address,address,address)"( - account0: PromiseOrValue, - account1: PromiseOrValue, - account2: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCall(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - returnData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,uint256,bytes,bytes)"( - callee: PromiseOrValue, - msgValue: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "mockCallRevert(address,bytes,bytes)"( - callee: PromiseOrValue, - data: PromiseOrValue, - revertData: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(bytes32)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "prevrandao(uint256)"( - newPrevrandao: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - readCallers( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resetNonce( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertTo( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - revertToAndDelete( - snapshotId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address[])"( - accounts: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "revokePersistent(address)"( - account: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - roll( - newHeight: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,uint256)"( - forkId: PromiseOrValue, - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256)"( - blockNumber: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "rollFork(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise; - - selectFork( - forkId: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonce( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setNonceUnsafe( - account: PromiseOrValue, - newNonce: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - skip( - skipTest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - snapshot( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address)"( - msgSender: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startPrank(address,address)"( - msgSender: PromiseOrValue, - txOrigin: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopExpectSafeMemory( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopPrank( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - store( - target: PromiseOrValue, - slot: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "transact(uint256,bytes32)"( - forkId: PromiseOrValue, - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "transact(bytes32)"( - txHash: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - txGasPrice( - newGasPrice: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - warp( - newTimestamp: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/Vm.sol/VmSafe.ts b/v1/typechain-types/forge-std/Vm.sol/VmSafe.ts deleted file mode 100644 index 728ab080..00000000 --- a/v1/typechain-types/forge-std/Vm.sol/VmSafe.ts +++ /dev/null @@ -1,13288 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace VmSafe { - export type WalletStruct = { - addr: PromiseOrValue; - publicKeyX: PromiseOrValue; - publicKeyY: PromiseOrValue; - privateKey: PromiseOrValue; - }; - - export type WalletStructOutput = [string, BigNumber, BigNumber, BigNumber] & { - addr: string; - publicKeyX: BigNumber; - publicKeyY: BigNumber; - privateKey: BigNumber; - }; - - export type EthGetLogsStruct = { - emitter: PromiseOrValue; - topics: PromiseOrValue[]; - data: PromiseOrValue; - blockHash: PromiseOrValue; - blockNumber: PromiseOrValue; - transactionHash: PromiseOrValue; - transactionIndex: PromiseOrValue; - logIndex: PromiseOrValue; - removed: PromiseOrValue; - }; - - export type EthGetLogsStructOutput = [ - string, - string[], - string, - string, - BigNumber, - string, - BigNumber, - BigNumber, - boolean - ] & { - emitter: string; - topics: string[]; - data: string; - blockHash: string; - blockNumber: BigNumber; - transactionHash: string; - transactionIndex: BigNumber; - logIndex: BigNumber; - removed: boolean; - }; - - export type FsMetadataStruct = { - isDir: PromiseOrValue; - isSymlink: PromiseOrValue; - length: PromiseOrValue; - readOnly: PromiseOrValue; - modified: PromiseOrValue; - accessed: PromiseOrValue; - created: PromiseOrValue; - }; - - export type FsMetadataStructOutput = [ - boolean, - boolean, - BigNumber, - boolean, - BigNumber, - BigNumber, - BigNumber - ] & { - isDir: boolean; - isSymlink: boolean; - length: BigNumber; - readOnly: boolean; - modified: BigNumber; - accessed: BigNumber; - created: BigNumber; - }; - - export type LogStruct = { - topics: PromiseOrValue[]; - data: PromiseOrValue; - emitter: PromiseOrValue; - }; - - export type LogStructOutput = [string[], string, string] & { - topics: string[]; - data: string; - emitter: string; - }; - - export type GasStruct = { - gasLimit: PromiseOrValue; - gasTotalUsed: PromiseOrValue; - gasMemoryUsed: PromiseOrValue; - gasRefunded: PromiseOrValue; - gasRemaining: PromiseOrValue; - }; - - export type GasStructOutput = [ - BigNumber, - BigNumber, - BigNumber, - BigNumber, - BigNumber - ] & { - gasLimit: BigNumber; - gasTotalUsed: BigNumber; - gasMemoryUsed: BigNumber; - gasRefunded: BigNumber; - gasRemaining: BigNumber; - }; - - export type DirEntryStruct = { - errorMessage: PromiseOrValue; - path: PromiseOrValue; - depth: PromiseOrValue; - isDir: PromiseOrValue; - isSymlink: PromiseOrValue; - }; - - export type DirEntryStructOutput = [ - string, - string, - BigNumber, - boolean, - boolean - ] & { - errorMessage: string; - path: string; - depth: BigNumber; - isDir: boolean; - isSymlink: boolean; - }; - - export type RpcStruct = { - key: PromiseOrValue; - url: PromiseOrValue; - }; - - export type RpcStructOutput = [string, string] & { key: string; url: string }; - - export type ChainInfoStruct = { - forkId: PromiseOrValue; - chainId: PromiseOrValue; - }; - - export type ChainInfoStructOutput = [BigNumber, BigNumber] & { - forkId: BigNumber; - chainId: BigNumber; - }; - - export type StorageAccessStruct = { - account: PromiseOrValue; - slot: PromiseOrValue; - isWrite: PromiseOrValue; - previousValue: PromiseOrValue; - newValue: PromiseOrValue; - reverted: PromiseOrValue; - }; - - export type StorageAccessStructOutput = [ - string, - string, - boolean, - string, - string, - boolean - ] & { - account: string; - slot: string; - isWrite: boolean; - previousValue: string; - newValue: string; - reverted: boolean; - }; - - export type AccountAccessStruct = { - chainInfo: VmSafe.ChainInfoStruct; - kind: PromiseOrValue; - account: PromiseOrValue; - accessor: PromiseOrValue; - initialized: PromiseOrValue; - oldBalance: PromiseOrValue; - newBalance: PromiseOrValue; - deployedCode: PromiseOrValue; - value: PromiseOrValue; - data: PromiseOrValue; - reverted: PromiseOrValue; - storageAccesses: VmSafe.StorageAccessStruct[]; - depth: PromiseOrValue; - }; - - export type AccountAccessStructOutput = [ - VmSafe.ChainInfoStructOutput, - number, - string, - string, - boolean, - BigNumber, - BigNumber, - string, - BigNumber, - string, - boolean, - VmSafe.StorageAccessStructOutput[], - BigNumber - ] & { - chainInfo: VmSafe.ChainInfoStructOutput; - kind: number; - account: string; - accessor: string; - initialized: boolean; - oldBalance: BigNumber; - newBalance: BigNumber; - deployedCode: string; - value: BigNumber; - data: string; - reverted: boolean; - storageAccesses: VmSafe.StorageAccessStructOutput[]; - depth: BigNumber; - }; - - export type FfiResultStruct = { - exitCode: PromiseOrValue; - stdout: PromiseOrValue; - stderr: PromiseOrValue; - }; - - export type FfiResultStructOutput = [number, string, string] & { - exitCode: number; - stdout: string; - stderr: string; - }; -} - -export interface VmSafeInterface extends utils.Interface { - functions: { - "accesses(address)": FunctionFragment; - "addr(uint256)": FunctionFragment; - "assertApproxEqAbs(uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbs(int256,int256,uint256)": FunctionFragment; - "assertApproxEqAbs(int256,int256,uint256,string)": FunctionFragment; - "assertApproxEqAbs(uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)": FunctionFragment; - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRel(uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRel(uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqRel(int256,int256,uint256,string)": FunctionFragment; - "assertApproxEqRel(int256,int256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment; - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)": FunctionFragment; - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)": FunctionFragment; - "assertEq(bytes32[],bytes32[])": FunctionFragment; - "assertEq(int256[],int256[],string)": FunctionFragment; - "assertEq(address,address,string)": FunctionFragment; - "assertEq(string,string,string)": FunctionFragment; - "assertEq(address[],address[])": FunctionFragment; - "assertEq(address[],address[],string)": FunctionFragment; - "assertEq(bool,bool,string)": FunctionFragment; - "assertEq(address,address)": FunctionFragment; - "assertEq(uint256[],uint256[],string)": FunctionFragment; - "assertEq(bool[],bool[])": FunctionFragment; - "assertEq(int256[],int256[])": FunctionFragment; - "assertEq(int256,int256,string)": FunctionFragment; - "assertEq(bytes32,bytes32)": FunctionFragment; - "assertEq(uint256,uint256,string)": FunctionFragment; - "assertEq(uint256[],uint256[])": FunctionFragment; - "assertEq(bytes,bytes)": FunctionFragment; - "assertEq(uint256,uint256)": FunctionFragment; - "assertEq(bytes32,bytes32,string)": FunctionFragment; - "assertEq(string[],string[])": FunctionFragment; - "assertEq(bytes32[],bytes32[],string)": FunctionFragment; - "assertEq(bytes,bytes,string)": FunctionFragment; - "assertEq(bool[],bool[],string)": FunctionFragment; - "assertEq(bytes[],bytes[])": FunctionFragment; - "assertEq(string[],string[],string)": FunctionFragment; - "assertEq(string,string)": FunctionFragment; - "assertEq(bytes[],bytes[],string)": FunctionFragment; - "assertEq(bool,bool)": FunctionFragment; - "assertEq(int256,int256)": FunctionFragment; - "assertEqDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertEqDecimal(int256,int256,uint256)": FunctionFragment; - "assertEqDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertEqDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertFalse(bool,string)": FunctionFragment; - "assertFalse(bool)": FunctionFragment; - "assertGe(int256,int256)": FunctionFragment; - "assertGe(int256,int256,string)": FunctionFragment; - "assertGe(uint256,uint256)": FunctionFragment; - "assertGe(uint256,uint256,string)": FunctionFragment; - "assertGeDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertGeDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertGeDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertGeDecimal(int256,int256,uint256)": FunctionFragment; - "assertGt(int256,int256)": FunctionFragment; - "assertGt(uint256,uint256,string)": FunctionFragment; - "assertGt(uint256,uint256)": FunctionFragment; - "assertGt(int256,int256,string)": FunctionFragment; - "assertGtDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertGtDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertGtDecimal(int256,int256,uint256)": FunctionFragment; - "assertGtDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLe(int256,int256,string)": FunctionFragment; - "assertLe(uint256,uint256)": FunctionFragment; - "assertLe(int256,int256)": FunctionFragment; - "assertLe(uint256,uint256,string)": FunctionFragment; - "assertLeDecimal(int256,int256,uint256)": FunctionFragment; - "assertLeDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertLeDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertLeDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLt(int256,int256)": FunctionFragment; - "assertLt(uint256,uint256,string)": FunctionFragment; - "assertLt(int256,int256,string)": FunctionFragment; - "assertLt(uint256,uint256)": FunctionFragment; - "assertLtDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertLtDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertLtDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertLtDecimal(int256,int256,uint256)": FunctionFragment; - "assertNotEq(bytes32[],bytes32[])": FunctionFragment; - "assertNotEq(int256[],int256[])": FunctionFragment; - "assertNotEq(bool,bool,string)": FunctionFragment; - "assertNotEq(bytes[],bytes[],string)": FunctionFragment; - "assertNotEq(bool,bool)": FunctionFragment; - "assertNotEq(bool[],bool[])": FunctionFragment; - "assertNotEq(bytes,bytes)": FunctionFragment; - "assertNotEq(address[],address[])": FunctionFragment; - "assertNotEq(int256,int256,string)": FunctionFragment; - "assertNotEq(uint256[],uint256[])": FunctionFragment; - "assertNotEq(bool[],bool[],string)": FunctionFragment; - "assertNotEq(string,string)": FunctionFragment; - "assertNotEq(address[],address[],string)": FunctionFragment; - "assertNotEq(string,string,string)": FunctionFragment; - "assertNotEq(address,address,string)": FunctionFragment; - "assertNotEq(bytes32,bytes32)": FunctionFragment; - "assertNotEq(bytes,bytes,string)": FunctionFragment; - "assertNotEq(uint256,uint256,string)": FunctionFragment; - "assertNotEq(uint256[],uint256[],string)": FunctionFragment; - "assertNotEq(address,address)": FunctionFragment; - "assertNotEq(bytes32,bytes32,string)": FunctionFragment; - "assertNotEq(string[],string[],string)": FunctionFragment; - "assertNotEq(uint256,uint256)": FunctionFragment; - "assertNotEq(bytes32[],bytes32[],string)": FunctionFragment; - "assertNotEq(string[],string[])": FunctionFragment; - "assertNotEq(int256[],int256[],string)": FunctionFragment; - "assertNotEq(bytes[],bytes[])": FunctionFragment; - "assertNotEq(int256,int256)": FunctionFragment; - "assertNotEqDecimal(int256,int256,uint256)": FunctionFragment; - "assertNotEqDecimal(int256,int256,uint256,string)": FunctionFragment; - "assertNotEqDecimal(uint256,uint256,uint256)": FunctionFragment; - "assertNotEqDecimal(uint256,uint256,uint256,string)": FunctionFragment; - "assertTrue(bool)": FunctionFragment; - "assertTrue(bool,string)": FunctionFragment; - "assume(bool)": FunctionFragment; - "breakpoint(string)": FunctionFragment; - "breakpoint(string,bool)": FunctionFragment; - "broadcast()": FunctionFragment; - "broadcast(address)": FunctionFragment; - "broadcast(uint256)": FunctionFragment; - "closeFile(string)": FunctionFragment; - "computeCreate2Address(bytes32,bytes32)": FunctionFragment; - "computeCreate2Address(bytes32,bytes32,address)": FunctionFragment; - "computeCreateAddress(address,uint256)": FunctionFragment; - "copyFile(string,string)": FunctionFragment; - "createDir(string,bool)": FunctionFragment; - "createWallet(string)": FunctionFragment; - "createWallet(uint256)": FunctionFragment; - "createWallet(uint256,string)": FunctionFragment; - "deriveKey(string,string,uint32,string)": FunctionFragment; - "deriveKey(string,uint32,string)": FunctionFragment; - "deriveKey(string,uint32)": FunctionFragment; - "deriveKey(string,string,uint32)": FunctionFragment; - "ensNamehash(string)": FunctionFragment; - "envAddress(string)": FunctionFragment; - "envAddress(string,string)": FunctionFragment; - "envBool(string)": FunctionFragment; - "envBool(string,string)": FunctionFragment; - "envBytes(string)": FunctionFragment; - "envBytes(string,string)": FunctionFragment; - "envBytes32(string,string)": FunctionFragment; - "envBytes32(string)": FunctionFragment; - "envExists(string)": FunctionFragment; - "envInt(string,string)": FunctionFragment; - "envInt(string)": FunctionFragment; - "envOr(string,string,bytes32[])": FunctionFragment; - "envOr(string,string,int256[])": FunctionFragment; - "envOr(string,bool)": FunctionFragment; - "envOr(string,address)": FunctionFragment; - "envOr(string,uint256)": FunctionFragment; - "envOr(string,string,bytes[])": FunctionFragment; - "envOr(string,string,uint256[])": FunctionFragment; - "envOr(string,string,string[])": FunctionFragment; - "envOr(string,bytes)": FunctionFragment; - "envOr(string,bytes32)": FunctionFragment; - "envOr(string,int256)": FunctionFragment; - "envOr(string,string,address[])": FunctionFragment; - "envOr(string,string)": FunctionFragment; - "envOr(string,string,bool[])": FunctionFragment; - "envString(string,string)": FunctionFragment; - "envString(string)": FunctionFragment; - "envUint(string)": FunctionFragment; - "envUint(string,string)": FunctionFragment; - "eth_getLogs(uint256,uint256,address,bytes32[])": FunctionFragment; - "exists(string)": FunctionFragment; - "ffi(string[])": FunctionFragment; - "fsMetadata(string)": FunctionFragment; - "getBlobBaseFee()": FunctionFragment; - "getBlockNumber()": FunctionFragment; - "getBlockTimestamp()": FunctionFragment; - "getCode(string)": FunctionFragment; - "getDeployedCode(string)": FunctionFragment; - "getLabel(address)": FunctionFragment; - "getMappingKeyAndParentOf(address,bytes32)": FunctionFragment; - "getMappingLength(address,bytes32)": FunctionFragment; - "getMappingSlotAt(address,bytes32,uint256)": FunctionFragment; - "getNonce(address)": FunctionFragment; - "getNonce((address,uint256,uint256,uint256))": FunctionFragment; - "getRecordedLogs()": FunctionFragment; - "indexOf(string,string)": FunctionFragment; - "isContext(uint8)": FunctionFragment; - "isDir(string)": FunctionFragment; - "isFile(string)": FunctionFragment; - "keyExists(string,string)": FunctionFragment; - "keyExistsJson(string,string)": FunctionFragment; - "keyExistsToml(string,string)": FunctionFragment; - "label(address,string)": FunctionFragment; - "lastCallGas()": FunctionFragment; - "load(address,bytes32)": FunctionFragment; - "parseAddress(string)": FunctionFragment; - "parseBool(string)": FunctionFragment; - "parseBytes(string)": FunctionFragment; - "parseBytes32(string)": FunctionFragment; - "parseInt(string)": FunctionFragment; - "parseJson(string)": FunctionFragment; - "parseJson(string,string)": FunctionFragment; - "parseJsonAddress(string,string)": FunctionFragment; - "parseJsonAddressArray(string,string)": FunctionFragment; - "parseJsonBool(string,string)": FunctionFragment; - "parseJsonBoolArray(string,string)": FunctionFragment; - "parseJsonBytes(string,string)": FunctionFragment; - "parseJsonBytes32(string,string)": FunctionFragment; - "parseJsonBytes32Array(string,string)": FunctionFragment; - "parseJsonBytesArray(string,string)": FunctionFragment; - "parseJsonInt(string,string)": FunctionFragment; - "parseJsonIntArray(string,string)": FunctionFragment; - "parseJsonKeys(string,string)": FunctionFragment; - "parseJsonString(string,string)": FunctionFragment; - "parseJsonStringArray(string,string)": FunctionFragment; - "parseJsonUint(string,string)": FunctionFragment; - "parseJsonUintArray(string,string)": FunctionFragment; - "parseToml(string,string)": FunctionFragment; - "parseToml(string)": FunctionFragment; - "parseTomlAddress(string,string)": FunctionFragment; - "parseTomlAddressArray(string,string)": FunctionFragment; - "parseTomlBool(string,string)": FunctionFragment; - "parseTomlBoolArray(string,string)": FunctionFragment; - "parseTomlBytes(string,string)": FunctionFragment; - "parseTomlBytes32(string,string)": FunctionFragment; - "parseTomlBytes32Array(string,string)": FunctionFragment; - "parseTomlBytesArray(string,string)": FunctionFragment; - "parseTomlInt(string,string)": FunctionFragment; - "parseTomlIntArray(string,string)": FunctionFragment; - "parseTomlKeys(string,string)": FunctionFragment; - "parseTomlString(string,string)": FunctionFragment; - "parseTomlStringArray(string,string)": FunctionFragment; - "parseTomlUint(string,string)": FunctionFragment; - "parseTomlUintArray(string,string)": FunctionFragment; - "parseUint(string)": FunctionFragment; - "pauseGasMetering()": FunctionFragment; - "projectRoot()": FunctionFragment; - "prompt(string)": FunctionFragment; - "promptAddress(string)": FunctionFragment; - "promptSecret(string)": FunctionFragment; - "promptSecretUint(string)": FunctionFragment; - "promptUint(string)": FunctionFragment; - "randomAddress()": FunctionFragment; - "randomUint()": FunctionFragment; - "randomUint(uint256,uint256)": FunctionFragment; - "readDir(string,uint64)": FunctionFragment; - "readDir(string,uint64,bool)": FunctionFragment; - "readDir(string)": FunctionFragment; - "readFile(string)": FunctionFragment; - "readFileBinary(string)": FunctionFragment; - "readLine(string)": FunctionFragment; - "readLink(string)": FunctionFragment; - "record()": FunctionFragment; - "recordLogs()": FunctionFragment; - "rememberKey(uint256)": FunctionFragment; - "removeDir(string,bool)": FunctionFragment; - "removeFile(string)": FunctionFragment; - "replace(string,string,string)": FunctionFragment; - "resumeGasMetering()": FunctionFragment; - "rpc(string,string)": FunctionFragment; - "rpcUrl(string)": FunctionFragment; - "rpcUrlStructs()": FunctionFragment; - "rpcUrls()": FunctionFragment; - "serializeAddress(string,string,address[])": FunctionFragment; - "serializeAddress(string,string,address)": FunctionFragment; - "serializeBool(string,string,bool[])": FunctionFragment; - "serializeBool(string,string,bool)": FunctionFragment; - "serializeBytes(string,string,bytes[])": FunctionFragment; - "serializeBytes(string,string,bytes)": FunctionFragment; - "serializeBytes32(string,string,bytes32[])": FunctionFragment; - "serializeBytes32(string,string,bytes32)": FunctionFragment; - "serializeInt(string,string,int256)": FunctionFragment; - "serializeInt(string,string,int256[])": FunctionFragment; - "serializeJson(string,string)": FunctionFragment; - "serializeString(string,string,string[])": FunctionFragment; - "serializeString(string,string,string)": FunctionFragment; - "serializeUint(string,string,uint256)": FunctionFragment; - "serializeUint(string,string,uint256[])": FunctionFragment; - "serializeUintToHex(string,string,uint256)": FunctionFragment; - "setEnv(string,string)": FunctionFragment; - "sign(bytes32)": FunctionFragment; - "sign(address,bytes32)": FunctionFragment; - "sign((address,uint256,uint256,uint256),bytes32)": FunctionFragment; - "sign(uint256,bytes32)": FunctionFragment; - "signP256(uint256,bytes32)": FunctionFragment; - "sleep(uint256)": FunctionFragment; - "split(string,string)": FunctionFragment; - "startBroadcast()": FunctionFragment; - "startBroadcast(address)": FunctionFragment; - "startBroadcast(uint256)": FunctionFragment; - "startMappingRecording()": FunctionFragment; - "startStateDiffRecording()": FunctionFragment; - "stopAndReturnStateDiff()": FunctionFragment; - "stopBroadcast()": FunctionFragment; - "stopMappingRecording()": FunctionFragment; - "toBase64(string)": FunctionFragment; - "toBase64(bytes)": FunctionFragment; - "toBase64URL(string)": FunctionFragment; - "toBase64URL(bytes)": FunctionFragment; - "toLowercase(string)": FunctionFragment; - "toString(address)": FunctionFragment; - "toString(uint256)": FunctionFragment; - "toString(bytes)": FunctionFragment; - "toString(bool)": FunctionFragment; - "toString(int256)": FunctionFragment; - "toString(bytes32)": FunctionFragment; - "toUppercase(string)": FunctionFragment; - "trim(string)": FunctionFragment; - "tryFfi(string[])": FunctionFragment; - "unixTime()": FunctionFragment; - "writeFile(string,string)": FunctionFragment; - "writeFileBinary(string,bytes)": FunctionFragment; - "writeJson(string,string,string)": FunctionFragment; - "writeJson(string,string)": FunctionFragment; - "writeLine(string,string)": FunctionFragment; - "writeToml(string,string,string)": FunctionFragment; - "writeToml(string,string)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "accesses" - | "addr" - | "assertApproxEqAbs(uint256,uint256,uint256)" - | "assertApproxEqAbs(int256,int256,uint256)" - | "assertApproxEqAbs(int256,int256,uint256,string)" - | "assertApproxEqAbs(uint256,uint256,uint256,string)" - | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" - | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" - | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" - | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" - | "assertApproxEqRel(uint256,uint256,uint256,string)" - | "assertApproxEqRel(uint256,uint256,uint256)" - | "assertApproxEqRel(int256,int256,uint256,string)" - | "assertApproxEqRel(int256,int256,uint256)" - | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" - | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" - | "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" - | "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" - | "assertEq(bytes32[],bytes32[])" - | "assertEq(int256[],int256[],string)" - | "assertEq(address,address,string)" - | "assertEq(string,string,string)" - | "assertEq(address[],address[])" - | "assertEq(address[],address[],string)" - | "assertEq(bool,bool,string)" - | "assertEq(address,address)" - | "assertEq(uint256[],uint256[],string)" - | "assertEq(bool[],bool[])" - | "assertEq(int256[],int256[])" - | "assertEq(int256,int256,string)" - | "assertEq(bytes32,bytes32)" - | "assertEq(uint256,uint256,string)" - | "assertEq(uint256[],uint256[])" - | "assertEq(bytes,bytes)" - | "assertEq(uint256,uint256)" - | "assertEq(bytes32,bytes32,string)" - | "assertEq(string[],string[])" - | "assertEq(bytes32[],bytes32[],string)" - | "assertEq(bytes,bytes,string)" - | "assertEq(bool[],bool[],string)" - | "assertEq(bytes[],bytes[])" - | "assertEq(string[],string[],string)" - | "assertEq(string,string)" - | "assertEq(bytes[],bytes[],string)" - | "assertEq(bool,bool)" - | "assertEq(int256,int256)" - | "assertEqDecimal(uint256,uint256,uint256)" - | "assertEqDecimal(int256,int256,uint256)" - | "assertEqDecimal(int256,int256,uint256,string)" - | "assertEqDecimal(uint256,uint256,uint256,string)" - | "assertFalse(bool,string)" - | "assertFalse(bool)" - | "assertGe(int256,int256)" - | "assertGe(int256,int256,string)" - | "assertGe(uint256,uint256)" - | "assertGe(uint256,uint256,string)" - | "assertGeDecimal(uint256,uint256,uint256)" - | "assertGeDecimal(int256,int256,uint256,string)" - | "assertGeDecimal(uint256,uint256,uint256,string)" - | "assertGeDecimal(int256,int256,uint256)" - | "assertGt(int256,int256)" - | "assertGt(uint256,uint256,string)" - | "assertGt(uint256,uint256)" - | "assertGt(int256,int256,string)" - | "assertGtDecimal(int256,int256,uint256,string)" - | "assertGtDecimal(uint256,uint256,uint256,string)" - | "assertGtDecimal(int256,int256,uint256)" - | "assertGtDecimal(uint256,uint256,uint256)" - | "assertLe(int256,int256,string)" - | "assertLe(uint256,uint256)" - | "assertLe(int256,int256)" - | "assertLe(uint256,uint256,string)" - | "assertLeDecimal(int256,int256,uint256)" - | "assertLeDecimal(uint256,uint256,uint256,string)" - | "assertLeDecimal(int256,int256,uint256,string)" - | "assertLeDecimal(uint256,uint256,uint256)" - | "assertLt(int256,int256)" - | "assertLt(uint256,uint256,string)" - | "assertLt(int256,int256,string)" - | "assertLt(uint256,uint256)" - | "assertLtDecimal(uint256,uint256,uint256)" - | "assertLtDecimal(int256,int256,uint256,string)" - | "assertLtDecimal(uint256,uint256,uint256,string)" - | "assertLtDecimal(int256,int256,uint256)" - | "assertNotEq(bytes32[],bytes32[])" - | "assertNotEq(int256[],int256[])" - | "assertNotEq(bool,bool,string)" - | "assertNotEq(bytes[],bytes[],string)" - | "assertNotEq(bool,bool)" - | "assertNotEq(bool[],bool[])" - | "assertNotEq(bytes,bytes)" - | "assertNotEq(address[],address[])" - | "assertNotEq(int256,int256,string)" - | "assertNotEq(uint256[],uint256[])" - | "assertNotEq(bool[],bool[],string)" - | "assertNotEq(string,string)" - | "assertNotEq(address[],address[],string)" - | "assertNotEq(string,string,string)" - | "assertNotEq(address,address,string)" - | "assertNotEq(bytes32,bytes32)" - | "assertNotEq(bytes,bytes,string)" - | "assertNotEq(uint256,uint256,string)" - | "assertNotEq(uint256[],uint256[],string)" - | "assertNotEq(address,address)" - | "assertNotEq(bytes32,bytes32,string)" - | "assertNotEq(string[],string[],string)" - | "assertNotEq(uint256,uint256)" - | "assertNotEq(bytes32[],bytes32[],string)" - | "assertNotEq(string[],string[])" - | "assertNotEq(int256[],int256[],string)" - | "assertNotEq(bytes[],bytes[])" - | "assertNotEq(int256,int256)" - | "assertNotEqDecimal(int256,int256,uint256)" - | "assertNotEqDecimal(int256,int256,uint256,string)" - | "assertNotEqDecimal(uint256,uint256,uint256)" - | "assertNotEqDecimal(uint256,uint256,uint256,string)" - | "assertTrue(bool)" - | "assertTrue(bool,string)" - | "assume" - | "breakpoint(string)" - | "breakpoint(string,bool)" - | "broadcast()" - | "broadcast(address)" - | "broadcast(uint256)" - | "closeFile" - | "computeCreate2Address(bytes32,bytes32)" - | "computeCreate2Address(bytes32,bytes32,address)" - | "computeCreateAddress" - | "copyFile" - | "createDir" - | "createWallet(string)" - | "createWallet(uint256)" - | "createWallet(uint256,string)" - | "deriveKey(string,string,uint32,string)" - | "deriveKey(string,uint32,string)" - | "deriveKey(string,uint32)" - | "deriveKey(string,string,uint32)" - | "ensNamehash" - | "envAddress(string)" - | "envAddress(string,string)" - | "envBool(string)" - | "envBool(string,string)" - | "envBytes(string)" - | "envBytes(string,string)" - | "envBytes32(string,string)" - | "envBytes32(string)" - | "envExists" - | "envInt(string,string)" - | "envInt(string)" - | "envOr(string,string,bytes32[])" - | "envOr(string,string,int256[])" - | "envOr(string,bool)" - | "envOr(string,address)" - | "envOr(string,uint256)" - | "envOr(string,string,bytes[])" - | "envOr(string,string,uint256[])" - | "envOr(string,string,string[])" - | "envOr(string,bytes)" - | "envOr(string,bytes32)" - | "envOr(string,int256)" - | "envOr(string,string,address[])" - | "envOr(string,string)" - | "envOr(string,string,bool[])" - | "envString(string,string)" - | "envString(string)" - | "envUint(string)" - | "envUint(string,string)" - | "eth_getLogs" - | "exists" - | "ffi" - | "fsMetadata" - | "getBlobBaseFee" - | "getBlockNumber" - | "getBlockTimestamp" - | "getCode" - | "getDeployedCode" - | "getLabel" - | "getMappingKeyAndParentOf" - | "getMappingLength" - | "getMappingSlotAt" - | "getNonce(address)" - | "getNonce((address,uint256,uint256,uint256))" - | "getRecordedLogs" - | "indexOf" - | "isContext" - | "isDir" - | "isFile" - | "keyExists" - | "keyExistsJson" - | "keyExistsToml" - | "label" - | "lastCallGas" - | "load" - | "parseAddress" - | "parseBool" - | "parseBytes" - | "parseBytes32" - | "parseInt" - | "parseJson(string)" - | "parseJson(string,string)" - | "parseJsonAddress" - | "parseJsonAddressArray" - | "parseJsonBool" - | "parseJsonBoolArray" - | "parseJsonBytes" - | "parseJsonBytes32" - | "parseJsonBytes32Array" - | "parseJsonBytesArray" - | "parseJsonInt" - | "parseJsonIntArray" - | "parseJsonKeys" - | "parseJsonString" - | "parseJsonStringArray" - | "parseJsonUint" - | "parseJsonUintArray" - | "parseToml(string,string)" - | "parseToml(string)" - | "parseTomlAddress" - | "parseTomlAddressArray" - | "parseTomlBool" - | "parseTomlBoolArray" - | "parseTomlBytes" - | "parseTomlBytes32" - | "parseTomlBytes32Array" - | "parseTomlBytesArray" - | "parseTomlInt" - | "parseTomlIntArray" - | "parseTomlKeys" - | "parseTomlString" - | "parseTomlStringArray" - | "parseTomlUint" - | "parseTomlUintArray" - | "parseUint" - | "pauseGasMetering" - | "projectRoot" - | "prompt" - | "promptAddress" - | "promptSecret" - | "promptSecretUint" - | "promptUint" - | "randomAddress" - | "randomUint()" - | "randomUint(uint256,uint256)" - | "readDir(string,uint64)" - | "readDir(string,uint64,bool)" - | "readDir(string)" - | "readFile" - | "readFileBinary" - | "readLine" - | "readLink" - | "record" - | "recordLogs" - | "rememberKey" - | "removeDir" - | "removeFile" - | "replace" - | "resumeGasMetering" - | "rpc" - | "rpcUrl" - | "rpcUrlStructs" - | "rpcUrls" - | "serializeAddress(string,string,address[])" - | "serializeAddress(string,string,address)" - | "serializeBool(string,string,bool[])" - | "serializeBool(string,string,bool)" - | "serializeBytes(string,string,bytes[])" - | "serializeBytes(string,string,bytes)" - | "serializeBytes32(string,string,bytes32[])" - | "serializeBytes32(string,string,bytes32)" - | "serializeInt(string,string,int256)" - | "serializeInt(string,string,int256[])" - | "serializeJson" - | "serializeString(string,string,string[])" - | "serializeString(string,string,string)" - | "serializeUint(string,string,uint256)" - | "serializeUint(string,string,uint256[])" - | "serializeUintToHex" - | "setEnv" - | "sign(bytes32)" - | "sign(address,bytes32)" - | "sign((address,uint256,uint256,uint256),bytes32)" - | "sign(uint256,bytes32)" - | "signP256" - | "sleep" - | "split" - | "startBroadcast()" - | "startBroadcast(address)" - | "startBroadcast(uint256)" - | "startMappingRecording" - | "startStateDiffRecording" - | "stopAndReturnStateDiff" - | "stopBroadcast" - | "stopMappingRecording" - | "toBase64(string)" - | "toBase64(bytes)" - | "toBase64URL(string)" - | "toBase64URL(bytes)" - | "toLowercase" - | "toString(address)" - | "toString(uint256)" - | "toString(bytes)" - | "toString(bool)" - | "toString(int256)" - | "toString(bytes32)" - | "toUppercase" - | "trim" - | "tryFfi" - | "unixTime" - | "writeFile" - | "writeFileBinary" - | "writeJson(string,string,string)" - | "writeJson(string,string)" - | "writeLine" - | "writeToml(string,string,string)" - | "writeToml(string,string)" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "accesses", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "addr", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRel(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32[],bytes32[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256[],int256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address,address,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address[],address[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address[],address[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool,bool,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256[],uint256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool[],bool[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256[],int256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256[],uint256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32,bytes32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string[],string[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes32[],bytes32[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes,bytes,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool[],bool[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string[],string[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bytes[],bytes[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEq(bool,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEq(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertFalse(bool,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertFalse(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGe(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGe(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGeDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGt(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGt(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGt(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertGt(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertGtDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLe(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLe(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLe(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLe(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLeDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLt(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLt(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertLtDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32[],bytes32[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256[],int256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool,bool,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes[],bytes[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool[],bool[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address[],address[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256,int256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256[],uint256[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bool[],bool[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address[],address[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address,address,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes,bytes,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256[],uint256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(address,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32,bytes32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string[],string[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes32[],bytes32[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(string[],string[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256[],int256[],string)", - values: [ - PromiseOrValue[], - PromiseOrValue[], - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(bytes[],bytes[])", - values: [PromiseOrValue[], PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "assertNotEq(int256,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(int256,int256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "assertTrue(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assertTrue(bool,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "assume", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "breakpoint(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "breakpoint(string,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "broadcast()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "broadcast(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "broadcast(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "closeFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "computeCreate2Address(bytes32,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "computeCreate2Address(bytes32,bytes32,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "computeCreateAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "copyFile", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createDir", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "createWallet(uint256,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,string,uint32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,uint32,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,uint32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "deriveKey(string,string,uint32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "ensNamehash", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envAddress(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envAddress(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBool(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBool(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes32(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envBytes32(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envExists", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envInt(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envInt(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bytes32[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,int256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bool)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,address)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,uint256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,string[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bytes)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,int256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,address[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envOr(string,string,bool[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "envString(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envString(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envUint(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "envUint(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "eth_getLogs", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "exists", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "ffi", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData( - functionFragment: "fsMetadata", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getBlobBaseFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlockNumber", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlockTimestamp", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCode", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getDeployedCode", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getLabel", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingKeyAndParentOf", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingLength", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getMappingSlotAt", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "getNonce(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getNonce((address,uint256,uint256,uint256))", - values: [VmSafe.WalletStruct] - ): string; - encodeFunctionData( - functionFragment: "getRecordedLogs", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "indexOf", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isContext", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isDir", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExists", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExistsJson", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "keyExistsToml", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "label", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "lastCallGas", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "load", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBool", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBytes", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseBytes32", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseInt", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJson(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJson(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonAddressArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBool", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBoolArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes32", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytes32Array", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonBytesArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonInt", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonIntArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonKeys", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonString", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonStringArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonUint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseJsonUintArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseToml(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseToml(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlAddress", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlAddressArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBool", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBoolArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes32", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytes32Array", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlBytesArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlInt", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlIntArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlKeys", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlString", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlStringArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlUint", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseTomlUintArray", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "parseUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "pauseGasMetering", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "projectRoot", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "prompt", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptSecret", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptSecretUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "promptUint", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "randomAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "randomUint()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "randomUint(uint256,uint256)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readDir(string,uint64)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readDir(string,uint64,bool)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "readDir(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readFileBinary", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readLine", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "readLink", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "record", values?: undefined): string; - encodeFunctionData( - functionFragment: "recordLogs", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "rememberKey", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "removeDir", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "removeFile", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "replace", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "resumeGasMetering", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "rpc", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rpcUrl", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "rpcUrlStructs", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "rpcUrls", values?: undefined): string; - encodeFunctionData( - functionFragment: "serializeAddress(string,string,address[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeAddress(string,string,address)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBool(string,string,bool[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBool(string,string,bool)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes(string,string,bytes[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes(string,string,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes32(string,string,bytes32[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeBytes32(string,string,bytes32)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeInt(string,string,int256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeInt(string,string,int256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeJson", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "serializeString(string,string,string[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeString(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUint(string,string,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUint(string,string,uint256[])", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue[] - ] - ): string; - encodeFunctionData( - functionFragment: "serializeUintToHex", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setEnv", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(address,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", - values: [VmSafe.WalletStruct, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sign(uint256,bytes32)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "signP256", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "sleep", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "split", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startBroadcast()", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "startBroadcast(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startBroadcast(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "startMappingRecording", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "startStateDiffRecording", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopAndReturnStateDiff", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopBroadcast", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "stopMappingRecording", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "toBase64(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64URL(string)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toBase64URL(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toLowercase", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(address)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(uint256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bytes)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bool)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(int256)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toString(bytes32)", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "toUppercase", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "trim", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tryFfi", - values: [PromiseOrValue[]] - ): string; - encodeFunctionData(functionFragment: "unixTime", values?: undefined): string; - encodeFunctionData( - functionFragment: "writeFile", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeFileBinary", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeJson(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "writeJson(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeLine", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "writeToml(string,string,string)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "writeToml(string,string)", - values: [PromiseOrValue, PromiseOrValue] - ): string; - - decodeFunctionResult(functionFragment: "accesses", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "addr", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRel(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32[],bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256[],int256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address,address,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address[],address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address[],address[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool,bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256[],uint256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool[],bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256[],int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256[],uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32,bytes32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string[],string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes32[],bytes32[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes,bytes,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool[],bool[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes[],bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string[],string[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bytes[],bytes[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(bool,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEq(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertFalse(bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertFalse(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGe(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGeDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGt(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertGtDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLe(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLeDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLt(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertLtDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32[],bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256[],int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool,bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes[],bytes[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool[],bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address[],address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256,int256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256[],uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bool[],bool[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address[],address[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address,address,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes,bytes,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256[],uint256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(address,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32,bytes32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string[],string[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes32[],bytes32[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(string[],string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256[],int256[],string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(bytes[],bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEq(int256,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(int256,int256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertTrue(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "assertTrue(bool,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "assume", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "breakpoint(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "breakpoint(string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "broadcast(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "closeFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "computeCreate2Address(bytes32,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "computeCreate2Address(bytes32,bytes32,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "computeCreateAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "copyFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "createDir", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "createWallet(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createWallet(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createWallet(uint256,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,string,uint32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,uint32,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,uint32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "deriveKey(string,string,uint32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "ensNamehash", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envAddress(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envAddress(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBool(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBool(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes32(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envBytes32(string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "envExists", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "envInt(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envInt(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envOr(string,string,bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envString(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envString(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envUint(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "envUint(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "eth_getLogs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ffi", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "fsMetadata", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getBlobBaseFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlockTimestamp", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getCode", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getDeployedCode", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getLabel", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getMappingKeyAndParentOf", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getMappingLength", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getMappingSlotAt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNonce(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNonce((address,uint256,uint256,uint256))", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getRecordedLogs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "indexOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isContext", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isDir", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "keyExists", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "keyExistsJson", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "keyExistsToml", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "label", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "lastCallGas", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "load", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "parseAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseBool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "parseBytes", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "parseBytes32", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseInt", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "parseJson(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJson(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonAddressArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBool", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBoolArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes32", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytes32Array", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonBytesArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonInt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonIntArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonKeys", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonString", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonStringArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonUint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseJsonUintArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseToml(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseToml(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlAddressArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBool", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBoolArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes32", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytes32Array", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlBytesArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlInt", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlIntArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlKeys", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlString", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlStringArray", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlUint", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "parseTomlUintArray", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "parseUint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "pauseGasMetering", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "projectRoot", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "prompt", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "promptAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "promptSecret", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "promptSecretUint", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "promptUint", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "randomAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "randomUint()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "randomUint(uint256,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string,uint64)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string,uint64,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "readDir(string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "readFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "readFileBinary", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "readLine", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "readLink", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "record", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "recordLogs", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "rememberKey", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "removeDir", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "removeFile", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "replace", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "resumeGasMetering", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "rpc", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "rpcUrl", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "rpcUrlStructs", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "rpcUrls", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "serializeAddress(string,string,address[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeAddress(string,string,address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBool(string,string,bool[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBool(string,string,bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes(string,string,bytes[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes(string,string,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes32(string,string,bytes32[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeBytes32(string,string,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeInt(string,string,int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeInt(string,string,int256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeJson", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeString(string,string,string[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeString(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUint(string,string,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUint(string,string,uint256[])", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "serializeUintToHex", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setEnv", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "sign(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign(address,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "sign(uint256,bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "signP256", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "sleep", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "split", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "startBroadcast()", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startBroadcast(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startBroadcast(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startMappingRecording", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "startStateDiffRecording", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopAndReturnStateDiff", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopBroadcast", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stopMappingRecording", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64URL(string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toBase64URL(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toLowercase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(address)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bool)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(int256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toString(bytes32)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "toUppercase", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "trim", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tryFfi", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "unixTime", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "writeFile", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "writeFileBinary", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeJson(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeJson(string,string)", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "writeLine", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "writeToml(string,string,string)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "writeToml(string,string)", - data: BytesLike - ): Result; - - events: {}; -} - -export interface VmSafe extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: VmSafeInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { keyAddr: string }>; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[void]>; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { privateKey: BigNumber }>; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { value: boolean }>; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]] & { value: boolean[] }>; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { result: boolean }>; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { value: boolean }>; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise<[boolean[]] & { value: boolean[] }>; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { value: string[] }>; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { value: string }>; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { value: BigNumber }>; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { value: BigNumber[] }>; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.FsMetadataStructOutput] & { - metadata: VmSafe.FsMetadataStructOutput; - } - >; - - getBlobBaseFee( - overrides?: CallOverrides - ): Promise<[BigNumber] & { blobBaseFee: BigNumber }>; - - getBlockNumber( - overrides?: CallOverrides - ): Promise<[BigNumber] & { height: BigNumber }>; - - getBlockTimestamp( - overrides?: CallOverrides - ): Promise<[BigNumber] & { timestamp: BigNumber }>; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { creationBytecode: string }>; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { runtimeBytecode: string }>; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { currentLabel: string }>; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { nonce: BigNumber }>; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { result: boolean }>; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas( - overrides?: CallOverrides - ): Promise<[VmSafe.GasStructOutput] & { gas: VmSafe.GasStructOutput }>; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean] & { parsedValue: boolean }>; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { parsedValue: string }>; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { parsedValue: BigNumber }>; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]]>; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { keys: string[] }>; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { abiEncodedData: string }>; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean[]]>; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { keys: string[] }>; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]]>; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { parsedValue: BigNumber }>; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot( - overrides?: CallOverrides - ): Promise<[string] & { path: string }>; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [VmSafe.DirEntryStructOutput[]] & { - entries: VmSafe.DirEntryStructOutput[]; - } - >; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { data: string }>; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { line: string }>; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { targetPath: string }>; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { json: string }>; - - rpcUrlStructs( - overrides?: CallOverrides - ): Promise<[VmSafe.RpcStructOutput[]] & { urls: VmSafe.RpcStructOutput[] }>; - - rpcUrls( - overrides?: CallOverrides - ): Promise<[[string, string][]] & { urls: [string, string][] }>; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string[]] & { outputs: string[] }>; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { stringifiedValue: string }>; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { output: string }>; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - accesses( - target: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [string[], string[]] & { readSlots: string[]; writeSlots: string[] } - >; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "broadcast()"(overrides?: CallOverrides): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: CallOverrides - ): Promise< - [boolean, string, string] & { - found: boolean; - key: string; - parent: string; - } - >; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: CallOverrides - ): Promise; - - getRecordedLogs( - overrides?: CallOverrides - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering(overrides?: CallOverrides): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - randomAddress(overrides?: CallOverrides): Promise; - - "randomUint()"(overrides?: CallOverrides): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record(overrides?: CallOverrides): Promise; - - recordLogs(overrides?: CallOverrides): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resumeGasMetering(overrides?: CallOverrides): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[number, string, string] & { v: number; r: string; s: string }>; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string, string] & { r: string; s: string }>; - - sleep( - duration: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"(overrides?: CallOverrides): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - startMappingRecording(overrides?: CallOverrides): Promise; - - startStateDiffRecording(overrides?: CallOverrides): Promise; - - stopAndReturnStateDiff( - overrides?: CallOverrides - ): Promise; - - stopBroadcast(overrides?: CallOverrides): Promise; - - stopMappingRecording(overrides?: CallOverrides): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - unixTime(overrides?: CallOverrides): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - accesses( - target: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - addr( - privateKey: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbs(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRel(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - maxPercentDelta: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertFalse(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertGtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLe(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLeDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLt(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertLtDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool,bool)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bool[],bool[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address[],address[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string,string,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes,bytes,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256[],uint256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(address,address)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32,bytes32,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes32[],bytes32[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(string[],string[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256[],int256[],string)"( - left: PromiseOrValue[], - right: PromiseOrValue[], - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEq(bytes[],bytes[])"( - left: PromiseOrValue[], - right: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "assertNotEq(int256,int256)"( - left: PromiseOrValue, - right: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(int256,int256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertNotEqDecimal(uint256,uint256,uint256,string)"( - left: PromiseOrValue, - right: PromiseOrValue, - decimals: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool)"( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "assertTrue(bool,string)"( - condition: PromiseOrValue, - error: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - assume( - condition: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "breakpoint(string)"( - char: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "breakpoint(string,bool)"( - char: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "broadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - closeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "computeCreate2Address(bytes32,bytes32)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "computeCreate2Address(bytes32,bytes32,address)"( - salt: PromiseOrValue, - initCodeHash: PromiseOrValue, - deployer: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - computeCreateAddress( - deployer: PromiseOrValue, - nonce: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - copyFile( - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - createDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(string)"( - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "createWallet(uint256,string)"( - privateKey: PromiseOrValue, - walletLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "deriveKey(string,string,uint32,string)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32,string)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - language: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,uint32)"( - mnemonic: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "deriveKey(string,string,uint32)"( - mnemonic: PromiseOrValue, - derivationPath: PromiseOrValue, - index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ensNamehash( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envAddress(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBool(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envBytes32(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - envExists( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envInt(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes32[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,int256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bool)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,address)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,uint256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bytes[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,uint256[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,string[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,bytes32)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,int256)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,address[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envOr(string,string)"( - name: PromiseOrValue, - defaultValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envOr(string,string,bool[])"( - name: PromiseOrValue, - delim: PromiseOrValue, - defaultValue: PromiseOrValue[], - overrides?: CallOverrides - ): Promise; - - "envString(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envString(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string)"( - name: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "envUint(string,string)"( - name: PromiseOrValue, - delim: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - eth_getLogs( - fromBlock: PromiseOrValue, - toBlock: PromiseOrValue, - target: PromiseOrValue, - topics: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - exists( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - ffi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - fsMetadata( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlobBaseFee(overrides?: CallOverrides): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getBlockTimestamp(overrides?: CallOverrides): Promise; - - getCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getDeployedCode( - artifactPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLabel( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getMappingKeyAndParentOf( - target: PromiseOrValue, - elementSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingLength( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getMappingSlotAt( - target: PromiseOrValue, - mappingSlot: PromiseOrValue, - idx: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "getNonce(address)"( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "getNonce((address,uint256,uint256,uint256))"( - wallet: VmSafe.WalletStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getRecordedLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - indexOf( - input: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isContext( - context: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isDir( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - keyExists( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsJson( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - keyExistsToml( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - label( - account: PromiseOrValue, - newLabel: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - lastCallGas(overrides?: CallOverrides): Promise; - - load( - target: PromiseOrValue, - slot: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseAddress( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBool( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseBytes32( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseInt( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string)"( - json: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseJson(string,string)"( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddress( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonAddressArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBool( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBoolArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytes32Array( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonBytesArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonInt( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonIntArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonKeys( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonString( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonStringArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUint( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseJsonUintArray( - json: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string,string)"( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "parseToml(string)"( - toml: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddress( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlAddressArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBool( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBoolArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytes32Array( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlBytesArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlInt( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlIntArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlKeys( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlString( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlStringArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUint( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseTomlUintArray( - toml: PromiseOrValue, - key: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - parseUint( - stringifiedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - pauseGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - projectRoot(overrides?: CallOverrides): Promise; - - prompt( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptAddress( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecret( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptSecretUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - promptUint( - promptText: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - randomAddress( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "randomUint(uint256,uint256)"( - min: PromiseOrValue, - max: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "readDir(string,uint64)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string,uint64,bool)"( - path: PromiseOrValue, - maxDepth: PromiseOrValue, - followLinks: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "readDir(string)"( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFile( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readFileBinary( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLine( - path: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - readLink( - linkPath: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - record( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - recordLogs( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rememberKey( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeDir( - path: PromiseOrValue, - recursive: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - removeFile( - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - replace( - input: PromiseOrValue, - from: PromiseOrValue, - to: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - resumeGasMetering( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpc( - method: PromiseOrValue, - params: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - rpcUrl( - rpcAlias: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - rpcUrlStructs(overrides?: CallOverrides): Promise; - - rpcUrls(overrides?: CallOverrides): Promise; - - "serializeAddress(string,string,address[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeAddress(string,string,address)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBool(string,string,bool)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes(string,string,bytes)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeBytes32(string,string,bytes32)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeInt(string,string,int256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeJson( - objectKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeString(string,string,string)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256)"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "serializeUint(string,string,uint256[])"( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - values: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - serializeUintToHex( - objectKey: PromiseOrValue, - valueKey: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setEnv( - name: PromiseOrValue, - value: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(bytes32)"( - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign(address,bytes32)"( - signer: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "sign((address,uint256,uint256,uint256),bytes32)"( - wallet: VmSafe.WalletStruct, - digest: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "sign(uint256,bytes32)"( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - signP256( - privateKey: PromiseOrValue, - digest: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - sleep( - duration: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - split( - input: PromiseOrValue, - delimiter: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "startBroadcast()"( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(address)"( - signer: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "startBroadcast(uint256)"( - privateKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - startStateDiffRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopAndReturnStateDiff( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopBroadcast( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - stopMappingRecording( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "toBase64(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(string)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toBase64URL(bytes)"( - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toLowercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(address)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(uint256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bool)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(int256)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "toString(bytes32)"( - value: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - toUppercase( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - trim( - input: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tryFfi( - commandInput: PromiseOrValue[], - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - unixTime( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFile( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeFileBinary( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeJson(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - writeLine( - path: PromiseOrValue, - data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - valueKey: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - "writeToml(string,string)"( - json: PromiseOrValue, - path: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/Vm.sol/index.ts b/v1/typechain-types/forge-std/Vm.sol/index.ts deleted file mode 100644 index 6ea1a166..00000000 --- a/v1/typechain-types/forge-std/Vm.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { Vm } from "./Vm"; -export type { VmSafe } from "./VmSafe"; diff --git a/v1/typechain-types/forge-std/index.ts b/v1/typechain-types/forge-std/index.ts deleted file mode 100644 index 8112c903..00000000 --- a/v1/typechain-types/forge-std/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as stdErrorSol from "./StdError.sol"; -export type { stdErrorSol }; -import type * as stdStorageSol from "./StdStorage.sol"; -export type { stdStorageSol }; -import type * as vmSol from "./Vm.sol"; -export type { vmSol }; -import type * as interfaces from "./interfaces"; -export type { interfaces }; -import type * as mocks from "./mocks"; -export type { mocks }; -export type { StdAssertions } from "./StdAssertions"; -export type { StdInvariant } from "./StdInvariant"; -export type { Test } from "./Test"; diff --git a/v1/typechain-types/forge-std/interfaces/IERC165.ts b/v1/typechain-types/forge-std/interfaces/IERC165.ts deleted file mode 100644 index e1645ae5..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC165.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface IERC165Interface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "supportsInterface"): FunctionFragment; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [PromiseOrValue] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC165 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC165Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC20.ts b/v1/typechain-types/forge-std/interfaces/IERC20.ts deleted file mode 100644 index 35a8ca5f..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC20.ts +++ /dev/null @@ -1,384 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface IERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts deleted file mode 100644 index 1b01fec3..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721.ts +++ /dev/null @@ -1,560 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IERC721Interface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "balanceOf" - | "getApproved" - | "isApprovedForAll" - | "ownerOf" - | "safeTransferFrom(address,address,uint256)" - | "safeTransferFrom(address,address,uint256,bytes)" - | "setApprovalForAll" - | "supportsInterface" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - _owner: string; - _approved: string; - _tokenId: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface ApprovalForAllEventObject { - _owner: string; - _operator: string; - _approved: boolean; -} -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - ApprovalForAllEventObject ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export interface TransferEventObject { - _from: string; - _to: string; - _tokenId: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - Approval( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - Transfer( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts deleted file mode 100644 index 9d2cc565..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Enumerable.ts +++ /dev/null @@ -1,655 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IERC721EnumerableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "tokenByIndex(uint256)": FunctionFragment; - "tokenOfOwnerByIndex(address,uint256)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "balanceOf" - | "getApproved" - | "isApprovedForAll" - | "ownerOf" - | "safeTransferFrom(address,address,uint256)" - | "safeTransferFrom(address,address,uint256,bytes)" - | "setApprovalForAll" - | "supportsInterface" - | "tokenByIndex" - | "tokenOfOwnerByIndex" - | "totalSupply" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tokenByIndex", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "tokenOfOwnerByIndex", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "tokenByIndex", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "tokenOfOwnerByIndex", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - _owner: string; - _approved: string; - _tokenId: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface ApprovalForAllEventObject { - _owner: string; - _operator: string; - _approved: boolean; -} -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - ApprovalForAllEventObject ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export interface TransferEventObject { - _from: string; - _to: string; - _tokenId: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721Enumerable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721EnumerableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - tokenByIndex( - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - tokenOfOwnerByIndex( - _owner: PromiseOrValue, - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenByIndex( - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenOfOwnerByIndex( - _owner: PromiseOrValue, - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenByIndex( - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenOfOwnerByIndex( - _owner: PromiseOrValue, - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - Approval( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - Transfer( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenByIndex( - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenOfOwnerByIndex( - _owner: PromiseOrValue, - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenByIndex( - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - tokenOfOwnerByIndex( - _owner: PromiseOrValue, - _index: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts deleted file mode 100644 index ffa90d03..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721Metadata.ts +++ /dev/null @@ -1,620 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IERC721MetadataInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "balanceOf" - | "getApproved" - | "isApprovedForAll" - | "name" - | "ownerOf" - | "safeTransferFrom(address,address,uint256)" - | "safeTransferFrom(address,address,uint256,bytes)" - | "setApprovalForAll" - | "supportsInterface" - | "symbol" - | "tokenURI" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - _owner: string; - _approved: string; - _tokenId: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface ApprovalForAllEventObject { - _owner: string; - _operator: string; - _approved: boolean; -} -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - ApprovalForAllEventObject ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export interface TransferEventObject { - _from: string; - _to: string; - _tokenId: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721Metadata extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721MetadataInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string] & { _name: string }>; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string] & { _symbol: string }>; - - tokenURI( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - Approval( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - Transfer( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - approve( - _approved: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - _owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - _owner: PromiseOrValue, - _operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - _operator: PromiseOrValue, - _approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceID: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - _tokenId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - _from: PromiseOrValue, - _to: PromiseOrValue, - _tokenId: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts deleted file mode 100644 index 98cfe54a..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC721.sol/IERC721TokenReceiver.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface IERC721TokenReceiverInterface extends utils.Interface { - functions: { - "onERC721Received(address,address,uint256,bytes)": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "onERC721Received"): FunctionFragment; - - encodeFunctionData( - functionFragment: "onERC721Received", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "onERC721Received", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC721TokenReceiver extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721TokenReceiverInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onERC721Received( - _operator: PromiseOrValue, - _from: PromiseOrValue, - _tokenId: PromiseOrValue, - _data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - onERC721Received( - _operator: PromiseOrValue, - _from: PromiseOrValue, - _tokenId: PromiseOrValue, - _data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onERC721Received( - _operator: PromiseOrValue, - _from: PromiseOrValue, - _tokenId: PromiseOrValue, - _data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onERC721Received( - _operator: PromiseOrValue, - _from: PromiseOrValue, - _tokenId: PromiseOrValue, - _data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onERC721Received( - _operator: PromiseOrValue, - _from: PromiseOrValue, - _tokenId: PromiseOrValue, - _data: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts b/v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts deleted file mode 100644 index 8df44aee..00000000 --- a/v1/typechain-types/forge-std/interfaces/IERC721.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC721 } from "./IERC721"; -export type { IERC721Enumerable } from "./IERC721Enumerable"; -export type { IERC721Metadata } from "./IERC721Metadata"; -export type { IERC721TokenReceiver } from "./IERC721TokenReceiver"; diff --git a/v1/typechain-types/forge-std/interfaces/IMulticall3.ts b/v1/typechain-types/forge-std/interfaces/IMulticall3.ts deleted file mode 100644 index a07e1cd4..00000000 --- a/v1/typechain-types/forge-std/interfaces/IMulticall3.ts +++ /dev/null @@ -1,598 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace IMulticall3 { - export type CallStruct = { - target: PromiseOrValue; - callData: PromiseOrValue; - }; - - export type CallStructOutput = [string, string] & { - target: string; - callData: string; - }; - - export type Call3Struct = { - target: PromiseOrValue; - allowFailure: PromiseOrValue; - callData: PromiseOrValue; - }; - - export type Call3StructOutput = [string, boolean, string] & { - target: string; - allowFailure: boolean; - callData: string; - }; - - export type ResultStruct = { - success: PromiseOrValue; - returnData: PromiseOrValue; - }; - - export type ResultStructOutput = [boolean, string] & { - success: boolean; - returnData: string; - }; - - export type Call3ValueStruct = { - target: PromiseOrValue; - allowFailure: PromiseOrValue; - value: PromiseOrValue; - callData: PromiseOrValue; - }; - - export type Call3ValueStructOutput = [string, boolean, BigNumber, string] & { - target: string; - allowFailure: boolean; - value: BigNumber; - callData: string; - }; -} - -export interface IMulticall3Interface extends utils.Interface { - functions: { - "aggregate((address,bytes)[])": FunctionFragment; - "aggregate3((address,bool,bytes)[])": FunctionFragment; - "aggregate3Value((address,bool,uint256,bytes)[])": FunctionFragment; - "blockAndAggregate((address,bytes)[])": FunctionFragment; - "getBasefee()": FunctionFragment; - "getBlockHash(uint256)": FunctionFragment; - "getBlockNumber()": FunctionFragment; - "getChainId()": FunctionFragment; - "getCurrentBlockCoinbase()": FunctionFragment; - "getCurrentBlockDifficulty()": FunctionFragment; - "getCurrentBlockGasLimit()": FunctionFragment; - "getCurrentBlockTimestamp()": FunctionFragment; - "getEthBalance(address)": FunctionFragment; - "getLastBlockHash()": FunctionFragment; - "tryAggregate(bool,(address,bytes)[])": FunctionFragment; - "tryBlockAndAggregate(bool,(address,bytes)[])": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "aggregate" - | "aggregate3" - | "aggregate3Value" - | "blockAndAggregate" - | "getBasefee" - | "getBlockHash" - | "getBlockNumber" - | "getChainId" - | "getCurrentBlockCoinbase" - | "getCurrentBlockDifficulty" - | "getCurrentBlockGasLimit" - | "getCurrentBlockTimestamp" - | "getEthBalance" - | "getLastBlockHash" - | "tryAggregate" - | "tryBlockAndAggregate" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "aggregate", - values: [IMulticall3.CallStruct[]] - ): string; - encodeFunctionData( - functionFragment: "aggregate3", - values: [IMulticall3.Call3Struct[]] - ): string; - encodeFunctionData( - functionFragment: "aggregate3Value", - values: [IMulticall3.Call3ValueStruct[]] - ): string; - encodeFunctionData( - functionFragment: "blockAndAggregate", - values: [IMulticall3.CallStruct[]] - ): string; - encodeFunctionData( - functionFragment: "getBasefee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getBlockHash", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getBlockNumber", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getChainId", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCurrentBlockCoinbase", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCurrentBlockDifficulty", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCurrentBlockGasLimit", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCurrentBlockTimestamp", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getEthBalance", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getLastBlockHash", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "tryAggregate", - values: [PromiseOrValue, IMulticall3.CallStruct[]] - ): string; - encodeFunctionData( - functionFragment: "tryBlockAndAggregate", - values: [PromiseOrValue, IMulticall3.CallStruct[]] - ): string; - - decodeFunctionResult(functionFragment: "aggregate", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "aggregate3", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "aggregate3Value", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "blockAndAggregate", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getBasefee", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getBlockHash", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getChainId", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getCurrentBlockCoinbase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getCurrentBlockDifficulty", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getCurrentBlockGasLimit", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getCurrentBlockTimestamp", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getEthBalance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getLastBlockHash", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "tryAggregate", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "tryBlockAndAggregate", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IMulticall3 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IMulticall3Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - aggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3( - calls: IMulticall3.Call3Struct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3Value( - calls: IMulticall3.Call3ValueStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - blockAndAggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getBasefee( - overrides?: CallOverrides - ): Promise<[BigNumber] & { basefee: BigNumber }>; - - getBlockHash( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { blockHash: string }>; - - getBlockNumber( - overrides?: CallOverrides - ): Promise<[BigNumber] & { blockNumber: BigNumber }>; - - getChainId( - overrides?: CallOverrides - ): Promise<[BigNumber] & { chainid: BigNumber }>; - - getCurrentBlockCoinbase( - overrides?: CallOverrides - ): Promise<[string] & { coinbase: string }>; - - getCurrentBlockDifficulty( - overrides?: CallOverrides - ): Promise<[BigNumber] & { difficulty: BigNumber }>; - - getCurrentBlockGasLimit( - overrides?: CallOverrides - ): Promise<[BigNumber] & { gaslimit: BigNumber }>; - - getCurrentBlockTimestamp( - overrides?: CallOverrides - ): Promise<[BigNumber] & { timestamp: BigNumber }>; - - getEthBalance( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getLastBlockHash( - overrides?: CallOverrides - ): Promise<[string] & { blockHash: string }>; - - tryAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - tryBlockAndAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - aggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3( - calls: IMulticall3.Call3Struct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3Value( - calls: IMulticall3.Call3ValueStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - blockAndAggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getBasefee(overrides?: CallOverrides): Promise; - - getBlockHash( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getChainId(overrides?: CallOverrides): Promise; - - getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; - - getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; - - getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; - - getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; - - getEthBalance( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLastBlockHash(overrides?: CallOverrides): Promise; - - tryAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - tryBlockAndAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - aggregate( - calls: IMulticall3.CallStruct[], - overrides?: CallOverrides - ): Promise< - [BigNumber, string[]] & { blockNumber: BigNumber; returnData: string[] } - >; - - aggregate3( - calls: IMulticall3.Call3Struct[], - overrides?: CallOverrides - ): Promise; - - aggregate3Value( - calls: IMulticall3.Call3ValueStruct[], - overrides?: CallOverrides - ): Promise; - - blockAndAggregate( - calls: IMulticall3.CallStruct[], - overrides?: CallOverrides - ): Promise< - [BigNumber, string, IMulticall3.ResultStructOutput[]] & { - blockNumber: BigNumber; - blockHash: string; - returnData: IMulticall3.ResultStructOutput[]; - } - >; - - getBasefee(overrides?: CallOverrides): Promise; - - getBlockHash( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getChainId(overrides?: CallOverrides): Promise; - - getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; - - getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; - - getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; - - getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; - - getEthBalance( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLastBlockHash(overrides?: CallOverrides): Promise; - - tryAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: CallOverrides - ): Promise; - - tryBlockAndAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: CallOverrides - ): Promise< - [BigNumber, string, IMulticall3.ResultStructOutput[]] & { - blockNumber: BigNumber; - blockHash: string; - returnData: IMulticall3.ResultStructOutput[]; - } - >; - }; - - filters: {}; - - estimateGas: { - aggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3( - calls: IMulticall3.Call3Struct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3Value( - calls: IMulticall3.Call3ValueStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - blockAndAggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getBasefee(overrides?: CallOverrides): Promise; - - getBlockHash( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getChainId(overrides?: CallOverrides): Promise; - - getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; - - getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; - - getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; - - getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; - - getEthBalance( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLastBlockHash(overrides?: CallOverrides): Promise; - - tryAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - tryBlockAndAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - aggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3( - calls: IMulticall3.Call3Struct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - aggregate3Value( - calls: IMulticall3.Call3ValueStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - blockAndAggregate( - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getBasefee(overrides?: CallOverrides): Promise; - - getBlockHash( - blockNumber: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getBlockNumber(overrides?: CallOverrides): Promise; - - getChainId(overrides?: CallOverrides): Promise; - - getCurrentBlockCoinbase( - overrides?: CallOverrides - ): Promise; - - getCurrentBlockDifficulty( - overrides?: CallOverrides - ): Promise; - - getCurrentBlockGasLimit( - overrides?: CallOverrides - ): Promise; - - getCurrentBlockTimestamp( - overrides?: CallOverrides - ): Promise; - - getEthBalance( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getLastBlockHash(overrides?: CallOverrides): Promise; - - tryAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - tryBlockAndAggregate( - requireSuccess: PromiseOrValue, - calls: IMulticall3.CallStruct[], - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/interfaces/index.ts b/v1/typechain-types/forge-std/interfaces/index.ts deleted file mode 100644 index 0e278083..00000000 --- a/v1/typechain-types/forge-std/interfaces/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as ierc721Sol from "./IERC721.sol"; -export type { ierc721Sol }; -export type { IERC165 } from "./IERC165"; -export type { IERC20 } from "./IERC20"; -export type { IMulticall3 } from "./IMulticall3"; diff --git a/v1/typechain-types/forge-std/mocks/MockERC20.ts b/v1/typechain-types/forge-std/mocks/MockERC20.ts deleted file mode 100644 index ba397218..00000000 --- a/v1/typechain-types/forge-std/mocks/MockERC20.ts +++ /dev/null @@ -1,552 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockERC20Interface extends utils.Interface { - functions: { - "DOMAIN_SEPARATOR()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "initialize(string,string,uint8)": FunctionFragment; - "name()": FunctionFragment; - "nonces(address)": FunctionFragment; - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "DOMAIN_SEPARATOR" - | "allowance" - | "approve" - | "balanceOf" - | "decimals" - | "initialize" - | "name" - | "nonces" - | "permit" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "DOMAIN_SEPARATOR", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "initialize", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "nonces", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "permit", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult( - functionFragment: "DOMAIN_SEPARATOR", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface MockERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - decimals_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - nonces( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - permit( - owner: PromiseOrValue, - spender: PromiseOrValue, - value: PromiseOrValue, - deadline: PromiseOrValue, - v: PromiseOrValue, - r: PromiseOrValue, - s: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/mocks/MockERC721.ts b/v1/typechain-types/forge-std/mocks/MockERC721.ts deleted file mode 100644 index 2f516783..00000000 --- a/v1/typechain-types/forge-std/mocks/MockERC721.ts +++ /dev/null @@ -1,657 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export interface MockERC721Interface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "initialize(string,string)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "approve" - | "balanceOf" - | "getApproved" - | "initialize" - | "isApprovedForAll" - | "name" - | "ownerOf" - | "safeTransferFrom(address,address,uint256)" - | "safeTransferFrom(address,address,uint256,bytes)" - | "setApprovalForAll" - | "supportsInterface" - | "symbol" - | "tokenURI" - | "transferFrom" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom(address,address,uint256,bytes)", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export interface ApprovalEventObject { - _owner: string; - _approved: string; - _tokenId: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface ApprovalForAllEventObject { - _owner: string; - _operator: string; - _approved: boolean; -} -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - ApprovalForAllEventObject ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export interface TransferEventObject { - _from: string; - _to: string; - _tokenId: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface MockERC721 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockERC721Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - spender: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getApproved( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isApprovedForAll( - owner: PromiseOrValue, - operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - operator: PromiseOrValue, - approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceId: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - approve( - spender: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isApprovedForAll( - owner: PromiseOrValue, - operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - operator: PromiseOrValue, - approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - approve( - spender: PromiseOrValue, - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: PromiseOrValue, - operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - data: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: PromiseOrValue, - approved: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - Approval( - _owner?: PromiseOrValue | null, - _approved?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - _owner?: PromiseOrValue | null, - _operator?: PromiseOrValue | null, - _approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - Transfer( - _from?: PromiseOrValue | null, - _to?: PromiseOrValue | null, - _tokenId?: PromiseOrValue | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - spender: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isApprovedForAll( - owner: PromiseOrValue, - operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - operator: PromiseOrValue, - approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - approve( - spender: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - owner: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getApproved( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - initialize( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - isApprovedForAll( - owner: PromiseOrValue, - operator: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - data: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - setApprovalForAll( - operator: PromiseOrValue, - approved: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - supportsInterface( - interfaceId: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - id: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: PromiseOrValue, - to: PromiseOrValue, - id: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/v1/typechain-types/forge-std/mocks/index.ts b/v1/typechain-types/forge-std/mocks/index.ts deleted file mode 100644 index bb1eac6a..00000000 --- a/v1/typechain-types/forge-std/mocks/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { MockERC20 } from "./MockERC20"; -export type { MockERC721 } from "./MockERC721"; From 307a4551e6eb9fae09051bbfa0d33d44357bd83a Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:35:44 +0200 Subject: [PATCH 28/60] fix test v1 --- .github/workflows/test_v1.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index 969709a8..bf66ec75 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -41,9 +41,6 @@ jobs: - name: Build project run: yarn build - - - name: Test (foundry) - run: yarn test:foundry - + - name: Test (hardhat) run: yarn test From d00c832a1592223f52946a621c6bf2d0b2f29a21 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:38:07 +0200 Subject: [PATCH 29/60] add paths to v1 actions --- .github/workflows/build_v1.yaml | 2 ++ .github/workflows/generated-files_v1.yaml | 2 ++ .github/workflows/lint_v1.yaml | 2 ++ .github/workflows/test_v1.yaml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/build_v1.yaml b/.github/workflows/build_v1.yaml index 779371bc..5b57f977 100644 --- a/.github/workflows/build_v1.yaml +++ b/.github/workflows/build_v1.yaml @@ -4,6 +4,8 @@ on: push: branches: - main + paths: + - 'v1/**' pull_request: branches: - "*" diff --git a/.github/workflows/generated-files_v1.yaml b/.github/workflows/generated-files_v1.yaml index 03194751..a807a6c4 100644 --- a/.github/workflows/generated-files_v1.yaml +++ b/.github/workflows/generated-files_v1.yaml @@ -4,6 +4,8 @@ on: push: branches: - main + paths: + - 'v1/**' pull_request: branches: - "*" diff --git a/.github/workflows/lint_v1.yaml b/.github/workflows/lint_v1.yaml index 20d63b02..60415ccc 100644 --- a/.github/workflows/lint_v1.yaml +++ b/.github/workflows/lint_v1.yaml @@ -4,6 +4,8 @@ on: push: branches: - main + paths: + - 'v1/**' pull_request: branches: - "*" diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index bf66ec75..8f65b9ef 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -4,6 +4,8 @@ on: push: branches: - main + paths: + - 'v1/**' pull_request: branches: - "*" From b8db384a2dfe2f3486a0640ab3dae30d88ab48e2 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:48:44 +0200 Subject: [PATCH 30/60] forge fmt --- v2/package.json | 2 +- v2/src/evm/ERC20CustodyNew.sol | 31 ++++++++--- v2/src/evm/GatewayEVM.sol | 40 ++++++++++---- v2/src/evm/ZetaConnectorNative.sol | 32 ++++++++++-- v2/src/evm/ZetaConnectorNewBase.sol | 18 ++++++- v2/src/evm/ZetaConnectorNonNative.sol | 36 ++++++++++--- v2/src/evm/interfaces/IERC20CustodyNew.sol | 2 +- v2/src/evm/interfaces/IGatewayEVM.sol | 14 +---- v2/src/evm/interfaces/IZetaNonEthNew.sol | 2 +- v2/src/zevm/GatewayZEVM.sol | 52 +++++++++++++----- v2/src/zevm/interfaces/IGatewayZEVM.sol | 16 +++--- v2/test/GatewayEVM.t.sol | 61 ++++++++++++---------- v2/test/GatewayEVMUpgrade.t.sol | 16 +++--- v2/test/GatewayEVMZEVM.t.sol | 10 ++-- v2/test/ZetaConnectorNative.t.sol | 33 +++++++----- v2/test/utils/GatewayEVMUpgradeTest.sol | 39 ++++++++------ v2/test/utils/ReceiverEVM.sol | 4 +- v2/test/utils/SenderZEVM.sol | 11 +++- v2/test/utils/TestZContract.sol | 4 +- 19 files changed, 289 insertions(+), 134 deletions(-) diff --git a/v2/package.json b/v2/package.json index 1935e987..d2fba154 100644 --- a/v2/package.json +++ b/v2/package.json @@ -8,7 +8,7 @@ "test": "test" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "forge clean && forge test -vv" }, "devDependencies": { }, diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol index 5e269135..963afa3d 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +import "./interfaces//IGatewayEVM.sol"; +import "./interfaces/IERC20CustodyNew.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./interfaces//IGatewayEVM.sol"; -import "./interfaces/IERC20CustodyNew.sol"; /// @title ERC20CustodyNew /// @notice Holds the ERC20 tokens deposited on ZetaChain and includes functionality to call a contract. @@ -51,7 +51,16 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen /// @param to Address of the contract to call. /// @param amount Amount of tokens to withdraw. /// @param data Calldata to pass to the contract call. - function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + function withdrawAndCall( + address token, + address to, + uint256 amount, + bytes calldata data + ) + public + nonReentrant + onlyTSS + { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -61,13 +70,23 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen emit WithdrawAndCall(token, to, amount, data); } - /// @notice WithdrawAndRevert transfers tokens to Gateway and call a contract with a revert functionality through the Gateway. + /// @notice WithdrawAndRevert transfers tokens to Gateway and call a contract with a revert functionality through + /// the Gateway. /// @dev This function can only be called by the TSS address. /// @param token Address of the ERC20 token. /// @param to Address of the contract to call. /// @param amount Amount of tokens to withdraw. /// @param data Calldata to pass to the contract call. - function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { + function withdrawAndRevert( + address token, + address to, + uint256 amount, + bytes calldata data + ) + public + nonReentrant + onlyTSS + { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -76,4 +95,4 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen emit WithdrawAndRevert(token, to, amount, data); } -} \ No newline at end of file +} diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index 0e707593..e69abb1b 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -3,17 +3,25 @@ pragma solidity ^0.8.20; import "./ZetaConnectorNewBase.sol"; import "./interfaces/IGatewayEVM.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; /// @title GatewayEVM /// @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. /// @dev The contract doesn't hold any funds and should never have active allowances. -contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { +contract GatewayEVM is + Initializable, + OwnableUpgradeable, + UUPSUpgradeable, + IGatewayEVMErrors, + IGatewayEVMEvents, + ReentrancyGuardUpgradeable +{ using SafeERC20 for IERC20; /// @notice The address of the custody contract. @@ -61,7 +69,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate /// @dev Authorizes the upgrade of the contract, sender must be owner. /// @param newImplementation Address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } /// @dev Internal function to execute a call to a destination address. /// @param destination Address to call. @@ -79,7 +87,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate /// @param destination Address to call. /// @param data Calldata to pass to the call. function executeRevert(address destination, bytes calldata data) public payable onlyTSS { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); + (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -91,7 +99,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate /// @param destination Address to call. /// @param data Calldata to pass to the call. /// @return The result of the call. - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); emit Executed(destination, msg.value, data); @@ -111,7 +119,11 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate address to, uint256 amount, bytes calldata data - ) public nonReentrant onlyAssetHandler { + ) + public + nonReentrant + onlyAssetHandler + { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens if (!resetApproval(token, to)) revert ApprovalFailed(); @@ -142,7 +154,11 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate address to, uint256 amount, bytes calldata data - ) external nonReentrant onlyAssetHandler { + ) + external + nonReentrant + onlyAssetHandler + { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); @@ -234,7 +250,8 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate } /// @dev Transfers tokens from the sender to the asset handler. - /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset + /// type. /// @param from Address of the sender. /// @param token Address of the ERC20 token. /// @param amount Amount of tokens to transfer. @@ -254,7 +271,8 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate } /// @dev Transfers tokens to the asset handler. - /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset + /// type. /// @param token Address of the ERC20 token. /// @param amount Amount of tokens to transfer. function transferToAssetHandler(address token, uint256 amount) private { diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index a781e1b3..860c4f6d 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -11,9 +11,13 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; contract ZetaConnectorNative is ZetaConnectorNewBase { using SafeERC20 for IERC20; - constructor(address _gateway, address _zetaToken, address _tssAddress) + constructor( + address _gateway, + address _zetaToken, + address _tssAddress + ) ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} + { } /// @notice Withdraw tokens to a specified address. /// @param to The address to withdraw tokens to. @@ -31,7 +35,17 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address. - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -47,7 +61,17 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address. - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol index bf1a0fe2..7295ecde 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -54,14 +54,28 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard /// @param amount The amount of tokens to withdraw. /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + virtual; /// @notice Withdraw tokens and call a contract with a revert callback through Gateway. /// @param to The address to withdraw tokens to. /// @param amount The amount of tokens to withdraw. /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + virtual; /// @notice Handle received tokens. /// @param amount The amount of tokens received. diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index e1a336b0..a9870e18 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -15,17 +15,21 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { /// @notice Event triggered when max supply is updated. /// @param maxSupply New max supply. event MaxSupplyUpdated(uint256 maxSupply); + error ExceedsMaxSupply(); - constructor(address _gateway, address _zetaToken, address _tssAddress) + constructor( + address _gateway, + address _zetaToken, + address _tssAddress + ) ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) - {} + { } - /// @notice Set max supply for minting. /// @param _maxSupply New max supply. /// @dev This function can only be called by the TSS address. - function setMaxSupply(uint256 _maxSupply) external onlyTSS() { + function setMaxSupply(uint256 _maxSupply) external onlyTSS { maxSupply = _maxSupply; emit MaxSupplyUpdated(_maxSupply); } @@ -48,7 +52,17 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address, and mints if supply is not reached. - function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndCall( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); // Mint zetaToken to the Gateway contract @@ -66,7 +80,17 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { /// @param data The calldata to pass to the contract call. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address, and mints if supply is not reached. - function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdrawAndRevert( + address to, + uint256 amount, + bytes calldata data, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyTSS + { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); // Mint zetaToken to the Gateway contract diff --git a/v2/src/evm/interfaces/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20CustodyNew.sol index 027758bc..e4015f98 100644 --- a/v2/src/evm/interfaces/IERC20CustodyNew.sol +++ b/v2/src/evm/interfaces/IERC20CustodyNew.sol @@ -33,4 +33,4 @@ interface IERC20CustodyNewErrors { /// @notice Error for invalid sender. error InvalidSender(); -} \ No newline at end of file +} diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index b9bb7ecb..424dbba7 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -81,12 +81,7 @@ interface IGatewayEVM { /// @param to The address of the contract to call. /// @param amount The amount of tokens to transfer. /// @param data The calldata to pass to the contract call. - function executeWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; + function executeWithERC20(address token, address to, uint256 amount, bytes calldata data) external; /// @notice Executes a call to a contract. /// @param destination The address of the contract to call. @@ -99,12 +94,7 @@ interface IGatewayEVM { /// @param to The address of the contract to call. /// @param amount The amount of tokens to transfer. /// @param data The calldata to pass to the contract call. - function revertWithERC20( - address token, - address to, - uint256 amount, - bytes calldata data - ) external; + function revertWithERC20(address token, address to, uint256 amount, bytes calldata data) external; } /// @title Revertable diff --git a/v2/src/evm/interfaces/IZetaNonEthNew.sol b/v2/src/evm/interfaces/IZetaNonEthNew.sol index a92f833f..094debdf 100644 --- a/v2/src/evm/interfaces/IZetaNonEthNew.sol +++ b/v2/src/evm/interfaces/IZetaNonEthNew.sol @@ -18,4 +18,4 @@ interface IZetaNonEthNew is IERC20 { /// @param internalSendHash A hash used for internal tracking of the minting transaction. /// @dev Emits a {Transfer} event with `from` set to the zero address. function mint(address mintee, uint256 value, bytes32 internalSendHash) external; -} \ No newline at end of file +} diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index fbdd4371..426475d8 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -13,7 +13,14 @@ import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol /// @title GatewayZEVM /// @notice The GatewayZEVM contract is the endpoint to call smart contracts on omnichain. /// @dev The contract doesn't hold any funds and should never have active allowances. -contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable { +contract GatewayZEVM is + IGatewayZEVMEvents, + IGatewayZEVMErrors, + Initializable, + OwnableUpgradeable, + UUPSUpgradeable, + ReentrancyGuardUpgradeable +{ /// @notice Error indicating a zero address was provided. error ZeroAddress(); @@ -48,7 +55,7 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O /// @dev Authorizes the upgrade of the contract. /// @param newImplementation The address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } /// @dev Receive function to receive ZETA from WETH9.withdraw(). receive() external payable { @@ -98,7 +105,15 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O /// @param amount The amount of tokens to withdraw. /// @param zrc20 The address of the ZRC20 token. /// @param message The calldata to pass to the contract call. - function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external nonReentrant { + function withdrawAndCall( + bytes memory receiver, + uint256 amount, + address zrc20, + bytes calldata message + ) + external + nonReentrant + { uint256 gasFee = _withdrawZRC20(amount, zrc20); emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); } @@ -131,11 +146,7 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O /// @param zrc20 The address of the ZRC20 token. /// @param amount The amount of tokens to deposit. /// @param target The target address to receive the deposited tokens. - function deposit( - address zrc20, - uint256 amount, - address target - ) external onlyFungible { + function deposit(address zrc20, uint256 amount, address target) external onlyFungible { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -153,7 +164,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } @@ -169,7 +183,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -186,7 +203,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); _transferZETA(amount, target); @@ -205,7 +225,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { UniversalContract(target).onRevert(context, zrc20, amount, message); } @@ -221,7 +244,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O uint256 amount, address target, bytes calldata message - ) external onlyFungible { + ) + external + onlyFungible + { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol index de394d24..2b9a7ff6 100644 --- a/v2/src/zevm/interfaces/IGatewayZEVM.sol +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -29,11 +29,7 @@ interface IGatewayZEVM { /// @param zrc20 The address of the ZRC20 token. /// @param amount The amount of tokens to deposit. /// @param target The target address to receive the deposited tokens. - function deposit( - address zrc20, - uint256 amount, - address target - ) external; + function deposit(address zrc20, uint256 amount, address target) external; /// @notice Execute a user-specified contract on ZEVM. /// @param context The context of the cross-chain call. @@ -83,7 +79,15 @@ interface IGatewayZEVMEvents { /// @param gasfee The gas fee for the withdrawal. /// @param protocolFlatFee The protocol flat fee for the withdrawal. /// @param message The calldata passed to the contract call. - event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); + event Withdrawal( + address indexed from, + address zrc20, + bytes to, + uint256 value, + uint256 gasfee, + uint256 protocolFlatFee, + bytes message + ); } /// @title IGatewayZEVMErrors diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index 52405fa6..b1b6c5c0 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -7,17 +7,18 @@ import "forge-std/Vm.sol"; import "./utils/ReceiverEVM.sol"; import "./utils/TestERC20.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; -import "src/evm/GatewayEVM.sol"; -import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "./utils/IReceiverEVM.sol"; import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "./utils/IReceiverEVM.sol"; +import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { using SafeERC20 for IERC20; @@ -56,8 +57,8 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); + token.mint(owner, 1_000_000); + token.transfer(address(custody), 500_000); vm.deal(tssAddress, 1 ether); } @@ -87,7 +88,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver num[0] = 42; bool flag = true; bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); - + vm.prank(owner); vm.expectRevert(InvalidSender.selector); gateway.execute(address(receiver), data); @@ -108,7 +109,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.expectEmit(true, true, true, true, address(gateway)); emit Executed(address(receiver), 1 ether, data); vm.prank(tssAddress); - gateway.execute{value: value}(address(receiver), data); + gateway.execute{ value: value }(address(receiver), data); assertEq(value, address(receiver).balance); } @@ -126,8 +127,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -135,8 +137,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testRevertWithERC20FailsIfNotCustoryOrConnector() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -178,8 +181,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -188,8 +192,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); - + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); @@ -230,9 +235,10 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - + uint256 amount = 100_000; + bytes memory data = + abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + vm.prank(owner); vm.expectRevert(InvalidSender.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); @@ -240,8 +246,9 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() public { uint256 amount = 0; - bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); - + bytes memory data = + abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); + vm.prank(tssAddress); vm.expectRevert(InsufficientERC20Amount.selector); custody.withdrawAndCall(address(token), address(receiver), amount, data); @@ -307,7 +314,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -351,7 +358,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver } function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes memory data = abi.encodePacked("hello"); vm.prank(owner); @@ -380,7 +387,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.expectEmit(true, true, true, true, address(gateway)); emit Reverted(address(receiver), 1 ether, data); vm.prank(tssAddress); - gateway.executeRevert{value: value}(address(receiver), data); + gateway.executeRevert{ value: value }(address(receiver), data); // Verify that the tokens were transferred to the receiver address uint256 balanceAfter = address(receiver).balance; @@ -393,7 +400,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver vm.prank(owner); vm.expectRevert(InvalidSender.selector); - gateway.executeRevert{value: value}(address(receiver), data); + gateway.executeRevert{ value: value }(address(receiver), data); } } diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index f46374d1..c9581dc6 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -9,17 +9,19 @@ import "./utils/GatewayEVMUpgradeTest.sol"; import "./utils/IReceiverEVM.sol"; import "./utils/ReceiverEVM.sol"; import "./utils/TestERC20.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; import "./utils/IReceiverEVM.sol"; -import "src/evm/GatewayEVM.sol"; + import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; @@ -61,8 +63,8 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - token.mint(owner, 1000000); - token.transfer(address(custody), 500000); + token.mint(owner, 1_000_000); + token.transfer(address(custody), 500_000); vm.deal(tssAddress, 1 ether); } @@ -87,7 +89,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents vm.expectEmit(true, true, true, true, address(gateway)); emit ExecutedV2(address(receiver), value, data); vm.prank(tssAddress); - gatewayUpgradeTest.execute{value: value}(address(receiver), data); + gatewayUpgradeTest.execute{ value: value }(address(receiver), data); assertEq(custodyBeforeUpgrade, gateway.custody()); assertEq(tssBeforeUpgrade, gateway.tssAddress()); diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index 20c0671b..cb62da47 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -102,7 +102,7 @@ contract GatewayEVMZEVMTest is vm.stopPrank(); vm.prank(ownerZEVM); - zrc20.approve(address(gatewayZEVM), 1000000); + zrc20.approve(address(gatewayZEVM), 1_000_000); vm.deal(tssAddress, 1 ether); } @@ -125,7 +125,7 @@ contract GatewayEVMZEVMTest is vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testCallReceiverEVMFromSenderZEVM() public { @@ -148,7 +148,7 @@ contract GatewayEVMZEVMTest is vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testWithdrawAndCallReceiverEVMFromZEVM() public { @@ -177,7 +177,7 @@ contract GatewayEVMZEVMTest is vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); } function testWithdrawAndCallReceiverEVMFromSenderZEVM() public { @@ -207,7 +207,7 @@ contract GatewayEVMZEVMTest is vm.expectEmit(true, true, true, true, address(gatewayEVM)); emit Executed(address(receiverEVM), value, message); vm.prank(tssAddress); - gatewayEVM.execute{value: value}(address(receiverEVM), message); + gatewayEVM.execute{ value: value }(address(receiverEVM), message); // Check the balance after withdrawal uint256 senderBalanceAfterWithdrawal = IZRC20(zrc20).balanceOf(address(senderZEVM)); diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index 2eba5093..9960da26 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -7,19 +7,27 @@ import "forge-std/Vm.sol"; import "./utils/ReceiverEVM.sol"; import "./utils/TestERC20.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; import "./utils/IReceiverEVM.sol"; -import "src/evm/interfaces/IZetaConnector.sol"; -import "src/evm/GatewayEVM.sol"; + import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNative.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; +import "src/evm/interfaces/IZetaConnector.sol"; -contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IZetaConnectorEvents { +contract ZetaConnectorNativeTest is + Test, + IGatewayEVMErrors, + IGatewayEVMEvents, + IReceiverEVMEvents, + IZetaConnectorEvents +{ using SafeERC20 for IERC20; address proxy; @@ -55,13 +63,13 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, gateway.setConnector(address(zetaConnector)); vm.stopPrank(); - zetaToken.mint(address(zetaConnector), 5000000); + zetaToken.mint(address(zetaConnector), 5_000_000); vm.deal(tssAddress, 1 ether); } function testWithdraw() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; uint256 balanceBefore = zetaToken.balanceOf(destination); assertEq(balanceBefore, 0); @@ -77,7 +85,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; vm.prank(owner); @@ -121,9 +129,10 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); vm.prank(owner); vm.expectRevert(InvalidSender.selector); @@ -238,7 +247,7 @@ contract ZetaConnectorNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, } function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { - uint256 amount = 100000; + uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index a587de95..7e910379 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -1,15 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; import "src/evm/ZetaConnectorNewBase.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; /// @title GatewayEVMUpgradeTest /// @notice Modified GatewayEVM contract for testing upgrades @@ -37,7 +37,6 @@ contract GatewayEVMUpgradeTest is /// @dev Modified event for testing upgrade. event ExecutedV2(address indexed destination, uint256 value, bytes data); - /// @notice Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { @@ -60,7 +59,7 @@ contract GatewayEVMUpgradeTest is if (_tssAddress == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); } - + __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); @@ -71,7 +70,7 @@ contract GatewayEVMUpgradeTest is /// @dev Authorizes the upgrade of the contract, sender must be owner. /// @param newImplementation Address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } /// @dev Internal function to execute a call to a destination address. /// @param destination Address to call. @@ -89,7 +88,7 @@ contract GatewayEVMUpgradeTest is /// @param destination Address to call. /// @param data Calldata to pass to the call. function executeRevert(address destination, bytes calldata data) public payable onlyTSS { - (bool success, bytes memory result) = destination.call{value: msg.value}(""); + (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -101,7 +100,7 @@ contract GatewayEVMUpgradeTest is /// @param destination Address to call. /// @param data Calldata to pass to the call. /// @return The result of the call. - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); emit ExecutedV2(destination, msg.value, data); @@ -121,11 +120,15 @@ contract GatewayEVMUpgradeTest is address to, uint256 amount, bytes calldata data - ) public nonReentrant onlyCustodyOrConnector { + ) + public + nonReentrant + onlyCustodyOrConnector + { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens - if(!resetApproval(token, to)) revert ApprovalFailed(); - if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); + if (!resetApproval(token, to)) revert ApprovalFailed(); + if (!IERC20(token).approve(to, amount)) revert ApprovalFailed(); // Execute the call on the target contract bytes memory result = _execute(to, data); @@ -152,7 +155,11 @@ contract GatewayEVMUpgradeTest is address to, uint256 amount, bytes calldata data - ) external nonReentrant onlyCustodyOrConnector { + ) + external + nonReentrant + onlyCustodyOrConnector + { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); @@ -244,7 +251,8 @@ contract GatewayEVMUpgradeTest is } /// @dev Transfers tokens from the sender to the asset handler. - /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset + /// type. /// @param from Address of the sender. /// @param token Address of the ERC20 token. /// @param amount Amount of tokens to transfer. @@ -264,7 +272,8 @@ contract GatewayEVMUpgradeTest is } /// @dev Transfers tokens to the asset handler. - /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset + /// type. /// @param token Address of the ERC20 token. /// @param amount Amount of tokens to transfer. function transferToAssetHandler(address token, uint256 amount) private { diff --git a/v2/test/utils/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol index 568fab62..a0d49a4e 100644 --- a/v2/test/utils/ReceiverEVM.sol +++ b/v2/test/utils/ReceiverEVM.sol @@ -72,8 +72,8 @@ contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { } /// @notice Receives ETH. - receive() external payable {} + receive() external payable { } /// @notice Fallback function to receive ETH. - fallback() external payable {} + fallback() external payable { } } diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index 448091c4..5398647c 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -41,7 +41,16 @@ contract SenderZEVM { /// @param num A numeric parameter to pass to the receiver's function. /// @param flag A boolean parameter to pass to the receiver's function. /// @dev Approves the gateway to withdraw tokens and encodes the function call to pass to the gateway. - function withdrawAndCallReceiver(bytes memory receiver, uint256 amount, address zrc20, string memory str, uint256 num, bool flag) external { + function withdrawAndCallReceiver( + bytes memory receiver, + uint256 amount, + address zrc20, + string memory str, + uint256 num, + bool flag + ) + external + { // Encode the function call to the receiver's receivePayable method bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); diff --git a/v2/test/utils/TestZContract.sol b/v2/test/utils/TestZContract.sol index 4b7d6ed1..c3f0837e 100644 --- a/v2/test/utils/TestZContract.sol +++ b/v2/test/utils/TestZContract.sol @@ -69,8 +69,8 @@ contract TestZContract is UniversalContract { } /// @notice Allows the contract to receive ETH. - receive() external payable {} + receive() external payable { } /// @notice Fallback function to receive ETH. - fallback() external payable {} + fallback() external payable { } } From 56ef1582391646305ecaaff32c696da60febb954 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:53:01 +0200 Subject: [PATCH 31/60] add test v2 and cleanup v1 actions --- .github/workflows/generated-files_v1.yaml | 5 --- .github/workflows/lint_v1.yaml | 5 --- .github/workflows/publish-npm_v1.yaml | 5 --- .github/workflows/test_v1.yaml | 5 --- .github/workflows/test_v2.yaml | 45 +++++++++++++++++++++++ v2/package.json | 3 +- 6 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/test_v2.yaml diff --git a/.github/workflows/generated-files_v1.yaml b/.github/workflows/generated-files_v1.yaml index a807a6c4..d02aa7f5 100644 --- a/.github/workflows/generated-files_v1.yaml +++ b/.github/workflows/generated-files_v1.yaml @@ -25,8 +25,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 @@ -46,9 +44,6 @@ jobs: tar -zxvf geth-alltools-linux-amd64-1.11.5-a38f4108.tar.gz sudo mv geth-alltools-linux-amd64-1.11.5-a38f4108/abigen /usr/local/bin/ - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - name: Generate Go packages and typechain-types run: | yarn generate diff --git a/.github/workflows/lint_v1.yaml b/.github/workflows/lint_v1.yaml index 60415ccc..d0f46c07 100644 --- a/.github/workflows/lint_v1.yaml +++ b/.github/workflows/lint_v1.yaml @@ -26,8 +26,6 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v3 - with: - submodules: recursive - name: Setup Node.js uses: actions/setup-node@v3 @@ -35,9 +33,6 @@ jobs: node-version: "18" registry-url: "https://registry.npmjs.org" - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - name: Install Dependencies run: yarn install diff --git a/.github/workflows/publish-npm_v1.yaml b/.github/workflows/publish-npm_v1.yaml index 1688d33a..848a2218 100644 --- a/.github/workflows/publish-npm_v1.yaml +++ b/.github/workflows/publish-npm_v1.yaml @@ -15,8 +15,6 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v3 - with: - submodules: recursive - name: Setup Node.js uses: actions/setup-node@v3 @@ -24,9 +22,6 @@ jobs: node-version: "18" registry-url: "https://registry.npmjs.org" - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - name: Install Dependencies run: yarn install diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index 8f65b9ef..05698a5c 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -26,8 +26,6 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 @@ -35,9 +33,6 @@ jobs: node-version: "18.0.0" registry-url: "https://registry.npmjs.org" - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - name: Install Dependencies run: yarn install diff --git a/.github/workflows/test_v2.yaml b/.github/workflows/test_v2.yaml new file mode 100644 index 00000000..85e48601 --- /dev/null +++ b/.github/workflows/test_v2.yaml @@ -0,0 +1,45 @@ +name: Test (V2) + +on: + push: + branches: + - main + paths: + - 'v2/**' + pull_request: + branches: + - "*" + types: + - synchronize + - opened + - reopened + - ready_for_review + +defaults: + run: + working-directory: ./v2 + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "21.0.0" + registry-url: "https://registry.npmjs.org" + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Install Dependencies + run: yarn install + + - name: Test (hardhat) + run: yarn test diff --git a/v2/package.json b/v2/package.json index d2fba154..4965b099 100644 --- a/v2/package.json +++ b/v2/package.json @@ -1,8 +1,7 @@ { "name": "v2", "version": "1.0.0", - "description": "**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**", - "main": "index.js", + "author": "zetachain", "directories": { "lib": "lib", "test": "test" From 9a7dd16a374c55b44e3045e31e3a14b5f7b69129 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:56:01 +0200 Subject: [PATCH 32/60] fix --- .github/workflows/test_v1.yaml | 2 +- v2/src/zevm/interfaces/IWZeta.sol | 27 --------------------------- 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 v2/src/zevm/interfaces/IWZeta.sol diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index 05698a5c..98bb4cd0 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -39,5 +39,5 @@ jobs: - name: Build project run: yarn build - - name: Test (hardhat) + - name: Test run: yarn test diff --git a/v2/src/zevm/interfaces/IWZeta.sol b/v2/src/zevm/interfaces/IWZeta.sol deleted file mode 100644 index 5c5c4b73..00000000 --- a/v2/src/zevm/interfaces/IWZeta.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -/// @title IWETH9 -/// @notice Interface for the Weth9 contract. -interface IWETH9 { - event Approval(address indexed owner, address indexed spender, uint256 value); - event Transfer(address indexed from, address indexed to, uint256 value); - event Deposit(address indexed dst, uint256 wad); - event Withdrawal(address indexed src, uint256 wad); - - function totalSupply() external view returns (uint256); - - function balanceOf(address owner) external view returns (uint256); - - function allowance(address owner, address spender) external view returns (uint256); - - function approve(address spender, uint256 wad) external returns (bool); - - function transfer(address to, uint256 wad) external returns (bool); - - function transferFrom(address from, address to, uint256 wad) external returns (bool); - - function deposit() external payable; - - function withdraw(uint256 wad) external; -} From 28af3e61ee61243ac57c87afaa2334ed8e81e9e8 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:56:12 +0200 Subject: [PATCH 33/60] fix --- v2/src/zevm/interfaces/IWZETA.sol | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 v2/src/zevm/interfaces/IWZETA.sol diff --git a/v2/src/zevm/interfaces/IWZETA.sol b/v2/src/zevm/interfaces/IWZETA.sol new file mode 100644 index 00000000..5c5c4b73 --- /dev/null +++ b/v2/src/zevm/interfaces/IWZETA.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +/// @title IWETH9 +/// @notice Interface for the Weth9 contract. +interface IWETH9 { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + event Deposit(address indexed dst, uint256 wad); + event Withdrawal(address indexed src, uint256 wad); + + function totalSupply() external view returns (uint256); + + function balanceOf(address owner) external view returns (uint256); + + function allowance(address owner, address spender) external view returns (uint256); + + function approve(address spender, uint256 wad) external returns (bool); + + function transfer(address to, uint256 wad) external returns (bool); + + function transferFrom(address from, address to, uint256 wad) external returns (bool); + + function deposit() external payable; + + function withdraw(uint256 wad) external; +} From dd4cbeb901f66037f04eaa0cdfcfd50f1c0dd75a Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:58:41 +0200 Subject: [PATCH 34/60] remove build v1 action and rename test actions steps --- .github/workflows/build_v1.yaml | 40 --------------------------------- .github/workflows/test_v1.yaml | 2 +- .github/workflows/test_v2.yaml | 2 +- 3 files changed, 2 insertions(+), 42 deletions(-) delete mode 100644 .github/workflows/build_v1.yaml diff --git a/.github/workflows/build_v1.yaml b/.github/workflows/build_v1.yaml deleted file mode 100644 index 5b57f977..00000000 --- a/.github/workflows/build_v1.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: Build (V1) - -on: - push: - branches: - - main - paths: - - 'v1/**' - pull_request: - branches: - - "*" - types: - - synchronize - - opened - - reopened - - ready_for_review - -defaults: - run: - working-directory: ./v1 - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - node-version: "18" - registry-url: "https://registry.npmjs.org" - - - name: Install Dependencies - run: yarn install - - - name: Build - run: yarn build diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index 98bb4cd0..05698a5c 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -39,5 +39,5 @@ jobs: - name: Build project run: yarn build - - name: Test + - name: Test (hardhat) run: yarn test diff --git a/.github/workflows/test_v2.yaml b/.github/workflows/test_v2.yaml index 85e48601..1117d42f 100644 --- a/.github/workflows/test_v2.yaml +++ b/.github/workflows/test_v2.yaml @@ -41,5 +41,5 @@ jobs: - name: Install Dependencies run: yarn install - - name: Test (hardhat) + - name: Test run: yarn test From 2a01ed1641ee952b0888dbfaee47957529ff6da3 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 29 Jul 2024 23:17:23 +0100 Subject: [PATCH 35/60] feat: port localnet to v2 (#269) --- .gitignore | 1 + v1/hardhat.config.ts | 1 - v1/package.json | 5 +- v1/tasks/localnet.ts | 103 -- v2/.eslintignore | 9 + v2/eslint.config.mjs | 10 + v2/package-lock.json | 106 -- v2/package.json | 14 +- v2/scripts/localnet/EvmCall.s.sol | 36 + v2/scripts/localnet/EvmDepositAndCall.s.sol | 48 + v2/scripts/localnet/ZevmCall.s.sol | 45 + v2/scripts/localnet/ZevmWithdrawAndCall.s.sol | 53 + v2/scripts/localnet/v2_localnet.md | 136 ++ v2/scripts/localnet/worker.ts | 310 ++++ v2/ts.config.json | 22 + v2/yarn.lock | 1322 +++++++++++++++++ 16 files changed, 2005 insertions(+), 216 deletions(-) delete mode 100644 v1/tasks/localnet.ts create mode 100644 v2/.eslintignore create mode 100644 v2/eslint.config.mjs delete mode 100644 v2/package-lock.json create mode 100644 v2/scripts/localnet/EvmCall.s.sol create mode 100644 v2/scripts/localnet/EvmDepositAndCall.s.sol create mode 100644 v2/scripts/localnet/ZevmCall.s.sol create mode 100644 v2/scripts/localnet/ZevmWithdrawAndCall.s.sol create mode 100644 v2/scripts/localnet/v2_localnet.md create mode 100644 v2/scripts/localnet/worker.ts create mode 100644 v2/ts.config.json create mode 100644 v2/yarn.lock diff --git a/.gitignore b/.gitignore index ddb1d374..ce504686 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ crytic-export out cache_forge +broadcast \ No newline at end of file diff --git a/v1/hardhat.config.ts b/v1/hardhat.config.ts index 16132dbe..864adeb3 100644 --- a/v1/hardhat.config.ts +++ b/v1/hardhat.config.ts @@ -7,7 +7,6 @@ import "uniswap-v2-deploy-plugin"; import "solidity-coverage"; import "hardhat-gas-reporter"; import "./tasks/addresses"; -import "./tasks/localnet"; import "@openzeppelin/hardhat-upgrades"; import { getHardhatConfigNetworks } from "@zetachain/networks"; diff --git a/v1/package.json b/v1/package.json index 6dffe19e..28395579 100644 --- a/v1/package.json +++ b/v1/package.json @@ -85,12 +85,9 @@ "lint": "npx eslint . --ext .js,.ts --ignore-pattern lib/", "lint:fix": "npx eslint . --ext .js,.ts,.json --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "lint:sol": "solhint 'contracts/**/*.sol'", - "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"npx hardhat node\" \"wait-on tcp:8545 && yarn worker\"", "prepublishOnly": "yarn build", "test": "npx hardhat test", - "test:prototypes": "yarn compile && npx hardhat test test/prototypes/*", - "tsc:watch": "npx tsc --watch", - "worker": "npx hardhat run scripts/worker.ts --network localhost" + "tsc:watch": "npx tsc --watch" }, "types": "./dist/lib/index.d.ts", "version": "0.0.8" diff --git a/v1/tasks/localnet.ts b/v1/tasks/localnet.ts deleted file mode 100644 index 48d7001f..00000000 --- a/v1/tasks/localnet.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { task } from "hardhat/config"; - -declare const hre: any; - -// Contains tasks to make it easier to interact with prototype contracts localnet. -// To make use of default contract addresses on localnet, start localnet from scratch, so contracts are deployed on same addresses. -// Otherwise, provide custom addresses as parameters. - -task("zevm-call", "calls evm contract from zevm account") - .addOptionalParam("gatewayZEVM", "contract address of gateway on ZEVM", "0x0165878A594ca255338adfa4d48449f69242Eb8F") - .addOptionalParam("receiverEVM", "contract address of receiver on EVM", "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6") - .setAction(async (taskArgs) => { - const gatewayZEVM = await hre.ethers.getContractAt("GatewayZEVM", taskArgs.gatewayZEVM); - const receiverEVM = await hre.ethers.getContractAt("ReceiverEVM", taskArgs.receiverEVM); - - const str = "Hello!"; - const num = 42; - const flag = true; - - // Encode the function call data and call on zevm - const message = receiverEVM.interface.encodeFunctionData("receivePayable", [str, num, flag]); - try { - const callTx = await gatewayZEVM.call(receiverEVM.address, message); - await callTx.wait(); - } catch (e) { - console.error("Error calling ReceiverEVM:", e); - } - }); - -task("zevm-withdraw-and-call", "withdraws zrc20 and calls evm contract from zevm account") - .addOptionalParam("gatewayZEVM", "contract address of gateway on ZEVM", "0x0165878A594ca255338adfa4d48449f69242Eb8F") - .addOptionalParam("receiverEVM", "contract address of receiver on EVM", "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6") - .addOptionalParam("zrc20", "contract address of zrc20", "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c") - .addOptionalParam("amount", "amount to withdraw", "1") - .setAction(async (taskArgs) => { - const gatewayZEVM = await hre.ethers.getContractAt("GatewayZEVM", taskArgs.gatewayZEVM); - const receiverEVM = await hre.ethers.getContractAt("ReceiverEVM", taskArgs.receiverEVM); - const zrc20 = await hre.ethers.getContractAt("ZRC20New", taskArgs.zrc20); - const [, ownerZEVM] = await hre.ethers.getSigners(); - - const str = "Hello!"; - const num = 42; - const flag = true; - - // Encode the function call data and call on zevm - const message = receiverEVM.interface.encodeFunctionData("receivePayable", [str, num, flag]); - - try { - const callTx = await gatewayZEVM - .connect(ownerZEVM) - .withdrawAndCall(receiverEVM.address, hre.ethers.utils.parseEther(taskArgs.amount), zrc20.address, message); - await callTx.wait(); - console.log("ReceiverEVM called from ZEVM"); - } catch (e) { - console.error("Error calling ReciverEVM:", e); - } - }); - -task("evm-call", "calls zevm zcontract from evm account") - .addOptionalParam("gatewayEVM", "contract address of gateway on EVM", "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512") - .addOptionalParam("zContract", "contract address of zContract on ZEVM", "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e") - .setAction(async (taskArgs) => { - const gatewayEVM = await hre.ethers.getContractAt("GatewayEVM", taskArgs.gatewayEVM); - const zContract = await hre.ethers.getContractAt("TestZContract", taskArgs.zContract); - - const message = hre.ethers.utils.defaultAbiCoder.encode(["string"], ["hello"]); - - try { - const callTx = await gatewayEVM.call(zContract.address, message); - await callTx.wait(); - console.log("TestZContract called from EVM"); - } catch (e) { - console.error("Error calling TestZContract:", e); - } - }); - -task("evm-deposit-and-call", "deposits erc20 and calls zevm zcontract from evm account") - .addOptionalParam("gatewayEVM", "contract address of gateway on EVM", "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512") - .addOptionalParam("zContract", "contract address of zContract on ZEVM", "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e") - .addOptionalParam("erc20", "contract address of erc20", "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853") - .addOptionalParam("amount", "amount to deposit", "1") - .setAction(async (taskArgs) => { - const gatewayEVM = await hre.ethers.getContractAt("GatewayEVM", taskArgs.gatewayEVM); - const zContract = await hre.ethers.getContractAt("TestZContract", taskArgs.zContract); - const erc20 = await hre.ethers.getContractAt("TestERC20", taskArgs.erc20); - - await erc20.approve(gatewayEVM.address, hre.ethers.utils.parseEther(taskArgs.amount)); - - const payload = hre.ethers.utils.defaultAbiCoder.encode(["string"], ["hello"]); - - try { - const callTx = await gatewayEVM["depositAndCall(address,uint256,address,bytes)"]( - zContract.address, - hre.ethers.utils.parseEther(taskArgs.amount), - erc20.address, - payload - ); - await callTx.wait(); - console.log("TestZContract called from EVM"); - } catch (e) { - console.error("Error calling TestZContract:", e); - } - }); diff --git a/v2/.eslintignore b/v2/.eslintignore new file mode 100644 index 00000000..6b6a98dd --- /dev/null +++ b/v2/.eslintignore @@ -0,0 +1,9 @@ +.yarn +artifacts +cache +dist +node_modules +typechain-types +docs +crytic-export +lib \ No newline at end of file diff --git a/v2/eslint.config.mjs b/v2/eslint.config.mjs new file mode 100644 index 00000000..f5cd5fb0 --- /dev/null +++ b/v2/eslint.config.mjs @@ -0,0 +1,10 @@ +// @ts-check + +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + +); \ No newline at end of file diff --git a/v2/package-lock.json b/v2/package-lock.json deleted file mode 100644 index 72a748d7..00000000 --- a/v2/package-lock.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "name": "v2", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "v2", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "ethers": "^6.13.1" - }, - "devDependencies": {} - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" - }, - "node_modules/ethers": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.1.tgz", - "integrity": "sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", - "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } -} diff --git a/v2/package.json b/v2/package.json index 4965b099..544b4a68 100644 --- a/v2/package.json +++ b/v2/package.json @@ -7,12 +7,22 @@ "test": "test" }, "scripts": { + "lint": "npx eslint . --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", + "lint:fix": "npx eslint . --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", + "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"anvil --auto-impersonate\" \"wait-on tcp:8545 && npx ts-node scripts/localnet/worker.ts\"", "test": "forge clean && forge test -vv" }, "devDependencies": { + "@eslint/js": "^9.7.0", + "@types/eslint__js": "^8.42.3", + "concurrently": "^8.2.2", + "eslint": "^8.57.0", + "ts-node": "^10.9.2", + "typescript": "^5.5.4", + "typescript-eslint": "^7.17.0", + "wait-on": "^7.2.0" }, - "author": "", - "license": "ISC", + "license": "MIT", "dependencies": { "ethers": "^6.13.1" } diff --git a/v2/scripts/localnet/EvmCall.s.sol b/v2/scripts/localnet/EvmCall.s.sol new file mode 100644 index 00000000..c8b142be --- /dev/null +++ b/v2/scripts/localnet/EvmCall.s.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "src/evm/GatewayEVM.sol"; +import "test/utils/TestZContract.sol"; + +// EvmCallScript executes call method on GatewayEVM and it should be used on localnet. +// It uses anvil private key, and sets default contract addresses deployed on fresh localnet, that can be overriden with env vars. +contract EvmCallScript is Script { + function run() external { + address payable gatewayEVMAddress = payable(vm.envOr("GATEWAY_EVM", 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0)); + address payable zContractAddress = payable(vm.envOr("Z_CONTRACT", 0x68B1D87F95878fE05B998F19b66F4baba5De1aed)); + string memory mnemonic = "test test test test test test test test test test test junk"; + uint256 privateKey = vm.deriveKey(mnemonic, 0); + address deployer = vm.rememberKey(privateKey); + + vm.startBroadcast(deployer); + + GatewayEVM gatewayEVM = GatewayEVM(gatewayEVMAddress); + TestZContract zContract = TestZContract(zContractAddress); + + // Encode the message + bytes memory message = abi.encode("hello"); + + // Call the function on GatewayEVM + try gatewayEVM.call(zContractAddress, message) { + console.log("TestZContract called from EVM."); + } catch (bytes memory err) { + console.log("Error calling TestZContract:"); + console.logBytes(err); + } + + vm.stopBroadcast(); + } +} diff --git a/v2/scripts/localnet/EvmDepositAndCall.s.sol b/v2/scripts/localnet/EvmDepositAndCall.s.sol new file mode 100644 index 00000000..284b010e --- /dev/null +++ b/v2/scripts/localnet/EvmDepositAndCall.s.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "src/evm/GatewayEVM.sol"; +import "test/utils/TestZContract.sol"; +import "test/utils/TestERC20.sol"; + +// EvmDepositAndCallScript executes depositAndCall method on GatewayEVM and it should be used on localnet. +// It uses anvil private key, and sets default contract addresses deployed on fresh localnet, that can be overriden with env vars. +contract EvmDepositAndCallScript is Script { + function run() external { + address payable gatewayEVMAddress = payable(vm.envOr("GATEWAY_EVM", 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0)); + address payable zContractAddress = payable(vm.envOr("Z_CONTRACT", 0x68B1D87F95878fE05B998F19b66F4baba5De1aed)); + address erc20Address = vm.envOr("ERC20", 0x9A676e781A523b5d0C0e43731313A708CB607508); + uint256 amount = vm.envOr("AMOUNT", uint256(1)); + string memory mnemonic = "test test test test test test test test test test test junk"; + uint256 privateKey = vm.deriveKey(mnemonic, 0); + address deployer = vm.rememberKey(privateKey); + + vm.startBroadcast(deployer); + + GatewayEVM gatewayEVM = GatewayEVM(gatewayEVMAddress); + TestZContract zContract = TestZContract(zContractAddress); + TestERC20 erc20 = TestERC20(erc20Address); + + // Approve the ERC20 transfer + erc20.approve(gatewayEVMAddress, amount); + + // Encode the payload + bytes memory payload = abi.encode("hello"); + + // Call the depositAndCall function on GatewayEVM + try gatewayEVM.depositAndCall( + zContractAddress, + amount, + erc20Address, + payload + ) { + console.log("TestZContract called from EVM."); + } catch (bytes memory err) { + console.log("Error calling TestZContract:"); + console.logBytes(err); + } + + vm.stopBroadcast(); + } +} diff --git a/v2/scripts/localnet/ZevmCall.s.sol b/v2/scripts/localnet/ZevmCall.s.sol new file mode 100644 index 00000000..544b90d6 --- /dev/null +++ b/v2/scripts/localnet/ZevmCall.s.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "src/zevm/GatewayZEVM.sol"; +import "test/utils/ReceiverEVM.sol"; + +// ZevmCallScript executes call method on GatewayZEVM and it should be used on localnet. +// It uses anvil private key, and sets default contract addresses deployed on fresh localnet, that can be overriden with env vars. +contract ZevmCallScript is Script { + function run() external { + address payable gatewayZEVMAddress = payable(vm.envOr("GATEWAY_ZEVM", 0x610178dA211FEF7D417bC0e6FeD39F05609AD788)); + address payable receiverEVMAddress = payable(vm.envOr("RECEIVER_EVM", 0x0B306BF915C4d645ff596e518fAf3F9669b97016)); + string memory mnemonic = "test test test test test test test test test test test junk"; + uint256 privateKey = vm.deriveKey(mnemonic, 0); + address deployer = vm.rememberKey(privateKey); + + vm.startBroadcast(deployer); + + GatewayZEVM gatewayZEVM = GatewayZEVM(gatewayZEVMAddress); + ReceiverEVM receiverEVM = ReceiverEVM(receiverEVMAddress); + + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + + // Encode the function call data + bytes memory message = abi.encodeWithSelector( + receiverEVM.receivePayable.selector, + str, + num, + flag + ); + + // Call the function on GatewayZEVM + try gatewayZEVM.call(abi.encodePacked(address(receiverEVM)), message) { + console.log("ReceiverEVM called from ZEVM."); + } catch (bytes memory err) { + console.log("Error calling ReceiverEVM:"); + console.logBytes(err); + } + + vm.stopBroadcast(); + } +} \ No newline at end of file diff --git a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol new file mode 100644 index 00000000..2cec8a66 --- /dev/null +++ b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "src/zevm/GatewayZEVM.sol"; +import "test/utils/ReceiverEVM.sol"; +import "test/utils/ZRC20New.sol"; + +// ZevmWithdrawAndCallScript executes withdrawAndCall method on GatewayZEVM and it should be used on localnet. +// It uses anvil private key, and sets default contract addresses deployed on fresh localnet, that can be overriden with env vars. +contract ZevmWithdrawAndCallScript is Script { + function run() external { + address payable gatewayZEVMAddress = payable(vm.envOr("GATEWAY_ZEVM", 0x610178dA211FEF7D417bC0e6FeD39F05609AD788)); + address payable receiverEVMAddress = payable(vm.envOr("RECEIVER_EVM", 0x0B306BF915C4d645ff596e518fAf3F9669b97016)); + address zrc20Address = vm.envOr("ZRC20", 0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe); + uint256 amount = vm.envOr("AMOUNT", uint256(1)); + string memory mnemonic = "test test test test test test test test test test test junk"; + uint256 privateKey = vm.deriveKey(mnemonic, 0); + address deployer = vm.rememberKey(privateKey); + + vm.startBroadcast(deployer); + + GatewayZEVM gatewayZEVM = GatewayZEVM(gatewayZEVMAddress); + ReceiverEVM receiverEVM = ReceiverEVM(receiverEVMAddress); + ZRC20New zrc20 = ZRC20New(zrc20Address); + + string memory str = "Hello!"; + uint256 num = 42; + bool flag = true; + + // Encode the function call data + bytes memory message = abi.encodeWithSelector( + receiverEVM.receivePayable.selector, + str, + num, + flag + ); + + try gatewayZEVM.withdrawAndCall( + abi.encodePacked(receiverEVMAddress), + amount, + zrc20Address, + message + ) { + console.log("ReceiverEVM called from ZEVM."); + } catch (bytes memory err) { + console.log("Error calling ReceiverEVM:"); + console.logBytes(err); + } + + vm.stopBroadcast(); + } +} diff --git a/v2/scripts/localnet/v2_localnet.md b/v2/scripts/localnet/v2_localnet.md new file mode 100644 index 00000000..e473d663 --- /dev/null +++ b/v2/scripts/localnet/v2_localnet.md @@ -0,0 +1,136 @@ +# V2 Contracts - Local Development Environment + +Important Notice: The new architecture (V2) is currently in active development. While the high-level interface presented in this document is expected to remain stable, some aspects of the architecture may change. + +## Introduction + +The new architecture aims to streamline the developer experience for building Universal Apps. Developers will primarily interact with two contracts: GatewayZEVM and GatewayEVM. + +* `GatewayEVM`: Deployed on each connected chain to interact with ZetaChain. +* `GatewayZEVM`: Deployed on ZetaChain to interact with connected chains. + +## Contract Interfaces + +The interface of the gateway contracts is centered around the deposit, withdraw, and call terminology: + +* Deposit: Transfer of assets from a connected chain to ZetaChain. +* Withdraw: Transfer of assets from ZetaChain to a connected chain. +* Call: Smart contract call involved in cross-chain transactions. + +In consequence, the interface is as follow: +* `GatewayEVM`: `deposit`, `depositAndCall`, and `call` +* `GatewayZEVM`: `withdraw`, `withdrawAndCall`, and `call` + +The motivation behind this interface is intuitiveness and simplicity. We support different asset types by using function overloading. + +### `GatewayEVM` + +* Deposit of native tokens to addresses on ZetaChain: + +```solidity +function deposit(address receiver) payable +``` + +* Deposit of ERC-20 tokens to addresses on ZetaChain: + +```solidity +function deposit(address receiver, uint256 amount, address asset) +``` + +* Deposit of native tokens and smart contract call on ZetaChain: + +```solidity +function depositAndCall(address receiver, bytes calldata payload) payable +``` + +* Deposit of ERC-20 tokens and smart contract call on ZetaChain: + +```solidity +depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) +``` + +* Simple Universal App contract call: + +```solidity +function call(address receiver, bytes calldata payload) +``` + +### `GatewayZEVM` + +* Withdraw of ZRC-20 tokens to its native connected chain: + +```solidity +function withdraw(bytes memory receiver, uint256 amount, address zrc20) +``` + +* Withdraw of ZRC-20 tokens and smart contract call on connected chain: + +```solidity +function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) +``` + +* Simple call to a contract on a connected chain: + +```solidity +function call(bytes memory receiver, bytes calldata message) external +``` + +## Experimenting with the New Architecture + +To experiment with the new architecture, you can deploy a local network using Anvil and test the gateways using the following commands: + +Clone the repository +``` +git clone https://github.com/zeta-chain/protocol-contracts.git +cd v2 +``` + +Start the local environment network +Note: `--hide="NODE"` is used to prevent verbose logging +``` +yarn +yarn localnet --hide="NODE" +``` + +The `localnet` command launches two processes: + +- A local Ethereum network (using Anvil) with the two gateway contracts deployed +- A background worker that relay messages between the two gateway contracts. It simulates the cross-chain message relaying that would normally happen between live networks with the [observers/signers](https://www.zetachain.com/docs/developers/architecture/observers/) mechanism. This allows to simulate a cross-chain environment on a single local chain. + +Running the command will deploy the two gateway contracts: + +``` +[WORKER] GatewayEVM: 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 +[WORKER] GatewayZEVM: 0x0165878A594ca255338adfa4d48449f69242Eb8F +``` + +The developers can develop application using these addresses, the messages will automatically be relayed by the worker. + +The local environment uses Anvil localnet. Therefore, the default Anvil localnet accounts can be used to interact with the network. + +``` +Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH) +Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + +Account #1: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000 ETH) +Private Key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + +Account #2: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (10000 ETH) +Private Key: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a +``` + +### Examples + +The example contracts demonstrate how the V2 interface can be leveraged to build Universal Apps. + +* [TestZContract](/test/utils/TestZContract.sol): ZetaChain contract (Universal App) that can be called from a connected chains +* [SenderZEVM](/test/utils/SenderZEVM.sol): ZetaChain contract calling a smart contract on a connected chains +* [ReceiverEVM](/test/utils/evm/ReceiverEVM.sol): contract on connected chain that can be called from ZetaChain + +The following commands can be used to test interactions between these contracts: +``` +forge script scripts/localnet/ZevmCall.s.sol --rpc-url 127.0.0.1:8545 --broadcast +forge script scripts/localnet/ZevmWithdrawAndCall.s.sol --rpc-url 127.0.0.1:8545 --broadcast +forge script scripts/localnet/EvmCall.s.sol --rpc-url 127.0.0.1:8545 --broadcast +forge script scripts/localnet/EvmDepositAndCall.s.sol --rpc-url 127.0.0.1:8545 --broadcast +``` \ No newline at end of file diff --git a/v2/scripts/localnet/worker.ts b/v2/scripts/localnet/worker.ts new file mode 100644 index 00000000..b5706cfd --- /dev/null +++ b/v2/scripts/localnet/worker.ts @@ -0,0 +1,310 @@ +import { ethers, NonceManager, Signer } from "ethers"; +import * as GatewayEVM from "../../out/GatewayEVM.sol/GatewayEVM.json"; +import * as Custody from "../../out/ERC20CustodyNew.sol/ERC20CustodyNew.json"; +import * as ReceiverEVM from "../../out/ReceiverEVM.sol/ReceiverEVM.json"; +import * as SenderZEVM from "../../out/SenderZEVM.sol/SenderZEVM.json"; +import * as ERC1967Proxy from "../../out/ERC1967Proxy.sol/ERC1967Proxy.json"; +import * as TestERC20 from "../../out/TestERC20.sol/TestERC20.json"; +import * as SystemContract from "../../out/SystemContractMock.sol/SystemContractMock.json"; +import * as GatewayZEVM from "../../out/GatewayZEVM.sol/GatewayZEVM.json"; +import * as TestZContract from "../../out/TestZContract.sol/TestZContract.json"; +import * as ZRC20New from "../../out/ZRC20New.sol/ZRC20New.json"; +import * as ZetaConnectorNonNative from "../../out/ZetaConnectorNonNative.sol/ZetaConnectorNonNative.json"; +import * as WETH9 from "../../out/WZETA.sol/WETH9.json"; +/* eslint-disable @typescript-eslint/no-explicit-any */ + +const FUNGIBLE_MODULE_ADDRESS = "0x735b14BB79463307AAcBED86DAf3322B1e6226aB"; + +let protocolContracts: any; +let testContracts: any; +let deployer: Signer; +const deployOpts = { + gasPrice: 10000000000, + gasLimit: 6721975, +}; +const provider = new ethers.JsonRpcProvider("http://127.0.0.1:8545"); +provider.pollingInterval = 100; + +const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: Signer) => { + // Prepare EVM + // Deploy protocol contracts (gateway and custody) + const testERC20Factory = new ethers.ContractFactory(TestERC20.abi, TestERC20.bytecode, deployer); + const testEVMZeta = await testERC20Factory.deploy("zeta", "ZETA", deployOpts); + console.log("TestEVMZeta:", testEVMZeta.target); + + const gatewayEVMFactory = new ethers.ContractFactory(GatewayEVM.abi, GatewayEVM.bytecode, deployer); + const gatewayEVMImpl = await gatewayEVMFactory.deploy(deployOpts); + + const gatewayEVMInterface = new ethers.Interface(GatewayEVM.abi); + const gatewayEVMInitFragment = gatewayEVMInterface.getFunction("initialize"); + const gatewayEVMInitdata = gatewayEVMInterface.encodeFunctionData(gatewayEVMInitFragment as ethers.FunctionFragment, [ + await deployer.getAddress(), + testEVMZeta.target, + ]); + + const proxyEVMFactory = new ethers.ContractFactory(ERC1967Proxy.abi, ERC1967Proxy.bytecode, deployer); + const proxyEVM = (await proxyEVMFactory.deploy(gatewayEVMImpl.target, gatewayEVMInitdata, deployOpts)) as any; + + const gatewayEVM = new ethers.Contract(proxyEVM.target, GatewayEVM.abi, deployer); + console.log("GatewayEVM:", gatewayEVM.target); + + const zetaConnectorFactory = new ethers.ContractFactory( + ZetaConnectorNonNative.abi, + ZetaConnectorNonNative.bytecode, + deployer + ); + const zetaConnector = await zetaConnectorFactory.deploy(gatewayEVM.target, testEVMZeta.target, deployer, deployOpts); + console.log("ZetaConnector:", zetaConnector.target); + + const custodyFactory = new ethers.ContractFactory(Custody.abi, Custody.bytecode, deployer); + const custody = await custodyFactory.deploy(gatewayEVM.target, await deployer.getAddress(), deployOpts); + console.log("Custody:", custody.target); + + await (gatewayEVM as any).connect(deployer).setCustody(custody.target, deployOpts); + await (gatewayEVM as any).connect(deployer).setConnector(zetaConnector.target, deployOpts); + + // Prepare ZEVM + // Deploy protocol contracts (gateway and system) + const weth9Factory = new ethers.ContractFactory(WETH9.abi, WETH9.bytecode, deployer); + const wzeta = await weth9Factory.deploy(deployOpts); + console.log("WZeta:", wzeta.target); + + const systemContractFactory = new ethers.ContractFactory(SystemContract.abi, SystemContract.bytecode, deployer); + const systemContract = await systemContractFactory.deploy( + ethers.ZeroAddress, + ethers.ZeroAddress, + ethers.ZeroAddress, + deployOpts + ); + + console.log("SystemContract:", systemContract.target); + + const gatewayZEVMFactory = new ethers.ContractFactory(GatewayZEVM.abi, GatewayZEVM.bytecode, deployer); + const gatewayZEVMImpl = await gatewayZEVMFactory.deploy(deployOpts); + + const gatewayZEVMInterface = new ethers.Interface(GatewayZEVM.abi); + const gatewayZEVMInitFragment = gatewayZEVMInterface.getFunction("initialize"); + const gatewayZEVMInitData = gatewayEVMInterface.encodeFunctionData( + gatewayZEVMInitFragment as ethers.FunctionFragment, + [wzeta.target] + ); + + const proxyZEVMFactory = new ethers.ContractFactory(ERC1967Proxy.abi, ERC1967Proxy.bytecode, deployer); + const proxyZEVM = (await proxyZEVMFactory.deploy(gatewayZEVMImpl.target, gatewayZEVMInitData, deployOpts)) as any; + + const gatewayZEVM = new ethers.Contract(proxyZEVM.target, GatewayZEVM.abi, deployer); + console.log("GatewayZEVM:", gatewayZEVM.target); + + await (wzeta as any).connect(fungibleModuleSigner).deposit({ ...deployOpts, value: ethers.parseEther("10") }); + await (wzeta as any).connect(fungibleModuleSigner).approve(gatewayZEVM.target, ethers.parseEther("10"), deployOpts); + await (wzeta as any).connect(deployer).deposit({ ...deployOpts, value: ethers.parseEther("10") }); + await (wzeta as any).connect(deployer).approve(gatewayZEVM.target, ethers.parseEther("10"), deployOpts); + + return { + custody, + zetaConnector, + gatewayEVM, + gatewayZEVM, + systemContract, + testEVMZeta, + wzeta, + }; +}; + +const deployTestContracts = async (protocolContracts: any, deployer: Signer, fungibleModuleSigner: Signer) => { + // Prepare EVM + // Deploy test contracts (erc20, receiver) and mint funds to test accounts + const deployOpts = { + gasPrice: 10000000000, + gasLimit: 6721975, + }; + const testERC20Factory = new ethers.ContractFactory(TestERC20.abi, TestERC20.bytecode, deployer); + const testEVMZeta = await testERC20Factory.deploy("zeta", "ZETA", deployOpts); + console.log("TestEVMZeta:", testEVMZeta.target); + + const token = await testERC20Factory.deploy("Test Token", "TTK", deployOpts); + console.log("TestERC20:", token.target); + + const receiverEVMFactory = new ethers.ContractFactory(ReceiverEVM.abi, ReceiverEVM.bytecode, deployer); + const receiverEVM = await receiverEVMFactory.deploy(deployOpts); + console.log("ReceiverEVM:", receiverEVM.target); + + await (token as any).connect(deployer).mint(await deployer.getAddress(), ethers.parseEther("1000"), deployOpts); + await (token as any) + .connect(deployer) + .transfer(protocolContracts.custody.target, ethers.parseEther("500"), deployOpts); + + // Prepare ZEVM + // Deploy test contracts (test zContract, zrc20, sender) and mint funds to test accounts + const testZContractFactory = new ethers.ContractFactory(TestZContract.abi, TestZContract.bytecode, deployer); + const testZContract = await testZContractFactory.deploy(deployOpts); + console.log("TestZContract:", testZContract.target); + + const zrc20Factory = new ethers.ContractFactory(ZRC20New.abi, ZRC20New.bytecode, deployer); + const zrc20 = await zrc20Factory + .connect(fungibleModuleSigner) + .deploy( + "TOKEN", + "TKN", + 18, + 1, + 1, + 0, + protocolContracts.systemContract.target, + protocolContracts.gatewayZEVM.target, + deployOpts + ); + console.log("ZRC20:", zrc20.target); + + await protocolContracts.systemContract.setGasCoinZRC20(1, zrc20.target, deployOpts); + await protocolContracts.systemContract.setGasPrice(1, zrc20.target, deployOpts); + await (zrc20 as any) + .connect(fungibleModuleSigner) + .deposit(await deployer.getAddress(), ethers.parseEther("100"), deployOpts); + await (zrc20 as any) + .connect(deployer) + .approve(protocolContracts.gatewayZEVM.target, ethers.parseEther("100"), deployOpts); + + // Include abi of gatewayZEVM events, so hardhat can decode them automatically + const senderABI = [...SenderZEVM.abi, ...GatewayZEVM.abi.filter((f) => f.type === "event")]; + + const senderZEVMFactory = new ethers.ContractFactory(senderABI, SenderZEVM.bytecode, deployer); + const senderZEVM = await senderZEVMFactory.deploy(protocolContracts.gatewayZEVM.target, deployOpts); + await (zrc20 as any).connect(fungibleModuleSigner).deposit(senderZEVM.target, ethers.parseEther("100"), deployOpts); + + return { + zrc20, + receiverEVM, + senderZEVM, + testZContract, + }; +}; + +const startWorker = async () => { + // anvil test mnemonic + const mnemonic = "test test test test test test test test test test test junk"; + + // impersonate and fund fungible module account + await provider.send("anvil_impersonateAccount", [FUNGIBLE_MODULE_ADDRESS]); + await provider.send("anvil_setBalance", [FUNGIBLE_MODULE_ADDRESS, ethers.parseEther("100000").toString()]); + const fungibleModuleSigner = await provider.getSigner(FUNGIBLE_MODULE_ADDRESS); + + deployer = new NonceManager(ethers.Wallet.fromPhrase(mnemonic, provider)); + deployer.connect(provider); + + protocolContracts = await deployProtocolContracts(deployer, fungibleModuleSigner); + testContracts = await deployTestContracts(protocolContracts, deployer, fungibleModuleSigner); + + // Listen to contracts events + // event Call(address indexed sender, bytes receiver, bytes message); + protocolContracts.gatewayZEVM.on("Call", async (...args: Array) => { + console.log("Worker: Call event on GatewayZEVM."); + console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); + try { + (deployer as NonceManager).reset(); + + const receiver = args[1]; + const message = args[2]; + + const executeTx = await protocolContracts.gatewayEVM.connect(deployer).execute(receiver, message, deployOpts); + await executeTx.wait(); + } catch (e) { + console.error("failed:", e); + } + }); + + // event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); + protocolContracts.gatewayZEVM.on("Withdrawal", async (...args: Array) => { + console.log("Worker: Withdrawal event on GatewayZEVM."); + console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); + try { + const receiver = args[2]; + const message = args[6]; + (deployer as NonceManager).reset(); + + if (message != "0x") { + const executeTx = await protocolContracts.gatewayEVM.connect(deployer).execute(receiver, message, deployOpts); + await executeTx.wait(); + } + } catch (e) { + console.error("failed:", e); + } + }); + + testContracts.receiverEVM.on("ReceivedPayable", () => { + console.log("ReceiverEVM: receivePayable called!"); + }); + + // event Call(address indexed sender, address indexed receiver, bytes payload); + protocolContracts.gatewayEVM.on("Call", async (...args: Array) => { + console.log("Worker: Call event on GatewayEVM."); + console.log("Worker: Calling TestZContract through GatewayZEVM..."); + try { + const zContract = args[1]; + const payload = args[2]; + (deployer as NonceManager).reset(); + // Encode the parameters + const origin = protocolContracts.gatewayZEVM.target; + const sender = await fungibleModuleSigner.getAddress(); + const chainID = 1; + + // Call the execute function + const executeTx = await protocolContracts.gatewayZEVM.connect(fungibleModuleSigner).execute( + { + origin, + sender, + chainID, + }, + testContracts.zrc20.target, + 0, + zContract, + payload, + deployOpts + ); + await executeTx.wait(); + } catch (e) { + console.error("failed:", e); + } + }); + + // event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload); + protocolContracts.gatewayEVM.on("Deposit", async (...args: Array) => { + console.log("Worker: Deposit event on GatewayEVM."); + console.log("Worker: Calling TestZContract through GatewayZEVM..."); + try { + const receiver = args[1]; + const asset = args[3]; + const payload = args[4]; + if (payload != "0x") { + const executeTx = await (protocolContracts.gatewayZEVM as any) + .connect(fungibleModuleSigner) + .execute( + [protocolContracts.gatewayZEVM.target, await fungibleModuleSigner.getAddress(), 1], + asset, + 0, + receiver, + payload, + deployOpts + ); + await executeTx.wait(); + } + } catch (e) { + console.error("failed:", e); + } + }); + + testContracts.testZContract.on("ContextData", async () => { + console.log("TestZContract: onCrosschainCall called!"); + }); + + process.stdin.resume(); +}; + +startWorker() + .then(() => { + console.log("Setup complete, monitoring events. Press CTRL+C to exit."); + }) + .catch((error) => { + console.error("Failed to deploy contracts or set up listeners:", error); + process.exit(1); + }); diff --git a/v2/ts.config.json b/v2/ts.config.json new file mode 100644 index 00000000..62f7fd81 --- /dev/null +++ b/v2/ts.config.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "module": "commonjs", + "moduleResolution": "node", + "noImplicitAny": true, + "outDir": "dist", + "paths": { + }, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": false, + "strict": true, + "target": "es2020", + "typeRoots": ["@types", "./node_modules/@types"] + }, + "exclude": [] + } + \ No newline at end of file diff --git a/v2/yarn.lock b/v2/yarn.lock new file mode 100644 index 00000000..9d3df7d8 --- /dev/null +++ b/v2/yarn.lock @@ -0,0 +1,1322 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@babel/runtime@^7.21.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" + integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== + dependencies: + regenerator-runtime "^0.14.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@eslint/js@^9.7.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4" + integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/eslint@*": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" + integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint__js@^8.42.3": + version "8.42.3" + resolved "https://registry.yarnpkg.com/@types/eslint__js/-/eslint__js-8.42.3.tgz#d1fa13e5c1be63a10b4e3afe992779f81c1179a0" + integrity sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw== + dependencies: + "@types/eslint" "*" + +"@types/estree@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/json-schema@*": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + +"@typescript-eslint/eslint-plugin@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz#c8ed1af1ad2928ede5cdd207f7e3090499e1f77b" + integrity sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/type-utils" "7.17.0" + "@typescript-eslint/utils" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.17.0.tgz#be8e32c159190cd40a305a2121220eadea5a88e7" + integrity sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A== + dependencies: + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/typescript-estree" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz#e072d0f914662a7bfd6c058165e3c2b35ea26b9d" + integrity sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA== + dependencies: + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" + +"@typescript-eslint/type-utils@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz#c5da78feb134c9c9978cbe89e2b1a589ed22091a" + integrity sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA== + dependencies: + "@typescript-eslint/typescript-estree" "7.17.0" + "@typescript-eslint/utils" "7.17.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.17.0.tgz#7ce8185bdf06bc3494e73d143dbf3293111b9cff" + integrity sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A== + +"@typescript-eslint/typescript-estree@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz#dcab3fea4c07482329dd6107d3c6480e228e4130" + integrity sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw== + dependencies: + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/visitor-keys" "7.17.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.17.0.tgz#815cd85b9001845d41b699b0ce4f92d6dfb84902" + integrity sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.17.0" + "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/typescript-estree" "7.17.0" + +"@typescript-eslint/visitor-keys@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz#680465c734be30969e564b4647f38d6cdf49bfb0" + integrity sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A== + dependencies: + "@typescript-eslint/types" "7.17.0" + eslint-visitor-keys "^3.4.3" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.3" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethers@^6.13.1: + version "6.13.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.2.tgz#4b67d4b49e69b59893931a032560999e5e4419fe" + integrity sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.17.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +joi@^17.11.0: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^2.1.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript-eslint@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.17.0.tgz#cc5eddafd38b3c1fe8a52826469d5c78700b7aa7" + integrity sha512-spQxsQvPguduCUfyUvLItvKqK3l8KJ/kqs5Pb/URtzQ5AC53Z6us32St37rpmlt2uESG23lOFpV4UErrmy4dZQ== + dependencies: + "@typescript-eslint/eslint-plugin" "7.17.0" + "@typescript-eslint/parser" "7.17.0" + "@typescript-eslint/utils" "7.17.0" + +typescript@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +wait-on@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" + integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== + dependencies: + axios "^1.6.1" + joi "^17.11.0" + lodash "^4.17.21" + minimist "^1.2.8" + rxjs "^7.8.1" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 4c013a2eb57d01e429af1149c487a1b41a09574a Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 00:23:04 +0200 Subject: [PATCH 36/60] readme and test fixes --- .github/workflows/test_v2.yaml | 2 +- README.md | 13 +++++++++++++ v1/readme.md | 6 ------ v2/README.md | 17 +++-------------- 4 files changed, 17 insertions(+), 21 deletions(-) create mode 100644 README.md diff --git a/.github/workflows/test_v2.yaml b/.github/workflows/test_v2.yaml index 1117d42f..577246e5 100644 --- a/.github/workflows/test_v2.yaml +++ b/.github/workflows/test_v2.yaml @@ -32,7 +32,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "21.0.0" + node-version: "21.1.0" registry-url: "https://registry.npmjs.org" - name: Install Foundry diff --git a/README.md b/README.md new file mode 100644 index 00000000..72fd47bd --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# ZetaChain Protocol Contracts + +Contracts of official protocol contracts deployed by the core ZetaChain team. + +## Learn more about ZetaChain + +* Check our [website](https://www.zetachain.com/). +* Read our [docs](https://docs.zetachain.com/). + +## Packages + +- [v1 legacy contracts](v1) +- [v2 new contracts (currently in development)](v2) \ No newline at end of file diff --git a/v1/readme.md b/v1/readme.md index e889516a..25c42190 100644 --- a/v1/readme.md +++ b/v1/readme.md @@ -1,9 +1,3 @@ -### ⚠️ Important Notice: V2 in Development - -We are currently developing Version 2 (V2) of our smart contract architecture. This new version will significantly enhance the developer experience for building Universal Apps. - -Developers can already begin testing the new interface by referring to [the V2 Localnet guide](/v2_localnet.md). - # ZetaChain Protocol Contracts This repository contains ZetaChain protocol contracts: Solidity source code, diff --git a/v2/README.md b/v2/README.md index 9265b455..cef47d16 100644 --- a/v2/README.md +++ b/v2/README.md @@ -1,19 +1,8 @@ -## Foundry +### ⚠️ Important Notice: V2 in Development -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** +We are currently developing Version 2 (V2) of our smart contract architecture. This new version will significantly enhance the developer experience for building Universal Apps. -Foundry consists of: - -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. - -## Documentation - -https://book.getfoundry.sh/ - -## Usage +Developers can already begin testing the new interface by referring to [the V2 Localnet guide](/v2_localnet.md). ### Build From f401c98d2f715a05035ab39ccab9a2bac5bc6b67 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 00:27:38 +0200 Subject: [PATCH 37/60] lint v2 --- .github/workflows/lint_v2.yaml | 48 +++++++++++++++++++++++++++++++ .solhint.json => v1/.solhint.json | 0 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/lint_v2.yaml rename .solhint.json => v1/.solhint.json (100%) diff --git a/.github/workflows/lint_v2.yaml b/.github/workflows/lint_v2.yaml new file mode 100644 index 00000000..d8f478d3 --- /dev/null +++ b/.github/workflows/lint_v2.yaml @@ -0,0 +1,48 @@ +name: Lint TS/JS/Sol (V2) + +on: + push: + branches: + - main + paths: + - 'v2/**' + pull_request: + branches: + - "*" + types: + - synchronize + - opened + - reopened + - ready_for_review + +defaults: + run: + working-directory: ./v2 + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "21.1.0" + registry-url: "https://registry.npmjs.org" + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Install Dependencies + run: yarn install + + - name: Lint JavaScript/TypeScript + run: yarn lint + + - name: Lint Solidity + run: forge fmt --check diff --git a/.solhint.json b/v1/.solhint.json similarity index 100% rename from .solhint.json rename to v1/.solhint.json From 8af5d05a0c6fe08ce86a2103084660f323c56939 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 00:33:15 +0200 Subject: [PATCH 38/60] enable coverage and slither on v2 --- .github/workflows/coverage.yaml | 43 ---------------------- .github/workflows/slither.yaml | 55 ---------------------------- .github/workflows/slither_v2.yaml | 61 +++++++++++++++++++++++++++++++ .github/workflows/test_v2.yaml | 9 +++++ v1/slither.config.json | 4 -- v2/package.json | 3 +- v2/slither.config.json | 4 ++ 7 files changed, 76 insertions(+), 103 deletions(-) delete mode 100644 .github/workflows/coverage.yaml delete mode 100644 .github/workflows/slither.yaml create mode 100644 .github/workflows/slither_v2.yaml delete mode 100644 v1/slither.config.json create mode 100644 v2/slither.config.json diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml deleted file mode 100644 index d2bcafc0..00000000 --- a/.github/workflows/coverage.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# name: Coverage - -# on: -# push: -# branches: -# - main -# pull_request: -# branches: -# - "*" -# types: -# - synchronize -# - opened -# - reopened -# - ready_for_review - -# jobs: -# coverage: -# runs-on: ubuntu-latest - -# steps: -# - name: Checkout Repository -# uses: actions/checkout@v3 - -# - name: Setup Node.js -# uses: actions/setup-node@v3 -# with: -# node-version: "18" -# registry-url: "https://registry.npmjs.org" - -# - name: Install Foundry -# uses: foundry-rs/foundry-toolchain@v1 - -# - name: Install Dependencies -# run: yarn install - -# - name: Test with coverage -# run: yarn coverage - -# - name: Upload coverage reports to Codecov -# uses: codecov/codecov-action@v4.0.1 -# with: -# token: ${{ secrets.CODECOV_TOKEN }} -# files: lcov.info diff --git a/.github/workflows/slither.yaml b/.github/workflows/slither.yaml deleted file mode 100644 index 2327b45f..00000000 --- a/.github/workflows/slither.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# name: Slither - -# on: -# push: -# branches: -# - main -# pull_request: -# branches: -# - "*" -# types: -# - synchronize -# - opened -# - reopened -# - ready_for_review - -# jobs: -# slither: -# runs-on: ubuntu-latest -# permissions: -# contents: read -# security-events: write - -# steps: -# - name: Checkout -# uses: actions/checkout@v3 -# with: -# submodules: recursive - -# - name: Install Node.js -# uses: actions/setup-node@v2 -# with: -# node-version: "18" - -# - name: Install Foundry -# uses: foundry-rs/foundry-toolchain@v1 - -# - name: Install dependencies -# run: yarn install - -# - name: Build project -# run: yarn build - -# - name: Run Slither -# uses: crytic/slither-action@main -# id: slither -# continue-on-error: true -# with: -# sarif: results.sarif -# node-version: "18" -# fail-on: none - -# - name: Upload SARIF file -# uses: github/codeql-action/upload-sarif@v3 -# with: -# sarif_file: ${{ steps.slither.outputs.sarif }} diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml new file mode 100644 index 00000000..83967f31 --- /dev/null +++ b/.github/workflows/slither_v2.yaml @@ -0,0 +1,61 @@ +name: Slither (V2) + +on: + push: + branches: + - main + paths: + - 'v2/**' + pull_request: + branches: + - "*" + types: + - synchronize + - opened + - reopened + - ready_for_review + +defaults: + run: + working-directory: ./v2 + +jobs: + slither: + runs-on: ubuntu-latest + permissions: + contents: read + security-events: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Node.js + uses: actions/setup-node@v2 + with: + node-version: "21.1.0" + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Install dependencies + run: yarn install + + - name: Build project + run: forge build + + - name: Run Slither + uses: crytic/slither-action@main + id: slither + continue-on-error: true + with: + sarif: results.sarif + node-version: "21.1.0" + fail-on: none + + - name: Upload SARIF file + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: ${{ steps.slither.outputs.sarif }} diff --git a/.github/workflows/test_v2.yaml b/.github/workflows/test_v2.yaml index 577246e5..32709121 100644 --- a/.github/workflows/test_v2.yaml +++ b/.github/workflows/test_v2.yaml @@ -43,3 +43,12 @@ jobs: - name: Test run: yarn test + + - name: Coverage + run: yarn coverage + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info diff --git a/v1/slither.config.json b/v1/slither.config.json deleted file mode 100644 index 42ebfc46..00000000 --- a/v1/slither.config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "detectors_to_exclude": "", - "filter_paths": "forge-std,artifacts,cache,data,dist,docs,lib,node_modules,pkg,scripts,tasks,test,testing,typechain-types,contracts/evm,contracts/zevm" -} diff --git a/v2/package.json b/v2/package.json index 544b4a68..6102e504 100644 --- a/v2/package.json +++ b/v2/package.json @@ -10,7 +10,8 @@ "lint": "npx eslint . --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "lint:fix": "npx eslint . --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"anvil --auto-impersonate\" \"wait-on tcp:8545 && npx ts-node scripts/localnet/worker.ts\"", - "test": "forge clean && forge test -vv" + "test": "forge clean && forge test -vv", + "coverage": "forge clean && forge coverage --report lcov" }, "devDependencies": { "@eslint/js": "^9.7.0", diff --git a/v2/slither.config.json b/v2/slither.config.json new file mode 100644 index 00000000..5ed196ed --- /dev/null +++ b/v2/slither.config.json @@ -0,0 +1,4 @@ +{ + "detectors_to_exclude": "", + "filter_paths": "artifacts,cache,data,dist,docs,lib,node_modules,pkg,scripts,test,testing,typechain-types" +} From 545201b327fd126f4ab002426f688c3a49bef323 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 00:38:32 +0200 Subject: [PATCH 39/60] remove broadcast folder --- .../Deploy.t.sol/31337/run-1721941521.json | 148 --- .../Deploy.t.sol/31337/run-1721941537.json | 148 --- .../Deploy.t.sol/31337/run-1721941552.json | 148 --- .../Deploy.t.sol/31337/run-1721943917.json | 227 ---- .../Deploy.t.sol/31337/run-1721944003.json | 301 ----- .../Deploy.t.sol/31337/run-1721944043.json | 381 ------ .../Deploy.t.sol/31337/run-1721944644.json | 307 ----- .../Deploy.t.sol/31337/run-1721945079.json | 289 ----- .../Deploy.t.sol/31337/run-1721945234.json | 574 --------- .../Deploy.t.sol/31337/run-1721945386.json | 574 --------- .../Deploy.t.sol/31337/run-1721945532.json | 574 --------- .../Deploy.t.sol/31337/run-1721945545.json | 574 --------- .../Deploy.t.sol/31337/run-1721945594.json | 574 --------- .../Deploy.t.sol/31337/run-1721945817.json | 574 --------- .../Deploy.t.sol/31337/run-1721945836.json | 289 ----- .../Deploy.t.sol/31337/run-1721945852.json | 574 --------- .../Deploy.t.sol/31337/run-1721946037.json | 728 ----------- .../Deploy.t.sol/31337/run-1721946198.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946304.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946326.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946347.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946364.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946479.json | 929 -------------- .../Deploy.t.sol/31337/run-1721946544.json | 1078 ----------------- .../Deploy.t.sol/31337/run-1721946584.json | 1078 ----------------- .../Deploy.t.sol/31337/run-1721946611.json | 1077 ---------------- .../Deploy.t.sol/31337/run-latest.json | 1077 ---------------- .../EvmCall.s.sol/31337/run-1722019987.json | 69 -- .../EvmCall.s.sol/31337/run-1722020072.json | 69 -- .../EvmCall.s.sol/31337/run-1722020162.json | 69 -- .../EvmCall.s.sol/31337/run-1722020201.json | 69 -- .../EvmCall.s.sol/31337/run-1722020244.json | 69 -- .../EvmCall.s.sol/31337/run-1722020326.json | 69 -- .../EvmCall.s.sol/31337/run-1722020353.json | 69 -- .../EvmCall.s.sol/31337/run-1722020544.json | 69 -- .../EvmCall.s.sol/31337/run-1722020594.json | 69 -- .../EvmCall.s.sol/31337/run-1722020645.json | 69 -- .../EvmCall.s.sol/31337/run-1722020667.json | 69 -- .../EvmCall.s.sol/31337/run-1722020737.json | 69 -- .../EvmCall.s.sol/31337/run-1722020759.json | 69 -- .../EvmCall.s.sol/31337/run-1722020844.json | 69 -- .../EvmCall.s.sol/31337/run-1722020882.json | 69 -- .../EvmCall.s.sol/31337/run-1722020898.json | 69 -- .../EvmCall.s.sol/31337/run-1722020953.json | 69 -- .../EvmCall.s.sol/31337/run-1722021051.json | 69 -- .../EvmCall.s.sol/31337/run-1722021079.json | 69 -- .../EvmCall.s.sol/31337/run-1722021116.json | 69 -- .../EvmCall.s.sol/31337/run-1722021137.json | 69 -- .../EvmCall.s.sol/31337/run-1722021160.json | 69 -- .../EvmCall.s.sol/31337/run-1722021237.json | 69 -- .../EvmCall.s.sol/31337/run-1722021281.json | 69 -- .../EvmCall.s.sol/31337/run-latest.json | 69 -- .../31337/run-1722021596.json | 144 --- .../31337/run-1722025672.json | 144 --- .../31337/run-latest.json | 144 --- .../ZevmCall.s.sol/31337/run-1722009201.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009258.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009361.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009428.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009517.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009689.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009885.json | 68 -- .../ZevmCall.s.sol/31337/run-1722009949.json | 68 -- .../ZevmCall.s.sol/31337/run-1722010025.json | 68 -- .../ZevmCall.s.sol/31337/run-1722010111.json | 68 -- .../ZevmCall.s.sol/31337/run-1722010410.json | 68 -- .../ZevmCall.s.sol/31337/run-1722010426.json | 68 -- .../ZevmCall.s.sol/31337/run-1722010675.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011033.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011431.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011464.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011593.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011900.json | 68 -- .../ZevmCall.s.sol/31337/run-1722011932.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012130.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012143.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012254.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012502.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012678.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012845.json | 68 -- .../ZevmCall.s.sol/31337/run-1722012873.json | 68 -- .../ZevmCall.s.sol/31337/run-1722019487.json | 68 -- .../ZevmCall.s.sol/31337/run-1722019521.json | 68 -- .../ZevmCall.s.sol/31337/run-1722019617.json | 68 -- .../ZevmCall.s.sol/31337/run-latest.json | 68 -- .../31337/run-1722017717.json | 150 --- .../31337/run-1722017758.json | 150 --- .../31337/run-1722019253.json | 150 --- .../31337/run-1722019296.json | 150 --- .../31337/run-1722019382.json | 150 --- .../31337/run-1722019532.json | 150 --- .../31337/run-1722019595.json | 150 --- .../31337/run-1722019611.json | 150 --- .../31337/run-latest.json | 150 --- 94 files changed, 22415 deletions(-) delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941521.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941537.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721941552.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721943917.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944003.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944043.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721944644.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945079.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945234.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945386.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945532.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945545.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945594.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945817.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945836.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721945852.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946037.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946198.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946304.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946326.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946347.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946364.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946479.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946544.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946584.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-1721946611.json delete mode 100644 v2/broadcast/Deploy.t.sol/31337/run-latest.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json delete mode 100644 v2/broadcast/EvmCall.s.sol/31337/run-latest.json delete mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json delete mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json delete mode 100644 v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json delete mode 100644 v2/broadcast/ZevmCall.s.sol/31337/run-latest.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json delete mode 100644 v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json deleted file mode 100644 index 62e6ac63..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721941521.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f989", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x65dafd8dac9521666aec9f95a6aa3df796594d40e4ee08f3e9f40cd595a36a52", - "blockNumber": "0x1", - "blockTimestamp": "0x66a2be11", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "blockHash": "0x65dafd8dac9521666aec9f95a6aa3df796594d40e4ee08f3e9f40cd595a36a52", - "blockNumber": "0x1", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3f3", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x", - "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be12", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be12", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be12", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "blockHash": "0x4cc2279673abf038a7b52e2d246b4e75dca6d01711dc8ff0b0f29ee6a2582475", - "blockNumber": "0x2", - "gasUsed": "0x3d3f3", - "effectiveGasPrice": "0x3537eca6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721941521, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json deleted file mode 100644 index c97f1cb8..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721941537.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f989", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x5a215dceafb60791b5ebb1a46417e12d7a1a4be64cd3ce9d7ed97502284f269e", - "blockNumber": "0x1", - "blockTimestamp": "0x66a2be21", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "blockHash": "0x5a215dceafb60791b5ebb1a46417e12d7a1a4be64cd3ce9d7ed97502284f269e", - "blockNumber": "0x1", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3f3", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x", - "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be22", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be22", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be22", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "blockHash": "0x2e5007129ab4ac74cb60342b78622ebe8c65fec619d5d813d184a6ccdaabdd3f", - "blockNumber": "0x2", - "gasUsed": "0x3d3f3", - "effectiveGasPrice": "0x3537eca6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721941537, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json b/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json deleted file mode 100644 index 01a2b802..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721941552.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f989", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000c7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e14100000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xa9e6832611525152abaf7eb5a722e5bb29a61afb76471f44a866271df74fdb7e", - "blockNumber": "0x1", - "blockTimestamp": "0x66a2be30", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "blockHash": "0xa9e6832611525152abaf7eb5a722e5bb29a61afb76471f44a866271df74fdb7e", - "blockNumber": "0x1", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3f3", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x", - "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be31", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be31", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2be31", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0xacabac8c53e37738ba00a7588f7c47fc699fc4a74c61a656f617a13c1ecfa431", - "transactionIndex": "0x0", - "blockHash": "0xb7093f3d2a28e3baf9d0d5c943820542edfab1e84299981e933551da860beb3c", - "blockNumber": "0x2", - "gasUsed": "0x3d3f3", - "effectiveGasPrice": "0x3537eca6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x7b608e89953409718309b4f4fd80ad17ee53b697a886b8a80147a895f16263a4" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721941552, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json b/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json deleted file mode 100644 index 0cc88faa..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721943917.json +++ /dev/null @@ -1,227 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x384a7bab75644b2b32cc04ae348de6ec00c3fa96c5f6d46c51601a409ab52a58", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": [ - "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x61bf2c15e9e060e48f48b871c8ac36a70c70a74afd942fb18dbcf00f99d8c8e8", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "function": null, - "arguments": [ - "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xfbab40f047e7ad3552ff03ecb40125d0898bf68339b49deb64472af0193752dc", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2c76d", - "transactionHash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x50128acb167ca409aba39d5d758a04fa976cf1d1cd21082b6d5121cb36bef9c5", - "transactionIndex": "0x0", - "blockHash": "0xfbab40f047e7ad3552ff03ecb40125d0898bf68339b49deb64472af0193752dc", - "blockNumber": "0x3", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x2ead6a5d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0xbc481b3792feaf69d059e309b4414a287f057e77d485d37e467f0ac115fce1f4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x", - "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", - "blockNumber": "0x4", - "blockTimestamp": "0x66a2c76e", - "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", - "blockNumber": "0x4", - "blockTimestamp": "0x66a2c76e", - "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", - "blockNumber": "0x4", - "blockTimestamp": "0x66a2c76e", - "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000001000000000000000000000000400000000000020000000000000100000800000000000000000000000000000000400000000008000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xbe55151aeec6b7f6fd1239004cdf79927d53172bc6b1a3357a9b547d90020baa", - "transactionIndex": "0x0", - "blockHash": "0x414317a583002bbf5a4bc8498f82f4bebc012868ac4f26478d488a3286a8a593", - "blockNumber": "0x4", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x29ad2016", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "root": "0x775eed85b5933092df8cedbd7e1475c86653c93f53de49b3b6a189c431da3b0b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x384a7bab75644b2b32cc04ae348de6ec00c3fa96c5f6d46c51601a409ab52a58", - "transactionIndex": "0x0", - "blockHash": "0x883aad7b8242a384b540addede20437f2961d6bec7c7d5aae877b8f68684fabd", - "blockNumber": "0x5", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x248dc9bd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0xfd049a1107f50fd32436b6c1badc2d62e7fff2b0d5e86352dbc9721f6d843efa" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x61bf2c15e9e060e48f48b871c8ac36a70c70a74afd942fb18dbcf00f99d8c8e8", - "transactionIndex": "0x0", - "blockHash": "0xda61407010bb63c8dd9af73ee66a278cf341171e74c826459e347830f014b081", - "blockNumber": "0x6", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x20318484", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "root": "0xb3f2abe6d8496d0baa62f50e14c4214bd712e0adfcc5638ecd56c31ac0745f03" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721943917, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json deleted file mode 100644 index 899d33de..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721944003.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb29715218d53a6971a85b677de1ea74c1e284731f8e044ea5b7c4fbd3c6fdc53", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2a85117600db9b4eca65f48439739e572a86d0439695133fec7917cad2a56ba4", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x26b8d0e0749101712fb0bc49df1487a3a8f043983e068b17c9b6afa20a019129", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": null, - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "gas": "0x113d6", - "value": "0x0", - "input": "0xae7a3a6f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x3a8df224e3319c24da26d8c27f8aa4def6762a7c418b1bc3347d99d3195ef582", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": null, - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "gas": "0x113d9", - "value": "0x0", - "input": "0x10188aef0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xfaf6ad873e6b9bd596a00586d3b03785b24454547aa36fafebead07069e1fd6b", - "blockNumber": "0x7", - "blockTimestamp": "0x66a2c7c2", - "transactionHash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9f0ecd940bb8b8523502d6df08cabffcfa200e0c0548c5d3912a841b11d3da92", - "transactionIndex": "0x0", - "blockHash": "0xfaf6ad873e6b9bd596a00586d3b03785b24454547aa36fafebead07069e1fd6b", - "blockNumber": "0x7", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x1c58cd37", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0x7bff5895ddc18c63452b12751c0fc9ad5d5030979151c397110f302dbc8b6ae9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x", - "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2c7c3", - "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2c7c3", - "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2c7c3", - "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x912aa2485ad932716e348650f1d9ea47d0cf06ff3355484777039b01175ba7a0", - "transactionIndex": "0x0", - "blockHash": "0x376ac68f058bbd7b0d86b92716f2fb12e4db465e0eab815bd190b8254e486932", - "blockNumber": "0x8", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x194f4a32", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x0196bf3652e78ce5c4914fff1c59784ae95a02cfcb51109dd6d819c0d461d37f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xb29715218d53a6971a85b677de1ea74c1e284731f8e044ea5b7c4fbd3c6fdc53", - "transactionIndex": "0x0", - "blockHash": "0x229c461d2a8d77a6bc77ef257eb789a5d4b4ecd1bf683e069ad6a5187eac7c86", - "blockNumber": "0x9", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x1632ec5d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "root": "0x1e74c67ce78f2f9d953bf1fea0aa25c84010fcc317fa7c15e24ffa62cbeaa717" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2a85117600db9b4eca65f48439739e572a86d0439695133fec7917cad2a56ba4", - "transactionIndex": "0x0", - "blockHash": "0x20eb86a49461b181d9d0b7e0265a52eba0a910fbb49ee37d006b0d74040ab000", - "blockNumber": "0xa", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x138d0505", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "root": "0x7a811999c5e90d5f096cc000ae5b9b52b948497f2d9451d8f960f6226b9527d7" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc7b4", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x26b8d0e0749101712fb0bc49df1487a3a8f043983e068b17c9b6afa20a019129", - "transactionIndex": "0x0", - "blockHash": "0x10ff19781c5146efe0294e423daaff8a95e34ad6676b53fa64d658c067136c05", - "blockNumber": "0xb", - "gasUsed": "0xc7b4", - "effectiveGasPrice": "0x1137020e", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "contractAddress": null, - "root": "0x433eaae37668b89ded9bc4680e49532683d22fbbd535c77f25dfa074b13cbf0f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc7b6", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x3a8df224e3319c24da26d8c27f8aa4def6762a7c418b1bc3347d99d3195ef582", - "transactionIndex": "0x0", - "blockHash": "0x509397ac40da5d7468ffa1b04f0a7282a1b5cccaccf533a68bf3b8cec6b3a9b1", - "blockNumber": "0xc", - "gasUsed": "0xc7b6", - "effectiveGasPrice": "0xf120273", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "contractAddress": null, - "root": "0x442f56ee270c2fd189e3fe2637b0b9441033e9f1c5c07114cacda9474ac8ec6d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721944003, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json deleted file mode 100644 index c0155b0d..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721944043.json +++ /dev/null @@ -1,381 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x08c986ceb390097140e457c7c6ed1e08b7bc8e285d00c59fa3d0e369bd979fba", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6ed3f18b774462c17ff535e29c798c8b20b876bd642859784a55b0ea822ed350", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe905095dffd478ea3ed919d363c3e326451a1678b74cb19f5cf4a77fe1a0449d", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe5205df1a59720c6717291318de8837032b594a27b083ac759889cfc4aea67df", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0c329d6042730a9da60dde9e9b1d8d87b7213ef4a88c6c5a877c9a80a4feb952", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": null, - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "gas": "0x113d6", - "value": "0x0", - "input": "0xae7a3a6f000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7bd656390f93953e239e787903a6eb24ab4ec1cc5b878bbaa50226ff2a01e72e", - "transactionType": "CALL", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": null, - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "gas": "0x113d9", - "value": "0x0", - "input": "0x10188aef0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xd8f2da10752733dfc78b8822336efc36301f6c0df1a77a170b8136f247518dec", - "blockNumber": "0xd", - "blockTimestamp": "0x66a2c7eb", - "transactionHash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x862504b0e543baf0812f294e6988438527fe89e06b4ab7bbc343e5fcd8f747de", - "transactionIndex": "0x0", - "blockHash": "0xd8f2da10752733dfc78b8822336efc36301f6c0df1a77a170b8136f247518dec", - "blockNumber": "0xd", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0xd3166ef", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0x0883a48f3df3dfe967fc3620f78e0c20b0f5fcf299cb631937d3371685070621" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x", - "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2c7ec", - "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2c7ec", - "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2c7ec", - "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xb0b82ddb8ac164aa4b2dc4bbb0e09da1fb97c6ecb351b4bc7c1d973a71cfe629", - "transactionIndex": "0x0", - "blockHash": "0x49818223d20908cf8f8a1c5823894655005477ebdc09d1112cdbe2bb4bfeadc9", - "blockNumber": "0xe", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0xbc789f0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0xc5178904a5ec521a4ae03e6e70d3ee825ed84d8fbbeef487376e0b1fb9d9c072" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x08c986ceb390097140e457c7c6ed1e08b7bc8e285d00c59fa3d0e369bd979fba", - "transactionIndex": "0x0", - "blockHash": "0x3d228570f553d0ad6239f62dbcb048420660cfa2e79af527c81990a4c838cc90", - "blockNumber": "0xf", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0xa54e67c", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0x05f237a79a2e9178ca6502113f83674eb21e3c0980fdde57d1bd4fcbb324768c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6ed3f18b774462c17ff535e29c798c8b20b876bd642859784a55b0ea822ed350", - "transactionIndex": "0x0", - "blockHash": "0xbdc640ef3c738f976ab3aa288d3568e720d781b99af307e9c814d976562ef6bd", - "blockNumber": "0x10", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x9196557", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "root": "0x6ea7273491279168e1c1f4443c74742e3ec748dadc005ade143e3955a76373c0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe905095dffd478ea3ed919d363c3e326451a1678b74cb19f5cf4a77fe1a0449d", - "transactionIndex": "0x0", - "blockHash": "0x4afdcd185f34e6cdb07736ec6dffa441376af187bf0a98df6fd9cb29e72b1318", - "blockNumber": "0x11", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x80312fb", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xddf59510603753369860ee04d89f3793bd19cf2e80b99ba77f475da98a022d0a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe5205df1a59720c6717291318de8837032b594a27b083ac759889cfc4aea67df", - "transactionIndex": "0x0", - "blockHash": "0x0872684390fcd9feea2222245670a731e51f4fd6deaa767b33f7577991ba8c96", - "blockNumber": "0x12", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x7030f1b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x840e2bfecaeabeab6d42c7bfc4a980fc0bd75874737c31a5cee8a4b687fb5106" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc7b4", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0c329d6042730a9da60dde9e9b1d8d87b7213ef4a88c6c5a877c9a80a4feb952", - "transactionIndex": "0x0", - "blockHash": "0x965e16aeb084609847da35c888e50eb7755fbdb157ec030db9bd4d69f24d345c", - "blockNumber": "0x13", - "gasUsed": "0xc7b4", - "effectiveGasPrice": "0x622ffec", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "contractAddress": null, - "root": "0x9ab28ac8f68600703b0b019d6b9f82de67dd7445c0909205d1f67b79dcf37425" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc7b6", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7bd656390f93953e239e787903a6eb24ab4ec1cc5b878bbaa50226ff2a01e72e", - "transactionIndex": "0x0", - "blockHash": "0x0aa5d5c0cb5c86c143554397fc9634382f4a58a0ad74884e2ca54b1dfba2a77d", - "blockNumber": "0x14", - "gasUsed": "0xc7b6", - "effectiveGasPrice": "0x55f4b46", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "contractAddress": null, - "root": "0x13ff44b06883d63fd9d9c1d5c492a1ac02573c7278bbf475f6f231a71b4156f8" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721944043, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json b/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json deleted file mode 100644 index 8ef46a12..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721944644.json +++ /dev/null @@ -1,307 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "function": null, - "arguments": [ - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x935e4c074c290473865c0f2bc6d6b61f3e6f93c7a22d2fc11cc3f662df762320", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "function": null, - "arguments": [ - "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x12", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2683b163e064d3f815d74733855032e7bbad3d073d252204ab115bf948a4d192", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "function": null, - "arguments": [ - "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x13", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x57d70ca75255f2294b2c040a01667f766af67a0cc10f71939233d3613456533a", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x14", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd01623f6ce4d78dcb755d44662f9417904e27ac089c0868ad6e072d9eeecb718", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x15", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xc505b2f3bca9f1e9d6524f21c30d5f4906d402f042321d3e70c4ba3662ab7517", - "blockNumber": "0x15", - "blockTimestamp": "0x66a2ca44", - "transactionHash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000010000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9ba17cecd1eca44aaad1a9fa665e6c12a2c4b8a260038e3c3c2630ec87a92072", - "transactionIndex": "0x0", - "blockHash": "0xc505b2f3bca9f1e9d6524f21c30d5f4906d402f042321d3e70c4ba3662ab7517", - "blockNumber": "0x15", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x4b3f7de", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "root": "0xa0e1085ffdb1fb82c57ca44ffb69a38b04189fe28356263d32ecfc09f2e9ec6e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" - ], - "data": "0x", - "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", - "blockNumber": "0x16", - "blockTimestamp": "0x66a2ca45", - "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", - "blockNumber": "0x16", - "blockTimestamp": "0x66a2ca45", - "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", - "blockNumber": "0x16", - "blockTimestamp": "0x66a2ca45", - "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000001000000000000000000400000000000000000800000000000000000000020000800000000000000000000000000000000000000000000000004000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000800000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002204000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x41095b8e988d8f2466892960430ec43b1471af76469abd5d6de8011238e9cd7b", - "transactionIndex": "0x0", - "blockHash": "0x818737921453149e95434d584fbc50b72e40288225c87849893a1f58c749da89", - "blockNumber": "0x16", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x432f8db", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "root": "0x177e3c3c67e5a85782fefe355df3460bad75d0d2ceacdcd64aaba01fb38ba047" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x935e4c074c290473865c0f2bc6d6b61f3e6f93c7a22d2fc11cc3f662df762320", - "transactionIndex": "0x0", - "blockHash": "0x7601777373a6e87b4f363d7ca21ff42bfe0fab46fc65229c87fa8fd263b509b4", - "blockNumber": "0x17", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x3aed908", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "root": "0x8352e0eeec024ab46e8292f332a41b22a5beb1342a9740fae4694c21cfb09b25" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2683b163e064d3f815d74733855032e7bbad3d073d252204ab115bf948a4d192", - "transactionIndex": "0x0", - "blockHash": "0xf9f7dec3aba4fcb810377290dee3fe6807fd17a0e652d582f123eff52aedff02", - "blockNumber": "0x18", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x33e60a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "root": "0xf344995e4b982c5e5d5a078ec84ab45a490441d3bd1fcd290c24ff15f91378e9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x57d70ca75255f2294b2c040a01667f766af67a0cc10f71939233d3613456533a", - "transactionIndex": "0x0", - "blockHash": "0x4444e0f52f06446291449e9182ad23f16efa5145923534ce6518b713d673e386", - "blockNumber": "0x19", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x2db297c", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x08ed284988270284b17c7514a71c5ccf1300b4d6b913f605e0b437bac7f59e8f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd01623f6ce4d78dcb755d44662f9417904e27ac089c0868ad6e072d9eeecb718", - "transactionIndex": "0x0", - "blockHash": "0xb62381a8d15d6fe6cd560bd9dd922685d3acb9804d6eaea3651660ee959b5334", - "blockNumber": "0x1a", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x27fe5fd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x444e5d5cfe7950f9392a2dd2673b9eab5bf41de1107df8b05c5e2c16c7b306f8" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721944644, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json deleted file mode 100644 index 5727adb3..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945079.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "transactions": [ - { - "hash": null, - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945079, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json deleted file mode 100644 index 8c5a5547..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945234.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc9b06ab6dc4254696877bd61b694f47a14b067f688a6c1c4139a8efeb41b6ce2", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x725ab002a0fcd2ac1442bcdfd407cd98903d826e060a2d4df96bd8bf8f615587", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdde93cd64c5566128a6801d0a5205d76507a7fff4e73cea4d8d3297dd832f80e", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x89dcd11b7662fdfbb8fc67d395ce003433d20377c609e9429274d61c48989549", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x75b5f66d35669e63abd628e054dc25f3d2363a98f102c196662832265a04a816", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x82f22b5489cf88885c2ae3f5222970247f283647a2060d8e8beaaae14ab8d323", - "blockNumber": "0x1", - "blockTimestamp": "0x66a2cc92", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8ff03a2502aef1b5237f6c54fe5c52878f66fc1f35b2453db24040c0e8fd3576", - "transactionIndex": "0x0", - "blockHash": "0x82f22b5489cf88885c2ae3f5222970247f283647a2060d8e8beaaae14ab8d323", - "blockNumber": "0x1", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x", - "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2cc93", - "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2cc93", - "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2cc93", - "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0xbf9fcdaf7005088cc251aa9064efb416a7c5f8687a2a9d826c9df81572d26e9c", - "transactionIndex": "0x0", - "blockHash": "0xd635d65c740741e74eb381c14a3f09dc793685f60df47c5a1f00f82b6b160685", - "blockNumber": "0x2", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x3537eca6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0xeceedc1f6dd69799a4ea6ccb95c7e550dc6f7156f3984f16c2c806e0f8cf1e03" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc9b06ab6dc4254696877bd61b694f47a14b067f688a6c1c4139a8efeb41b6ce2", - "transactionIndex": "0x0", - "blockHash": "0xb9aeeadf3effa6205fc90f6ded749f090abb7ef158d8e18b631946201f088a14", - "blockNumber": "0x3", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x2ead6a03", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0xbdc8b65953b71cfdc4a32b7945dbad53900a2628be581e87697b252de2509bf2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x725ab002a0fcd2ac1442bcdfd407cd98903d826e060a2d4df96bd8bf8f615587", - "transactionIndex": "0x0", - "blockHash": "0x0b307655b58c9dd5818377287a656f2777f79ea989e99c6c303106ffa6ccf0de", - "blockNumber": "0x4", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x291bfe84", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "root": "0x89da6e209e5143b17a430ec0556bc6096b6c1a09bafee3bae34649fee0288acb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdde93cd64c5566128a6801d0a5205d76507a7fff4e73cea4d8d3297dd832f80e", - "transactionIndex": "0x0", - "blockHash": "0x6f93bef0cdb323a30e2e081cf031022679306e46d0a24da4ab61ac9ca8f30993", - "blockNumber": "0x5", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x24328fff", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xff6027f0449d5969c29e16815e8526edae1ce71a7d88414086490e217ce9ab19" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x89dcd11b7662fdfbb8fc67d395ce003433d20377c609e9429274d61c48989549", - "transactionIndex": "0x0", - "blockHash": "0x6e76d56bb30da3bf513d558bfc09e70dfcbe9d0dfc10615039da64b1a33e6728", - "blockNumber": "0x6", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1fade8ec", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xfd1712d59665da902dcb461215a6dc7f962d280337dcc80c19e4d0d86b19e795" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x5d76a9bb38a9a70bb3e6abc34f5375dabc3912fb588ef974e4703fa6687ab61f", - "blockNumber": "0x7", - "blockTimestamp": "0x66a2cc98", - "transactionHash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xee5b1501c85730c5265e9b835eacfcfda45595ebd59ff49d16e4053da9e45df9", - "transactionIndex": "0x0", - "blockHash": "0x5d76a9bb38a9a70bb3e6abc34f5375dabc3912fb588ef974e4703fa6687ab61f", - "blockNumber": "0x7", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x1bb9a172", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0x3a8d5ae9c7bc338b0a9949282348000ab54a66531a1bd2a2fb11501384e1b4dc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x", - "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cc99", - "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cc99", - "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cc99", - "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x373bf673f7824cfde873ad97094a854b164118894223035b0a80b07e47d12188", - "transactionIndex": "0x0", - "blockHash": "0xd838474aeb73a0e28c0d7aefb9aa2be0f2347d5c85429bb7dd6ec42332230a5f", - "blockNumber": "0x8", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x18c03c57", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0xe3b1fceefb4f81618f65aed73dc172cf905b3e47f09eb5563d78da37e92cf0fc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x75b5f66d35669e63abd628e054dc25f3d2363a98f102c196662832265a04a816", - "transactionIndex": "0x0", - "blockHash": "0xdfe42142ce272542266e1b01393834f31308e7aa2db5438a2886f1651e4fa17c", - "blockNumber": "0x9", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x15b43ec6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "root": "0x02ffcb42219ce9314ecdc4f6011ff1fd493d98b3a52457923ef66b71fcf75d0e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945234, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json deleted file mode 100644 index 1918a55e..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945386.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": [ - "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x180d1d8f91359ea5b4d38f55f582df0b170d628ebec9dae8e6530ceaf6715fa0", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x87079b4688bb8d7cfe7bcc9028fbf30fc47b9a8338963bec1d380aa578b7a326", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2f33bace0567869c0a603ee42dcd6b85e033be748b6910c65a91fa260c713da8", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x27d8428bf0c1924800a9252b097763198c7101d48074c8cb7837eba514a787c9", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "function": null, - "arguments": [ - "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0974b290ea101001eac892c9c3896681312e72c8201ccda48503d9a8bdbdeb3b", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "function": null, - "arguments": [ - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x4e7a579a81b3c15d3d150f71da128bdde5c263c341ebaaf1e07bb304f377d607", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2cd2a", - "transactionHash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000040000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdb514c35e0b312ef893d1e1b3b52def7eb4c69b5b1e2318323bbb2dd5050600b", - "transactionIndex": "0x0", - "blockHash": "0x4e7a579a81b3c15d3d150f71da128bdde5c263c341ebaaf1e07bb304f377d607", - "blockNumber": "0xa", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x13140125", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "root": "0xe7d72b6e4aebc2fd197a15643163ee183e78fab39eb5c043bb0eaba6937df499" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x", - "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cd2b", - "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cd2b", - "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cd2b", - "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000a000001000000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000400000000000000001000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1c95eef0fd5ea70dbce031fd4331de163897c10b10ccd10b271c961b950b9489", - "transactionIndex": "0x0", - "blockHash": "0x0cdd237cd7d61b82fb4f95721bb40cc4f0c5615e92ad961dd36e8e49f1edf35e", - "blockNumber": "0xb", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1108b857", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0x7dd14748dd8243608c021eae87229839ab4dc2bfe0da4a7f664bc8ec9119c923" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x180d1d8f91359ea5b4d38f55f582df0b170d628ebec9dae8e6530ceaf6715fa0", - "transactionIndex": "0x0", - "blockHash": "0x2d9bc324f769c6f454c4c1c8aebd525af85636aad2de4ae51bb4d486c4b1acda", - "blockNumber": "0xc", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0xef0bef9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0xcd9005bdd5e5e72c0f44904ab646908a8598fbee024b26f4ebdf97d0fb5f6e9b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x87079b4688bb8d7cfe7bcc9028fbf30fc47b9a8338963bec1d380aa578b7a326", - "transactionIndex": "0x0", - "blockHash": "0x48a583a44eb393da57a656e5ddde06e89fd7fd69839c0c8923332d457622c52d", - "blockNumber": "0xd", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0xd288012", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0xdbffbc061fd5954d6ee3173bbc7b9d7836e67b0062659eef894d1ac90e574b93" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2f33bace0567869c0a603ee42dcd6b85e033be748b6910c65a91fa260c713da8", - "transactionIndex": "0x0", - "blockHash": "0xdeb6bcc6d96b00fcdc204e322bd713e2ecdfc33185b09d780c65e00064daf586", - "blockNumber": "0xe", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xb96061e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x62e5c82676cb7a3a640ebedc0abae774b19d5d1081f935fb07ca17d3e0c21280" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x27d8428bf0c1924800a9252b097763198c7101d48074c8cb7837eba514a787c9", - "transactionIndex": "0x0", - "blockHash": "0x8bdbfc41b4c58cda362efb5caf26133498a4bd0824b51d654c9933464b71dd30", - "blockNumber": "0xf", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xa23ce01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xf33a96a8c95aef63e35d07abf646d99dec34f6e374b7ad7288d6daa221b20059" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x7f7903c9701803a06736d857cb70cb10a2bffd9abfd100b82a0e4f7829a53dc8", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2cd30", - "transactionHash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000008080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000010000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4840c055e88790e8f97dc76f91598feb563cc714e8242816ffcd7a0fde73e6fa", - "transactionIndex": "0x0", - "blockHash": "0x7f7903c9701803a06736d857cb70cb10a2bffd9abfd100b82a0e4f7829a53dc8", - "blockNumber": "0x10", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x8dfcbd9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "root": "0x0dc9050ccadf868ef9e5749b141cf02e8fac91981a90230f2ad5f7c20f2378bd" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" - ], - "data": "0x", - "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cd31", - "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cd31", - "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cd31", - "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000020000300000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000010000000400000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xbccb18be7d9dbcefae719fcbfdf327fd9ae57a408306f43cb70b84d5f74eccf7", - "transactionIndex": "0x0", - "blockHash": "0x46daa8f2a961322eab572ee142df754beb8abb3ccd3d6061dacec05db089ec92", - "blockNumber": "0x11", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x7ec1726", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "root": "0xb2f1057026f9fcf7c99d8dc850b32950935d2b46bbaf9c4c16ce9cdae9cbd02d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0974b290ea101001eac892c9c3896681312e72c8201ccda48503d9a8bdbdeb3b", - "transactionIndex": "0x0", - "blockHash": "0x295ae81faf60b325236816c39fdb35eacd9ebc219b69a1eaf751120acb8496ab", - "blockNumber": "0x12", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x6f26ebb", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "root": "0xcf7ff057b0021e00509cac397112a81f173295387df07b05ecf06ff18a80b47a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945386, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json deleted file mode 100644 index 61982a8b..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945532.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x12", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "function": null, - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x13", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x9c69dbcadaa3316dd5efe207e6f96b98f0cbd5d8468d50be5d2f18e727e0e28a", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "function": null, - "arguments": [ - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x14", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4bcb291dfb9df27d6d8a80fcb185b7e9cd01f8f8da17da66fd036f1342055a0d", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", - "function": null, - "arguments": [ - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x15", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2b28809cd5158b5ae2c28d3a3a92c887877a2ec91e14c45f91ebc47b93c19aa3", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x16", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x55b18a6467a71be307b6d059a2ccd7b621685a0081672ec024bd064de164a7a0", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "function": null, - "arguments": [ - "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x48560", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x309b2bfd7a014c04ed2d9a1d81ace22e84a15574bed26e484daf14818d10a588", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "function": null, - "arguments": [ - "0x4A679253410272dd5232B3Ff7cF5dbB88f295319" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319", - "nonce": "0x1a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x4A679253410272dd5232B3Ff7cF5dbB88f295319" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f2953190000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x44596d63b9191d8ed5412318e64af4b8c515615bcc54373d9f67f5988b2d6110", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2cdbc", - "transactionHash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000", - "type": "0x2", - "transactionHash": "0x82c0b4b14e4a76464f04d11ff1ff5c40c5ab252f0365c004f9b051a9a0776b1d", - "transactionIndex": "0x0", - "blockHash": "0x44596d63b9191d8ed5412318e64af4b8c515615bcc54373d9f67f5988b2d6110", - "blockNumber": "0x13", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x61b4353", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "root": "0xb638a162157f82ae4bde4a95fa7889b7570ad4084589effaa4923afa382a380b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x", - "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2cdbd", - "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2cdbd", - "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2cdbd", - "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000800000010000000000010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000001000000004000000000000000000000020000000000000000", - "type": "0x2", - "transactionHash": "0xca7bd69de9e5c31e3cbdafabbc6f1e0e2f1f46ba519481687fe3b30d9cfc1060", - "transactionIndex": "0x0", - "blockHash": "0x842109f883f54024575acf8c8ef2f55b5d63359152231bf78c7ad80abba674de", - "blockNumber": "0x14", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x573c567", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "root": "0x185630e90ca079c4703b5f4914884336f493bfb0772374ce512829f49cc4f604" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9c69dbcadaa3316dd5efe207e6f96b98f0cbd5d8468d50be5d2f18e727e0e28a", - "transactionIndex": "0x0", - "blockHash": "0xcd992fe57664492fa191df9d68be15e3e3d8ffdffb36e74405a949ff311246ab", - "blockNumber": "0x15", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x4c837b0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "root": "0x26a1bcf91454bf5b1768ed2d2db0674688d9753310146aea9bc25dbf47542fd1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4bcb291dfb9df27d6d8a80fcb185b7e9cd01f8f8da17da66fd036f1342055a0d", - "transactionIndex": "0x0", - "blockHash": "0xf7ac259f93fdcd74ae54e4028d953cc915a8856f529ff548d606d0f68c0149a8", - "blockNumber": "0x16", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x4362eea", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", - "root": "0xcc6b7d90306bdc7ea6c4c48ecb68d791d07f44cc7c70319f2f077fc7d1ad6315" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2b28809cd5158b5ae2c28d3a3a92c887877a2ec91e14c45f91ebc47b93c19aa3", - "transactionIndex": "0x0", - "blockHash": "0x5a0df6c2e206d648351c9e2c63c72c9ec5c7705d35fc63373a7bc3603f5fb111", - "blockNumber": "0x17", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x3b55c00", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x65145317612c0eedf12662cdf66f0b6d2e893f28b1dee6875c5a0124a1864359" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x55b18a6467a71be307b6d059a2ccd7b621685a0081672ec024bd064de164a7a0", - "transactionIndex": "0x0", - "blockHash": "0x615f4c80cfb091ec68a7d36132a2bdae42f852b38e55082df94a5671b6db60ce", - "blockNumber": "0x18", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x33edc3e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x3342193fb4911ddddfdb67d9454b04a4d8b4c5a9c3d033ba4cbacf20e64d0591" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xacd41f32195e4f12dee6d073603340145675c4640214f56dcdfa9da6d06725b1", - "blockNumber": "0x19", - "blockTimestamp": "0x66a2cdc2", - "transactionHash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe59c2a9710359201114979229702ede2a91095b7acfdb4eac4d75874c6da5ebe", - "transactionIndex": "0x0", - "blockHash": "0xacd41f32195e4f12dee6d073603340145675c4640214f56dcdfa9da6d06725b1", - "blockNumber": "0x19", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x2d726fe", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "root": "0x39d926557660e444cb5dc7931a121cbc20563c77fbb7688688ab1a44d2080c02" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37a96", - "logs": [ - { - "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f" - ], - "data": "0x", - "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2cdc3", - "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2cdc3", - "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2cdc3", - "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000002000001000000000000000000000010000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000100000020000000300000000000000000000000002104000000000000000020000000000080000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xaa1eee3a63e52d61e0a7d55703446fecbcf446555e1bab55b6d8aa46eca0dc02", - "transactionIndex": "0x0", - "blockHash": "0x07f4c47ff2904f6a9ac5baf8c77573e76e20c62decf2579b53d0f7e7e5e83be4", - "blockNumber": "0x1a", - "gasUsed": "0x37a96", - "effectiveGasPrice": "0x28925bc", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "root": "0x7b31ca773075d7e359e32380437e4f3166e5a9aceac0e9167e48ba571d646f5f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x309b2bfd7a014c04ed2d9a1d81ace22e84a15574bed26e484daf14818d10a588", - "transactionIndex": "0x0", - "blockHash": "0x3318fcd5a11d2948b399a6b52ae3dad921206816d70642402cfdd4da7f1c56ba", - "blockNumber": "0x1b", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x2393cc0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "root": "0x12b304ab684c1d480158b25815fc9cf4d03021d6e4e27ae79730291dbcef57b8" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945532, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json deleted file mode 100644 index 4ed351c9..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945545.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x1b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "function": null, - "arguments": [ - "0x09635F643e140090A9A8Dcd712eD6285858ceBef", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f96a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1c", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x21f6e7739921738784950633a7e178755f49e125e43929ab55ae0ca1f52fcd00", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "function": null, - "arguments": [ - "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x1d", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2037dc2aed8769b4c7eaabc254c5015a6d5f49ab4a0dfb638c142474a1a30d43", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "function": null, - "arguments": [ - "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x1e", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x257a845535b95a7d39f89d33b2fbf8729358d143ff68708a5b408400202a4571", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x1f", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x76e325cff43c6f7aaa17cd4a3f569315df9ed9bf73d2bd3c6fd95d3e589b8b32", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x20", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x21", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "function": null, - "arguments": [ - "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x22", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x745cf009ede8ca3354402eefc20e4178c7f0c73a422abdd325ba5019ab63665f", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "function": null, - "arguments": [ - "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "nonce": "0x23", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xc1f3c679e63e964404ca5d7e01114dc6faa2bb89fa8791166eb0431c110eb87f", - "blockNumber": "0x1c", - "blockTimestamp": "0x66a2cdc9", - "transactionHash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe0e4ca096c84ee0a1919d80b7d4829e87765aba5c47f8479e5a83a50e3c9091e", - "transactionIndex": "0x0", - "blockHash": "0xc1f3c679e63e964404ca5d7e01114dc6faa2bb89fa8791166eb0431c110eb87f", - "blockNumber": "0x1c", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x1f45dc3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "root": "0xdb7e4fc555fc0749465682ea7e5e0d64050c2eb10a0bc1538a8b64e2f945f210" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3db", - "logs": [ - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef" - ], - "data": "0x", - "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a2cdca", - "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a2cdca", - "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a2cdca", - "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400004000000000000800000000000000000000000000000100000000000000000000000000000000004000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020080000200000000000000000000000002004000000000000000020000000000000000008000000000000000000000000000000008000000000000000", - "type": "0x2", - "transactionHash": "0xa04af5fe7870ebb5025eabc1c4389d73850d53e3613512d41b6c6ccaabe08394", - "transactionIndex": "0x0", - "blockHash": "0x468514382df6ab4b069c3a203d84fd3ab45fd42f4b98b58b08f6e6d4cf23db3d", - "blockNumber": "0x1d", - "gasUsed": "0x3d3db", - "effectiveGasPrice": "0x1bec17b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "root": "0x55aa945db3ee0a067f2773722ed620853958404cf9ca065172cb2365973b87a6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x21f6e7739921738784950633a7e178755f49e125e43929ab55ae0ca1f52fcd00", - "transactionIndex": "0x0", - "blockHash": "0xd8dd62964ab67e2a6b39a13ae6c266657e70db324908d432fd261fa887e96edf", - "blockNumber": "0x1e", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x187d85f", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "root": "0x0205a1e5ad993d8219059f23bc549b33cea2f01d62dd0ae86358e73b7ae06d99" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2037dc2aed8769b4c7eaabc254c5015a6d5f49ab4a0dfb638c142474a1a30d43", - "transactionIndex": "0x0", - "blockHash": "0x510fef54b2bff05b32a67ef683710d16fe1718a7436545c4f7018182a4aae9d4", - "blockNumber": "0x1f", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x1591a54", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "root": "0xcaeaead9e0f688869dac6fc3da6873238e0d685bbf646633e77b2d2322c2a501" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x257a845535b95a7d39f89d33b2fbf8729358d143ff68708a5b408400202a4571", - "transactionIndex": "0x0", - "blockHash": "0xecb5631c4f66df58969fcbda0d573ef7d796bd37a1ccda9a7f2ab3da5d628807", - "blockNumber": "0x20", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x12fde81", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xca05f73b424e6393d30b33bdfefe14178c5ff3480d391e728d130e1998fe6738" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x76e325cff43c6f7aaa17cd4a3f569315df9ed9bf73d2bd3c6fd95d3e589b8b32", - "transactionIndex": "0x0", - "blockHash": "0x0d398b8ea0c2bfc015bc9d3683ea89b95c1b8d26f6c680edb7ee0172ff454b4c", - "blockNumber": "0x21", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x109f0b1", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x5f2f9c39bd6718727dacfb29049a6af7753deccef2646af82783011595eff2c8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x5458742654b6e010cf3f3e597d5dfcd9afca967569132dcc0cf3e6d0823fe714", - "blockNumber": "0x22", - "blockTimestamp": "0x66a2cdcf", - "transactionHash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800040000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000008000000000", - "type": "0x2", - "transactionHash": "0x65e3dcb01a2caaa617979d95b6c6b673e882a969ec614fa24586011de159f401", - "transactionIndex": "0x0", - "blockHash": "0x5458742654b6e010cf3f3e597d5dfcd9afca967569132dcc0cf3e6d0823fe714", - "blockNumber": "0x22", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0xe8bedc", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9e545e3c0baab3e08cdfd552c960a1050f373042", - "root": "0xe38aa93f3a3d1693d2529ba4b306099c8674a43bc7898cd381bcb32cbfa4442f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042" - ], - "data": "0x", - "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2cdd0", - "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2cdd0", - "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2cdd0", - "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000010000000400000000000000000800000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000280000000000040000010000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8e893f3fbc0a36403b8562f62cdeb6c7b59efaa95c4d9aacb54b9e1c2a369608", - "transactionIndex": "0x0", - "blockHash": "0x356f6228d07cba7b117988b3b989d154b6c2cb6ea13e9e08cf8c99f64d0e32ae", - "blockNumber": "0x23", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0xcfc724", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "root": "0xfacdca2ee22ba431f16c12a3460d8d0d4902a47d381505dc67bdc73135add858" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x745cf009ede8ca3354402eefc20e4178c7f0c73a422abdd325ba5019ab63665f", - "transactionIndex": "0x0", - "blockHash": "0x3659a02d8bb3c5d83d51b9fa6bf66a14326245999eac2c98449ba8ad5ffa8021", - "blockNumber": "0x24", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0xb63351", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "root": "0x683bfc1e544718f8f0c7c86e64c242e5541c400c33db8864b8a9acea7e942a89" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945545, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json deleted file mode 100644 index 0367f650..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945594.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x24", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "function": null, - "arguments": [ - "0x851356ae760d987E095750cCeb3bC6014560891C", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x25", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe50ed36c50499d63d7dd168a965a6fceb86848611032258c46aa25a735ea812b", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x95401dc811bb5740090279ba06cfa8fcf6113778", - "function": null, - "arguments": [ - "0xf5059a5D33d5853360D16C683c16e67980206f36", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x26", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe7088a83ce9edc0c9ec478002ac3bffa25cb4285565a18b467705f3e684ad90d", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x998abeb3e57409262ae5b751f60747921b33613e", - "function": null, - "arguments": [ - "0xf5059a5D33d5853360D16C683c16e67980206f36", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x27", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x99e0913507826be5e017a1d8b8c6652ab493a10a4f193dd04557a023e549844c", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x28", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4ee29536ececfae28d6c548f02eda2c0077810d4e60358acb79688f8eaf5211b", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x95401dc811bb5740090279Ba06cfA8fcF6113778", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x29", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x2a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", - "function": null, - "arguments": [ - "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x2b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xbbf54169511f067a2d23f30806b0bfc6605f77962c22c3a7a3adaec42635a270", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf", - "function": null, - "arguments": [ - "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf", - "nonce": "0x2c", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x851356ae760d987e095750cceb3bc6014560891c", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xa2c263bbb67b455997f5c4363870a8501e8618e5d87be71016c45e2e72f1585a", - "blockNumber": "0x25", - "blockTimestamp": "0x66a2cdfa", - "transactionHash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x40e5b3cfdbb0399fccbbdbf8f9db3949e1c6ffbbbe402a9dba2f9c0a38bfe444", - "transactionIndex": "0x0", - "blockHash": "0xa2c263bbb67b455997f5c4363870a8501e8618e5d87be71016c45e2e72f1585a", - "blockNumber": "0x25", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0xa02806", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "root": "0x0730fdd3f8977b6a352835d0a52dbd2911f63dea047bbfb3c8ce01b6819ac053" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c" - ], - "data": "0x", - "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", - "blockNumber": "0x26", - "blockTimestamp": "0x66a2cdfb", - "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", - "blockNumber": "0x26", - "blockTimestamp": "0x66a2cdfb", - "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", - "blockNumber": "0x26", - "blockTimestamp": "0x66a2cdfb", - "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000820010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400400000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000004002004001000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa1a3dc2f1ea6d8f9afac5ad8861c7c404c7d252f30f7d4ce783a95ee211cd769", - "transactionIndex": "0x0", - "blockHash": "0x2d5509a67c9fe594e7da0b4a4c31e5be588d100f79f02963504aad39f1e764d8", - "blockNumber": "0x26", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x8eff2e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "root": "0x8090bfd0e22605bacddf7d31f5006b4b2eacdb41fe97ee9abcbad1b548ba45ff" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe50ed36c50499d63d7dd168a965a6fceb86848611032258c46aa25a735ea812b", - "transactionIndex": "0x0", - "blockHash": "0x1af3b87d8fda2642744b88bf52b1fdecef396f86878a5b073f15270baf5a8a40", - "blockNumber": "0x27", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x7d6bcf", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x95401dc811bb5740090279ba06cfa8fcf6113778", - "root": "0xedccf80a3e6f0910407ec58db829f676fee5481e21933b8cdad96ee3023df142" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe7088a83ce9edc0c9ec478002ac3bffa25cb4285565a18b467705f3e684ad90d", - "transactionIndex": "0x0", - "blockHash": "0xd7fada266bfeee5ca3dfb0e26c77a732acc543a5f7a52c9ee93cef35f12b9074", - "blockNumber": "0x28", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x6e75bd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x998abeb3e57409262ae5b751f60747921b33613e", - "root": "0x57171c85985f5ee190c52083a923a06e6361d6e24d9cfba56b68d4b07799a8d5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x99e0913507826be5e017a1d8b8c6652ab493a10a4f193dd04557a023e549844c", - "transactionIndex": "0x0", - "blockHash": "0x23141f9c2c818809cb1f090b6a6855b8f4f0667e70ed4abdf8e9e250560927a2", - "blockNumber": "0x29", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x61430d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x9c6b0fcbe0d7617d17d919a2840096365d38938835c8e658523ef5ba5650533f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4ee29536ececfae28d6c548f02eda2c0077810d4e60358acb79688f8eaf5211b", - "transactionIndex": "0x0", - "blockHash": "0xab6bbe21b2d0faa356a87e7a34297b5412aa87a9fd13c7948d0c8a1fba72fae6", - "blockNumber": "0x2a", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x551f27", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xd10571a0c2d4c8c02e53be71eac7a37e81ecd839ff9fb1d69a604ced209d9f06" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x2a313704552111547c3388ebce6228d67747609f0aba8f6d2c9c82abfd12997c", - "blockNumber": "0x2b", - "blockTimestamp": "0x66a2ce00", - "transactionHash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000080000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x447d1a6be5b6375ff3ba9d236a6da69088b10e22a235c25cd3313dc2079183d3", - "transactionIndex": "0x0", - "blockHash": "0x2a313704552111547c3388ebce6228d67747609f0aba8f6d2c9c82abfd12997c", - "blockNumber": "0x2b", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x4a7f2f", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", - "root": "0x5a3b6957455872854a03406ec155c46bcfb0069d144d60675e427845551f7a06" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" - ], - "data": "0x", - "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", - "blockNumber": "0x2c", - "blockTimestamp": "0x66a2ce01", - "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", - "blockNumber": "0x2c", - "blockTimestamp": "0x66a2ce01", - "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", - "blockNumber": "0x2c", - "blockTimestamp": "0x66a2ce01", - "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000010000000000000000000000400000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000100800000000000000000000000080000000000000000000000000000000200000000000000000000000000000000000000000000000000000000020200000200000100000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc5a83f0415d2d9c9055624276549e62eb4b7e1ffb2e707dce548389008c277a7", - "transactionIndex": "0x0", - "blockHash": "0x92b6cec6c6e166c9385bc09201fe1e0297ee52c7b0b682e8e42d2590b8f705f5", - "blockNumber": "0x2c", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x428155", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0e801d84fa97b50751dbf25036d067dcf18858bf", - "root": "0x1e563b96106645e6e3555d106c99fcf1333642b38138414dc08c90228c4406e0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xbbf54169511f067a2d23f30806b0bfc6605f77962c22c3a7a3adaec42635a270", - "transactionIndex": "0x0", - "blockHash": "0xc75949e3ad2094d641877ea638fb21fa5934638702aadc43924193a4a86122fe", - "blockNumber": "0x2d", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x3a5184", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf", - "root": "0x1b46895cc799fd97a89c26ba8152b06c8415596c986786046134f929c2736625" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945594, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json deleted file mode 100644 index d88c2407..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945817.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2fe52c8d31754bf2e0ac13dfe5a2f006c480c4ff0f354956d14b898c19cddafe", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x3109781be16702415d74b5cd2db47eb617ce0fba524645d83d756a1e193e278c", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0ced19781acf04fe8aa55336905fdeb38b66aaf21cc766f37883b2f681ef39fd", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa4d23e0a4ae1207005260bddc8330179ca32a0c468bdbd2cb8ae2d2d18fa2fb2", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x194c6666e3f18e3c04248cf25dd1741e42d959697bb3cedbecaa7ca11fc61d6e", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x715fdaa5c68fc3b9ee5e3ba494853c8ac363737c4fa34d27a56d89dd688f6439", - "blockNumber": "0x1", - "blockTimestamp": "0x66a2ced9", - "transactionHash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5d584106a7011004af6bc248912e5ea90ff32e5ba27b5ee28bcaf2074ee8faa8", - "transactionIndex": "0x0", - "blockHash": "0x715fdaa5c68fc3b9ee5e3ba494853c8ac363737c4fa34d27a56d89dd688f6439", - "blockNumber": "0x1", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0xaa979ffe626d772f76a0b7cb9ca3dfc016154556e9e21a03411e93d078390755" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x", - "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2ceda", - "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2ceda", - "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2ceda", - "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000200000100000000000000000000000000000000000002000000000000010080080000000400000000000000000000000040000000000000000000080000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000020000000000000100000000000200c000000000000000020000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0x156f722cd359867abb91072100cad245f9f2397ccb2372dafe917417a192ed91", - "transactionIndex": "0x0", - "blockHash": "0xecb61c2e0e32d82d1fa47d0e9fbc5ca7e91d062cc10da31d518078c8505e711f", - "blockNumber": "0x2", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x3537eca6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0xeceedc1f6dd69799a4ea6ccb95c7e550dc6f7156f3984f16c2c806e0f8cf1e03" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2fe52c8d31754bf2e0ac13dfe5a2f006c480c4ff0f354956d14b898c19cddafe", - "transactionIndex": "0x0", - "blockHash": "0x6d007c66d1c57d2e964e606a33dbee778d77a720852e0aa5b3367ce4e71b6a78", - "blockNumber": "0x3", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x2ead6a03", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0xbdc8b65953b71cfdc4a32b7945dbad53900a2628be581e87697b252de2509bf2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x3109781be16702415d74b5cd2db47eb617ce0fba524645d83d756a1e193e278c", - "transactionIndex": "0x0", - "blockHash": "0xad26f7fe25889953722743c2c48628ff7c9c0c128cc9c9a8e8da0f06013242c6", - "blockNumber": "0x4", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x291bfe84", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "root": "0x89da6e209e5143b17a430ec0556bc6096b6c1a09bafee3bae34649fee0288acb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0ced19781acf04fe8aa55336905fdeb38b66aaf21cc766f37883b2f681ef39fd", - "transactionIndex": "0x0", - "blockHash": "0x7a5a0ad04d9a2d1484d668cb250499f178a2836bfe2be8d07d2def678da48b01", - "blockNumber": "0x5", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x24328fff", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xff6027f0449d5969c29e16815e8526edae1ce71a7d88414086490e217ce9ab19" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa4d23e0a4ae1207005260bddc8330179ca32a0c468bdbd2cb8ae2d2d18fa2fb2", - "transactionIndex": "0x0", - "blockHash": "0xb7389a25f572f9806a3f2c83b61cc9f41015c974086e75eb804dabe18675a4df", - "blockNumber": "0x6", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1fade8ec", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xfd1712d59665da902dcb461215a6dc7f962d280337dcc80c19e4d0d86b19e795" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xe8c6591a306ab658e778ee4579675780f0f2ddbb56807f21296fa6d05fafd9d7", - "blockNumber": "0x7", - "blockTimestamp": "0x66a2cedf", - "transactionHash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd2973a095446f0eb42e583355c764d4416be3d75ba38484d52dcc4977df0c44f", - "transactionIndex": "0x0", - "blockHash": "0xe8c6591a306ab658e778ee4579675780f0f2ddbb56807f21296fa6d05fafd9d7", - "blockNumber": "0x7", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x1bb9a172", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0x3a8d5ae9c7bc338b0a9949282348000ab54a66531a1bd2a2fb11501384e1b4dc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x", - "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cee0", - "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cee0", - "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2cee0", - "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000040800000000000010000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000002000001000010000000010000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x695f384f654f91dacac1bc6e35c8ce7b1f175cc96a91c2ac4d99dc876e1cecc4", - "transactionIndex": "0x0", - "blockHash": "0xbbedd9be27670a6443cf7f0e704b4e4c7114fe762ead78d9a0886af716045a0c", - "blockNumber": "0x8", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x18c03c57", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0xe3b1fceefb4f81618f65aed73dc172cf905b3e47f09eb5563d78da37e92cf0fc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x194c6666e3f18e3c04248cf25dd1741e42d959697bb3cedbecaa7ca11fc61d6e", - "transactionIndex": "0x0", - "blockHash": "0xe9135b2bda32e52138be0a00baf79c942f374d0cfe9536915f7567c14962e061", - "blockNumber": "0x9", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x15b43ec6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "root": "0x02ffcb42219ce9314ecdc4f6011ff1fd493d98b3a52457923ef66b71fcf75d0e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945817, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json deleted file mode 100644 index 95c52018..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945836.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "transactions": [ - { - "hash": null, - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": [ - "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "function": null, - "arguments": [ - "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "function": null, - "arguments": [ - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945836, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json b/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json deleted file mode 100644 index 0e41cd32..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721945852.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": [ - "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8e75b438866b8c8463ddec8ee2d580dee7f93f7c918afbebef03ad6df9315416", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x23543a0ea573dfcbce3cb0a84938553b7978f388944ff571cd6e352e2af18f9e", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x136cb8a3008941c40d5ef499a255775ebeb8b050c3a87e473bac8f542f19d60f", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1c131c9d04fc8ae52570a7d4ae5c69c7e2add857a9ceeba411b995df2773ab56", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "function": null, - "arguments": [ - "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6347fc053ec3687c19f487fab4e07b302728eac1d0b637cd4177184a0d7170fd", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "function": null, - "arguments": [ - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b10000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": null, - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x814809222b0ddfde0e3dfe6e13bbe49d78ff0c73be017841cc14a38e989fd5e1", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2cefc", - "transactionHash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000040000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf64581c8648208e15dfb9ab82e2e08637fcbe89876600966a4e8ccae5593b026", - "transactionIndex": "0x0", - "blockHash": "0x814809222b0ddfde0e3dfe6e13bbe49d78ff0c73be017841cc14a38e989fd5e1", - "blockNumber": "0xa", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x13140125", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "root": "0xe7d72b6e4aebc2fd197a15643163ee183e78fab39eb5c043bb0eaba6937df499" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x", - "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cefd", - "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cefd", - "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2cefd", - "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000000000000000080000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000a000001000000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000400000000000000001000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1ed9c89ed62a9d624ed60bfd7852509cbe5ae9c16fcff16da6c46cf417ecb7d", - "transactionIndex": "0x0", - "blockHash": "0xf74515646edc636342442e9030dd216333ec98e618ad242110fe7bab5dbfe3f2", - "blockNumber": "0xb", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1108b857", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0x7dd14748dd8243608c021eae87229839ab4dc2bfe0da4a7f664bc8ec9119c923" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8e75b438866b8c8463ddec8ee2d580dee7f93f7c918afbebef03ad6df9315416", - "transactionIndex": "0x0", - "blockHash": "0x17cbeb7cfb019098452c155292187fcd835d176a2d8a861dab04d3607da86929", - "blockNumber": "0xc", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0xef0bef9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0xcd9005bdd5e5e72c0f44904ab646908a8598fbee024b26f4ebdf97d0fb5f6e9b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x23543a0ea573dfcbce3cb0a84938553b7978f388944ff571cd6e352e2af18f9e", - "transactionIndex": "0x0", - "blockHash": "0x06aea22af02661cb57664ef8f759cb65dcb12d907c6c522e7d2999c98838146a", - "blockNumber": "0xd", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0xd288012", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0xdbffbc061fd5954d6ee3173bbc7b9d7836e67b0062659eef894d1ac90e574b93" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x136cb8a3008941c40d5ef499a255775ebeb8b050c3a87e473bac8f542f19d60f", - "transactionIndex": "0x0", - "blockHash": "0x09a9be5084bc48aec7bcb59bd43a18ce17c8db2b874afbcc30facbdc4a51a83f", - "blockNumber": "0xe", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xb96061e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x62e5c82676cb7a3a640ebedc0abae774b19d5d1081f935fb07ca17d3e0c21280" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1c131c9d04fc8ae52570a7d4ae5c69c7e2add857a9ceeba411b995df2773ab56", - "transactionIndex": "0x0", - "blockHash": "0x3578beaa9d0c25673e2ebaa951c835050035613a2906a01158b4e6e16bf11983", - "blockNumber": "0xf", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xa23ce01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xf33a96a8c95aef63e35d07abf646d99dec34f6e374b7ad7288d6daa221b20059" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x0f9727b3d97d345da14a6b4c5e78699f8071ab8b7e49dd15446e2173e1f0a8a4", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2cf02", - "transactionHash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000008080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000010000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5cf11fb1bf0de4a4e6c6fb0e4bff51b8e13770a698659628bf3d994313001963", - "transactionIndex": "0x0", - "blockHash": "0x0f9727b3d97d345da14a6b4c5e78699f8071ab8b7e49dd15446e2173e1f0a8a4", - "blockNumber": "0x10", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x8dfcbd9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "root": "0x0dc9050ccadf868ef9e5749b141cf02e8fac91981a90230f2ad5f7c20f2378bd" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" - ], - "data": "0x", - "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cf03", - "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cf03", - "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2cf03", - "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000020000300000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000200000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000010000000400000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa46bdba35eb5536b22d1cd45e2c4d171cd04a8738d6a8ac29935325235be0972", - "transactionIndex": "0x0", - "blockHash": "0x2aecb7b7e90f672ca12e249995de89cd292bf0c7be0320dfd5958d27be277c9b", - "blockNumber": "0x11", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x7ec1726", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "root": "0xb2f1057026f9fcf7c99d8dc850b32950935d2b46bbaf9c4c16ce9cdae9cbd02d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6347fc053ec3687c19f487fab4e07b302728eac1d0b637cd4177184a0d7170fd", - "transactionIndex": "0x0", - "blockHash": "0x99dd567d7419a352b4130c708be55f172c051d87e2470d005b35f3709c809d2b", - "blockNumber": "0x12", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x6f26ebb", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "root": "0xcf7ff057b0021e00509cac397112a81f173295387df07b05ecf06ff18a80b47a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721945852, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json deleted file mode 100644 index aa82f956..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946037.json +++ /dev/null @@ -1,728 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x414ababc99dc574908549dde963d5ceca5bc32c7e5506deba3d5717239795dc1", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x12", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x13", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "function": null, - "arguments": [ - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x14", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x198ab714bf7a19f67df6961b6506bd196e8d58660d30b4506540c7a707462d4b", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", - "function": null, - "arguments": [ - "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x15", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x9a6ec162dffb6752b7137b1da6bc221641582a1383281dbb1cd076801443c7fb", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", - "function": null, - "arguments": [ - "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x16", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x209f6085a61fccd5b6e5d04723085c56c128b69223b5c5ee799b11ecaf3a95d9", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1ba51c711ef220101f665e5628a4882d3574a85406df7eea789f7ed298f97e08", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0x59b670e9fA9D0A427751Af201D676719a970857b", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb00000000000000000000000059b670e9fa9d0a427751af201d676719a970857b000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "function": null, - "arguments": [ - "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f29531900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xda2cace2d8659051f8de64eec320fc8ac898ec3985e9f81c7135a108542a3d34", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "function": null, - "arguments": [ - "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f", - "nonce": "0x1b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2ab80d4f72892ecfffc6d534913e72cebaa5b92d8f4f749464d67ef75e11a9d7", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x414ababc99dc574908549dde963d5ceca5bc32c7e5506deba3d5717239795dc1", - "transactionIndex": "0x0", - "blockHash": "0xb288427d6601b30022a197fbf830dcb0cba54bb3d1e48dc1bbacefc676085ef7", - "blockNumber": "0x13", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x61b4353", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0xed1c40c7b8c03f7e7e2cc5905703acb2d6afcb0e7ba18c055857b105a8bb76d1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xce574b11022db3b6041c6ef6209edcaca9643e94d8d2562838a725a4c729c2db", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2cfb6", - "transactionHash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000004000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2b7856c4d5369cad6aa174da19d6c70bc6781c53a8f95569587ed47a03e24b09", - "transactionIndex": "0x0", - "blockHash": "0xce574b11022db3b6041c6ef6209edcaca9643e94d8d2562838a725a4c729c2db", - "blockNumber": "0x14", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x55820f2", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "root": "0xd35b8751cbd7876aea8e805a36e31ed8c97664d071c5773e2c4ae420ff6abb5c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c" - ], - "data": "0x", - "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", - "blockNumber": "0x15", - "blockTimestamp": "0x66a2cfb7", - "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", - "blockNumber": "0x15", - "blockTimestamp": "0x66a2cfb7", - "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", - "blockNumber": "0x15", - "blockTimestamp": "0x66a2cfb7", - "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00040000000000000000000000000000400000000000000000800000000000000000000000000000000000800000000000000000000000000000000000000000000000002000000100000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000100000000000002004000000000000000020000000000000000000000000800000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5f5787ca2e3bab179e79345a9622db307ed2f0696f8893379a9fe7a7619235ba", - "transactionIndex": "0x0", - "blockHash": "0xa071e5f7de0263711fde2cbe11e9d6d1c89152b20fa5ccca9f7ef5073680da36", - "blockNumber": "0x15", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x4c58b43", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "root": "0xc1fc3de89cb73d463b1f0fbad56f0808428d04f6e316128bcc75fa974538416f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x198ab714bf7a19f67df6961b6506bd196e8d58660d30b4506540c7a707462d4b", - "transactionIndex": "0x0", - "blockHash": "0x75e515094ab9f4c1d0b19ee8115c0035460cf6836166c57eacc9721e013bb768", - "blockNumber": "0x16", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x42f6793", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x59b670e9fa9d0a427751af201d676719a970857b", - "root": "0x7c52ebc22a18f7a398021821136333134726c57264dc5fc8095807f91c3ab841" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9a6ec162dffb6752b7137b1da6bc221641582a1383281dbb1cd076801443c7fb", - "transactionIndex": "0x0", - "blockHash": "0x6fd6c03446099291ce7e7ef6c9462837f621e87813d7c31143ac64e8ddefd0c0", - "blockNumber": "0x17", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x3af995b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", - "root": "0xd17f56f4d5f21b9590728ee2650c588697a334a970455d8f7296567d55725b41" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x209f6085a61fccd5b6e5d04723085c56c128b69223b5c5ee799b11ecaf3a95d9", - "transactionIndex": "0x0", - "blockHash": "0x78523044b64e1f77815cf573c78bbcd90cf4b371727a317f311e4f3bcb92d303", - "blockNumber": "0x18", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x33edb09", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xf3f90c2b97a991c218b40b92455c7d46fc62e3d5e60268880ad555b7b988fc85" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1ba51c711ef220101f665e5628a4882d3574a85406df7eea789f7ed298f97e08", - "transactionIndex": "0x0", - "blockHash": "0xec7e8066ee149275d33f58b9f049e5ea42274f7929b9c2cca1f3a0d020c54a96", - "blockNumber": "0x19", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x2d725f0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xeeaea2f0779158272412ac06594d27e19ae799f6af6c3eaeee807c1221bfb8b8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x19a91c03f24f5450cf79ec4fefce305fb358b7b540a4532808d88b8da14e2d2e", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2cfbc", - "transactionHash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000100000000000000000000000000104000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xea11a63958d1e35773f22d4467ec654b8135fef24b5f3f4fb69575e1048a7da7", - "transactionIndex": "0x0", - "blockHash": "0x19a91c03f24f5450cf79ec4fefce305fb358b7b540a4532808d88b8da14e2d2e", - "blockNumber": "0x1a", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x27c62b3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "root": "0xe5a42b6c248d86fbaacbbef124766c501712f09dade94d957ccff3673d626e50" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319" - ], - "data": "0x", - "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", - "blockNumber": "0x1b", - "blockTimestamp": "0x66a2cfbd", - "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", - "blockNumber": "0x1b", - "blockTimestamp": "0x66a2cfbd", - "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", - "blockNumber": "0x1b", - "blockTimestamp": "0x66a2cfbd", - "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000001000000000000000000000400000000000000200800000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000001000800000000000000000000000080000200000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000080020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xbed4915d810a2f001d4ba58d969a8905d30ba1c3cc18fe738e5fca45d8ed12ef", - "transactionIndex": "0x0", - "blockHash": "0x9b9cc2644e983fc89a82a92fb8ea9fe9e338a717ad59dea398bef6affe3109f9", - "blockNumber": "0x1b", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x2381e1b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "root": "0xe24205b62034595de0934d5ebdcf090758c942cbfafcab38356c8d33cb9c938c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xda2cace2d8659051f8de64eec320fc8ac898ec3985e9f81c7135a108542a3d34", - "transactionIndex": "0x0", - "blockHash": "0x4a4395b0d72886cd01b4927ff17d526a28488b86ad56918ef50003c245bf8c42", - "blockNumber": "0x1c", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x1f22eae", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "root": "0x81bb5a77c8a9fca481402917ac9fb721ae5451d893f2defe0998e861e64a33ee" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0x6a646517a43650162366a37ab9ee69a9885fc249b8e5e8ce21d057d2eec3fdaa", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a2cfbf", - "transactionHash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x12d05cb2516a85807dcaa3ea54d54f2bfd34445de88ac0d9946b9396dccb4504", - "transactionIndex": "0x0", - "blockHash": "0x6a646517a43650162366a37ab9ee69a9885fc249b8e5e8ce21d057d2eec3fdaa", - "blockNumber": "0x1d", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x1b5e87a", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0x218f77b54e4f2606437dd3ae883ec7db9f803dc5eba95a0dcae3b40de2b4259f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2ab80d4f72892ecfffc6d534913e72cebaa5b92d8f4f749464d67ef75e11a9d7", - "transactionIndex": "0x0", - "blockHash": "0x29a99276b7df131a87470fb952878c7c7efff92d35f6f0308338347a3aed19d6", - "blockNumber": "0x1e", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0x18175ca", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0xf9d5ef525d5c488d1e6d223cb5e86d94f9e6921d29ffb97929d2622985872675" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0xee3c4a0fa55a1a594365972997a6357913c71156b74b3253bcf9143e27753f80", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a2cfc1", - "transactionHash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8fecd04d94b173855b23f03cfcda6c8d714293f946bab6eba8d764536e178dfc", - "transactionIndex": "0x0", - "blockHash": "0xee3c4a0fa55a1a594365972997a6357913c71156b74b3253bcf9143e27753f80", - "blockNumber": "0x1f", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x155ade7", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x31b4a61fd85a3e45b1058f29fb9aaeb0471041713fd989ee3d426ffa32de26b0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xc18acca3a8b44f33fecfb1aef2e49b55676e0bbd8ebe9520a6bbb9b79c96d90d", - "blockNumber": "0x20", - "blockTimestamp": "0x66a2cfc2", - "transactionHash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x176613b115a136e1ba8a0115a424055f83c62c17168a7b9d15b26b14f48f954c", - "transactionIndex": "0x0", - "blockHash": "0xc18acca3a8b44f33fecfb1aef2e49b55676e0bbd8ebe9520a6bbb9b79c96d90d", - "blockNumber": "0x20", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x12b1957", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x3cd2896d3fe1eea261498528c04a9f2784a6f2ba3f7e6bdb96318fcb35c5fc4b" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946037, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json deleted file mode 100644 index 3484fe4f..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946198.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9ec823825cc27ad44d2597cb4a857e67ce54296bee50c29fca218953df9f4919", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x1c", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x1d", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "function": null, - "arguments": [ - "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf5593300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1e", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x9125a67323e632ccf07462ffc264451c364939bb4f30c2bd6166c9bcf76eb72b", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", - "function": null, - "arguments": [ - "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x1f", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x799657f4b571e3e6b2368b5c924c29ae983e60fdef7bef68fb76a7397f8ad8c2", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x84ea74d481ee0a5332c457a4d796187f6ba67feb", - "function": null, - "arguments": [ - "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x20", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdee6ee36ff9eeec8e064f15e05a96fe6a798e6abb52bb7b80da081a687b0b2fe", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x21", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x398df7aeab0936eae92eb857adffb3177fd03d0bdcc57cbb0b31333da9ea84dd", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "function": "transfer(address,uint256)", - "arguments": [ - "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x22", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x23", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "function": null, - "arguments": [ - "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x24", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xec61994125075bd25585fcc889493d2d6aee9faf1886310558ebbdf70b2084be", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "function": null, - "arguments": [ - "0x851356ae760d987E095750cCeb3bC6014560891C" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c", - "nonce": "0x25", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x18bf98a677440f78c9d06b32297100334d1bfc4a348c735b5a2e9153879da49f", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921", - "0x851356ae760d987E095750cCeb3bC6014560891C" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c6343000815003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d18e54daf4f677cb28167158d6dd21f6ab3921000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x13A0c5930C028511Dc02665E7285134B6d11A5f4" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba000000000000000000000000000000000000000000000000000000000000000100000000000000000000000013a0c5930c028511dc02665e7285134b6d11a5f4", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf5059a5D33d5853360D16C683c16e67980206f36", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "function": "approve(address,uint256)", - "arguments": [ - "0x851356ae760d987E095750cCeb3bC6014560891C", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x26", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9ec823825cc27ad44d2597cb4a857e67ce54296bee50c29fca218953df9f4919", - "transactionIndex": "0x0", - "blockHash": "0xe7914672e3fe0aafb6f01304e2e547193fdd40caf67be4101bf14e54471bdc4e", - "blockNumber": "0x21", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x105d2fc", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x9a3f07ee1531d521eec173ae2b7169702db6a24e381a8897c417ea359585b4a7" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x92820684ef3d3b4302f7ac68a10e74b7e3918fd49ddff481f2fe10e683f48450", - "blockNumber": "0x22", - "blockTimestamp": "0x66a2d057", - "transactionHash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000", - "type": "0x2", - "transactionHash": "0xc186a2c55b36703fbe7b859e755072235d083623caadb49ddb9d741bdacd25ae", - "transactionIndex": "0x0", - "blockHash": "0x92820684ef3d3b4302f7ac68a10e74b7e3918fd49ddff481f2fe10e683f48450", - "blockNumber": "0x22", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0xe52458", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "root": "0x5ef441ce76bd1b43e8086fed4768407a041cf04e385b209b92483ebd2518f4f3" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933" - ], - "data": "0x", - "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2d058", - "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2d058", - "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", - "blockNumber": "0x23", - "blockTimestamp": "0x66a2d058", - "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000002001001000000000000000000000000000000000002020000000000000100000800000000000000000000000000080000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000010000000000000020000000200000000000000000000000002004000000000200000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7a2273ab2080cc0a99294b43bbdea2b49937d11da2ff98ce710e03f803fd2a5b", - "transactionIndex": "0x0", - "blockHash": "0xcc8d07e2596271080090d8465dd820d29eb897e09621ec3d4f4cd9ee876e5418", - "blockNumber": "0x23", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0xcc9755", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "root": "0xa6037e2d33f8edf77602f74da043fc2d2944a891b9f19c32b1f7f538aceb4c2a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9125a67323e632ccf07462ffc264451c364939bb4f30c2bd6166c9bcf76eb72b", - "transactionIndex": "0x0", - "blockHash": "0x226df89c29f4c20ed3da426590b2f092703e997e1c404afcec679623e8d507ea", - "blockNumber": "0x24", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0xb371e8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", - "root": "0xdbfaddd6e873629146826663203e845384bc82e2d00f0b2e4523b4583807bfa2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x799657f4b571e3e6b2368b5c924c29ae983e60fdef7bef68fb76a7397f8ad8c2", - "transactionIndex": "0x0", - "blockHash": "0xb913467349f68bdf69190cd8c0f05e1532fca195e726cab0dab3667eb5330fa5", - "blockNumber": "0x25", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x9e0a13", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x84ea74d481ee0a5332c457a4d796187f6ba67feb", - "root": "0x6b4c14ef2350a975e815512e55ae7c42499673410e8f6a06f5a98db2491c715e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdee6ee36ff9eeec8e064f15e05a96fe6a798e6abb52bb7b80da081a687b0b2fe", - "transactionIndex": "0x0", - "blockHash": "0x7dcee32d08f1d40af1a299d22e25d1669f944024a3144d5fd7a1afb7ade65a2c", - "blockNumber": "0x26", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x8b280d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0x9efeab05c3f44903d6433a70feb87e0225b90190622519f96146537dd24f7642" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x398df7aeab0936eae92eb857adffb3177fd03d0bdcc57cbb0b31333da9ea84dd", - "transactionIndex": "0x0", - "blockHash": "0x01989dfd744c1d367b25688553f4ba020f9b091fc05eead3d7360626b5207a85", - "blockNumber": "0x27", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x79c975", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xc7f2cf4845c6db0e1a1e91ed41bcd0fcc1b0e141", - "contractAddress": null, - "root": "0xa06a001f01c926776989e379a9155e421cbc30640daee63e70004324d7255934" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x659f1d99b23bd21e83b5291d128d24edf07038e70f8b039addf4a3d6a33fdbd3", - "blockNumber": "0x28", - "blockTimestamp": "0x66a2d05d", - "transactionHash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000010000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000001000", - "type": "0x2", - "transactionHash": "0x60e6ddeafc848bc5c1ea823344189a97bfcbee31f60d175ad65a564bdef56ae2", - "transactionIndex": "0x0", - "blockHash": "0x659f1d99b23bd21e83b5291d128d24edf07038e70f8b039addf4a3d6a33fdbd3", - "blockNumber": "0x28", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x6a95e3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "root": "0x6c889361c779f848039118bf3ab9877d66b3c91a67e39a6df18bb9e29082f01a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x851356ae760d987e095750cceb3bc6014560891c", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e8" - ], - "data": "0x", - "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", - "blockNumber": "0x29", - "blockTimestamp": "0x66a2d05e", - "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x851356ae760d987e095750cceb3bc6014560891c", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", - "blockNumber": "0x29", - "blockTimestamp": "0x66a2d05e", - "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x851356ae760d987e095750cceb3bc6014560891c", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", - "blockNumber": "0x29", - "blockTimestamp": "0x66a2d05e", - "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400400000000000000800000000000000000001000000000000400000000000000000000000000000000000000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100000820000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020020000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf82dcc3dc8cf129de6341c3bab82b0a0e25170ff654becc9844b2c8b1909f763", - "transactionIndex": "0x0", - "blockHash": "0xda4a3498cc9c674a8b790ab004e739eafc2f72d986a0d64899488692fd650787", - "blockNumber": "0x29", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x5f26cf", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "root": "0xcf530848c433b97491a6e65118ae710e25356a237d7773ccc9edfac6febfb620" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xec61994125075bd25585fcc889493d2d6aee9faf1886310558ebbdf70b2084be", - "transactionIndex": "0x0", - "blockHash": "0xe8a06e6d79a7c942ea2cd3254120c935c5c94b78a23c4ff0981c4de8394d7877", - "blockNumber": "0x2a", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x53703e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "root": "0x464486de625b2cef5906641683e3555d4b38f3169f691e1f5a5b40dfbfd7a033" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xc8118f6d8c3e7ff125c4d8a53b361db330b0843334d2c8bd4c28b40ba01c1a81", - "blockNumber": "0x2b", - "blockTimestamp": "0x66a2d060", - "transactionHash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000008010000000000000000000000000000000000000008000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0xfe56826ea30756482c090cb66347837653336141ed299d25e8bec5b8c8510886", - "transactionIndex": "0x0", - "blockHash": "0xc8118f6d8c3e7ff125c4d8a53b361db330b0843334d2c8bd4c28b40ba01c1a81", - "blockNumber": "0x2b", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x4957e8", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "root": "0x770a8aa96b7ba446d2e89cbd1d3710a79c145c7d73f0ff2a42569756b2ffde96" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x18bf98a677440f78c9d06b32297100334d1bfc4a348c735b5a2e9153879da49f", - "transactionIndex": "0x0", - "blockHash": "0xfb08d99fffa652882872826b3a36ecfa464692d0271f9beb997465859e7d74b5", - "blockNumber": "0x2c", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0x408f21", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "root": "0x54ce08323bbea43c81a18d22c6a8fb73ad220d0953a15fd9d855dbb583490d95" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000013a0c5930c028511dc02665e7285134b6d11a5f4", - "blockHash": "0x7bca2aca887be366f58b54f48a5a5e7e5576a9ec9c3e7d9aaa5760f36515f2cd", - "blockNumber": "0x2d", - "blockTimestamp": "0x66a2d062", - "transactionHash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000008000000000000000000000000000000000000000008000000000000000000000000000000400008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xcb754510cd038c7df00a01c73cd878ac260a2bd16b06bc56acad812e43df33e9", - "transactionIndex": "0x0", - "blockHash": "0x7bca2aca887be366f58b54f48a5a5e7e5576a9ec9c3e7d9aaa5760f36515f2cd", - "blockNumber": "0x2d", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x3939f8", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "contractAddress": null, - "root": "0x937891f148a3a4eb4dce496fa9b36c555cf797da4b7cd2e6ffe5f770f07a6b4d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xcc7e7c0df7ff56136e43c6e1f1d8de307ddb365c133cb9917ac5252581ee8c22", - "blockNumber": "0x2e", - "blockTimestamp": "0x66a2d063", - "transactionHash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000008000000000000000000000000000000000000000008000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd6fc688fe63f1e97b3cda3300d3afaf337c5db975c76fed53f697139ae1b1197", - "transactionIndex": "0x0", - "blockHash": "0xcc7e7c0df7ff56136e43c6e1f1d8de307ddb365c133cb9917ac5252581ee8c22", - "blockNumber": "0x2e", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x321848", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x91d18e54daf4f677cb28167158d6dd21f6ab3921", - "contractAddress": null, - "root": "0xf7b0fb92e142d713476dd83320a51ebcc41e797994278bcf774027f61d5b6c63" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", - "blockNumber": "0x2f", - "blockTimestamp": "0x66a2d064", - "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", - "blockNumber": "0x2f", - "blockTimestamp": "0x66a2d064", - "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000002000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000200000001000000000000", - "type": "0x2", - "transactionHash": "0x15ae781aeef95fdcb7190806cc7ff0b33f51128cac94b1bcc75a930607d36ca5", - "transactionIndex": "0x0", - "blockHash": "0x627551799aaee7b79e03889996f1c343234275594d6080c5eb84d6d0031f52b5", - "blockNumber": "0x2f", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x2bda13", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "contractAddress": null, - "root": "0x7031cb6bca0459d7f3541af8fa192bbcd23b121053e036f4054caf645745f92d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", - "blockNumber": "0x30", - "blockTimestamp": "0x66a2d065", - "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", - "blockNumber": "0x30", - "blockTimestamp": "0x66a2d065", - "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000200000000002000000000008000000000000000000000000000000000400000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000200000001000200000000", - "type": "0x2", - "transactionHash": "0xe00886d393f5526e0c1869396e1fd1d3408025666d2dce5d3a6dca5f7d3bf54c", - "transactionIndex": "0x0", - "blockHash": "0x84f90b2f0d3e9e946aadba537a9090d1c33d18c1817c837974aa7f57ae3829c0", - "blockNumber": "0x30", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x266576", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "contractAddress": null, - "root": "0xff60935d6caed499f81f795596c60590eabb8c77283d90e54b21f20dab361c9c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x54e7036acd43b3068c587f843ba1f600642ac7c46a0c535097280faf6182de2b", - "blockNumber": "0x31", - "blockTimestamp": "0x66a2d066", - "transactionHash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000200000200000000002000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000004002000001000000000000000000010000000000000000000000000000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x5407e231a1b3a12a83a0f24e1d5a7c4bb81e3b0daf44685f5d8f9fd3ae3a1bae", - "transactionIndex": "0x0", - "blockHash": "0x54e7036acd43b3068c587f843ba1f600642ac7c46a0c535097280faf6182de2b", - "blockNumber": "0x31", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x219d33", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x13a0c5930c028511dc02665e7285134b6d11a5f4", - "contractAddress": null, - "root": "0xb9f6b08c52c9f44954222cc2f2d700b159052a38d039dc8bb02cba1fa61dd738" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946198, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json deleted file mode 100644 index 948d1629..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946304.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "transfer(address,uint256)", - "arguments": [ - "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": [ - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef240000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", - "transactionIndex": "0x0", - "blockHash": "0xac8e108a16d14e05f6db81cb1dbbd15a0ab5f4236fd72cc012b4bbfcd2251e66", - "blockNumber": "0x1", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x5efbab106cea95288662cd38f2efe9a22608078752216cb6f4dcb65c57f52258" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xb8c879cb5e1930f9dbb6ac662069e0cfd6f68c478a2674c3c27f7ec497f2783c", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2d0c1", - "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000004000000000000000000000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionIndex": "0x0", - "blockHash": "0xb8c879cb5e1930f9dbb6ac662069e0cfd6f68c478a2674c3c27f7ec497f2783c", - "blockNumber": "0x2", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x342a1c59", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x7a3af91a83f06ee97689fdaace3087fa21cad1c0cbd3fa2e94beebeaf704093d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - ], - "data": "0x", - "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d0c2", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d0c2", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d0c2", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000400000000000000400000000000000000800000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000004000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "blockHash": "0x2b43eaded86a439f1663823aeb3dae6196346f01e84a929cc3186029e9b708b7", - "blockNumber": "0x3", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x2e93516b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0x11ba771a4e13324daee8f9edee84ddbe101a95d0b15b262fedee816acf1b50c0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", - "transactionIndex": "0x0", - "blockHash": "0xa446b7613e90ec0951926398e266b95b8d56b570b67efe73fffdf641c1191fd1", - "blockNumber": "0x4", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x28d9d418", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "root": "0xe979fafa179a267111c76218bd2ae26b7e67dcaaa22d06e9c8b24c39d421c2f4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", - "transactionIndex": "0x0", - "blockHash": "0x7b2562f762d0277fe9a640fb710e8d78df6cd9b898e696a3ca855847b75a73a1", - "blockNumber": "0x5", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x23fa562d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0xa4778652fefacbb49fcb28db70c1eb99fbf7aac1273620daf8cdcd7fda794a69" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", - "transactionIndex": "0x0", - "blockHash": "0x480e3e246ffe2146c92f77740dc4c45007ba5917fa03c2a77bece38d59f4e4da", - "blockNumber": "0x6", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1faddd23", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x4428bf85c507dcefe7bec332bb83befa42dd993538b3eebbd1a8dff1f493b066" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", - "transactionIndex": "0x0", - "blockHash": "0x459ad2f41e07f276a610ee4034bf8e881acbcf700efac36af22052f48167f39b", - "blockNumber": "0x7", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1bb99721", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x0795e76c053fb1affb5a795544fb08e956d312975920044da2fd07e2b65c2750" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xc136ba0cd0e6f5e1e9b3e7ecd0aae33d5f38422ad1845ba571a53ab8948eba7f", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2d0c7", - "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionIndex": "0x0", - "blockHash": "0xc136ba0cd0e6f5e1e9b3e7ecd0aae33d5f38422ad1845ba571a53ab8948eba7f", - "blockNumber": "0x8", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x1843ab3d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x346a9c5261689c12c9552c51ddaa747a85fdeabf5a0d27652a6a5e9d3dabcb18" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853" - ], - "data": "0x", - "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d0c8", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d0c8", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d0c8", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x000000000000000000000000004000004000000000000000008000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000000000001000008000000000000000000000000000000004000000000000000000008000000000000000000000000c0000000000000000000000000000000000000000000000040000000000000000000000000000000008000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000800000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "blockHash": "0x2ccb400b4737be62250e47588cfa47e8f559b821936563b9c0e5aa98fa196bce", - "blockNumber": "0x9", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x15a950a9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "root": "0x6a7a46b961a0b7c24296c6111e8f6b456537c8f7c011732fa09b727477a6f804" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", - "transactionIndex": "0x0", - "blockHash": "0x8dd050695d82156b376e9cacbd683db229e701dfbbe9f13002f21d12bac07825", - "blockNumber": "0xa", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x12feafd8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "root": "0x2af22cfa604b30de4b230408ff3bb628d2fd0b401f281c0febc5470efe79d73a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xc80559d771e64a5698430e9f5bd178f331179948bbe2dab6a29e55ec46839e1d", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d0ca", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0xc80559d771e64a5698430e9f5bd178f331179948bbe2dab6a29e55ec46839e1d", - "blockNumber": "0xb", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x10b25bcd", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0xe6f42239a619b96437911e44c6f9c74ab2ce5b5fab2bd9b004eb94726f106221" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", - "transactionIndex": "0x0", - "blockHash": "0xe12541b2c6768edf4580dbcde1dd777669d133fc190aee7462bc5be159512349", - "blockNumber": "0xc", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xeb26bcb", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0x75a8ace8ae6ed9c67f0093e8a431bca4e4d5b5c324eaf925454151f1d749f12a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0x982b612d51316cf753f059560110a02a998a5f408db269b3287ae7dd6f36ec59", - "blockNumber": "0xd", - "blockTimestamp": "0x66a2d0cc", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0x982b612d51316cf753f059560110a02a998a5f408db269b3287ae7dd6f36ec59", - "blockNumber": "0xd", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0xd07152f", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0xb552499dec4a4b3b1d7f9772f5036d9595129f56eefc4f61b47e232159cffb0d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x4f8f2155b54f19f6b76053ccb849d76d03557e2674fabd960bd95879e4f43f76", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d0cd", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0x4f8f2155b54f19f6b76053ccb849d76d03557e2674fabd960bd95879e4f43f76", - "blockNumber": "0xe", - "gasUsed": "0xb061", - "effectiveGasPrice": "0xb677654", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x30bcc094da06d3b658e06ead2cfdc131d9470eedffc6f05f76440f591af95e15" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", - "blockNumber": "0xf", - "blockTimestamp": "0x66a2d0ce", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", - "blockNumber": "0xf", - "blockTimestamp": "0x66a2d0ce", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0xe4e898c9110f05bd4fff15730d2d6d4d3559f606ce242be0c6718f319a151b45", - "blockNumber": "0xf", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x9fba0c3", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x2ada78f0437474e259b54e9796ec054023da068a206e1bea4cc91d5eca108f89" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d0cf", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d0cf", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000008000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000400000000000000001000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "blockHash": "0x4eef5a7a5990a9cfb83f87d90d1f3c792bae8aa312ea3fe9bff3e00a561707d2", - "blockNumber": "0x10", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x8bdafea", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0xd8a22da18127fd113548eae3fc48d55584fa0936a8061c452ca7d51dafa1e03a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x1eda0969aa96d1eb7ba0b966a69f8e36986fe76cd4dd35bd6e5822ba5571bd51", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d0d0", - "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000020000000000000000100000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionIndex": "0x0", - "blockHash": "0x1eda0969aa96d1eb7ba0b966a69f8e36986fe76cd4dd35bd6e5822ba5571bd51", - "blockNumber": "0x11", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x7a6fb5d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x59c699722e791904155dc2e15877391184909ce62bb4f158d564e9c14b3789ed" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946304, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json deleted file mode 100644 index 2f6b786c..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946326.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x30cba3426c3b24c4f0e613d490bec14bea8aea75408500e00783d950c3f64b5e", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "function": null, - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb6cd43d6a81dec427e461850f7ece00763987530551b2fd234ba8e9727849848", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "function": null, - "arguments": [ - "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa20fb6b4f0c511804431c8e386c4b3a2187275875b1d5870a11eba2b00aa1d39", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "function": null, - "arguments": [ - "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb66f336895630a60eda438379fa54751ee92d5cd8a2dcbff0c7de16d9bc41fb6", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb2176abfa086a67bcee158d196cc5def2528c2e04d90b871bf8a0f81d35605e6", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "transfer(address,uint256)", - "arguments": [ - "0x9A676e781A523b5d0C0e43731313A708CB607508", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x12", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "function": null, - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x13", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xafd3a43663070ecae6305142683763956f54d509aabdfd4d0bb3db7acbe43f4a", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "function": null, - "arguments": [ - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c", - "nonce": "0x14", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xec3be37d65c608ba5358b53b705bc5c8eea98a7e6cc7b9dfe83dc68ca040259b", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891", - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c63430008150033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d97b1de3619ed2c6beb3860147e30ca8a7dc98910000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba000000000000000000000000000000000000000000000000000000000000000100000000000000000000000048f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "function": "deposit(address,uint256)", - "arguments": [ - "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "function": "approve(address,uint256)", - "arguments": [ - "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x15", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x30cba3426c3b24c4f0e613d490bec14bea8aea75408500e00783d950c3f64b5e", - "transactionIndex": "0x0", - "blockHash": "0xf9f4d3773f4c1ec99645b14a14548533aaefbf209e2ba57cbb8630523b5ccfbf", - "blockNumber": "0x12", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x6b2dcf7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0xa28c92b393c1429d6ba4fbbdbab8c36990908b451b27f850f5a380935bbc6337" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x70f6b85d792115998ad3eede7cebd0a0efce39432790271f9b1b6a6cb8d8a90c", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d0d7", - "transactionHash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000002000000000000000000000000400000000000", - "type": "0x2", - "transactionHash": "0xe35ea01a13a98565836d83b66679c9b92216e1565e343bacf412d78cdb4387e0", - "transactionIndex": "0x0", - "blockHash": "0x70f6b85d792115998ad3eede7cebd0a0efce39432790271f9b1b6a6cb8d8a90c", - "blockNumber": "0x13", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x5dcce2c", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0x2f9532c0dd02d5016ebac09b980b143f0853fded7dabcec916a56a2b197474c8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x", - "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d0d8", - "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d0d8", - "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d0d8", - "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000400000000000020000000000000100000800000000000000000000040000000000400000000000000000000800000000000000000200000080000000000000000000000000000000040000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000020000000000000000000000", - "type": "0x2", - "transactionHash": "0x6d1e336a611d70fecaab38d699705fc5633dccf3751e89fdcfcc9a402f624b70", - "transactionIndex": "0x0", - "blockHash": "0x6e2c637831195a7afbf8d06b0183b3f50e42d6e8051af0317e32b53303930438", - "blockNumber": "0x14", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x53c015e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "root": "0xeef93b09d53e64f3cb15542066446ee79f1cd18fe9c000ced1e8013c2982aaa9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xb6cd43d6a81dec427e461850f7ece00763987530551b2fd234ba8e9727849848", - "transactionIndex": "0x0", - "blockHash": "0xb440107f762bd6b285320dd8eaa585d7fd35dfa20b9f5c55b7d19c1faf263286", - "blockNumber": "0x15", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x4974e50", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "root": "0x1552d8c9a30bcfc17cc51ce6b408204f85f6ecb11779e0b024be20f2f138ed4f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa20fb6b4f0c511804431c8e386c4b3a2187275875b1d5870a11eba2b00aa1d39", - "transactionIndex": "0x0", - "blockHash": "0x3cdac221c5a2a5744074140abe97aabc7a39705471049c15037146ba16aa098d", - "blockNumber": "0x16", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x40b1b30", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "root": "0x835ea54a6ccbfae9ddcc77ee1175e520334663663f0325adf11f22dd2b06d03a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xb66f336895630a60eda438379fa54751ee92d5cd8a2dcbff0c7de16d9bc41fb6", - "transactionIndex": "0x0", - "blockHash": "0xb55e6c6cd29bd87e867557456fe9821e634700d6c364e35ac1bdb34a28b8ded4", - "blockNumber": "0x17", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x38f6de5", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0xbbcfb7c5536abae74118968502525f08f5d0f7fa6fb254d837ecb2ea77f5f261" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xb2176abfa086a67bcee158d196cc5def2528c2e04d90b871bf8a0f81d35605e6", - "transactionIndex": "0x0", - "blockHash": "0x141914fad0786da1e937d6d51d51a6f3fcd3f2a9c0fa9216c88d9b59c681dd00", - "blockNumber": "0x18", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x31daa27", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0xbdcd3f76594ba0519661563285fba87378624825e5707aef514a5ccce75a32f4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xe8065f7b647c5929b4cbf68831af740fe0d491bbbd1246fb4bd03e14e74be73f", - "blockNumber": "0x19", - "blockTimestamp": "0x66a2d0dd", - "transactionHash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000", - "type": "0x2", - "transactionHash": "0xd2c418cff8c6959180126a86636f57a9de38a978816c563ac58adad59cc47ca0", - "transactionIndex": "0x0", - "blockHash": "0xe8065f7b647c5929b4cbf68831af740fe0d491bbbd1246fb4bd03e14e74be73f", - "blockNumber": "0x19", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x2ba19a3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "root": "0xbf0cbf2f857c824e75b0e43b8855f9eec3ea0524bb2b27728026e898820a3335" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x", - "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2d0de", - "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2d0de", - "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", - "blockNumber": "0x1a", - "blockTimestamp": "0x66a2d0de", - "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000800000010000000000010000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000001000000004000000000000000000000020000000000000000", - "type": "0x2", - "transactionHash": "0x1999c4a25168d6de6ca6f8447a239aa17346f03b57673f76521818bafa280e9d", - "transactionIndex": "0x0", - "blockHash": "0xe3f0a05a4b194ad9551c6017a22c0f54756c0ab948584c526873c52babac20ef", - "blockNumber": "0x1a", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x26f3638", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x3aa5ebb10dc797cac828524e59a333d0a371443c", - "root": "0x0d4b7fadbf8fbc819ffe3c7cd6e56ce77738b3def6890aacc0d7cca204ded3e8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xafd3a43663070ecae6305142683763956f54d509aabdfd4d0bb3db7acbe43f4a", - "transactionIndex": "0x0", - "blockHash": "0xab215ecb60f50bbb4aa9f3f77f633a0f39656122da91f6700c20a97917edac6c", - "blockNumber": "0x1b", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x2227e94", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc6e7df5e7b4f2a278906862b61205850344d4e7d", - "root": "0xad108af4b45e5185dde7a98a6f557a70b7faad66f2b84795ff12d64a40dac01b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xd4905b22e3d98c8621d5f7974811d35a838b29ddb49dcc54f3bc72b42ba0f414", - "blockNumber": "0x1c", - "blockTimestamp": "0x66a2d0e0", - "transactionHash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x62f32077a6ac1b2d3e18dcadbf65b9c9c63d46dbafd839cd0022854e7b3475f8", - "transactionIndex": "0x0", - "blockHash": "0xd4905b22e3d98c8621d5f7974811d35a838b29ddb49dcc54f3bc72b42ba0f414", - "blockNumber": "0x1c", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x1e06001", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "root": "0xf65ce052ab08841883446a16cc328524b0ae1ffeee2d89c82d8be3c321bdb696" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xec3be37d65c608ba5358b53b705bc5c8eea98a7e6cc7b9dfe83dc68ca040259b", - "transactionIndex": "0x0", - "blockHash": "0x8afde92bde6c0a0d6f8b6891858d6bf8dd8a9411af1932cc6230499e2e179b53", - "blockNumber": "0x1d", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0x1a6d73d", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "root": "0x4c1d0081f0c3c4e52e6cb77ef54b86dd7e98af977cdb4db5f65014357d0cfa44" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000048f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "blockHash": "0xef586ef979e9ea69f4a63bbd2246be646ac74232cd4ff147aee7db3decc9aaf1", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a2d0e2", - "transactionHash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6cf375e32ac7ff2a16ccd6bfccfa43733c98448ae266f4df27dcc2eb3e70d380", - "transactionIndex": "0x0", - "blockHash": "0xef586ef979e9ea69f4a63bbd2246be646ac74232cd4ff147aee7db3decc9aaf1", - "blockNumber": "0x1e", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x176d072", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "contractAddress": null, - "root": "0x337c14eda9d3ebfd6e8628c6e0ed25c9ab721f91bd1875a4cd08714132d60cc9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x8a9c6212f4889002dc53114793236d89623fef1d71b730d3a68962031fffeb4a", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a2d0e3", - "transactionHash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x71735662324771d3a89e1048101847be9fc01e6ff6fe424df870fb5ba97f6959", - "transactionIndex": "0x0", - "blockHash": "0x8a9c6212f4889002dc53114793236d89623fef1d71b730d3a68962031fffeb4a", - "blockNumber": "0x1f", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x1481ac8", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", - "contractAddress": null, - "root": "0xd1c9552d9e0507a5ed34ab5a98e76f7b1fb270258d20f57e066c8c0681e490a1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", - "blockNumber": "0x20", - "blockTimestamp": "0x66a2d0e4", - "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", - "blockNumber": "0x20", - "blockTimestamp": "0x66a2d0e4", - "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000002000000000000000000000000000000020000000002000000200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x2632f2b67e067ad5791cf032a80d3d6510a5121862742bce978b66da05b24dae", - "transactionIndex": "0x0", - "blockHash": "0xc5aa1a46515fb33f807ed32aaef584fa7e56e555c2ac32c7b79c4514d2c23194", - "blockNumber": "0x20", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x11f370b", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "contractAddress": null, - "root": "0xab547e4ef30f7f9427ac7b8e3b2a0fbc3a9adde0cec2ae45776e71da9ee16d7b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", - "blockNumber": "0x21", - "blockTimestamp": "0x66a2d0e5", - "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000c6e7df5e7b4f2a278906862b61205850344d4e7d" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", - "blockNumber": "0x21", - "blockTimestamp": "0x66a2d0e5", - "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000008000000000000000000000000000000000010000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000002000000000000000000000000000000020000000002000000000000000000000040000000000000400000000000000020000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0xcbeecf84f9e724a4f9040bfbf93928be90a778c6e2d2d781d3afec6d8f5ba7c7", - "transactionIndex": "0x0", - "blockHash": "0x1a566407287adb47b6def3125cff1fba1b3e7b9bc2de870e2ac4a58ac5171cf7", - "blockNumber": "0x21", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0xfb7bb0", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "contractAddress": null, - "root": "0x0273f139b5e0542bfef98639296833c87b0cbd22b449223a6a111ca6eab7b828" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000003aa5ebb10dc797cac828524e59a333d0a371443c" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x4ef94befd259891ed366aa45e854194bac22963ab37b0e29c77768e7ed719ea0", - "blockNumber": "0x22", - "blockTimestamp": "0x66a2d0e6", - "transactionHash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000002000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000000020000000000000000000000000002000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5f730254a8eb73ae024a3fb0e765433ebea956220396dfe282e529333c368534", - "transactionIndex": "0x0", - "blockHash": "0x4ef94befd259891ed366aa45e854194bac22963ab37b0e29c77768e7ed719ea0", - "blockNumber": "0x22", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0xdc2929", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", - "contractAddress": null, - "root": "0xd88947dad986951a8fc2df5e529a434051a35bce89f5fc972181341ec360eb0d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946326, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json deleted file mode 100644 index 5c5dd938..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946347.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x7705e139e50f4c1c253a6b47a7a4a1d2623c40af537fe5d9cad41dcf0e9b7122", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x16", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "function": null, - "arguments": [ - "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000322813fd9a801c5507c9de605d63cea4f2ce6c4400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdfbd9e5d5b6865566602bbabe14866f5fcc3d6b6c66015b284dbf830b08137a1", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "function": null, - "arguments": [ - "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97d8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe60a0688a0f0b612e1106ee0296201d4a7c42be05fb981ec32dc2a3003066096", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "function": null, - "arguments": [ - "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2143", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c63430008150033000000000000000000000000a85233c63b9ee964add6f2cffe00fd84eb32338f000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x1a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa8a80f93783ac66df7cfe20eceab2bba12c171b4bd0f2035d4b78c6cebf7fe6d", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x1b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xff0950bf4987de6a1e2118fbde3878247344c404d43d667cf049b7a29937c7c0", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "transfer(address,uint256)", - "arguments": [ - "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000004a679253410272dd5232b3ff7cf5dbb88f295319000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x1c", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x1d", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "function": null, - "arguments": [ - "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf5593300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x1e", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7a8b7b866f21b1783878af8d51fa18c07a28dd2baa37ebdbb65da69d6aba8330", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", - "function": null, - "arguments": [ - "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e", - "nonce": "0x1f", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0fb6765ead22ae63dc973f6966f16e388efb877c4c8b097df3bdf9f0bc2d9061", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0", - "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c6343000815003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005ba149a7bd6dc1f937fa9046a9e05c05f3b18b0000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0xcC683A782f4B30c138787CB5576a86AF66fdc31d" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000cc683a782f4b30c138787cb5576a86af66fdc31d", - "nonce": "0xe", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0xf", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x10", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "function": "deposit(address,uint256)", - "arguments": [ - "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe6369000000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x11", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "function": "approve(address,uint256)", - "arguments": [ - "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x20", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7705e139e50f4c1c253a6b47a7a4a1d2623c40af537fe5d9cad41dcf0e9b7122", - "transactionIndex": "0x0", - "blockHash": "0x20e51be4a4bda65a653c13de4289cdc32e798cc6a454e39e5a4030c1e1cf7efb", - "blockNumber": "0x23", - "gasUsed": "0x5208", - "effectiveGasPrice": "0xc0b9b6", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x22a390f0f3c5fc718f2f728b01e1805d61247f6a7e41f3505e0bda5d548ccf71" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x615204426e5536430527d7356d210c08f35f1a834e3f34b967c1ce194e322dd6", - "blockNumber": "0x24", - "blockTimestamp": "0x66a2d0ec", - "transactionHash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000010000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2273ff6dad8a93875857f1b2511304bcc1da01693144d86c7c92d49c7a214bc5", - "transactionIndex": "0x0", - "blockHash": "0x615204426e5536430527d7356d210c08f35f1a834e3f34b967c1ce194e322dd6", - "blockNumber": "0x24", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0xa8ab22", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x322813fd9a801c5507c9de605d63cea4f2ce6c44", - "root": "0x7c4cf060980f8b28789f780bd5770bff81e6fc9c7935c54f3c72cb553bebb3f4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000322813fd9a801c5507c9de605d63cea4f2ce6c44" - ], - "data": "0x", - "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", - "blockNumber": "0x25", - "blockTimestamp": "0x66a2d0ed", - "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", - "blockNumber": "0x25", - "blockTimestamp": "0x66a2d0ed", - "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", - "blockNumber": "0x25", - "blockTimestamp": "0x66a2d0ed", - "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000040000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000800000000000000000008000008000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000001000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4a0e8961be67f6c2127e7adde66d6d6f82f9fbdc4967c71b924b88624c1e00c4", - "transactionIndex": "0x0", - "blockHash": "0xd17fd43c7de773f4cfbc3a4cba7b7672dcbd1477f2955713f48df94faaa9dea2", - "blockNumber": "0x25", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x9698d1", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa85233c63b9ee964add6f2cffe00fd84eb32338f", - "root": "0x50feca275e29538c6c1eec4c0b4758e9e282d82523482d70a2b02bbe7cbfa03d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7586", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdfbd9e5d5b6865566602bbabe14866f5fcc3d6b6c66015b284dbf830b08137a1", - "transactionIndex": "0x0", - "blockHash": "0x972e5eb3aa41c70eba21b1dee32c269b29c37bc3d5437c9e30950b37615adb3a", - "blockNumber": "0x26", - "gasUsed": "0xa7586", - "effectiveGasPrice": "0x84164f", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x4a679253410272dd5232b3ff7cf5dbb88f295319", - "root": "0xfc2eed5aca3ed439c7261f440aadec81210a59c1ec1813382de8964708e83085" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a58", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe60a0688a0f0b612e1106ee0296201d4a7c42be05fb981ec32dc2a3003066096", - "transactionIndex": "0x0", - "blockHash": "0x4ab296d8c9d587482d3f9ebc06057d6c306fdbecd744a94d25f5015ad10480d1", - "blockNumber": "0x27", - "gasUsed": "0xa1a58", - "effectiveGasPrice": "0x7454ac", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", - "root": "0x20b5609cddb74629bc40adea1af6d43130726a078187ed5450939666df1aa723" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa8a80f93783ac66df7cfe20eceab2bba12c171b4bd0f2035d4b78c6cebf7fe6d", - "transactionIndex": "0x0", - "blockHash": "0x2434f4622453e848056a84074de805487276dd40ca43ea88006aed683b7c608d", - "blockNumber": "0x28", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x666e68", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0xb04995fedfcd81d0ef7dc393664be2a60caac6ed2c95725ef3848bf5d0544d5a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xff0950bf4987de6a1e2118fbde3878247344c404d43d667cf049b7a29937c7c0", - "transactionIndex": "0x0", - "blockHash": "0xdad02fc0518629b6bb8848dcb8a9ab3d80c427f823fa41547fe8681fcfdda8d7", - "blockNumber": "0x29", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x59a554", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x9b3a8d10e13fc0d30bd878362c44c212931496095eb97c652df903ce94a800ee" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x993ca239cfe4bcf6d0db123126ff97f81c5ef772465946b05fdaf8f28d31ba42", - "blockNumber": "0x2a", - "blockTimestamp": "0x66a2d0f2", - "transactionHash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000", - "type": "0x2", - "transactionHash": "0x89668ccb37be06dc4d5194e9c9d849a603c4d7fa8600bcc855025ad5df482444", - "transactionIndex": "0x0", - "blockHash": "0x993ca239cfe4bcf6d0db123126ff97f81c5ef772465946b05fdaf8f28d31ba42", - "blockNumber": "0x2a", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x4e74cb", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x67d269191c92caf3cd7723f116c85e6e9bf55933", - "root": "0xf2ef3ede74a61e5dbaafbe9e46352d5b012c095d44f5dc0b47037bb5fc6302cb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000067d269191c92caf3cd7723f116c85e6e9bf55933" - ], - "data": "0x", - "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", - "blockNumber": "0x2b", - "blockTimestamp": "0x66a2d0f3", - "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", - "blockNumber": "0x2b", - "blockTimestamp": "0x66a2d0f3", - "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", - "blockNumber": "0x2b", - "blockTimestamp": "0x66a2d0f3", - "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000002001001000000000000000000000000000000000002020000000000000100000800000000000000000000000000080000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000010000000000000020000000200000000000000000000000002004000000000200000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa2b7b22ee502b2c372bb323ac6156988212fad6c8efabee3aba57057bf1eb7da", - "transactionIndex": "0x0", - "blockHash": "0x288545ec6d936bed9dd7b76e240b9bb6ce35e09cf615715d02da8c5a14f765fd", - "blockNumber": "0x2b", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x460a35", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe6e340d132b5f46d1e472debcd681b2abc16e57e", - "root": "0x6043c8983494659490e731ccd34649593b7305647715a5b83d6ba978bd4669da" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7a8b7b866f21b1783878af8d51fa18c07a28dd2baa37ebdbb65da69d6aba8330", - "transactionIndex": "0x0", - "blockHash": "0x6d73eb8b04e00bc2731edcae22ced3d34e000974feab87cfdce709f3f2dcbef8", - "blockNumber": "0x2c", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x3d6b00", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690", - "root": "0x125a461b42208e5dfdb257cf048a0ebc98c81347dd50b01c667e8e5431169e7c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xe8b106644691f2682683fa6e59099a4e6ecda24bd9d3ccd8e5e6d39e2df7e15f", - "blockNumber": "0x2d", - "blockTimestamp": "0x66a2d0f5", - "transactionHash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000040000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x0c1ea711bd336314b48eb0a655e1cc8979e23dae139d406ff8ce7493862c39ce", - "transactionIndex": "0x0", - "blockHash": "0xe8b106644691f2682683fa6e59099a4e6ecda24bd9d3ccd8e5e6d39e2df7e15f", - "blockNumber": "0x2d", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x35fcb4", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "root": "0x9b83024af4d63ec64086bf9c8bbfc4105f37b0ce561833b207835e3bf0208513" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0fb6765ead22ae63dc973f6966f16e388efb877c4c8b097df3bdf9f0bc2d9061", - "transactionIndex": "0x0", - "blockHash": "0x02374539ef9a8a5a83349fa4cd9ca2475b35ce5766b871d7e9509ef6d19c7f34", - "blockNumber": "0x2e", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0x2f8568", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "root": "0xd8d4e3a70ddb327437aac32816d8679af4f089d282e4c7b54a992dbd266b7843" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000cc683a782f4b30c138787cb5576a86af66fdc31d", - "blockHash": "0x512f2da0e75e3008d04fe4bcde75c3b96875092dd4b1942d295da19248ed60b1", - "blockNumber": "0x2f", - "blockTimestamp": "0x66a2d0f7", - "transactionHash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000040000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000002000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2c7f945f216c2284efd73f37a21e15f1067368d2d6edb6901a6c2f131076bb19", - "transactionIndex": "0x0", - "blockHash": "0x512f2da0e75e3008d04fe4bcde75c3b96875092dd4b1942d295da19248ed60b1", - "blockNumber": "0x2f", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x2a1fa7", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "contractAddress": null, - "root": "0x1ad251d738e7e2cfe8a6924fff033cef7fcb892785a6f8ec05de760d5853de80" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x9c4e3c8dcfc9a40a7ecaa5d2c16f591f1aeafb6a0af3a4970c98ff86151692b6", - "blockNumber": "0x30", - "blockTimestamp": "0x66a2d0f8", - "transactionHash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000100000000000002000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc69d5e15d9413c868dd62a482695e6c3cc4ad0e136aed94bf07f9ae7744b59f5", - "transactionIndex": "0x0", - "blockHash": "0x9c4e3c8dcfc9a40a7ecaa5d2c16f591f1aeafb6a0af3a4970c98ff86151692b6", - "blockNumber": "0x30", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x24dfca", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x05ba149a7bd6dc1f937fa9046a9e05c05f3b18b0", - "contractAddress": null, - "root": "0xab9126a500a978594ad863d08b4bb9533d4a2c8ac46bf31ac35bc3428cafcd1c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", - "blockNumber": "0x31", - "blockTimestamp": "0x66a2d0f9", - "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", - "blockNumber": "0x31", - "blockTimestamp": "0x66a2d0f9", - "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000800200000000000000040000000002000000000000000000020000000000000000000000000000000000000000000000000040001000000000000", - "type": "0x2", - "transactionHash": "0xc9e9221e7cfed33261f7d33c112dfa6a76e9b892abfe433655c7bd26cc2acb7a", - "transactionIndex": "0x0", - "blockHash": "0xd5a32f730178e89d6683000afa9a756197fd8c945af238ae721fea0afc98ab0a", - "blockNumber": "0x31", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x20475f", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "contractAddress": null, - "root": "0x3359517c444e13928c0c147412c7006f138d605e2600ceb8f3859921369975cb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", - "blockNumber": "0x32", - "blockTimestamp": "0x66a2d0fa", - "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000c3e53f4d16ae77db1c982e75a937b9f60fe63690" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", - "blockNumber": "0x32", - "blockTimestamp": "0x66a2d0fa", - "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000002000000020000000002000800000000000000000040000000000000000000000000000020000000000000000000000000000000000000000000000000040001000000000000", - "type": "0x2", - "transactionHash": "0xb15c4fca2398fdaca7b0b4271a889ad4c531fd0f6ce467b5ba473cd82f5f510a", - "transactionIndex": "0x0", - "blockHash": "0xfa893603ca0317708315760a53514358cc8014a0f60b60d0a01598147bb9d360", - "blockNumber": "0x32", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x1c4358", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "contractAddress": null, - "root": "0xd38c8707da0124b742cb72e511735ec96fd340c68848c8d3562a0bc60d82f4f8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xe30d55f1c97af146d32dde1e55701c8c3827f03bbeac58b78019c3d3df0bface", - "blockNumber": "0x33", - "blockTimestamp": "0x66a2d0fb", - "transactionHash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000100000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000020000000000000000000000000000000000000000800200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000040000000000000000", - "type": "0x2", - "transactionHash": "0xb1fed0baaed9820f5cffd919f43e4489c295de37e30c88dc28323a7000ebcb70", - "transactionIndex": "0x0", - "blockHash": "0xe30d55f1c97af146d32dde1e55701c8c3827f03bbeac58b78019c3d3df0bface", - "blockNumber": "0x33", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x18be2e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xcc683a782f4b30c138787cb5576a86af66fdc31d", - "contractAddress": null, - "root": "0x5e410eef027a26b863c1e74ff74720881549dc424dc885337574ba38cbf5b864" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946347, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json deleted file mode 100644 index d50cb2e1..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946364.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xce821002416ff8f50e7371ba0d5a88c15567e790b21a780212ab572ddb7f3ec6", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x21", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x22", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "function": null, - "arguments": [ - "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x23", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1f92594b5098c859d409a925648dc95b5f04f72c530bc2cfba82844c53b9da9e", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "function": null, - "arguments": [ - "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e800000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x24", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6420cb20ddecced6e1493b8e9280b82688cdf426e2231f5689be6ff2123b8909", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "function": null, - "arguments": [ - "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x25", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xefa44ba337ad29302c5aa1891c4ee1b83f5e3a28a54fc6b544c3f0d9f388d1c9", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x26", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x83dab857bff5bac386d125f4d67f1a04b4fc963ed14bd78a45e82019dba20efe", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "transfer(address,uint256)", - "arguments": [ - "0x851356ae760d987E095750cCeb3bC6014560891C", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x27", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x28", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", - "function": null, - "arguments": [ - "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c6343000815003300000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x29", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe8425ea3d0e5f973000216c22886bc3876622713e3d71ed29bbae0d9dde4fb57", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", - "function": null, - "arguments": [ - "0x4826533B4897376654Bb4d4AD88B7faFD0C98528" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528", - "nonce": "0x2a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x12", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2c855a5b0c3261efb7b550f953ae82bd73849775052f9ce325b4444aa75cab00", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0xfC9201f4116aE6b054722E10b98D904829b469c3", - "0x4826533B4897376654Bb4d4AD88B7faFD0C98528" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c63430008150033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc9201f4116ae6b054722e10b98d904829b469c30000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c985280000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x13", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0xD10932EB3616a937bd4a2652c87E9FeBbAce53e5" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d10932eb3616a937bd4a2652c87e9febbace53e5", - "nonce": "0x14", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x15", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x16", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "function": "deposit(address,uint256)", - "arguments": [ - "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef2400000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "function": "approve(address,uint256)", - "arguments": [ - "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c9852800000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x2b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xce821002416ff8f50e7371ba0d5a88c15567e790b21a780212ab572ddb7f3ec6", - "transactionIndex": "0x0", - "blockHash": "0x077c3da9cb50cf46a8440e7ef3c76de072e233f09832ab9abbed55e6a64f2d7a", - "blockNumber": "0x34", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x15a8d9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x19bbcee40cb7396166cebf461c2c9dd31beecd39d5a26167bbaf8a1fd9c7edc6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xbe4af2dc73ad82c1eb673235b410a4a3c45c123046c817cb5ff2a99a4ad43718", - "blockNumber": "0x35", - "blockTimestamp": "0x66a2d0fd", - "transactionHash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x152b6ecb836762e927250ac45343b9ce7df13d43ccda71bda6768d78dfc70e9b", - "transactionIndex": "0x0", - "blockHash": "0xbe4af2dc73ad82c1eb673235b410a4a3c45c123046c817cb5ff2a99a4ad43718", - "blockNumber": "0x35", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x12f4b7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "root": "0xa7eaa835f8ff6e78006fb0c31deb64653e9f03c25f4a01646829adbca27b3ff1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9" - ], - "data": "0x", - "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", - "blockNumber": "0x36", - "blockTimestamp": "0x66a2d0fe", - "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", - "blockNumber": "0x36", - "blockTimestamp": "0x66a2d0fe", - "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", - "blockNumber": "0x36", - "blockTimestamp": "0x66a2d0fe", - "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000008000000020000000000010100000800000000000000000000000000000000400000000000000000000800000000000000000000000090000000000400000000000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000004000000020000000000000000000000000000000000000000000000000000000000000001000", - "type": "0x2", - "transactionHash": "0x00e22b4c493daff7b7ec9f0facdbeebe243a41de21d3efcc6c85265131bb5022", - "transactionIndex": "0x0", - "blockHash": "0xa09df4d0b1df98b9366fa872702174bf2f1fd09944aeabd1a5eee08045a76744", - "blockNumber": "0x36", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x10ecc9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", - "root": "0xac0abce4eb1d5d3196dd8be38cec65d071c28181548af6a2f508f55fa22275c2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1f92594b5098c859d409a925648dc95b5f04f72c530bc2cfba82844c53b9da9e", - "transactionIndex": "0x0", - "blockHash": "0x9920288990324513b05da2505d879a04384353830e5b31dbf5af083e36156bf2", - "blockNumber": "0x37", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0xed83f", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x851356ae760d987e095750cceb3bc6014560891c", - "root": "0x24e6c696166aac46fe6bb99663175f598fc99af2416d50142f5b24b036a60912" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6420cb20ddecced6e1493b8e9280b82688cdf426e2231f5689be6ff2123b8909", - "transactionIndex": "0x0", - "blockHash": "0xce7acb12bf1202e065e576a30cdab55f8474093f90ae83fd5f35359bd7492ddf", - "blockNumber": "0x38", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0xd12ed", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xf5059a5d33d5853360d16c683c16e67980206f36", - "root": "0xb231c4d9dd167df04e02361cef1dd6e724fc491ed13b27dc03961f5d6e8ee35f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xefa44ba337ad29302c5aa1891c4ee1b83f5e3a28a54fc6b544c3f0d9f388d1c9", - "transactionIndex": "0x0", - "blockHash": "0x7a225d3d34e81ff90c024f1e818b836ea5facbcfec41adb984047d2a2a41b32e", - "blockNumber": "0x39", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xb8308", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0xaccbb53bfcd921714857a9ca80d951bd600752557ef536a3cc054a727bf583b9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x83dab857bff5bac386d125f4d67f1a04b4fc963ed14bd78a45e82019dba20efe", - "transactionIndex": "0x0", - "blockHash": "0xcb23d74a78bf407c60e91f819cbef2aeb4597b94daaa0f077cd29b66bdb84071", - "blockNumber": "0x3a", - "gasUsed": "0x545c", - "effectiveGasPrice": "0xa132f", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x3dddb3d80a58849f2b0a25144e9262c83344e116382f7f82c5146ad0285f4a79" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x21403e0c50cfca9392b9fc383ba0ede62654fbbf97c52b4b61eef7e03e558396", - "blockNumber": "0x3b", - "blockTimestamp": "0x66a2d103", - "transactionHash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x043d9bc5a4d3f96a648e5e3e3faaf97396ddfec30a9d99c68c9fdf8cd36d8a87", - "transactionIndex": "0x0", - "blockHash": "0x21403e0c50cfca9392b9fc383ba0ede62654fbbf97c52b4b61eef7e03e558396", - "blockNumber": "0x3b", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x8d141", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x70e0ba845a1a0f2da3359c97e0285013525ffc49", - "root": "0x5af023ee677e64452e7204abae484fc3559e7b60fb7f3ad5cf0987de4c94718b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49" - ], - "data": "0x", - "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", - "blockNumber": "0x3c", - "blockTimestamp": "0x66a2d104", - "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", - "blockNumber": "0x3c", - "blockTimestamp": "0x66a2d104", - "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", - "blockNumber": "0x3c", - "blockTimestamp": "0x66a2d104", - "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000a00000000000000000000000000000000400000000000000000000800000000000000000000000080000040000000000080000000000000000000000000000000000000000000000000000000000000000000000020000000200000000000000000000000002004001000000000000020000000000000000080000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf602775d0ab50fe61dbfe298c7ab6fa4af05551672c49c0f3b5a03d9fcaf47b7", - "transactionIndex": "0x0", - "blockHash": "0xe3b9704bf6e219f029104ab8b174c041b8e5d520a0ada543ade94627fd670267", - "blockNumber": "0x3c", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x7df1c", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x4826533b4897376654bb4d4ad88b7fafd0c98528", - "root": "0xde3a223fa3d30337ee9405b6550b331df33a98f6f98b44e9f950713aac5d9795" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe8425ea3d0e5f973000216c22886bc3876622713e3d71ed29bbae0d9dde4fb57", - "transactionIndex": "0x0", - "blockHash": "0x9926b3651bb282f8a92f214ed179bd0182776d6b9798d8291cf5f7a97716f074", - "blockNumber": "0x3d", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x6e70d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf", - "root": "0x62133c38d70c181d7b88bf72d5460558b80da56baae654b783483006ab1411df" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0x7980018cb4f90df24f50e973f81ea47eb90216cd98b799e7f8bbbc013d0c90ac", - "blockNumber": "0x3e", - "blockTimestamp": "0x66a2d106", - "transactionHash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000020000000000000010000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0xb123c953e0d7ad55f2640337b2f993252a97f937876f0dbf11f9268f4724c5d6", - "transactionIndex": "0x0", - "blockHash": "0x7980018cb4f90df24f50e973f81ea47eb90216cd98b799e7f8bbbc013d0c90ac", - "blockNumber": "0x3e", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x61143", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "root": "0x0374693e52e9b1766a71fb8cf5c424c52895602104c310a3d4651e41b1ece207" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x2c855a5b0c3261efb7b550f953ae82bd73849775052f9ce325b4444aa75cab00", - "transactionIndex": "0x0", - "blockHash": "0x5ebe9738a28714223f07ba2d051a82e6a10d2b7617569358322afc89431d12fd", - "blockNumber": "0x3f", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0x5573b", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "root": "0x2514fecf698ada223642b5fad92cf5a249766e76f5b1081c1fef77ff4f3b2c4f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d10932eb3616a937bd4a2652c87e9febbace53e5", - "blockHash": "0xdad2ae0183871d9625f2336cff765a4687a39c71b972870ee9608f0a0d933d7a", - "blockNumber": "0x40", - "blockTimestamp": "0x66a2d108", - "transactionHash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000020000000000000000000000000000000000000000000000000000000000000000004000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000200000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xcebfbe00ca38a72fad944a863455863595d173a5b4f5f05772d91c05a2742c80", - "transactionIndex": "0x0", - "blockHash": "0xdad2ae0183871d9625f2336cff765a4687a39c71b972870ee9608f0a0d933d7a", - "blockNumber": "0x40", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x4bbf1", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "contractAddress": null, - "root": "0x52cad839a439a3fb9d617f1464807102374a175f519a9289bef8c084fc3c9325" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xb638631004b0c5763ead3d820d2fcd0b8c5b2b483574f077fa3c5ed44cf131d2", - "blockNumber": "0x41", - "blockTimestamp": "0x66a2d109", - "transactionHash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000020000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc4d7ae7e736b51c9d97cdae0a440d6ac330489d9b8862713ea1e22ad32bdfba8", - "transactionIndex": "0x0", - "blockHash": "0xb638631004b0c5763ead3d820d2fcd0b8c5b2b483574f077fa3c5ed44cf131d2", - "blockNumber": "0x41", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x424e9", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xfc9201f4116ae6b054722e10b98d904829b469c3", - "contractAddress": null, - "root": "0xc62e04e3495665a44e1dc0c8e5df19a0cf677d5a3f6ff6104d1eeb0517c0157d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", - "blockNumber": "0x42", - "blockTimestamp": "0x66a2d10a", - "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", - "blockNumber": "0x42", - "blockTimestamp": "0x66a2d10a", - "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000020000000002000000200000000000000040000000002000000000000020000020000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0xb730b48ae93437ddd878f0bc9604f14d646aee187c35f161461110baae55ae2d", - "transactionIndex": "0x0", - "blockHash": "0x7f1964bf8d752db595d5632ad84a7acf9ffa266af85cc57679ba8799510d65f0", - "blockNumber": "0x42", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x3a0b3", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "contractAddress": null, - "root": "0xbc4dd88675d5ffe32616c1d1a373d320d975a46bf29d5ef0815826b5814f1bbe" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", - "blockNumber": "0x43", - "blockTimestamp": "0x66a2d10b", - "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", - "blockNumber": "0x43", - "blockTimestamp": "0x66a2d10b", - "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000100000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000020000000002200000000000000000000040000000000000000000000020000020000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x542abbee9c88e765b304d74e4aae8bf44e2ddea96c34976cb7476b6fe485d4f5", - "transactionIndex": "0x0", - "blockHash": "0xd883fb9147fb864ae87d6e6aa8c5ff6f8726c041ca52f05b7d09308f9dfd7959", - "blockNumber": "0x43", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x32d2a", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "contractAddress": null, - "root": "0x6dc943c8b29f4c4a3afd00f8c0cb771dd0a9f62a0944c53b22db03d05a007251" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x17545a7f907795f46e87098b27887381272a3290d8c23dc4fd522b09ee3b7966", - "blockNumber": "0x44", - "blockTimestamp": "0x66a2d10c", - "transactionHash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000200000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000020000000000000000000000000000000000020000000000000000000000000000000000000000200000000000000000000000002000000000000020000000000010000000000000000000008000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x30e4522e0d82816e9b34c408b1c656a39e5243a902b422313ae624c1eb9c31ee", - "transactionIndex": "0x0", - "blockHash": "0x17545a7f907795f46e87098b27887381272a3290d8c23dc4fd522b09ee3b7966", - "blockNumber": "0x44", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x2c7e3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xd10932eb3616a937bd4a2652c87e9febbace53e5", - "contractAddress": null, - "root": "0xa86413c33fa3384ce63439383f8ca577fd55325d9fa692accc2577dae447a1ea" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946364, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json deleted file mode 100644 index 38de803e..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946479.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "function": null, - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "0xdaE97900D4B184c5D2012dcdB658c008966466DD", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2152", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "function": "transfer(address,uint256)", - "arguments": [ - "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "gas": "0x7484", - "value": "0x0", - "input": "0xa9059cbb000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "function": null, - "arguments": [ - "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "0xc4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4856f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000dae97900d4b184c5d2012dcdb658c008966466dd00000000000000000000000000000000000000000000000000000000", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "function": null, - "arguments": [ - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c634300081500330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef240000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x12468fcbce18252961e8f0797ba061b50a98886c842dfd55bd7e16418bb0d4a7", - "transactionIndex": "0x0", - "blockHash": "0x66e0571da6332fa142c938568e989693bcbaaff03dfc81a644c71ab6274fa4db", - "blockNumber": "0x1", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x5efbab106cea95288662cd38f2efe9a22608078752216cb6f4dcb65c57f52258" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xe02f420942f8f7d88a93ba4f56c67adb7587deea41430db0b0f2570552b9d2c2", - "blockNumber": "0x2", - "blockTimestamp": "0x66a2d170", - "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000004000000000000000000000000000000000000000000000000000000000000000000800000000000000000", - "type": "0x2", - "transactionHash": "0x17286274ab91c19690e03e7899a9dd550066910e0bf519f3b4c52f32772137c4", - "transactionIndex": "0x0", - "blockHash": "0xe02f420942f8f7d88a93ba4f56c67adb7587deea41430db0b0f2570552b9d2c2", - "blockNumber": "0x2", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x342a1c59", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x7a3af91a83f06ee97689fdaace3087fa21cad1c0cbd3fa2e94beebeaf704093d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - ], - "data": "0x", - "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d171", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d171", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", - "blockNumber": "0x3", - "blockTimestamp": "0x66a2d171", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000400000000000000400000000000000000800000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000000000000000000004000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x4e76833af18423fb9b510ee6f9a37378f56fb678319ba13cdf4f500046a12426", - "transactionIndex": "0x0", - "blockHash": "0x022977104c9b3d57a0a4d291a4e027aa6b5b2dc1d26f5c4f820aa94564201413", - "blockNumber": "0x3", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x2e93516b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0x11ba771a4e13324daee8f9edee84ddbe101a95d0b15b262fedee816acf1b50c0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x57422d71e97e023a8ff89144d233c12eebc697247660d59b8862cee734aec3e2", - "transactionIndex": "0x0", - "blockHash": "0x7d26eb23e502dde94dd05168b50983a3d2d1a8b1c4ea54fc70282d7c44062431", - "blockNumber": "0x4", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x28d9d418", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "root": "0xe979fafa179a267111c76218bd2ae26b7e67dcaaa22d06e9c8b24c39d421c2f4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a64", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf621b9713ed9bfb6d4466037999e42a50394b91d6feb40b4ab33ed21c74f0be2", - "transactionIndex": "0x0", - "blockHash": "0x8659b372c28dc38254988c7d96691c767a94dcbcc25904c21ac42923c167f27a", - "blockNumber": "0x5", - "gasUsed": "0xa1a64", - "effectiveGasPrice": "0x23fa562d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0xa4778652fefacbb49fcb28db70c1eb99fbf7aac1273620daf8cdcd7fda794a69" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1afa3c88eccad3611ce8b9c76798ce2c18c27c3e9de6cc25bd6f16346e8a7bfc", - "transactionIndex": "0x0", - "blockHash": "0xba18c56998baf6544aa7fcfaa4c7e1d470da597714cfcfc7cbca1b68b35411ac", - "blockNumber": "0x6", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1faddd23", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x4428bf85c507dcefe7bec332bb83befa42dd993538b3eebbd1a8dff1f493b066" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x545c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x484bffaefc7860567b67173421b8028de0e0da4d779a74417d06fdfc4b5076f0", - "transactionIndex": "0x0", - "blockHash": "0x426da8a8d3e921292e60850e09036c145aa0dd54b96e03b9abe910e7017065d9", - "blockNumber": "0x7", - "gasUsed": "0x545c", - "effectiveGasPrice": "0x1bb99721", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x19060518361a13ec1d62d3ff4a392a1c997bf384", - "contractAddress": null, - "root": "0x0795e76c053fb1affb5a795544fb08e956d312975920044da2fd07e2b65c2750" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x372cfe26de79a06f36a49f899947d4400c8753f1654889751ad5be1201a76263", - "blockNumber": "0x8", - "blockTimestamp": "0x66a2d176", - "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdf44ed11ade0cd6cd6027745c62d242b0c363356d266443ddddacd53c95df1e7", - "transactionIndex": "0x0", - "blockHash": "0x372cfe26de79a06f36a49f899947d4400c8753f1654889751ad5be1201a76263", - "blockNumber": "0x8", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x1843ab3d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x346a9c5261689c12c9552c51ddaa747a85fdeabf5a0d27652a6a5e9d3dabcb18" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aa2", - "logs": [ - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853" - ], - "data": "0x", - "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d177", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d177", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d177", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x000000000000000000000000004000004000000000000000008000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000000000001000008000000000000000000000000000000004000000000000000000008000000000000000000000000c0000000000000000000000000000000000000000000000040000000000000000000000000000000008000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000800000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5babf8acdd31e8a7e861a01eaae3ec437827ecbaf93a17ad9291824d91316476", - "transactionIndex": "0x0", - "blockHash": "0x14add2fccfea699c6d7a737c2889b6e4a850784e53cf5dd58d1f9eda1c9022a7", - "blockNumber": "0x9", - "gasUsed": "0x37aa2", - "effectiveGasPrice": "0x15a950a9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "root": "0x6a7a46b961a0b7c24296c6111e8f6b456537c8f7c011732fa09b727477a6f804" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xac7afc361192ec5279c469bc3ba7c5f9807d3b2c7164ef3e3284ad114afc8501", - "transactionIndex": "0x0", - "blockHash": "0xbad468a47fbaf38e8d696fefd194fa1dbf8f3d0751614404074e8e98b4c4f582", - "blockNumber": "0xa", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0x12feafd8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "root": "0x2af22cfa604b30de4b230408ff3bb628d2fd0b401f281c0febc5470efe79d73a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0x385acc8a9067bbbc69467a57f6a725dc71488e06f339165b8ac5b95fd1771ad1", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d179", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0x385acc8a9067bbbc69467a57f6a725dc71488e06f339165b8ac5b95fd1771ad1", - "blockNumber": "0xb", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0x10b25bcd", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0xe6f42239a619b96437911e44c6f9c74ab2ce5b5fab2bd9b004eb94726f106221" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x297fef3251cf59cfb4581e06e7a33086a005ddffe60443f8fe4521365981b454", - "transactionIndex": "0x0", - "blockHash": "0x81f01260782365377df275f7e83cc200f1023cfa892ea976aa0caa90423c38a2", - "blockNumber": "0xc", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xeb26bcb", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0x75a8ace8ae6ed9c67f0093e8a431bca4e4d5b5c324eaf925454151f1d749f12a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0x02a2460cccdfa0fdce0755a0f3d2f576b97c35b8a48d7e5b8b582f68bb7b3fc4", - "blockNumber": "0xd", - "blockTimestamp": "0x66a2d17b", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0x02a2460cccdfa0fdce0755a0f3d2f576b97c35b8a48d7e5b8b582f68bb7b3fc4", - "blockNumber": "0xd", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0xd07152f", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0xb552499dec4a4b3b1d7f9772f5036d9595129f56eefc4f61b47e232159cffb0d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa6dfdbaf8175be13ab6b9c18b01503ea27e5c41edd8cea7cb5f94b0ad28aa26f", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d17c", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0xa6dfdbaf8175be13ab6b9c18b01503ea27e5c41edd8cea7cb5f94b0ad28aa26f", - "blockNumber": "0xe", - "gasUsed": "0xb061", - "effectiveGasPrice": "0xb677654", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x30bcc094da06d3b658e06ead2cfdc131d9470eedffc6f05f76440f591af95e15" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", - "blockNumber": "0xf", - "blockTimestamp": "0x66a2d17d", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", - "blockNumber": "0xf", - "blockTimestamp": "0x66a2d17d", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0x1593c659aac6f73e1557a6ab95c9d49e106d36454dfd86a66ee324a0bf5995a6", - "blockNumber": "0xf", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x9fba0c3", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x2ada78f0437474e259b54e9796ec054023da068a206e1bea4cc91d5eca108f89" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d17e", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d17e", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000008000000000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000400000000000000001000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x2cce58514950b1b3b3a28e0489382759618d2cad4eab0d4bd13f77ccdd14d189", - "transactionIndex": "0x0", - "blockHash": "0x9d534b10e742b107613c37a5e85d304352af13e503f19ba084664b84c4b72ef8", - "blockNumber": "0x10", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x8bdafea", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0xd8a22da18127fd113548eae3fc48d55584fa0936a8061c452ca7d51dafa1e03a" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x7faa2edc4fc95482a952e04aa6f2fb2344fcf31fd07ddfb16c64c8cbe1bed2db", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d17f", - "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000020000000000000000100000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd6353e5194fc6590b6789e8364a2bfd3ffd9ad307d44655d74c59fd3d8f6b7cf", - "transactionIndex": "0x0", - "blockHash": "0x7faa2edc4fc95482a952e04aa6f2fb2344fcf31fd07ddfb16c64c8cbe1bed2db", - "blockNumber": "0x11", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x7a6fb5d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x59c699722e791904155dc2e15877391184909ce62bb4f158d564e9c14b3789ed" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946479, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json deleted file mode 100644 index 915a91d7..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946544.json +++ /dev/null @@ -1,1078 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x43661fc3cc29f3ce1434910baf38d136c30b17c37f07f08236f0ee3334daec5e", - "transactionType": "CREATE2", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": null, - "arguments": [ - "\"test\"", - "\"TTK\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xdc2a5", - "value": "0x0", - "input": "0xe06a9a734277a91ec377b632ba7967256704e2ea8a50026b59d82caa0efbde6e60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1fb0a78ec7e12d78320248745b92897fef8c6462c65c1092a5b36787724a69db", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": [ - "\"zeta\"", - "\"ZETA\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9b8", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x12f1aac7cc6047a2628e8ae64aabcb5877d941255a781f2d7dd81f58fd9f44a8", - "transactionType": "CREATE", - "contractName": "ReceiverEVM", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xfbdc6", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "function": null, - "arguments": [ - "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x51eb0363653eb210369e4fc02dd19ee21247284a2dd69657162086ea30ba176d", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2162", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "gas": "0x170a4", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": "transfer(address,uint256)", - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "gas": "0x125e1", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xc4d66de8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4857f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x9f72f", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x43661fc3cc29f3ce1434910baf38d136c30b17c37f07f08236f0ee3334daec5e", - "transactionIndex": "0x0", - "blockHash": "0xc52dd3b679013ac0537ae51f409ea321114f850e209a869d1aba06700e0a611b", - "blockNumber": "0x1", - "gasUsed": "0x9f72f", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null, - "root": "0x297f6906ded1cda37a129989c419c4ae740a6abb8470788467409139fc35783d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x9efb7", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1fb0a78ec7e12d78320248745b92897fef8c6462c65c1092a5b36787724a69db", - "transactionIndex": "0x0", - "blockHash": "0x6d43621889776289fe5db4505d171690b9f8180b53337c4dffb03f9cb170be41", - "blockNumber": "0x2", - "gasUsed": "0x9efb7", - "effectiveGasPrice": "0x347a7c9e", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0xa9dc124b1fce9ce9dbf761a91e91a26250c1945eb9424161f9f5b85123023275" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc1ca8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x12f1aac7cc6047a2628e8ae64aabcb5877d941255a781f2d7dd81f58fd9f44a8", - "transactionIndex": "0x0", - "blockHash": "0xbd6014f660535397fa6501642863b46c226ab9be3d7a119c3bb4125aea77b717", - "blockNumber": "0x3", - "gasUsed": "0xc1ca8", - "effectiveGasPrice": "0x2e341455", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0xbe66cd4fa6758084cd1efef96e7ae66cb41e9726f6f790cefaeb3d77a4132a9e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionIndex": "0x0", - "blockHash": "0x17128b9a1aaefd6aefcf76a57c4956fc49071f8035ceaca1be31471c017ba500", - "blockNumber": "0x4", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x28bbcf21", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0xfea3e1e0b5466aca189eaa08f3bcbebba84d8a48ae76c612ebb6f1837dc6f439" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x652faffd818be261d3abeda97e7764512a78b9022271f79ba9cb9dc6fe8f4454", - "blockNumber": "0x5", - "blockTimestamp": "0x66a2d1b4", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", - "type": "0x2", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "blockHash": "0x652faffd818be261d3abeda97e7764512a78b9022271f79ba9cb9dc6fe8f4454", - "blockNumber": "0x5", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x23a62868", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0x129ce86d438f5ea045778497fe81f92ae8624be1b27428f5758405c332582e39" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x", - "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1b5", - "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1b5", - "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1b5", - "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf80dda0dfeb5e7ae1451beeea24b84175e3ff5c2171d3223b53cc6bc08c5c666", - "transactionIndex": "0x0", - "blockHash": "0xdf50fbfa5a4bfb627bf116c82925c5a7fa960f2b3417c1806df7885935cb23da", - "blockNumber": "0x6", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1fd45bca", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "root": "0x660c7c23628a3ba4d0497959cadb4d8e0540bf62a0414a1124e9d091741563cd" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionIndex": "0x0", - "blockHash": "0x8999652dc97c980acc62a77b2af1fbbe4b7912bcdf51f8ea773bd3e0ab627ae1", - "blockNumber": "0x7", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x1bead8f9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0x3627e650526e946a9ccd1f3605a63d45082ad2219625d6f6296af67d2ff82e1b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a70", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x51eb0363653eb210369e4fc02dd19ee21247284a2dd69657162086ea30ba176d", - "transactionIndex": "0x0", - "blockHash": "0xcfd208b63f521516cc38fb788ce956ac3abbcd47fa35ba27086650da59d57b20", - "blockNumber": "0x8", - "gasUsed": "0xa1a70", - "effectiveGasPrice": "0x189650c3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0xeefeb7cbb2905e9f918710a4a6e638449db772d97952ea5cabeb4b97b09e2432" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x10ae4", - "logs": [ - { - "address": "0x14c369bc7a80723988b417d266a97906069240e9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xd01649e12693f54b1e6af8c8694036ff5a5a8e634767554a787f2c68e64a3c7e", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d1b8", - "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000020000400000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionIndex": "0x0", - "blockHash": "0xd01649e12693f54b1e6af8c8694036ff5a5a8e634767554a787f2c68e64a3c7e", - "blockNumber": "0x9", - "gasUsed": "0x10ae4", - "effectiveGasPrice": "0x15a641a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "contractAddress": null, - "root": "0xcfc510a78a81773598a97805f1a342d4f992d88a0377ccc4d8c6a6f8291d601c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc8f2", - "logs": [ - { - "address": "0x14c369bc7a80723988b417d266a97906069240e9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000007a120", - "blockHash": "0xc8926c7e89ec3245922c9f483dbc8d74286fee518ae1cd9e0fd6f592ceb40ac6", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2d1b9", - "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000400000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000400000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionIndex": "0x0", - "blockHash": "0xc8926c7e89ec3245922c9f483dbc8d74286fee518ae1cd9e0fd6f592ceb40ac6", - "blockNumber": "0xa", - "gasUsed": "0xc8f2", - "effectiveGasPrice": "0x12f4a144", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "contractAddress": null, - "root": "0xb4320ed5ff01b7defca3641e9a34cc1130124522fb9d217d07c60f5605e4547e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xdefe5afb3d9c2f024932356ce3b1e2e8752a43585eb0e4470f1026dd3610e9c3", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d1ba", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "blockHash": "0xdefe5afb3d9c2f024932356ce3b1e2e8752a43585eb0e4470f1026dd3610e9c3", - "blockNumber": "0xb", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x109821a7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0xf9cf29e4864be7486b532d4dea19da64819941db442c45bdd545832675704bfb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aae", - "logs": [ - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x", - "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1bb", - "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1bb", - "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1bb", - "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x93a5fb89201dd3d37aced05634ff944906f0287995eeab2a6d2e92847a241191", - "transactionIndex": "0x0", - "blockHash": "0xf76440f9a8ff7a49ed198f7081e24281b4cbd959f2af2f57b84883bfda80cdee", - "blockNumber": "0xc", - "gasUsed": "0x37aae", - "effectiveGasPrice": "0xed06a49", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0xa1f9ae24236f40f00b8835325d639123a830a34414b7f498b4d356e9c4464574" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionIndex": "0x0", - "blockHash": "0xa10383fbcb7a8c0ec25f2dc9adcf3d85d315ef648c0c19cb3595c9b17988b640", - "blockNumber": "0xd", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0xcfd91bf", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0x59eaf7490e7c0f8d2ae8ecd2826d01c3f6dfbba88a19d5b45ff7a83d543a19e5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0x55f5d8aff87e7d83bd3f74afdca0a23ed77c59e0c6cf9ae552b8de0eeb4b3956", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d1bd", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0x55f5d8aff87e7d83bd3f74afdca0a23ed77c59e0c6cf9ae552b8de0eeb4b3956", - "blockNumber": "0xe", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0xb6b36dc", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0x235c59623484dfc634dc9edfe4ff9a12adc44b73142d1159730fafa03a2bfde0" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionIndex": "0x0", - "blockHash": "0x18243d28d128a0e9eeffd271ff5d15f6b24556f67745be544bc0fc00d2556a12", - "blockNumber": "0xf", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xa0d1a41", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0x5dfc01e8618e8ad908e53b3b51ef568aba19f7b6141f93cf3d3d60f2f37ac99d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0xbf634663e3500e162423c20a675762703c9956f0483e3daaaf5723d44763d288", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d1bf", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0xbf634663e3500e162423c20a675762703c9956f0483e3daaaf5723d44763d288", - "blockNumber": "0x10", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x8e8d90c", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x82852dcfce3e819d524564c5dfb325d5e080aa317100c151d0407edd94fa8ca4" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x4ceb9dcdae810d14dec96bdb282c4a77042f710e8c9af5ce7eb2be8f2a2375d2", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d1c0", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0x4ceb9dcdae810d14dec96bdb282c4a77042f710e8c9af5ce7eb2be8f2a2375d2", - "blockNumber": "0x11", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x7cc9b5b", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x91f12cc79d91f5b154fa636a166522092f1b310616e50021ae4548c1a675be1e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d1c1", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d1c1", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0xe0d5fc0bb7ca83ce2385db76615e5575234d2b96c53c186b3f8065ba7cd95835", - "blockNumber": "0x12", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x6d3c844", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0xdea388c8a5cfcf461c1a495204cacd5dbcd528bf6a7931f6b8c6e62d44a86204" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d1c2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d1c2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "blockHash": "0x2a15de4ea0083e26bfe5ceaa19fda3ce9b28343cea42d607f5a309f27805be48", - "blockNumber": "0x13", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x5fa5812", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x3d036221ae702b704bf98b9fe3df6e4638952ce5805ca201eba952f62e3306c9" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xe985a8c8de4a0700812c527f654f9fbc9d1c96d5f6b9a39c15ce84a0f95df5af", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d1c3", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "blockHash": "0xe985a8c8de4a0700812c527f654f9fbc9d1c96d5f6b9a39c15ce84a0f95df5af", - "blockNumber": "0x14", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x53bbd20", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0xe6d88a169c0629274a0e80ab86d86c47bdb57d38d783983fa934ff923e1be18c" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946544, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json deleted file mode 100644 index 001ecafb..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946584.json +++ /dev/null @@ -1,1078 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": [ - "\"zeta\"", - "\"ZETA\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9b8", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionType": "CREATE", - "contractName": "ReceiverEVM", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xfbdc6", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x3a59bb44038fff347155ec9e67b9dd4c22091d81985f8e8a862a2d8f7027ded8", - "transactionType": "CREATE2", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": null, - "arguments": [ - "\"test\"", - "\"TTK\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xdc2a5", - "value": "0x0", - "input": "0xe06a9a734277a91ec377b632ba7967256704e2ea8a50026b59d82caa0efbde6e60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "function": null, - "arguments": [ - "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2162", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "gas": "0x170a4", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x14c369bc7a80723988b417d266a97906069240e9", - "function": "transfer(address,uint256)", - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "gas": "0x125e1", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4857f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x9efb7", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionIndex": "0x0", - "blockHash": "0x3cba4e0c3a4adefe24d08d1d835aae71e1c1d481b699dcec2d80175ca21f5732", - "blockNumber": "0x1", - "gasUsed": "0x9efb7", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc1ca8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionIndex": "0x0", - "blockHash": "0x78fd01ac9b6a43fd61d420279cba454e8a69330451c596f5e4a134ef12105386", - "blockNumber": "0x2", - "gasUsed": "0xc1ca8", - "effectiveGasPrice": "0x347a3e61", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x9f72f", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x3a59bb44038fff347155ec9e67b9dd4c22091d81985f8e8a862a2d8f7027ded8", - "transactionIndex": "0x0", - "blockHash": "0x3f23ad3c88a6f5f7cad5e68d14bbc546819360cc7b788d4a72ff63a7d28c015c", - "blockNumber": "0x3", - "gasUsed": "0x9f72f", - "effectiveGasPrice": "0x2e43d3c1", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null, - "root": "0x6bfd9992456c3865aa9410eb8508e306534e5b5112d5e189ea1457d341367790" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionIndex": "0x0", - "blockHash": "0x4d154a3d82d855d9d5e9e751d0296c662f79593e2c02a9aaf0764949ebdee140", - "blockNumber": "0x4", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x28bbcf21", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x9d38ab87501bd85059bc381b5c504bbeae5f4eb6ce38e7e1831f5d79390c1d08" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x24b053f4a59383313bbd410fd17b70a96c18336d8956c0db099a134d02c1ebab", - "blockNumber": "0x5", - "blockTimestamp": "0x66a2d1dc", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", - "type": "0x2", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "blockHash": "0x24b053f4a59383313bbd410fd17b70a96c18336d8956c0db099a134d02c1ebab", - "blockNumber": "0x5", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x23a62868", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0x67b05fdb40497f4555c729b05799ba28588fb9cb47e553e380e40257278001d5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x", - "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1dd", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1dd", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1dd", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "blockHash": "0x6f6ec8a5b2e538c7907c5ca7ece2a3bb8d8064946f45b5363b845f2b0d67b189", - "blockNumber": "0x6", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1fd45bca", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "root": "0xab0de36b4c2706addbc38e68e7b75664fded646313007287ac17906608746e5d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionIndex": "0x0", - "blockHash": "0x6d302c66b618c1fbc0de14826354635de239c0eff47c68882ba6b8375b595290", - "blockNumber": "0x7", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x1bead8f9", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0x2c82fb365cb6faeda4eee1c4752b9414a30c60bd09266a17208768520721f8fc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a70", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionIndex": "0x0", - "blockHash": "0x5806be3fed12b9cccffd9ddbc2741a6f127c99a20bc6c160bad371099bcc9f94", - "blockNumber": "0x8", - "gasUsed": "0xa1a70", - "effectiveGasPrice": "0x189650c3", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x30b60de59a9b897cea9206e1c78eb09694aa1893a0a9fdd073c4174490e9e0d3" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x10ae4", - "logs": [ - { - "address": "0x14c369bc7a80723988b417d266a97906069240e9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x4316ab5b9b0cf99fdf45442dcbe4628b250f76b3c175aedacc54689c5dbac2de", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d1e0", - "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000000000020000400000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x835e4245ff5afad8d8b5038a37d2f0ce654960d60c93d1f0a30da05a93204a79", - "transactionIndex": "0x0", - "blockHash": "0x4316ab5b9b0cf99fdf45442dcbe4628b250f76b3c175aedacc54689c5dbac2de", - "blockNumber": "0x9", - "gasUsed": "0x10ae4", - "effectiveGasPrice": "0x15a641a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "contractAddress": null, - "root": "0xdc8cb21b5b630197bf30917e2089bff5c89a66f28587615df5cc5b8ae5bc038e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc8f2", - "logs": [ - { - "address": "0x14c369bc7a80723988b417d266a97906069240e9", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000007a120", - "blockHash": "0xba5ef09b53708b168d3f960056360d490b7c35d8ffa1840817bb0cdbd1c20c64", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2d1e1", - "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000400000000000002000000000000000000000008000000000000000000000000000000000000000000000000000000400000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5670aa938ec5a7adedc72e9b211c6ca266cbb1e36549177235079871d24c3958", - "transactionIndex": "0x0", - "blockHash": "0xba5ef09b53708b168d3f960056360d490b7c35d8ffa1840817bb0cdbd1c20c64", - "blockNumber": "0xa", - "gasUsed": "0xc8f2", - "effectiveGasPrice": "0x12f4a144", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x14c369bc7a80723988b417d266a97906069240e9", - "contractAddress": null, - "root": "0x457e99ea5249edddf038b9164866c89991803178296ad4d4c783d3d98cbfafcd" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x8010cfbbd29e99a750208886c60c3359ea7e67199b41a643bb736916c2f298c6", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d1e2", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "blockHash": "0x8010cfbbd29e99a750208886c60c3359ea7e67199b41a643bb736916c2f298c6", - "blockNumber": "0xb", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x109821a7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0x83f3add7e3b7fc35f6b04c1f78d695a99922e79b037242704bc9a4132b5498f5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aae", - "logs": [ - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x", - "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1e3", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1e3", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1e3", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "blockHash": "0x3b29b0bf1d3640c351e65a7ef23cf4c09cea1bda2cac4d6069062a85cd7d4811", - "blockNumber": "0xc", - "gasUsed": "0x37aae", - "effectiveGasPrice": "0xed06a49", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0x4505aeb1d66e75c3c0749cb1817613c8a01700187d905cb33467a30bb4fdb100" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionIndex": "0x0", - "blockHash": "0x672e01c8f0f33393e78b260cbb55f08773aa992c5a169a71d20d187b1b04b6f7", - "blockNumber": "0xd", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0xcfd91bf", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0xf7780edb91892edd2a1533dc7802f4d0195f478f12ec0fb6ebe178b90caa504d" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0x15f0421d5c5f07534d5d0cc906eae26a6981467f51643dcd8512a2c39381159b", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d1e5", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0x15f0421d5c5f07534d5d0cc906eae26a6981467f51643dcd8512a2c39381159b", - "blockNumber": "0xe", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0xb6b36dc", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0x2e3115a0a6a6454a91486e9cfff74d6dc4a8700424b33f508d5090d60884b810" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionIndex": "0x0", - "blockHash": "0xf3cdc61fd48bf058688532345d55965f080e42f0d2b01e2dcc77cc0cd294b155", - "blockNumber": "0xf", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xa0d1a41", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0xba34957d88446633621bf76e839af3a4f9ae46a4b173f9f9d57b0d290e119643" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0x7ccb557aafd24cfbdb6ca08d105384f89166d30196ff4058b6bc0e8164fbf566", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d1e7", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0x7ccb557aafd24cfbdb6ca08d105384f89166d30196ff4058b6bc0e8164fbf566", - "blockNumber": "0x10", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x8e8d90c", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0xa2aeeaac8814ec71f2c9ba969394347dc1a8000deba963abe9f36c83556264db" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x7fcdffdf2e1e28aaab7a772bdd4b29ddda6b9d6b71c7db8bcbb8fda9405d8b69", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d1e8", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0x7fcdffdf2e1e28aaab7a772bdd4b29ddda6b9d6b71c7db8bcbb8fda9405d8b69", - "blockNumber": "0x11", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x7cc9b5b", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0xb44ba2d9276c2ff06ccce15b0d0b18744ef3853a019c1dde5214ea0025668b2f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d1e9", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d1e9", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0x87b182219932912edae75762c16721d6f934602e58db529569d3dff1f3e71d0a", - "blockNumber": "0x12", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x6d3c844", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x0034c9a388463245934cccfa0247c1e98824eb0a22310d664e9e2d8ad724495f" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d1ea", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d1ea", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "blockHash": "0xee417cbab67706f9068251b02a7876ad24672efb3ecb4ba4ae141df3c54a12f5", - "blockNumber": "0x13", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x5fa5812", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0xa7804b725446f249d8f5b6184beae1e80a41169750347f35123f7271e5e9a2eb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xdae592d9f2fa1047074e5c04ecf26f9970073aee8dacb0e6b0516109275e4c67", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d1eb", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "blockHash": "0xdae592d9f2fa1047074e5c04ecf26f9970073aee8dacb0e6b0516109275e4c67", - "blockNumber": "0x14", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x53bbd20", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x85199726567003842ad6b6bcdea9dede6e09a24d7068f28152e6ccf314272db6" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946584, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json b/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json deleted file mode 100644 index dcdb4dd7..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-1721946611.json +++ /dev/null @@ -1,1077 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": [ - "\"zeta\"", - "\"ZETA\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9b8", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionType": "CREATE", - "contractName": "ReceiverEVM", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xfbdc6", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "\"test\"", - "\"TTK\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9a9", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "function": null, - "arguments": [ - "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2162", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x170a4", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "transfer(address,uint256)", - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x125e1", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4857f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x9efb7", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionIndex": "0x0", - "blockHash": "0xb01dbe91203b051a9546f54d1b1bbbf3bbab2cf774867ae69d60185dff43e1c8", - "blockNumber": "0x1", - "gasUsed": "0x9efb7", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc1ca8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionIndex": "0x0", - "blockHash": "0x8b8050f07623edbab285ba4baf3f68cc90c118c8ee22e6d12d50e03dab69b541", - "blockNumber": "0x2", - "gasUsed": "0xc1ca8", - "effectiveGasPrice": "0x347a3e61", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x9efab", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", - "transactionIndex": "0x0", - "blockHash": "0x2f2ba9cd95af0045128e7d3d2a121b69b00aca6bae5694444b65d6dfe90f5326", - "blockNumber": "0x3", - "gasUsed": "0x9efab", - "effectiveGasPrice": "0x2e43d3c1", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0x31698f19fed6e38e20dde0f7d6ed2b646cfb8eeb81830a0f3814192faeefe11b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionIndex": "0x0", - "blockHash": "0xdb62169dfa360eb675983205c4fd76703261fab86b815a4997cb92bb3002f714", - "blockNumber": "0x4", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x28bb9e84", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x2292d9703f24b3cda9f7cafbf06aa5a706dfc483416d73d7b460d2e7f59c9d57" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", - "blockNumber": "0x5", - "blockTimestamp": "0x66a2d1f7", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", - "type": "0x2", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", - "blockNumber": "0x5", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x23a5fddc", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0xcd8e8bc032477978f16cff0ff1a3f6a685ad18fe9e91b863b03c7800a57da112" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1fd435cd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "root": "0x721bc40cb1cb9eca63f92ec0dedd1a72798b9bb2fa6796d3064518740bc23507" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionIndex": "0x0", - "blockHash": "0x6eba638702ae6c39e56bb83c4de910c85da956a1f04b17a6ead6efcd28b26b11", - "blockNumber": "0x7", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x1beab7a7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0xc674954f14deb2955a6c1800270190d206298572d1541eeb10b38a7ec020d956" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a70", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionIndex": "0x0", - "blockHash": "0xf40cabff8b16c711580def8fa770a58e3fc1ea4135f778cb3a0d992bcf245237", - "blockNumber": "0x8", - "gasUsed": "0xa1a70", - "effectiveGasPrice": "0x1896336b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x0b535303d66ed33fd44acd3b1350b50a204c4536614175249327e8936bd5aa0c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x10ae4", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d1fb", - "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionIndex": "0x0", - "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", - "blockNumber": "0x9", - "gasUsed": "0x10ae4", - "effectiveGasPrice": "0x15a627cd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa2d7f1f38c3d90a6252832c776a59ec01542bc2087dde87196f823a059566c69" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc8f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000007a120", - "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2d1fc", - "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000040200400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionIndex": "0x0", - "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", - "blockNumber": "0xa", - "gasUsed": "0xc8f2", - "effectiveGasPrice": "0x12f48aa4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x32e44eef29f483aa32cd00dd535efccdb6315141b8f7d2fc28cb8aefb9a7343b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d1fd", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", - "blockNumber": "0xb", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x10980dd8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0xb02e6cd5487b01aefc34ff1c151bcdc5785767c41864bc1c7274950081144063" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aae", - "logs": [ - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "gasUsed": "0x37aae", - "effectiveGasPrice": "0xed0589a", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0x9aaab81695f6a170f3a8cdca5ccf5681449434ec7419bf0214c99738f3f480d2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionIndex": "0x0", - "blockHash": "0xce6bc5bf786221de8da87cdb8820f5ce805d07392f4f1cb1019a6b06b5d8a9bd", - "blockNumber": "0xd", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0xcfd823d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0x5ff3fc7e23a1147fb65d4c517d66eafb2a6d6d947cadf2e76b6989eac9bf8690" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d200", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", - "blockNumber": "0xe", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0xb6b293a", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0xd56c0f56d9252985f925d349b5096ee9244a307d21bea8d76439a94b873d9ef6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionIndex": "0x0", - "blockHash": "0x274097d218db3649678f78c9e7513e7b3d460b4fb8769665d882f1902f80949e", - "blockNumber": "0xf", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xa0d0e41", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0x41cbfe8f0e4c56accb5a2780d491efb47a5b64ab02860081346b2951b7729cda" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d202", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", - "blockNumber": "0x10", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x8e8ce69", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x4790d22080e58e30dbec84a42d694dd733f4bf1b3637e6b1755752a309cef305" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d203", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", - "blockNumber": "0x11", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x7cc920c", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x60d17f5a0133ea0c63f6e63e6fc3e6ef70f006da2d65bff5205cb20082013b44" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d204", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d204", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x6d3c01e", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x5f87ad0846b5f78042b62f4e8efb9e2bcffca91556ddf12efa6d16447762ff88" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d205", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d205", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x5fa50ef", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x5bf81ca3c536b28c1ad54eae8430b5dc46dff5bc8b7deba710996393486989ad" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d206", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", - "blockNumber": "0x14", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x53bb6e0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x86dccf3ea6f169304b2b458158cf55c4e552ce16e02aedcd8cb035fde5e8416d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946611, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/Deploy.t.sol/31337/run-latest.json b/v2/broadcast/Deploy.t.sol/31337/run-latest.json deleted file mode 100644 index dcdb4dd7..00000000 --- a/v2/broadcast/Deploy.t.sol/31337/run-latest.json +++ /dev/null @@ -1,1077 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "function": null, - "arguments": [ - "\"zeta\"", - "\"ZETA\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9b8", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047a6574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45544100000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionType": "CREATE", - "contractName": "ReceiverEVM", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xfbdc6", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea2646970667358221220dc02fbce18d06d7160417b4493a5cb7ce233b47bfd666c0f12158079e23d599164736f6c63430008150033", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", - "transactionType": "CREATE", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": null, - "arguments": [ - "\"test\"", - "\"TTK\"" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xce9a9", - "value": "0x0", - "input": "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220f5250b06ce325b1a061ac99ec8dc100622627ab1f2a0a16ee81a94d7294c9ef864736f6c634300081500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354544b0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x714d", - "value": "0xde0b6b3a7640000", - "input": "0x", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionType": "CREATE", - "contractName": "GatewayEVM", - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a7ec5", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea26469706673582212205881ca84ed1bf2d3d79b25df4b941dc563651443574d7b3d78c4b1233eeb441b64736f6c63430008150033", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "function": null, - "arguments": [ - "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "0x485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4f97a", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc95500000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionType": "CREATE", - "contractName": "ERC20CustodyNew", - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd97e8", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea264697066735822122072c03b38396b603115428e87b23f2b4b44d5b202404bd547f830655d894ed45364736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570700000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x6", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionType": "CREATE", - "contractName": "ZetaConnectorNonNative", - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "function": null, - "arguments": [ - "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0xd2162", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b50604051610bb7380380610bb783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610a3961017e6000396000818160ff01528181610233015281816102f90152818161046a015281816105f1015281816106b7015261079801526000818160af015281816101fd015281816102ca015281816105bb01526106880152610a396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b610095610090366004610871565b610167565b005b6100956100a5366004610900565b6103be565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f366004610871565b610525565b610095610162366004610933565b610763565b61016f610805565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd49150610329907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561034357600080fd5b505af1158015610357573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516103a5939291906109e0565b60405180910390a26103b76001600055565b5050505050565b6103c6610805565b60015473ffffffffffffffffffffffffffffffffffffffff163314610417576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161050e91815260200190565b60405180910390a26105206001600055565b505050565b61052d610805565b60015473ffffffffffffffffffffffffffffffffffffffff16331461057e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561063557600080fd5b505af1158015610649573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506106e7907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610995565b600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516103a5939291906109e0565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156107f157600080fd5b505af11580156103b7573d6000803e3d6000fd5b600260005403610841576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60008060008060006080868803121561088957600080fd5b61089286610848565b945060208601359350604086013567ffffffffffffffff808211156108b657600080fd5b818801915088601f8301126108ca57600080fd5b8135818111156108d957600080fd5b8960208285010111156108eb57600080fd5b96999598505060200195606001359392505050565b60008060006060848603121561091557600080fd5b61091e84610848565b95602085013595506040909401359392505050565b60006020828403121561094557600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109d560808301848661094c565b979650505050505050565b8381526040602082015260006109fa60408301848661094c565b9594505050505056fea2646970667358221220331b7bbac9bbdfa14f6102c9b83fd2bddf0e700541bfe0d789f70dfc36dfa01764736f6c634300081500330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8", - "nonce": "0x7", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "mint(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x170a4", - "value": "0x0", - "input": "0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x8", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionType": "CALL", - "contractName": "TestERC20", - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "transfer(address,uint256)", - "arguments": [ - "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "500000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x125e1", - "value": "0x0", - "input": "0xa9059cbb0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000000007a120", - "nonce": "0x9", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionType": "CREATE", - "contractName": "GatewayZEVM", - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x2a2e57", - "value": "0x0", - "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea264697066735822122062042591e6c19766e417c46c8bdcf5069417a1a81282a71390da90de5aaeeea364736f6c63430008150033", - "nonce": "0xa", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionType": "CREATE", - "contractName": "ERC1967Proxy", - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "function": null, - "arguments": [ - "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "0xc4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x4857f", - "value": "0x0", - "input": "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de80000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionType": "CREATE", - "contractName": "SenderZEVM", - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "function": null, - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x98bf5", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea264697066735822122029a4d1fda4be459db4668b22a591b0feca6480812554e754b7319fa733d1dbc864736f6c63430008150033000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e", - "nonce": "0xc", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionType": "CREATE", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": null, - "arguments": [ - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0xc726a", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea26469706673582212206adacad58b05b1ff38752f73fdd845edb86064ed4165a8eb640cfb8ddf06cefc64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionType": "CREATE", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": null, - "arguments": [ - "\"TOKEN\"", - "\"TKN\"", - "18", - "1", - "0", - "0", - "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "gas": "0x1b2c6a", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea264697066735822122049cd34be71dcfb909b6ef2f0cdbf846eb1ac78edeb5cd08671b4e6d83073850664736f6c634300081500330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fd96203f7b22bcf72d9dcb40ff98302376ce09c000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e0000000000000000000000000000000000000000000000000000000000000005544f4b454e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544b4e0000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasCoinZRC20(uint256,address)", - "arguments": [ - "1", - "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0xf58a", - "value": "0x0", - "input": "0xee2815ba00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionType": "CALL", - "contractName": "SystemContractMock", - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "function": "setGasPrice(uint256,uint256)", - "arguments": [ - "1", - "1" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "gas": "0x101f4", - "value": "0x0", - "input": "0xa7cb050700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x17f3b", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x4", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "deposit(address,uint256)", - "arguments": [ - "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "1000000" - ], - "transaction": { - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x122f7", - "value": "0x0", - "input": "0x47e7ef24000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c000000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0x5", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionType": "CALL", - "contractName": "ZRC20New", - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "function": "approve(address,uint256)", - "arguments": [ - "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "1000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "gas": "0x107da", - "value": "0x0", - "input": "0x095ea7b3000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e00000000000000000000000000000000000000000000000000000000000f4240", - "nonce": "0xd", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x9efb7", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1091187ed322fa0ef59c7a8982bce6f765020c0830dda13e32c02b5b532423f", - "transactionIndex": "0x0", - "blockHash": "0xb01dbe91203b051a9546f54d1b1bbbf3bbab2cf774867ae69d60185dff43e1c8", - "blockNumber": "0x1", - "gasUsed": "0x9efb7", - "effectiveGasPrice": "0x3b9aca01", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "root": "0x982bf9e779b8093ba8030a99cb07d9f81aacfb6342bd4cb5250d30f3456b2eb8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc1ca8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x833473895417b89a78020826921431cc25c6802f4484b7d75336ba949bf1641c", - "transactionIndex": "0x0", - "blockHash": "0x8b8050f07623edbab285ba4baf3f68cc90c118c8ee22e6d12d50e03dab69b541", - "blockNumber": "0x2", - "gasUsed": "0xc1ca8", - "effectiveGasPrice": "0x347a3e61", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "root": "0x54d387cb5a220c787478fcafb74ec4955546c0a22fce32f8c03737eb7c7cba26" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x9efab", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x90854f82a78da5be12dc7815983bb5abf541c609479a1f8d62339d12e5a9b13f", - "transactionIndex": "0x0", - "blockHash": "0x2f2ba9cd95af0045128e7d3d2a121b69b00aca6bae5694444b65d6dfe90f5326", - "blockNumber": "0x3", - "gasUsed": "0x9efab", - "effectiveGasPrice": "0x2e43d3c1", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "root": "0x31698f19fed6e38e20dde0f7d6ed2b646cfb8eeb81830a0f3814192faeefe11b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5208", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xad7440e2037687984c3dd4cd9086a4e745571d81602403421904dff918430f1f", - "transactionIndex": "0x0", - "blockHash": "0xdb62169dfa360eb675983205c4fd76703261fab86b815a4997cb92bb3002f714", - "blockNumber": "0x4", - "gasUsed": "0x5208", - "effectiveGasPrice": "0x28bb9e84", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "contractAddress": null, - "root": "0x2292d9703f24b3cda9f7cafbf06aa5a706dfc483416d73d7b460d2e7f59c9d57" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x20b2b5", - "logs": [ - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", - "blockNumber": "0x5", - "blockTimestamp": "0x66a2d1f7", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000001000000000100000000000000", - "type": "0x2", - "transactionHash": "0x989b21d7b75dcfc1e473b826b2edd005bf98da2b050289d8d3d8e12c1a4ace25", - "transactionIndex": "0x0", - "blockHash": "0x4aa452789d7de7bc221a7d4f249eb08f779bb3ed6efedf17cd24cce072b85f6b", - "blockNumber": "0x5", - "gasUsed": "0x20b2b5", - "effectiveGasPrice": "0x23a5fddc", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "root": "0xcd8e8bc032477978f16cff0ff1a3f6a685ad18fe9e91b863b03c7800a57da112" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3d3e7", - "logs": [ - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "blockTimestamp": "0x66a2d1f8", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000001000240000001000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000001000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd14ab88015c525b99f844ec0c99e60d21fb195c90eae514c41542f29e3b8af8d", - "transactionIndex": "0x0", - "blockHash": "0x358af282f7a2580c67bb2314eab3a7ff66d1b96b3b7b368959ce9c780cb88e6d", - "blockNumber": "0x6", - "gasUsed": "0x3d3e7", - "effectiveGasPrice": "0x1fd435cd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "root": "0x721bc40cb1cb9eca63f92ec0dedd1a72798b9bb2fa6796d3064518740bc23507" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa7592", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf093229b19c34a47bedf8977dd6f9aef23ed42ba4e9f800d3a23307c10fc935c", - "transactionIndex": "0x0", - "blockHash": "0x6eba638702ae6c39e56bb83c4de910c85da956a1f04b17a6ead6efcd28b26b11", - "blockNumber": "0x7", - "gasUsed": "0xa7592", - "effectiveGasPrice": "0x1beab7a7", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "root": "0xc674954f14deb2955a6c1800270190d206298572d1541eeb10b38a7ec020d956" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa1a70", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x68ea09356f4f856b9972ceb7511d054340fd6ce6f28388f38d6eb51e44cbe3aa", - "transactionIndex": "0x0", - "blockHash": "0xf40cabff8b16c711580def8fa770a58e3fc1ea4135f778cb3a0d992bcf245237", - "blockNumber": "0x8", - "gasUsed": "0xa1a70", - "effectiveGasPrice": "0x1896336b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "root": "0x0b535303d66ed33fd44acd3b1350b50a204c4536614175249327e8936bd5aa0c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x10ae4", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", - "blockNumber": "0x9", - "blockTimestamp": "0x66a2d1fb", - "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x4c56a5ca2c5b72f59393ce63f91bdc427e62863148bae8e3b636abe7f52d4071", - "transactionIndex": "0x0", - "blockHash": "0x19bf7aab79bd8155f8852d723caef9052716d321235185c841dd9caf368b3750", - "blockNumber": "0x9", - "gasUsed": "0x10ae4", - "effectiveGasPrice": "0x15a627cd", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa2d7f1f38c3d90a6252832c776a59ec01542bc2087dde87196f823a059566c69" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xc8f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000007a120", - "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", - "blockNumber": "0xa", - "blockTimestamp": "0x66a2d1fc", - "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000040200400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", - "type": "0x2", - "transactionHash": "0x87fabfe25dee77ed3b7000faa12ea1eb9f91f0ba3d92d489f2a9b43a38690834", - "transactionIndex": "0x0", - "blockHash": "0xd6c83fbcfc341e9f8c600fbbc0a02eb079e377ae8baec0ac4890f0a80f5e2faa", - "blockNumber": "0xa", - "gasUsed": "0xc8f2", - "effectiveGasPrice": "0x12f48aa4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x32e44eef29f483aa32cd00dd535efccdb6315141b8f7d2fc28cb8aefb9a7343b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2074d1", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", - "blockNumber": "0xb", - "blockTimestamp": "0x66a2d1fd", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x54ac5a307365a95561f3528abfba58071d1a337c6004a95eb687fdd2031a6615", - "transactionIndex": "0x0", - "blockHash": "0x68ee54cd25df7e3fc051000dbbbd2e4b3ee6386d86f705b6b70a00672fed3108", - "blockNumber": "0xb", - "gasUsed": "0x2074d1", - "effectiveGasPrice": "0x10980dd8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "root": "0xb02e6cd5487b01aefc34ff1c151bcdc5785767c41864bc1c7274950081144063" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x37aae", - "logs": [ - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "topics": [ - "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "blockTimestamp": "0x66a2d1fe", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000100000000000000000000000400000000040000000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001800000000000000001000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000800000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000020000000200000000000000000000000002004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x367500aa774fdbc39ab75178cefd1d08e8ea398a8c989ebe3a62d0746cf68353", - "transactionIndex": "0x0", - "blockHash": "0x577cc406a29dd4b65a22d53eeefe837a4125baff2392d14318356cf581621cc6", - "blockNumber": "0xc", - "gasUsed": "0x37aae", - "effectiveGasPrice": "0xed0589a", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "root": "0x9aaab81695f6a170f3a8cdca5ccf5681449434ec7419bf0214c99738f3f480d2" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x7587a", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x08cc5603c0a65296f95d5e198867d3f52a1fed33e06fe1ab56d52c5f91c0bb55", - "transactionIndex": "0x0", - "blockHash": "0xce6bc5bf786221de8da87cdb8820f5ce805d07392f4f1cb1019a6b06b5d8a9bd", - "blockNumber": "0xd", - "gasUsed": "0x7587a", - "effectiveGasPrice": "0xcfd823d", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "root": "0x5ff3fc7e23a1147fb65d4c517d66eafb2a6d6d947cadf2e76b6989eac9bf8690" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x993d3", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5" - ], - "data": "0x", - "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", - "blockNumber": "0xe", - "blockTimestamp": "0x66a2d200", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000200000000000000000000", - "type": "0x2", - "transactionHash": "0x8d88ce7606327f7babbc764c7f6c02a179606baba08f410ce9bcb227e5e4227e", - "transactionIndex": "0x0", - "blockHash": "0xbc513c86b84e6ab252a5d49a22af6e9a5167d332646656b673ac1ee3146613cf", - "blockNumber": "0xe", - "gasUsed": "0x993d3", - "effectiveGasPrice": "0xb6b293a", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "root": "0xd56c0f56d9252985f925d349b5096ee9244a307d21bea8d76439a94b873d9ef6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14e8cf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf1e4c146da23ce9d819cd7a37715e0baa6f7e167f9c441c414fa1a616b1b2a73", - "transactionIndex": "0x0", - "blockHash": "0x274097d218db3649678f78c9e7513e7b3d460b4fb8769665d882f1902f80949e", - "blockNumber": "0xf", - "gasUsed": "0x14e8cf", - "effectiveGasPrice": "0xa0d0e41", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": null, - "contractAddress": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "root": "0x41cbfe8f0e4c56accb5a2780d491efb47a5b64ab02860081346b2951b7729cda" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb1c5", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", - "blockNumber": "0x10", - "blockTimestamp": "0x66a2d202", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000010000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x09a6b476be483066f6ef62ebc9a172a4a7103cd85ac54b4001177f47dcccede1", - "transactionIndex": "0x0", - "blockHash": "0x224759a073b1e26d660fb99fea29e0ece42b3c679255cdf0a3999a16b4f30632", - "blockNumber": "0x10", - "gasUsed": "0xb1c5", - "effectiveGasPrice": "0x8e8ce69", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x4790d22080e58e30dbec84a42d694dd733f4bf1b3637e6b1755752a309cef305" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb061", - "logs": [ - { - "address": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "topics": [ - "0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", - "blockNumber": "0x11", - "blockTimestamp": "0x66a2d203", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000020000010000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x711fdbe65799bf04b43eb4bc69907a117c9839ce53900ebc827a372e8a568f61", - "transactionIndex": "0x0", - "blockHash": "0x1d95aed2ee583d7cc0f989236a5a467f952e637c3f4cf079701a456d97b76e28", - "blockNumber": "0x11", - "gasUsed": "0xb061", - "effectiveGasPrice": "0x7cc920c", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x9fd96203f7b22bcf72d9dcb40ff98302376ce09c", - "contractAddress": null, - "root": "0x60d17f5a0133ea0c63f6e63e6fc3e6ef70f006da2d65bff5205cb20082013b44" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x11574", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d204", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "blockTimestamp": "0x66a2d204", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000002000000200000008000000040000000002000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x6aca759810bd5d3761b8302349532aceb91b43b2ad9bab8271b8021e8ba85d6b", - "transactionIndex": "0x0", - "blockHash": "0x396cf71fc15115e2f7b06acc95ba4539a3dad05a8e0c53340f23375f7473c149", - "blockNumber": "0x12", - "gasUsed": "0x11574", - "effectiveGasPrice": "0x6d3c01e", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x5f87ad0846b5f78042b62f4e8efb9e2bcffca91556ddf12efa6d16447762ff88" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd2a8", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d205", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000014735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "blockTimestamp": "0x66a2d205", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000040010000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000002000000000000000000000000000000000000020000000002000000000000008000000040000000000000000000000000000021000000000000000000000000000000000000000000000000000001000000000000", - "type": "0x2", - "transactionHash": "0x44c35fe7b4791fabc9995de32a3d46ab78d0cdd1293dfaede82f3e80251cfdaa", - "transactionIndex": "0x0", - "blockHash": "0x83aa31c4ea6906fdfe822d240a680267de550aa55142666d9318f2e5d3b03a3b", - "blockNumber": "0x13", - "gasUsed": "0xd2a8", - "effectiveGasPrice": "0x5fa50ef", - "blobGasPrice": "0x1", - "from": "0x735b14bb79463307aacbed86daf3322b1e6226ab", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x5bf81ca3c536b28c1ad54eae8430b5dc46dff5bc8b7deba710996393486989ad" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xb46a", - "logs": [ - { - "address": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", - "blockNumber": "0x14", - "blockTimestamp": "0x66a2d206", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000240000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000002000000000000000000001000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4f0788d585ad496500aa5942ebf5525e62c35ea021b4975783c09e1457ea6ef5", - "transactionIndex": "0x0", - "blockHash": "0xb4468de43f7f9c57816f419db9b9438c3303542d166aa491c68de1653ed6a67c", - "blockNumber": "0x14", - "gasUsed": "0xb46a", - "effectiveGasPrice": "0x53bb6e0", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "contractAddress": null, - "root": "0x86dccf3ea6f169304b2b458158cf55c4e552ce16e02aedcd8cb035fde5e8416d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1721946611, - "chain": 31337, - "commit": "a8ec2b1" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json deleted file mode 100644 index c3f0071e..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722019987.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x198143e5482fc224d6638260deef3b622f30ff146917a75387a34633b0fbc40b", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f093", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "blockHash": "0x198143e5482fc224d6638260deef3b622f30ff146917a75387a34633b0fbc40b", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019987, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json deleted file mode 100644 index c09da23d..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020072.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa3f39357faa9ded24d236d24c51696448aef4639d61576984062b4f7e080e3a3", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f0fd", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "blockHash": "0xa3f39357faa9ded24d236d24c51696448aef4639d61576984062b4f7e080e3a3", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020072, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json deleted file mode 100644 index bbc68aea..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020162.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa71393f844774fb7ecd53fc79b5ccdaaaa0c715348f73aa7497c8ff98f069783", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f159", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "blockHash": "0xa71393f844774fb7ecd53fc79b5ccdaaaa0c715348f73aa7497c8ff98f069783", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020162, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json deleted file mode 100644 index 9edacbdb..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020201.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xda589f6824f46444d71b8c9e4170398f636b3705adf30b57b758c72ac11bff0d", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f180", - "transactionHash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xb49feb76fd62b1d90a45e6a999bb7487625c5d1a75b22764498100335a597d60", - "transactionIndex": "0x0", - "blockHash": "0xda589f6824f46444d71b8c9e4170398f636b3705adf30b57b758c72ac11bff0d", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x2525317c2", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xacdc59cdf0040ae83d88ffc487fadddebd01503266b69efeb7f46720a2a298dd" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020201, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json deleted file mode 100644 index 6c57c857..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020244.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8f74c6fdb1b14e1bcf106331b2c7542c1e4c443bce4f4f7de52a43431fa32c19", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f1ab", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "blockHash": "0x8f74c6fdb1b14e1bcf106331b2c7542c1e4c443bce4f4f7de52a43431fa32c19", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020244, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json deleted file mode 100644 index 4b1594bd..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020326.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x99866cf796430305bf29394e78280270eb7680ecbf8905ece0d631a7ec0280e9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f1fa", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x40837f383d72615c5c4f48b412fbf7252388d8baa949fe87ae54e3f2e103b4c8", - "transactionIndex": "0x0", - "blockHash": "0x99866cf796430305bf29394e78280270eb7680ecbf8905ece0d631a7ec0280e9", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xa78340cca73ae9d5af84a1c5c9af8d0e5b1aa335984ef5715451920ce12ab91f" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020326, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json deleted file mode 100644 index 7fbd75af..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020353.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x612ed18ea6526927339f538354899305006572acff91174542e9172a1fc7061c", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f217", - "transactionHash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x6d6bc97215dde2f51673fce5affe3e053856f2b435bd3d8c2218e33a6d0798f3", - "transactionIndex": "0x0", - "blockHash": "0x612ed18ea6526927339f538354899305006572acff91174542e9172a1fc7061c", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252d5d8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x334d6162f695789b62cf0ed3edbe49aa8fd76a9599ad602c8d8d976c23688ff3" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020353, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json deleted file mode 100644 index 0f983fd7..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020544.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xf494ce1bf25e6c6c1d8a645df4a62d1c70da022310a976c78d157d581e51f00e", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f2d5", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xf494ce1bf25e6c6c1d8a645df4a62d1c70da022310a976c78d157d581e51f00e", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020544, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json deleted file mode 100644 index d2365f08..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020594.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8a870b010187a9971109b11d6491374a1bfbab660ab29a600dc8cfb921a4ad42", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f30a", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x8a870b010187a9971109b11d6491374a1bfbab660ab29a600dc8cfb921a4ad42", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020594, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json deleted file mode 100644 index 0c34b5b1..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020645.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xaa2c1eaa51e0cf5863d9174bc0d3f5db063791211b0f3f15fa78a159f7ec4f99", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f33e", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xaa2c1eaa51e0cf5863d9174bc0d3f5db063791211b0f3f15fa78a159f7ec4f99", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020645, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json deleted file mode 100644 index db16e87a..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020667.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa288f0d9de0b326efab2fbbb57a71d1568d46309c72cd5d70d0f2222df9f8596", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f355", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xa288f0d9de0b326efab2fbbb57a71d1568d46309c72cd5d70d0f2222df9f8596", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020667, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json deleted file mode 100644 index 774fabcd..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020737.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x08cf6a113342d42468d81594dbefeb37ac203a9f11362043e66b2f028325d911", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f39a", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x08cf6a113342d42468d81594dbefeb37ac203a9f11362043e66b2f028325d911", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020737, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json deleted file mode 100644 index 37548ffe..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020759.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x3586e202ffa678c55898bfa26b416e215c0f9b4440909eef10de6d301fedd11c", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f3af", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x3586e202ffa678c55898bfa26b416e215c0f9b4440909eef10de6d301fedd11c", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020759, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json deleted file mode 100644 index 3d9ccbfe..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020844.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x7766e34b97c6770a781b0727b78da7b97acbe08bf5b873afef41500666697fea", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f404", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x7766e34b97c6770a781b0727b78da7b97acbe08bf5b873afef41500666697fea", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020844, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json deleted file mode 100644 index c8f89200..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020882.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5dcc9e5e032a949b59ece088529a6ed104780d90d2f4fd7f6daf958ee4abe9fe", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f42b", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x5dcc9e5e032a949b59ece088529a6ed104780d90d2f4fd7f6daf958ee4abe9fe", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020882, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json deleted file mode 100644 index c8e69480..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020898.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa909da4d524ad84da2a9e2681b54ac540256f34165bd0ccab183130916e80e06", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f439", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xa909da4d524ad84da2a9e2681b54ac540256f34165bd0ccab183130916e80e06", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020898, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json deleted file mode 100644 index 933e7d42..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722020953.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xfad5776fe413cd0ca78314dafe502ba960469638b77b17e720d00ae9101476be", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f472", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xfad5776fe413cd0ca78314dafe502ba960469638b77b17e720d00ae9101476be", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722020953, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json deleted file mode 100644 index 25a35a80..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021051.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xf6f537ec609de6618333646713fb96c7fb87ff963ff670bdae4e004247b966c4", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f4d4", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xf6f537ec609de6618333646713fb96c7fb87ff963ff670bdae4e004247b966c4", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021051, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json deleted file mode 100644 index a62b65f5..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021079.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x4542983b9e58e2b45a7bd952067587fdec4ae0c41bb6ac5f90f0c2859931568d", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f4ef", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x4542983b9e58e2b45a7bd952067587fdec4ae0c41bb6ac5f90f0c2859931568d", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021079, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json deleted file mode 100644 index a54485cb..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021116.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x238dc945056ad798be071448fc330467d4921fbf0ce9bdda258dae2963a5b358", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f514", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x238dc945056ad798be071448fc330467d4921fbf0ce9bdda258dae2963a5b358", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021116, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json deleted file mode 100644 index 2f601c76..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021137.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x580e7a1a40b432fd111ac3a02545563cd10a685ca8ed489573b745acc9276edb", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f528", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0x580e7a1a40b432fd111ac3a02545563cd10a685ca8ed489573b745acc9276edb", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021137, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json deleted file mode 100644 index 3aaaffed..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021160.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0xa777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xb258", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x79f2", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000064a777d0dc0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xb37c59a1b7d345f181bbdce5881eaf6a658b3200fa01387ff46e803606d2af35", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f541", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0xa0c76c672418cd95221635cc40f3125bfdaab9f0d8811e7bb94b6d3cf48be2af", - "transactionIndex": "0x0", - "blockHash": "0xb37c59a1b7d345f181bbdce5881eaf6a658b3200fa01387ff46e803606d2af35", - "blockNumber": "0x1d", - "gasUsed": "0x79f2", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xb2d5939c9381821e713fc5862c3e50ab0eb5029e8727e383110790e9034d8906" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021160, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json deleted file mode 100644 index f415ef61..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021237.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0x68656c6c6f" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xa1a3", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x7506", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0xde2a75f2d70f7b3ed0c64145d8b4949004e57a9b3afaac8ada4d843964b329fa", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f58c", - "transactionHash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x1683e6740f0a157ff5ccd3e964cef2340301c146fc76d1be99e2a7da6ed430dd", - "transactionIndex": "0x0", - "blockHash": "0xde2a75f2d70f7b3ed0c64145d8b4949004e57a9b3afaac8ada4d843964b329fa", - "blockNumber": "0x1d", - "gasUsed": "0x7506", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x3e3850febb0fdc125e0230fc5a89938279ded24f245f33d0a8a2acffabd6b3be" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021237, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json b/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json deleted file mode 100644 index a8166502..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-1722021281.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xa60a", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x7836", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f5b5", - "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionIndex": "0x0", - "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", - "blockNumber": "0x1d", - "gasUsed": "0x7836", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xe592ee97621c4324669db2ad038d9888e5e928c200dd9bd34f54d98ffc30672d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021281, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmCall.s.sol/31337/run-latest.json b/v2/broadcast/EvmCall.s.sol/31337/run-latest.json deleted file mode 100644 index a8166502..00000000 --- a/v2/broadcast/EvmCall.s.sol/31337/run-latest.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "call(address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0xa60a", - "value": "0x0", - "input": "0x1b8b921d00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x7836", - "logs": [ - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f5b5", - "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000080000000000000080000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x05f7d27da40cde64d431e56131fa5fda2edf86916ac719748f93afe7af723eb5", - "transactionIndex": "0x0", - "blockHash": "0x69a9bfeacd6a468889caa0792595553afdb0127218d9437a25e0411ec1cd0a91", - "blockNumber": "0x1d", - "gasUsed": "0x7836", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0xe592ee97621c4324669db2ad038d9888e5e928c200dd9bd34f54d98ffc30672d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021281, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json deleted file mode 100644 index c370b4b9..00000000 --- a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722021596.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "function": "approve(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "gas": "0xf99a", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "depositAndCall(address,uint256,address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "1", - "0x9A676e781A523b5d0C0e43731313A708CB607508", - "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x122be", - "value": "0x0", - "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0xb4b6", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x0ea2a678ad5045f520c4cd44f21dec9cd9953a42a4b026867edc84888d8a1857", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3f6dc", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "blockHash": "0x0ea2a678ad5045f520c4cd44f21dec9cd9953a42a4b026867edc84888d8a1857", - "blockNumber": "0x1d", - "gasUsed": "0xb4b6", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "contractAddress": null, - "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd27f", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a3f6dd", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a3f6dd", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "blockHash": "0xb863b109cb274ac108abd8cc3bdc11150360efd5f5fb37638165c695819ca5c9", - "blockNumber": "0x1e", - "gasUsed": "0xd27f", - "effectiveGasPrice": "0x2521f9d82", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722021596, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json deleted file mode 100644 index cfcd9c8b..00000000 --- a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-1722025672.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "function": "approve(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "gas": "0xf99a", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "depositAndCall(address,uint256,address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "1", - "0x9A676e781A523b5d0C0e43731313A708CB607508", - "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x122be", - "value": "0x0", - "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0xb4b6", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a406db", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", - "blockNumber": "0x1d", - "gasUsed": "0xb4b6", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "contractAddress": null, - "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd27f", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a406dc", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a406dc", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "gasUsed": "0xd27f", - "effectiveGasPrice": "0x2521f9d82", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722025672, - "chain": 31337, - "commit": "6114f6e" -} \ No newline at end of file diff --git a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json b/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json deleted file mode 100644 index cfcd9c8b..00000000 --- a/v2/broadcast/EvmDepositAndCall.s.sol/31337/run-latest.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "function": "approve(address,uint256)", - "arguments": [ - "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "1" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "gas": "0xf99a", - "value": "0x0", - "input": "0x095ea7b30000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "function": "depositAndCall(address,uint256,address,bytes)", - "arguments": [ - "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", - "1", - "0x9A676e781A523b5d0C0e43731313A708CB607508", - "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "gas": "0x122be", - "value": "0x0", - "input": "0x8c6f037f00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0xb4b6", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a406db", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000400000000001000400000000000000000000000200000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000800000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8302d86a2b50c50201ce88784cb5d3e3cb57a79136abefc2742b01bb054f6545", - "transactionIndex": "0x0", - "blockHash": "0x458f5d913d676db41ef680523ef05c20c6242bbc89eb93a73b8f8ab860e52fc6", - "blockNumber": "0x1d", - "gasUsed": "0xb4b6", - "effectiveGasPrice": "0x25252c4a4", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "contractAddress": null, - "root": "0x8cbf21bf3624068e6c5f00e0ddb68c6d9b63129b7138ccd23cc6d7eabf5b844b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd27f", - "logs": [ - { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a406dc", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "topics": [ - "0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "blockTimestamp": "0x66a406dc", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000001000000010000040200000000000000000000000000000000000000008000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880010000000000000000000200000000000000000000002000000200000000000000000000000002000000000000000000000000000000000000001000000000000000000000000000000420000000000000000", - "type": "0x2", - "transactionHash": "0x8518662f597564de677ab168dac802d86e4fd13f01e0b8974d849256b7519882", - "transactionIndex": "0x0", - "blockHash": "0x89188fed5d6cc72b170b1ad063069a1dfe4d81fb72ccb5f7be47a1ff41300171", - "blockNumber": "0x1e", - "gasUsed": "0xd27f", - "effectiveGasPrice": "0x2521f9d82", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "contractAddress": null, - "root": "0x0107df49c2b41e3afb2de1911ab721e31b9cd6cf3ac6be3fc195ccf45916b9df" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722025672, - "chain": 31337, - "commit": "6114f6e" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json deleted file mode 100644 index 638ac89f..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009201.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xc6e46c8b53849cd3037f2a9c8dd5184342cd954d240fa60ed081334234b95ba0", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c671", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xc6e46c8b53849cd3037f2a9c8dd5184342cd954d240fa60ed081334234b95ba0", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009201, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json deleted file mode 100644 index b0708fa3..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009258.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xef5d40fd049230300cf85786d621e099b4f1464e8617f93cc9c422d44a55f149", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c6bc", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xef5d40fd049230300cf85786d621e099b4f1464e8617f93cc9c422d44a55f149", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009258, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json deleted file mode 100644 index fa5f24d9..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009361.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x2f20708d9c7e2f1b465a979de8b5945d0c24470786b55f44c2a742bee9621cec", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c726", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x2f20708d9c7e2f1b465a979de8b5945d0c24470786b55f44c2a742bee9621cec", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009361, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json deleted file mode 100644 index b41d8cf6..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009428.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x88b6a6c7eb5a4ac145f40bd5efd492de2b6fa32b8d2051efa4a03819fb281a58", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c76a", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x88b6a6c7eb5a4ac145f40bd5efd492de2b6fa32b8d2051efa4a03819fb281a58", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009428, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json deleted file mode 100644 index ae77569b..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009517.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x55f973e43a67be7a2e8c257381b7ac10b39416ec1977248a02fcca286f6fcae9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c7c4", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x55f973e43a67be7a2e8c257381b7ac10b39416ec1977248a02fcca286f6fcae9", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009517, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json deleted file mode 100644 index 45c404ba..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009689.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x2f5f172b3f25f532ea4b94b2f8a12cfdc46b4e5d70ac8d924844eacbe06a89dd", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c86f", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x2f5f172b3f25f532ea4b94b2f8a12cfdc46b4e5d70ac8d924844eacbe06a89dd", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009689, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json deleted file mode 100644 index b8c0b169..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009885.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8ecd465cb08aa758b5f22cd371aa063701a20e1048b83e81abaa5a52c098a2a7", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c934", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x8ecd465cb08aa758b5f22cd371aa063701a20e1048b83e81abaa5a52c098a2a7", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009885, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json deleted file mode 100644 index 9b23abb6..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722009949.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5165bd3c70e00750659b78bae76a4108e6faeb7821de8ed4f05f5626f6597162", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c972", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x5165bd3c70e00750659b78bae76a4108e6faeb7821de8ed4f05f5626f6597162", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722009949, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json deleted file mode 100644 index c0b71954..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010025.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x4718ba20ba3972c5bc1f5fda576ee65f5fb01f6f8c05c29e6be47b7732d8936e", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3c9ac", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "blockHash": "0x4718ba20ba3972c5bc1f5fda576ee65f5fb01f6f8c05c29e6be47b7732d8936e", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722010025, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json deleted file mode 100644 index 5445c4c6..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010111.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x1a3f7a810b5224b6759615a2b4216003d3dd1f538ebe3b9da94aa75f6701387f", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3c9ff", - "transactionHash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf9e0f5c552fdf5ae997abf879875b40ed1b810a2f7643ecf4802de15dab2e74e", - "transactionIndex": "0x0", - "blockHash": "0x1a3f7a810b5224b6759615a2b4216003d3dd1f538ebe3b9da94aa75f6701387f", - "blockNumber": "0x1f", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x2525d2b65", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x7095a25bfd1ebc4dff2d917744f3e326fe14a52b47530d3bdbf4d8b6d11d762a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722010111, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json deleted file mode 100644 index 7a6799ee..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010410.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x2", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x0ca7ae77bc4e65444f914575bccb491226749d9a6a432b8168725e7bc07a273b", - "blockNumber": "0x21", - "blockTimestamp": "0x66a3cb2a", - "transactionHash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8e9676780f8ab1cfc186895a4dbf24f2a84c1e0629175b338ec99b27665bd623", - "transactionIndex": "0x0", - "blockHash": "0x0ca7ae77bc4e65444f914575bccb491226749d9a6a432b8168725e7bc07a273b", - "blockNumber": "0x21", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252707315", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x7e3f3560d71f709f4e309cae879fd1beda6ca5d21fecb1411f51d48130363775" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722010410, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json deleted file mode 100644 index d6613410..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010426.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1a", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xf685c78e8f2cea4ac88e1afdcedee9b168e3cd0aa8051e62f8ee24bba8238af9", - "blockNumber": "0x23", - "blockTimestamp": "0x66a3cb3a", - "transactionHash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x05025e188ebf66c803baf912397af9a325cc6b87b2d12db87bf257b1ff084f31", - "transactionIndex": "0x0", - "blockHash": "0xf685c78e8f2cea4ac88e1afdcedee9b168e3cd0aa8051e62f8ee24bba8238af9", - "blockNumber": "0x23", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252895993", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xa9b6f4e112fd9d180618dba0760eab6df30327276c6c29bb3337a6a8d490dd5d" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722010426, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json deleted file mode 100644 index 3d222b89..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722010675.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x34513551ae16dc43b0896f8fb0c2249942538673d589f40a3e0770872a797a5f", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3cc4b", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x34513551ae16dc43b0896f8fb0c2249942538673d589f40a3e0770872a797a5f", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722010675, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json deleted file mode 100644 index 3e473ab8..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011033.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa4de9c819ba0613440573ff55cba504d54503a59a13fcbd2ebc8793df30e25a7", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3cdaf", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xa4de9c819ba0613440573ff55cba504d54503a59a13fcbd2ebc8793df30e25a7", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011033, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json deleted file mode 100644 index 76417f63..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011431.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x8f5175e673dd061fd14afcd3f879d0418db2c382a57afa267642eeb8899c3397", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3cf3e", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x8f5175e673dd061fd14afcd3f879d0418db2c382a57afa267642eeb8899c3397", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011431, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json deleted file mode 100644 index c3e827ef..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011464.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xe3c472268f69e1e61ae3893b05552238ebffe8f82f8bc882257050e2210b9c82", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3cf5e", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xe3c472268f69e1e61ae3893b05552238ebffe8f82f8bc882257050e2210b9c82", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011464, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json deleted file mode 100644 index 720e18f3..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011593.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xbeedab60382d2448054d144a2c8bd2c2dc1a34dafc6f31a8b9a17279279d20fd", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3cfdf", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xbeedab60382d2448054d144a2c8bd2c2dc1a34dafc6f31a8b9a17279279d20fd", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011593, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json deleted file mode 100644 index bd3255cc..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011900.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x9ff152d09d1534037b0301a559d28537a0c473244d9a31c326e7863977ed2b30", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d112", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0x9ff152d09d1534037b0301a559d28537a0c473244d9a31c326e7863977ed2b30", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011900, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json deleted file mode 100644 index 810e2db7..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722011932.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x42ff6817a022620dabb8ffbee9caa1cbf280c17e648c716e5bf4071910a1a212", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d130", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "blockHash": "0x42ff6817a022620dabb8ffbee9caa1cbf280c17e648c716e5bf4071910a1a212", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722011932, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json deleted file mode 100644 index 26c2dc40..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012130.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x41859aaaf00e9645728ce285fdf71a3a5378331267a01ecffcab0d8a8e738c8a", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d1f9", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000002008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000800000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x950c6cd79b1d12ce2c83f5f1eac8a3f47ba1952bf96a0cfe931f46a80698d2f3", - "transactionIndex": "0x0", - "blockHash": "0x41859aaaf00e9645728ce285fdf71a3a5378331267a01ecffcab0d8a8e738c8a", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x5dcb8f26fe49de55affc2b410441c4cf0b3ee143318be721da7af603ebf043c5" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012130, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json deleted file mode 100644 index 8d4a4036..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012143.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x18", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xff8e44ff2adb8b27feedafd6d4e13158570e433d268b08d2a2d4d75d3a8c1576", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3d1fb", - "transactionHash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa16d8dd842ab16628682cd5c38368df81a58c6c44eda35fc14d430082935b7e8", - "transactionIndex": "0x0", - "blockHash": "0xff8e44ff2adb8b27feedafd6d4e13158570e433d268b08d2a2d4d75d3a8c1576", - "blockNumber": "0x1f", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x2525d2b65", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x4a67eaf3a3da4bb551cb6d8d41d61acd208e25e79346fe3094aa1464598d6166" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012143, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json deleted file mode 100644 index 3ff33b12..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012254.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa3a39b83186fd52659096d1c448e99aa6a381c8032cd110a1e3ab3e3dfd3829c", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d276", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xa3a39b83186fd52659096d1c448e99aa6a381c8032cd110a1e3ab3e3dfd3829c", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012254, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json deleted file mode 100644 index db6b0259..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012502.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xba439bb950790a45ed8409ec9b8126c589eb11628ef67abc2d3607500e0f18bf", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d36d", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xba439bb950790a45ed8409ec9b8126c589eb11628ef67abc2d3607500e0f18bf", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012502, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json deleted file mode 100644 index bf0f8b81..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012678.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x49ed70a39edeb730cbfcd48a46dd454d877e886d574ee772ccf8264833e257d3", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3d406", - "transactionHash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf9d1915986bc35220901d441e510f6f6a6499bc512b29672a854ab2e62dded43", - "transactionIndex": "0x0", - "blockHash": "0x49ed70a39edeb730cbfcd48a46dd454d877e886d574ee772ccf8264833e257d3", - "blockNumber": "0x1f", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x2525d2b65", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x3a1004c7be16c0285e9d221a11e27eb9d49ce785ce027cf57a7d61df13fa1a90" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012678, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json deleted file mode 100644 index 95a6745b..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012845.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa736a84852ad15a3032bc28430e8e4faa067c21132f9056bd8bdb6901c557bbb", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d4c6", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xa736a84852ad15a3032bc28430e8e4faa067c21132f9056bd8bdb6901c557bbb", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012845, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json deleted file mode 100644 index 38341453..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722012873.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xe819c6c15f5fc4dc4acb06784a2b543e1fe8c6e50c42e6cadfbf204ccdf0a4f6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3d4df", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xfd77e21cc4bda44e0cbc58207aee16b28ef8d44820bfd6b9edaf2088caacad04", - "transactionIndex": "0x0", - "blockHash": "0xe819c6c15f5fc4dc4acb06784a2b543e1fe8c6e50c42e6cadfbf204ccdf0a4f6", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722012873, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json deleted file mode 100644 index d12a55ed..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019487.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x998d715415cc8cd9c018e6406080fdf9a24b36d2312f9b1e72df218fcd8f3a42", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3eeb4", - "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionIndex": "0x0", - "blockHash": "0x998d715415cc8cd9c018e6406080fdf9a24b36d2312f9b1e72df218fcd8f3a42", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019487, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json deleted file mode 100644 index 48f2892b..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019521.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x9b6dc5bdb7aa71931830e7c53d6f8a58b82e2a4db0a89128eea87df17d0524aa", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3eed3", - "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x29384fffb237e4f6c3e31bc78c7e433ac9dd162a5b62f926979e898a309b83a3", - "transactionIndex": "0x0", - "blockHash": "0x9b6dc5bdb7aa71931830e7c53d6f8a58b82e2a4db0a89128eea87df17d0524aa", - "blockNumber": "0x1d", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xf02f2d3a7075a8479edd32e08f1b29239df63dfc18d99e009095bf981261a86e" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019521, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json b/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json deleted file mode 100644 index fc3b9149..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-1722019617.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", - "blockNumber": "0x21", - "blockTimestamp": "0x66a3ef27", - "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionIndex": "0x0", - "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", - "blockNumber": "0x21", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x25270b3c8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x082daded8e1e85c9233ba3ed91dbcf4c6a91af89151a498fce5e7d60f6229400" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019617, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json b/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json deleted file mode 100644 index fc3b9149..00000000 --- a/v2/broadcast/ZevmCall.s.sol/31337/run-latest.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "call(bytes,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0xc049", - "value": "0x0", - "input": "0x0ac7c44c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x1b", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x8b37", - "logs": [ - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", - "blockNumber": "0x21", - "blockTimestamp": "0x66a3ef27", - "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002002000020000000000000000000000000000000100000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7db546c0e9ad43ae1823addd6334733493b606386188d3710d858fecbaaa4138", - "transactionIndex": "0x0", - "blockHash": "0xc537bd6830eba3cfe84470cf7bdcd56adaf5ba044ea4f969901f8a470f9041d7", - "blockNumber": "0x21", - "gasUsed": "0x8b37", - "effectiveGasPrice": "0x25270b3c8", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x082daded8e1e85c9233ba3ed91dbcf4c6a91af89151a498fce5e7d60f6229400" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019617, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json deleted file mode 100644 index ba0a917c..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017717.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7b5", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0x91b94c847d7f56b42e82ebf39444f7bdc88d84188123694ae8c14384bb922578", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722017717, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json deleted file mode 100644 index 40f1ac66..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722017758.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3e7f4", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0xa2142608c88eb9a10cb91016de5f1308226335c6529c4b3dca22b49846d95fa6", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722017758, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json deleted file mode 100644 index 20e66c57..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019253.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3edcb", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0x0e6f6cd8ebfaef9722fa4a39020ae2541da5c7d7c1b7c4add5a4a1043cbb50b9", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019253, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json deleted file mode 100644 index 42190765..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019296.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ede7", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0xa049bed1709f7b0dd1dc09f968b3bd8d698822c3602e3c32633460e6b7abd702", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019296, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json deleted file mode 100644 index 2f23022c..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019382.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ee4b", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0x108f51c4e5f6bcf40bd7b14c90ada1b5a294974569ce2dd94c87de600aa1f3e2", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019382, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json deleted file mode 100644 index d87254ce..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019532.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3eed5", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x5b97fe982392247be8fc6ffa39863f3eae5cacad3f4fa6639861752af464843c", - "transactionIndex": "0x0", - "blockHash": "0x7c1505abe73d1763dbe5f9d27ea76e1ae0207f46e2e1f4a4ff8add2e84c63bf8", - "blockNumber": "0x1f", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x2525d2b65", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xbaa52ac0d568d2e13491e15edd24256f08bb598857c3ac15c42151c8ab6af664" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019532, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json deleted file mode 100644 index 70f0f26e..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019595.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x17", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "blockTimestamp": "0x66a3ef23", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b46f39121deefc254fe921f18ba01f8aa9050bfaecda0cb55edf43797701051", - "transactionIndex": "0x0", - "blockHash": "0xd3c99217c1cc9b39a72960b7001df867c7d79d0af02b796bc13920c1c1c04ac1", - "blockNumber": "0x1d", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x252530692", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0x51f3ccad2781afb4c25eeaeda3bb140dce5fe43434d82c93493b22f2b09d348a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019595, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json deleted file mode 100644 index 04ae5259..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-1722019611.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630ffffe", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x2525d559b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xdfc7350fb76ba13c3030a7fa53b249c55e065422c8fae1383895a3419d29368a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019611, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file diff --git a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json b/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json deleted file mode 100644 index 04ae5259..00000000 --- a/v2/broadcast/ZevmWithdrawAndCall.s.sol/31337/run-latest.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionType": "CALL", - "contractName": null, - "contractAddress": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "function": "withdrawAndCall(bytes,uint256,address,bytes)", - "arguments": [ - "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "1", - "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", - "0xe04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f210000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "gas": "0x1e98e", - "value": "0x0", - "input": "0x7993c1e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x19", - "chainId": "0x7a69" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x1626f", - "logs": [ - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000735b14bb79463307aacbed86daf3322b1e6226ab" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630fffff", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" - ], - "data": "0x0000000000000000000000000000000000000000000000056bc75e2d630ffffe", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x2ca7d64a7efe2d62a725e2b35cf7230d6677ffee", - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "topics": [ - "0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x0000000000000000000000002ca7d64a7efe2d62a725e2b35cf7230d6677ffee00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000140b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4e04d4f970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000648656c6c6f21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "blockTimestamp": "0x66a3ef25", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000010000000000000000000000000000000000000000000000000000000200000004100000400000000000000000080000000000000000000000000200000000000000000000000000008000000000000000000000000040001020000000000000000020000000000000100800800000000000000000040000010000000000000000000000010000000000000000000000000000000000000000000000000020000000000000000020000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000010000000000000000800000000001000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd0a1f8158c430d3e9440134cd7eefc5ca69cd9fc78571ba896d8bfd07ac9ae29", - "transactionIndex": "0x0", - "blockHash": "0x5f46e0a15906590da99bacbed86912fab91a89e1494c20565582165a1c7df5b2", - "blockNumber": "0x1f", - "gasUsed": "0x1626f", - "effectiveGasPrice": "0x2525d559b", - "blobGasPrice": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x610178da211fef7d417bc0e6fed39f05609ad788", - "contractAddress": null, - "root": "0xdfc7350fb76ba13c3030a7fa53b249c55e065422c8fae1383895a3419d29368a" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1722019611, - "chain": 31337, - "commit": "20f080c" -} \ No newline at end of file From 5231707ea704df357cd86da58fbea23706fe1521 Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 16:17:19 +0200 Subject: [PATCH 40/60] fix PR comments --- README.md | 4 ++-- v1/package.json | 1 - v1/yarn.lock | 7 ------- v2/README.md | 6 +++--- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 72fd47bd..f993d82e 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,5 @@ Contracts of official protocol contracts deployed by the core ZetaChain team. ## Packages -- [v1 legacy contracts](v1) -- [v2 new contracts (currently in development)](v2) \ No newline at end of file +* [v1 legacy contracts](v1) +* [v2 new contracts (currently in development)](v2) \ No newline at end of file diff --git a/v1/package.json b/v1/package.json index 28395579..f028cded 100644 --- a/v1/package.json +++ b/v1/package.json @@ -5,7 +5,6 @@ "@ethersproject/abi": "^5.4.7", "@ethersproject/providers": "^5.4.7", "@nomicfoundation/hardhat-chai-matchers": "^1.0.6", - "@nomicfoundation/hardhat-foundry": "^1.1.2", "@nomicfoundation/hardhat-network-helpers": "^1.0.0", "@nomicfoundation/hardhat-toolbox": "^2.0.0", "@nomicfoundation/hardhat-verify": "2.0.3", diff --git a/v1/yarn.lock b/v1/yarn.lock index c4ed4e16..2777ab0d 100644 --- a/v1/yarn.lock +++ b/v1/yarn.lock @@ -1359,13 +1359,6 @@ deep-eql "^4.0.1" ordinal "^1.0.3" -"@nomicfoundation/hardhat-foundry@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.2.tgz#4f5aaa1803b8f5d974dcbc361beb72d49c815562" - integrity sha512-f5Vhj3m2qvKGpr6NAINYwNgILDsai8dVCsFb1rAVLkJxOmD2pAtfCmOH5SBVr9yUI5B1z9rbTwPBJVrqnb+PXQ== - dependencies: - chalk "^2.4.2" - "@nomicfoundation/hardhat-network-helpers@^1.0.0": version "1.0.8" resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz" diff --git a/v2/README.md b/v2/README.md index cef47d16..d5f72b3d 100644 --- a/v2/README.md +++ b/v2/README.md @@ -2,7 +2,7 @@ We are currently developing Version 2 (V2) of our smart contract architecture. This new version will significantly enhance the developer experience for building Universal Apps. -Developers can already begin testing the new interface by referring to [the V2 Localnet guide](/v2_localnet.md). +Developers can already begin testing the new interface by referring to [the V2 Localnet guide](./scripts/localnet//v2_localnet.md). ### Build @@ -34,10 +34,10 @@ $ forge snapshot $ anvil ``` -### Deploy +### Deploy using script ```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +$ forge script script/.s.sol: --rpc-url --private-key ``` ### Cast From 640e67d6dc193fc0bfc66679a196d9601648c12f Mon Sep 17 00:00:00 2001 From: skosito Date: Tue, 30 Jul 2024 18:24:56 +0100 Subject: [PATCH 41/60] refactor: v2 bindings (#270) --- .github/workflows/generated-files_v2.yaml | 63 + v2/package.json | 6 +- v2/pkg/address.sol/address.go | 203 + v2/pkg/base.sol/commonbase.go | 181 + v2/pkg/base.sol/scriptbase.go | 181 + v2/pkg/base.sol/testbase.go | 181 + v2/pkg/beaconproxy.sol/beaconproxy.go | 368 + v2/pkg/console.sol/console.go | 203 + v2/pkg/console2.sol/console2.go | 181 + v2/pkg/context.sol/context.go | 181 + .../contextupgradeable.go | 315 + v2/pkg/core.sol/core.go | 203 + v2/pkg/defender.sol/defender.go | 203 + v2/pkg/defenderdeploy.sol/defenderdeploy.go | 203 + v2/pkg/erc1967proxy.sol/erc1967proxy.go | 368 + v2/pkg/erc1967utils.sol/erc1967utils.go | 626 + v2/pkg/erc20.sol/erc20.go | 738 + v2/pkg/erc20/ierc20.sol/ierc20.go | 645 + v2/pkg/erc20burnable.sol/erc20burnable.go | 780 ++ v2/pkg/erc20custodynew.sol/erc20custodynew.go | 792 ++ .../erc20custodynewechidnatest.go | 875 ++ v2/pkg/gatewayevm.sol/gatewayevm.go | 2078 +++ .../gatewayevm.t.sol/gatewayevminboundtest.go | 5357 ++++++++ v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 6052 +++++++++ .../gatewayevmechidnatest.go | 2161 +++ .../gatewayevmuupsupgradetest.go | 5335 ++++++++ .../gatewayevmupgradetest.go | 2224 ++++ .../gatewayevmzevmtest.go | 5548 ++++++++ v2/pkg/gatewayzevm.sol/gatewayzevm.go | 1435 ++ .../gatewayzevminboundtest.go | 4060 ++++++ .../gatewayzevmoutboundtest.go | 4567 +++++++ v2/pkg/ibeacon.sol/ibeacon.go | 212 + v2/pkg/ierc165.sol/ierc165.go | 212 + v2/pkg/ierc1967.sol/ierc1967.go | 604 + v2/pkg/ierc20.sol/ierc20.go | 738 + .../ierc20custodynewerrors.go | 181 + .../ierc20custodynewevents.go | 645 + v2/pkg/ierc20metadata.sol/ierc20metadata.go | 738 + v2/pkg/ierc20permit.sol/ierc20permit.go | 264 + v2/pkg/ierc721.sol/ierc721.go | 919 ++ v2/pkg/ierc721.sol/ierc721enumerable.go | 1012 ++ v2/pkg/ierc721.sol/ierc721metadata.go | 1012 ++ v2/pkg/ierc721.sol/ierc721tokenreceiver.go | 202 + v2/pkg/igatewayevm.sol/igatewayevm.go | 244 + v2/pkg/igatewayevm.sol/igatewayevmerrors.go | 181 + v2/pkg/igatewayevm.sol/igatewayevmevents.go | 1093 ++ v2/pkg/igatewayevm.sol/revertable.go | 202 + v2/pkg/igatewayzevm.sol/igatewayzevm.go | 314 + v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go | 181 + v2/pkg/igatewayzevm.sol/igatewayzevmevents.go | 477 + v2/pkg/imulticall3.sol/imulticall3.go | 644 + v2/pkg/initializable.sol/initializable.go | 315 + v2/pkg/iproxyadmin.sol/iproxyadmin.go | 223 + v2/pkg/ireceiverevm.sol/ireceiverevmevents.go | 862 ++ v2/pkg/isystem.sol/isystem.go | 367 + .../iupgradeablebeacon.go | 202 + .../iupgradeableproxy.go | 223 + v2/pkg/iwzeta.sol/iweth9.go | 977 ++ .../izetaconnectorevents.go | 618 + v2/pkg/izetanonethnew.sol/izetanonethnew.go | 687 + v2/pkg/izrc20.sol/izrc20.go | 463 + v2/pkg/izrc20.sol/izrc20metadata.go | 556 + v2/pkg/izrc20.sol/zrc20events.go | 1185 ++ v2/pkg/math.sol/math.go | 203 + v2/pkg/mockerc20.sol/mockerc20.go | 864 ++ v2/pkg/mockerc721.sol/mockerc721.go | 1055 ++ v2/pkg/options.sol/options.go | 181 + v2/pkg/ownable.sol/ownable.go | 407 + .../ownableupgradeable.go | 541 + v2/pkg/proxy.sol/proxy.go | 202 + v2/pkg/proxyadmin.sol/proxyadmin.go | 481 + v2/pkg/receiverevm.sol/receiverevm.go | 1052 ++ v2/pkg/reentrancyguard.sol/reentrancyguard.go | 181 + .../reentrancyguardupgradeable.go | 315 + v2/pkg/safeconsole.sol/safeconsole.go | 203 + v2/pkg/safeerc20.sol/safeerc20.go | 203 + v2/pkg/senderzevm.sol/senderzevm.go | 276 + v2/pkg/signedmath.sol/signedmath.go | 203 + v2/pkg/stdassertions.sol/stdassertions.go | 3173 +++++ v2/pkg/stdchains.sol/stdchains.go | 181 + v2/pkg/stdcheats.sol/stdcheats.go | 181 + v2/pkg/stdcheats.sol/stdcheatssafe.go | 181 + v2/pkg/stderror.sol/stderror.go | 482 + v2/pkg/stdinvariant.sol/stdinvariant.go | 509 + v2/pkg/stdjson.sol/stdjson.go | 203 + v2/pkg/stdmath.sol/stdmath.go | 203 + v2/pkg/stdstorage.sol/stdstorage.go | 203 + v2/pkg/stdstorage.sol/stdstoragesafe.go | 475 + v2/pkg/stdstyle.sol/stdstyle.go | 203 + v2/pkg/stdtoml.sol/stdtoml.go | 203 + v2/pkg/stdutils.sol/stdutils.go | 181 + v2/pkg/storageslot.sol/storageslot.go | 203 + v2/pkg/strings.sol/strings.go | 203 + v2/pkg/systemcontract.sol/systemcontract.go | 1421 ++ .../systemcontracterrors.go | 181 + .../systemcontracterrors.go | 181 + .../systemcontractmock.go | 1176 ++ v2/pkg/test.sol/test.go | 3532 +++++ v2/pkg/testerc20.sol/testerc20.go | 781 ++ v2/pkg/testzcontract.sol/testzcontract.go | 577 + .../itransparentupgradeableproxy.go | 625 + .../transparentupgradeableproxy.go | 503 + .../upgradeablebeacon.go | 625 + v2/pkg/upgrades.sol/unsafeupgrades.go | 203 + v2/pkg/upgrades.sol/upgrades.go | 203 + v2/pkg/utils.sol/utils.go | 203 + v2/pkg/utils/strings.sol/strings.go | 203 + v2/pkg/uupsupgradeable.sol/uupsupgradeable.go | 542 + v2/pkg/versions.sol/versions.go | 203 + v2/pkg/vm.sol/vm.go | 11096 ++++++++++++++++ v2/pkg/vm.sol/vmsafe.go | 9344 +++++++++++++ v2/pkg/wzeta.sol/weth9.go | 1113 ++ v2/pkg/zcontract.sol/universalcontract.go | 237 + v2/pkg/zcontract.sol/zcontract.go | 209 + v2/pkg/zeta.non-eth.sol/zetaerrors.go | 181 + v2/pkg/zeta.non-eth.sol/zetanoneth.go | 1664 +++ .../zeta.non-eth.sol/zetanonethinterface.go | 687 + .../zetaconnectornative.go | 817 ++ .../zetaconnectornativetest.go | 5773 ++++++++ .../zetaconnectornewbase.go | 795 ++ .../zetaconnectornonnative.go | 1003 ++ .../zetaconnectornonnativetest.go | 5605 ++++++++ v2/pkg/zrc20new.sol/zrc20errors.go | 181 + v2/pkg/zrc20new.sol/zrc20new.go | 1831 +++ v2/scripts/generate_go.sh | 83 + v2/scripts/localnet/EvmCall.s.sol | 4 +- v2/scripts/localnet/EvmDepositAndCall.s.sol | 4 +- v2/scripts/localnet/ZevmCall.s.sol | 4 +- v2/scripts/localnet/ZevmWithdrawAndCall.s.sol | 4 +- v2/src/evm/ERC20CustodyNew.sol | 2 +- v2/src/evm/GatewayEVM.sol | 2 +- v2/src/evm/ZetaConnectorNative.sol | 2 +- v2/src/evm/ZetaConnectorNewBase.sol | 2 +- v2/src/evm/ZetaConnectorNonNative.sol | 2 +- v2/src/evm/interfaces/IERC20CustodyNew.sol | 2 +- v2/src/evm/interfaces/IGatewayEVM.sol | 2 +- v2/src/evm/interfaces/IZetaConnector.sol | 2 +- v2/src/evm/interfaces/IZetaNonEthNew.sol | 2 +- v2/src/zevm/GatewayZEVM.sol | 2 +- v2/src/zevm/interfaces/IGatewayZEVM.sol | 2 +- v2/src/zevm/interfaces/ISystem.sol | 2 +- v2/src/zevm/interfaces/IWZETA.sol | 2 +- v2/src/zevm/interfaces/IZRC20.sol | 2 +- v2/src/zevm/interfaces/zContract.sol | 2 +- v2/test/GatewayEVM.t.sol | 2 +- v2/test/GatewayEVMUpgrade.t.sol | 2 +- v2/test/GatewayEVMZEVM.t.sol | 2 +- v2/test/GatewayZEVM.t.sol | 2 +- v2/test/ZetaConnectorNative.t.sol | 2 +- v2/test/ZetaConnectorNonNative.t.sol | 2 +- v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol | 2 +- v2/test/fuzz/GatewayEVMEchidnaTest.sol | 2 +- v2/test/utils/GatewayEVMUpgradeTest.sol | 2 +- v2/test/utils/IReceiverEVM.sol | 2 +- v2/test/utils/ReceiverEVM.sol | 2 +- v2/test/utils/SenderZEVM.sol | 2 +- v2/test/utils/SystemContract.sol | 2 +- v2/test/utils/SystemContractMock.sol | 2 +- v2/test/utils/TestERC20.sol | 2 +- v2/test/utils/TestZContract.sol | 2 +- v2/test/utils/WZETA.sol | 2 +- v2/test/utils/ZRC20New.sol | 2 +- v2/test/utils/Zeta.non-eth.sol | 2 +- v2/typechain-types/Address.ts | 69 + v2/typechain-types/BeaconProxy.ts | 105 + v2/typechain-types/ContextUpgradeable.ts | 105 + v2/typechain-types/ERC1967Proxy.ts | 105 + v2/typechain-types/ERC1967Utils.ts | 168 + v2/typechain-types/ERC20.ts | 286 + v2/typechain-types/ERC20/IERC20.ts | 262 + v2/typechain-types/ERC20/index.ts | 4 + v2/typechain-types/ERC20Burnable.ts | 313 + v2/typechain-types/ERC20CustodyNew.ts | 312 + .../ERC20CustodyNewEchidnaTest.ts | 356 + v2/typechain-types/GatewayEVM.ts | 829 ++ v2/typechain-types/GatewayEVMEchidnaTest.ts | 873 ++ v2/typechain-types/GatewayEVMUpgradeTest.ts | 866 ++ v2/typechain-types/GatewayZEVM.ts | 732 + v2/typechain-types/IBeacon.ts | 90 + v2/typechain-types/IERC165.ts | 94 + v2/typechain-types/IERC1967.ts | 168 + v2/typechain-types/IERC20.ts | 286 + .../IERC20CustodyNewErrors.ts | 69 + .../IERC20CustodyNewEvents.ts | 201 + .../IERC20CustodyNew.sol/index.ts | 5 + v2/typechain-types/IERC20Metadata.ts | 286 + v2/typechain-types/IERC20Permit.ts | 143 + v2/typechain-types/IERC721.sol/IERC721.ts | 397 + .../IERC721.sol/IERC721Enumerable.ts | 447 + .../IERC721.sol/IERC721Metadata.ts | 424 + .../IERC721.sol/IERC721TokenReceiver.ts | 110 + v2/typechain-types/IERC721.sol/index.ts | 7 + .../IGatewayEVM.sol/IGatewayEVM.ts | 161 + .../IGatewayEVM.sol/IGatewayEVMErrors.ts | 69 + .../IGatewayEVM.sol/IGatewayEVMEvents.ts | 325 + .../IGatewayEVM.sol/Revertable.ts | 84 + v2/typechain-types/IGatewayEVM.sol/index.ts | 7 + .../IGatewayZEVM.sol/IGatewayZEVM.ts | 247 + .../IGatewayZEVM.sol/IGatewayZEVMErrors.ts | 69 + .../IGatewayZEVM.sol/IGatewayZEVMEvents.ts | 165 + v2/typechain-types/IGatewayZEVM.sol/index.ts | 6 + v2/typechain-types/IMulticall3.ts | 416 + v2/typechain-types/IProxyAdmin.ts | 117 + .../IReceiverEVM.sol/IReceiverEVMEvents.ts | 277 + v2/typechain-types/IReceiverEVM.sol/index.ts | 4 + v2/typechain-types/ISystem.ts | 176 + v2/typechain-types/IUpgradeableBeacon.ts | 88 + v2/typechain-types/IUpgradeableProxy.ts | 111 + v2/typechain-types/IWZETA.sol/IWETH9.ts | 345 + v2/typechain-types/IWZETA.sol/index.ts | 4 + v2/typechain-types/IZRC20.sol/IZRC20.ts | 259 + .../IZRC20.sol/IZRC20Metadata.ts | 283 + v2/typechain-types/IZRC20.sol/ZRC20Events.ts | 330 + v2/typechain-types/IZRC20.sol/index.ts | 6 + .../IZetaConnectorEvents.ts | 182 + .../IZetaConnector.sol/index.ts | 4 + v2/typechain-types/IZetaNonEthNew.ts | 300 + v2/typechain-types/Initializable.ts | 105 + v2/typechain-types/Math.ts | 69 + v2/typechain-types/MockERC20.ts | 370 + v2/typechain-types/MockERC721.ts | 433 + v2/typechain-types/Ownable.ts | 153 + v2/typechain-types/OwnableUpgradeable.ts | 186 + v2/typechain-types/Proxy.ts | 69 + v2/typechain-types/ProxyAdmin.ts | 192 + v2/typechain-types/ReceiverEVM.ts | 396 + v2/typechain-types/ReentrancyGuard.ts | 69 + .../ReentrancyGuardUpgradeable.ts | 105 + v2/typechain-types/SafeERC20.ts | 69 + v2/typechain-types/SenderZEVM.ts | 151 + v2/typechain-types/StdAssertions.ts | 762 ++ v2/typechain-types/StdError.sol/StdError.ts | 199 + v2/typechain-types/StdError.sol/index.ts | 4 + v2/typechain-types/StdInvariant.ts | 273 + .../StdStorage.sol/StdStorageSafe.ts | 153 + v2/typechain-types/StdStorage.sol/index.ts | 4 + .../SystemContract.sol/SystemContract.ts | 569 + .../SystemContractErrors.ts | 69 + .../SystemContract.sol/index.ts | 5 + .../SystemContractErrors.ts | 69 + .../SystemContractMock.ts | 456 + .../SystemContractMock.sol/index.ts | 5 + v2/typechain-types/Test.ts | 966 ++ v2/typechain-types/TestERC20.ts | 305 + v2/typechain-types/TestZContract.ts | 263 + .../ITransparentUpgradeableProxy.ts | 197 + .../TransparentUpgradeableProxy.ts | 136 + .../TransparentUpgradeableProxy.sol/index.ts | 5 + v2/typechain-types/UUPSUpgradeable.ts | 196 + v2/typechain-types/UpgradeableBeacon.ts | 221 + v2/typechain-types/Vm.sol/Vm.ts | 8230 ++++++++++++ v2/typechain-types/Vm.sol/VmSafe.ts | 6635 +++++++++ v2/typechain-types/Vm.sol/index.ts | 5 + v2/typechain-types/WZETA.sol/WETH9.ts | 369 + v2/typechain-types/WZETA.sol/index.ts | 4 + .../ZRC20New.sol/ZRC20Errors.ts | 69 + v2/typechain-types/ZRC20New.sol/ZRC20New.ts | 661 + v2/typechain-types/ZRC20New.sol/index.ts | 5 + .../Zeta.non-eth.sol/ZetaErrors.ts | 69 + .../Zeta.non-eth.sol/ZetaNonEth.ts | 595 + .../Zeta.non-eth.sol/ZetaNonEthInterface.ts | 300 + v2/typechain-types/Zeta.non-eth.sol/index.ts | 6 + v2/typechain-types/ZetaConnectorNative.ts | 319 + v2/typechain-types/ZetaConnectorNewBase.ts | 319 + v2/typechain-types/ZetaConnectorNonNative.ts | 379 + v2/typechain-types/common.ts | 131 + .../draft-IERC1822.sol/IERC1822Proxiable.ts | 90 + .../draft-IERC1822.sol/index.ts | 4 + .../draft-IERC6093.sol/IERC1155Errors.ts | 69 + .../draft-IERC6093.sol/IERC20Errors.ts | 69 + .../draft-IERC6093.sol/IERC721Errors.ts | 69 + .../draft-IERC6093.sol/index.ts | 6 + .../factories/Address__factory.ts | 88 + .../factories/BeaconProxy__factory.ts | 149 + .../factories/ContextUpgradeable__factory.ts | 48 + .../factories/ERC1967Proxy__factory.ts | 141 + .../factories/ERC1967Utils__factory.ts | 147 + .../factories/ERC20/IERC20__factory.ts | 202 + v2/typechain-types/factories/ERC20/index.ts | 4 + .../factories/ERC20Burnable__factory.ts | 361 + .../ERC20CustodyNewEchidnaTest__factory.ts | 372 + .../factories/ERC20CustodyNew__factory.ts | 339 + .../factories/ERC20__factory.ts | 327 + .../GatewayEVMEchidnaTest__factory.ts | 864 ++ .../GatewayEVMUpgradeTest__factory.ts | 840 ++ .../factories/GatewayEVM__factory.ts | 803 ++ .../factories/GatewayZEVM__factory.ts | 808 ++ .../factories/IBeacon__factory.ts | 32 + .../factories/IERC165__factory.ts | 38 + .../factories/IERC1967__factory.ts | 64 + .../IERC20CustodyNewErrors__factory.ts | 39 + .../IERC20CustodyNewEvents__factory.ts | 116 + .../factories/IERC20CustodyNew.sol/index.ts | 5 + .../factories/IERC20Metadata__factory.ts | 247 + .../factories/IERC20Permit__factory.ts | 97 + .../factories/IERC20__factory.ts | 241 + .../IERC721.sol/IERC721Enumerable__factory.ts | 366 + .../IERC721.sol/IERC721Metadata__factory.ts | 355 + .../IERC721TokenReceiver__factory.ts | 63 + .../factories/IERC721.sol/IERC721__factory.ts | 304 + .../factories/IERC721.sol/index.ts | 7 + .../IGatewayEVMErrors__factory.ts | 65 + .../IGatewayEVMEvents__factory.ts | 199 + .../IGatewayEVM.sol/IGatewayEVM__factory.ts | 102 + .../IGatewayEVM.sol/Revertable__factory.ts | 35 + .../factories/IGatewayEVM.sol/index.ts | 7 + .../IGatewayZEVMErrors__factory.ts | 70 + .../IGatewayZEVMEvents__factory.ts | 99 + .../IGatewayZEVM.sol/IGatewayZEVM__factory.ts | 217 + .../factories/IGatewayZEVM.sol/index.ts | 6 + .../factories/IMulticall3__factory.ts | 457 + .../factories/IProxyAdmin__factory.ts | 60 + .../IReceiverEVMEvents__factory.ts | 156 + .../factories/IReceiverEVM.sol/index.ts | 4 + .../factories/ISystem__factory.ts | 115 + .../factories/IUpgradeableBeacon__factory.ts | 38 + .../factories/IUpgradeableProxy__factory.ts | 56 + .../factories/IWZETA.sol/IWETH9__factory.ts | 260 + .../factories/IWZETA.sol/index.ts | 4 + .../IZRC20.sol/IZRC20Metadata__factory.ts | 295 + .../factories/IZRC20.sol/IZRC20__factory.ts | 250 + .../IZRC20.sol/ZRC20Events__factory.ts | 173 + .../factories/IZRC20.sol/index.ts | 6 + .../IZetaConnectorEvents__factory.ts | 98 + .../factories/IZetaConnector.sol/index.ts | 4 + .../factories/IZetaNonEthNew__factory.ts | 249 + .../factories/Initializable__factory.ts | 45 + v2/typechain-types/factories/Math__factory.ts | 66 + .../factories/MockERC20__factory.ts | 381 + .../factories/MockERC721__factory.ts | 409 + .../factories/OwnableUpgradeable__factory.ts | 122 + .../factories/Ownable__factory.ts | 93 + .../factories/ProxyAdmin__factory.ts | 191 + .../factories/Proxy__factory.ts | 23 + .../factories/ReceiverEVM__factory.ts | 360 + .../ReentrancyGuardUpgradeable__factory.ts | 57 + .../factories/ReentrancyGuard__factory.ts | 30 + .../factories/SafeERC20__factory.ts | 93 + .../factories/SenderZEVM__factory.ts | 165 + .../factories/StdAssertions__factory.ts | 399 + .../StdError.sol/StdError__factory.ts | 178 + .../factories/StdError.sol/index.ts | 4 + .../factories/StdInvariant__factory.ts | 200 + .../StdStorage.sol/StdStorageSafe__factory.ts | 117 + .../factories/StdStorage.sol/index.ts | 4 + .../SystemContractErrors__factory.ts | 54 + .../SystemContract__factory.ts | 506 + .../factories/SystemContract.sol/index.ts | 5 + .../SystemContractErrors__factory.ts | 49 + .../SystemContractMock__factory.ts | 409 + .../factories/SystemContractMock.sol/index.ts | 5 + .../factories/TestERC20__factory.ts | 409 + .../factories/TestZContract__factory.ts | 236 + v2/typechain-types/factories/Test__factory.ts | 587 + .../ITransparentUpgradeableProxy__factory.ts | 92 + .../TransparentUpgradeableProxy__factory.ts | 202 + .../TransparentUpgradeableProxy.sol/index.ts | 5 + .../factories/UUPSUpgradeable__factory.ts | 153 + .../factories/UpgradeableBeacon__factory.ts | 226 + .../factories/Vm.sol/VmSafe__factory.ts | 7526 +++++++++++ .../factories/Vm.sol/Vm__factory.ts | 8965 +++++++++++++ v2/typechain-types/factories/Vm.sol/index.ts | 5 + .../factories/WZETA.sol/WETH9__factory.ts | 345 + .../factories/WZETA.sol/index.ts | 4 + .../ZRC20New.sol/ZRC20Errors__factory.ts | 62 + .../ZRC20New.sol/ZRC20New__factory.ts | 729 + .../factories/ZRC20New.sol/index.ts | 5 + .../Zeta.non-eth.sol/ZetaErrors__factory.ts | 76 + .../ZetaNonEthInterface__factory.ts | 253 + .../Zeta.non-eth.sol/ZetaNonEth__factory.ts | 680 + .../factories/Zeta.non-eth.sol/index.ts | 6 + .../factories/ZetaConnectorNative__factory.ts | 370 + .../ZetaConnectorNewBase__factory.ts | 244 + .../ZetaConnectorNonNative__factory.ts | 376 + .../IERC1822Proxiable__factory.ts | 38 + .../factories/draft-IERC1822.sol/index.ts | 4 + .../IERC1155Errors__factory.ts | 127 + .../IERC20Errors__factory.ts | 111 + .../IERC721Errors__factory.ts | 128 + .../factories/draft-IERC6093.sol/index.ts | 6 + v2/typechain-types/factories/index.ts | 73 + .../interfaces/IWZeta.sol/IWETH9__factory.ts | 263 + .../factories/interfaces/IWZeta.sol/index.ts | 4 + .../factories/interfaces/index.ts | 4 + .../factories/utils/Strings__factory.ts | 77 + v2/typechain-types/factories/utils/index.ts | 4 + .../UniversalContract__factory.ts | 115 + .../zContract.sol/ZContract__factory.ts | 67 + .../factories/zContract.sol/index.ts | 5 + v2/typechain-types/index.ts | 227 + .../interfaces/IWZeta.sol/IWETH9.ts | 345 + .../interfaces/IWZeta.sol/index.ts | 4 + v2/typechain-types/interfaces/index.ts | 5 + v2/typechain-types/utils/Strings.ts | 69 + v2/typechain-types/utils/index.ts | 4 + .../zContract.sol/UniversalContract.ts | 164 + v2/typechain-types/zContract.sol/ZContract.ts | 122 + v2/typechain-types/zContract.sol/index.ts | 5 + v2/yarn.lock | 233 +- 399 files changed, 204024 insertions(+), 46 deletions(-) create mode 100644 .github/workflows/generated-files_v2.yaml create mode 100644 v2/pkg/address.sol/address.go create mode 100644 v2/pkg/base.sol/commonbase.go create mode 100644 v2/pkg/base.sol/scriptbase.go create mode 100644 v2/pkg/base.sol/testbase.go create mode 100644 v2/pkg/beaconproxy.sol/beaconproxy.go create mode 100644 v2/pkg/console.sol/console.go create mode 100644 v2/pkg/console2.sol/console2.go create mode 100644 v2/pkg/context.sol/context.go create mode 100644 v2/pkg/contextupgradeable.sol/contextupgradeable.go create mode 100644 v2/pkg/core.sol/core.go create mode 100644 v2/pkg/defender.sol/defender.go create mode 100644 v2/pkg/defenderdeploy.sol/defenderdeploy.go create mode 100644 v2/pkg/erc1967proxy.sol/erc1967proxy.go create mode 100644 v2/pkg/erc1967utils.sol/erc1967utils.go create mode 100644 v2/pkg/erc20.sol/erc20.go create mode 100644 v2/pkg/erc20/ierc20.sol/ierc20.go create mode 100644 v2/pkg/erc20burnable.sol/erc20burnable.go create mode 100644 v2/pkg/erc20custodynew.sol/erc20custodynew.go create mode 100644 v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go create mode 100644 v2/pkg/gatewayevm.sol/gatewayevm.go create mode 100644 v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go create mode 100644 v2/pkg/gatewayevm.t.sol/gatewayevmtest.go create mode 100644 v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go create mode 100644 v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go create mode 100644 v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go create mode 100644 v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go create mode 100644 v2/pkg/gatewayzevm.sol/gatewayzevm.go create mode 100644 v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go create mode 100644 v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go create mode 100644 v2/pkg/ibeacon.sol/ibeacon.go create mode 100644 v2/pkg/ierc165.sol/ierc165.go create mode 100644 v2/pkg/ierc1967.sol/ierc1967.go create mode 100644 v2/pkg/ierc20.sol/ierc20.go create mode 100644 v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go create mode 100644 v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go create mode 100644 v2/pkg/ierc20metadata.sol/ierc20metadata.go create mode 100644 v2/pkg/ierc20permit.sol/ierc20permit.go create mode 100644 v2/pkg/ierc721.sol/ierc721.go create mode 100644 v2/pkg/ierc721.sol/ierc721enumerable.go create mode 100644 v2/pkg/ierc721.sol/ierc721metadata.go create mode 100644 v2/pkg/ierc721.sol/ierc721tokenreceiver.go create mode 100644 v2/pkg/igatewayevm.sol/igatewayevm.go create mode 100644 v2/pkg/igatewayevm.sol/igatewayevmerrors.go create mode 100644 v2/pkg/igatewayevm.sol/igatewayevmevents.go create mode 100644 v2/pkg/igatewayevm.sol/revertable.go create mode 100644 v2/pkg/igatewayzevm.sol/igatewayzevm.go create mode 100644 v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go create mode 100644 v2/pkg/igatewayzevm.sol/igatewayzevmevents.go create mode 100644 v2/pkg/imulticall3.sol/imulticall3.go create mode 100644 v2/pkg/initializable.sol/initializable.go create mode 100644 v2/pkg/iproxyadmin.sol/iproxyadmin.go create mode 100644 v2/pkg/ireceiverevm.sol/ireceiverevmevents.go create mode 100644 v2/pkg/isystem.sol/isystem.go create mode 100644 v2/pkg/iupgradeablebeacon.sol/iupgradeablebeacon.go create mode 100644 v2/pkg/iupgradeableproxy.sol/iupgradeableproxy.go create mode 100644 v2/pkg/iwzeta.sol/iweth9.go create mode 100644 v2/pkg/izetaconnector.sol/izetaconnectorevents.go create mode 100644 v2/pkg/izetanonethnew.sol/izetanonethnew.go create mode 100644 v2/pkg/izrc20.sol/izrc20.go create mode 100644 v2/pkg/izrc20.sol/izrc20metadata.go create mode 100644 v2/pkg/izrc20.sol/zrc20events.go create mode 100644 v2/pkg/math.sol/math.go create mode 100644 v2/pkg/mockerc20.sol/mockerc20.go create mode 100644 v2/pkg/mockerc721.sol/mockerc721.go create mode 100644 v2/pkg/options.sol/options.go create mode 100644 v2/pkg/ownable.sol/ownable.go create mode 100644 v2/pkg/ownableupgradeable.sol/ownableupgradeable.go create mode 100644 v2/pkg/proxy.sol/proxy.go create mode 100644 v2/pkg/proxyadmin.sol/proxyadmin.go create mode 100644 v2/pkg/receiverevm.sol/receiverevm.go create mode 100644 v2/pkg/reentrancyguard.sol/reentrancyguard.go create mode 100644 v2/pkg/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go create mode 100644 v2/pkg/safeconsole.sol/safeconsole.go create mode 100644 v2/pkg/safeerc20.sol/safeerc20.go create mode 100644 v2/pkg/senderzevm.sol/senderzevm.go create mode 100644 v2/pkg/signedmath.sol/signedmath.go create mode 100644 v2/pkg/stdassertions.sol/stdassertions.go create mode 100644 v2/pkg/stdchains.sol/stdchains.go create mode 100644 v2/pkg/stdcheats.sol/stdcheats.go create mode 100644 v2/pkg/stdcheats.sol/stdcheatssafe.go create mode 100644 v2/pkg/stderror.sol/stderror.go create mode 100644 v2/pkg/stdinvariant.sol/stdinvariant.go create mode 100644 v2/pkg/stdjson.sol/stdjson.go create mode 100644 v2/pkg/stdmath.sol/stdmath.go create mode 100644 v2/pkg/stdstorage.sol/stdstorage.go create mode 100644 v2/pkg/stdstorage.sol/stdstoragesafe.go create mode 100644 v2/pkg/stdstyle.sol/stdstyle.go create mode 100644 v2/pkg/stdtoml.sol/stdtoml.go create mode 100644 v2/pkg/stdutils.sol/stdutils.go create mode 100644 v2/pkg/storageslot.sol/storageslot.go create mode 100644 v2/pkg/strings.sol/strings.go create mode 100644 v2/pkg/systemcontract.sol/systemcontract.go create mode 100644 v2/pkg/systemcontract.sol/systemcontracterrors.go create mode 100644 v2/pkg/systemcontractmock.sol/systemcontracterrors.go create mode 100644 v2/pkg/systemcontractmock.sol/systemcontractmock.go create mode 100644 v2/pkg/test.sol/test.go create mode 100644 v2/pkg/testerc20.sol/testerc20.go create mode 100644 v2/pkg/testzcontract.sol/testzcontract.go create mode 100644 v2/pkg/transparentupgradeableproxy.sol/itransparentupgradeableproxy.go create mode 100644 v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go create mode 100644 v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go create mode 100644 v2/pkg/upgrades.sol/unsafeupgrades.go create mode 100644 v2/pkg/upgrades.sol/upgrades.go create mode 100644 v2/pkg/utils.sol/utils.go create mode 100644 v2/pkg/utils/strings.sol/strings.go create mode 100644 v2/pkg/uupsupgradeable.sol/uupsupgradeable.go create mode 100644 v2/pkg/versions.sol/versions.go create mode 100644 v2/pkg/vm.sol/vm.go create mode 100644 v2/pkg/vm.sol/vmsafe.go create mode 100644 v2/pkg/wzeta.sol/weth9.go create mode 100644 v2/pkg/zcontract.sol/universalcontract.go create mode 100644 v2/pkg/zcontract.sol/zcontract.go create mode 100644 v2/pkg/zeta.non-eth.sol/zetaerrors.go create mode 100644 v2/pkg/zeta.non-eth.sol/zetanoneth.go create mode 100644 v2/pkg/zeta.non-eth.sol/zetanonethinterface.go create mode 100644 v2/pkg/zetaconnectornative.sol/zetaconnectornative.go create mode 100644 v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go create mode 100644 v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go create mode 100644 v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go create mode 100644 v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go create mode 100644 v2/pkg/zrc20new.sol/zrc20errors.go create mode 100644 v2/pkg/zrc20new.sol/zrc20new.go create mode 100755 v2/scripts/generate_go.sh create mode 100644 v2/typechain-types/Address.ts create mode 100644 v2/typechain-types/BeaconProxy.ts create mode 100644 v2/typechain-types/ContextUpgradeable.ts create mode 100644 v2/typechain-types/ERC1967Proxy.ts create mode 100644 v2/typechain-types/ERC1967Utils.ts create mode 100644 v2/typechain-types/ERC20.ts create mode 100644 v2/typechain-types/ERC20/IERC20.ts create mode 100644 v2/typechain-types/ERC20/index.ts create mode 100644 v2/typechain-types/ERC20Burnable.ts create mode 100644 v2/typechain-types/ERC20CustodyNew.ts create mode 100644 v2/typechain-types/ERC20CustodyNewEchidnaTest.ts create mode 100644 v2/typechain-types/GatewayEVM.ts create mode 100644 v2/typechain-types/GatewayEVMEchidnaTest.ts create mode 100644 v2/typechain-types/GatewayEVMUpgradeTest.ts create mode 100644 v2/typechain-types/GatewayZEVM.ts create mode 100644 v2/typechain-types/IBeacon.ts create mode 100644 v2/typechain-types/IERC165.ts create mode 100644 v2/typechain-types/IERC1967.ts create mode 100644 v2/typechain-types/IERC20.ts create mode 100644 v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts create mode 100644 v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts create mode 100644 v2/typechain-types/IERC20CustodyNew.sol/index.ts create mode 100644 v2/typechain-types/IERC20Metadata.ts create mode 100644 v2/typechain-types/IERC20Permit.ts create mode 100644 v2/typechain-types/IERC721.sol/IERC721.ts create mode 100644 v2/typechain-types/IERC721.sol/IERC721Enumerable.ts create mode 100644 v2/typechain-types/IERC721.sol/IERC721Metadata.ts create mode 100644 v2/typechain-types/IERC721.sol/IERC721TokenReceiver.ts create mode 100644 v2/typechain-types/IERC721.sol/index.ts create mode 100644 v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts create mode 100644 v2/typechain-types/IGatewayEVM.sol/IGatewayEVMErrors.ts create mode 100644 v2/typechain-types/IGatewayEVM.sol/IGatewayEVMEvents.ts create mode 100644 v2/typechain-types/IGatewayEVM.sol/Revertable.ts create mode 100644 v2/typechain-types/IGatewayEVM.sol/index.ts create mode 100644 v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts create mode 100644 v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMErrors.ts create mode 100644 v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts create mode 100644 v2/typechain-types/IGatewayZEVM.sol/index.ts create mode 100644 v2/typechain-types/IMulticall3.ts create mode 100644 v2/typechain-types/IProxyAdmin.ts create mode 100644 v2/typechain-types/IReceiverEVM.sol/IReceiverEVMEvents.ts create mode 100644 v2/typechain-types/IReceiverEVM.sol/index.ts create mode 100644 v2/typechain-types/ISystem.ts create mode 100644 v2/typechain-types/IUpgradeableBeacon.ts create mode 100644 v2/typechain-types/IUpgradeableProxy.ts create mode 100644 v2/typechain-types/IWZETA.sol/IWETH9.ts create mode 100644 v2/typechain-types/IWZETA.sol/index.ts create mode 100644 v2/typechain-types/IZRC20.sol/IZRC20.ts create mode 100644 v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts create mode 100644 v2/typechain-types/IZRC20.sol/ZRC20Events.ts create mode 100644 v2/typechain-types/IZRC20.sol/index.ts create mode 100644 v2/typechain-types/IZetaConnector.sol/IZetaConnectorEvents.ts create mode 100644 v2/typechain-types/IZetaConnector.sol/index.ts create mode 100644 v2/typechain-types/IZetaNonEthNew.ts create mode 100644 v2/typechain-types/Initializable.ts create mode 100644 v2/typechain-types/Math.ts create mode 100644 v2/typechain-types/MockERC20.ts create mode 100644 v2/typechain-types/MockERC721.ts create mode 100644 v2/typechain-types/Ownable.ts create mode 100644 v2/typechain-types/OwnableUpgradeable.ts create mode 100644 v2/typechain-types/Proxy.ts create mode 100644 v2/typechain-types/ProxyAdmin.ts create mode 100644 v2/typechain-types/ReceiverEVM.ts create mode 100644 v2/typechain-types/ReentrancyGuard.ts create mode 100644 v2/typechain-types/ReentrancyGuardUpgradeable.ts create mode 100644 v2/typechain-types/SafeERC20.ts create mode 100644 v2/typechain-types/SenderZEVM.ts create mode 100644 v2/typechain-types/StdAssertions.ts create mode 100644 v2/typechain-types/StdError.sol/StdError.ts create mode 100644 v2/typechain-types/StdError.sol/index.ts create mode 100644 v2/typechain-types/StdInvariant.ts create mode 100644 v2/typechain-types/StdStorage.sol/StdStorageSafe.ts create mode 100644 v2/typechain-types/StdStorage.sol/index.ts create mode 100644 v2/typechain-types/SystemContract.sol/SystemContract.ts create mode 100644 v2/typechain-types/SystemContract.sol/SystemContractErrors.ts create mode 100644 v2/typechain-types/SystemContract.sol/index.ts create mode 100644 v2/typechain-types/SystemContractMock.sol/SystemContractErrors.ts create mode 100644 v2/typechain-types/SystemContractMock.sol/SystemContractMock.ts create mode 100644 v2/typechain-types/SystemContractMock.sol/index.ts create mode 100644 v2/typechain-types/Test.ts create mode 100644 v2/typechain-types/TestERC20.ts create mode 100644 v2/typechain-types/TestZContract.ts create mode 100644 v2/typechain-types/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.ts create mode 100644 v2/typechain-types/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.ts create mode 100644 v2/typechain-types/TransparentUpgradeableProxy.sol/index.ts create mode 100644 v2/typechain-types/UUPSUpgradeable.ts create mode 100644 v2/typechain-types/UpgradeableBeacon.ts create mode 100644 v2/typechain-types/Vm.sol/Vm.ts create mode 100644 v2/typechain-types/Vm.sol/VmSafe.ts create mode 100644 v2/typechain-types/Vm.sol/index.ts create mode 100644 v2/typechain-types/WZETA.sol/WETH9.ts create mode 100644 v2/typechain-types/WZETA.sol/index.ts create mode 100644 v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts create mode 100644 v2/typechain-types/ZRC20New.sol/ZRC20New.ts create mode 100644 v2/typechain-types/ZRC20New.sol/index.ts create mode 100644 v2/typechain-types/Zeta.non-eth.sol/ZetaErrors.ts create mode 100644 v2/typechain-types/Zeta.non-eth.sol/ZetaNonEth.ts create mode 100644 v2/typechain-types/Zeta.non-eth.sol/ZetaNonEthInterface.ts create mode 100644 v2/typechain-types/Zeta.non-eth.sol/index.ts create mode 100644 v2/typechain-types/ZetaConnectorNative.ts create mode 100644 v2/typechain-types/ZetaConnectorNewBase.ts create mode 100644 v2/typechain-types/ZetaConnectorNonNative.ts create mode 100644 v2/typechain-types/common.ts create mode 100644 v2/typechain-types/draft-IERC1822.sol/IERC1822Proxiable.ts create mode 100644 v2/typechain-types/draft-IERC1822.sol/index.ts create mode 100644 v2/typechain-types/draft-IERC6093.sol/IERC1155Errors.ts create mode 100644 v2/typechain-types/draft-IERC6093.sol/IERC20Errors.ts create mode 100644 v2/typechain-types/draft-IERC6093.sol/IERC721Errors.ts create mode 100644 v2/typechain-types/draft-IERC6093.sol/index.ts create mode 100644 v2/typechain-types/factories/Address__factory.ts create mode 100644 v2/typechain-types/factories/BeaconProxy__factory.ts create mode 100644 v2/typechain-types/factories/ContextUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/ERC1967Proxy__factory.ts create mode 100644 v2/typechain-types/factories/ERC1967Utils__factory.ts create mode 100644 v2/typechain-types/factories/ERC20/IERC20__factory.ts create mode 100644 v2/typechain-types/factories/ERC20/index.ts create mode 100644 v2/typechain-types/factories/ERC20Burnable__factory.ts create mode 100644 v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts create mode 100644 v2/typechain-types/factories/ERC20CustodyNew__factory.ts create mode 100644 v2/typechain-types/factories/ERC20__factory.ts create mode 100644 v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts create mode 100644 v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts create mode 100644 v2/typechain-types/factories/GatewayEVM__factory.ts create mode 100644 v2/typechain-types/factories/GatewayZEVM__factory.ts create mode 100644 v2/typechain-types/factories/IBeacon__factory.ts create mode 100644 v2/typechain-types/factories/IERC165__factory.ts create mode 100644 v2/typechain-types/factories/IERC1967__factory.ts create mode 100644 v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts create mode 100644 v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts create mode 100644 v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts create mode 100644 v2/typechain-types/factories/IERC20Metadata__factory.ts create mode 100644 v2/typechain-types/factories/IERC20Permit__factory.ts create mode 100644 v2/typechain-types/factories/IERC20__factory.ts create mode 100644 v2/typechain-types/factories/IERC721.sol/IERC721Enumerable__factory.ts create mode 100644 v2/typechain-types/factories/IERC721.sol/IERC721Metadata__factory.ts create mode 100644 v2/typechain-types/factories/IERC721.sol/IERC721TokenReceiver__factory.ts create mode 100644 v2/typechain-types/factories/IERC721.sol/IERC721__factory.ts create mode 100644 v2/typechain-types/factories/IERC721.sol/index.ts create mode 100644 v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayEVM.sol/Revertable__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayEVM.sol/index.ts create mode 100644 v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts create mode 100644 v2/typechain-types/factories/IGatewayZEVM.sol/index.ts create mode 100644 v2/typechain-types/factories/IMulticall3__factory.ts create mode 100644 v2/typechain-types/factories/IProxyAdmin__factory.ts create mode 100644 v2/typechain-types/factories/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts create mode 100644 v2/typechain-types/factories/IReceiverEVM.sol/index.ts create mode 100644 v2/typechain-types/factories/ISystem__factory.ts create mode 100644 v2/typechain-types/factories/IUpgradeableBeacon__factory.ts create mode 100644 v2/typechain-types/factories/IUpgradeableProxy__factory.ts create mode 100644 v2/typechain-types/factories/IWZETA.sol/IWETH9__factory.ts create mode 100644 v2/typechain-types/factories/IWZETA.sol/index.ts create mode 100644 v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts create mode 100644 v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts create mode 100644 v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts create mode 100644 v2/typechain-types/factories/IZRC20.sol/index.ts create mode 100644 v2/typechain-types/factories/IZetaConnector.sol/IZetaConnectorEvents__factory.ts create mode 100644 v2/typechain-types/factories/IZetaConnector.sol/index.ts create mode 100644 v2/typechain-types/factories/IZetaNonEthNew__factory.ts create mode 100644 v2/typechain-types/factories/Initializable__factory.ts create mode 100644 v2/typechain-types/factories/Math__factory.ts create mode 100644 v2/typechain-types/factories/MockERC20__factory.ts create mode 100644 v2/typechain-types/factories/MockERC721__factory.ts create mode 100644 v2/typechain-types/factories/OwnableUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/Ownable__factory.ts create mode 100644 v2/typechain-types/factories/ProxyAdmin__factory.ts create mode 100644 v2/typechain-types/factories/Proxy__factory.ts create mode 100644 v2/typechain-types/factories/ReceiverEVM__factory.ts create mode 100644 v2/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/ReentrancyGuard__factory.ts create mode 100644 v2/typechain-types/factories/SafeERC20__factory.ts create mode 100644 v2/typechain-types/factories/SenderZEVM__factory.ts create mode 100644 v2/typechain-types/factories/StdAssertions__factory.ts create mode 100644 v2/typechain-types/factories/StdError.sol/StdError__factory.ts create mode 100644 v2/typechain-types/factories/StdError.sol/index.ts create mode 100644 v2/typechain-types/factories/StdInvariant__factory.ts create mode 100644 v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts create mode 100644 v2/typechain-types/factories/StdStorage.sol/index.ts create mode 100644 v2/typechain-types/factories/SystemContract.sol/SystemContractErrors__factory.ts create mode 100644 v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts create mode 100644 v2/typechain-types/factories/SystemContract.sol/index.ts create mode 100644 v2/typechain-types/factories/SystemContractMock.sol/SystemContractErrors__factory.ts create mode 100644 v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts create mode 100644 v2/typechain-types/factories/SystemContractMock.sol/index.ts create mode 100644 v2/typechain-types/factories/TestERC20__factory.ts create mode 100644 v2/typechain-types/factories/TestZContract__factory.ts create mode 100644 v2/typechain-types/factories/Test__factory.ts create mode 100644 v2/typechain-types/factories/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.ts create mode 100644 v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts create mode 100644 v2/typechain-types/factories/TransparentUpgradeableProxy.sol/index.ts create mode 100644 v2/typechain-types/factories/UUPSUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/UpgradeableBeacon__factory.ts create mode 100644 v2/typechain-types/factories/Vm.sol/VmSafe__factory.ts create mode 100644 v2/typechain-types/factories/Vm.sol/Vm__factory.ts create mode 100644 v2/typechain-types/factories/Vm.sol/index.ts create mode 100644 v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts create mode 100644 v2/typechain-types/factories/WZETA.sol/index.ts create mode 100644 v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts create mode 100644 v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts create mode 100644 v2/typechain-types/factories/ZRC20New.sol/index.ts create mode 100644 v2/typechain-types/factories/Zeta.non-eth.sol/ZetaErrors__factory.ts create mode 100644 v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory.ts create mode 100644 v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts create mode 100644 v2/typechain-types/factories/Zeta.non-eth.sol/index.ts create mode 100644 v2/typechain-types/factories/ZetaConnectorNative__factory.ts create mode 100644 v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts create mode 100644 v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts create mode 100644 v2/typechain-types/factories/draft-IERC1822.sol/IERC1822Proxiable__factory.ts create mode 100644 v2/typechain-types/factories/draft-IERC1822.sol/index.ts create mode 100644 v2/typechain-types/factories/draft-IERC6093.sol/IERC1155Errors__factory.ts create mode 100644 v2/typechain-types/factories/draft-IERC6093.sol/IERC20Errors__factory.ts create mode 100644 v2/typechain-types/factories/draft-IERC6093.sol/IERC721Errors__factory.ts create mode 100644 v2/typechain-types/factories/draft-IERC6093.sol/index.ts create mode 100644 v2/typechain-types/factories/index.ts create mode 100644 v2/typechain-types/factories/interfaces/IWZeta.sol/IWETH9__factory.ts create mode 100644 v2/typechain-types/factories/interfaces/IWZeta.sol/index.ts create mode 100644 v2/typechain-types/factories/interfaces/index.ts create mode 100644 v2/typechain-types/factories/utils/Strings__factory.ts create mode 100644 v2/typechain-types/factories/utils/index.ts create mode 100644 v2/typechain-types/factories/zContract.sol/UniversalContract__factory.ts create mode 100644 v2/typechain-types/factories/zContract.sol/ZContract__factory.ts create mode 100644 v2/typechain-types/factories/zContract.sol/index.ts create mode 100644 v2/typechain-types/index.ts create mode 100644 v2/typechain-types/interfaces/IWZeta.sol/IWETH9.ts create mode 100644 v2/typechain-types/interfaces/IWZeta.sol/index.ts create mode 100644 v2/typechain-types/interfaces/index.ts create mode 100644 v2/typechain-types/utils/Strings.ts create mode 100644 v2/typechain-types/utils/index.ts create mode 100644 v2/typechain-types/zContract.sol/UniversalContract.ts create mode 100644 v2/typechain-types/zContract.sol/ZContract.ts create mode 100644 v2/typechain-types/zContract.sol/index.ts diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml new file mode 100644 index 00000000..f7affe1b --- /dev/null +++ b/.github/workflows/generated-files_v2.yaml @@ -0,0 +1,63 @@ +name: Generated Files are Updated (V2) + +on: + push: + branches: + - main + paths: + - 'v2/**' + pull_request: + branches: + - "*" + types: + - synchronize + - opened + - reopened + - ready_for_review + +defaults: + run: + working-directory: ./v2 + +jobs: + generate: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "21.1.0" + registry-url: "https://registry.npmjs.org" + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y jq unzip + yarn install + + - name: Install specific version of aibgen + run: | + wget https://gethstore.blob.core.windows.net/builds/geth-alltools-linux-amd64-1.11.5-a38f4108.tar.gz + tar -zxvf geth-alltools-linux-amd64-1.11.5-a38f4108.tar.gz + sudo mv geth-alltools-linux-amd64-1.11.5-a38f4108/abigen /usr/local/bin/ + + - name: Generate Go packages and typechain-types + run: | + yarn generate + + - name: Check for changes + run: | + if git diff --exit-code --ignore-space-change --ignore-all-space --ignore-cr-at-eol -- pkg typechain-types; then + echo "Generated Go files are up-to-date." + else + echo "::error::Generated files are not up-to-date. Please run 'yarn generate' locally and commit any changes." + exit 1 + fi diff --git a/v2/package.json b/v2/package.json index 6102e504..f6d9feff 100644 --- a/v2/package.json +++ b/v2/package.json @@ -11,14 +11,18 @@ "lint:fix": "npx eslint . --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"anvil --auto-impersonate\" \"wait-on tcp:8545 && npx ts-node scripts/localnet/worker.ts\"", "test": "forge clean && forge test -vv", - "coverage": "forge clean && forge coverage --report lcov" + "coverage": "forge clean && forge coverage --report lcov", + "typechain": "typechain --target ethers-v6 \"out/**/!(*.t|test).sol/!(*.abi).json\" --out-dir typechain-types", + "generate": "forge clean && forge build && ./scripts/generate_go.sh || true && yarn lint:fix && forge fmt && yarn typechain" }, "devDependencies": { "@eslint/js": "^9.7.0", + "@typechain/ethers-v6": "^0.5.1", "@types/eslint__js": "^8.42.3", "concurrently": "^8.2.2", "eslint": "^8.57.0", "ts-node": "^10.9.2", + "typechain": "^8.3.2", "typescript": "^5.5.4", "typescript-eslint": "^7.17.0", "wait-on": "^7.2.0" diff --git a/v2/pkg/address.sol/address.go b/v2/pkg/address.sol/address.go new file mode 100644 index 00000000..a7086abd --- /dev/null +++ b/v2/pkg/address.sol/address.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package address + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AddressMetaData contains all meta data concerning the Address contract. +var AddressMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051aee3d3cbb51dd227047d3a402e288a90aab6ebded8bce84a18c9d83c6fa8b264736f6c634300081a0033", +} + +// AddressABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressMetaData.ABI instead. +var AddressABI = AddressMetaData.ABI + +// AddressBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AddressMetaData.Bin instead. +var AddressBin = AddressMetaData.Bin + +// DeployAddress deploys a new Ethereum contract, binding an instance of Address to it. +func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// Address is an auto generated Go binding around an Ethereum contract. +type Address struct { + AddressCaller // Read-only binding to the contract + AddressTransactor // Write-only binding to the contract + AddressFilterer // Log filterer for contract events +} + +// AddressCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressSession struct { + Contract *Address // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressCallerSession struct { + Contract *AddressCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressTransactorSession struct { + Contract *AddressTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressRaw struct { + Contract *Address // Generic contract binding to access the raw methods on +} + +// AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressCallerRaw struct { + Contract *AddressCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressTransactorRaw struct { + Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddress creates a new instance of Address, bound to a specific deployed contract. +func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) { + contract, err := bindAddress(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil +} + +// NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract. +func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) { + contract, err := bindAddress(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressCaller{contract: contract}, nil +} + +// NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract. +func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) { + contract, err := bindAddress(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressTransactor{contract: contract}, nil +} + +// NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract. +func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) { + contract, err := bindAddress(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressFilterer{contract: contract}, nil +} + +// bindAddress binds a generic wrapper to an already deployed contract. +func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Address.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Address.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Address.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/base.sol/commonbase.go b/v2/pkg/base.sol/commonbase.go new file mode 100644 index 00000000..21558dd3 --- /dev/null +++ b/v2/pkg/base.sol/commonbase.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package base + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CommonBaseMetaData contains all meta data concerning the CommonBase contract. +var CommonBaseMetaData = &bind.MetaData{ + ABI: "[]", +} + +// CommonBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use CommonBaseMetaData.ABI instead. +var CommonBaseABI = CommonBaseMetaData.ABI + +// CommonBase is an auto generated Go binding around an Ethereum contract. +type CommonBase struct { + CommonBaseCaller // Read-only binding to the contract + CommonBaseTransactor // Write-only binding to the contract + CommonBaseFilterer // Log filterer for contract events +} + +// CommonBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type CommonBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommonBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CommonBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommonBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CommonBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CommonBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CommonBaseSession struct { + Contract *CommonBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CommonBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CommonBaseCallerSession struct { + Contract *CommonBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CommonBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CommonBaseTransactorSession struct { + Contract *CommonBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CommonBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type CommonBaseRaw struct { + Contract *CommonBase // Generic contract binding to access the raw methods on +} + +// CommonBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CommonBaseCallerRaw struct { + Contract *CommonBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// CommonBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CommonBaseTransactorRaw struct { + Contract *CommonBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCommonBase creates a new instance of CommonBase, bound to a specific deployed contract. +func NewCommonBase(address common.Address, backend bind.ContractBackend) (*CommonBase, error) { + contract, err := bindCommonBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &CommonBase{CommonBaseCaller: CommonBaseCaller{contract: contract}, CommonBaseTransactor: CommonBaseTransactor{contract: contract}, CommonBaseFilterer: CommonBaseFilterer{contract: contract}}, nil +} + +// NewCommonBaseCaller creates a new read-only instance of CommonBase, bound to a specific deployed contract. +func NewCommonBaseCaller(address common.Address, caller bind.ContractCaller) (*CommonBaseCaller, error) { + contract, err := bindCommonBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CommonBaseCaller{contract: contract}, nil +} + +// NewCommonBaseTransactor creates a new write-only instance of CommonBase, bound to a specific deployed contract. +func NewCommonBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*CommonBaseTransactor, error) { + contract, err := bindCommonBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CommonBaseTransactor{contract: contract}, nil +} + +// NewCommonBaseFilterer creates a new log filterer instance of CommonBase, bound to a specific deployed contract. +func NewCommonBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*CommonBaseFilterer, error) { + contract, err := bindCommonBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CommonBaseFilterer{contract: contract}, nil +} + +// bindCommonBase binds a generic wrapper to an already deployed contract. +func bindCommonBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CommonBaseMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CommonBase *CommonBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CommonBase.Contract.CommonBaseCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CommonBase *CommonBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CommonBase.Contract.CommonBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CommonBase *CommonBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CommonBase.Contract.CommonBaseTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CommonBase *CommonBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CommonBase.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CommonBase *CommonBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CommonBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CommonBase *CommonBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CommonBase.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/base.sol/scriptbase.go b/v2/pkg/base.sol/scriptbase.go new file mode 100644 index 00000000..ef7ebeaa --- /dev/null +++ b/v2/pkg/base.sol/scriptbase.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package base + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ScriptBaseMetaData contains all meta data concerning the ScriptBase contract. +var ScriptBaseMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ScriptBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use ScriptBaseMetaData.ABI instead. +var ScriptBaseABI = ScriptBaseMetaData.ABI + +// ScriptBase is an auto generated Go binding around an Ethereum contract. +type ScriptBase struct { + ScriptBaseCaller // Read-only binding to the contract + ScriptBaseTransactor // Write-only binding to the contract + ScriptBaseFilterer // Log filterer for contract events +} + +// ScriptBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type ScriptBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ScriptBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ScriptBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ScriptBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ScriptBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ScriptBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ScriptBaseSession struct { + Contract *ScriptBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ScriptBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ScriptBaseCallerSession struct { + Contract *ScriptBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ScriptBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ScriptBaseTransactorSession struct { + Contract *ScriptBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ScriptBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type ScriptBaseRaw struct { + Contract *ScriptBase // Generic contract binding to access the raw methods on +} + +// ScriptBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ScriptBaseCallerRaw struct { + Contract *ScriptBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// ScriptBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ScriptBaseTransactorRaw struct { + Contract *ScriptBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewScriptBase creates a new instance of ScriptBase, bound to a specific deployed contract. +func NewScriptBase(address common.Address, backend bind.ContractBackend) (*ScriptBase, error) { + contract, err := bindScriptBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ScriptBase{ScriptBaseCaller: ScriptBaseCaller{contract: contract}, ScriptBaseTransactor: ScriptBaseTransactor{contract: contract}, ScriptBaseFilterer: ScriptBaseFilterer{contract: contract}}, nil +} + +// NewScriptBaseCaller creates a new read-only instance of ScriptBase, bound to a specific deployed contract. +func NewScriptBaseCaller(address common.Address, caller bind.ContractCaller) (*ScriptBaseCaller, error) { + contract, err := bindScriptBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ScriptBaseCaller{contract: contract}, nil +} + +// NewScriptBaseTransactor creates a new write-only instance of ScriptBase, bound to a specific deployed contract. +func NewScriptBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ScriptBaseTransactor, error) { + contract, err := bindScriptBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ScriptBaseTransactor{contract: contract}, nil +} + +// NewScriptBaseFilterer creates a new log filterer instance of ScriptBase, bound to a specific deployed contract. +func NewScriptBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ScriptBaseFilterer, error) { + contract, err := bindScriptBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ScriptBaseFilterer{contract: contract}, nil +} + +// bindScriptBase binds a generic wrapper to an already deployed contract. +func bindScriptBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ScriptBaseMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ScriptBase *ScriptBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ScriptBase.Contract.ScriptBaseCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ScriptBase *ScriptBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ScriptBase.Contract.ScriptBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ScriptBase *ScriptBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ScriptBase.Contract.ScriptBaseTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ScriptBase *ScriptBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ScriptBase.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ScriptBase *ScriptBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ScriptBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ScriptBase *ScriptBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ScriptBase.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/base.sol/testbase.go b/v2/pkg/base.sol/testbase.go new file mode 100644 index 00000000..a597895a --- /dev/null +++ b/v2/pkg/base.sol/testbase.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package base + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TestBaseMetaData contains all meta data concerning the TestBase contract. +var TestBaseMetaData = &bind.MetaData{ + ABI: "[]", +} + +// TestBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use TestBaseMetaData.ABI instead. +var TestBaseABI = TestBaseMetaData.ABI + +// TestBase is an auto generated Go binding around an Ethereum contract. +type TestBase struct { + TestBaseCaller // Read-only binding to the contract + TestBaseTransactor // Write-only binding to the contract + TestBaseFilterer // Log filterer for contract events +} + +// TestBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type TestBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TestBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TestBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TestBaseSession struct { + Contract *TestBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TestBaseCallerSession struct { + Contract *TestBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TestBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TestBaseTransactorSession struct { + Contract *TestBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type TestBaseRaw struct { + Contract *TestBase // Generic contract binding to access the raw methods on +} + +// TestBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TestBaseCallerRaw struct { + Contract *TestBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// TestBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TestBaseTransactorRaw struct { + Contract *TestBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTestBase creates a new instance of TestBase, bound to a specific deployed contract. +func NewTestBase(address common.Address, backend bind.ContractBackend) (*TestBase, error) { + contract, err := bindTestBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TestBase{TestBaseCaller: TestBaseCaller{contract: contract}, TestBaseTransactor: TestBaseTransactor{contract: contract}, TestBaseFilterer: TestBaseFilterer{contract: contract}}, nil +} + +// NewTestBaseCaller creates a new read-only instance of TestBase, bound to a specific deployed contract. +func NewTestBaseCaller(address common.Address, caller bind.ContractCaller) (*TestBaseCaller, error) { + contract, err := bindTestBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TestBaseCaller{contract: contract}, nil +} + +// NewTestBaseTransactor creates a new write-only instance of TestBase, bound to a specific deployed contract. +func NewTestBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*TestBaseTransactor, error) { + contract, err := bindTestBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TestBaseTransactor{contract: contract}, nil +} + +// NewTestBaseFilterer creates a new log filterer instance of TestBase, bound to a specific deployed contract. +func NewTestBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*TestBaseFilterer, error) { + contract, err := bindTestBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TestBaseFilterer{contract: contract}, nil +} + +// bindTestBase binds a generic wrapper to an already deployed contract. +func bindTestBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TestBaseMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestBase *TestBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestBase.Contract.TestBaseCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestBase *TestBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestBase.Contract.TestBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestBase *TestBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestBase.Contract.TestBaseTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestBase *TestBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestBase.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestBase *TestBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestBase *TestBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestBase.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/beaconproxy.sol/beaconproxy.go b/v2/pkg/beaconproxy.sol/beaconproxy.go new file mode 100644 index 00000000..9303b6aa --- /dev/null +++ b/v2/pkg/beaconproxy.sol/beaconproxy.go @@ -0,0 +1,368 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package beaconproxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BeaconProxyMetaData contains all meta data concerning the BeaconProxy contract. +var BeaconProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidBeacon\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", + Bin: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220fbef562e23099f6b70d42efa68ad4a1991c21a30ee88b7ae19894071f581e3e364736f6c634300081a0033", +} + +// BeaconProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use BeaconProxyMetaData.ABI instead. +var BeaconProxyABI = BeaconProxyMetaData.ABI + +// BeaconProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BeaconProxyMetaData.Bin instead. +var BeaconProxyBin = BeaconProxyMetaData.Bin + +// DeployBeaconProxy deploys a new Ethereum contract, binding an instance of BeaconProxy to it. +func DeployBeaconProxy(auth *bind.TransactOpts, backend bind.ContractBackend, beacon common.Address, data []byte) (common.Address, *types.Transaction, *BeaconProxy, error) { + parsed, err := BeaconProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BeaconProxyBin), backend, beacon, data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BeaconProxy{BeaconProxyCaller: BeaconProxyCaller{contract: contract}, BeaconProxyTransactor: BeaconProxyTransactor{contract: contract}, BeaconProxyFilterer: BeaconProxyFilterer{contract: contract}}, nil +} + +// BeaconProxy is an auto generated Go binding around an Ethereum contract. +type BeaconProxy struct { + BeaconProxyCaller // Read-only binding to the contract + BeaconProxyTransactor // Write-only binding to the contract + BeaconProxyFilterer // Log filterer for contract events +} + +// BeaconProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type BeaconProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BeaconProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BeaconProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BeaconProxySession struct { + Contract *BeaconProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BeaconProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BeaconProxyCallerSession struct { + Contract *BeaconProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BeaconProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BeaconProxyTransactorSession struct { + Contract *BeaconProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BeaconProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type BeaconProxyRaw struct { + Contract *BeaconProxy // Generic contract binding to access the raw methods on +} + +// BeaconProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BeaconProxyCallerRaw struct { + Contract *BeaconProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// BeaconProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BeaconProxyTransactorRaw struct { + Contract *BeaconProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBeaconProxy creates a new instance of BeaconProxy, bound to a specific deployed contract. +func NewBeaconProxy(address common.Address, backend bind.ContractBackend) (*BeaconProxy, error) { + contract, err := bindBeaconProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BeaconProxy{BeaconProxyCaller: BeaconProxyCaller{contract: contract}, BeaconProxyTransactor: BeaconProxyTransactor{contract: contract}, BeaconProxyFilterer: BeaconProxyFilterer{contract: contract}}, nil +} + +// NewBeaconProxyCaller creates a new read-only instance of BeaconProxy, bound to a specific deployed contract. +func NewBeaconProxyCaller(address common.Address, caller bind.ContractCaller) (*BeaconProxyCaller, error) { + contract, err := bindBeaconProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BeaconProxyCaller{contract: contract}, nil +} + +// NewBeaconProxyTransactor creates a new write-only instance of BeaconProxy, bound to a specific deployed contract. +func NewBeaconProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*BeaconProxyTransactor, error) { + contract, err := bindBeaconProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BeaconProxyTransactor{contract: contract}, nil +} + +// NewBeaconProxyFilterer creates a new log filterer instance of BeaconProxy, bound to a specific deployed contract. +func NewBeaconProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*BeaconProxyFilterer, error) { + contract, err := bindBeaconProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BeaconProxyFilterer{contract: contract}, nil +} + +// bindBeaconProxy binds a generic wrapper to an already deployed contract. +func bindBeaconProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BeaconProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BeaconProxy *BeaconProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BeaconProxy.Contract.BeaconProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BeaconProxy *BeaconProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BeaconProxy.Contract.BeaconProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BeaconProxy *BeaconProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BeaconProxy.Contract.BeaconProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BeaconProxy *BeaconProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BeaconProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BeaconProxy *BeaconProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BeaconProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BeaconProxy *BeaconProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BeaconProxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_BeaconProxy *BeaconProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _BeaconProxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_BeaconProxy *BeaconProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _BeaconProxy.Contract.Fallback(&_BeaconProxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_BeaconProxy *BeaconProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _BeaconProxy.Contract.Fallback(&_BeaconProxy.TransactOpts, calldata) +} + +// BeaconProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the BeaconProxy contract. +type BeaconProxyBeaconUpgradedIterator struct { + Event *BeaconProxyBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BeaconProxyBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BeaconProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BeaconProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BeaconProxyBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BeaconProxyBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BeaconProxyBeaconUpgraded represents a BeaconUpgraded event raised by the BeaconProxy contract. +type BeaconProxyBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_BeaconProxy *BeaconProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*BeaconProxyBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _BeaconProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &BeaconProxyBeaconUpgradedIterator{contract: _BeaconProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_BeaconProxy *BeaconProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *BeaconProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _BeaconProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BeaconProxyBeaconUpgraded) + if err := _BeaconProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_BeaconProxy *BeaconProxyFilterer) ParseBeaconUpgraded(log types.Log) (*BeaconProxyBeaconUpgraded, error) { + event := new(BeaconProxyBeaconUpgraded) + if err := _BeaconProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/console.sol/console.go b/v2/pkg/console.sol/console.go new file mode 100644 index 00000000..ac2e64e3 --- /dev/null +++ b/v2/pkg/console.sol/console.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package console + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ConsoleMetaData contains all meta data concerning the Console contract. +var ConsoleMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122036e7b352b1f4f21e7064fc214beafa9cc1ff9b18801b76f46109cf695d3dd28764736f6c634300081a0033", +} + +// ConsoleABI is the input ABI used to generate the binding from. +// Deprecated: Use ConsoleMetaData.ABI instead. +var ConsoleABI = ConsoleMetaData.ABI + +// ConsoleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ConsoleMetaData.Bin instead. +var ConsoleBin = ConsoleMetaData.Bin + +// DeployConsole deploys a new Ethereum contract, binding an instance of Console to it. +func DeployConsole(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Console, error) { + parsed, err := ConsoleMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ConsoleBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Console{ConsoleCaller: ConsoleCaller{contract: contract}, ConsoleTransactor: ConsoleTransactor{contract: contract}, ConsoleFilterer: ConsoleFilterer{contract: contract}}, nil +} + +// Console is an auto generated Go binding around an Ethereum contract. +type Console struct { + ConsoleCaller // Read-only binding to the contract + ConsoleTransactor // Write-only binding to the contract + ConsoleFilterer // Log filterer for contract events +} + +// ConsoleCaller is an auto generated read-only Go binding around an Ethereum contract. +type ConsoleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConsoleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ConsoleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConsoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ConsoleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ConsoleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ConsoleSession struct { + Contract *Console // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConsoleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ConsoleCallerSession struct { + Contract *ConsoleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ConsoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ConsoleTransactorSession struct { + Contract *ConsoleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ConsoleRaw is an auto generated low-level Go binding around an Ethereum contract. +type ConsoleRaw struct { + Contract *Console // Generic contract binding to access the raw methods on +} + +// ConsoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ConsoleCallerRaw struct { + Contract *ConsoleCaller // Generic read-only contract binding to access the raw methods on +} + +// ConsoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ConsoleTransactorRaw struct { + Contract *ConsoleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewConsole creates a new instance of Console, bound to a specific deployed contract. +func NewConsole(address common.Address, backend bind.ContractBackend) (*Console, error) { + contract, err := bindConsole(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Console{ConsoleCaller: ConsoleCaller{contract: contract}, ConsoleTransactor: ConsoleTransactor{contract: contract}, ConsoleFilterer: ConsoleFilterer{contract: contract}}, nil +} + +// NewConsoleCaller creates a new read-only instance of Console, bound to a specific deployed contract. +func NewConsoleCaller(address common.Address, caller bind.ContractCaller) (*ConsoleCaller, error) { + contract, err := bindConsole(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ConsoleCaller{contract: contract}, nil +} + +// NewConsoleTransactor creates a new write-only instance of Console, bound to a specific deployed contract. +func NewConsoleTransactor(address common.Address, transactor bind.ContractTransactor) (*ConsoleTransactor, error) { + contract, err := bindConsole(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ConsoleTransactor{contract: contract}, nil +} + +// NewConsoleFilterer creates a new log filterer instance of Console, bound to a specific deployed contract. +func NewConsoleFilterer(address common.Address, filterer bind.ContractFilterer) (*ConsoleFilterer, error) { + contract, err := bindConsole(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ConsoleFilterer{contract: contract}, nil +} + +// bindConsole binds a generic wrapper to an already deployed contract. +func bindConsole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ConsoleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Console *ConsoleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Console.Contract.ConsoleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Console *ConsoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Console.Contract.ConsoleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Console *ConsoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Console.Contract.ConsoleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Console *ConsoleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Console.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Console *ConsoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Console.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Console *ConsoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Console.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/console2.sol/console2.go b/v2/pkg/console2.sol/console2.go new file mode 100644 index 00000000..a99f4738 --- /dev/null +++ b/v2/pkg/console2.sol/console2.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package console2 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// Console2MetaData contains all meta data concerning the Console2 contract. +var Console2MetaData = &bind.MetaData{ + ABI: "[]", +} + +// Console2ABI is the input ABI used to generate the binding from. +// Deprecated: Use Console2MetaData.ABI instead. +var Console2ABI = Console2MetaData.ABI + +// Console2 is an auto generated Go binding around an Ethereum contract. +type Console2 struct { + Console2Caller // Read-only binding to the contract + Console2Transactor // Write-only binding to the contract + Console2Filterer // Log filterer for contract events +} + +// Console2Caller is an auto generated read-only Go binding around an Ethereum contract. +type Console2Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Console2Transactor is an auto generated write-only Go binding around an Ethereum contract. +type Console2Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Console2Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type Console2Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Console2Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type Console2Session struct { + Contract *Console2 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Console2CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type Console2CallerSession struct { + Contract *Console2Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// Console2TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type Console2TransactorSession struct { + Contract *Console2Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Console2Raw is an auto generated low-level Go binding around an Ethereum contract. +type Console2Raw struct { + Contract *Console2 // Generic contract binding to access the raw methods on +} + +// Console2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type Console2CallerRaw struct { + Contract *Console2Caller // Generic read-only contract binding to access the raw methods on +} + +// Console2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type Console2TransactorRaw struct { + Contract *Console2Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewConsole2 creates a new instance of Console2, bound to a specific deployed contract. +func NewConsole2(address common.Address, backend bind.ContractBackend) (*Console2, error) { + contract, err := bindConsole2(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Console2{Console2Caller: Console2Caller{contract: contract}, Console2Transactor: Console2Transactor{contract: contract}, Console2Filterer: Console2Filterer{contract: contract}}, nil +} + +// NewConsole2Caller creates a new read-only instance of Console2, bound to a specific deployed contract. +func NewConsole2Caller(address common.Address, caller bind.ContractCaller) (*Console2Caller, error) { + contract, err := bindConsole2(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &Console2Caller{contract: contract}, nil +} + +// NewConsole2Transactor creates a new write-only instance of Console2, bound to a specific deployed contract. +func NewConsole2Transactor(address common.Address, transactor bind.ContractTransactor) (*Console2Transactor, error) { + contract, err := bindConsole2(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &Console2Transactor{contract: contract}, nil +} + +// NewConsole2Filterer creates a new log filterer instance of Console2, bound to a specific deployed contract. +func NewConsole2Filterer(address common.Address, filterer bind.ContractFilterer) (*Console2Filterer, error) { + contract, err := bindConsole2(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &Console2Filterer{contract: contract}, nil +} + +// bindConsole2 binds a generic wrapper to an already deployed contract. +func bindConsole2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := Console2MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Console2 *Console2Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Console2.Contract.Console2Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Console2 *Console2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Console2.Contract.Console2Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Console2 *Console2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Console2.Contract.Console2Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Console2 *Console2CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Console2.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Console2 *Console2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Console2.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Console2 *Console2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Console2.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/context.sol/context.go b/v2/pkg/context.sol/context.go new file mode 100644 index 00000000..90b3cdd0 --- /dev/null +++ b/v2/pkg/context.sol/context.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package context + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ContextMetaData contains all meta data concerning the Context contract. +var ContextMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ContextABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextMetaData.ABI instead. +var ContextABI = ContextMetaData.ABI + +// Context is an auto generated Go binding around an Ethereum contract. +type Context struct { + ContextCaller // Read-only binding to the contract + ContextTransactor // Write-only binding to the contract + ContextFilterer // Log filterer for contract events +} + +// ContextCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextSession struct { + Contract *Context // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextCallerSession struct { + Contract *ContextCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextTransactorSession struct { + Contract *ContextTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextRaw struct { + Contract *Context // Generic contract binding to access the raw methods on +} + +// ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextCallerRaw struct { + Contract *ContextCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextTransactorRaw struct { + Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContext creates a new instance of Context, bound to a specific deployed contract. +func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) { + contract, err := bindContext(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil +} + +// NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract. +func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) { + contract, err := bindContext(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextCaller{contract: contract}, nil +} + +// NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract. +func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) { + contract, err := bindContext(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextTransactor{contract: contract}, nil +} + +// NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract. +func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) { + contract, err := bindContext(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextFilterer{contract: contract}, nil +} + +// bindContext binds a generic wrapper to an already deployed contract. +func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Context.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Context.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Context.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/contextupgradeable.sol/contextupgradeable.go b/v2/pkg/contextupgradeable.sol/contextupgradeable.go new file mode 100644 index 00000000..1e54b32e --- /dev/null +++ b/v2/pkg/contextupgradeable.sol/contextupgradeable.go @@ -0,0 +1,315 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contextupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ContextUpgradeableMetaData contains all meta data concerning the ContextUpgradeable contract. +var ContextUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]}]", +} + +// ContextUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ContextUpgradeableMetaData.ABI instead. +var ContextUpgradeableABI = ContextUpgradeableMetaData.ABI + +// ContextUpgradeable is an auto generated Go binding around an Ethereum contract. +type ContextUpgradeable struct { + ContextUpgradeableCaller // Read-only binding to the contract + ContextUpgradeableTransactor // Write-only binding to the contract + ContextUpgradeableFilterer // Log filterer for contract events +} + +// ContextUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ContextUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ContextUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ContextUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ContextUpgradeableSession struct { + Contract *ContextUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ContextUpgradeableCallerSession struct { + Contract *ContextUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ContextUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ContextUpgradeableTransactorSession struct { + Contract *ContextUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ContextUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ContextUpgradeableRaw struct { + Contract *ContextUpgradeable // Generic contract binding to access the raw methods on +} + +// ContextUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ContextUpgradeableCallerRaw struct { + Contract *ContextUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ContextUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ContextUpgradeableTransactorRaw struct { + Contract *ContextUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewContextUpgradeable creates a new instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeable(address common.Address, backend bind.ContractBackend) (*ContextUpgradeable, error) { + contract, err := bindContextUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ContextUpgradeable{ContextUpgradeableCaller: ContextUpgradeableCaller{contract: contract}, ContextUpgradeableTransactor: ContextUpgradeableTransactor{contract: contract}, ContextUpgradeableFilterer: ContextUpgradeableFilterer{contract: contract}}, nil +} + +// NewContextUpgradeableCaller creates a new read-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ContextUpgradeableCaller, error) { + contract, err := bindContextUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableCaller{contract: contract}, nil +} + +// NewContextUpgradeableTransactor creates a new write-only instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextUpgradeableTransactor, error) { + contract, err := bindContextUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ContextUpgradeableTransactor{contract: contract}, nil +} + +// NewContextUpgradeableFilterer creates a new log filterer instance of ContextUpgradeable, bound to a specific deployed contract. +func NewContextUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextUpgradeableFilterer, error) { + contract, err := bindContextUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ContextUpgradeableFilterer{contract: contract}, nil +} + +// bindContextUpgradeable binds a generic wrapper to an already deployed contract. +func bindContextUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ContextUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.ContextUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.ContextUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ContextUpgradeable *ContextUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ContextUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ContextUpgradeable *ContextUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ContextUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ContextUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContextUpgradeable contract. +type ContextUpgradeableInitializedIterator struct { + Event *ContextUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContextUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContextUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContextUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContextUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContextUpgradeableInitialized represents a Initialized event raised by the ContextUpgradeable contract. +type ContextUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ContextUpgradeableInitializedIterator, error) { + + logs, sub, err := _ContextUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ContextUpgradeableInitializedIterator{contract: _ContextUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ContextUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ContextUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ContextUpgradeable *ContextUpgradeableFilterer) ParseInitialized(log types.Log) (*ContextUpgradeableInitialized, error) { + event := new(ContextUpgradeableInitialized) + if err := _ContextUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/core.sol/core.go b/v2/pkg/core.sol/core.go new file mode 100644 index 00000000..20e8e920 --- /dev/null +++ b/v2/pkg/core.sol/core.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package core + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CoreMetaData contains all meta data concerning the Core contract. +var CoreMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b99ffed9fb2c99093653e333a919be75559602fd4000fc9962f0f4027d6168a64736f6c634300081a0033", +} + +// CoreABI is the input ABI used to generate the binding from. +// Deprecated: Use CoreMetaData.ABI instead. +var CoreABI = CoreMetaData.ABI + +// CoreBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use CoreMetaData.Bin instead. +var CoreBin = CoreMetaData.Bin + +// DeployCore deploys a new Ethereum contract, binding an instance of Core to it. +func DeployCore(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Core, error) { + parsed, err := CoreMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CoreBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Core{CoreCaller: CoreCaller{contract: contract}, CoreTransactor: CoreTransactor{contract: contract}, CoreFilterer: CoreFilterer{contract: contract}}, nil +} + +// Core is an auto generated Go binding around an Ethereum contract. +type Core struct { + CoreCaller // Read-only binding to the contract + CoreTransactor // Write-only binding to the contract + CoreFilterer // Log filterer for contract events +} + +// CoreCaller is an auto generated read-only Go binding around an Ethereum contract. +type CoreCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CoreTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CoreTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CoreFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CoreFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CoreSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CoreSession struct { + Contract *Core // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CoreCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CoreCallerSession struct { + Contract *CoreCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CoreTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CoreTransactorSession struct { + Contract *CoreTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CoreRaw is an auto generated low-level Go binding around an Ethereum contract. +type CoreRaw struct { + Contract *Core // Generic contract binding to access the raw methods on +} + +// CoreCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CoreCallerRaw struct { + Contract *CoreCaller // Generic read-only contract binding to access the raw methods on +} + +// CoreTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CoreTransactorRaw struct { + Contract *CoreTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCore creates a new instance of Core, bound to a specific deployed contract. +func NewCore(address common.Address, backend bind.ContractBackend) (*Core, error) { + contract, err := bindCore(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Core{CoreCaller: CoreCaller{contract: contract}, CoreTransactor: CoreTransactor{contract: contract}, CoreFilterer: CoreFilterer{contract: contract}}, nil +} + +// NewCoreCaller creates a new read-only instance of Core, bound to a specific deployed contract. +func NewCoreCaller(address common.Address, caller bind.ContractCaller) (*CoreCaller, error) { + contract, err := bindCore(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CoreCaller{contract: contract}, nil +} + +// NewCoreTransactor creates a new write-only instance of Core, bound to a specific deployed contract. +func NewCoreTransactor(address common.Address, transactor bind.ContractTransactor) (*CoreTransactor, error) { + contract, err := bindCore(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CoreTransactor{contract: contract}, nil +} + +// NewCoreFilterer creates a new log filterer instance of Core, bound to a specific deployed contract. +func NewCoreFilterer(address common.Address, filterer bind.ContractFilterer) (*CoreFilterer, error) { + contract, err := bindCore(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CoreFilterer{contract: contract}, nil +} + +// bindCore binds a generic wrapper to an already deployed contract. +func bindCore(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CoreMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Core *CoreRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Core.Contract.CoreCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Core *CoreRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Core.Contract.CoreTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Core *CoreRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Core.Contract.CoreTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Core *CoreCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Core.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Core *CoreTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Core.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Core *CoreTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Core.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/defender.sol/defender.go b/v2/pkg/defender.sol/defender.go new file mode 100644 index 00000000..75c91808 --- /dev/null +++ b/v2/pkg/defender.sol/defender.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package defender + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// DefenderMetaData contains all meta data concerning the Defender contract. +var DefenderMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e77611c2a167a5e16c9b4e93e900d9515ee8697eba9f144b6f319dcd7d591c664736f6c634300081a0033", +} + +// DefenderABI is the input ABI used to generate the binding from. +// Deprecated: Use DefenderMetaData.ABI instead. +var DefenderABI = DefenderMetaData.ABI + +// DefenderBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use DefenderMetaData.Bin instead. +var DefenderBin = DefenderMetaData.Bin + +// DeployDefender deploys a new Ethereum contract, binding an instance of Defender to it. +func DeployDefender(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Defender, error) { + parsed, err := DefenderMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(DefenderBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Defender{DefenderCaller: DefenderCaller{contract: contract}, DefenderTransactor: DefenderTransactor{contract: contract}, DefenderFilterer: DefenderFilterer{contract: contract}}, nil +} + +// Defender is an auto generated Go binding around an Ethereum contract. +type Defender struct { + DefenderCaller // Read-only binding to the contract + DefenderTransactor // Write-only binding to the contract + DefenderFilterer // Log filterer for contract events +} + +// DefenderCaller is an auto generated read-only Go binding around an Ethereum contract. +type DefenderCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DefenderTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DefenderFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DefenderSession struct { + Contract *Defender // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DefenderCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DefenderCallerSession struct { + Contract *DefenderCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DefenderTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DefenderTransactorSession struct { + Contract *DefenderTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DefenderRaw is an auto generated low-level Go binding around an Ethereum contract. +type DefenderRaw struct { + Contract *Defender // Generic contract binding to access the raw methods on +} + +// DefenderCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DefenderCallerRaw struct { + Contract *DefenderCaller // Generic read-only contract binding to access the raw methods on +} + +// DefenderTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DefenderTransactorRaw struct { + Contract *DefenderTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDefender creates a new instance of Defender, bound to a specific deployed contract. +func NewDefender(address common.Address, backend bind.ContractBackend) (*Defender, error) { + contract, err := bindDefender(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Defender{DefenderCaller: DefenderCaller{contract: contract}, DefenderTransactor: DefenderTransactor{contract: contract}, DefenderFilterer: DefenderFilterer{contract: contract}}, nil +} + +// NewDefenderCaller creates a new read-only instance of Defender, bound to a specific deployed contract. +func NewDefenderCaller(address common.Address, caller bind.ContractCaller) (*DefenderCaller, error) { + contract, err := bindDefender(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DefenderCaller{contract: contract}, nil +} + +// NewDefenderTransactor creates a new write-only instance of Defender, bound to a specific deployed contract. +func NewDefenderTransactor(address common.Address, transactor bind.ContractTransactor) (*DefenderTransactor, error) { + contract, err := bindDefender(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DefenderTransactor{contract: contract}, nil +} + +// NewDefenderFilterer creates a new log filterer instance of Defender, bound to a specific deployed contract. +func NewDefenderFilterer(address common.Address, filterer bind.ContractFilterer) (*DefenderFilterer, error) { + contract, err := bindDefender(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DefenderFilterer{contract: contract}, nil +} + +// bindDefender binds a generic wrapper to an already deployed contract. +func bindDefender(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := DefenderMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Defender *DefenderRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Defender.Contract.DefenderCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Defender *DefenderRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Defender.Contract.DefenderTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Defender *DefenderRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Defender.Contract.DefenderTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Defender *DefenderCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Defender.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Defender *DefenderTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Defender.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Defender *DefenderTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Defender.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/defenderdeploy.sol/defenderdeploy.go b/v2/pkg/defenderdeploy.sol/defenderdeploy.go new file mode 100644 index 00000000..0f0f3faf --- /dev/null +++ b/v2/pkg/defenderdeploy.sol/defenderdeploy.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package defenderdeploy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// DefenderDeployMetaData contains all meta data concerning the DefenderDeploy contract. +var DefenderDeployMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122024f703bf58fe16c06205a31f9ed26113603ad9c02820dbd6a3872487d3133e8564736f6c634300081a0033", +} + +// DefenderDeployABI is the input ABI used to generate the binding from. +// Deprecated: Use DefenderDeployMetaData.ABI instead. +var DefenderDeployABI = DefenderDeployMetaData.ABI + +// DefenderDeployBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use DefenderDeployMetaData.Bin instead. +var DefenderDeployBin = DefenderDeployMetaData.Bin + +// DeployDefenderDeploy deploys a new Ethereum contract, binding an instance of DefenderDeploy to it. +func DeployDefenderDeploy(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *DefenderDeploy, error) { + parsed, err := DefenderDeployMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(DefenderDeployBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &DefenderDeploy{DefenderDeployCaller: DefenderDeployCaller{contract: contract}, DefenderDeployTransactor: DefenderDeployTransactor{contract: contract}, DefenderDeployFilterer: DefenderDeployFilterer{contract: contract}}, nil +} + +// DefenderDeploy is an auto generated Go binding around an Ethereum contract. +type DefenderDeploy struct { + DefenderDeployCaller // Read-only binding to the contract + DefenderDeployTransactor // Write-only binding to the contract + DefenderDeployFilterer // Log filterer for contract events +} + +// DefenderDeployCaller is an auto generated read-only Go binding around an Ethereum contract. +type DefenderDeployCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderDeployTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DefenderDeployTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderDeployFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DefenderDeployFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DefenderDeploySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DefenderDeploySession struct { + Contract *DefenderDeploy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DefenderDeployCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DefenderDeployCallerSession struct { + Contract *DefenderDeployCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DefenderDeployTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DefenderDeployTransactorSession struct { + Contract *DefenderDeployTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DefenderDeployRaw is an auto generated low-level Go binding around an Ethereum contract. +type DefenderDeployRaw struct { + Contract *DefenderDeploy // Generic contract binding to access the raw methods on +} + +// DefenderDeployCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DefenderDeployCallerRaw struct { + Contract *DefenderDeployCaller // Generic read-only contract binding to access the raw methods on +} + +// DefenderDeployTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DefenderDeployTransactorRaw struct { + Contract *DefenderDeployTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDefenderDeploy creates a new instance of DefenderDeploy, bound to a specific deployed contract. +func NewDefenderDeploy(address common.Address, backend bind.ContractBackend) (*DefenderDeploy, error) { + contract, err := bindDefenderDeploy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DefenderDeploy{DefenderDeployCaller: DefenderDeployCaller{contract: contract}, DefenderDeployTransactor: DefenderDeployTransactor{contract: contract}, DefenderDeployFilterer: DefenderDeployFilterer{contract: contract}}, nil +} + +// NewDefenderDeployCaller creates a new read-only instance of DefenderDeploy, bound to a specific deployed contract. +func NewDefenderDeployCaller(address common.Address, caller bind.ContractCaller) (*DefenderDeployCaller, error) { + contract, err := bindDefenderDeploy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DefenderDeployCaller{contract: contract}, nil +} + +// NewDefenderDeployTransactor creates a new write-only instance of DefenderDeploy, bound to a specific deployed contract. +func NewDefenderDeployTransactor(address common.Address, transactor bind.ContractTransactor) (*DefenderDeployTransactor, error) { + contract, err := bindDefenderDeploy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DefenderDeployTransactor{contract: contract}, nil +} + +// NewDefenderDeployFilterer creates a new log filterer instance of DefenderDeploy, bound to a specific deployed contract. +func NewDefenderDeployFilterer(address common.Address, filterer bind.ContractFilterer) (*DefenderDeployFilterer, error) { + contract, err := bindDefenderDeploy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DefenderDeployFilterer{contract: contract}, nil +} + +// bindDefenderDeploy binds a generic wrapper to an already deployed contract. +func bindDefenderDeploy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := DefenderDeployMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DefenderDeploy *DefenderDeployRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DefenderDeploy.Contract.DefenderDeployCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DefenderDeploy *DefenderDeployRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DefenderDeploy.Contract.DefenderDeployTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DefenderDeploy *DefenderDeployRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DefenderDeploy.Contract.DefenderDeployTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DefenderDeploy *DefenderDeployCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DefenderDeploy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DefenderDeploy *DefenderDeployTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DefenderDeploy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DefenderDeploy *DefenderDeployTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DefenderDeploy.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/erc1967proxy.sol/erc1967proxy.go b/v2/pkg/erc1967proxy.sol/erc1967proxy.go new file mode 100644 index 00000000..7fd94cde --- /dev/null +++ b/v2/pkg/erc1967proxy.sol/erc1967proxy.go @@ -0,0 +1,368 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc1967proxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. +var ERC1967ProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", + Bin: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220266fcff3f047fd27b99bc2ae00f2594c9dc6c8903cdba2daf7cf2623c610c93f64736f6c634300081a0033", +} + +// ERC1967ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967ProxyMetaData.ABI instead. +var ERC1967ProxyABI = ERC1967ProxyMetaData.ABI + +// ERC1967ProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967ProxyMetaData.Bin instead. +var ERC1967ProxyBin = ERC1967ProxyMetaData.Bin + +// DeployERC1967Proxy deploys a new Ethereum contract, binding an instance of ERC1967Proxy to it. +func DeployERC1967Proxy(auth *bind.TransactOpts, backend bind.ContractBackend, implementation common.Address, _data []byte) (common.Address, *types.Transaction, *ERC1967Proxy, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967ProxyBin), backend, implementation, _data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// ERC1967Proxy is an auto generated Go binding around an Ethereum contract. +type ERC1967Proxy struct { + ERC1967ProxyCaller // Read-only binding to the contract + ERC1967ProxyTransactor // Write-only binding to the contract + ERC1967ProxyFilterer // Log filterer for contract events +} + +// ERC1967ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967ProxySession struct { + Contract *ERC1967Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967ProxyCallerSession struct { + Contract *ERC1967ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967ProxyTransactorSession struct { + Contract *ERC1967ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967ProxyRaw struct { + Contract *ERC1967Proxy // Generic contract binding to access the raw methods on +} + +// ERC1967ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967ProxyCallerRaw struct { + Contract *ERC1967ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967ProxyTransactorRaw struct { + Contract *ERC1967ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Proxy creates a new instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967Proxy(address common.Address, backend bind.ContractBackend) (*ERC1967Proxy, error) { + contract, err := bindERC1967Proxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Proxy{ERC1967ProxyCaller: ERC1967ProxyCaller{contract: contract}, ERC1967ProxyTransactor: ERC1967ProxyTransactor{contract: contract}, ERC1967ProxyFilterer: ERC1967ProxyFilterer{contract: contract}}, nil +} + +// NewERC1967ProxyCaller creates a new read-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyCaller(address common.Address, caller bind.ContractCaller) (*ERC1967ProxyCaller, error) { + contract, err := bindERC1967Proxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyCaller{contract: contract}, nil +} + +// NewERC1967ProxyTransactor creates a new write-only instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967ProxyTransactor, error) { + contract, err := bindERC1967Proxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967ProxyTransactor{contract: contract}, nil +} + +// NewERC1967ProxyFilterer creates a new log filterer instance of ERC1967Proxy, bound to a specific deployed contract. +func NewERC1967ProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967ProxyFilterer, error) { + contract, err := bindERC1967Proxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967ProxyFilterer{contract: contract}, nil +} + +// bindERC1967Proxy binds a generic wrapper to an already deployed contract. +func bindERC1967Proxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.ERC1967ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.ERC1967ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Proxy *ERC1967ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Proxy *ERC1967ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ERC1967Proxy *ERC1967ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ERC1967Proxy.Contract.Fallback(&_ERC1967Proxy.TransactOpts, calldata) +} + +// ERC1967ProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgradedIterator struct { + Event *ERC1967ProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967ProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967ProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967ProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967ProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967ProxyUpgraded represents a Upgraded event raised by the ERC1967Proxy contract. +type ERC1967ProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967ProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967ProxyUpgradedIterator{contract: _ERC1967Proxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967ProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Proxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Proxy *ERC1967ProxyFilterer) ParseUpgraded(log types.Log) (*ERC1967ProxyUpgraded, error) { + event := new(ERC1967ProxyUpgraded) + if err := _ERC1967Proxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc1967utils.sol/erc1967utils.go b/v2/pkg/erc1967utils.sol/erc1967utils.go new file mode 100644 index 00000000..767ea417 --- /dev/null +++ b/v2/pkg/erc1967utils.sol/erc1967utils.go @@ -0,0 +1,626 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc1967utils + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. +var ERC1967UtilsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC1967InvalidAdmin\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidBeacon\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001eb0535328502a373828dff3af9c93d4979f247a97487a5d4c2b93bcd54364f64736f6c634300081a0033", +} + +// ERC1967UtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC1967UtilsMetaData.ABI instead. +var ERC1967UtilsABI = ERC1967UtilsMetaData.ABI + +// ERC1967UtilsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC1967UtilsMetaData.Bin instead. +var ERC1967UtilsBin = ERC1967UtilsMetaData.Bin + +// DeployERC1967Utils deploys a new Ethereum contract, binding an instance of ERC1967Utils to it. +func DeployERC1967Utils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC1967Utils, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC1967UtilsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// ERC1967Utils is an auto generated Go binding around an Ethereum contract. +type ERC1967Utils struct { + ERC1967UtilsCaller // Read-only binding to the contract + ERC1967UtilsTransactor // Write-only binding to the contract + ERC1967UtilsFilterer // Log filterer for contract events +} + +// ERC1967UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC1967UtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC1967UtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC1967UtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC1967UtilsSession struct { + Contract *ERC1967Utils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC1967UtilsCallerSession struct { + Contract *ERC1967UtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC1967UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC1967UtilsTransactorSession struct { + Contract *ERC1967UtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC1967UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC1967UtilsRaw struct { + Contract *ERC1967Utils // Generic contract binding to access the raw methods on +} + +// ERC1967UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC1967UtilsCallerRaw struct { + Contract *ERC1967UtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC1967UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC1967UtilsTransactorRaw struct { + Contract *ERC1967UtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC1967Utils creates a new instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967Utils(address common.Address, backend bind.ContractBackend) (*ERC1967Utils, error) { + contract, err := bindERC1967Utils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC1967Utils{ERC1967UtilsCaller: ERC1967UtilsCaller{contract: contract}, ERC1967UtilsTransactor: ERC1967UtilsTransactor{contract: contract}, ERC1967UtilsFilterer: ERC1967UtilsFilterer{contract: contract}}, nil +} + +// NewERC1967UtilsCaller creates a new read-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsCaller(address common.Address, caller bind.ContractCaller) (*ERC1967UtilsCaller, error) { + contract, err := bindERC1967Utils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsCaller{contract: contract}, nil +} + +// NewERC1967UtilsTransactor creates a new write-only instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC1967UtilsTransactor, error) { + contract, err := bindERC1967Utils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC1967UtilsTransactor{contract: contract}, nil +} + +// NewERC1967UtilsFilterer creates a new log filterer instance of ERC1967Utils, bound to a specific deployed contract. +func NewERC1967UtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC1967UtilsFilterer, error) { + contract, err := bindERC1967Utils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC1967UtilsFilterer{contract: contract}, nil +} + +// bindERC1967Utils binds a generic wrapper to an already deployed contract. +func bindERC1967Utils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC1967UtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.ERC1967UtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.ERC1967UtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC1967Utils *ERC1967UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC1967Utils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC1967Utils *ERC1967UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC1967Utils.Contract.contract.Transact(opts, method, params...) +} + +// ERC1967UtilsAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChangedIterator struct { + Event *ERC1967UtilsAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsAdminChanged represents a AdminChanged event raised by the ERC1967Utils contract. +type ERC1967UtilsAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC1967UtilsAdminChangedIterator, error) { + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ERC1967UtilsAdminChangedIterator{contract: _ERC1967Utils.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseAdminChanged(log types.Log) (*ERC1967UtilsAdminChanged, error) { + event := new(ERC1967UtilsAdminChanged) + if err := _ERC1967Utils.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgradedIterator struct { + Event *ERC1967UtilsBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsBeaconUpgraded represents a BeaconUpgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC1967UtilsBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsBeaconUpgradedIterator{contract: _ERC1967Utils.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseBeaconUpgraded(log types.Log) (*ERC1967UtilsBeaconUpgraded, error) { + event := new(ERC1967UtilsBeaconUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC1967UtilsUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC1967Utils contract. +type ERC1967UtilsUpgradedIterator struct { + Event *ERC1967UtilsUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1967UtilsUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1967UtilsUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1967UtilsUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1967UtilsUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1967UtilsUpgraded represents a Upgraded event raised by the ERC1967Utils contract. +type ERC1967UtilsUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC1967UtilsUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ERC1967UtilsUpgradedIterator{contract: _ERC1967Utils.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC1967UtilsUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ERC1967Utils.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ERC1967Utils *ERC1967UtilsFilterer) ParseUpgraded(log types.Log) (*ERC1967UtilsUpgraded, error) { + event := new(ERC1967UtilsUpgraded) + if err := _ERC1967Utils.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20.sol/erc20.go b/v2/pkg/erc20.sol/erc20.go new file mode 100644 index 00000000..62b2a3bc --- /dev/null +++ b/v2/pkg/erc20.sol/erc20.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20MetaData contains all meta data concerning the ERC20 contract. +var ERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", +} + +// ERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MetaData.ABI instead. +var ERC20ABI = ERC20MetaData.ABI + +// ERC20 is an auto generated Go binding around an Ethereum contract. +type ERC20 struct { + ERC20Caller // Read-only binding to the contract + ERC20Transactor // Write-only binding to the contract + ERC20Filterer // Log filterer for contract events +} + +// ERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20Session struct { + Contract *ERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CallerSession struct { + Contract *ERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20TransactorSession struct { + Contract *ERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20Raw struct { + Contract *ERC20 // Generic contract binding to access the raw methods on +} + +// ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CallerRaw struct { + Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20TransactorRaw struct { + Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20 creates a new instance of ERC20, bound to a specific deployed contract. +func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) { + contract, err := bindERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil +} + +// NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) { + contract, err := bindERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20Caller{contract: contract}, nil +} + +// NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract. +func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) { + contract, err := bindERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20Transactor{contract: contract}, nil +} + +// NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract. +func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) { + contract, err := bindERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20Filterer{contract: contract}, nil +} + +// bindERC20 binds a generic wrapper to an already deployed contract. +func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20Session) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20 *ERC20CallerSession) Decimals() (uint8, error) { + return _ERC20.Contract.Decimals(&_ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20Session) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20 *ERC20CallerSession) Name() (string, error) { + return _ERC20.Contract.Name(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20Session) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20 *ERC20CallerSession) Symbol() (string, error) { + return _ERC20.Contract.Symbol(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { + return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) +} + +// ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. +type ERC20ApprovalIterator struct { + Event *ERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Approval represents a Approval event raised by the ERC20 contract. +type ERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) { + event := new(ERC20Approval) + if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract. +type ERC20TransferIterator struct { + Event *ERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20Transfer represents a Transfer event raised by the ERC20 contract. +type ERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) { + event := new(ERC20Transfer) + if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20/ierc20.sol/ierc20.go b/v2/pkg/erc20/ierc20.sol/ierc20.go new file mode 100644 index 00000000..57cb21f9 --- /dev/null +++ b/v2/pkg/erc20/ierc20.sol/ierc20.go @@ -0,0 +1,645 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, value) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20burnable.sol/erc20burnable.go b/v2/pkg/erc20burnable.sol/erc20burnable.go new file mode 100644 index 00000000..c445450f --- /dev/null +++ b/v2/pkg/erc20burnable.sol/erc20burnable.go @@ -0,0 +1,780 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20burnable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract. +var ERC20BurnableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", +} + +// ERC20BurnableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20BurnableMetaData.ABI instead. +var ERC20BurnableABI = ERC20BurnableMetaData.ABI + +// ERC20Burnable is an auto generated Go binding around an Ethereum contract. +type ERC20Burnable struct { + ERC20BurnableCaller // Read-only binding to the contract + ERC20BurnableTransactor // Write-only binding to the contract + ERC20BurnableFilterer // Log filterer for contract events +} + +// ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20BurnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20BurnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20BurnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20BurnableSession struct { + Contract *ERC20Burnable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20BurnableCallerSession struct { + Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20BurnableTransactorSession struct { + Contract *ERC20BurnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20BurnableRaw struct { + Contract *ERC20Burnable // Generic contract binding to access the raw methods on +} + +// ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20BurnableCallerRaw struct { + Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20BurnableTransactorRaw struct { + Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) { + contract, err := bindERC20Burnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil +} + +// NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) { + contract, err := bindERC20Burnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableCaller{contract: contract}, nil +} + +// NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) { + contract, err := bindERC20Burnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20BurnableTransactor{contract: contract}, nil +} + +// NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract. +func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) { + contract, err := bindERC20Burnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20BurnableFilterer{contract: contract}, nil +} + +// bindERC20Burnable binds a generic wrapper to an already deployed contract. +func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20BurnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Burnable.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Burnable *ERC20BurnableCallerSession) Decimals() (uint8, error) { + return _ERC20Burnable.Contract.Decimals(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Name() (string, error) { + return _ERC20Burnable.Contract.Name(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Burnable *ERC20BurnableCallerSession) Symbol() (string, error) { + return _ERC20Burnable.Contract.Symbol(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, from, to, value) +} + +// ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract. +type ERC20BurnableApprovalIterator struct { + Event *ERC20BurnableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract. +type ERC20BurnableApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) { + event := new(ERC20BurnableApproval) + if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract. +type ERC20BurnableTransferIterator struct { + Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20BurnableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20BurnableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20BurnableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20BurnableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract. +type ERC20BurnableTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) { + event := new(ERC20BurnableTransfer) + if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20custodynew.sol/erc20custodynew.go b/v2/pkg/erc20custodynew.sol/erc20custodynew.go new file mode 100644 index 00000000..bbd8cdd6 --- /dev/null +++ b/v2/pkg/erc20custodynew.sol/erc20custodynew.go @@ -0,0 +1,792 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20custodynew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. +var ERC20CustodyNewMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", +} + +// ERC20CustodyNewABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyNewMetaData.ABI instead. +var ERC20CustodyNewABI = ERC20CustodyNewMetaData.ABI + +// ERC20CustodyNewBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyNewMetaData.Bin instead. +var ERC20CustodyNewBin = ERC20CustodyNewMetaData.Bin + +// DeployERC20CustodyNew deploys a new Ethereum contract, binding an instance of ERC20CustodyNew to it. +func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20CustodyNew, error) { + parsed, err := ERC20CustodyNewMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewBin), backend, _gateway, _tssAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil +} + +// ERC20CustodyNew is an auto generated Go binding around an Ethereum contract. +type ERC20CustodyNew struct { + ERC20CustodyNewCaller // Read-only binding to the contract + ERC20CustodyNewTransactor // Write-only binding to the contract + ERC20CustodyNewFilterer // Log filterer for contract events +} + +// ERC20CustodyNewCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyNewCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyNewTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyNewFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20CustodyNewSession struct { + Contract *ERC20CustodyNew // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyNewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CustodyNewCallerSession struct { + Contract *ERC20CustodyNewCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20CustodyNewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20CustodyNewTransactorSession struct { + Contract *ERC20CustodyNewTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyNewRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyNewRaw struct { + Contract *ERC20CustodyNew // Generic contract binding to access the raw methods on +} + +// ERC20CustodyNewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyNewCallerRaw struct { + Contract *ERC20CustodyNewCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20CustodyNewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyNewTransactorRaw struct { + Contract *ERC20CustodyNewTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20CustodyNew creates a new instance of ERC20CustodyNew, bound to a specific deployed contract. +func NewERC20CustodyNew(address common.Address, backend bind.ContractBackend) (*ERC20CustodyNew, error) { + contract, err := bindERC20CustodyNew(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil +} + +// NewERC20CustodyNewCaller creates a new read-only instance of ERC20CustodyNew, bound to a specific deployed contract. +func NewERC20CustodyNewCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyNewCaller, error) { + contract, err := bindERC20CustodyNew(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyNewCaller{contract: contract}, nil +} + +// NewERC20CustodyNewTransactor creates a new write-only instance of ERC20CustodyNew, bound to a specific deployed contract. +func NewERC20CustodyNewTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyNewTransactor, error) { + contract, err := bindERC20CustodyNew(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyNewTransactor{contract: contract}, nil +} + +// NewERC20CustodyNewFilterer creates a new log filterer instance of ERC20CustodyNew, bound to a specific deployed contract. +func NewERC20CustodyNewFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyNewFilterer, error) { + contract, err := bindERC20CustodyNew(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20CustodyNewFilterer{contract: contract}, nil +} + +// bindERC20CustodyNew binds a generic wrapper to an already deployed contract. +func bindERC20CustodyNew(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyNewMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20CustodyNew *ERC20CustodyNewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyNew.Contract.ERC20CustodyNewCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20CustodyNew *ERC20CustodyNewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyNew.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.contract.Transact(opts, method, params...) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNew.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewSession) Gateway() (common.Address, error) { + return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) Gateway() (common.Address, error) { + return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNew.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNew.contract.Transact(opts, "withdraw", token, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNew *ERC20CustodyNewSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +} + +// ERC20CustodyNewWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdrawIterator struct { + Event *ERC20CustodyNewWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewWithdraw represents a Withdraw event raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdraw struct { + Token common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewWithdrawIterator{contract: _ERC20CustodyNew.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewWithdraw) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyNewWithdraw, error) { + event := new(ERC20CustodyNewWithdraw) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyNewWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdrawAndCallIterator struct { + Event *ERC20CustodyNewWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdrawAndCall struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndCallIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewWithdrawAndCallIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewWithdrawAndCall) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyNewWithdrawAndCall, error) { + event := new(ERC20CustodyNewWithdrawAndCall) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyNewWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdrawAndRevertIterator struct { + Event *ERC20CustodyNewWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyNew contract. +type ERC20CustodyNewWithdrawAndRevert struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndRevertIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewWithdrawAndRevertIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewWithdrawAndRevert) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyNewWithdrawAndRevert, error) { + event := new(ERC20CustodyNewWithdrawAndRevert) + if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go b/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go new file mode 100644 index 00000000..bad0ccec --- /dev/null +++ b/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go @@ -0,0 +1,875 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20custodynewechidnatest + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20CustodyNewEchidnaTestMetaData contains all meta data concerning the ERC20CustodyNewEchidnaTest contract. +var ERC20CustodyNewEchidnaTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", +} + +// ERC20CustodyNewEchidnaTestABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyNewEchidnaTestMetaData.ABI instead. +var ERC20CustodyNewEchidnaTestABI = ERC20CustodyNewEchidnaTestMetaData.ABI + +// ERC20CustodyNewEchidnaTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyNewEchidnaTestMetaData.Bin instead. +var ERC20CustodyNewEchidnaTestBin = ERC20CustodyNewEchidnaTestMetaData.Bin + +// DeployERC20CustodyNewEchidnaTest deploys a new Ethereum contract, binding an instance of ERC20CustodyNewEchidnaTest to it. +func DeployERC20CustodyNewEchidnaTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20CustodyNewEchidnaTest, error) { + parsed, err := ERC20CustodyNewEchidnaTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewEchidnaTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20CustodyNewEchidnaTest{ERC20CustodyNewEchidnaTestCaller: ERC20CustodyNewEchidnaTestCaller{contract: contract}, ERC20CustodyNewEchidnaTestTransactor: ERC20CustodyNewEchidnaTestTransactor{contract: contract}, ERC20CustodyNewEchidnaTestFilterer: ERC20CustodyNewEchidnaTestFilterer{contract: contract}}, nil +} + +// ERC20CustodyNewEchidnaTest is an auto generated Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTest struct { + ERC20CustodyNewEchidnaTestCaller // Read-only binding to the contract + ERC20CustodyNewEchidnaTestTransactor // Write-only binding to the contract + ERC20CustodyNewEchidnaTestFilterer // Log filterer for contract events +} + +// ERC20CustodyNewEchidnaTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewEchidnaTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewEchidnaTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyNewEchidnaTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyNewEchidnaTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20CustodyNewEchidnaTestSession struct { + Contract *ERC20CustodyNewEchidnaTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyNewEchidnaTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CustodyNewEchidnaTestCallerSession struct { + Contract *ERC20CustodyNewEchidnaTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20CustodyNewEchidnaTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20CustodyNewEchidnaTestTransactorSession struct { + Contract *ERC20CustodyNewEchidnaTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyNewEchidnaTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTestRaw struct { + Contract *ERC20CustodyNewEchidnaTest // Generic contract binding to access the raw methods on +} + +// ERC20CustodyNewEchidnaTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTestCallerRaw struct { + Contract *ERC20CustodyNewEchidnaTestCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20CustodyNewEchidnaTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyNewEchidnaTestTransactorRaw struct { + Contract *ERC20CustodyNewEchidnaTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20CustodyNewEchidnaTest creates a new instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyNewEchidnaTest(address common.Address, backend bind.ContractBackend) (*ERC20CustodyNewEchidnaTest, error) { + contract, err := bindERC20CustodyNewEchidnaTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTest{ERC20CustodyNewEchidnaTestCaller: ERC20CustodyNewEchidnaTestCaller{contract: contract}, ERC20CustodyNewEchidnaTestTransactor: ERC20CustodyNewEchidnaTestTransactor{contract: contract}, ERC20CustodyNewEchidnaTestFilterer: ERC20CustodyNewEchidnaTestFilterer{contract: contract}}, nil +} + +// NewERC20CustodyNewEchidnaTestCaller creates a new read-only instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyNewEchidnaTestCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyNewEchidnaTestCaller, error) { + contract, err := bindERC20CustodyNewEchidnaTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestCaller{contract: contract}, nil +} + +// NewERC20CustodyNewEchidnaTestTransactor creates a new write-only instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyNewEchidnaTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyNewEchidnaTestTransactor, error) { + contract, err := bindERC20CustodyNewEchidnaTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestTransactor{contract: contract}, nil +} + +// NewERC20CustodyNewEchidnaTestFilterer creates a new log filterer instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyNewEchidnaTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyNewEchidnaTestFilterer, error) { + contract, err := bindERC20CustodyNewEchidnaTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestFilterer{contract: contract}, nil +} + +// bindERC20CustodyNewEchidnaTest binds a generic wrapper to an already deployed contract. +func bindERC20CustodyNewEchidnaTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyNewEchidnaTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyNewEchidnaTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.contract.Transact(opts, method, params...) +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) EchidnaCaller(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "echidnaCaller") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) EchidnaCaller() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) EchidnaCaller() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) Gateway() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.Gateway(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) Gateway() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.Gateway(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TestERC20(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "testERC20") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TestERC20() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TestERC20(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) TestERC20() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TestERC20(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TssAddress(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) TssAddress() (common.Address, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TssAddress(&_ERC20CustodyNewEchidnaTest.CallOpts) +} + +// TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. +// +// Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) TestWithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "testWithdrawAndCall", to, amount, data) +} + +// TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. +// +// Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, to, amount, data) +} + +// TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. +// +// Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, to, amount, data) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdraw", token, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.Withdraw(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address token, address to, uint256 amount) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.Withdraw(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. +// +// Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. +// +// Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +} + +// ERC20CustodyNewEchidnaTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdrawIterator struct { + Event *ERC20CustodyNewEchidnaTestWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewEchidnaTestWithdraw represents a Withdraw event raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdraw struct { + Token common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestWithdrawIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewEchidnaTestWithdraw) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyNewEchidnaTestWithdraw, error) { + event := new(ERC20CustodyNewEchidnaTestWithdraw) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyNewEchidnaTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdrawAndCallIterator struct { + Event *ERC20CustodyNewEchidnaTestWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewEchidnaTestWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdrawAndCall struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawAndCallIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestWithdrawAndCallIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyNewEchidnaTestWithdrawAndCall, error) { + event := new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator struct { + Event *ERC20CustodyNewEchidnaTestWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyNewEchidnaTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyNewEchidnaTest contract. +type ERC20CustodyNewEchidnaTestWithdrawAndRevert struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyNewEchidnaTestWithdrawAndRevert, error) { + event := new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go new file mode 100644 index 00000000..8b0ea580 --- /dev/null +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -0,0 +1,2078 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. +var GatewayEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033", +} + +// GatewayEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMMetaData.ABI instead. +var GatewayEVMABI = GatewayEVMMetaData.ABI + +// GatewayEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMMetaData.Bin instead. +var GatewayEVMBin = GatewayEVMMetaData.Bin + +// DeployGatewayEVM deploys a new Ethereum contract, binding an instance of GatewayEVM to it. +func DeployGatewayEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVM, error) { + parsed, err := GatewayEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVM{GatewayEVMCaller: GatewayEVMCaller{contract: contract}, GatewayEVMTransactor: GatewayEVMTransactor{contract: contract}, GatewayEVMFilterer: GatewayEVMFilterer{contract: contract}}, nil +} + +// GatewayEVM is an auto generated Go binding around an Ethereum contract. +type GatewayEVM struct { + GatewayEVMCaller // Read-only binding to the contract + GatewayEVMTransactor // Write-only binding to the contract + GatewayEVMFilterer // Log filterer for contract events +} + +// GatewayEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMSession struct { + Contract *GatewayEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMCallerSession struct { + Contract *GatewayEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMTransactorSession struct { + Contract *GatewayEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMRaw struct { + Contract *GatewayEVM // Generic contract binding to access the raw methods on +} + +// GatewayEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMCallerRaw struct { + Contract *GatewayEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMTransactorRaw struct { + Contract *GatewayEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVM creates a new instance of GatewayEVM, bound to a specific deployed contract. +func NewGatewayEVM(address common.Address, backend bind.ContractBackend) (*GatewayEVM, error) { + contract, err := bindGatewayEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVM{GatewayEVMCaller: GatewayEVMCaller{contract: contract}, GatewayEVMTransactor: GatewayEVMTransactor{contract: contract}, GatewayEVMFilterer: GatewayEVMFilterer{contract: contract}}, nil +} + +// NewGatewayEVMCaller creates a new read-only instance of GatewayEVM, bound to a specific deployed contract. +func NewGatewayEVMCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMCaller, error) { + contract, err := bindGatewayEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMCaller{contract: contract}, nil +} + +// NewGatewayEVMTransactor creates a new write-only instance of GatewayEVM, bound to a specific deployed contract. +func NewGatewayEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMTransactor, error) { + contract, err := bindGatewayEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMTransactor{contract: contract}, nil +} + +// NewGatewayEVMFilterer creates a new log filterer instance of GatewayEVM, bound to a specific deployed contract. +func NewGatewayEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMFilterer, error) { + contract, err := bindGatewayEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMFilterer{contract: contract}, nil +} + +// bindGatewayEVM binds a generic wrapper to an already deployed contract. +func bindGatewayEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVM *GatewayEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVM.Contract.GatewayEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVM *GatewayEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVM.Contract.GatewayEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVM *GatewayEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVM.Contract.GatewayEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVM *GatewayEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVM *GatewayEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVM *GatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVM.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVM *GatewayEVMCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVM *GatewayEVMSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVM.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVM.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVM *GatewayEVMCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVM.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVM.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVM *GatewayEVMCaller) Custody(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "custody") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVM *GatewayEVMSession) Custody() (common.Address, error) { + return _GatewayEVM.Contract.Custody(&_GatewayEVM.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVM *GatewayEVMCallerSession) Custody() (common.Address, error) { + return _GatewayEVM.Contract.Custody(&_GatewayEVM.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVM *GatewayEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVM *GatewayEVMSession) Owner() (common.Address, error) { + return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVM *GatewayEVMCallerSession) Owner() (common.Address, error) { + return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVM.Contract.ProxiableUUID(&_GatewayEVM.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVM.Contract.ProxiableUUID(&_GatewayEVM.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVM *GatewayEVMCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVM *GatewayEVMSession) TssAddress() (common.Address, error) { + return _GatewayEVM.Contract.TssAddress(&_GatewayEVM.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVM *GatewayEVMCallerSession) TssAddress() (common.Address, error) { + return _GatewayEVM.Contract.TssAddress(&_GatewayEVM.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVM *GatewayEVMCaller) ZetaConnector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "zetaConnector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVM *GatewayEVMSession) ZetaConnector() (common.Address, error) { + return _GatewayEVM.Contract.ZetaConnector(&_GatewayEVM.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVM *GatewayEVMCallerSession) ZetaConnector() (common.Address, error) { + return _GatewayEVM.Contract.ZetaConnector(&_GatewayEVM.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVM *GatewayEVMCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVM *GatewayEVMSession) ZetaToken() (common.Address, error) { + return _GatewayEVM.Contract.ZetaToken(&_GatewayEVM.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVM *GatewayEVMCallerSession) ZetaToken() (common.Address, error) { + return _GatewayEVM.Contract.ZetaToken(&_GatewayEVM.CallOpts) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVM *GatewayEVMTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "call", receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVM *GatewayEVMSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.Call(&_GatewayEVM.TransactOpts, receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.Call(&_GatewayEVM.TransactOpts, receiver, payload) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVM *GatewayEVMTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "deposit", receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVM *GatewayEVMSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Deposit(&_GatewayEVM.TransactOpts, receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Deposit(&_GatewayEVM.TransactOpts, receiver) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVM *GatewayEVMTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "deposit0", receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVM *GatewayEVMSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Deposit0(&_GatewayEVM.TransactOpts, receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Deposit0(&_GatewayEVM.TransactOpts, receiver, amount, asset) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVM *GatewayEVMTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "depositAndCall", receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVM *GatewayEVMSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.DepositAndCall(&_GatewayEVM.TransactOpts, receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVM *GatewayEVMTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.DepositAndCall(&_GatewayEVM.TransactOpts, receiver, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVM *GatewayEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVM *GatewayEVMSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.DepositAndCall0(&_GatewayEVM.TransactOpts, receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.DepositAndCall0(&_GatewayEVM.TransactOpts, receiver, amount, asset, payload) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVM *GatewayEVMTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "execute", destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVM *GatewayEVMSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.Execute(&_GatewayEVM.TransactOpts, destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVM *GatewayEVMTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.Execute(&_GatewayEVM.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "executeRevert", destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.ExecuteRevert(&_GatewayEVM.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.ExecuteRevert(&_GatewayEVM.TransactOpts, destination, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "executeWithERC20", token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.ExecuteWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.ExecuteWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVM *GatewayEVMSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVM *GatewayEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVM *GatewayEVMSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVM *GatewayEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "revertWithERC20", token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.RevertWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.RevertWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVM *GatewayEVMTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "setConnector", _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVM *GatewayEVMSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVM *GatewayEVMTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "setCustody", _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVM *GatewayEVMSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVM *GatewayEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVM *GatewayEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.UpgradeToAndCall(&_GatewayEVM.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVM *GatewayEVMTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVM.Contract.UpgradeToAndCall(&_GatewayEVM.TransactOpts, newImplementation, data) +} + +// GatewayEVMCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVM contract. +type GatewayEVMCallIterator struct { + Event *GatewayEVMCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMCall represents a Call event raised by the GatewayEVM contract. +type GatewayEVMCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMCallIterator{contract: _GatewayEVM.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMCall) + if err := _GatewayEVM.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) ParseCall(log types.Log) (*GatewayEVMCall, error) { + event := new(GatewayEVMCall) + if err := _GatewayEVM.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVM contract. +type GatewayEVMDepositIterator struct { + Event *GatewayEVMDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMDeposit represents a Deposit event raised by the GatewayEVM contract. +type GatewayEVMDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMDepositIterator{contract: _GatewayEVM.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMDeposit) + if err := _GatewayEVM.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVM *GatewayEVMFilterer) ParseDeposit(log types.Log) (*GatewayEVMDeposit, error) { + event := new(GatewayEVMDeposit) + if err := _GatewayEVM.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVM contract. +type GatewayEVMExecutedIterator struct { + Event *GatewayEVMExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMExecuted represents a Executed event raised by the GatewayEVM contract. +type GatewayEVMExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMExecutedIterator{contract: _GatewayEVM.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMExecuted) + if err := _GatewayEVM.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) ParseExecuted(log types.Log) (*GatewayEVMExecuted, error) { + event := new(GatewayEVMExecuted) + if err := _GatewayEVM.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVM contract. +type GatewayEVMExecutedWithERC20Iterator struct { + Event *GatewayEVMExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVM contract. +type GatewayEVMExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMExecutedWithERC20Iterator{contract: _GatewayEVM.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMExecutedWithERC20) + if err := _GatewayEVM.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMExecutedWithERC20, error) { + event := new(GatewayEVMExecutedWithERC20) + if err := _GatewayEVM.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayEVM contract. +type GatewayEVMInitializedIterator struct { + Event *GatewayEVMInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInitialized represents a Initialized event raised by the GatewayEVM contract. +type GatewayEVMInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVM *GatewayEVMFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayEVMInitializedIterator, error) { + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GatewayEVMInitializedIterator{contract: _GatewayEVM.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVM *GatewayEVMFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayEVMInitialized) (event.Subscription, error) { + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInitialized) + if err := _GatewayEVM.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVM *GatewayEVMFilterer) ParseInitialized(log types.Log) (*GatewayEVMInitialized, error) { + event := new(GatewayEVMInitialized) + if err := _GatewayEVM.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVM contract. +type GatewayEVMOwnershipTransferredIterator struct { + Event *GatewayEVMOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVM contract. +type GatewayEVMOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVM *GatewayEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GatewayEVMOwnershipTransferredIterator{contract: _GatewayEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVM *GatewayEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMOwnershipTransferred) + if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVM *GatewayEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMOwnershipTransferred, error) { + event := new(GatewayEVMOwnershipTransferred) + if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVM contract. +type GatewayEVMRevertedIterator struct { + Event *GatewayEVMReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMReverted represents a Reverted event raised by the GatewayEVM contract. +type GatewayEVMReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMRevertedIterator{contract: _GatewayEVM.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMReverted) + if err := _GatewayEVM.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) ParseReverted(log types.Log) (*GatewayEVMReverted, error) { + event := new(GatewayEVMReverted) + if err := _GatewayEVM.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVM contract. +type GatewayEVMRevertedWithERC20Iterator struct { + Event *GatewayEVMRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVM contract. +type GatewayEVMRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMRevertedWithERC20Iterator{contract: _GatewayEVM.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMRevertedWithERC20) + if err := _GatewayEVM.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVM *GatewayEVMFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMRevertedWithERC20, error) { + event := new(GatewayEVMRevertedWithERC20) + if err := _GatewayEVM.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVM contract. +type GatewayEVMUpgradedIterator struct { + Event *GatewayEVMUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgraded represents a Upgraded event raised by the GatewayEVM contract. +type GatewayEVMUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVM *GatewayEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayEVMUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradedIterator{contract: _GatewayEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVM *GatewayEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgraded) + if err := _GatewayEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVM *GatewayEVMFilterer) ParseUpgraded(log types.Log) (*GatewayEVMUpgraded, error) { + event := new(GatewayEVMUpgraded) + if err := _GatewayEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go new file mode 100644 index 00000000..fb1c8309 --- /dev/null +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -0,0 +1,5357 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. +var GatewayEVMInboundTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061a674806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610c87565b6040516101b6919061687e565b60405180910390f35b6101c7610ce9565b6040516101b6919061691a565b61018f610e2b565b6101a9611298565b6101a96112f8565b61018f611358565b6101fc611755565b6040516101b69190616a80565b6102116118d7565b6040516101b69190616b1e565b6102266119a7565b6040516101b69190616b95565b61018f611aa2565b61018f611cbe565b610226611ea3565b610211611f9e565b61025b61206e565b60405190151581526020016101b6565b61018f612142565b61018f6122dc565b6101a961248b565b61018f6124eb565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c5b565b8261268d565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce9061679e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516106989061679e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754915191909416928101929092526044820152610800919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261270c565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690610884906167ab565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156108b7573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061090c906167b8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610948573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc1575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e2257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e0b578382906000526020600020018054610d7e90616c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610daa90616c6e565b8015610df75780601f10610dcc57610100808354040283529160200191610df7565b820191906000526020600020905b815481529060010190602001808311610dda57829003601f168201915b505050505081526020019060010190610d5f565b505050508152505081526020019060010190610d0d565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190616cbb565b9050610ec860008261268d565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561105e57600080fd5b505af1158015611072573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110c5928992909116908790616cf6565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361112693908216928992909116908790600401616d1e565b600060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190616cbb565b90506111f0848261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e9190616cbb565b9050611291856028546105719190616d55565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190616cbb565b90506113f560008261268d565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190616cbb565b90506116b4838261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190616cbb565b9050610c81846028546105719190616d55565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002090600202016040518060400160405290816000820180546117ac90616c6e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890616c6e565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161186c5790505b50505050508152505081526020019060010190611779565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002001805461191a90616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461194690616c6e565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050815260200190600101906118fb565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a8a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a375790505b505050505081525050815260200190600101906119cb565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bb357600080fd5b505af1158015611bc7573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c159087906000908790616cf6565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c6f92909116908690600401616d68565b6000604051808303818588803b158015611c8857600080fd5b505af1158015611c9c573d6000803e3d6000fd5b50506027546001600160a01b0316319250610c81915061057190508585616c5b565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dc157600080fd5b505af1158015611dd5573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e1e908590616d8a565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611e75929116908590600401616d68565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611291573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f335790505b50505050508152505081526020019060010190611ec7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e22578382906000526020600020018054611fe190616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90616c6e565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081526020019060010190611fc2565b60085460009060ff1615612086575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190616cbb565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122399060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122c29392831692889216908790600401616d1e565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123d39060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b1580156123ed57600080fd5b505af1158015612401573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124559216908690600401616d68565b6000604051808303818588803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190616cd4565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611e75565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156126f857600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127166167c5565b61272184848361272b565b9150505b92915050565b60008061273885846127a6565b905061279b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001612786929190616d68565b604051602081830303815290604052856127b2565b9150505b9392505050565b600061279f83836127e0565b60c081015151600090156127d6576127cf84848460c001516127fb565b905061279f565b6127cf84846129a1565b60006127ec8383612a8c565b61279f838360200151846127b2565b600080612806612a9c565b905060006128148683612b6f565b9050600061282b8260600151836020015185613015565b9050600061283b83838989613227565b90506000612848826140a4565b602081015181519192509060030b156128bb57898260400151604051602001612872929190616d9d565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128b291600401616d8a565b60405180910390fd5b60006128fe6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614273565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90612951908490600401616d8a565b602060405180830381865afa15801561296e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129929190616e1e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906129f6908790600401616d8a565b600060405180830381865afa158015612a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3b9190810190616f2f565b90506000612a698285604051602001612a55929190616f64565b604051602081830303815290604052614473565b90506001600160a01b038116612721578484604051602001612872929190616f93565b612a9882826000614486565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b2390849060040161703e565b600060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b689190810190617085565b9250505090565b612ba16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612bec6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612bf585614589565b60208201526000612c058661496e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c6f9190810190617085565b86838560200151604051602001612c8994939291906170ce565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612ce1908590600401616d8a565b600060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d269190810190617085565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d6e9084906004016171d2565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190616cd4565b612dc457816040516020016128729190617224565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e099084906004016172b6565b600060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e4e9190810190617085565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612e95908490600401617308565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190616cd4565b15612f6b576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f20908490600401617308565b600060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f659190810190617085565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612f90919061735a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fbc9291906173c6565b600060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130019190810190617085565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816130315790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613091576130916173eb565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106130e5576130e56173eb565b602002602001018190525084604051602001613101919061741a565b60405160208183030381529060405281600281518110613123576131236173eb565b60200260200101819052508260405160200161313f9190617486565b60405160208183030381529060405281600381518110613161576131616173eb565b60200260200101819052506000613177826140a4565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132089060408051808201825260008082526020918201528151808301909252845182528085019082015290614bf1565b61321d578560405160200161287291906174c7565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613277565b511590565b6133eb57826020015115613333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128b2565b8260c00151156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128b2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161340457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061345f90617558565b935060ff1681518110613474576134746173eb565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134c59190617577565b6040516020818303038152906040528282806134e090617558565b935060ff16815181106134f5576134f56173eb565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061354290617558565b935060ff1681518110613557576135576173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135a490617558565b935060ff16815181106135b9576135b96173eb565b602002602001018190525087602001518282806135d590617558565b935060ff16815181106135ea576135ea6173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061363790617558565b935060ff168151811061364c5761364c6173eb565b60209081029190910101528751828261366481617558565b935060ff1681518110613679576136796173eb565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136c690617558565b935060ff16815181106136db576136db6173eb565b60200260200101819052506136ef46614c52565b82826136fa81617558565b935060ff168151811061370f5761370f6173eb565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061375c90617558565b935060ff1681518110613771576137716173eb565b60200260200101819052508682828061378990617558565b935060ff168151811061379e5761379e6173eb565b60209081029190910101528551156138c55760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826137ef81617558565b935060ff1681518110613804576138046173eb565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613854908990600401616d8a565b600060405180830381865afa158015613871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138999190810190617085565b82826138a481617558565b935060ff16815181106138b9576138b96173eb565b60200260200101819052505b8460200151156139955760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261390e81617558565b935060ff1681518110613923576139236173eb565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061397090617558565b935060ff1681518110613985576139856173eb565b6020026020010181905250613b5c565b6139cd6132728660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a605760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a1081617558565b935060ff1681518110613a2557613a256173eb565b60200260200101819052508460a00151604051602001613a45919061741a565b60405160208183030381529060405282828061397090617558565b8460c00151158015613aa3575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613aa190511590565b155b15613b5c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613ae781617558565b935060ff1681518110613afc57613afc6173eb565b6020026020010181905250613b1088614cf2565b604051602001613b20919061741a565b604051602081830303815290604052828280613b3b90617558565b935060ff1681518110613b5057613b506173eb565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613b9090511590565b613c255760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bd381617558565b935060ff1681518110613be857613be86173eb565b60200260200101819052508460400151828280613c0490617558565b935060ff1681518110613c1957613c196173eb565b60200260200101819052505b606085015115613d465760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c6e81617558565b935060ff1681518110613c8357613c836173eb565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613cf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1a9190810190617085565b8282613d2581617558565b935060ff1681518110613d3a57613d3a6173eb565b60200260200101819052505b60e08501515115613ded5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613d9081617558565b935060ff1681518110613da557613da56173eb565b6020026020010181905250613dc18560e0015160000151614c52565b8282613dcc81617558565b935060ff1681518110613de157613de16173eb565b60200260200101819052505b60e08501516020015115613e975760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e3a81617558565b935060ff1681518110613e4f57613e4f6173eb565b6020026020010181905250613e6b8560e0015160200151614c52565b8282613e7681617558565b935060ff1681518110613e8b57613e8b6173eb565b60200260200101819052505b60e08501516040015115613f415760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613ee481617558565b935060ff1681518110613ef957613ef96173eb565b6020026020010181905250613f158560e0015160400151614c52565b8282613f2081617558565b935060ff1681518110613f3557613f356173eb565b60200260200101819052505b60e08501516060015115613feb5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613f8e81617558565b935060ff1681518110613fa357613fa36173eb565b6020026020010181905250613fbf8560e0015160600151614c52565b8282613fca81617558565b935060ff1681518110613fdf57613fdf6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561400957614009616e47565b60405190808252806020026020018201604052801561403c57816020015b60608152602001906001900390816140275790505b50905060005b8260ff168160ff16101561409557838160ff1681518110614065576140656173eb565b6020026020010151828260ff1681518110614082576140826173eb565b6020908102919091010152600101614042565b5093505050505b949350505050565b6140cb6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614151918691016175e2565b600060405180830381865afa15801561416e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141969190810190617085565b905060006141a486836157e1565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016141d49190616b1e565b6000604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261421b9190810190617629565b805190915060030b158015906142345750602081015151155b80156142435750604081015151155b1561321d578160008151811061425b5761425b6173eb565b602002602001015160405160200161287291906176df565b606060006142a88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506142df9082905b90615936565b1561443c57600061435c82614356846143506143228a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061595d565b906159bf565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143c0908290615936565b1561442a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614427905b8290615a44565b90505b61443381615a6a565b9250505061279f565b82156144555784846040516020016128729291906178cb565b505060408051602081019091526000815261279f565b509392505050565b6000808251602084016000f09392505050565b8160a001511561449557505050565b60006144a2848484615ad3565b905060006144af826140a4565b602081015181519192509060030b15801561454b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261454b906040805180820182526000808252602091820152815180830190925284518252808501908201526142d9565b1561455857505050505050565b604082015151156145785781604001516040516020016128729190617972565b8060405160200161287291906179d0565b606060006145be8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614623905b8290614bf1565b1561469257604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d90839061606e565b615a6a565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146f4905b82906160f8565b6001036147c157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261475a90614420565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d905b8390615a44565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148209061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614888908390616192565b90506000816001835161489b9190616d55565b815181106148ab576148ab6173eb565b6020026020010151905061494e61468d6149216040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061606e565b95945050505050565b826040516020016128729190617a3b565b50919050565b606060006149a38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a059061461c565b15614a135761279f81615a6a565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a72906146ed565b600103614adc57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d906147ba565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b3b9061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614ba3908390616192565b9050600181511115614bdf578060028251614bbe9190616d55565b81518110614bce57614bce6173eb565b602002602001015192505050919050565b50826040516020016128729190617a3b565b805182516000911115614c0657506000612725565b81518351602085015160009291614c1c91616c5b565b614c269190616d55565b905082602001518103614c3d576001915050612725565b82516020840151819020912014905092915050565b60606000614c5f83616237565b600101905060008167ffffffffffffffff811115614c7f57614c7f616e47565b6040519080825280601f01601f191660200182016040528015614ca9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cb357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614d7e905b8290616319565b15614dbe57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e1d90614d77565b15614e5d57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ebc90614d77565b15614efc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f5b90614d77565b80614fc05750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fc090614d77565b1561500057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261505f90614d77565b806150c45750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150c490614d77565b1561510457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261516390614d77565b806151c85750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151c890614d77565b1561520857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261526790614d77565b806152cc5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152cc90614d77565b1561530c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261536b90614d77565b156153ab57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261540a90614d77565b1561544a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154a990614d77565b156154e957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261554890614d77565b1561558857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e790614d77565b1561562757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261568690614d77565b806156eb5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156eb90614d77565b1561572b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578a90614d77565b156157ca57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516128729290602001617b19565b60608060005b845181101561586c5781858281518110615803576158036173eb565b602002602001015160405160200161581c929190616f64565b60405160208183030381529060405291506001855161583b9190616d55565b811461586457816040516020016158529190617c82565b60405160208183030381529060405291505b6001016157e7565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161588557905050905083816000815181106158b0576158b06173eb565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110615904576159046173eb565b60200260200101819052508181600281518110615923576159236173eb565b6020908102919091010152949350505050565b6020808301518351835192840151600093615954929184919061632d565b14159392505050565b6040805180820190915260008082526020820152600061598f846000015185602001518560000151866020015161643e565b90508360200151816159a19190616d55565b845185906159b0908390616d55565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156159e4575081612725565b6020808301519084015160019114615a0b5750815160208481015190840151829020919020145b8015615a3c57825184518590615a22908390616d55565b9052508251602085018051615a38908390616c5b565b9052505b509192915050565b6040805180820190915260008082526020820152615a6383838361655e565b5092915050565b60606000826000015167ffffffffffffffff811115615a8b57615a8b616e47565b6040519080825280601f01601f191660200182016040528015615ab5576020820181803683370190505b5090506000602082019050615a638185602001518660000151616609565b60606000615adf612a9c565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615afc57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b5790617558565b935060ff1681518110615b6c57615b6c6173eb565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615bbd9190617cc3565b604051602081830303815290604052828280615bd890617558565b935060ff1681518110615bed57615bed6173eb565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c3a90617558565b935060ff1681518110615c4f57615c4f6173eb565b602002602001018190525082604051602001615c6b9190617486565b604051602081830303815290604052828280615c8690617558565b935060ff1681518110615c9b57615c9b6173eb565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615ce890617558565b935060ff1681518110615cfd57615cfd6173eb565b6020026020010181905250615d128784616683565b8282615d1d81617558565b935060ff1681518110615d3257615d326173eb565b602090810291909101015285515115615dde5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615d8481617558565b935060ff1681518110615d9957615d996173eb565b6020026020010181905250615db2866000015184616683565b8282615dbd81617558565b935060ff1681518110615dd257615dd26173eb565b60200260200101819052505b856080015115615e4c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e2781617558565b935060ff1681518110615e3c57615e3c6173eb565b6020026020010181905250615eb2565b8415615eb25760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615e9181617558565b935060ff1681518110615ea657615ea66173eb565b60200260200101819052505b60408601515115615f4e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615efc81617558565b935060ff1681518110615f1157615f116173eb565b60200260200101819052508560400151828280615f2d90617558565b935060ff1681518110615f4257615f426173eb565b60200260200101819052505b856060015115615fb85760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615f9781617558565b935060ff1681518110615fac57615fac6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615fd657615fd6616e47565b60405190808252806020026020018201604052801561600957816020015b6060815260200190600190039081615ff45790505b50905060005b8260ff168160ff16101561606257838160ff1681518110616032576160326173eb565b6020026020010151828260ff168151811061604f5761604f6173eb565b602090810291909101015260010161600f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616093575081612725565b815183516020850151600092916160a991616c5b565b6160b39190616d55565b602084015190915060019082146160d4575082516020840151819020908220145b80156160ef578351855186906160eb908390616d55565b9052505b50929392505050565b600080826000015161611c856000015186602001518660000151876020015161643e565b6161269190616c5b565b90505b8351602085015161613a9190616c5b565b8111615a63578161614a81617d08565b92505082600001516161818560200151836161659190616d55565b86516161719190616d55565b838660000151876020015161643e565b61618b9190616c5b565b9050616129565b606060006161a084846160f8565b6161ab906001616c5b565b67ffffffffffffffff8111156161c3576161c3616e47565b6040519080825280602002602001820160405280156161f657816020015b60608152602001906001900390816161e15790505b50905060005b815181101561446b5761621261468d8686615a44565b828281518110616224576162246173eb565b60209081029190910101526001016161fc565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616280577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162ac576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162ca57662386f26fc10000830492506010015b6305f5e10083106162e2576305f5e100830492506008015b61271083106162f657612710830492506004015b60648310616308576064830492506002015b600a83106127255760010192915050565b600061632583836166c3565b159392505050565b60008085841161643457602084116163e05760008415616378576001616354866020616d55565b61635f906008617d22565b61636a906002617e20565b6163749190616d55565b1990505b83518116856163878989616c5b565b6163919190616d55565b805190935082165b8181146163cb578784116163b3578794505050505061409c565b836163bd81617e2c565b945050828451169050616399565b6163d58785616c5b565b94505050505061409c565b8383206163ed8588616d55565b6163f79087616c5b565b91505b8582106164325784822080820361641f576164158684616c5b565b935050505061409c565b61642a600184616d55565b9250506163fa565b505b5092949350505050565b6000838186851161654957602085116164f8576000851561648a576001616466876020616d55565b616471906008617d22565b61647c906002617e20565b6164869190616d55565b1990505b8451811660008761649b8b8b616c5b565b6164a59190616d55565b855190915083165b8281146164ea578186106164d2576164c58b8b616c5b565b965050505050505061409c565b856164dc81617d08565b9650508386511690506164ad565b85965050505050505061409c565b508383206000905b61650a8689616d55565b821161654757858320808203616526578394505050505061409c565b616531600185616c5b565b935050818061653f90617d08565b925050616500565b505b6165538787616c5b565b979650505050505050565b60408051808201909152600080825260208201526000616590856000015186602001518660000151876020015161643e565b6020808701805191860191909152519091506165ac9082616d55565b8352845160208601516165bf9190616c5b565b81036165ce5760008552616600565b835183516165dc9190616c5b565b855186906165eb908390616d55565b90525083516165fa9082616c5b565b60208601525b50909392505050565b602081106166415781518352616620602084616c5b565b925061662d602083616c5b565b915061663a602082616d55565b9050616609565b6000198115616670576001616657836020616d55565b61666390610100617e20565b61666d9190616d55565b90505b9151835183169219169190911790915250565b606060006166918484612b6f565b80516020808301516040519394506166ab93909101617e43565b60405160208183030381529060405291505092915050565b81518151600091908111156166d6575081515b6020808501519084015160005b8381101561678f578251825180821461675f57600019602087101561673e57600184616710896020616d55565b61671a9190616c5b565b616725906008617d22565b616730906002617e20565b61673a9190616d55565b1990505b818116838216818103911461675c5797506127259650505050505050565b50505b61676a602086616c5b565b9450616777602085616c5b565b935050506020816167889190616c5b565b90506166e3565b508451865161321d9190617e9b565b610c9f80617ebc83390190565b610b4a80618b5b83390190565b610f9a806196a583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161680861680d565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168086040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168bf5783516001600160a01b0316835260209384019390920191600101616898565b509095945050505050565b60005b838110156168e55781810151838201526020016168cd565b50506000910152565b600081518084526169068160208601602086016168ca565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156169fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526169e68486516168ee565b60209586019590945092909201916001016169ac565b509197505050602094850194929092019150600101616942565b50929695505050505050565b600081518084526020840193506020830160005b82811015616a765781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a36565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616aec60408801826168ee565b9050602082015191508681036020880152616b078183616a22565b965050506020938401939190910190600101616aa8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616b808583516168ee565b94506020938401939190910190600101616b46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c166040870182616a22565b9550506020938401939190910190600101616bbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561272557612725616c2c565b600181811c90821680616c8257607f821691505b602082108103614968577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616ccd57600080fd5b5051919050565b600060208284031215616ce657600080fd5b8151801515811461279f57600080fd5b8381526001600160a01b038316602082015260606040820152600061494e60608301846168ee565b6001600160a01b03851681528360208201526001600160a01b038316604082015260806060820152600061321d60808301846168ee565b8181038181111561272557612725616c2c565b6001600160a01b038316815260406020820152600061409c60408301846168ee565b60208152600061279f60208301846168ee565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616dd581601a8501602088016168ca565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e1281601c8401602088016168ca565b01601c01949350505050565b600060208284031215616e3057600080fd5b81516001600160a01b038116811461279f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616e9957616e99616e47565b60405290565b60008067ffffffffffffffff841115616eba57616eba616e47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616ee957616ee9616e47565b604052838152905080828401851015616f0157600080fd5b61446b8460208301856168ca565b600082601f830112616f2057600080fd5b61279f83835160208501616e9f565b600060208284031215616f4157600080fd5b815167ffffffffffffffff811115616f5857600080fd5b61272184828501616f0f565b60008351616f768184602088016168ca565b835190830190616f8a8183602088016168ca565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616fcb81601a8501602088016168ca565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170088160338401602088016168ca565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561709757600080fd5b815167ffffffffffffffff8111156170ae57600080fd5b8201601f810184136170bf57600080fd5b61272184825160208401616e9f565b600085516170e0818460208a016168ca565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161711a816001840160208a016168ca565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171588160028401602089016168ca565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161719a8160028401602088016168ca565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006171e560408301846168ee565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161725c81601f8501602087016168ca565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172c960408301846168ee565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061731b60408301846168ee565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173928160148501602087016168ca565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006173d960408301856168ee565b828103602084015261279b81856168ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516174528160018501602087016168ca565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174988184602087016168ca565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161754b81604b8501602087016168ca565b91909101604b0192915050565b600060ff821660ff810361756e5761756e616c2c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561763b57600080fd5b815167ffffffffffffffff81111561765257600080fd5b82016060818503121561766457600080fd5b61766c616e76565b81518060030b811461767d57600080fd5b8152602082015167ffffffffffffffff81111561769957600080fd5b6176a586828501616f0f565b602083015250604082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f0f565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161773d8160218501602087016168ca565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179298160218501602088016168ca565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161796681602e8401602088016168ca565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a2e8160228501602087016168ca565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a7381600e8501602087016168ca565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b518160188501602088016168ca565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617b8e81601c8401602088016168ca565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617c948184602087016168ca565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617cfb81601c8501602087016168ca565b91909101601c0192915050565b60006000198203617d1b57617d1b616c2c565b5060010190565b808202811582820484141761272557612725616c2c565b6001815b6001841115617d7457808504811115617d5857617d58616c2c565b6001841615617d6657908102905b60019390931c928002617d3d565b935093915050565b600082617d8b57506001612725565b81617d9857506000612725565b8160018114617dae5760028114617db857617dd4565b6001915050612725565b60ff841115617dc957617dc9616c2c565b50506001821b612725565b5060208310610133831016604e8410600b8410161715617df7575081810a612725565b617e046000198484617d39565b8060001904821115617e1857617e18616c2c565b029392505050565b600061279f8383617d7c565b600081617e3b57617e3b616c2c565b506000190190565b60008351617e558184602088016168ca565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617e8f8160018401602088016168ca565b01600101949350505050565b8181036000831280158383131683831282161715615a6357615a63616c2c56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033a2646970667358221220ad698860648ef94fdea10e636864a1b938e2e94a1b9b7faa26313a8246d5453e64736f6c634300081a0033", +} + +// GatewayEVMInboundTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMInboundTestMetaData.ABI instead. +var GatewayEVMInboundTestABI = GatewayEVMInboundTestMetaData.ABI + +// GatewayEVMInboundTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMInboundTestMetaData.Bin instead. +var GatewayEVMInboundTestBin = GatewayEVMInboundTestMetaData.Bin + +// DeployGatewayEVMInboundTest deploys a new Ethereum contract, binding an instance of GatewayEVMInboundTest to it. +func DeployGatewayEVMInboundTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMInboundTest, error) { + parsed, err := GatewayEVMInboundTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMInboundTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMInboundTest{GatewayEVMInboundTestCaller: GatewayEVMInboundTestCaller{contract: contract}, GatewayEVMInboundTestTransactor: GatewayEVMInboundTestTransactor{contract: contract}, GatewayEVMInboundTestFilterer: GatewayEVMInboundTestFilterer{contract: contract}}, nil +} + +// GatewayEVMInboundTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMInboundTest struct { + GatewayEVMInboundTestCaller // Read-only binding to the contract + GatewayEVMInboundTestTransactor // Write-only binding to the contract + GatewayEVMInboundTestFilterer // Log filterer for contract events +} + +// GatewayEVMInboundTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMInboundTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMInboundTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMInboundTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMInboundTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMInboundTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMInboundTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMInboundTestSession struct { + Contract *GatewayEVMInboundTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMInboundTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMInboundTestCallerSession struct { + Contract *GatewayEVMInboundTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMInboundTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMInboundTestTransactorSession struct { + Contract *GatewayEVMInboundTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMInboundTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMInboundTestRaw struct { + Contract *GatewayEVMInboundTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMInboundTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMInboundTestCallerRaw struct { + Contract *GatewayEVMInboundTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMInboundTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMInboundTestTransactorRaw struct { + Contract *GatewayEVMInboundTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMInboundTest creates a new instance of GatewayEVMInboundTest, bound to a specific deployed contract. +func NewGatewayEVMInboundTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMInboundTest, error) { + contract, err := bindGatewayEVMInboundTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTest{GatewayEVMInboundTestCaller: GatewayEVMInboundTestCaller{contract: contract}, GatewayEVMInboundTestTransactor: GatewayEVMInboundTestTransactor{contract: contract}, GatewayEVMInboundTestFilterer: GatewayEVMInboundTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMInboundTestCaller creates a new read-only instance of GatewayEVMInboundTest, bound to a specific deployed contract. +func NewGatewayEVMInboundTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMInboundTestCaller, error) { + contract, err := bindGatewayEVMInboundTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestCaller{contract: contract}, nil +} + +// NewGatewayEVMInboundTestTransactor creates a new write-only instance of GatewayEVMInboundTest, bound to a specific deployed contract. +func NewGatewayEVMInboundTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMInboundTestTransactor, error) { + contract, err := bindGatewayEVMInboundTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMInboundTestFilterer creates a new log filterer instance of GatewayEVMInboundTest, bound to a specific deployed contract. +func NewGatewayEVMInboundTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMInboundTestFilterer, error) { + contract, err := bindGatewayEVMInboundTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMInboundTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMInboundTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMInboundTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMInboundTest.Contract.GatewayEVMInboundTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.GatewayEVMInboundTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.GatewayEVMInboundTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMInboundTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) ISTEST() (bool, error) { + return _GatewayEVMInboundTest.Contract.ISTEST(&_GatewayEVMInboundTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) ISTEST() (bool, error) { + return _GatewayEVMInboundTest.Contract.ISTEST(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMInboundTest.Contract.ExcludeArtifacts(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMInboundTest.Contract.ExcludeArtifacts(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.ExcludeContracts(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.ExcludeContracts(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMInboundTest.Contract.ExcludeSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMInboundTest.Contract.ExcludeSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.ExcludeSenders(&_GatewayEVMInboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.ExcludeSenders(&_GatewayEVMInboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) Failed() (bool, error) { + return _GatewayEVMInboundTest.Contract.Failed(&_GatewayEVMInboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) Failed() (bool, error) { + return _GatewayEVMInboundTest.Contract.Failed(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMInboundTest.Contract.TargetArtifactSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMInboundTest.Contract.TargetArtifactSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMInboundTest.Contract.TargetArtifacts(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMInboundTest.Contract.TargetArtifacts(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.TargetContracts(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.TargetContracts(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMInboundTest.Contract.TargetInterfaces(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMInboundTest.Contract.TargetInterfaces(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMInboundTest.Contract.TargetSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMInboundTest.Contract.TargetSelectors(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMInboundTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.TargetSenders(&_GatewayEVMInboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMInboundTest.Contract.TargetSenders(&_GatewayEVMInboundTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.SetUp(&_GatewayEVMInboundTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.SetUp(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestCallWithPayload is a paid mutator transaction binding the contract method 0xaa030c1c. +// +// Solidity: function testCallWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestCallWithPayload(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testCallWithPayload") +} + +// TestCallWithPayload is a paid mutator transaction binding the contract method 0xaa030c1c. +// +// Solidity: function testCallWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestCallWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestCallWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestCallWithPayload is a paid mutator transaction binding the contract method 0xaa030c1c. +// +// Solidity: function testCallWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestCallWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestCallWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositERC20ToCustody is a paid mutator transaction binding the contract method 0x6459542a. +// +// Solidity: function testDepositERC20ToCustody() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestDepositERC20ToCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testDepositERC20ToCustody") +} + +// TestDepositERC20ToCustody is a paid mutator transaction binding the contract method 0x6459542a. +// +// Solidity: function testDepositERC20ToCustody() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestDepositERC20ToCustody() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositERC20ToCustody(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositERC20ToCustody is a paid mutator transaction binding the contract method 0x6459542a. +// +// Solidity: function testDepositERC20ToCustody() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestDepositERC20ToCustody() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositERC20ToCustody(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositERC20ToCustodyWithPayload is a paid mutator transaction binding the contract method 0x30f7c04f. +// +// Solidity: function testDepositERC20ToCustodyWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestDepositERC20ToCustodyWithPayload(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testDepositERC20ToCustodyWithPayload") +} + +// TestDepositERC20ToCustodyWithPayload is a paid mutator transaction binding the contract method 0x30f7c04f. +// +// Solidity: function testDepositERC20ToCustodyWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestDepositERC20ToCustodyWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositERC20ToCustodyWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositERC20ToCustodyWithPayload is a paid mutator transaction binding the contract method 0x30f7c04f. +// +// Solidity: function testDepositERC20ToCustodyWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestDepositERC20ToCustodyWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositERC20ToCustodyWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositEthToTss is a paid mutator transaction binding the contract method 0x0724d8e3. +// +// Solidity: function testDepositEthToTss() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestDepositEthToTss(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testDepositEthToTss") +} + +// TestDepositEthToTss is a paid mutator transaction binding the contract method 0x0724d8e3. +// +// Solidity: function testDepositEthToTss() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestDepositEthToTss() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositEthToTss(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositEthToTss is a paid mutator transaction binding the contract method 0x0724d8e3. +// +// Solidity: function testDepositEthToTss() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestDepositEthToTss() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositEthToTss(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositEthToTssWithPayload is a paid mutator transaction binding the contract method 0x9fd1e597. +// +// Solidity: function testDepositEthToTssWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestDepositEthToTssWithPayload(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testDepositEthToTssWithPayload") +} + +// TestDepositEthToTssWithPayload is a paid mutator transaction binding the contract method 0x9fd1e597. +// +// Solidity: function testDepositEthToTssWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestDepositEthToTssWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositEthToTssWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestDepositEthToTssWithPayload is a paid mutator transaction binding the contract method 0x9fd1e597. +// +// Solidity: function testDepositEthToTssWithPayload() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestDepositEthToTssWithPayload() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestDepositEthToTssWithPayload(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositERC20ToCustodyIfAmountIs0 is a paid mutator transaction binding the contract method 0xf96c02df. +// +// Solidity: function testFailDepositERC20ToCustodyIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestFailDepositERC20ToCustodyIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testFailDepositERC20ToCustodyIfAmountIs0") +} + +// TestFailDepositERC20ToCustodyIfAmountIs0 is a paid mutator transaction binding the contract method 0xf96c02df. +// +// Solidity: function testFailDepositERC20ToCustodyIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestFailDepositERC20ToCustodyIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositERC20ToCustodyIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositERC20ToCustodyIfAmountIs0 is a paid mutator transaction binding the contract method 0xf96c02df. +// +// Solidity: function testFailDepositERC20ToCustodyIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestFailDepositERC20ToCustodyIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositERC20ToCustodyIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xbb93f11e. +// +// Solidity: function testFailDepositERC20ToCustodyWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testFailDepositERC20ToCustodyWithPayloadIfAmountIs0") +} + +// TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xbb93f11e. +// +// Solidity: function testFailDepositERC20ToCustodyWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xbb93f11e. +// +// Solidity: function testFailDepositERC20ToCustodyWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositERC20ToCustodyWithPayloadIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositEthToTssIfAmountIs0 is a paid mutator transaction binding the contract method 0x06978ca3. +// +// Solidity: function testFailDepositEthToTssIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestFailDepositEthToTssIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testFailDepositEthToTssIfAmountIs0") +} + +// TestFailDepositEthToTssIfAmountIs0 is a paid mutator transaction binding the contract method 0x06978ca3. +// +// Solidity: function testFailDepositEthToTssIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestFailDepositEthToTssIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositEthToTssIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositEthToTssIfAmountIs0 is a paid mutator transaction binding the contract method 0x06978ca3. +// +// Solidity: function testFailDepositEthToTssIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestFailDepositEthToTssIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositEthToTssIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositEthToTssWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xc13d738f. +// +// Solidity: function testFailDepositEthToTssWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactor) TestFailDepositEthToTssWithPayloadIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMInboundTest.contract.Transact(opts, "testFailDepositEthToTssWithPayloadIfAmountIs0") +} + +// TestFailDepositEthToTssWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xc13d738f. +// +// Solidity: function testFailDepositEthToTssWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestSession) TestFailDepositEthToTssWithPayloadIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositEthToTssWithPayloadIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// TestFailDepositEthToTssWithPayloadIfAmountIs0 is a paid mutator transaction binding the contract method 0xc13d738f. +// +// Solidity: function testFailDepositEthToTssWithPayloadIfAmountIs0() returns() +func (_GatewayEVMInboundTest *GatewayEVMInboundTestTransactorSession) TestFailDepositEthToTssWithPayloadIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMInboundTest.Contract.TestFailDepositEthToTssWithPayloadIfAmountIs0(&_GatewayEVMInboundTest.TransactOpts) +} + +// GatewayEVMInboundTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestCallIterator struct { + Event *GatewayEVMInboundTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestCall represents a Call event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMInboundTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestCallIterator{contract: _GatewayEVMInboundTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestCall) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseCall(log types.Log) (*GatewayEVMInboundTestCall, error) { + event := new(GatewayEVMInboundTestCall) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestDepositIterator struct { + Event *GatewayEVMInboundTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestDeposit represents a Deposit event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMInboundTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestDepositIterator{contract: _GatewayEVMInboundTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestDeposit) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMInboundTestDeposit, error) { + event := new(GatewayEVMInboundTestDeposit) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestExecutedIterator struct { + Event *GatewayEVMInboundTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestExecuted represents a Executed event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMInboundTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestExecutedIterator{contract: _GatewayEVMInboundTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestExecuted) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMInboundTestExecuted, error) { + event := new(GatewayEVMInboundTestExecuted) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestExecutedWithERC20Iterator struct { + Event *GatewayEVMInboundTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMInboundTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestExecutedWithERC20Iterator{contract: _GatewayEVMInboundTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestExecutedWithERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMInboundTestExecutedWithERC20, error) { + event := new(GatewayEVMInboundTestExecutedWithERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedERC20Iterator struct { + Event *GatewayEVMInboundTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReceivedERC20 represents a ReceivedERC20 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*GatewayEVMInboundTestReceivedERC20Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestReceivedERC20Iterator{contract: _GatewayEVMInboundTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReceivedERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReceivedERC20(log types.Log) (*GatewayEVMInboundTestReceivedERC20, error) { + event := new(GatewayEVMInboundTestReceivedERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedNoParamsIterator struct { + Event *GatewayEVMInboundTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReceivedNoParams represents a ReceivedNoParams event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*GatewayEVMInboundTestReceivedNoParamsIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestReceivedNoParamsIterator{contract: _GatewayEVMInboundTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReceivedNoParams) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReceivedNoParams(log types.Log) (*GatewayEVMInboundTestReceivedNoParams, error) { + event := new(GatewayEVMInboundTestReceivedNoParams) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedNonPayableIterator struct { + Event *GatewayEVMInboundTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReceivedNonPayable represents a ReceivedNonPayable event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*GatewayEVMInboundTestReceivedNonPayableIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestReceivedNonPayableIterator{contract: _GatewayEVMInboundTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReceivedNonPayable) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReceivedNonPayable(log types.Log) (*GatewayEVMInboundTestReceivedNonPayable, error) { + event := new(GatewayEVMInboundTestReceivedNonPayable) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedPayableIterator struct { + Event *GatewayEVMInboundTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReceivedPayable represents a ReceivedPayable event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*GatewayEVMInboundTestReceivedPayableIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestReceivedPayableIterator{contract: _GatewayEVMInboundTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReceivedPayable) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReceivedPayable(log types.Log) (*GatewayEVMInboundTestReceivedPayable, error) { + event := new(GatewayEVMInboundTestReceivedPayable) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedRevertIterator struct { + Event *GatewayEVMInboundTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReceivedRevert represents a ReceivedRevert event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*GatewayEVMInboundTestReceivedRevertIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestReceivedRevertIterator{contract: _GatewayEVMInboundTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReceivedRevert) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReceivedRevert(log types.Log) (*GatewayEVMInboundTestReceivedRevert, error) { + event := new(GatewayEVMInboundTestReceivedRevert) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestRevertedIterator struct { + Event *GatewayEVMInboundTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestReverted represents a Reverted event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMInboundTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestRevertedIterator{contract: _GatewayEVMInboundTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestReverted) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseReverted(log types.Log) (*GatewayEVMInboundTestReverted, error) { + event := new(GatewayEVMInboundTestReverted) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestRevertedWithERC20Iterator struct { + Event *GatewayEVMInboundTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMInboundTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestRevertedWithERC20Iterator{contract: _GatewayEVMInboundTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestRevertedWithERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMInboundTestRevertedWithERC20, error) { + event := new(GatewayEVMInboundTestRevertedWithERC20) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogIterator struct { + Event *GatewayEVMInboundTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLog represents a Log event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogIterator{contract: _GatewayEVMInboundTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLog) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLog(log types.Log) (*GatewayEVMInboundTestLog, error) { + event := new(GatewayEVMInboundTestLog) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogAddressIterator struct { + Event *GatewayEVMInboundTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogAddress represents a LogAddress event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogAddressIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogAddressIterator{contract: _GatewayEVMInboundTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogAddress) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogAddress(log types.Log) (*GatewayEVMInboundTestLogAddress, error) { + event := new(GatewayEVMInboundTestLogAddress) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArrayIterator struct { + Event *GatewayEVMInboundTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogArray represents a LogArray event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogArrayIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogArrayIterator{contract: _GatewayEVMInboundTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogArray) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogArray(log types.Log) (*GatewayEVMInboundTestLogArray, error) { + event := new(GatewayEVMInboundTestLogArray) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArray0Iterator struct { + Event *GatewayEVMInboundTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogArray0 represents a LogArray0 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogArray0Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogArray0) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogArray0(log types.Log) (*GatewayEVMInboundTestLogArray0, error) { + event := new(GatewayEVMInboundTestLogArray0) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArray1Iterator struct { + Event *GatewayEVMInboundTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogArray1 represents a LogArray1 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogArray1Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogArray1) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogArray1(log types.Log) (*GatewayEVMInboundTestLogArray1, error) { + event := new(GatewayEVMInboundTestLogArray1) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogBytesIterator struct { + Event *GatewayEVMInboundTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogBytes represents a LogBytes event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogBytesIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogBytesIterator{contract: _GatewayEVMInboundTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogBytes) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogBytes(log types.Log) (*GatewayEVMInboundTestLogBytes, error) { + event := new(GatewayEVMInboundTestLogBytes) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogBytes32Iterator struct { + Event *GatewayEVMInboundTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogBytes32 represents a LogBytes32 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogBytes32Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogBytes32) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogBytes32(log types.Log) (*GatewayEVMInboundTestLogBytes32, error) { + event := new(GatewayEVMInboundTestLogBytes32) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogIntIterator struct { + Event *GatewayEVMInboundTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogInt represents a LogInt event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogIntIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogIntIterator{contract: _GatewayEVMInboundTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogInt(log types.Log) (*GatewayEVMInboundTestLogInt, error) { + event := new(GatewayEVMInboundTestLogInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedAddressIterator struct { + Event *GatewayEVMInboundTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedAddressIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedAddress) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayEVMInboundTestLogNamedAddress, error) { + event := new(GatewayEVMInboundTestLogNamedAddress) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArrayIterator struct { + Event *GatewayEVMInboundTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedArray represents a LogNamedArray event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedArrayIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedArray) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayEVMInboundTestLogNamedArray, error) { + event := new(GatewayEVMInboundTestLogNamedArray) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArray0Iterator struct { + Event *GatewayEVMInboundTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedArray0Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedArray0) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayEVMInboundTestLogNamedArray0, error) { + event := new(GatewayEVMInboundTestLogNamedArray0) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArray1Iterator struct { + Event *GatewayEVMInboundTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedArray1Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedArray1) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayEVMInboundTestLogNamedArray1, error) { + event := new(GatewayEVMInboundTestLogNamedArray1) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedBytesIterator struct { + Event *GatewayEVMInboundTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedBytesIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedBytes) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayEVMInboundTestLogNamedBytes, error) { + event := new(GatewayEVMInboundTestLogNamedBytes) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedBytes32Iterator struct { + Event *GatewayEVMInboundTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedBytes32Iterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedBytes32) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayEVMInboundTestLogNamedBytes32, error) { + event := new(GatewayEVMInboundTestLogNamedBytes32) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedDecimalIntIterator struct { + Event *GatewayEVMInboundTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedDecimalIntIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedDecimalInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayEVMInboundTestLogNamedDecimalInt, error) { + event := new(GatewayEVMInboundTestLogNamedDecimalInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedDecimalUintIterator struct { + Event *GatewayEVMInboundTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedDecimalUintIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedDecimalUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayEVMInboundTestLogNamedDecimalUint, error) { + event := new(GatewayEVMInboundTestLogNamedDecimalUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedIntIterator struct { + Event *GatewayEVMInboundTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedInt represents a LogNamedInt event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedIntIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayEVMInboundTestLogNamedInt, error) { + event := new(GatewayEVMInboundTestLogNamedInt) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedStringIterator struct { + Event *GatewayEVMInboundTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedString represents a LogNamedString event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedStringIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedString) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedString(log types.Log) (*GatewayEVMInboundTestLogNamedString, error) { + event := new(GatewayEVMInboundTestLogNamedString) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedUintIterator struct { + Event *GatewayEVMInboundTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogNamedUint represents a LogNamedUint event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogNamedUintIterator{contract: _GatewayEVMInboundTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogNamedUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayEVMInboundTestLogNamedUint, error) { + event := new(GatewayEVMInboundTestLogNamedUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogStringIterator struct { + Event *GatewayEVMInboundTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogString represents a LogString event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogStringIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogStringIterator{contract: _GatewayEVMInboundTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogString) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogString(log types.Log) (*GatewayEVMInboundTestLogString, error) { + event := new(GatewayEVMInboundTestLogString) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogUintIterator struct { + Event *GatewayEVMInboundTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogUint represents a LogUint event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogUintIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogUintIterator{contract: _GatewayEVMInboundTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogUint(log types.Log) (*GatewayEVMInboundTestLogUint, error) { + event := new(GatewayEVMInboundTestLogUint) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMInboundTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogsIterator struct { + Event *GatewayEVMInboundTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMInboundTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMInboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMInboundTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMInboundTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMInboundTestLogs represents a Logs event raised by the GatewayEVMInboundTest contract. +type GatewayEVMInboundTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayEVMInboundTestLogsIterator, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayEVMInboundTestLogsIterator{contract: _GatewayEVMInboundTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayEVMInboundTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMInboundTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMInboundTestLogs) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMInboundTest *GatewayEVMInboundTestFilterer) ParseLogs(log types.Log) (*GatewayEVMInboundTestLogs, error) { + event := new(GatewayEVMInboundTestLogs) + if err := _GatewayEVMInboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go new file mode 100644 index 00000000..3440119b --- /dev/null +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -0,0 +1,6052 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. +var GatewayEVMTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e40e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639620d7ed1161012a578063cebad2a6116100bd578063f68bd1c01161008c578063fa7626d411610071578063fa7626d41461035c578063fb176c1214610369578063fe7bdbb21461037157600080fd5b8063f68bd1c01461034c578063fa18c09b1461035457600080fd5b8063cebad2a61461032c578063d46e9b5714610334578063e20c9f711461033c578063eb1ce7f91461034457600080fd5b8063ba414fa6116100f9578063ba414fa6146102fc578063bcd9925e14610314578063c9350b7f1461031c578063cbd57e2f1461032457600080fd5b80639620d7ed146102dc578063a3f9d0e0146102e4578063b0464fdc146102ec578063b5508aa9146102f457600080fd5b806344671b94116101a2578063766d0ded11610171578063766d0ded146102a25780637d7f772a146102aa57806385226c81146102b2578063916a17c6146102c757600080fd5b806344671b941461027557806366d9a9a01461027d5780636a6218541461029257806371149c941461029a57600080fd5b80632ade3880116101de5780632ade3880146102485780633e5e3c231461025d5780633e73ecb4146102655780633f7286f41461026d57600080fd5b80630a9254e4146102105780631779672f1461021a5780631ed7831c146102225780632206eb6514610240575b600080fd5b610218610379565b005b610218610c16565b61022a610e3d565b6040516102379190619751565b60405180910390f35b610218610e9f565b610250611091565b60405161023791906197ed565b61022a6111d3565b610218611233565b61022a6117a9565b610218611809565b610285611ba1565b6040516102379190619953565b610218611d23565b610218611def565b6102186125fa565b6102186127a0565b6102ba612a81565b6040516102379190619a4d565b6102cf612b51565b6040516102379190619a60565b610218612c4c565b610218612db9565b6102cf6133c1565b6102ba6134bc565b61030461358c565b6040519015158152602001610237565b610218613660565b61021861380a565b6102186139fc565b610218613f87565b610218614159565b61022a614228565b610218614288565b6102186143ad565b610218614770565b601f546103049060ff1681565b610218614a96565b610218615114565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516103cb90619664565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610450573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161049590619664565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610519573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526105ff919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615557565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061068390619671565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156106b6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061070b9061967e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610747573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161078c9061968b565b604051809103906000f0801580156107a8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190619af7565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610e0793928316929091169087908790600401619b19565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610e0793928316929091169087908790600401619b19565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156111ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156111b357838290600052602060002001805461112690619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461115290619b50565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b505050505081526020019060010190611107565b5050505081525050815260200190600101906110b5565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190619b9d565b90506112b9816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d9190619b9d565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611410916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190619b9d565b90506116968186615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190619b9d565b905061171f8161171a8887619c0d565b615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190619b9d565b90506117a0816000615576565b50505050505050565b60606017805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926118bf926001600160a01b031691600091879101619bb6565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a8d906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611b5692909116908590600401619c39565b6000604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9d9190810190619d43565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000209060020201604051806040016040529081600082018054611bf890619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2490619b50565b8015611c715780601f10611c4657610100808354040283529160200191611c71565b820191906000526020600020905b815481529060010190602001808311611c5457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611cb85790505b50505050508152505081526020019060010190611bc5565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610cde565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190619b9d565b9050611eb3816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161200a916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061210892506001600160a01b03909116908790619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561218557600080fd5b505af1158015612199573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906121e49089908990619c20565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8906122c09089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561232157600080fd5b505af1158015612335573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a0236294506123929392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190619b9d565b90506124438187615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b79190619b9d565b90506124c78161171a8987619c0d565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190619b9d565b905061256e816000615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190619b9d565b90506125ef816000615576565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816127b75790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061281757612817619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061285b5761285b619d78565b602090810291909101015260405160019060009061288190859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293457600080fd5b505af1158015612948573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156129d257600080fd5b505af11580156129e6573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612a3a92909116908590600401619c39565b6000604051808303816000875af1158015612a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127999190810190619d43565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111ca578382906000526020600020018054612ac490619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054612af090619b50565b8015612b3d5780601f10612b1257610100808354040283529160200191612b3d565b820191906000526020600020905b815481529060010190602001808311612b2057829003601f168201915b505050505081526020019060010190612aa5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c3457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612be15790505b50505050508152505081526020019060010190612b75565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612d3157600080fd5b505af1158015612d45573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610d7c565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e879190619b9d565b9050612e94816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612feb916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906131be9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561321f57600080fd5b505af1158015613233573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506132909392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156132aa57600080fd5b505af11580156132be573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190619b9d565b9050613341816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b59190619b9d565b90506124c78185615576565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134515790505b505050505081525050815260200190600101906133e5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000200180546134ff90619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461352b90619b50565b80156135785780601f1061354d57610100808354040283529160200191613578565b820191906000526020600020905b81548152906001019060200180831161355b57829003601f168201915b5050505050815260200190600101906134e0565b60085460009060ff16156135a4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190619b9d565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561379957600080fd5b505af11580156137ad573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561398b57600080fd5b505af115801561399f573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af99190619b9d565b9050613b06816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7a9190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613c5d916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613d0457600080fd5b505af1158015613d18573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613dee57600080fd5b505af1158015613e02573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613e4d9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450613f1f9392831692909116908a908a90600401619b19565b600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016123f6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140c457600080fd5b505af11580156140d8573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350869261412c9216908690600401619c39565b6000604051808303818588803b15801561414557600080fd5b505af11580156117a0573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612d17565b60606015805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6000806040516020016142be907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432557600080fd5b505af1158015614339573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161377f565b604080516001808252818301909252600091816020015b60608152602001906001900390816143c45790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061442457614424619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061446857614468619d78565b602090810291909101015260405160019060009061448e90859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161454b916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561456557600080fd5b505af1158015614579573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145f257600080fd5b505af1158015614606573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146935061464d92506001600160a01b0390911690879087908790619e11565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614724906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016129b8565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b0316316147cf816000615576565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561484457600080fd5b505af1158015614858573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061489b92506001600160a01b03909116908590619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561491857600080fd5b505af115801561492c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915061497990670de0b6b3a7640000908690619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149da57600080fd5b505af11580156149ee573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792614a429216908790600401619c39565b6000604051808303818588803b158015614a5b57600080fd5b505af1158015614a6f573d6000803e3d6000fd5b50506021546001600160a01b0316319250610c109150829050670de0b6b3a7640000615576565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015614b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b939190619b9d565b9050614ba0816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015614bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c149190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614cf7916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015614d1157600080fd5b505af1158015614d25573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614d9e57600080fd5b505af1158015614db2573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050614df0600288619e59565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614e9f57600080fd5b505af1158015614eb3573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90614efe9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f5f57600080fd5b505af1158015614f73573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614fd09392831692909116908a908a90600401619b19565b600060405180830381600087803b158015614fea57600080fd5b505af1158015614ffe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150749190619b9d565b90506150858161171a600289619e59565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156150d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150f99190619b9d565b90506124c78161510a60028a619e59565b61171a9087619c0d565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615171906000906001600160a01b031631615576565b600084848460405160240161518893929190619e94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161524c916001600160a01b039190911690670de0b6b3a7640000908690600401619bb6565b600060405180830381600087803b15801561526657600080fd5b505af115801561527a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156152f357600080fd5b505af1158015615307573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061535092506001600160a01b03909116908590899089908990619ebe565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156153cd57600080fd5b505af11580156153e1573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061542e90670de0b6b3a7640000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561548f57600080fd5b505af11580156154a3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926154f79216908690600401619c39565b60006040518083038185885af1158015615515573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261553e9190810190619d43565b506021546127999083906001600160a01b031631615576565b6000615561619698565b61556c8484836155f5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156155e157600080fd5b505afa158015610e35573d6000803e3d6000fd5b6000806156028584615670565b90506156656040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615650929190619c39565b6040516020818303038152906040528561567c565b9150505b9392505050565b600061566983836156aa565b60c081015151600090156156a05761569984848460c001516156c5565b9050615669565b615699848461586b565b60006156b68383615956565b6156698383602001518461567c565b6000806156d0615962565b905060006156de8683615a35565b905060006156f58260600151836020015185615edb565b90506000615705838389896160ed565b9050600061571282616f6a565b602081015181519192509060030b156157855789826040015160405160200161573c929190619eff565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261577c91600401619f80565b60405180910390fd5b60006157c86040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617139565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061581b908490600401619f80565b602060405180830381865afa158015615838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061585c9190619f93565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158c0908790600401619f80565b600060405180830381865afa1580156158dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159059190810190619d43565b90506000615933828560405160200161591f929190619fbc565b604051602081830303815290604052617339565b90506001600160a01b03811661556c57848460405160200161573c929190619feb565b611b9d8282600061734c565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159e990849060040161a096565b600060405180830381865afa158015615a06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a2e919081019061a0dd565b9250505090565b615a676040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615ab26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615abb8561744f565b60208201526000615acb86617834565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b35919081019061a0dd565b86838560200151604051602001615b4f949392919061a126565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615ba7908590600401619f80565b600060405180830381865afa158015615bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bec919081019061a0dd565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c3490849060040161a22a565b602060405180830381865afa158015615c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c759190619af7565b615c8a578160405160200161573c919061a27c565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615ccf90849060040161a30e565b600060405180830381865afa158015615cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d14919081019061a0dd565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d5b90849060040161a360565b602060405180830381865afa158015615d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d9c9190619af7565b15615e31576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615de690849060040161a360565b600060405180830381865afa158015615e03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e2b919081019061a0dd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e56919061a3b2565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e8292919061a41e565b600060405180830381865afa158015615e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ec7919081019061a0dd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615ef75790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f5757615f57619d78565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fab57615fab619d78565b602002602001018190525084604051602001615fc7919061a443565b60405160208183030381529060405281600281518110615fe957615fe9619d78565b602002602001018190525082604051602001616005919061a4af565b6040516020818303038152906040528160038151811061602757616027619d78565b6020026020010181905250600061603d82616f6a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160ce9060408051808201825260008082526020918201528151808301909252845182528085019082015290617ab7565b6160e3578560405160200161573c919061a4f0565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561613d565b511590565b6162b1578260200151156161f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161577c565b8260c00151156162b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161577c565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162ca57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163259061a581565b935060ff168151811061633a5761633a619d78565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161638b919061a5a0565b6040516020818303038152906040528282806163a69061a581565b935060ff16815181106163bb576163bb619d78565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164089061a581565b935060ff168151811061641d5761641d619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061646a9061a581565b935060ff168151811061647f5761647f619d78565b6020026020010181905250876020015182828061649b9061a581565b935060ff16815181106164b0576164b0619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164fd9061a581565b935060ff168151811061651257616512619d78565b60209081029190910101528751828261652a8161a581565b935060ff168151811061653f5761653f619d78565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061658c9061a581565b935060ff16815181106165a1576165a1619d78565b60200260200101819052506165b546617b18565b82826165c08161a581565b935060ff16815181106165d5576165d5619d78565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166229061a581565b935060ff168151811061663757616637619d78565b60200260200101819052508682828061664f9061a581565b935060ff168151811061666457616664619d78565b602090810291909101015285511561678b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166b58161a581565b935060ff16815181106166ca576166ca619d78565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061671a908990600401619f80565b600060405180830381865afa158015616737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261675f919081019061a0dd565b828261676a8161a581565b935060ff168151811061677f5761677f619d78565b60200260200101819052505b84602001511561685b5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167d48161a581565b935060ff16815181106167e9576167e9619d78565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168369061a581565b935060ff168151811061684b5761684b619d78565b6020026020010181905250616a22565b6168936161388660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169265760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168d68161a581565b935060ff16815181106168eb576168eb619d78565b60200260200101819052508460a0015160405160200161690b919061a443565b6040516020818303038152906040528282806168369061a581565b8460c0015115801561696957506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261696790511590565b155b15616a225760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169ad8161a581565b935060ff16815181106169c2576169c2619d78565b60200260200101819052506169d688617bb8565b6040516020016169e6919061a443565b604051602081830303815290604052828280616a019061a581565b935060ff1681518110616a1657616a16619d78565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a5690511590565b616aeb5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a998161a581565b935060ff1681518110616aae57616aae619d78565b60200260200101819052508460400151828280616aca9061a581565b935060ff1681518110616adf57616adf619d78565b60200260200101819052505b606085015115616c0c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b348161a581565b935060ff1681518110616b4957616b49619d78565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616be0919081019061a0dd565b8282616beb8161a581565b935060ff1681518110616c0057616c00619d78565b60200260200101819052505b60e08501515115616cb35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c568161a581565b935060ff1681518110616c6b57616c6b619d78565b6020026020010181905250616c878560e0015160000151617b18565b8282616c928161a581565b935060ff1681518110616ca757616ca7619d78565b60200260200101819052505b60e08501516020015115616d5d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d008161a581565b935060ff1681518110616d1557616d15619d78565b6020026020010181905250616d318560e0015160200151617b18565b8282616d3c8161a581565b935060ff1681518110616d5157616d51619d78565b60200260200101819052505b60e08501516040015115616e075760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616daa8161a581565b935060ff1681518110616dbf57616dbf619d78565b6020026020010181905250616ddb8560e0015160400151617b18565b8282616de68161a581565b935060ff1681518110616dfb57616dfb619d78565b60200260200101819052505b60e08501516060015115616eb15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e548161a581565b935060ff1681518110616e6957616e69619d78565b6020026020010181905250616e858560e0015160600151617b18565b8282616e908161a581565b935060ff1681518110616ea557616ea5619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ecf57616ecf619c5b565b604051908082528060200260200182016040528015616f0257816020015b6060815260200190600190039081616eed5790505b50905060005b8260ff168160ff161015616f5b57838160ff1681518110616f2b57616f2b619d78565b6020026020010151828260ff1681518110616f4857616f48619d78565b6020908102919091010152600101616f08565b5093505050505b949350505050565b616f916040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170179186910161a60b565b600060405180830381865afa158015617034573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261705c919081019061a0dd565b9050600061706a86836186a7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161709a9190619a4d565b6000604051808303816000875af11580156170b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170e1919081019061a652565b805190915060030b158015906170fa5750602081015151155b80156171095750604081015151155b156160e3578160008151811061712157617121619d78565b602002602001015160405160200161573c919061a708565b6060600061716e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171a59082905b906187fc565b156173025760006172228261721c846172166171e88a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618823565b90618885565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172869082906187fc565b156172f057604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172ed905b829061890a565b90505b6172f981618930565b92505050615669565b821561731b57848460405160200161573c92919061a8f4565b5050604080516020810190915260008152615669565b509392505050565b6000808251602084016000f09392505050565b8160a001511561735b57505050565b6000617368848484618999565b9050600061737582616f6a565b602081015181519192509060030b1580156174115750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174119060408051808201825260008082526020918201528151808301909252845182528085019082015261719f565b1561741e57505050505050565b6040820151511561743e57816040015160405160200161573c919061a99b565b8060405160200161573c919061a9f9565b606060006174848360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174e9905b8290617ab7565b1561755857604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553908390618f34565b618930565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ba905b8290618fbe565b60010361768757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617620906172e6565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553905b839061890a565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176e6906174e2565b1561781d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774e908390619058565b9050600081600183516177619190619c0d565b8151811061777157617771619d78565b602002602001015190506178146175536177e76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f34565b95945050505050565b8260405160200161573c919061aa64565b50919050565b606060006178698360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178cb906174e2565b156178d95761566981618930565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617938906175b3565b6001036179a257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156699061755390617680565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a01906174e2565b1561781d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a69908390619058565b9050600181511115617aa5578060028251617a849190619c0d565b81518110617a9457617a94619d78565b602002602001015192505050919050565b508260405160200161573c919061aa64565b805182516000911115617acc57506000615570565b81518351602085015160009291617ae29161ab42565b617aec9190619c0d565b905082602001518103617b03576001915050615570565b82516020840151819020912014905092915050565b60606000617b25836190fd565b600101905060008167ffffffffffffffff811115617b4557617b45619c5b565b6040519080825280601f01601f191660200182016040528015617b6f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b7957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c44905b82906191df565b15617c8457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ce390617c3d565b15617d2357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8290617c3d565b15617dc257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2190617c3d565b80617e865750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e8690617c3d565b15617ec657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f2590617c3d565b80617f8a5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f8a90617c3d565b15617fca57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261802990617c3d565b8061808e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808e90617c3d565b156180ce57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812d90617c3d565b806181925750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819290617c3d565b156181d257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261823190617c3d565b1561827157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182d090617c3d565b1561831057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836f90617c3d565b156183af57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840e90617c3d565b1561844e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184ad90617c3d565b156184ed57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261854c90617c3d565b806185b15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185b190617c3d565b156185f157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261865090617c3d565b1561869057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161573c929060200161ab55565b60608060005b845181101561873257818582815181106186c9576186c9619d78565b60200260200101516040516020016186e2929190619fbc565b6040516020818303038152906040529150600185516187019190619c0d565b811461872a5781604051602001618718919061acbe565b60405160208183030381529060405291505b6001016186ad565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161874b579050509050838160008151811061877657618776619d78565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187ca576187ca619d78565b602002602001018190525081816002815181106187e9576187e9619d78565b6020908102919091010152949350505050565b602080830151835183519284015160009361881a92918491906191f3565b14159392505050565b604080518082019091526000808252602082015260006188558460000151856020015185600001518660200151619304565b90508360200151816188679190619c0d565b84518590618876908390619c0d565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188aa575081615570565b60208083015190840151600191146188d15750815160208481015190840151829020919020145b8015618902578251845185906188e8908390619c0d565b90525082516020850180516188fe90839061ab42565b9052505b509192915050565b6040805180820190915260008082526020820152618929838383619424565b5092915050565b60606000826000015167ffffffffffffffff81111561895157618951619c5b565b6040519080825280601f01601f19166020018201604052801561897b576020820181803683370190505b509050600060208201905061892981856020015186600001516194cf565b606060006189a5615962565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189c257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a1d9061a581565b935060ff1681518110618a3257618a32619d78565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a83919061acff565b604051602081830303815290604052828280618a9e9061a581565b935060ff1681518110618ab357618ab3619d78565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b009061a581565b935060ff1681518110618b1557618b15619d78565b602002602001018190525082604051602001618b31919061a4af565b604051602081830303815290604052828280618b4c9061a581565b935060ff1681518110618b6157618b61619d78565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618bae9061a581565b935060ff1681518110618bc357618bc3619d78565b6020026020010181905250618bd88784619549565b8282618be38161a581565b935060ff1681518110618bf857618bf8619d78565b602090810291909101015285515115618ca45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c4a8161a581565b935060ff1681518110618c5f57618c5f619d78565b6020026020010181905250618c78866000015184619549565b8282618c838161a581565b935060ff1681518110618c9857618c98619d78565b60200260200101819052505b856080015115618d125760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ced8161a581565b935060ff1681518110618d0257618d02619d78565b6020026020010181905250618d78565b8415618d785760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d578161a581565b935060ff1681518110618d6c57618d6c619d78565b60200260200101819052505b60408601515115618e145760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dc28161a581565b935060ff1681518110618dd757618dd7619d78565b60200260200101819052508560400151828280618df39061a581565b935060ff1681518110618e0857618e08619d78565b60200260200101819052505b856060015115618e7e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e5d8161a581565b935060ff1681518110618e7257618e72619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e9c57618e9c619c5b565b604051908082528060200260200182016040528015618ecf57816020015b6060815260200190600190039081618eba5790505b50905060005b8260ff168160ff161015618f2857838160ff1681518110618ef857618ef8619d78565b6020026020010151828260ff1681518110618f1557618f15619d78565b6020908102919091010152600101618ed5565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f59575081615570565b81518351602085015160009291618f6f9161ab42565b618f799190619c0d565b60208401519091506001908214618f9a575082516020840151819020908220145b8015618fb557835185518690618fb1908390619c0d565b9052505b50929392505050565b6000808260000151618fe28560000151866020015186600001518760200151619304565b618fec919061ab42565b90505b83516020850151619000919061ab42565b811161892957816190108161ad44565b925050826000015161904785602001518361902b9190619c0d565b86516190379190619c0d565b8386600001518760200151619304565b619051919061ab42565b9050618fef565b606060006190668484618fbe565b61907190600161ab42565b67ffffffffffffffff81111561908957619089619c5b565b6040519080825280602002602001820160405280156190bc57816020015b60608152602001906001900390816190a75790505b50905060005b8151811015617331576190d8617553868661890a565b8282815181106190ea576190ea619d78565b60209081029190910101526001016190c2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619146577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619172576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061919057662386f26fc10000830492506010015b6305f5e10083106191a8576305f5e100830492506008015b61271083106191bc57612710830492506004015b606483106191ce576064830492506002015b600a83106155705760010192915050565b60006191eb8383619589565b159392505050565b6000808584116192fa57602084116192a6576000841561923e57600161921a866020619c0d565b61922590600861ad5e565b61923090600261ae5c565b61923a9190619c0d565b1990505b835181168561924d898961ab42565b6192579190619c0d565b805190935082165b818114619291578784116192795787945050505050616f62565b836192838161ae68565b94505082845116905061925f565b61929b878561ab42565b945050505050616f62565b8383206192b38588619c0d565b6192bd908761ab42565b91505b8582106192f8578482208082036192e5576192db868461ab42565b9350505050616f62565b6192f0600184619c0d565b9250506192c0565b505b5092949350505050565b6000838186851161940f57602085116193be576000851561935057600161932c876020619c0d565b61933790600861ad5e565b61934290600261ae5c565b61934c9190619c0d565b1990505b845181166000876193618b8b61ab42565b61936b9190619c0d565b855190915083165b8281146193b0578186106193985761938b8b8b61ab42565b9650505050505050616f62565b856193a28161ad44565b965050838651169050619373565b859650505050505050616f62565b508383206000905b6193d08689619c0d565b821161940d578583208082036193ec5783945050505050616f62565b6193f760018561ab42565b93505081806194059061ad44565b9250506193c6565b505b619419878761ab42565b979650505050505050565b604080518082019091526000808252602082015260006194568560000151866020015186600001518760200151619304565b6020808701805191860191909152519091506194729082619c0d565b835284516020860151619485919061ab42565b810361949457600085526194c6565b835183516194a2919061ab42565b855186906194b1908390619c0d565b90525083516194c0908261ab42565b60208601525b50909392505050565b6020811061950757815183526194e660208461ab42565b92506194f360208361ab42565b9150619500602082619c0d565b90506194cf565b600019811561953657600161951d836020619c0d565b6195299061010061ae5c565b6195339190619c0d565b90505b9151835183169219169190911790915250565b606060006195578484615a35565b80516020808301516040519394506195719390910161ae7f565b60405160208183030381529060405291505092915050565b815181516000919081111561959c575081515b6020808501519084015160005b838110156196555782518251808214619625576000196020871015619604576001846195d6896020619c0d565b6195e0919061ab42565b6195eb90600861ad5e565b6195f690600261ae5c565b6196009190619c0d565b1990505b81811683821681810391146196225797506155709650505050505050565b50505b61963060208661ab42565b945061963d60208561ab42565b9350505060208161964e919061ab42565b90506195a9565b50845186516160e3919061aed7565b610c9f8061aef883390190565b610b4a8061bb9783390190565b610f9a8061c6e183390190565b610d5e8061d67b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196db6196e0565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196db6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197925783516001600160a01b031683526020938401939092019160010161976b565b509095945050505050565b60005b838110156197b85781810151838201526020016197a0565b50506000910152565b600081518084526197d981602086016020860161979d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198b98486516197c1565b602095860195909450929092019160010161987f565b509197505050602094850194929092019150600101619815565b50929695505050505050565b600081518084526020840193506020830160005b828110156199495781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619909565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199bf60408801826197c1565b90506020820151915086810360208801526199da81836198f5565b96505050602093840193919091019060010161997b565b600082825180855260208501945060208160051b8301016020850160005b83811015619a4157601f19858403018852619a2b8383516197c1565b6020988901989093509190910190600101619a0f565b50909695505050505050565b60208152600061566960208301846199f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619ae160408701826198f5565b9550506020938401939190910190600101619a88565b600060208284031215619b0957600080fd5b8151801515811461566957600080fd5b6001600160a01b03851681526001600160a01b03841660208201528260408201526080606082015260006160e360808301846197c1565b600181811c90821680619b6457607f821691505b60208210810361782e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215619baf57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061781460608301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561557057615570619bde565b828152604060208201526000616f6260408301846197c1565b6001600160a01b0383168152604060208201526000616f6260408301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619cad57619cad619c5b565b60405290565b60008067ffffffffffffffff841115619cce57619cce619c5b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619cfd57619cfd619c5b565b604052838152905080828401851015619d1557600080fd5b61733184602083018561979d565b600082601f830112619d3457600080fd5b61566983835160208501619cb3565b600060208284031215619d5557600080fd5b815167ffffffffffffffff811115619d6c57600080fd5b61556c84828501619d23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b82811015619949578151865260209586019590910190600101619dbb565b606081526000619dec60608301866199f1565b8281036020840152619dfe8186619da7565b9150508215156040830152949350505050565b6001600160a01b0385168152608060208201526000619e3360808301866199f1565b8281036040840152619e458186619da7565b915050821515606083015295945050505050565b600082619e8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b606081526000619ea760608301866197c1565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a060408201526000619ee660a08301866197c1565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a85016020880161979d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c84016020880161979d565b01601c01949350505050565b60208152600061566960208301846197c1565b600060208284031215619fa557600080fd5b81516001600160a01b038116811461566957600080fd5b60008351619fce81846020880161979d565b835190830190619fe281836020880161979d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a02381601a85016020880161979d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a06081603384016020880161979d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a0ef57600080fd5b815167ffffffffffffffff81111561a10657600080fd5b8201601f8101841361a11757600080fd5b61556c84825160208401619cb3565b6000855161a138818460208a0161979d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a172816001840160208a0161979d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1b081600284016020890161979d565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1f281600284016020880161979d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a23d60408301846197c1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a2b481601f85016020870161979d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a32160408301846197c1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a37360408301846197c1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3ea81601485016020870161979d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a43160408301856197c1565b828103602084015261566581856197c1565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a47b81600185016020870161979d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4c181846020870161979d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a57481604b85016020870161979d565b91909101604b0192915050565b600060ff821660ff810361a5975761a597619bde565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a66457600080fd5b815167ffffffffffffffff81111561a67b57600080fd5b82016060818503121561a68d57600080fd5b61a695619c8a565b81518060030b811461a6a657600080fd5b8152602082015167ffffffffffffffff81111561a6c257600080fd5b61a6ce86828501619d23565b602083015250604082015167ffffffffffffffff81111561a6ee57600080fd5b61a6fa86828501619d23565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a76681602185016020870161979d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a95281602185016020880161979d565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a98f81602e84016020880161979d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa5781602285016020870161979d565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa9c81600e85016020870161979d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561557057615570619bde565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab8d81601885016020880161979d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161abca81601c84016020880161979d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acd081846020870161979d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad3781601c85016020870161979d565b91909101601c0192915050565b6000600019820361ad575761ad57619bde565b5060010190565b808202811582820484141761557057615570619bde565b6001815b600184111561adb05780850481111561ad945761ad94619bde565b600184161561ada257908102905b60019390931c92800261ad79565b935093915050565b60008261adc757506001615570565b8161add457506000615570565b816001811461adea576002811461adf45761ae10565b6001915050615570565b60ff84111561ae055761ae05619bde565b50506001821b615570565b5060208310610133831016604e8410600b841016171561ae33575081810a615570565b61ae40600019848461ad75565b806000190482111561ae545761ae54619bde565b029392505050565b6000615669838361adb8565b60008161ae775761ae77619bde565b506000190190565b6000835161ae9181846020880161979d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aecb81600184016020880161979d565b01600101949350505050565b818103600083128015838313168383128216171561892957618929619bde56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220486bd4f3de101e9ee6588242afd1e36e71abd1e83c261757d54bc768d6913e5164736f6c634300081a0033", +} + +// GatewayEVMTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMTestMetaData.ABI instead. +var GatewayEVMTestABI = GatewayEVMTestMetaData.ABI + +// GatewayEVMTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMTestMetaData.Bin instead. +var GatewayEVMTestBin = GatewayEVMTestMetaData.Bin + +// DeployGatewayEVMTest deploys a new Ethereum contract, binding an instance of GatewayEVMTest to it. +func DeployGatewayEVMTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMTest, error) { + parsed, err := GatewayEVMTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMTest{GatewayEVMTestCaller: GatewayEVMTestCaller{contract: contract}, GatewayEVMTestTransactor: GatewayEVMTestTransactor{contract: contract}, GatewayEVMTestFilterer: GatewayEVMTestFilterer{contract: contract}}, nil +} + +// GatewayEVMTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMTest struct { + GatewayEVMTestCaller // Read-only binding to the contract + GatewayEVMTestTransactor // Write-only binding to the contract + GatewayEVMTestFilterer // Log filterer for contract events +} + +// GatewayEVMTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMTestSession struct { + Contract *GatewayEVMTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMTestCallerSession struct { + Contract *GatewayEVMTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMTestTransactorSession struct { + Contract *GatewayEVMTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMTestRaw struct { + Contract *GatewayEVMTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMTestCallerRaw struct { + Contract *GatewayEVMTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMTestTransactorRaw struct { + Contract *GatewayEVMTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMTest creates a new instance of GatewayEVMTest, bound to a specific deployed contract. +func NewGatewayEVMTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMTest, error) { + contract, err := bindGatewayEVMTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMTest{GatewayEVMTestCaller: GatewayEVMTestCaller{contract: contract}, GatewayEVMTestTransactor: GatewayEVMTestTransactor{contract: contract}, GatewayEVMTestFilterer: GatewayEVMTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMTestCaller creates a new read-only instance of GatewayEVMTest, bound to a specific deployed contract. +func NewGatewayEVMTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMTestCaller, error) { + contract, err := bindGatewayEVMTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMTestCaller{contract: contract}, nil +} + +// NewGatewayEVMTestTransactor creates a new write-only instance of GatewayEVMTest, bound to a specific deployed contract. +func NewGatewayEVMTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMTestTransactor, error) { + contract, err := bindGatewayEVMTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMTestFilterer creates a new log filterer instance of GatewayEVMTest, bound to a specific deployed contract. +func NewGatewayEVMTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMTestFilterer, error) { + contract, err := bindGatewayEVMTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMTest *GatewayEVMTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMTest.Contract.GatewayEVMTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMTest *GatewayEVMTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.Contract.GatewayEVMTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMTest *GatewayEVMTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMTest.Contract.GatewayEVMTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMTest *GatewayEVMTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMTest *GatewayEVMTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMTest *GatewayEVMTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestSession) ISTEST() (bool, error) { + return _GatewayEVMTest.Contract.ISTEST(&_GatewayEVMTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ISTEST() (bool, error) { + return _GatewayEVMTest.Contract.ISTEST(&_GatewayEVMTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMTest.Contract.ExcludeArtifacts(&_GatewayEVMTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMTest.Contract.ExcludeArtifacts(&_GatewayEVMTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMTest *GatewayEVMTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMTest *GatewayEVMTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMTest.Contract.ExcludeContracts(&_GatewayEVMTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMTest.Contract.ExcludeContracts(&_GatewayEVMTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMTest.Contract.ExcludeSelectors(&_GatewayEVMTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMTest.Contract.ExcludeSelectors(&_GatewayEVMTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMTest *GatewayEVMTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMTest *GatewayEVMTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMTest.Contract.ExcludeSenders(&_GatewayEVMTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMTest.Contract.ExcludeSenders(&_GatewayEVMTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestSession) Failed() (bool, error) { + return _GatewayEVMTest.Contract.Failed(&_GatewayEVMTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) Failed() (bool, error) { + return _GatewayEVMTest.Contract.Failed(&_GatewayEVMTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMTest.Contract.TargetArtifactSelectors(&_GatewayEVMTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMTest.Contract.TargetArtifactSelectors(&_GatewayEVMTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMTest.Contract.TargetArtifacts(&_GatewayEVMTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMTest.Contract.TargetArtifacts(&_GatewayEVMTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMTest.Contract.TargetContracts(&_GatewayEVMTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMTest.Contract.TargetContracts(&_GatewayEVMTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMTest.Contract.TargetInterfaces(&_GatewayEVMTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMTest.Contract.TargetInterfaces(&_GatewayEVMTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMTest.Contract.TargetSelectors(&_GatewayEVMTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMTest.Contract.TargetSelectors(&_GatewayEVMTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMTest *GatewayEVMTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMTest *GatewayEVMTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMTest.Contract.TargetSenders(&_GatewayEVMTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMTest.Contract.TargetSenders(&_GatewayEVMTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.SetUp(&_GatewayEVMTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.SetUp(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteRevert is a paid mutator transaction binding the contract method 0xfa18c09b. +// +// Solidity: function testExecuteRevert() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestExecuteRevert(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testExecuteRevert") +} + +// TestExecuteRevert is a paid mutator transaction binding the contract method 0xfa18c09b. +// +// Solidity: function testExecuteRevert() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestExecuteRevert() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteRevert(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteRevert is a paid mutator transaction binding the contract method 0xfa18c09b. +// +// Solidity: function testExecuteRevert() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestExecuteRevert() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteRevert(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xcebad2a6. +// +// Solidity: function testExecuteRevertFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestExecuteRevertFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testExecuteRevertFailsIfSenderIsNotTSS") +} + +// TestExecuteRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xcebad2a6. +// +// Solidity: function testExecuteRevertFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestExecuteRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteRevertFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xcebad2a6. +// +// Solidity: function testExecuteRevertFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestExecuteRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteRevertFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0xc9350b7f. +// +// Solidity: function testExecuteWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestExecuteWithERC20FailsIfNotCustoryOrConnector(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testExecuteWithERC20FailsIfNotCustoryOrConnector") +} + +// TestExecuteWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0xc9350b7f. +// +// Solidity: function testExecuteWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestExecuteWithERC20FailsIfNotCustoryOrConnector() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteWithERC20FailsIfNotCustoryOrConnector(&_GatewayEVMTest.TransactOpts) +} + +// TestExecuteWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0xc9350b7f. +// +// Solidity: function testExecuteWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestExecuteWithERC20FailsIfNotCustoryOrConnector() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestExecuteWithERC20FailsIfNotCustoryOrConnector(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustody is a paid mutator transaction binding the contract method 0xfb176c12. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20PartialThroughCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20PartialThroughCustody") +} + +// TestForwardCallToReceiveERC20PartialThroughCustody is a paid mutator transaction binding the contract method 0xfb176c12. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20PartialThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustody is a paid mutator transaction binding the contract method 0xfb176c12. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20PartialThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x6a621854. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0") +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x6a621854. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x6a621854. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS") +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustody is a paid mutator transaction binding the contract method 0xcbd57e2f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20ThroughCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20ThroughCustody") +} + +// TestForwardCallToReceiveERC20ThroughCustody is a paid mutator transaction binding the contract method 0xcbd57e2f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20ThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustody is a paid mutator transaction binding the contract method 0xcbd57e2f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20ThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x1779672f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0") +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x1779672f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0x1779672f. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS") +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNoParams is a paid mutator transaction binding the contract method 0x44671b94. +// +// Solidity: function testForwardCallToReceiveNoParams() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveNoParams(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveNoParams") +} + +// TestForwardCallToReceiveNoParams is a paid mutator transaction binding the contract method 0x44671b94. +// +// Solidity: function testForwardCallToReceiveNoParams() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveNoParams() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParams(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNoParams is a paid mutator transaction binding the contract method 0x44671b94. +// +// Solidity: function testForwardCallToReceiveNoParams() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveNoParams() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParams(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNoParamsThroughCustody is a paid mutator transaction binding the contract method 0xa3f9d0e0. +// +// Solidity: function testForwardCallToReceiveNoParamsThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveNoParamsThroughCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveNoParamsThroughCustody") +} + +// TestForwardCallToReceiveNoParamsThroughCustody is a paid mutator transaction binding the contract method 0xa3f9d0e0. +// +// Solidity: function testForwardCallToReceiveNoParamsThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveNoParamsThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParamsThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNoParamsThroughCustody is a paid mutator transaction binding the contract method 0xa3f9d0e0. +// +// Solidity: function testForwardCallToReceiveNoParamsThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveNoParamsThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParamsThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNonPayable is a paid mutator transaction binding the contract method 0xf68bd1c0. +// +// Solidity: function testForwardCallToReceiveNonPayable() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveNonPayable(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveNonPayable") +} + +// TestForwardCallToReceiveNonPayable is a paid mutator transaction binding the contract method 0xf68bd1c0. +// +// Solidity: function testForwardCallToReceiveNonPayable() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveNonPayable() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNonPayable(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNonPayable is a paid mutator transaction binding the contract method 0xf68bd1c0. +// +// Solidity: function testForwardCallToReceiveNonPayable() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveNonPayable() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNonPayable(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x7d7f772a. +// +// Solidity: function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS") +} + +// TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x7d7f772a. +// +// Solidity: function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x7d7f772a. +// +// Solidity: function testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0xfe7bdbb2. +// +// Solidity: function testForwardCallToReceivePayable() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceivePayable(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceivePayable") +} + +// TestForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0xfe7bdbb2. +// +// Solidity: function testForwardCallToReceivePayable() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceivePayable() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceivePayable(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0xfe7bdbb2. +// +// Solidity: function testForwardCallToReceivePayable() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceivePayable() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceivePayable(&_GatewayEVMTest.TransactOpts) +} + +// TestRevertWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0x2206eb65. +// +// Solidity: function testRevertWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestRevertWithERC20FailsIfNotCustoryOrConnector(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testRevertWithERC20FailsIfNotCustoryOrConnector") +} + +// TestRevertWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0x2206eb65. +// +// Solidity: function testRevertWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestRevertWithERC20FailsIfNotCustoryOrConnector() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestRevertWithERC20FailsIfNotCustoryOrConnector(&_GatewayEVMTest.TransactOpts) +} + +// TestRevertWithERC20FailsIfNotCustoryOrConnector is a paid mutator transaction binding the contract method 0x2206eb65. +// +// Solidity: function testRevertWithERC20FailsIfNotCustoryOrConnector() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestRevertWithERC20FailsIfNotCustoryOrConnector() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestRevertWithERC20FailsIfNotCustoryOrConnector(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustody is a paid mutator transaction binding the contract method 0x71149c94. +// +// Solidity: function testWithdrawAndRevertThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawAndRevertThroughCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawAndRevertThroughCustody") +} + +// TestWithdrawAndRevertThroughCustody is a paid mutator transaction binding the contract method 0x71149c94. +// +// Solidity: function testWithdrawAndRevertThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawAndRevertThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustody is a paid mutator transaction binding the contract method 0x71149c94. +// +// Solidity: function testWithdrawAndRevertThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0xeb1ce7f9. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawAndRevertThroughCustodyFailsIfAmountIs0") +} + +// TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0xeb1ce7f9. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0 is a paid mutator transaction binding the contract method 0xeb1ce7f9. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfAmountIs0() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS") +} + +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawThroughCustody is a paid mutator transaction binding the contract method 0x3e73ecb4. +// +// Solidity: function testWithdrawThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawThroughCustody(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawThroughCustody") +} + +// TestWithdrawThroughCustody is a paid mutator transaction binding the contract method 0x3e73ecb4. +// +// Solidity: function testWithdrawThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawThroughCustody is a paid mutator transaction binding the contract method 0x3e73ecb4. +// +// Solidity: function testWithdrawThroughCustody() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawThroughCustody() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustody(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawThroughCustodyFailsIfSenderIsNotTSS") +} + +// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +} + +// GatewayEVMTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMTest contract. +type GatewayEVMTestCallIterator struct { + Event *GatewayEVMTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestCall represents a Call event raised by the GatewayEVMTest contract. +type GatewayEVMTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestCallIterator{contract: _GatewayEVMTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestCall) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseCall(log types.Log) (*GatewayEVMTestCall, error) { + event := new(GatewayEVMTestCall) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMTest contract. +type GatewayEVMTestDepositIterator struct { + Event *GatewayEVMTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestDeposit represents a Deposit event raised by the GatewayEVMTest contract. +type GatewayEVMTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestDepositIterator{contract: _GatewayEVMTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestDeposit) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMTestDeposit, error) { + event := new(GatewayEVMTestDeposit) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMTest contract. +type GatewayEVMTestExecutedIterator struct { + Event *GatewayEVMTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestExecuted represents a Executed event raised by the GatewayEVMTest contract. +type GatewayEVMTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestExecutedIterator{contract: _GatewayEVMTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestExecuted) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMTestExecuted, error) { + event := new(GatewayEVMTestExecuted) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMTest contract. +type GatewayEVMTestExecutedWithERC20Iterator struct { + Event *GatewayEVMTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMTest contract. +type GatewayEVMTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestExecutedWithERC20Iterator{contract: _GatewayEVMTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestExecutedWithERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMTestExecutedWithERC20, error) { + event := new(GatewayEVMTestExecutedWithERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedERC20Iterator struct { + Event *GatewayEVMTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReceivedERC20 represents a ReceivedERC20 event raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*GatewayEVMTestReceivedERC20Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &GatewayEVMTestReceivedERC20Iterator{contract: _GatewayEVMTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReceivedERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReceivedERC20(log types.Log) (*GatewayEVMTestReceivedERC20, error) { + event := new(GatewayEVMTestReceivedERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedNoParamsIterator struct { + Event *GatewayEVMTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReceivedNoParams represents a ReceivedNoParams event raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*GatewayEVMTestReceivedNoParamsIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &GatewayEVMTestReceivedNoParamsIterator{contract: _GatewayEVMTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReceivedNoParams) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReceivedNoParams(log types.Log) (*GatewayEVMTestReceivedNoParams, error) { + event := new(GatewayEVMTestReceivedNoParams) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedNonPayableIterator struct { + Event *GatewayEVMTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReceivedNonPayable represents a ReceivedNonPayable event raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*GatewayEVMTestReceivedNonPayableIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &GatewayEVMTestReceivedNonPayableIterator{contract: _GatewayEVMTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReceivedNonPayable) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReceivedNonPayable(log types.Log) (*GatewayEVMTestReceivedNonPayable, error) { + event := new(GatewayEVMTestReceivedNonPayable) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedPayableIterator struct { + Event *GatewayEVMTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReceivedPayable represents a ReceivedPayable event raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*GatewayEVMTestReceivedPayableIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &GatewayEVMTestReceivedPayableIterator{contract: _GatewayEVMTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReceivedPayable) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReceivedPayable(log types.Log) (*GatewayEVMTestReceivedPayable, error) { + event := new(GatewayEVMTestReceivedPayable) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedRevertIterator struct { + Event *GatewayEVMTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReceivedRevert represents a ReceivedRevert event raised by the GatewayEVMTest contract. +type GatewayEVMTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*GatewayEVMTestReceivedRevertIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &GatewayEVMTestReceivedRevertIterator{contract: _GatewayEVMTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReceivedRevert) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReceivedRevert(log types.Log) (*GatewayEVMTestReceivedRevert, error) { + event := new(GatewayEVMTestReceivedRevert) + if err := _GatewayEVMTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMTest contract. +type GatewayEVMTestRevertedIterator struct { + Event *GatewayEVMTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestReverted represents a Reverted event raised by the GatewayEVMTest contract. +type GatewayEVMTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestRevertedIterator{contract: _GatewayEVMTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestReverted) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseReverted(log types.Log) (*GatewayEVMTestReverted, error) { + event := new(GatewayEVMTestReverted) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMTest contract. +type GatewayEVMTestRevertedWithERC20Iterator struct { + Event *GatewayEVMTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMTest contract. +type GatewayEVMTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestRevertedWithERC20Iterator{contract: _GatewayEVMTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestRevertedWithERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMTestRevertedWithERC20, error) { + event := new(GatewayEVMTestRevertedWithERC20) + if err := _GatewayEVMTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdrawIterator struct { + Event *GatewayEVMTestWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestWithdraw represents a Withdraw event raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdraw struct { + Token common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMTestWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestWithdrawIterator{contract: _GatewayEVMTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestWithdraw) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseWithdraw(log types.Log) (*GatewayEVMTestWithdraw, error) { + event := new(GatewayEVMTestWithdraw) + if err := _GatewayEVMTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdrawAndCallIterator struct { + Event *GatewayEVMTestWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestWithdrawAndCall represents a WithdrawAndCall event raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdrawAndCall struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMTestWithdrawAndCallIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestWithdrawAndCallIterator{contract: _GatewayEVMTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestWithdrawAndCall) + if err := _GatewayEVMTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseWithdrawAndCall(log types.Log) (*GatewayEVMTestWithdrawAndCall, error) { + event := new(GatewayEVMTestWithdrawAndCall) + if err := _GatewayEVMTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdrawAndRevertIterator struct { + Event *GatewayEVMTestWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the GatewayEVMTest contract. +type GatewayEVMTestWithdrawAndRevert struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMTestWithdrawAndRevertIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMTestWithdrawAndRevertIterator{contract: _GatewayEVMTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestWithdrawAndRevert) + if err := _GatewayEVMTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseWithdrawAndRevert(log types.Log) (*GatewayEVMTestWithdrawAndRevert, error) { + event := new(GatewayEVMTestWithdrawAndRevert) + if err := _GatewayEVMTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogIterator struct { + Event *GatewayEVMTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLog represents a Log event raised by the GatewayEVMTest contract. +type GatewayEVMTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayEVMTestLogIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogIterator{contract: _GatewayEVMTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLog) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLog(log types.Log) (*GatewayEVMTestLog, error) { + event := new(GatewayEVMTestLog) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogAddressIterator struct { + Event *GatewayEVMTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogAddress represents a LogAddress event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayEVMTestLogAddressIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogAddressIterator{contract: _GatewayEVMTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogAddress) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogAddress(log types.Log) (*GatewayEVMTestLogAddress, error) { + event := new(GatewayEVMTestLogAddress) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArrayIterator struct { + Event *GatewayEVMTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogArray represents a LogArray event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayEVMTestLogArrayIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogArrayIterator{contract: _GatewayEVMTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogArray) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogArray(log types.Log) (*GatewayEVMTestLogArray, error) { + event := new(GatewayEVMTestLogArray) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArray0Iterator struct { + Event *GatewayEVMTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogArray0 represents a LogArray0 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayEVMTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogArray0Iterator{contract: _GatewayEVMTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogArray0) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogArray0(log types.Log) (*GatewayEVMTestLogArray0, error) { + event := new(GatewayEVMTestLogArray0) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArray1Iterator struct { + Event *GatewayEVMTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogArray1 represents a LogArray1 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayEVMTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogArray1Iterator{contract: _GatewayEVMTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogArray1) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogArray1(log types.Log) (*GatewayEVMTestLogArray1, error) { + event := new(GatewayEVMTestLogArray1) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogBytesIterator struct { + Event *GatewayEVMTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogBytes represents a LogBytes event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayEVMTestLogBytesIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogBytesIterator{contract: _GatewayEVMTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogBytes) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogBytes(log types.Log) (*GatewayEVMTestLogBytes, error) { + event := new(GatewayEVMTestLogBytes) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogBytes32Iterator struct { + Event *GatewayEVMTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogBytes32 represents a LogBytes32 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayEVMTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogBytes32Iterator{contract: _GatewayEVMTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogBytes32) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogBytes32(log types.Log) (*GatewayEVMTestLogBytes32, error) { + event := new(GatewayEVMTestLogBytes32) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogIntIterator struct { + Event *GatewayEVMTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogInt represents a LogInt event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayEVMTestLogIntIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogIntIterator{contract: _GatewayEVMTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogInt(log types.Log) (*GatewayEVMTestLogInt, error) { + event := new(GatewayEVMTestLogInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedAddressIterator struct { + Event *GatewayEVMTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedAddressIterator{contract: _GatewayEVMTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedAddress) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayEVMTestLogNamedAddress, error) { + event := new(GatewayEVMTestLogNamedAddress) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArrayIterator struct { + Event *GatewayEVMTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedArray represents a LogNamedArray event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedArrayIterator{contract: _GatewayEVMTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedArray) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayEVMTestLogNamedArray, error) { + event := new(GatewayEVMTestLogNamedArray) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArray0Iterator struct { + Event *GatewayEVMTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedArray0Iterator{contract: _GatewayEVMTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedArray0) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayEVMTestLogNamedArray0, error) { + event := new(GatewayEVMTestLogNamedArray0) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArray1Iterator struct { + Event *GatewayEVMTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedArray1Iterator{contract: _GatewayEVMTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedArray1) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayEVMTestLogNamedArray1, error) { + event := new(GatewayEVMTestLogNamedArray1) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedBytesIterator struct { + Event *GatewayEVMTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedBytesIterator{contract: _GatewayEVMTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedBytes) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayEVMTestLogNamedBytes, error) { + event := new(GatewayEVMTestLogNamedBytes) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedBytes32Iterator struct { + Event *GatewayEVMTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedBytes32Iterator{contract: _GatewayEVMTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedBytes32) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayEVMTestLogNamedBytes32, error) { + event := new(GatewayEVMTestLogNamedBytes32) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedDecimalIntIterator struct { + Event *GatewayEVMTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedDecimalIntIterator{contract: _GatewayEVMTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedDecimalInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayEVMTestLogNamedDecimalInt, error) { + event := new(GatewayEVMTestLogNamedDecimalInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedDecimalUintIterator struct { + Event *GatewayEVMTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedDecimalUintIterator{contract: _GatewayEVMTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedDecimalUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayEVMTestLogNamedDecimalUint, error) { + event := new(GatewayEVMTestLogNamedDecimalUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedIntIterator struct { + Event *GatewayEVMTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedInt represents a LogNamedInt event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedIntIterator{contract: _GatewayEVMTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayEVMTestLogNamedInt, error) { + event := new(GatewayEVMTestLogNamedInt) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedStringIterator struct { + Event *GatewayEVMTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedString represents a LogNamedString event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedStringIterator{contract: _GatewayEVMTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedString) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedString(log types.Log) (*GatewayEVMTestLogNamedString, error) { + event := new(GatewayEVMTestLogNamedString) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedUintIterator struct { + Event *GatewayEVMTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogNamedUint represents a LogNamedUint event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayEVMTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogNamedUintIterator{contract: _GatewayEVMTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogNamedUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayEVMTestLogNamedUint, error) { + event := new(GatewayEVMTestLogNamedUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogStringIterator struct { + Event *GatewayEVMTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogString represents a LogString event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayEVMTestLogStringIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogStringIterator{contract: _GatewayEVMTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogString) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogString(log types.Log) (*GatewayEVMTestLogString, error) { + event := new(GatewayEVMTestLogString) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogUintIterator struct { + Event *GatewayEVMTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogUint represents a LogUint event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayEVMTestLogUintIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogUintIterator{contract: _GatewayEVMTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogUint(log types.Log) (*GatewayEVMTestLogUint, error) { + event := new(GatewayEVMTestLogUint) + if err := _GatewayEVMTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayEVMTest contract. +type GatewayEVMTestLogsIterator struct { + Event *GatewayEVMTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMTestLogs represents a Logs event raised by the GatewayEVMTest contract. +type GatewayEVMTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayEVMTestLogsIterator, error) { + + logs, sub, err := _GatewayEVMTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayEVMTestLogsIterator{contract: _GatewayEVMTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayEVMTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMTestLogs) + if err := _GatewayEVMTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMTest *GatewayEVMTestFilterer) ParseLogs(log types.Log) (*GatewayEVMTestLogs, error) { + event := new(GatewayEVMTestLogs) + if err := _GatewayEVMTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go new file mode 100644 index 00000000..d919fd17 --- /dev/null +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -0,0 +1,2161 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevmechidnatest + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. +var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", +} + +// GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMEchidnaTestMetaData.ABI instead. +var GatewayEVMEchidnaTestABI = GatewayEVMEchidnaTestMetaData.ABI + +// GatewayEVMEchidnaTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMEchidnaTestMetaData.Bin instead. +var GatewayEVMEchidnaTestBin = GatewayEVMEchidnaTestMetaData.Bin + +// DeployGatewayEVMEchidnaTest deploys a new Ethereum contract, binding an instance of GatewayEVMEchidnaTest to it. +func DeployGatewayEVMEchidnaTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMEchidnaTest, error) { + parsed, err := GatewayEVMEchidnaTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMEchidnaTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMEchidnaTest{GatewayEVMEchidnaTestCaller: GatewayEVMEchidnaTestCaller{contract: contract}, GatewayEVMEchidnaTestTransactor: GatewayEVMEchidnaTestTransactor{contract: contract}, GatewayEVMEchidnaTestFilterer: GatewayEVMEchidnaTestFilterer{contract: contract}}, nil +} + +// GatewayEVMEchidnaTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMEchidnaTest struct { + GatewayEVMEchidnaTestCaller // Read-only binding to the contract + GatewayEVMEchidnaTestTransactor // Write-only binding to the contract + GatewayEVMEchidnaTestFilterer // Log filterer for contract events +} + +// GatewayEVMEchidnaTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMEchidnaTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMEchidnaTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMEchidnaTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMEchidnaTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMEchidnaTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMEchidnaTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMEchidnaTestSession struct { + Contract *GatewayEVMEchidnaTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMEchidnaTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMEchidnaTestCallerSession struct { + Contract *GatewayEVMEchidnaTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMEchidnaTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMEchidnaTestTransactorSession struct { + Contract *GatewayEVMEchidnaTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMEchidnaTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMEchidnaTestRaw struct { + Contract *GatewayEVMEchidnaTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMEchidnaTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMEchidnaTestCallerRaw struct { + Contract *GatewayEVMEchidnaTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMEchidnaTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMEchidnaTestTransactorRaw struct { + Contract *GatewayEVMEchidnaTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMEchidnaTest creates a new instance of GatewayEVMEchidnaTest, bound to a specific deployed contract. +func NewGatewayEVMEchidnaTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMEchidnaTest, error) { + contract, err := bindGatewayEVMEchidnaTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTest{GatewayEVMEchidnaTestCaller: GatewayEVMEchidnaTestCaller{contract: contract}, GatewayEVMEchidnaTestTransactor: GatewayEVMEchidnaTestTransactor{contract: contract}, GatewayEVMEchidnaTestFilterer: GatewayEVMEchidnaTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMEchidnaTestCaller creates a new read-only instance of GatewayEVMEchidnaTest, bound to a specific deployed contract. +func NewGatewayEVMEchidnaTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMEchidnaTestCaller, error) { + contract, err := bindGatewayEVMEchidnaTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestCaller{contract: contract}, nil +} + +// NewGatewayEVMEchidnaTestTransactor creates a new write-only instance of GatewayEVMEchidnaTest, bound to a specific deployed contract. +func NewGatewayEVMEchidnaTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMEchidnaTestTransactor, error) { + contract, err := bindGatewayEVMEchidnaTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMEchidnaTestFilterer creates a new log filterer instance of GatewayEVMEchidnaTest, bound to a specific deployed contract. +func NewGatewayEVMEchidnaTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMEchidnaTestFilterer, error) { + contract, err := bindGatewayEVMEchidnaTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMEchidnaTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMEchidnaTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMEchidnaTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMEchidnaTest.Contract.GatewayEVMEchidnaTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.GatewayEVMEchidnaTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.GatewayEVMEchidnaTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMEchidnaTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVMEchidnaTest.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVMEchidnaTest.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVMEchidnaTest.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVMEchidnaTest.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) Custody(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "custody") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Custody() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.Custody(&_GatewayEVMEchidnaTest.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) Custody() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.Custody(&_GatewayEVMEchidnaTest.CallOpts) +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) EchidnaCaller(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "echidnaCaller") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) EchidnaCaller() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.EchidnaCaller(&_GatewayEVMEchidnaTest.CallOpts) +} + +// EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. +// +// Solidity: function echidnaCaller() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) EchidnaCaller() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.EchidnaCaller(&_GatewayEVMEchidnaTest.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Owner() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.Owner(&_GatewayEVMEchidnaTest.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) Owner() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.Owner(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.ProxiableUUID(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.ProxiableUUID(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) TestERC20(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "testERC20") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TestERC20() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.TestERC20(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. +// +// Solidity: function testERC20() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) TestERC20() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.TestERC20(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TssAddress() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.TssAddress(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) TssAddress() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.TssAddress(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) ZetaConnector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "zetaConnector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ZetaConnector() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.ZetaConnector(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) ZetaConnector() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.ZetaConnector(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ZetaToken() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.ZetaToken(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) ZetaToken() (common.Address, error) { + return _GatewayEVMEchidnaTest.Contract.ZetaToken(&_GatewayEVMEchidnaTest.CallOpts) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "call", receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Call(&_GatewayEVMEchidnaTest.TransactOpts, receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Call(&_GatewayEVMEchidnaTest.TransactOpts, receiver, payload) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "deposit", receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Deposit(&_GatewayEVMEchidnaTest.TransactOpts, receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Deposit(&_GatewayEVMEchidnaTest.TransactOpts, receiver) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "deposit0", receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Deposit0(&_GatewayEVMEchidnaTest.TransactOpts, receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Deposit0(&_GatewayEVMEchidnaTest.TransactOpts, receiver, amount, asset) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "depositAndCall", receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.DepositAndCall(&_GatewayEVMEchidnaTest.TransactOpts, receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.DepositAndCall(&_GatewayEVMEchidnaTest.TransactOpts, receiver, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.DepositAndCall0(&_GatewayEVMEchidnaTest.TransactOpts, receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.DepositAndCall0(&_GatewayEVMEchidnaTest.TransactOpts, receiver, amount, asset, payload) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "execute", destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Execute(&_GatewayEVMEchidnaTest.TransactOpts, destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Execute(&_GatewayEVMEchidnaTest.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "executeRevert", destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.ExecuteRevert(&_GatewayEVMEchidnaTest.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.ExecuteRevert(&_GatewayEVMEchidnaTest.TransactOpts, destination, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "executeWithERC20", token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.ExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.ExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RenounceOwnership(&_GatewayEVMEchidnaTest.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RenounceOwnership(&_GatewayEVMEchidnaTest.TransactOpts) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "revertWithERC20", token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RevertWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RevertWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "setConnector", _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, _zetaConnector) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "setCustody", _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, _custody) +} + +// TestExecuteWithERC20 is a paid mutator transaction binding the contract method 0x6ab90f9b. +// +// Solidity: function testExecuteWithERC20(address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) TestExecuteWithERC20(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "testExecuteWithERC20", to, amount, data) +} + +// TestExecuteWithERC20 is a paid mutator transaction binding the contract method 0x6ab90f9b. +// +// Solidity: function testExecuteWithERC20(address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TestExecuteWithERC20(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.TestExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, to, amount, data) +} + +// TestExecuteWithERC20 is a paid mutator transaction binding the contract method 0x6ab90f9b. +// +// Solidity: function testExecuteWithERC20(address to, uint256 amount, bytes data) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) TestExecuteWithERC20(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.TestExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, to, amount, data) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.TransferOwnership(&_GatewayEVMEchidnaTest.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.TransferOwnership(&_GatewayEVMEchidnaTest.TransactOpts, newOwner) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.UpgradeToAndCall(&_GatewayEVMEchidnaTest.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.UpgradeToAndCall(&_GatewayEVMEchidnaTest.TransactOpts, newImplementation, data) +} + +// GatewayEVMEchidnaTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestCallIterator struct { + Event *GatewayEVMEchidnaTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestCall represents a Call event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMEchidnaTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestCallIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestCall) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseCall(log types.Log) (*GatewayEVMEchidnaTestCall, error) { + event := new(GatewayEVMEchidnaTestCall) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestDepositIterator struct { + Event *GatewayEVMEchidnaTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestDeposit represents a Deposit event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMEchidnaTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestDepositIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestDeposit) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMEchidnaTestDeposit, error) { + event := new(GatewayEVMEchidnaTestDeposit) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestExecutedIterator struct { + Event *GatewayEVMEchidnaTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestExecuted represents a Executed event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMEchidnaTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestExecutedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestExecuted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMEchidnaTestExecuted, error) { + event := new(GatewayEVMEchidnaTestExecuted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestExecutedWithERC20Iterator struct { + Event *GatewayEVMEchidnaTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMEchidnaTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestExecutedWithERC20Iterator{contract: _GatewayEVMEchidnaTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestExecutedWithERC20) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMEchidnaTestExecutedWithERC20, error) { + event := new(GatewayEVMEchidnaTestExecutedWithERC20) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestInitializedIterator struct { + Event *GatewayEVMEchidnaTestInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestInitialized represents a Initialized event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayEVMEchidnaTestInitializedIterator, error) { + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestInitializedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestInitialized) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestInitialized) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseInitialized(log types.Log) (*GatewayEVMEchidnaTestInitialized, error) { + event := new(GatewayEVMEchidnaTestInitialized) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestOwnershipTransferredIterator struct { + Event *GatewayEVMEchidnaTestOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMEchidnaTestOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestOwnershipTransferredIterator{contract: _GatewayEVMEchidnaTest.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestOwnershipTransferred) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMEchidnaTestOwnershipTransferred, error) { + event := new(GatewayEVMEchidnaTestOwnershipTransferred) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRevertedIterator struct { + Event *GatewayEVMEchidnaTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestReverted represents a Reverted event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMEchidnaTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestRevertedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestReverted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseReverted(log types.Log) (*GatewayEVMEchidnaTestReverted, error) { + event := new(GatewayEVMEchidnaTestReverted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRevertedWithERC20Iterator struct { + Event *GatewayEVMEchidnaTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMEchidnaTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestRevertedWithERC20Iterator{contract: _GatewayEVMEchidnaTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestRevertedWithERC20) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMEchidnaTestRevertedWithERC20, error) { + event := new(GatewayEVMEchidnaTestRevertedWithERC20) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestUpgradedIterator struct { + Event *GatewayEVMEchidnaTestUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestUpgraded represents a Upgraded event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayEVMEchidnaTestUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestUpgradedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestUpgraded) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseUpgraded(log types.Log) (*GatewayEVMEchidnaTestUpgraded, error) { + event := new(GatewayEVMEchidnaTestUpgraded) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go new file mode 100644 index 00000000..995d2916 --- /dev/null +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -0,0 +1,5335 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevmupgrade + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. +var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061add18061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a5d565b60405161010e91906161e3565b60405180910390f35b61011f610abf565b60405161010e919061627f565b610101610c01565b610101610c61565b610144610cc1565b60405161010e91906163e5565b6100f7610e43565b610161611505565b60405161010e9190616483565b6101766115d5565b60405161010e91906164fa565b6101766116d0565b6101616117cb565b61019b61189b565b604051901515815260200161010e565b61010161196f565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051610212906160f6565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc906160f6565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260285491519190931660248201526044810191909152610446919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526119cf565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906104ca90616103565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104fd573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061055290616110565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561058e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105d39061611d565b604051809103906000f0801580156105ef573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190616591565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ab557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a97575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bf857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382906000526020600020018054610b54906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b80906165b3565b8015610bcd5780601f10610ba257610100808354040283529160200191610bcd565b820191906000526020600020905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b35565b505050508152505081526020019060010190610ae3565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bf85783829060005260206000209060020201604051806040016040529081600082018054610d18906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d44906165b3565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610dd85790505b50505050508152505081526020019060010190610ce5565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190616600565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190616600565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093610ffb936001600160a01b0361010090930483169392166119ee565b600084848460405160240161101293929190616629565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926110d89291169087908790600401616653565b600060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506111f592506001600160a01b039091169086908a908a908a9061667b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506112e490869086906166bc565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113c49291169087906004016166d5565b60006040518083038185885af11580156113e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261140b91908101906167df565b5060208054604080517fdda79b750000000000000000000000000000000000000000000000000000000081529051611498938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114939190616600565b611a0a565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290516114fb938b936001600160a01b031692635b11259192600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bf8578382906000526020600020018054611548906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611574906165b3565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b505050505081526020019060010190611529565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116b857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116116655790505b505050505081525050815260200190600101906115f9565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117b357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117605790505b505050505081525050815260200190600101906116f4565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bf857838290600052602060002001805461180e906165b3565b80601f016020809104026020016040519081016040528092919081815260200182805461183a906165b3565b80156118875780601f1061185c57610100808354040283529160200191611887565b820191906000526020600020905b81548152906001019060200180831161186a57829003601f168201915b5050505050815260200190600101906117ef565b60085460009060ff16156118b3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190616814565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60006119d961612a565b6119e4848483611a9a565b9150505b92915050565b6119f661612a565b611a038585858486611b15565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050505050565b600080611aa78584611c16565b9050611b0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611af59291906166d5565b60405160208183030381529060405285611c22565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611b8757600080fd5b505af1925050508015611b98575060015b611bad57611ba887878787611c50565b611c0d565b611bb987878787611c50565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050505b50505050505050565b6000611b0e8383611c69565b60c08101515160009015611c4657611c3f84848460c00151611c84565b9050611b0e565b611c3f8484611e2a565b6000611c5c8483611f15565b9050611a03858285611f21565b6000611c7583836122eb565b611b0e83836020015184611c22565b600080611c8f6122fb565b90506000611c9d86836123ce565b90506000611cb48260600151836020015185612874565b90506000611cc483838989612a86565b90506000611cd182613903565b602081015181519192509060030b15611d4457898260400151604051602001611cfb92919061682d565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d3b916004016168ae565b60405180910390fd5b6000611d876040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613ad2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611dda9084906004016168ae565b602060405180830381865afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190616600565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611e7f9087906004016168ae565b600060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ec491908101906167df565b90506000611ef28285604051602001611ede9291906168c1565b604051602081830303815290604052613cd2565b90506001600160a01b0381166119e4578484604051602001611cfb9291906168f0565b6000611c758383613ce5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190616814565b905080612188576000611ff386613cf1565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061207e905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613dde565b8061208a575060008451115b1561210d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120d690889088906004016166d5565b600060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b50505050612182565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050505b50611a03565b80600061219482613cf1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506121f690612051565b80612202575060008551115b15612287576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612250908a908a908a9060040161699b565b600060405180830381600087803b15801561226a57600080fd5b505af115801561227e573d6000803e3d6000fd5b50505050611c0d565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611bf457600080fd5b6122f782826000613df2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123829084906004016169cc565b600060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c79190810190616a13565b9250505090565b6124006040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061244b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61245485613ef5565b60208201526000612464866142da565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ce9190810190616a13565b868385602001516040516020016124e89493929190616a5c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125409085906004016168ae565b600060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125859190810190616a13565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125cd908490600401616b60565b602060405180830381865afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616591565b6126235781604051602001611cfb9190616bb2565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612668908490600401616c44565b600060405180830381865afa158015612685573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126ad9190810190616a13565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906126f4908490600401616c96565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190616591565b156127ca576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061277f908490600401616c96565b600060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c49190810190616a13565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016127ef9190616ce8565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161281b929190616d54565b600060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128609190810190616a13565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128905790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106128f0576128f0616d79565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061294457612944616d79565b6020026020010181905250846040516020016129609190616da8565b6040516020818303038152906040528160028151811061298257612982616d79565b60200260200101819052508260405160200161299e9190616e14565b604051602081830303815290604052816003815181106129c0576129c0616d79565b602002602001018190525060006129d682613903565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a67906040805180820182526000808252602091820152815180830190925284518252808501908201529061455d565b612a7c5785604051602001611cfb9190616e55565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612ad6565b511590565b612c4a57826020015115612b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d3b565b8260c0015115612c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d3b565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c6357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612cbe90616f15565b935060ff1681518110612cd357612cd3616d79565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d249190616f34565b604051602081830303815290604052828280612d3f90616f15565b935060ff1681518110612d5457612d54616d79565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612da190616f15565b935060ff1681518110612db657612db6616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e0390616f15565b935060ff1681518110612e1857612e18616d79565b60200260200101819052508760200151828280612e3490616f15565b935060ff1681518110612e4957612e49616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612e9690616f15565b935060ff1681518110612eab57612eab616d79565b602090810291909101015287518282612ec381616f15565b935060ff1681518110612ed857612ed8616d79565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f2590616f15565b935060ff1681518110612f3a57612f3a616d79565b6020026020010181905250612f4e466145be565b8282612f5981616f15565b935060ff1681518110612f6e57612f6e616d79565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fbb90616f15565b935060ff1681518110612fd057612fd0616d79565b602002602001018190525086828280612fe890616f15565b935060ff1681518110612ffd57612ffd616d79565b60209081029190910101528551156131245760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261304e81616f15565b935060ff168151811061306357613063616d79565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130b39089906004016168ae565b600060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f89190810190616a13565b828261310381616f15565b935060ff168151811061311857613118616d79565b60200260200101819052505b8460200151156131f45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261316d81616f15565b935060ff168151811061318257613182616d79565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131cf90616f15565b935060ff16815181106131e4576131e4616d79565b60200260200101819052506133bb565b61322c612ad18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132bf5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261326f81616f15565b935060ff168151811061328457613284616d79565b60200260200101819052508460a001516040516020016132a49190616da8565b6040516020818303038152906040528282806131cf90616f15565b8460c0015115801561330257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261330090511590565b155b156133bb5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261334681616f15565b935060ff168151811061335b5761335b616d79565b602002602001018190525061336f8861465e565b60405160200161337f9190616da8565b60405160208183030381529060405282828061339a90616f15565b935060ff16815181106133af576133af616d79565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526133ef90511590565b6134845760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261343281616f15565b935060ff168151811061344757613447616d79565b6020026020010181905250846040015182828061346390616f15565b935060ff168151811061347857613478616d79565b60200260200101819052505b6060850151156135a55760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134cd81616f15565b935060ff16815181106134e2576134e2616d79565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135799190810190616a13565b828261358481616f15565b935060ff168151811061359957613599616d79565b60200260200101819052505b60e0850151511561364c5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826135ef81616f15565b935060ff168151811061360457613604616d79565b60200260200101819052506136208560e00151600001516145be565b828261362b81616f15565b935060ff168151811061364057613640616d79565b60200260200101819052505b60e085015160200151156136f65760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261369981616f15565b935060ff16815181106136ae576136ae616d79565b60200260200101819052506136ca8560e00151602001516145be565b82826136d581616f15565b935060ff16815181106136ea576136ea616d79565b60200260200101819052505b60e085015160400151156137a05760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261374381616f15565b935060ff168151811061375857613758616d79565b60200260200101819052506137748560e00151604001516145be565b828261377f81616f15565b935060ff168151811061379457613794616d79565b60200260200101819052505b60e0850151606001511561384a5760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826137ed81616f15565b935060ff168151811061380257613802616d79565b602002602001018190525061381e8560e00151606001516145be565b828261382981616f15565b935060ff168151811061383e5761383e616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115613868576138686166f7565b60405190808252806020026020018201604052801561389b57816020015b60608152602001906001900390816138865790505b50905060005b8260ff168160ff1610156138f457838160ff16815181106138c4576138c4616d79565b6020026020010151828260ff16815181106138e1576138e1616d79565b60209081029190910101526001016138a1565b5093505050505b949350505050565b61392a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139b091869101616f9f565b600060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139f59190810190616a13565b90506000613a03868361514d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a339190616483565b6000604051808303816000875af1158015613a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7a9190810190616fe6565b805190915060030b15801590613a935750602081015151155b8015613aa25750604081015151155b15612a7c5781600081518110613aba57613aba616d79565b6020026020010151604051602001611cfb919061709c565b60606000613b078560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b3e9082905b906152a2565b15613c9b576000613bbb82613bb584613baf613b818a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152c9565b9061532b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c1f9082906152a2565b15613c8957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613c86905b82906153b0565b90505b613c92816153d6565b92505050611b0e565b8215613cb4578484604051602001611cfb929190617288565b5050604080516020810190915260008152611b0e565b509392505050565b6000808251602084016000f09392505050565b6122f782826001613df2565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d66919061732f565b6000604051808303816000865af19150503d8060008114613da3576040519150601f19603f3d011682016040523d82523d6000602084013e613da8565b606091505b50915091508115613dc757808060200190518101906138fb9190616a13565b505060408051602081019091526000815292915050565b6000613dea838361543f565b159392505050565b8160a0015115613e0157505050565b6000613e0e84848461551a565b90506000613e1b82613903565b602081015181519192509060030b158015613eb75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613eb790604080518082018252600080825260209182015281518083019092528451825280850190820152613b38565b15613ec457505050505050565b60408201515115613ee4578160400151604051602001611cfb919061734b565b80604051602001611cfb91906173a9565b60606000613f2a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613f8f905b829061455d565b15613ffe57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9908390615ab5565b6153d6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614060905b8290615b3f565b60010361412d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140c690613c7f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9905b83906153b0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261418c90613f88565b156142c357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906141f4908390615bd9565b9050600081600183516142079190617414565b8151811061421757614217616d79565b602002602001015190506142ba613ff961428d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615ab5565b95945050505050565b82604051602001611cfb9190617427565b50919050565b6060600061430f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061437190613f88565b1561437f57611b0e816153d6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526143de90614059565b60010361444857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff990614126565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144a790613f88565b156142c357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061450f908390615bd9565b905060018151111561454b57806002825161452a9190617414565b8151811061453a5761453a616d79565b602002602001015192505050919050565b5082604051602001611cfb9190617427565b805182516000911115614572575060006119e8565b8151835160208501516000929161458891617505565b6145929190617414565b9050826020015181036145a95760019150506119e8565b82516020840151819020912014905092915050565b606060006145cb83615c7e565b600101905060008167ffffffffffffffff8111156145eb576145eb6166f7565b6040519080825280601f01601f191660200182016040528015614615576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461461f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916146ea905b8290613dde565b1561472a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614789906146e3565b156147c957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614828906146e3565b1561486857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148c7906146e3565b8061492c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261492c906146e3565b1561496c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149cb906146e3565b80614a305750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a30906146e3565b15614a7057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614acf906146e3565b80614b345750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b34906146e3565b15614b7457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bd3906146e3565b80614c385750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c38906146e3565b15614c7857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cd7906146e3565b15614d1757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d76906146e3565b15614db657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e15906146e3565b15614e5557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614eb4906146e3565b15614ef457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f53906146e3565b15614f9357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ff2906146e3565b806150575750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615057906146e3565b1561509757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f6906146e3565b1561513657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611cfb9290602001617518565b60608060005b84518110156151d8578185828151811061516f5761516f616d79565b60200260200101516040516020016151889291906168c1565b6040516020818303038152906040529150600185516151a79190617414565b81146151d057816040516020016151be9190617681565b60405160208183030381529060405291505b600101615153565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816151f1579050509050838160008151811061521c5761521c616d79565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061527057615270616d79565b6020026020010181905250818160028151811061528f5761528f616d79565b6020908102919091010152949350505050565b60208083015183518351928401516000936152c09291849190615d60565b14159392505050565b604080518082019091526000808252602082015260006152fb8460000151856020015185600001518660200151615e71565b905083602001518161530d9190617414565b8451859061531c908390617414565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156153505750816119e8565b60208083015190840151600191146153775750815160208481015190840151829020919020145b80156153a85782518451859061538e908390617414565b90525082516020850180516153a4908390617505565b9052505b509192915050565b60408051808201909152600080825260208201526153cf838383615f91565b5092915050565b60606000826000015167ffffffffffffffff8111156153f7576153f76166f7565b6040519080825280601f01601f191660200182016040528015615421576020820181803683370190505b50905060006020820190506153cf818560200151866000015161603c565b8151815160009190811115615452575081515b6020808501519084015160005b8381101561550b57825182518082146154db5760001960208710156154ba5760018461548c896020617414565b6154969190617505565b6154a19060086176c2565b6154ac9060026177c0565b6154b69190617414565b1990505b81811683821681810391146154d85797506119e89650505050505050565b50505b6154e6602086617505565b94506154f3602085617505565b935050506020816155049190617505565b905061545f565b5084518651612a7c91906177cc565b606060006155266122fb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161554357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061559e90616f15565b935060ff16815181106155b3576155b3616d79565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161560491906177ec565b60405160208183030381529060405282828061561f90616f15565b935060ff168151811061563457615634616d79565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061568190616f15565b935060ff168151811061569657615696616d79565b6020026020010181905250826040516020016156b29190616e14565b6040516020818303038152906040528282806156cd90616f15565b935060ff16815181106156e2576156e2616d79565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061572f90616f15565b935060ff168151811061574457615744616d79565b602002602001018190525061575987846160b6565b828261576481616f15565b935060ff168151811061577957615779616d79565b6020908102919091010152855151156158255760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157cb81616f15565b935060ff16815181106157e0576157e0616d79565b60200260200101819052506157f98660000151846160b6565b828261580481616f15565b935060ff168151811061581957615819616d79565b60200260200101819052505b8560800151156158935760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261586e81616f15565b935060ff168151811061588357615883616d79565b60200260200101819052506158f9565b84156158f95760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826158d881616f15565b935060ff16815181106158ed576158ed616d79565b60200260200101819052505b604086015151156159955760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261594381616f15565b935060ff168151811061595857615958616d79565b6020026020010181905250856040015182828061597490616f15565b935060ff168151811061598957615989616d79565b60200260200101819052505b8560600151156159ff5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826159de81616f15565b935060ff16815181106159f3576159f3616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a1d57615a1d6166f7565b604051908082528060200260200182016040528015615a5057816020015b6060815260200190600190039081615a3b5790505b50905060005b8260ff168160ff161015615aa957838160ff1681518110615a7957615a79616d79565b6020026020010151828260ff1681518110615a9657615a96616d79565b6020908102919091010152600101615a56565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615ada5750816119e8565b81518351602085015160009291615af091617505565b615afa9190617414565b60208401519091506001908214615b1b575082516020840151819020908220145b8015615b3657835185518690615b32908390617414565b9052505b50929392505050565b6000808260000151615b638560000151866020015186600001518760200151615e71565b615b6d9190617505565b90505b83516020850151615b819190617505565b81116153cf5781615b9181617831565b9250508260000151615bc8856020015183615bac9190617414565b8651615bb89190617414565b8386600001518760200151615e71565b615bd29190617505565b9050615b70565b60606000615be78484615b3f565b615bf2906001617505565b67ffffffffffffffff811115615c0a57615c0a6166f7565b604051908082528060200260200182016040528015615c3d57816020015b6060815260200190600190039081615c285790505b50905060005b8151811015613cca57615c59613ff986866153b0565b828281518110615c6b57615c6b616d79565b6020908102919091010152600101615c43565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cc7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615cf3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d1157662386f26fc10000830492506010015b6305f5e1008310615d29576305f5e100830492506008015b6127108310615d3d57612710830492506004015b60648310615d4f576064830492506002015b600a83106119e85760010192915050565b600080858411615e675760208411615e135760008415615dab576001615d87866020617414565b615d929060086176c2565b615d9d9060026177c0565b615da79190617414565b1990505b8351811685615dba8989617505565b615dc49190617414565b805190935082165b818114615dfe57878411615de657879450505050506138fb565b83615df08161784b565b945050828451169050615dcc565b615e088785617505565b9450505050506138fb565b838320615e208588617414565b615e2a9087617505565b91505b858210615e6557848220808203615e5257615e488684617505565b93505050506138fb565b615e5d600184617414565b925050615e2d565b505b5092949350505050565b60008381868511615f7c5760208511615f2b5760008515615ebd576001615e99876020617414565b615ea49060086176c2565b615eaf9060026177c0565b615eb99190617414565b1990505b84518116600087615ece8b8b617505565b615ed89190617414565b855190915083165b828114615f1d57818610615f0557615ef88b8b617505565b96505050505050506138fb565b85615f0f81617831565b965050838651169050615ee0565b8596505050505050506138fb565b508383206000905b615f3d8689617414565b8211615f7a57858320808203615f5957839450505050506138fb565b615f64600185617505565b9350508180615f7290617831565b925050615f33565b505b615f868787617505565b979650505050505050565b60408051808201909152600080825260208201526000615fc38560000151866020015186600001518760200151615e71565b602080870180519186019190915251909150615fdf9082617414565b835284516020860151615ff29190617505565b81036160015760008552616033565b8351835161600f9190617505565b8551869061601e908390617414565b905250835161602d9082617505565b60208601525b50909392505050565b602081106160745781518352616053602084617505565b9250616060602083617505565b915061606d602082617414565b905061603c565b60001981156160a357600161608a836020617414565b616096906101006177c0565b6160a09190617414565b90505b9151835183169219169190911790915250565b606060006160c484846123ce565b80516020808301516040519394506160de93909101617862565b60405160208183030381529060405291505092915050565b610c9f806178bb83390190565b610b4a8061855a83390190565b610f9a806190a483390190565b610d5e8061a03e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161616d616172565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161616d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156162245783516001600160a01b03168352602093840193909201916001016161fd565b509095945050505050565b60005b8381101561624a578181015183820152602001616232565b50506000910152565b6000815180845261626b81602086016020860161622f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616361577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261634b848651616253565b6020958601959094509290920191600101616311565b5091975050506020948501949290920191506001016162a7565b50929695505050505050565b600081518084526020840193506020830160005b828110156163db5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161639b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526164516040880182616253565b905060208201519150868103602088015261646c8183616387565b96505050602093840193919091019060010161640d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526164e5858351616253565b945060209384019391909101906001016164ab565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261657b6040870182616387565b9550506020938401939190910190600101616522565b6000602082840312156165a357600080fd5b81518015158114611b0e57600080fd5b600181811c908216806165c757607f821691505b6020821081036142d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561661257600080fd5b81516001600160a01b0381168114611b0e57600080fd5b60608152600061663c6060830186616253565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142ba6060830184616253565b6001600160a01b038616815284602082015260a0604082015260006166a360a0830186616253565b6060830194909452509015156080909101529392505050565b8281526040602082015260006138fb6040830184616253565b6001600160a01b03831681526040602082015260006138fb6040830184616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616749576167496166f7565b60405290565b60008067ffffffffffffffff84111561676a5761676a6166f7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616799576167996166f7565b6040528381529050808284018510156167b157600080fd5b613cca84602083018561622f565b600082601f8301126167d057600080fd5b611b0e8383516020850161674f565b6000602082840312156167f157600080fd5b815167ffffffffffffffff81111561680857600080fd5b6119e4848285016167bf565b60006020828403121561682657600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161686581601a85016020880161622f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168a281601c84016020880161622f565b01601c01949350505050565b602081526000611b0e6020830184616253565b600083516168d381846020880161622f565b8351908301906168e781836020880161622f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161692881601a85016020880161622f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161696581603384016020880161622f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142ba6060830184616253565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616a2557600080fd5b815167ffffffffffffffff811115616a3c57600080fd5b8201601f81018413616a4d57600080fd5b6119e48482516020840161674f565b60008551616a6e818460208a0161622f565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616aa8816001840160208a0161622f565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616ae681600284016020890161622f565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b2881600284016020880161622f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b736040830184616253565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616bea81601f85016020870161622f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c576040830184616253565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616ca96040830184616253565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d2081601485016020870161622f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d676040830185616253565b8281036020840152611b0a8185616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616de081600185016020870161622f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e2681846020870161622f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616ed981604b85016020870161622f565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f2b57616f2b616ee6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616ff857600080fd5b815167ffffffffffffffff81111561700f57600080fd5b82016060818503121561702157600080fd5b617029616726565b81518060030b811461703a57600080fd5b8152602082015167ffffffffffffffff81111561705657600080fd5b617062868285016167bf565b602083015250604082015167ffffffffffffffff81111561708257600080fd5b61708e868285016167bf565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516170fa81602185016020870161622f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516172e681602185016020880161622f565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161732381602e84016020880161622f565b01602e01949350505050565b6000825161734181846020870161622f565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161740781602285016020870161622f565b9190910160220192915050565b818103818111156119e8576119e8616ee6565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161745f81600e85016020870161622f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156119e8576119e8616ee6565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161755081601885016020880161622f565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161758d81601c84016020880161622f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161769381846020870161622f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176119e8576119e8616ee6565b6001815b6001841115617714578085048111156176f8576176f8616ee6565b600184161561770657908102905b60019390931c9280026176dd565b935093915050565b60008261772b575060016119e8565b81617738575060006119e8565b816001811461774e576002811461775857617774565b60019150506119e8565b60ff84111561776957617769616ee6565b50506001821b6119e8565b5060208310610133831016604e8410600b8410161715617797575081810a6119e8565b6177a460001984846176d9565b80600019048211156177b8576177b8616ee6565b029392505050565b6000611b0e838361771c565b81810360008312801583831316838312821617156153cf576153cf616ee6565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161782481601c85016020870161622f565b91909101601c0192915050565b6000600019820361784457617844616ee6565b5060010190565b60008161785a5761785a616ee6565b506000190190565b6000835161787481846020880161622f565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178ae81600184016020880161622f565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220fb91357315243cd58b4984ef515d932060b4bcfe79bbfd334e009bce2403ecce64736f6c634300081a0033", +} + +// GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMUUPSUpgradeTestMetaData.ABI instead. +var GatewayEVMUUPSUpgradeTestABI = GatewayEVMUUPSUpgradeTestMetaData.ABI + +// GatewayEVMUUPSUpgradeTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMUUPSUpgradeTestMetaData.Bin instead. +var GatewayEVMUUPSUpgradeTestBin = GatewayEVMUUPSUpgradeTestMetaData.Bin + +// DeployGatewayEVMUUPSUpgradeTest deploys a new Ethereum contract, binding an instance of GatewayEVMUUPSUpgradeTest to it. +func DeployGatewayEVMUUPSUpgradeTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMUUPSUpgradeTest, error) { + parsed, err := GatewayEVMUUPSUpgradeTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMUUPSUpgradeTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMUUPSUpgradeTest{GatewayEVMUUPSUpgradeTestCaller: GatewayEVMUUPSUpgradeTestCaller{contract: contract}, GatewayEVMUUPSUpgradeTestTransactor: GatewayEVMUUPSUpgradeTestTransactor{contract: contract}, GatewayEVMUUPSUpgradeTestFilterer: GatewayEVMUUPSUpgradeTestFilterer{contract: contract}}, nil +} + +// GatewayEVMUUPSUpgradeTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTest struct { + GatewayEVMUUPSUpgradeTestCaller // Read-only binding to the contract + GatewayEVMUUPSUpgradeTestTransactor // Write-only binding to the contract + GatewayEVMUUPSUpgradeTestFilterer // Log filterer for contract events +} + +// GatewayEVMUUPSUpgradeTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUUPSUpgradeTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUUPSUpgradeTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMUUPSUpgradeTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUUPSUpgradeTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMUUPSUpgradeTestSession struct { + Contract *GatewayEVMUUPSUpgradeTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMUUPSUpgradeTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMUUPSUpgradeTestCallerSession struct { + Contract *GatewayEVMUUPSUpgradeTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMUUPSUpgradeTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMUUPSUpgradeTestTransactorSession struct { + Contract *GatewayEVMUUPSUpgradeTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMUUPSUpgradeTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTestRaw struct { + Contract *GatewayEVMUUPSUpgradeTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMUUPSUpgradeTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTestCallerRaw struct { + Contract *GatewayEVMUUPSUpgradeTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMUUPSUpgradeTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMUUPSUpgradeTestTransactorRaw struct { + Contract *GatewayEVMUUPSUpgradeTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMUUPSUpgradeTest creates a new instance of GatewayEVMUUPSUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUUPSUpgradeTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMUUPSUpgradeTest, error) { + contract, err := bindGatewayEVMUUPSUpgradeTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTest{GatewayEVMUUPSUpgradeTestCaller: GatewayEVMUUPSUpgradeTestCaller{contract: contract}, GatewayEVMUUPSUpgradeTestTransactor: GatewayEVMUUPSUpgradeTestTransactor{contract: contract}, GatewayEVMUUPSUpgradeTestFilterer: GatewayEVMUUPSUpgradeTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMUUPSUpgradeTestCaller creates a new read-only instance of GatewayEVMUUPSUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUUPSUpgradeTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMUUPSUpgradeTestCaller, error) { + contract, err := bindGatewayEVMUUPSUpgradeTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestCaller{contract: contract}, nil +} + +// NewGatewayEVMUUPSUpgradeTestTransactor creates a new write-only instance of GatewayEVMUUPSUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUUPSUpgradeTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMUUPSUpgradeTestTransactor, error) { + contract, err := bindGatewayEVMUUPSUpgradeTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMUUPSUpgradeTestFilterer creates a new log filterer instance of GatewayEVMUUPSUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUUPSUpgradeTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMUUPSUpgradeTestFilterer, error) { + contract, err := bindGatewayEVMUUPSUpgradeTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMUUPSUpgradeTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMUUPSUpgradeTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMUUPSUpgradeTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMUUPSUpgradeTest.Contract.GatewayEVMUUPSUpgradeTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.GatewayEVMUUPSUpgradeTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.GatewayEVMUUPSUpgradeTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMUUPSUpgradeTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) ISTEST() (bool, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ISTEST(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) ISTEST() (bool, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ISTEST(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeArtifacts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeArtifacts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeContracts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeContracts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeSenders(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.ExcludeSenders(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) Failed() (bool, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.Failed(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) Failed() (bool, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.Failed(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetArtifactSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetArtifactSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetArtifacts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetArtifacts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetContracts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetContracts(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetInterfaces(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetInterfaces(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetSelectors(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMUUPSUpgradeTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetSenders(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TargetSenders(&_GatewayEVMUUPSUpgradeTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.SetUp(&_GatewayEVMUUPSUpgradeTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.SetUp(&_GatewayEVMUUPSUpgradeTest.TransactOpts) +} + +// TestUpgradeAndForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0x7a380ebf. +// +// Solidity: function testUpgradeAndForwardCallToReceivePayable() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactor) TestUpgradeAndForwardCallToReceivePayable(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.contract.Transact(opts, "testUpgradeAndForwardCallToReceivePayable") +} + +// TestUpgradeAndForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0x7a380ebf. +// +// Solidity: function testUpgradeAndForwardCallToReceivePayable() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestSession) TestUpgradeAndForwardCallToReceivePayable() (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TestUpgradeAndForwardCallToReceivePayable(&_GatewayEVMUUPSUpgradeTest.TransactOpts) +} + +// TestUpgradeAndForwardCallToReceivePayable is a paid mutator transaction binding the contract method 0x7a380ebf. +// +// Solidity: function testUpgradeAndForwardCallToReceivePayable() returns() +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestTransactorSession) TestUpgradeAndForwardCallToReceivePayable() (*types.Transaction, error) { + return _GatewayEVMUUPSUpgradeTest.Contract.TestUpgradeAndForwardCallToReceivePayable(&_GatewayEVMUUPSUpgradeTest.TransactOpts) +} + +// GatewayEVMUUPSUpgradeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestCallIterator struct { + Event *GatewayEVMUUPSUpgradeTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestCall represents a Call event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUUPSUpgradeTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestCallIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestCall) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseCall(log types.Log) (*GatewayEVMUUPSUpgradeTestCall, error) { + event := new(GatewayEVMUUPSUpgradeTestCall) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestDepositIterator struct { + Event *GatewayEVMUUPSUpgradeTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestDeposit represents a Deposit event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUUPSUpgradeTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestDepositIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestDeposit) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMUUPSUpgradeTestDeposit, error) { + event := new(GatewayEVMUUPSUpgradeTestDeposit) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecutedIterator struct { + Event *GatewayEVMUUPSUpgradeTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestExecuted represents a Executed event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUUPSUpgradeTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestExecutedIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestExecuted) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMUUPSUpgradeTestExecuted, error) { + event := new(GatewayEVMUUPSUpgradeTestExecuted) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestExecutedV2Iterator is returned from FilterExecutedV2 and is used to iterate over the raw logs and unpacked data for ExecutedV2 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecutedV2Iterator struct { + Event *GatewayEVMUUPSUpgradeTestExecutedV2 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestExecutedV2Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecutedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecutedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestExecutedV2Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestExecutedV2Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestExecutedV2 represents a ExecutedV2 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecutedV2 struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedV2 is a free log retrieval operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterExecutedV2(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUUPSUpgradeTestExecutedV2Iterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ExecutedV2", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestExecutedV2Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ExecutedV2", logs: logs, sub: sub}, nil +} + +// WatchExecutedV2 is a free log subscription operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchExecutedV2(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestExecutedV2, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ExecutedV2", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestExecutedV2) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedV2 is a log parse operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseExecutedV2(log types.Log) (*GatewayEVMUUPSUpgradeTestExecutedV2, error) { + event := new(GatewayEVMUUPSUpgradeTestExecutedV2) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator struct { + Event *GatewayEVMUUPSUpgradeTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestExecutedWithERC20Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestExecutedWithERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMUUPSUpgradeTestExecutedWithERC20, error) { + event := new(GatewayEVMUUPSUpgradeTestExecutedWithERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedERC20Iterator struct { + Event *GatewayEVMUUPSUpgradeTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReceivedERC20 represents a ReceivedERC20 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestReceivedERC20Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestReceivedERC20Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReceivedERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReceivedERC20(log types.Log) (*GatewayEVMUUPSUpgradeTestReceivedERC20, error) { + event := new(GatewayEVMUUPSUpgradeTestReceivedERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator struct { + Event *GatewayEVMUUPSUpgradeTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReceivedNoParams represents a ReceivedNoParams event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestReceivedNoParamsIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReceivedNoParams) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReceivedNoParams(log types.Log) (*GatewayEVMUUPSUpgradeTestReceivedNoParams, error) { + event := new(GatewayEVMUUPSUpgradeTestReceivedNoParams) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator struct { + Event *GatewayEVMUUPSUpgradeTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReceivedNonPayable represents a ReceivedNonPayable event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestReceivedNonPayableIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReceivedNonPayable) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReceivedNonPayable(log types.Log) (*GatewayEVMUUPSUpgradeTestReceivedNonPayable, error) { + event := new(GatewayEVMUUPSUpgradeTestReceivedNonPayable) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedPayableIterator struct { + Event *GatewayEVMUUPSUpgradeTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReceivedPayable represents a ReceivedPayable event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestReceivedPayableIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestReceivedPayableIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReceivedPayable) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReceivedPayable(log types.Log) (*GatewayEVMUUPSUpgradeTestReceivedPayable, error) { + event := new(GatewayEVMUUPSUpgradeTestReceivedPayable) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedRevertIterator struct { + Event *GatewayEVMUUPSUpgradeTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReceivedRevert represents a ReceivedRevert event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestReceivedRevertIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestReceivedRevertIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReceivedRevert) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReceivedRevert(log types.Log) (*GatewayEVMUUPSUpgradeTestReceivedRevert, error) { + event := new(GatewayEVMUUPSUpgradeTestReceivedRevert) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestRevertedIterator struct { + Event *GatewayEVMUUPSUpgradeTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestReverted represents a Reverted event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUUPSUpgradeTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestRevertedIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestReverted) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseReverted(log types.Log) (*GatewayEVMUUPSUpgradeTestReverted, error) { + event := new(GatewayEVMUUPSUpgradeTestReverted) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator struct { + Event *GatewayEVMUUPSUpgradeTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestRevertedWithERC20Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestRevertedWithERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMUUPSUpgradeTestRevertedWithERC20, error) { + event := new(GatewayEVMUUPSUpgradeTestRevertedWithERC20) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogIterator struct { + Event *GatewayEVMUUPSUpgradeTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLog represents a Log event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLog) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLog(log types.Log) (*GatewayEVMUUPSUpgradeTestLog, error) { + event := new(GatewayEVMUUPSUpgradeTestLog) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogAddressIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogAddress represents a LogAddress event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogAddressIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogAddressIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogAddress) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogAddress(log types.Log) (*GatewayEVMUUPSUpgradeTestLogAddress, error) { + event := new(GatewayEVMUUPSUpgradeTestLogAddress) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArrayIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogArray represents a LogArray event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogArrayIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogArrayIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogArray) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogArray(log types.Log) (*GatewayEVMUUPSUpgradeTestLogArray, error) { + event := new(GatewayEVMUUPSUpgradeTestLogArray) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArray0Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogArray0 represents a LogArray0 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogArray0Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogArray0) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogArray0(log types.Log) (*GatewayEVMUUPSUpgradeTestLogArray0, error) { + event := new(GatewayEVMUUPSUpgradeTestLogArray0) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArray1Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogArray1 represents a LogArray1 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogArray1Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogArray1) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogArray1(log types.Log) (*GatewayEVMUUPSUpgradeTestLogArray1, error) { + event := new(GatewayEVMUUPSUpgradeTestLogArray1) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogBytesIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogBytes represents a LogBytes event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogBytesIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogBytesIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogBytes) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogBytes(log types.Log) (*GatewayEVMUUPSUpgradeTestLogBytes, error) { + event := new(GatewayEVMUUPSUpgradeTestLogBytes) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogBytes32Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogBytes32 represents a LogBytes32 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogBytes32Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogBytes32) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogBytes32(log types.Log) (*GatewayEVMUUPSUpgradeTestLogBytes32, error) { + event := new(GatewayEVMUUPSUpgradeTestLogBytes32) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogIntIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogInt represents a LogInt event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogIntIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogIntIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogInt(log types.Log) (*GatewayEVMUUPSUpgradeTestLogInt, error) { + event := new(GatewayEVMUUPSUpgradeTestLogInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedAddressIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedAddressIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedAddress) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedAddress, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedAddress) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArrayIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArray represents a LogNamedArray event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedArrayIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedArray, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedArray0Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray0) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedArray0, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray0) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedArray1Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray1) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedArray1, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedArray1) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedBytesIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedBytesIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedBytes) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedBytes, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedBytes) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedBytes32Iterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedBytes32) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedBytes32, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedBytes32) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedDecimalIntIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedDecimalInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedDecimalInt, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedDecimalInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedDecimalUintIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedDecimalUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedDecimalUint, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedDecimalUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedIntIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedInt represents a LogNamedInt event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedIntIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedInt, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedInt) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedStringIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedString represents a LogNamedString event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedStringIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedString) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedString(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedString, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedString) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedUintIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogNamedUint represents a LogNamedUint event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogNamedUintIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogNamedUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayEVMUUPSUpgradeTestLogNamedUint, error) { + event := new(GatewayEVMUUPSUpgradeTestLogNamedUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogStringIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogString represents a LogString event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogStringIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogStringIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogString) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogString(log types.Log) (*GatewayEVMUUPSUpgradeTestLogString, error) { + event := new(GatewayEVMUUPSUpgradeTestLogString) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogUintIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogUint represents a LogUint event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogUintIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogUintIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogUint(log types.Log) (*GatewayEVMUUPSUpgradeTestLogUint, error) { + event := new(GatewayEVMUUPSUpgradeTestLogUint) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUUPSUpgradeTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogsIterator struct { + Event *GatewayEVMUUPSUpgradeTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUUPSUpgradeTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUUPSUpgradeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUUPSUpgradeTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUUPSUpgradeTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUUPSUpgradeTestLogs represents a Logs event raised by the GatewayEVMUUPSUpgradeTest contract. +type GatewayEVMUUPSUpgradeTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayEVMUUPSUpgradeTestLogsIterator, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayEVMUUPSUpgradeTestLogsIterator{contract: _GatewayEVMUUPSUpgradeTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayEVMUUPSUpgradeTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUUPSUpgradeTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUUPSUpgradeTestLogs) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMUUPSUpgradeTest *GatewayEVMUUPSUpgradeTestFilterer) ParseLogs(log types.Log) (*GatewayEVMUUPSUpgradeTestLogs, error) { + event := new(GatewayEVMUUPSUpgradeTestLogs) + if err := _GatewayEVMUUPSUpgradeTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go new file mode 100644 index 00000000..61308e06 --- /dev/null +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -0,0 +1,2224 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevmupgradetest + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. +var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033", +} + +// GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMUpgradeTestMetaData.ABI instead. +var GatewayEVMUpgradeTestABI = GatewayEVMUpgradeTestMetaData.ABI + +// GatewayEVMUpgradeTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMUpgradeTestMetaData.Bin instead. +var GatewayEVMUpgradeTestBin = GatewayEVMUpgradeTestMetaData.Bin + +// DeployGatewayEVMUpgradeTest deploys a new Ethereum contract, binding an instance of GatewayEVMUpgradeTest to it. +func DeployGatewayEVMUpgradeTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMUpgradeTest, error) { + parsed, err := GatewayEVMUpgradeTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMUpgradeTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMUpgradeTest{GatewayEVMUpgradeTestCaller: GatewayEVMUpgradeTestCaller{contract: contract}, GatewayEVMUpgradeTestTransactor: GatewayEVMUpgradeTestTransactor{contract: contract}, GatewayEVMUpgradeTestFilterer: GatewayEVMUpgradeTestFilterer{contract: contract}}, nil +} + +// GatewayEVMUpgradeTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMUpgradeTest struct { + GatewayEVMUpgradeTestCaller // Read-only binding to the contract + GatewayEVMUpgradeTestTransactor // Write-only binding to the contract + GatewayEVMUpgradeTestFilterer // Log filterer for contract events +} + +// GatewayEVMUpgradeTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMUpgradeTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUpgradeTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMUpgradeTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUpgradeTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMUpgradeTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMUpgradeTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMUpgradeTestSession struct { + Contract *GatewayEVMUpgradeTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMUpgradeTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMUpgradeTestCallerSession struct { + Contract *GatewayEVMUpgradeTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMUpgradeTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMUpgradeTestTransactorSession struct { + Contract *GatewayEVMUpgradeTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMUpgradeTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMUpgradeTestRaw struct { + Contract *GatewayEVMUpgradeTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMUpgradeTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMUpgradeTestCallerRaw struct { + Contract *GatewayEVMUpgradeTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMUpgradeTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMUpgradeTestTransactorRaw struct { + Contract *GatewayEVMUpgradeTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMUpgradeTest creates a new instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUpgradeTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMUpgradeTest, error) { + contract, err := bindGatewayEVMUpgradeTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTest{GatewayEVMUpgradeTestCaller: GatewayEVMUpgradeTestCaller{contract: contract}, GatewayEVMUpgradeTestTransactor: GatewayEVMUpgradeTestTransactor{contract: contract}, GatewayEVMUpgradeTestFilterer: GatewayEVMUpgradeTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMUpgradeTestCaller creates a new read-only instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUpgradeTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMUpgradeTestCaller, error) { + contract, err := bindGatewayEVMUpgradeTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestCaller{contract: contract}, nil +} + +// NewGatewayEVMUpgradeTestTransactor creates a new write-only instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUpgradeTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMUpgradeTestTransactor, error) { + contract, err := bindGatewayEVMUpgradeTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMUpgradeTestFilterer creates a new log filterer instance of GatewayEVMUpgradeTest, bound to a specific deployed contract. +func NewGatewayEVMUpgradeTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMUpgradeTestFilterer, error) { + contract, err := bindGatewayEVMUpgradeTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMUpgradeTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMUpgradeTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMUpgradeTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.GatewayEVMUpgradeTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMUpgradeTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVMUpgradeTest.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVMUpgradeTest.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayEVMUpgradeTest.Contract.UPGRADEINTERFACEVERSION(&_GatewayEVMUpgradeTest.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Custody(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "custody") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Custody() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.Custody(&_GatewayEVMUpgradeTest.CallOpts) +} + +// Custody is a free data retrieval call binding the contract method 0xdda79b75. +// +// Solidity: function custody() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Custody() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.Custody(&_GatewayEVMUpgradeTest.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Owner() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Owner() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.ProxiableUUID(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ProxiableUUID() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.ProxiableUUID(&_GatewayEVMUpgradeTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TssAddress() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.TssAddress(&_GatewayEVMUpgradeTest.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) TssAddress() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.TssAddress(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ZetaConnector(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "zetaConnector") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ZetaConnector() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.ZetaConnector(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ZetaConnector is a free data retrieval call binding the contract method 0x57bec62f. +// +// Solidity: function zetaConnector() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ZetaConnector() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.ZetaConnector(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ZetaToken() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.ZetaToken(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ZetaToken() (common.Address, error) { + return _GatewayEVMUpgradeTest.Contract.ZetaToken(&_GatewayEVMUpgradeTest.CallOpts) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "call", receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Call(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Call(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "deposit", receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Deposit(&_GatewayEVMUpgradeTest.TransactOpts, receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Deposit(&_GatewayEVMUpgradeTest.TransactOpts, receiver) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "deposit0", receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Deposit0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Deposit0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "depositAndCall", receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.DepositAndCall(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.DepositAndCall(&_GatewayEVMUpgradeTest.TransactOpts, receiver, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.DepositAndCall0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.DepositAndCall0(&_GatewayEVMUpgradeTest.TransactOpts, receiver, amount, asset, payload) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "execute", destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Execute(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Execute(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "executeRevert", destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.ExecuteRevert(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.ExecuteRevert(&_GatewayEVMUpgradeTest.TransactOpts, destination, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "executeWithERC20", token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.ExecuteWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.ExecuteWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "revertWithERC20", token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RevertWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RevertWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "setConnector", _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.SetConnector(&_GatewayEVMUpgradeTest.TransactOpts, _zetaConnector) +} + +// SetConnector is a paid mutator transaction binding the contract method 0x10188aef. +// +// Solidity: function setConnector(address _zetaConnector) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.SetConnector(&_GatewayEVMUpgradeTest.TransactOpts, _zetaConnector) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "setCustody", _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.SetCustody(&_GatewayEVMUpgradeTest.TransactOpts, _custody) +} + +// SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. +// +// Solidity: function setCustody(address _custody) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.SetCustody(&_GatewayEVMUpgradeTest.TransactOpts, _custody) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.UpgradeToAndCall(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.UpgradeToAndCall(&_GatewayEVMUpgradeTest.TransactOpts, newImplementation, data) +} + +// GatewayEVMUpgradeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestCallIterator struct { + Event *GatewayEVMUpgradeTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestCall represents a Call event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUpgradeTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestCallIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestCall) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseCall(log types.Log) (*GatewayEVMUpgradeTestCall, error) { + event := new(GatewayEVMUpgradeTestCall) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestDepositIterator struct { + Event *GatewayEVMUpgradeTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestDeposit represents a Deposit event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMUpgradeTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestDepositIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestDeposit) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMUpgradeTestDeposit, error) { + event := new(GatewayEVMUpgradeTestDeposit) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecutedIterator struct { + Event *GatewayEVMUpgradeTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestExecuted represents a Executed event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestExecutedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestExecuted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMUpgradeTestExecuted, error) { + event := new(GatewayEVMUpgradeTestExecuted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestExecutedV2Iterator is returned from FilterExecutedV2 and is used to iterate over the raw logs and unpacked data for ExecutedV2 events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecutedV2Iterator struct { + Event *GatewayEVMUpgradeTestExecutedV2 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecutedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecutedV2) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestExecutedV2Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestExecutedV2 represents a ExecutedV2 event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecutedV2 struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedV2 is a free log retrieval operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecutedV2(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestExecutedV2Iterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "ExecutedV2", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestExecutedV2Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "ExecutedV2", logs: logs, sub: sub}, nil +} + +// WatchExecutedV2 is a free log subscription operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecutedV2(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecutedV2, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "ExecutedV2", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestExecutedV2) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedV2 is a log parse operation binding the contract event 0x373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546. +// +// Solidity: event ExecutedV2(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecutedV2(log types.Log) (*GatewayEVMUpgradeTestExecutedV2, error) { + event := new(GatewayEVMUpgradeTestExecutedV2) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedV2", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecutedWithERC20Iterator struct { + Event *GatewayEVMUpgradeTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUpgradeTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestExecutedWithERC20Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestExecutedWithERC20) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMUpgradeTestExecutedWithERC20, error) { + event := new(GatewayEVMUpgradeTestExecutedWithERC20) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestInitializedIterator struct { + Event *GatewayEVMUpgradeTestInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestInitialized represents a Initialized event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayEVMUpgradeTestInitializedIterator, error) { + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestInitializedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestInitialized) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestInitialized) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseInitialized(log types.Log) (*GatewayEVMUpgradeTestInitialized, error) { + event := new(GatewayEVMUpgradeTestInitialized) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestOwnershipTransferredIterator struct { + Event *GatewayEVMUpgradeTestOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMUpgradeTestOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestOwnershipTransferredIterator{contract: _GatewayEVMUpgradeTest.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestOwnershipTransferred) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMUpgradeTestOwnershipTransferred, error) { + event := new(GatewayEVMUpgradeTestOwnershipTransferred) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRevertedIterator struct { + Event *GatewayEVMUpgradeTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestReverted represents a Reverted event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMUpgradeTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestRevertedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestReverted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseReverted(log types.Log) (*GatewayEVMUpgradeTestReverted, error) { + event := new(GatewayEVMUpgradeTestReverted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRevertedWithERC20Iterator struct { + Event *GatewayEVMUpgradeTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMUpgradeTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestRevertedWithERC20Iterator{contract: _GatewayEVMUpgradeTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestRevertedWithERC20) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMUpgradeTestRevertedWithERC20, error) { + event := new(GatewayEVMUpgradeTestRevertedWithERC20) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestUpgradedIterator struct { + Event *GatewayEVMUpgradeTestUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestUpgraded represents a Upgraded event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayEVMUpgradeTestUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestUpgradedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestUpgraded) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseUpgraded(log types.Log) (*GatewayEVMUpgradeTestUpgraded, error) { + event := new(GatewayEVMUpgradeTestUpgraded) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go new file mode 100644 index 00000000..9779a4fa --- /dev/null +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -0,0 +1,5548 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevmzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. +var GatewayEVMZEVMTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f1148061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b610132611156565b60405161013f9190617602565b60405180910390f35b6101506111b8565b60405161013f919061769e565b6101326112fa565b61013261135a565b6101286113ba565b61017d611c17565b60405161013f9190617804565b610128611d99565b61019a6125a2565b60405161013f91906178a2565b6101af612672565b60405161013f9190617919565b61012861276d565b6101af612d32565b61019a612e2d565b6101dc612efd565b604051901515815260200161013f565b610128612fd1565b61013261337d565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051610267906174ee565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610331906174ee565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152610499919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526133dd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061051d906174fb565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610550573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460405192841693918216929116906105a590617508565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156105e1573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906179b0565b506040516109bd90617515565b604051809103906000f0801580156109d9573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519290931692820192909252610ab7919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526133dd565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b0890617522565b6001600160a01b039091168152602001604051809103906000f080158015610b34573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506000806000604051610c129061752f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c4e573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610ca49061753c565b610cb3969594939291906179d2565b604051809103906000f080158015610ccf573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9091906179b0565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906179b0565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af1158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906179b0565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156112f157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112da57838290600052602060002001805461124d90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461127990617ac7565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b50505050508152602001906001019061122e565b5050505081525050815260200190600101906111dc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190617b14565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114c790889088908890602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611560926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d5461159192620f4240916001600160a01b0316908690602401617b57565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161164e916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b15801561166857600080fd5b505af115801561167c573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117a092620f4240916001600160a01b0316908d908d908d90600401617bbe565b600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561184b57600080fd5b505af115801561185f573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061194e92506001600160a01b039091169087908b908b908b90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a3d9087908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b1f9216908790600401617c6d565b60006040518083038185885af1158015611b3d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b669190810190617d77565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf59190617b14565b9050611c0d81611c08620f424087617ddb565b6133fc565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000209060020201604051806040016040529081600082018054611c6e90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9a90617ac7565b8015611ce75780601f10611cbc57610100808354040283529160200191611ce7565b820191906000526020600020905b815481529060010190602001808311611cca57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d8157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d2e5790505b50505050508152505081526020019060010190611c3b565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e1590879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190617b14565b8760405161201596959493929190617dee565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261213992620f4240916001600160a01b0316908790600401617e41565b600060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190617b14565b90506122048160006133fc565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061238192506001600160a01b039091169086908a908a908a90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124709086908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125529216908790600401617c6d565b60006040518083038185885af1158015612570573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125999190810190617d77565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000200180546125e590617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461261190617ac7565b801561265e5780601f106126335761010080835404028352916020019161265e565b820191906000526020600020905b81548152906001019060200180831161264157829003601f168201915b5050505050815260200190600101906125c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127025790505b50505050508152505081526020019060010190612696565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906127e990879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129ea918590617e7b565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a57929190617e7b565b600060405180830381600087803b158015612a7157600080fd5b505af1158015612a85573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612ba857600080fd5b505af1158015612bbc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c019085908590617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c7b57600080fd5b505af1158015612c8f573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692612ce39216908690600401617c6d565b60006040518083038185885af1158015612d01573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d2a9190810190617d77565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dc25790505b50505050508152505081526020019060010190612d56565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112f1578382906000526020600020018054612e7090617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9c90617ac7565b8015612ee95780601f10612ebe57610100808354040283529160200191612ee9565b820191906000526020600020905b815481529060010190602001808311612ecc57829003601f168201915b505050505081526020019060010190612e51565b60085460009060ff1615612f15575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fca9190617b14565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304d90879087908790602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e6926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052613105918490602401617e7b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c2916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016132e79493929190617ea0565b600060405180830381600087803b15801561330157600080fd5b505af1158015613315573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401612264565b606060158054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b60006133e7617549565b6133f284848361347b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561346757600080fd5b505afa158015612d2a573d6000803e3d6000fd5b60008061348885846134f6565b90506134eb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016134d6929190617c6d565b60405160208183030381529060405285613502565b9150505b9392505050565b60006134ef8383613530565b60c081015151600090156135265761351f84848460c0015161354b565b90506134ef565b61351f84846136f1565b600061353c83836137dc565b6134ef83836020015184613502565b6000806135566137ec565b9050600061356486836138bf565b9050600061357b8260600151836020015185613d65565b9050600061358b83838989613f77565b9050600061359882614df4565b602081015181519192509060030b1561360b578982604001516040516020016135c2929190617ede565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261360291600401617f5f565b60405180910390fd5b600061364e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614fc3565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906136a1908490600401617f5f565b602060405180830381865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e29190617f72565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613746908790600401617f5f565b600060405180830381865afa158015613763573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261378b9190810190617d77565b905060006137b982856040516020016137a5929190617f9b565b6040516020818303038152906040526151c3565b90506001600160a01b0381166133f25784846040516020016135c2929190617fca565b6137e8828260006151d6565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613873908490600401618075565b600060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138b891908101906180bc565b9250505090565b6138f16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061393c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613945856152d9565b60208201526000613955866156be565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139bf91908101906180bc565b868385602001516040516020016139d99493929190618105565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613a31908590600401617f5f565b600060405180830381865afa158015613a4e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7691908101906180bc565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613abe908490600401618209565b602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aff91906179b0565b613b1457816040516020016135c2919061825b565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613b599084906004016182ed565b600060405180830381865afa158015613b76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b9e91908101906180bc565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613be590849060040161833f565b602060405180830381865afa158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906179b0565b15613cbb576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613c7090849060040161833f565b600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906180bc565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613ce09190618391565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613d0c929190617e7b565b600060405180830381865afa158015613d29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5191908101906180bc565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081613d815790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613de157613de16183fd565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110613e3557613e356183fd565b602002602001018190525084604051602001613e51919061842c565b60405160208183030381529060405281600281518110613e7357613e736183fd565b602002602001018190525082604051602001613e8f9190618498565b60405160208183030381529060405281600381518110613eb157613eb16183fd565b60200260200101819052506000613ec782614df4565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250613f589060408051808201825260008082526020918201528151808301909252845182528085019082015290615941565b613f6d57856040516020016135c291906184d9565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613fc7565b511590565b61413b57826020015115614083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613602565b8260c001511561413b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613602565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161415457905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806141af9061856a565b935060ff16815181106141c4576141c46183fd565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016142159190618589565b6040516020818303038152906040528282806142309061856a565b935060ff1681518110614245576142456183fd565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806142929061856a565b935060ff16815181106142a7576142a76183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806142f49061856a565b935060ff1681518110614309576143096183fd565b602002602001018190525087602001518282806143259061856a565b935060ff168151811061433a5761433a6183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806143879061856a565b935060ff168151811061439c5761439c6183fd565b6020908102919091010152875182826143b48161856a565b935060ff16815181106143c9576143c96183fd565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806144169061856a565b935060ff168151811061442b5761442b6183fd565b602002602001018190525061443f466159a2565b828261444a8161856a565b935060ff168151811061445f5761445f6183fd565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806144ac9061856a565b935060ff16815181106144c1576144c16183fd565b6020026020010181905250868282806144d99061856a565b935060ff16815181106144ee576144ee6183fd565b60209081029190910101528551156146155760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261453f8161856a565b935060ff1681518110614554576145546183fd565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906145a4908990600401617f5f565b600060405180830381865afa1580156145c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145e991908101906180bc565b82826145f48161856a565b935060ff1681518110614609576146096183fd565b60200260200101819052505b8460200151156146e55760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261465e8161856a565b935060ff1681518110614673576146736183fd565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806146c09061856a565b935060ff16815181106146d5576146d56183fd565b60200260200101819052506148ac565b61471d613fc28660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6147b05760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826147608161856a565b935060ff1681518110614775576147756183fd565b60200260200101819052508460a00151604051602001614795919061842c565b6040516020818303038152906040528282806146c09061856a565b8460c001511580156147f35750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526147f190511590565b155b156148ac5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826148378161856a565b935060ff168151811061484c5761484c6183fd565b602002602001018190525061486088615a42565b604051602001614870919061842c565b60405160208183030381529060405282828061488b9061856a565b935060ff16815181106148a0576148a06183fd565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526148e090511590565b6149755760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826149238161856a565b935060ff1681518110614938576149386183fd565b602002602001018190525084604001518282806149549061856a565b935060ff1681518110614969576149696183fd565b60200260200101819052505b606085015115614a965760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826149be8161856a565b935060ff16815181106149d3576149d36183fd565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a6a91908101906180bc565b8282614a758161856a565b935060ff1681518110614a8a57614a8a6183fd565b60200260200101819052505b60e08501515115614b3d5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614ae08161856a565b935060ff1681518110614af557614af56183fd565b6020026020010181905250614b118560e00151600001516159a2565b8282614b1c8161856a565b935060ff1681518110614b3157614b316183fd565b60200260200101819052505b60e08501516020015115614be75760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614b8a8161856a565b935060ff1681518110614b9f57614b9f6183fd565b6020026020010181905250614bbb8560e00151602001516159a2565b8282614bc68161856a565b935060ff1681518110614bdb57614bdb6183fd565b60200260200101819052505b60e08501516040015115614c915760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614c348161856a565b935060ff1681518110614c4957614c496183fd565b6020026020010181905250614c658560e00151604001516159a2565b8282614c708161856a565b935060ff1681518110614c8557614c856183fd565b60200260200101819052505b60e08501516060015115614d3b5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614cde8161856a565b935060ff1681518110614cf357614cf36183fd565b6020026020010181905250614d0f8560e00151606001516159a2565b8282614d1a8161856a565b935060ff1681518110614d2f57614d2f6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115614d5957614d59617c8f565b604051908082528060200260200182016040528015614d8c57816020015b6060815260200190600190039081614d775790505b50905060005b8260ff168160ff161015614de557838160ff1681518110614db557614db56183fd565b6020026020010151828260ff1681518110614dd257614dd26183fd565b6020908102919091010152600101614d92565b5093505050505b949350505050565b614e1b6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614ea1918691016185f4565b600060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ee691908101906180bc565b90506000614ef48683616531565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401614f2491906178a2565b6000604051808303816000875af1158015614f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f6b919081019061863b565b805190915060030b15801590614f845750602081015151155b8015614f935750604081015151155b15613f6d5781600081518110614fab57614fab6183fd565b60200260200101516040516020016135c291906186f1565b60606000614ff88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061502f9082905b90616686565b1561518c5760006150ac826150a6846150a06150728a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906166ad565b9061670f565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615110908290616686565b1561517a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615177905b8290616794565b90505b615183816167ba565b925050506134ef565b82156151a55784846040516020016135c29291906188dd565b50506040805160208101909152600081526134ef565b509392505050565b6000808251602084016000f09392505050565b8160a00151156151e557505050565b60006151f2848484616823565b905060006151ff82614df4565b602081015181519192509060030b15801561529b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529b90604080518082018252600080825260209182015281518083019092528451825280850190820152615029565b156152a857505050505050565b604082015151156152c85781604001516040516020016135c29190618984565b806040516020016135c291906189e2565b6060600061530e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615373905b8290615941565b156153e257604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd908390616dbe565b6167ba565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615444905b8290616e48565b60010361551157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154aa90615170565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd905b8390616794565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155709061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906155d8908390616ee2565b9050600081600183516155eb9190617ddb565b815181106155fb576155fb6183fd565b6020026020010151905061569e6153dd6156716040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290616dbe565b95945050505050565b826040516020016135c29190618a4d565b50919050565b606060006156f38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506157559061536c565b15615763576134ef816167ba565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c29061543d565b60010361582c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd9061550a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261588b9061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158f3908390616ee2565b905060018151111561592f57806002825161590e9190617ddb565b8151811061591e5761591e6183fd565b602002602001015192505050919050565b50826040516020016135c29190618a4d565b805182516000911115615956575060006133f6565b8151835160208501516000929161596c91618b2b565b6159769190617ddb565b90508260200151810361598d5760019150506133f6565b82516020840151819020912014905092915050565b606060006159af83616f87565b600101905060008167ffffffffffffffff8111156159cf576159cf617c8f565b6040519080825280601f01601f1916602001820160405280156159f9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615a0357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ace905b8290617069565b15615b0e57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6d90615ac7565b15615bad57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c0c90615ac7565b15615c4c57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cab90615ac7565b80615d105750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d1090615ac7565b15615d5057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615daf90615ac7565b80615e145750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1490615ac7565b15615e5457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb390615ac7565b80615f185750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f1890615ac7565b15615f5857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fb790615ac7565b8061601c5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261601c90615ac7565b1561605c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bb90615ac7565b156160fb57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615a90615ac7565b1561619a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161f990615ac7565b1561623957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261629890615ac7565b156162d857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633790615ac7565b1561637757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d690615ac7565b8061643b5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261643b90615ac7565b1561647b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164da90615ac7565b1561651a57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516135c29290602001618b3e565b60608060005b84518110156165bc5781858281518110616553576165536183fd565b602002602001015160405160200161656c929190617f9b565b60405160208183030381529060405291506001855161658b9190617ddb565b81146165b457816040516020016165a29190618ca7565b60405160208183030381529060405291505b600101616537565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816165d55790505090508381600081518110616600576166006183fd565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616654576166546183fd565b60200260200101819052508181600281518110616673576166736183fd565b6020908102919091010152949350505050565b60208083015183518351928401516000936166a4929184919061707d565b14159392505050565b604080518082019091526000808252602082015260006166df846000015185602001518560000151866020015161718e565b90508360200151816166f19190617ddb565b84518590616700908390617ddb565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156167345750816133f6565b602080830151908401516001911461675b5750815160208481015190840151829020919020145b801561678c57825184518590616772908390617ddb565b9052508251602085018051616788908390618b2b565b9052505b509192915050565b60408051808201909152600080825260208201526167b38383836172ae565b5092915050565b60606000826000015167ffffffffffffffff8111156167db576167db617c8f565b6040519080825280601f01601f191660200182016040528015616805576020820181803683370190505b50905060006020820190506167b38185602001518660000151617359565b6060600061682f6137ec565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161684c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806168a79061856a565b935060ff16815181106168bc576168bc6183fd565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161690d9190618ce8565b6040516020818303038152906040528282806169289061856a565b935060ff168151811061693d5761693d6183fd565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061698a9061856a565b935060ff168151811061699f5761699f6183fd565b6020026020010181905250826040516020016169bb9190618498565b6040516020818303038152906040528282806169d69061856a565b935060ff16815181106169eb576169eb6183fd565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616a389061856a565b935060ff1681518110616a4d57616a4d6183fd565b6020026020010181905250616a6287846173d3565b8282616a6d8161856a565b935060ff1681518110616a8257616a826183fd565b602090810291909101015285515115616b2e5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ad48161856a565b935060ff1681518110616ae957616ae96183fd565b6020026020010181905250616b028660000151846173d3565b8282616b0d8161856a565b935060ff1681518110616b2257616b226183fd565b60200260200101819052505b856080015115616b9c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616b778161856a565b935060ff1681518110616b8c57616b8c6183fd565b6020026020010181905250616c02565b8415616c025760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616be18161856a565b935060ff1681518110616bf657616bf66183fd565b60200260200101819052505b60408601515115616c9e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616c4c8161856a565b935060ff1681518110616c6157616c616183fd565b60200260200101819052508560400151828280616c7d9061856a565b935060ff1681518110616c9257616c926183fd565b60200260200101819052505b856060015115616d085760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616ce78161856a565b935060ff1681518110616cfc57616cfc6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616d2657616d26617c8f565b604051908082528060200260200182016040528015616d5957816020015b6060815260200190600190039081616d445790505b50905060005b8260ff168160ff161015616db257838160ff1681518110616d8257616d826183fd565b6020026020010151828260ff1681518110616d9f57616d9f6183fd565b6020908102919091010152600101616d5f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616de35750816133f6565b81518351602085015160009291616df991618b2b565b616e039190617ddb565b60208401519091506001908214616e24575082516020840151819020908220145b8015616e3f57835185518690616e3b908390617ddb565b9052505b50929392505050565b6000808260000151616e6c856000015186602001518660000151876020015161718e565b616e769190618b2b565b90505b83516020850151616e8a9190618b2b565b81116167b35781616e9a81618d2d565b9250508260000151616ed1856020015183616eb59190617ddb565b8651616ec19190617ddb565b838660000151876020015161718e565b616edb9190618b2b565b9050616e79565b60606000616ef08484616e48565b616efb906001618b2b565b67ffffffffffffffff811115616f1357616f13617c8f565b604051908082528060200260200182016040528015616f4657816020015b6060815260200190600190039081616f315790505b50905060005b81518110156151bb57616f626153dd8686616794565b828281518110616f7457616f746183fd565b6020908102919091010152600101616f4c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616fd0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310616ffc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061701a57662386f26fc10000830492506010015b6305f5e1008310617032576305f5e100830492506008015b612710831061704657612710830492506004015b60648310617058576064830492506002015b600a83106133f65760010192915050565b60006170758383617413565b159392505050565b600080858411617184576020841161713057600084156170c85760016170a4866020617ddb565b6170af906008618d47565b6170ba906002618e45565b6170c49190617ddb565b1990505b83518116856170d78989618b2b565b6170e19190617ddb565b805190935082165b81811461711b578784116171035787945050505050614dec565b8361710d81618e51565b9450508284511690506170e9565b6171258785618b2b565b945050505050614dec565b83832061713d8588617ddb565b6171479087618b2b565b91505b8582106171825784822080820361716f576171658684618b2b565b9350505050614dec565b61717a600184617ddb565b92505061714a565b505b5092949350505050565b60008381868511617299576020851161724857600085156171da5760016171b6876020617ddb565b6171c1906008618d47565b6171cc906002618e45565b6171d69190617ddb565b1990505b845181166000876171eb8b8b618b2b565b6171f59190617ddb565b855190915083165b82811461723a57818610617222576172158b8b618b2b565b9650505050505050614dec565b8561722c81618d2d565b9650508386511690506171fd565b859650505050505050614dec565b508383206000905b61725a8689617ddb565b8211617297578583208082036172765783945050505050614dec565b617281600185618b2b565b935050818061728f90618d2d565b925050617250565b505b6172a38787618b2b565b979650505050505050565b604080518082019091526000808252602082015260006172e0856000015186602001518660000151876020015161718e565b6020808701805191860191909152519091506172fc9082617ddb565b83528451602086015161730f9190618b2b565b810361731e5760008552617350565b8351835161732c9190618b2b565b8551869061733b908390617ddb565b905250835161734a9082618b2b565b60208601525b50909392505050565b602081106173915781518352617370602084618b2b565b925061737d602083618b2b565b915061738a602082617ddb565b9050617359565b60001981156173c05760016173a7836020617ddb565b6173b390610100618e45565b6173bd9190617ddb565b90505b9151835183169219169190911790915250565b606060006173e184846138bf565b80516020808301516040519394506173fb93909101618e68565b60405160208183030381529060405291505092915050565b8151815160009190811115617426575081515b6020808501519084015160005b838110156174df57825182518082146174af57600019602087101561748e57600184617460896020617ddb565b61746a9190618b2b565b617475906008618d47565b617480906002618e45565b61748a9190617ddb565b1990505b81811683821681810391146174ac5797506133f69650505050505050565b50505b6174ba602086618b2b565b94506174c7602085618b2b565b935050506020816174d89190618b2b565b9050617433565b5084518651613f6d9190618ec0565b610c9f80618ee183390190565b610b4a80619b8083390190565b610f9a8061a6ca83390190565b610d5e8061b66483390190565b6107f68061c3c283390190565b610b3f8061cbb883390190565b6119e88061d6f783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161758c617591565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161758c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156176435783516001600160a01b031683526020938401939092019160010161761c565b509095945050505050565b60005b83811015617669578181015183820152602001617651565b50506000910152565b6000815180845261768a81602086016020860161764e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617780577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261776a848651617672565b6020958601959094509290920191600101617730565b5091975050506020948501949290920191506001016176c6565b50929695505050505050565b600081518084526020840193506020830160005b828110156177fa5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016177ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526178706040880182617672565b905060208201519150868103602088015261788b81836177a6565b96505050602093840193919091019060010161782c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617904858351617672565b945060209384019391909101906001016178ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261799a60408701826177a6565b9550506020938401939190910190600101617941565b6000602082840312156179c257600080fd5b815180151581146134ef57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617aad60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617adb57607f821691505b6020821081036156b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617b2657600080fd5b5051919050565b606081526000617b406060830186617672565b602083019490945250901515604090910152919050565b608081526000617b6a6080830187617672565b62ffffff861660208401526001600160a01b038516604084015282810360608401526172a38185617672565b6001600160a01b038416815282602082015260606040820152600061569e6060830184617672565b60c081526000617bd160c0830189617672565b8760208401526001600160a01b03871660408401528281036060840152617bf88187617672565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617c3b60a0830186617672565b6060830194909452509015156080909101529392505050565b828152604060208201526000614dec6040830184617672565b6001600160a01b0383168152604060208201526000614dec6040830184617672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617ce157617ce1617c8f565b60405290565b60008067ffffffffffffffff841115617d0257617d02617c8f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617d3157617d31617c8f565b604052838152905080828401851015617d4957600080fd5b6151bb84602083018561764e565b600082601f830112617d6857600080fd5b6134ef83835160208501617ce7565b600060208284031215617d8957600080fd5b815167ffffffffffffffff811115617da057600080fd5b6133f284828501617d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156133f6576133f6617dac565b6001600160a01b038716815260c060208201526000617e1060c0830188617672565b86604084015285606084015284608084015282810360a0840152617e348185617672565b9998505050505050505050565b608081526000617e546080830187617672565b8560208401526001600160a01b038516604084015282810360608401526172a38185617672565b604081526000617e8e6040830185617672565b82810360208401526134eb8185617672565b608081526000617eb36080830187617672565b8281036020840152617ec58187617672565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617f1681601a85016020880161764e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f5381601c84016020880161764e565b01601c01949350505050565b6020815260006134ef6020830184617672565b600060208284031215617f8457600080fd5b81516001600160a01b03811681146134ef57600080fd5b60008351617fad81846020880161764e565b835190830190617fc181836020880161764e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161800281601a85016020880161764e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161803f81603384016020880161764e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006134ef6080830184617672565b6000602082840312156180ce57600080fd5b815167ffffffffffffffff8111156180e557600080fd5b8201601f810184136180f657600080fd5b6133f284825160208401617ce7565b60008551618117818460208a0161764e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618151816001840160208a0161764e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161818f81600284016020890161764e565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516181d181600284016020880161764e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061821c6040830184617672565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161829381601f85016020870161764e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006183006040830184617672565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183526040830184617672565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516183c981601485016020870161764e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161846481600185016020870161764e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516184aa81846020870161764e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161855d81604b85016020870161764e565b91909101604b0192915050565b600060ff821660ff810361858057618580617dac565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006134ef6080830184617672565b60006020828403121561864d57600080fd5b815167ffffffffffffffff81111561866457600080fd5b82016060818503121561867657600080fd5b61867e617cbe565b81518060030b811461868f57600080fd5b8152602082015167ffffffffffffffff8111156186ab57600080fd5b6186b786828501617d57565b602083015250604082015167ffffffffffffffff8111156186d757600080fd5b6186e386828501617d57565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161874f81602185016020870161764e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161893b81602185016020880161764e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161897881602e84016020880161764e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618a4081602285016020870161764e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618a8581600e85016020870161764e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156133f6576133f6617dac565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618b7681601885016020880161764e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618bb381601c84016020880161764e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618cb981846020870161764e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618d2081601c85016020870161764e565b91909101601c0192915050565b60006000198203618d4057618d40617dac565b5060010190565b80820281158282048414176133f6576133f6617dac565b6001815b6001841115618d9957808504811115618d7d57618d7d617dac565b6001841615618d8b57908102905b60019390931c928002618d62565b935093915050565b600082618db0575060016133f6565b81618dbd575060006133f6565b8160018114618dd35760028114618ddd57618df9565b60019150506133f6565b60ff841115618dee57618dee617dac565b50506001821b6133f6565b5060208310610133831016604e8410600b8410161715618e1c575081810a6133f6565b618e296000198484618d5e565b8060001904821115618e3d57618e3d617dac565b029392505050565b60006134ef8383618da1565b600081618e6057618e60617dac565b506000190190565b60008351618e7a81846020880161764e565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618eb481600184016020880161764e565b01600101949350505050565b81810360008312801583831316838312821617156167b3576167b3617dac56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a2646970667358221220dbf12c2832ab74df8ec1292715e3c69624daafc9af9fa95864fbcca6c9f90d3e64736f6c634300081a0033", +} + +// GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMZEVMTestMetaData.ABI instead. +var GatewayEVMZEVMTestABI = GatewayEVMZEVMTestMetaData.ABI + +// GatewayEVMZEVMTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMZEVMTestMetaData.Bin instead. +var GatewayEVMZEVMTestBin = GatewayEVMZEVMTestMetaData.Bin + +// DeployGatewayEVMZEVMTest deploys a new Ethereum contract, binding an instance of GatewayEVMZEVMTest to it. +func DeployGatewayEVMZEVMTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMZEVMTest, error) { + parsed, err := GatewayEVMZEVMTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayEVMZEVMTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMZEVMTest{GatewayEVMZEVMTestCaller: GatewayEVMZEVMTestCaller{contract: contract}, GatewayEVMZEVMTestTransactor: GatewayEVMZEVMTestTransactor{contract: contract}, GatewayEVMZEVMTestFilterer: GatewayEVMZEVMTestFilterer{contract: contract}}, nil +} + +// GatewayEVMZEVMTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMZEVMTest struct { + GatewayEVMZEVMTestCaller // Read-only binding to the contract + GatewayEVMZEVMTestTransactor // Write-only binding to the contract + GatewayEVMZEVMTestFilterer // Log filterer for contract events +} + +// GatewayEVMZEVMTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMZEVMTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMZEVMTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMZEVMTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMZEVMTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMZEVMTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMZEVMTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMZEVMTestSession struct { + Contract *GatewayEVMZEVMTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMZEVMTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMZEVMTestCallerSession struct { + Contract *GatewayEVMZEVMTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMZEVMTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMZEVMTestTransactorSession struct { + Contract *GatewayEVMZEVMTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMZEVMTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMZEVMTestRaw struct { + Contract *GatewayEVMZEVMTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMZEVMTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMZEVMTestCallerRaw struct { + Contract *GatewayEVMZEVMTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMZEVMTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMZEVMTestTransactorRaw struct { + Contract *GatewayEVMZEVMTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMZEVMTest creates a new instance of GatewayEVMZEVMTest, bound to a specific deployed contract. +func NewGatewayEVMZEVMTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMZEVMTest, error) { + contract, err := bindGatewayEVMZEVMTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTest{GatewayEVMZEVMTestCaller: GatewayEVMZEVMTestCaller{contract: contract}, GatewayEVMZEVMTestTransactor: GatewayEVMZEVMTestTransactor{contract: contract}, GatewayEVMZEVMTestFilterer: GatewayEVMZEVMTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMZEVMTestCaller creates a new read-only instance of GatewayEVMZEVMTest, bound to a specific deployed contract. +func NewGatewayEVMZEVMTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMZEVMTestCaller, error) { + contract, err := bindGatewayEVMZEVMTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestCaller{contract: contract}, nil +} + +// NewGatewayEVMZEVMTestTransactor creates a new write-only instance of GatewayEVMZEVMTest, bound to a specific deployed contract. +func NewGatewayEVMZEVMTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMZEVMTestTransactor, error) { + contract, err := bindGatewayEVMZEVMTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMZEVMTestFilterer creates a new log filterer instance of GatewayEVMZEVMTest, bound to a specific deployed contract. +func NewGatewayEVMZEVMTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMZEVMTestFilterer, error) { + contract, err := bindGatewayEVMZEVMTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMZEVMTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMZEVMTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMZEVMTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMZEVMTest.Contract.GatewayEVMZEVMTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.GatewayEVMZEVMTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.GatewayEVMZEVMTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMZEVMTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) ISTEST() (bool, error) { + return _GatewayEVMZEVMTest.Contract.ISTEST(&_GatewayEVMZEVMTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) ISTEST() (bool, error) { + return _GatewayEVMZEVMTest.Contract.ISTEST(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeArtifacts(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeArtifacts(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeContracts(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeContracts(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeSenders(&_GatewayEVMZEVMTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.ExcludeSenders(&_GatewayEVMZEVMTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) Failed() (bool, error) { + return _GatewayEVMZEVMTest.Contract.Failed(&_GatewayEVMZEVMTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) Failed() (bool, error) { + return _GatewayEVMZEVMTest.Contract.Failed(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMZEVMTest.Contract.TargetArtifactSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMZEVMTest.Contract.TargetArtifactSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMZEVMTest.Contract.TargetArtifacts(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMZEVMTest.Contract.TargetArtifacts(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.TargetContracts(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.TargetContracts(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMZEVMTest.Contract.TargetInterfaces(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMZEVMTest.Contract.TargetInterfaces(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMZEVMTest.Contract.TargetSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMZEVMTest.Contract.TargetSelectors(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMZEVMTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.TargetSenders(&_GatewayEVMZEVMTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMZEVMTest.Contract.TargetSenders(&_GatewayEVMZEVMTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.SetUp(&_GatewayEVMZEVMTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.SetUp(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0xd7a525fc. +// +// Solidity: function testCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactor) TestCallReceiverEVMFromSenderZEVM(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.contract.Transact(opts, "testCallReceiverEVMFromSenderZEVM") +} + +// TestCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0xd7a525fc. +// +// Solidity: function testCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TestCallReceiverEVMFromSenderZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestCallReceiverEVMFromSenderZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0xd7a525fc. +// +// Solidity: function testCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorSession) TestCallReceiverEVMFromSenderZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestCallReceiverEVMFromSenderZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x9683c695. +// +// Solidity: function testCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactor) TestCallReceiverEVMFromZEVM(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.contract.Transact(opts, "testCallReceiverEVMFromZEVM") +} + +// TestCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x9683c695. +// +// Solidity: function testCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TestCallReceiverEVMFromZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestCallReceiverEVMFromZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x9683c695. +// +// Solidity: function testCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorSession) TestCallReceiverEVMFromZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestCallReceiverEVMFromZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestWithdrawAndCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0x52474413. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactor) TestWithdrawAndCallReceiverEVMFromSenderZEVM(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.contract.Transact(opts, "testWithdrawAndCallReceiverEVMFromSenderZEVM") +} + +// TestWithdrawAndCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0x52474413. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TestWithdrawAndCallReceiverEVMFromSenderZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestWithdrawAndCallReceiverEVMFromSenderZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestWithdrawAndCallReceiverEVMFromSenderZEVM is a paid mutator transaction binding the contract method 0x52474413. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromSenderZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorSession) TestWithdrawAndCallReceiverEVMFromSenderZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestWithdrawAndCallReceiverEVMFromSenderZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestWithdrawAndCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x6ff15ccc. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactor) TestWithdrawAndCallReceiverEVMFromZEVM(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMZEVMTest.contract.Transact(opts, "testWithdrawAndCallReceiverEVMFromZEVM") +} + +// TestWithdrawAndCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x6ff15ccc. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestSession) TestWithdrawAndCallReceiverEVMFromZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestWithdrawAndCallReceiverEVMFromZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// TestWithdrawAndCallReceiverEVMFromZEVM is a paid mutator transaction binding the contract method 0x6ff15ccc. +// +// Solidity: function testWithdrawAndCallReceiverEVMFromZEVM() returns() +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestTransactorSession) TestWithdrawAndCallReceiverEVMFromZEVM() (*types.Transaction, error) { + return _GatewayEVMZEVMTest.Contract.TestWithdrawAndCallReceiverEVMFromZEVM(&_GatewayEVMZEVMTest.TransactOpts) +} + +// GatewayEVMZEVMTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestCallIterator struct { + Event *GatewayEVMZEVMTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestCall represents a Call event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMZEVMTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestCallIterator{contract: _GatewayEVMZEVMTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestCall) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseCall(log types.Log) (*GatewayEVMZEVMTestCall, error) { + event := new(GatewayEVMZEVMTestCall) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestCall0Iterator is returned from FilterCall0 and is used to iterate over the raw logs and unpacked data for Call0 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestCall0Iterator struct { + Event *GatewayEVMZEVMTestCall0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestCall0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestCall0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestCall0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestCall0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestCall0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestCall0 represents a Call0 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestCall0 struct { + Sender common.Address + Receiver []byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall0 is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterCall0(opts *bind.FilterOpts, sender []common.Address) (*GatewayEVMZEVMTestCall0Iterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Call0", senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestCall0Iterator{contract: _GatewayEVMZEVMTest.contract, event: "Call0", logs: logs, sub: sub}, nil +} + +// WatchCall0 is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchCall0(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestCall0, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Call0", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestCall0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Call0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall0 is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseCall0(log types.Log) (*GatewayEVMZEVMTestCall0, error) { + event := new(GatewayEVMZEVMTestCall0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Call0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestDepositIterator struct { + Event *GatewayEVMZEVMTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestDeposit represents a Deposit event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*GatewayEVMZEVMTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestDepositIterator{contract: _GatewayEVMZEVMTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestDeposit) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseDeposit(log types.Log) (*GatewayEVMZEVMTestDeposit, error) { + event := new(GatewayEVMZEVMTestDeposit) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestExecutedIterator struct { + Event *GatewayEVMZEVMTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestExecuted represents a Executed event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMZEVMTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestExecutedIterator{contract: _GatewayEVMZEVMTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestExecuted) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseExecuted(log types.Log) (*GatewayEVMZEVMTestExecuted, error) { + event := new(GatewayEVMZEVMTestExecuted) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestExecutedWithERC20Iterator struct { + Event *GatewayEVMZEVMTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMZEVMTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestExecutedWithERC20Iterator{contract: _GatewayEVMZEVMTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestExecutedWithERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseExecutedWithERC20(log types.Log) (*GatewayEVMZEVMTestExecutedWithERC20, error) { + event := new(GatewayEVMZEVMTestExecutedWithERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedERC20Iterator struct { + Event *GatewayEVMZEVMTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReceivedERC20 represents a ReceivedERC20 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*GatewayEVMZEVMTestReceivedERC20Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestReceivedERC20Iterator{contract: _GatewayEVMZEVMTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReceivedERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReceivedERC20(log types.Log) (*GatewayEVMZEVMTestReceivedERC20, error) { + event := new(GatewayEVMZEVMTestReceivedERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedNoParamsIterator struct { + Event *GatewayEVMZEVMTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReceivedNoParams represents a ReceivedNoParams event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*GatewayEVMZEVMTestReceivedNoParamsIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestReceivedNoParamsIterator{contract: _GatewayEVMZEVMTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReceivedNoParams) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReceivedNoParams(log types.Log) (*GatewayEVMZEVMTestReceivedNoParams, error) { + event := new(GatewayEVMZEVMTestReceivedNoParams) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedNonPayableIterator struct { + Event *GatewayEVMZEVMTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReceivedNonPayable represents a ReceivedNonPayable event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*GatewayEVMZEVMTestReceivedNonPayableIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestReceivedNonPayableIterator{contract: _GatewayEVMZEVMTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReceivedNonPayable) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReceivedNonPayable(log types.Log) (*GatewayEVMZEVMTestReceivedNonPayable, error) { + event := new(GatewayEVMZEVMTestReceivedNonPayable) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedPayableIterator struct { + Event *GatewayEVMZEVMTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReceivedPayable represents a ReceivedPayable event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*GatewayEVMZEVMTestReceivedPayableIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestReceivedPayableIterator{contract: _GatewayEVMZEVMTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReceivedPayable) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReceivedPayable(log types.Log) (*GatewayEVMZEVMTestReceivedPayable, error) { + event := new(GatewayEVMZEVMTestReceivedPayable) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedRevertIterator struct { + Event *GatewayEVMZEVMTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReceivedRevert represents a ReceivedRevert event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*GatewayEVMZEVMTestReceivedRevertIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestReceivedRevertIterator{contract: _GatewayEVMZEVMTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReceivedRevert) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReceivedRevert(log types.Log) (*GatewayEVMZEVMTestReceivedRevert, error) { + event := new(GatewayEVMZEVMTestReceivedRevert) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestRevertedIterator struct { + Event *GatewayEVMZEVMTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestReverted represents a Reverted event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*GatewayEVMZEVMTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestRevertedIterator{contract: _GatewayEVMZEVMTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestReverted) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseReverted(log types.Log) (*GatewayEVMZEVMTestReverted, error) { + event := new(GatewayEVMZEVMTestReverted) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestRevertedWithERC20Iterator struct { + Event *GatewayEVMZEVMTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*GatewayEVMZEVMTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestRevertedWithERC20Iterator{contract: _GatewayEVMZEVMTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestRevertedWithERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseRevertedWithERC20(log types.Log) (*GatewayEVMZEVMTestRevertedWithERC20, error) { + event := new(GatewayEVMZEVMTestRevertedWithERC20) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestWithdrawalIterator struct { + Event *GatewayEVMZEVMTestWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestWithdrawal represents a Withdrawal event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestWithdrawal struct { + From common.Address + Zrc20 common.Address + To []byte + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayEVMZEVMTestWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestWithdrawalIterator{contract: _GatewayEVMZEVMTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestWithdrawal) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseWithdrawal(log types.Log) (*GatewayEVMZEVMTestWithdrawal, error) { + event := new(GatewayEVMZEVMTestWithdrawal) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogIterator struct { + Event *GatewayEVMZEVMTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLog represents a Log event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogIterator{contract: _GatewayEVMZEVMTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLog) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLog(log types.Log) (*GatewayEVMZEVMTestLog, error) { + event := new(GatewayEVMZEVMTestLog) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogAddressIterator struct { + Event *GatewayEVMZEVMTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogAddress represents a LogAddress event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogAddressIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogAddressIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogAddress) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogAddress(log types.Log) (*GatewayEVMZEVMTestLogAddress, error) { + event := new(GatewayEVMZEVMTestLogAddress) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArrayIterator struct { + Event *GatewayEVMZEVMTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogArray represents a LogArray event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogArrayIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogArrayIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogArray) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogArray(log types.Log) (*GatewayEVMZEVMTestLogArray, error) { + event := new(GatewayEVMZEVMTestLogArray) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArray0Iterator struct { + Event *GatewayEVMZEVMTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogArray0 represents a LogArray0 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogArray0Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogArray0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogArray0(log types.Log) (*GatewayEVMZEVMTestLogArray0, error) { + event := new(GatewayEVMZEVMTestLogArray0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArray1Iterator struct { + Event *GatewayEVMZEVMTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogArray1 represents a LogArray1 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogArray1Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogArray1) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogArray1(log types.Log) (*GatewayEVMZEVMTestLogArray1, error) { + event := new(GatewayEVMZEVMTestLogArray1) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogBytesIterator struct { + Event *GatewayEVMZEVMTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogBytes represents a LogBytes event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogBytesIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogBytesIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogBytes) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogBytes(log types.Log) (*GatewayEVMZEVMTestLogBytes, error) { + event := new(GatewayEVMZEVMTestLogBytes) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogBytes32Iterator struct { + Event *GatewayEVMZEVMTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogBytes32 represents a LogBytes32 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogBytes32Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogBytes32) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogBytes32(log types.Log) (*GatewayEVMZEVMTestLogBytes32, error) { + event := new(GatewayEVMZEVMTestLogBytes32) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogIntIterator struct { + Event *GatewayEVMZEVMTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogInt represents a LogInt event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogIntIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogIntIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogInt(log types.Log) (*GatewayEVMZEVMTestLogInt, error) { + event := new(GatewayEVMZEVMTestLogInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedAddressIterator struct { + Event *GatewayEVMZEVMTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedAddressIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedAddress) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayEVMZEVMTestLogNamedAddress, error) { + event := new(GatewayEVMZEVMTestLogNamedAddress) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArrayIterator struct { + Event *GatewayEVMZEVMTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedArray represents a LogNamedArray event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedArrayIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedArray) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayEVMZEVMTestLogNamedArray, error) { + event := new(GatewayEVMZEVMTestLogNamedArray) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArray0Iterator struct { + Event *GatewayEVMZEVMTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedArray0Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedArray0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayEVMZEVMTestLogNamedArray0, error) { + event := new(GatewayEVMZEVMTestLogNamedArray0) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArray1Iterator struct { + Event *GatewayEVMZEVMTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedArray1Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedArray1) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayEVMZEVMTestLogNamedArray1, error) { + event := new(GatewayEVMZEVMTestLogNamedArray1) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedBytesIterator struct { + Event *GatewayEVMZEVMTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedBytesIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedBytes) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayEVMZEVMTestLogNamedBytes, error) { + event := new(GatewayEVMZEVMTestLogNamedBytes) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedBytes32Iterator struct { + Event *GatewayEVMZEVMTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedBytes32Iterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedBytes32) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayEVMZEVMTestLogNamedBytes32, error) { + event := new(GatewayEVMZEVMTestLogNamedBytes32) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedDecimalIntIterator struct { + Event *GatewayEVMZEVMTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedDecimalIntIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedDecimalInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayEVMZEVMTestLogNamedDecimalInt, error) { + event := new(GatewayEVMZEVMTestLogNamedDecimalInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedDecimalUintIterator struct { + Event *GatewayEVMZEVMTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedDecimalUintIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedDecimalUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayEVMZEVMTestLogNamedDecimalUint, error) { + event := new(GatewayEVMZEVMTestLogNamedDecimalUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedIntIterator struct { + Event *GatewayEVMZEVMTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedInt represents a LogNamedInt event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedIntIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayEVMZEVMTestLogNamedInt, error) { + event := new(GatewayEVMZEVMTestLogNamedInt) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedStringIterator struct { + Event *GatewayEVMZEVMTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedString represents a LogNamedString event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedStringIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedString) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedString(log types.Log) (*GatewayEVMZEVMTestLogNamedString, error) { + event := new(GatewayEVMZEVMTestLogNamedString) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedUintIterator struct { + Event *GatewayEVMZEVMTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogNamedUint represents a LogNamedUint event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogNamedUintIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogNamedUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayEVMZEVMTestLogNamedUint, error) { + event := new(GatewayEVMZEVMTestLogNamedUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogStringIterator struct { + Event *GatewayEVMZEVMTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogString represents a LogString event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogStringIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogStringIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogString) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogString(log types.Log) (*GatewayEVMZEVMTestLogString, error) { + event := new(GatewayEVMZEVMTestLogString) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogUintIterator struct { + Event *GatewayEVMZEVMTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogUint represents a LogUint event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogUintIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogUintIterator{contract: _GatewayEVMZEVMTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogUint(log types.Log) (*GatewayEVMZEVMTestLogUint, error) { + event := new(GatewayEVMZEVMTestLogUint) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMZEVMTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogsIterator struct { + Event *GatewayEVMZEVMTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMZEVMTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMZEVMTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMZEVMTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMZEVMTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMZEVMTestLogs represents a Logs event raised by the GatewayEVMZEVMTest contract. +type GatewayEVMZEVMTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayEVMZEVMTestLogsIterator, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayEVMZEVMTestLogsIterator{contract: _GatewayEVMZEVMTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMZEVMTestLogs) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseLogs(log types.Log) (*GatewayEVMZEVMTestLogs, error) { + event := new(GatewayEVMZEVMTestLogs) + if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayzevm.sol/gatewayzevm.go b/v2/pkg/gatewayzevm.sol/gatewayzevm.go new file mode 100644 index 00000000..18a63fc8 --- /dev/null +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -0,0 +1,1435 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// RevertContext is an auto generated low-level Go binding around an user-defined struct. +type RevertContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. +var GatewayZEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033", +} + +// GatewayZEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayZEVMMetaData.ABI instead. +var GatewayZEVMABI = GatewayZEVMMetaData.ABI + +// GatewayZEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayZEVMMetaData.Bin instead. +var GatewayZEVMBin = GatewayZEVMMetaData.Bin + +// DeployGatewayZEVM deploys a new Ethereum contract, binding an instance of GatewayZEVM to it. +func DeployGatewayZEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayZEVM, error) { + parsed, err := GatewayZEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayZEVMBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayZEVM{GatewayZEVMCaller: GatewayZEVMCaller{contract: contract}, GatewayZEVMTransactor: GatewayZEVMTransactor{contract: contract}, GatewayZEVMFilterer: GatewayZEVMFilterer{contract: contract}}, nil +} + +// GatewayZEVM is an auto generated Go binding around an Ethereum contract. +type GatewayZEVM struct { + GatewayZEVMCaller // Read-only binding to the contract + GatewayZEVMTransactor // Write-only binding to the contract + GatewayZEVMFilterer // Log filterer for contract events +} + +// GatewayZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayZEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayZEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayZEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayZEVMSession struct { + Contract *GatewayZEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayZEVMCallerSession struct { + Contract *GatewayZEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayZEVMTransactorSession struct { + Contract *GatewayZEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayZEVMRaw struct { + Contract *GatewayZEVM // Generic contract binding to access the raw methods on +} + +// GatewayZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayZEVMCallerRaw struct { + Contract *GatewayZEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayZEVMTransactorRaw struct { + Contract *GatewayZEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayZEVM creates a new instance of GatewayZEVM, bound to a specific deployed contract. +func NewGatewayZEVM(address common.Address, backend bind.ContractBackend) (*GatewayZEVM, error) { + contract, err := bindGatewayZEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayZEVM{GatewayZEVMCaller: GatewayZEVMCaller{contract: contract}, GatewayZEVMTransactor: GatewayZEVMTransactor{contract: contract}, GatewayZEVMFilterer: GatewayZEVMFilterer{contract: contract}}, nil +} + +// NewGatewayZEVMCaller creates a new read-only instance of GatewayZEVM, bound to a specific deployed contract. +func NewGatewayZEVMCaller(address common.Address, caller bind.ContractCaller) (*GatewayZEVMCaller, error) { + contract, err := bindGatewayZEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMCaller{contract: contract}, nil +} + +// NewGatewayZEVMTransactor creates a new write-only instance of GatewayZEVM, bound to a specific deployed contract. +func NewGatewayZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayZEVMTransactor, error) { + contract, err := bindGatewayZEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMTransactor{contract: contract}, nil +} + +// NewGatewayZEVMFilterer creates a new log filterer instance of GatewayZEVM, bound to a specific deployed contract. +func NewGatewayZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayZEVMFilterer, error) { + contract, err := bindGatewayZEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayZEVMFilterer{contract: contract}, nil +} + +// bindGatewayZEVM binds a generic wrapper to an already deployed contract. +func bindGatewayZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayZEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVM *GatewayZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVM.Contract.GatewayZEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVM *GatewayZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.Contract.GatewayZEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVM *GatewayZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVM.Contract.GatewayZEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVM *GatewayZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVM *GatewayZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVM *GatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVM.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_GatewayZEVM *GatewayZEVMCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_GatewayZEVM *GatewayZEVMSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _GatewayZEVM.Contract.FUNGIBLEMODULEADDRESS(&_GatewayZEVM.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_GatewayZEVM *GatewayZEVMCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _GatewayZEVM.Contract.FUNGIBLEMODULEADDRESS(&_GatewayZEVM.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayZEVM *GatewayZEVMCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayZEVM *GatewayZEVMSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayZEVM.Contract.UPGRADEINTERFACEVERSION(&_GatewayZEVM.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_GatewayZEVM *GatewayZEVMCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _GatewayZEVM.Contract.UPGRADEINTERFACEVERSION(&_GatewayZEVM.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayZEVM *GatewayZEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayZEVM *GatewayZEVMSession) Owner() (common.Address, error) { + return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GatewayZEVM *GatewayZEVMCallerSession) Owner() (common.Address, error) { + return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMSession) ProxiableUUID() ([32]byte, error) { + return _GatewayZEVM.Contract.ProxiableUUID(&_GatewayZEVM.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCallerSession) ProxiableUUID() ([32]byte, error) { + return _GatewayZEVM.Contract.ProxiableUUID(&_GatewayZEVM.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayZEVM *GatewayZEVMCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayZEVM *GatewayZEVMSession) ZetaToken() (common.Address, error) { + return _GatewayZEVM.Contract.ZetaToken(&_GatewayZEVM.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_GatewayZEVM *GatewayZEVMCallerSession) ZetaToken() (common.Address, error) { + return _GatewayZEVM.Contract.ZetaToken(&_GatewayZEVM.CallOpts) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "call", receiver, message) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Deposit(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "deposit", zrc20, amount, target) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_GatewayZEVM *GatewayZEVMSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Deposit(&_GatewayZEVM.TransactOpts, zrc20, amount, target) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Deposit(&_GatewayZEVM.TransactOpts, zrc20, amount, target) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "depositAndCall", context, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndCall(&_GatewayZEVM.TransactOpts, context, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndCall(&_GatewayZEVM.TransactOpts, context, amount, target, message) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "depositAndCall0", context, zrc20, amount, target, message) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndCall0(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndCall0(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) DepositAndRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "depositAndRevert", context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.DepositAndRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Execute(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "execute", context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Execute(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Execute(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "executeRevert", context, zrc20, amount, target, message) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.ExecuteRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.ExecuteRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _zetaToken) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, _zetaToken common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "initialize", _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _zetaToken) returns() +func (_GatewayZEVM *GatewayZEVMSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _zetaToken) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayZEVM *GatewayZEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayZEVM *GatewayZEVMSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayZEVM *GatewayZEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayZEVM *GatewayZEVMTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayZEVM *GatewayZEVMSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.UpgradeToAndCall(&_GatewayZEVM.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.UpgradeToAndCall(&_GatewayZEVM.TransactOpts, newImplementation, data) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdraw", receiver, amount, zrc20) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_GatewayZEVM *GatewayZEVMSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdraw0", amount) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_GatewayZEVM *GatewayZEVMSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 amount) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// +// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, amount *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall", amount, message) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// +// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// +// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) +} + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall0(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall0", receiver, amount, zrc20, message) +} + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +} + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_GatewayZEVM *GatewayZEVMSession) Receive() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Receive(&_GatewayZEVM.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Receive() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Receive(&_GatewayZEVM.TransactOpts) +} + +// GatewayZEVMCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayZEVM contract. +type GatewayZEVMCallIterator struct { + Event *GatewayZEVMCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMCall represents a Call event raised by the GatewayZEVM contract. +type GatewayZEVMCall struct { + Sender common.Address + Receiver []byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return &GatewayZEVMCallIterator{contract: _GatewayZEVM.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMCall, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMCall) + if err := _GatewayZEVM.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseCall(log types.Log) (*GatewayZEVMCall, error) { + event := new(GatewayZEVMCall) + if err := _GatewayZEVM.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GatewayZEVM contract. +type GatewayZEVMInitializedIterator struct { + Event *GatewayZEVMInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInitialized represents a Initialized event raised by the GatewayZEVM contract. +type GatewayZEVMInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterInitialized(opts *bind.FilterOpts) (*GatewayZEVMInitializedIterator, error) { + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GatewayZEVMInitializedIterator{contract: _GatewayZEVM.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInitialized) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInitialized) + if err := _GatewayZEVM.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseInitialized(log types.Log) (*GatewayZEVMInitialized, error) { + event := new(GatewayZEVMInitialized) + if err := _GatewayZEVM.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayZEVM contract. +type GatewayZEVMOwnershipTransferredIterator struct { + Event *GatewayZEVMOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayZEVM contract. +type GatewayZEVMOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayZEVMOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GatewayZEVMOwnershipTransferredIterator{contract: _GatewayZEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOwnershipTransferred) + if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayZEVMOwnershipTransferred, error) { + event := new(GatewayZEVMOwnershipTransferred) + if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayZEVM contract. +type GatewayZEVMUpgradedIterator struct { + Event *GatewayZEVMUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMUpgraded represents a Upgraded event raised by the GatewayZEVM contract. +type GatewayZEVMUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayZEVMUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GatewayZEVMUpgradedIterator{contract: _GatewayZEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayZEVMUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMUpgraded) + if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseUpgraded(log types.Log) (*GatewayZEVMUpgraded, error) { + event := new(GatewayZEVMUpgraded) + if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVM contract. +type GatewayZEVMWithdrawalIterator struct { + Event *GatewayZEVMWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMWithdrawal represents a Withdrawal event raised by the GatewayZEVM contract. +type GatewayZEVMWithdrawal struct { + From common.Address + Zrc20 common.Address + To []byte + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &GatewayZEVMWithdrawalIterator{contract: _GatewayZEVM.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMWithdrawal) + if err := _GatewayZEVM.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMWithdrawal, error) { + event := new(GatewayZEVMWithdrawal) + if err := _GatewayZEVM.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go new file mode 100644 index 00000000..860cd68a --- /dev/null +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -0,0 +1,4060 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. +var GatewayZEVMInboundTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cbfd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610cfa565b61018f6110c3565b61018f611508565b6101b16118e4565b6040516101be91906178d1565b60405180910390f35b6101cf611946565b6040516101be919061796d565b6101b1611a88565b6101b1611ae8565b61018f611b48565b61018f611fda565b610204612329565b6040516101be9190617ad3565b6102196124ab565b6040516101be9190617b71565b61022e61257b565b6040516101be9190617be8565b61022e612676565b610219612771565b61018f612841565b61025b612a76565b60405190151581526020016101be565b61018f612b4a565b6101b1612f68565b61018f612fc8565b601f5461025b9060ff1681565b61018f61336f565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de906177e4565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526103d39160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526136d3565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015610495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190617c7f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516104fd906177f1565b604051809103906000f080158015610519573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b5050505060008060006040516105de906177fe565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561061a573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906106709061780b565b61067f96959493929190617ca8565b604051809103906000f08015801561069b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084457600080fd5b505af1158015610858573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190617d9d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ad757600080fd5b505af1158015610aeb573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190617d9d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af1158015610cf4573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190617d9d565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526110129288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190617dbf565b9050610cf483826136f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905261135092918a9060009081908990617e12565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a0906113a39088908590600401617e65565b600060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114489190617dbf565b905061145e611458600187617ead565b826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190617dbf565b90506114df85826136f2565b6114ff6114ed856001617ec0565b6027546001600160a01b0316316136f2565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190617dbf565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190617dbf565b8760405161179196959493929190617e12565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936117d99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526118309288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190617dbf565b9050610cf46114588585617ead565b6060601680548060200260200160405190810160405280929190818152602001828054801561193c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db90617ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0790617ed3565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c339190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a09150611e909088908590600401617e65565b600060405180830381600087803b158015611eaa57600080fd5b505af1158015611ebe573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f359190617dbf565b9050611f4185826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190617dbf565b9050611fc285826136f2565b6027546114ff9085906001600160a01b0316316136f2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120c457600080fd5b505af11580156120d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b031690600401617f20565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123189190617dbf565b905061232482826136f2565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020906002020160405180604001604052908160008201805461238090617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546123ac90617ed3565b80156123f95780601f106123ce576101008083540402835291602001916123f9565b820191906000526020600020905b8154815290600101906020018083116123dc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561249357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124405790505b5050505050815250508152602001906001019061234d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546124ee90617ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461251a90617ed3565b80156125675780601f1061253c57610100808354040283529160200191612567565b820191906000526020600020905b81548152906001019060200180831161254a57829003601f168201915b5050505050815260200190600101906124cf565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561265e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161260b5790505b5050505050815250508152602001906001019061259f565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127065790505b5050505050815250508152602001906001019061269a565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546127b490617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546127e090617ed3565b801561282d5780601f106128025761010080835404028352916020019161282d565b820191906000526020600020905b81548152906001019060200180831161281057829003601f168201915b505050505081526020019060010190612795565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129cc918590617f52565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c93612a149316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a41929190617f52565b600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b5050505050565b60085460009060ff1615612a8e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190617dbf565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c359190617dbf565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190617dbf565b9050612ec784826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3c9190617dbf565b9050612f4884826136f2565b602754612f609084906001600160a01b0316316136f2565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303d9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b39190617dbf565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f19818403018152908290526131de929189906000908190617f77565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156132ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d09190617dbf565b90506132e0611458600186617ead565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133559190617dbf565b905061336184826136f2565b612f606114ed846001617ec0565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190617dbf565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135709190617dbf565b604051613581959493929190617f77565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936135c99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261361f926001916001600160a01b031690600401617f20565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190617dbf565b90506123246114588484617ead565b60006136dd617818565b6136e8848483613771565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561375d57600080fd5b505afa158015612f60573d6000803e3d6000fd5b60008061377e85846137ec565b90506137e16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016137cc929190617fc5565b604051602081830303815290604052856137f8565b9150505b9392505050565b60006137e58383613826565b60c0810151516000901561381c5761381584848460c00151613841565b90506137e5565b61381584846139e7565b60006138328383613ad2565b6137e5838360200151846137f8565b60008061384c613ae2565b9050600061385a8683613bb5565b90506000613871826060015183602001518561405b565b905060006138818383898961426d565b9050600061388e826150ea565b602081015181519192509060030b15613901578982604001516040516020016138b8929190617fe7565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526138f891600401618068565b60405180910390fd5b60006139446040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152b9565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613997908490600401618068565b602060405180830381865afa1580156139b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d89190617c7f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a3c908790600401618068565b600060405180830381865afa158015613a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a819190810190618163565b90506000613aaf8285604051602001613a9b929190618198565b6040516020818303038152906040526154b9565b90506001600160a01b0381166136e85784846040516020016138b89291906181c7565b613ade828260006154cc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613b69908490600401618272565b600060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae91908101906182b9565b9250505090565b613be76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c326040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c3b856155cf565b60208201526000613c4b866159b4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906182b9565b86838560200151604051602001613ccf9493929190618302565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d27908590600401618068565b600060405180830381865afa158015613d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d6c91908101906182b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613db4908490600401618406565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190617d9d565b613e0a57816040516020016138b89190618458565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e4f9084906004016184ea565b600060405180830381865afa158015613e6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e9491908101906182b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613edb90849060040161853c565b602060405180830381865afa158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c9190617d9d565b15613fb1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f6690849060040161853c565b600060405180830381865afa158015613f83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fab91908101906182b9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613fd6919061858e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614002929190617f52565b600060405180830381865afa15801561401f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261404791908101906182b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140775790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106140d7576140d76185fa565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061412b5761412b6185fa565b6020026020010181905250846040516020016141479190618629565b60405160208183030381529060405281600281518110614169576141696185fa565b6020026020010181905250826040516020016141859190618695565b604051602081830303815290604052816003815181106141a7576141a76185fa565b602002602001018190525060006141bd826150ea565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061424e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615c37565b61426357856040516020016138b891906186d6565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156142bd565b511590565b61443157826020015115614379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016138f8565b8260c0015115614431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016138f8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161444a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144a590618767565b935060ff16815181106144ba576144ba6185fa565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161450b9190618786565b60405160208183030381529060405282828061452690618767565b935060ff168151811061453b5761453b6185fa565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061458890618767565b935060ff168151811061459d5761459d6185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806145ea90618767565b935060ff16815181106145ff576145ff6185fa565b6020026020010181905250876020015182828061461b90618767565b935060ff1681518110614630576146306185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061467d90618767565b935060ff1681518110614692576146926185fa565b6020908102919091010152875182826146aa81618767565b935060ff16815181106146bf576146bf6185fa565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061470c90618767565b935060ff1681518110614721576147216185fa565b602002602001018190525061473546615c98565b828261474081618767565b935060ff1681518110614755576147556185fa565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147a290618767565b935060ff16815181106147b7576147b76185fa565b6020026020010181905250868282806147cf90618767565b935060ff16815181106147e4576147e46185fa565b602090810291909101015285511561490b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261483581618767565b935060ff168151811061484a5761484a6185fa565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061489a908990600401618068565b600060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148df91908101906182b9565b82826148ea81618767565b935060ff16815181106148ff576148ff6185fa565b60200260200101819052505b8460200151156149db5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261495481618767565b935060ff1681518110614969576149696185fa565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149b690618767565b935060ff16815181106149cb576149cb6185fa565b6020026020010181905250614ba2565b614a136142b88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aa65760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a5681618767565b935060ff1681518110614a6b57614a6b6185fa565b60200260200101819052508460a00151604051602001614a8b9190618629565b6040516020818303038152906040528282806149b690618767565b8460c00151158015614ae9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ae790511590565b155b15614ba25760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b2d81618767565b935060ff1681518110614b4257614b426185fa565b6020026020010181905250614b5688615d38565b604051602001614b669190618629565b604051602081830303815290604052828280614b8190618767565b935060ff1681518110614b9657614b966185fa565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614bd690511590565b614c6b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c1981618767565b935060ff1681518110614c2e57614c2e6185fa565b60200260200101819052508460400151828280614c4a90618767565b935060ff1681518110614c5f57614c5f6185fa565b60200260200101819052505b606085015115614d8c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cb481618767565b935060ff1681518110614cc957614cc96185fa565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d6091908101906182b9565b8282614d6b81618767565b935060ff1681518110614d8057614d806185fa565b60200260200101819052505b60e08501515115614e335760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614dd681618767565b935060ff1681518110614deb57614deb6185fa565b6020026020010181905250614e078560e0015160000151615c98565b8282614e1281618767565b935060ff1681518110614e2757614e276185fa565b60200260200101819052505b60e08501516020015115614edd5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614e8081618767565b935060ff1681518110614e9557614e956185fa565b6020026020010181905250614eb18560e0015160200151615c98565b8282614ebc81618767565b935060ff1681518110614ed157614ed16185fa565b60200260200101819052505b60e08501516040015115614f875760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f2a81618767565b935060ff1681518110614f3f57614f3f6185fa565b6020026020010181905250614f5b8560e0015160400151615c98565b8282614f6681618767565b935060ff1681518110614f7b57614f7b6185fa565b60200260200101819052505b60e085015160600151156150315760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614fd481618767565b935060ff1681518110614fe957614fe96185fa565b60200260200101819052506150058560e0015160600151615c98565b828261501081618767565b935060ff1681518110615025576150256185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561504f5761504f61807b565b60405190808252806020026020018201604052801561508257816020015b606081526020019060019003908161506d5790505b50905060005b8260ff168160ff1610156150db57838160ff16815181106150ab576150ab6185fa565b6020026020010151828260ff16815181106150c8576150c86185fa565b6020908102919091010152600101615088565b5093505050505b949350505050565b6151116040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615197918691016187f1565b600060405180830381865afa1580156151b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151dc91908101906182b9565b905060006151ea8683616827565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161521a9190617b71565b6000604051808303816000875af1158015615239573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152619190810190618838565b805190915060030b1580159061527a5750602081015151155b80156152895750604081015151155b1561426357816000815181106152a1576152a16185fa565b60200260200101516040516020016138b891906188ee565b606060006152ee8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153259082905b9061697c565b156154825760006153a28261539c846153966153688a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169a3565b90616a05565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061540690829061697c565b1561547057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261546d905b8290616a8a565b90505b61547981616ab0565b925050506137e5565b821561549b5784846040516020016138b8929190618ada565b50506040805160208101909152600081526137e5565b509392505050565b6000808251602084016000f09392505050565b8160a00151156154db57505050565b60006154e8848484616b19565b905060006154f5826150ea565b602081015181519192509060030b1580156155915750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155919060408051808201825260008082526020918201528151808301909252845182528085019082015261531f565b1561559e57505050505050565b604082015151156155be5781604001516040516020016138b89190618b81565b806040516020016138b89190618bdf565b606060006156048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615669905b8290615c37565b156156d857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d39083906170b4565b616ab0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261573a905b829061713e565b60010361580757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a090615466565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d3905b8390616a8a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586690615662565b1561599d57604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158ce9083906171d8565b9050600081600183516158e19190617ead565b815181106158f1576158f16185fa565b602002602001015190506159946156d36159676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170b4565b95945050505050565b826040516020016138b89190618c4a565b50919050565b606060006159e98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a4b90615662565b15615a59576137e581616ab0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ab890615733565b600103615b2257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d390615800565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b8190615662565b1561599d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615be99083906171d8565b9050600181511115615c25578060028251615c049190617ead565b81518110615c1457615c146185fa565b602002602001015192505050919050565b50826040516020016138b89190618c4a565b805182516000911115615c4c575060006136ec565b81518351602085015160009291615c6291617ec0565b615c6c9190617ead565b905082602001518103615c835760019150506136ec565b82516020840151819020912014905092915050565b60606000615ca58361727d565b600101905060008167ffffffffffffffff811115615cc557615cc561807b565b6040519080825280601f01601f191660200182016040528015615cef576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615cf957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615dc4905b829061735f565b15615e0457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e6390615dbd565b15615ea357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f0290615dbd565b15615f4257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fa190615dbd565b806160065750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600690615dbd565b1561604657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160a590615dbd565b8061610a5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610a90615dbd565b1561614a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a990615dbd565b8061620e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261620e90615dbd565b1561624e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ad90615dbd565b806163125750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631290615dbd565b1561635257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b190615dbd565b156163f157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645090615dbd565b1561649057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ef90615dbd565b1561652f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261658e90615dbd565b156165ce57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261662d90615dbd565b1561666d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166cc90615dbd565b806167315750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673190615dbd565b1561677157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167d090615dbd565b1561681057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138b89290602001618d28565b60608060005b84518110156168b25781858281518110616849576168496185fa565b6020026020010151604051602001616862929190618198565b6040516020818303038152906040529150600185516168819190617ead565b81146168aa57816040516020016168989190618e91565b60405160208183030381529060405291505b60010161682d565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816168cb57905050905083816000815181106168f6576168f66185fa565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061694a5761694a6185fa565b60200260200101819052508181600281518110616969576169696185fa565b6020908102919091010152949350505050565b602080830151835183519284015160009361699a9291849190617373565b14159392505050565b604080518082019091526000808252602082015260006169d58460000151856020015185600001518660200151617484565b90508360200151816169e79190617ead565b845185906169f6908390617ead565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a2a5750816136ec565b6020808301519084015160019114616a515750815160208481015190840151829020919020145b8015616a8257825184518590616a68908390617ead565b9052508251602085018051616a7e908390617ec0565b9052505b509192915050565b6040805180820190915260008082526020820152616aa98383836175a4565b5092915050565b60606000826000015167ffffffffffffffff811115616ad157616ad161807b565b6040519080825280601f01601f191660200182016040528015616afb576020820181803683370190505b5090506000602082019050616aa9818560200151866000015161764f565b60606000616b25613ae2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b4257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616b9d90618767565b935060ff1681518110616bb257616bb26185fa565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c039190618ed2565b604051602081830303815290604052828280616c1e90618767565b935060ff1681518110616c3357616c336185fa565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616c8090618767565b935060ff1681518110616c9557616c956185fa565b602002602001018190525082604051602001616cb19190618695565b604051602081830303815290604052828280616ccc90618767565b935060ff1681518110616ce157616ce16185fa565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d2e90618767565b935060ff1681518110616d4357616d436185fa565b6020026020010181905250616d5887846176c9565b8282616d6381618767565b935060ff1681518110616d7857616d786185fa565b602090810291909101015285515115616e245760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616dca81618767565b935060ff1681518110616ddf57616ddf6185fa565b6020026020010181905250616df88660000151846176c9565b8282616e0381618767565b935060ff1681518110616e1857616e186185fa565b60200260200101819052505b856080015115616e925760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616e6d81618767565b935060ff1681518110616e8257616e826185fa565b6020026020010181905250616ef8565b8415616ef85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616ed781618767565b935060ff1681518110616eec57616eec6185fa565b60200260200101819052505b60408601515115616f945760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f4281618767565b935060ff1681518110616f5757616f576185fa565b60200260200101819052508560400151828280616f7390618767565b935060ff1681518110616f8857616f886185fa565b60200260200101819052505b856060015115616ffe5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616fdd81618767565b935060ff1681518110616ff257616ff26185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561701c5761701c61807b565b60405190808252806020026020018201604052801561704f57816020015b606081526020019060019003908161703a5790505b50905060005b8260ff168160ff1610156170a857838160ff1681518110617078576170786185fa565b6020026020010151828260ff1681518110617095576170956185fa565b6020908102919091010152600101617055565b50979650505050505050565b60408051808201909152600080825260208201528151835110156170d95750816136ec565b815183516020850151600092916170ef91617ec0565b6170f99190617ead565b6020840151909150600190821461711a575082516020840151819020908220145b801561713557835185518690617131908390617ead565b9052505b50929392505050565b60008082600001516171628560000151866020015186600001518760200151617484565b61716c9190617ec0565b90505b835160208501516171809190617ec0565b8111616aa9578161719081618f17565b92505082600001516171c78560200151836171ab9190617ead565b86516171b79190617ead565b8386600001518760200151617484565b6171d19190617ec0565b905061716f565b606060006171e6848461713e565b6171f1906001617ec0565b67ffffffffffffffff8111156172095761720961807b565b60405190808252806020026020018201604052801561723c57816020015b60608152602001906001900390816172275790505b50905060005b81518110156154b1576172586156d38686616a8a565b82828151811061726a5761726a6185fa565b6020908102919091010152600101617242565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106172c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106172f2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061731057662386f26fc10000830492506010015b6305f5e1008310617328576305f5e100830492506008015b612710831061733c57612710830492506004015b6064831061734e576064830492506002015b600a83106136ec5760010192915050565b600061736b8383617709565b159392505050565b60008085841161747a576020841161742657600084156173be57600161739a866020617ead565b6173a5906008618f31565b6173b090600261902f565b6173ba9190617ead565b1990505b83518116856173cd8989617ec0565b6173d79190617ead565b805190935082165b818114617411578784116173f957879450505050506150e2565b836174038161903b565b9450508284511690506173df565b61741b8785617ec0565b9450505050506150e2565b8383206174338588617ead565b61743d9087617ec0565b91505b858210617478578482208082036174655761745b8684617ec0565b93505050506150e2565b617470600184617ead565b925050617440565b505b5092949350505050565b6000838186851161758f576020851161753e57600085156174d05760016174ac876020617ead565b6174b7906008618f31565b6174c290600261902f565b6174cc9190617ead565b1990505b845181166000876174e18b8b617ec0565b6174eb9190617ead565b855190915083165b828114617530578186106175185761750b8b8b617ec0565b96505050505050506150e2565b8561752281618f17565b9650508386511690506174f3565b8596505050505050506150e2565b508383206000905b6175508689617ead565b821161758d5785832080820361756c57839450505050506150e2565b617577600185617ec0565b935050818061758590618f17565b925050617546565b505b6175998787617ec0565b979650505050505050565b604080518082019091526000808252602082015260006175d68560000151866020015186600001518760200151617484565b6020808701805191860191909152519091506175f29082617ead565b8352845160208601516176059190617ec0565b81036176145760008552617646565b835183516176229190617ec0565b85518690617631908390617ead565b90525083516176409082617ec0565b60208601525b50909392505050565b602081106176875781518352617666602084617ec0565b9250617673602083617ec0565b9150617680602082617ead565b905061764f565b60001981156176b657600161769d836020617ead565b6176a99061010061902f565b6176b39190617ead565b90505b9151835183169219169190911790915250565b606060006176d78484613bb5565b80516020808301516040519394506176f193909101619052565b60405160208183030381529060405291505092915050565b815181516000919081111561771c575081515b6020808501519084015160005b838110156177d557825182518082146177a557600019602087101561778457600184617756896020617ead565b6177609190617ec0565b61776b906008618f31565b61777690600261902f565b6177809190617ead565b1990505b81811683821681810391146177a25797506136ec9650505050505050565b50505b6177b0602086617ec0565b94506177bd602085617ec0565b935050506020816177ce9190617ec0565b9050617729565b508451865161426391906190aa565b610b67806190cb83390190565b61053f80619c3283390190565b61106f8061a17183390190565b6119e88061b1e083390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161785b617860565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161785b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179125783516001600160a01b03168352602093840193909201916001016178eb565b509095945050505050565b60005b83811015617938578181015183820152602001617920565b50506000910152565b6000815180845261795981602086016020860161791d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617a4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a39848651617941565b60209586019590945092909201916001016179ff565b509197505050602094850194929092019150600101617995565b50929695505050505050565b600081518084526020840193506020830160005b82811015617ac95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617a89565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b3f6040880182617941565b9050602082015191508681036020880152617b5a8183617a75565b965050506020938401939190910190600101617afb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617bd3858351617941565b94506020938401939190910190600101617b99565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617c696040870182617a75565b9550506020938401939190910190600101617c10565b600060208284031215617c9157600080fd5b81516001600160a01b03811681146137e557600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617d8360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617daf57600080fd5b815180151581146137e557600080fd5b600060208284031215617dd157600080fd5b5051919050565b608081526000617deb6080830187617941565b8560208401526001600160a01b038516604084015282810360608401526175998185617941565b6001600160a01b038716815260c060208201526000617e3460c0830188617941565b86604084015285606084015284608084015282810360a0840152617e588185617941565b9998505050505050505050565b8281526040602082015260006150e26040830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156136ec576136ec617e7e565b808201808211156136ec576136ec617e7e565b600181811c90821680617ee757607f821691505b6020821081036159ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617f336060830186617941565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617f656040830185617941565b82810360208401526137e18185617941565b6001600160a01b038616815260c060208201526000617f9960c0830187617941565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b03831681526040602082015260006150e26040830184617941565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161801f81601a85016020880161791d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161805c81601c84016020880161791d565b01601c01949350505050565b6020815260006137e56020830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156180cd576180cd61807b565b60405290565b60008067ffffffffffffffff8411156180ee576180ee61807b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561811d5761811d61807b565b60405283815290508082840185101561813557600080fd5b6154b184602083018561791d565b600082601f83011261815457600080fd5b6137e5838351602085016180d3565b60006020828403121561817557600080fd5b815167ffffffffffffffff81111561818c57600080fd5b6136e884828501618143565b600083516181aa81846020880161791d565b8351908301906181be81836020880161791d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516181ff81601a85016020880161791d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161823c81603384016020880161791d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006137e56080830184617941565b6000602082840312156182cb57600080fd5b815167ffffffffffffffff8111156182e257600080fd5b8201601f810184136182f357600080fd5b6136e8848251602084016180d3565b60008551618314818460208a0161791d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161834e816001840160208a0161791d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161838c81600284016020890161791d565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516183ce81600284016020880161791d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184196040830184617941565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161849081601f85016020870161791d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006184fd6040830184617941565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061854f6040830184617941565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516185c681601485016020870161791d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161866181600185016020870161791d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516186a781846020870161791d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161875a81604b85016020870161791d565b91909101604b0192915050565b600060ff821660ff810361877d5761877d617e7e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006137e56080830184617941565b60006020828403121561884a57600080fd5b815167ffffffffffffffff81111561886157600080fd5b82016060818503121561887357600080fd5b61887b6180aa565b81518060030b811461888c57600080fd5b8152602082015167ffffffffffffffff8111156188a857600080fd5b6188b486828501618143565b602083015250604082015167ffffffffffffffff8111156188d457600080fd5b6188e086828501618143565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161894c81602185016020870161791d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618b3881602185016020880161791d565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618b7581602e84016020880161791d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618c3d81602285016020870161791d565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618c8281600e85016020870161791d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618d6081601885016020880161791d565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618d9d81601c84016020880161791d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618ea381846020870161791d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618f0a81601c85016020870161791d565b91909101601c0192915050565b60006000198203618f2a57618f2a617e7e565b5060010190565b80820281158282048414176136ec576136ec617e7e565b6001815b6001841115618f8357808504811115618f6757618f67617e7e565b6001841615618f7557908102905b60019390931c928002618f4c565b935093915050565b600082618f9a575060016136ec565b81618fa7575060006136ec565b8160018114618fbd5760028114618fc757618fe3565b60019150506136ec565b60ff841115618fd857618fd8617e7e565b50506001821b6136ec565b5060208310610133831016604e8410600b8410161715619006575081810a6136ec565b6190136000198484618f48565b806000190482111561902757619027617e7e565b029392505050565b60006137e58383618f8b565b60008161904a5761904a617e7e565b506000190190565b6000835161906481846020880161791d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161909e81600184016020880161791d565b01600101949350505050565b8181036000831280158383131683831282161715616aa957616aa9617e7e56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201be2823b07dd7c102eb08dd27f77c5908207f97a4d01ac542bd7e9bcece1192464736f6c634300081a0033", +} + +// GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayZEVMInboundTestMetaData.ABI instead. +var GatewayZEVMInboundTestABI = GatewayZEVMInboundTestMetaData.ABI + +// GatewayZEVMInboundTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayZEVMInboundTestMetaData.Bin instead. +var GatewayZEVMInboundTestBin = GatewayZEVMInboundTestMetaData.Bin + +// DeployGatewayZEVMInboundTest deploys a new Ethereum contract, binding an instance of GatewayZEVMInboundTest to it. +func DeployGatewayZEVMInboundTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayZEVMInboundTest, error) { + parsed, err := GatewayZEVMInboundTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayZEVMInboundTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayZEVMInboundTest{GatewayZEVMInboundTestCaller: GatewayZEVMInboundTestCaller{contract: contract}, GatewayZEVMInboundTestTransactor: GatewayZEVMInboundTestTransactor{contract: contract}, GatewayZEVMInboundTestFilterer: GatewayZEVMInboundTestFilterer{contract: contract}}, nil +} + +// GatewayZEVMInboundTest is an auto generated Go binding around an Ethereum contract. +type GatewayZEVMInboundTest struct { + GatewayZEVMInboundTestCaller // Read-only binding to the contract + GatewayZEVMInboundTestTransactor // Write-only binding to the contract + GatewayZEVMInboundTestFilterer // Log filterer for contract events +} + +// GatewayZEVMInboundTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayZEVMInboundTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMInboundTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayZEVMInboundTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMInboundTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayZEVMInboundTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMInboundTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayZEVMInboundTestSession struct { + Contract *GatewayZEVMInboundTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMInboundTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayZEVMInboundTestCallerSession struct { + Contract *GatewayZEVMInboundTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayZEVMInboundTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayZEVMInboundTestTransactorSession struct { + Contract *GatewayZEVMInboundTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMInboundTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayZEVMInboundTestRaw struct { + Contract *GatewayZEVMInboundTest // Generic contract binding to access the raw methods on +} + +// GatewayZEVMInboundTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayZEVMInboundTestCallerRaw struct { + Contract *GatewayZEVMInboundTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayZEVMInboundTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayZEVMInboundTestTransactorRaw struct { + Contract *GatewayZEVMInboundTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayZEVMInboundTest creates a new instance of GatewayZEVMInboundTest, bound to a specific deployed contract. +func NewGatewayZEVMInboundTest(address common.Address, backend bind.ContractBackend) (*GatewayZEVMInboundTest, error) { + contract, err := bindGatewayZEVMInboundTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTest{GatewayZEVMInboundTestCaller: GatewayZEVMInboundTestCaller{contract: contract}, GatewayZEVMInboundTestTransactor: GatewayZEVMInboundTestTransactor{contract: contract}, GatewayZEVMInboundTestFilterer: GatewayZEVMInboundTestFilterer{contract: contract}}, nil +} + +// NewGatewayZEVMInboundTestCaller creates a new read-only instance of GatewayZEVMInboundTest, bound to a specific deployed contract. +func NewGatewayZEVMInboundTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayZEVMInboundTestCaller, error) { + contract, err := bindGatewayZEVMInboundTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestCaller{contract: contract}, nil +} + +// NewGatewayZEVMInboundTestTransactor creates a new write-only instance of GatewayZEVMInboundTest, bound to a specific deployed contract. +func NewGatewayZEVMInboundTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayZEVMInboundTestTransactor, error) { + contract, err := bindGatewayZEVMInboundTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestTransactor{contract: contract}, nil +} + +// NewGatewayZEVMInboundTestFilterer creates a new log filterer instance of GatewayZEVMInboundTest, bound to a specific deployed contract. +func NewGatewayZEVMInboundTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayZEVMInboundTestFilterer, error) { + contract, err := bindGatewayZEVMInboundTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestFilterer{contract: contract}, nil +} + +// bindGatewayZEVMInboundTest binds a generic wrapper to an already deployed contract. +func bindGatewayZEVMInboundTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayZEVMInboundTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMInboundTest.Contract.GatewayZEVMInboundTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.GatewayZEVMInboundTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.GatewayZEVMInboundTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMInboundTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) ISTEST() (bool, error) { + return _GatewayZEVMInboundTest.Contract.ISTEST(&_GatewayZEVMInboundTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) ISTEST() (bool, error) { + return _GatewayZEVMInboundTest.Contract.ISTEST(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeArtifacts(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeArtifacts(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeContracts(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeContracts(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeSenders(&_GatewayZEVMInboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.ExcludeSenders(&_GatewayZEVMInboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) Failed() (bool, error) { + return _GatewayZEVMInboundTest.Contract.Failed(&_GatewayZEVMInboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) Failed() (bool, error) { + return _GatewayZEVMInboundTest.Contract.Failed(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMInboundTest.Contract.TargetArtifactSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMInboundTest.Contract.TargetArtifactSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMInboundTest.Contract.TargetArtifacts(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMInboundTest.Contract.TargetArtifacts(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.TargetContracts(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.TargetContracts(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMInboundTest.Contract.TargetInterfaces(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMInboundTest.Contract.TargetInterfaces(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMInboundTest.Contract.TargetSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMInboundTest.Contract.TargetSelectors(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMInboundTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.TargetSenders(&_GatewayZEVMInboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMInboundTest.Contract.TargetSenders(&_GatewayZEVMInboundTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.SetUp(&_GatewayZEVMInboundTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.SetUp(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestCall is a paid mutator transaction binding the contract method 0xb7f05836. +// +// Solidity: function testCall() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestCall(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testCall") +} + +// TestCall is a paid mutator transaction binding the contract method 0xb7f05836. +// +// Solidity: function testCall() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestCall() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestCall(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestCall is a paid mutator transaction binding the contract method 0xb7f05836. +// +// Solidity: function testCall() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestCall() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestCall(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETA is a paid mutator transaction binding the contract method 0xea37902f. +// +// Solidity: function testWithdrawZETA() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZETA(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZETA") +} + +// TestWithdrawZETA is a paid mutator transaction binding the contract method 0xea37902f. +// +// Solidity: function testWithdrawZETA() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZETA() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETA(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETA is a paid mutator transaction binding the contract method 0xea37902f. +// +// Solidity: function testWithdrawZETA() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZETA() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETA(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xdde7e967. +// +// Solidity: function testWithdrawZETAFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZETAFailsIfNoAllowance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZETAFailsIfNoAllowance") +} + +// TestWithdrawZETAFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xdde7e967. +// +// Solidity: function testWithdrawZETAFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZETAFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xdde7e967. +// +// Solidity: function testWithdrawZETAFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZETAFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAWithMessage is a paid mutator transaction binding the contract method 0x18a4cfdc. +// +// Solidity: function testWithdrawZETAWithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZETAWithMessage(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZETAWithMessage") +} + +// TestWithdrawZETAWithMessage is a paid mutator transaction binding the contract method 0x18a4cfdc. +// +// Solidity: function testWithdrawZETAWithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZETAWithMessage() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAWithMessage(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAWithMessage is a paid mutator transaction binding the contract method 0x18a4cfdc. +// +// Solidity: function testWithdrawZETAWithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZETAWithMessage() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAWithMessage(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAWithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5006fd80. +// +// Solidity: function testWithdrawZETAWithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZETAWithMessageFailsIfNoAllowance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZETAWithMessageFailsIfNoAllowance") +} + +// TestWithdrawZETAWithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5006fd80. +// +// Solidity: function testWithdrawZETAWithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZETAWithMessageFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAWithMessageFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZETAWithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5006fd80. +// +// Solidity: function testWithdrawZETAWithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZETAWithMessageFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZETAWithMessageFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20 is a paid mutator transaction binding the contract method 0xfbc611c8. +// +// Solidity: function testWithdrawZRC20() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZRC20(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZRC20") +} + +// TestWithdrawZRC20 is a paid mutator transaction binding the contract method 0xfbc611c8. +// +// Solidity: function testWithdrawZRC20() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZRC20() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20 is a paid mutator transaction binding the contract method 0xfbc611c8. +// +// Solidity: function testWithdrawZRC20() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZRC20() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20FailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5d72228f. +// +// Solidity: function testWithdrawZRC20FailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZRC20FailsIfNoAllowance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZRC20FailsIfNoAllowance") +} + +// TestWithdrawZRC20FailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5d72228f. +// +// Solidity: function testWithdrawZRC20FailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZRC20FailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20FailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20FailsIfNoAllowance is a paid mutator transaction binding the contract method 0x5d72228f. +// +// Solidity: function testWithdrawZRC20FailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZRC20FailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20FailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20WithMessage is a paid mutator transaction binding the contract method 0x1e63d2b9. +// +// Solidity: function testWithdrawZRC20WithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZRC20WithMessage(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZRC20WithMessage") +} + +// TestWithdrawZRC20WithMessage is a paid mutator transaction binding the contract method 0x1e63d2b9. +// +// Solidity: function testWithdrawZRC20WithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZRC20WithMessage() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20WithMessage(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20WithMessage is a paid mutator transaction binding the contract method 0x1e63d2b9. +// +// Solidity: function testWithdrawZRC20WithMessage() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZRC20WithMessage() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20WithMessage(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20WithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x1238212c. +// +// Solidity: function testWithdrawZRC20WithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactor) TestWithdrawZRC20WithMessageFailsIfNoAllowance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMInboundTest.contract.Transact(opts, "testWithdrawZRC20WithMessageFailsIfNoAllowance") +} + +// TestWithdrawZRC20WithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x1238212c. +// +// Solidity: function testWithdrawZRC20WithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestSession) TestWithdrawZRC20WithMessageFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20WithMessageFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// TestWithdrawZRC20WithMessageFailsIfNoAllowance is a paid mutator transaction binding the contract method 0x1238212c. +// +// Solidity: function testWithdrawZRC20WithMessageFailsIfNoAllowance() returns() +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestTransactorSession) TestWithdrawZRC20WithMessageFailsIfNoAllowance() (*types.Transaction, error) { + return _GatewayZEVMInboundTest.Contract.TestWithdrawZRC20WithMessageFailsIfNoAllowance(&_GatewayZEVMInboundTest.TransactOpts) +} + +// GatewayZEVMInboundTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestCallIterator struct { + Event *GatewayZEVMInboundTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestCall represents a Call event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestCall struct { + Sender common.Address + Receiver []byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMInboundTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestCallIterator{contract: _GatewayZEVMInboundTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestCall, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestCall) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseCall(log types.Log) (*GatewayZEVMInboundTestCall, error) { + event := new(GatewayZEVMInboundTestCall) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestWithdrawalIterator struct { + Event *GatewayZEVMInboundTestWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestWithdrawal represents a Withdrawal event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestWithdrawal struct { + From common.Address + Zrc20 common.Address + To []byte + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMInboundTestWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestWithdrawalIterator{contract: _GatewayZEVMInboundTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestWithdrawal) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMInboundTestWithdrawal, error) { + event := new(GatewayZEVMInboundTestWithdrawal) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogIterator struct { + Event *GatewayZEVMInboundTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLog represents a Log event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogIterator{contract: _GatewayZEVMInboundTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLog) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLog(log types.Log) (*GatewayZEVMInboundTestLog, error) { + event := new(GatewayZEVMInboundTestLog) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogAddressIterator struct { + Event *GatewayZEVMInboundTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogAddress represents a LogAddress event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogAddressIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogAddressIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogAddress) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogAddress(log types.Log) (*GatewayZEVMInboundTestLogAddress, error) { + event := new(GatewayZEVMInboundTestLogAddress) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArrayIterator struct { + Event *GatewayZEVMInboundTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogArray represents a LogArray event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogArrayIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogArrayIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogArray) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogArray(log types.Log) (*GatewayZEVMInboundTestLogArray, error) { + event := new(GatewayZEVMInboundTestLogArray) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArray0Iterator struct { + Event *GatewayZEVMInboundTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogArray0 represents a LogArray0 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogArray0Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogArray0) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogArray0(log types.Log) (*GatewayZEVMInboundTestLogArray0, error) { + event := new(GatewayZEVMInboundTestLogArray0) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArray1Iterator struct { + Event *GatewayZEVMInboundTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogArray1 represents a LogArray1 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogArray1Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogArray1) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogArray1(log types.Log) (*GatewayZEVMInboundTestLogArray1, error) { + event := new(GatewayZEVMInboundTestLogArray1) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogBytesIterator struct { + Event *GatewayZEVMInboundTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogBytes represents a LogBytes event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogBytesIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogBytesIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogBytes) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogBytes(log types.Log) (*GatewayZEVMInboundTestLogBytes, error) { + event := new(GatewayZEVMInboundTestLogBytes) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogBytes32Iterator struct { + Event *GatewayZEVMInboundTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogBytes32 represents a LogBytes32 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogBytes32Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogBytes32) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogBytes32(log types.Log) (*GatewayZEVMInboundTestLogBytes32, error) { + event := new(GatewayZEVMInboundTestLogBytes32) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogIntIterator struct { + Event *GatewayZEVMInboundTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogInt represents a LogInt event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogIntIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogIntIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogInt(log types.Log) (*GatewayZEVMInboundTestLogInt, error) { + event := new(GatewayZEVMInboundTestLogInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedAddressIterator struct { + Event *GatewayZEVMInboundTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedAddressIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedAddress) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayZEVMInboundTestLogNamedAddress, error) { + event := new(GatewayZEVMInboundTestLogNamedAddress) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArrayIterator struct { + Event *GatewayZEVMInboundTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedArray represents a LogNamedArray event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedArrayIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedArray) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayZEVMInboundTestLogNamedArray, error) { + event := new(GatewayZEVMInboundTestLogNamedArray) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArray0Iterator struct { + Event *GatewayZEVMInboundTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedArray0Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedArray0) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayZEVMInboundTestLogNamedArray0, error) { + event := new(GatewayZEVMInboundTestLogNamedArray0) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArray1Iterator struct { + Event *GatewayZEVMInboundTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedArray1Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedArray1) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayZEVMInboundTestLogNamedArray1, error) { + event := new(GatewayZEVMInboundTestLogNamedArray1) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedBytesIterator struct { + Event *GatewayZEVMInboundTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedBytesIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedBytes) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayZEVMInboundTestLogNamedBytes, error) { + event := new(GatewayZEVMInboundTestLogNamedBytes) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedBytes32Iterator struct { + Event *GatewayZEVMInboundTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedBytes32Iterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedBytes32) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayZEVMInboundTestLogNamedBytes32, error) { + event := new(GatewayZEVMInboundTestLogNamedBytes32) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedDecimalIntIterator struct { + Event *GatewayZEVMInboundTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedDecimalIntIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedDecimalInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayZEVMInboundTestLogNamedDecimalInt, error) { + event := new(GatewayZEVMInboundTestLogNamedDecimalInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedDecimalUintIterator struct { + Event *GatewayZEVMInboundTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedDecimalUintIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedDecimalUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayZEVMInboundTestLogNamedDecimalUint, error) { + event := new(GatewayZEVMInboundTestLogNamedDecimalUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedIntIterator struct { + Event *GatewayZEVMInboundTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedInt represents a LogNamedInt event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedIntIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayZEVMInboundTestLogNamedInt, error) { + event := new(GatewayZEVMInboundTestLogNamedInt) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedStringIterator struct { + Event *GatewayZEVMInboundTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedString represents a LogNamedString event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedStringIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedString) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedString(log types.Log) (*GatewayZEVMInboundTestLogNamedString, error) { + event := new(GatewayZEVMInboundTestLogNamedString) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedUintIterator struct { + Event *GatewayZEVMInboundTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogNamedUint represents a LogNamedUint event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogNamedUintIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogNamedUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayZEVMInboundTestLogNamedUint, error) { + event := new(GatewayZEVMInboundTestLogNamedUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogStringIterator struct { + Event *GatewayZEVMInboundTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogString represents a LogString event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogStringIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogStringIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogString) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogString(log types.Log) (*GatewayZEVMInboundTestLogString, error) { + event := new(GatewayZEVMInboundTestLogString) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogUintIterator struct { + Event *GatewayZEVMInboundTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogUint represents a LogUint event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogUintIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogUintIterator{contract: _GatewayZEVMInboundTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogUint(log types.Log) (*GatewayZEVMInboundTestLogUint, error) { + event := new(GatewayZEVMInboundTestLogUint) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMInboundTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogsIterator struct { + Event *GatewayZEVMInboundTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMInboundTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMInboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMInboundTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMInboundTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMInboundTestLogs represents a Logs event raised by the GatewayZEVMInboundTest contract. +type GatewayZEVMInboundTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayZEVMInboundTestLogsIterator, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayZEVMInboundTestLogsIterator{contract: _GatewayZEVMInboundTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMInboundTestLogs) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseLogs(log types.Log) (*GatewayZEVMInboundTestLogs, error) { + event := new(GatewayZEVMInboundTestLogs) + if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go new file mode 100644 index 00000000..ea11383c --- /dev/null +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -0,0 +1,4567 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. +var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d73a8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637f924c4e1161012a578063c2725318116100bd578063e20c9f711161008c578063f5a3573311610071578063f5a357331461035c578063fa7626d414610364578063fc79171b1461037157600080fd5b8063e20c9f711461034c578063eba3c49c1461035457600080fd5b8063c27253181461032c578063c324827214610334578063cced12c71461033c578063df690b9a1461034457600080fd5b8063aed71d97116100f9578063aed71d97146102fc578063b0464fdc14610304578063b5508aa91461030c578063ba414fa61461031457600080fd5b80637f924c4e146102c257806385226c81146102ca578063916a17c6146102df57806396d9d876146102f457600080fd5b80633a25c460116101a2578063461fc5af11610171578063461fc5af14610295578063597cfeb01461029d57806366d9a9a0146102a5578063720b9aa9146102ba57600080fd5b80633a25c460146102755780633e5e3c231461027d5780633f7286f41461028557806344b2a40b1461028d57600080fd5b80631ed7831c116101de5780631ed7831c146102325780631fe68797146102505780632ade38801461025857806331d099561461026d57600080fd5b806309f080da146102105780630a9254e41461021a578063104b352214610222578063198d5ca41461022a575b600080fd5b610218610379565b005b61021861056d565b610218610fcf565b6102186111c1565b61023a61147b565b60405161024791906183b7565b60405180910390f35b6102186114dd565b610260611a0c565b6040516102479190618453565b610218611b4e565b610218611d0d565b61023a611ec8565b61023a611f28565b610218611f88565b610218612110565b6102186122ce565b6102ad6126a4565b60405161024791906185b9565b610218612826565b610218612a99565b6102d2612cc9565b6040516102479190618657565b6102e7612d99565b60405161024791906186ce565b610218612e94565b610218612fe7565b6102e76132f3565b6102d26133ee565b61031c6134be565b6040519015158152602001610247565b610218613592565b61021861374b565b610218613904565b610218613aef565b61023a613cad565b610218613d0d565b610218613ecb565b601f5461031c9060ff1681565b610218614082565b600060405160200161038a90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b600060405180830381600087803b15801561055157600080fd5b505af1158015610565573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105b3906182ca565b604051809103906000f0801580156105cf573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526106a89160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526141b9565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190618835565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107d2906182d7565b604051809103906000f0801580156107ee573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050505060008060006040516108b3906182e4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108ef573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610945906182f1565b6109549695949392919061885e565b604051809103906000f080158015610970573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190618953565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190618953565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b50505050565b604051600190600090610fe490602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906189af565b905061125c6000826141d8565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146991906189af565b90506114766000826141d8565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156114d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114b5575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b91906189af565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906189af565b6024546040519192506001600160a01b0316319060009061161d90602001618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061177a93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546117aa936001600160a01b03928316928c9216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506118769286928c929116908890600401618975565b600060405180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193491906189af565b90506119496119438888618a6a565b826141d8565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906189af565b90506119e386826141d8565b611a026119f08987618a7d565b6024546001600160a01b0316316141d8565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611b4557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b2e578382906000526020600020018054611aa190618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054611acd90618a90565b8015611b1a5780601f10611aef57610100808354040283529160200191611b1a565b820191906000526020600020905b815481529060010190602001808311611afd57829003601f168201915b505050505081526020019060010190611a82565b505050508152505081526020019060010190611a30565b50505050905090565b6000604051602001611b5f90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015611c9b57600080fd5b505af1158015611caf573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f5004945061053793879381169260019291169089906004016187e0565b604051600190600090611d2290602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611dec57600080fd5b505af1158015611e00573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b606060188054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505050565b600060405160200161212190618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b91906189af565b90506123686000826141d8565b600060405160200161237990618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506124d693506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612507936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506125da93879381169260019291169089906004016187e0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269791906189af565b9050610fc96001826141d8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002090600202016040518060400160405290816000820180546126fb90618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461272790618a90565b80156127745780601f1061274957610100808354040283529160200191612774565b820191906000526020600020905b81548152906001019060200180831161275757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561280e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127bb5790505b505050505081525050815260200190600101906126c8565b600060405160200161283790618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061299493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546129c5936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612a2757600080fd5b505af1158015612a3b573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b945061053793879381169260019291169089906004016187e0565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2791906189af565b9050612b346000826141d8565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b8d57600080fd5b505af1158015612ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd91906189af565b905061147683826141d8565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611b45578382906000526020600020018054612d0c90618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3890618a90565b8015612d855780601f10612d5a57610100808354040283529160200191612d85565b820191906000526020600020905b815481529060010190602001808311612d6857829003601f168201915b505050505081526020019060010190612ced565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e7c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612e295790505b50505050508152505081526020019060010190612dbd565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc91506064016120db565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307491906189af565b90506130816000826141d8565b600060405160200161309290618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506131ef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613220936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561328157600080fd5b505af1158015613295573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506125da93879381169260019291169089906004016187e0565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156133d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116133835790505b50505050508152505081526020019060010190613317565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002001805461343190618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461345d90618a90565b80156134aa5780601f1061347f576101008083540402835291602001916134aa565b820191906000526020600020905b81548152906001019060200180831161348d57829003601f168201915b505050505081526020019060010190613412565b60085460009060ff16156134d6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358b91906189af565b1415905090565b60006040516020016135a390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561366d57600080fd5b505af1158015613681573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136de57600080fd5b505af11580156136f2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105379286921690600190869089906004016187e0565b600060405160200161375c90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105379286921690600190869089906004016187e0565b600060405160200161391590618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a0357600080fd5b505af1158015613a17573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999489450613a7293506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613aa3936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611c81565b6000604051602001613b0090618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613bca57600080fd5b505af1158015613bde573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b606060158054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b6000604051602001613d1e90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613de857600080fd5b505af1158015613dfc573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613e5957600080fd5b505af1158015613e6d573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b604051600190600090613ee090602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613faa57600080fd5b505af1158015613fbe573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561401b57600080fd5b505af115801561402f573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061118a908490879085908890600401618975565b600060405160200161409390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561415d57600080fd5b505af1158015614171573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401612a0d565b60006141c36182fe565b6141ce848483614257565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561424357600080fd5b505afa158015610565573d6000803e3d6000fd5b60008061426485846142d2565b90506142c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016142b2929190618add565b604051602081830303815290604052856142de565b9150505b9392505050565b60006142cb838361430c565b60c08101515160009015614302576142fb84848460c00151614327565b90506142cb565b6142fb84846144cd565b600061431883836145b8565b6142cb838360200151846142de565b6000806143326145c8565b90506000614340868361469b565b905060006143578260600151836020015185614b41565b9050600061436783838989614d53565b9050600061437482615bd0565b602081015181519192509060030b156143e75789826040015160405160200161439e929190618aff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526143de91600401618b80565b60405180910390fd5b600061442a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615d9f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061447d908490600401618b80565b602060405180830381865afa15801561449a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144be9190618835565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614522908790600401618b80565b600060405180830381865afa15801561453f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145679190810190618c7b565b905060006145958285604051602001614581929190618cb0565b604051602081830303815290604052615f9f565b90506001600160a01b0381166141ce57848460405160200161439e929190618cdf565b6145c482826000615fb2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061464f908490600401618d8a565b600060405180830381865afa15801561466c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146949190810190618dd1565b9250505090565b6146cd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506147186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614721856160b5565b602082015260006147318661649a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261479b9190810190618dd1565b868385602001516040516020016147b59493929190618e1a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061480d908590600401618b80565b600060405180830381865afa15801561482a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148529190810190618dd1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061489a908490600401618f1e565b602060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148db9190618953565b6148f0578160405160200161439e9190618f70565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614935908490600401619002565b600060405180830381865afa158015614952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261497a9190810190618dd1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906149c1908490600401619054565b602060405180830381865afa1580156149de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a029190618953565b15614a97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614a4c908490600401619054565b600060405180830381865afa158015614a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a919190810190618dd1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614abc91906190a6565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614ae8929190619112565b600060405180830381865afa158015614b05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b2d9190810190618dd1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614b5d5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614bbd57614bbd619137565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614c1157614c11619137565b602002602001018190525084604051602001614c2d9190619166565b60405160208183030381529060405281600281518110614c4f57614c4f619137565b602002602001018190525082604051602001614c6b91906191d2565b60405160208183030381529060405281600381518110614c8d57614c8d619137565b60200260200101819052506000614ca382615bd0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614d34906040805180820182526000808252602091820152815180830190925284518252808501908201529061671d565b614d49578560405160200161439e9190619213565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614da3565b511590565b614f1757826020015115614e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016143de565b8260c0015115614f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016143de565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614f3057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614f8b906192a4565b935060ff1681518110614fa057614fa0619137565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614ff191906192c3565b60405160208183030381529060405282828061500c906192a4565b935060ff168151811061502157615021619137565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061506e906192a4565b935060ff168151811061508357615083619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806150d0906192a4565b935060ff16815181106150e5576150e5619137565b60200260200101819052508760200151828280615101906192a4565b935060ff168151811061511657615116619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280615163906192a4565b935060ff168151811061517857615178619137565b602090810291909101015287518282615190816192a4565b935060ff16815181106151a5576151a5619137565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806151f2906192a4565b935060ff168151811061520757615207619137565b602002602001018190525061521b4661677e565b8282615226816192a4565b935060ff168151811061523b5761523b619137565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615288906192a4565b935060ff168151811061529d5761529d619137565b6020026020010181905250868282806152b5906192a4565b935060ff16815181106152ca576152ca619137565b60209081029190910101528551156153f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261531b816192a4565b935060ff168151811061533057615330619137565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615380908990600401618b80565b600060405180830381865afa15801561539d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526153c59190810190618dd1565b82826153d0816192a4565b935060ff16815181106153e5576153e5619137565b60200260200101819052505b8460200151156154c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261543a816192a4565b935060ff168151811061544f5761544f619137565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061549c906192a4565b935060ff16815181106154b1576154b1619137565b6020026020010181905250615688565b6154f9614d9e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61558c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261553c816192a4565b935060ff168151811061555157615551619137565b60200260200101819052508460a001516040516020016155719190619166565b60405160208183030381529060405282828061549c906192a4565b8460c001511580156155cf5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526155cd90511590565b155b156156885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615613816192a4565b935060ff168151811061562857615628619137565b602002602001018190525061563c8861681e565b60405160200161564c9190619166565b604051602081830303815290604052828280615667906192a4565b935060ff168151811061567c5761567c619137565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526156bc90511590565b6157515760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826156ff816192a4565b935060ff168151811061571457615714619137565b60200260200101819052508460400151828280615730906192a4565b935060ff168151811061574557615745619137565b60200260200101819052505b6060850151156158725760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261579a816192a4565b935060ff16815181106157af576157af619137565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561581e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158469190810190618dd1565b8282615851816192a4565b935060ff168151811061586657615866619137565b60200260200101819052505b60e085015151156159195760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826158bc816192a4565b935060ff16815181106158d1576158d1619137565b60200260200101819052506158ed8560e001516000015161677e565b82826158f8816192a4565b935060ff168151811061590d5761590d619137565b60200260200101819052505b60e085015160200151156159c35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615966816192a4565b935060ff168151811061597b5761597b619137565b60200260200101819052506159978560e001516020015161677e565b82826159a2816192a4565b935060ff16815181106159b7576159b7619137565b60200260200101819052505b60e08501516040015115615a6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615a10816192a4565b935060ff1681518110615a2557615a25619137565b6020026020010181905250615a418560e001516040015161677e565b8282615a4c816192a4565b935060ff1681518110615a6157615a61619137565b60200260200101819052505b60e08501516060015115615b175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615aba816192a4565b935060ff1681518110615acf57615acf619137565b6020026020010181905250615aeb8560e001516060015161677e565b8282615af6816192a4565b935060ff1681518110615b0b57615b0b619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615b3557615b35618b93565b604051908082528060200260200182016040528015615b6857816020015b6060815260200190600190039081615b535790505b50905060005b8260ff168160ff161015615bc157838160ff1681518110615b9157615b91619137565b6020026020010151828260ff1681518110615bae57615bae619137565b6020908102919091010152600101615b6e565b5093505050505b949350505050565b615bf76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615c7d9186910161932e565b600060405180830381865afa158015615c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615cc29190810190618dd1565b90506000615cd0868361730d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615d009190618657565b6000604051808303816000875af1158015615d1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d479190810190619375565b805190915060030b15801590615d605750602081015151155b8015615d6f5750604081015151155b15614d495781600081518110615d8757615d87619137565b602002602001015160405160200161439e919061942b565b60606000615dd48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615e0b9082905b90617462565b15615f68576000615e8882615e8284615e7c615e4e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617489565b906174eb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615eec908290617462565b15615f5657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f53905b8290617570565b90505b615f5f81617596565b925050506142cb565b8215615f8157848460405160200161439e929190619617565b50506040805160208101909152600081526142cb565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615fc157505050565b6000615fce8484846175ff565b90506000615fdb82615bd0565b602081015181519192509060030b1580156160775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261607790604080518082018252600080825260209182015281518083019092528451825280850190820152615e05565b1561608457505050505050565b604082015151156160a457816040015160405160200161439e91906196be565b8060405160200161439e919061971c565b606060006160ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061614f905b829061671d565b156161be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9908390617b9a565b617596565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616220905b8290617c24565b6001036162ed57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261628690615f4c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9905b8390617570565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634c90616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906163b4908390617cbe565b9050600081600183516163c79190618a6a565b815181106163d7576163d7619137565b6020026020010151905061647a6161b961644d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617b9a565b95945050505050565b8260405160200161439e9190619787565b50919050565b606060006164cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061653190616148565b1561653f576142cb81617596565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261659e90616219565b60010361660857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9906162e6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261666790616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906166cf908390617cbe565b905060018151111561670b5780600282516166ea9190618a6a565b815181106166fa576166fa619137565b602002602001015192505050919050565b508260405160200161439e9190619787565b805182516000911115616732575060006141d2565b8151835160208501516000929161674891618a7d565b6167529190618a6a565b9050826020015181036167695760019150506141d2565b82516020840151819020912014905092915050565b6060600061678b83617d63565b600101905060008167ffffffffffffffff8111156167ab576167ab618b93565b6040519080825280601f01601f1916602001820160405280156167d5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846167df57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916168aa905b8290617e45565b156168ea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616949906168a3565b1561698957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169e8906168a3565b15616a2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a87906168a3565b80616aec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616aec906168a3565b15616b2c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b8b906168a3565b80616bf05750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf0906168a3565b15616c3057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c8f906168a3565b80616cf45750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cf4906168a3565b15616d3457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d93906168a3565b80616df85750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616df8906168a3565b15616e3857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e97906168a3565b15616ed757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f36906168a3565b15616f7657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fd5906168a3565b1561701557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617074906168a3565b156170b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617113906168a3565b1561715357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171b2906168a3565b806172175750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617217906168a3565b1561725757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172b6906168a3565b156172f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161439e9290602001619865565b60608060005b8451811015617398578185828151811061732f5761732f619137565b6020026020010151604051602001617348929190618cb0565b6040516020818303038152906040529150600185516173679190618a6a565b8114617390578160405160200161737e91906199ce565b60405160208183030381529060405291505b600101617313565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816173b157905050905083816000815181106173dc576173dc619137565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061743057617430619137565b6020026020010181905250818160028151811061744f5761744f619137565b6020908102919091010152949350505050565b60208083015183518351928401516000936174809291849190617e59565b14159392505050565b604080518082019091526000808252602082015260006174bb8460000151856020015185600001518660200151617f6a565b90508360200151816174cd9190618a6a565b845185906174dc908390618a6a565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156175105750816141d2565b60208083015190840151600191146175375750815160208481015190840151829020919020145b80156175685782518451859061754e908390618a6a565b9052508251602085018051617564908390618a7d565b9052505b509192915050565b604080518082019091526000808252602082015261758f83838361808a565b5092915050565b60606000826000015167ffffffffffffffff8111156175b7576175b7618b93565b6040519080825280601f01601f1916602001820160405280156175e1576020820181803683370190505b509050600060208201905061758f8185602001518660000151618135565b6060600061760b6145c8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161762857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617683906192a4565b935060ff168151811061769857617698619137565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016176e99190619a0f565b604051602081830303815290604052828280617704906192a4565b935060ff168151811061771957617719619137565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617766906192a4565b935060ff168151811061777b5761777b619137565b60200260200101819052508260405160200161779791906191d2565b6040516020818303038152906040528282806177b2906192a4565b935060ff16815181106177c7576177c7619137565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617814906192a4565b935060ff168151811061782957617829619137565b602002602001018190525061783e87846181af565b8282617849816192a4565b935060ff168151811061785e5761785e619137565b60209081029190910101528551511561790a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826178b0816192a4565b935060ff16815181106178c5576178c5619137565b60200260200101819052506178de8660000151846181af565b82826178e9816192a4565b935060ff16815181106178fe576178fe619137565b60200260200101819052505b8560800151156179785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617953816192a4565b935060ff168151811061796857617968619137565b60200260200101819052506179de565b84156179de5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826179bd816192a4565b935060ff16815181106179d2576179d2619137565b60200260200101819052505b60408601515115617a7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617a28816192a4565b935060ff1681518110617a3d57617a3d619137565b60200260200101819052508560400151828280617a59906192a4565b935060ff1681518110617a6e57617a6e619137565b60200260200101819052505b856060015115617ae45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617ac3816192a4565b935060ff1681518110617ad857617ad8619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617b0257617b02618b93565b604051908082528060200260200182016040528015617b3557816020015b6060815260200190600190039081617b205790505b50905060005b8260ff168160ff161015617b8e57838160ff1681518110617b5e57617b5e619137565b6020026020010151828260ff1681518110617b7b57617b7b619137565b6020908102919091010152600101617b3b565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617bbf5750816141d2565b81518351602085015160009291617bd591618a7d565b617bdf9190618a6a565b60208401519091506001908214617c00575082516020840151819020908220145b8015617c1b57835185518690617c17908390618a6a565b9052505b50929392505050565b6000808260000151617c488560000151866020015186600001518760200151617f6a565b617c529190618a7d565b90505b83516020850151617c669190618a7d565b811161758f5781617c7681619a54565b9250508260000151617cad856020015183617c919190618a6a565b8651617c9d9190618a6a565b8386600001518760200151617f6a565b617cb79190618a7d565b9050617c55565b60606000617ccc8484617c24565b617cd7906001618a7d565b67ffffffffffffffff811115617cef57617cef618b93565b604051908082528060200260200182016040528015617d2257816020015b6060815260200190600190039081617d0d5790505b50905060005b8151811015615f9757617d3e6161b98686617570565b828281518110617d5057617d50619137565b6020908102919091010152600101617d28565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617dac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617dd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617df657662386f26fc10000830492506010015b6305f5e1008310617e0e576305f5e100830492506008015b6127108310617e2257612710830492506004015b60648310617e34576064830492506002015b600a83106141d25760010192915050565b6000617e5183836181ef565b159392505050565b600080858411617f605760208411617f0c5760008415617ea4576001617e80866020618a6a565b617e8b906008619a6e565b617e96906002619b6c565b617ea09190618a6a565b1990505b8351811685617eb38989618a7d565b617ebd9190618a6a565b805190935082165b818114617ef757878411617edf5787945050505050615bc8565b83617ee981619b78565b945050828451169050617ec5565b617f018785618a7d565b945050505050615bc8565b838320617f198588618a6a565b617f239087618a7d565b91505b858210617f5e57848220808203617f4b57617f418684618a7d565b9350505050615bc8565b617f56600184618a6a565b925050617f26565b505b5092949350505050565b6000838186851161807557602085116180245760008515617fb6576001617f92876020618a6a565b617f9d906008619a6e565b617fa8906002619b6c565b617fb29190618a6a565b1990505b84518116600087617fc78b8b618a7d565b617fd19190618a6a565b855190915083165b82811461801657818610617ffe57617ff18b8b618a7d565b9650505050505050615bc8565b8561800881619a54565b965050838651169050617fd9565b859650505050505050615bc8565b508383206000905b6180368689618a6a565b8211618073578583208082036180525783945050505050615bc8565b61805d600185618a7d565b935050818061806b90619a54565b92505061802c565b505b61807f8787618a7d565b979650505050505050565b604080518082019091526000808252602082015260006180bc8560000151866020015186600001518760200151617f6a565b6020808701805191860191909152519091506180d89082618a6a565b8352845160208601516180eb9190618a7d565b81036180fa576000855261812c565b835183516181089190618a7d565b85518690618117908390618a6a565b90525083516181269082618a7d565b60208601525b50909392505050565b6020811061816d578151835261814c602084618a7d565b9250618159602083618a7d565b9150618166602082618a6a565b9050618135565b600019811561819c576001618183836020618a6a565b61818f90610100619b6c565b6181999190618a6a565b90505b9151835183169219169190911790915250565b606060006181bd848461469b565b80516020808301516040519394506181d793909101619b8f565b60405160208183030381529060405291505092915050565b8151815160009190811115618202575081515b6020808501519084015160005b838110156182bb578251825180821461828b57600019602087101561826a5760018461823c896020618a6a565b6182469190618a7d565b618251906008619a6e565b61825c906002619b6c565b6182669190618a6a565b1990505b81811683821681810391146182885797506141d29650505050505050565b50505b618296602086618a7d565b94506182a3602085618a7d565b935050506020816182b49190618a7d565b905061820f565b5084518651614d499190619be7565b610b6780619c0883390190565b61053f8061a76f83390190565b61106f8061acae83390190565b6119e88061bd1d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618341618346565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016183416040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156183f85783516001600160a01b03168352602093840193909201916001016183d1565b509095945050505050565b60005b8381101561841e578181015183820152602001618406565b50506000910152565b6000815180845261843f816020860160208601618403565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618535577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261851f848651618427565b60209586019590945092909201916001016184e5565b50919750505060209485019492909201915060010161847b565b50929695505050505050565b600081518084526020840193506020830160005b828110156185af5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161856f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526186256040880182618427565b9050602082015191508681036020880152618640818361855b565b9650505060209384019391909101906001016185e1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526186b9858351618427565b9450602093840193919091019060010161867f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261874f604087018261855b565b95505060209384019391909101906001016186f6565b6020815260006141d260208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60008151606084526187b76060850182618427565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a0815260006187f360a08301886187a2565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526188298185618427565b98975050505050505050565b60006020828403121561884757600080fd5b81516001600160a01b03811681146142cb57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618918577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261893960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561896557600080fd5b815180151581146142cb57600080fd5b60808152600061898860808301876187a2565b8560208401526001600160a01b0385166040840152828103606084015261807f8185618427565b6000602082840312156189c157600080fd5b5051919050565b60a0815260006189db60a0830187618427565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261807f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156141d2576141d2618a3b565b808201808211156141d2576141d2618a3b565b600181811c90821680618aa457607f821691505b602082108103616494577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0383168152604060208201526000615bc86040830184618427565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618b3781601a850160208801618403565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618b7481601c840160208801618403565b01601c01949350505050565b6020815260006142cb6020830184618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715618be557618be5618b93565b60405290565b60008067ffffffffffffffff841115618c0657618c06618b93565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618c3557618c35618b93565b604052838152905080828401851015618c4d57600080fd5b615f97846020830185618403565b600082601f830112618c6c57600080fd5b6142cb83835160208501618beb565b600060208284031215618c8d57600080fd5b815167ffffffffffffffff811115618ca457600080fd5b6141ce84828501618c5b565b60008351618cc2818460208801618403565b835190830190618cd6818360208801618403565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618d1781601a850160208801618403565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618d54816033840160208801618403565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006142cb6080830184618427565b600060208284031215618de357600080fd5b815167ffffffffffffffff811115618dfa57600080fd5b8201601f81018413618e0b57600080fd5b6141ce84825160208401618beb565b60008551618e2c818460208a01618403565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618e66816001840160208a01618403565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618ea4816002840160208901618403565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618ee6816002840160208801618403565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618f316040830184618427565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618fa881601f850160208701618403565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006190156040830184618427565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006190676040830184618427565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516190de816014850160208701618403565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006191256040830185618427565b82810360208401526142c78185618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161919e816001850160208701618403565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516191e4818460208701618403565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161929781604b850160208701618403565b91909101604b0192915050565b600060ff821660ff81036192ba576192ba618a3b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006142cb6080830184618427565b60006020828403121561938757600080fd5b815167ffffffffffffffff81111561939e57600080fd5b8201606081850312156193b057600080fd5b6193b8618bc2565b81518060030b81146193c957600080fd5b8152602082015167ffffffffffffffff8111156193e557600080fd5b6193f186828501618c5b565b602083015250604082015167ffffffffffffffff81111561941157600080fd5b61941d86828501618c5b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619489816021850160208701618403565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619675816021850160208801618403565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516196b281602e840160208801618403565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161977a816022850160208701618403565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516197bf81600e850160208701618403565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161989d816018850160208801618403565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516198da81601c840160208801618403565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516199e0818460208701618403565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619a4781601c850160208701618403565b91909101601c0192915050565b60006000198203619a6757619a67618a3b565b5060010190565b80820281158282048414176141d2576141d2618a3b565b6001815b6001841115619ac057808504811115619aa457619aa4618a3b565b6001841615619ab257908102905b60019390931c928002619a89565b935093915050565b600082619ad7575060016141d2565b81619ae4575060006141d2565b8160018114619afa5760028114619b0457619b20565b60019150506141d2565b60ff841115619b1557619b15618a3b565b50506001821b6141d2565b5060208310610133831016604e8410600b8410161715619b43575081810a6141d2565b619b506000198484619a85565b8060001904821115619b6457619b64618a3b565b029392505050565b60006142cb8383619ac8565b600081619b8757619b87618a3b565b506000190190565b60008351619ba1818460208801618403565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619bdb816001840160208801618403565b01600101949350505050565b818103600083128015838313168383128216171561758f5761758f618a3b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201f318efc07065bafb88449047967a7fed5949a025e75f877444d77805cbd1f3964736f6c634300081a0033", +} + +// GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayZEVMOutboundTestMetaData.ABI instead. +var GatewayZEVMOutboundTestABI = GatewayZEVMOutboundTestMetaData.ABI + +// GatewayZEVMOutboundTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayZEVMOutboundTestMetaData.Bin instead. +var GatewayZEVMOutboundTestBin = GatewayZEVMOutboundTestMetaData.Bin + +// DeployGatewayZEVMOutboundTest deploys a new Ethereum contract, binding an instance of GatewayZEVMOutboundTest to it. +func DeployGatewayZEVMOutboundTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayZEVMOutboundTest, error) { + parsed, err := GatewayZEVMOutboundTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GatewayZEVMOutboundTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayZEVMOutboundTest{GatewayZEVMOutboundTestCaller: GatewayZEVMOutboundTestCaller{contract: contract}, GatewayZEVMOutboundTestTransactor: GatewayZEVMOutboundTestTransactor{contract: contract}, GatewayZEVMOutboundTestFilterer: GatewayZEVMOutboundTestFilterer{contract: contract}}, nil +} + +// GatewayZEVMOutboundTest is an auto generated Go binding around an Ethereum contract. +type GatewayZEVMOutboundTest struct { + GatewayZEVMOutboundTestCaller // Read-only binding to the contract + GatewayZEVMOutboundTestTransactor // Write-only binding to the contract + GatewayZEVMOutboundTestFilterer // Log filterer for contract events +} + +// GatewayZEVMOutboundTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayZEVMOutboundTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMOutboundTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayZEVMOutboundTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMOutboundTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayZEVMOutboundTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMOutboundTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayZEVMOutboundTestSession struct { + Contract *GatewayZEVMOutboundTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMOutboundTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayZEVMOutboundTestCallerSession struct { + Contract *GatewayZEVMOutboundTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayZEVMOutboundTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayZEVMOutboundTestTransactorSession struct { + Contract *GatewayZEVMOutboundTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMOutboundTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayZEVMOutboundTestRaw struct { + Contract *GatewayZEVMOutboundTest // Generic contract binding to access the raw methods on +} + +// GatewayZEVMOutboundTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayZEVMOutboundTestCallerRaw struct { + Contract *GatewayZEVMOutboundTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayZEVMOutboundTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayZEVMOutboundTestTransactorRaw struct { + Contract *GatewayZEVMOutboundTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayZEVMOutboundTest creates a new instance of GatewayZEVMOutboundTest, bound to a specific deployed contract. +func NewGatewayZEVMOutboundTest(address common.Address, backend bind.ContractBackend) (*GatewayZEVMOutboundTest, error) { + contract, err := bindGatewayZEVMOutboundTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTest{GatewayZEVMOutboundTestCaller: GatewayZEVMOutboundTestCaller{contract: contract}, GatewayZEVMOutboundTestTransactor: GatewayZEVMOutboundTestTransactor{contract: contract}, GatewayZEVMOutboundTestFilterer: GatewayZEVMOutboundTestFilterer{contract: contract}}, nil +} + +// NewGatewayZEVMOutboundTestCaller creates a new read-only instance of GatewayZEVMOutboundTest, bound to a specific deployed contract. +func NewGatewayZEVMOutboundTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayZEVMOutboundTestCaller, error) { + contract, err := bindGatewayZEVMOutboundTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestCaller{contract: contract}, nil +} + +// NewGatewayZEVMOutboundTestTransactor creates a new write-only instance of GatewayZEVMOutboundTest, bound to a specific deployed contract. +func NewGatewayZEVMOutboundTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayZEVMOutboundTestTransactor, error) { + contract, err := bindGatewayZEVMOutboundTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestTransactor{contract: contract}, nil +} + +// NewGatewayZEVMOutboundTestFilterer creates a new log filterer instance of GatewayZEVMOutboundTest, bound to a specific deployed contract. +func NewGatewayZEVMOutboundTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayZEVMOutboundTestFilterer, error) { + contract, err := bindGatewayZEVMOutboundTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestFilterer{contract: contract}, nil +} + +// bindGatewayZEVMOutboundTest binds a generic wrapper to an already deployed contract. +func bindGatewayZEVMOutboundTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayZEVMOutboundTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMOutboundTest.Contract.GatewayZEVMOutboundTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.GatewayZEVMOutboundTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.GatewayZEVMOutboundTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMOutboundTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) ISTEST() (bool, error) { + return _GatewayZEVMOutboundTest.Contract.ISTEST(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ISTEST() (bool, error) { + return _GatewayZEVMOutboundTest.Contract.ISTEST(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeArtifacts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeArtifacts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeContracts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeContracts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeSenders(&_GatewayZEVMOutboundTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.ExcludeSenders(&_GatewayZEVMOutboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) Failed() (bool, error) { + return _GatewayZEVMOutboundTest.Contract.Failed(&_GatewayZEVMOutboundTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) Failed() (bool, error) { + return _GatewayZEVMOutboundTest.Contract.Failed(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMOutboundTest.Contract.TargetArtifactSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMOutboundTest.Contract.TargetArtifactSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMOutboundTest.Contract.TargetArtifacts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMOutboundTest.Contract.TargetArtifacts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.TargetContracts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.TargetContracts(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMOutboundTest.Contract.TargetInterfaces(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMOutboundTest.Contract.TargetInterfaces(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMOutboundTest.Contract.TargetSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMOutboundTest.Contract.TargetSelectors(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.TargetSenders(&_GatewayZEVMOutboundTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMOutboundTest.Contract.TargetSenders(&_GatewayZEVMOutboundTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.SetUp(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.SetUp(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDeposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDeposit") +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDeposit() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDeposit(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDeposit() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDeposit(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContract is a paid mutator transaction binding the contract method 0xaed71d97. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositAndRevertZRC20AndCallZContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositAndRevertZRC20AndCallZContract") +} + +// TestDepositAndRevertZRC20AndCallZContract is a paid mutator transaction binding the contract method 0xaed71d97. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositAndRevertZRC20AndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContract is a paid mutator transaction binding the contract method 0xaed71d97. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositAndRevertZRC20AndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule is a paid mutator transaction binding the contract method 0xeba3c49c. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule") +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule is a paid mutator transaction binding the contract method 0xeba3c49c. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule is a paid mutator transaction binding the contract method 0xeba3c49c. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway is a paid mutator transaction binding the contract method 0xc3248272. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway") +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway is a paid mutator transaction binding the contract method 0xc3248272. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway is a paid mutator transaction binding the contract method 0xc3248272. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x09f080da. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule") +} + +// TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x09f080da. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x09f080da. +// +// Solidity: function testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfSenderNotFungibleModule is a paid mutator transaction binding the contract method 0x198d5ca4. +// +// Solidity: function testDepositFailsIfSenderNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositFailsIfSenderNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositFailsIfSenderNotFungibleModule") +} + +// TestDepositFailsIfSenderNotFungibleModule is a paid mutator transaction binding the contract method 0x198d5ca4. +// +// Solidity: function testDepositFailsIfSenderNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositFailsIfSenderNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfSenderNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfSenderNotFungibleModule is a paid mutator transaction binding the contract method 0x198d5ca4. +// +// Solidity: function testDepositFailsIfSenderNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositFailsIfSenderNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfSenderNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x44b2a40b. +// +// Solidity: function testDepositFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositFailsIfTargetIsFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositFailsIfTargetIsFungibleModule") +} + +// TestDepositFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x44b2a40b. +// +// Solidity: function testDepositFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositFailsIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x44b2a40b. +// +// Solidity: function testDepositFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositFailsIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0x96d9d876. +// +// Solidity: function testDepositFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositFailsIfTargetIsGateway(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositFailsIfTargetIsGateway") +} + +// TestDepositFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0x96d9d876. +// +// Solidity: function testDepositFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositFailsIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0x96d9d876. +// +// Solidity: function testDepositFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositFailsIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContract is a paid mutator transaction binding the contract method 0x1fe68797. +// +// Solidity: function testDepositZETAAndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZETAAndCallZContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZETAAndCallZContract") +} + +// TestDepositZETAAndCallZContract is a paid mutator transaction binding the contract method 0x1fe68797. +// +// Solidity: function testDepositZETAAndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZETAAndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContract is a paid mutator transaction binding the contract method 0x1fe68797. +// +// Solidity: function testDepositZETAAndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZETAAndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x3a25c460. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule") +} + +// TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x3a25c460. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x3a25c460. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x104b3522. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule") +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x104b3522. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0x104b3522. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0xf5a35733. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZETAAndCallZContractFailsIfTargetIsGateway(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZETAAndCallZContractFailsIfTargetIsGateway") +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0xf5a35733. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZETAAndCallZContractFailsIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZETAAndCallZContractFailsIfTargetIsGateway is a paid mutator transaction binding the contract method 0xf5a35733. +// +// Solidity: function testDepositZETAAndCallZContractFailsIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZETAAndCallZContractFailsIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZETAAndCallZContractFailsIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContract is a paid mutator transaction binding the contract method 0x597cfeb0. +// +// Solidity: function testDepositZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZRC20AndCallZContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZRC20AndCallZContract") +} + +// TestDepositZRC20AndCallZContract is a paid mutator transaction binding the contract method 0x597cfeb0. +// +// Solidity: function testDepositZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZRC20AndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContract is a paid mutator transaction binding the contract method 0x597cfeb0. +// +// Solidity: function testDepositZRC20AndCallZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZRC20AndCallZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x461fc5af. +// +// Solidity: function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule") +} + +// TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x461fc5af. +// +// Solidity: function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x461fc5af. +// +// Solidity: function testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0xdf690b9a. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZRC20AndCallZContractIfTargetIsFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZRC20AndCallZContractIfTargetIsFungibleModule") +} + +// TestDepositZRC20AndCallZContractIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0xdf690b9a. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZRC20AndCallZContractIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractIfTargetIsFungibleModule is a paid mutator transaction binding the contract method 0xdf690b9a. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZRC20AndCallZContractIfTargetIsFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractIfTargetIsFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractIfTargetIsGateway is a paid mutator transaction binding the contract method 0xc2725318. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositZRC20AndCallZContractIfTargetIsGateway(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositZRC20AndCallZContractIfTargetIsGateway") +} + +// TestDepositZRC20AndCallZContractIfTargetIsGateway is a paid mutator transaction binding the contract method 0xc2725318. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositZRC20AndCallZContractIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositZRC20AndCallZContractIfTargetIsGateway is a paid mutator transaction binding the contract method 0xc2725318. +// +// Solidity: function testDepositZRC20AndCallZContractIfTargetIsGateway() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositZRC20AndCallZContractIfTargetIsGateway() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositZRC20AndCallZContractIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteRevertZContract is a paid mutator transaction binding the contract method 0xcced12c7. +// +// Solidity: function testExecuteRevertZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestExecuteRevertZContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testExecuteRevertZContract") +} + +// TestExecuteRevertZContract is a paid mutator transaction binding the contract method 0xcced12c7. +// +// Solidity: function testExecuteRevertZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestExecuteRevertZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteRevertZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteRevertZContract is a paid mutator transaction binding the contract method 0xcced12c7. +// +// Solidity: function testExecuteRevertZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestExecuteRevertZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteRevertZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteRevertZContractIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x31d09956. +// +// Solidity: function testExecuteRevertZContractIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestExecuteRevertZContractIfSenderIsNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testExecuteRevertZContractIfSenderIsNotFungibleModule") +} + +// TestExecuteRevertZContractIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x31d09956. +// +// Solidity: function testExecuteRevertZContractIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestExecuteRevertZContractIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteRevertZContractIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteRevertZContractIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0x31d09956. +// +// Solidity: function testExecuteRevertZContractIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestExecuteRevertZContractIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteRevertZContractIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteZContract is a paid mutator transaction binding the contract method 0x720b9aa9. +// +// Solidity: function testExecuteZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestExecuteZContract(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testExecuteZContract") +} + +// TestExecuteZContract is a paid mutator transaction binding the contract method 0x720b9aa9. +// +// Solidity: function testExecuteZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestExecuteZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteZContract is a paid mutator transaction binding the contract method 0x720b9aa9. +// +// Solidity: function testExecuteZContract() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestExecuteZContract() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteZContract(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0xfc79171b. +// +// Solidity: function testExecuteZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestExecuteZContractFailsIfSenderIsNotFungibleModule(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testExecuteZContractFailsIfSenderIsNotFungibleModule") +} + +// TestExecuteZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0xfc79171b. +// +// Solidity: function testExecuteZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestExecuteZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestExecuteZContractFailsIfSenderIsNotFungibleModule is a paid mutator transaction binding the contract method 0xfc79171b. +// +// Solidity: function testExecuteZContractFailsIfSenderIsNotFungibleModule() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestExecuteZContractFailsIfSenderIsNotFungibleModule() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestExecuteZContractFailsIfSenderIsNotFungibleModule(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// GatewayZEVMOutboundTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestCallIterator struct { + Event *GatewayZEVMOutboundTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestCall represents a Call event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestCall struct { + Sender common.Address + Receiver []byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMOutboundTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestCallIterator{contract: _GatewayZEVMOutboundTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestCall, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestCall) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseCall(log types.Log) (*GatewayZEVMOutboundTestCall, error) { + event := new(GatewayZEVMOutboundTestCall) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestContextDataIterator is returned from FilterContextData and is used to iterate over the raw logs and unpacked data for ContextData events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestContextDataIterator struct { + Event *GatewayZEVMOutboundTestContextData // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestContextDataIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestContextData) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestContextData) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestContextDataIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestContextDataIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestContextData represents a ContextData event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestContextData struct { + Origin []byte + Sender common.Address + ChainID *big.Int + MsgSender common.Address + Message string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContextData is a free log retrieval operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterContextData(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestContextDataIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "ContextData") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestContextDataIterator{contract: _GatewayZEVMOutboundTest.contract, event: "ContextData", logs: logs, sub: sub}, nil +} + +// WatchContextData is a free log subscription operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchContextData(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestContextData) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "ContextData") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestContextData) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "ContextData", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContextData is a log parse operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseContextData(log types.Log) (*GatewayZEVMOutboundTestContextData, error) { + event := new(GatewayZEVMOutboundTestContextData) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "ContextData", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestContextDataRevertIterator is returned from FilterContextDataRevert and is used to iterate over the raw logs and unpacked data for ContextDataRevert events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestContextDataRevertIterator struct { + Event *GatewayZEVMOutboundTestContextDataRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestContextDataRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestContextDataRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestContextDataRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestContextDataRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestContextDataRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestContextDataRevert represents a ContextDataRevert event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestContextDataRevert struct { + Origin []byte + Sender common.Address + ChainID *big.Int + MsgSender common.Address + Message string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContextDataRevert is a free log retrieval operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterContextDataRevert(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestContextDataRevertIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "ContextDataRevert") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestContextDataRevertIterator{contract: _GatewayZEVMOutboundTest.contract, event: "ContextDataRevert", logs: logs, sub: sub}, nil +} + +// WatchContextDataRevert is a free log subscription operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchContextDataRevert(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestContextDataRevert) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "ContextDataRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestContextDataRevert) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContextDataRevert is a log parse operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseContextDataRevert(log types.Log) (*GatewayZEVMOutboundTestContextDataRevert, error) { + event := new(GatewayZEVMOutboundTestContextDataRevert) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestWithdrawalIterator struct { + Event *GatewayZEVMOutboundTestWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestWithdrawal represents a Withdrawal event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestWithdrawal struct { + From common.Address + Zrc20 common.Address + To []byte + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMOutboundTestWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestWithdrawalIterator{contract: _GatewayZEVMOutboundTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestWithdrawal) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMOutboundTestWithdrawal, error) { + event := new(GatewayZEVMOutboundTestWithdrawal) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogIterator struct { + Event *GatewayZEVMOutboundTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLog represents a Log event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLog) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLog(log types.Log) (*GatewayZEVMOutboundTestLog, error) { + event := new(GatewayZEVMOutboundTestLog) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogAddressIterator struct { + Event *GatewayZEVMOutboundTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogAddress represents a LogAddress event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogAddressIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogAddressIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogAddress) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogAddress(log types.Log) (*GatewayZEVMOutboundTestLogAddress, error) { + event := new(GatewayZEVMOutboundTestLogAddress) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArrayIterator struct { + Event *GatewayZEVMOutboundTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogArray represents a LogArray event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogArrayIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogArrayIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogArray) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogArray(log types.Log) (*GatewayZEVMOutboundTestLogArray, error) { + event := new(GatewayZEVMOutboundTestLogArray) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArray0Iterator struct { + Event *GatewayZEVMOutboundTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogArray0 represents a LogArray0 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogArray0Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogArray0) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogArray0(log types.Log) (*GatewayZEVMOutboundTestLogArray0, error) { + event := new(GatewayZEVMOutboundTestLogArray0) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArray1Iterator struct { + Event *GatewayZEVMOutboundTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogArray1 represents a LogArray1 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogArray1Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogArray1) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogArray1(log types.Log) (*GatewayZEVMOutboundTestLogArray1, error) { + event := new(GatewayZEVMOutboundTestLogArray1) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogBytesIterator struct { + Event *GatewayZEVMOutboundTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogBytes represents a LogBytes event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogBytesIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogBytesIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogBytes) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogBytes(log types.Log) (*GatewayZEVMOutboundTestLogBytes, error) { + event := new(GatewayZEVMOutboundTestLogBytes) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogBytes32Iterator struct { + Event *GatewayZEVMOutboundTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogBytes32 represents a LogBytes32 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogBytes32Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogBytes32) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogBytes32(log types.Log) (*GatewayZEVMOutboundTestLogBytes32, error) { + event := new(GatewayZEVMOutboundTestLogBytes32) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogIntIterator struct { + Event *GatewayZEVMOutboundTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogInt represents a LogInt event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogIntIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogIntIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogInt(log types.Log) (*GatewayZEVMOutboundTestLogInt, error) { + event := new(GatewayZEVMOutboundTestLogInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedAddressIterator struct { + Event *GatewayZEVMOutboundTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedAddressIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedAddress) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayZEVMOutboundTestLogNamedAddress, error) { + event := new(GatewayZEVMOutboundTestLogNamedAddress) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArrayIterator struct { + Event *GatewayZEVMOutboundTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedArray represents a LogNamedArray event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedArrayIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedArray) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayZEVMOutboundTestLogNamedArray, error) { + event := new(GatewayZEVMOutboundTestLogNamedArray) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArray0Iterator struct { + Event *GatewayZEVMOutboundTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedArray0Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedArray0) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayZEVMOutboundTestLogNamedArray0, error) { + event := new(GatewayZEVMOutboundTestLogNamedArray0) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArray1Iterator struct { + Event *GatewayZEVMOutboundTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedArray1Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedArray1) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayZEVMOutboundTestLogNamedArray1, error) { + event := new(GatewayZEVMOutboundTestLogNamedArray1) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedBytesIterator struct { + Event *GatewayZEVMOutboundTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedBytesIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedBytes) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayZEVMOutboundTestLogNamedBytes, error) { + event := new(GatewayZEVMOutboundTestLogNamedBytes) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedBytes32Iterator struct { + Event *GatewayZEVMOutboundTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedBytes32Iterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedBytes32) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayZEVMOutboundTestLogNamedBytes32, error) { + event := new(GatewayZEVMOutboundTestLogNamedBytes32) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedDecimalIntIterator struct { + Event *GatewayZEVMOutboundTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedDecimalIntIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedDecimalInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayZEVMOutboundTestLogNamedDecimalInt, error) { + event := new(GatewayZEVMOutboundTestLogNamedDecimalInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedDecimalUintIterator struct { + Event *GatewayZEVMOutboundTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedDecimalUintIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedDecimalUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayZEVMOutboundTestLogNamedDecimalUint, error) { + event := new(GatewayZEVMOutboundTestLogNamedDecimalUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedIntIterator struct { + Event *GatewayZEVMOutboundTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedInt represents a LogNamedInt event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedIntIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayZEVMOutboundTestLogNamedInt, error) { + event := new(GatewayZEVMOutboundTestLogNamedInt) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedStringIterator struct { + Event *GatewayZEVMOutboundTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedString represents a LogNamedString event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedStringIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedString) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedString(log types.Log) (*GatewayZEVMOutboundTestLogNamedString, error) { + event := new(GatewayZEVMOutboundTestLogNamedString) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedUintIterator struct { + Event *GatewayZEVMOutboundTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogNamedUint represents a LogNamedUint event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogNamedUintIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogNamedUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayZEVMOutboundTestLogNamedUint, error) { + event := new(GatewayZEVMOutboundTestLogNamedUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogStringIterator struct { + Event *GatewayZEVMOutboundTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogString represents a LogString event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogStringIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogStringIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogString) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogString(log types.Log) (*GatewayZEVMOutboundTestLogString, error) { + event := new(GatewayZEVMOutboundTestLogString) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogUintIterator struct { + Event *GatewayZEVMOutboundTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogUint represents a LogUint event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogUintIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogUintIterator{contract: _GatewayZEVMOutboundTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogUint(log types.Log) (*GatewayZEVMOutboundTestLogUint, error) { + event := new(GatewayZEVMOutboundTestLogUint) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMOutboundTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogsIterator struct { + Event *GatewayZEVMOutboundTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMOutboundTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMOutboundTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMOutboundTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMOutboundTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMOutboundTestLogs represents a Logs event raised by the GatewayZEVMOutboundTest contract. +type GatewayZEVMOutboundTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayZEVMOutboundTestLogsIterator, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayZEVMOutboundTestLogsIterator{contract: _GatewayZEVMOutboundTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMOutboundTestLogs) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseLogs(log types.Log) (*GatewayZEVMOutboundTestLogs, error) { + event := new(GatewayZEVMOutboundTestLogs) + if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ibeacon.sol/ibeacon.go b/v2/pkg/ibeacon.sol/ibeacon.go new file mode 100644 index 00000000..9c2b0850 --- /dev/null +++ b/v2/pkg/ibeacon.sol/ibeacon.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ibeacon + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IBeaconMetaData contains all meta data concerning the IBeacon contract. +var IBeaconMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"implementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"}]", +} + +// IBeaconABI is the input ABI used to generate the binding from. +// Deprecated: Use IBeaconMetaData.ABI instead. +var IBeaconABI = IBeaconMetaData.ABI + +// IBeacon is an auto generated Go binding around an Ethereum contract. +type IBeacon struct { + IBeaconCaller // Read-only binding to the contract + IBeaconTransactor // Write-only binding to the contract + IBeaconFilterer // Log filterer for contract events +} + +// IBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. +type IBeaconCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IBeaconTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IBeaconFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IBeaconSession struct { + Contract *IBeacon // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IBeaconCallerSession struct { + Contract *IBeaconCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IBeaconTransactorSession struct { + Contract *IBeaconTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. +type IBeaconRaw struct { + Contract *IBeacon // Generic contract binding to access the raw methods on +} + +// IBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IBeaconCallerRaw struct { + Contract *IBeaconCaller // Generic read-only contract binding to access the raw methods on +} + +// IBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IBeaconTransactorRaw struct { + Contract *IBeaconTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIBeacon creates a new instance of IBeacon, bound to a specific deployed contract. +func NewIBeacon(address common.Address, backend bind.ContractBackend) (*IBeacon, error) { + contract, err := bindIBeacon(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IBeacon{IBeaconCaller: IBeaconCaller{contract: contract}, IBeaconTransactor: IBeaconTransactor{contract: contract}, IBeaconFilterer: IBeaconFilterer{contract: contract}}, nil +} + +// NewIBeaconCaller creates a new read-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconCaller(address common.Address, caller bind.ContractCaller) (*IBeaconCaller, error) { + contract, err := bindIBeacon(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IBeaconCaller{contract: contract}, nil +} + +// NewIBeaconTransactor creates a new write-only instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconTransactor, error) { + contract, err := bindIBeacon(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IBeaconTransactor{contract: contract}, nil +} + +// NewIBeaconFilterer creates a new log filterer instance of IBeacon, bound to a specific deployed contract. +func NewIBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconFilterer, error) { + contract, err := bindIBeacon(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IBeaconFilterer{contract: contract}, nil +} + +// bindIBeacon binds a generic wrapper to an already deployed contract. +func bindIBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IBeaconMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.IBeaconCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.IBeaconTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IBeacon *IBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeacon.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IBeacon *IBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeacon *IBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeacon.Contract.contract.Transact(opts, method, params...) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IBeacon.contract.Call(opts, &out, "implementation") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_IBeacon *IBeaconCallerSession) Implementation() (common.Address, error) { + return _IBeacon.Contract.Implementation(&_IBeacon.CallOpts) +} diff --git a/v2/pkg/ierc165.sol/ierc165.go b/v2/pkg/ierc165.sol/ierc165.go new file mode 100644 index 00000000..9d6a8bca --- /dev/null +++ b/v2/pkg/ierc165.sol/ierc165.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc165 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC165MetaData contains all meta data concerning the IERC165 contract. +var IERC165MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"}]", +} + +// IERC165ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC165MetaData.ABI instead. +var IERC165ABI = IERC165MetaData.ABI + +// IERC165 is an auto generated Go binding around an Ethereum contract. +type IERC165 struct { + IERC165Caller // Read-only binding to the contract + IERC165Transactor // Write-only binding to the contract + IERC165Filterer // Log filterer for contract events +} + +// IERC165Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC165Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC165Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC165Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC165Session struct { + Contract *IERC165 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC165CallerSession struct { + Contract *IERC165Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC165TransactorSession struct { + Contract *IERC165Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC165Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC165Raw struct { + Contract *IERC165 // Generic contract binding to access the raw methods on +} + +// IERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC165CallerRaw struct { + Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC165TransactorRaw struct { + Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract. +func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) { + contract, err := bindIERC165(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil +} + +// NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract. +func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) { + contract, err := bindIERC165(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC165Caller{contract: contract}, nil +} + +// NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract. +func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) { + contract, err := bindIERC165(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC165Transactor{contract: contract}, nil +} + +// NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract. +func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) { + contract, err := bindIERC165(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC165Filterer{contract: contract}, nil +} + +// bindIERC165 binds a generic wrapper to an already deployed contract. +func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC165MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC165.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC165.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC165.Contract.contract.Transact(opts, method, params...) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) { + var out []interface{} + err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC165 *IERC165Session) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceID) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceID) +} diff --git a/v2/pkg/ierc1967.sol/ierc1967.go b/v2/pkg/ierc1967.sol/ierc1967.go new file mode 100644 index 00000000..e5ef5b3a --- /dev/null +++ b/v2/pkg/ierc1967.sol/ierc1967.go @@ -0,0 +1,604 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc1967 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC1967MetaData contains all meta data concerning the IERC1967 contract. +var IERC1967MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", +} + +// IERC1967ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC1967MetaData.ABI instead. +var IERC1967ABI = IERC1967MetaData.ABI + +// IERC1967 is an auto generated Go binding around an Ethereum contract. +type IERC1967 struct { + IERC1967Caller // Read-only binding to the contract + IERC1967Transactor // Write-only binding to the contract + IERC1967Filterer // Log filterer for contract events +} + +// IERC1967Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC1967Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC1967Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC1967Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC1967Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC1967Session struct { + Contract *IERC1967 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC1967CallerSession struct { + Contract *IERC1967Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC1967TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC1967TransactorSession struct { + Contract *IERC1967Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC1967Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC1967Raw struct { + Contract *IERC1967 // Generic contract binding to access the raw methods on +} + +// IERC1967CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC1967CallerRaw struct { + Contract *IERC1967Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC1967TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC1967TransactorRaw struct { + Contract *IERC1967Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC1967 creates a new instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967(address common.Address, backend bind.ContractBackend) (*IERC1967, error) { + contract, err := bindIERC1967(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC1967{IERC1967Caller: IERC1967Caller{contract: contract}, IERC1967Transactor: IERC1967Transactor{contract: contract}, IERC1967Filterer: IERC1967Filterer{contract: contract}}, nil +} + +// NewIERC1967Caller creates a new read-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Caller(address common.Address, caller bind.ContractCaller) (*IERC1967Caller, error) { + contract, err := bindIERC1967(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC1967Caller{contract: contract}, nil +} + +// NewIERC1967Transactor creates a new write-only instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC1967Transactor, error) { + contract, err := bindIERC1967(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC1967Transactor{contract: contract}, nil +} + +// NewIERC1967Filterer creates a new log filterer instance of IERC1967, bound to a specific deployed contract. +func NewIERC1967Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC1967Filterer, error) { + contract, err := bindIERC1967(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC1967Filterer{contract: contract}, nil +} + +// bindIERC1967 binds a generic wrapper to an already deployed contract. +func bindIERC1967(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC1967MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.IERC1967Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.IERC1967Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC1967 *IERC1967CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC1967.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC1967 *IERC1967TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC1967 *IERC1967TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC1967.Contract.contract.Transact(opts, method, params...) +} + +// IERC1967AdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the IERC1967 contract. +type IERC1967AdminChangedIterator struct { + Event *IERC1967AdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967AdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967AdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967AdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967AdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967AdminChanged represents a AdminChanged event raised by the IERC1967 contract. +type IERC1967AdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) FilterAdminChanged(opts *bind.FilterOpts) (*IERC1967AdminChangedIterator, error) { + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &IERC1967AdminChangedIterator{contract: _IERC1967.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *IERC1967AdminChanged) (event.Subscription, error) { + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_IERC1967 *IERC1967Filterer) ParseAdminChanged(log types.Log) (*IERC1967AdminChanged, error) { + event := new(IERC1967AdminChanged) + if err := _IERC1967.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967BeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the IERC1967 contract. +type IERC1967BeaconUpgradedIterator struct { + Event *IERC1967BeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967BeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967BeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967BeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967BeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967BeaconUpgraded represents a BeaconUpgraded event raised by the IERC1967 contract. +type IERC1967BeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*IERC1967BeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &IERC1967BeaconUpgradedIterator{contract: _IERC1967.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967BeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_IERC1967 *IERC1967Filterer) ParseBeaconUpgraded(log types.Log) (*IERC1967BeaconUpgraded, error) { + event := new(IERC1967BeaconUpgraded) + if err := _IERC1967.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC1967UpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the IERC1967 contract. +type IERC1967UpgradedIterator struct { + Event *IERC1967Upgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC1967UpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC1967Upgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC1967UpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC1967UpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC1967Upgraded represents a Upgraded event raised by the IERC1967 contract. +type IERC1967Upgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*IERC1967UpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &IERC1967UpgradedIterator{contract: _IERC1967.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *IERC1967Upgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _IERC1967.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_IERC1967 *IERC1967Filterer) ParseUpgraded(log types.Log) (*IERC1967Upgraded, error) { + event := new(IERC1967Upgraded) + if err := _IERC1967.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc20.sol/ierc20.go b/v2/pkg/ierc20.sol/ierc20.go new file mode 100644 index 00000000..e68adba1 --- /dev/null +++ b/v2/pkg/ierc20.sol/ierc20.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetaData contains all meta data concerning the IERC20 contract. +var IERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetaData.ABI instead. +var IERC20ABI = IERC20MetaData.ABI + +// IERC20 is an auto generated Go binding around an Ethereum contract. +type IERC20 struct { + IERC20Caller // Read-only binding to the contract + IERC20Transactor // Write-only binding to the contract + IERC20Filterer // Log filterer for contract events +} + +// IERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20Session struct { + Contract *IERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CallerSession struct { + Contract *IERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20TransactorSession struct { + Contract *IERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20Raw struct { + Contract *IERC20 // Generic contract binding to access the raw methods on +} + +// IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CallerRaw struct { + Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20TransactorRaw struct { + Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract. +func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) { + contract, err := bindIERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil +} + +// NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) { + contract, err := bindIERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20Caller{contract: contract}, nil +} + +// NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract. +func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) { + contract, err := bindIERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20Transactor{contract: contract}, nil +} + +// NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract. +func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) { + contract, err := bindIERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20Filterer{contract: contract}, nil +} + +// bindIERC20 binds a generic wrapper to an already deployed contract. +func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20Session) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20 *IERC20CallerSession) Decimals() (uint8, error) { + return _IERC20.Contract.Decimals(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20Session) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20 *IERC20CallerSession) Name() (string, error) { + return _IERC20.Contract.Name(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20Session) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20 *IERC20CallerSession) Symbol() (string, error) { + return _IERC20.Contract.Symbol(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) { + return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_IERC20 *IERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, from, to, amount) +} + +// IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract. +type IERC20ApprovalIterator struct { + Event *IERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Approval represents a Approval event raised by the IERC20 contract. +type IERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) { + event := new(IERC20Approval) + if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract. +type IERC20TransferIterator struct { + Event *IERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20Transfer represents a Transfer event raised by the IERC20 contract. +type IERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) { + event := new(IERC20Transfer) + if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go b/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go new file mode 100644 index 00000000..2d0991e1 --- /dev/null +++ b/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20custodynew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20CustodyNewErrorsMetaData contains all meta data concerning the IERC20CustodyNewErrors contract. +var IERC20CustodyNewErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", +} + +// IERC20CustodyNewErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyNewErrorsMetaData.ABI instead. +var IERC20CustodyNewErrorsABI = IERC20CustodyNewErrorsMetaData.ABI + +// IERC20CustodyNewErrors is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyNewErrors struct { + IERC20CustodyNewErrorsCaller // Read-only binding to the contract + IERC20CustodyNewErrorsTransactor // Write-only binding to the contract + IERC20CustodyNewErrorsFilterer // Log filterer for contract events +} + +// IERC20CustodyNewErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyNewErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20CustodyNewErrorsSession struct { + Contract *IERC20CustodyNewErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CustodyNewErrorsCallerSession struct { + Contract *IERC20CustodyNewErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20CustodyNewErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20CustodyNewErrorsTransactorSession struct { + Contract *IERC20CustodyNewErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsRaw struct { + Contract *IERC20CustodyNewErrors // Generic contract binding to access the raw methods on +} + +// IERC20CustodyNewErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsCallerRaw struct { + Contract *IERC20CustodyNewErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20CustodyNewErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyNewErrorsTransactorRaw struct { + Contract *IERC20CustodyNewErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20CustodyNewErrors creates a new instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewErrors, error) { + contract, err := bindIERC20CustodyNewErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrors{IERC20CustodyNewErrorsCaller: IERC20CustodyNewErrorsCaller{contract: contract}, IERC20CustodyNewErrorsTransactor: IERC20CustodyNewErrorsTransactor{contract: contract}, IERC20CustodyNewErrorsFilterer: IERC20CustodyNewErrorsFilterer{contract: contract}}, nil +} + +// NewIERC20CustodyNewErrorsCaller creates a new read-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewErrorsCaller, error) { + contract, err := bindIERC20CustodyNewErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsCaller{contract: contract}, nil +} + +// NewIERC20CustodyNewErrorsTransactor creates a new write-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewErrorsTransactor, error) { + contract, err := bindIERC20CustodyNewErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsTransactor{contract: contract}, nil +} + +// NewIERC20CustodyNewErrorsFilterer creates a new log filterer instance of IERC20CustodyNewErrors, bound to a specific deployed contract. +func NewIERC20CustodyNewErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewErrorsFilterer, error) { + contract, err := bindIERC20CustodyNewErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20CustodyNewErrorsFilterer{contract: contract}, nil +} + +// bindIERC20CustodyNewErrors binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyNewErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyNewErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go b/v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go new file mode 100644 index 00000000..752ed7ea --- /dev/null +++ b/v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go @@ -0,0 +1,645 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20custodynew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20CustodyNewEventsMetaData contains all meta data concerning the IERC20CustodyNewEvents contract. +var IERC20CustodyNewEventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IERC20CustodyNewEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyNewEventsMetaData.ABI instead. +var IERC20CustodyNewEventsABI = IERC20CustodyNewEventsMetaData.ABI + +// IERC20CustodyNewEvents is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyNewEvents struct { + IERC20CustodyNewEventsCaller // Read-only binding to the contract + IERC20CustodyNewEventsTransactor // Write-only binding to the contract + IERC20CustodyNewEventsFilterer // Log filterer for contract events +} + +// IERC20CustodyNewEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyNewEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyNewEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20CustodyNewEventsSession struct { + Contract *IERC20CustodyNewEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CustodyNewEventsCallerSession struct { + Contract *IERC20CustodyNewEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20CustodyNewEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20CustodyNewEventsTransactorSession struct { + Contract *IERC20CustodyNewEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyNewEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyNewEventsRaw struct { + Contract *IERC20CustodyNewEvents // Generic contract binding to access the raw methods on +} + +// IERC20CustodyNewEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsCallerRaw struct { + Contract *IERC20CustodyNewEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20CustodyNewEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyNewEventsTransactorRaw struct { + Contract *IERC20CustodyNewEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20CustodyNewEvents creates a new instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewEvents, error) { + contract, err := bindIERC20CustodyNewEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEvents{IERC20CustodyNewEventsCaller: IERC20CustodyNewEventsCaller{contract: contract}, IERC20CustodyNewEventsTransactor: IERC20CustodyNewEventsTransactor{contract: contract}, IERC20CustodyNewEventsFilterer: IERC20CustodyNewEventsFilterer{contract: contract}}, nil +} + +// NewIERC20CustodyNewEventsCaller creates a new read-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewEventsCaller, error) { + contract, err := bindIERC20CustodyNewEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsCaller{contract: contract}, nil +} + +// NewIERC20CustodyNewEventsTransactor creates a new write-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewEventsTransactor, error) { + contract, err := bindIERC20CustodyNewEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsTransactor{contract: contract}, nil +} + +// NewIERC20CustodyNewEventsFilterer creates a new log filterer instance of IERC20CustodyNewEvents, bound to a specific deployed contract. +func NewIERC20CustodyNewEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewEventsFilterer, error) { + contract, err := bindIERC20CustodyNewEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsFilterer{contract: contract}, nil +} + +// bindIERC20CustodyNewEvents binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyNewEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyNewEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyNewEvents.Contract.contract.Transact(opts, method, params...) +} + +// IERC20CustodyNewEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawIterator struct { + Event *IERC20CustodyNewEventsWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdraw represents a Withdraw event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdraw struct { + Token common.Address + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawIterator{contract: _IERC20CustodyNewEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdraw) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. +// +// Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyNewEventsWithdraw, error) { + event := new(IERC20CustodyNewEventsWithdraw) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20CustodyNewEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndCallIterator struct { + Event *IERC20CustodyNewEventsWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndCall struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndCallIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawAndCallIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdrawAndCall) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. +// +// Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyNewEventsWithdrawAndCall, error) { + event := new(IERC20CustodyNewEventsWithdrawAndCall) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20CustodyNewEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { + Event *IERC20CustodyNewEventsWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20CustodyNewEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyNewEvents contract. +type IERC20CustodyNewEventsWithdrawAndRevert struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndRevertIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IERC20CustodyNewEventsWithdrawAndRevertIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. +// +// Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyNewEventsWithdrawAndRevert, error) { + event := new(IERC20CustodyNewEventsWithdrawAndRevert) + if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc20metadata.sol/ierc20metadata.go b/v2/pkg/ierc20metadata.sol/ierc20metadata.go new file mode 100644 index 00000000..33e24b61 --- /dev/null +++ b/v2/pkg/ierc20metadata.sol/ierc20metadata.go @@ -0,0 +1,738 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20metadata + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20MetadataMetaData contains all meta data concerning the IERC20Metadata contract. +var IERC20MetadataMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC20MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20MetadataMetaData.ABI instead. +var IERC20MetadataABI = IERC20MetadataMetaData.ABI + +// IERC20Metadata is an auto generated Go binding around an Ethereum contract. +type IERC20Metadata struct { + IERC20MetadataCaller // Read-only binding to the contract + IERC20MetadataTransactor // Write-only binding to the contract + IERC20MetadataFilterer // Log filterer for contract events +} + +// IERC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20MetadataSession struct { + Contract *IERC20Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20MetadataCallerSession struct { + Contract *IERC20MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20MetadataTransactorSession struct { + Contract *IERC20MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20MetadataRaw struct { + Contract *IERC20Metadata // Generic contract binding to access the raw methods on +} + +// IERC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20MetadataCallerRaw struct { + Contract *IERC20MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20MetadataTransactorRaw struct { + Contract *IERC20MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Metadata creates a new instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20Metadata(address common.Address, backend bind.ContractBackend) (*IERC20Metadata, error) { + contract, err := bindIERC20Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Metadata{IERC20MetadataCaller: IERC20MetadataCaller{contract: contract}, IERC20MetadataTransactor: IERC20MetadataTransactor{contract: contract}, IERC20MetadataFilterer: IERC20MetadataFilterer{contract: contract}}, nil +} + +// NewIERC20MetadataCaller creates a new read-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC20MetadataCaller, error) { + contract, err := bindIERC20Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataCaller{contract: contract}, nil +} + +// NewIERC20MetadataTransactor creates a new write-only instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20MetadataTransactor, error) { + contract, err := bindIERC20Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20MetadataTransactor{contract: contract}, nil +} + +// NewIERC20MetadataFilterer creates a new log filterer instance of IERC20Metadata, bound to a specific deployed contract. +func NewIERC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20MetadataFilterer, error) { + contract, err := bindIERC20Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20MetadataFilterer{contract: contract}, nil +} + +// bindIERC20Metadata binds a generic wrapper to an already deployed contract. +func bindIERC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.IERC20MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.IERC20MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Metadata *IERC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Metadata *IERC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Metadata.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.Allowance(&_IERC20Metadata.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IERC20Metadata.Contract.BalanceOf(&_IERC20Metadata.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IERC20Metadata *IERC20MetadataCallerSession) Decimals() (uint8, error) { + return _IERC20Metadata.Contract.Decimals(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Name() (string, error) { + return _IERC20Metadata.Contract.Name(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IERC20Metadata *IERC20MetadataCallerSession) Symbol() (string, error) { + return _IERC20Metadata.Contract.Symbol(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC20Metadata.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC20Metadata *IERC20MetadataCallerSession) TotalSupply() (*big.Int, error) { + return _IERC20Metadata.Contract.TotalSupply(&_IERC20Metadata.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Approve(&_IERC20Metadata.TransactOpts, spender, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.Transfer(&_IERC20Metadata.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IERC20Metadata *IERC20MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IERC20Metadata.Contract.TransferFrom(&_IERC20Metadata.TransactOpts, from, to, value) +} + +// IERC20MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20Metadata contract. +type IERC20MetadataApprovalIterator struct { + Event *IERC20MetadataApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataApproval represents a Approval event raised by the IERC20Metadata contract. +type IERC20MetadataApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20MetadataApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IERC20MetadataApprovalIterator{contract: _IERC20Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20MetadataApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseApproval(log types.Log) (*IERC20MetadataApproval, error) { + event := new(IERC20MetadataApproval) + if err := _IERC20Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC20MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20Metadata contract. +type IERC20MetadataTransferIterator struct { + Event *IERC20MetadataTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC20MetadataTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC20MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC20MetadataTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC20MetadataTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC20MetadataTransfer represents a Transfer event raised by the IERC20Metadata contract. +type IERC20MetadataTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20MetadataTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IERC20MetadataTransferIterator{contract: _IERC20Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20MetadataTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IERC20Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IERC20Metadata *IERC20MetadataFilterer) ParseTransfer(log types.Log) (*IERC20MetadataTransfer, error) { + event := new(IERC20MetadataTransfer) + if err := _IERC20Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc20permit.sol/ierc20permit.go b/v2/pkg/ierc20permit.sol/ierc20permit.go new file mode 100644 index 00000000..8a118b42 --- /dev/null +++ b/v2/pkg/ierc20permit.sol/ierc20permit.go @@ -0,0 +1,264 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20permit + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20PermitMetaData contains all meta data concerning the IERC20Permit contract. +var IERC20PermitMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IERC20PermitABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20PermitMetaData.ABI instead. +var IERC20PermitABI = IERC20PermitMetaData.ABI + +// IERC20Permit is an auto generated Go binding around an Ethereum contract. +type IERC20Permit struct { + IERC20PermitCaller // Read-only binding to the contract + IERC20PermitTransactor // Write-only binding to the contract + IERC20PermitFilterer // Log filterer for contract events +} + +// IERC20PermitCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20PermitCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20PermitTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20PermitFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20PermitSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20PermitSession struct { + Contract *IERC20Permit // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20PermitCallerSession struct { + Contract *IERC20PermitCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20PermitTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20PermitTransactorSession struct { + Contract *IERC20PermitTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20PermitRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20PermitRaw struct { + Contract *IERC20Permit // Generic contract binding to access the raw methods on +} + +// IERC20PermitCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20PermitCallerRaw struct { + Contract *IERC20PermitCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20PermitTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20PermitTransactorRaw struct { + Contract *IERC20PermitTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20Permit creates a new instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20Permit(address common.Address, backend bind.ContractBackend) (*IERC20Permit, error) { + contract, err := bindIERC20Permit(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20Permit{IERC20PermitCaller: IERC20PermitCaller{contract: contract}, IERC20PermitTransactor: IERC20PermitTransactor{contract: contract}, IERC20PermitFilterer: IERC20PermitFilterer{contract: contract}}, nil +} + +// NewIERC20PermitCaller creates a new read-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitCaller(address common.Address, caller bind.ContractCaller) (*IERC20PermitCaller, error) { + contract, err := bindIERC20Permit(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20PermitCaller{contract: contract}, nil +} + +// NewIERC20PermitTransactor creates a new write-only instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20PermitTransactor, error) { + contract, err := bindIERC20Permit(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20PermitTransactor{contract: contract}, nil +} + +// NewIERC20PermitFilterer creates a new log filterer instance of IERC20Permit, bound to a specific deployed contract. +func NewIERC20PermitFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20PermitFilterer, error) { + contract, err := bindIERC20Permit(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20PermitFilterer{contract: contract}, nil +} + +// bindIERC20Permit binds a generic wrapper to an already deployed contract. +func bindIERC20Permit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20PermitMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.IERC20PermitCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.IERC20PermitTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20Permit *IERC20PermitCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20Permit.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20Permit *IERC20PermitTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20Permit.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_IERC20Permit *IERC20PermitCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _IERC20Permit.Contract.DOMAINSEPARATOR(&_IERC20Permit.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC20Permit.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_IERC20Permit *IERC20PermitCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _IERC20Permit.Contract.Nonces(&_IERC20Permit.CallOpts, owner) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_IERC20Permit *IERC20PermitTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _IERC20Permit.Contract.Permit(&_IERC20Permit.TransactOpts, owner, spender, value, deadline, v, r, s) +} diff --git a/v2/pkg/ierc721.sol/ierc721.go b/v2/pkg/ierc721.sol/ierc721.go new file mode 100644 index 00000000..4c0bc875 --- /dev/null +++ b/v2/pkg/ierc721.sol/ierc721.go @@ -0,0 +1,919 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc721 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC721MetaData contains all meta data concerning the IERC721 contract. +var IERC721MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApproved\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerOf\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ApprovalForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC721ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC721MetaData.ABI instead. +var IERC721ABI = IERC721MetaData.ABI + +// IERC721 is an auto generated Go binding around an Ethereum contract. +type IERC721 struct { + IERC721Caller // Read-only binding to the contract + IERC721Transactor // Write-only binding to the contract + IERC721Filterer // Log filterer for contract events +} + +// IERC721Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC721Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC721Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC721Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC721Session struct { + Contract *IERC721 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC721CallerSession struct { + Contract *IERC721Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC721TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC721TransactorSession struct { + Contract *IERC721Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC721Raw struct { + Contract *IERC721 // Generic contract binding to access the raw methods on +} + +// IERC721CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC721CallerRaw struct { + Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC721TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC721TransactorRaw struct { + Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract. +func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) { + contract, err := bindIERC721(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil +} + +// NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract. +func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) { + contract, err := bindIERC721(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC721Caller{contract: contract}, nil +} + +// NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract. +func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) { + contract, err := bindIERC721(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC721Transactor{contract: contract}, nil +} + +// NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract. +func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) { + contract, err := bindIERC721(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC721Filterer{contract: contract}, nil +} + +// bindIERC721 binds a generic wrapper to an already deployed contract. +func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC721MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC721.contract.Call(opts, &out, "balanceOf", _owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721 *IERC721Session) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, _owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721 *IERC721CallerSession) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, _owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721.contract.Call(opts, &out, "getApproved", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721Session) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, _tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721CallerSession) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, _tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, _owner common.Address, _operator common.Address) (bool, error) { + var out []interface{} + err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", _owner, _operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721 *IERC721Session) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, _owner, _operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721 *IERC721CallerSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, _owner, _operator) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721.contract.Call(opts, &out, "ownerOf", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721Session) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, _tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721 *IERC721CallerSession) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, _tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) { + var out []interface{} + err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721 *IERC721Session) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceID) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceID) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, _approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.contract.Transact(opts, "approve", _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Session) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.Approve(&_IERC721.TransactOpts, _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721TransactorSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.Approve(&_IERC721.TransactOpts, _approved, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.contract.Transact(opts, "safeTransferFrom", _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Session) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721.contract.Transact(opts, "safeTransferFrom0", _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721 *IERC721Session) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, _from, _to, _tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, _operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721.contract.Transact(opts, "setApprovalForAll", _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721 *IERC721Session) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, _operator, _approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.contract.Transact(opts, "transferFrom", _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721Session) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721 *IERC721TransactorSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, _from, _to, _tokenId) +} + +// IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract. +type IERC721ApprovalIterator struct { + Event *IERC721Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721Approval represents a Approval event raised by the IERC721 contract. +type IERC721Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (*IERC721ApprovalIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721Approval) + if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) { + event := new(IERC721Approval) + if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract. +type IERC721ApprovalForAllIterator struct { + Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract. +type IERC721ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, _owner []common.Address, _operator []common.Address) (*IERC721ApprovalForAllIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, _owner []common.Address, _operator []common.Address) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721ApprovalForAll) + if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) { + event := new(IERC721ApprovalForAll) + if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract. +type IERC721TransferIterator struct { + Event *IERC721Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721Transfer represents a Transfer event raised by the IERC721 contract. +type IERC721Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (*IERC721TransferIterator, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721Transfer) + if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) { + event := new(IERC721Transfer) + if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc721.sol/ierc721enumerable.go b/v2/pkg/ierc721.sol/ierc721enumerable.go new file mode 100644 index 00000000..a09ef18a --- /dev/null +++ b/v2/pkg/ierc721.sol/ierc721enumerable.go @@ -0,0 +1,1012 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc721 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC721EnumerableMetaData contains all meta data concerning the IERC721Enumerable contract. +var IERC721EnumerableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApproved\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerOf\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenByIndex\",\"inputs\":[{\"name\":\"_index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenOfOwnerByIndex\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ApprovalForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC721EnumerableABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC721EnumerableMetaData.ABI instead. +var IERC721EnumerableABI = IERC721EnumerableMetaData.ABI + +// IERC721Enumerable is an auto generated Go binding around an Ethereum contract. +type IERC721Enumerable struct { + IERC721EnumerableCaller // Read-only binding to the contract + IERC721EnumerableTransactor // Write-only binding to the contract + IERC721EnumerableFilterer // Log filterer for contract events +} + +// IERC721EnumerableCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC721EnumerableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721EnumerableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC721EnumerableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721EnumerableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC721EnumerableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721EnumerableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC721EnumerableSession struct { + Contract *IERC721Enumerable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721EnumerableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC721EnumerableCallerSession struct { + Contract *IERC721EnumerableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC721EnumerableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC721EnumerableTransactorSession struct { + Contract *IERC721EnumerableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721EnumerableRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC721EnumerableRaw struct { + Contract *IERC721Enumerable // Generic contract binding to access the raw methods on +} + +// IERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC721EnumerableCallerRaw struct { + Contract *IERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC721EnumerableTransactorRaw struct { + Contract *IERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC721Enumerable creates a new instance of IERC721Enumerable, bound to a specific deployed contract. +func NewIERC721Enumerable(address common.Address, backend bind.ContractBackend) (*IERC721Enumerable, error) { + contract, err := bindIERC721Enumerable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC721Enumerable{IERC721EnumerableCaller: IERC721EnumerableCaller{contract: contract}, IERC721EnumerableTransactor: IERC721EnumerableTransactor{contract: contract}, IERC721EnumerableFilterer: IERC721EnumerableFilterer{contract: contract}}, nil +} + +// NewIERC721EnumerableCaller creates a new read-only instance of IERC721Enumerable, bound to a specific deployed contract. +func NewIERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*IERC721EnumerableCaller, error) { + contract, err := bindIERC721Enumerable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC721EnumerableCaller{contract: contract}, nil +} + +// NewIERC721EnumerableTransactor creates a new write-only instance of IERC721Enumerable, bound to a specific deployed contract. +func NewIERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721EnumerableTransactor, error) { + contract, err := bindIERC721Enumerable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC721EnumerableTransactor{contract: contract}, nil +} + +// NewIERC721EnumerableFilterer creates a new log filterer instance of IERC721Enumerable, bound to a specific deployed contract. +func NewIERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721EnumerableFilterer, error) { + contract, err := bindIERC721Enumerable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC721EnumerableFilterer{contract: contract}, nil +} + +// bindIERC721Enumerable binds a generic wrapper to an already deployed contract. +func bindIERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC721EnumerableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Enumerable *IERC721EnumerableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Enumerable.Contract.IERC721EnumerableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Enumerable *IERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Enumerable *IERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Enumerable *IERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Enumerable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "balanceOf", _owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableSession) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, _owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, _owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "getApproved", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableSession) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, _tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, _tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, _owner common.Address, _operator common.Address) (bool, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", _owner, _operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, _owner, _operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, _owner, _operator) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "ownerOf", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableSession) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, _tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, _tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceID) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceID) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, _index *big.Int) (*big.Int, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", _index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableSession) TokenByIndex(_index *big.Int) (*big.Int, error) { + return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, _index) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenByIndex(_index *big.Int) (*big.Int, error) { + return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, _index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, _owner common.Address, _index *big.Int) (*big.Int, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", _owner, _index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableSession) TokenOfOwnerByIndex(_owner common.Address, _index *big.Int) (*big.Int, error) { + return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, _owner, _index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenOfOwnerByIndex(_owner common.Address, _index *big.Int) (*big.Int, error) { + return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, _owner, _index) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IERC721Enumerable.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableSession) TotalSupply() (*big.Int, error) { + return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IERC721Enumerable *IERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) { + return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, _approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.contract.Transact(opts, "approve", _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactorSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, _approved, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom", _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Enumerable *IERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, _operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Enumerable.contract.Transact(opts, "setApprovalForAll", _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Enumerable *IERC721EnumerableSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, _operator, _approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.contract.Transact(opts, "transferFrom", _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Enumerable *IERC721EnumerableTransactorSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, _from, _to, _tokenId) +} + +// IERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Enumerable contract. +type IERC721EnumerableApprovalIterator struct { + Event *IERC721EnumerableApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721EnumerableApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721EnumerableApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721EnumerableApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721EnumerableApproval represents a Approval event raised by the IERC721Enumerable contract. +type IERC721EnumerableApproval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (*IERC721EnumerableApprovalIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721EnumerableApprovalIterator{contract: _IERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApproval, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721EnumerableApproval) + if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApproval(log types.Log) (*IERC721EnumerableApproval, error) { + event := new(IERC721EnumerableApproval) + if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Enumerable contract. +type IERC721EnumerableApprovalForAllIterator struct { + Event *IERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721EnumerableApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721EnumerableApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721EnumerableApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the IERC721Enumerable contract. +type IERC721EnumerableApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, _owner []common.Address, _operator []common.Address) (*IERC721EnumerableApprovalForAllIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return &IERC721EnumerableApprovalForAllIterator{contract: _IERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApprovalForAll, _owner []common.Address, _operator []common.Address) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721EnumerableApprovalForAll) + if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*IERC721EnumerableApprovalForAll, error) { + event := new(IERC721EnumerableApprovalForAll) + if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Enumerable contract. +type IERC721EnumerableTransferIterator struct { + Event *IERC721EnumerableTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721EnumerableTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721EnumerableTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721EnumerableTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721EnumerableTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721EnumerableTransfer represents a Transfer event raised by the IERC721Enumerable contract. +type IERC721EnumerableTransfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (*IERC721EnumerableTransferIterator, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721EnumerableTransferIterator{contract: _IERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableTransfer, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721EnumerableTransfer) + if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseTransfer(log types.Log) (*IERC721EnumerableTransfer, error) { + event := new(IERC721EnumerableTransfer) + if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc721.sol/ierc721metadata.go b/v2/pkg/ierc721.sol/ierc721metadata.go new file mode 100644 index 00000000..de7732ac --- /dev/null +++ b/v2/pkg/ierc721.sol/ierc721metadata.go @@ -0,0 +1,1012 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc721 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC721MetadataMetaData contains all meta data concerning the IERC721Metadata contract. +var IERC721MetadataMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApproved\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"_name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerOf\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"_symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenURI\",\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ApprovalForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IERC721MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC721MetadataMetaData.ABI instead. +var IERC721MetadataABI = IERC721MetadataMetaData.ABI + +// IERC721Metadata is an auto generated Go binding around an Ethereum contract. +type IERC721Metadata struct { + IERC721MetadataCaller // Read-only binding to the contract + IERC721MetadataTransactor // Write-only binding to the contract + IERC721MetadataFilterer // Log filterer for contract events +} + +// IERC721MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC721MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC721MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC721MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC721MetadataSession struct { + Contract *IERC721Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC721MetadataCallerSession struct { + Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC721MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC721MetadataTransactorSession struct { + Contract *IERC721MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC721MetadataRaw struct { + Contract *IERC721Metadata // Generic contract binding to access the raw methods on +} + +// IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC721MetadataCallerRaw struct { + Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC721MetadataTransactorRaw struct { + Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract. +func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) { + contract, err := bindIERC721Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil +} + +// NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract. +func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) { + contract, err := bindIERC721Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC721MetadataCaller{contract: contract}, nil +} + +// NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract. +func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) { + contract, err := bindIERC721Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC721MetadataTransactor{contract: contract}, nil +} + +// NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract. +func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) { + contract, err := bindIERC721Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC721MetadataFilterer{contract: contract}, nil +} + +// bindIERC721Metadata binds a generic wrapper to an already deployed contract. +func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC721MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721Metadata.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", _owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, _owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address _owner) view returns(uint256) +func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) { + return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, _owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataSession) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, _tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(_tokenId *big.Int) (common.Address, error) { + return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, _tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, _owner common.Address, _operator common.Address) (bool, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", _owner, _operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, _owner, _operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool) +func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) { + return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, _owner, _operator) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string _name) +func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string _name) +func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) { + return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string _name) +func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) { + return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", _tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, _tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 _tokenId) view returns(address) +func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(_tokenId *big.Int) (common.Address, error) { + return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, _tokenId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceID) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceID) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceID) view returns(bool) +func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) { + return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceID) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string _symbol) +func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string _symbol) +func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) { + return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string _symbol) +func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) { + return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 _tokenId) view returns(string) +func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, _tokenId *big.Int) (string, error) { + var out []interface{} + err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", _tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 _tokenId) view returns(string) +func (_IERC721Metadata *IERC721MetadataSession) TokenURI(_tokenId *big.Int) (string, error) { + return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, _tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 _tokenId) view returns(string) +func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(_tokenId *big.Int) (string, error) { + return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, _approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.contract.Transact(opts, "approve", _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, _approved, _tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address _approved, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, _approved, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, _operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, _operator, _approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address _operator, bool _approved) returns() +func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) { + return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, _operator, _approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.contract.Transact(opts, "transferFrom", _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns() +func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) { + return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, _from, _to, _tokenId) +} + +// IERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Metadata contract. +type IERC721MetadataApprovalIterator struct { + Event *IERC721MetadataApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721MetadataApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721MetadataApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721MetadataApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract. +type IERC721MetadataApproval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721MetadataApproval) + if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) { + event := new(IERC721MetadataApproval) + if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Metadata contract. +type IERC721MetadataApprovalForAllIterator struct { + Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721MetadataApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721MetadataApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721MetadataApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract. +type IERC721MetadataApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, _owner []common.Address, _operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, _owner []common.Address, _operator []common.Address) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721MetadataApprovalForAll) + if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) { + event := new(IERC721MetadataApprovalForAll) + if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Metadata contract. +type IERC721MetadataTransferIterator struct { + Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IERC721MetadataTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IERC721MetadataTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IERC721MetadataTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IERC721MetadataTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract. +type IERC721MetadataTransfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IERC721MetadataTransfer) + if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) { + event := new(IERC721MetadataTransfer) + if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc721.sol/ierc721tokenreceiver.go b/v2/pkg/ierc721.sol/ierc721tokenreceiver.go new file mode 100644 index 00000000..e8e1800f --- /dev/null +++ b/v2/pkg/ierc721.sol/ierc721tokenreceiver.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc721 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC721TokenReceiverMetaData contains all meta data concerning the IERC721TokenReceiver contract. +var IERC721TokenReceiverMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"onERC721Received\",\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"nonpayable\"}]", +} + +// IERC721TokenReceiverABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC721TokenReceiverMetaData.ABI instead. +var IERC721TokenReceiverABI = IERC721TokenReceiverMetaData.ABI + +// IERC721TokenReceiver is an auto generated Go binding around an Ethereum contract. +type IERC721TokenReceiver struct { + IERC721TokenReceiverCaller // Read-only binding to the contract + IERC721TokenReceiverTransactor // Write-only binding to the contract + IERC721TokenReceiverFilterer // Log filterer for contract events +} + +// IERC721TokenReceiverCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC721TokenReceiverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721TokenReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC721TokenReceiverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721TokenReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC721TokenReceiverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC721TokenReceiverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC721TokenReceiverSession struct { + Contract *IERC721TokenReceiver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721TokenReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC721TokenReceiverCallerSession struct { + Contract *IERC721TokenReceiverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC721TokenReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC721TokenReceiverTransactorSession struct { + Contract *IERC721TokenReceiverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC721TokenReceiverRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC721TokenReceiverRaw struct { + Contract *IERC721TokenReceiver // Generic contract binding to access the raw methods on +} + +// IERC721TokenReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC721TokenReceiverCallerRaw struct { + Contract *IERC721TokenReceiverCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC721TokenReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC721TokenReceiverTransactorRaw struct { + Contract *IERC721TokenReceiverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC721TokenReceiver creates a new instance of IERC721TokenReceiver, bound to a specific deployed contract. +func NewIERC721TokenReceiver(address common.Address, backend bind.ContractBackend) (*IERC721TokenReceiver, error) { + contract, err := bindIERC721TokenReceiver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC721TokenReceiver{IERC721TokenReceiverCaller: IERC721TokenReceiverCaller{contract: contract}, IERC721TokenReceiverTransactor: IERC721TokenReceiverTransactor{contract: contract}, IERC721TokenReceiverFilterer: IERC721TokenReceiverFilterer{contract: contract}}, nil +} + +// NewIERC721TokenReceiverCaller creates a new read-only instance of IERC721TokenReceiver, bound to a specific deployed contract. +func NewIERC721TokenReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721TokenReceiverCaller, error) { + contract, err := bindIERC721TokenReceiver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC721TokenReceiverCaller{contract: contract}, nil +} + +// NewIERC721TokenReceiverTransactor creates a new write-only instance of IERC721TokenReceiver, bound to a specific deployed contract. +func NewIERC721TokenReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721TokenReceiverTransactor, error) { + contract, err := bindIERC721TokenReceiver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC721TokenReceiverTransactor{contract: contract}, nil +} + +// NewIERC721TokenReceiverFilterer creates a new log filterer instance of IERC721TokenReceiver, bound to a specific deployed contract. +func NewIERC721TokenReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721TokenReceiverFilterer, error) { + contract, err := bindIERC721TokenReceiver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC721TokenReceiverFilterer{contract: contract}, nil +} + +// bindIERC721TokenReceiver binds a generic wrapper to an already deployed contract. +func bindIERC721TokenReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC721TokenReceiverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721TokenReceiver *IERC721TokenReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721TokenReceiver.Contract.IERC721TokenReceiverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721TokenReceiver *IERC721TokenReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.IERC721TokenReceiverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721TokenReceiver *IERC721TokenReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.IERC721TokenReceiverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC721TokenReceiver *IERC721TokenReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC721TokenReceiver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC721TokenReceiver *IERC721TokenReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC721TokenReceiver *IERC721TokenReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.contract.Transact(opts, method, params...) +} + +// OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) returns(bytes4) +func (_IERC721TokenReceiver *IERC721TokenReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _operator common.Address, _from common.Address, _tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _IERC721TokenReceiver.contract.Transact(opts, "onERC721Received", _operator, _from, _tokenId, _data) +} + +// OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) returns(bytes4) +func (_IERC721TokenReceiver *IERC721TokenReceiverSession) OnERC721Received(_operator common.Address, _from common.Address, _tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.OnERC721Received(&_IERC721TokenReceiver.TransactOpts, _operator, _from, _tokenId, _data) +} + +// OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) returns(bytes4) +func (_IERC721TokenReceiver *IERC721TokenReceiverTransactorSession) OnERC721Received(_operator common.Address, _from common.Address, _tokenId *big.Int, _data []byte) (*types.Transaction, error) { + return _IERC721TokenReceiver.Contract.OnERC721Received(&_IERC721TokenReceiver.TransactOpts, _operator, _from, _tokenId, _data) +} diff --git a/v2/pkg/igatewayevm.sol/igatewayevm.go b/v2/pkg/igatewayevm.sol/igatewayevm.go new file mode 100644 index 00000000..84aee76f --- /dev/null +++ b/v2/pkg/igatewayevm.sol/igatewayevm.go @@ -0,0 +1,244 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IGatewayEVMMetaData contains all meta data concerning the IGatewayEVM contract. +var IGatewayEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IGatewayEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayEVMMetaData.ABI instead. +var IGatewayEVMABI = IGatewayEVMMetaData.ABI + +// IGatewayEVM is an auto generated Go binding around an Ethereum contract. +type IGatewayEVM struct { + IGatewayEVMCaller // Read-only binding to the contract + IGatewayEVMTransactor // Write-only binding to the contract + IGatewayEVMFilterer // Log filterer for contract events +} + +// IGatewayEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayEVMSession struct { + Contract *IGatewayEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayEVMCallerSession struct { + Contract *IGatewayEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayEVMTransactorSession struct { + Contract *IGatewayEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayEVMRaw struct { + Contract *IGatewayEVM // Generic contract binding to access the raw methods on +} + +// IGatewayEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayEVMCallerRaw struct { + Contract *IGatewayEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayEVMTransactorRaw struct { + Contract *IGatewayEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayEVM creates a new instance of IGatewayEVM, bound to a specific deployed contract. +func NewIGatewayEVM(address common.Address, backend bind.ContractBackend) (*IGatewayEVM, error) { + contract, err := bindIGatewayEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayEVM{IGatewayEVMCaller: IGatewayEVMCaller{contract: contract}, IGatewayEVMTransactor: IGatewayEVMTransactor{contract: contract}, IGatewayEVMFilterer: IGatewayEVMFilterer{contract: contract}}, nil +} + +// NewIGatewayEVMCaller creates a new read-only instance of IGatewayEVM, bound to a specific deployed contract. +func NewIGatewayEVMCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMCaller, error) { + contract, err := bindIGatewayEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMCaller{contract: contract}, nil +} + +// NewIGatewayEVMTransactor creates a new write-only instance of IGatewayEVM, bound to a specific deployed contract. +func NewIGatewayEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMTransactor, error) { + contract, err := bindIGatewayEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMTransactor{contract: contract}, nil +} + +// NewIGatewayEVMFilterer creates a new log filterer instance of IGatewayEVM, bound to a specific deployed contract. +func NewIGatewayEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMFilterer, error) { + contract, err := bindIGatewayEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayEVMFilterer{contract: contract}, nil +} + +// bindIGatewayEVM binds a generic wrapper to an already deployed contract. +func bindIGatewayEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVM *IGatewayEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVM.Contract.IGatewayEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVM *IGatewayEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVM.Contract.IGatewayEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVM *IGatewayEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVM.Contract.IGatewayEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVM *IGatewayEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVM *IGatewayEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVM *IGatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVM.Contract.contract.Transact(opts, method, params...) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_IGatewayEVM *IGatewayEVMTransactor) Execute(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "execute", destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_IGatewayEVM *IGatewayEVMSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Execute(&_IGatewayEVM.TransactOpts, destination, data) +} + +// Execute is a paid mutator transaction binding the contract method 0x1cff79cd. +// +// Solidity: function execute(address destination, bytes data) payable returns(bytes) +func (_IGatewayEVM *IGatewayEVMTransactorSession) Execute(destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Execute(&_IGatewayEVM.TransactOpts, destination, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMTransactor) ExecuteWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "executeWithERC20", token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.ExecuteWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) +} + +// ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. +// +// Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) ExecuteWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.ExecuteWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMTransactor) RevertWithERC20(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "revertWithERC20", token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.RevertWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) +} + +// RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. +// +// Solidity: function revertWithERC20(address token, address to, uint256 amount, bytes data) returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) RevertWithERC20(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.RevertWithERC20(&_IGatewayEVM.TransactOpts, token, to, amount, data) +} diff --git a/v2/pkg/igatewayevm.sol/igatewayevmerrors.go b/v2/pkg/igatewayevm.sol/igatewayevmerrors.go new file mode 100644 index 00000000..640eed08 --- /dev/null +++ b/v2/pkg/igatewayevm.sol/igatewayevmerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IGatewayEVMErrorsMetaData contains all meta data concerning the IGatewayEVMErrors contract. +var IGatewayEVMErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", +} + +// IGatewayEVMErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayEVMErrorsMetaData.ABI instead. +var IGatewayEVMErrorsABI = IGatewayEVMErrorsMetaData.ABI + +// IGatewayEVMErrors is an auto generated Go binding around an Ethereum contract. +type IGatewayEVMErrors struct { + IGatewayEVMErrorsCaller // Read-only binding to the contract + IGatewayEVMErrorsTransactor // Write-only binding to the contract + IGatewayEVMErrorsFilterer // Log filterer for contract events +} + +// IGatewayEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayEVMErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayEVMErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayEVMErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayEVMErrorsSession struct { + Contract *IGatewayEVMErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayEVMErrorsCallerSession struct { + Contract *IGatewayEVMErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayEVMErrorsTransactorSession struct { + Contract *IGatewayEVMErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayEVMErrorsRaw struct { + Contract *IGatewayEVMErrors // Generic contract binding to access the raw methods on +} + +// IGatewayEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayEVMErrorsCallerRaw struct { + Contract *IGatewayEVMErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayEVMErrorsTransactorRaw struct { + Contract *IGatewayEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayEVMErrors creates a new instance of IGatewayEVMErrors, bound to a specific deployed contract. +func NewIGatewayEVMErrors(address common.Address, backend bind.ContractBackend) (*IGatewayEVMErrors, error) { + contract, err := bindIGatewayEVMErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayEVMErrors{IGatewayEVMErrorsCaller: IGatewayEVMErrorsCaller{contract: contract}, IGatewayEVMErrorsTransactor: IGatewayEVMErrorsTransactor{contract: contract}, IGatewayEVMErrorsFilterer: IGatewayEVMErrorsFilterer{contract: contract}}, nil +} + +// NewIGatewayEVMErrorsCaller creates a new read-only instance of IGatewayEVMErrors, bound to a specific deployed contract. +func NewIGatewayEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMErrorsCaller, error) { + contract, err := bindIGatewayEVMErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMErrorsCaller{contract: contract}, nil +} + +// NewIGatewayEVMErrorsTransactor creates a new write-only instance of IGatewayEVMErrors, bound to a specific deployed contract. +func NewIGatewayEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMErrorsTransactor, error) { + contract, err := bindIGatewayEVMErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMErrorsTransactor{contract: contract}, nil +} + +// NewIGatewayEVMErrorsFilterer creates a new log filterer instance of IGatewayEVMErrors, bound to a specific deployed contract. +func NewIGatewayEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMErrorsFilterer, error) { + contract, err := bindIGatewayEVMErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayEVMErrorsFilterer{contract: contract}, nil +} + +// bindIGatewayEVMErrors binds a generic wrapper to an already deployed contract. +func bindIGatewayEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayEVMErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVMErrors *IGatewayEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVMErrors.Contract.IGatewayEVMErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVMErrors *IGatewayEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVMErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVMErrors *IGatewayEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVMErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVMErrors *IGatewayEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVMErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/igatewayevm.sol/igatewayevmevents.go b/v2/pkg/igatewayevm.sol/igatewayevmevents.go new file mode 100644 index 00000000..18d13c75 --- /dev/null +++ b/v2/pkg/igatewayevm.sol/igatewayevmevents.go @@ -0,0 +1,1093 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IGatewayEVMEventsMetaData contains all meta data concerning the IGatewayEVMEvents contract. +var IGatewayEVMEventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IGatewayEVMEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayEVMEventsMetaData.ABI instead. +var IGatewayEVMEventsABI = IGatewayEVMEventsMetaData.ABI + +// IGatewayEVMEvents is an auto generated Go binding around an Ethereum contract. +type IGatewayEVMEvents struct { + IGatewayEVMEventsCaller // Read-only binding to the contract + IGatewayEVMEventsTransactor // Write-only binding to the contract + IGatewayEVMEventsFilterer // Log filterer for contract events +} + +// IGatewayEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayEVMEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayEVMEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayEVMEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayEVMEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayEVMEventsSession struct { + Contract *IGatewayEVMEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayEVMEventsCallerSession struct { + Contract *IGatewayEVMEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayEVMEventsTransactorSession struct { + Contract *IGatewayEVMEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayEVMEventsRaw struct { + Contract *IGatewayEVMEvents // Generic contract binding to access the raw methods on +} + +// IGatewayEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayEVMEventsCallerRaw struct { + Contract *IGatewayEVMEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayEVMEventsTransactorRaw struct { + Contract *IGatewayEVMEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayEVMEvents creates a new instance of IGatewayEVMEvents, bound to a specific deployed contract. +func NewIGatewayEVMEvents(address common.Address, backend bind.ContractBackend) (*IGatewayEVMEvents, error) { + contract, err := bindIGatewayEVMEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayEVMEvents{IGatewayEVMEventsCaller: IGatewayEVMEventsCaller{contract: contract}, IGatewayEVMEventsTransactor: IGatewayEVMEventsTransactor{contract: contract}, IGatewayEVMEventsFilterer: IGatewayEVMEventsFilterer{contract: contract}}, nil +} + +// NewIGatewayEVMEventsCaller creates a new read-only instance of IGatewayEVMEvents, bound to a specific deployed contract. +func NewIGatewayEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayEVMEventsCaller, error) { + contract, err := bindIGatewayEVMEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsCaller{contract: contract}, nil +} + +// NewIGatewayEVMEventsTransactor creates a new write-only instance of IGatewayEVMEvents, bound to a specific deployed contract. +func NewIGatewayEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayEVMEventsTransactor, error) { + contract, err := bindIGatewayEVMEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsTransactor{contract: contract}, nil +} + +// NewIGatewayEVMEventsFilterer creates a new log filterer instance of IGatewayEVMEvents, bound to a specific deployed contract. +func NewIGatewayEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayEVMEventsFilterer, error) { + contract, err := bindIGatewayEVMEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsFilterer{contract: contract}, nil +} + +// bindIGatewayEVMEvents binds a generic wrapper to an already deployed contract. +func bindIGatewayEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayEVMEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVMEvents.Contract.IGatewayEVMEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVMEvents.Contract.IGatewayEVMEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVMEvents *IGatewayEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVMEvents.Contract.IGatewayEVMEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayEVMEvents *IGatewayEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayEVMEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayEVMEvents *IGatewayEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayEVMEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayEVMEvents *IGatewayEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayEVMEvents.Contract.contract.Transact(opts, method, params...) +} + +// IGatewayEVMEventsCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsCallIterator struct { + Event *IGatewayEVMEventsCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsCall represents a Call event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*IGatewayEVMEventsCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsCallIterator{contract: _IGatewayEVMEvents.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsCall) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseCall(log types.Log) (*IGatewayEVMEventsCall, error) { + event := new(IGatewayEVMEventsCall) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayEVMEventsDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsDepositIterator struct { + Event *IGatewayEVMEventsDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsDeposit represents a Deposit event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*IGatewayEVMEventsDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsDepositIterator{contract: _IGatewayEVMEvents.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsDeposit) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseDeposit(log types.Log) (*IGatewayEVMEventsDeposit, error) { + event := new(IGatewayEVMEventsDeposit) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayEVMEventsExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsExecutedIterator struct { + Event *IGatewayEVMEventsExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsExecuted represents a Executed event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*IGatewayEVMEventsExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsExecutedIterator{contract: _IGatewayEVMEvents.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsExecuted) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseExecuted(log types.Log) (*IGatewayEVMEventsExecuted, error) { + event := new(IGatewayEVMEventsExecuted) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayEVMEventsExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsExecutedWithERC20Iterator struct { + Event *IGatewayEVMEventsExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsExecutedWithERC20 represents a ExecutedWithERC20 event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IGatewayEVMEventsExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsExecutedWithERC20Iterator{contract: _IGatewayEVMEvents.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsExecutedWithERC20) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseExecutedWithERC20(log types.Log) (*IGatewayEVMEventsExecutedWithERC20, error) { + event := new(IGatewayEVMEventsExecutedWithERC20) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayEVMEventsRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsRevertedIterator struct { + Event *IGatewayEVMEventsReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsReverted represents a Reverted event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*IGatewayEVMEventsRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsRevertedIterator{contract: _IGatewayEVMEvents.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsReverted) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseReverted(log types.Log) (*IGatewayEVMEventsReverted, error) { + event := new(IGatewayEVMEventsReverted) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayEVMEventsRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsRevertedWithERC20Iterator struct { + Event *IGatewayEVMEventsRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayEVMEventsRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayEVMEventsRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayEVMEventsRevertedWithERC20 represents a RevertedWithERC20 event raised by the IGatewayEVMEvents contract. +type IGatewayEVMEventsRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IGatewayEVMEventsRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &IGatewayEVMEventsRevertedWithERC20Iterator{contract: _IGatewayEVMEvents.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *IGatewayEVMEventsRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IGatewayEVMEvents.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayEVMEventsRevertedWithERC20) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_IGatewayEVMEvents *IGatewayEVMEventsFilterer) ParseRevertedWithERC20(log types.Log) (*IGatewayEVMEventsRevertedWithERC20, error) { + event := new(IGatewayEVMEventsRevertedWithERC20) + if err := _IGatewayEVMEvents.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/igatewayevm.sol/revertable.go b/v2/pkg/igatewayevm.sol/revertable.go new file mode 100644 index 00000000..5d6caf30 --- /dev/null +++ b/v2/pkg/igatewayevm.sol/revertable.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// RevertableMetaData contains all meta data concerning the Revertable contract. +var RevertableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// RevertableABI is the input ABI used to generate the binding from. +// Deprecated: Use RevertableMetaData.ABI instead. +var RevertableABI = RevertableMetaData.ABI + +// Revertable is an auto generated Go binding around an Ethereum contract. +type Revertable struct { + RevertableCaller // Read-only binding to the contract + RevertableTransactor // Write-only binding to the contract + RevertableFilterer // Log filterer for contract events +} + +// RevertableCaller is an auto generated read-only Go binding around an Ethereum contract. +type RevertableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// RevertableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type RevertableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// RevertableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type RevertableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// RevertableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type RevertableSession struct { + Contract *Revertable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// RevertableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type RevertableCallerSession struct { + Contract *RevertableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// RevertableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type RevertableTransactorSession struct { + Contract *RevertableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// RevertableRaw is an auto generated low-level Go binding around an Ethereum contract. +type RevertableRaw struct { + Contract *Revertable // Generic contract binding to access the raw methods on +} + +// RevertableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type RevertableCallerRaw struct { + Contract *RevertableCaller // Generic read-only contract binding to access the raw methods on +} + +// RevertableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type RevertableTransactorRaw struct { + Contract *RevertableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewRevertable creates a new instance of Revertable, bound to a specific deployed contract. +func NewRevertable(address common.Address, backend bind.ContractBackend) (*Revertable, error) { + contract, err := bindRevertable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Revertable{RevertableCaller: RevertableCaller{contract: contract}, RevertableTransactor: RevertableTransactor{contract: contract}, RevertableFilterer: RevertableFilterer{contract: contract}}, nil +} + +// NewRevertableCaller creates a new read-only instance of Revertable, bound to a specific deployed contract. +func NewRevertableCaller(address common.Address, caller bind.ContractCaller) (*RevertableCaller, error) { + contract, err := bindRevertable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &RevertableCaller{contract: contract}, nil +} + +// NewRevertableTransactor creates a new write-only instance of Revertable, bound to a specific deployed contract. +func NewRevertableTransactor(address common.Address, transactor bind.ContractTransactor) (*RevertableTransactor, error) { + contract, err := bindRevertable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &RevertableTransactor{contract: contract}, nil +} + +// NewRevertableFilterer creates a new log filterer instance of Revertable, bound to a specific deployed contract. +func NewRevertableFilterer(address common.Address, filterer bind.ContractFilterer) (*RevertableFilterer, error) { + contract, err := bindRevertable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &RevertableFilterer{contract: contract}, nil +} + +// bindRevertable binds a generic wrapper to an already deployed contract. +func bindRevertable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := RevertableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Revertable *RevertableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Revertable.Contract.RevertableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Revertable *RevertableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Revertable.Contract.RevertableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Revertable *RevertableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Revertable.Contract.RevertableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Revertable *RevertableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Revertable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Revertable *RevertableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Revertable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Revertable *RevertableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Revertable.Contract.contract.Transact(opts, method, params...) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_Revertable *RevertableTransactor) OnRevert(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) { + return _Revertable.contract.Transact(opts, "onRevert", data) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_Revertable *RevertableSession) OnRevert(data []byte) (*types.Transaction, error) { + return _Revertable.Contract.OnRevert(&_Revertable.TransactOpts, data) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_Revertable *RevertableTransactorSession) OnRevert(data []byte) (*types.Transaction, error) { + return _Revertable.Contract.OnRevert(&_Revertable.TransactOpts, data) +} diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevm.go b/v2/pkg/igatewayzevm.sol/igatewayzevm.go new file mode 100644 index 00000000..9dbc628a --- /dev/null +++ b/v2/pkg/igatewayzevm.sol/igatewayzevm.go @@ -0,0 +1,314 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// IGatewayZEVMMetaData contains all meta data concerning the IGatewayZEVM contract. +var IGatewayZEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IGatewayZEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayZEVMMetaData.ABI instead. +var IGatewayZEVMABI = IGatewayZEVMMetaData.ABI + +// IGatewayZEVM is an auto generated Go binding around an Ethereum contract. +type IGatewayZEVM struct { + IGatewayZEVMCaller // Read-only binding to the contract + IGatewayZEVMTransactor // Write-only binding to the contract + IGatewayZEVMFilterer // Log filterer for contract events +} + +// IGatewayZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayZEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayZEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayZEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayZEVMSession struct { + Contract *IGatewayZEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayZEVMCallerSession struct { + Contract *IGatewayZEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayZEVMTransactorSession struct { + Contract *IGatewayZEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayZEVMRaw struct { + Contract *IGatewayZEVM // Generic contract binding to access the raw methods on +} + +// IGatewayZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayZEVMCallerRaw struct { + Contract *IGatewayZEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayZEVMTransactorRaw struct { + Contract *IGatewayZEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayZEVM creates a new instance of IGatewayZEVM, bound to a specific deployed contract. +func NewIGatewayZEVM(address common.Address, backend bind.ContractBackend) (*IGatewayZEVM, error) { + contract, err := bindIGatewayZEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayZEVM{IGatewayZEVMCaller: IGatewayZEVMCaller{contract: contract}, IGatewayZEVMTransactor: IGatewayZEVMTransactor{contract: contract}, IGatewayZEVMFilterer: IGatewayZEVMFilterer{contract: contract}}, nil +} + +// NewIGatewayZEVMCaller creates a new read-only instance of IGatewayZEVM, bound to a specific deployed contract. +func NewIGatewayZEVMCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMCaller, error) { + contract, err := bindIGatewayZEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMCaller{contract: contract}, nil +} + +// NewIGatewayZEVMTransactor creates a new write-only instance of IGatewayZEVM, bound to a specific deployed contract. +func NewIGatewayZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMTransactor, error) { + contract, err := bindIGatewayZEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMTransactor{contract: contract}, nil +} + +// NewIGatewayZEVMFilterer creates a new log filterer instance of IGatewayZEVM, bound to a specific deployed contract. +func NewIGatewayZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMFilterer, error) { + contract, err := bindIGatewayZEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayZEVMFilterer{contract: contract}, nil +} + +// bindIGatewayZEVM binds a generic wrapper to an already deployed contract. +func bindIGatewayZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayZEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVM *IGatewayZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVM.Contract.IGatewayZEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVM *IGatewayZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.IGatewayZEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVM *IGatewayZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.IGatewayZEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVM *IGatewayZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVM *IGatewayZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVM *IGatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.contract.Transact(opts, method, params...) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "call", receiver, message) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) +} + +// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// +// Solidity: function call(bytes receiver, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Deposit(opts *bind.TransactOpts, zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "deposit", zrc20, amount, target) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Deposit(&_IGatewayZEVM.TransactOpts, zrc20, amount, target) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address zrc20, uint256 amount, address target) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Deposit(zrc20 common.Address, amount *big.Int, target common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Deposit(&_IGatewayZEVM.TransactOpts, zrc20, amount, target) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Execute(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "execute", context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Execute(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. +// +// Solidity: function execute((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Execute(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Execute(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Withdraw(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "withdraw", receiver, amount, zrc20) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Withdraw(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x135390f9. +// +// Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Withdraw(receiver []byte, amount *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Withdraw(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "withdrawAndCall", receiver, amount, zrc20, message) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.WithdrawAndCall(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. +// +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.WithdrawAndCall(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +} diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go b/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go new file mode 100644 index 00000000..cb6c3e73 --- /dev/null +++ b/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IGatewayZEVMErrorsMetaData contains all meta data concerning the IGatewayZEVMErrors contract. +var IGatewayZEVMErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", +} + +// IGatewayZEVMErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayZEVMErrorsMetaData.ABI instead. +var IGatewayZEVMErrorsABI = IGatewayZEVMErrorsMetaData.ABI + +// IGatewayZEVMErrors is an auto generated Go binding around an Ethereum contract. +type IGatewayZEVMErrors struct { + IGatewayZEVMErrorsCaller // Read-only binding to the contract + IGatewayZEVMErrorsTransactor // Write-only binding to the contract + IGatewayZEVMErrorsFilterer // Log filterer for contract events +} + +// IGatewayZEVMErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayZEVMErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayZEVMErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayZEVMErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayZEVMErrorsSession struct { + Contract *IGatewayZEVMErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayZEVMErrorsCallerSession struct { + Contract *IGatewayZEVMErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayZEVMErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayZEVMErrorsTransactorSession struct { + Contract *IGatewayZEVMErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayZEVMErrorsRaw struct { + Contract *IGatewayZEVMErrors // Generic contract binding to access the raw methods on +} + +// IGatewayZEVMErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayZEVMErrorsCallerRaw struct { + Contract *IGatewayZEVMErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayZEVMErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayZEVMErrorsTransactorRaw struct { + Contract *IGatewayZEVMErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayZEVMErrors creates a new instance of IGatewayZEVMErrors, bound to a specific deployed contract. +func NewIGatewayZEVMErrors(address common.Address, backend bind.ContractBackend) (*IGatewayZEVMErrors, error) { + contract, err := bindIGatewayZEVMErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayZEVMErrors{IGatewayZEVMErrorsCaller: IGatewayZEVMErrorsCaller{contract: contract}, IGatewayZEVMErrorsTransactor: IGatewayZEVMErrorsTransactor{contract: contract}, IGatewayZEVMErrorsFilterer: IGatewayZEVMErrorsFilterer{contract: contract}}, nil +} + +// NewIGatewayZEVMErrorsCaller creates a new read-only instance of IGatewayZEVMErrors, bound to a specific deployed contract. +func NewIGatewayZEVMErrorsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMErrorsCaller, error) { + contract, err := bindIGatewayZEVMErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMErrorsCaller{contract: contract}, nil +} + +// NewIGatewayZEVMErrorsTransactor creates a new write-only instance of IGatewayZEVMErrors, bound to a specific deployed contract. +func NewIGatewayZEVMErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMErrorsTransactor, error) { + contract, err := bindIGatewayZEVMErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMErrorsTransactor{contract: contract}, nil +} + +// NewIGatewayZEVMErrorsFilterer creates a new log filterer instance of IGatewayZEVMErrors, bound to a specific deployed contract. +func NewIGatewayZEVMErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMErrorsFilterer, error) { + contract, err := bindIGatewayZEVMErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayZEVMErrorsFilterer{contract: contract}, nil +} + +// bindIGatewayZEVMErrors binds a generic wrapper to an already deployed contract. +func bindIGatewayZEVMErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayZEVMErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVMErrors.Contract.IGatewayZEVMErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVMErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVMErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVMErrors *IGatewayZEVMErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVMErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go b/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go new file mode 100644 index 00000000..5c6112f7 --- /dev/null +++ b/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go @@ -0,0 +1,477 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package igatewayzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IGatewayZEVMEventsMetaData contains all meta data concerning the IGatewayZEVMEvents contract. +var IGatewayZEVMEventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IGatewayZEVMEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IGatewayZEVMEventsMetaData.ABI instead. +var IGatewayZEVMEventsABI = IGatewayZEVMEventsMetaData.ABI + +// IGatewayZEVMEvents is an auto generated Go binding around an Ethereum contract. +type IGatewayZEVMEvents struct { + IGatewayZEVMEventsCaller // Read-only binding to the contract + IGatewayZEVMEventsTransactor // Write-only binding to the contract + IGatewayZEVMEventsFilterer // Log filterer for contract events +} + +// IGatewayZEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IGatewayZEVMEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IGatewayZEVMEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IGatewayZEVMEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IGatewayZEVMEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IGatewayZEVMEventsSession struct { + Contract *IGatewayZEVMEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IGatewayZEVMEventsCallerSession struct { + Contract *IGatewayZEVMEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IGatewayZEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IGatewayZEVMEventsTransactorSession struct { + Contract *IGatewayZEVMEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IGatewayZEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IGatewayZEVMEventsRaw struct { + Contract *IGatewayZEVMEvents // Generic contract binding to access the raw methods on +} + +// IGatewayZEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IGatewayZEVMEventsCallerRaw struct { + Contract *IGatewayZEVMEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IGatewayZEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IGatewayZEVMEventsTransactorRaw struct { + Contract *IGatewayZEVMEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIGatewayZEVMEvents creates a new instance of IGatewayZEVMEvents, bound to a specific deployed contract. +func NewIGatewayZEVMEvents(address common.Address, backend bind.ContractBackend) (*IGatewayZEVMEvents, error) { + contract, err := bindIGatewayZEVMEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IGatewayZEVMEvents{IGatewayZEVMEventsCaller: IGatewayZEVMEventsCaller{contract: contract}, IGatewayZEVMEventsTransactor: IGatewayZEVMEventsTransactor{contract: contract}, IGatewayZEVMEventsFilterer: IGatewayZEVMEventsFilterer{contract: contract}}, nil +} + +// NewIGatewayZEVMEventsCaller creates a new read-only instance of IGatewayZEVMEvents, bound to a specific deployed contract. +func NewIGatewayZEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IGatewayZEVMEventsCaller, error) { + contract, err := bindIGatewayZEVMEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMEventsCaller{contract: contract}, nil +} + +// NewIGatewayZEVMEventsTransactor creates a new write-only instance of IGatewayZEVMEvents, bound to a specific deployed contract. +func NewIGatewayZEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IGatewayZEVMEventsTransactor, error) { + contract, err := bindIGatewayZEVMEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IGatewayZEVMEventsTransactor{contract: contract}, nil +} + +// NewIGatewayZEVMEventsFilterer creates a new log filterer instance of IGatewayZEVMEvents, bound to a specific deployed contract. +func NewIGatewayZEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IGatewayZEVMEventsFilterer, error) { + contract, err := bindIGatewayZEVMEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IGatewayZEVMEventsFilterer{contract: contract}, nil +} + +// bindIGatewayZEVMEvents binds a generic wrapper to an already deployed contract. +func bindIGatewayZEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IGatewayZEVMEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVMEvents.Contract.IGatewayZEVMEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IGatewayZEVMEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IGatewayZEVMEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IGatewayZEVMEvents *IGatewayZEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IGatewayZEVMEvents.Contract.contract.Transact(opts, method, params...) +} + +// IGatewayZEVMEventsCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the IGatewayZEVMEvents contract. +type IGatewayZEVMEventsCallIterator struct { + Event *IGatewayZEVMEventsCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayZEVMEventsCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayZEVMEventsCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayZEVMEventsCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayZEVMEventsCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayZEVMEventsCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayZEVMEventsCall represents a Call event raised by the IGatewayZEVMEvents contract. +type IGatewayZEVMEventsCall struct { + Sender common.Address + Receiver []byte + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*IGatewayZEVMEventsCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return &IGatewayZEVMEventsCallIterator{contract: _IGatewayZEVMEvents.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsCall, sender []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Call", senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayZEVMEventsCall) + if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// +// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseCall(log types.Log) (*IGatewayZEVMEventsCall, error) { + event := new(IGatewayZEVMEventsCall) + if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IGatewayZEVMEventsWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IGatewayZEVMEvents contract. +type IGatewayZEVMEventsWithdrawalIterator struct { + Event *IGatewayZEVMEventsWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IGatewayZEVMEventsWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IGatewayZEVMEventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IGatewayZEVMEventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IGatewayZEVMEventsWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IGatewayZEVMEventsWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IGatewayZEVMEventsWithdrawal represents a Withdrawal event raised by the IGatewayZEVMEvents contract. +type IGatewayZEVMEventsWithdrawal struct { + From common.Address + Zrc20 common.Address + To []byte + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*IGatewayZEVMEventsWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &IGatewayZEVMEventsWithdrawalIterator{contract: _IGatewayZEVMEvents.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IGatewayZEVMEventsWithdrawal) + if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// +// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseWithdrawal(log types.Log) (*IGatewayZEVMEventsWithdrawal, error) { + event := new(IGatewayZEVMEventsWithdrawal) + if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/imulticall3.sol/imulticall3.go b/v2/pkg/imulticall3.sol/imulticall3.go new file mode 100644 index 00000000..186e69d1 --- /dev/null +++ b/v2/pkg/imulticall3.sol/imulticall3.go @@ -0,0 +1,644 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package imulticall3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IMulticall3Call is an auto generated low-level Go binding around an user-defined struct. +type IMulticall3Call struct { + Target common.Address + CallData []byte +} + +// IMulticall3Call3 is an auto generated low-level Go binding around an user-defined struct. +type IMulticall3Call3 struct { + Target common.Address + AllowFailure bool + CallData []byte +} + +// IMulticall3Call3Value is an auto generated low-level Go binding around an user-defined struct. +type IMulticall3Call3Value struct { + Target common.Address + AllowFailure bool + Value *big.Int + CallData []byte +} + +// IMulticall3Result is an auto generated low-level Go binding around an user-defined struct. +type IMulticall3Result struct { + Success bool + ReturnData []byte +} + +// IMulticall3MetaData contains all meta data concerning the IMulticall3 contract. +var IMulticall3MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"aggregate\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"returnData\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"aggregate3\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call3[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowFailure\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"returnData\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Result[]\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"aggregate3Value\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call3Value[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowFailure\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"returnData\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Result[]\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"blockAndAggregate\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"returnData\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Result[]\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[],\"outputs\":[{\"name\":\"basefee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"chainid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentBlockCoinbase\",\"inputs\":[],\"outputs\":[{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentBlockDifficulty\",\"inputs\":[],\"outputs\":[{\"name\":\"difficulty\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentBlockGasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"gaslimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentBlockTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEthBalance\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastBlockHash\",\"inputs\":[],\"outputs\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tryAggregate\",\"inputs\":[{\"name\":\"requireSuccess\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"returnData\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Result[]\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"tryBlockAndAggregate\",\"inputs\":[{\"name\":\"requireSuccess\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"returnData\",\"type\":\"tuple[]\",\"internalType\":\"structIMulticall3.Result[]\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"}]", +} + +// IMulticall3ABI is the input ABI used to generate the binding from. +// Deprecated: Use IMulticall3MetaData.ABI instead. +var IMulticall3ABI = IMulticall3MetaData.ABI + +// IMulticall3 is an auto generated Go binding around an Ethereum contract. +type IMulticall3 struct { + IMulticall3Caller // Read-only binding to the contract + IMulticall3Transactor // Write-only binding to the contract + IMulticall3Filterer // Log filterer for contract events +} + +// IMulticall3Caller is an auto generated read-only Go binding around an Ethereum contract. +type IMulticall3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMulticall3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IMulticall3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMulticall3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IMulticall3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IMulticall3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IMulticall3Session struct { + Contract *IMulticall3 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IMulticall3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IMulticall3CallerSession struct { + Contract *IMulticall3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IMulticall3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IMulticall3TransactorSession struct { + Contract *IMulticall3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IMulticall3Raw is an auto generated low-level Go binding around an Ethereum contract. +type IMulticall3Raw struct { + Contract *IMulticall3 // Generic contract binding to access the raw methods on +} + +// IMulticall3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IMulticall3CallerRaw struct { + Contract *IMulticall3Caller // Generic read-only contract binding to access the raw methods on +} + +// IMulticall3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IMulticall3TransactorRaw struct { + Contract *IMulticall3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIMulticall3 creates a new instance of IMulticall3, bound to a specific deployed contract. +func NewIMulticall3(address common.Address, backend bind.ContractBackend) (*IMulticall3, error) { + contract, err := bindIMulticall3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IMulticall3{IMulticall3Caller: IMulticall3Caller{contract: contract}, IMulticall3Transactor: IMulticall3Transactor{contract: contract}, IMulticall3Filterer: IMulticall3Filterer{contract: contract}}, nil +} + +// NewIMulticall3Caller creates a new read-only instance of IMulticall3, bound to a specific deployed contract. +func NewIMulticall3Caller(address common.Address, caller bind.ContractCaller) (*IMulticall3Caller, error) { + contract, err := bindIMulticall3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IMulticall3Caller{contract: contract}, nil +} + +// NewIMulticall3Transactor creates a new write-only instance of IMulticall3, bound to a specific deployed contract. +func NewIMulticall3Transactor(address common.Address, transactor bind.ContractTransactor) (*IMulticall3Transactor, error) { + contract, err := bindIMulticall3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IMulticall3Transactor{contract: contract}, nil +} + +// NewIMulticall3Filterer creates a new log filterer instance of IMulticall3, bound to a specific deployed contract. +func NewIMulticall3Filterer(address common.Address, filterer bind.ContractFilterer) (*IMulticall3Filterer, error) { + contract, err := bindIMulticall3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IMulticall3Filterer{contract: contract}, nil +} + +// bindIMulticall3 binds a generic wrapper to an already deployed contract. +func bindIMulticall3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IMulticall3MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IMulticall3 *IMulticall3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IMulticall3.Contract.IMulticall3Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IMulticall3 *IMulticall3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IMulticall3.Contract.IMulticall3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IMulticall3 *IMulticall3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IMulticall3.Contract.IMulticall3Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IMulticall3 *IMulticall3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IMulticall3.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IMulticall3 *IMulticall3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IMulticall3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IMulticall3 *IMulticall3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IMulticall3.Contract.contract.Transact(opts, method, params...) +} + +// GetBasefee is a free data retrieval call binding the contract method 0x3e64a696. +// +// Solidity: function getBasefee() view returns(uint256 basefee) +func (_IMulticall3 *IMulticall3Caller) GetBasefee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getBasefee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBasefee is a free data retrieval call binding the contract method 0x3e64a696. +// +// Solidity: function getBasefee() view returns(uint256 basefee) +func (_IMulticall3 *IMulticall3Session) GetBasefee() (*big.Int, error) { + return _IMulticall3.Contract.GetBasefee(&_IMulticall3.CallOpts) +} + +// GetBasefee is a free data retrieval call binding the contract method 0x3e64a696. +// +// Solidity: function getBasefee() view returns(uint256 basefee) +func (_IMulticall3 *IMulticall3CallerSession) GetBasefee() (*big.Int, error) { + return _IMulticall3.Contract.GetBasefee(&_IMulticall3.CallOpts) +} + +// GetBlockHash is a free data retrieval call binding the contract method 0xee82ac5e. +// +// Solidity: function getBlockHash(uint256 blockNumber) view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3Caller) GetBlockHash(opts *bind.CallOpts, blockNumber *big.Int) ([32]byte, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getBlockHash", blockNumber) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockHash is a free data retrieval call binding the contract method 0xee82ac5e. +// +// Solidity: function getBlockHash(uint256 blockNumber) view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3Session) GetBlockHash(blockNumber *big.Int) ([32]byte, error) { + return _IMulticall3.Contract.GetBlockHash(&_IMulticall3.CallOpts, blockNumber) +} + +// GetBlockHash is a free data retrieval call binding the contract method 0xee82ac5e. +// +// Solidity: function getBlockHash(uint256 blockNumber) view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3CallerSession) GetBlockHash(blockNumber *big.Int) ([32]byte, error) { + return _IMulticall3.Contract.GetBlockHash(&_IMulticall3.CallOpts, blockNumber) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 blockNumber) +func (_IMulticall3 *IMulticall3Caller) GetBlockNumber(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getBlockNumber") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 blockNumber) +func (_IMulticall3 *IMulticall3Session) GetBlockNumber() (*big.Int, error) { + return _IMulticall3.Contract.GetBlockNumber(&_IMulticall3.CallOpts) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 blockNumber) +func (_IMulticall3 *IMulticall3CallerSession) GetBlockNumber() (*big.Int, error) { + return _IMulticall3.Contract.GetBlockNumber(&_IMulticall3.CallOpts) +} + +// GetChainId is a free data retrieval call binding the contract method 0x3408e470. +// +// Solidity: function getChainId() view returns(uint256 chainid) +func (_IMulticall3 *IMulticall3Caller) GetChainId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getChainId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetChainId is a free data retrieval call binding the contract method 0x3408e470. +// +// Solidity: function getChainId() view returns(uint256 chainid) +func (_IMulticall3 *IMulticall3Session) GetChainId() (*big.Int, error) { + return _IMulticall3.Contract.GetChainId(&_IMulticall3.CallOpts) +} + +// GetChainId is a free data retrieval call binding the contract method 0x3408e470. +// +// Solidity: function getChainId() view returns(uint256 chainid) +func (_IMulticall3 *IMulticall3CallerSession) GetChainId() (*big.Int, error) { + return _IMulticall3.Contract.GetChainId(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockCoinbase is a free data retrieval call binding the contract method 0xa8b0574e. +// +// Solidity: function getCurrentBlockCoinbase() view returns(address coinbase) +func (_IMulticall3 *IMulticall3Caller) GetCurrentBlockCoinbase(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getCurrentBlockCoinbase") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetCurrentBlockCoinbase is a free data retrieval call binding the contract method 0xa8b0574e. +// +// Solidity: function getCurrentBlockCoinbase() view returns(address coinbase) +func (_IMulticall3 *IMulticall3Session) GetCurrentBlockCoinbase() (common.Address, error) { + return _IMulticall3.Contract.GetCurrentBlockCoinbase(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockCoinbase is a free data retrieval call binding the contract method 0xa8b0574e. +// +// Solidity: function getCurrentBlockCoinbase() view returns(address coinbase) +func (_IMulticall3 *IMulticall3CallerSession) GetCurrentBlockCoinbase() (common.Address, error) { + return _IMulticall3.Contract.GetCurrentBlockCoinbase(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockDifficulty is a free data retrieval call binding the contract method 0x72425d9d. +// +// Solidity: function getCurrentBlockDifficulty() view returns(uint256 difficulty) +func (_IMulticall3 *IMulticall3Caller) GetCurrentBlockDifficulty(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getCurrentBlockDifficulty") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetCurrentBlockDifficulty is a free data retrieval call binding the contract method 0x72425d9d. +// +// Solidity: function getCurrentBlockDifficulty() view returns(uint256 difficulty) +func (_IMulticall3 *IMulticall3Session) GetCurrentBlockDifficulty() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockDifficulty(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockDifficulty is a free data retrieval call binding the contract method 0x72425d9d. +// +// Solidity: function getCurrentBlockDifficulty() view returns(uint256 difficulty) +func (_IMulticall3 *IMulticall3CallerSession) GetCurrentBlockDifficulty() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockDifficulty(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockGasLimit is a free data retrieval call binding the contract method 0x86d516e8. +// +// Solidity: function getCurrentBlockGasLimit() view returns(uint256 gaslimit) +func (_IMulticall3 *IMulticall3Caller) GetCurrentBlockGasLimit(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getCurrentBlockGasLimit") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetCurrentBlockGasLimit is a free data retrieval call binding the contract method 0x86d516e8. +// +// Solidity: function getCurrentBlockGasLimit() view returns(uint256 gaslimit) +func (_IMulticall3 *IMulticall3Session) GetCurrentBlockGasLimit() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockGasLimit(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockGasLimit is a free data retrieval call binding the contract method 0x86d516e8. +// +// Solidity: function getCurrentBlockGasLimit() view returns(uint256 gaslimit) +func (_IMulticall3 *IMulticall3CallerSession) GetCurrentBlockGasLimit() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockGasLimit(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockTimestamp is a free data retrieval call binding the contract method 0x0f28c97d. +// +// Solidity: function getCurrentBlockTimestamp() view returns(uint256 timestamp) +func (_IMulticall3 *IMulticall3Caller) GetCurrentBlockTimestamp(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getCurrentBlockTimestamp") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetCurrentBlockTimestamp is a free data retrieval call binding the contract method 0x0f28c97d. +// +// Solidity: function getCurrentBlockTimestamp() view returns(uint256 timestamp) +func (_IMulticall3 *IMulticall3Session) GetCurrentBlockTimestamp() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockTimestamp(&_IMulticall3.CallOpts) +} + +// GetCurrentBlockTimestamp is a free data retrieval call binding the contract method 0x0f28c97d. +// +// Solidity: function getCurrentBlockTimestamp() view returns(uint256 timestamp) +func (_IMulticall3 *IMulticall3CallerSession) GetCurrentBlockTimestamp() (*big.Int, error) { + return _IMulticall3.Contract.GetCurrentBlockTimestamp(&_IMulticall3.CallOpts) +} + +// GetEthBalance is a free data retrieval call binding the contract method 0x4d2301cc. +// +// Solidity: function getEthBalance(address addr) view returns(uint256 balance) +func (_IMulticall3 *IMulticall3Caller) GetEthBalance(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getEthBalance", addr) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetEthBalance is a free data retrieval call binding the contract method 0x4d2301cc. +// +// Solidity: function getEthBalance(address addr) view returns(uint256 balance) +func (_IMulticall3 *IMulticall3Session) GetEthBalance(addr common.Address) (*big.Int, error) { + return _IMulticall3.Contract.GetEthBalance(&_IMulticall3.CallOpts, addr) +} + +// GetEthBalance is a free data retrieval call binding the contract method 0x4d2301cc. +// +// Solidity: function getEthBalance(address addr) view returns(uint256 balance) +func (_IMulticall3 *IMulticall3CallerSession) GetEthBalance(addr common.Address) (*big.Int, error) { + return _IMulticall3.Contract.GetEthBalance(&_IMulticall3.CallOpts, addr) +} + +// GetLastBlockHash is a free data retrieval call binding the contract method 0x27e86d6e. +// +// Solidity: function getLastBlockHash() view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3Caller) GetLastBlockHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IMulticall3.contract.Call(opts, &out, "getLastBlockHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetLastBlockHash is a free data retrieval call binding the contract method 0x27e86d6e. +// +// Solidity: function getLastBlockHash() view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3Session) GetLastBlockHash() ([32]byte, error) { + return _IMulticall3.Contract.GetLastBlockHash(&_IMulticall3.CallOpts) +} + +// GetLastBlockHash is a free data retrieval call binding the contract method 0x27e86d6e. +// +// Solidity: function getLastBlockHash() view returns(bytes32 blockHash) +func (_IMulticall3 *IMulticall3CallerSession) GetLastBlockHash() ([32]byte, error) { + return _IMulticall3.Contract.GetLastBlockHash(&_IMulticall3.CallOpts) +} + +// Aggregate is a paid mutator transaction binding the contract method 0x252dba42. +// +// Solidity: function aggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes[] returnData) +func (_IMulticall3 *IMulticall3Transactor) Aggregate(opts *bind.TransactOpts, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "aggregate", calls) +} + +// Aggregate is a paid mutator transaction binding the contract method 0x252dba42. +// +// Solidity: function aggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes[] returnData) +func (_IMulticall3 *IMulticall3Session) Aggregate(calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate(&_IMulticall3.TransactOpts, calls) +} + +// Aggregate is a paid mutator transaction binding the contract method 0x252dba42. +// +// Solidity: function aggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) Aggregate(calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate(&_IMulticall3.TransactOpts, calls) +} + +// Aggregate3 is a paid mutator transaction binding the contract method 0x82ad56cb. +// +// Solidity: function aggregate3((address,bool,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Transactor) Aggregate3(opts *bind.TransactOpts, calls []IMulticall3Call3) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "aggregate3", calls) +} + +// Aggregate3 is a paid mutator transaction binding the contract method 0x82ad56cb. +// +// Solidity: function aggregate3((address,bool,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Session) Aggregate3(calls []IMulticall3Call3) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate3(&_IMulticall3.TransactOpts, calls) +} + +// Aggregate3 is a paid mutator transaction binding the contract method 0x82ad56cb. +// +// Solidity: function aggregate3((address,bool,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) Aggregate3(calls []IMulticall3Call3) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate3(&_IMulticall3.TransactOpts, calls) +} + +// Aggregate3Value is a paid mutator transaction binding the contract method 0x174dea71. +// +// Solidity: function aggregate3Value((address,bool,uint256,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Transactor) Aggregate3Value(opts *bind.TransactOpts, calls []IMulticall3Call3Value) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "aggregate3Value", calls) +} + +// Aggregate3Value is a paid mutator transaction binding the contract method 0x174dea71. +// +// Solidity: function aggregate3Value((address,bool,uint256,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Session) Aggregate3Value(calls []IMulticall3Call3Value) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate3Value(&_IMulticall3.TransactOpts, calls) +} + +// Aggregate3Value is a paid mutator transaction binding the contract method 0x174dea71. +// +// Solidity: function aggregate3Value((address,bool,uint256,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) Aggregate3Value(calls []IMulticall3Call3Value) (*types.Transaction, error) { + return _IMulticall3.Contract.Aggregate3Value(&_IMulticall3.TransactOpts, calls) +} + +// BlockAndAggregate is a paid mutator transaction binding the contract method 0xc3077fa9. +// +// Solidity: function blockAndAggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Transactor) BlockAndAggregate(opts *bind.TransactOpts, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "blockAndAggregate", calls) +} + +// BlockAndAggregate is a paid mutator transaction binding the contract method 0xc3077fa9. +// +// Solidity: function blockAndAggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Session) BlockAndAggregate(calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.BlockAndAggregate(&_IMulticall3.TransactOpts, calls) +} + +// BlockAndAggregate is a paid mutator transaction binding the contract method 0xc3077fa9. +// +// Solidity: function blockAndAggregate((address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) BlockAndAggregate(calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.BlockAndAggregate(&_IMulticall3.TransactOpts, calls) +} + +// TryAggregate is a paid mutator transaction binding the contract method 0xbce38bd7. +// +// Solidity: function tryAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Transactor) TryAggregate(opts *bind.TransactOpts, requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "tryAggregate", requireSuccess, calls) +} + +// TryAggregate is a paid mutator transaction binding the contract method 0xbce38bd7. +// +// Solidity: function tryAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Session) TryAggregate(requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.TryAggregate(&_IMulticall3.TransactOpts, requireSuccess, calls) +} + +// TryAggregate is a paid mutator transaction binding the contract method 0xbce38bd7. +// +// Solidity: function tryAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns((bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) TryAggregate(requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.TryAggregate(&_IMulticall3.TransactOpts, requireSuccess, calls) +} + +// TryBlockAndAggregate is a paid mutator transaction binding the contract method 0x399542e9. +// +// Solidity: function tryBlockAndAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Transactor) TryBlockAndAggregate(opts *bind.TransactOpts, requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.contract.Transact(opts, "tryBlockAndAggregate", requireSuccess, calls) +} + +// TryBlockAndAggregate is a paid mutator transaction binding the contract method 0x399542e9. +// +// Solidity: function tryBlockAndAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3Session) TryBlockAndAggregate(requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.TryBlockAndAggregate(&_IMulticall3.TransactOpts, requireSuccess, calls) +} + +// TryBlockAndAggregate is a paid mutator transaction binding the contract method 0x399542e9. +// +// Solidity: function tryBlockAndAggregate(bool requireSuccess, (address,bytes)[] calls) payable returns(uint256 blockNumber, bytes32 blockHash, (bool,bytes)[] returnData) +func (_IMulticall3 *IMulticall3TransactorSession) TryBlockAndAggregate(requireSuccess bool, calls []IMulticall3Call) (*types.Transaction, error) { + return _IMulticall3.Contract.TryBlockAndAggregate(&_IMulticall3.TransactOpts, requireSuccess, calls) +} diff --git a/v2/pkg/initializable.sol/initializable.go b/v2/pkg/initializable.sol/initializable.go new file mode 100644 index 00000000..dd76f00b --- /dev/null +++ b/v2/pkg/initializable.sol/initializable.go @@ -0,0 +1,315 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package initializable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// InitializableMetaData contains all meta data concerning the Initializable contract. +var InitializableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]}]", +} + +// InitializableABI is the input ABI used to generate the binding from. +// Deprecated: Use InitializableMetaData.ABI instead. +var InitializableABI = InitializableMetaData.ABI + +// Initializable is an auto generated Go binding around an Ethereum contract. +type Initializable struct { + InitializableCaller // Read-only binding to the contract + InitializableTransactor // Write-only binding to the contract + InitializableFilterer // Log filterer for contract events +} + +// InitializableCaller is an auto generated read-only Go binding around an Ethereum contract. +type InitializableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type InitializableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type InitializableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// InitializableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type InitializableSession struct { + Contract *Initializable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type InitializableCallerSession struct { + Contract *InitializableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// InitializableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type InitializableTransactorSession struct { + Contract *InitializableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// InitializableRaw is an auto generated low-level Go binding around an Ethereum contract. +type InitializableRaw struct { + Contract *Initializable // Generic contract binding to access the raw methods on +} + +// InitializableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type InitializableCallerRaw struct { + Contract *InitializableCaller // Generic read-only contract binding to access the raw methods on +} + +// InitializableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type InitializableTransactorRaw struct { + Contract *InitializableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewInitializable creates a new instance of Initializable, bound to a specific deployed contract. +func NewInitializable(address common.Address, backend bind.ContractBackend) (*Initializable, error) { + contract, err := bindInitializable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Initializable{InitializableCaller: InitializableCaller{contract: contract}, InitializableTransactor: InitializableTransactor{contract: contract}, InitializableFilterer: InitializableFilterer{contract: contract}}, nil +} + +// NewInitializableCaller creates a new read-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableCaller(address common.Address, caller bind.ContractCaller) (*InitializableCaller, error) { + contract, err := bindInitializable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &InitializableCaller{contract: contract}, nil +} + +// NewInitializableTransactor creates a new write-only instance of Initializable, bound to a specific deployed contract. +func NewInitializableTransactor(address common.Address, transactor bind.ContractTransactor) (*InitializableTransactor, error) { + contract, err := bindInitializable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &InitializableTransactor{contract: contract}, nil +} + +// NewInitializableFilterer creates a new log filterer instance of Initializable, bound to a specific deployed contract. +func NewInitializableFilterer(address common.Address, filterer bind.ContractFilterer) (*InitializableFilterer, error) { + contract, err := bindInitializable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &InitializableFilterer{contract: contract}, nil +} + +// bindInitializable binds a generic wrapper to an already deployed contract. +func bindInitializable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := InitializableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.InitializableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.InitializableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Initializable *InitializableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Initializable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Initializable *InitializableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Initializable *InitializableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Initializable.Contract.contract.Transact(opts, method, params...) +} + +// InitializableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Initializable contract. +type InitializableInitializedIterator struct { + Event *InitializableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *InitializableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(InitializableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *InitializableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *InitializableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// InitializableInitialized represents a Initialized event raised by the Initializable contract. +type InitializableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) FilterInitialized(opts *bind.FilterOpts) (*InitializableInitializedIterator, error) { + + logs, sub, err := _Initializable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &InitializableInitializedIterator{contract: _Initializable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *InitializableInitialized) (event.Subscription, error) { + + logs, sub, err := _Initializable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Initializable *InitializableFilterer) ParseInitialized(log types.Log) (*InitializableInitialized, error) { + event := new(InitializableInitialized) + if err := _Initializable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/iproxyadmin.sol/iproxyadmin.go b/v2/pkg/iproxyadmin.sol/iproxyadmin.go new file mode 100644 index 00000000..bc71f79d --- /dev/null +++ b/v2/pkg/iproxyadmin.sol/iproxyadmin.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iproxyadmin + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IProxyAdminMetaData contains all meta data concerning the IProxyAdmin contract. +var IProxyAdminMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"upgrade\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"}]", +} + +// IProxyAdminABI is the input ABI used to generate the binding from. +// Deprecated: Use IProxyAdminMetaData.ABI instead. +var IProxyAdminABI = IProxyAdminMetaData.ABI + +// IProxyAdmin is an auto generated Go binding around an Ethereum contract. +type IProxyAdmin struct { + IProxyAdminCaller // Read-only binding to the contract + IProxyAdminTransactor // Write-only binding to the contract + IProxyAdminFilterer // Log filterer for contract events +} + +// IProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. +type IProxyAdminCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IProxyAdminTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IProxyAdminFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IProxyAdminSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IProxyAdminSession struct { + Contract *IProxyAdmin // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IProxyAdminCallerSession struct { + Contract *IProxyAdminCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IProxyAdminTransactorSession struct { + Contract *IProxyAdminTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. +type IProxyAdminRaw struct { + Contract *IProxyAdmin // Generic contract binding to access the raw methods on +} + +// IProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IProxyAdminCallerRaw struct { + Contract *IProxyAdminCaller // Generic read-only contract binding to access the raw methods on +} + +// IProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IProxyAdminTransactorRaw struct { + Contract *IProxyAdminTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIProxyAdmin creates a new instance of IProxyAdmin, bound to a specific deployed contract. +func NewIProxyAdmin(address common.Address, backend bind.ContractBackend) (*IProxyAdmin, error) { + contract, err := bindIProxyAdmin(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IProxyAdmin{IProxyAdminCaller: IProxyAdminCaller{contract: contract}, IProxyAdminTransactor: IProxyAdminTransactor{contract: contract}, IProxyAdminFilterer: IProxyAdminFilterer{contract: contract}}, nil +} + +// NewIProxyAdminCaller creates a new read-only instance of IProxyAdmin, bound to a specific deployed contract. +func NewIProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*IProxyAdminCaller, error) { + contract, err := bindIProxyAdmin(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IProxyAdminCaller{contract: contract}, nil +} + +// NewIProxyAdminTransactor creates a new write-only instance of IProxyAdmin, bound to a specific deployed contract. +func NewIProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*IProxyAdminTransactor, error) { + contract, err := bindIProxyAdmin(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IProxyAdminTransactor{contract: contract}, nil +} + +// NewIProxyAdminFilterer creates a new log filterer instance of IProxyAdmin, bound to a specific deployed contract. +func NewIProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*IProxyAdminFilterer, error) { + contract, err := bindIProxyAdmin(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IProxyAdminFilterer{contract: contract}, nil +} + +// bindIProxyAdmin binds a generic wrapper to an already deployed contract. +func bindIProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IProxyAdminMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IProxyAdmin *IProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IProxyAdmin.Contract.IProxyAdminCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IProxyAdmin *IProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IProxyAdmin.Contract.IProxyAdminTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IProxyAdmin *IProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IProxyAdmin.Contract.IProxyAdminTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IProxyAdmin *IProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IProxyAdmin.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IProxyAdmin *IProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IProxyAdmin.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IProxyAdmin *IProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IProxyAdmin.Contract.contract.Transact(opts, method, params...) +} + +// Upgrade is a paid mutator transaction binding the contract method 0x99a88ec4. +// +// Solidity: function upgrade(address , address ) returns() +func (_IProxyAdmin *IProxyAdminTransactor) Upgrade(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IProxyAdmin.contract.Transact(opts, "upgrade", arg0, arg1) +} + +// Upgrade is a paid mutator transaction binding the contract method 0x99a88ec4. +// +// Solidity: function upgrade(address , address ) returns() +func (_IProxyAdmin *IProxyAdminSession) Upgrade(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IProxyAdmin.Contract.Upgrade(&_IProxyAdmin.TransactOpts, arg0, arg1) +} + +// Upgrade is a paid mutator transaction binding the contract method 0x99a88ec4. +// +// Solidity: function upgrade(address , address ) returns() +func (_IProxyAdmin *IProxyAdminTransactorSession) Upgrade(arg0 common.Address, arg1 common.Address) (*types.Transaction, error) { + return _IProxyAdmin.Contract.Upgrade(&_IProxyAdmin.TransactOpts, arg0, arg1) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address , address , bytes ) payable returns() +func (_IProxyAdmin *IProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address, arg2 []byte) (*types.Transaction, error) { + return _IProxyAdmin.contract.Transact(opts, "upgradeAndCall", arg0, arg1, arg2) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address , address , bytes ) payable returns() +func (_IProxyAdmin *IProxyAdminSession) UpgradeAndCall(arg0 common.Address, arg1 common.Address, arg2 []byte) (*types.Transaction, error) { + return _IProxyAdmin.Contract.UpgradeAndCall(&_IProxyAdmin.TransactOpts, arg0, arg1, arg2) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address , address , bytes ) payable returns() +func (_IProxyAdmin *IProxyAdminTransactorSession) UpgradeAndCall(arg0 common.Address, arg1 common.Address, arg2 []byte) (*types.Transaction, error) { + return _IProxyAdmin.Contract.UpgradeAndCall(&_IProxyAdmin.TransactOpts, arg0, arg1, arg2) +} diff --git a/v2/pkg/ireceiverevm.sol/ireceiverevmevents.go b/v2/pkg/ireceiverevm.sol/ireceiverevmevents.go new file mode 100644 index 00000000..decd72f2 --- /dev/null +++ b/v2/pkg/ireceiverevm.sol/ireceiverevmevents.go @@ -0,0 +1,862 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ireceiverevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IReceiverEVMEventsMetaData contains all meta data concerning the IReceiverEVMEvents contract. +var IReceiverEVMEventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IReceiverEVMEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IReceiverEVMEventsMetaData.ABI instead. +var IReceiverEVMEventsABI = IReceiverEVMEventsMetaData.ABI + +// IReceiverEVMEvents is an auto generated Go binding around an Ethereum contract. +type IReceiverEVMEvents struct { + IReceiverEVMEventsCaller // Read-only binding to the contract + IReceiverEVMEventsTransactor // Write-only binding to the contract + IReceiverEVMEventsFilterer // Log filterer for contract events +} + +// IReceiverEVMEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IReceiverEVMEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IReceiverEVMEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IReceiverEVMEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IReceiverEVMEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IReceiverEVMEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IReceiverEVMEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IReceiverEVMEventsSession struct { + Contract *IReceiverEVMEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IReceiverEVMEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IReceiverEVMEventsCallerSession struct { + Contract *IReceiverEVMEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IReceiverEVMEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IReceiverEVMEventsTransactorSession struct { + Contract *IReceiverEVMEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IReceiverEVMEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IReceiverEVMEventsRaw struct { + Contract *IReceiverEVMEvents // Generic contract binding to access the raw methods on +} + +// IReceiverEVMEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IReceiverEVMEventsCallerRaw struct { + Contract *IReceiverEVMEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IReceiverEVMEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IReceiverEVMEventsTransactorRaw struct { + Contract *IReceiverEVMEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIReceiverEVMEvents creates a new instance of IReceiverEVMEvents, bound to a specific deployed contract. +func NewIReceiverEVMEvents(address common.Address, backend bind.ContractBackend) (*IReceiverEVMEvents, error) { + contract, err := bindIReceiverEVMEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IReceiverEVMEvents{IReceiverEVMEventsCaller: IReceiverEVMEventsCaller{contract: contract}, IReceiverEVMEventsTransactor: IReceiverEVMEventsTransactor{contract: contract}, IReceiverEVMEventsFilterer: IReceiverEVMEventsFilterer{contract: contract}}, nil +} + +// NewIReceiverEVMEventsCaller creates a new read-only instance of IReceiverEVMEvents, bound to a specific deployed contract. +func NewIReceiverEVMEventsCaller(address common.Address, caller bind.ContractCaller) (*IReceiverEVMEventsCaller, error) { + contract, err := bindIReceiverEVMEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IReceiverEVMEventsCaller{contract: contract}, nil +} + +// NewIReceiverEVMEventsTransactor creates a new write-only instance of IReceiverEVMEvents, bound to a specific deployed contract. +func NewIReceiverEVMEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IReceiverEVMEventsTransactor, error) { + contract, err := bindIReceiverEVMEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IReceiverEVMEventsTransactor{contract: contract}, nil +} + +// NewIReceiverEVMEventsFilterer creates a new log filterer instance of IReceiverEVMEvents, bound to a specific deployed contract. +func NewIReceiverEVMEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IReceiverEVMEventsFilterer, error) { + contract, err := bindIReceiverEVMEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IReceiverEVMEventsFilterer{contract: contract}, nil +} + +// bindIReceiverEVMEvents binds a generic wrapper to an already deployed contract. +func bindIReceiverEVMEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IReceiverEVMEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IReceiverEVMEvents.Contract.IReceiverEVMEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IReceiverEVMEvents.Contract.IReceiverEVMEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IReceiverEVMEvents *IReceiverEVMEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IReceiverEVMEvents.Contract.IReceiverEVMEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IReceiverEVMEvents *IReceiverEVMEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IReceiverEVMEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IReceiverEVMEvents *IReceiverEVMEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IReceiverEVMEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IReceiverEVMEvents *IReceiverEVMEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IReceiverEVMEvents.Contract.contract.Transact(opts, method, params...) +} + +// IReceiverEVMEventsReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedERC20Iterator struct { + Event *IReceiverEVMEventsReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IReceiverEVMEventsReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IReceiverEVMEventsReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IReceiverEVMEventsReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IReceiverEVMEventsReceivedERC20 represents a ReceivedERC20 event raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedERC20Iterator, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &IReceiverEVMEventsReceivedERC20Iterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IReceiverEVMEventsReceivedERC20) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedERC20(log types.Log) (*IReceiverEVMEventsReceivedERC20, error) { + event := new(IReceiverEVMEventsReceivedERC20) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IReceiverEVMEventsReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedNoParamsIterator struct { + Event *IReceiverEVMEventsReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IReceiverEVMEventsReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IReceiverEVMEventsReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IReceiverEVMEventsReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IReceiverEVMEventsReceivedNoParams represents a ReceivedNoParams event raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedNoParamsIterator, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &IReceiverEVMEventsReceivedNoParamsIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IReceiverEVMEventsReceivedNoParams) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedNoParams(log types.Log) (*IReceiverEVMEventsReceivedNoParams, error) { + event := new(IReceiverEVMEventsReceivedNoParams) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IReceiverEVMEventsReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedNonPayableIterator struct { + Event *IReceiverEVMEventsReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IReceiverEVMEventsReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IReceiverEVMEventsReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IReceiverEVMEventsReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IReceiverEVMEventsReceivedNonPayable represents a ReceivedNonPayable event raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedNonPayableIterator, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &IReceiverEVMEventsReceivedNonPayableIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IReceiverEVMEventsReceivedNonPayable) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedNonPayable(log types.Log) (*IReceiverEVMEventsReceivedNonPayable, error) { + event := new(IReceiverEVMEventsReceivedNonPayable) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IReceiverEVMEventsReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedPayableIterator struct { + Event *IReceiverEVMEventsReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IReceiverEVMEventsReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IReceiverEVMEventsReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IReceiverEVMEventsReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IReceiverEVMEventsReceivedPayable represents a ReceivedPayable event raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedPayableIterator, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &IReceiverEVMEventsReceivedPayableIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IReceiverEVMEventsReceivedPayable) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedPayable(log types.Log) (*IReceiverEVMEventsReceivedPayable, error) { + event := new(IReceiverEVMEventsReceivedPayable) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IReceiverEVMEventsReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedRevertIterator struct { + Event *IReceiverEVMEventsReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IReceiverEVMEventsReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IReceiverEVMEventsReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IReceiverEVMEventsReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IReceiverEVMEventsReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IReceiverEVMEventsReceivedRevert represents a ReceivedRevert event raised by the IReceiverEVMEvents contract. +type IReceiverEVMEventsReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*IReceiverEVMEventsReceivedRevertIterator, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &IReceiverEVMEventsReceivedRevertIterator{contract: _IReceiverEVMEvents.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *IReceiverEVMEventsReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _IReceiverEVMEvents.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IReceiverEVMEventsReceivedRevert) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_IReceiverEVMEvents *IReceiverEVMEventsFilterer) ParseReceivedRevert(log types.Log) (*IReceiverEVMEventsReceivedRevert, error) { + event := new(IReceiverEVMEventsReceivedRevert) + if err := _IReceiverEVMEvents.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/isystem.sol/isystem.go b/v2/pkg/isystem.sol/isystem.go new file mode 100644 index 00000000..5d61819b --- /dev/null +++ b/v2/pkg/isystem.sol/isystem.go @@ -0,0 +1,367 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package isystem + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ISystemMetaData contains all meta data concerning the ISystem contract. +var ISystemMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"}]", +} + +// ISystemABI is the input ABI used to generate the binding from. +// Deprecated: Use ISystemMetaData.ABI instead. +var ISystemABI = ISystemMetaData.ABI + +// ISystem is an auto generated Go binding around an Ethereum contract. +type ISystem struct { + ISystemCaller // Read-only binding to the contract + ISystemTransactor // Write-only binding to the contract + ISystemFilterer // Log filterer for contract events +} + +// ISystemCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISystemCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISystemTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISystemFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISystemSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISystemSession struct { + Contract *ISystem // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISystemCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISystemCallerSession struct { + Contract *ISystemCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISystemTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISystemTransactorSession struct { + Contract *ISystemTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISystemRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISystemRaw struct { + Contract *ISystem // Generic contract binding to access the raw methods on +} + +// ISystemCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISystemCallerRaw struct { + Contract *ISystemCaller // Generic read-only contract binding to access the raw methods on +} + +// ISystemTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISystemTransactorRaw struct { + Contract *ISystemTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISystem creates a new instance of ISystem, bound to a specific deployed contract. +func NewISystem(address common.Address, backend bind.ContractBackend) (*ISystem, error) { + contract, err := bindISystem(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISystem{ISystemCaller: ISystemCaller{contract: contract}, ISystemTransactor: ISystemTransactor{contract: contract}, ISystemFilterer: ISystemFilterer{contract: contract}}, nil +} + +// NewISystemCaller creates a new read-only instance of ISystem, bound to a specific deployed contract. +func NewISystemCaller(address common.Address, caller bind.ContractCaller) (*ISystemCaller, error) { + contract, err := bindISystem(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISystemCaller{contract: contract}, nil +} + +// NewISystemTransactor creates a new write-only instance of ISystem, bound to a specific deployed contract. +func NewISystemTransactor(address common.Address, transactor bind.ContractTransactor) (*ISystemTransactor, error) { + contract, err := bindISystem(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISystemTransactor{contract: contract}, nil +} + +// NewISystemFilterer creates a new log filterer instance of ISystem, bound to a specific deployed contract. +func NewISystemFilterer(address common.Address, filterer bind.ContractFilterer) (*ISystemFilterer, error) { + contract, err := bindISystem(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISystemFilterer{contract: contract}, nil +} + +// bindISystem binds a generic wrapper to an already deployed contract. +func bindISystem(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISystemMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISystem *ISystemRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISystem.Contract.ISystemCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISystem *ISystemRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISystem.Contract.ISystemTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISystem *ISystemRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISystem.Contract.ISystemTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISystem *ISystemCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISystem.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISystem *ISystemTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISystem.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISystem *ISystemTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISystem.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ISystem *ISystemCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ISystem.Contract.FUNGIBLEMODULEADDRESS(&_ISystem.CallOpts) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasCoinZRC20ByChainId", chainID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCallerSession) GasCoinZRC20ByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasCoinZRC20ByChainId(&_ISystem.CallOpts, chainID) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemCaller) GasPriceByChainId(opts *bind.CallOpts, chainID *big.Int) (*big.Int, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasPriceByChainId", chainID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { + return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 chainID) view returns(uint256) +func (_ISystem *ISystemCallerSession) GasPriceByChainId(chainID *big.Int) (*big.Int, error) { + return _ISystem.Contract.GasPriceByChainId(&_ISystem.CallOpts, chainID) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCaller) GasZetaPoolByChainId(opts *bind.CallOpts, chainID *big.Int) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "gasZetaPoolByChainId", chainID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 chainID) view returns(address) +func (_ISystem *ISystemCallerSession) GasZetaPoolByChainId(chainID *big.Int) (common.Address, error) { + return _ISystem.Contract.GasZetaPoolByChainId(&_ISystem.CallOpts, chainID) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_ISystem *ISystemCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _ISystem.Contract.Uniswapv2FactoryAddress(&_ISystem.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ISystem.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemSession) WZetaContractAddress() (common.Address, error) { + return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_ISystem *ISystemCallerSession) WZetaContractAddress() (common.Address, error) { + return _ISystem.Contract.WZetaContractAddress(&_ISystem.CallOpts) +} diff --git a/v2/pkg/iupgradeablebeacon.sol/iupgradeablebeacon.go b/v2/pkg/iupgradeablebeacon.sol/iupgradeablebeacon.go new file mode 100644 index 00000000..1f1902b9 --- /dev/null +++ b/v2/pkg/iupgradeablebeacon.sol/iupgradeablebeacon.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iupgradeablebeacon + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUpgradeableBeaconMetaData contains all meta data concerning the IUpgradeableBeacon contract. +var IUpgradeableBeaconMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// IUpgradeableBeaconABI is the input ABI used to generate the binding from. +// Deprecated: Use IUpgradeableBeaconMetaData.ABI instead. +var IUpgradeableBeaconABI = IUpgradeableBeaconMetaData.ABI + +// IUpgradeableBeacon is an auto generated Go binding around an Ethereum contract. +type IUpgradeableBeacon struct { + IUpgradeableBeaconCaller // Read-only binding to the contract + IUpgradeableBeaconTransactor // Write-only binding to the contract + IUpgradeableBeaconFilterer // Log filterer for contract events +} + +// IUpgradeableBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUpgradeableBeaconCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUpgradeableBeaconTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUpgradeableBeaconFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableBeaconSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUpgradeableBeaconSession struct { + Contract *IUpgradeableBeacon // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUpgradeableBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUpgradeableBeaconCallerSession struct { + Contract *IUpgradeableBeaconCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUpgradeableBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUpgradeableBeaconTransactorSession struct { + Contract *IUpgradeableBeaconTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUpgradeableBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUpgradeableBeaconRaw struct { + Contract *IUpgradeableBeacon // Generic contract binding to access the raw methods on +} + +// IUpgradeableBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUpgradeableBeaconCallerRaw struct { + Contract *IUpgradeableBeaconCaller // Generic read-only contract binding to access the raw methods on +} + +// IUpgradeableBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUpgradeableBeaconTransactorRaw struct { + Contract *IUpgradeableBeaconTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUpgradeableBeacon creates a new instance of IUpgradeableBeacon, bound to a specific deployed contract. +func NewIUpgradeableBeacon(address common.Address, backend bind.ContractBackend) (*IUpgradeableBeacon, error) { + contract, err := bindIUpgradeableBeacon(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUpgradeableBeacon{IUpgradeableBeaconCaller: IUpgradeableBeaconCaller{contract: contract}, IUpgradeableBeaconTransactor: IUpgradeableBeaconTransactor{contract: contract}, IUpgradeableBeaconFilterer: IUpgradeableBeaconFilterer{contract: contract}}, nil +} + +// NewIUpgradeableBeaconCaller creates a new read-only instance of IUpgradeableBeacon, bound to a specific deployed contract. +func NewIUpgradeableBeaconCaller(address common.Address, caller bind.ContractCaller) (*IUpgradeableBeaconCaller, error) { + contract, err := bindIUpgradeableBeacon(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUpgradeableBeaconCaller{contract: contract}, nil +} + +// NewIUpgradeableBeaconTransactor creates a new write-only instance of IUpgradeableBeacon, bound to a specific deployed contract. +func NewIUpgradeableBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*IUpgradeableBeaconTransactor, error) { + contract, err := bindIUpgradeableBeacon(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUpgradeableBeaconTransactor{contract: contract}, nil +} + +// NewIUpgradeableBeaconFilterer creates a new log filterer instance of IUpgradeableBeacon, bound to a specific deployed contract. +func NewIUpgradeableBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*IUpgradeableBeaconFilterer, error) { + contract, err := bindIUpgradeableBeacon(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUpgradeableBeaconFilterer{contract: contract}, nil +} + +// bindIUpgradeableBeacon binds a generic wrapper to an already deployed contract. +func bindIUpgradeableBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUpgradeableBeaconMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUpgradeableBeacon *IUpgradeableBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUpgradeableBeacon.Contract.IUpgradeableBeaconCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUpgradeableBeacon *IUpgradeableBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.IUpgradeableBeaconTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUpgradeableBeacon *IUpgradeableBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.IUpgradeableBeaconTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUpgradeableBeacon *IUpgradeableBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUpgradeableBeacon.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUpgradeableBeacon *IUpgradeableBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUpgradeableBeacon *IUpgradeableBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.contract.Transact(opts, method, params...) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableBeacon *IUpgradeableBeaconTransactor) UpgradeTo(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableBeacon.contract.Transact(opts, "upgradeTo", arg0) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableBeacon *IUpgradeableBeaconSession) UpgradeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.UpgradeTo(&_IUpgradeableBeacon.TransactOpts, arg0) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableBeacon *IUpgradeableBeaconTransactorSession) UpgradeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableBeacon.Contract.UpgradeTo(&_IUpgradeableBeacon.TransactOpts, arg0) +} diff --git a/v2/pkg/iupgradeableproxy.sol/iupgradeableproxy.go b/v2/pkg/iupgradeableproxy.sol/iupgradeableproxy.go new file mode 100644 index 00000000..3f95657e --- /dev/null +++ b/v2/pkg/iupgradeableproxy.sol/iupgradeableproxy.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iupgradeableproxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IUpgradeableProxyMetaData contains all meta data concerning the IUpgradeableProxy contract. +var IUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"}]", +} + +// IUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use IUpgradeableProxyMetaData.ABI instead. +var IUpgradeableProxyABI = IUpgradeableProxyMetaData.ABI + +// IUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type IUpgradeableProxy struct { + IUpgradeableProxyCaller // Read-only binding to the contract + IUpgradeableProxyTransactor // Write-only binding to the contract + IUpgradeableProxyFilterer // Log filterer for contract events +} + +// IUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type IUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IUpgradeableProxySession struct { + Contract *IUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IUpgradeableProxyCallerSession struct { + Contract *IUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IUpgradeableProxyTransactorSession struct { + Contract *IUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type IUpgradeableProxyRaw struct { + Contract *IUpgradeableProxy // Generic contract binding to access the raw methods on +} + +// IUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IUpgradeableProxyCallerRaw struct { + Contract *IUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// IUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IUpgradeableProxyTransactorRaw struct { + Contract *IUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIUpgradeableProxy creates a new instance of IUpgradeableProxy, bound to a specific deployed contract. +func NewIUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*IUpgradeableProxy, error) { + contract, err := bindIUpgradeableProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IUpgradeableProxy{IUpgradeableProxyCaller: IUpgradeableProxyCaller{contract: contract}, IUpgradeableProxyTransactor: IUpgradeableProxyTransactor{contract: contract}, IUpgradeableProxyFilterer: IUpgradeableProxyFilterer{contract: contract}}, nil +} + +// NewIUpgradeableProxyCaller creates a new read-only instance of IUpgradeableProxy, bound to a specific deployed contract. +func NewIUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*IUpgradeableProxyCaller, error) { + contract, err := bindIUpgradeableProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IUpgradeableProxyCaller{contract: contract}, nil +} + +// NewIUpgradeableProxyTransactor creates a new write-only instance of IUpgradeableProxy, bound to a specific deployed contract. +func NewIUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*IUpgradeableProxyTransactor, error) { + contract, err := bindIUpgradeableProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IUpgradeableProxyTransactor{contract: contract}, nil +} + +// NewIUpgradeableProxyFilterer creates a new log filterer instance of IUpgradeableProxy, bound to a specific deployed contract. +func NewIUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*IUpgradeableProxyFilterer, error) { + contract, err := bindIUpgradeableProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IUpgradeableProxyFilterer{contract: contract}, nil +} + +// bindIUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindIUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IUpgradeableProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUpgradeableProxy *IUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUpgradeableProxy.Contract.IUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUpgradeableProxy *IUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.IUpgradeableProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUpgradeableProxy *IUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.IUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IUpgradeableProxy *IUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IUpgradeableProxy *IUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IUpgradeableProxy *IUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableProxy *IUpgradeableProxyTransactor) UpgradeTo(opts *bind.TransactOpts, arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableProxy.contract.Transact(opts, "upgradeTo", arg0) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableProxy *IUpgradeableProxySession) UpgradeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.UpgradeTo(&_IUpgradeableProxy.TransactOpts, arg0) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address ) returns() +func (_IUpgradeableProxy *IUpgradeableProxyTransactorSession) UpgradeTo(arg0 common.Address) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.UpgradeTo(&_IUpgradeableProxy.TransactOpts, arg0) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_IUpgradeableProxy *IUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _IUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_IUpgradeableProxy *IUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.UpgradeToAndCall(&_IUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_IUpgradeableProxy *IUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _IUpgradeableProxy.Contract.UpgradeToAndCall(&_IUpgradeableProxy.TransactOpts, arg0, arg1) +} diff --git a/v2/pkg/iwzeta.sol/iweth9.go b/v2/pkg/iwzeta.sol/iweth9.go new file mode 100644 index 00000000..060122f3 --- /dev/null +++ b/v2/pkg/iwzeta.sol/iweth9.go @@ -0,0 +1,977 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iwzeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IWETH9MetaData contains all meta data concerning the IWETH9 contract. +var IWETH9MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"dst\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IWETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use IWETH9MetaData.ABI instead. +var IWETH9ABI = IWETH9MetaData.ABI + +// IWETH9 is an auto generated Go binding around an Ethereum contract. +type IWETH9 struct { + IWETH9Caller // Read-only binding to the contract + IWETH9Transactor // Write-only binding to the contract + IWETH9Filterer // Log filterer for contract events +} + +// IWETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type IWETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IWETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWETH9Session struct { + Contract *IWETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWETH9CallerSession struct { + Contract *IWETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWETH9TransactorSession struct { + Contract *IWETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type IWETH9Raw struct { + Contract *IWETH9 // Generic contract binding to access the raw methods on +} + +// IWETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWETH9CallerRaw struct { + Contract *IWETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// IWETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWETH9TransactorRaw struct { + Contract *IWETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWETH9 creates a new instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9(address common.Address, backend bind.ContractBackend) (*IWETH9, error) { + contract, err := bindIWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWETH9{IWETH9Caller: IWETH9Caller{contract: contract}, IWETH9Transactor: IWETH9Transactor{contract: contract}, IWETH9Filterer: IWETH9Filterer{contract: contract}}, nil +} + +// NewIWETH9Caller creates a new read-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Caller(address common.Address, caller bind.ContractCaller) (*IWETH9Caller, error) { + contract, err := bindIWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWETH9Caller{contract: contract}, nil +} + +// NewIWETH9Transactor creates a new write-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*IWETH9Transactor, error) { + contract, err := bindIWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWETH9Transactor{contract: contract}, nil +} + +// NewIWETH9Filterer creates a new log filterer instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*IWETH9Filterer, error) { + contract, err := bindIWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWETH9Filterer{contract: contract}, nil +} + +// bindIWETH9 binds a generic wrapper to an already deployed contract. +func bindIWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.IWETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Session) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Approve(opts *bind.TransactOpts, spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "approve", spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Session) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Transfer(opts *bind.TransactOpts, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transfer", to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transferFrom", from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// IWETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IWETH9 contract. +type IWETH9ApprovalIterator struct { + Event *IWETH9Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Approval represents a Approval event raised by the IWETH9 contract. +type IWETH9Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IWETH9ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IWETH9ApprovalIterator{contract: _IWETH9.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IWETH9Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseApproval(log types.Log) (*IWETH9Approval, error) { + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IWETH9 contract. +type IWETH9DepositIterator struct { + Event *IWETH9Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Deposit represents a Deposit event raised by the IWETH9 contract. +type IWETH9Deposit struct { + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*IWETH9DepositIterator, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return &IWETH9DepositIterator{contract: _IWETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IWETH9Deposit, dst []common.Address) (event.Subscription, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseDeposit(log types.Log) (*IWETH9Deposit, error) { + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IWETH9 contract. +type IWETH9TransferIterator struct { + Event *IWETH9Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Transfer represents a Transfer event raised by the IWETH9 contract. +type IWETH9Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IWETH9TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IWETH9TransferIterator{contract: _IWETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IWETH9Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseTransfer(log types.Log) (*IWETH9Transfer, error) { + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IWETH9 contract. +type IWETH9WithdrawalIterator struct { + Event *IWETH9Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Withdrawal represents a Withdrawal event raised by the IWETH9 contract. +type IWETH9Withdrawal struct { + Src common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*IWETH9WithdrawalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return &IWETH9WithdrawalIterator{contract: _IWETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IWETH9Withdrawal, src []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseWithdrawal(log types.Log) (*IWETH9Withdrawal, error) { + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/izetaconnector.sol/izetaconnectorevents.go b/v2/pkg/izetaconnector.sol/izetaconnectorevents.go new file mode 100644 index 00000000..e466571b --- /dev/null +++ b/v2/pkg/izetaconnector.sol/izetaconnectorevents.go @@ -0,0 +1,618 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izetaconnector + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZetaConnectorEventsMetaData contains all meta data concerning the IZetaConnectorEvents contract. +var IZetaConnectorEventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IZetaConnectorEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IZetaConnectorEventsMetaData.ABI instead. +var IZetaConnectorEventsABI = IZetaConnectorEventsMetaData.ABI + +// IZetaConnectorEvents is an auto generated Go binding around an Ethereum contract. +type IZetaConnectorEvents struct { + IZetaConnectorEventsCaller // Read-only binding to the contract + IZetaConnectorEventsTransactor // Write-only binding to the contract + IZetaConnectorEventsFilterer // Log filterer for contract events +} + +// IZetaConnectorEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IZetaConnectorEventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IZetaConnectorEventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZetaConnectorEventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaConnectorEventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZetaConnectorEventsSession struct { + Contract *IZetaConnectorEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaConnectorEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZetaConnectorEventsCallerSession struct { + Contract *IZetaConnectorEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZetaConnectorEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZetaConnectorEventsTransactorSession struct { + Contract *IZetaConnectorEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaConnectorEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IZetaConnectorEventsRaw struct { + Contract *IZetaConnectorEvents // Generic contract binding to access the raw methods on +} + +// IZetaConnectorEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZetaConnectorEventsCallerRaw struct { + Contract *IZetaConnectorEventsCaller // Generic read-only contract binding to access the raw methods on +} + +// IZetaConnectorEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZetaConnectorEventsTransactorRaw struct { + Contract *IZetaConnectorEventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZetaConnectorEvents creates a new instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEvents(address common.Address, backend bind.ContractBackend) (*IZetaConnectorEvents, error) { + contract, err := bindIZetaConnectorEvents(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZetaConnectorEvents{IZetaConnectorEventsCaller: IZetaConnectorEventsCaller{contract: contract}, IZetaConnectorEventsTransactor: IZetaConnectorEventsTransactor{contract: contract}, IZetaConnectorEventsFilterer: IZetaConnectorEventsFilterer{contract: contract}}, nil +} + +// NewIZetaConnectorEventsCaller creates a new read-only instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsCaller(address common.Address, caller bind.ContractCaller) (*IZetaConnectorEventsCaller, error) { + contract, err := bindIZetaConnectorEvents(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsCaller{contract: contract}, nil +} + +// NewIZetaConnectorEventsTransactor creates a new write-only instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaConnectorEventsTransactor, error) { + contract, err := bindIZetaConnectorEvents(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsTransactor{contract: contract}, nil +} + +// NewIZetaConnectorEventsFilterer creates a new log filterer instance of IZetaConnectorEvents, bound to a specific deployed contract. +func NewIZetaConnectorEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaConnectorEventsFilterer, error) { + contract, err := bindIZetaConnectorEvents(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsFilterer{contract: contract}, nil +} + +// bindIZetaConnectorEvents binds a generic wrapper to an already deployed contract. +func bindIZetaConnectorEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZetaConnectorEventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaConnectorEvents *IZetaConnectorEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.IZetaConnectorEventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaConnectorEvents *IZetaConnectorEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaConnectorEvents.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaConnectorEvents *IZetaConnectorEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaConnectorEvents.Contract.contract.Transact(opts, method, params...) +} + +// IZetaConnectorEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawIterator struct { + Event *IZetaConnectorEventsWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdraw represents a Withdraw event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawIterator{contract: _IZetaConnectorEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdraw) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdraw(log types.Log) (*IZetaConnectorEventsWithdraw, error) { + event := new(IZetaConnectorEventsWithdraw) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IZetaConnectorEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndCallIterator struct { + Event *IZetaConnectorEventsWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawAndCallIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdrawAndCall) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IZetaConnectorEventsWithdrawAndCall, error) { + event := new(IZetaConnectorEventsWithdrawAndCall) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IZetaConnectorEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndRevertIterator struct { + Event *IZetaConnectorEventsWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaConnectorEventsWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaConnectorEventsWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaConnectorEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IZetaConnectorEvents contract. +type IZetaConnectorEventsWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*IZetaConnectorEventsWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &IZetaConnectorEventsWithdrawAndRevertIterator{contract: _IZetaConnectorEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IZetaConnectorEventsWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaConnectorEvents.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaConnectorEventsWithdrawAndRevert) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_IZetaConnectorEvents *IZetaConnectorEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IZetaConnectorEventsWithdrawAndRevert, error) { + event := new(IZetaConnectorEventsWithdrawAndRevert) + if err := _IZetaConnectorEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/izetanonethnew.sol/izetanonethnew.go b/v2/pkg/izetanonethnew.sol/izetanonethnew.go new file mode 100644 index 00000000..2c049e89 --- /dev/null +++ b/v2/pkg/izetanonethnew.sol/izetanonethnew.go @@ -0,0 +1,687 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izetanonethnew + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZetaNonEthNewMetaData contains all meta data concerning the IZetaNonEthNew contract. +var IZetaNonEthNewMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IZetaNonEthNewABI is the input ABI used to generate the binding from. +// Deprecated: Use IZetaNonEthNewMetaData.ABI instead. +var IZetaNonEthNewABI = IZetaNonEthNewMetaData.ABI + +// IZetaNonEthNew is an auto generated Go binding around an Ethereum contract. +type IZetaNonEthNew struct { + IZetaNonEthNewCaller // Read-only binding to the contract + IZetaNonEthNewTransactor // Write-only binding to the contract + IZetaNonEthNewFilterer // Log filterer for contract events +} + +// IZetaNonEthNewCaller is an auto generated read-only Go binding around an Ethereum contract. +type IZetaNonEthNewCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaNonEthNewTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IZetaNonEthNewTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaNonEthNewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZetaNonEthNewFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZetaNonEthNewSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZetaNonEthNewSession struct { + Contract *IZetaNonEthNew // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaNonEthNewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZetaNonEthNewCallerSession struct { + Contract *IZetaNonEthNewCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZetaNonEthNewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZetaNonEthNewTransactorSession struct { + Contract *IZetaNonEthNewTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZetaNonEthNewRaw is an auto generated low-level Go binding around an Ethereum contract. +type IZetaNonEthNewRaw struct { + Contract *IZetaNonEthNew // Generic contract binding to access the raw methods on +} + +// IZetaNonEthNewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZetaNonEthNewCallerRaw struct { + Contract *IZetaNonEthNewCaller // Generic read-only contract binding to access the raw methods on +} + +// IZetaNonEthNewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZetaNonEthNewTransactorRaw struct { + Contract *IZetaNonEthNewTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZetaNonEthNew creates a new instance of IZetaNonEthNew, bound to a specific deployed contract. +func NewIZetaNonEthNew(address common.Address, backend bind.ContractBackend) (*IZetaNonEthNew, error) { + contract, err := bindIZetaNonEthNew(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZetaNonEthNew{IZetaNonEthNewCaller: IZetaNonEthNewCaller{contract: contract}, IZetaNonEthNewTransactor: IZetaNonEthNewTransactor{contract: contract}, IZetaNonEthNewFilterer: IZetaNonEthNewFilterer{contract: contract}}, nil +} + +// NewIZetaNonEthNewCaller creates a new read-only instance of IZetaNonEthNew, bound to a specific deployed contract. +func NewIZetaNonEthNewCaller(address common.Address, caller bind.ContractCaller) (*IZetaNonEthNewCaller, error) { + contract, err := bindIZetaNonEthNew(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZetaNonEthNewCaller{contract: contract}, nil +} + +// NewIZetaNonEthNewTransactor creates a new write-only instance of IZetaNonEthNew, bound to a specific deployed contract. +func NewIZetaNonEthNewTransactor(address common.Address, transactor bind.ContractTransactor) (*IZetaNonEthNewTransactor, error) { + contract, err := bindIZetaNonEthNew(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZetaNonEthNewTransactor{contract: contract}, nil +} + +// NewIZetaNonEthNewFilterer creates a new log filterer instance of IZetaNonEthNew, bound to a specific deployed contract. +func NewIZetaNonEthNewFilterer(address common.Address, filterer bind.ContractFilterer) (*IZetaNonEthNewFilterer, error) { + contract, err := bindIZetaNonEthNew(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZetaNonEthNewFilterer{contract: contract}, nil +} + +// bindIZetaNonEthNew binds a generic wrapper to an already deployed contract. +func bindIZetaNonEthNew(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZetaNonEthNewMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaNonEthNew *IZetaNonEthNewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaNonEthNew.Contract.IZetaNonEthNewCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaNonEthNew *IZetaNonEthNewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.IZetaNonEthNewTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaNonEthNew *IZetaNonEthNewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.IZetaNonEthNewTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZetaNonEthNew *IZetaNonEthNewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZetaNonEthNew.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZetaNonEthNew *IZetaNonEthNewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZetaNonEthNew *IZetaNonEthNewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IZetaNonEthNew.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZetaNonEthNew.Contract.Allowance(&_IZetaNonEthNew.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZetaNonEthNew.Contract.Allowance(&_IZetaNonEthNew.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IZetaNonEthNew.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZetaNonEthNew.Contract.BalanceOf(&_IZetaNonEthNew.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZetaNonEthNew.Contract.BalanceOf(&_IZetaNonEthNew.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZetaNonEthNew.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewSession) TotalSupply() (*big.Int, error) { + return _IZetaNonEthNew.Contract.TotalSupply(&_IZetaNonEthNew.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZetaNonEthNew *IZetaNonEthNewCallerSession) TotalSupply() (*big.Int, error) { + return _IZetaNonEthNew.Contract.TotalSupply(&_IZetaNonEthNew.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Approve(&_IZetaNonEthNew.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Approve(&_IZetaNonEthNew.TransactOpts, spender, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_IZetaNonEthNew *IZetaNonEthNewTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_IZetaNonEthNew *IZetaNonEthNewSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.BurnFrom(&_IZetaNonEthNew.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.BurnFrom(&_IZetaNonEthNew.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _IZetaNonEthNew.contract.Transact(opts, "mint", mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_IZetaNonEthNew *IZetaNonEthNewSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Mint(&_IZetaNonEthNew.TransactOpts, mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Mint(&_IZetaNonEthNew.TransactOpts, mintee, value, internalSendHash) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Transfer(&_IZetaNonEthNew.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.Transfer(&_IZetaNonEthNew.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.TransferFrom(&_IZetaNonEthNew.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_IZetaNonEthNew *IZetaNonEthNewTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _IZetaNonEthNew.Contract.TransferFrom(&_IZetaNonEthNew.TransactOpts, from, to, value) +} + +// IZetaNonEthNewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IZetaNonEthNew contract. +type IZetaNonEthNewApprovalIterator struct { + Event *IZetaNonEthNewApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaNonEthNewApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaNonEthNewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaNonEthNewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaNonEthNewApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaNonEthNewApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaNonEthNewApproval represents a Approval event raised by the IZetaNonEthNew contract. +type IZetaNonEthNewApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IZetaNonEthNewApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IZetaNonEthNew.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IZetaNonEthNewApprovalIterator{contract: _IZetaNonEthNew.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IZetaNonEthNewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IZetaNonEthNew.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaNonEthNewApproval) + if err := _IZetaNonEthNew.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) ParseApproval(log types.Log) (*IZetaNonEthNewApproval, error) { + event := new(IZetaNonEthNewApproval) + if err := _IZetaNonEthNew.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IZetaNonEthNewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IZetaNonEthNew contract. +type IZetaNonEthNewTransferIterator struct { + Event *IZetaNonEthNewTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IZetaNonEthNewTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IZetaNonEthNewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IZetaNonEthNewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IZetaNonEthNewTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IZetaNonEthNewTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IZetaNonEthNewTransfer represents a Transfer event raised by the IZetaNonEthNew contract. +type IZetaNonEthNewTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IZetaNonEthNewTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaNonEthNew.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IZetaNonEthNewTransferIterator{contract: _IZetaNonEthNew.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IZetaNonEthNewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IZetaNonEthNew.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IZetaNonEthNewTransfer) + if err := _IZetaNonEthNew.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IZetaNonEthNew *IZetaNonEthNewFilterer) ParseTransfer(log types.Log) (*IZetaNonEthNewTransfer, error) { + event := new(IZetaNonEthNewTransfer) + if err := _IZetaNonEthNew.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/izrc20.sol/izrc20.go b/v2/pkg/izrc20.sol/izrc20.go new file mode 100644 index 00000000..bac67017 --- /dev/null +++ b/v2/pkg/izrc20.sol/izrc20.go @@ -0,0 +1,463 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZRC20MetaData contains all meta data concerning the IZRC20 contract. +var IZRC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", +} + +// IZRC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use IZRC20MetaData.ABI instead. +var IZRC20ABI = IZRC20MetaData.ABI + +// IZRC20 is an auto generated Go binding around an Ethereum contract. +type IZRC20 struct { + IZRC20Caller // Read-only binding to the contract + IZRC20Transactor // Write-only binding to the contract + IZRC20Filterer // Log filterer for contract events +} + +// IZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type IZRC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IZRC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZRC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZRC20Session struct { + Contract *IZRC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZRC20CallerSession struct { + Contract *IZRC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZRC20TransactorSession struct { + Contract *IZRC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type IZRC20Raw struct { + Contract *IZRC20 // Generic contract binding to access the raw methods on +} + +// IZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZRC20CallerRaw struct { + Contract *IZRC20Caller // Generic read-only contract binding to access the raw methods on +} + +// IZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZRC20TransactorRaw struct { + Contract *IZRC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZRC20 creates a new instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20(address common.Address, backend bind.ContractBackend) (*IZRC20, error) { + contract, err := bindIZRC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZRC20{IZRC20Caller: IZRC20Caller{contract: contract}, IZRC20Transactor: IZRC20Transactor{contract: contract}, IZRC20Filterer: IZRC20Filterer{contract: contract}}, nil +} + +// NewIZRC20Caller creates a new read-only instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Caller(address common.Address, caller bind.ContractCaller) (*IZRC20Caller, error) { + contract, err := bindIZRC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZRC20Caller{contract: contract}, nil +} + +// NewIZRC20Transactor creates a new write-only instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20Transactor, error) { + contract, err := bindIZRC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZRC20Transactor{contract: contract}, nil +} + +// NewIZRC20Filterer creates a new log filterer instance of IZRC20, bound to a specific deployed contract. +func NewIZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20Filterer, error) { + contract, err := bindIZRC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZRC20Filterer{contract: contract}, nil +} + +// bindIZRC20 binds a generic wrapper to an already deployed contract. +func bindIZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZRC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20 *IZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20.Contract.IZRC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20 *IZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20.Contract.IZRC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20 *IZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20.Contract.IZRC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20 *IZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20 *IZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20 *IZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20.Contract.contract.Transact(opts, method, params...) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20.Contract.Allowance(&_IZRC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20Session) TotalSupply() (*big.Int, error) { + return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) TotalSupply() (*big.Int, error) { + return _IZRC20.Contract.TotalSupply(&_IZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20 *IZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20.Contract.WithdrawGasFee(&_IZRC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Approve(&_IZRC20.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Burn(&_IZRC20.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Deposit(&_IZRC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Transfer(&_IZRC20.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.TransferFrom(&_IZRC20.TransactOpts, sender, recipient, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20 *IZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20.Contract.Withdraw(&_IZRC20.TransactOpts, to, amount) +} diff --git a/v2/pkg/izrc20.sol/izrc20metadata.go b/v2/pkg/izrc20.sol/izrc20metadata.go new file mode 100644 index 00000000..b153b402 --- /dev/null +++ b/v2/pkg/izrc20.sol/izrc20metadata.go @@ -0,0 +1,556 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IZRC20MetadataMetaData contains all meta data concerning the IZRC20Metadata contract. +var IZRC20MetadataMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", +} + +// IZRC20MetadataABI is the input ABI used to generate the binding from. +// Deprecated: Use IZRC20MetadataMetaData.ABI instead. +var IZRC20MetadataABI = IZRC20MetadataMetaData.ABI + +// IZRC20Metadata is an auto generated Go binding around an Ethereum contract. +type IZRC20Metadata struct { + IZRC20MetadataCaller // Read-only binding to the contract + IZRC20MetadataTransactor // Write-only binding to the contract + IZRC20MetadataFilterer // Log filterer for contract events +} + +// IZRC20MetadataCaller is an auto generated read-only Go binding around an Ethereum contract. +type IZRC20MetadataCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IZRC20MetadataTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IZRC20MetadataFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IZRC20MetadataSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IZRC20MetadataSession struct { + Contract *IZRC20Metadata // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IZRC20MetadataCallerSession struct { + Contract *IZRC20MetadataCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IZRC20MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IZRC20MetadataTransactorSession struct { + Contract *IZRC20MetadataTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IZRC20MetadataRaw is an auto generated low-level Go binding around an Ethereum contract. +type IZRC20MetadataRaw struct { + Contract *IZRC20Metadata // Generic contract binding to access the raw methods on +} + +// IZRC20MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IZRC20MetadataCallerRaw struct { + Contract *IZRC20MetadataCaller // Generic read-only contract binding to access the raw methods on +} + +// IZRC20MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IZRC20MetadataTransactorRaw struct { + Contract *IZRC20MetadataTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIZRC20Metadata creates a new instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20Metadata(address common.Address, backend bind.ContractBackend) (*IZRC20Metadata, error) { + contract, err := bindIZRC20Metadata(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IZRC20Metadata{IZRC20MetadataCaller: IZRC20MetadataCaller{contract: contract}, IZRC20MetadataTransactor: IZRC20MetadataTransactor{contract: contract}, IZRC20MetadataFilterer: IZRC20MetadataFilterer{contract: contract}}, nil +} + +// NewIZRC20MetadataCaller creates a new read-only instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataCaller(address common.Address, caller bind.ContractCaller) (*IZRC20MetadataCaller, error) { + contract, err := bindIZRC20Metadata(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IZRC20MetadataCaller{contract: contract}, nil +} + +// NewIZRC20MetadataTransactor creates a new write-only instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IZRC20MetadataTransactor, error) { + contract, err := bindIZRC20Metadata(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IZRC20MetadataTransactor{contract: contract}, nil +} + +// NewIZRC20MetadataFilterer creates a new log filterer instance of IZRC20Metadata, bound to a specific deployed contract. +func NewIZRC20MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IZRC20MetadataFilterer, error) { + contract, err := bindIZRC20Metadata(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IZRC20MetadataFilterer{contract: contract}, nil +} + +// bindIZRC20Metadata binds a generic wrapper to an already deployed contract. +func bindIZRC20Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IZRC20MetadataMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20Metadata *IZRC20MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20Metadata.Contract.IZRC20MetadataCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20Metadata *IZRC20MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20Metadata *IZRC20MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.IZRC20MetadataTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IZRC20Metadata *IZRC20MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IZRC20Metadata.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.contract.Transact(opts, method, params...) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.Allowance(&_IZRC20Metadata.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _IZRC20Metadata.Contract.BalanceOf(&_IZRC20Metadata.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataSession) Decimals() (uint8, error) { + return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Decimals() (uint8, error) { + return _IZRC20Metadata.Contract.Decimals(&_IZRC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataSession) Name() (string, error) { + return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Name() (string, error) { + return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataSession) Symbol() (string, error) { + return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) Symbol() (string, error) { + return _IZRC20Metadata.Contract.Symbol(&_IZRC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) TotalSupply() (*big.Int, error) { + return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) TotalSupply() (*big.Int, error) { + return _IZRC20Metadata.Contract.TotalSupply(&_IZRC20Metadata.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _IZRC20Metadata.Contract.WithdrawGasFee(&_IZRC20Metadata.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Approve(&_IZRC20Metadata.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Burn(&_IZRC20Metadata.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Deposit(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Transfer(&_IZRC20Metadata.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.TransferFrom(&_IZRC20Metadata.TransactOpts, sender, recipient, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_IZRC20Metadata *IZRC20MetadataTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _IZRC20Metadata.Contract.Withdraw(&_IZRC20Metadata.TransactOpts, to, amount) +} diff --git a/v2/pkg/izrc20.sol/zrc20events.go b/v2/pkg/izrc20.sol/zrc20events.go new file mode 100644 index 00000000..76f02207 --- /dev/null +++ b/v2/pkg/izrc20.sol/zrc20events.go @@ -0,0 +1,1185 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package izrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20EventsMetaData contains all meta data concerning the ZRC20Events contract. +var ZRC20EventsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// ZRC20EventsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20EventsMetaData.ABI instead. +var ZRC20EventsABI = ZRC20EventsMetaData.ABI + +// ZRC20Events is an auto generated Go binding around an Ethereum contract. +type ZRC20Events struct { + ZRC20EventsCaller // Read-only binding to the contract + ZRC20EventsTransactor // Write-only binding to the contract + ZRC20EventsFilterer // Log filterer for contract events +} + +// ZRC20EventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20EventsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20EventsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20EventsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20EventsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20EventsSession struct { + Contract *ZRC20Events // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20EventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20EventsCallerSession struct { + Contract *ZRC20EventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20EventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20EventsTransactorSession struct { + Contract *ZRC20EventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20EventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20EventsRaw struct { + Contract *ZRC20Events // Generic contract binding to access the raw methods on +} + +// ZRC20EventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20EventsCallerRaw struct { + Contract *ZRC20EventsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20EventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20EventsTransactorRaw struct { + Contract *ZRC20EventsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Events creates a new instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20Events(address common.Address, backend bind.ContractBackend) (*ZRC20Events, error) { + contract, err := bindZRC20Events(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Events{ZRC20EventsCaller: ZRC20EventsCaller{contract: contract}, ZRC20EventsTransactor: ZRC20EventsTransactor{contract: contract}, ZRC20EventsFilterer: ZRC20EventsFilterer{contract: contract}}, nil +} + +// NewZRC20EventsCaller creates a new read-only instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20EventsCaller, error) { + contract, err := bindZRC20Events(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20EventsCaller{contract: contract}, nil +} + +// NewZRC20EventsTransactor creates a new write-only instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20EventsTransactor, error) { + contract, err := bindZRC20Events(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20EventsTransactor{contract: contract}, nil +} + +// NewZRC20EventsFilterer creates a new log filterer instance of ZRC20Events, bound to a specific deployed contract. +func NewZRC20EventsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20EventsFilterer, error) { + contract, err := bindZRC20Events(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20EventsFilterer{contract: contract}, nil +} + +// bindZRC20Events binds a generic wrapper to an already deployed contract. +func bindZRC20Events(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20EventsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Events *ZRC20EventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Events.Contract.ZRC20EventsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Events *ZRC20EventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Events *ZRC20EventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Events.Contract.ZRC20EventsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Events *ZRC20EventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Events.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Events *ZRC20EventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Events.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Events *ZRC20EventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Events.Contract.contract.Transact(opts, method, params...) +} + +// ZRC20EventsApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20Events contract. +type ZRC20EventsApprovalIterator struct { + Event *ZRC20EventsApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsApproval represents a Approval event raised by the ZRC20Events contract. +type ZRC20EventsApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20EventsApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZRC20EventsApprovalIterator{contract: _ZRC20Events.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20EventsApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsApproval) + if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseApproval(log types.Log) (*ZRC20EventsApproval, error) { + event := new(ZRC20EventsApproval) + if err := _ZRC20Events.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20Events contract. +type ZRC20EventsDepositIterator struct { + Event *ZRC20EventsDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsDeposit represents a Deposit event raised by the ZRC20Events contract. +type ZRC20EventsDeposit struct { + From []byte + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20EventsDepositIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return &ZRC20EventsDepositIterator{contract: _ZRC20Events.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsDeposit, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsDeposit) + if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseDeposit(log types.Log) (*ZRC20EventsDeposit, error) { + event := new(ZRC20EventsDeposit) + if err := _ZRC20Events.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20Events contract. +type ZRC20EventsTransferIterator struct { + Event *ZRC20EventsTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsTransfer represents a Transfer event raised by the ZRC20Events contract. +type ZRC20EventsTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20EventsTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZRC20EventsTransferIterator{contract: _ZRC20Events.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20EventsTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsTransfer) + if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20Events *ZRC20EventsFilterer) ParseTransfer(log types.Log) (*ZRC20EventsTransfer, error) { + event := new(ZRC20EventsTransfer) + if err := _ZRC20Events.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGasLimitIterator struct { + Event *ZRC20EventsUpdatedGasLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedGasLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedGasLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedGasLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGasLimit struct { + GasLimit *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20EventsUpdatedGasLimitIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedGasLimitIterator{contract: _ZRC20Events.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedGasLimit) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedGasLimit) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20EventsUpdatedGasLimit, error) { + event := new(ZRC20EventsUpdatedGasLimit) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedProtocolFlatFeeIterator struct { + Event *ZRC20EventsUpdatedProtocolFlatFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedProtocolFlatFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedProtocolFlatFee struct { + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20EventsUpdatedProtocolFlatFeeIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedProtocolFlatFeeIterator{contract: _ZRC20Events.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedProtocolFlatFee) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedProtocolFlatFee) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20EventsUpdatedProtocolFlatFee, error) { + event := new(ZRC20EventsUpdatedProtocolFlatFee) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedSystemContractIterator struct { + Event *ZRC20EventsUpdatedSystemContract // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedSystemContractIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedSystemContractIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedSystemContractIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedSystemContract struct { + SystemContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20EventsUpdatedSystemContractIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedSystemContractIterator{contract: _ZRC20Events.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil +} + +// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedSystemContract) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedSystemContract) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20EventsUpdatedSystemContract, error) { + event := new(ZRC20EventsUpdatedSystemContract) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20EventsWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20Events contract. +type ZRC20EventsWithdrawalIterator struct { + Event *ZRC20EventsWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsWithdrawal represents a Withdrawal event raised by the ZRC20Events contract. +type ZRC20EventsWithdrawal struct { + From common.Address + To []byte + Value *big.Int + GasFee *big.Int + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20EventsWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &ZRC20EventsWithdrawalIterator{contract: _ZRC20Events.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20EventsWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsWithdrawal) + if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20Events *ZRC20EventsFilterer) ParseWithdrawal(log types.Log) (*ZRC20EventsWithdrawal, error) { + event := new(ZRC20EventsWithdrawal) + if err := _ZRC20Events.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/math.sol/math.go b/v2/pkg/math.sol/math.go new file mode 100644 index 00000000..024b7c04 --- /dev/null +++ b/v2/pkg/math.sol/math.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package math + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MathMetaData contains all meta data concerning the Math contract. +var MathMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"MathOverflowedMulDiv\",\"inputs\":[]}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0b270b0be59fe690f25903756d3c17b6ea12af9948ddfe45caafa979d407cf964736f6c634300081a0033", +} + +// MathABI is the input ABI used to generate the binding from. +// Deprecated: Use MathMetaData.ABI instead. +var MathABI = MathMetaData.ABI + +// MathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MathMetaData.Bin instead. +var MathBin = MathMetaData.Bin + +// DeployMath deploys a new Ethereum contract, binding an instance of Math to it. +func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// Math is an auto generated Go binding around an Ethereum contract. +type Math struct { + MathCaller // Read-only binding to the contract + MathTransactor // Write-only binding to the contract + MathFilterer // Log filterer for contract events +} + +// MathCaller is an auto generated read-only Go binding around an Ethereum contract. +type MathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MathSession struct { + Contract *Math // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MathCallerSession struct { + Contract *MathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MathTransactorSession struct { + Contract *MathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MathRaw is an auto generated low-level Go binding around an Ethereum contract. +type MathRaw struct { + Contract *Math // Generic contract binding to access the raw methods on +} + +// MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MathCallerRaw struct { + Contract *MathCaller // Generic read-only contract binding to access the raw methods on +} + +// MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MathTransactorRaw struct { + Contract *MathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMath creates a new instance of Math, bound to a specific deployed contract. +func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) { + contract, err := bindMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil +} + +// NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract. +func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) { + contract, err := bindMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MathCaller{contract: contract}, nil +} + +// NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract. +func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) { + contract, err := bindMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MathTransactor{contract: contract}, nil +} + +// NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract. +func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) { + contract, err := bindMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MathFilterer{contract: contract}, nil +} + +// bindMath binds a generic wrapper to an already deployed contract. +func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Math.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Math.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Math.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/mockerc20.sol/mockerc20.go b/v2/pkg/mockerc20.sol/mockerc20.go new file mode 100644 index 00000000..1f23395f --- /dev/null +++ b/v2/pkg/mockerc20.sol/mockerc20.go @@ -0,0 +1,864 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package mockerc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MockERC20MetaData contains all meta data concerning the MockERC20 contract. +var MockERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220851d97dae90e79fa61b9e1ffe627628587a83f0e58ff9e31aa3727a08c88fd7d64736f6c634300081a0033", +} + +// MockERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use MockERC20MetaData.ABI instead. +var MockERC20ABI = MockERC20MetaData.ABI + +// MockERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MockERC20MetaData.Bin instead. +var MockERC20Bin = MockERC20MetaData.Bin + +// DeployMockERC20 deploys a new Ethereum contract, binding an instance of MockERC20 to it. +func DeployMockERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *MockERC20, error) { + parsed, err := MockERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MockERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &MockERC20{MockERC20Caller: MockERC20Caller{contract: contract}, MockERC20Transactor: MockERC20Transactor{contract: contract}, MockERC20Filterer: MockERC20Filterer{contract: contract}}, nil +} + +// MockERC20 is an auto generated Go binding around an Ethereum contract. +type MockERC20 struct { + MockERC20Caller // Read-only binding to the contract + MockERC20Transactor // Write-only binding to the contract + MockERC20Filterer // Log filterer for contract events +} + +// MockERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type MockERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type MockERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MockERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MockERC20Session struct { + Contract *MockERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MockERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MockERC20CallerSession struct { + Contract *MockERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MockERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MockERC20TransactorSession struct { + Contract *MockERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MockERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type MockERC20Raw struct { + Contract *MockERC20 // Generic contract binding to access the raw methods on +} + +// MockERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MockERC20CallerRaw struct { + Contract *MockERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// MockERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MockERC20TransactorRaw struct { + Contract *MockERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewMockERC20 creates a new instance of MockERC20, bound to a specific deployed contract. +func NewMockERC20(address common.Address, backend bind.ContractBackend) (*MockERC20, error) { + contract, err := bindMockERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &MockERC20{MockERC20Caller: MockERC20Caller{contract: contract}, MockERC20Transactor: MockERC20Transactor{contract: contract}, MockERC20Filterer: MockERC20Filterer{contract: contract}}, nil +} + +// NewMockERC20Caller creates a new read-only instance of MockERC20, bound to a specific deployed contract. +func NewMockERC20Caller(address common.Address, caller bind.ContractCaller) (*MockERC20Caller, error) { + contract, err := bindMockERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MockERC20Caller{contract: contract}, nil +} + +// NewMockERC20Transactor creates a new write-only instance of MockERC20, bound to a specific deployed contract. +func NewMockERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*MockERC20Transactor, error) { + contract, err := bindMockERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MockERC20Transactor{contract: contract}, nil +} + +// NewMockERC20Filterer creates a new log filterer instance of MockERC20, bound to a specific deployed contract. +func NewMockERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*MockERC20Filterer, error) { + contract, err := bindMockERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MockERC20Filterer{contract: contract}, nil +} + +// bindMockERC20 binds a generic wrapper to an already deployed contract. +func bindMockERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MockERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MockERC20 *MockERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MockERC20.Contract.MockERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MockERC20 *MockERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MockERC20.Contract.MockERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MockERC20 *MockERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MockERC20.Contract.MockERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MockERC20 *MockERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MockERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MockERC20 *MockERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MockERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MockERC20 *MockERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MockERC20.Contract.contract.Transact(opts, method, params...) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_MockERC20 *MockERC20Caller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_MockERC20 *MockERC20Session) DOMAINSEPARATOR() ([32]byte, error) { + return _MockERC20.Contract.DOMAINSEPARATOR(&_MockERC20.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_MockERC20 *MockERC20CallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _MockERC20.Contract.DOMAINSEPARATOR(&_MockERC20.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MockERC20 *MockERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MockERC20 *MockERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _MockERC20.Contract.Allowance(&_MockERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_MockERC20 *MockERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _MockERC20.Contract.Allowance(&_MockERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC20 *MockERC20Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC20 *MockERC20Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _MockERC20.Contract.BalanceOf(&_MockERC20.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC20 *MockERC20CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _MockERC20.Contract.BalanceOf(&_MockERC20.CallOpts, owner) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MockERC20 *MockERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MockERC20 *MockERC20Session) Decimals() (uint8, error) { + return _MockERC20.Contract.Decimals(&_MockERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_MockERC20 *MockERC20CallerSession) Decimals() (uint8, error) { + return _MockERC20.Contract.Decimals(&_MockERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC20 *MockERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC20 *MockERC20Session) Name() (string, error) { + return _MockERC20.Contract.Name(&_MockERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC20 *MockERC20CallerSession) Name() (string, error) { + return _MockERC20.Contract.Name(&_MockERC20.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_MockERC20 *MockERC20Caller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "nonces", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_MockERC20 *MockERC20Session) Nonces(arg0 common.Address) (*big.Int, error) { + return _MockERC20.Contract.Nonces(&_MockERC20.CallOpts, arg0) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address ) view returns(uint256) +func (_MockERC20 *MockERC20CallerSession) Nonces(arg0 common.Address) (*big.Int, error) { + return _MockERC20.Contract.Nonces(&_MockERC20.CallOpts, arg0) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC20 *MockERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC20 *MockERC20Session) Symbol() (string, error) { + return _MockERC20.Contract.Symbol(&_MockERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC20 *MockERC20CallerSession) Symbol() (string, error) { + return _MockERC20.Contract.Symbol(&_MockERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MockERC20 *MockERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MockERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MockERC20 *MockERC20Session) TotalSupply() (*big.Int, error) { + return _MockERC20.Contract.TotalSupply(&_MockERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_MockERC20 *MockERC20CallerSession) TotalSupply() (*big.Int, error) { + return _MockERC20.Contract.TotalSupply(&_MockERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.Approve(&_MockERC20.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.Approve(&_MockERC20.TransactOpts, spender, amount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1624f6c6. +// +// Solidity: function initialize(string name_, string symbol_, uint8 decimals_) returns() +func (_MockERC20 *MockERC20Transactor) Initialize(opts *bind.TransactOpts, name_ string, symbol_ string, decimals_ uint8) (*types.Transaction, error) { + return _MockERC20.contract.Transact(opts, "initialize", name_, symbol_, decimals_) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1624f6c6. +// +// Solidity: function initialize(string name_, string symbol_, uint8 decimals_) returns() +func (_MockERC20 *MockERC20Session) Initialize(name_ string, symbol_ string, decimals_ uint8) (*types.Transaction, error) { + return _MockERC20.Contract.Initialize(&_MockERC20.TransactOpts, name_, symbol_, decimals_) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1624f6c6. +// +// Solidity: function initialize(string name_, string symbol_, uint8 decimals_) returns() +func (_MockERC20 *MockERC20TransactorSession) Initialize(name_ string, symbol_ string, decimals_ uint8) (*types.Transaction, error) { + return _MockERC20.Contract.Initialize(&_MockERC20.TransactOpts, name_, symbol_, decimals_) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_MockERC20 *MockERC20Transactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _MockERC20.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_MockERC20 *MockERC20Session) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _MockERC20.Contract.Permit(&_MockERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_MockERC20 *MockERC20TransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _MockERC20.Contract.Permit(&_MockERC20.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.Transfer(&_MockERC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.Transfer(&_MockERC20.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.TransferFrom(&_MockERC20.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_MockERC20 *MockERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _MockERC20.Contract.TransferFrom(&_MockERC20.TransactOpts, from, to, amount) +} + +// MockERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MockERC20 contract. +type MockERC20ApprovalIterator struct { + Event *MockERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MockERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MockERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MockERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MockERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MockERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MockERC20Approval represents a Approval event raised by the MockERC20 contract. +type MockERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MockERC20 *MockERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*MockERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _MockERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &MockERC20ApprovalIterator{contract: _MockERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MockERC20 *MockERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *MockERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _MockERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MockERC20Approval) + if err := _MockERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_MockERC20 *MockERC20Filterer) ParseApproval(log types.Log) (*MockERC20Approval, error) { + event := new(MockERC20Approval) + if err := _MockERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MockERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the MockERC20 contract. +type MockERC20TransferIterator struct { + Event *MockERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MockERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MockERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MockERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MockERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MockERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MockERC20Transfer represents a Transfer event raised by the MockERC20 contract. +type MockERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MockERC20 *MockERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*MockERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _MockERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &MockERC20TransferIterator{contract: _MockERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MockERC20 *MockERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *MockERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _MockERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MockERC20Transfer) + if err := _MockERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_MockERC20 *MockERC20Filterer) ParseTransfer(log types.Log) (*MockERC20Transfer, error) { + event := new(MockERC20Transfer) + if err := _MockERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/mockerc721.sol/mockerc721.go b/v2/pkg/mockerc721.sol/mockerc721.go new file mode 100644 index 00000000..93595ac0 --- /dev/null +++ b/v2/pkg/mockerc721.sol/mockerc721.go @@ -0,0 +1,1055 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package mockerc721 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MockERC721MetaData contains all meta data concerning the MockERC721 contract. +var MockERC721MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApproved\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerOf\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenURI\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ApprovalForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea26469706673582212202332803a16bf7eaf4a68e83df79b845e756649c92da3b94bb9b4061f246da5be64736f6c634300081a0033", +} + +// MockERC721ABI is the input ABI used to generate the binding from. +// Deprecated: Use MockERC721MetaData.ABI instead. +var MockERC721ABI = MockERC721MetaData.ABI + +// MockERC721Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MockERC721MetaData.Bin instead. +var MockERC721Bin = MockERC721MetaData.Bin + +// DeployMockERC721 deploys a new Ethereum contract, binding an instance of MockERC721 to it. +func DeployMockERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *MockERC721, error) { + parsed, err := MockERC721MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MockERC721Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &MockERC721{MockERC721Caller: MockERC721Caller{contract: contract}, MockERC721Transactor: MockERC721Transactor{contract: contract}, MockERC721Filterer: MockERC721Filterer{contract: contract}}, nil +} + +// MockERC721 is an auto generated Go binding around an Ethereum contract. +type MockERC721 struct { + MockERC721Caller // Read-only binding to the contract + MockERC721Transactor // Write-only binding to the contract + MockERC721Filterer // Log filterer for contract events +} + +// MockERC721Caller is an auto generated read-only Go binding around an Ethereum contract. +type MockERC721Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC721Transactor is an auto generated write-only Go binding around an Ethereum contract. +type MockERC721Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC721Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MockERC721Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MockERC721Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MockERC721Session struct { + Contract *MockERC721 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MockERC721CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MockERC721CallerSession struct { + Contract *MockERC721Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MockERC721TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MockERC721TransactorSession struct { + Contract *MockERC721Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MockERC721Raw is an auto generated low-level Go binding around an Ethereum contract. +type MockERC721Raw struct { + Contract *MockERC721 // Generic contract binding to access the raw methods on +} + +// MockERC721CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MockERC721CallerRaw struct { + Contract *MockERC721Caller // Generic read-only contract binding to access the raw methods on +} + +// MockERC721TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MockERC721TransactorRaw struct { + Contract *MockERC721Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewMockERC721 creates a new instance of MockERC721, bound to a specific deployed contract. +func NewMockERC721(address common.Address, backend bind.ContractBackend) (*MockERC721, error) { + contract, err := bindMockERC721(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &MockERC721{MockERC721Caller: MockERC721Caller{contract: contract}, MockERC721Transactor: MockERC721Transactor{contract: contract}, MockERC721Filterer: MockERC721Filterer{contract: contract}}, nil +} + +// NewMockERC721Caller creates a new read-only instance of MockERC721, bound to a specific deployed contract. +func NewMockERC721Caller(address common.Address, caller bind.ContractCaller) (*MockERC721Caller, error) { + contract, err := bindMockERC721(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MockERC721Caller{contract: contract}, nil +} + +// NewMockERC721Transactor creates a new write-only instance of MockERC721, bound to a specific deployed contract. +func NewMockERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*MockERC721Transactor, error) { + contract, err := bindMockERC721(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MockERC721Transactor{contract: contract}, nil +} + +// NewMockERC721Filterer creates a new log filterer instance of MockERC721, bound to a specific deployed contract. +func NewMockERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*MockERC721Filterer, error) { + contract, err := bindMockERC721(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MockERC721Filterer{contract: contract}, nil +} + +// bindMockERC721 binds a generic wrapper to an already deployed contract. +func bindMockERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MockERC721MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MockERC721 *MockERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MockERC721.Contract.MockERC721Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MockERC721 *MockERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MockERC721.Contract.MockERC721Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MockERC721 *MockERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MockERC721.Contract.MockERC721Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MockERC721 *MockERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MockERC721.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MockERC721 *MockERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MockERC721.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MockERC721 *MockERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MockERC721.Contract.contract.Transact(opts, method, params...) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC721 *MockERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC721 *MockERC721Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _MockERC721.Contract.BalanceOf(&_MockERC721.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_MockERC721 *MockERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _MockERC721.Contract.BalanceOf(&_MockERC721.CallOpts, owner) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 id) view returns(address) +func (_MockERC721 *MockERC721Caller) GetApproved(opts *bind.CallOpts, id *big.Int) (common.Address, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "getApproved", id) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 id) view returns(address) +func (_MockERC721 *MockERC721Session) GetApproved(id *big.Int) (common.Address, error) { + return _MockERC721.Contract.GetApproved(&_MockERC721.CallOpts, id) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 id) view returns(address) +func (_MockERC721 *MockERC721CallerSession) GetApproved(id *big.Int) (common.Address, error) { + return _MockERC721.Contract.GetApproved(&_MockERC721.CallOpts, id) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_MockERC721 *MockERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_MockERC721 *MockERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _MockERC721.Contract.IsApprovedForAll(&_MockERC721.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_MockERC721 *MockERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _MockERC721.Contract.IsApprovedForAll(&_MockERC721.CallOpts, owner, operator) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC721 *MockERC721Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC721 *MockERC721Session) Name() (string, error) { + return _MockERC721.Contract.Name(&_MockERC721.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_MockERC721 *MockERC721CallerSession) Name() (string, error) { + return _MockERC721.Contract.Name(&_MockERC721.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 id) view returns(address owner) +func (_MockERC721 *MockERC721Caller) OwnerOf(opts *bind.CallOpts, id *big.Int) (common.Address, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "ownerOf", id) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 id) view returns(address owner) +func (_MockERC721 *MockERC721Session) OwnerOf(id *big.Int) (common.Address, error) { + return _MockERC721.Contract.OwnerOf(&_MockERC721.CallOpts, id) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 id) view returns(address owner) +func (_MockERC721 *MockERC721CallerSession) OwnerOf(id *big.Int) (common.Address, error) { + return _MockERC721.Contract.OwnerOf(&_MockERC721.CallOpts, id) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_MockERC721 *MockERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_MockERC721 *MockERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _MockERC721.Contract.SupportsInterface(&_MockERC721.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_MockERC721 *MockERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _MockERC721.Contract.SupportsInterface(&_MockERC721.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC721 *MockERC721Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC721 *MockERC721Session) Symbol() (string, error) { + return _MockERC721.Contract.Symbol(&_MockERC721.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_MockERC721 *MockERC721CallerSession) Symbol() (string, error) { + return _MockERC721.Contract.Symbol(&_MockERC721.CallOpts) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 id) view returns(string) +func (_MockERC721 *MockERC721Caller) TokenURI(opts *bind.CallOpts, id *big.Int) (string, error) { + var out []interface{} + err := _MockERC721.contract.Call(opts, &out, "tokenURI", id) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 id) view returns(string) +func (_MockERC721 *MockERC721Session) TokenURI(id *big.Int) (string, error) { + return _MockERC721.Contract.TokenURI(&_MockERC721.CallOpts, id) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 id) view returns(string) +func (_MockERC721 *MockERC721CallerSession) TokenURI(id *big.Int) (string, error) { + return _MockERC721.Contract.TokenURI(&_MockERC721.CallOpts, id) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 id) payable returns() +func (_MockERC721 *MockERC721Transactor) Approve(opts *bind.TransactOpts, spender common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "approve", spender, id) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 id) payable returns() +func (_MockERC721 *MockERC721Session) Approve(spender common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.Approve(&_MockERC721.TransactOpts, spender, id) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 id) payable returns() +func (_MockERC721 *MockERC721TransactorSession) Approve(spender common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.Approve(&_MockERC721.TransactOpts, spender, id) +} + +// Initialize is a paid mutator transaction binding the contract method 0x4cd88b76. +// +// Solidity: function initialize(string name_, string symbol_) returns() +func (_MockERC721 *MockERC721Transactor) Initialize(opts *bind.TransactOpts, name_ string, symbol_ string) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "initialize", name_, symbol_) +} + +// Initialize is a paid mutator transaction binding the contract method 0x4cd88b76. +// +// Solidity: function initialize(string name_, string symbol_) returns() +func (_MockERC721 *MockERC721Session) Initialize(name_ string, symbol_ string) (*types.Transaction, error) { + return _MockERC721.Contract.Initialize(&_MockERC721.TransactOpts, name_, symbol_) +} + +// Initialize is a paid mutator transaction binding the contract method 0x4cd88b76. +// +// Solidity: function initialize(string name_, string symbol_) returns() +func (_MockERC721 *MockERC721TransactorSession) Initialize(name_ string, symbol_ string) (*types.Transaction, error) { + return _MockERC721.Contract.Initialize(&_MockERC721.TransactOpts, name_, symbol_) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "safeTransferFrom", from, to, id) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721Session) SafeTransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.SafeTransferFrom(&_MockERC721.TransactOpts, from, to, id) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.SafeTransferFrom(&_MockERC721.TransactOpts, from, to, id) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) payable returns() +func (_MockERC721 *MockERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "safeTransferFrom0", from, to, id, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) payable returns() +func (_MockERC721 *MockERC721Session) SafeTransferFrom0(from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { + return _MockERC721.Contract.SafeTransferFrom0(&_MockERC721.TransactOpts, from, to, id, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) payable returns() +func (_MockERC721 *MockERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { + return _MockERC721.Contract.SafeTransferFrom0(&_MockERC721.TransactOpts, from, to, id, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_MockERC721 *MockERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_MockERC721 *MockERC721Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _MockERC721.Contract.SetApprovalForAll(&_MockERC721.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_MockERC721 *MockERC721TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _MockERC721.Contract.SetApprovalForAll(&_MockERC721.TransactOpts, operator, approved) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.contract.Transact(opts, "transferFrom", from, to, id) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721Session) TransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.TransferFrom(&_MockERC721.TransactOpts, from, to, id) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 id) payable returns() +func (_MockERC721 *MockERC721TransactorSession) TransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { + return _MockERC721.Contract.TransferFrom(&_MockERC721.TransactOpts, from, to, id) +} + +// MockERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MockERC721 contract. +type MockERC721ApprovalIterator struct { + Event *MockERC721Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MockERC721ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MockERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MockERC721Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MockERC721ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MockERC721ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MockERC721Approval represents a Approval event raised by the MockERC721 contract. +type MockERC721Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (*MockERC721ApprovalIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _MockERC721.contract.FilterLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &MockERC721ApprovalIterator{contract: _MockERC721.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *MockERC721Approval, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _approvedRule []interface{} + for _, _approvedItem := range _approved { + _approvedRule = append(_approvedRule, _approvedItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _MockERC721.contract.WatchLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MockERC721Approval) + if err := _MockERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) ParseApproval(log types.Log) (*MockERC721Approval, error) { + event := new(MockERC721Approval) + if err := _MockERC721.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MockERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the MockERC721 contract. +type MockERC721ApprovalForAllIterator struct { + Event *MockERC721ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MockERC721ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MockERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MockERC721ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MockERC721ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MockERC721ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MockERC721ApprovalForAll represents a ApprovalForAll event raised by the MockERC721 contract. +type MockERC721ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_MockERC721 *MockERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, _owner []common.Address, _operator []common.Address) (*MockERC721ApprovalForAllIterator, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _MockERC721.contract.FilterLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return &MockERC721ApprovalForAllIterator{contract: _MockERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_MockERC721 *MockERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *MockERC721ApprovalForAll, _owner []common.Address, _operator []common.Address) (event.Subscription, error) { + + var _ownerRule []interface{} + for _, _ownerItem := range _owner { + _ownerRule = append(_ownerRule, _ownerItem) + } + var _operatorRule []interface{} + for _, _operatorItem := range _operator { + _operatorRule = append(_operatorRule, _operatorItem) + } + + logs, sub, err := _MockERC721.contract.WatchLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MockERC721ApprovalForAll) + if err := _MockERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved) +func (_MockERC721 *MockERC721Filterer) ParseApprovalForAll(log types.Log) (*MockERC721ApprovalForAll, error) { + event := new(MockERC721ApprovalForAll) + if err := _MockERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// MockERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the MockERC721 contract. +type MockERC721TransferIterator struct { + Event *MockERC721Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MockERC721TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MockERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MockERC721Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MockERC721TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MockERC721TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MockERC721Transfer represents a Transfer event raised by the MockERC721 contract. +type MockERC721Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (*MockERC721TransferIterator, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _MockERC721.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return &MockERC721TransferIterator{contract: _MockERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *MockERC721Transfer, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (event.Subscription, error) { + + var _fromRule []interface{} + for _, _fromItem := range _from { + _fromRule = append(_fromRule, _fromItem) + } + var _toRule []interface{} + for _, _toItem := range _to { + _toRule = append(_toRule, _toItem) + } + var _tokenIdRule []interface{} + for _, _tokenIdItem := range _tokenId { + _tokenIdRule = append(_tokenIdRule, _tokenIdItem) + } + + logs, sub, err := _MockERC721.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MockERC721Transfer) + if err := _MockERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId) +func (_MockERC721 *MockERC721Filterer) ParseTransfer(log types.Log) (*MockERC721Transfer, error) { + event := new(MockERC721Transfer) + if err := _MockERC721.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/options.sol/options.go b/v2/pkg/options.sol/options.go new file mode 100644 index 00000000..e2fead7b --- /dev/null +++ b/v2/pkg/options.sol/options.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package options + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OptionsMetaData contains all meta data concerning the Options contract. +var OptionsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// OptionsABI is the input ABI used to generate the binding from. +// Deprecated: Use OptionsMetaData.ABI instead. +var OptionsABI = OptionsMetaData.ABI + +// Options is an auto generated Go binding around an Ethereum contract. +type Options struct { + OptionsCaller // Read-only binding to the contract + OptionsTransactor // Write-only binding to the contract + OptionsFilterer // Log filterer for contract events +} + +// OptionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type OptionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OptionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OptionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OptionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OptionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OptionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OptionsSession struct { + Contract *Options // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OptionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OptionsCallerSession struct { + Contract *OptionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OptionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OptionsTransactorSession struct { + Contract *OptionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OptionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type OptionsRaw struct { + Contract *Options // Generic contract binding to access the raw methods on +} + +// OptionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OptionsCallerRaw struct { + Contract *OptionsCaller // Generic read-only contract binding to access the raw methods on +} + +// OptionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OptionsTransactorRaw struct { + Contract *OptionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOptions creates a new instance of Options, bound to a specific deployed contract. +func NewOptions(address common.Address, backend bind.ContractBackend) (*Options, error) { + contract, err := bindOptions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Options{OptionsCaller: OptionsCaller{contract: contract}, OptionsTransactor: OptionsTransactor{contract: contract}, OptionsFilterer: OptionsFilterer{contract: contract}}, nil +} + +// NewOptionsCaller creates a new read-only instance of Options, bound to a specific deployed contract. +func NewOptionsCaller(address common.Address, caller bind.ContractCaller) (*OptionsCaller, error) { + contract, err := bindOptions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OptionsCaller{contract: contract}, nil +} + +// NewOptionsTransactor creates a new write-only instance of Options, bound to a specific deployed contract. +func NewOptionsTransactor(address common.Address, transactor bind.ContractTransactor) (*OptionsTransactor, error) { + contract, err := bindOptions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OptionsTransactor{contract: contract}, nil +} + +// NewOptionsFilterer creates a new log filterer instance of Options, bound to a specific deployed contract. +func NewOptionsFilterer(address common.Address, filterer bind.ContractFilterer) (*OptionsFilterer, error) { + contract, err := bindOptions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OptionsFilterer{contract: contract}, nil +} + +// bindOptions binds a generic wrapper to an already deployed contract. +func bindOptions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OptionsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Options *OptionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Options.Contract.OptionsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Options *OptionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Options.Contract.OptionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Options *OptionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Options.Contract.OptionsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Options *OptionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Options.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Options *OptionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Options.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Options *OptionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Options.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/ownable.sol/ownable.go b/v2/pkg/ownable.sol/ownable.go new file mode 100644 index 00000000..48b52d64 --- /dev/null +++ b/v2/pkg/ownable.sol/ownable.go @@ -0,0 +1,407 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ownable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OwnableMetaData contains all meta data concerning the Ownable contract. +var OwnableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", +} + +// OwnableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableMetaData.ABI instead. +var OwnableABI = OwnableMetaData.ABI + +// Ownable is an auto generated Go binding around an Ethereum contract. +type Ownable struct { + OwnableCaller // Read-only binding to the contract + OwnableTransactor // Write-only binding to the contract + OwnableFilterer // Log filterer for contract events +} + +// OwnableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableSession struct { + Contract *Ownable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableCallerSession struct { + Contract *OwnableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableTransactorSession struct { + Contract *OwnableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableRaw struct { + Contract *Ownable // Generic contract binding to access the raw methods on +} + +// OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableCallerRaw struct { + Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableTransactorRaw struct { + Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnable creates a new instance of Ownable, bound to a specific deployed contract. +func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) { + contract, err := bindOwnable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil +} + +// NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) { + contract, err := bindOwnable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableCaller{contract: contract}, nil +} + +// NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract. +func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) { + contract, err := bindOwnable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableTransactor{contract: contract}, nil +} + +// NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract. +func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) { + contract, err := bindOwnable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableFilterer{contract: contract}, nil +} + +// bindOwnable binds a generic wrapper to an already deployed contract. +func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Ownable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Ownable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Ownable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) { + return _Ownable.Contract.Owner(&_Ownable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Ownable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner) +} + +// OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract. +type OwnableOwnershipTransferredIterator struct { + Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract. +type OwnableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) { + event := new(OwnableOwnershipTransferred) + if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go b/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go new file mode 100644 index 00000000..0d32f37f --- /dev/null +++ b/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go @@ -0,0 +1,541 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ownableupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. +var OwnableUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", +} + +// OwnableUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. +var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI + +// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. +type OwnableUpgradeable struct { + OwnableUpgradeableCaller // Read-only binding to the contract + OwnableUpgradeableTransactor // Write-only binding to the contract + OwnableUpgradeableFilterer // Log filterer for contract events +} + +// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OwnableUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OwnableUpgradeableSession struct { + Contract *OwnableUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OwnableUpgradeableCallerSession struct { + Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OwnableUpgradeableTransactorSession struct { + Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type OwnableUpgradeableRaw struct { + Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on +} + +// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OwnableUpgradeableCallerRaw struct { + Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OwnableUpgradeableTransactorRaw struct { + Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { + contract, err := bindOwnableUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil +} + +// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { + contract, err := bindOwnableUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableCaller{contract: contract}, nil +} + +// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { + contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OwnableUpgradeableTransactor{contract: contract}, nil +} + +// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. +func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { + contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OwnableUpgradeableFilterer{contract: contract}, nil +} + +// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. +func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OwnableUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { + return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) +} + +// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitializedIterator struct { + Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { + event := new(OwnableUpgradeableInitialized) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferredIterator struct { + Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OwnableUpgradeableOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. +type OwnableUpgradeableOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { + event := new(OwnableUpgradeableOwnershipTransferred) + if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/proxy.sol/proxy.go b/v2/pkg/proxy.sol/proxy.go new file mode 100644 index 00000000..71f6f04b --- /dev/null +++ b/v2/pkg/proxy.sol/proxy.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package proxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ProxyMetaData contains all meta data concerning the Proxy contract. +var ProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"}]", +} + +// ProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyMetaData.ABI instead. +var ProxyABI = ProxyMetaData.ABI + +// Proxy is an auto generated Go binding around an Ethereum contract. +type Proxy struct { + ProxyCaller // Read-only binding to the contract + ProxyTransactor // Write-only binding to the contract + ProxyFilterer // Log filterer for contract events +} + +// ProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxySession struct { + Contract *Proxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyCallerSession struct { + Contract *ProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyTransactorSession struct { + Contract *ProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyRaw struct { + Contract *Proxy // Generic contract binding to access the raw methods on +} + +// ProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyCallerRaw struct { + Contract *ProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyTransactorRaw struct { + Contract *ProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxy creates a new instance of Proxy, bound to a specific deployed contract. +func NewProxy(address common.Address, backend bind.ContractBackend) (*Proxy, error) { + contract, err := bindProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Proxy{ProxyCaller: ProxyCaller{contract: contract}, ProxyTransactor: ProxyTransactor{contract: contract}, ProxyFilterer: ProxyFilterer{contract: contract}}, nil +} + +// NewProxyCaller creates a new read-only instance of Proxy, bound to a specific deployed contract. +func NewProxyCaller(address common.Address, caller bind.ContractCaller) (*ProxyCaller, error) { + contract, err := bindProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyCaller{contract: contract}, nil +} + +// NewProxyTransactor creates a new write-only instance of Proxy, bound to a specific deployed contract. +func NewProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyTransactor, error) { + contract, err := bindProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyTransactor{contract: contract}, nil +} + +// NewProxyFilterer creates a new log filterer instance of Proxy, bound to a specific deployed contract. +func NewProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyFilterer, error) { + contract, err := bindProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyFilterer{contract: contract}, nil +} + +// bindProxy binds a generic wrapper to an already deployed contract. +func bindProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.ProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.ProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Proxy *ProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Proxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Proxy *ProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Proxy *ProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Proxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Proxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Proxy *ProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Proxy.Contract.Fallback(&_Proxy.TransactOpts, calldata) +} diff --git a/v2/pkg/proxyadmin.sol/proxyadmin.go b/v2/pkg/proxyadmin.sol/proxyadmin.go new file mode 100644 index 00000000..d1cd783e --- /dev/null +++ b/v2/pkg/proxyadmin.sol/proxyadmin.go @@ -0,0 +1,481 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package proxyadmin + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. +var ProxyAdminMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033", +} + +// ProxyAdminABI is the input ABI used to generate the binding from. +// Deprecated: Use ProxyAdminMetaData.ABI instead. +var ProxyAdminABI = ProxyAdminMetaData.ABI + +// ProxyAdminBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ProxyAdminMetaData.Bin instead. +var ProxyAdminBin = ProxyAdminMetaData.Bin + +// DeployProxyAdmin deploys a new Ethereum contract, binding an instance of ProxyAdmin to it. +func DeployProxyAdmin(auth *bind.TransactOpts, backend bind.ContractBackend, initialOwner common.Address) (common.Address, *types.Transaction, *ProxyAdmin, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ProxyAdminBin), backend, initialOwner) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// ProxyAdmin is an auto generated Go binding around an Ethereum contract. +type ProxyAdmin struct { + ProxyAdminCaller // Read-only binding to the contract + ProxyAdminTransactor // Write-only binding to the contract + ProxyAdminFilterer // Log filterer for contract events +} + +// ProxyAdminCaller is an auto generated read-only Go binding around an Ethereum contract. +type ProxyAdminCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ProxyAdminTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ProxyAdminFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ProxyAdminSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ProxyAdminSession struct { + Contract *ProxyAdmin // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ProxyAdminCallerSession struct { + Contract *ProxyAdminCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ProxyAdminTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ProxyAdminTransactorSession struct { + Contract *ProxyAdminTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ProxyAdminRaw is an auto generated low-level Go binding around an Ethereum contract. +type ProxyAdminRaw struct { + Contract *ProxyAdmin // Generic contract binding to access the raw methods on +} + +// ProxyAdminCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ProxyAdminCallerRaw struct { + Contract *ProxyAdminCaller // Generic read-only contract binding to access the raw methods on +} + +// ProxyAdminTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ProxyAdminTransactorRaw struct { + Contract *ProxyAdminTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewProxyAdmin creates a new instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdmin(address common.Address, backend bind.ContractBackend) (*ProxyAdmin, error) { + contract, err := bindProxyAdmin(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ProxyAdmin{ProxyAdminCaller: ProxyAdminCaller{contract: contract}, ProxyAdminTransactor: ProxyAdminTransactor{contract: contract}, ProxyAdminFilterer: ProxyAdminFilterer{contract: contract}}, nil +} + +// NewProxyAdminCaller creates a new read-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminCaller(address common.Address, caller bind.ContractCaller) (*ProxyAdminCaller, error) { + contract, err := bindProxyAdmin(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ProxyAdminCaller{contract: contract}, nil +} + +// NewProxyAdminTransactor creates a new write-only instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminTransactor(address common.Address, transactor bind.ContractTransactor) (*ProxyAdminTransactor, error) { + contract, err := bindProxyAdmin(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ProxyAdminTransactor{contract: contract}, nil +} + +// NewProxyAdminFilterer creates a new log filterer instance of ProxyAdmin, bound to a specific deployed contract. +func NewProxyAdminFilterer(address common.Address, filterer bind.ContractFilterer) (*ProxyAdminFilterer, error) { + contract, err := bindProxyAdmin(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ProxyAdminFilterer{contract: contract}, nil +} + +// bindProxyAdmin binds a generic wrapper to an already deployed contract. +func bindProxyAdmin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ProxyAdminMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.ProxyAdminCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.ProxyAdminTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ProxyAdmin *ProxyAdminCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ProxyAdmin.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ProxyAdmin *ProxyAdminTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ProxyAdmin.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_ProxyAdmin *ProxyAdminCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _ProxyAdmin.Contract.UPGRADEINTERFACEVERSION(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ProxyAdmin.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_ProxyAdmin *ProxyAdminCallerSession) Owner() (common.Address, error) { + return _ProxyAdmin.Contract.Owner(&_ProxyAdmin.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _ProxyAdmin.Contract.RenounceOwnership(&_ProxyAdmin.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _ProxyAdmin.Contract.TransferOwnership(&_ProxyAdmin.TransactOpts, newOwner) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactor) UpgradeAndCall(opts *bind.TransactOpts, proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.contract.Transact(opts, "upgradeAndCall", proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// UpgradeAndCall is a paid mutator transaction binding the contract method 0x9623609d. +// +// Solidity: function upgradeAndCall(address proxy, address implementation, bytes data) payable returns() +func (_ProxyAdmin *ProxyAdminTransactorSession) UpgradeAndCall(proxy common.Address, implementation common.Address, data []byte) (*types.Transaction, error) { + return _ProxyAdmin.Contract.UpgradeAndCall(&_ProxyAdmin.TransactOpts, proxy, implementation, data) +} + +// ProxyAdminOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferredIterator struct { + Event *ProxyAdminOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ProxyAdminOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ProxyAdminOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ProxyAdminOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ProxyAdminOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ProxyAdminOwnershipTransferred represents a OwnershipTransferred event raised by the ProxyAdmin contract. +type ProxyAdminOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ProxyAdminOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ProxyAdminOwnershipTransferredIterator{contract: _ProxyAdmin.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ProxyAdminOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ProxyAdmin.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_ProxyAdmin *ProxyAdminFilterer) ParseOwnershipTransferred(log types.Log) (*ProxyAdminOwnershipTransferred, error) { + event := new(ProxyAdminOwnershipTransferred) + if err := _ProxyAdmin.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/receiverevm.sol/receiverevm.go b/v2/pkg/receiverevm.sol/receiverevm.go new file mode 100644 index 00000000..02ded950 --- /dev/null +++ b/v2/pkg/receiverevm.sol/receiverevm.go @@ -0,0 +1,1052 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package receiverevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReceiverEVMMetaData contains all meta data concerning the ReceiverEVM contract. +var ReceiverEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveERC20\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveERC20Partial\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveNonPayable\",\"inputs\":[{\"name\":\"strs\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receivePayable\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAmount\",\"inputs\":[]}]", + Bin: "0x6080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033", +} + +// ReceiverEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use ReceiverEVMMetaData.ABI instead. +var ReceiverEVMABI = ReceiverEVMMetaData.ABI + +// ReceiverEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ReceiverEVMMetaData.Bin instead. +var ReceiverEVMBin = ReceiverEVMMetaData.Bin + +// DeployReceiverEVM deploys a new Ethereum contract, binding an instance of ReceiverEVM to it. +func DeployReceiverEVM(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ReceiverEVM, error) { + parsed, err := ReceiverEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ReceiverEVMBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ReceiverEVM{ReceiverEVMCaller: ReceiverEVMCaller{contract: contract}, ReceiverEVMTransactor: ReceiverEVMTransactor{contract: contract}, ReceiverEVMFilterer: ReceiverEVMFilterer{contract: contract}}, nil +} + +// ReceiverEVM is an auto generated Go binding around an Ethereum contract. +type ReceiverEVM struct { + ReceiverEVMCaller // Read-only binding to the contract + ReceiverEVMTransactor // Write-only binding to the contract + ReceiverEVMFilterer // Log filterer for contract events +} + +// ReceiverEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReceiverEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiverEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReceiverEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiverEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReceiverEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReceiverEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReceiverEVMSession struct { + Contract *ReceiverEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReceiverEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReceiverEVMCallerSession struct { + Contract *ReceiverEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReceiverEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReceiverEVMTransactorSession struct { + Contract *ReceiverEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReceiverEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReceiverEVMRaw struct { + Contract *ReceiverEVM // Generic contract binding to access the raw methods on +} + +// ReceiverEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReceiverEVMCallerRaw struct { + Contract *ReceiverEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// ReceiverEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReceiverEVMTransactorRaw struct { + Contract *ReceiverEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReceiverEVM creates a new instance of ReceiverEVM, bound to a specific deployed contract. +func NewReceiverEVM(address common.Address, backend bind.ContractBackend) (*ReceiverEVM, error) { + contract, err := bindReceiverEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReceiverEVM{ReceiverEVMCaller: ReceiverEVMCaller{contract: contract}, ReceiverEVMTransactor: ReceiverEVMTransactor{contract: contract}, ReceiverEVMFilterer: ReceiverEVMFilterer{contract: contract}}, nil +} + +// NewReceiverEVMCaller creates a new read-only instance of ReceiverEVM, bound to a specific deployed contract. +func NewReceiverEVMCaller(address common.Address, caller bind.ContractCaller) (*ReceiverEVMCaller, error) { + contract, err := bindReceiverEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReceiverEVMCaller{contract: contract}, nil +} + +// NewReceiverEVMTransactor creates a new write-only instance of ReceiverEVM, bound to a specific deployed contract. +func NewReceiverEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*ReceiverEVMTransactor, error) { + contract, err := bindReceiverEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReceiverEVMTransactor{contract: contract}, nil +} + +// NewReceiverEVMFilterer creates a new log filterer instance of ReceiverEVM, bound to a specific deployed contract. +func NewReceiverEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*ReceiverEVMFilterer, error) { + contract, err := bindReceiverEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReceiverEVMFilterer{contract: contract}, nil +} + +// bindReceiverEVM binds a generic wrapper to an already deployed contract. +func bindReceiverEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReceiverEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReceiverEVM *ReceiverEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReceiverEVM.Contract.ReceiverEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReceiverEVM *ReceiverEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiverEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReceiverEVM *ReceiverEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiverEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReceiverEVM *ReceiverEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReceiverEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReceiverEVM *ReceiverEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiverEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReceiverEVM *ReceiverEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReceiverEVM.Contract.contract.Transact(opts, method, params...) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_ReceiverEVM *ReceiverEVMTransactor) OnRevert(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "onRevert", data) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_ReceiverEVM *ReceiverEVMSession) OnRevert(data []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.OnRevert(&_ReceiverEVM.TransactOpts, data) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x8fcaa0b5. +// +// Solidity: function onRevert(bytes data) returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) OnRevert(data []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.OnRevert(&_ReceiverEVM.TransactOpts, data) +} + +// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. +// +// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveERC20(opts *bind.TransactOpts, amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "receiveERC20", amount, token, destination) +} + +// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. +// +// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMSession) ReceiveERC20(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveERC20(&_ReceiverEVM.TransactOpts, amount, token, destination) +} + +// ReceiveERC20 is a paid mutator transaction binding the contract method 0x357fc5a2. +// +// Solidity: function receiveERC20(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveERC20(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveERC20(&_ReceiverEVM.TransactOpts, amount, token, destination) +} + +// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. +// +// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveERC20Partial(opts *bind.TransactOpts, amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "receiveERC20Partial", amount, token, destination) +} + +// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. +// +// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMSession) ReceiveERC20Partial(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveERC20Partial(&_ReceiverEVM.TransactOpts, amount, token, destination) +} + +// ReceiveERC20Partial is a paid mutator transaction binding the contract method 0xc5131691. +// +// Solidity: function receiveERC20Partial(uint256 amount, address token, address destination) returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveERC20Partial(amount *big.Int, token common.Address, destination common.Address) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveERC20Partial(&_ReceiverEVM.TransactOpts, amount, token, destination) +} + +// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. +// +// Solidity: function receiveNoParams() returns() +func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveNoParams(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "receiveNoParams") +} + +// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. +// +// Solidity: function receiveNoParams() returns() +func (_ReceiverEVM *ReceiverEVMSession) ReceiveNoParams() (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveNoParams(&_ReceiverEVM.TransactOpts) +} + +// ReceiveNoParams is a paid mutator transaction binding the contract method 0x6ed70169. +// +// Solidity: function receiveNoParams() returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveNoParams() (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveNoParams(&_ReceiverEVM.TransactOpts) +} + +// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. +// +// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() +func (_ReceiverEVM *ReceiverEVMTransactor) ReceiveNonPayable(opts *bind.TransactOpts, strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "receiveNonPayable", strs, nums, flag) +} + +// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. +// +// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() +func (_ReceiverEVM *ReceiverEVMSession) ReceiveNonPayable(strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveNonPayable(&_ReceiverEVM.TransactOpts, strs, nums, flag) +} + +// ReceiveNonPayable is a paid mutator transaction binding the contract method 0xf05b6abf. +// +// Solidity: function receiveNonPayable(string[] strs, uint256[] nums, bool flag) returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceiveNonPayable(strs []string, nums []*big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceiveNonPayable(&_ReceiverEVM.TransactOpts, strs, nums, flag) +} + +// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. +// +// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() +func (_ReceiverEVM *ReceiverEVMTransactor) ReceivePayable(opts *bind.TransactOpts, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "receivePayable", str, num, flag) +} + +// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. +// +// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() +func (_ReceiverEVM *ReceiverEVMSession) ReceivePayable(str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceivePayable(&_ReceiverEVM.TransactOpts, str, num, flag) +} + +// ReceivePayable is a paid mutator transaction binding the contract method 0xe04d4f97. +// +// Solidity: function receivePayable(string str, uint256 num, bool flag) payable returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) ReceivePayable(str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _ReceiverEVM.Contract.ReceivePayable(&_ReceiverEVM.TransactOpts, str, num, flag) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ReceiverEVM *ReceiverEVMTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _ReceiverEVM.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ReceiverEVM *ReceiverEVMSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.Fallback(&_ReceiverEVM.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.Fallback(&_ReceiverEVM.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ReceiverEVM *ReceiverEVMTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReceiverEVM.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ReceiverEVM *ReceiverEVMSession) Receive() (*types.Transaction, error) { + return _ReceiverEVM.Contract.Receive(&_ReceiverEVM.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ReceiverEVM *ReceiverEVMTransactorSession) Receive() (*types.Transaction, error) { + return _ReceiverEVM.Contract.Receive(&_ReceiverEVM.TransactOpts) +} + +// ReceiverEVMReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the ReceiverEVM contract. +type ReceiverEVMReceivedERC20Iterator struct { + Event *ReceiverEVMReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReceiverEVMReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReceiverEVMReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReceiverEVMReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReceiverEVMReceivedERC20 represents a ReceivedERC20 event raised by the ReceiverEVM contract. +type ReceiverEVMReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*ReceiverEVMReceivedERC20Iterator, error) { + + logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &ReceiverEVMReceivedERC20Iterator{contract: _ReceiverEVM.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReceiverEVMReceivedERC20) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedERC20(log types.Log) (*ReceiverEVMReceivedERC20, error) { + event := new(ReceiverEVMReceivedERC20) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReceiverEVMReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the ReceiverEVM contract. +type ReceiverEVMReceivedNoParamsIterator struct { + Event *ReceiverEVMReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReceiverEVMReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReceiverEVMReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReceiverEVMReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReceiverEVMReceivedNoParams represents a ReceivedNoParams event raised by the ReceiverEVM contract. +type ReceiverEVMReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*ReceiverEVMReceivedNoParamsIterator, error) { + + logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &ReceiverEVMReceivedNoParamsIterator{contract: _ReceiverEVM.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReceiverEVMReceivedNoParams) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedNoParams(log types.Log) (*ReceiverEVMReceivedNoParams, error) { + event := new(ReceiverEVMReceivedNoParams) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReceiverEVMReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the ReceiverEVM contract. +type ReceiverEVMReceivedNonPayableIterator struct { + Event *ReceiverEVMReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReceiverEVMReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReceiverEVMReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReceiverEVMReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReceiverEVMReceivedNonPayable represents a ReceivedNonPayable event raised by the ReceiverEVM contract. +type ReceiverEVMReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*ReceiverEVMReceivedNonPayableIterator, error) { + + logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &ReceiverEVMReceivedNonPayableIterator{contract: _ReceiverEVM.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReceiverEVMReceivedNonPayable) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedNonPayable(log types.Log) (*ReceiverEVMReceivedNonPayable, error) { + event := new(ReceiverEVMReceivedNonPayable) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReceiverEVMReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the ReceiverEVM contract. +type ReceiverEVMReceivedPayableIterator struct { + Event *ReceiverEVMReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReceiverEVMReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReceiverEVMReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReceiverEVMReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReceiverEVMReceivedPayable represents a ReceivedPayable event raised by the ReceiverEVM contract. +type ReceiverEVMReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*ReceiverEVMReceivedPayableIterator, error) { + + logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &ReceiverEVMReceivedPayableIterator{contract: _ReceiverEVM.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReceiverEVMReceivedPayable) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedPayable(log types.Log) (*ReceiverEVMReceivedPayable, error) { + event := new(ReceiverEVMReceivedPayable) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ReceiverEVMReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the ReceiverEVM contract. +type ReceiverEVMReceivedRevertIterator struct { + Event *ReceiverEVMReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReceiverEVMReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReceiverEVMReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReceiverEVMReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReceiverEVMReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReceiverEVMReceivedRevert represents a ReceivedRevert event raised by the ReceiverEVM contract. +type ReceiverEVMReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ReceiverEVM *ReceiverEVMFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*ReceiverEVMReceivedRevertIterator, error) { + + logs, sub, err := _ReceiverEVM.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &ReceiverEVMReceivedRevertIterator{contract: _ReceiverEVM.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ReceiverEVM *ReceiverEVMFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *ReceiverEVMReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _ReceiverEVM.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReceiverEVMReceivedRevert) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ReceiverEVM *ReceiverEVMFilterer) ParseReceivedRevert(log types.Log) (*ReceiverEVMReceivedRevert, error) { + event := new(ReceiverEVMReceivedRevert) + if err := _ReceiverEVM.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/reentrancyguard.sol/reentrancyguard.go b/v2/pkg/reentrancyguard.sol/reentrancyguard.go new file mode 100644 index 00000000..6d492ba0 --- /dev/null +++ b/v2/pkg/reentrancyguard.sol/reentrancyguard.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package reentrancyguard + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. +var ReentrancyGuardMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", +} + +// ReentrancyGuardABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardMetaData.ABI instead. +var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI + +// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuard struct { + ReentrancyGuardCaller // Read-only binding to the contract + ReentrancyGuardTransactor // Write-only binding to the contract + ReentrancyGuardFilterer // Log filterer for contract events +} + +// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardSession struct { + Contract *ReentrancyGuard // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardCallerSession struct { + Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardTransactorSession struct { + Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardRaw struct { + Contract *ReentrancyGuard // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardCallerRaw struct { + Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactorRaw struct { + Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { + contract, err := bindReentrancyGuard(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { + contract, err := bindReentrancyGuard(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardCaller{contract: contract}, nil +} + +// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { + contract, err := bindReentrancyGuard(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardTransactor{contract: contract}, nil +} + +// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { + contract, err := bindReentrancyGuard(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardFilterer{contract: contract}, nil +} + +// bindReentrancyGuard binds a generic wrapper to an already deployed contract. +func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go b/v2/pkg/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go new file mode 100644 index 00000000..6badb5ab --- /dev/null +++ b/v2/pkg/reentrancyguardupgradeable.sol/reentrancyguardupgradeable.go @@ -0,0 +1,315 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package reentrancyguardupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReentrancyGuardUpgradeableMetaData contains all meta data concerning the ReentrancyGuardUpgradeable contract. +var ReentrancyGuardUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", +} + +// ReentrancyGuardUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardUpgradeableMetaData.ABI instead. +var ReentrancyGuardUpgradeableABI = ReentrancyGuardUpgradeableMetaData.ABI + +// ReentrancyGuardUpgradeable is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeable struct { + ReentrancyGuardUpgradeableCaller // Read-only binding to the contract + ReentrancyGuardUpgradeableTransactor // Write-only binding to the contract + ReentrancyGuardUpgradeableFilterer // Log filterer for contract events +} + +// ReentrancyGuardUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardUpgradeableSession struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardUpgradeableCallerSession struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardUpgradeableTransactorSession struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableRaw struct { + Contract *ReentrancyGuardUpgradeable // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableCallerRaw struct { + Contract *ReentrancyGuardUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardUpgradeableTransactorRaw struct { + Contract *ReentrancyGuardUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuardUpgradeable creates a new instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeable(address common.Address, backend bind.ContractBackend) (*ReentrancyGuardUpgradeable, error) { + contract, err := bindReentrancyGuardUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeable{ReentrancyGuardUpgradeableCaller: ReentrancyGuardUpgradeableCaller{contract: contract}, ReentrancyGuardUpgradeableTransactor: ReentrancyGuardUpgradeableTransactor{contract: contract}, ReentrancyGuardUpgradeableFilterer: ReentrancyGuardUpgradeableFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardUpgradeableCaller creates a new read-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardUpgradeableCaller, error) { + contract, err := bindReentrancyGuardUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableCaller{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableTransactor creates a new write-only instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardUpgradeableTransactor, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableTransactor{contract: contract}, nil +} + +// NewReentrancyGuardUpgradeableFilterer creates a new log filterer instance of ReentrancyGuardUpgradeable, bound to a specific deployed contract. +func NewReentrancyGuardUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardUpgradeableFilterer, error) { + contract, err := bindReentrancyGuardUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableFilterer{contract: contract}, nil +} + +// bindReentrancyGuardUpgradeable binds a generic wrapper to an already deployed contract. +func bindReentrancyGuardUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.ReentrancyGuardUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuardUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuardUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// ReentrancyGuardUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitializedIterator struct { + Event *ReentrancyGuardUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ReentrancyGuardUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ReentrancyGuardUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ReentrancyGuardUpgradeableInitialized represents a Initialized event raised by the ReentrancyGuardUpgradeable contract. +type ReentrancyGuardUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ReentrancyGuardUpgradeableInitializedIterator, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ReentrancyGuardUpgradeableInitializedIterator{contract: _ReentrancyGuardUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ReentrancyGuardUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ReentrancyGuardUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ReentrancyGuardUpgradeable *ReentrancyGuardUpgradeableFilterer) ParseInitialized(log types.Log) (*ReentrancyGuardUpgradeableInitialized, error) { + event := new(ReentrancyGuardUpgradeableInitialized) + if err := _ReentrancyGuardUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/safeconsole.sol/safeconsole.go b/v2/pkg/safeconsole.sol/safeconsole.go new file mode 100644 index 00000000..75f5113d --- /dev/null +++ b/v2/pkg/safeconsole.sol/safeconsole.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package safeconsole + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SafeconsoleMetaData contains all meta data concerning the Safeconsole contract. +var SafeconsoleMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122010d0f421153ad6b408823b000b8d6405eb3a4715d0aed8860bdb9898d2215f2264736f6c634300081a0033", +} + +// SafeconsoleABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeconsoleMetaData.ABI instead. +var SafeconsoleABI = SafeconsoleMetaData.ABI + +// SafeconsoleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeconsoleMetaData.Bin instead. +var SafeconsoleBin = SafeconsoleMetaData.Bin + +// DeploySafeconsole deploys a new Ethereum contract, binding an instance of Safeconsole to it. +func DeploySafeconsole(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Safeconsole, error) { + parsed, err := SafeconsoleMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeconsoleBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Safeconsole{SafeconsoleCaller: SafeconsoleCaller{contract: contract}, SafeconsoleTransactor: SafeconsoleTransactor{contract: contract}, SafeconsoleFilterer: SafeconsoleFilterer{contract: contract}}, nil +} + +// Safeconsole is an auto generated Go binding around an Ethereum contract. +type Safeconsole struct { + SafeconsoleCaller // Read-only binding to the contract + SafeconsoleTransactor // Write-only binding to the contract + SafeconsoleFilterer // Log filterer for contract events +} + +// SafeconsoleCaller is an auto generated read-only Go binding around an Ethereum contract. +type SafeconsoleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeconsoleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeconsoleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeconsoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeconsoleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeconsoleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeconsoleSession struct { + Contract *Safeconsole // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeconsoleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeconsoleCallerSession struct { + Contract *SafeconsoleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeconsoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeconsoleTransactorSession struct { + Contract *SafeconsoleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeconsoleRaw is an auto generated low-level Go binding around an Ethereum contract. +type SafeconsoleRaw struct { + Contract *Safeconsole // Generic contract binding to access the raw methods on +} + +// SafeconsoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeconsoleCallerRaw struct { + Contract *SafeconsoleCaller // Generic read-only contract binding to access the raw methods on +} + +// SafeconsoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeconsoleTransactorRaw struct { + Contract *SafeconsoleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeconsole creates a new instance of Safeconsole, bound to a specific deployed contract. +func NewSafeconsole(address common.Address, backend bind.ContractBackend) (*Safeconsole, error) { + contract, err := bindSafeconsole(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Safeconsole{SafeconsoleCaller: SafeconsoleCaller{contract: contract}, SafeconsoleTransactor: SafeconsoleTransactor{contract: contract}, SafeconsoleFilterer: SafeconsoleFilterer{contract: contract}}, nil +} + +// NewSafeconsoleCaller creates a new read-only instance of Safeconsole, bound to a specific deployed contract. +func NewSafeconsoleCaller(address common.Address, caller bind.ContractCaller) (*SafeconsoleCaller, error) { + contract, err := bindSafeconsole(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeconsoleCaller{contract: contract}, nil +} + +// NewSafeconsoleTransactor creates a new write-only instance of Safeconsole, bound to a specific deployed contract. +func NewSafeconsoleTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeconsoleTransactor, error) { + contract, err := bindSafeconsole(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeconsoleTransactor{contract: contract}, nil +} + +// NewSafeconsoleFilterer creates a new log filterer instance of Safeconsole, bound to a specific deployed contract. +func NewSafeconsoleFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeconsoleFilterer, error) { + contract, err := bindSafeconsole(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeconsoleFilterer{contract: contract}, nil +} + +// bindSafeconsole binds a generic wrapper to an already deployed contract. +func bindSafeconsole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeconsoleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Safeconsole *SafeconsoleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Safeconsole.Contract.SafeconsoleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Safeconsole *SafeconsoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Safeconsole.Contract.SafeconsoleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Safeconsole *SafeconsoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Safeconsole.Contract.SafeconsoleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Safeconsole *SafeconsoleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Safeconsole.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Safeconsole *SafeconsoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Safeconsole.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Safeconsole *SafeconsoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Safeconsole.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/safeerc20.sol/safeerc20.go b/v2/pkg/safeerc20.sol/safeerc20.go new file mode 100644 index 00000000..819e7619 --- /dev/null +++ b/v2/pkg/safeerc20.sol/safeerc20.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package safeerc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. +var SafeERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"SafeERC20FailedDecreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentAllowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requestedDecrease\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b149ed6660f3fbf5a50e73e0348cd9d9861a3fa7d998ed32eee66773e3cb05b864736f6c634300081a0033", +} + +// SafeERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use SafeERC20MetaData.ABI instead. +var SafeERC20ABI = SafeERC20MetaData.ABI + +// SafeERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SafeERC20MetaData.Bin instead. +var SafeERC20Bin = SafeERC20MetaData.Bin + +// DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it. +func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeERC20Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// SafeERC20 is an auto generated Go binding around an Ethereum contract. +type SafeERC20 struct { + SafeERC20Caller // Read-only binding to the contract + SafeERC20Transactor // Write-only binding to the contract + SafeERC20Filterer // Log filterer for contract events +} + +// SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type SafeERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type SafeERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SafeERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SafeERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SafeERC20Session struct { + Contract *SafeERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SafeERC20CallerSession struct { + Contract *SafeERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SafeERC20TransactorSession struct { + Contract *SafeERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type SafeERC20Raw struct { + Contract *SafeERC20 // Generic contract binding to access the raw methods on +} + +// SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SafeERC20CallerRaw struct { + Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SafeERC20TransactorRaw struct { + Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) { + contract, err := bindSafeERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil +} + +// NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) { + contract, err := bindSafeERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SafeERC20Caller{contract: contract}, nil +} + +// NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) { + contract, err := bindSafeERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SafeERC20Transactor{contract: contract}, nil +} + +// NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract. +func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) { + contract, err := bindSafeERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SafeERC20Filterer{contract: contract}, nil +} + +// bindSafeERC20 binds a generic wrapper to an already deployed contract. +func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SafeERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SafeERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SafeERC20.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/senderzevm.sol/senderzevm.go b/v2/pkg/senderzevm.sol/senderzevm.go new file mode 100644 index 00000000..90617bb0 --- /dev/null +++ b/v2/pkg/senderzevm.sol/senderzevm.go @@ -0,0 +1,276 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package senderzevm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. +var SenderZEVMMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", + Bin: "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033", +} + +// SenderZEVMABI is the input ABI used to generate the binding from. +// Deprecated: Use SenderZEVMMetaData.ABI instead. +var SenderZEVMABI = SenderZEVMMetaData.ABI + +// SenderZEVMBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SenderZEVMMetaData.Bin instead. +var SenderZEVMBin = SenderZEVMMetaData.Bin + +// DeploySenderZEVM deploys a new Ethereum contract, binding an instance of SenderZEVM to it. +func DeploySenderZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address) (common.Address, *types.Transaction, *SenderZEVM, error) { + parsed, err := SenderZEVMMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SenderZEVMBin), backend, _gateway) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SenderZEVM{SenderZEVMCaller: SenderZEVMCaller{contract: contract}, SenderZEVMTransactor: SenderZEVMTransactor{contract: contract}, SenderZEVMFilterer: SenderZEVMFilterer{contract: contract}}, nil +} + +// SenderZEVM is an auto generated Go binding around an Ethereum contract. +type SenderZEVM struct { + SenderZEVMCaller // Read-only binding to the contract + SenderZEVMTransactor // Write-only binding to the contract + SenderZEVMFilterer // Log filterer for contract events +} + +// SenderZEVMCaller is an auto generated read-only Go binding around an Ethereum contract. +type SenderZEVMCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SenderZEVMTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SenderZEVMTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SenderZEVMFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SenderZEVMFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SenderZEVMSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SenderZEVMSession struct { + Contract *SenderZEVM // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SenderZEVMCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SenderZEVMCallerSession struct { + Contract *SenderZEVMCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SenderZEVMTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SenderZEVMTransactorSession struct { + Contract *SenderZEVMTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SenderZEVMRaw is an auto generated low-level Go binding around an Ethereum contract. +type SenderZEVMRaw struct { + Contract *SenderZEVM // Generic contract binding to access the raw methods on +} + +// SenderZEVMCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SenderZEVMCallerRaw struct { + Contract *SenderZEVMCaller // Generic read-only contract binding to access the raw methods on +} + +// SenderZEVMTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SenderZEVMTransactorRaw struct { + Contract *SenderZEVMTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSenderZEVM creates a new instance of SenderZEVM, bound to a specific deployed contract. +func NewSenderZEVM(address common.Address, backend bind.ContractBackend) (*SenderZEVM, error) { + contract, err := bindSenderZEVM(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SenderZEVM{SenderZEVMCaller: SenderZEVMCaller{contract: contract}, SenderZEVMTransactor: SenderZEVMTransactor{contract: contract}, SenderZEVMFilterer: SenderZEVMFilterer{contract: contract}}, nil +} + +// NewSenderZEVMCaller creates a new read-only instance of SenderZEVM, bound to a specific deployed contract. +func NewSenderZEVMCaller(address common.Address, caller bind.ContractCaller) (*SenderZEVMCaller, error) { + contract, err := bindSenderZEVM(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SenderZEVMCaller{contract: contract}, nil +} + +// NewSenderZEVMTransactor creates a new write-only instance of SenderZEVM, bound to a specific deployed contract. +func NewSenderZEVMTransactor(address common.Address, transactor bind.ContractTransactor) (*SenderZEVMTransactor, error) { + contract, err := bindSenderZEVM(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SenderZEVMTransactor{contract: contract}, nil +} + +// NewSenderZEVMFilterer creates a new log filterer instance of SenderZEVM, bound to a specific deployed contract. +func NewSenderZEVMFilterer(address common.Address, filterer bind.ContractFilterer) (*SenderZEVMFilterer, error) { + contract, err := bindSenderZEVM(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SenderZEVMFilterer{contract: contract}, nil +} + +// bindSenderZEVM binds a generic wrapper to an already deployed contract. +func bindSenderZEVM(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SenderZEVMMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SenderZEVM *SenderZEVMRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SenderZEVM.Contract.SenderZEVMCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SenderZEVM *SenderZEVMRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SenderZEVM.Contract.SenderZEVMTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SenderZEVM *SenderZEVMRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SenderZEVM.Contract.SenderZEVMTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SenderZEVM *SenderZEVMCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SenderZEVM.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SenderZEVM *SenderZEVMTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SenderZEVM.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SenderZEVM *SenderZEVMTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SenderZEVM.Contract.contract.Transact(opts, method, params...) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_SenderZEVM *SenderZEVMCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SenderZEVM.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_SenderZEVM *SenderZEVMSession) Gateway() (common.Address, error) { + return _SenderZEVM.Contract.Gateway(&_SenderZEVM.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_SenderZEVM *SenderZEVMCallerSession) Gateway() (common.Address, error) { + return _SenderZEVM.Contract.Gateway(&_SenderZEVM.CallOpts) +} + +// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// +// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactor) CallReceiver(opts *bind.TransactOpts, receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.contract.Transact(opts, "callReceiver", receiver, str, num, flag) +} + +// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// +// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) +} + +// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// +// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactorSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) +} + +// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. +// +// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactor) WithdrawAndCallReceiver(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.contract.Transact(opts, "withdrawAndCallReceiver", receiver, amount, zrc20, str, num, flag) +} + +// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. +// +// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMSession) WithdrawAndCallReceiver(receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.WithdrawAndCallReceiver(&_SenderZEVM.TransactOpts, receiver, amount, zrc20, str, num, flag) +} + +// WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. +// +// Solidity: function withdrawAndCallReceiver(bytes receiver, uint256 amount, address zrc20, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactorSession) WithdrawAndCallReceiver(receiver []byte, amount *big.Int, zrc20 common.Address, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.WithdrawAndCallReceiver(&_SenderZEVM.TransactOpts, receiver, amount, zrc20, str, num, flag) +} diff --git a/v2/pkg/signedmath.sol/signedmath.go b/v2/pkg/signedmath.sol/signedmath.go new file mode 100644 index 00000000..34f4b0da --- /dev/null +++ b/v2/pkg/signedmath.sol/signedmath.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package signedmath + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SignedMathMetaData contains all meta data concerning the SignedMath contract. +var SignedMathMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202dd523a6f2a20254e80b39b9af949f0e1516726eac5401215b97c102c776da6c64736f6c634300081a0033", +} + +// SignedMathABI is the input ABI used to generate the binding from. +// Deprecated: Use SignedMathMetaData.ABI instead. +var SignedMathABI = SignedMathMetaData.ABI + +// SignedMathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SignedMathMetaData.Bin instead. +var SignedMathBin = SignedMathMetaData.Bin + +// DeploySignedMath deploys a new Ethereum contract, binding an instance of SignedMath to it. +func DeploySignedMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SignedMath, error) { + parsed, err := SignedMathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SignedMathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SignedMath{SignedMathCaller: SignedMathCaller{contract: contract}, SignedMathTransactor: SignedMathTransactor{contract: contract}, SignedMathFilterer: SignedMathFilterer{contract: contract}}, nil +} + +// SignedMath is an auto generated Go binding around an Ethereum contract. +type SignedMath struct { + SignedMathCaller // Read-only binding to the contract + SignedMathTransactor // Write-only binding to the contract + SignedMathFilterer // Log filterer for contract events +} + +// SignedMathCaller is an auto generated read-only Go binding around an Ethereum contract. +type SignedMathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignedMathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SignedMathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignedMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SignedMathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignedMathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SignedMathSession struct { + Contract *SignedMath // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SignedMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SignedMathCallerSession struct { + Contract *SignedMathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SignedMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SignedMathTransactorSession struct { + Contract *SignedMathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SignedMathRaw is an auto generated low-level Go binding around an Ethereum contract. +type SignedMathRaw struct { + Contract *SignedMath // Generic contract binding to access the raw methods on +} + +// SignedMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SignedMathCallerRaw struct { + Contract *SignedMathCaller // Generic read-only contract binding to access the raw methods on +} + +// SignedMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SignedMathTransactorRaw struct { + Contract *SignedMathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSignedMath creates a new instance of SignedMath, bound to a specific deployed contract. +func NewSignedMath(address common.Address, backend bind.ContractBackend) (*SignedMath, error) { + contract, err := bindSignedMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SignedMath{SignedMathCaller: SignedMathCaller{contract: contract}, SignedMathTransactor: SignedMathTransactor{contract: contract}, SignedMathFilterer: SignedMathFilterer{contract: contract}}, nil +} + +// NewSignedMathCaller creates a new read-only instance of SignedMath, bound to a specific deployed contract. +func NewSignedMathCaller(address common.Address, caller bind.ContractCaller) (*SignedMathCaller, error) { + contract, err := bindSignedMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SignedMathCaller{contract: contract}, nil +} + +// NewSignedMathTransactor creates a new write-only instance of SignedMath, bound to a specific deployed contract. +func NewSignedMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SignedMathTransactor, error) { + contract, err := bindSignedMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SignedMathTransactor{contract: contract}, nil +} + +// NewSignedMathFilterer creates a new log filterer instance of SignedMath, bound to a specific deployed contract. +func NewSignedMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SignedMathFilterer, error) { + contract, err := bindSignedMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SignedMathFilterer{contract: contract}, nil +} + +// bindSignedMath binds a generic wrapper to an already deployed contract. +func bindSignedMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SignedMathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SignedMath *SignedMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SignedMath.Contract.SignedMathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SignedMath *SignedMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignedMath.Contract.SignedMathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SignedMath *SignedMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SignedMath.Contract.SignedMathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SignedMath *SignedMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SignedMath.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SignedMath *SignedMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignedMath.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SignedMath *SignedMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SignedMath.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdassertions.sol/stdassertions.go b/v2/pkg/stdassertions.sol/stdassertions.go new file mode 100644 index 00000000..41be5344 --- /dev/null +++ b/v2/pkg/stdassertions.sol/stdassertions.go @@ -0,0 +1,3173 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdassertions + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdAssertionsMetaData contains all meta data concerning the StdAssertions contract. +var StdAssertionsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// StdAssertionsABI is the input ABI used to generate the binding from. +// Deprecated: Use StdAssertionsMetaData.ABI instead. +var StdAssertionsABI = StdAssertionsMetaData.ABI + +// StdAssertions is an auto generated Go binding around an Ethereum contract. +type StdAssertions struct { + StdAssertionsCaller // Read-only binding to the contract + StdAssertionsTransactor // Write-only binding to the contract + StdAssertionsFilterer // Log filterer for contract events +} + +// StdAssertionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdAssertionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdAssertionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdAssertionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdAssertionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdAssertionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdAssertionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdAssertionsSession struct { + Contract *StdAssertions // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdAssertionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdAssertionsCallerSession struct { + Contract *StdAssertionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdAssertionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdAssertionsTransactorSession struct { + Contract *StdAssertionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdAssertionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdAssertionsRaw struct { + Contract *StdAssertions // Generic contract binding to access the raw methods on +} + +// StdAssertionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdAssertionsCallerRaw struct { + Contract *StdAssertionsCaller // Generic read-only contract binding to access the raw methods on +} + +// StdAssertionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdAssertionsTransactorRaw struct { + Contract *StdAssertionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdAssertions creates a new instance of StdAssertions, bound to a specific deployed contract. +func NewStdAssertions(address common.Address, backend bind.ContractBackend) (*StdAssertions, error) { + contract, err := bindStdAssertions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdAssertions{StdAssertionsCaller: StdAssertionsCaller{contract: contract}, StdAssertionsTransactor: StdAssertionsTransactor{contract: contract}, StdAssertionsFilterer: StdAssertionsFilterer{contract: contract}}, nil +} + +// NewStdAssertionsCaller creates a new read-only instance of StdAssertions, bound to a specific deployed contract. +func NewStdAssertionsCaller(address common.Address, caller bind.ContractCaller) (*StdAssertionsCaller, error) { + contract, err := bindStdAssertions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdAssertionsCaller{contract: contract}, nil +} + +// NewStdAssertionsTransactor creates a new write-only instance of StdAssertions, bound to a specific deployed contract. +func NewStdAssertionsTransactor(address common.Address, transactor bind.ContractTransactor) (*StdAssertionsTransactor, error) { + contract, err := bindStdAssertions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdAssertionsTransactor{contract: contract}, nil +} + +// NewStdAssertionsFilterer creates a new log filterer instance of StdAssertions, bound to a specific deployed contract. +func NewStdAssertionsFilterer(address common.Address, filterer bind.ContractFilterer) (*StdAssertionsFilterer, error) { + contract, err := bindStdAssertions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdAssertionsFilterer{contract: contract}, nil +} + +// bindStdAssertions binds a generic wrapper to an already deployed contract. +func bindStdAssertions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdAssertionsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdAssertions *StdAssertionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdAssertions.Contract.StdAssertionsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdAssertions *StdAssertionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdAssertions.Contract.StdAssertionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdAssertions *StdAssertionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdAssertions.Contract.StdAssertionsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdAssertions *StdAssertionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdAssertions.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdAssertions *StdAssertionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdAssertions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdAssertions *StdAssertionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdAssertions.Contract.contract.Transact(opts, method, params...) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_StdAssertions *StdAssertionsCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _StdAssertions.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_StdAssertions *StdAssertionsSession) Failed() (bool, error) { + return _StdAssertions.Contract.Failed(&_StdAssertions.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_StdAssertions *StdAssertionsCallerSession) Failed() (bool, error) { + return _StdAssertions.Contract.Failed(&_StdAssertions.CallOpts) +} + +// StdAssertionsLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the StdAssertions contract. +type StdAssertionsLogIterator struct { + Event *StdAssertionsLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLog represents a Log event raised by the StdAssertions contract. +type StdAssertionsLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLog(opts *bind.FilterOpts) (*StdAssertionsLogIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &StdAssertionsLogIterator{contract: _StdAssertions.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *StdAssertionsLog) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLog) + if err := _StdAssertions.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLog(log types.Log) (*StdAssertionsLog, error) { + event := new(StdAssertionsLog) + if err := _StdAssertions.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the StdAssertions contract. +type StdAssertionsLogAddressIterator struct { + Event *StdAssertionsLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogAddress represents a LogAddress event raised by the StdAssertions contract. +type StdAssertionsLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogAddress(opts *bind.FilterOpts) (*StdAssertionsLogAddressIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &StdAssertionsLogAddressIterator{contract: _StdAssertions.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogAddress) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogAddress) + if err := _StdAssertions.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogAddress(log types.Log) (*StdAssertionsLogAddress, error) { + event := new(StdAssertionsLogAddress) + if err := _StdAssertions.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the StdAssertions contract. +type StdAssertionsLogArrayIterator struct { + Event *StdAssertionsLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogArray represents a LogArray event raised by the StdAssertions contract. +type StdAssertionsLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogArray(opts *bind.FilterOpts) (*StdAssertionsLogArrayIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &StdAssertionsLogArrayIterator{contract: _StdAssertions.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogArray) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogArray) + if err := _StdAssertions.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogArray(log types.Log) (*StdAssertionsLogArray, error) { + event := new(StdAssertionsLogArray) + if err := _StdAssertions.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the StdAssertions contract. +type StdAssertionsLogArray0Iterator struct { + Event *StdAssertionsLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogArray0 represents a LogArray0 event raised by the StdAssertions contract. +type StdAssertionsLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogArray0(opts *bind.FilterOpts) (*StdAssertionsLogArray0Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &StdAssertionsLogArray0Iterator{contract: _StdAssertions.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogArray0) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogArray0) + if err := _StdAssertions.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogArray0(log types.Log) (*StdAssertionsLogArray0, error) { + event := new(StdAssertionsLogArray0) + if err := _StdAssertions.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the StdAssertions contract. +type StdAssertionsLogArray1Iterator struct { + Event *StdAssertionsLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogArray1 represents a LogArray1 event raised by the StdAssertions contract. +type StdAssertionsLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogArray1(opts *bind.FilterOpts) (*StdAssertionsLogArray1Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &StdAssertionsLogArray1Iterator{contract: _StdAssertions.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogArray1) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogArray1) + if err := _StdAssertions.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogArray1(log types.Log) (*StdAssertionsLogArray1, error) { + event := new(StdAssertionsLogArray1) + if err := _StdAssertions.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the StdAssertions contract. +type StdAssertionsLogBytesIterator struct { + Event *StdAssertionsLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogBytes represents a LogBytes event raised by the StdAssertions contract. +type StdAssertionsLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogBytes(opts *bind.FilterOpts) (*StdAssertionsLogBytesIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &StdAssertionsLogBytesIterator{contract: _StdAssertions.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogBytes) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogBytes) + if err := _StdAssertions.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogBytes(log types.Log) (*StdAssertionsLogBytes, error) { + event := new(StdAssertionsLogBytes) + if err := _StdAssertions.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the StdAssertions contract. +type StdAssertionsLogBytes32Iterator struct { + Event *StdAssertionsLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogBytes32 represents a LogBytes32 event raised by the StdAssertions contract. +type StdAssertionsLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*StdAssertionsLogBytes32Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &StdAssertionsLogBytes32Iterator{contract: _StdAssertions.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogBytes32) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogBytes32) + if err := _StdAssertions.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogBytes32(log types.Log) (*StdAssertionsLogBytes32, error) { + event := new(StdAssertionsLogBytes32) + if err := _StdAssertions.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the StdAssertions contract. +type StdAssertionsLogIntIterator struct { + Event *StdAssertionsLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogInt represents a LogInt event raised by the StdAssertions contract. +type StdAssertionsLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogInt(opts *bind.FilterOpts) (*StdAssertionsLogIntIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &StdAssertionsLogIntIterator{contract: _StdAssertions.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogInt) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogInt(log types.Log) (*StdAssertionsLogInt, error) { + event := new(StdAssertionsLogInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the StdAssertions contract. +type StdAssertionsLogNamedAddressIterator struct { + Event *StdAssertionsLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedAddress represents a LogNamedAddress event raised by the StdAssertions contract. +type StdAssertionsLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*StdAssertionsLogNamedAddressIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedAddressIterator{contract: _StdAssertions.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedAddress) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedAddress(log types.Log) (*StdAssertionsLogNamedAddress, error) { + event := new(StdAssertionsLogNamedAddress) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the StdAssertions contract. +type StdAssertionsLogNamedArrayIterator struct { + Event *StdAssertionsLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedArray represents a LogNamedArray event raised by the StdAssertions contract. +type StdAssertionsLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*StdAssertionsLogNamedArrayIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedArrayIterator{contract: _StdAssertions.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedArray) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedArray(log types.Log) (*StdAssertionsLogNamedArray, error) { + event := new(StdAssertionsLogNamedArray) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the StdAssertions contract. +type StdAssertionsLogNamedArray0Iterator struct { + Event *StdAssertionsLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedArray0 represents a LogNamedArray0 event raised by the StdAssertions contract. +type StdAssertionsLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*StdAssertionsLogNamedArray0Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedArray0Iterator{contract: _StdAssertions.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedArray0) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedArray0(log types.Log) (*StdAssertionsLogNamedArray0, error) { + event := new(StdAssertionsLogNamedArray0) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the StdAssertions contract. +type StdAssertionsLogNamedArray1Iterator struct { + Event *StdAssertionsLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedArray1 represents a LogNamedArray1 event raised by the StdAssertions contract. +type StdAssertionsLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*StdAssertionsLogNamedArray1Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedArray1Iterator{contract: _StdAssertions.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedArray1) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedArray1(log types.Log) (*StdAssertionsLogNamedArray1, error) { + event := new(StdAssertionsLogNamedArray1) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the StdAssertions contract. +type StdAssertionsLogNamedBytesIterator struct { + Event *StdAssertionsLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedBytes represents a LogNamedBytes event raised by the StdAssertions contract. +type StdAssertionsLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*StdAssertionsLogNamedBytesIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedBytesIterator{contract: _StdAssertions.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedBytes) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedBytes(log types.Log) (*StdAssertionsLogNamedBytes, error) { + event := new(StdAssertionsLogNamedBytes) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the StdAssertions contract. +type StdAssertionsLogNamedBytes32Iterator struct { + Event *StdAssertionsLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedBytes32 represents a LogNamedBytes32 event raised by the StdAssertions contract. +type StdAssertionsLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*StdAssertionsLogNamedBytes32Iterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedBytes32Iterator{contract: _StdAssertions.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedBytes32) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedBytes32(log types.Log) (*StdAssertionsLogNamedBytes32, error) { + event := new(StdAssertionsLogNamedBytes32) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the StdAssertions contract. +type StdAssertionsLogNamedDecimalIntIterator struct { + Event *StdAssertionsLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the StdAssertions contract. +type StdAssertionsLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*StdAssertionsLogNamedDecimalIntIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedDecimalIntIterator{contract: _StdAssertions.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedDecimalInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedDecimalInt(log types.Log) (*StdAssertionsLogNamedDecimalInt, error) { + event := new(StdAssertionsLogNamedDecimalInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the StdAssertions contract. +type StdAssertionsLogNamedDecimalUintIterator struct { + Event *StdAssertionsLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the StdAssertions contract. +type StdAssertionsLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*StdAssertionsLogNamedDecimalUintIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedDecimalUintIterator{contract: _StdAssertions.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedDecimalUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedDecimalUint(log types.Log) (*StdAssertionsLogNamedDecimalUint, error) { + event := new(StdAssertionsLogNamedDecimalUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the StdAssertions contract. +type StdAssertionsLogNamedIntIterator struct { + Event *StdAssertionsLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedInt represents a LogNamedInt event raised by the StdAssertions contract. +type StdAssertionsLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*StdAssertionsLogNamedIntIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedIntIterator{contract: _StdAssertions.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedInt(log types.Log) (*StdAssertionsLogNamedInt, error) { + event := new(StdAssertionsLogNamedInt) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the StdAssertions contract. +type StdAssertionsLogNamedStringIterator struct { + Event *StdAssertionsLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedString represents a LogNamedString event raised by the StdAssertions contract. +type StdAssertionsLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*StdAssertionsLogNamedStringIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedStringIterator{contract: _StdAssertions.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedString) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedString) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedString(log types.Log) (*StdAssertionsLogNamedString, error) { + event := new(StdAssertionsLogNamedString) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the StdAssertions contract. +type StdAssertionsLogNamedUintIterator struct { + Event *StdAssertionsLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogNamedUint represents a LogNamedUint event raised by the StdAssertions contract. +type StdAssertionsLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_StdAssertions *StdAssertionsFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*StdAssertionsLogNamedUintIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &StdAssertionsLogNamedUintIterator{contract: _StdAssertions.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_StdAssertions *StdAssertionsFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogNamedUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_StdAssertions *StdAssertionsFilterer) ParseLogNamedUint(log types.Log) (*StdAssertionsLogNamedUint, error) { + event := new(StdAssertionsLogNamedUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the StdAssertions contract. +type StdAssertionsLogStringIterator struct { + Event *StdAssertionsLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogString represents a LogString event raised by the StdAssertions contract. +type StdAssertionsLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogString(opts *bind.FilterOpts) (*StdAssertionsLogStringIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &StdAssertionsLogStringIterator{contract: _StdAssertions.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogString) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogString) + if err := _StdAssertions.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogString(log types.Log) (*StdAssertionsLogString, error) { + event := new(StdAssertionsLogString) + if err := _StdAssertions.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the StdAssertions contract. +type StdAssertionsLogUintIterator struct { + Event *StdAssertionsLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogUint represents a LogUint event raised by the StdAssertions contract. +type StdAssertionsLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogUint(opts *bind.FilterOpts) (*StdAssertionsLogUintIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &StdAssertionsLogUintIterator{contract: _StdAssertions.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogUint) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogUint(log types.Log) (*StdAssertionsLogUint, error) { + event := new(StdAssertionsLogUint) + if err := _StdAssertions.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdAssertionsLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the StdAssertions contract. +type StdAssertionsLogsIterator struct { + Event *StdAssertionsLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdAssertionsLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdAssertionsLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdAssertionsLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdAssertionsLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdAssertionsLogs represents a Logs event raised by the StdAssertions contract. +type StdAssertionsLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) FilterLogs(opts *bind.FilterOpts) (*StdAssertionsLogsIterator, error) { + + logs, sub, err := _StdAssertions.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &StdAssertionsLogsIterator{contract: _StdAssertions.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *StdAssertionsLogs) (event.Subscription, error) { + + logs, sub, err := _StdAssertions.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdAssertionsLogs) + if err := _StdAssertions.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_StdAssertions *StdAssertionsFilterer) ParseLogs(log types.Log) (*StdAssertionsLogs, error) { + event := new(StdAssertionsLogs) + if err := _StdAssertions.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/stdchains.sol/stdchains.go b/v2/pkg/stdchains.sol/stdchains.go new file mode 100644 index 00000000..440f138f --- /dev/null +++ b/v2/pkg/stdchains.sol/stdchains.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdchains + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdChainsMetaData contains all meta data concerning the StdChains contract. +var StdChainsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// StdChainsABI is the input ABI used to generate the binding from. +// Deprecated: Use StdChainsMetaData.ABI instead. +var StdChainsABI = StdChainsMetaData.ABI + +// StdChains is an auto generated Go binding around an Ethereum contract. +type StdChains struct { + StdChainsCaller // Read-only binding to the contract + StdChainsTransactor // Write-only binding to the contract + StdChainsFilterer // Log filterer for contract events +} + +// StdChainsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdChainsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdChainsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdChainsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdChainsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdChainsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdChainsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdChainsSession struct { + Contract *StdChains // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdChainsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdChainsCallerSession struct { + Contract *StdChainsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdChainsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdChainsTransactorSession struct { + Contract *StdChainsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdChainsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdChainsRaw struct { + Contract *StdChains // Generic contract binding to access the raw methods on +} + +// StdChainsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdChainsCallerRaw struct { + Contract *StdChainsCaller // Generic read-only contract binding to access the raw methods on +} + +// StdChainsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdChainsTransactorRaw struct { + Contract *StdChainsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdChains creates a new instance of StdChains, bound to a specific deployed contract. +func NewStdChains(address common.Address, backend bind.ContractBackend) (*StdChains, error) { + contract, err := bindStdChains(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdChains{StdChainsCaller: StdChainsCaller{contract: contract}, StdChainsTransactor: StdChainsTransactor{contract: contract}, StdChainsFilterer: StdChainsFilterer{contract: contract}}, nil +} + +// NewStdChainsCaller creates a new read-only instance of StdChains, bound to a specific deployed contract. +func NewStdChainsCaller(address common.Address, caller bind.ContractCaller) (*StdChainsCaller, error) { + contract, err := bindStdChains(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdChainsCaller{contract: contract}, nil +} + +// NewStdChainsTransactor creates a new write-only instance of StdChains, bound to a specific deployed contract. +func NewStdChainsTransactor(address common.Address, transactor bind.ContractTransactor) (*StdChainsTransactor, error) { + contract, err := bindStdChains(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdChainsTransactor{contract: contract}, nil +} + +// NewStdChainsFilterer creates a new log filterer instance of StdChains, bound to a specific deployed contract. +func NewStdChainsFilterer(address common.Address, filterer bind.ContractFilterer) (*StdChainsFilterer, error) { + contract, err := bindStdChains(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdChainsFilterer{contract: contract}, nil +} + +// bindStdChains binds a generic wrapper to an already deployed contract. +func bindStdChains(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdChainsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdChains *StdChainsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdChains.Contract.StdChainsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdChains *StdChainsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdChains.Contract.StdChainsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdChains *StdChainsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdChains.Contract.StdChainsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdChains *StdChainsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdChains.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdChains *StdChainsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdChains.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdChains *StdChainsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdChains.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdcheats.sol/stdcheats.go b/v2/pkg/stdcheats.sol/stdcheats.go new file mode 100644 index 00000000..434d8176 --- /dev/null +++ b/v2/pkg/stdcheats.sol/stdcheats.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdcheats + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdCheatsMetaData contains all meta data concerning the StdCheats contract. +var StdCheatsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// StdCheatsABI is the input ABI used to generate the binding from. +// Deprecated: Use StdCheatsMetaData.ABI instead. +var StdCheatsABI = StdCheatsMetaData.ABI + +// StdCheats is an auto generated Go binding around an Ethereum contract. +type StdCheats struct { + StdCheatsCaller // Read-only binding to the contract + StdCheatsTransactor // Write-only binding to the contract + StdCheatsFilterer // Log filterer for contract events +} + +// StdCheatsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdCheatsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdCheatsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdCheatsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdCheatsSession struct { + Contract *StdCheats // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdCheatsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdCheatsCallerSession struct { + Contract *StdCheatsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdCheatsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdCheatsTransactorSession struct { + Contract *StdCheatsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdCheatsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdCheatsRaw struct { + Contract *StdCheats // Generic contract binding to access the raw methods on +} + +// StdCheatsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdCheatsCallerRaw struct { + Contract *StdCheatsCaller // Generic read-only contract binding to access the raw methods on +} + +// StdCheatsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdCheatsTransactorRaw struct { + Contract *StdCheatsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdCheats creates a new instance of StdCheats, bound to a specific deployed contract. +func NewStdCheats(address common.Address, backend bind.ContractBackend) (*StdCheats, error) { + contract, err := bindStdCheats(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdCheats{StdCheatsCaller: StdCheatsCaller{contract: contract}, StdCheatsTransactor: StdCheatsTransactor{contract: contract}, StdCheatsFilterer: StdCheatsFilterer{contract: contract}}, nil +} + +// NewStdCheatsCaller creates a new read-only instance of StdCheats, bound to a specific deployed contract. +func NewStdCheatsCaller(address common.Address, caller bind.ContractCaller) (*StdCheatsCaller, error) { + contract, err := bindStdCheats(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdCheatsCaller{contract: contract}, nil +} + +// NewStdCheatsTransactor creates a new write-only instance of StdCheats, bound to a specific deployed contract. +func NewStdCheatsTransactor(address common.Address, transactor bind.ContractTransactor) (*StdCheatsTransactor, error) { + contract, err := bindStdCheats(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdCheatsTransactor{contract: contract}, nil +} + +// NewStdCheatsFilterer creates a new log filterer instance of StdCheats, bound to a specific deployed contract. +func NewStdCheatsFilterer(address common.Address, filterer bind.ContractFilterer) (*StdCheatsFilterer, error) { + contract, err := bindStdCheats(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdCheatsFilterer{contract: contract}, nil +} + +// bindStdCheats binds a generic wrapper to an already deployed contract. +func bindStdCheats(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdCheatsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdCheats *StdCheatsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdCheats.Contract.StdCheatsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdCheats *StdCheatsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdCheats.Contract.StdCheatsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdCheats *StdCheatsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdCheats.Contract.StdCheatsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdCheats *StdCheatsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdCheats.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdCheats *StdCheatsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdCheats.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdCheats *StdCheatsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdCheats.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdcheats.sol/stdcheatssafe.go b/v2/pkg/stdcheats.sol/stdcheatssafe.go new file mode 100644 index 00000000..4ccb96d0 --- /dev/null +++ b/v2/pkg/stdcheats.sol/stdcheatssafe.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdcheats + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdCheatsSafeMetaData contains all meta data concerning the StdCheatsSafe contract. +var StdCheatsSafeMetaData = &bind.MetaData{ + ABI: "[]", +} + +// StdCheatsSafeABI is the input ABI used to generate the binding from. +// Deprecated: Use StdCheatsSafeMetaData.ABI instead. +var StdCheatsSafeABI = StdCheatsSafeMetaData.ABI + +// StdCheatsSafe is an auto generated Go binding around an Ethereum contract. +type StdCheatsSafe struct { + StdCheatsSafeCaller // Read-only binding to the contract + StdCheatsSafeTransactor // Write-only binding to the contract + StdCheatsSafeFilterer // Log filterer for contract events +} + +// StdCheatsSafeCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdCheatsSafeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsSafeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdCheatsSafeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsSafeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdCheatsSafeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdCheatsSafeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdCheatsSafeSession struct { + Contract *StdCheatsSafe // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdCheatsSafeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdCheatsSafeCallerSession struct { + Contract *StdCheatsSafeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdCheatsSafeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdCheatsSafeTransactorSession struct { + Contract *StdCheatsSafeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdCheatsSafeRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdCheatsSafeRaw struct { + Contract *StdCheatsSafe // Generic contract binding to access the raw methods on +} + +// StdCheatsSafeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdCheatsSafeCallerRaw struct { + Contract *StdCheatsSafeCaller // Generic read-only contract binding to access the raw methods on +} + +// StdCheatsSafeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdCheatsSafeTransactorRaw struct { + Contract *StdCheatsSafeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdCheatsSafe creates a new instance of StdCheatsSafe, bound to a specific deployed contract. +func NewStdCheatsSafe(address common.Address, backend bind.ContractBackend) (*StdCheatsSafe, error) { + contract, err := bindStdCheatsSafe(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdCheatsSafe{StdCheatsSafeCaller: StdCheatsSafeCaller{contract: contract}, StdCheatsSafeTransactor: StdCheatsSafeTransactor{contract: contract}, StdCheatsSafeFilterer: StdCheatsSafeFilterer{contract: contract}}, nil +} + +// NewStdCheatsSafeCaller creates a new read-only instance of StdCheatsSafe, bound to a specific deployed contract. +func NewStdCheatsSafeCaller(address common.Address, caller bind.ContractCaller) (*StdCheatsSafeCaller, error) { + contract, err := bindStdCheatsSafe(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdCheatsSafeCaller{contract: contract}, nil +} + +// NewStdCheatsSafeTransactor creates a new write-only instance of StdCheatsSafe, bound to a specific deployed contract. +func NewStdCheatsSafeTransactor(address common.Address, transactor bind.ContractTransactor) (*StdCheatsSafeTransactor, error) { + contract, err := bindStdCheatsSafe(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdCheatsSafeTransactor{contract: contract}, nil +} + +// NewStdCheatsSafeFilterer creates a new log filterer instance of StdCheatsSafe, bound to a specific deployed contract. +func NewStdCheatsSafeFilterer(address common.Address, filterer bind.ContractFilterer) (*StdCheatsSafeFilterer, error) { + contract, err := bindStdCheatsSafe(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdCheatsSafeFilterer{contract: contract}, nil +} + +// bindStdCheatsSafe binds a generic wrapper to an already deployed contract. +func bindStdCheatsSafe(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdCheatsSafeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdCheatsSafe *StdCheatsSafeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdCheatsSafe.Contract.StdCheatsSafeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdCheatsSafe *StdCheatsSafeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdCheatsSafe.Contract.StdCheatsSafeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdCheatsSafe *StdCheatsSafeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdCheatsSafe.Contract.StdCheatsSafeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdCheatsSafe *StdCheatsSafeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdCheatsSafe.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdCheatsSafe *StdCheatsSafeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdCheatsSafe.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdCheatsSafe *StdCheatsSafeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdCheatsSafe.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stderror.sol/stderror.go b/v2/pkg/stderror.sol/stderror.go new file mode 100644 index 00000000..ffcffad0 --- /dev/null +++ b/v2/pkg/stderror.sol/stderror.go @@ -0,0 +1,482 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stderror + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdErrorMetaData contains all meta data concerning the StdError contract. +var StdErrorMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"arithmeticError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"assertionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"divisionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"encodeStorageError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"enumConversionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"indexOOBError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"memOverflowError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"popError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zeroVarError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", + Bin: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212209d55015f4a99eb82983bead015f4946ac9e7ee7d323094e4fb909dc07bb134c164736f6c634300081a0033", +} + +// StdErrorABI is the input ABI used to generate the binding from. +// Deprecated: Use StdErrorMetaData.ABI instead. +var StdErrorABI = StdErrorMetaData.ABI + +// StdErrorBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdErrorMetaData.Bin instead. +var StdErrorBin = StdErrorMetaData.Bin + +// DeployStdError deploys a new Ethereum contract, binding an instance of StdError to it. +func DeployStdError(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdError, error) { + parsed, err := StdErrorMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdErrorBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdError{StdErrorCaller: StdErrorCaller{contract: contract}, StdErrorTransactor: StdErrorTransactor{contract: contract}, StdErrorFilterer: StdErrorFilterer{contract: contract}}, nil +} + +// StdError is an auto generated Go binding around an Ethereum contract. +type StdError struct { + StdErrorCaller // Read-only binding to the contract + StdErrorTransactor // Write-only binding to the contract + StdErrorFilterer // Log filterer for contract events +} + +// StdErrorCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdErrorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdErrorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdErrorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdErrorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdErrorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdErrorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdErrorSession struct { + Contract *StdError // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdErrorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdErrorCallerSession struct { + Contract *StdErrorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdErrorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdErrorTransactorSession struct { + Contract *StdErrorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdErrorRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdErrorRaw struct { + Contract *StdError // Generic contract binding to access the raw methods on +} + +// StdErrorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdErrorCallerRaw struct { + Contract *StdErrorCaller // Generic read-only contract binding to access the raw methods on +} + +// StdErrorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdErrorTransactorRaw struct { + Contract *StdErrorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdError creates a new instance of StdError, bound to a specific deployed contract. +func NewStdError(address common.Address, backend bind.ContractBackend) (*StdError, error) { + contract, err := bindStdError(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdError{StdErrorCaller: StdErrorCaller{contract: contract}, StdErrorTransactor: StdErrorTransactor{contract: contract}, StdErrorFilterer: StdErrorFilterer{contract: contract}}, nil +} + +// NewStdErrorCaller creates a new read-only instance of StdError, bound to a specific deployed contract. +func NewStdErrorCaller(address common.Address, caller bind.ContractCaller) (*StdErrorCaller, error) { + contract, err := bindStdError(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdErrorCaller{contract: contract}, nil +} + +// NewStdErrorTransactor creates a new write-only instance of StdError, bound to a specific deployed contract. +func NewStdErrorTransactor(address common.Address, transactor bind.ContractTransactor) (*StdErrorTransactor, error) { + contract, err := bindStdError(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdErrorTransactor{contract: contract}, nil +} + +// NewStdErrorFilterer creates a new log filterer instance of StdError, bound to a specific deployed contract. +func NewStdErrorFilterer(address common.Address, filterer bind.ContractFilterer) (*StdErrorFilterer, error) { + contract, err := bindStdError(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdErrorFilterer{contract: contract}, nil +} + +// bindStdError binds a generic wrapper to an already deployed contract. +func bindStdError(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdErrorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdError *StdErrorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdError.Contract.StdErrorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdError *StdErrorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdError.Contract.StdErrorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdError *StdErrorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdError.Contract.StdErrorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdError *StdErrorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdError.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdError *StdErrorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdError.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdError *StdErrorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdError.Contract.contract.Transact(opts, method, params...) +} + +// ArithmeticError is a free data retrieval call binding the contract method 0x8995290f. +// +// Solidity: function arithmeticError() view returns(bytes) +func (_StdError *StdErrorCaller) ArithmeticError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "arithmeticError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ArithmeticError is a free data retrieval call binding the contract method 0x8995290f. +// +// Solidity: function arithmeticError() view returns(bytes) +func (_StdError *StdErrorSession) ArithmeticError() ([]byte, error) { + return _StdError.Contract.ArithmeticError(&_StdError.CallOpts) +} + +// ArithmeticError is a free data retrieval call binding the contract method 0x8995290f. +// +// Solidity: function arithmeticError() view returns(bytes) +func (_StdError *StdErrorCallerSession) ArithmeticError() ([]byte, error) { + return _StdError.Contract.ArithmeticError(&_StdError.CallOpts) +} + +// AssertionError is a free data retrieval call binding the contract method 0x10332977. +// +// Solidity: function assertionError() view returns(bytes) +func (_StdError *StdErrorCaller) AssertionError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "assertionError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// AssertionError is a free data retrieval call binding the contract method 0x10332977. +// +// Solidity: function assertionError() view returns(bytes) +func (_StdError *StdErrorSession) AssertionError() ([]byte, error) { + return _StdError.Contract.AssertionError(&_StdError.CallOpts) +} + +// AssertionError is a free data retrieval call binding the contract method 0x10332977. +// +// Solidity: function assertionError() view returns(bytes) +func (_StdError *StdErrorCallerSession) AssertionError() ([]byte, error) { + return _StdError.Contract.AssertionError(&_StdError.CallOpts) +} + +// DivisionError is a free data retrieval call binding the contract method 0xfa784a44. +// +// Solidity: function divisionError() view returns(bytes) +func (_StdError *StdErrorCaller) DivisionError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "divisionError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// DivisionError is a free data retrieval call binding the contract method 0xfa784a44. +// +// Solidity: function divisionError() view returns(bytes) +func (_StdError *StdErrorSession) DivisionError() ([]byte, error) { + return _StdError.Contract.DivisionError(&_StdError.CallOpts) +} + +// DivisionError is a free data retrieval call binding the contract method 0xfa784a44. +// +// Solidity: function divisionError() view returns(bytes) +func (_StdError *StdErrorCallerSession) DivisionError() ([]byte, error) { + return _StdError.Contract.DivisionError(&_StdError.CallOpts) +} + +// EncodeStorageError is a free data retrieval call binding the contract method 0xd160e4de. +// +// Solidity: function encodeStorageError() view returns(bytes) +func (_StdError *StdErrorCaller) EncodeStorageError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "encodeStorageError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EncodeStorageError is a free data retrieval call binding the contract method 0xd160e4de. +// +// Solidity: function encodeStorageError() view returns(bytes) +func (_StdError *StdErrorSession) EncodeStorageError() ([]byte, error) { + return _StdError.Contract.EncodeStorageError(&_StdError.CallOpts) +} + +// EncodeStorageError is a free data retrieval call binding the contract method 0xd160e4de. +// +// Solidity: function encodeStorageError() view returns(bytes) +func (_StdError *StdErrorCallerSession) EncodeStorageError() ([]byte, error) { + return _StdError.Contract.EncodeStorageError(&_StdError.CallOpts) +} + +// EnumConversionError is a free data retrieval call binding the contract method 0x1de45560. +// +// Solidity: function enumConversionError() view returns(bytes) +func (_StdError *StdErrorCaller) EnumConversionError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "enumConversionError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EnumConversionError is a free data retrieval call binding the contract method 0x1de45560. +// +// Solidity: function enumConversionError() view returns(bytes) +func (_StdError *StdErrorSession) EnumConversionError() ([]byte, error) { + return _StdError.Contract.EnumConversionError(&_StdError.CallOpts) +} + +// EnumConversionError is a free data retrieval call binding the contract method 0x1de45560. +// +// Solidity: function enumConversionError() view returns(bytes) +func (_StdError *StdErrorCallerSession) EnumConversionError() ([]byte, error) { + return _StdError.Contract.EnumConversionError(&_StdError.CallOpts) +} + +// IndexOOBError is a free data retrieval call binding the contract method 0x05ee8612. +// +// Solidity: function indexOOBError() view returns(bytes) +func (_StdError *StdErrorCaller) IndexOOBError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "indexOOBError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// IndexOOBError is a free data retrieval call binding the contract method 0x05ee8612. +// +// Solidity: function indexOOBError() view returns(bytes) +func (_StdError *StdErrorSession) IndexOOBError() ([]byte, error) { + return _StdError.Contract.IndexOOBError(&_StdError.CallOpts) +} + +// IndexOOBError is a free data retrieval call binding the contract method 0x05ee8612. +// +// Solidity: function indexOOBError() view returns(bytes) +func (_StdError *StdErrorCallerSession) IndexOOBError() ([]byte, error) { + return _StdError.Contract.IndexOOBError(&_StdError.CallOpts) +} + +// MemOverflowError is a free data retrieval call binding the contract method 0x986c5f68. +// +// Solidity: function memOverflowError() view returns(bytes) +func (_StdError *StdErrorCaller) MemOverflowError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "memOverflowError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// MemOverflowError is a free data retrieval call binding the contract method 0x986c5f68. +// +// Solidity: function memOverflowError() view returns(bytes) +func (_StdError *StdErrorSession) MemOverflowError() ([]byte, error) { + return _StdError.Contract.MemOverflowError(&_StdError.CallOpts) +} + +// MemOverflowError is a free data retrieval call binding the contract method 0x986c5f68. +// +// Solidity: function memOverflowError() view returns(bytes) +func (_StdError *StdErrorCallerSession) MemOverflowError() ([]byte, error) { + return _StdError.Contract.MemOverflowError(&_StdError.CallOpts) +} + +// PopError is a free data retrieval call binding the contract method 0xb22dc54d. +// +// Solidity: function popError() view returns(bytes) +func (_StdError *StdErrorCaller) PopError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "popError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// PopError is a free data retrieval call binding the contract method 0xb22dc54d. +// +// Solidity: function popError() view returns(bytes) +func (_StdError *StdErrorSession) PopError() ([]byte, error) { + return _StdError.Contract.PopError(&_StdError.CallOpts) +} + +// PopError is a free data retrieval call binding the contract method 0xb22dc54d. +// +// Solidity: function popError() view returns(bytes) +func (_StdError *StdErrorCallerSession) PopError() ([]byte, error) { + return _StdError.Contract.PopError(&_StdError.CallOpts) +} + +// ZeroVarError is a free data retrieval call binding the contract method 0xb67689da. +// +// Solidity: function zeroVarError() view returns(bytes) +func (_StdError *StdErrorCaller) ZeroVarError(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _StdError.contract.Call(opts, &out, "zeroVarError") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ZeroVarError is a free data retrieval call binding the contract method 0xb67689da. +// +// Solidity: function zeroVarError() view returns(bytes) +func (_StdError *StdErrorSession) ZeroVarError() ([]byte, error) { + return _StdError.Contract.ZeroVarError(&_StdError.CallOpts) +} + +// ZeroVarError is a free data retrieval call binding the contract method 0xb67689da. +// +// Solidity: function zeroVarError() view returns(bytes) +func (_StdError *StdErrorCallerSession) ZeroVarError() ([]byte, error) { + return _StdError.Contract.ZeroVarError(&_StdError.CallOpts) +} diff --git a/v2/pkg/stdinvariant.sol/stdinvariant.go b/v2/pkg/stdinvariant.sol/stdinvariant.go new file mode 100644 index 00000000..1dbf4077 --- /dev/null +++ b/v2/pkg/stdinvariant.sol/stdinvariant.go @@ -0,0 +1,509 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdinvariant + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// StdInvariantMetaData contains all meta data concerning the StdInvariant contract. +var StdInvariantMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"}]", +} + +// StdInvariantABI is the input ABI used to generate the binding from. +// Deprecated: Use StdInvariantMetaData.ABI instead. +var StdInvariantABI = StdInvariantMetaData.ABI + +// StdInvariant is an auto generated Go binding around an Ethereum contract. +type StdInvariant struct { + StdInvariantCaller // Read-only binding to the contract + StdInvariantTransactor // Write-only binding to the contract + StdInvariantFilterer // Log filterer for contract events +} + +// StdInvariantCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdInvariantCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdInvariantTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdInvariantTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdInvariantFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdInvariantFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdInvariantSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdInvariantSession struct { + Contract *StdInvariant // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdInvariantCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdInvariantCallerSession struct { + Contract *StdInvariantCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdInvariantTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdInvariantTransactorSession struct { + Contract *StdInvariantTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdInvariantRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdInvariantRaw struct { + Contract *StdInvariant // Generic contract binding to access the raw methods on +} + +// StdInvariantCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdInvariantCallerRaw struct { + Contract *StdInvariantCaller // Generic read-only contract binding to access the raw methods on +} + +// StdInvariantTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdInvariantTransactorRaw struct { + Contract *StdInvariantTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdInvariant creates a new instance of StdInvariant, bound to a specific deployed contract. +func NewStdInvariant(address common.Address, backend bind.ContractBackend) (*StdInvariant, error) { + contract, err := bindStdInvariant(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdInvariant{StdInvariantCaller: StdInvariantCaller{contract: contract}, StdInvariantTransactor: StdInvariantTransactor{contract: contract}, StdInvariantFilterer: StdInvariantFilterer{contract: contract}}, nil +} + +// NewStdInvariantCaller creates a new read-only instance of StdInvariant, bound to a specific deployed contract. +func NewStdInvariantCaller(address common.Address, caller bind.ContractCaller) (*StdInvariantCaller, error) { + contract, err := bindStdInvariant(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdInvariantCaller{contract: contract}, nil +} + +// NewStdInvariantTransactor creates a new write-only instance of StdInvariant, bound to a specific deployed contract. +func NewStdInvariantTransactor(address common.Address, transactor bind.ContractTransactor) (*StdInvariantTransactor, error) { + contract, err := bindStdInvariant(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdInvariantTransactor{contract: contract}, nil +} + +// NewStdInvariantFilterer creates a new log filterer instance of StdInvariant, bound to a specific deployed contract. +func NewStdInvariantFilterer(address common.Address, filterer bind.ContractFilterer) (*StdInvariantFilterer, error) { + contract, err := bindStdInvariant(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdInvariantFilterer{contract: contract}, nil +} + +// bindStdInvariant binds a generic wrapper to an already deployed contract. +func bindStdInvariant(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdInvariantMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdInvariant *StdInvariantRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdInvariant.Contract.StdInvariantCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdInvariant *StdInvariantRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdInvariant.Contract.StdInvariantTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdInvariant *StdInvariantRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdInvariant.Contract.StdInvariantTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdInvariant *StdInvariantCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdInvariant.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdInvariant *StdInvariantTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdInvariant.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdInvariant *StdInvariantTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdInvariant.Contract.contract.Transact(opts, method, params...) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_StdInvariant *StdInvariantCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_StdInvariant *StdInvariantSession) ExcludeArtifacts() ([]string, error) { + return _StdInvariant.Contract.ExcludeArtifacts(&_StdInvariant.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_StdInvariant *StdInvariantCallerSession) ExcludeArtifacts() ([]string, error) { + return _StdInvariant.Contract.ExcludeArtifacts(&_StdInvariant.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_StdInvariant *StdInvariantCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_StdInvariant *StdInvariantSession) ExcludeContracts() ([]common.Address, error) { + return _StdInvariant.Contract.ExcludeContracts(&_StdInvariant.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_StdInvariant *StdInvariantCallerSession) ExcludeContracts() ([]common.Address, error) { + return _StdInvariant.Contract.ExcludeContracts(&_StdInvariant.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_StdInvariant *StdInvariantCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_StdInvariant *StdInvariantSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _StdInvariant.Contract.ExcludeSelectors(&_StdInvariant.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_StdInvariant *StdInvariantCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _StdInvariant.Contract.ExcludeSelectors(&_StdInvariant.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_StdInvariant *StdInvariantCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_StdInvariant *StdInvariantSession) ExcludeSenders() ([]common.Address, error) { + return _StdInvariant.Contract.ExcludeSenders(&_StdInvariant.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_StdInvariant *StdInvariantCallerSession) ExcludeSenders() ([]common.Address, error) { + return _StdInvariant.Contract.ExcludeSenders(&_StdInvariant.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_StdInvariant *StdInvariantCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_StdInvariant *StdInvariantSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _StdInvariant.Contract.TargetArtifactSelectors(&_StdInvariant.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_StdInvariant *StdInvariantCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _StdInvariant.Contract.TargetArtifactSelectors(&_StdInvariant.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_StdInvariant *StdInvariantCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_StdInvariant *StdInvariantSession) TargetArtifacts() ([]string, error) { + return _StdInvariant.Contract.TargetArtifacts(&_StdInvariant.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_StdInvariant *StdInvariantCallerSession) TargetArtifacts() ([]string, error) { + return _StdInvariant.Contract.TargetArtifacts(&_StdInvariant.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_StdInvariant *StdInvariantCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_StdInvariant *StdInvariantSession) TargetContracts() ([]common.Address, error) { + return _StdInvariant.Contract.TargetContracts(&_StdInvariant.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_StdInvariant *StdInvariantCallerSession) TargetContracts() ([]common.Address, error) { + return _StdInvariant.Contract.TargetContracts(&_StdInvariant.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_StdInvariant *StdInvariantCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_StdInvariant *StdInvariantSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _StdInvariant.Contract.TargetInterfaces(&_StdInvariant.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_StdInvariant *StdInvariantCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _StdInvariant.Contract.TargetInterfaces(&_StdInvariant.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_StdInvariant *StdInvariantCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_StdInvariant *StdInvariantSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _StdInvariant.Contract.TargetSelectors(&_StdInvariant.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_StdInvariant *StdInvariantCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _StdInvariant.Contract.TargetSelectors(&_StdInvariant.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_StdInvariant *StdInvariantCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _StdInvariant.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_StdInvariant *StdInvariantSession) TargetSenders() ([]common.Address, error) { + return _StdInvariant.Contract.TargetSenders(&_StdInvariant.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_StdInvariant *StdInvariantCallerSession) TargetSenders() ([]common.Address, error) { + return _StdInvariant.Contract.TargetSenders(&_StdInvariant.CallOpts) +} diff --git a/v2/pkg/stdjson.sol/stdjson.go b/v2/pkg/stdjson.sol/stdjson.go new file mode 100644 index 00000000..05cd807c --- /dev/null +++ b/v2/pkg/stdjson.sol/stdjson.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdjson + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdJsonMetaData contains all meta data concerning the StdJson contract. +var StdJsonMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd59f5048ae05ef3befcf86df42d1ad7dc359fe84a517a91f58b04f8a9c4c15164736f6c634300081a0033", +} + +// StdJsonABI is the input ABI used to generate the binding from. +// Deprecated: Use StdJsonMetaData.ABI instead. +var StdJsonABI = StdJsonMetaData.ABI + +// StdJsonBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdJsonMetaData.Bin instead. +var StdJsonBin = StdJsonMetaData.Bin + +// DeployStdJson deploys a new Ethereum contract, binding an instance of StdJson to it. +func DeployStdJson(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdJson, error) { + parsed, err := StdJsonMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdJsonBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdJson{StdJsonCaller: StdJsonCaller{contract: contract}, StdJsonTransactor: StdJsonTransactor{contract: contract}, StdJsonFilterer: StdJsonFilterer{contract: contract}}, nil +} + +// StdJson is an auto generated Go binding around an Ethereum contract. +type StdJson struct { + StdJsonCaller // Read-only binding to the contract + StdJsonTransactor // Write-only binding to the contract + StdJsonFilterer // Log filterer for contract events +} + +// StdJsonCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdJsonCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdJsonTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdJsonTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdJsonFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdJsonFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdJsonSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdJsonSession struct { + Contract *StdJson // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdJsonCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdJsonCallerSession struct { + Contract *StdJsonCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdJsonTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdJsonTransactorSession struct { + Contract *StdJsonTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdJsonRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdJsonRaw struct { + Contract *StdJson // Generic contract binding to access the raw methods on +} + +// StdJsonCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdJsonCallerRaw struct { + Contract *StdJsonCaller // Generic read-only contract binding to access the raw methods on +} + +// StdJsonTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdJsonTransactorRaw struct { + Contract *StdJsonTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdJson creates a new instance of StdJson, bound to a specific deployed contract. +func NewStdJson(address common.Address, backend bind.ContractBackend) (*StdJson, error) { + contract, err := bindStdJson(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdJson{StdJsonCaller: StdJsonCaller{contract: contract}, StdJsonTransactor: StdJsonTransactor{contract: contract}, StdJsonFilterer: StdJsonFilterer{contract: contract}}, nil +} + +// NewStdJsonCaller creates a new read-only instance of StdJson, bound to a specific deployed contract. +func NewStdJsonCaller(address common.Address, caller bind.ContractCaller) (*StdJsonCaller, error) { + contract, err := bindStdJson(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdJsonCaller{contract: contract}, nil +} + +// NewStdJsonTransactor creates a new write-only instance of StdJson, bound to a specific deployed contract. +func NewStdJsonTransactor(address common.Address, transactor bind.ContractTransactor) (*StdJsonTransactor, error) { + contract, err := bindStdJson(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdJsonTransactor{contract: contract}, nil +} + +// NewStdJsonFilterer creates a new log filterer instance of StdJson, bound to a specific deployed contract. +func NewStdJsonFilterer(address common.Address, filterer bind.ContractFilterer) (*StdJsonFilterer, error) { + contract, err := bindStdJson(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdJsonFilterer{contract: contract}, nil +} + +// bindStdJson binds a generic wrapper to an already deployed contract. +func bindStdJson(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdJsonMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdJson *StdJsonRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdJson.Contract.StdJsonCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdJson *StdJsonRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdJson.Contract.StdJsonTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdJson *StdJsonRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdJson.Contract.StdJsonTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdJson *StdJsonCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdJson.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdJson *StdJsonTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdJson.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdJson *StdJsonTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdJson.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdmath.sol/stdmath.go b/v2/pkg/stdmath.sol/stdmath.go new file mode 100644 index 00000000..c3614770 --- /dev/null +++ b/v2/pkg/stdmath.sol/stdmath.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdmath + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdMathMetaData contains all meta data concerning the StdMath contract. +var StdMathMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d48e26ea2524bb2f6ed36895c260c48987e2db7126d399a1b3bb7fd9552db8164736f6c634300081a0033", +} + +// StdMathABI is the input ABI used to generate the binding from. +// Deprecated: Use StdMathMetaData.ABI instead. +var StdMathABI = StdMathMetaData.ABI + +// StdMathBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdMathMetaData.Bin instead. +var StdMathBin = StdMathMetaData.Bin + +// DeployStdMath deploys a new Ethereum contract, binding an instance of StdMath to it. +func DeployStdMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdMath, error) { + parsed, err := StdMathMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdMathBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdMath{StdMathCaller: StdMathCaller{contract: contract}, StdMathTransactor: StdMathTransactor{contract: contract}, StdMathFilterer: StdMathFilterer{contract: contract}}, nil +} + +// StdMath is an auto generated Go binding around an Ethereum contract. +type StdMath struct { + StdMathCaller // Read-only binding to the contract + StdMathTransactor // Write-only binding to the contract + StdMathFilterer // Log filterer for contract events +} + +// StdMathCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdMathCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdMathTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdMathTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdMathFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdMathSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdMathSession struct { + Contract *StdMath // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdMathCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdMathCallerSession struct { + Contract *StdMathCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdMathTransactorSession struct { + Contract *StdMathTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdMathRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdMathRaw struct { + Contract *StdMath // Generic contract binding to access the raw methods on +} + +// StdMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdMathCallerRaw struct { + Contract *StdMathCaller // Generic read-only contract binding to access the raw methods on +} + +// StdMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdMathTransactorRaw struct { + Contract *StdMathTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdMath creates a new instance of StdMath, bound to a specific deployed contract. +func NewStdMath(address common.Address, backend bind.ContractBackend) (*StdMath, error) { + contract, err := bindStdMath(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdMath{StdMathCaller: StdMathCaller{contract: contract}, StdMathTransactor: StdMathTransactor{contract: contract}, StdMathFilterer: StdMathFilterer{contract: contract}}, nil +} + +// NewStdMathCaller creates a new read-only instance of StdMath, bound to a specific deployed contract. +func NewStdMathCaller(address common.Address, caller bind.ContractCaller) (*StdMathCaller, error) { + contract, err := bindStdMath(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdMathCaller{contract: contract}, nil +} + +// NewStdMathTransactor creates a new write-only instance of StdMath, bound to a specific deployed contract. +func NewStdMathTransactor(address common.Address, transactor bind.ContractTransactor) (*StdMathTransactor, error) { + contract, err := bindStdMath(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdMathTransactor{contract: contract}, nil +} + +// NewStdMathFilterer creates a new log filterer instance of StdMath, bound to a specific deployed contract. +func NewStdMathFilterer(address common.Address, filterer bind.ContractFilterer) (*StdMathFilterer, error) { + contract, err := bindStdMath(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdMathFilterer{contract: contract}, nil +} + +// bindStdMath binds a generic wrapper to an already deployed contract. +func bindStdMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdMathMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdMath *StdMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdMath.Contract.StdMathCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdMath *StdMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdMath.Contract.StdMathTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdMath *StdMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdMath.Contract.StdMathTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdMath *StdMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdMath.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdMath *StdMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdMath.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdMath *StdMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdMath.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdstorage.sol/stdstorage.go b/v2/pkg/stdstorage.sol/stdstorage.go new file mode 100644 index 00000000..b360a69e --- /dev/null +++ b/v2/pkg/stdstorage.sol/stdstorage.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdstorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdStorageMetaData contains all meta data concerning the StdStorage contract. +var StdStorageMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b08d0f905a716163daa7050311fa70db0bb92cc06d29f656b76779bf69a0f90164736f6c634300081a0033", +} + +// StdStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use StdStorageMetaData.ABI instead. +var StdStorageABI = StdStorageMetaData.ABI + +// StdStorageBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdStorageMetaData.Bin instead. +var StdStorageBin = StdStorageMetaData.Bin + +// DeployStdStorage deploys a new Ethereum contract, binding an instance of StdStorage to it. +func DeployStdStorage(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdStorage, error) { + parsed, err := StdStorageMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdStorageBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdStorage{StdStorageCaller: StdStorageCaller{contract: contract}, StdStorageTransactor: StdStorageTransactor{contract: contract}, StdStorageFilterer: StdStorageFilterer{contract: contract}}, nil +} + +// StdStorage is an auto generated Go binding around an Ethereum contract. +type StdStorage struct { + StdStorageCaller // Read-only binding to the contract + StdStorageTransactor // Write-only binding to the contract + StdStorageFilterer // Log filterer for contract events +} + +// StdStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdStorageSession struct { + Contract *StdStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdStorageCallerSession struct { + Contract *StdStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdStorageTransactorSession struct { + Contract *StdStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdStorageRaw struct { + Contract *StdStorage // Generic contract binding to access the raw methods on +} + +// StdStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdStorageCallerRaw struct { + Contract *StdStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// StdStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdStorageTransactorRaw struct { + Contract *StdStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdStorage creates a new instance of StdStorage, bound to a specific deployed contract. +func NewStdStorage(address common.Address, backend bind.ContractBackend) (*StdStorage, error) { + contract, err := bindStdStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdStorage{StdStorageCaller: StdStorageCaller{contract: contract}, StdStorageTransactor: StdStorageTransactor{contract: contract}, StdStorageFilterer: StdStorageFilterer{contract: contract}}, nil +} + +// NewStdStorageCaller creates a new read-only instance of StdStorage, bound to a specific deployed contract. +func NewStdStorageCaller(address common.Address, caller bind.ContractCaller) (*StdStorageCaller, error) { + contract, err := bindStdStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdStorageCaller{contract: contract}, nil +} + +// NewStdStorageTransactor creates a new write-only instance of StdStorage, bound to a specific deployed contract. +func NewStdStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*StdStorageTransactor, error) { + contract, err := bindStdStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdStorageTransactor{contract: contract}, nil +} + +// NewStdStorageFilterer creates a new log filterer instance of StdStorage, bound to a specific deployed contract. +func NewStdStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*StdStorageFilterer, error) { + contract, err := bindStdStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdStorageFilterer{contract: contract}, nil +} + +// bindStdStorage binds a generic wrapper to an already deployed contract. +func bindStdStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdStorageMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStorage *StdStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStorage.Contract.StdStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStorage *StdStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStorage.Contract.StdStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStorage *StdStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStorage.Contract.StdStorageTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStorage *StdStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStorage *StdStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStorage *StdStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStorage.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdstorage.sol/stdstoragesafe.go b/v2/pkg/stdstorage.sol/stdstoragesafe.go new file mode 100644 index 00000000..978bfe61 --- /dev/null +++ b/v2/pkg/stdstorage.sol/stdstoragesafe.go @@ -0,0 +1,475 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdstorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdStorageSafeMetaData contains all meta data concerning the StdStorageSafe contract. +var StdStorageSafeMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"SlotFound\",\"inputs\":[{\"name\":\"who\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"fsig\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"},{\"name\":\"keysHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"slot\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WARNING_UninitedSlot\",\"inputs\":[{\"name\":\"who\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6473a3e455f11b00943e19d62d02cf957dec4d27a7a7ddb023bf40264d580b064736f6c634300081a0033", +} + +// StdStorageSafeABI is the input ABI used to generate the binding from. +// Deprecated: Use StdStorageSafeMetaData.ABI instead. +var StdStorageSafeABI = StdStorageSafeMetaData.ABI + +// StdStorageSafeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdStorageSafeMetaData.Bin instead. +var StdStorageSafeBin = StdStorageSafeMetaData.Bin + +// DeployStdStorageSafe deploys a new Ethereum contract, binding an instance of StdStorageSafe to it. +func DeployStdStorageSafe(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdStorageSafe, error) { + parsed, err := StdStorageSafeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdStorageSafeBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdStorageSafe{StdStorageSafeCaller: StdStorageSafeCaller{contract: contract}, StdStorageSafeTransactor: StdStorageSafeTransactor{contract: contract}, StdStorageSafeFilterer: StdStorageSafeFilterer{contract: contract}}, nil +} + +// StdStorageSafe is an auto generated Go binding around an Ethereum contract. +type StdStorageSafe struct { + StdStorageSafeCaller // Read-only binding to the contract + StdStorageSafeTransactor // Write-only binding to the contract + StdStorageSafeFilterer // Log filterer for contract events +} + +// StdStorageSafeCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdStorageSafeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageSafeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdStorageSafeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageSafeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdStorageSafeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStorageSafeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdStorageSafeSession struct { + Contract *StdStorageSafe // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStorageSafeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdStorageSafeCallerSession struct { + Contract *StdStorageSafeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdStorageSafeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdStorageSafeTransactorSession struct { + Contract *StdStorageSafeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStorageSafeRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdStorageSafeRaw struct { + Contract *StdStorageSafe // Generic contract binding to access the raw methods on +} + +// StdStorageSafeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdStorageSafeCallerRaw struct { + Contract *StdStorageSafeCaller // Generic read-only contract binding to access the raw methods on +} + +// StdStorageSafeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdStorageSafeTransactorRaw struct { + Contract *StdStorageSafeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdStorageSafe creates a new instance of StdStorageSafe, bound to a specific deployed contract. +func NewStdStorageSafe(address common.Address, backend bind.ContractBackend) (*StdStorageSafe, error) { + contract, err := bindStdStorageSafe(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdStorageSafe{StdStorageSafeCaller: StdStorageSafeCaller{contract: contract}, StdStorageSafeTransactor: StdStorageSafeTransactor{contract: contract}, StdStorageSafeFilterer: StdStorageSafeFilterer{contract: contract}}, nil +} + +// NewStdStorageSafeCaller creates a new read-only instance of StdStorageSafe, bound to a specific deployed contract. +func NewStdStorageSafeCaller(address common.Address, caller bind.ContractCaller) (*StdStorageSafeCaller, error) { + contract, err := bindStdStorageSafe(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdStorageSafeCaller{contract: contract}, nil +} + +// NewStdStorageSafeTransactor creates a new write-only instance of StdStorageSafe, bound to a specific deployed contract. +func NewStdStorageSafeTransactor(address common.Address, transactor bind.ContractTransactor) (*StdStorageSafeTransactor, error) { + contract, err := bindStdStorageSafe(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdStorageSafeTransactor{contract: contract}, nil +} + +// NewStdStorageSafeFilterer creates a new log filterer instance of StdStorageSafe, bound to a specific deployed contract. +func NewStdStorageSafeFilterer(address common.Address, filterer bind.ContractFilterer) (*StdStorageSafeFilterer, error) { + contract, err := bindStdStorageSafe(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdStorageSafeFilterer{contract: contract}, nil +} + +// bindStdStorageSafe binds a generic wrapper to an already deployed contract. +func bindStdStorageSafe(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdStorageSafeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStorageSafe *StdStorageSafeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStorageSafe.Contract.StdStorageSafeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStorageSafe *StdStorageSafeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStorageSafe.Contract.StdStorageSafeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStorageSafe *StdStorageSafeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStorageSafe.Contract.StdStorageSafeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStorageSafe *StdStorageSafeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStorageSafe.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStorageSafe *StdStorageSafeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStorageSafe.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStorageSafe *StdStorageSafeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStorageSafe.Contract.contract.Transact(opts, method, params...) +} + +// StdStorageSafeSlotFoundIterator is returned from FilterSlotFound and is used to iterate over the raw logs and unpacked data for SlotFound events raised by the StdStorageSafe contract. +type StdStorageSafeSlotFoundIterator struct { + Event *StdStorageSafeSlotFound // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdStorageSafeSlotFoundIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdStorageSafeSlotFound) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdStorageSafeSlotFound) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdStorageSafeSlotFoundIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdStorageSafeSlotFoundIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdStorageSafeSlotFound represents a SlotFound event raised by the StdStorageSafe contract. +type StdStorageSafeSlotFound struct { + Who common.Address + Fsig [4]byte + KeysHash [32]byte + Slot *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSlotFound is a free log retrieval operation binding the contract event 0x9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed. +// +// Solidity: event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) FilterSlotFound(opts *bind.FilterOpts) (*StdStorageSafeSlotFoundIterator, error) { + + logs, sub, err := _StdStorageSafe.contract.FilterLogs(opts, "SlotFound") + if err != nil { + return nil, err + } + return &StdStorageSafeSlotFoundIterator{contract: _StdStorageSafe.contract, event: "SlotFound", logs: logs, sub: sub}, nil +} + +// WatchSlotFound is a free log subscription operation binding the contract event 0x9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed. +// +// Solidity: event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) WatchSlotFound(opts *bind.WatchOpts, sink chan<- *StdStorageSafeSlotFound) (event.Subscription, error) { + + logs, sub, err := _StdStorageSafe.contract.WatchLogs(opts, "SlotFound") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdStorageSafeSlotFound) + if err := _StdStorageSafe.contract.UnpackLog(event, "SlotFound", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSlotFound is a log parse operation binding the contract event 0x9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed. +// +// Solidity: event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) ParseSlotFound(log types.Log) (*StdStorageSafeSlotFound, error) { + event := new(StdStorageSafeSlotFound) + if err := _StdStorageSafe.contract.UnpackLog(event, "SlotFound", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StdStorageSafeWARNINGUninitedSlotIterator is returned from FilterWARNINGUninitedSlot and is used to iterate over the raw logs and unpacked data for WARNINGUninitedSlot events raised by the StdStorageSafe contract. +type StdStorageSafeWARNINGUninitedSlotIterator struct { + Event *StdStorageSafeWARNINGUninitedSlot // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *StdStorageSafeWARNINGUninitedSlotIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(StdStorageSafeWARNINGUninitedSlot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(StdStorageSafeWARNINGUninitedSlot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *StdStorageSafeWARNINGUninitedSlotIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StdStorageSafeWARNINGUninitedSlotIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StdStorageSafeWARNINGUninitedSlot represents a WARNINGUninitedSlot event raised by the StdStorageSafe contract. +type StdStorageSafeWARNINGUninitedSlot struct { + Who common.Address + Slot *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWARNINGUninitedSlot is a free log retrieval operation binding the contract event 0x080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5. +// +// Solidity: event WARNING_UninitedSlot(address who, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) FilterWARNINGUninitedSlot(opts *bind.FilterOpts) (*StdStorageSafeWARNINGUninitedSlotIterator, error) { + + logs, sub, err := _StdStorageSafe.contract.FilterLogs(opts, "WARNING_UninitedSlot") + if err != nil { + return nil, err + } + return &StdStorageSafeWARNINGUninitedSlotIterator{contract: _StdStorageSafe.contract, event: "WARNING_UninitedSlot", logs: logs, sub: sub}, nil +} + +// WatchWARNINGUninitedSlot is a free log subscription operation binding the contract event 0x080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5. +// +// Solidity: event WARNING_UninitedSlot(address who, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) WatchWARNINGUninitedSlot(opts *bind.WatchOpts, sink chan<- *StdStorageSafeWARNINGUninitedSlot) (event.Subscription, error) { + + logs, sub, err := _StdStorageSafe.contract.WatchLogs(opts, "WARNING_UninitedSlot") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(StdStorageSafeWARNINGUninitedSlot) + if err := _StdStorageSafe.contract.UnpackLog(event, "WARNING_UninitedSlot", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWARNINGUninitedSlot is a log parse operation binding the contract event 0x080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5. +// +// Solidity: event WARNING_UninitedSlot(address who, uint256 slot) +func (_StdStorageSafe *StdStorageSafeFilterer) ParseWARNINGUninitedSlot(log types.Log) (*StdStorageSafeWARNINGUninitedSlot, error) { + event := new(StdStorageSafeWARNINGUninitedSlot) + if err := _StdStorageSafe.contract.UnpackLog(event, "WARNING_UninitedSlot", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/stdstyle.sol/stdstyle.go b/v2/pkg/stdstyle.sol/stdstyle.go new file mode 100644 index 00000000..eb95e3b4 --- /dev/null +++ b/v2/pkg/stdstyle.sol/stdstyle.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdstyle + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdStyleMetaData contains all meta data concerning the StdStyle contract. +var StdStyleMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff3fd92fb4330d8d19bf3565d826668fa619fe94dea7a426c09740b32ee4ad4064736f6c634300081a0033", +} + +// StdStyleABI is the input ABI used to generate the binding from. +// Deprecated: Use StdStyleMetaData.ABI instead. +var StdStyleABI = StdStyleMetaData.ABI + +// StdStyleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdStyleMetaData.Bin instead. +var StdStyleBin = StdStyleMetaData.Bin + +// DeployStdStyle deploys a new Ethereum contract, binding an instance of StdStyle to it. +func DeployStdStyle(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdStyle, error) { + parsed, err := StdStyleMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdStyleBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdStyle{StdStyleCaller: StdStyleCaller{contract: contract}, StdStyleTransactor: StdStyleTransactor{contract: contract}, StdStyleFilterer: StdStyleFilterer{contract: contract}}, nil +} + +// StdStyle is an auto generated Go binding around an Ethereum contract. +type StdStyle struct { + StdStyleCaller // Read-only binding to the contract + StdStyleTransactor // Write-only binding to the contract + StdStyleFilterer // Log filterer for contract events +} + +// StdStyleCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdStyleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStyleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdStyleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStyleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdStyleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdStyleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdStyleSession struct { + Contract *StdStyle // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStyleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdStyleCallerSession struct { + Contract *StdStyleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdStyleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdStyleTransactorSession struct { + Contract *StdStyleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdStyleRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdStyleRaw struct { + Contract *StdStyle // Generic contract binding to access the raw methods on +} + +// StdStyleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdStyleCallerRaw struct { + Contract *StdStyleCaller // Generic read-only contract binding to access the raw methods on +} + +// StdStyleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdStyleTransactorRaw struct { + Contract *StdStyleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdStyle creates a new instance of StdStyle, bound to a specific deployed contract. +func NewStdStyle(address common.Address, backend bind.ContractBackend) (*StdStyle, error) { + contract, err := bindStdStyle(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdStyle{StdStyleCaller: StdStyleCaller{contract: contract}, StdStyleTransactor: StdStyleTransactor{contract: contract}, StdStyleFilterer: StdStyleFilterer{contract: contract}}, nil +} + +// NewStdStyleCaller creates a new read-only instance of StdStyle, bound to a specific deployed contract. +func NewStdStyleCaller(address common.Address, caller bind.ContractCaller) (*StdStyleCaller, error) { + contract, err := bindStdStyle(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdStyleCaller{contract: contract}, nil +} + +// NewStdStyleTransactor creates a new write-only instance of StdStyle, bound to a specific deployed contract. +func NewStdStyleTransactor(address common.Address, transactor bind.ContractTransactor) (*StdStyleTransactor, error) { + contract, err := bindStdStyle(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdStyleTransactor{contract: contract}, nil +} + +// NewStdStyleFilterer creates a new log filterer instance of StdStyle, bound to a specific deployed contract. +func NewStdStyleFilterer(address common.Address, filterer bind.ContractFilterer) (*StdStyleFilterer, error) { + contract, err := bindStdStyle(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdStyleFilterer{contract: contract}, nil +} + +// bindStdStyle binds a generic wrapper to an already deployed contract. +func bindStdStyle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdStyleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStyle *StdStyleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStyle.Contract.StdStyleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStyle *StdStyleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStyle.Contract.StdStyleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStyle *StdStyleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStyle.Contract.StdStyleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdStyle *StdStyleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdStyle.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdStyle *StdStyleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdStyle.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdStyle *StdStyleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdStyle.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdtoml.sol/stdtoml.go b/v2/pkg/stdtoml.sol/stdtoml.go new file mode 100644 index 00000000..c7070f77 --- /dev/null +++ b/v2/pkg/stdtoml.sol/stdtoml.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdtoml + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdTomlMetaData contains all meta data concerning the StdToml contract. +var StdTomlMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6fd7bb4f16b85832d27bbaf8945cb753ed6020be4e37073412dfad300f7ee364736f6c634300081a0033", +} + +// StdTomlABI is the input ABI used to generate the binding from. +// Deprecated: Use StdTomlMetaData.ABI instead. +var StdTomlABI = StdTomlMetaData.ABI + +// StdTomlBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StdTomlMetaData.Bin instead. +var StdTomlBin = StdTomlMetaData.Bin + +// DeployStdToml deploys a new Ethereum contract, binding an instance of StdToml to it. +func DeployStdToml(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StdToml, error) { + parsed, err := StdTomlMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StdTomlBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StdToml{StdTomlCaller: StdTomlCaller{contract: contract}, StdTomlTransactor: StdTomlTransactor{contract: contract}, StdTomlFilterer: StdTomlFilterer{contract: contract}}, nil +} + +// StdToml is an auto generated Go binding around an Ethereum contract. +type StdToml struct { + StdTomlCaller // Read-only binding to the contract + StdTomlTransactor // Write-only binding to the contract + StdTomlFilterer // Log filterer for contract events +} + +// StdTomlCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdTomlCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdTomlTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdTomlTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdTomlFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdTomlFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdTomlSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdTomlSession struct { + Contract *StdToml // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdTomlCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdTomlCallerSession struct { + Contract *StdTomlCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdTomlTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdTomlTransactorSession struct { + Contract *StdTomlTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdTomlRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdTomlRaw struct { + Contract *StdToml // Generic contract binding to access the raw methods on +} + +// StdTomlCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdTomlCallerRaw struct { + Contract *StdTomlCaller // Generic read-only contract binding to access the raw methods on +} + +// StdTomlTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdTomlTransactorRaw struct { + Contract *StdTomlTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdToml creates a new instance of StdToml, bound to a specific deployed contract. +func NewStdToml(address common.Address, backend bind.ContractBackend) (*StdToml, error) { + contract, err := bindStdToml(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdToml{StdTomlCaller: StdTomlCaller{contract: contract}, StdTomlTransactor: StdTomlTransactor{contract: contract}, StdTomlFilterer: StdTomlFilterer{contract: contract}}, nil +} + +// NewStdTomlCaller creates a new read-only instance of StdToml, bound to a specific deployed contract. +func NewStdTomlCaller(address common.Address, caller bind.ContractCaller) (*StdTomlCaller, error) { + contract, err := bindStdToml(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdTomlCaller{contract: contract}, nil +} + +// NewStdTomlTransactor creates a new write-only instance of StdToml, bound to a specific deployed contract. +func NewStdTomlTransactor(address common.Address, transactor bind.ContractTransactor) (*StdTomlTransactor, error) { + contract, err := bindStdToml(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdTomlTransactor{contract: contract}, nil +} + +// NewStdTomlFilterer creates a new log filterer instance of StdToml, bound to a specific deployed contract. +func NewStdTomlFilterer(address common.Address, filterer bind.ContractFilterer) (*StdTomlFilterer, error) { + contract, err := bindStdToml(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdTomlFilterer{contract: contract}, nil +} + +// bindStdToml binds a generic wrapper to an already deployed contract. +func bindStdToml(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdTomlMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdToml *StdTomlRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdToml.Contract.StdTomlCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdToml *StdTomlRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdToml.Contract.StdTomlTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdToml *StdTomlRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdToml.Contract.StdTomlTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdToml *StdTomlCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdToml.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdToml *StdTomlTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdToml.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdToml *StdTomlTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdToml.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/stdutils.sol/stdutils.go b/v2/pkg/stdutils.sol/stdutils.go new file mode 100644 index 00000000..88d73846 --- /dev/null +++ b/v2/pkg/stdutils.sol/stdutils.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package stdutils + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdUtilsMetaData contains all meta data concerning the StdUtils contract. +var StdUtilsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// StdUtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use StdUtilsMetaData.ABI instead. +var StdUtilsABI = StdUtilsMetaData.ABI + +// StdUtils is an auto generated Go binding around an Ethereum contract. +type StdUtils struct { + StdUtilsCaller // Read-only binding to the contract + StdUtilsTransactor // Write-only binding to the contract + StdUtilsFilterer // Log filterer for contract events +} + +// StdUtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StdUtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StdUtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StdUtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StdUtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StdUtilsSession struct { + Contract *StdUtils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StdUtilsCallerSession struct { + Contract *StdUtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StdUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StdUtilsTransactorSession struct { + Contract *StdUtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StdUtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StdUtilsRaw struct { + Contract *StdUtils // Generic contract binding to access the raw methods on +} + +// StdUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StdUtilsCallerRaw struct { + Contract *StdUtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// StdUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StdUtilsTransactorRaw struct { + Contract *StdUtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStdUtils creates a new instance of StdUtils, bound to a specific deployed contract. +func NewStdUtils(address common.Address, backend bind.ContractBackend) (*StdUtils, error) { + contract, err := bindStdUtils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StdUtils{StdUtilsCaller: StdUtilsCaller{contract: contract}, StdUtilsTransactor: StdUtilsTransactor{contract: contract}, StdUtilsFilterer: StdUtilsFilterer{contract: contract}}, nil +} + +// NewStdUtilsCaller creates a new read-only instance of StdUtils, bound to a specific deployed contract. +func NewStdUtilsCaller(address common.Address, caller bind.ContractCaller) (*StdUtilsCaller, error) { + contract, err := bindStdUtils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StdUtilsCaller{contract: contract}, nil +} + +// NewStdUtilsTransactor creates a new write-only instance of StdUtils, bound to a specific deployed contract. +func NewStdUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*StdUtilsTransactor, error) { + contract, err := bindStdUtils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StdUtilsTransactor{contract: contract}, nil +} + +// NewStdUtilsFilterer creates a new log filterer instance of StdUtils, bound to a specific deployed contract. +func NewStdUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*StdUtilsFilterer, error) { + contract, err := bindStdUtils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StdUtilsFilterer{contract: contract}, nil +} + +// bindStdUtils binds a generic wrapper to an already deployed contract. +func bindStdUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StdUtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdUtils *StdUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdUtils.Contract.StdUtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdUtils *StdUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdUtils.Contract.StdUtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdUtils *StdUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdUtils.Contract.StdUtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StdUtils *StdUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StdUtils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StdUtils *StdUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StdUtils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StdUtils *StdUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StdUtils.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/storageslot.sol/storageslot.go b/v2/pkg/storageslot.sol/storageslot.go new file mode 100644 index 00000000..ffda8eee --- /dev/null +++ b/v2/pkg/storageslot.sol/storageslot.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package storageslot + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StorageSlotMetaData contains all meta data concerning the StorageSlot contract. +var StorageSlotMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8376f88baaa046b0f89f3d37bf1f097ead0f7d4c8342299a4b9e6559b34d1f264736f6c634300081a0033", +} + +// StorageSlotABI is the input ABI used to generate the binding from. +// Deprecated: Use StorageSlotMetaData.ABI instead. +var StorageSlotABI = StorageSlotMetaData.ABI + +// StorageSlotBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StorageSlotMetaData.Bin instead. +var StorageSlotBin = StorageSlotMetaData.Bin + +// DeployStorageSlot deploys a new Ethereum contract, binding an instance of StorageSlot to it. +func DeployStorageSlot(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StorageSlot, error) { + parsed, err := StorageSlotMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StorageSlotBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil +} + +// StorageSlot is an auto generated Go binding around an Ethereum contract. +type StorageSlot struct { + StorageSlotCaller // Read-only binding to the contract + StorageSlotTransactor // Write-only binding to the contract + StorageSlotFilterer // Log filterer for contract events +} + +// StorageSlotCaller is an auto generated read-only Go binding around an Ethereum contract. +type StorageSlotCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StorageSlotTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StorageSlotFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StorageSlotSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StorageSlotSession struct { + Contract *StorageSlot // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StorageSlotCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StorageSlotCallerSession struct { + Contract *StorageSlotCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StorageSlotTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StorageSlotTransactorSession struct { + Contract *StorageSlotTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StorageSlotRaw is an auto generated low-level Go binding around an Ethereum contract. +type StorageSlotRaw struct { + Contract *StorageSlot // Generic contract binding to access the raw methods on +} + +// StorageSlotCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StorageSlotCallerRaw struct { + Contract *StorageSlotCaller // Generic read-only contract binding to access the raw methods on +} + +// StorageSlotTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StorageSlotTransactorRaw struct { + Contract *StorageSlotTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStorageSlot creates a new instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlot(address common.Address, backend bind.ContractBackend) (*StorageSlot, error) { + contract, err := bindStorageSlot(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StorageSlot{StorageSlotCaller: StorageSlotCaller{contract: contract}, StorageSlotTransactor: StorageSlotTransactor{contract: contract}, StorageSlotFilterer: StorageSlotFilterer{contract: contract}}, nil +} + +// NewStorageSlotCaller creates a new read-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotCaller(address common.Address, caller bind.ContractCaller) (*StorageSlotCaller, error) { + contract, err := bindStorageSlot(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StorageSlotCaller{contract: contract}, nil +} + +// NewStorageSlotTransactor creates a new write-only instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotTransactor(address common.Address, transactor bind.ContractTransactor) (*StorageSlotTransactor, error) { + contract, err := bindStorageSlot(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StorageSlotTransactor{contract: contract}, nil +} + +// NewStorageSlotFilterer creates a new log filterer instance of StorageSlot, bound to a specific deployed contract. +func NewStorageSlotFilterer(address common.Address, filterer bind.ContractFilterer) (*StorageSlotFilterer, error) { + contract, err := bindStorageSlot(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StorageSlotFilterer{contract: contract}, nil +} + +// bindStorageSlot binds a generic wrapper to an already deployed contract. +func bindStorageSlot(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StorageSlotMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.StorageSlotCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.StorageSlotTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_StorageSlot *StorageSlotCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StorageSlot.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_StorageSlot *StorageSlotTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StorageSlot *StorageSlotTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StorageSlot.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/strings.sol/strings.go b/v2/pkg/strings.sol/strings.go new file mode 100644 index 00000000..521fc2ad --- /dev/null +++ b/v2/pkg/strings.sol/strings.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package strings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StringsMetaData contains all meta data concerning the Strings contract. +var StringsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c3a0534d126407a2aa867545b37fdc259ccf2da7dbce92eea53d690507d9d5d64736f6c634300081a0033", +} + +// StringsABI is the input ABI used to generate the binding from. +// Deprecated: Use StringsMetaData.ABI instead. +var StringsABI = StringsMetaData.ABI + +// StringsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StringsMetaData.Bin instead. +var StringsBin = StringsMetaData.Bin + +// DeployStrings deploys a new Ethereum contract, binding an instance of Strings to it. +func DeployStrings(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Strings, error) { + parsed, err := StringsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StringsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil +} + +// Strings is an auto generated Go binding around an Ethereum contract. +type Strings struct { + StringsCaller // Read-only binding to the contract + StringsTransactor // Write-only binding to the contract + StringsFilterer // Log filterer for contract events +} + +// StringsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StringsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StringsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StringsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StringsSession struct { + Contract *Strings // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StringsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StringsCallerSession struct { + Contract *StringsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StringsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StringsTransactorSession struct { + Contract *StringsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StringsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StringsRaw struct { + Contract *Strings // Generic contract binding to access the raw methods on +} + +// StringsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StringsCallerRaw struct { + Contract *StringsCaller // Generic read-only contract binding to access the raw methods on +} + +// StringsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StringsTransactorRaw struct { + Contract *StringsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrings creates a new instance of Strings, bound to a specific deployed contract. +func NewStrings(address common.Address, backend bind.ContractBackend) (*Strings, error) { + contract, err := bindStrings(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil +} + +// NewStringsCaller creates a new read-only instance of Strings, bound to a specific deployed contract. +func NewStringsCaller(address common.Address, caller bind.ContractCaller) (*StringsCaller, error) { + contract, err := bindStrings(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StringsCaller{contract: contract}, nil +} + +// NewStringsTransactor creates a new write-only instance of Strings, bound to a specific deployed contract. +func NewStringsTransactor(address common.Address, transactor bind.ContractTransactor) (*StringsTransactor, error) { + contract, err := bindStrings(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StringsTransactor{contract: contract}, nil +} + +// NewStringsFilterer creates a new log filterer instance of Strings, bound to a specific deployed contract. +func NewStringsFilterer(address common.Address, filterer bind.ContractFilterer) (*StringsFilterer, error) { + contract, err := bindStrings(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StringsFilterer{contract: contract}, nil +} + +// bindStrings binds a generic wrapper to an already deployed contract. +func bindStrings(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StringsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Strings *StringsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Strings.Contract.StringsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Strings *StringsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Strings.Contract.StringsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Strings *StringsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Strings.Contract.StringsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Strings *StringsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Strings.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Strings *StringsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Strings.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Strings *StringsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Strings.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/systemcontract.sol/systemcontract.go b/v2/pkg/systemcontract.sol/systemcontract.go new file mode 100644 index 00000000..1a9415b5 --- /dev/null +++ b/v2/pkg/systemcontract.sol/systemcontract.go @@ -0,0 +1,1421 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// SystemContractMetaData contains all meta data concerning the SystemContract contract. +var SystemContractMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setConnectorZEVMAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasZetaPool\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"erc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaConnectorZEVMAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetConnectorZEVM\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033", +} + +// SystemContractABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractMetaData.ABI instead. +var SystemContractABI = SystemContractMetaData.ABI + +// SystemContractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SystemContractMetaData.Bin instead. +var SystemContractBin = SystemContractMetaData.Bin + +// DeploySystemContract deploys a new Ethereum contract, binding an instance of SystemContract to it. +func DeploySystemContract(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContract, error) { + parsed, err := SystemContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil +} + +// SystemContract is an auto generated Go binding around an Ethereum contract. +type SystemContract struct { + SystemContractCaller // Read-only binding to the contract + SystemContractTransactor // Write-only binding to the contract + SystemContractFilterer // Log filterer for contract events +} + +// SystemContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractSession struct { + Contract *SystemContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractCallerSession struct { + Contract *SystemContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractTransactorSession struct { + Contract *SystemContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractRaw struct { + Contract *SystemContract // Generic contract binding to access the raw methods on +} + +// SystemContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractCallerRaw struct { + Contract *SystemContractCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractTransactorRaw struct { + Contract *SystemContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContract creates a new instance of SystemContract, bound to a specific deployed contract. +func NewSystemContract(address common.Address, backend bind.ContractBackend) (*SystemContract, error) { + contract, err := bindSystemContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContract{SystemContractCaller: SystemContractCaller{contract: contract}, SystemContractTransactor: SystemContractTransactor{contract: contract}, SystemContractFilterer: SystemContractFilterer{contract: contract}}, nil +} + +// NewSystemContractCaller creates a new read-only instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractCaller(address common.Address, caller bind.ContractCaller) (*SystemContractCaller, error) { + contract, err := bindSystemContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractCaller{contract: contract}, nil +} + +// NewSystemContractTransactor creates a new write-only instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractTransactor, error) { + contract, err := bindSystemContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractTransactor{contract: contract}, nil +} + +// NewSystemContractFilterer creates a new log filterer instance of SystemContract, bound to a specific deployed contract. +func NewSystemContractFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractFilterer, error) { + contract, err := bindSystemContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractFilterer{contract: contract}, nil +} + +// bindSystemContract binds a generic wrapper to an already deployed contract. +func bindSystemContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContract *SystemContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContract.Contract.SystemContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContract *SystemContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContract.Contract.SystemContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContract *SystemContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContract.Contract.SystemContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContract *SystemContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContract *SystemContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContract *SystemContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContract.Contract.contract.Transact(opts, method, params...) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_SystemContract *SystemContractCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _SystemContract.Contract.FUNGIBLEMODULEADDRESS(&_SystemContract.CallOpts) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasCoinZRC20ByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasPriceByChainId", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContract *SystemContractCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContract.Contract.GasPriceByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContract *SystemContractCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContract.Contract.GasZetaPoolByChainId(&_SystemContract.CallOpts, arg0) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2FactoryAddress(&_SystemContract.CallOpts) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContract *SystemContractCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContract.Contract.Uniswapv2PairFor(&_SystemContract.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "uniswapv2Router02Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContract *SystemContractCallerSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContract.Contract.Uniswapv2Router02Address(&_SystemContract.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractSession) WZetaContractAddress() (common.Address, error) { + return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) WZetaContractAddress() (common.Address, error) { + return _SystemContract.Contract.WZetaContractAddress(&_SystemContract.CallOpts) +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractCaller) ZetaConnectorZEVMAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContract.contract.Call(opts, &out, "zetaConnectorZEVMAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractSession) ZetaConnectorZEVMAddress() (common.Address, error) { + return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) +} + +// ZetaConnectorZEVMAddress is a free data retrieval call binding the contract method 0xc62178ac. +// +// Solidity: function zetaConnectorZEVMAddress() view returns(address) +func (_SystemContract *SystemContractCallerSession) ZetaConnectorZEVMAddress() (common.Address, error) { + return _SystemContract.Contract.ZetaConnectorZEVMAddress(&_SystemContract.CallOpts) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_SystemContract *SystemContractTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _SystemContract.Contract.DepositAndCall(&_SystemContract.TransactOpts, context, zrc20, amount, target, message) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractTransactor) SetConnectorZEVMAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setConnectorZEVMAddress", addr) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) +} + +// SetConnectorZEVMAddress is a paid mutator transaction binding the contract method 0x1f0e251b. +// +// Solidity: function setConnectorZEVMAddress(address addr) returns() +func (_SystemContract *SystemContractTransactorSession) SetConnectorZEVMAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetConnectorZEVMAddress(&_SystemContract.TransactOpts, addr) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasCoinZRC20(&_SystemContract.TransactOpts, chainID, zrc20) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasPrice", chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasPrice(&_SystemContract.TransactOpts, chainID, price) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractTransactor) SetGasZetaPool(opts *bind.TransactOpts, chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setGasZetaPool", chainID, erc20) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) +} + +// SetGasZetaPool is a paid mutator transaction binding the contract method 0x91dd645f. +// +// Solidity: function setGasZetaPool(uint256 chainID, address erc20) returns() +func (_SystemContract *SystemContractTransactorSession) SetGasZetaPool(chainID *big.Int, erc20 common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetGasZetaPool(&_SystemContract.TransactOpts, chainID, erc20) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContract.contract.Transact(opts, "setWZETAContractAddress", addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContract *SystemContractTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContract.Contract.SetWZETAContractAddress(&_SystemContract.TransactOpts, addr) +} + +// SystemContractSetConnectorZEVMIterator is returned from FilterSetConnectorZEVM and is used to iterate over the raw logs and unpacked data for SetConnectorZEVM events raised by the SystemContract contract. +type SystemContractSetConnectorZEVMIterator struct { + Event *SystemContractSetConnectorZEVM // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetConnectorZEVMIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetConnectorZEVM) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetConnectorZEVM) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetConnectorZEVMIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetConnectorZEVMIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetConnectorZEVM represents a SetConnectorZEVM event raised by the SystemContract contract. +type SystemContractSetConnectorZEVM struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetConnectorZEVM is a free log retrieval operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) FilterSetConnectorZEVM(opts *bind.FilterOpts) (*SystemContractSetConnectorZEVMIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetConnectorZEVM") + if err != nil { + return nil, err + } + return &SystemContractSetConnectorZEVMIterator{contract: _SystemContract.contract, event: "SetConnectorZEVM", logs: logs, sub: sub}, nil +} + +// WatchSetConnectorZEVM is a free log subscription operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) WatchSetConnectorZEVM(opts *bind.WatchOpts, sink chan<- *SystemContractSetConnectorZEVM) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetConnectorZEVM") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetConnectorZEVM) + if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetConnectorZEVM is a log parse operation binding the contract event 0x3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c. +// +// Solidity: event SetConnectorZEVM(address arg0) +func (_SystemContract *SystemContractFilterer) ParseSetConnectorZEVM(log types.Log) (*SystemContractSetConnectorZEVM, error) { + event := new(SystemContractSetConnectorZEVM) + if err := _SystemContract.contract.UnpackLog(event, "SetConnectorZEVM", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContract contract. +type SystemContractSetGasCoinIterator struct { + Event *SystemContractSetGasCoin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasCoinIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasCoinIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasCoinIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasCoin represents a SetGasCoin event raised by the SystemContract contract. +type SystemContractSetGasCoin struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractSetGasCoinIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return &SystemContractSetGasCoinIterator{contract: _SystemContract.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil +} + +// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasCoin) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasCoin) + if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasCoin(log types.Log) (*SystemContractSetGasCoin, error) { + event := new(SystemContractSetGasCoin) + if err := _SystemContract.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContract contract. +type SystemContractSetGasPriceIterator struct { + Event *SystemContractSetGasPrice // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasPriceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasPriceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasPriceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasPrice represents a SetGasPrice event raised by the SystemContract contract. +type SystemContractSetGasPrice struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractSetGasPriceIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return &SystemContractSetGasPriceIterator{contract: _SystemContract.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil +} + +// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasPrice) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasPrice) + if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasPrice(log types.Log) (*SystemContractSetGasPrice, error) { + event := new(SystemContractSetGasPrice) + if err := _SystemContract.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContract contract. +type SystemContractSetGasZetaPoolIterator struct { + Event *SystemContractSetGasZetaPool // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetGasZetaPoolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetGasZetaPoolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetGasZetaPoolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContract contract. +type SystemContractSetGasZetaPool struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractSetGasZetaPoolIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return &SystemContractSetGasZetaPoolIterator{contract: _SystemContract.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil +} + +// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractSetGasZetaPool) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetGasZetaPool) + if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContract *SystemContractFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractSetGasZetaPool, error) { + event := new(SystemContractSetGasZetaPool) + if err := _SystemContract.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContract contract. +type SystemContractSetWZetaIterator struct { + Event *SystemContractSetWZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSetWZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSetWZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSetWZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSetWZeta represents a SetWZeta event raised by the SystemContract contract. +type SystemContractSetWZeta struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractSetWZetaIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return &SystemContractSetWZetaIterator{contract: _SystemContract.contract, event: "SetWZeta", logs: logs, sub: sub}, nil +} + +// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractSetWZeta) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSetWZeta) + if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContract *SystemContractFilterer) ParseSetWZeta(log types.Log) (*SystemContractSetWZeta, error) { + event := new(SystemContractSetWZeta) + if err := _SystemContract.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContract contract. +type SystemContractSystemContractDeployedIterator struct { + Event *SystemContractSystemContractDeployed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractSystemContractDeployedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractSystemContractDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractSystemContractDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContract contract. +type SystemContractSystemContractDeployed struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractSystemContractDeployedIterator, error) { + + logs, sub, err := _SystemContract.contract.FilterLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return &SystemContractSystemContractDeployedIterator{contract: _SystemContract.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil +} + +// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractSystemContractDeployed) (event.Subscription, error) { + + logs, sub, err := _SystemContract.contract.WatchLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractSystemContractDeployed) + if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContract *SystemContractFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractSystemContractDeployed, error) { + event := new(SystemContractSystemContractDeployed) + if err := _SystemContract.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/systemcontract.sol/systemcontracterrors.go b/v2/pkg/systemcontract.sol/systemcontracterrors.go new file mode 100644 index 00000000..05427d68 --- /dev/null +++ b/v2/pkg/systemcontract.sol/systemcontracterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. +var SystemContractErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", +} + +// SystemContractErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractErrorsMetaData.ABI instead. +var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI + +// SystemContractErrors is an auto generated Go binding around an Ethereum contract. +type SystemContractErrors struct { + SystemContractErrorsCaller // Read-only binding to the contract + SystemContractErrorsTransactor // Write-only binding to the contract + SystemContractErrorsFilterer // Log filterer for contract events +} + +// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractErrorsSession struct { + Contract *SystemContractErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractErrorsCallerSession struct { + Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractErrorsTransactorSession struct { + Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractErrorsRaw struct { + Contract *SystemContractErrors // Generic contract binding to access the raw methods on +} + +// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractErrorsCallerRaw struct { + Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactorRaw struct { + Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { + contract, err := bindSystemContractErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil +} + +// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { + contract, err := bindSystemContractErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsCaller{contract: contract}, nil +} + +// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { + contract, err := bindSystemContractErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsTransactor{contract: contract}, nil +} + +// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { + contract, err := bindSystemContractErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractErrorsFilterer{contract: contract}, nil +} + +// bindSystemContractErrors binds a generic wrapper to an already deployed contract. +func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/systemcontractmock.sol/systemcontracterrors.go b/v2/pkg/systemcontractmock.sol/systemcontracterrors.go new file mode 100644 index 00000000..9c9db887 --- /dev/null +++ b/v2/pkg/systemcontractmock.sol/systemcontracterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. +var SystemContractErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]}]", +} + +// SystemContractErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractErrorsMetaData.ABI instead. +var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI + +// SystemContractErrors is an auto generated Go binding around an Ethereum contract. +type SystemContractErrors struct { + SystemContractErrorsCaller // Read-only binding to the contract + SystemContractErrorsTransactor // Write-only binding to the contract + SystemContractErrorsFilterer // Log filterer for contract events +} + +// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractErrorsSession struct { + Contract *SystemContractErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractErrorsCallerSession struct { + Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractErrorsTransactorSession struct { + Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractErrorsRaw struct { + Contract *SystemContractErrors // Generic contract binding to access the raw methods on +} + +// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractErrorsCallerRaw struct { + Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactorRaw struct { + Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { + contract, err := bindSystemContractErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil +} + +// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { + contract, err := bindSystemContractErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsCaller{contract: contract}, nil +} + +// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { + contract, err := bindSystemContractErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsTransactor{contract: contract}, nil +} + +// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { + contract, err := bindSystemContractErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractErrorsFilterer{contract: contract}, nil +} + +// bindSystemContractErrors binds a generic wrapper to an already deployed contract. +func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/systemcontractmock.sol/systemcontractmock.go b/v2/pkg/systemcontractmock.sol/systemcontractmock.go new file mode 100644 index 00000000..4efd47d9 --- /dev/null +++ b/v2/pkg/systemcontractmock.sol/systemcontractmock.go @@ -0,0 +1,1176 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. +var SystemContractMockMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]}]", + Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033", +} + +// SystemContractMockABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractMockMetaData.ABI instead. +var SystemContractMockABI = SystemContractMockMetaData.ABI + +// SystemContractMockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SystemContractMockMetaData.Bin instead. +var SystemContractMockBin = SystemContractMockMetaData.Bin + +// DeploySystemContractMock deploys a new Ethereum contract, binding an instance of SystemContractMock to it. +func DeploySystemContractMock(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContractMock, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractMockBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// SystemContractMock is an auto generated Go binding around an Ethereum contract. +type SystemContractMock struct { + SystemContractMockCaller // Read-only binding to the contract + SystemContractMockTransactor // Write-only binding to the contract + SystemContractMockFilterer // Log filterer for contract events +} + +// SystemContractMockCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractMockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractMockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractMockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractMockSession struct { + Contract *SystemContractMock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractMockCallerSession struct { + Contract *SystemContractMockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractMockTransactorSession struct { + Contract *SystemContractMockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractMockRaw struct { + Contract *SystemContractMock // Generic contract binding to access the raw methods on +} + +// SystemContractMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractMockCallerRaw struct { + Contract *SystemContractMockCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractMockTransactorRaw struct { + Contract *SystemContractMockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractMock creates a new instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMock(address common.Address, backend bind.ContractBackend) (*SystemContractMock, error) { + contract, err := bindSystemContractMock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// NewSystemContractMockCaller creates a new read-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockCaller(address common.Address, caller bind.ContractCaller) (*SystemContractMockCaller, error) { + contract, err := bindSystemContractMock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractMockCaller{contract: contract}, nil +} + +// NewSystemContractMockTransactor creates a new write-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractMockTransactor, error) { + contract, err := bindSystemContractMock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractMockTransactor{contract: contract}, nil +} + +// NewSystemContractMockFilterer creates a new log filterer instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractMockFilterer, error) { + contract, err := bindSystemContractMock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractMockFilterer{contract: contract}, nil +} + +// bindSystemContractMock binds a generic wrapper to an already deployed contract. +func bindSystemContractMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.SystemContractMockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transact(opts, method, params...) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasPriceByChainId", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2Router02Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactor) OnCrossChainCall(opts *bind.TransactOpts, target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "onCrossChainCall", target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasPrice", chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setWZETAContractAddress", addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SystemContractMockSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContractMock contract. +type SystemContractMockSetGasCoinIterator struct { + Event *SystemContractMockSetGasCoin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasCoinIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasCoinIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasCoinIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasCoin represents a SetGasCoin event raised by the SystemContractMock contract. +type SystemContractMockSetGasCoin struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractMockSetGasCoinIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasCoinIterator{contract: _SystemContractMock.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil +} + +// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasCoin) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasCoin(log types.Log) (*SystemContractMockSetGasCoin, error) { + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContractMock contract. +type SystemContractMockSetGasPriceIterator struct { + Event *SystemContractMockSetGasPrice // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasPriceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasPriceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasPriceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasPrice represents a SetGasPrice event raised by the SystemContractMock contract. +type SystemContractMockSetGasPrice struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractMockSetGasPriceIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasPriceIterator{contract: _SystemContractMock.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil +} + +// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasPrice) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasPrice(log types.Log) (*SystemContractMockSetGasPrice, error) { + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPoolIterator struct { + Event *SystemContractMockSetGasZetaPool // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasZetaPoolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasZetaPoolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasZetaPoolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPool struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractMockSetGasZetaPoolIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasZetaPoolIterator{contract: _SystemContractMock.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil +} + +// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasZetaPool) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractMockSetGasZetaPool, error) { + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContractMock contract. +type SystemContractMockSetWZetaIterator struct { + Event *SystemContractMockSetWZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetWZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetWZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetWZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetWZeta represents a SetWZeta event raised by the SystemContractMock contract. +type SystemContractMockSetWZeta struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractMockSetWZetaIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return &SystemContractMockSetWZetaIterator{contract: _SystemContractMock.contract, event: "SetWZeta", logs: logs, sub: sub}, nil +} + +// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetWZeta) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetWZeta(log types.Log) (*SystemContractMockSetWZeta, error) { + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployedIterator struct { + Event *SystemContractMockSystemContractDeployed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSystemContractDeployedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSystemContractDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSystemContractDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployed struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractMockSystemContractDeployedIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return &SystemContractMockSystemContractDeployedIterator{contract: _SystemContractMock.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil +} + +// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractMockSystemContractDeployed) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractMockSystemContractDeployed, error) { + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/test.sol/test.go b/v2/pkg/test.sol/test.go new file mode 100644 index 00000000..1bf46ad4 --- /dev/null +++ b/v2/pkg/test.sol/test.go @@ -0,0 +1,3532 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package test + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// TestMetaData contains all meta data concerning the Test contract. +var TestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// TestABI is the input ABI used to generate the binding from. +// Deprecated: Use TestMetaData.ABI instead. +var TestABI = TestMetaData.ABI + +// Test is an auto generated Go binding around an Ethereum contract. +type Test struct { + TestCaller // Read-only binding to the contract + TestTransactor // Write-only binding to the contract + TestFilterer // Log filterer for contract events +} + +// TestCaller is an auto generated read-only Go binding around an Ethereum contract. +type TestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TestSession struct { + Contract *Test // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TestCallerSession struct { + Contract *TestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TestTransactorSession struct { + Contract *TestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestRaw is an auto generated low-level Go binding around an Ethereum contract. +type TestRaw struct { + Contract *Test // Generic contract binding to access the raw methods on +} + +// TestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TestCallerRaw struct { + Contract *TestCaller // Generic read-only contract binding to access the raw methods on +} + +// TestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TestTransactorRaw struct { + Contract *TestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTest creates a new instance of Test, bound to a specific deployed contract. +func NewTest(address common.Address, backend bind.ContractBackend) (*Test, error) { + contract, err := bindTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Test{TestCaller: TestCaller{contract: contract}, TestTransactor: TestTransactor{contract: contract}, TestFilterer: TestFilterer{contract: contract}}, nil +} + +// NewTestCaller creates a new read-only instance of Test, bound to a specific deployed contract. +func NewTestCaller(address common.Address, caller bind.ContractCaller) (*TestCaller, error) { + contract, err := bindTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TestCaller{contract: contract}, nil +} + +// NewTestTransactor creates a new write-only instance of Test, bound to a specific deployed contract. +func NewTestTransactor(address common.Address, transactor bind.ContractTransactor) (*TestTransactor, error) { + contract, err := bindTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TestTransactor{contract: contract}, nil +} + +// NewTestFilterer creates a new log filterer instance of Test, bound to a specific deployed contract. +func NewTestFilterer(address common.Address, filterer bind.ContractFilterer) (*TestFilterer, error) { + contract, err := bindTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TestFilterer{contract: contract}, nil +} + +// bindTest binds a generic wrapper to an already deployed contract. +func bindTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Test *TestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Test.Contract.TestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Test *TestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Test.Contract.TestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Test *TestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Test.Contract.TestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Test *TestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Test.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Test *TestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Test.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Test *TestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Test.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_Test *TestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_Test *TestSession) ISTEST() (bool, error) { + return _Test.Contract.ISTEST(&_Test.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_Test *TestCallerSession) ISTEST() (bool, error) { + return _Test.Contract.ISTEST(&_Test.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_Test *TestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_Test *TestSession) ExcludeArtifacts() ([]string, error) { + return _Test.Contract.ExcludeArtifacts(&_Test.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_Test *TestCallerSession) ExcludeArtifacts() ([]string, error) { + return _Test.Contract.ExcludeArtifacts(&_Test.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_Test *TestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_Test *TestSession) ExcludeContracts() ([]common.Address, error) { + return _Test.Contract.ExcludeContracts(&_Test.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_Test *TestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _Test.Contract.ExcludeContracts(&_Test.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_Test *TestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_Test *TestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _Test.Contract.ExcludeSelectors(&_Test.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_Test *TestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _Test.Contract.ExcludeSelectors(&_Test.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_Test *TestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_Test *TestSession) ExcludeSenders() ([]common.Address, error) { + return _Test.Contract.ExcludeSenders(&_Test.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_Test *TestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _Test.Contract.ExcludeSenders(&_Test.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_Test *TestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_Test *TestSession) Failed() (bool, error) { + return _Test.Contract.Failed(&_Test.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_Test *TestCallerSession) Failed() (bool, error) { + return _Test.Contract.Failed(&_Test.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_Test *TestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_Test *TestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _Test.Contract.TargetArtifactSelectors(&_Test.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_Test *TestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _Test.Contract.TargetArtifactSelectors(&_Test.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_Test *TestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_Test *TestSession) TargetArtifacts() ([]string, error) { + return _Test.Contract.TargetArtifacts(&_Test.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_Test *TestCallerSession) TargetArtifacts() ([]string, error) { + return _Test.Contract.TargetArtifacts(&_Test.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_Test *TestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_Test *TestSession) TargetContracts() ([]common.Address, error) { + return _Test.Contract.TargetContracts(&_Test.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_Test *TestCallerSession) TargetContracts() ([]common.Address, error) { + return _Test.Contract.TargetContracts(&_Test.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_Test *TestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_Test *TestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _Test.Contract.TargetInterfaces(&_Test.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_Test *TestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _Test.Contract.TargetInterfaces(&_Test.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_Test *TestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_Test *TestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _Test.Contract.TargetSelectors(&_Test.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_Test *TestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _Test.Contract.TargetSelectors(&_Test.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_Test *TestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _Test.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_Test *TestSession) TargetSenders() ([]common.Address, error) { + return _Test.Contract.TargetSenders(&_Test.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_Test *TestCallerSession) TargetSenders() ([]common.Address, error) { + return _Test.Contract.TargetSenders(&_Test.CallOpts) +} + +// TestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the Test contract. +type TestLogIterator struct { + Event *TestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLog represents a Log event raised by the Test contract. +type TestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_Test *TestFilterer) FilterLog(opts *bind.FilterOpts) (*TestLogIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &TestLogIterator{contract: _Test.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_Test *TestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *TestLog) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLog) + if err := _Test.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_Test *TestFilterer) ParseLog(log types.Log) (*TestLog, error) { + event := new(TestLog) + if err := _Test.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the Test contract. +type TestLogAddressIterator struct { + Event *TestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogAddress represents a LogAddress event raised by the Test contract. +type TestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_Test *TestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*TestLogAddressIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &TestLogAddressIterator{contract: _Test.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_Test *TestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *TestLogAddress) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogAddress) + if err := _Test.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_Test *TestFilterer) ParseLogAddress(log types.Log) (*TestLogAddress, error) { + event := new(TestLogAddress) + if err := _Test.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the Test contract. +type TestLogArrayIterator struct { + Event *TestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogArray represents a LogArray event raised by the Test contract. +type TestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_Test *TestFilterer) FilterLogArray(opts *bind.FilterOpts) (*TestLogArrayIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &TestLogArrayIterator{contract: _Test.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_Test *TestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *TestLogArray) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogArray) + if err := _Test.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_Test *TestFilterer) ParseLogArray(log types.Log) (*TestLogArray, error) { + event := new(TestLogArray) + if err := _Test.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the Test contract. +type TestLogArray0Iterator struct { + Event *TestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogArray0 represents a LogArray0 event raised by the Test contract. +type TestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_Test *TestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*TestLogArray0Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &TestLogArray0Iterator{contract: _Test.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_Test *TestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *TestLogArray0) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogArray0) + if err := _Test.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_Test *TestFilterer) ParseLogArray0(log types.Log) (*TestLogArray0, error) { + event := new(TestLogArray0) + if err := _Test.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the Test contract. +type TestLogArray1Iterator struct { + Event *TestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogArray1 represents a LogArray1 event raised by the Test contract. +type TestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_Test *TestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*TestLogArray1Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &TestLogArray1Iterator{contract: _Test.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_Test *TestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *TestLogArray1) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogArray1) + if err := _Test.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_Test *TestFilterer) ParseLogArray1(log types.Log) (*TestLogArray1, error) { + event := new(TestLogArray1) + if err := _Test.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the Test contract. +type TestLogBytesIterator struct { + Event *TestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogBytes represents a LogBytes event raised by the Test contract. +type TestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_Test *TestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*TestLogBytesIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &TestLogBytesIterator{contract: _Test.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_Test *TestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *TestLogBytes) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogBytes) + if err := _Test.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_Test *TestFilterer) ParseLogBytes(log types.Log) (*TestLogBytes, error) { + event := new(TestLogBytes) + if err := _Test.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the Test contract. +type TestLogBytes32Iterator struct { + Event *TestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogBytes32 represents a LogBytes32 event raised by the Test contract. +type TestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_Test *TestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*TestLogBytes32Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &TestLogBytes32Iterator{contract: _Test.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_Test *TestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *TestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogBytes32) + if err := _Test.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_Test *TestFilterer) ParseLogBytes32(log types.Log) (*TestLogBytes32, error) { + event := new(TestLogBytes32) + if err := _Test.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the Test contract. +type TestLogIntIterator struct { + Event *TestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogInt represents a LogInt event raised by the Test contract. +type TestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_Test *TestFilterer) FilterLogInt(opts *bind.FilterOpts) (*TestLogIntIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &TestLogIntIterator{contract: _Test.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_Test *TestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *TestLogInt) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogInt) + if err := _Test.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_Test *TestFilterer) ParseLogInt(log types.Log) (*TestLogInt, error) { + event := new(TestLogInt) + if err := _Test.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the Test contract. +type TestLogNamedAddressIterator struct { + Event *TestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedAddress represents a LogNamedAddress event raised by the Test contract. +type TestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_Test *TestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*TestLogNamedAddressIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &TestLogNamedAddressIterator{contract: _Test.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_Test *TestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *TestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedAddress) + if err := _Test.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_Test *TestFilterer) ParseLogNamedAddress(log types.Log) (*TestLogNamedAddress, error) { + event := new(TestLogNamedAddress) + if err := _Test.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the Test contract. +type TestLogNamedArrayIterator struct { + Event *TestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedArray represents a LogNamedArray event raised by the Test contract. +type TestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_Test *TestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*TestLogNamedArrayIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &TestLogNamedArrayIterator{contract: _Test.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_Test *TestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *TestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedArray) + if err := _Test.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_Test *TestFilterer) ParseLogNamedArray(log types.Log) (*TestLogNamedArray, error) { + event := new(TestLogNamedArray) + if err := _Test.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the Test contract. +type TestLogNamedArray0Iterator struct { + Event *TestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedArray0 represents a LogNamedArray0 event raised by the Test contract. +type TestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_Test *TestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*TestLogNamedArray0Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &TestLogNamedArray0Iterator{contract: _Test.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_Test *TestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *TestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedArray0) + if err := _Test.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_Test *TestFilterer) ParseLogNamedArray0(log types.Log) (*TestLogNamedArray0, error) { + event := new(TestLogNamedArray0) + if err := _Test.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the Test contract. +type TestLogNamedArray1Iterator struct { + Event *TestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedArray1 represents a LogNamedArray1 event raised by the Test contract. +type TestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_Test *TestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*TestLogNamedArray1Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &TestLogNamedArray1Iterator{contract: _Test.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_Test *TestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *TestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedArray1) + if err := _Test.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_Test *TestFilterer) ParseLogNamedArray1(log types.Log) (*TestLogNamedArray1, error) { + event := new(TestLogNamedArray1) + if err := _Test.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the Test contract. +type TestLogNamedBytesIterator struct { + Event *TestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedBytes represents a LogNamedBytes event raised by the Test contract. +type TestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_Test *TestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*TestLogNamedBytesIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &TestLogNamedBytesIterator{contract: _Test.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_Test *TestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *TestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedBytes) + if err := _Test.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_Test *TestFilterer) ParseLogNamedBytes(log types.Log) (*TestLogNamedBytes, error) { + event := new(TestLogNamedBytes) + if err := _Test.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the Test contract. +type TestLogNamedBytes32Iterator struct { + Event *TestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedBytes32 represents a LogNamedBytes32 event raised by the Test contract. +type TestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_Test *TestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*TestLogNamedBytes32Iterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &TestLogNamedBytes32Iterator{contract: _Test.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_Test *TestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *TestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedBytes32) + if err := _Test.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_Test *TestFilterer) ParseLogNamedBytes32(log types.Log) (*TestLogNamedBytes32, error) { + event := new(TestLogNamedBytes32) + if err := _Test.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the Test contract. +type TestLogNamedDecimalIntIterator struct { + Event *TestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the Test contract. +type TestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_Test *TestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*TestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &TestLogNamedDecimalIntIterator{contract: _Test.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_Test *TestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *TestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedDecimalInt) + if err := _Test.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_Test *TestFilterer) ParseLogNamedDecimalInt(log types.Log) (*TestLogNamedDecimalInt, error) { + event := new(TestLogNamedDecimalInt) + if err := _Test.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the Test contract. +type TestLogNamedDecimalUintIterator struct { + Event *TestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the Test contract. +type TestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_Test *TestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*TestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &TestLogNamedDecimalUintIterator{contract: _Test.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_Test *TestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *TestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedDecimalUint) + if err := _Test.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_Test *TestFilterer) ParseLogNamedDecimalUint(log types.Log) (*TestLogNamedDecimalUint, error) { + event := new(TestLogNamedDecimalUint) + if err := _Test.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the Test contract. +type TestLogNamedIntIterator struct { + Event *TestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedInt represents a LogNamedInt event raised by the Test contract. +type TestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_Test *TestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*TestLogNamedIntIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &TestLogNamedIntIterator{contract: _Test.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_Test *TestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *TestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedInt) + if err := _Test.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_Test *TestFilterer) ParseLogNamedInt(log types.Log) (*TestLogNamedInt, error) { + event := new(TestLogNamedInt) + if err := _Test.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the Test contract. +type TestLogNamedStringIterator struct { + Event *TestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedString represents a LogNamedString event raised by the Test contract. +type TestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_Test *TestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*TestLogNamedStringIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &TestLogNamedStringIterator{contract: _Test.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_Test *TestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *TestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedString) + if err := _Test.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_Test *TestFilterer) ParseLogNamedString(log types.Log) (*TestLogNamedString, error) { + event := new(TestLogNamedString) + if err := _Test.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the Test contract. +type TestLogNamedUintIterator struct { + Event *TestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogNamedUint represents a LogNamedUint event raised by the Test contract. +type TestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_Test *TestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*TestLogNamedUintIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &TestLogNamedUintIterator{contract: _Test.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_Test *TestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *TestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogNamedUint) + if err := _Test.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_Test *TestFilterer) ParseLogNamedUint(log types.Log) (*TestLogNamedUint, error) { + event := new(TestLogNamedUint) + if err := _Test.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the Test contract. +type TestLogStringIterator struct { + Event *TestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogString represents a LogString event raised by the Test contract. +type TestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_Test *TestFilterer) FilterLogString(opts *bind.FilterOpts) (*TestLogStringIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &TestLogStringIterator{contract: _Test.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_Test *TestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *TestLogString) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogString) + if err := _Test.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_Test *TestFilterer) ParseLogString(log types.Log) (*TestLogString, error) { + event := new(TestLogString) + if err := _Test.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the Test contract. +type TestLogUintIterator struct { + Event *TestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogUint represents a LogUint event raised by the Test contract. +type TestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_Test *TestFilterer) FilterLogUint(opts *bind.FilterOpts) (*TestLogUintIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &TestLogUintIterator{contract: _Test.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_Test *TestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *TestLogUint) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogUint) + if err := _Test.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_Test *TestFilterer) ParseLogUint(log types.Log) (*TestLogUint, error) { + event := new(TestLogUint) + if err := _Test.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the Test contract. +type TestLogsIterator struct { + Event *TestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestLogs represents a Logs event raised by the Test contract. +type TestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_Test *TestFilterer) FilterLogs(opts *bind.FilterOpts) (*TestLogsIterator, error) { + + logs, sub, err := _Test.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &TestLogsIterator{contract: _Test.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_Test *TestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *TestLogs) (event.Subscription, error) { + + logs, sub, err := _Test.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestLogs) + if err := _Test.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_Test *TestFilterer) ParseLogs(log types.Log) (*TestLogs, error) { + event := new(TestLogs) + if err := _Test.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/testerc20.sol/testerc20.go b/v2/pkg/testerc20.sol/testerc20.go new file mode 100644 index 00000000..aa9751ba --- /dev/null +++ b/v2/pkg/testerc20.sol/testerc20.go @@ -0,0 +1,781 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package testerc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TestERC20MetaData contains all meta data concerning the TestERC20 contract. +var TestERC20MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033", +} + +// TestERC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use TestERC20MetaData.ABI instead. +var TestERC20ABI = TestERC20MetaData.ABI + +// TestERC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TestERC20MetaData.Bin instead. +var TestERC20Bin = TestERC20MetaData.Bin + +// DeployTestERC20 deploys a new Ethereum contract, binding an instance of TestERC20 to it. +func DeployTestERC20(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *TestERC20, error) { + parsed, err := TestERC20MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TestERC20Bin), backend, name, symbol) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TestERC20{TestERC20Caller: TestERC20Caller{contract: contract}, TestERC20Transactor: TestERC20Transactor{contract: contract}, TestERC20Filterer: TestERC20Filterer{contract: contract}}, nil +} + +// TestERC20 is an auto generated Go binding around an Ethereum contract. +type TestERC20 struct { + TestERC20Caller // Read-only binding to the contract + TestERC20Transactor // Write-only binding to the contract + TestERC20Filterer // Log filterer for contract events +} + +// TestERC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type TestERC20Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestERC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type TestERC20Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TestERC20Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestERC20Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TestERC20Session struct { + Contract *TestERC20 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TestERC20CallerSession struct { + Contract *TestERC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TestERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TestERC20TransactorSession struct { + Contract *TestERC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestERC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type TestERC20Raw struct { + Contract *TestERC20 // Generic contract binding to access the raw methods on +} + +// TestERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TestERC20CallerRaw struct { + Contract *TestERC20Caller // Generic read-only contract binding to access the raw methods on +} + +// TestERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TestERC20TransactorRaw struct { + Contract *TestERC20Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewTestERC20 creates a new instance of TestERC20, bound to a specific deployed contract. +func NewTestERC20(address common.Address, backend bind.ContractBackend) (*TestERC20, error) { + contract, err := bindTestERC20(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TestERC20{TestERC20Caller: TestERC20Caller{contract: contract}, TestERC20Transactor: TestERC20Transactor{contract: contract}, TestERC20Filterer: TestERC20Filterer{contract: contract}}, nil +} + +// NewTestERC20Caller creates a new read-only instance of TestERC20, bound to a specific deployed contract. +func NewTestERC20Caller(address common.Address, caller bind.ContractCaller) (*TestERC20Caller, error) { + contract, err := bindTestERC20(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TestERC20Caller{contract: contract}, nil +} + +// NewTestERC20Transactor creates a new write-only instance of TestERC20, bound to a specific deployed contract. +func NewTestERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*TestERC20Transactor, error) { + contract, err := bindTestERC20(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TestERC20Transactor{contract: contract}, nil +} + +// NewTestERC20Filterer creates a new log filterer instance of TestERC20, bound to a specific deployed contract. +func NewTestERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*TestERC20Filterer, error) { + contract, err := bindTestERC20(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TestERC20Filterer{contract: contract}, nil +} + +// bindTestERC20 binds a generic wrapper to an already deployed contract. +func bindTestERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TestERC20MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestERC20 *TestERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestERC20.Contract.TestERC20Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestERC20 *TestERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestERC20.Contract.TestERC20Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestERC20 *TestERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestERC20.Contract.TestERC20Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestERC20 *TestERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestERC20.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestERC20 *TestERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestERC20.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestERC20 *TestERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestERC20.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TestERC20 *TestERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TestERC20 *TestERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _TestERC20.Contract.Allowance(&_TestERC20.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TestERC20 *TestERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _TestERC20.Contract.Allowance(&_TestERC20.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TestERC20 *TestERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TestERC20 *TestERC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _TestERC20.Contract.BalanceOf(&_TestERC20.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TestERC20 *TestERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _TestERC20.Contract.BalanceOf(&_TestERC20.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TestERC20 *TestERC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TestERC20 *TestERC20Session) Decimals() (uint8, error) { + return _TestERC20.Contract.Decimals(&_TestERC20.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TestERC20 *TestERC20CallerSession) Decimals() (uint8, error) { + return _TestERC20.Contract.Decimals(&_TestERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TestERC20 *TestERC20Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TestERC20 *TestERC20Session) Name() (string, error) { + return _TestERC20.Contract.Name(&_TestERC20.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TestERC20 *TestERC20CallerSession) Name() (string, error) { + return _TestERC20.Contract.Name(&_TestERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TestERC20 *TestERC20Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TestERC20 *TestERC20Session) Symbol() (string, error) { + return _TestERC20.Contract.Symbol(&_TestERC20.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TestERC20 *TestERC20CallerSession) Symbol() (string, error) { + return _TestERC20.Contract.Symbol(&_TestERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TestERC20 *TestERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TestERC20.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TestERC20 *TestERC20Session) TotalSupply() (*big.Int, error) { + return _TestERC20.Contract.TotalSupply(&_TestERC20.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TestERC20 *TestERC20CallerSession) TotalSupply() (*big.Int, error) { + return _TestERC20.Contract.TotalSupply(&_TestERC20.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Approve(&_TestERC20.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_TestERC20 *TestERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Approve(&_TestERC20.TransactOpts, spender, value) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) returns() +func (_TestERC20 *TestERC20Transactor) Mint(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TestERC20.contract.Transact(opts, "mint", to, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) returns() +func (_TestERC20 *TestERC20Session) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Mint(&_TestERC20.TransactOpts, to, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address to, uint256 amount) returns() +func (_TestERC20 *TestERC20TransactorSession) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Mint(&_TestERC20.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Transfer(&_TestERC20.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.Transfer(&_TestERC20.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.TransferFrom(&_TestERC20.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_TestERC20 *TestERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _TestERC20.Contract.TransferFrom(&_TestERC20.TransactOpts, from, to, value) +} + +// TestERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the TestERC20 contract. +type TestERC20ApprovalIterator struct { + Event *TestERC20Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestERC20ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestERC20Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestERC20ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestERC20ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestERC20Approval represents a Approval event raised by the TestERC20 contract. +type TestERC20Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TestERC20 *TestERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*TestERC20ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _TestERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &TestERC20ApprovalIterator{contract: _TestERC20.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TestERC20 *TestERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *TestERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _TestERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestERC20Approval) + if err := _TestERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TestERC20 *TestERC20Filterer) ParseApproval(log types.Log) (*TestERC20Approval, error) { + event := new(TestERC20Approval) + if err := _TestERC20.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the TestERC20 contract. +type TestERC20TransferIterator struct { + Event *TestERC20Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestERC20TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestERC20Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestERC20TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestERC20TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestERC20Transfer represents a Transfer event raised by the TestERC20 contract. +type TestERC20Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TestERC20 *TestERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*TestERC20TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _TestERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &TestERC20TransferIterator{contract: _TestERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TestERC20 *TestERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *TestERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _TestERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestERC20Transfer) + if err := _TestERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TestERC20 *TestERC20Filterer) ParseTransfer(log types.Log) (*TestERC20Transfer, error) { + event := new(TestERC20Transfer) + if err := _TestERC20.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/testzcontract.sol/testzcontract.go b/v2/pkg/testzcontract.sol/testzcontract.go new file mode 100644 index 00000000..81bfb866 --- /dev/null +++ b/v2/pkg/testzcontract.sol/testzcontract.go @@ -0,0 +1,577 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package testzcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// RevertContext is an auto generated low-level Go binding around an user-defined struct. +type RevertContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// TestZContractMetaData contains all meta data concerning the TestZContract contract. +var TestZContractMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a0033", +} + +// TestZContractABI is the input ABI used to generate the binding from. +// Deprecated: Use TestZContractMetaData.ABI instead. +var TestZContractABI = TestZContractMetaData.ABI + +// TestZContractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TestZContractMetaData.Bin instead. +var TestZContractBin = TestZContractMetaData.Bin + +// DeployTestZContract deploys a new Ethereum contract, binding an instance of TestZContract to it. +func DeployTestZContract(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TestZContract, error) { + parsed, err := TestZContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TestZContractBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TestZContract{TestZContractCaller: TestZContractCaller{contract: contract}, TestZContractTransactor: TestZContractTransactor{contract: contract}, TestZContractFilterer: TestZContractFilterer{contract: contract}}, nil +} + +// TestZContract is an auto generated Go binding around an Ethereum contract. +type TestZContract struct { + TestZContractCaller // Read-only binding to the contract + TestZContractTransactor // Write-only binding to the contract + TestZContractFilterer // Log filterer for contract events +} + +// TestZContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type TestZContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TestZContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TestZContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TestZContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TestZContractSession struct { + Contract *TestZContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TestZContractCallerSession struct { + Contract *TestZContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TestZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TestZContractTransactorSession struct { + Contract *TestZContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TestZContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type TestZContractRaw struct { + Contract *TestZContract // Generic contract binding to access the raw methods on +} + +// TestZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TestZContractCallerRaw struct { + Contract *TestZContractCaller // Generic read-only contract binding to access the raw methods on +} + +// TestZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TestZContractTransactorRaw struct { + Contract *TestZContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTestZContract creates a new instance of TestZContract, bound to a specific deployed contract. +func NewTestZContract(address common.Address, backend bind.ContractBackend) (*TestZContract, error) { + contract, err := bindTestZContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TestZContract{TestZContractCaller: TestZContractCaller{contract: contract}, TestZContractTransactor: TestZContractTransactor{contract: contract}, TestZContractFilterer: TestZContractFilterer{contract: contract}}, nil +} + +// NewTestZContractCaller creates a new read-only instance of TestZContract, bound to a specific deployed contract. +func NewTestZContractCaller(address common.Address, caller bind.ContractCaller) (*TestZContractCaller, error) { + contract, err := bindTestZContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TestZContractCaller{contract: contract}, nil +} + +// NewTestZContractTransactor creates a new write-only instance of TestZContract, bound to a specific deployed contract. +func NewTestZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*TestZContractTransactor, error) { + contract, err := bindTestZContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TestZContractTransactor{contract: contract}, nil +} + +// NewTestZContractFilterer creates a new log filterer instance of TestZContract, bound to a specific deployed contract. +func NewTestZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*TestZContractFilterer, error) { + contract, err := bindTestZContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TestZContractFilterer{contract: contract}, nil +} + +// bindTestZContract binds a generic wrapper to an already deployed contract. +func bindTestZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TestZContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestZContract *TestZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestZContract.Contract.TestZContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestZContract *TestZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestZContract.Contract.TestZContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestZContract *TestZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestZContract.Contract.TestZContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TestZContract *TestZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TestZContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TestZContract *TestZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestZContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TestZContract *TestZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TestZContract.Contract.contract.Transact(opts, method, params...) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.Contract.OnCrossChainCall(&_TestZContract.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.Contract.OnCrossChainCall(&_TestZContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractTransactor) OnRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.contract.Transact(opts, "onRevert", context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.Contract.OnRevert(&_TestZContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_TestZContract *TestZContractTransactorSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _TestZContract.Contract.OnRevert(&_TestZContract.TransactOpts, context, zrc20, amount, message) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TestZContract *TestZContractTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _TestZContract.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TestZContract *TestZContractSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TestZContract.Contract.Fallback(&_TestZContract.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TestZContract *TestZContractTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TestZContract.Contract.Fallback(&_TestZContract.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TestZContract *TestZContractTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TestZContract.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TestZContract *TestZContractSession) Receive() (*types.Transaction, error) { + return _TestZContract.Contract.Receive(&_TestZContract.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TestZContract *TestZContractTransactorSession) Receive() (*types.Transaction, error) { + return _TestZContract.Contract.Receive(&_TestZContract.TransactOpts) +} + +// TestZContractContextDataIterator is returned from FilterContextData and is used to iterate over the raw logs and unpacked data for ContextData events raised by the TestZContract contract. +type TestZContractContextDataIterator struct { + Event *TestZContractContextData // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestZContractContextDataIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestZContractContextData) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestZContractContextData) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestZContractContextDataIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestZContractContextDataIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestZContractContextData represents a ContextData event raised by the TestZContract contract. +type TestZContractContextData struct { + Origin []byte + Sender common.Address + ChainID *big.Int + MsgSender common.Address + Message string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContextData is a free log retrieval operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) FilterContextData(opts *bind.FilterOpts) (*TestZContractContextDataIterator, error) { + + logs, sub, err := _TestZContract.contract.FilterLogs(opts, "ContextData") + if err != nil { + return nil, err + } + return &TestZContractContextDataIterator{contract: _TestZContract.contract, event: "ContextData", logs: logs, sub: sub}, nil +} + +// WatchContextData is a free log subscription operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) WatchContextData(opts *bind.WatchOpts, sink chan<- *TestZContractContextData) (event.Subscription, error) { + + logs, sub, err := _TestZContract.contract.WatchLogs(opts, "ContextData") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestZContractContextData) + if err := _TestZContract.contract.UnpackLog(event, "ContextData", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContextData is a log parse operation binding the contract event 0xcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e. +// +// Solidity: event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) ParseContextData(log types.Log) (*TestZContractContextData, error) { + event := new(TestZContractContextData) + if err := _TestZContract.contract.UnpackLog(event, "ContextData", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TestZContractContextDataRevertIterator is returned from FilterContextDataRevert and is used to iterate over the raw logs and unpacked data for ContextDataRevert events raised by the TestZContract contract. +type TestZContractContextDataRevertIterator struct { + Event *TestZContractContextDataRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestZContractContextDataRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestZContractContextDataRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestZContractContextDataRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestZContractContextDataRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestZContractContextDataRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestZContractContextDataRevert represents a ContextDataRevert event raised by the TestZContract contract. +type TestZContractContextDataRevert struct { + Origin []byte + Sender common.Address + ChainID *big.Int + MsgSender common.Address + Message string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContextDataRevert is a free log retrieval operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) FilterContextDataRevert(opts *bind.FilterOpts) (*TestZContractContextDataRevertIterator, error) { + + logs, sub, err := _TestZContract.contract.FilterLogs(opts, "ContextDataRevert") + if err != nil { + return nil, err + } + return &TestZContractContextDataRevertIterator{contract: _TestZContract.contract, event: "ContextDataRevert", logs: logs, sub: sub}, nil +} + +// WatchContextDataRevert is a free log subscription operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) WatchContextDataRevert(opts *bind.WatchOpts, sink chan<- *TestZContractContextDataRevert) (event.Subscription, error) { + + logs, sub, err := _TestZContract.contract.WatchLogs(opts, "ContextDataRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestZContractContextDataRevert) + if err := _TestZContract.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContextDataRevert is a log parse operation binding the contract event 0xfdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948. +// +// Solidity: event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message) +func (_TestZContract *TestZContractFilterer) ParseContextDataRevert(log types.Log) (*TestZContractContextDataRevert, error) { + event := new(TestZContractContextDataRevert) + if err := _TestZContract.contract.UnpackLog(event, "ContextDataRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/transparentupgradeableproxy.sol/itransparentupgradeableproxy.go b/v2/pkg/transparentupgradeableproxy.sol/itransparentupgradeableproxy.go new file mode 100644 index 00000000..2ab286f2 --- /dev/null +++ b/v2/pkg/transparentupgradeableproxy.sol/itransparentupgradeableproxy.go @@ -0,0 +1,625 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package transparentupgradeableproxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ITransparentUpgradeableProxyMetaData contains all meta data concerning the ITransparentUpgradeableProxy contract. +var ITransparentUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", +} + +// ITransparentUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use ITransparentUpgradeableProxyMetaData.ABI instead. +var ITransparentUpgradeableProxyABI = ITransparentUpgradeableProxyMetaData.ABI + +// ITransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type ITransparentUpgradeableProxy struct { + ITransparentUpgradeableProxyCaller // Read-only binding to the contract + ITransparentUpgradeableProxyTransactor // Write-only binding to the contract + ITransparentUpgradeableProxyFilterer // Log filterer for contract events +} + +// ITransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ITransparentUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ITransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ITransparentUpgradeableProxySession struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ITransparentUpgradeableProxyCallerSession struct { + Contract *ITransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ITransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ITransparentUpgradeableProxyTransactorSession struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ITransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyRaw struct { + Contract *ITransparentUpgradeableProxy // Generic contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyCallerRaw struct { + Contract *ITransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// ITransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ITransparentUpgradeableProxyTransactorRaw struct { + Contract *ITransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewITransparentUpgradeableProxy creates a new instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*ITransparentUpgradeableProxy, error) { + contract, err := bindITransparentUpgradeableProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxy{ITransparentUpgradeableProxyCaller: ITransparentUpgradeableProxyCaller{contract: contract}, ITransparentUpgradeableProxyTransactor: ITransparentUpgradeableProxyTransactor{contract: contract}, ITransparentUpgradeableProxyFilterer: ITransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// NewITransparentUpgradeableProxyCaller creates a new read-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*ITransparentUpgradeableProxyCaller, error) { + contract, err := bindITransparentUpgradeableProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyCaller{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyTransactor creates a new write-only instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*ITransparentUpgradeableProxyTransactor, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyTransactor{contract: contract}, nil +} + +// NewITransparentUpgradeableProxyFilterer creates a new log filterer instance of ITransparentUpgradeableProxy, bound to a specific deployed contract. +func NewITransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*ITransparentUpgradeableProxyFilterer, error) { + contract, err := bindITransparentUpgradeableProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyFilterer{contract: contract}, nil +} + +// bindITransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindITransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ITransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.ITransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ITransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactor) UpgradeToAndCall(opts *bind.TransactOpts, arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.contract.Transact(opts, "upgradeToAndCall", arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxySession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address , bytes ) payable returns() +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyTransactorSession) UpgradeToAndCall(arg0 common.Address, arg1 []byte) (*types.Transaction, error) { + return _ITransparentUpgradeableProxy.Contract.UpgradeToAndCall(&_ITransparentUpgradeableProxy.TransactOpts, arg0, arg1) +} + +// ITransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChangedIterator struct { + Event *ITransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ITransparentUpgradeableProxyAdminChangedIterator, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyAdminChangedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*ITransparentUpgradeableProxyAdminChanged, error) { + event := new(ITransparentUpgradeableProxyAdminChanged) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgradedIterator struct { + Event *ITransparentUpgradeableProxyBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyBeaconUpgraded represents a BeaconUpgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ITransparentUpgradeableProxyBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyBeaconUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseBeaconUpgraded(log types.Log) (*ITransparentUpgradeableProxyBeaconUpgraded, error) { + event := new(ITransparentUpgradeableProxyBeaconUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ITransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgradedIterator struct { + Event *ITransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ITransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ITransparentUpgradeableProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ITransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the ITransparentUpgradeableProxy contract. +type ITransparentUpgradeableProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ITransparentUpgradeableProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ITransparentUpgradeableProxyUpgradedIterator{contract: _ITransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ITransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _ITransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_ITransparentUpgradeableProxy *ITransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*ITransparentUpgradeableProxyUpgraded, error) { + event := new(ITransparentUpgradeableProxyUpgraded) + if err := _ITransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go new file mode 100644 index 00000000..8daf55df --- /dev/null +++ b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go @@ -0,0 +1,503 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package transparentupgradeableproxy + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. +var TransparentUpgradeableProxyMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logic\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidAdmin\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProxyDeniedAdminAccess\",\"inputs\":[]}]", + Bin: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220fd77e8da75db1db8869da9f85c4ad64fb3db9f30cb52edf1c23c9afbda1e8dc664736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", +} + +// TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. +// Deprecated: Use TransparentUpgradeableProxyMetaData.ABI instead. +var TransparentUpgradeableProxyABI = TransparentUpgradeableProxyMetaData.ABI + +// TransparentUpgradeableProxyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use TransparentUpgradeableProxyMetaData.Bin instead. +var TransparentUpgradeableProxyBin = TransparentUpgradeableProxyMetaData.Bin + +// DeployTransparentUpgradeableProxy deploys a new Ethereum contract, binding an instance of TransparentUpgradeableProxy to it. +func DeployTransparentUpgradeableProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _logic common.Address, initialOwner common.Address, _data []byte) (common.Address, *types.Transaction, *TransparentUpgradeableProxy, error) { + parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(TransparentUpgradeableProxyBin), backend, _logic, initialOwner, _data) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// TransparentUpgradeableProxy is an auto generated Go binding around an Ethereum contract. +type TransparentUpgradeableProxy struct { + TransparentUpgradeableProxyCaller // Read-only binding to the contract + TransparentUpgradeableProxyTransactor // Write-only binding to the contract + TransparentUpgradeableProxyFilterer // Log filterer for contract events +} + +// TransparentUpgradeableProxyCaller is an auto generated read-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TransparentUpgradeableProxyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TransparentUpgradeableProxySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TransparentUpgradeableProxySession struct { + Contract *TransparentUpgradeableProxy // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TransparentUpgradeableProxyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TransparentUpgradeableProxyCallerSession struct { + Contract *TransparentUpgradeableProxyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TransparentUpgradeableProxyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TransparentUpgradeableProxyTransactorSession struct { + Contract *TransparentUpgradeableProxyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TransparentUpgradeableProxyRaw is an auto generated low-level Go binding around an Ethereum contract. +type TransparentUpgradeableProxyRaw struct { + Contract *TransparentUpgradeableProxy // Generic contract binding to access the raw methods on +} + +// TransparentUpgradeableProxyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyCallerRaw struct { + Contract *TransparentUpgradeableProxyCaller // Generic read-only contract binding to access the raw methods on +} + +// TransparentUpgradeableProxyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TransparentUpgradeableProxyTransactorRaw struct { + Contract *TransparentUpgradeableProxyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTransparentUpgradeableProxy creates a new instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxy(address common.Address, backend bind.ContractBackend) (*TransparentUpgradeableProxy, error) { + contract, err := bindTransparentUpgradeableProxy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxy{TransparentUpgradeableProxyCaller: TransparentUpgradeableProxyCaller{contract: contract}, TransparentUpgradeableProxyTransactor: TransparentUpgradeableProxyTransactor{contract: contract}, TransparentUpgradeableProxyFilterer: TransparentUpgradeableProxyFilterer{contract: contract}}, nil +} + +// NewTransparentUpgradeableProxyCaller creates a new read-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyCaller(address common.Address, caller bind.ContractCaller) (*TransparentUpgradeableProxyCaller, error) { + contract, err := bindTransparentUpgradeableProxy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyCaller{contract: contract}, nil +} + +// NewTransparentUpgradeableProxyTransactor creates a new write-only instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyTransactor(address common.Address, transactor bind.ContractTransactor) (*TransparentUpgradeableProxyTransactor, error) { + contract, err := bindTransparentUpgradeableProxy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyTransactor{contract: contract}, nil +} + +// NewTransparentUpgradeableProxyFilterer creates a new log filterer instance of TransparentUpgradeableProxy, bound to a specific deployed contract. +func NewTransparentUpgradeableProxyFilterer(address common.Address, filterer bind.ContractFilterer) (*TransparentUpgradeableProxyFilterer, error) { + contract, err := bindTransparentUpgradeableProxy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyFilterer{contract: contract}, nil +} + +// bindTransparentUpgradeableProxy binds a generic wrapper to an already deployed contract. +func bindTransparentUpgradeableProxy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TransparentUpgradeableProxyMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.TransparentUpgradeableProxyTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TransparentUpgradeableProxy.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.contract.Transact(opts, method, params...) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxySession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _TransparentUpgradeableProxy.Contract.Fallback(&_TransparentUpgradeableProxy.TransactOpts, calldata) +} + +// TransparentUpgradeableProxyAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyAdminChangedIterator struct { + Event *TransparentUpgradeableProxyAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TransparentUpgradeableProxyAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TransparentUpgradeableProxyAdminChanged represents a AdminChanged event raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TransparentUpgradeableProxyAdminChangedIterator, error) { + + logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyAdminChangedIterator{contract: _TransparentUpgradeableProxy.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyAdminChanged) (event.Subscription, error) { + + logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TransparentUpgradeableProxyAdminChanged) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseAdminChanged(log types.Log) (*TransparentUpgradeableProxyAdminChanged, error) { + event := new(TransparentUpgradeableProxyAdminChanged) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TransparentUpgradeableProxyUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyUpgradedIterator struct { + Event *TransparentUpgradeableProxyUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TransparentUpgradeableProxyUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TransparentUpgradeableProxyUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TransparentUpgradeableProxyUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TransparentUpgradeableProxyUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TransparentUpgradeableProxyUpgraded represents a Upgraded event raised by the TransparentUpgradeableProxy contract. +type TransparentUpgradeableProxyUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TransparentUpgradeableProxyUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TransparentUpgradeableProxy.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &TransparentUpgradeableProxyUpgradedIterator{contract: _TransparentUpgradeableProxy.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TransparentUpgradeableProxyUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TransparentUpgradeableProxy.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TransparentUpgradeableProxyUpgraded) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TransparentUpgradeableProxy *TransparentUpgradeableProxyFilterer) ParseUpgraded(log types.Log) (*TransparentUpgradeableProxyUpgraded, error) { + event := new(TransparentUpgradeableProxyUpgraded) + if err := _TransparentUpgradeableProxy.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go new file mode 100644 index 00000000..84321070 --- /dev/null +++ b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go @@ -0,0 +1,625 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package upgradeablebeacon + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UpgradeableBeaconMetaData contains all meta data concerning the UpgradeableBeacon contract. +var UpgradeableBeaconMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"implementation_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"implementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconInvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea264697066735822122063e6ac8c10cb14b9254b2b497f04ed7c7aa519086cae45504282764c66a749f364736f6c634300081a0033", +} + +// UpgradeableBeaconABI is the input ABI used to generate the binding from. +// Deprecated: Use UpgradeableBeaconMetaData.ABI instead. +var UpgradeableBeaconABI = UpgradeableBeaconMetaData.ABI + +// UpgradeableBeaconBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UpgradeableBeaconMetaData.Bin instead. +var UpgradeableBeaconBin = UpgradeableBeaconMetaData.Bin + +// DeployUpgradeableBeacon deploys a new Ethereum contract, binding an instance of UpgradeableBeacon to it. +func DeployUpgradeableBeacon(auth *bind.TransactOpts, backend bind.ContractBackend, implementation_ common.Address, initialOwner common.Address) (common.Address, *types.Transaction, *UpgradeableBeacon, error) { + parsed, err := UpgradeableBeaconMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UpgradeableBeaconBin), backend, implementation_, initialOwner) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UpgradeableBeacon{UpgradeableBeaconCaller: UpgradeableBeaconCaller{contract: contract}, UpgradeableBeaconTransactor: UpgradeableBeaconTransactor{contract: contract}, UpgradeableBeaconFilterer: UpgradeableBeaconFilterer{contract: contract}}, nil +} + +// UpgradeableBeacon is an auto generated Go binding around an Ethereum contract. +type UpgradeableBeacon struct { + UpgradeableBeaconCaller // Read-only binding to the contract + UpgradeableBeaconTransactor // Write-only binding to the contract + UpgradeableBeaconFilterer // Log filterer for contract events +} + +// UpgradeableBeaconCaller is an auto generated read-only Go binding around an Ethereum contract. +type UpgradeableBeaconCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeableBeaconTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UpgradeableBeaconTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeableBeaconFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UpgradeableBeaconFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeableBeaconSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UpgradeableBeaconSession struct { + Contract *UpgradeableBeacon // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UpgradeableBeaconCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UpgradeableBeaconCallerSession struct { + Contract *UpgradeableBeaconCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UpgradeableBeaconTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UpgradeableBeaconTransactorSession struct { + Contract *UpgradeableBeaconTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UpgradeableBeaconRaw is an auto generated low-level Go binding around an Ethereum contract. +type UpgradeableBeaconRaw struct { + Contract *UpgradeableBeacon // Generic contract binding to access the raw methods on +} + +// UpgradeableBeaconCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UpgradeableBeaconCallerRaw struct { + Contract *UpgradeableBeaconCaller // Generic read-only contract binding to access the raw methods on +} + +// UpgradeableBeaconTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UpgradeableBeaconTransactorRaw struct { + Contract *UpgradeableBeaconTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUpgradeableBeacon creates a new instance of UpgradeableBeacon, bound to a specific deployed contract. +func NewUpgradeableBeacon(address common.Address, backend bind.ContractBackend) (*UpgradeableBeacon, error) { + contract, err := bindUpgradeableBeacon(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UpgradeableBeacon{UpgradeableBeaconCaller: UpgradeableBeaconCaller{contract: contract}, UpgradeableBeaconTransactor: UpgradeableBeaconTransactor{contract: contract}, UpgradeableBeaconFilterer: UpgradeableBeaconFilterer{contract: contract}}, nil +} + +// NewUpgradeableBeaconCaller creates a new read-only instance of UpgradeableBeacon, bound to a specific deployed contract. +func NewUpgradeableBeaconCaller(address common.Address, caller bind.ContractCaller) (*UpgradeableBeaconCaller, error) { + contract, err := bindUpgradeableBeacon(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UpgradeableBeaconCaller{contract: contract}, nil +} + +// NewUpgradeableBeaconTransactor creates a new write-only instance of UpgradeableBeacon, bound to a specific deployed contract. +func NewUpgradeableBeaconTransactor(address common.Address, transactor bind.ContractTransactor) (*UpgradeableBeaconTransactor, error) { + contract, err := bindUpgradeableBeacon(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UpgradeableBeaconTransactor{contract: contract}, nil +} + +// NewUpgradeableBeaconFilterer creates a new log filterer instance of UpgradeableBeacon, bound to a specific deployed contract. +func NewUpgradeableBeaconFilterer(address common.Address, filterer bind.ContractFilterer) (*UpgradeableBeaconFilterer, error) { + contract, err := bindUpgradeableBeacon(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UpgradeableBeaconFilterer{contract: contract}, nil +} + +// bindUpgradeableBeacon binds a generic wrapper to an already deployed contract. +func bindUpgradeableBeacon(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UpgradeableBeaconMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UpgradeableBeacon *UpgradeableBeaconRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UpgradeableBeacon.Contract.UpgradeableBeaconCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UpgradeableBeacon *UpgradeableBeaconRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.UpgradeableBeaconTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UpgradeableBeacon *UpgradeableBeaconRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.UpgradeableBeaconTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UpgradeableBeacon *UpgradeableBeaconCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UpgradeableBeacon.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UpgradeableBeacon *UpgradeableBeaconTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UpgradeableBeacon *UpgradeableBeaconTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.contract.Transact(opts, method, params...) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconCaller) Implementation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UpgradeableBeacon.contract.Call(opts, &out, "implementation") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconSession) Implementation() (common.Address, error) { + return _UpgradeableBeacon.Contract.Implementation(&_UpgradeableBeacon.CallOpts) +} + +// Implementation is a free data retrieval call binding the contract method 0x5c60da1b. +// +// Solidity: function implementation() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconCallerSession) Implementation() (common.Address, error) { + return _UpgradeableBeacon.Contract.Implementation(&_UpgradeableBeacon.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UpgradeableBeacon.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconSession) Owner() (common.Address, error) { + return _UpgradeableBeacon.Contract.Owner(&_UpgradeableBeacon.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UpgradeableBeacon *UpgradeableBeaconCallerSession) Owner() (common.Address, error) { + return _UpgradeableBeacon.Contract.Owner(&_UpgradeableBeacon.CallOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeableBeacon.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeableBeacon *UpgradeableBeaconSession) RenounceOwnership() (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.RenounceOwnership(&_UpgradeableBeacon.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.RenounceOwnership(&_UpgradeableBeacon.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeableBeacon *UpgradeableBeaconSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.TransferOwnership(&_UpgradeableBeacon.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.TransferOwnership(&_UpgradeableBeacon.TransactOpts, newOwner) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_UpgradeableBeacon *UpgradeableBeaconSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.UpgradeTo(&_UpgradeableBeacon.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_UpgradeableBeacon *UpgradeableBeaconTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _UpgradeableBeacon.Contract.UpgradeTo(&_UpgradeableBeacon.TransactOpts, newImplementation) +} + +// UpgradeableBeaconOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the UpgradeableBeacon contract. +type UpgradeableBeaconOwnershipTransferredIterator struct { + Event *UpgradeableBeaconOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeableBeaconOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeableBeaconOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeableBeaconOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeableBeaconOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeableBeaconOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeableBeaconOwnershipTransferred represents a OwnershipTransferred event raised by the UpgradeableBeacon contract. +type UpgradeableBeaconOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*UpgradeableBeaconOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _UpgradeableBeacon.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &UpgradeableBeaconOwnershipTransferredIterator{contract: _UpgradeableBeacon.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *UpgradeableBeaconOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _UpgradeableBeacon.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UpgradeableBeaconOwnershipTransferred) + if err := _UpgradeableBeacon.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) ParseOwnershipTransferred(log types.Log) (*UpgradeableBeaconOwnershipTransferred, error) { + event := new(UpgradeableBeaconOwnershipTransferred) + if err := _UpgradeableBeacon.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UpgradeableBeaconUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the UpgradeableBeacon contract. +type UpgradeableBeaconUpgradedIterator struct { + Event *UpgradeableBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeableBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeableBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeableBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeableBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeableBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeableBeaconUpgraded represents a Upgraded event raised by the UpgradeableBeacon contract. +type UpgradeableBeaconUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*UpgradeableBeaconUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _UpgradeableBeacon.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &UpgradeableBeaconUpgradedIterator{contract: _UpgradeableBeacon.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *UpgradeableBeaconUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _UpgradeableBeacon.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UpgradeableBeaconUpgraded) + if err := _UpgradeableBeacon.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UpgradeableBeacon *UpgradeableBeaconFilterer) ParseUpgraded(log types.Log) (*UpgradeableBeaconUpgraded, error) { + event := new(UpgradeableBeaconUpgraded) + if err := _UpgradeableBeacon.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/upgrades.sol/unsafeupgrades.go b/v2/pkg/upgrades.sol/unsafeupgrades.go new file mode 100644 index 00000000..77ba4cef --- /dev/null +++ b/v2/pkg/upgrades.sol/unsafeupgrades.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package upgrades + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UnsafeUpgradesMetaData contains all meta data concerning the UnsafeUpgrades contract. +var UnsafeUpgradesMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a8c6579bef17eaa32858dad8f0a978dbaffc961c79df88bb0e4527ab3c4a8abf64736f6c634300081a0033", +} + +// UnsafeUpgradesABI is the input ABI used to generate the binding from. +// Deprecated: Use UnsafeUpgradesMetaData.ABI instead. +var UnsafeUpgradesABI = UnsafeUpgradesMetaData.ABI + +// UnsafeUpgradesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UnsafeUpgradesMetaData.Bin instead. +var UnsafeUpgradesBin = UnsafeUpgradesMetaData.Bin + +// DeployUnsafeUpgrades deploys a new Ethereum contract, binding an instance of UnsafeUpgrades to it. +func DeployUnsafeUpgrades(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UnsafeUpgrades, error) { + parsed, err := UnsafeUpgradesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UnsafeUpgradesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UnsafeUpgrades{UnsafeUpgradesCaller: UnsafeUpgradesCaller{contract: contract}, UnsafeUpgradesTransactor: UnsafeUpgradesTransactor{contract: contract}, UnsafeUpgradesFilterer: UnsafeUpgradesFilterer{contract: contract}}, nil +} + +// UnsafeUpgrades is an auto generated Go binding around an Ethereum contract. +type UnsafeUpgrades struct { + UnsafeUpgradesCaller // Read-only binding to the contract + UnsafeUpgradesTransactor // Write-only binding to the contract + UnsafeUpgradesFilterer // Log filterer for contract events +} + +// UnsafeUpgradesCaller is an auto generated read-only Go binding around an Ethereum contract. +type UnsafeUpgradesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UnsafeUpgradesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UnsafeUpgradesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UnsafeUpgradesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UnsafeUpgradesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UnsafeUpgradesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UnsafeUpgradesSession struct { + Contract *UnsafeUpgrades // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UnsafeUpgradesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UnsafeUpgradesCallerSession struct { + Contract *UnsafeUpgradesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UnsafeUpgradesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UnsafeUpgradesTransactorSession struct { + Contract *UnsafeUpgradesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UnsafeUpgradesRaw is an auto generated low-level Go binding around an Ethereum contract. +type UnsafeUpgradesRaw struct { + Contract *UnsafeUpgrades // Generic contract binding to access the raw methods on +} + +// UnsafeUpgradesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UnsafeUpgradesCallerRaw struct { + Contract *UnsafeUpgradesCaller // Generic read-only contract binding to access the raw methods on +} + +// UnsafeUpgradesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UnsafeUpgradesTransactorRaw struct { + Contract *UnsafeUpgradesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUnsafeUpgrades creates a new instance of UnsafeUpgrades, bound to a specific deployed contract. +func NewUnsafeUpgrades(address common.Address, backend bind.ContractBackend) (*UnsafeUpgrades, error) { + contract, err := bindUnsafeUpgrades(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UnsafeUpgrades{UnsafeUpgradesCaller: UnsafeUpgradesCaller{contract: contract}, UnsafeUpgradesTransactor: UnsafeUpgradesTransactor{contract: contract}, UnsafeUpgradesFilterer: UnsafeUpgradesFilterer{contract: contract}}, nil +} + +// NewUnsafeUpgradesCaller creates a new read-only instance of UnsafeUpgrades, bound to a specific deployed contract. +func NewUnsafeUpgradesCaller(address common.Address, caller bind.ContractCaller) (*UnsafeUpgradesCaller, error) { + contract, err := bindUnsafeUpgrades(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UnsafeUpgradesCaller{contract: contract}, nil +} + +// NewUnsafeUpgradesTransactor creates a new write-only instance of UnsafeUpgrades, bound to a specific deployed contract. +func NewUnsafeUpgradesTransactor(address common.Address, transactor bind.ContractTransactor) (*UnsafeUpgradesTransactor, error) { + contract, err := bindUnsafeUpgrades(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UnsafeUpgradesTransactor{contract: contract}, nil +} + +// NewUnsafeUpgradesFilterer creates a new log filterer instance of UnsafeUpgrades, bound to a specific deployed contract. +func NewUnsafeUpgradesFilterer(address common.Address, filterer bind.ContractFilterer) (*UnsafeUpgradesFilterer, error) { + contract, err := bindUnsafeUpgrades(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UnsafeUpgradesFilterer{contract: contract}, nil +} + +// bindUnsafeUpgrades binds a generic wrapper to an already deployed contract. +func bindUnsafeUpgrades(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UnsafeUpgradesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UnsafeUpgrades *UnsafeUpgradesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UnsafeUpgrades.Contract.UnsafeUpgradesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UnsafeUpgrades *UnsafeUpgradesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UnsafeUpgrades.Contract.UnsafeUpgradesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UnsafeUpgrades *UnsafeUpgradesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UnsafeUpgrades.Contract.UnsafeUpgradesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UnsafeUpgrades *UnsafeUpgradesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UnsafeUpgrades.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UnsafeUpgrades *UnsafeUpgradesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UnsafeUpgrades.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UnsafeUpgrades *UnsafeUpgradesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UnsafeUpgrades.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/upgrades.sol/upgrades.go b/v2/pkg/upgrades.sol/upgrades.go new file mode 100644 index 00000000..b70dc9d1 --- /dev/null +++ b/v2/pkg/upgrades.sol/upgrades.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package upgrades + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UpgradesMetaData contains all meta data concerning the Upgrades contract. +var UpgradesMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042a8949f763d346efc4ef702a00fdf6609161775b1912f6f50023d3ad26a011c64736f6c634300081a0033", +} + +// UpgradesABI is the input ABI used to generate the binding from. +// Deprecated: Use UpgradesMetaData.ABI instead. +var UpgradesABI = UpgradesMetaData.ABI + +// UpgradesBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UpgradesMetaData.Bin instead. +var UpgradesBin = UpgradesMetaData.Bin + +// DeployUpgrades deploys a new Ethereum contract, binding an instance of Upgrades to it. +func DeployUpgrades(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Upgrades, error) { + parsed, err := UpgradesMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UpgradesBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Upgrades{UpgradesCaller: UpgradesCaller{contract: contract}, UpgradesTransactor: UpgradesTransactor{contract: contract}, UpgradesFilterer: UpgradesFilterer{contract: contract}}, nil +} + +// Upgrades is an auto generated Go binding around an Ethereum contract. +type Upgrades struct { + UpgradesCaller // Read-only binding to the contract + UpgradesTransactor // Write-only binding to the contract + UpgradesFilterer // Log filterer for contract events +} + +// UpgradesCaller is an auto generated read-only Go binding around an Ethereum contract. +type UpgradesCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradesTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UpgradesTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradesFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UpgradesFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradesSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UpgradesSession struct { + Contract *Upgrades // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UpgradesCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UpgradesCallerSession struct { + Contract *UpgradesCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UpgradesTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UpgradesTransactorSession struct { + Contract *UpgradesTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UpgradesRaw is an auto generated low-level Go binding around an Ethereum contract. +type UpgradesRaw struct { + Contract *Upgrades // Generic contract binding to access the raw methods on +} + +// UpgradesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UpgradesCallerRaw struct { + Contract *UpgradesCaller // Generic read-only contract binding to access the raw methods on +} + +// UpgradesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UpgradesTransactorRaw struct { + Contract *UpgradesTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUpgrades creates a new instance of Upgrades, bound to a specific deployed contract. +func NewUpgrades(address common.Address, backend bind.ContractBackend) (*Upgrades, error) { + contract, err := bindUpgrades(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Upgrades{UpgradesCaller: UpgradesCaller{contract: contract}, UpgradesTransactor: UpgradesTransactor{contract: contract}, UpgradesFilterer: UpgradesFilterer{contract: contract}}, nil +} + +// NewUpgradesCaller creates a new read-only instance of Upgrades, bound to a specific deployed contract. +func NewUpgradesCaller(address common.Address, caller bind.ContractCaller) (*UpgradesCaller, error) { + contract, err := bindUpgrades(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UpgradesCaller{contract: contract}, nil +} + +// NewUpgradesTransactor creates a new write-only instance of Upgrades, bound to a specific deployed contract. +func NewUpgradesTransactor(address common.Address, transactor bind.ContractTransactor) (*UpgradesTransactor, error) { + contract, err := bindUpgrades(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UpgradesTransactor{contract: contract}, nil +} + +// NewUpgradesFilterer creates a new log filterer instance of Upgrades, bound to a specific deployed contract. +func NewUpgradesFilterer(address common.Address, filterer bind.ContractFilterer) (*UpgradesFilterer, error) { + contract, err := bindUpgrades(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UpgradesFilterer{contract: contract}, nil +} + +// bindUpgrades binds a generic wrapper to an already deployed contract. +func bindUpgrades(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UpgradesMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Upgrades *UpgradesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Upgrades.Contract.UpgradesCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Upgrades *UpgradesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Upgrades.Contract.UpgradesTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Upgrades *UpgradesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Upgrades.Contract.UpgradesTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Upgrades *UpgradesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Upgrades.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Upgrades *UpgradesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Upgrades.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Upgrades *UpgradesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Upgrades.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/utils.sol/utils.go b/v2/pkg/utils.sol/utils.go new file mode 100644 index 00000000..7996ef18 --- /dev/null +++ b/v2/pkg/utils.sol/utils.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package utils + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UtilsMetaData contains all meta data concerning the Utils contract. +var UtilsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206afe1c95da41d35f78d2d391c1bd30d43de62ada64479615bc7636778f554acd64736f6c634300081a0033", +} + +// UtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use UtilsMetaData.ABI instead. +var UtilsABI = UtilsMetaData.ABI + +// UtilsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UtilsMetaData.Bin instead. +var UtilsBin = UtilsMetaData.Bin + +// DeployUtils deploys a new Ethereum contract, binding an instance of Utils to it. +func DeployUtils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Utils, error) { + parsed, err := UtilsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(UtilsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Utils{UtilsCaller: UtilsCaller{contract: contract}, UtilsTransactor: UtilsTransactor{contract: contract}, UtilsFilterer: UtilsFilterer{contract: contract}}, nil +} + +// Utils is an auto generated Go binding around an Ethereum contract. +type Utils struct { + UtilsCaller // Read-only binding to the contract + UtilsTransactor // Write-only binding to the contract + UtilsFilterer // Log filterer for contract events +} + +// UtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type UtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UtilsSession struct { + Contract *Utils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UtilsCallerSession struct { + Contract *UtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UtilsTransactorSession struct { + Contract *UtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type UtilsRaw struct { + Contract *Utils // Generic contract binding to access the raw methods on +} + +// UtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UtilsCallerRaw struct { + Contract *UtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// UtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UtilsTransactorRaw struct { + Contract *UtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUtils creates a new instance of Utils, bound to a specific deployed contract. +func NewUtils(address common.Address, backend bind.ContractBackend) (*Utils, error) { + contract, err := bindUtils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Utils{UtilsCaller: UtilsCaller{contract: contract}, UtilsTransactor: UtilsTransactor{contract: contract}, UtilsFilterer: UtilsFilterer{contract: contract}}, nil +} + +// NewUtilsCaller creates a new read-only instance of Utils, bound to a specific deployed contract. +func NewUtilsCaller(address common.Address, caller bind.ContractCaller) (*UtilsCaller, error) { + contract, err := bindUtils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UtilsCaller{contract: contract}, nil +} + +// NewUtilsTransactor creates a new write-only instance of Utils, bound to a specific deployed contract. +func NewUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*UtilsTransactor, error) { + contract, err := bindUtils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UtilsTransactor{contract: contract}, nil +} + +// NewUtilsFilterer creates a new log filterer instance of Utils, bound to a specific deployed contract. +func NewUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*UtilsFilterer, error) { + contract, err := bindUtils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UtilsFilterer{contract: contract}, nil +} + +// bindUtils binds a generic wrapper to an already deployed contract. +func bindUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Utils *UtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Utils.Contract.UtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Utils *UtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Utils.Contract.UtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Utils *UtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Utils.Contract.UtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Utils *UtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Utils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Utils *UtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Utils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Utils *UtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Utils.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/utils/strings.sol/strings.go b/v2/pkg/utils/strings.sol/strings.go new file mode 100644 index 00000000..5c5a03ac --- /dev/null +++ b/v2/pkg/utils/strings.sol/strings.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package strings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StringsMetaData contains all meta data concerning the Strings contract. +var StringsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"StringsInsufficientHexLength\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcce55e68788eb53af38b2c11af076a07cd1e8f2cba23bcb93cbc6cafe3918ef64736f6c634300081a0033", +} + +// StringsABI is the input ABI used to generate the binding from. +// Deprecated: Use StringsMetaData.ABI instead. +var StringsABI = StringsMetaData.ABI + +// StringsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StringsMetaData.Bin instead. +var StringsBin = StringsMetaData.Bin + +// DeployStrings deploys a new Ethereum contract, binding an instance of Strings to it. +func DeployStrings(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Strings, error) { + parsed, err := StringsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StringsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil +} + +// Strings is an auto generated Go binding around an Ethereum contract. +type Strings struct { + StringsCaller // Read-only binding to the contract + StringsTransactor // Write-only binding to the contract + StringsFilterer // Log filterer for contract events +} + +// StringsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StringsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StringsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StringsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StringsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StringsSession struct { + Contract *Strings // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StringsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StringsCallerSession struct { + Contract *StringsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StringsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StringsTransactorSession struct { + Contract *StringsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StringsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StringsRaw struct { + Contract *Strings // Generic contract binding to access the raw methods on +} + +// StringsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StringsCallerRaw struct { + Contract *StringsCaller // Generic read-only contract binding to access the raw methods on +} + +// StringsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StringsTransactorRaw struct { + Contract *StringsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrings creates a new instance of Strings, bound to a specific deployed contract. +func NewStrings(address common.Address, backend bind.ContractBackend) (*Strings, error) { + contract, err := bindStrings(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil +} + +// NewStringsCaller creates a new read-only instance of Strings, bound to a specific deployed contract. +func NewStringsCaller(address common.Address, caller bind.ContractCaller) (*StringsCaller, error) { + contract, err := bindStrings(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StringsCaller{contract: contract}, nil +} + +// NewStringsTransactor creates a new write-only instance of Strings, bound to a specific deployed contract. +func NewStringsTransactor(address common.Address, transactor bind.ContractTransactor) (*StringsTransactor, error) { + contract, err := bindStrings(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StringsTransactor{contract: contract}, nil +} + +// NewStringsFilterer creates a new log filterer instance of Strings, bound to a specific deployed contract. +func NewStringsFilterer(address common.Address, filterer bind.ContractFilterer) (*StringsFilterer, error) { + contract, err := bindStrings(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StringsFilterer{contract: contract}, nil +} + +// bindStrings binds a generic wrapper to an already deployed contract. +func bindStrings(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StringsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Strings *StringsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Strings.Contract.StringsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Strings *StringsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Strings.Contract.StringsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Strings *StringsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Strings.Contract.StringsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Strings *StringsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Strings.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Strings *StringsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Strings.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Strings *StringsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Strings.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/uupsupgradeable.sol/uupsupgradeable.go b/v2/pkg/uupsupgradeable.sol/uupsupgradeable.go new file mode 100644 index 00000000..fa578367 --- /dev/null +++ b/v2/pkg/uupsupgradeable.sol/uupsupgradeable.go @@ -0,0 +1,542 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package uupsupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// UUPSUpgradeableMetaData contains all meta data concerning the UUPSUpgradeable contract. +var UUPSUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", +} + +// UUPSUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use UUPSUpgradeableMetaData.ABI instead. +var UUPSUpgradeableABI = UUPSUpgradeableMetaData.ABI + +// UUPSUpgradeable is an auto generated Go binding around an Ethereum contract. +type UUPSUpgradeable struct { + UUPSUpgradeableCaller // Read-only binding to the contract + UUPSUpgradeableTransactor // Write-only binding to the contract + UUPSUpgradeableFilterer // Log filterer for contract events +} + +// UUPSUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type UUPSUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UUPSUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UUPSUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UUPSUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UUPSUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UUPSUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UUPSUpgradeableSession struct { + Contract *UUPSUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UUPSUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UUPSUpgradeableCallerSession struct { + Contract *UUPSUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UUPSUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UUPSUpgradeableTransactorSession struct { + Contract *UUPSUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UUPSUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type UUPSUpgradeableRaw struct { + Contract *UUPSUpgradeable // Generic contract binding to access the raw methods on +} + +// UUPSUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UUPSUpgradeableCallerRaw struct { + Contract *UUPSUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// UUPSUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UUPSUpgradeableTransactorRaw struct { + Contract *UUPSUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUUPSUpgradeable creates a new instance of UUPSUpgradeable, bound to a specific deployed contract. +func NewUUPSUpgradeable(address common.Address, backend bind.ContractBackend) (*UUPSUpgradeable, error) { + contract, err := bindUUPSUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UUPSUpgradeable{UUPSUpgradeableCaller: UUPSUpgradeableCaller{contract: contract}, UUPSUpgradeableTransactor: UUPSUpgradeableTransactor{contract: contract}, UUPSUpgradeableFilterer: UUPSUpgradeableFilterer{contract: contract}}, nil +} + +// NewUUPSUpgradeableCaller creates a new read-only instance of UUPSUpgradeable, bound to a specific deployed contract. +func NewUUPSUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*UUPSUpgradeableCaller, error) { + contract, err := bindUUPSUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UUPSUpgradeableCaller{contract: contract}, nil +} + +// NewUUPSUpgradeableTransactor creates a new write-only instance of UUPSUpgradeable, bound to a specific deployed contract. +func NewUUPSUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*UUPSUpgradeableTransactor, error) { + contract, err := bindUUPSUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UUPSUpgradeableTransactor{contract: contract}, nil +} + +// NewUUPSUpgradeableFilterer creates a new log filterer instance of UUPSUpgradeable, bound to a specific deployed contract. +func NewUUPSUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*UUPSUpgradeableFilterer, error) { + contract, err := bindUUPSUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UUPSUpgradeableFilterer{contract: contract}, nil +} + +// bindUUPSUpgradeable binds a generic wrapper to an already deployed contract. +func bindUUPSUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UUPSUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UUPSUpgradeable *UUPSUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UUPSUpgradeable.Contract.UUPSUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UUPSUpgradeable *UUPSUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.UUPSUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UUPSUpgradeable *UUPSUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.UUPSUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UUPSUpgradeable *UUPSUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UUPSUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UUPSUpgradeable *UUPSUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_UUPSUpgradeable *UUPSUpgradeableCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _UUPSUpgradeable.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_UUPSUpgradeable *UUPSUpgradeableSession) UPGRADEINTERFACEVERSION() (string, error) { + return _UUPSUpgradeable.Contract.UPGRADEINTERFACEVERSION(&_UUPSUpgradeable.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_UUPSUpgradeable *UUPSUpgradeableCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _UUPSUpgradeable.Contract.UPGRADEINTERFACEVERSION(&_UUPSUpgradeable.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_UUPSUpgradeable *UUPSUpgradeableCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _UUPSUpgradeable.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_UUPSUpgradeable *UUPSUpgradeableSession) ProxiableUUID() ([32]byte, error) { + return _UUPSUpgradeable.Contract.ProxiableUUID(&_UUPSUpgradeable.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_UUPSUpgradeable *UUPSUpgradeableCallerSession) ProxiableUUID() ([32]byte, error) { + return _UUPSUpgradeable.Contract.ProxiableUUID(&_UUPSUpgradeable.CallOpts) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_UUPSUpgradeable *UUPSUpgradeableTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _UUPSUpgradeable.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_UUPSUpgradeable *UUPSUpgradeableSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.UpgradeToAndCall(&_UUPSUpgradeable.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_UUPSUpgradeable *UUPSUpgradeableTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _UUPSUpgradeable.Contract.UpgradeToAndCall(&_UUPSUpgradeable.TransactOpts, newImplementation, data) +} + +// UUPSUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the UUPSUpgradeable contract. +type UUPSUpgradeableInitializedIterator struct { + Event *UUPSUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UUPSUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UUPSUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UUPSUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UUPSUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UUPSUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UUPSUpgradeableInitialized represents a Initialized event raised by the UUPSUpgradeable contract. +type UUPSUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*UUPSUpgradeableInitializedIterator, error) { + + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &UUPSUpgradeableInitializedIterator{contract: _UUPSUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UUPSUpgradeableInitialized) + if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseInitialized(log types.Log) (*UUPSUpgradeableInitialized, error) { + event := new(UUPSUpgradeableInitialized) + if err := _UUPSUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UUPSUpgradeableUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the UUPSUpgradeable contract. +type UUPSUpgradeableUpgradedIterator struct { + Event *UUPSUpgradeableUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UUPSUpgradeableUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UUPSUpgradeableUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UUPSUpgradeableUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UUPSUpgradeableUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UUPSUpgradeableUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UUPSUpgradeableUpgraded represents a Upgraded event raised by the UUPSUpgradeable contract. +type UUPSUpgradeableUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*UUPSUpgradeableUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _UUPSUpgradeable.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &UUPSUpgradeableUpgradedIterator{contract: _UUPSUpgradeable.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *UUPSUpgradeableUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _UUPSUpgradeable.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UUPSUpgradeableUpgraded) + if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_UUPSUpgradeable *UUPSUpgradeableFilterer) ParseUpgraded(log types.Log) (*UUPSUpgradeableUpgraded, error) { + event := new(UUPSUpgradeableUpgraded) + if err := _UUPSUpgradeable.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/versions.sol/versions.go b/v2/pkg/versions.sol/versions.go new file mode 100644 index 00000000..c8964778 --- /dev/null +++ b/v2/pkg/versions.sol/versions.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package versions + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// VersionsMetaData contains all meta data concerning the Versions contract. +var VersionsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090ff21952ff1b506f8e4635b0cb2c5eeb7fc0f5af845cdf577eb795be255d68d64736f6c634300081a0033", +} + +// VersionsABI is the input ABI used to generate the binding from. +// Deprecated: Use VersionsMetaData.ABI instead. +var VersionsABI = VersionsMetaData.ABI + +// VersionsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use VersionsMetaData.Bin instead. +var VersionsBin = VersionsMetaData.Bin + +// DeployVersions deploys a new Ethereum contract, binding an instance of Versions to it. +func DeployVersions(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Versions, error) { + parsed, err := VersionsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(VersionsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Versions{VersionsCaller: VersionsCaller{contract: contract}, VersionsTransactor: VersionsTransactor{contract: contract}, VersionsFilterer: VersionsFilterer{contract: contract}}, nil +} + +// Versions is an auto generated Go binding around an Ethereum contract. +type Versions struct { + VersionsCaller // Read-only binding to the contract + VersionsTransactor // Write-only binding to the contract + VersionsFilterer // Log filterer for contract events +} + +// VersionsCaller is an auto generated read-only Go binding around an Ethereum contract. +type VersionsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VersionsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VersionsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VersionsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VersionsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VersionsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VersionsSession struct { + Contract *Versions // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VersionsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VersionsCallerSession struct { + Contract *VersionsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VersionsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VersionsTransactorSession struct { + Contract *VersionsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VersionsRaw is an auto generated low-level Go binding around an Ethereum contract. +type VersionsRaw struct { + Contract *Versions // Generic contract binding to access the raw methods on +} + +// VersionsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VersionsCallerRaw struct { + Contract *VersionsCaller // Generic read-only contract binding to access the raw methods on +} + +// VersionsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VersionsTransactorRaw struct { + Contract *VersionsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVersions creates a new instance of Versions, bound to a specific deployed contract. +func NewVersions(address common.Address, backend bind.ContractBackend) (*Versions, error) { + contract, err := bindVersions(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Versions{VersionsCaller: VersionsCaller{contract: contract}, VersionsTransactor: VersionsTransactor{contract: contract}, VersionsFilterer: VersionsFilterer{contract: contract}}, nil +} + +// NewVersionsCaller creates a new read-only instance of Versions, bound to a specific deployed contract. +func NewVersionsCaller(address common.Address, caller bind.ContractCaller) (*VersionsCaller, error) { + contract, err := bindVersions(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VersionsCaller{contract: contract}, nil +} + +// NewVersionsTransactor creates a new write-only instance of Versions, bound to a specific deployed contract. +func NewVersionsTransactor(address common.Address, transactor bind.ContractTransactor) (*VersionsTransactor, error) { + contract, err := bindVersions(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VersionsTransactor{contract: contract}, nil +} + +// NewVersionsFilterer creates a new log filterer instance of Versions, bound to a specific deployed contract. +func NewVersionsFilterer(address common.Address, filterer bind.ContractFilterer) (*VersionsFilterer, error) { + contract, err := bindVersions(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VersionsFilterer{contract: contract}, nil +} + +// bindVersions binds a generic wrapper to an already deployed contract. +func bindVersions(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VersionsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Versions *VersionsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Versions.Contract.VersionsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Versions *VersionsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Versions.Contract.VersionsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Versions *VersionsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Versions.Contract.VersionsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Versions *VersionsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Versions.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Versions *VersionsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Versions.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Versions *VersionsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Versions.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/vm.sol/vm.go b/v2/pkg/vm.sol/vm.go new file mode 100644 index 00000000..8b4908be --- /dev/null +++ b/v2/pkg/vm.sol/vm.go @@ -0,0 +1,11096 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package vm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// VmSafeAccountAccess is an auto generated low-level Go binding around an user-defined struct. +type VmSafeAccountAccess struct { + ChainInfo VmSafeChainInfo + Kind uint8 + Account common.Address + Accessor common.Address + Initialized bool + OldBalance *big.Int + NewBalance *big.Int + DeployedCode []byte + Value *big.Int + Data []byte + Reverted bool + StorageAccesses []VmSafeStorageAccess + Depth uint64 +} + +// VmSafeChainInfo is an auto generated low-level Go binding around an user-defined struct. +type VmSafeChainInfo struct { + ForkId *big.Int + ChainId *big.Int +} + +// VmSafeDirEntry is an auto generated low-level Go binding around an user-defined struct. +type VmSafeDirEntry struct { + ErrorMessage string + Path string + Depth uint64 + IsDir bool + IsSymlink bool +} + +// VmSafeEthGetLogs is an auto generated low-level Go binding around an user-defined struct. +type VmSafeEthGetLogs struct { + Emitter common.Address + Topics [][32]byte + Data []byte + BlockHash [32]byte + BlockNumber uint64 + TransactionHash [32]byte + TransactionIndex uint64 + LogIndex *big.Int + Removed bool +} + +// VmSafeFfiResult is an auto generated low-level Go binding around an user-defined struct. +type VmSafeFfiResult struct { + ExitCode int32 + Stdout []byte + Stderr []byte +} + +// VmSafeFsMetadata is an auto generated low-level Go binding around an user-defined struct. +type VmSafeFsMetadata struct { + IsDir bool + IsSymlink bool + Length *big.Int + ReadOnly bool + Modified *big.Int + Accessed *big.Int + Created *big.Int +} + +// VmSafeGas is an auto generated low-level Go binding around an user-defined struct. +type VmSafeGas struct { + GasLimit uint64 + GasTotalUsed uint64 + GasMemoryUsed uint64 + GasRefunded int64 + GasRemaining uint64 +} + +// VmSafeLog is an auto generated low-level Go binding around an user-defined struct. +type VmSafeLog struct { + Topics [][32]byte + Data []byte + Emitter common.Address +} + +// VmSafeRpc is an auto generated low-level Go binding around an user-defined struct. +type VmSafeRpc struct { + Key string + Url string +} + +// VmSafeStorageAccess is an auto generated low-level Go binding around an user-defined struct. +type VmSafeStorageAccess struct { + Account common.Address + Slot [32]byte + IsWrite bool + PreviousValue [32]byte + NewValue [32]byte + Reverted bool +} + +// VmSafeWallet is an auto generated low-level Go binding around an user-defined struct. +type VmSafeWallet struct { + Addr common.Address + PublicKeyX *big.Int + PublicKeyY *big.Int + PrivateKey *big.Int +} + +// VmMetaData contains all meta data concerning the Vm contract. +var VmMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"accesses\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"readSlots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"writeSlots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"activeFork\",\"inputs\":[],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addr\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"keyAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"allowCheatcodes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertFalse\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertFalse\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertTrue\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertTrue\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assume\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"blobBaseFee\",\"inputs\":[{\"name\":\"newBlobBaseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blobhashes\",\"inputs\":[{\"name\":\"hashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"breakpoint\",\"inputs\":[{\"name\":\"char\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"breakpoint\",\"inputs\":[{\"name\":\"char\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"chainId\",\"inputs\":[{\"name\":\"newChainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearMockedCalls\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"closeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"coinbase\",\"inputs\":[{\"name\":\"newCoinbase\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"computeCreate2Address\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"computeCreate2Address\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"deployer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"computeCreateAddress\",\"inputs\":[{\"name\":\"deployer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"copyFile\",\"inputs\":[{\"name\":\"from\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"to\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"copied\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"recursive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createSelectFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createSelectFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createSelectFork\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"walletLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"walletLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deal\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deleteSnapshot\",\"inputs\":[{\"name\":\"snapshotId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deleteSnapshots\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"constructorArgs\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"deployedAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"deployedAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"derivationPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"language\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"language\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"derivationPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"difficulty\",\"inputs\":[{\"name\":\"newDifficulty\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"dumpState\",\"inputs\":[{\"name\":\"pathToStateJson\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ensNamehash\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"envAddress\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envAddress\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBool\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBool\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes32\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes32\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envExists\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envInt\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envInt\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envString\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envString\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envUint\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envUint\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"etch\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eth_getLogs\",\"inputs\":[{\"name\":\"fromBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"toBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"logs\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.EthGetLogs[]\",\"components\":[{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"transactionHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"transactionIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"removed\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"exists\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"count\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"count\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"count\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCallMinGas\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectCallMinGas\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"count\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmit\",\"inputs\":[{\"name\":\"checkTopic1\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic2\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic3\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmit\",\"inputs\":[{\"name\":\"checkTopic1\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic2\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic3\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkData\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmit\",\"inputs\":[{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmitAnonymous\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmitAnonymous\",\"inputs\":[{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmitAnonymous\",\"inputs\":[{\"name\":\"checkTopic0\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic1\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic2\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic3\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkData\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectEmitAnonymous\",\"inputs\":[{\"name\":\"checkTopic0\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic1\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic2\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkTopic3\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"checkData\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectRevert\",\"inputs\":[{\"name\":\"revertData\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectRevert\",\"inputs\":[{\"name\":\"revertData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectSafeMemory\",\"inputs\":[{\"name\":\"min\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"max\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"expectSafeMemoryCall\",\"inputs\":[{\"name\":\"min\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"max\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"fee\",\"inputs\":[{\"name\":\"newBasefee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ffi\",\"inputs\":[{\"name\":\"commandInput\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"fsMetadata\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"metadata\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.FsMetadata\",\"components\":[{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"readOnly\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"modified\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"accessed\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"created\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobBaseFee\",\"inputs\":[],\"outputs\":[{\"name\":\"blobBaseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobhashes\",\"inputs\":[],\"outputs\":[{\"name\":\"hashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"creationBytecode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeployedCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"runtimeBytecode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLabel\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"currentLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMappingKeyAndParentOf\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"elementSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"found\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parent\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMappingLength\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"mappingSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMappingSlotAt\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"mappingSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"idx\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getNonce\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNonce\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRecordedLogs\",\"inputs\":[],\"outputs\":[{\"name\":\"logs\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.Log[]\",\"components\":[{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"indexOf\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"isContext\",\"inputs\":[{\"name\":\"context\",\"type\":\"uint8\",\"internalType\":\"enumVmSafe.ForgeContext\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isPersistent\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"persistent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyExists\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyExistsJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyExistsToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"label\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCallGas\",\"inputs\":[],\"outputs\":[{\"name\":\"gas\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Gas\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasTotalUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasMemoryUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasRefunded\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"gasRemaining\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"load\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"loadAllocs\",\"inputs\":[{\"name\":\"pathToAllocsJson\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"makePersistent\",\"inputs\":[{\"name\":\"accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"makePersistent\",\"inputs\":[{\"name\":\"account0\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"account1\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"makePersistent\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"makePersistent\",\"inputs\":[{\"name\":\"account0\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"account1\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"account2\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mockCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mockCall\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"returnData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mockCallRevert\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"msgValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mockCallRevert\",\"inputs\":[{\"name\":\"callee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"parseAddress\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBool\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBytes\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBytes32\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseInt\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonAddress\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonAddressArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBool\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBoolArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes32\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes32Array\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytesArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonInt\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonIntArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonKeys\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"keys\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonString\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonStringArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonType\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonType\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonTypeArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonUint\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonUintArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlAddress\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlAddressArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBool\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBoolArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes32\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes32Array\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytesArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlInt\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlIntArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlKeys\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"keys\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlString\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlStringArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlUint\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlUintArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseUint\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"pauseGasMetering\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"prank\",\"inputs\":[{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"txOrigin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"prank\",\"inputs\":[{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"prevrandao\",\"inputs\":[{\"name\":\"newPrevrandao\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"prevrandao\",\"inputs\":[{\"name\":\"newPrevrandao\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"projectRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"prompt\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptAddress\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptSecret\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptSecretUint\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptUint\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomUint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomUint\",\"inputs\":[{\"name\":\"min\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"readCallers\",\"inputs\":[],\"outputs\":[{\"name\":\"callerMode\",\"type\":\"uint8\",\"internalType\":\"enumVmSafe.CallerMode\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"txOrigin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"maxDepth\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"maxDepth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"followLinks\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readFileBinary\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readLine\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"line\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readLink\",\"inputs\":[{\"name\":\"linkPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"targetPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"record\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordLogs\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rememberKey\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"keyAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"recursive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"replace\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"from\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"to\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"resetNonce\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resumeGasMetering\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertTo\",\"inputs\":[{\"name\":\"snapshotId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertToAndDelete\",\"inputs\":[{\"name\":\"snapshotId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokePersistent\",\"inputs\":[{\"name\":\"accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokePersistent\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"roll\",\"inputs\":[{\"name\":\"newHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rollFork\",\"inputs\":[{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rollFork\",\"inputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rollFork\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rollFork\",\"inputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpc\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"method\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpc\",\"inputs\":[{\"name\":\"method\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpcUrl\",\"inputs\":[{\"name\":\"rpcAlias\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"rpcUrlStructs\",\"inputs\":[],\"outputs\":[{\"name\":\"urls\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.Rpc[]\",\"components\":[{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"url\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"rpcUrls\",\"inputs\":[],\"outputs\":[{\"name\":\"urls\",\"type\":\"string[2][]\",\"internalType\":\"string[2][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"selectFork\",\"inputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeAddress\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeAddress\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBool\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBool\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes32\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes32\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeInt\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeInt\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeJson\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeJsonType\",\"inputs\":[{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"serializeJsonType\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeString\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeString\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUint\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUint\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUintToHex\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBlockhash\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEnv\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNonce\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setNonceUnsafe\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newNonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"signP256\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"skip\",\"inputs\":[{\"name\":\"skipTest\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sleep\",\"inputs\":[{\"name\":\"duration\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"snapshot\",\"inputs\":[],\"outputs\":[{\"name\":\"snapshotId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"split\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delimiter\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"outputs\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startMappingRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startPrank\",\"inputs\":[{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startPrank\",\"inputs\":[{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"txOrigin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startStateDiffRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopAndReturnStateDiff\",\"inputs\":[],\"outputs\":[{\"name\":\"accountAccesses\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.AccountAccess[]\",\"components\":[{\"name\":\"chainInfo\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.ChainInfo\",\"components\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"enumVmSafe.AccountAccessKind\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"accessor\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialized\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"oldBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deployedCode\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reverted\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"storageAccesses\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.StorageAccess[]\",\"components\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"isWrite\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"previousValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"newValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reverted\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopBroadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopExpectSafeMemory\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopMappingRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopPrank\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"store\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"toBase64\",\"inputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64URL\",\"inputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64URL\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toLowercase\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toUppercase\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transact\",\"inputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transact\",\"inputs\":[{\"name\":\"txHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trim\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"tryFfi\",\"inputs\":[{\"name\":\"commandInput\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.FfiResult\",\"components\":[{\"name\":\"exitCode\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"stdout\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stderr\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"txGasPrice\",\"inputs\":[{\"name\":\"newGasPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unixTime\",\"inputs\":[],\"outputs\":[{\"name\":\"milliseconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"warp\",\"inputs\":[{\"name\":\"newTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeFileBinary\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeLine\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeToml\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeToml\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// VmABI is the input ABI used to generate the binding from. +// Deprecated: Use VmMetaData.ABI instead. +var VmABI = VmMetaData.ABI + +// Vm is an auto generated Go binding around an Ethereum contract. +type Vm struct { + VmCaller // Read-only binding to the contract + VmTransactor // Write-only binding to the contract + VmFilterer // Log filterer for contract events +} + +// VmCaller is an auto generated read-only Go binding around an Ethereum contract. +type VmCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VmTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VmFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VmSession struct { + Contract *Vm // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VmCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VmCallerSession struct { + Contract *VmCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VmTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VmTransactorSession struct { + Contract *VmTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VmRaw is an auto generated low-level Go binding around an Ethereum contract. +type VmRaw struct { + Contract *Vm // Generic contract binding to access the raw methods on +} + +// VmCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VmCallerRaw struct { + Contract *VmCaller // Generic read-only contract binding to access the raw methods on +} + +// VmTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VmTransactorRaw struct { + Contract *VmTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVm creates a new instance of Vm, bound to a specific deployed contract. +func NewVm(address common.Address, backend bind.ContractBackend) (*Vm, error) { + contract, err := bindVm(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Vm{VmCaller: VmCaller{contract: contract}, VmTransactor: VmTransactor{contract: contract}, VmFilterer: VmFilterer{contract: contract}}, nil +} + +// NewVmCaller creates a new read-only instance of Vm, bound to a specific deployed contract. +func NewVmCaller(address common.Address, caller bind.ContractCaller) (*VmCaller, error) { + contract, err := bindVm(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VmCaller{contract: contract}, nil +} + +// NewVmTransactor creates a new write-only instance of Vm, bound to a specific deployed contract. +func NewVmTransactor(address common.Address, transactor bind.ContractTransactor) (*VmTransactor, error) { + contract, err := bindVm(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VmTransactor{contract: contract}, nil +} + +// NewVmFilterer creates a new log filterer instance of Vm, bound to a specific deployed contract. +func NewVmFilterer(address common.Address, filterer bind.ContractFilterer) (*VmFilterer, error) { + contract, err := bindVm(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VmFilterer{contract: contract}, nil +} + +// bindVm binds a generic wrapper to an already deployed contract. +func bindVm(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VmMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Vm *VmRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Vm.Contract.VmCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Vm *VmRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.Contract.VmTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Vm *VmRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Vm.Contract.VmTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Vm *VmCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Vm.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Vm *VmTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Vm *VmTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Vm.Contract.contract.Transact(opts, method, params...) +} + +// ActiveFork is a free data retrieval call binding the contract method 0x2f103f22. +// +// Solidity: function activeFork() view returns(uint256 forkId) +func (_Vm *VmCaller) ActiveFork(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "activeFork") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ActiveFork is a free data retrieval call binding the contract method 0x2f103f22. +// +// Solidity: function activeFork() view returns(uint256 forkId) +func (_Vm *VmSession) ActiveFork() (*big.Int, error) { + return _Vm.Contract.ActiveFork(&_Vm.CallOpts) +} + +// ActiveFork is a free data retrieval call binding the contract method 0x2f103f22. +// +// Solidity: function activeFork() view returns(uint256 forkId) +func (_Vm *VmCallerSession) ActiveFork() (*big.Int, error) { + return _Vm.Contract.ActiveFork(&_Vm.CallOpts) +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_Vm *VmCaller) Addr(opts *bind.CallOpts, privateKey *big.Int) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "addr", privateKey) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_Vm *VmSession) Addr(privateKey *big.Int) (common.Address, error) { + return _Vm.Contract.Addr(&_Vm.CallOpts, privateKey) +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_Vm *VmCallerSession) Addr(privateKey *big.Int) (common.Address, error) { + return _Vm.Contract.Addr(&_Vm.CallOpts, privateKey) +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbs(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbs", left, right, maxDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_Vm *VmSession) AssertApproxEqAbs(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqAbs(&_Vm.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbs(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqAbs(&_Vm.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbs0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbs0", left, right, maxDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_Vm *VmSession) AssertApproxEqAbs0(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqAbs0(&_Vm.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbs0(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqAbs0(&_Vm.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbs1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbs1", left, right, maxDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqAbs1(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbs1(&_Vm.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbs1(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbs1(&_Vm.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbs2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbs2", left, right, maxDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqAbs2(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbs2(&_Vm.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbs2(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbs2(&_Vm.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbsDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbsDecimal", left, right, maxDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertApproxEqAbsDecimal(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqAbsDecimal(&_Vm.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbsDecimal(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqAbsDecimal(&_Vm.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbsDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbsDecimal0", left, right, maxDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertApproxEqAbsDecimal0(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqAbsDecimal0(&_Vm.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbsDecimal0(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqAbsDecimal0(&_Vm.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbsDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbsDecimal1", left, right, maxDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqAbsDecimal1(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbsDecimal1(&_Vm.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbsDecimal1(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbsDecimal1(&_Vm.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqAbsDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqAbsDecimal2", left, right, maxDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqAbsDecimal2(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbsDecimal2(&_Vm.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqAbsDecimal2(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqAbsDecimal2(&_Vm.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqRel(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRel", left, right, maxPercentDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqRel(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRel(&_Vm.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRel(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRel(&_Vm.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmCaller) AssertApproxEqRel0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRel0", left, right, maxPercentDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmSession) AssertApproxEqRel0(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqRel0(&_Vm.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRel0(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqRel0(&_Vm.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqRel1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRel1", left, right, maxPercentDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqRel1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRel1(&_Vm.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRel1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRel1(&_Vm.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmCaller) AssertApproxEqRel2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRel2", left, right, maxPercentDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmSession) AssertApproxEqRel2(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqRel2(&_Vm.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRel2(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _Vm.Contract.AssertApproxEqRel2(&_Vm.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertApproxEqRelDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRelDecimal", left, right, maxPercentDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertApproxEqRelDecimal(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqRelDecimal(&_Vm.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRelDecimal(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqRelDecimal(&_Vm.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqRelDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRelDecimal0", left, right, maxPercentDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqRelDecimal0(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRelDecimal0(&_Vm.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRelDecimal0(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRelDecimal0(&_Vm.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertApproxEqRelDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRelDecimal1", left, right, maxPercentDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertApproxEqRelDecimal1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqRelDecimal1(&_Vm.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRelDecimal1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertApproxEqRelDecimal1(&_Vm.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertApproxEqRelDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertApproxEqRelDecimal2", left, right, maxPercentDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertApproxEqRelDecimal2(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRelDecimal2(&_Vm.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertApproxEqRelDecimal2(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertApproxEqRelDecimal2(&_Vm.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmCaller) AssertEq(opts *bind.CallOpts, left [][32]byte, right [][32]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmSession) AssertEq(left [][32]byte, right [][32]byte) error { + return _Vm.Contract.AssertEq(&_Vm.CallOpts, left, right) +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq(left [][32]byte, right [][32]byte) error { + return _Vm.Contract.AssertEq(&_Vm.CallOpts, left, right) +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq0(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq0(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertEq0(&_Vm.CallOpts, left, right, error) +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq0(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertEq0(&_Vm.CallOpts, left, right, error) +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_Vm *VmCaller) AssertEq1(opts *bind.CallOpts, left common.Address, right common.Address, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_Vm *VmSession) AssertEq1(left common.Address, right common.Address, error string) error { + return _Vm.Contract.AssertEq1(&_Vm.CallOpts, left, right, error) +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq1(left common.Address, right common.Address, error string) error { + return _Vm.Contract.AssertEq1(&_Vm.CallOpts, left, right, error) +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertEq10(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq10", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertEq10(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertEq10(&_Vm.CallOpts, left, right, error) +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq10(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertEq10(&_Vm.CallOpts, left, right, error) +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmCaller) AssertEq11(opts *bind.CallOpts, left [32]byte, right [32]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq11", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmSession) AssertEq11(left [32]byte, right [32]byte) error { + return _Vm.Contract.AssertEq11(&_Vm.CallOpts, left, right) +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmCallerSession) AssertEq11(left [32]byte, right [32]byte) error { + return _Vm.Contract.AssertEq11(&_Vm.CallOpts, left, right) +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertEq12(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq12", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertEq12(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertEq12(&_Vm.CallOpts, left, right, error) +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq12(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertEq12(&_Vm.CallOpts, left, right, error) +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmCaller) AssertEq13(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq13", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmSession) AssertEq13(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertEq13(&_Vm.CallOpts, left, right) +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq13(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertEq13(&_Vm.CallOpts, left, right) +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_Vm *VmCaller) AssertEq14(opts *bind.CallOpts, left []byte, right []byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq14", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_Vm *VmSession) AssertEq14(left []byte, right []byte) error { + return _Vm.Contract.AssertEq14(&_Vm.CallOpts, left, right) +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_Vm *VmCallerSession) AssertEq14(left []byte, right []byte) error { + return _Vm.Contract.AssertEq14(&_Vm.CallOpts, left, right) +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertEq15(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq15", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertEq15(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertEq15(&_Vm.CallOpts, left, right) +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertEq15(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertEq15(&_Vm.CallOpts, left, right) +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmCaller) AssertEq16(opts *bind.CallOpts, left [32]byte, right [32]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq16", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmSession) AssertEq16(left [32]byte, right [32]byte, error string) error { + return _Vm.Contract.AssertEq16(&_Vm.CallOpts, left, right, error) +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq16(left [32]byte, right [32]byte, error string) error { + return _Vm.Contract.AssertEq16(&_Vm.CallOpts, left, right, error) +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_Vm *VmCaller) AssertEq17(opts *bind.CallOpts, left []string, right []string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq17", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_Vm *VmSession) AssertEq17(left []string, right []string) error { + return _Vm.Contract.AssertEq17(&_Vm.CallOpts, left, right) +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq17(left []string, right []string) error { + return _Vm.Contract.AssertEq17(&_Vm.CallOpts, left, right) +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq18(opts *bind.CallOpts, left [][32]byte, right [][32]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq18", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq18(left [][32]byte, right [][32]byte, error string) error { + return _Vm.Contract.AssertEq18(&_Vm.CallOpts, left, right, error) +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq18(left [][32]byte, right [][32]byte, error string) error { + return _Vm.Contract.AssertEq18(&_Vm.CallOpts, left, right, error) +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmCaller) AssertEq19(opts *bind.CallOpts, left []byte, right []byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq19", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmSession) AssertEq19(left []byte, right []byte, error string) error { + return _Vm.Contract.AssertEq19(&_Vm.CallOpts, left, right, error) +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq19(left []byte, right []byte, error string) error { + return _Vm.Contract.AssertEq19(&_Vm.CallOpts, left, right, error) +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_Vm *VmCaller) AssertEq2(opts *bind.CallOpts, left string, right string, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_Vm *VmSession) AssertEq2(left string, right string, error string) error { + return _Vm.Contract.AssertEq2(&_Vm.CallOpts, left, right, error) +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq2(left string, right string, error string) error { + return _Vm.Contract.AssertEq2(&_Vm.CallOpts, left, right, error) +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq20(opts *bind.CallOpts, left []bool, right []bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq20", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq20(left []bool, right []bool, error string) error { + return _Vm.Contract.AssertEq20(&_Vm.CallOpts, left, right, error) +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq20(left []bool, right []bool, error string) error { + return _Vm.Contract.AssertEq20(&_Vm.CallOpts, left, right, error) +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmCaller) AssertEq21(opts *bind.CallOpts, left [][]byte, right [][]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq21", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmSession) AssertEq21(left [][]byte, right [][]byte) error { + return _Vm.Contract.AssertEq21(&_Vm.CallOpts, left, right) +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq21(left [][]byte, right [][]byte) error { + return _Vm.Contract.AssertEq21(&_Vm.CallOpts, left, right) +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq22(opts *bind.CallOpts, left []string, right []string, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq22", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq22(left []string, right []string, error string) error { + return _Vm.Contract.AssertEq22(&_Vm.CallOpts, left, right, error) +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq22(left []string, right []string, error string) error { + return _Vm.Contract.AssertEq22(&_Vm.CallOpts, left, right, error) +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_Vm *VmCaller) AssertEq23(opts *bind.CallOpts, left string, right string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq23", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_Vm *VmSession) AssertEq23(left string, right string) error { + return _Vm.Contract.AssertEq23(&_Vm.CallOpts, left, right) +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_Vm *VmCallerSession) AssertEq23(left string, right string) error { + return _Vm.Contract.AssertEq23(&_Vm.CallOpts, left, right) +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq24(opts *bind.CallOpts, left [][]byte, right [][]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq24", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq24(left [][]byte, right [][]byte, error string) error { + return _Vm.Contract.AssertEq24(&_Vm.CallOpts, left, right, error) +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq24(left [][]byte, right [][]byte, error string) error { + return _Vm.Contract.AssertEq24(&_Vm.CallOpts, left, right, error) +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_Vm *VmCaller) AssertEq25(opts *bind.CallOpts, left bool, right bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq25", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_Vm *VmSession) AssertEq25(left bool, right bool) error { + return _Vm.Contract.AssertEq25(&_Vm.CallOpts, left, right) +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_Vm *VmCallerSession) AssertEq25(left bool, right bool) error { + return _Vm.Contract.AssertEq25(&_Vm.CallOpts, left, right) +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertEq26(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq26", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertEq26(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertEq26(&_Vm.CallOpts, left, right) +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertEq26(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertEq26(&_Vm.CallOpts, left, right) +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_Vm *VmCaller) AssertEq3(opts *bind.CallOpts, left []common.Address, right []common.Address) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq3", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_Vm *VmSession) AssertEq3(left []common.Address, right []common.Address) error { + return _Vm.Contract.AssertEq3(&_Vm.CallOpts, left, right) +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq3(left []common.Address, right []common.Address) error { + return _Vm.Contract.AssertEq3(&_Vm.CallOpts, left, right) +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq4(opts *bind.CallOpts, left []common.Address, right []common.Address, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq4", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq4(left []common.Address, right []common.Address, error string) error { + return _Vm.Contract.AssertEq4(&_Vm.CallOpts, left, right, error) +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq4(left []common.Address, right []common.Address, error string) error { + return _Vm.Contract.AssertEq4(&_Vm.CallOpts, left, right, error) +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_Vm *VmCaller) AssertEq5(opts *bind.CallOpts, left bool, right bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq5", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_Vm *VmSession) AssertEq5(left bool, right bool, error string) error { + return _Vm.Contract.AssertEq5(&_Vm.CallOpts, left, right, error) +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq5(left bool, right bool, error string) error { + return _Vm.Contract.AssertEq5(&_Vm.CallOpts, left, right, error) +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_Vm *VmCaller) AssertEq6(opts *bind.CallOpts, left common.Address, right common.Address) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq6", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_Vm *VmSession) AssertEq6(left common.Address, right common.Address) error { + return _Vm.Contract.AssertEq6(&_Vm.CallOpts, left, right) +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_Vm *VmCallerSession) AssertEq6(left common.Address, right common.Address) error { + return _Vm.Contract.AssertEq6(&_Vm.CallOpts, left, right) +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmCaller) AssertEq7(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq7", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmSession) AssertEq7(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertEq7(&_Vm.CallOpts, left, right, error) +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertEq7(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertEq7(&_Vm.CallOpts, left, right, error) +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmCaller) AssertEq8(opts *bind.CallOpts, left []bool, right []bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq8", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmSession) AssertEq8(left []bool, right []bool) error { + return _Vm.Contract.AssertEq8(&_Vm.CallOpts, left, right) +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq8(left []bool, right []bool) error { + return _Vm.Contract.AssertEq8(&_Vm.CallOpts, left, right) +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmCaller) AssertEq9(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEq9", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmSession) AssertEq9(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertEq9(&_Vm.CallOpts, left, right) +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmCallerSession) AssertEq9(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertEq9(&_Vm.CallOpts, left, right) +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertEqDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEqDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertEqDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertEqDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertEqDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEqDecimal0", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertEqDecimal0(&_Vm.CallOpts, left, right, decimals) +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertEqDecimal0(&_Vm.CallOpts, left, right, decimals) +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertEqDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEqDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertEqDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertEqDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertEqDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertEqDecimal2", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertEqDecimal2(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertEqDecimal2(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_Vm *VmCaller) AssertFalse(opts *bind.CallOpts, condition bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertFalse", condition, error) + + if err != nil { + return err + } + + return err + +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_Vm *VmSession) AssertFalse(condition bool, error string) error { + return _Vm.Contract.AssertFalse(&_Vm.CallOpts, condition, error) +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_Vm *VmCallerSession) AssertFalse(condition bool, error string) error { + return _Vm.Contract.AssertFalse(&_Vm.CallOpts, condition, error) +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_Vm *VmCaller) AssertFalse0(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertFalse0", condition) + + if err != nil { + return err + } + + return err + +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_Vm *VmSession) AssertFalse0(condition bool) error { + return _Vm.Contract.AssertFalse0(&_Vm.CallOpts, condition) +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_Vm *VmCallerSession) AssertFalse0(condition bool) error { + return _Vm.Contract.AssertFalse0(&_Vm.CallOpts, condition) +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertGe(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGe", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertGe(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGe(&_Vm.CallOpts, left, right) +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertGe(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGe(&_Vm.CallOpts, left, right) +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertGe0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGe0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertGe0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGe0(&_Vm.CallOpts, left, right, error) +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertGe0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGe0(&_Vm.CallOpts, left, right, error) +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertGe1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGe1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertGe1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGe1(&_Vm.CallOpts, left, right) +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertGe1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGe1(&_Vm.CallOpts, left, right) +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertGe2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGe2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertGe2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGe2(&_Vm.CallOpts, left, right, error) +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertGe2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGe2(&_Vm.CallOpts, left, right, error) +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertGeDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGeDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertGeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGeDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertGeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGeDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertGeDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGeDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertGeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGeDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertGeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGeDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertGeDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGeDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertGeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGeDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertGeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGeDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertGeDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGeDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertGeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGeDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertGeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGeDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertGt(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGt", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertGt(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGt(&_Vm.CallOpts, left, right) +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertGt(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGt(&_Vm.CallOpts, left, right) +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertGt0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGt0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertGt0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGt0(&_Vm.CallOpts, left, right, error) +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertGt0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGt0(&_Vm.CallOpts, left, right, error) +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertGt1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGt1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertGt1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGt1(&_Vm.CallOpts, left, right) +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertGt1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertGt1(&_Vm.CallOpts, left, right) +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertGt2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGt2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertGt2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGt2(&_Vm.CallOpts, left, right, error) +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertGt2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertGt2(&_Vm.CallOpts, left, right, error) +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertGtDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGtDecimal", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertGtDecimal(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGtDecimal(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertGtDecimal(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGtDecimal(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertGtDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGtDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertGtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGtDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertGtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertGtDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertGtDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGtDecimal1", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertGtDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGtDecimal1(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertGtDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGtDecimal1(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertGtDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertGtDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertGtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGtDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertGtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertGtDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertLe(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLe", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertLe(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLe(&_Vm.CallOpts, left, right, error) +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertLe(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLe(&_Vm.CallOpts, left, right, error) +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertLe0(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLe0", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertLe0(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLe0(&_Vm.CallOpts, left, right) +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertLe0(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLe0(&_Vm.CallOpts, left, right) +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertLe1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLe1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertLe1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLe1(&_Vm.CallOpts, left, right) +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertLe1(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLe1(&_Vm.CallOpts, left, right) +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertLe2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLe2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertLe2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLe2(&_Vm.CallOpts, left, right, error) +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertLe2(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLe2(&_Vm.CallOpts, left, right, error) +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertLeDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLeDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertLeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLeDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertLeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLeDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertLeDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLeDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertLeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLeDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertLeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLeDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertLeDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLeDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertLeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLeDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertLeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLeDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertLeDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLeDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertLeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLeDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertLeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLeDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertLt(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLt", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertLt(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLt(&_Vm.CallOpts, left, right) +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertLt(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLt(&_Vm.CallOpts, left, right) +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertLt0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLt0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertLt0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLt0(&_Vm.CallOpts, left, right, error) +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertLt0(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLt0(&_Vm.CallOpts, left, right, error) +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertLt1(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLt1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertLt1(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLt1(&_Vm.CallOpts, left, right, error) +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertLt1(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertLt1(&_Vm.CallOpts, left, right, error) +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertLt2(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLt2", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertLt2(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLt2(&_Vm.CallOpts, left, right) +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertLt2(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertLt2(&_Vm.CallOpts, left, right) +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertLtDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLtDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertLtDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLtDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertLtDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLtDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertLtDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLtDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertLtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLtDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertLtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLtDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertLtDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLtDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertLtDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLtDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertLtDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertLtDecimal1(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertLtDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertLtDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertLtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLtDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertLtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertLtDecimal2(&_Vm.CallOpts, left, right, decimals) +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq(opts *bind.CallOpts, left [][32]byte, right [][32]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmSession) AssertNotEq(left [][32]byte, right [][32]byte) error { + return _Vm.Contract.AssertNotEq(&_Vm.CallOpts, left, right) +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq(left [][32]byte, right [][32]byte) error { + return _Vm.Contract.AssertNotEq(&_Vm.CallOpts, left, right) +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq0(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq0", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmSession) AssertNotEq0(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertNotEq0(&_Vm.CallOpts, left, right) +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq0(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertNotEq0(&_Vm.CallOpts, left, right) +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq1(opts *bind.CallOpts, left bool, right bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq1(left bool, right bool, error string) error { + return _Vm.Contract.AssertNotEq1(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq1(left bool, right bool, error string) error { + return _Vm.Contract.AssertNotEq1(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_Vm *VmCaller) AssertNotEq10(opts *bind.CallOpts, left string, right string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq10", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_Vm *VmSession) AssertNotEq10(left string, right string) error { + return _Vm.Contract.AssertNotEq10(&_Vm.CallOpts, left, right) +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq10(left string, right string) error { + return _Vm.Contract.AssertNotEq10(&_Vm.CallOpts, left, right) +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq11(opts *bind.CallOpts, left []common.Address, right []common.Address, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq11", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq11(left []common.Address, right []common.Address, error string) error { + return _Vm.Contract.AssertNotEq11(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq11(left []common.Address, right []common.Address, error string) error { + return _Vm.Contract.AssertNotEq11(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq12(opts *bind.CallOpts, left string, right string, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq12", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq12(left string, right string, error string) error { + return _Vm.Contract.AssertNotEq12(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq12(left string, right string, error string) error { + return _Vm.Contract.AssertNotEq12(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq13(opts *bind.CallOpts, left common.Address, right common.Address, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq13", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq13(left common.Address, right common.Address, error string) error { + return _Vm.Contract.AssertNotEq13(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq13(left common.Address, right common.Address, error string) error { + return _Vm.Contract.AssertNotEq13(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmCaller) AssertNotEq14(opts *bind.CallOpts, left [32]byte, right [32]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq14", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmSession) AssertNotEq14(left [32]byte, right [32]byte) error { + return _Vm.Contract.AssertNotEq14(&_Vm.CallOpts, left, right) +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq14(left [32]byte, right [32]byte) error { + return _Vm.Contract.AssertNotEq14(&_Vm.CallOpts, left, right) +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq15(opts *bind.CallOpts, left []byte, right []byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq15", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq15(left []byte, right []byte, error string) error { + return _Vm.Contract.AssertNotEq15(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq15(left []byte, right []byte, error string) error { + return _Vm.Contract.AssertNotEq15(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq16(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq16", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq16(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertNotEq16(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq16(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertNotEq16(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq17(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq17", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq17(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertNotEq17(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq17(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertNotEq17(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_Vm *VmCaller) AssertNotEq18(opts *bind.CallOpts, left common.Address, right common.Address) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq18", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_Vm *VmSession) AssertNotEq18(left common.Address, right common.Address) error { + return _Vm.Contract.AssertNotEq18(&_Vm.CallOpts, left, right) +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq18(left common.Address, right common.Address) error { + return _Vm.Contract.AssertNotEq18(&_Vm.CallOpts, left, right) +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq19(opts *bind.CallOpts, left [32]byte, right [32]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq19", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq19(left [32]byte, right [32]byte, error string) error { + return _Vm.Contract.AssertNotEq19(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq19(left [32]byte, right [32]byte, error string) error { + return _Vm.Contract.AssertNotEq19(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq2(opts *bind.CallOpts, left [][]byte, right [][]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq2(left [][]byte, right [][]byte, error string) error { + return _Vm.Contract.AssertNotEq2(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq2(left [][]byte, right [][]byte, error string) error { + return _Vm.Contract.AssertNotEq2(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq20(opts *bind.CallOpts, left []string, right []string, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq20", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq20(left []string, right []string, error string) error { + return _Vm.Contract.AssertNotEq20(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq20(left []string, right []string, error string) error { + return _Vm.Contract.AssertNotEq20(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmCaller) AssertNotEq21(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq21", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmSession) AssertNotEq21(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertNotEq21(&_Vm.CallOpts, left, right) +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq21(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertNotEq21(&_Vm.CallOpts, left, right) +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq22(opts *bind.CallOpts, left [][32]byte, right [][32]byte, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq22", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq22(left [][32]byte, right [][32]byte, error string) error { + return _Vm.Contract.AssertNotEq22(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq22(left [][32]byte, right [][32]byte, error string) error { + return _Vm.Contract.AssertNotEq22(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq23(opts *bind.CallOpts, left []string, right []string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq23", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_Vm *VmSession) AssertNotEq23(left []string, right []string) error { + return _Vm.Contract.AssertNotEq23(&_Vm.CallOpts, left, right) +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq23(left []string, right []string) error { + return _Vm.Contract.AssertNotEq23(&_Vm.CallOpts, left, right) +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq24(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq24", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq24(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertNotEq24(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq24(left []*big.Int, right []*big.Int, error string) error { + return _Vm.Contract.AssertNotEq24(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq25(opts *bind.CallOpts, left [][]byte, right [][]byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq25", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmSession) AssertNotEq25(left [][]byte, right [][]byte) error { + return _Vm.Contract.AssertNotEq25(&_Vm.CallOpts, left, right) +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq25(left [][]byte, right [][]byte) error { + return _Vm.Contract.AssertNotEq25(&_Vm.CallOpts, left, right) +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_Vm *VmCaller) AssertNotEq26(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq26", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_Vm *VmSession) AssertNotEq26(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertNotEq26(&_Vm.CallOpts, left, right) +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq26(left *big.Int, right *big.Int) error { + return _Vm.Contract.AssertNotEq26(&_Vm.CallOpts, left, right) +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_Vm *VmCaller) AssertNotEq3(opts *bind.CallOpts, left bool, right bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq3", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_Vm *VmSession) AssertNotEq3(left bool, right bool) error { + return _Vm.Contract.AssertNotEq3(&_Vm.CallOpts, left, right) +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq3(left bool, right bool) error { + return _Vm.Contract.AssertNotEq3(&_Vm.CallOpts, left, right) +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq4(opts *bind.CallOpts, left []bool, right []bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq4", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmSession) AssertNotEq4(left []bool, right []bool) error { + return _Vm.Contract.AssertNotEq4(&_Vm.CallOpts, left, right) +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq4(left []bool, right []bool) error { + return _Vm.Contract.AssertNotEq4(&_Vm.CallOpts, left, right) +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_Vm *VmCaller) AssertNotEq5(opts *bind.CallOpts, left []byte, right []byte) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq5", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_Vm *VmSession) AssertNotEq5(left []byte, right []byte) error { + return _Vm.Contract.AssertNotEq5(&_Vm.CallOpts, left, right) +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq5(left []byte, right []byte) error { + return _Vm.Contract.AssertNotEq5(&_Vm.CallOpts, left, right) +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq6(opts *bind.CallOpts, left []common.Address, right []common.Address) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq6", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_Vm *VmSession) AssertNotEq6(left []common.Address, right []common.Address) error { + return _Vm.Contract.AssertNotEq6(&_Vm.CallOpts, left, right) +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq6(left []common.Address, right []common.Address) error { + return _Vm.Contract.AssertNotEq6(&_Vm.CallOpts, left, right) +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq7(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq7", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq7(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertNotEq7(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq7(left *big.Int, right *big.Int, error string) error { + return _Vm.Contract.AssertNotEq7(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmCaller) AssertNotEq8(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq8", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmSession) AssertNotEq8(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertNotEq8(&_Vm.CallOpts, left, right) +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_Vm *VmCallerSession) AssertNotEq8(left []*big.Int, right []*big.Int) error { + return _Vm.Contract.AssertNotEq8(&_Vm.CallOpts, left, right) +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmCaller) AssertNotEq9(opts *bind.CallOpts, left []bool, right []bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEq9", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmSession) AssertNotEq9(left []bool, right []bool, error string) error { + return _Vm.Contract.AssertNotEq9(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEq9(left []bool, right []bool, error string) error { + return _Vm.Contract.AssertNotEq9(&_Vm.CallOpts, left, right, error) +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertNotEqDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEqDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertNotEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertNotEqDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertNotEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertNotEqDecimal(&_Vm.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertNotEqDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEqDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertNotEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertNotEqDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertNotEqDecimal0(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCaller) AssertNotEqDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEqDecimal1", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmSession) AssertNotEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertNotEqDecimal1(&_Vm.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_Vm *VmCallerSession) AssertNotEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _Vm.Contract.AssertNotEqDecimal1(&_Vm.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCaller) AssertNotEqDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertNotEqDecimal2", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmSession) AssertNotEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertNotEqDecimal2(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_Vm *VmCallerSession) AssertNotEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _Vm.Contract.AssertNotEqDecimal2(&_Vm.CallOpts, left, right, decimals, error) +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_Vm *VmCaller) AssertTrue(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertTrue", condition) + + if err != nil { + return err + } + + return err + +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_Vm *VmSession) AssertTrue(condition bool) error { + return _Vm.Contract.AssertTrue(&_Vm.CallOpts, condition) +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_Vm *VmCallerSession) AssertTrue(condition bool) error { + return _Vm.Contract.AssertTrue(&_Vm.CallOpts, condition) +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_Vm *VmCaller) AssertTrue0(opts *bind.CallOpts, condition bool, error string) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assertTrue0", condition, error) + + if err != nil { + return err + } + + return err + +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_Vm *VmSession) AssertTrue0(condition bool, error string) error { + return _Vm.Contract.AssertTrue0(&_Vm.CallOpts, condition, error) +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_Vm *VmCallerSession) AssertTrue0(condition bool, error string) error { + return _Vm.Contract.AssertTrue0(&_Vm.CallOpts, condition, error) +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_Vm *VmCaller) Assume(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "assume", condition) + + if err != nil { + return err + } + + return err + +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_Vm *VmSession) Assume(condition bool) error { + return _Vm.Contract.Assume(&_Vm.CallOpts, condition) +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_Vm *VmCallerSession) Assume(condition bool) error { + return _Vm.Contract.Assume(&_Vm.CallOpts, condition) +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_Vm *VmCaller) ComputeCreate2Address(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "computeCreate2Address", salt, initCodeHash) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_Vm *VmSession) ComputeCreate2Address(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _Vm.Contract.ComputeCreate2Address(&_Vm.CallOpts, salt, initCodeHash) +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_Vm *VmCallerSession) ComputeCreate2Address(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _Vm.Contract.ComputeCreate2Address(&_Vm.CallOpts, salt, initCodeHash) +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_Vm *VmCaller) ComputeCreate2Address0(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "computeCreate2Address0", salt, initCodeHash, deployer) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_Vm *VmSession) ComputeCreate2Address0(salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + return _Vm.Contract.ComputeCreate2Address0(&_Vm.CallOpts, salt, initCodeHash, deployer) +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_Vm *VmCallerSession) ComputeCreate2Address0(salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + return _Vm.Contract.ComputeCreate2Address0(&_Vm.CallOpts, salt, initCodeHash, deployer) +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_Vm *VmCaller) ComputeCreateAddress(opts *bind.CallOpts, deployer common.Address, nonce *big.Int) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "computeCreateAddress", deployer, nonce) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_Vm *VmSession) ComputeCreateAddress(deployer common.Address, nonce *big.Int) (common.Address, error) { + return _Vm.Contract.ComputeCreateAddress(&_Vm.CallOpts, deployer, nonce) +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_Vm *VmCallerSession) ComputeCreateAddress(deployer common.Address, nonce *big.Int) (common.Address, error) { + return _Vm.Contract.ComputeCreateAddress(&_Vm.CallOpts, deployer, nonce) +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmCaller) DeriveKey(opts *bind.CallOpts, mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "deriveKey", mnemonic, derivationPath, index, language) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmSession) DeriveKey(mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + return _Vm.Contract.DeriveKey(&_Vm.CallOpts, mnemonic, derivationPath, index, language) +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmCallerSession) DeriveKey(mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + return _Vm.Contract.DeriveKey(&_Vm.CallOpts, mnemonic, derivationPath, index, language) +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmCaller) DeriveKey0(opts *bind.CallOpts, mnemonic string, index uint32, language string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "deriveKey0", mnemonic, index, language) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmSession) DeriveKey0(mnemonic string, index uint32, language string) (*big.Int, error) { + return _Vm.Contract.DeriveKey0(&_Vm.CallOpts, mnemonic, index, language) +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_Vm *VmCallerSession) DeriveKey0(mnemonic string, index uint32, language string) (*big.Int, error) { + return _Vm.Contract.DeriveKey0(&_Vm.CallOpts, mnemonic, index, language) +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmCaller) DeriveKey1(opts *bind.CallOpts, mnemonic string, index uint32) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "deriveKey1", mnemonic, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmSession) DeriveKey1(mnemonic string, index uint32) (*big.Int, error) { + return _Vm.Contract.DeriveKey1(&_Vm.CallOpts, mnemonic, index) +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmCallerSession) DeriveKey1(mnemonic string, index uint32) (*big.Int, error) { + return _Vm.Contract.DeriveKey1(&_Vm.CallOpts, mnemonic, index) +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmCaller) DeriveKey2(opts *bind.CallOpts, mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "deriveKey2", mnemonic, derivationPath, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmSession) DeriveKey2(mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + return _Vm.Contract.DeriveKey2(&_Vm.CallOpts, mnemonic, derivationPath, index) +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_Vm *VmCallerSession) DeriveKey2(mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + return _Vm.Contract.DeriveKey2(&_Vm.CallOpts, mnemonic, derivationPath, index) +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_Vm *VmCaller) EnsNamehash(opts *bind.CallOpts, name string) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "ensNamehash", name) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_Vm *VmSession) EnsNamehash(name string) ([32]byte, error) { + return _Vm.Contract.EnsNamehash(&_Vm.CallOpts, name) +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_Vm *VmCallerSession) EnsNamehash(name string) ([32]byte, error) { + return _Vm.Contract.EnsNamehash(&_Vm.CallOpts, name) +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_Vm *VmCaller) EnvAddress(opts *bind.CallOpts, name string) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envAddress", name) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_Vm *VmSession) EnvAddress(name string) (common.Address, error) { + return _Vm.Contract.EnvAddress(&_Vm.CallOpts, name) +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_Vm *VmCallerSession) EnvAddress(name string) (common.Address, error) { + return _Vm.Contract.EnvAddress(&_Vm.CallOpts, name) +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_Vm *VmCaller) EnvAddress0(opts *bind.CallOpts, name string, delim string) ([]common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envAddress0", name, delim) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_Vm *VmSession) EnvAddress0(name string, delim string) ([]common.Address, error) { + return _Vm.Contract.EnvAddress0(&_Vm.CallOpts, name, delim) +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_Vm *VmCallerSession) EnvAddress0(name string, delim string) ([]common.Address, error) { + return _Vm.Contract.EnvAddress0(&_Vm.CallOpts, name, delim) +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_Vm *VmCaller) EnvBool(opts *bind.CallOpts, name string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBool", name) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_Vm *VmSession) EnvBool(name string) (bool, error) { + return _Vm.Contract.EnvBool(&_Vm.CallOpts, name) +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_Vm *VmCallerSession) EnvBool(name string) (bool, error) { + return _Vm.Contract.EnvBool(&_Vm.CallOpts, name) +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_Vm *VmCaller) EnvBool0(opts *bind.CallOpts, name string, delim string) ([]bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBool0", name, delim) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_Vm *VmSession) EnvBool0(name string, delim string) ([]bool, error) { + return _Vm.Contract.EnvBool0(&_Vm.CallOpts, name, delim) +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_Vm *VmCallerSession) EnvBool0(name string, delim string) ([]bool, error) { + return _Vm.Contract.EnvBool0(&_Vm.CallOpts, name, delim) +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_Vm *VmCaller) EnvBytes(opts *bind.CallOpts, name string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBytes", name) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_Vm *VmSession) EnvBytes(name string) ([]byte, error) { + return _Vm.Contract.EnvBytes(&_Vm.CallOpts, name) +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_Vm *VmCallerSession) EnvBytes(name string) ([]byte, error) { + return _Vm.Contract.EnvBytes(&_Vm.CallOpts, name) +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_Vm *VmCaller) EnvBytes0(opts *bind.CallOpts, name string, delim string) ([][]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBytes0", name, delim) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_Vm *VmSession) EnvBytes0(name string, delim string) ([][]byte, error) { + return _Vm.Contract.EnvBytes0(&_Vm.CallOpts, name, delim) +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_Vm *VmCallerSession) EnvBytes0(name string, delim string) ([][]byte, error) { + return _Vm.Contract.EnvBytes0(&_Vm.CallOpts, name, delim) +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_Vm *VmCaller) EnvBytes32(opts *bind.CallOpts, name string, delim string) ([][32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBytes32", name, delim) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_Vm *VmSession) EnvBytes32(name string, delim string) ([][32]byte, error) { + return _Vm.Contract.EnvBytes32(&_Vm.CallOpts, name, delim) +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_Vm *VmCallerSession) EnvBytes32(name string, delim string) ([][32]byte, error) { + return _Vm.Contract.EnvBytes32(&_Vm.CallOpts, name, delim) +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_Vm *VmCaller) EnvBytes320(opts *bind.CallOpts, name string) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envBytes320", name) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_Vm *VmSession) EnvBytes320(name string) ([32]byte, error) { + return _Vm.Contract.EnvBytes320(&_Vm.CallOpts, name) +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_Vm *VmCallerSession) EnvBytes320(name string) ([32]byte, error) { + return _Vm.Contract.EnvBytes320(&_Vm.CallOpts, name) +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_Vm *VmCaller) EnvExists(opts *bind.CallOpts, name string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envExists", name) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_Vm *VmSession) EnvExists(name string) (bool, error) { + return _Vm.Contract.EnvExists(&_Vm.CallOpts, name) +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_Vm *VmCallerSession) EnvExists(name string) (bool, error) { + return _Vm.Contract.EnvExists(&_Vm.CallOpts, name) +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_Vm *VmCaller) EnvInt(opts *bind.CallOpts, name string, delim string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envInt", name, delim) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_Vm *VmSession) EnvInt(name string, delim string) ([]*big.Int, error) { + return _Vm.Contract.EnvInt(&_Vm.CallOpts, name, delim) +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_Vm *VmCallerSession) EnvInt(name string, delim string) ([]*big.Int, error) { + return _Vm.Contract.EnvInt(&_Vm.CallOpts, name, delim) +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_Vm *VmCaller) EnvInt0(opts *bind.CallOpts, name string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envInt0", name) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_Vm *VmSession) EnvInt0(name string) (*big.Int, error) { + return _Vm.Contract.EnvInt0(&_Vm.CallOpts, name) +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_Vm *VmCallerSession) EnvInt0(name string) (*big.Int, error) { + return _Vm.Contract.EnvInt0(&_Vm.CallOpts, name) +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_Vm *VmCaller) EnvOr(opts *bind.CallOpts, name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr", name, delim, defaultValue) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_Vm *VmSession) EnvOr(name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + return _Vm.Contract.EnvOr(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_Vm *VmCallerSession) EnvOr(name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + return _Vm.Contract.EnvOr(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_Vm *VmCaller) EnvOr0(opts *bind.CallOpts, name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr0", name, delim, defaultValue) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_Vm *VmSession) EnvOr0(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _Vm.Contract.EnvOr0(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_Vm *VmCallerSession) EnvOr0(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _Vm.Contract.EnvOr0(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_Vm *VmCaller) EnvOr1(opts *bind.CallOpts, name string, defaultValue bool) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr1", name, defaultValue) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_Vm *VmSession) EnvOr1(name string, defaultValue bool) (bool, error) { + return _Vm.Contract.EnvOr1(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_Vm *VmCallerSession) EnvOr1(name string, defaultValue bool) (bool, error) { + return _Vm.Contract.EnvOr1(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_Vm *VmCaller) EnvOr10(opts *bind.CallOpts, name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr10", name, delim, defaultValue) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_Vm *VmSession) EnvOr10(name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + return _Vm.Contract.EnvOr10(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_Vm *VmCallerSession) EnvOr10(name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + return _Vm.Contract.EnvOr10(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_Vm *VmCaller) EnvOr11(opts *bind.CallOpts, name string, defaultValue string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr11", name, defaultValue) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_Vm *VmSession) EnvOr11(name string, defaultValue string) (string, error) { + return _Vm.Contract.EnvOr11(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_Vm *VmCallerSession) EnvOr11(name string, defaultValue string) (string, error) { + return _Vm.Contract.EnvOr11(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_Vm *VmCaller) EnvOr12(opts *bind.CallOpts, name string, delim string, defaultValue []bool) ([]bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr12", name, delim, defaultValue) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_Vm *VmSession) EnvOr12(name string, delim string, defaultValue []bool) ([]bool, error) { + return _Vm.Contract.EnvOr12(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_Vm *VmCallerSession) EnvOr12(name string, delim string, defaultValue []bool) ([]bool, error) { + return _Vm.Contract.EnvOr12(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_Vm *VmCaller) EnvOr2(opts *bind.CallOpts, name string, defaultValue common.Address) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr2", name, defaultValue) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_Vm *VmSession) EnvOr2(name string, defaultValue common.Address) (common.Address, error) { + return _Vm.Contract.EnvOr2(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_Vm *VmCallerSession) EnvOr2(name string, defaultValue common.Address) (common.Address, error) { + return _Vm.Contract.EnvOr2(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_Vm *VmCaller) EnvOr3(opts *bind.CallOpts, name string, defaultValue *big.Int) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr3", name, defaultValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_Vm *VmSession) EnvOr3(name string, defaultValue *big.Int) (*big.Int, error) { + return _Vm.Contract.EnvOr3(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_Vm *VmCallerSession) EnvOr3(name string, defaultValue *big.Int) (*big.Int, error) { + return _Vm.Contract.EnvOr3(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_Vm *VmCaller) EnvOr4(opts *bind.CallOpts, name string, delim string, defaultValue [][]byte) ([][]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr4", name, delim, defaultValue) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_Vm *VmSession) EnvOr4(name string, delim string, defaultValue [][]byte) ([][]byte, error) { + return _Vm.Contract.EnvOr4(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_Vm *VmCallerSession) EnvOr4(name string, delim string, defaultValue [][]byte) ([][]byte, error) { + return _Vm.Contract.EnvOr4(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_Vm *VmCaller) EnvOr5(opts *bind.CallOpts, name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr5", name, delim, defaultValue) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_Vm *VmSession) EnvOr5(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _Vm.Contract.EnvOr5(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_Vm *VmCallerSession) EnvOr5(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _Vm.Contract.EnvOr5(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_Vm *VmCaller) EnvOr6(opts *bind.CallOpts, name string, delim string, defaultValue []string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr6", name, delim, defaultValue) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_Vm *VmSession) EnvOr6(name string, delim string, defaultValue []string) ([]string, error) { + return _Vm.Contract.EnvOr6(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_Vm *VmCallerSession) EnvOr6(name string, delim string, defaultValue []string) ([]string, error) { + return _Vm.Contract.EnvOr6(&_Vm.CallOpts, name, delim, defaultValue) +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_Vm *VmCaller) EnvOr7(opts *bind.CallOpts, name string, defaultValue []byte) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr7", name, defaultValue) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_Vm *VmSession) EnvOr7(name string, defaultValue []byte) ([]byte, error) { + return _Vm.Contract.EnvOr7(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_Vm *VmCallerSession) EnvOr7(name string, defaultValue []byte) ([]byte, error) { + return _Vm.Contract.EnvOr7(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_Vm *VmCaller) EnvOr8(opts *bind.CallOpts, name string, defaultValue [32]byte) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr8", name, defaultValue) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_Vm *VmSession) EnvOr8(name string, defaultValue [32]byte) ([32]byte, error) { + return _Vm.Contract.EnvOr8(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_Vm *VmCallerSession) EnvOr8(name string, defaultValue [32]byte) ([32]byte, error) { + return _Vm.Contract.EnvOr8(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_Vm *VmCaller) EnvOr9(opts *bind.CallOpts, name string, defaultValue *big.Int) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envOr9", name, defaultValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_Vm *VmSession) EnvOr9(name string, defaultValue *big.Int) (*big.Int, error) { + return _Vm.Contract.EnvOr9(&_Vm.CallOpts, name, defaultValue) +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_Vm *VmCallerSession) EnvOr9(name string, defaultValue *big.Int) (*big.Int, error) { + return _Vm.Contract.EnvOr9(&_Vm.CallOpts, name, defaultValue) +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_Vm *VmCaller) EnvString(opts *bind.CallOpts, name string, delim string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envString", name, delim) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_Vm *VmSession) EnvString(name string, delim string) ([]string, error) { + return _Vm.Contract.EnvString(&_Vm.CallOpts, name, delim) +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_Vm *VmCallerSession) EnvString(name string, delim string) ([]string, error) { + return _Vm.Contract.EnvString(&_Vm.CallOpts, name, delim) +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_Vm *VmCaller) EnvString0(opts *bind.CallOpts, name string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envString0", name) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_Vm *VmSession) EnvString0(name string) (string, error) { + return _Vm.Contract.EnvString0(&_Vm.CallOpts, name) +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_Vm *VmCallerSession) EnvString0(name string) (string, error) { + return _Vm.Contract.EnvString0(&_Vm.CallOpts, name) +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_Vm *VmCaller) EnvUint(opts *bind.CallOpts, name string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envUint", name) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_Vm *VmSession) EnvUint(name string) (*big.Int, error) { + return _Vm.Contract.EnvUint(&_Vm.CallOpts, name) +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_Vm *VmCallerSession) EnvUint(name string) (*big.Int, error) { + return _Vm.Contract.EnvUint(&_Vm.CallOpts, name) +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_Vm *VmCaller) EnvUint0(opts *bind.CallOpts, name string, delim string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "envUint0", name, delim) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_Vm *VmSession) EnvUint0(name string, delim string) ([]*big.Int, error) { + return _Vm.Contract.EnvUint0(&_Vm.CallOpts, name, delim) +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_Vm *VmCallerSession) EnvUint0(name string, delim string) ([]*big.Int, error) { + return _Vm.Contract.EnvUint0(&_Vm.CallOpts, name, delim) +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_Vm *VmCaller) FsMetadata(opts *bind.CallOpts, path string) (VmSafeFsMetadata, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "fsMetadata", path) + + if err != nil { + return *new(VmSafeFsMetadata), err + } + + out0 := *abi.ConvertType(out[0], new(VmSafeFsMetadata)).(*VmSafeFsMetadata) + + return out0, err + +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_Vm *VmSession) FsMetadata(path string) (VmSafeFsMetadata, error) { + return _Vm.Contract.FsMetadata(&_Vm.CallOpts, path) +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_Vm *VmCallerSession) FsMetadata(path string) (VmSafeFsMetadata, error) { + return _Vm.Contract.FsMetadata(&_Vm.CallOpts, path) +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_Vm *VmCaller) GetBlobBaseFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getBlobBaseFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_Vm *VmSession) GetBlobBaseFee() (*big.Int, error) { + return _Vm.Contract.GetBlobBaseFee(&_Vm.CallOpts) +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_Vm *VmCallerSession) GetBlobBaseFee() (*big.Int, error) { + return _Vm.Contract.GetBlobBaseFee(&_Vm.CallOpts) +} + +// GetBlobhashes is a free data retrieval call binding the contract method 0xf56ff18b. +// +// Solidity: function getBlobhashes() view returns(bytes32[] hashes) +func (_Vm *VmCaller) GetBlobhashes(opts *bind.CallOpts) ([][32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getBlobhashes") + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// GetBlobhashes is a free data retrieval call binding the contract method 0xf56ff18b. +// +// Solidity: function getBlobhashes() view returns(bytes32[] hashes) +func (_Vm *VmSession) GetBlobhashes() ([][32]byte, error) { + return _Vm.Contract.GetBlobhashes(&_Vm.CallOpts) +} + +// GetBlobhashes is a free data retrieval call binding the contract method 0xf56ff18b. +// +// Solidity: function getBlobhashes() view returns(bytes32[] hashes) +func (_Vm *VmCallerSession) GetBlobhashes() ([][32]byte, error) { + return _Vm.Contract.GetBlobhashes(&_Vm.CallOpts) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_Vm *VmCaller) GetBlockNumber(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getBlockNumber") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_Vm *VmSession) GetBlockNumber() (*big.Int, error) { + return _Vm.Contract.GetBlockNumber(&_Vm.CallOpts) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_Vm *VmCallerSession) GetBlockNumber() (*big.Int, error) { + return _Vm.Contract.GetBlockNumber(&_Vm.CallOpts) +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_Vm *VmCaller) GetBlockTimestamp(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getBlockTimestamp") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_Vm *VmSession) GetBlockTimestamp() (*big.Int, error) { + return _Vm.Contract.GetBlockTimestamp(&_Vm.CallOpts) +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_Vm *VmCallerSession) GetBlockTimestamp() (*big.Int, error) { + return _Vm.Contract.GetBlockTimestamp(&_Vm.CallOpts) +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_Vm *VmCaller) GetCode(opts *bind.CallOpts, artifactPath string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getCode", artifactPath) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_Vm *VmSession) GetCode(artifactPath string) ([]byte, error) { + return _Vm.Contract.GetCode(&_Vm.CallOpts, artifactPath) +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_Vm *VmCallerSession) GetCode(artifactPath string) ([]byte, error) { + return _Vm.Contract.GetCode(&_Vm.CallOpts, artifactPath) +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_Vm *VmCaller) GetDeployedCode(opts *bind.CallOpts, artifactPath string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getDeployedCode", artifactPath) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_Vm *VmSession) GetDeployedCode(artifactPath string) ([]byte, error) { + return _Vm.Contract.GetDeployedCode(&_Vm.CallOpts, artifactPath) +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_Vm *VmCallerSession) GetDeployedCode(artifactPath string) ([]byte, error) { + return _Vm.Contract.GetDeployedCode(&_Vm.CallOpts, artifactPath) +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_Vm *VmCaller) GetLabel(opts *bind.CallOpts, account common.Address) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getLabel", account) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_Vm *VmSession) GetLabel(account common.Address) (string, error) { + return _Vm.Contract.GetLabel(&_Vm.CallOpts, account) +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_Vm *VmCallerSession) GetLabel(account common.Address) (string, error) { + return _Vm.Contract.GetLabel(&_Vm.CallOpts, account) +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_Vm *VmCaller) GetNonce(opts *bind.CallOpts, account common.Address) (uint64, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "getNonce", account) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_Vm *VmSession) GetNonce(account common.Address) (uint64, error) { + return _Vm.Contract.GetNonce(&_Vm.CallOpts, account) +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_Vm *VmCallerSession) GetNonce(account common.Address) (uint64, error) { + return _Vm.Contract.GetNonce(&_Vm.CallOpts, account) +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_Vm *VmCaller) IndexOf(opts *bind.CallOpts, input string, key string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "indexOf", input, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_Vm *VmSession) IndexOf(input string, key string) (*big.Int, error) { + return _Vm.Contract.IndexOf(&_Vm.CallOpts, input, key) +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_Vm *VmCallerSession) IndexOf(input string, key string) (*big.Int, error) { + return _Vm.Contract.IndexOf(&_Vm.CallOpts, input, key) +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_Vm *VmCaller) IsContext(opts *bind.CallOpts, context uint8) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "isContext", context) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_Vm *VmSession) IsContext(context uint8) (bool, error) { + return _Vm.Contract.IsContext(&_Vm.CallOpts, context) +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_Vm *VmCallerSession) IsContext(context uint8) (bool, error) { + return _Vm.Contract.IsContext(&_Vm.CallOpts, context) +} + +// IsPersistent is a free data retrieval call binding the contract method 0xd92d8efd. +// +// Solidity: function isPersistent(address account) view returns(bool persistent) +func (_Vm *VmCaller) IsPersistent(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "isPersistent", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPersistent is a free data retrieval call binding the contract method 0xd92d8efd. +// +// Solidity: function isPersistent(address account) view returns(bool persistent) +func (_Vm *VmSession) IsPersistent(account common.Address) (bool, error) { + return _Vm.Contract.IsPersistent(&_Vm.CallOpts, account) +} + +// IsPersistent is a free data retrieval call binding the contract method 0xd92d8efd. +// +// Solidity: function isPersistent(address account) view returns(bool persistent) +func (_Vm *VmCallerSession) IsPersistent(account common.Address) (bool, error) { + return _Vm.Contract.IsPersistent(&_Vm.CallOpts, account) +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_Vm *VmCaller) KeyExists(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "keyExists", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_Vm *VmSession) KeyExists(json string, key string) (bool, error) { + return _Vm.Contract.KeyExists(&_Vm.CallOpts, json, key) +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_Vm *VmCallerSession) KeyExists(json string, key string) (bool, error) { + return _Vm.Contract.KeyExists(&_Vm.CallOpts, json, key) +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_Vm *VmCaller) KeyExistsJson(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "keyExistsJson", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_Vm *VmSession) KeyExistsJson(json string, key string) (bool, error) { + return _Vm.Contract.KeyExistsJson(&_Vm.CallOpts, json, key) +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_Vm *VmCallerSession) KeyExistsJson(json string, key string) (bool, error) { + return _Vm.Contract.KeyExistsJson(&_Vm.CallOpts, json, key) +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_Vm *VmCaller) KeyExistsToml(opts *bind.CallOpts, toml string, key string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "keyExistsToml", toml, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_Vm *VmSession) KeyExistsToml(toml string, key string) (bool, error) { + return _Vm.Contract.KeyExistsToml(&_Vm.CallOpts, toml, key) +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_Vm *VmCallerSession) KeyExistsToml(toml string, key string) (bool, error) { + return _Vm.Contract.KeyExistsToml(&_Vm.CallOpts, toml, key) +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_Vm *VmCaller) LastCallGas(opts *bind.CallOpts) (VmSafeGas, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "lastCallGas") + + if err != nil { + return *new(VmSafeGas), err + } + + out0 := *abi.ConvertType(out[0], new(VmSafeGas)).(*VmSafeGas) + + return out0, err + +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_Vm *VmSession) LastCallGas() (VmSafeGas, error) { + return _Vm.Contract.LastCallGas(&_Vm.CallOpts) +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_Vm *VmCallerSession) LastCallGas() (VmSafeGas, error) { + return _Vm.Contract.LastCallGas(&_Vm.CallOpts) +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_Vm *VmCaller) Load(opts *bind.CallOpts, target common.Address, slot [32]byte) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "load", target, slot) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_Vm *VmSession) Load(target common.Address, slot [32]byte) ([32]byte, error) { + return _Vm.Contract.Load(&_Vm.CallOpts, target, slot) +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_Vm *VmCallerSession) Load(target common.Address, slot [32]byte) ([32]byte, error) { + return _Vm.Contract.Load(&_Vm.CallOpts, target, slot) +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_Vm *VmCaller) ParseAddress(opts *bind.CallOpts, stringifiedValue string) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseAddress", stringifiedValue) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_Vm *VmSession) ParseAddress(stringifiedValue string) (common.Address, error) { + return _Vm.Contract.ParseAddress(&_Vm.CallOpts, stringifiedValue) +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_Vm *VmCallerSession) ParseAddress(stringifiedValue string) (common.Address, error) { + return _Vm.Contract.ParseAddress(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_Vm *VmCaller) ParseBool(opts *bind.CallOpts, stringifiedValue string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseBool", stringifiedValue) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_Vm *VmSession) ParseBool(stringifiedValue string) (bool, error) { + return _Vm.Contract.ParseBool(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_Vm *VmCallerSession) ParseBool(stringifiedValue string) (bool, error) { + return _Vm.Contract.ParseBool(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_Vm *VmCaller) ParseBytes(opts *bind.CallOpts, stringifiedValue string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseBytes", stringifiedValue) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_Vm *VmSession) ParseBytes(stringifiedValue string) ([]byte, error) { + return _Vm.Contract.ParseBytes(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_Vm *VmCallerSession) ParseBytes(stringifiedValue string) ([]byte, error) { + return _Vm.Contract.ParseBytes(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_Vm *VmCaller) ParseBytes32(opts *bind.CallOpts, stringifiedValue string) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseBytes32", stringifiedValue) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_Vm *VmSession) ParseBytes32(stringifiedValue string) ([32]byte, error) { + return _Vm.Contract.ParseBytes32(&_Vm.CallOpts, stringifiedValue) +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_Vm *VmCallerSession) ParseBytes32(stringifiedValue string) ([32]byte, error) { + return _Vm.Contract.ParseBytes32(&_Vm.CallOpts, stringifiedValue) +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_Vm *VmCaller) ParseInt(opts *bind.CallOpts, stringifiedValue string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseInt", stringifiedValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_Vm *VmSession) ParseInt(stringifiedValue string) (*big.Int, error) { + return _Vm.Contract.ParseInt(&_Vm.CallOpts, stringifiedValue) +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_Vm *VmCallerSession) ParseInt(stringifiedValue string) (*big.Int, error) { + return _Vm.Contract.ParseInt(&_Vm.CallOpts, stringifiedValue) +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_Vm *VmCaller) ParseJson(opts *bind.CallOpts, json string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJson", json) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_Vm *VmSession) ParseJson(json string) ([]byte, error) { + return _Vm.Contract.ParseJson(&_Vm.CallOpts, json) +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_Vm *VmCallerSession) ParseJson(json string) ([]byte, error) { + return _Vm.Contract.ParseJson(&_Vm.CallOpts, json) +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmCaller) ParseJson0(opts *bind.CallOpts, json string, key string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJson0", json, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmSession) ParseJson0(json string, key string) ([]byte, error) { + return _Vm.Contract.ParseJson0(&_Vm.CallOpts, json, key) +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmCallerSession) ParseJson0(json string, key string) ([]byte, error) { + return _Vm.Contract.ParseJson0(&_Vm.CallOpts, json, key) +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_Vm *VmCaller) ParseJsonAddress(opts *bind.CallOpts, json string, key string) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonAddress", json, key) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_Vm *VmSession) ParseJsonAddress(json string, key string) (common.Address, error) { + return _Vm.Contract.ParseJsonAddress(&_Vm.CallOpts, json, key) +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_Vm *VmCallerSession) ParseJsonAddress(json string, key string) (common.Address, error) { + return _Vm.Contract.ParseJsonAddress(&_Vm.CallOpts, json, key) +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_Vm *VmCaller) ParseJsonAddressArray(opts *bind.CallOpts, json string, key string) ([]common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonAddressArray", json, key) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_Vm *VmSession) ParseJsonAddressArray(json string, key string) ([]common.Address, error) { + return _Vm.Contract.ParseJsonAddressArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_Vm *VmCallerSession) ParseJsonAddressArray(json string, key string) ([]common.Address, error) { + return _Vm.Contract.ParseJsonAddressArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_Vm *VmCaller) ParseJsonBool(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBool", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_Vm *VmSession) ParseJsonBool(json string, key string) (bool, error) { + return _Vm.Contract.ParseJsonBool(&_Vm.CallOpts, json, key) +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_Vm *VmCallerSession) ParseJsonBool(json string, key string) (bool, error) { + return _Vm.Contract.ParseJsonBool(&_Vm.CallOpts, json, key) +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_Vm *VmCaller) ParseJsonBoolArray(opts *bind.CallOpts, json string, key string) ([]bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBoolArray", json, key) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_Vm *VmSession) ParseJsonBoolArray(json string, key string) ([]bool, error) { + return _Vm.Contract.ParseJsonBoolArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_Vm *VmCallerSession) ParseJsonBoolArray(json string, key string) ([]bool, error) { + return _Vm.Contract.ParseJsonBoolArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_Vm *VmCaller) ParseJsonBytes(opts *bind.CallOpts, json string, key string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBytes", json, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_Vm *VmSession) ParseJsonBytes(json string, key string) ([]byte, error) { + return _Vm.Contract.ParseJsonBytes(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_Vm *VmCallerSession) ParseJsonBytes(json string, key string) ([]byte, error) { + return _Vm.Contract.ParseJsonBytes(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_Vm *VmCaller) ParseJsonBytes32(opts *bind.CallOpts, json string, key string) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBytes32", json, key) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_Vm *VmSession) ParseJsonBytes32(json string, key string) ([32]byte, error) { + return _Vm.Contract.ParseJsonBytes32(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_Vm *VmCallerSession) ParseJsonBytes32(json string, key string) ([32]byte, error) { + return _Vm.Contract.ParseJsonBytes32(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_Vm *VmCaller) ParseJsonBytes32Array(opts *bind.CallOpts, json string, key string) ([][32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBytes32Array", json, key) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_Vm *VmSession) ParseJsonBytes32Array(json string, key string) ([][32]byte, error) { + return _Vm.Contract.ParseJsonBytes32Array(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_Vm *VmCallerSession) ParseJsonBytes32Array(json string, key string) ([][32]byte, error) { + return _Vm.Contract.ParseJsonBytes32Array(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_Vm *VmCaller) ParseJsonBytesArray(opts *bind.CallOpts, json string, key string) ([][]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonBytesArray", json, key) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_Vm *VmSession) ParseJsonBytesArray(json string, key string) ([][]byte, error) { + return _Vm.Contract.ParseJsonBytesArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_Vm *VmCallerSession) ParseJsonBytesArray(json string, key string) ([][]byte, error) { + return _Vm.Contract.ParseJsonBytesArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_Vm *VmCaller) ParseJsonInt(opts *bind.CallOpts, json string, key string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonInt", json, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_Vm *VmSession) ParseJsonInt(json string, key string) (*big.Int, error) { + return _Vm.Contract.ParseJsonInt(&_Vm.CallOpts, json, key) +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_Vm *VmCallerSession) ParseJsonInt(json string, key string) (*big.Int, error) { + return _Vm.Contract.ParseJsonInt(&_Vm.CallOpts, json, key) +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_Vm *VmCaller) ParseJsonIntArray(opts *bind.CallOpts, json string, key string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonIntArray", json, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_Vm *VmSession) ParseJsonIntArray(json string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseJsonIntArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_Vm *VmCallerSession) ParseJsonIntArray(json string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseJsonIntArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_Vm *VmCaller) ParseJsonKeys(opts *bind.CallOpts, json string, key string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonKeys", json, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_Vm *VmSession) ParseJsonKeys(json string, key string) ([]string, error) { + return _Vm.Contract.ParseJsonKeys(&_Vm.CallOpts, json, key) +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_Vm *VmCallerSession) ParseJsonKeys(json string, key string) ([]string, error) { + return _Vm.Contract.ParseJsonKeys(&_Vm.CallOpts, json, key) +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_Vm *VmCaller) ParseJsonString(opts *bind.CallOpts, json string, key string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonString", json, key) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_Vm *VmSession) ParseJsonString(json string, key string) (string, error) { + return _Vm.Contract.ParseJsonString(&_Vm.CallOpts, json, key) +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_Vm *VmCallerSession) ParseJsonString(json string, key string) (string, error) { + return _Vm.Contract.ParseJsonString(&_Vm.CallOpts, json, key) +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_Vm *VmCaller) ParseJsonStringArray(opts *bind.CallOpts, json string, key string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonStringArray", json, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_Vm *VmSession) ParseJsonStringArray(json string, key string) ([]string, error) { + return _Vm.Contract.ParseJsonStringArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_Vm *VmCallerSession) ParseJsonStringArray(json string, key string) ([]string, error) { + return _Vm.Contract.ParseJsonStringArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_Vm *VmCaller) ParseJsonType(opts *bind.CallOpts, json string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonType", json, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_Vm *VmSession) ParseJsonType(json string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonType(&_Vm.CallOpts, json, typeDescription) +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_Vm *VmCallerSession) ParseJsonType(json string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonType(&_Vm.CallOpts, json, typeDescription) +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmCaller) ParseJsonType0(opts *bind.CallOpts, json string, key string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonType0", json, key, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmSession) ParseJsonType0(json string, key string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonType0(&_Vm.CallOpts, json, key, typeDescription) +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmCallerSession) ParseJsonType0(json string, key string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonType0(&_Vm.CallOpts, json, key, typeDescription) +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmCaller) ParseJsonTypeArray(opts *bind.CallOpts, json string, key string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonTypeArray", json, key, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmSession) ParseJsonTypeArray(json string, key string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonTypeArray(&_Vm.CallOpts, json, key, typeDescription) +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_Vm *VmCallerSession) ParseJsonTypeArray(json string, key string, typeDescription string) ([]byte, error) { + return _Vm.Contract.ParseJsonTypeArray(&_Vm.CallOpts, json, key, typeDescription) +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_Vm *VmCaller) ParseJsonUint(opts *bind.CallOpts, json string, key string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonUint", json, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_Vm *VmSession) ParseJsonUint(json string, key string) (*big.Int, error) { + return _Vm.Contract.ParseJsonUint(&_Vm.CallOpts, json, key) +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_Vm *VmCallerSession) ParseJsonUint(json string, key string) (*big.Int, error) { + return _Vm.Contract.ParseJsonUint(&_Vm.CallOpts, json, key) +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_Vm *VmCaller) ParseJsonUintArray(opts *bind.CallOpts, json string, key string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseJsonUintArray", json, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_Vm *VmSession) ParseJsonUintArray(json string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseJsonUintArray(&_Vm.CallOpts, json, key) +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_Vm *VmCallerSession) ParseJsonUintArray(json string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseJsonUintArray(&_Vm.CallOpts, json, key) +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmCaller) ParseToml(opts *bind.CallOpts, toml string, key string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseToml", toml, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmSession) ParseToml(toml string, key string) ([]byte, error) { + return _Vm.Contract.ParseToml(&_Vm.CallOpts, toml, key) +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_Vm *VmCallerSession) ParseToml(toml string, key string) ([]byte, error) { + return _Vm.Contract.ParseToml(&_Vm.CallOpts, toml, key) +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_Vm *VmCaller) ParseToml0(opts *bind.CallOpts, toml string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseToml0", toml) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_Vm *VmSession) ParseToml0(toml string) ([]byte, error) { + return _Vm.Contract.ParseToml0(&_Vm.CallOpts, toml) +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_Vm *VmCallerSession) ParseToml0(toml string) ([]byte, error) { + return _Vm.Contract.ParseToml0(&_Vm.CallOpts, toml) +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_Vm *VmCaller) ParseTomlAddress(opts *bind.CallOpts, toml string, key string) (common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlAddress", toml, key) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_Vm *VmSession) ParseTomlAddress(toml string, key string) (common.Address, error) { + return _Vm.Contract.ParseTomlAddress(&_Vm.CallOpts, toml, key) +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_Vm *VmCallerSession) ParseTomlAddress(toml string, key string) (common.Address, error) { + return _Vm.Contract.ParseTomlAddress(&_Vm.CallOpts, toml, key) +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_Vm *VmCaller) ParseTomlAddressArray(opts *bind.CallOpts, toml string, key string) ([]common.Address, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlAddressArray", toml, key) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_Vm *VmSession) ParseTomlAddressArray(toml string, key string) ([]common.Address, error) { + return _Vm.Contract.ParseTomlAddressArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_Vm *VmCallerSession) ParseTomlAddressArray(toml string, key string) ([]common.Address, error) { + return _Vm.Contract.ParseTomlAddressArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_Vm *VmCaller) ParseTomlBool(opts *bind.CallOpts, toml string, key string) (bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBool", toml, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_Vm *VmSession) ParseTomlBool(toml string, key string) (bool, error) { + return _Vm.Contract.ParseTomlBool(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_Vm *VmCallerSession) ParseTomlBool(toml string, key string) (bool, error) { + return _Vm.Contract.ParseTomlBool(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_Vm *VmCaller) ParseTomlBoolArray(opts *bind.CallOpts, toml string, key string) ([]bool, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBoolArray", toml, key) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_Vm *VmSession) ParseTomlBoolArray(toml string, key string) ([]bool, error) { + return _Vm.Contract.ParseTomlBoolArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_Vm *VmCallerSession) ParseTomlBoolArray(toml string, key string) ([]bool, error) { + return _Vm.Contract.ParseTomlBoolArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_Vm *VmCaller) ParseTomlBytes(opts *bind.CallOpts, toml string, key string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBytes", toml, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_Vm *VmSession) ParseTomlBytes(toml string, key string) ([]byte, error) { + return _Vm.Contract.ParseTomlBytes(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_Vm *VmCallerSession) ParseTomlBytes(toml string, key string) ([]byte, error) { + return _Vm.Contract.ParseTomlBytes(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_Vm *VmCaller) ParseTomlBytes32(opts *bind.CallOpts, toml string, key string) ([32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBytes32", toml, key) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_Vm *VmSession) ParseTomlBytes32(toml string, key string) ([32]byte, error) { + return _Vm.Contract.ParseTomlBytes32(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_Vm *VmCallerSession) ParseTomlBytes32(toml string, key string) ([32]byte, error) { + return _Vm.Contract.ParseTomlBytes32(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_Vm *VmCaller) ParseTomlBytes32Array(opts *bind.CallOpts, toml string, key string) ([][32]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBytes32Array", toml, key) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_Vm *VmSession) ParseTomlBytes32Array(toml string, key string) ([][32]byte, error) { + return _Vm.Contract.ParseTomlBytes32Array(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_Vm *VmCallerSession) ParseTomlBytes32Array(toml string, key string) ([][32]byte, error) { + return _Vm.Contract.ParseTomlBytes32Array(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_Vm *VmCaller) ParseTomlBytesArray(opts *bind.CallOpts, toml string, key string) ([][]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlBytesArray", toml, key) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_Vm *VmSession) ParseTomlBytesArray(toml string, key string) ([][]byte, error) { + return _Vm.Contract.ParseTomlBytesArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_Vm *VmCallerSession) ParseTomlBytesArray(toml string, key string) ([][]byte, error) { + return _Vm.Contract.ParseTomlBytesArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_Vm *VmCaller) ParseTomlInt(opts *bind.CallOpts, toml string, key string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlInt", toml, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_Vm *VmSession) ParseTomlInt(toml string, key string) (*big.Int, error) { + return _Vm.Contract.ParseTomlInt(&_Vm.CallOpts, toml, key) +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_Vm *VmCallerSession) ParseTomlInt(toml string, key string) (*big.Int, error) { + return _Vm.Contract.ParseTomlInt(&_Vm.CallOpts, toml, key) +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_Vm *VmCaller) ParseTomlIntArray(opts *bind.CallOpts, toml string, key string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlIntArray", toml, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_Vm *VmSession) ParseTomlIntArray(toml string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseTomlIntArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_Vm *VmCallerSession) ParseTomlIntArray(toml string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseTomlIntArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_Vm *VmCaller) ParseTomlKeys(opts *bind.CallOpts, toml string, key string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlKeys", toml, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_Vm *VmSession) ParseTomlKeys(toml string, key string) ([]string, error) { + return _Vm.Contract.ParseTomlKeys(&_Vm.CallOpts, toml, key) +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_Vm *VmCallerSession) ParseTomlKeys(toml string, key string) ([]string, error) { + return _Vm.Contract.ParseTomlKeys(&_Vm.CallOpts, toml, key) +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_Vm *VmCaller) ParseTomlString(opts *bind.CallOpts, toml string, key string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlString", toml, key) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_Vm *VmSession) ParseTomlString(toml string, key string) (string, error) { + return _Vm.Contract.ParseTomlString(&_Vm.CallOpts, toml, key) +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_Vm *VmCallerSession) ParseTomlString(toml string, key string) (string, error) { + return _Vm.Contract.ParseTomlString(&_Vm.CallOpts, toml, key) +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_Vm *VmCaller) ParseTomlStringArray(opts *bind.CallOpts, toml string, key string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlStringArray", toml, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_Vm *VmSession) ParseTomlStringArray(toml string, key string) ([]string, error) { + return _Vm.Contract.ParseTomlStringArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_Vm *VmCallerSession) ParseTomlStringArray(toml string, key string) ([]string, error) { + return _Vm.Contract.ParseTomlStringArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_Vm *VmCaller) ParseTomlUint(opts *bind.CallOpts, toml string, key string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlUint", toml, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_Vm *VmSession) ParseTomlUint(toml string, key string) (*big.Int, error) { + return _Vm.Contract.ParseTomlUint(&_Vm.CallOpts, toml, key) +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_Vm *VmCallerSession) ParseTomlUint(toml string, key string) (*big.Int, error) { + return _Vm.Contract.ParseTomlUint(&_Vm.CallOpts, toml, key) +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_Vm *VmCaller) ParseTomlUintArray(opts *bind.CallOpts, toml string, key string) ([]*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseTomlUintArray", toml, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_Vm *VmSession) ParseTomlUintArray(toml string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseTomlUintArray(&_Vm.CallOpts, toml, key) +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_Vm *VmCallerSession) ParseTomlUintArray(toml string, key string) ([]*big.Int, error) { + return _Vm.Contract.ParseTomlUintArray(&_Vm.CallOpts, toml, key) +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_Vm *VmCaller) ParseUint(opts *bind.CallOpts, stringifiedValue string) (*big.Int, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "parseUint", stringifiedValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_Vm *VmSession) ParseUint(stringifiedValue string) (*big.Int, error) { + return _Vm.Contract.ParseUint(&_Vm.CallOpts, stringifiedValue) +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_Vm *VmCallerSession) ParseUint(stringifiedValue string) (*big.Int, error) { + return _Vm.Contract.ParseUint(&_Vm.CallOpts, stringifiedValue) +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_Vm *VmCaller) ProjectRoot(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "projectRoot") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_Vm *VmSession) ProjectRoot() (string, error) { + return _Vm.Contract.ProjectRoot(&_Vm.CallOpts) +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_Vm *VmCallerSession) ProjectRoot() (string, error) { + return _Vm.Contract.ProjectRoot(&_Vm.CallOpts) +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCaller) ReadDir(opts *bind.CallOpts, path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readDir", path, maxDepth) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmSession) ReadDir(path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir(&_Vm.CallOpts, path, maxDepth) +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCallerSession) ReadDir(path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir(&_Vm.CallOpts, path, maxDepth) +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCaller) ReadDir0(opts *bind.CallOpts, path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readDir0", path, maxDepth, followLinks) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmSession) ReadDir0(path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir0(&_Vm.CallOpts, path, maxDepth, followLinks) +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCallerSession) ReadDir0(path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir0(&_Vm.CallOpts, path, maxDepth, followLinks) +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCaller) ReadDir1(opts *bind.CallOpts, path string) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readDir1", path) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmSession) ReadDir1(path string) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir1(&_Vm.CallOpts, path) +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_Vm *VmCallerSession) ReadDir1(path string) ([]VmSafeDirEntry, error) { + return _Vm.Contract.ReadDir1(&_Vm.CallOpts, path) +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_Vm *VmCaller) ReadFile(opts *bind.CallOpts, path string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readFile", path) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_Vm *VmSession) ReadFile(path string) (string, error) { + return _Vm.Contract.ReadFile(&_Vm.CallOpts, path) +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_Vm *VmCallerSession) ReadFile(path string) (string, error) { + return _Vm.Contract.ReadFile(&_Vm.CallOpts, path) +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_Vm *VmCaller) ReadFileBinary(opts *bind.CallOpts, path string) ([]byte, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readFileBinary", path) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_Vm *VmSession) ReadFileBinary(path string) ([]byte, error) { + return _Vm.Contract.ReadFileBinary(&_Vm.CallOpts, path) +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_Vm *VmCallerSession) ReadFileBinary(path string) ([]byte, error) { + return _Vm.Contract.ReadFileBinary(&_Vm.CallOpts, path) +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_Vm *VmCaller) ReadLine(opts *bind.CallOpts, path string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readLine", path) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_Vm *VmSession) ReadLine(path string) (string, error) { + return _Vm.Contract.ReadLine(&_Vm.CallOpts, path) +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_Vm *VmCallerSession) ReadLine(path string) (string, error) { + return _Vm.Contract.ReadLine(&_Vm.CallOpts, path) +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_Vm *VmCaller) ReadLink(opts *bind.CallOpts, linkPath string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "readLink", linkPath) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_Vm *VmSession) ReadLink(linkPath string) (string, error) { + return _Vm.Contract.ReadLink(&_Vm.CallOpts, linkPath) +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_Vm *VmCallerSession) ReadLink(linkPath string) (string, error) { + return _Vm.Contract.ReadLink(&_Vm.CallOpts, linkPath) +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_Vm *VmCaller) Replace(opts *bind.CallOpts, input string, from string, to string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "replace", input, from, to) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_Vm *VmSession) Replace(input string, from string, to string) (string, error) { + return _Vm.Contract.Replace(&_Vm.CallOpts, input, from, to) +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_Vm *VmCallerSession) Replace(input string, from string, to string) (string, error) { + return _Vm.Contract.Replace(&_Vm.CallOpts, input, from, to) +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_Vm *VmCaller) RpcUrl(opts *bind.CallOpts, rpcAlias string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "rpcUrl", rpcAlias) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_Vm *VmSession) RpcUrl(rpcAlias string) (string, error) { + return _Vm.Contract.RpcUrl(&_Vm.CallOpts, rpcAlias) +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_Vm *VmCallerSession) RpcUrl(rpcAlias string) (string, error) { + return _Vm.Contract.RpcUrl(&_Vm.CallOpts, rpcAlias) +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_Vm *VmCaller) RpcUrlStructs(opts *bind.CallOpts) ([]VmSafeRpc, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "rpcUrlStructs") + + if err != nil { + return *new([]VmSafeRpc), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeRpc)).(*[]VmSafeRpc) + + return out0, err + +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_Vm *VmSession) RpcUrlStructs() ([]VmSafeRpc, error) { + return _Vm.Contract.RpcUrlStructs(&_Vm.CallOpts) +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_Vm *VmCallerSession) RpcUrlStructs() ([]VmSafeRpc, error) { + return _Vm.Contract.RpcUrlStructs(&_Vm.CallOpts) +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_Vm *VmCaller) RpcUrls(opts *bind.CallOpts) ([][2]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "rpcUrls") + + if err != nil { + return *new([][2]string), err + } + + out0 := *abi.ConvertType(out[0], new([][2]string)).(*[][2]string) + + return out0, err + +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_Vm *VmSession) RpcUrls() ([][2]string, error) { + return _Vm.Contract.RpcUrls(&_Vm.CallOpts) +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_Vm *VmCallerSession) RpcUrls() ([][2]string, error) { + return _Vm.Contract.RpcUrls(&_Vm.CallOpts) +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_Vm *VmCaller) SerializeJsonType(opts *bind.CallOpts, typeDescription string, value []byte) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "serializeJsonType", typeDescription, value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_Vm *VmSession) SerializeJsonType(typeDescription string, value []byte) (string, error) { + return _Vm.Contract.SerializeJsonType(&_Vm.CallOpts, typeDescription, value) +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_Vm *VmCallerSession) SerializeJsonType(typeDescription string, value []byte) (string, error) { + return _Vm.Contract.SerializeJsonType(&_Vm.CallOpts, typeDescription, value) +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCaller) Sign(opts *bind.CallOpts, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "sign", digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmSession) Sign(digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign(&_Vm.CallOpts, digest) +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCallerSession) Sign(digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign(&_Vm.CallOpts, digest) +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCaller) Sign0(opts *bind.CallOpts, signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "sign0", signer, digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmSession) Sign0(signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign0(&_Vm.CallOpts, signer, digest) +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCallerSession) Sign0(signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign0(&_Vm.CallOpts, signer, digest) +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCaller) Sign2(opts *bind.CallOpts, privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "sign2", privateKey, digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmSession) Sign2(privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign2(&_Vm.CallOpts, privateKey, digest) +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmCallerSession) Sign2(privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.Sign2(&_Vm.CallOpts, privateKey, digest) +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_Vm *VmCaller) SignP256(opts *bind.CallOpts, privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "signP256", privateKey, digest) + + outstruct := new(struct { + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.R = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_Vm *VmSession) SignP256(privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.SignP256(&_Vm.CallOpts, privateKey, digest) +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_Vm *VmCallerSession) SignP256(privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + return _Vm.Contract.SignP256(&_Vm.CallOpts, privateKey, digest) +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_Vm *VmCaller) Split(opts *bind.CallOpts, input string, delimiter string) ([]string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "split", input, delimiter) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_Vm *VmSession) Split(input string, delimiter string) ([]string, error) { + return _Vm.Contract.Split(&_Vm.CallOpts, input, delimiter) +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_Vm *VmCallerSession) Split(input string, delimiter string) ([]string, error) { + return _Vm.Contract.Split(&_Vm.CallOpts, input, delimiter) +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_Vm *VmCaller) ToBase64(opts *bind.CallOpts, data string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toBase64", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_Vm *VmSession) ToBase64(data string) (string, error) { + return _Vm.Contract.ToBase64(&_Vm.CallOpts, data) +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_Vm *VmCallerSession) ToBase64(data string) (string, error) { + return _Vm.Contract.ToBase64(&_Vm.CallOpts, data) +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_Vm *VmCaller) ToBase640(opts *bind.CallOpts, data []byte) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toBase640", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_Vm *VmSession) ToBase640(data []byte) (string, error) { + return _Vm.Contract.ToBase640(&_Vm.CallOpts, data) +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_Vm *VmCallerSession) ToBase640(data []byte) (string, error) { + return _Vm.Contract.ToBase640(&_Vm.CallOpts, data) +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_Vm *VmCaller) ToBase64URL(opts *bind.CallOpts, data string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toBase64URL", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_Vm *VmSession) ToBase64URL(data string) (string, error) { + return _Vm.Contract.ToBase64URL(&_Vm.CallOpts, data) +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_Vm *VmCallerSession) ToBase64URL(data string) (string, error) { + return _Vm.Contract.ToBase64URL(&_Vm.CallOpts, data) +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_Vm *VmCaller) ToBase64URL0(opts *bind.CallOpts, data []byte) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toBase64URL0", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_Vm *VmSession) ToBase64URL0(data []byte) (string, error) { + return _Vm.Contract.ToBase64URL0(&_Vm.CallOpts, data) +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_Vm *VmCallerSession) ToBase64URL0(data []byte) (string, error) { + return _Vm.Contract.ToBase64URL0(&_Vm.CallOpts, data) +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_Vm *VmCaller) ToLowercase(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toLowercase", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_Vm *VmSession) ToLowercase(input string) (string, error) { + return _Vm.Contract.ToLowercase(&_Vm.CallOpts, input) +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_Vm *VmCallerSession) ToLowercase(input string) (string, error) { + return _Vm.Contract.ToLowercase(&_Vm.CallOpts, input) +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString(opts *bind.CallOpts, value common.Address) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString(value common.Address) (string, error) { + return _Vm.Contract.ToString(&_Vm.CallOpts, value) +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString(value common.Address) (string, error) { + return _Vm.Contract.ToString(&_Vm.CallOpts, value) +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString0(opts *bind.CallOpts, value *big.Int) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString0", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString0(value *big.Int) (string, error) { + return _Vm.Contract.ToString0(&_Vm.CallOpts, value) +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString0(value *big.Int) (string, error) { + return _Vm.Contract.ToString0(&_Vm.CallOpts, value) +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString1(opts *bind.CallOpts, value []byte) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString1", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString1(value []byte) (string, error) { + return _Vm.Contract.ToString1(&_Vm.CallOpts, value) +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString1(value []byte) (string, error) { + return _Vm.Contract.ToString1(&_Vm.CallOpts, value) +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString2(opts *bind.CallOpts, value bool) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString2", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString2(value bool) (string, error) { + return _Vm.Contract.ToString2(&_Vm.CallOpts, value) +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString2(value bool) (string, error) { + return _Vm.Contract.ToString2(&_Vm.CallOpts, value) +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString3(opts *bind.CallOpts, value *big.Int) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString3", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString3(value *big.Int) (string, error) { + return _Vm.Contract.ToString3(&_Vm.CallOpts, value) +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString3(value *big.Int) (string, error) { + return _Vm.Contract.ToString3(&_Vm.CallOpts, value) +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_Vm *VmCaller) ToString4(opts *bind.CallOpts, value [32]byte) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toString4", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_Vm *VmSession) ToString4(value [32]byte) (string, error) { + return _Vm.Contract.ToString4(&_Vm.CallOpts, value) +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_Vm *VmCallerSession) ToString4(value [32]byte) (string, error) { + return _Vm.Contract.ToString4(&_Vm.CallOpts, value) +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_Vm *VmCaller) ToUppercase(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "toUppercase", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_Vm *VmSession) ToUppercase(input string) (string, error) { + return _Vm.Contract.ToUppercase(&_Vm.CallOpts, input) +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_Vm *VmCallerSession) ToUppercase(input string) (string, error) { + return _Vm.Contract.ToUppercase(&_Vm.CallOpts, input) +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_Vm *VmCaller) Trim(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _Vm.contract.Call(opts, &out, "trim", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_Vm *VmSession) Trim(input string) (string, error) { + return _Vm.Contract.Trim(&_Vm.CallOpts, input) +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_Vm *VmCallerSession) Trim(input string) (string, error) { + return _Vm.Contract.Trim(&_Vm.CallOpts, input) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_Vm *VmTransactor) Accesses(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "accesses", target) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_Vm *VmSession) Accesses(target common.Address) (*types.Transaction, error) { + return _Vm.Contract.Accesses(&_Vm.TransactOpts, target) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_Vm *VmTransactorSession) Accesses(target common.Address) (*types.Transaction, error) { + return _Vm.Contract.Accesses(&_Vm.TransactOpts, target) +} + +// AllowCheatcodes is a paid mutator transaction binding the contract method 0xea060291. +// +// Solidity: function allowCheatcodes(address account) returns() +func (_Vm *VmTransactor) AllowCheatcodes(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "allowCheatcodes", account) +} + +// AllowCheatcodes is a paid mutator transaction binding the contract method 0xea060291. +// +// Solidity: function allowCheatcodes(address account) returns() +func (_Vm *VmSession) AllowCheatcodes(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.AllowCheatcodes(&_Vm.TransactOpts, account) +} + +// AllowCheatcodes is a paid mutator transaction binding the contract method 0xea060291. +// +// Solidity: function allowCheatcodes(address account) returns() +func (_Vm *VmTransactorSession) AllowCheatcodes(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.AllowCheatcodes(&_Vm.TransactOpts, account) +} + +// BlobBaseFee is a paid mutator transaction binding the contract method 0x6d315d7e. +// +// Solidity: function blobBaseFee(uint256 newBlobBaseFee) returns() +func (_Vm *VmTransactor) BlobBaseFee(opts *bind.TransactOpts, newBlobBaseFee *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "blobBaseFee", newBlobBaseFee) +} + +// BlobBaseFee is a paid mutator transaction binding the contract method 0x6d315d7e. +// +// Solidity: function blobBaseFee(uint256 newBlobBaseFee) returns() +func (_Vm *VmSession) BlobBaseFee(newBlobBaseFee *big.Int) (*types.Transaction, error) { + return _Vm.Contract.BlobBaseFee(&_Vm.TransactOpts, newBlobBaseFee) +} + +// BlobBaseFee is a paid mutator transaction binding the contract method 0x6d315d7e. +// +// Solidity: function blobBaseFee(uint256 newBlobBaseFee) returns() +func (_Vm *VmTransactorSession) BlobBaseFee(newBlobBaseFee *big.Int) (*types.Transaction, error) { + return _Vm.Contract.BlobBaseFee(&_Vm.TransactOpts, newBlobBaseFee) +} + +// Blobhashes is a paid mutator transaction binding the contract method 0x129de7eb. +// +// Solidity: function blobhashes(bytes32[] hashes) returns() +func (_Vm *VmTransactor) Blobhashes(opts *bind.TransactOpts, hashes [][32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "blobhashes", hashes) +} + +// Blobhashes is a paid mutator transaction binding the contract method 0x129de7eb. +// +// Solidity: function blobhashes(bytes32[] hashes) returns() +func (_Vm *VmSession) Blobhashes(hashes [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.Blobhashes(&_Vm.TransactOpts, hashes) +} + +// Blobhashes is a paid mutator transaction binding the contract method 0x129de7eb. +// +// Solidity: function blobhashes(bytes32[] hashes) returns() +func (_Vm *VmTransactorSession) Blobhashes(hashes [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.Blobhashes(&_Vm.TransactOpts, hashes) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_Vm *VmTransactor) Breakpoint(opts *bind.TransactOpts, char string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "breakpoint", char) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_Vm *VmSession) Breakpoint(char string) (*types.Transaction, error) { + return _Vm.Contract.Breakpoint(&_Vm.TransactOpts, char) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_Vm *VmTransactorSession) Breakpoint(char string) (*types.Transaction, error) { + return _Vm.Contract.Breakpoint(&_Vm.TransactOpts, char) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_Vm *VmTransactor) Breakpoint0(opts *bind.TransactOpts, char string, value bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "breakpoint0", char, value) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_Vm *VmSession) Breakpoint0(char string, value bool) (*types.Transaction, error) { + return _Vm.Contract.Breakpoint0(&_Vm.TransactOpts, char, value) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_Vm *VmTransactorSession) Breakpoint0(char string, value bool) (*types.Transaction, error) { + return _Vm.Contract.Breakpoint0(&_Vm.TransactOpts, char, value) +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_Vm *VmTransactor) Broadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "broadcast") +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_Vm *VmSession) Broadcast() (*types.Transaction, error) { + return _Vm.Contract.Broadcast(&_Vm.TransactOpts) +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_Vm *VmTransactorSession) Broadcast() (*types.Transaction, error) { + return _Vm.Contract.Broadcast(&_Vm.TransactOpts) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_Vm *VmTransactor) Broadcast0(opts *bind.TransactOpts, signer common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "broadcast0", signer) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_Vm *VmSession) Broadcast0(signer common.Address) (*types.Transaction, error) { + return _Vm.Contract.Broadcast0(&_Vm.TransactOpts, signer) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_Vm *VmTransactorSession) Broadcast0(signer common.Address) (*types.Transaction, error) { + return _Vm.Contract.Broadcast0(&_Vm.TransactOpts, signer) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_Vm *VmTransactor) Broadcast1(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "broadcast1", privateKey) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_Vm *VmSession) Broadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Broadcast1(&_Vm.TransactOpts, privateKey) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_Vm *VmTransactorSession) Broadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Broadcast1(&_Vm.TransactOpts, privateKey) +} + +// ChainId is a paid mutator transaction binding the contract method 0x4049ddd2. +// +// Solidity: function chainId(uint256 newChainId) returns() +func (_Vm *VmTransactor) ChainId(opts *bind.TransactOpts, newChainId *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "chainId", newChainId) +} + +// ChainId is a paid mutator transaction binding the contract method 0x4049ddd2. +// +// Solidity: function chainId(uint256 newChainId) returns() +func (_Vm *VmSession) ChainId(newChainId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.ChainId(&_Vm.TransactOpts, newChainId) +} + +// ChainId is a paid mutator transaction binding the contract method 0x4049ddd2. +// +// Solidity: function chainId(uint256 newChainId) returns() +func (_Vm *VmTransactorSession) ChainId(newChainId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.ChainId(&_Vm.TransactOpts, newChainId) +} + +// ClearMockedCalls is a paid mutator transaction binding the contract method 0x3fdf4e15. +// +// Solidity: function clearMockedCalls() returns() +func (_Vm *VmTransactor) ClearMockedCalls(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "clearMockedCalls") +} + +// ClearMockedCalls is a paid mutator transaction binding the contract method 0x3fdf4e15. +// +// Solidity: function clearMockedCalls() returns() +func (_Vm *VmSession) ClearMockedCalls() (*types.Transaction, error) { + return _Vm.Contract.ClearMockedCalls(&_Vm.TransactOpts) +} + +// ClearMockedCalls is a paid mutator transaction binding the contract method 0x3fdf4e15. +// +// Solidity: function clearMockedCalls() returns() +func (_Vm *VmTransactorSession) ClearMockedCalls() (*types.Transaction, error) { + return _Vm.Contract.ClearMockedCalls(&_Vm.TransactOpts) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_Vm *VmTransactor) CloseFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "closeFile", path) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_Vm *VmSession) CloseFile(path string) (*types.Transaction, error) { + return _Vm.Contract.CloseFile(&_Vm.TransactOpts, path) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_Vm *VmTransactorSession) CloseFile(path string) (*types.Transaction, error) { + return _Vm.Contract.CloseFile(&_Vm.TransactOpts, path) +} + +// Coinbase is a paid mutator transaction binding the contract method 0xff483c54. +// +// Solidity: function coinbase(address newCoinbase) returns() +func (_Vm *VmTransactor) Coinbase(opts *bind.TransactOpts, newCoinbase common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "coinbase", newCoinbase) +} + +// Coinbase is a paid mutator transaction binding the contract method 0xff483c54. +// +// Solidity: function coinbase(address newCoinbase) returns() +func (_Vm *VmSession) Coinbase(newCoinbase common.Address) (*types.Transaction, error) { + return _Vm.Contract.Coinbase(&_Vm.TransactOpts, newCoinbase) +} + +// Coinbase is a paid mutator transaction binding the contract method 0xff483c54. +// +// Solidity: function coinbase(address newCoinbase) returns() +func (_Vm *VmTransactorSession) Coinbase(newCoinbase common.Address) (*types.Transaction, error) { + return _Vm.Contract.Coinbase(&_Vm.TransactOpts, newCoinbase) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_Vm *VmTransactor) CopyFile(opts *bind.TransactOpts, from string, to string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "copyFile", from, to) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_Vm *VmSession) CopyFile(from string, to string) (*types.Transaction, error) { + return _Vm.Contract.CopyFile(&_Vm.TransactOpts, from, to) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_Vm *VmTransactorSession) CopyFile(from string, to string) (*types.Transaction, error) { + return _Vm.Contract.CopyFile(&_Vm.TransactOpts, from, to) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_Vm *VmTransactor) CreateDir(opts *bind.TransactOpts, path string, recursive bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createDir", path, recursive) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_Vm *VmSession) CreateDir(path string, recursive bool) (*types.Transaction, error) { + return _Vm.Contract.CreateDir(&_Vm.TransactOpts, path, recursive) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_Vm *VmTransactorSession) CreateDir(path string, recursive bool) (*types.Transaction, error) { + return _Vm.Contract.CreateDir(&_Vm.TransactOpts, path, recursive) +} + +// CreateFork is a paid mutator transaction binding the contract method 0x31ba3498. +// +// Solidity: function createFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateFork(opts *bind.TransactOpts, urlOrAlias string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createFork", urlOrAlias) +} + +// CreateFork is a paid mutator transaction binding the contract method 0x31ba3498. +// +// Solidity: function createFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmSession) CreateFork(urlOrAlias string) (*types.Transaction, error) { + return _Vm.Contract.CreateFork(&_Vm.TransactOpts, urlOrAlias) +} + +// CreateFork is a paid mutator transaction binding the contract method 0x31ba3498. +// +// Solidity: function createFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateFork(urlOrAlias string) (*types.Transaction, error) { + return _Vm.Contract.CreateFork(&_Vm.TransactOpts, urlOrAlias) +} + +// CreateFork0 is a paid mutator transaction binding the contract method 0x6ba3ba2b. +// +// Solidity: function createFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateFork0(opts *bind.TransactOpts, urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createFork0", urlOrAlias, blockNumber) +} + +// CreateFork0 is a paid mutator transaction binding the contract method 0x6ba3ba2b. +// +// Solidity: function createFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmSession) CreateFork0(urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateFork0(&_Vm.TransactOpts, urlOrAlias, blockNumber) +} + +// CreateFork0 is a paid mutator transaction binding the contract method 0x6ba3ba2b. +// +// Solidity: function createFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateFork0(urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateFork0(&_Vm.TransactOpts, urlOrAlias, blockNumber) +} + +// CreateFork1 is a paid mutator transaction binding the contract method 0x7ca29682. +// +// Solidity: function createFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateFork1(opts *bind.TransactOpts, urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createFork1", urlOrAlias, txHash) +} + +// CreateFork1 is a paid mutator transaction binding the contract method 0x7ca29682. +// +// Solidity: function createFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmSession) CreateFork1(urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.CreateFork1(&_Vm.TransactOpts, urlOrAlias, txHash) +} + +// CreateFork1 is a paid mutator transaction binding the contract method 0x7ca29682. +// +// Solidity: function createFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateFork1(urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.CreateFork1(&_Vm.TransactOpts, urlOrAlias, txHash) +} + +// CreateSelectFork is a paid mutator transaction binding the contract method 0x71ee464d. +// +// Solidity: function createSelectFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateSelectFork(opts *bind.TransactOpts, urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createSelectFork", urlOrAlias, blockNumber) +} + +// CreateSelectFork is a paid mutator transaction binding the contract method 0x71ee464d. +// +// Solidity: function createSelectFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmSession) CreateSelectFork(urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork(&_Vm.TransactOpts, urlOrAlias, blockNumber) +} + +// CreateSelectFork is a paid mutator transaction binding the contract method 0x71ee464d. +// +// Solidity: function createSelectFork(string urlOrAlias, uint256 blockNumber) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateSelectFork(urlOrAlias string, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork(&_Vm.TransactOpts, urlOrAlias, blockNumber) +} + +// CreateSelectFork0 is a paid mutator transaction binding the contract method 0x84d52b7a. +// +// Solidity: function createSelectFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateSelectFork0(opts *bind.TransactOpts, urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createSelectFork0", urlOrAlias, txHash) +} + +// CreateSelectFork0 is a paid mutator transaction binding the contract method 0x84d52b7a. +// +// Solidity: function createSelectFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmSession) CreateSelectFork0(urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork0(&_Vm.TransactOpts, urlOrAlias, txHash) +} + +// CreateSelectFork0 is a paid mutator transaction binding the contract method 0x84d52b7a. +// +// Solidity: function createSelectFork(string urlOrAlias, bytes32 txHash) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateSelectFork0(urlOrAlias string, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork0(&_Vm.TransactOpts, urlOrAlias, txHash) +} + +// CreateSelectFork1 is a paid mutator transaction binding the contract method 0x98680034. +// +// Solidity: function createSelectFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmTransactor) CreateSelectFork1(opts *bind.TransactOpts, urlOrAlias string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createSelectFork1", urlOrAlias) +} + +// CreateSelectFork1 is a paid mutator transaction binding the contract method 0x98680034. +// +// Solidity: function createSelectFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmSession) CreateSelectFork1(urlOrAlias string) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork1(&_Vm.TransactOpts, urlOrAlias) +} + +// CreateSelectFork1 is a paid mutator transaction binding the contract method 0x98680034. +// +// Solidity: function createSelectFork(string urlOrAlias) returns(uint256 forkId) +func (_Vm *VmTransactorSession) CreateSelectFork1(urlOrAlias string) (*types.Transaction, error) { + return _Vm.Contract.CreateSelectFork1(&_Vm.TransactOpts, urlOrAlias) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactor) CreateWallet(opts *bind.TransactOpts, walletLabel string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createWallet", walletLabel) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmSession) CreateWallet(walletLabel string) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet(&_Vm.TransactOpts, walletLabel) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactorSession) CreateWallet(walletLabel string) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet(&_Vm.TransactOpts, walletLabel) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactor) CreateWallet0(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createWallet0", privateKey) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmSession) CreateWallet0(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet0(&_Vm.TransactOpts, privateKey) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactorSession) CreateWallet0(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet0(&_Vm.TransactOpts, privateKey) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactor) CreateWallet1(opts *bind.TransactOpts, privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "createWallet1", privateKey, walletLabel) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmSession) CreateWallet1(privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet1(&_Vm.TransactOpts, privateKey, walletLabel) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_Vm *VmTransactorSession) CreateWallet1(privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _Vm.Contract.CreateWallet1(&_Vm.TransactOpts, privateKey, walletLabel) +} + +// Deal is a paid mutator transaction binding the contract method 0xc88a5e6d. +// +// Solidity: function deal(address account, uint256 newBalance) returns() +func (_Vm *VmTransactor) Deal(opts *bind.TransactOpts, account common.Address, newBalance *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "deal", account, newBalance) +} + +// Deal is a paid mutator transaction binding the contract method 0xc88a5e6d. +// +// Solidity: function deal(address account, uint256 newBalance) returns() +func (_Vm *VmSession) Deal(account common.Address, newBalance *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Deal(&_Vm.TransactOpts, account, newBalance) +} + +// Deal is a paid mutator transaction binding the contract method 0xc88a5e6d. +// +// Solidity: function deal(address account, uint256 newBalance) returns() +func (_Vm *VmTransactorSession) Deal(account common.Address, newBalance *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Deal(&_Vm.TransactOpts, account, newBalance) +} + +// DeleteSnapshot is a paid mutator transaction binding the contract method 0xa6368557. +// +// Solidity: function deleteSnapshot(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactor) DeleteSnapshot(opts *bind.TransactOpts, snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "deleteSnapshot", snapshotId) +} + +// DeleteSnapshot is a paid mutator transaction binding the contract method 0xa6368557. +// +// Solidity: function deleteSnapshot(uint256 snapshotId) returns(bool success) +func (_Vm *VmSession) DeleteSnapshot(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.DeleteSnapshot(&_Vm.TransactOpts, snapshotId) +} + +// DeleteSnapshot is a paid mutator transaction binding the contract method 0xa6368557. +// +// Solidity: function deleteSnapshot(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactorSession) DeleteSnapshot(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.DeleteSnapshot(&_Vm.TransactOpts, snapshotId) +} + +// DeleteSnapshots is a paid mutator transaction binding the contract method 0x421ae469. +// +// Solidity: function deleteSnapshots() returns() +func (_Vm *VmTransactor) DeleteSnapshots(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "deleteSnapshots") +} + +// DeleteSnapshots is a paid mutator transaction binding the contract method 0x421ae469. +// +// Solidity: function deleteSnapshots() returns() +func (_Vm *VmSession) DeleteSnapshots() (*types.Transaction, error) { + return _Vm.Contract.DeleteSnapshots(&_Vm.TransactOpts) +} + +// DeleteSnapshots is a paid mutator transaction binding the contract method 0x421ae469. +// +// Solidity: function deleteSnapshots() returns() +func (_Vm *VmTransactorSession) DeleteSnapshots() (*types.Transaction, error) { + return _Vm.Contract.DeleteSnapshots(&_Vm.TransactOpts) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_Vm *VmTransactor) DeployCode(opts *bind.TransactOpts, artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "deployCode", artifactPath, constructorArgs) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_Vm *VmSession) DeployCode(artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _Vm.Contract.DeployCode(&_Vm.TransactOpts, artifactPath, constructorArgs) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_Vm *VmTransactorSession) DeployCode(artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _Vm.Contract.DeployCode(&_Vm.TransactOpts, artifactPath, constructorArgs) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_Vm *VmTransactor) DeployCode0(opts *bind.TransactOpts, artifactPath string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "deployCode0", artifactPath) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_Vm *VmSession) DeployCode0(artifactPath string) (*types.Transaction, error) { + return _Vm.Contract.DeployCode0(&_Vm.TransactOpts, artifactPath) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_Vm *VmTransactorSession) DeployCode0(artifactPath string) (*types.Transaction, error) { + return _Vm.Contract.DeployCode0(&_Vm.TransactOpts, artifactPath) +} + +// Difficulty is a paid mutator transaction binding the contract method 0x46cc92d9. +// +// Solidity: function difficulty(uint256 newDifficulty) returns() +func (_Vm *VmTransactor) Difficulty(opts *bind.TransactOpts, newDifficulty *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "difficulty", newDifficulty) +} + +// Difficulty is a paid mutator transaction binding the contract method 0x46cc92d9. +// +// Solidity: function difficulty(uint256 newDifficulty) returns() +func (_Vm *VmSession) Difficulty(newDifficulty *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Difficulty(&_Vm.TransactOpts, newDifficulty) +} + +// Difficulty is a paid mutator transaction binding the contract method 0x46cc92d9. +// +// Solidity: function difficulty(uint256 newDifficulty) returns() +func (_Vm *VmTransactorSession) Difficulty(newDifficulty *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Difficulty(&_Vm.TransactOpts, newDifficulty) +} + +// DumpState is a paid mutator transaction binding the contract method 0x709ecd3f. +// +// Solidity: function dumpState(string pathToStateJson) returns() +func (_Vm *VmTransactor) DumpState(opts *bind.TransactOpts, pathToStateJson string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "dumpState", pathToStateJson) +} + +// DumpState is a paid mutator transaction binding the contract method 0x709ecd3f. +// +// Solidity: function dumpState(string pathToStateJson) returns() +func (_Vm *VmSession) DumpState(pathToStateJson string) (*types.Transaction, error) { + return _Vm.Contract.DumpState(&_Vm.TransactOpts, pathToStateJson) +} + +// DumpState is a paid mutator transaction binding the contract method 0x709ecd3f. +// +// Solidity: function dumpState(string pathToStateJson) returns() +func (_Vm *VmTransactorSession) DumpState(pathToStateJson string) (*types.Transaction, error) { + return _Vm.Contract.DumpState(&_Vm.TransactOpts, pathToStateJson) +} + +// Etch is a paid mutator transaction binding the contract method 0xb4d6c782. +// +// Solidity: function etch(address target, bytes newRuntimeBytecode) returns() +func (_Vm *VmTransactor) Etch(opts *bind.TransactOpts, target common.Address, newRuntimeBytecode []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "etch", target, newRuntimeBytecode) +} + +// Etch is a paid mutator transaction binding the contract method 0xb4d6c782. +// +// Solidity: function etch(address target, bytes newRuntimeBytecode) returns() +func (_Vm *VmSession) Etch(target common.Address, newRuntimeBytecode []byte) (*types.Transaction, error) { + return _Vm.Contract.Etch(&_Vm.TransactOpts, target, newRuntimeBytecode) +} + +// Etch is a paid mutator transaction binding the contract method 0xb4d6c782. +// +// Solidity: function etch(address target, bytes newRuntimeBytecode) returns() +func (_Vm *VmTransactorSession) Etch(target common.Address, newRuntimeBytecode []byte) (*types.Transaction, error) { + return _Vm.Contract.Etch(&_Vm.TransactOpts, target, newRuntimeBytecode) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_Vm *VmTransactor) EthGetLogs(opts *bind.TransactOpts, fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "eth_getLogs", fromBlock, toBlock, target, topics) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_Vm *VmSession) EthGetLogs(fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.EthGetLogs(&_Vm.TransactOpts, fromBlock, toBlock, target, topics) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_Vm *VmTransactorSession) EthGetLogs(fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.EthGetLogs(&_Vm.TransactOpts, fromBlock, toBlock, target, topics) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_Vm *VmTransactor) Exists(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "exists", path) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_Vm *VmSession) Exists(path string) (*types.Transaction, error) { + return _Vm.Contract.Exists(&_Vm.TransactOpts, path) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_Vm *VmTransactorSession) Exists(path string) (*types.Transaction, error) { + return _Vm.Contract.Exists(&_Vm.TransactOpts, path) +} + +// ExpectCall is a paid mutator transaction binding the contract method 0x23361207. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data) returns() +func (_Vm *VmTransactor) ExpectCall(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, gas uint64, data []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall", callee, msgValue, gas, data) +} + +// ExpectCall is a paid mutator transaction binding the contract method 0x23361207. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data) returns() +func (_Vm *VmSession) ExpectCall(callee common.Address, msgValue *big.Int, gas uint64, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall(&_Vm.TransactOpts, callee, msgValue, gas, data) +} + +// ExpectCall is a paid mutator transaction binding the contract method 0x23361207. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data) returns() +func (_Vm *VmTransactorSession) ExpectCall(callee common.Address, msgValue *big.Int, gas uint64, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall(&_Vm.TransactOpts, callee, msgValue, gas, data) +} + +// ExpectCall0 is a paid mutator transaction binding the contract method 0x65b7b7cc. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data, uint64 count) returns() +func (_Vm *VmTransactor) ExpectCall0(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, gas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall0", callee, msgValue, gas, data, count) +} + +// ExpectCall0 is a paid mutator transaction binding the contract method 0x65b7b7cc. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data, uint64 count) returns() +func (_Vm *VmSession) ExpectCall0(callee common.Address, msgValue *big.Int, gas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall0(&_Vm.TransactOpts, callee, msgValue, gas, data, count) +} + +// ExpectCall0 is a paid mutator transaction binding the contract method 0x65b7b7cc. +// +// Solidity: function expectCall(address callee, uint256 msgValue, uint64 gas, bytes data, uint64 count) returns() +func (_Vm *VmTransactorSession) ExpectCall0(callee common.Address, msgValue *big.Int, gas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall0(&_Vm.TransactOpts, callee, msgValue, gas, data, count) +} + +// ExpectCall1 is a paid mutator transaction binding the contract method 0xa2b1a1ae. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data, uint64 count) returns() +func (_Vm *VmTransactor) ExpectCall1(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall1", callee, msgValue, data, count) +} + +// ExpectCall1 is a paid mutator transaction binding the contract method 0xa2b1a1ae. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data, uint64 count) returns() +func (_Vm *VmSession) ExpectCall1(callee common.Address, msgValue *big.Int, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall1(&_Vm.TransactOpts, callee, msgValue, data, count) +} + +// ExpectCall1 is a paid mutator transaction binding the contract method 0xa2b1a1ae. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data, uint64 count) returns() +func (_Vm *VmTransactorSession) ExpectCall1(callee common.Address, msgValue *big.Int, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall1(&_Vm.TransactOpts, callee, msgValue, data, count) +} + +// ExpectCall2 is a paid mutator transaction binding the contract method 0xbd6af434. +// +// Solidity: function expectCall(address callee, bytes data) returns() +func (_Vm *VmTransactor) ExpectCall2(opts *bind.TransactOpts, callee common.Address, data []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall2", callee, data) +} + +// ExpectCall2 is a paid mutator transaction binding the contract method 0xbd6af434. +// +// Solidity: function expectCall(address callee, bytes data) returns() +func (_Vm *VmSession) ExpectCall2(callee common.Address, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall2(&_Vm.TransactOpts, callee, data) +} + +// ExpectCall2 is a paid mutator transaction binding the contract method 0xbd6af434. +// +// Solidity: function expectCall(address callee, bytes data) returns() +func (_Vm *VmTransactorSession) ExpectCall2(callee common.Address, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall2(&_Vm.TransactOpts, callee, data) +} + +// ExpectCall3 is a paid mutator transaction binding the contract method 0xc1adbbff. +// +// Solidity: function expectCall(address callee, bytes data, uint64 count) returns() +func (_Vm *VmTransactor) ExpectCall3(opts *bind.TransactOpts, callee common.Address, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall3", callee, data, count) +} + +// ExpectCall3 is a paid mutator transaction binding the contract method 0xc1adbbff. +// +// Solidity: function expectCall(address callee, bytes data, uint64 count) returns() +func (_Vm *VmSession) ExpectCall3(callee common.Address, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall3(&_Vm.TransactOpts, callee, data, count) +} + +// ExpectCall3 is a paid mutator transaction binding the contract method 0xc1adbbff. +// +// Solidity: function expectCall(address callee, bytes data, uint64 count) returns() +func (_Vm *VmTransactorSession) ExpectCall3(callee common.Address, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall3(&_Vm.TransactOpts, callee, data, count) +} + +// ExpectCall4 is a paid mutator transaction binding the contract method 0xf30c7ba3. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data) returns() +func (_Vm *VmTransactor) ExpectCall4(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, data []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCall4", callee, msgValue, data) +} + +// ExpectCall4 is a paid mutator transaction binding the contract method 0xf30c7ba3. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data) returns() +func (_Vm *VmSession) ExpectCall4(callee common.Address, msgValue *big.Int, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall4(&_Vm.TransactOpts, callee, msgValue, data) +} + +// ExpectCall4 is a paid mutator transaction binding the contract method 0xf30c7ba3. +// +// Solidity: function expectCall(address callee, uint256 msgValue, bytes data) returns() +func (_Vm *VmTransactorSession) ExpectCall4(callee common.Address, msgValue *big.Int, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCall4(&_Vm.TransactOpts, callee, msgValue, data) +} + +// ExpectCallMinGas is a paid mutator transaction binding the contract method 0x08e4e116. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data) returns() +func (_Vm *VmTransactor) ExpectCallMinGas(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, minGas uint64, data []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCallMinGas", callee, msgValue, minGas, data) +} + +// ExpectCallMinGas is a paid mutator transaction binding the contract method 0x08e4e116. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data) returns() +func (_Vm *VmSession) ExpectCallMinGas(callee common.Address, msgValue *big.Int, minGas uint64, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCallMinGas(&_Vm.TransactOpts, callee, msgValue, minGas, data) +} + +// ExpectCallMinGas is a paid mutator transaction binding the contract method 0x08e4e116. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data) returns() +func (_Vm *VmTransactorSession) ExpectCallMinGas(callee common.Address, msgValue *big.Int, minGas uint64, data []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectCallMinGas(&_Vm.TransactOpts, callee, msgValue, minGas, data) +} + +// ExpectCallMinGas0 is a paid mutator transaction binding the contract method 0xe13a1834. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data, uint64 count) returns() +func (_Vm *VmTransactor) ExpectCallMinGas0(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, minGas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectCallMinGas0", callee, msgValue, minGas, data, count) +} + +// ExpectCallMinGas0 is a paid mutator transaction binding the contract method 0xe13a1834. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data, uint64 count) returns() +func (_Vm *VmSession) ExpectCallMinGas0(callee common.Address, msgValue *big.Int, minGas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCallMinGas0(&_Vm.TransactOpts, callee, msgValue, minGas, data, count) +} + +// ExpectCallMinGas0 is a paid mutator transaction binding the contract method 0xe13a1834. +// +// Solidity: function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes data, uint64 count) returns() +func (_Vm *VmTransactorSession) ExpectCallMinGas0(callee common.Address, msgValue *big.Int, minGas uint64, data []byte, count uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectCallMinGas0(&_Vm.TransactOpts, callee, msgValue, minGas, data, count) +} + +// ExpectEmit is a paid mutator transaction binding the contract method 0x440ed10d. +// +// Solidity: function expectEmit() returns() +func (_Vm *VmTransactor) ExpectEmit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmit") +} + +// ExpectEmit is a paid mutator transaction binding the contract method 0x440ed10d. +// +// Solidity: function expectEmit() returns() +func (_Vm *VmSession) ExpectEmit() (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit(&_Vm.TransactOpts) +} + +// ExpectEmit is a paid mutator transaction binding the contract method 0x440ed10d. +// +// Solidity: function expectEmit() returns() +func (_Vm *VmTransactorSession) ExpectEmit() (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit(&_Vm.TransactOpts) +} + +// ExpectEmit0 is a paid mutator transaction binding the contract method 0x491cc7c2. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmTransactor) ExpectEmit0(opts *bind.TransactOpts, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmit0", checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectEmit0 is a paid mutator transaction binding the contract method 0x491cc7c2. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmSession) ExpectEmit0(checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit0(&_Vm.TransactOpts, checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectEmit0 is a paid mutator transaction binding the contract method 0x491cc7c2. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmTransactorSession) ExpectEmit0(checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit0(&_Vm.TransactOpts, checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectEmit1 is a paid mutator transaction binding the contract method 0x81bad6f3. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmTransactor) ExpectEmit1(opts *bind.TransactOpts, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmit1", checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmit1 is a paid mutator transaction binding the contract method 0x81bad6f3. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmSession) ExpectEmit1(checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit1(&_Vm.TransactOpts, checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmit1 is a paid mutator transaction binding the contract method 0x81bad6f3. +// +// Solidity: function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmTransactorSession) ExpectEmit1(checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit1(&_Vm.TransactOpts, checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmit2 is a paid mutator transaction binding the contract method 0x86b9620d. +// +// Solidity: function expectEmit(address emitter) returns() +func (_Vm *VmTransactor) ExpectEmit2(opts *bind.TransactOpts, emitter common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmit2", emitter) +} + +// ExpectEmit2 is a paid mutator transaction binding the contract method 0x86b9620d. +// +// Solidity: function expectEmit(address emitter) returns() +func (_Vm *VmSession) ExpectEmit2(emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit2(&_Vm.TransactOpts, emitter) +} + +// ExpectEmit2 is a paid mutator transaction binding the contract method 0x86b9620d. +// +// Solidity: function expectEmit(address emitter) returns() +func (_Vm *VmTransactorSession) ExpectEmit2(emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmit2(&_Vm.TransactOpts, emitter) +} + +// ExpectEmitAnonymous is a paid mutator transaction binding the contract method 0x2e5f270c. +// +// Solidity: function expectEmitAnonymous() returns() +func (_Vm *VmTransactor) ExpectEmitAnonymous(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmitAnonymous") +} + +// ExpectEmitAnonymous is a paid mutator transaction binding the contract method 0x2e5f270c. +// +// Solidity: function expectEmitAnonymous() returns() +func (_Vm *VmSession) ExpectEmitAnonymous() (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous(&_Vm.TransactOpts) +} + +// ExpectEmitAnonymous is a paid mutator transaction binding the contract method 0x2e5f270c. +// +// Solidity: function expectEmitAnonymous() returns() +func (_Vm *VmTransactorSession) ExpectEmitAnonymous() (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous(&_Vm.TransactOpts) +} + +// ExpectEmitAnonymous0 is a paid mutator transaction binding the contract method 0x6fc68705. +// +// Solidity: function expectEmitAnonymous(address emitter) returns() +func (_Vm *VmTransactor) ExpectEmitAnonymous0(opts *bind.TransactOpts, emitter common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmitAnonymous0", emitter) +} + +// ExpectEmitAnonymous0 is a paid mutator transaction binding the contract method 0x6fc68705. +// +// Solidity: function expectEmitAnonymous(address emitter) returns() +func (_Vm *VmSession) ExpectEmitAnonymous0(emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous0(&_Vm.TransactOpts, emitter) +} + +// ExpectEmitAnonymous0 is a paid mutator transaction binding the contract method 0x6fc68705. +// +// Solidity: function expectEmitAnonymous(address emitter) returns() +func (_Vm *VmTransactorSession) ExpectEmitAnonymous0(emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous0(&_Vm.TransactOpts, emitter) +} + +// ExpectEmitAnonymous1 is a paid mutator transaction binding the contract method 0x71c95899. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmTransactor) ExpectEmitAnonymous1(opts *bind.TransactOpts, checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmitAnonymous1", checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmitAnonymous1 is a paid mutator transaction binding the contract method 0x71c95899. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmSession) ExpectEmitAnonymous1(checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous1(&_Vm.TransactOpts, checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmitAnonymous1 is a paid mutator transaction binding the contract method 0x71c95899. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) returns() +func (_Vm *VmTransactorSession) ExpectEmitAnonymous1(checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool, emitter common.Address) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous1(&_Vm.TransactOpts, checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData, emitter) +} + +// ExpectEmitAnonymous2 is a paid mutator transaction binding the contract method 0xc948db5e. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmTransactor) ExpectEmitAnonymous2(opts *bind.TransactOpts, checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectEmitAnonymous2", checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectEmitAnonymous2 is a paid mutator transaction binding the contract method 0xc948db5e. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmSession) ExpectEmitAnonymous2(checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous2(&_Vm.TransactOpts, checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectEmitAnonymous2 is a paid mutator transaction binding the contract method 0xc948db5e. +// +// Solidity: function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) returns() +func (_Vm *VmTransactorSession) ExpectEmitAnonymous2(checkTopic0 bool, checkTopic1 bool, checkTopic2 bool, checkTopic3 bool, checkData bool) (*types.Transaction, error) { + return _Vm.Contract.ExpectEmitAnonymous2(&_Vm.TransactOpts, checkTopic0, checkTopic1, checkTopic2, checkTopic3, checkData) +} + +// ExpectRevert is a paid mutator transaction binding the contract method 0xc31eb0e0. +// +// Solidity: function expectRevert(bytes4 revertData) returns() +func (_Vm *VmTransactor) ExpectRevert(opts *bind.TransactOpts, revertData [4]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectRevert", revertData) +} + +// ExpectRevert is a paid mutator transaction binding the contract method 0xc31eb0e0. +// +// Solidity: function expectRevert(bytes4 revertData) returns() +func (_Vm *VmSession) ExpectRevert(revertData [4]byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert(&_Vm.TransactOpts, revertData) +} + +// ExpectRevert is a paid mutator transaction binding the contract method 0xc31eb0e0. +// +// Solidity: function expectRevert(bytes4 revertData) returns() +func (_Vm *VmTransactorSession) ExpectRevert(revertData [4]byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert(&_Vm.TransactOpts, revertData) +} + +// ExpectRevert0 is a paid mutator transaction binding the contract method 0xf28dceb3. +// +// Solidity: function expectRevert(bytes revertData) returns() +func (_Vm *VmTransactor) ExpectRevert0(opts *bind.TransactOpts, revertData []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectRevert0", revertData) +} + +// ExpectRevert0 is a paid mutator transaction binding the contract method 0xf28dceb3. +// +// Solidity: function expectRevert(bytes revertData) returns() +func (_Vm *VmSession) ExpectRevert0(revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert0(&_Vm.TransactOpts, revertData) +} + +// ExpectRevert0 is a paid mutator transaction binding the contract method 0xf28dceb3. +// +// Solidity: function expectRevert(bytes revertData) returns() +func (_Vm *VmTransactorSession) ExpectRevert0(revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert0(&_Vm.TransactOpts, revertData) +} + +// ExpectRevert1 is a paid mutator transaction binding the contract method 0xf4844814. +// +// Solidity: function expectRevert() returns() +func (_Vm *VmTransactor) ExpectRevert1(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectRevert1") +} + +// ExpectRevert1 is a paid mutator transaction binding the contract method 0xf4844814. +// +// Solidity: function expectRevert() returns() +func (_Vm *VmSession) ExpectRevert1() (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert1(&_Vm.TransactOpts) +} + +// ExpectRevert1 is a paid mutator transaction binding the contract method 0xf4844814. +// +// Solidity: function expectRevert() returns() +func (_Vm *VmTransactorSession) ExpectRevert1() (*types.Transaction, error) { + return _Vm.Contract.ExpectRevert1(&_Vm.TransactOpts) +} + +// ExpectSafeMemory is a paid mutator transaction binding the contract method 0x6d016688. +// +// Solidity: function expectSafeMemory(uint64 min, uint64 max) returns() +func (_Vm *VmTransactor) ExpectSafeMemory(opts *bind.TransactOpts, min uint64, max uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectSafeMemory", min, max) +} + +// ExpectSafeMemory is a paid mutator transaction binding the contract method 0x6d016688. +// +// Solidity: function expectSafeMemory(uint64 min, uint64 max) returns() +func (_Vm *VmSession) ExpectSafeMemory(min uint64, max uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectSafeMemory(&_Vm.TransactOpts, min, max) +} + +// ExpectSafeMemory is a paid mutator transaction binding the contract method 0x6d016688. +// +// Solidity: function expectSafeMemory(uint64 min, uint64 max) returns() +func (_Vm *VmTransactorSession) ExpectSafeMemory(min uint64, max uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectSafeMemory(&_Vm.TransactOpts, min, max) +} + +// ExpectSafeMemoryCall is a paid mutator transaction binding the contract method 0x05838bf4. +// +// Solidity: function expectSafeMemoryCall(uint64 min, uint64 max) returns() +func (_Vm *VmTransactor) ExpectSafeMemoryCall(opts *bind.TransactOpts, min uint64, max uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "expectSafeMemoryCall", min, max) +} + +// ExpectSafeMemoryCall is a paid mutator transaction binding the contract method 0x05838bf4. +// +// Solidity: function expectSafeMemoryCall(uint64 min, uint64 max) returns() +func (_Vm *VmSession) ExpectSafeMemoryCall(min uint64, max uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectSafeMemoryCall(&_Vm.TransactOpts, min, max) +} + +// ExpectSafeMemoryCall is a paid mutator transaction binding the contract method 0x05838bf4. +// +// Solidity: function expectSafeMemoryCall(uint64 min, uint64 max) returns() +func (_Vm *VmTransactorSession) ExpectSafeMemoryCall(min uint64, max uint64) (*types.Transaction, error) { + return _Vm.Contract.ExpectSafeMemoryCall(&_Vm.TransactOpts, min, max) +} + +// Fee is a paid mutator transaction binding the contract method 0x39b37ab0. +// +// Solidity: function fee(uint256 newBasefee) returns() +func (_Vm *VmTransactor) Fee(opts *bind.TransactOpts, newBasefee *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "fee", newBasefee) +} + +// Fee is a paid mutator transaction binding the contract method 0x39b37ab0. +// +// Solidity: function fee(uint256 newBasefee) returns() +func (_Vm *VmSession) Fee(newBasefee *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Fee(&_Vm.TransactOpts, newBasefee) +} + +// Fee is a paid mutator transaction binding the contract method 0x39b37ab0. +// +// Solidity: function fee(uint256 newBasefee) returns() +func (_Vm *VmTransactorSession) Fee(newBasefee *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Fee(&_Vm.TransactOpts, newBasefee) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_Vm *VmTransactor) Ffi(opts *bind.TransactOpts, commandInput []string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "ffi", commandInput) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_Vm *VmSession) Ffi(commandInput []string) (*types.Transaction, error) { + return _Vm.Contract.Ffi(&_Vm.TransactOpts, commandInput) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_Vm *VmTransactorSession) Ffi(commandInput []string) (*types.Transaction, error) { + return _Vm.Contract.Ffi(&_Vm.TransactOpts, commandInput) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_Vm *VmTransactor) GetMappingKeyAndParentOf(opts *bind.TransactOpts, target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "getMappingKeyAndParentOf", target, elementSlot) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_Vm *VmSession) GetMappingKeyAndParentOf(target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _Vm.Contract.GetMappingKeyAndParentOf(&_Vm.TransactOpts, target, elementSlot) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_Vm *VmTransactorSession) GetMappingKeyAndParentOf(target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _Vm.Contract.GetMappingKeyAndParentOf(&_Vm.TransactOpts, target, elementSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_Vm *VmTransactor) GetMappingLength(opts *bind.TransactOpts, target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "getMappingLength", target, mappingSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_Vm *VmSession) GetMappingLength(target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _Vm.Contract.GetMappingLength(&_Vm.TransactOpts, target, mappingSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_Vm *VmTransactorSession) GetMappingLength(target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _Vm.Contract.GetMappingLength(&_Vm.TransactOpts, target, mappingSlot) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_Vm *VmTransactor) GetMappingSlotAt(opts *bind.TransactOpts, target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "getMappingSlotAt", target, mappingSlot, idx) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_Vm *VmSession) GetMappingSlotAt(target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _Vm.Contract.GetMappingSlotAt(&_Vm.TransactOpts, target, mappingSlot, idx) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_Vm *VmTransactorSession) GetMappingSlotAt(target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _Vm.Contract.GetMappingSlotAt(&_Vm.TransactOpts, target, mappingSlot, idx) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_Vm *VmTransactor) GetNonce0(opts *bind.TransactOpts, wallet VmSafeWallet) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "getNonce0", wallet) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_Vm *VmSession) GetNonce0(wallet VmSafeWallet) (*types.Transaction, error) { + return _Vm.Contract.GetNonce0(&_Vm.TransactOpts, wallet) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_Vm *VmTransactorSession) GetNonce0(wallet VmSafeWallet) (*types.Transaction, error) { + return _Vm.Contract.GetNonce0(&_Vm.TransactOpts, wallet) +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_Vm *VmTransactor) GetRecordedLogs(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "getRecordedLogs") +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_Vm *VmSession) GetRecordedLogs() (*types.Transaction, error) { + return _Vm.Contract.GetRecordedLogs(&_Vm.TransactOpts) +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_Vm *VmTransactorSession) GetRecordedLogs() (*types.Transaction, error) { + return _Vm.Contract.GetRecordedLogs(&_Vm.TransactOpts) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_Vm *VmTransactor) IsDir(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "isDir", path) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_Vm *VmSession) IsDir(path string) (*types.Transaction, error) { + return _Vm.Contract.IsDir(&_Vm.TransactOpts, path) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_Vm *VmTransactorSession) IsDir(path string) (*types.Transaction, error) { + return _Vm.Contract.IsDir(&_Vm.TransactOpts, path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_Vm *VmTransactor) IsFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "isFile", path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_Vm *VmSession) IsFile(path string) (*types.Transaction, error) { + return _Vm.Contract.IsFile(&_Vm.TransactOpts, path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_Vm *VmTransactorSession) IsFile(path string) (*types.Transaction, error) { + return _Vm.Contract.IsFile(&_Vm.TransactOpts, path) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_Vm *VmTransactor) Label(opts *bind.TransactOpts, account common.Address, newLabel string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "label", account, newLabel) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_Vm *VmSession) Label(account common.Address, newLabel string) (*types.Transaction, error) { + return _Vm.Contract.Label(&_Vm.TransactOpts, account, newLabel) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_Vm *VmTransactorSession) Label(account common.Address, newLabel string) (*types.Transaction, error) { + return _Vm.Contract.Label(&_Vm.TransactOpts, account, newLabel) +} + +// LoadAllocs is a paid mutator transaction binding the contract method 0xb3a056d7. +// +// Solidity: function loadAllocs(string pathToAllocsJson) returns() +func (_Vm *VmTransactor) LoadAllocs(opts *bind.TransactOpts, pathToAllocsJson string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "loadAllocs", pathToAllocsJson) +} + +// LoadAllocs is a paid mutator transaction binding the contract method 0xb3a056d7. +// +// Solidity: function loadAllocs(string pathToAllocsJson) returns() +func (_Vm *VmSession) LoadAllocs(pathToAllocsJson string) (*types.Transaction, error) { + return _Vm.Contract.LoadAllocs(&_Vm.TransactOpts, pathToAllocsJson) +} + +// LoadAllocs is a paid mutator transaction binding the contract method 0xb3a056d7. +// +// Solidity: function loadAllocs(string pathToAllocsJson) returns() +func (_Vm *VmTransactorSession) LoadAllocs(pathToAllocsJson string) (*types.Transaction, error) { + return _Vm.Contract.LoadAllocs(&_Vm.TransactOpts, pathToAllocsJson) +} + +// MakePersistent is a paid mutator transaction binding the contract method 0x1d9e269e. +// +// Solidity: function makePersistent(address[] accounts) returns() +func (_Vm *VmTransactor) MakePersistent(opts *bind.TransactOpts, accounts []common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "makePersistent", accounts) +} + +// MakePersistent is a paid mutator transaction binding the contract method 0x1d9e269e. +// +// Solidity: function makePersistent(address[] accounts) returns() +func (_Vm *VmSession) MakePersistent(accounts []common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent(&_Vm.TransactOpts, accounts) +} + +// MakePersistent is a paid mutator transaction binding the contract method 0x1d9e269e. +// +// Solidity: function makePersistent(address[] accounts) returns() +func (_Vm *VmTransactorSession) MakePersistent(accounts []common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent(&_Vm.TransactOpts, accounts) +} + +// MakePersistent0 is a paid mutator transaction binding the contract method 0x4074e0a8. +// +// Solidity: function makePersistent(address account0, address account1) returns() +func (_Vm *VmTransactor) MakePersistent0(opts *bind.TransactOpts, account0 common.Address, account1 common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "makePersistent0", account0, account1) +} + +// MakePersistent0 is a paid mutator transaction binding the contract method 0x4074e0a8. +// +// Solidity: function makePersistent(address account0, address account1) returns() +func (_Vm *VmSession) MakePersistent0(account0 common.Address, account1 common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent0(&_Vm.TransactOpts, account0, account1) +} + +// MakePersistent0 is a paid mutator transaction binding the contract method 0x4074e0a8. +// +// Solidity: function makePersistent(address account0, address account1) returns() +func (_Vm *VmTransactorSession) MakePersistent0(account0 common.Address, account1 common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent0(&_Vm.TransactOpts, account0, account1) +} + +// MakePersistent1 is a paid mutator transaction binding the contract method 0x57e22dde. +// +// Solidity: function makePersistent(address account) returns() +func (_Vm *VmTransactor) MakePersistent1(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "makePersistent1", account) +} + +// MakePersistent1 is a paid mutator transaction binding the contract method 0x57e22dde. +// +// Solidity: function makePersistent(address account) returns() +func (_Vm *VmSession) MakePersistent1(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent1(&_Vm.TransactOpts, account) +} + +// MakePersistent1 is a paid mutator transaction binding the contract method 0x57e22dde. +// +// Solidity: function makePersistent(address account) returns() +func (_Vm *VmTransactorSession) MakePersistent1(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent1(&_Vm.TransactOpts, account) +} + +// MakePersistent2 is a paid mutator transaction binding the contract method 0xefb77a75. +// +// Solidity: function makePersistent(address account0, address account1, address account2) returns() +func (_Vm *VmTransactor) MakePersistent2(opts *bind.TransactOpts, account0 common.Address, account1 common.Address, account2 common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "makePersistent2", account0, account1, account2) +} + +// MakePersistent2 is a paid mutator transaction binding the contract method 0xefb77a75. +// +// Solidity: function makePersistent(address account0, address account1, address account2) returns() +func (_Vm *VmSession) MakePersistent2(account0 common.Address, account1 common.Address, account2 common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent2(&_Vm.TransactOpts, account0, account1, account2) +} + +// MakePersistent2 is a paid mutator transaction binding the contract method 0xefb77a75. +// +// Solidity: function makePersistent(address account0, address account1, address account2) returns() +func (_Vm *VmTransactorSession) MakePersistent2(account0 common.Address, account1 common.Address, account2 common.Address) (*types.Transaction, error) { + return _Vm.Contract.MakePersistent2(&_Vm.TransactOpts, account0, account1, account2) +} + +// MockCall is a paid mutator transaction binding the contract method 0x81409b91. +// +// Solidity: function mockCall(address callee, uint256 msgValue, bytes data, bytes returnData) returns() +func (_Vm *VmTransactor) MockCall(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "mockCall", callee, msgValue, data, returnData) +} + +// MockCall is a paid mutator transaction binding the contract method 0x81409b91. +// +// Solidity: function mockCall(address callee, uint256 msgValue, bytes data, bytes returnData) returns() +func (_Vm *VmSession) MockCall(callee common.Address, msgValue *big.Int, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCall(&_Vm.TransactOpts, callee, msgValue, data, returnData) +} + +// MockCall is a paid mutator transaction binding the contract method 0x81409b91. +// +// Solidity: function mockCall(address callee, uint256 msgValue, bytes data, bytes returnData) returns() +func (_Vm *VmTransactorSession) MockCall(callee common.Address, msgValue *big.Int, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCall(&_Vm.TransactOpts, callee, msgValue, data, returnData) +} + +// MockCall0 is a paid mutator transaction binding the contract method 0xb96213e4. +// +// Solidity: function mockCall(address callee, bytes data, bytes returnData) returns() +func (_Vm *VmTransactor) MockCall0(opts *bind.TransactOpts, callee common.Address, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "mockCall0", callee, data, returnData) +} + +// MockCall0 is a paid mutator transaction binding the contract method 0xb96213e4. +// +// Solidity: function mockCall(address callee, bytes data, bytes returnData) returns() +func (_Vm *VmSession) MockCall0(callee common.Address, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCall0(&_Vm.TransactOpts, callee, data, returnData) +} + +// MockCall0 is a paid mutator transaction binding the contract method 0xb96213e4. +// +// Solidity: function mockCall(address callee, bytes data, bytes returnData) returns() +func (_Vm *VmTransactorSession) MockCall0(callee common.Address, data []byte, returnData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCall0(&_Vm.TransactOpts, callee, data, returnData) +} + +// MockCallRevert is a paid mutator transaction binding the contract method 0xd23cd037. +// +// Solidity: function mockCallRevert(address callee, uint256 msgValue, bytes data, bytes revertData) returns() +func (_Vm *VmTransactor) MockCallRevert(opts *bind.TransactOpts, callee common.Address, msgValue *big.Int, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "mockCallRevert", callee, msgValue, data, revertData) +} + +// MockCallRevert is a paid mutator transaction binding the contract method 0xd23cd037. +// +// Solidity: function mockCallRevert(address callee, uint256 msgValue, bytes data, bytes revertData) returns() +func (_Vm *VmSession) MockCallRevert(callee common.Address, msgValue *big.Int, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCallRevert(&_Vm.TransactOpts, callee, msgValue, data, revertData) +} + +// MockCallRevert is a paid mutator transaction binding the contract method 0xd23cd037. +// +// Solidity: function mockCallRevert(address callee, uint256 msgValue, bytes data, bytes revertData) returns() +func (_Vm *VmTransactorSession) MockCallRevert(callee common.Address, msgValue *big.Int, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCallRevert(&_Vm.TransactOpts, callee, msgValue, data, revertData) +} + +// MockCallRevert0 is a paid mutator transaction binding the contract method 0xdbaad147. +// +// Solidity: function mockCallRevert(address callee, bytes data, bytes revertData) returns() +func (_Vm *VmTransactor) MockCallRevert0(opts *bind.TransactOpts, callee common.Address, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "mockCallRevert0", callee, data, revertData) +} + +// MockCallRevert0 is a paid mutator transaction binding the contract method 0xdbaad147. +// +// Solidity: function mockCallRevert(address callee, bytes data, bytes revertData) returns() +func (_Vm *VmSession) MockCallRevert0(callee common.Address, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCallRevert0(&_Vm.TransactOpts, callee, data, revertData) +} + +// MockCallRevert0 is a paid mutator transaction binding the contract method 0xdbaad147. +// +// Solidity: function mockCallRevert(address callee, bytes data, bytes revertData) returns() +func (_Vm *VmTransactorSession) MockCallRevert0(callee common.Address, data []byte, revertData []byte) (*types.Transaction, error) { + return _Vm.Contract.MockCallRevert0(&_Vm.TransactOpts, callee, data, revertData) +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_Vm *VmTransactor) PauseGasMetering(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "pauseGasMetering") +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_Vm *VmSession) PauseGasMetering() (*types.Transaction, error) { + return _Vm.Contract.PauseGasMetering(&_Vm.TransactOpts) +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_Vm *VmTransactorSession) PauseGasMetering() (*types.Transaction, error) { + return _Vm.Contract.PauseGasMetering(&_Vm.TransactOpts) +} + +// Prank is a paid mutator transaction binding the contract method 0x47e50cce. +// +// Solidity: function prank(address msgSender, address txOrigin) returns() +func (_Vm *VmTransactor) Prank(opts *bind.TransactOpts, msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "prank", msgSender, txOrigin) +} + +// Prank is a paid mutator transaction binding the contract method 0x47e50cce. +// +// Solidity: function prank(address msgSender, address txOrigin) returns() +func (_Vm *VmSession) Prank(msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.Contract.Prank(&_Vm.TransactOpts, msgSender, txOrigin) +} + +// Prank is a paid mutator transaction binding the contract method 0x47e50cce. +// +// Solidity: function prank(address msgSender, address txOrigin) returns() +func (_Vm *VmTransactorSession) Prank(msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.Contract.Prank(&_Vm.TransactOpts, msgSender, txOrigin) +} + +// Prank0 is a paid mutator transaction binding the contract method 0xca669fa7. +// +// Solidity: function prank(address msgSender) returns() +func (_Vm *VmTransactor) Prank0(opts *bind.TransactOpts, msgSender common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "prank0", msgSender) +} + +// Prank0 is a paid mutator transaction binding the contract method 0xca669fa7. +// +// Solidity: function prank(address msgSender) returns() +func (_Vm *VmSession) Prank0(msgSender common.Address) (*types.Transaction, error) { + return _Vm.Contract.Prank0(&_Vm.TransactOpts, msgSender) +} + +// Prank0 is a paid mutator transaction binding the contract method 0xca669fa7. +// +// Solidity: function prank(address msgSender) returns() +func (_Vm *VmTransactorSession) Prank0(msgSender common.Address) (*types.Transaction, error) { + return _Vm.Contract.Prank0(&_Vm.TransactOpts, msgSender) +} + +// Prevrandao is a paid mutator transaction binding the contract method 0x3b925549. +// +// Solidity: function prevrandao(bytes32 newPrevrandao) returns() +func (_Vm *VmTransactor) Prevrandao(opts *bind.TransactOpts, newPrevrandao [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "prevrandao", newPrevrandao) +} + +// Prevrandao is a paid mutator transaction binding the contract method 0x3b925549. +// +// Solidity: function prevrandao(bytes32 newPrevrandao) returns() +func (_Vm *VmSession) Prevrandao(newPrevrandao [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Prevrandao(&_Vm.TransactOpts, newPrevrandao) +} + +// Prevrandao is a paid mutator transaction binding the contract method 0x3b925549. +// +// Solidity: function prevrandao(bytes32 newPrevrandao) returns() +func (_Vm *VmTransactorSession) Prevrandao(newPrevrandao [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Prevrandao(&_Vm.TransactOpts, newPrevrandao) +} + +// Prevrandao0 is a paid mutator transaction binding the contract method 0x9cb1c0d4. +// +// Solidity: function prevrandao(uint256 newPrevrandao) returns() +func (_Vm *VmTransactor) Prevrandao0(opts *bind.TransactOpts, newPrevrandao *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "prevrandao0", newPrevrandao) +} + +// Prevrandao0 is a paid mutator transaction binding the contract method 0x9cb1c0d4. +// +// Solidity: function prevrandao(uint256 newPrevrandao) returns() +func (_Vm *VmSession) Prevrandao0(newPrevrandao *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Prevrandao0(&_Vm.TransactOpts, newPrevrandao) +} + +// Prevrandao0 is a paid mutator transaction binding the contract method 0x9cb1c0d4. +// +// Solidity: function prevrandao(uint256 newPrevrandao) returns() +func (_Vm *VmTransactorSession) Prevrandao0(newPrevrandao *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Prevrandao0(&_Vm.TransactOpts, newPrevrandao) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_Vm *VmTransactor) Prompt(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "prompt", promptText) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_Vm *VmSession) Prompt(promptText string) (*types.Transaction, error) { + return _Vm.Contract.Prompt(&_Vm.TransactOpts, promptText) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_Vm *VmTransactorSession) Prompt(promptText string) (*types.Transaction, error) { + return _Vm.Contract.Prompt(&_Vm.TransactOpts, promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_Vm *VmTransactor) PromptAddress(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "promptAddress", promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_Vm *VmSession) PromptAddress(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptAddress(&_Vm.TransactOpts, promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_Vm *VmTransactorSession) PromptAddress(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptAddress(&_Vm.TransactOpts, promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_Vm *VmTransactor) PromptSecret(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "promptSecret", promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_Vm *VmSession) PromptSecret(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptSecret(&_Vm.TransactOpts, promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_Vm *VmTransactorSession) PromptSecret(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptSecret(&_Vm.TransactOpts, promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_Vm *VmTransactor) PromptSecretUint(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "promptSecretUint", promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_Vm *VmSession) PromptSecretUint(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptSecretUint(&_Vm.TransactOpts, promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_Vm *VmTransactorSession) PromptSecretUint(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptSecretUint(&_Vm.TransactOpts, promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_Vm *VmTransactor) PromptUint(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "promptUint", promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_Vm *VmSession) PromptUint(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptUint(&_Vm.TransactOpts, promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_Vm *VmTransactorSession) PromptUint(promptText string) (*types.Transaction, error) { + return _Vm.Contract.PromptUint(&_Vm.TransactOpts, promptText) +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_Vm *VmTransactor) RandomAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "randomAddress") +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_Vm *VmSession) RandomAddress() (*types.Transaction, error) { + return _Vm.Contract.RandomAddress(&_Vm.TransactOpts) +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_Vm *VmTransactorSession) RandomAddress() (*types.Transaction, error) { + return _Vm.Contract.RandomAddress(&_Vm.TransactOpts) +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_Vm *VmTransactor) RandomUint(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "randomUint") +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_Vm *VmSession) RandomUint() (*types.Transaction, error) { + return _Vm.Contract.RandomUint(&_Vm.TransactOpts) +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_Vm *VmTransactorSession) RandomUint() (*types.Transaction, error) { + return _Vm.Contract.RandomUint(&_Vm.TransactOpts) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_Vm *VmTransactor) RandomUint0(opts *bind.TransactOpts, min *big.Int, max *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "randomUint0", min, max) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_Vm *VmSession) RandomUint0(min *big.Int, max *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RandomUint0(&_Vm.TransactOpts, min, max) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_Vm *VmTransactorSession) RandomUint0(min *big.Int, max *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RandomUint0(&_Vm.TransactOpts, min, max) +} + +// ReadCallers is a paid mutator transaction binding the contract method 0x4ad0bac9. +// +// Solidity: function readCallers() returns(uint8 callerMode, address msgSender, address txOrigin) +func (_Vm *VmTransactor) ReadCallers(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "readCallers") +} + +// ReadCallers is a paid mutator transaction binding the contract method 0x4ad0bac9. +// +// Solidity: function readCallers() returns(uint8 callerMode, address msgSender, address txOrigin) +func (_Vm *VmSession) ReadCallers() (*types.Transaction, error) { + return _Vm.Contract.ReadCallers(&_Vm.TransactOpts) +} + +// ReadCallers is a paid mutator transaction binding the contract method 0x4ad0bac9. +// +// Solidity: function readCallers() returns(uint8 callerMode, address msgSender, address txOrigin) +func (_Vm *VmTransactorSession) ReadCallers() (*types.Transaction, error) { + return _Vm.Contract.ReadCallers(&_Vm.TransactOpts) +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_Vm *VmTransactor) Record(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "record") +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_Vm *VmSession) Record() (*types.Transaction, error) { + return _Vm.Contract.Record(&_Vm.TransactOpts) +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_Vm *VmTransactorSession) Record() (*types.Transaction, error) { + return _Vm.Contract.Record(&_Vm.TransactOpts) +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_Vm *VmTransactor) RecordLogs(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "recordLogs") +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_Vm *VmSession) RecordLogs() (*types.Transaction, error) { + return _Vm.Contract.RecordLogs(&_Vm.TransactOpts) +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_Vm *VmTransactorSession) RecordLogs() (*types.Transaction, error) { + return _Vm.Contract.RecordLogs(&_Vm.TransactOpts) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_Vm *VmTransactor) RememberKey(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rememberKey", privateKey) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_Vm *VmSession) RememberKey(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RememberKey(&_Vm.TransactOpts, privateKey) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_Vm *VmTransactorSession) RememberKey(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RememberKey(&_Vm.TransactOpts, privateKey) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_Vm *VmTransactor) RemoveDir(opts *bind.TransactOpts, path string, recursive bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "removeDir", path, recursive) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_Vm *VmSession) RemoveDir(path string, recursive bool) (*types.Transaction, error) { + return _Vm.Contract.RemoveDir(&_Vm.TransactOpts, path, recursive) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_Vm *VmTransactorSession) RemoveDir(path string, recursive bool) (*types.Transaction, error) { + return _Vm.Contract.RemoveDir(&_Vm.TransactOpts, path, recursive) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_Vm *VmTransactor) RemoveFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "removeFile", path) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_Vm *VmSession) RemoveFile(path string) (*types.Transaction, error) { + return _Vm.Contract.RemoveFile(&_Vm.TransactOpts, path) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_Vm *VmTransactorSession) RemoveFile(path string) (*types.Transaction, error) { + return _Vm.Contract.RemoveFile(&_Vm.TransactOpts, path) +} + +// ResetNonce is a paid mutator transaction binding the contract method 0x1c72346d. +// +// Solidity: function resetNonce(address account) returns() +func (_Vm *VmTransactor) ResetNonce(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "resetNonce", account) +} + +// ResetNonce is a paid mutator transaction binding the contract method 0x1c72346d. +// +// Solidity: function resetNonce(address account) returns() +func (_Vm *VmSession) ResetNonce(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.ResetNonce(&_Vm.TransactOpts, account) +} + +// ResetNonce is a paid mutator transaction binding the contract method 0x1c72346d. +// +// Solidity: function resetNonce(address account) returns() +func (_Vm *VmTransactorSession) ResetNonce(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.ResetNonce(&_Vm.TransactOpts, account) +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_Vm *VmTransactor) ResumeGasMetering(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "resumeGasMetering") +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_Vm *VmSession) ResumeGasMetering() (*types.Transaction, error) { + return _Vm.Contract.ResumeGasMetering(&_Vm.TransactOpts) +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_Vm *VmTransactorSession) ResumeGasMetering() (*types.Transaction, error) { + return _Vm.Contract.ResumeGasMetering(&_Vm.TransactOpts) +} + +// RevertTo is a paid mutator transaction binding the contract method 0x44d7f0a4. +// +// Solidity: function revertTo(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactor) RevertTo(opts *bind.TransactOpts, snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "revertTo", snapshotId) +} + +// RevertTo is a paid mutator transaction binding the contract method 0x44d7f0a4. +// +// Solidity: function revertTo(uint256 snapshotId) returns(bool success) +func (_Vm *VmSession) RevertTo(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RevertTo(&_Vm.TransactOpts, snapshotId) +} + +// RevertTo is a paid mutator transaction binding the contract method 0x44d7f0a4. +// +// Solidity: function revertTo(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactorSession) RevertTo(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RevertTo(&_Vm.TransactOpts, snapshotId) +} + +// RevertToAndDelete is a paid mutator transaction binding the contract method 0x03e0aca9. +// +// Solidity: function revertToAndDelete(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactor) RevertToAndDelete(opts *bind.TransactOpts, snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "revertToAndDelete", snapshotId) +} + +// RevertToAndDelete is a paid mutator transaction binding the contract method 0x03e0aca9. +// +// Solidity: function revertToAndDelete(uint256 snapshotId) returns(bool success) +func (_Vm *VmSession) RevertToAndDelete(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RevertToAndDelete(&_Vm.TransactOpts, snapshotId) +} + +// RevertToAndDelete is a paid mutator transaction binding the contract method 0x03e0aca9. +// +// Solidity: function revertToAndDelete(uint256 snapshotId) returns(bool success) +func (_Vm *VmTransactorSession) RevertToAndDelete(snapshotId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RevertToAndDelete(&_Vm.TransactOpts, snapshotId) +} + +// RevokePersistent is a paid mutator transaction binding the contract method 0x3ce969e6. +// +// Solidity: function revokePersistent(address[] accounts) returns() +func (_Vm *VmTransactor) RevokePersistent(opts *bind.TransactOpts, accounts []common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "revokePersistent", accounts) +} + +// RevokePersistent is a paid mutator transaction binding the contract method 0x3ce969e6. +// +// Solidity: function revokePersistent(address[] accounts) returns() +func (_Vm *VmSession) RevokePersistent(accounts []common.Address) (*types.Transaction, error) { + return _Vm.Contract.RevokePersistent(&_Vm.TransactOpts, accounts) +} + +// RevokePersistent is a paid mutator transaction binding the contract method 0x3ce969e6. +// +// Solidity: function revokePersistent(address[] accounts) returns() +func (_Vm *VmTransactorSession) RevokePersistent(accounts []common.Address) (*types.Transaction, error) { + return _Vm.Contract.RevokePersistent(&_Vm.TransactOpts, accounts) +} + +// RevokePersistent0 is a paid mutator transaction binding the contract method 0x997a0222. +// +// Solidity: function revokePersistent(address account) returns() +func (_Vm *VmTransactor) RevokePersistent0(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "revokePersistent0", account) +} + +// RevokePersistent0 is a paid mutator transaction binding the contract method 0x997a0222. +// +// Solidity: function revokePersistent(address account) returns() +func (_Vm *VmSession) RevokePersistent0(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.RevokePersistent0(&_Vm.TransactOpts, account) +} + +// RevokePersistent0 is a paid mutator transaction binding the contract method 0x997a0222. +// +// Solidity: function revokePersistent(address account) returns() +func (_Vm *VmTransactorSession) RevokePersistent0(account common.Address) (*types.Transaction, error) { + return _Vm.Contract.RevokePersistent0(&_Vm.TransactOpts, account) +} + +// Roll is a paid mutator transaction binding the contract method 0x1f7b4f30. +// +// Solidity: function roll(uint256 newHeight) returns() +func (_Vm *VmTransactor) Roll(opts *bind.TransactOpts, newHeight *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "roll", newHeight) +} + +// Roll is a paid mutator transaction binding the contract method 0x1f7b4f30. +// +// Solidity: function roll(uint256 newHeight) returns() +func (_Vm *VmSession) Roll(newHeight *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Roll(&_Vm.TransactOpts, newHeight) +} + +// Roll is a paid mutator transaction binding the contract method 0x1f7b4f30. +// +// Solidity: function roll(uint256 newHeight) returns() +func (_Vm *VmTransactorSession) Roll(newHeight *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Roll(&_Vm.TransactOpts, newHeight) +} + +// RollFork is a paid mutator transaction binding the contract method 0x0f29772b. +// +// Solidity: function rollFork(bytes32 txHash) returns() +func (_Vm *VmTransactor) RollFork(opts *bind.TransactOpts, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rollFork", txHash) +} + +// RollFork is a paid mutator transaction binding the contract method 0x0f29772b. +// +// Solidity: function rollFork(bytes32 txHash) returns() +func (_Vm *VmSession) RollFork(txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.RollFork(&_Vm.TransactOpts, txHash) +} + +// RollFork is a paid mutator transaction binding the contract method 0x0f29772b. +// +// Solidity: function rollFork(bytes32 txHash) returns() +func (_Vm *VmTransactorSession) RollFork(txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.RollFork(&_Vm.TransactOpts, txHash) +} + +// RollFork0 is a paid mutator transaction binding the contract method 0xd74c83a4. +// +// Solidity: function rollFork(uint256 forkId, uint256 blockNumber) returns() +func (_Vm *VmTransactor) RollFork0(opts *bind.TransactOpts, forkId *big.Int, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rollFork0", forkId, blockNumber) +} + +// RollFork0 is a paid mutator transaction binding the contract method 0xd74c83a4. +// +// Solidity: function rollFork(uint256 forkId, uint256 blockNumber) returns() +func (_Vm *VmSession) RollFork0(forkId *big.Int, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RollFork0(&_Vm.TransactOpts, forkId, blockNumber) +} + +// RollFork0 is a paid mutator transaction binding the contract method 0xd74c83a4. +// +// Solidity: function rollFork(uint256 forkId, uint256 blockNumber) returns() +func (_Vm *VmTransactorSession) RollFork0(forkId *big.Int, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RollFork0(&_Vm.TransactOpts, forkId, blockNumber) +} + +// RollFork1 is a paid mutator transaction binding the contract method 0xd9bbf3a1. +// +// Solidity: function rollFork(uint256 blockNumber) returns() +func (_Vm *VmTransactor) RollFork1(opts *bind.TransactOpts, blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rollFork1", blockNumber) +} + +// RollFork1 is a paid mutator transaction binding the contract method 0xd9bbf3a1. +// +// Solidity: function rollFork(uint256 blockNumber) returns() +func (_Vm *VmSession) RollFork1(blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RollFork1(&_Vm.TransactOpts, blockNumber) +} + +// RollFork1 is a paid mutator transaction binding the contract method 0xd9bbf3a1. +// +// Solidity: function rollFork(uint256 blockNumber) returns() +func (_Vm *VmTransactorSession) RollFork1(blockNumber *big.Int) (*types.Transaction, error) { + return _Vm.Contract.RollFork1(&_Vm.TransactOpts, blockNumber) +} + +// RollFork2 is a paid mutator transaction binding the contract method 0xf2830f7b. +// +// Solidity: function rollFork(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmTransactor) RollFork2(opts *bind.TransactOpts, forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rollFork2", forkId, txHash) +} + +// RollFork2 is a paid mutator transaction binding the contract method 0xf2830f7b. +// +// Solidity: function rollFork(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmSession) RollFork2(forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.RollFork2(&_Vm.TransactOpts, forkId, txHash) +} + +// RollFork2 is a paid mutator transaction binding the contract method 0xf2830f7b. +// +// Solidity: function rollFork(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmTransactorSession) RollFork2(forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.RollFork2(&_Vm.TransactOpts, forkId, txHash) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_Vm *VmTransactor) Rpc(opts *bind.TransactOpts, urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rpc", urlOrAlias, method, params) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_Vm *VmSession) Rpc(urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _Vm.Contract.Rpc(&_Vm.TransactOpts, urlOrAlias, method, params) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_Vm *VmTransactorSession) Rpc(urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _Vm.Contract.Rpc(&_Vm.TransactOpts, urlOrAlias, method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_Vm *VmTransactor) Rpc0(opts *bind.TransactOpts, method string, params string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "rpc0", method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_Vm *VmSession) Rpc0(method string, params string) (*types.Transaction, error) { + return _Vm.Contract.Rpc0(&_Vm.TransactOpts, method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_Vm *VmTransactorSession) Rpc0(method string, params string) (*types.Transaction, error) { + return _Vm.Contract.Rpc0(&_Vm.TransactOpts, method, params) +} + +// SelectFork is a paid mutator transaction binding the contract method 0x9ebf6827. +// +// Solidity: function selectFork(uint256 forkId) returns() +func (_Vm *VmTransactor) SelectFork(opts *bind.TransactOpts, forkId *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "selectFork", forkId) +} + +// SelectFork is a paid mutator transaction binding the contract method 0x9ebf6827. +// +// Solidity: function selectFork(uint256 forkId) returns() +func (_Vm *VmSession) SelectFork(forkId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SelectFork(&_Vm.TransactOpts, forkId) +} + +// SelectFork is a paid mutator transaction binding the contract method 0x9ebf6827. +// +// Solidity: function selectFork(uint256 forkId) returns() +func (_Vm *VmTransactorSession) SelectFork(forkId *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SelectFork(&_Vm.TransactOpts, forkId) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_Vm *VmTransactor) SerializeAddress(opts *bind.TransactOpts, objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeAddress", objectKey, valueKey, values) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_Vm *VmSession) SerializeAddress(objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _Vm.Contract.SerializeAddress(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeAddress(objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _Vm.Contract.SerializeAddress(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_Vm *VmTransactor) SerializeAddress0(opts *bind.TransactOpts, objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeAddress0", objectKey, valueKey, value) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_Vm *VmSession) SerializeAddress0(objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _Vm.Contract.SerializeAddress0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_Vm *VmTransactorSession) SerializeAddress0(objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _Vm.Contract.SerializeAddress0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_Vm *VmTransactor) SerializeBool(opts *bind.TransactOpts, objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBool", objectKey, valueKey, values) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_Vm *VmSession) SerializeBool(objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _Vm.Contract.SerializeBool(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeBool(objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _Vm.Contract.SerializeBool(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_Vm *VmTransactor) SerializeBool0(opts *bind.TransactOpts, objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBool0", objectKey, valueKey, value) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_Vm *VmSession) SerializeBool0(objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _Vm.Contract.SerializeBool0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_Vm *VmTransactorSession) SerializeBool0(objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _Vm.Contract.SerializeBool0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_Vm *VmTransactor) SerializeBytes(opts *bind.TransactOpts, objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBytes", objectKey, valueKey, values) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_Vm *VmSession) SerializeBytes(objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeBytes(objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_Vm *VmTransactor) SerializeBytes0(opts *bind.TransactOpts, objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBytes0", objectKey, valueKey, value) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_Vm *VmSession) SerializeBytes0(objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_Vm *VmTransactorSession) SerializeBytes0(objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_Vm *VmTransactor) SerializeBytes32(opts *bind.TransactOpts, objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBytes32", objectKey, valueKey, values) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_Vm *VmSession) SerializeBytes32(objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes32(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeBytes32(objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes32(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_Vm *VmTransactor) SerializeBytes320(opts *bind.TransactOpts, objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeBytes320", objectKey, valueKey, value) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_Vm *VmSession) SerializeBytes320(objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes320(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_Vm *VmTransactorSession) SerializeBytes320(objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeBytes320(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_Vm *VmTransactor) SerializeInt(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeInt", objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_Vm *VmSession) SerializeInt(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeInt(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_Vm *VmTransactorSession) SerializeInt(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeInt(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_Vm *VmTransactor) SerializeInt0(opts *bind.TransactOpts, objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeInt0", objectKey, valueKey, values) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_Vm *VmSession) SerializeInt0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeInt0(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeInt0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeInt0(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_Vm *VmTransactor) SerializeJson(opts *bind.TransactOpts, objectKey string, value string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeJson", objectKey, value) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_Vm *VmSession) SerializeJson(objectKey string, value string) (*types.Transaction, error) { + return _Vm.Contract.SerializeJson(&_Vm.TransactOpts, objectKey, value) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_Vm *VmTransactorSession) SerializeJson(objectKey string, value string) (*types.Transaction, error) { + return _Vm.Contract.SerializeJson(&_Vm.TransactOpts, objectKey, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_Vm *VmTransactor) SerializeJsonType0(opts *bind.TransactOpts, objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeJsonType0", objectKey, valueKey, typeDescription, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_Vm *VmSession) SerializeJsonType0(objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeJsonType0(&_Vm.TransactOpts, objectKey, valueKey, typeDescription, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_Vm *VmTransactorSession) SerializeJsonType0(objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _Vm.Contract.SerializeJsonType0(&_Vm.TransactOpts, objectKey, valueKey, typeDescription, value) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_Vm *VmTransactor) SerializeString(opts *bind.TransactOpts, objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeString", objectKey, valueKey, values) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_Vm *VmSession) SerializeString(objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _Vm.Contract.SerializeString(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeString(objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _Vm.Contract.SerializeString(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_Vm *VmTransactor) SerializeString0(opts *bind.TransactOpts, objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeString0", objectKey, valueKey, value) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_Vm *VmSession) SerializeString0(objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _Vm.Contract.SerializeString0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_Vm *VmTransactorSession) SerializeString0(objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _Vm.Contract.SerializeString0(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmTransactor) SerializeUint(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeUint", objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmSession) SerializeUint(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUint(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmTransactorSession) SerializeUint(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUint(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_Vm *VmTransactor) SerializeUint0(opts *bind.TransactOpts, objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeUint0", objectKey, valueKey, values) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_Vm *VmSession) SerializeUint0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUint0(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_Vm *VmTransactorSession) SerializeUint0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUint0(&_Vm.TransactOpts, objectKey, valueKey, values) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmTransactor) SerializeUintToHex(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "serializeUintToHex", objectKey, valueKey, value) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmSession) SerializeUintToHex(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUintToHex(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_Vm *VmTransactorSession) SerializeUintToHex(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _Vm.Contract.SerializeUintToHex(&_Vm.TransactOpts, objectKey, valueKey, value) +} + +// SetBlockhash is a paid mutator transaction binding the contract method 0x5314b54a. +// +// Solidity: function setBlockhash(uint256 blockNumber, bytes32 blockHash) returns() +func (_Vm *VmTransactor) SetBlockhash(opts *bind.TransactOpts, blockNumber *big.Int, blockHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "setBlockhash", blockNumber, blockHash) +} + +// SetBlockhash is a paid mutator transaction binding the contract method 0x5314b54a. +// +// Solidity: function setBlockhash(uint256 blockNumber, bytes32 blockHash) returns() +func (_Vm *VmSession) SetBlockhash(blockNumber *big.Int, blockHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.SetBlockhash(&_Vm.TransactOpts, blockNumber, blockHash) +} + +// SetBlockhash is a paid mutator transaction binding the contract method 0x5314b54a. +// +// Solidity: function setBlockhash(uint256 blockNumber, bytes32 blockHash) returns() +func (_Vm *VmTransactorSession) SetBlockhash(blockNumber *big.Int, blockHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.SetBlockhash(&_Vm.TransactOpts, blockNumber, blockHash) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_Vm *VmTransactor) SetEnv(opts *bind.TransactOpts, name string, value string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "setEnv", name, value) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_Vm *VmSession) SetEnv(name string, value string) (*types.Transaction, error) { + return _Vm.Contract.SetEnv(&_Vm.TransactOpts, name, value) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_Vm *VmTransactorSession) SetEnv(name string, value string) (*types.Transaction, error) { + return _Vm.Contract.SetEnv(&_Vm.TransactOpts, name, value) +} + +// SetNonce is a paid mutator transaction binding the contract method 0xf8e18b57. +// +// Solidity: function setNonce(address account, uint64 newNonce) returns() +func (_Vm *VmTransactor) SetNonce(opts *bind.TransactOpts, account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "setNonce", account, newNonce) +} + +// SetNonce is a paid mutator transaction binding the contract method 0xf8e18b57. +// +// Solidity: function setNonce(address account, uint64 newNonce) returns() +func (_Vm *VmSession) SetNonce(account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.Contract.SetNonce(&_Vm.TransactOpts, account, newNonce) +} + +// SetNonce is a paid mutator transaction binding the contract method 0xf8e18b57. +// +// Solidity: function setNonce(address account, uint64 newNonce) returns() +func (_Vm *VmTransactorSession) SetNonce(account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.Contract.SetNonce(&_Vm.TransactOpts, account, newNonce) +} + +// SetNonceUnsafe is a paid mutator transaction binding the contract method 0x9b67b21c. +// +// Solidity: function setNonceUnsafe(address account, uint64 newNonce) returns() +func (_Vm *VmTransactor) SetNonceUnsafe(opts *bind.TransactOpts, account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "setNonceUnsafe", account, newNonce) +} + +// SetNonceUnsafe is a paid mutator transaction binding the contract method 0x9b67b21c. +// +// Solidity: function setNonceUnsafe(address account, uint64 newNonce) returns() +func (_Vm *VmSession) SetNonceUnsafe(account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.Contract.SetNonceUnsafe(&_Vm.TransactOpts, account, newNonce) +} + +// SetNonceUnsafe is a paid mutator transaction binding the contract method 0x9b67b21c. +// +// Solidity: function setNonceUnsafe(address account, uint64 newNonce) returns() +func (_Vm *VmTransactorSession) SetNonceUnsafe(account common.Address, newNonce uint64) (*types.Transaction, error) { + return _Vm.Contract.SetNonceUnsafe(&_Vm.TransactOpts, account, newNonce) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmTransactor) Sign1(opts *bind.TransactOpts, wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "sign1", wallet, digest) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmSession) Sign1(wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Sign1(&_Vm.TransactOpts, wallet, digest) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_Vm *VmTransactorSession) Sign1(wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Sign1(&_Vm.TransactOpts, wallet, digest) +} + +// Skip is a paid mutator transaction binding the contract method 0xdd82d13e. +// +// Solidity: function skip(bool skipTest) returns() +func (_Vm *VmTransactor) Skip(opts *bind.TransactOpts, skipTest bool) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "skip", skipTest) +} + +// Skip is a paid mutator transaction binding the contract method 0xdd82d13e. +// +// Solidity: function skip(bool skipTest) returns() +func (_Vm *VmSession) Skip(skipTest bool) (*types.Transaction, error) { + return _Vm.Contract.Skip(&_Vm.TransactOpts, skipTest) +} + +// Skip is a paid mutator transaction binding the contract method 0xdd82d13e. +// +// Solidity: function skip(bool skipTest) returns() +func (_Vm *VmTransactorSession) Skip(skipTest bool) (*types.Transaction, error) { + return _Vm.Contract.Skip(&_Vm.TransactOpts, skipTest) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_Vm *VmTransactor) Sleep(opts *bind.TransactOpts, duration *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "sleep", duration) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_Vm *VmSession) Sleep(duration *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Sleep(&_Vm.TransactOpts, duration) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_Vm *VmTransactorSession) Sleep(duration *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Sleep(&_Vm.TransactOpts, duration) +} + +// Snapshot is a paid mutator transaction binding the contract method 0x9711715a. +// +// Solidity: function snapshot() returns(uint256 snapshotId) +func (_Vm *VmTransactor) Snapshot(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "snapshot") +} + +// Snapshot is a paid mutator transaction binding the contract method 0x9711715a. +// +// Solidity: function snapshot() returns(uint256 snapshotId) +func (_Vm *VmSession) Snapshot() (*types.Transaction, error) { + return _Vm.Contract.Snapshot(&_Vm.TransactOpts) +} + +// Snapshot is a paid mutator transaction binding the contract method 0x9711715a. +// +// Solidity: function snapshot() returns(uint256 snapshotId) +func (_Vm *VmTransactorSession) Snapshot() (*types.Transaction, error) { + return _Vm.Contract.Snapshot(&_Vm.TransactOpts) +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_Vm *VmTransactor) StartBroadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startBroadcast") +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_Vm *VmSession) StartBroadcast() (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast(&_Vm.TransactOpts) +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_Vm *VmTransactorSession) StartBroadcast() (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast(&_Vm.TransactOpts) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_Vm *VmTransactor) StartBroadcast0(opts *bind.TransactOpts, signer common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startBroadcast0", signer) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_Vm *VmSession) StartBroadcast0(signer common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast0(&_Vm.TransactOpts, signer) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_Vm *VmTransactorSession) StartBroadcast0(signer common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast0(&_Vm.TransactOpts, signer) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_Vm *VmTransactor) StartBroadcast1(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startBroadcast1", privateKey) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_Vm *VmSession) StartBroadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast1(&_Vm.TransactOpts, privateKey) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_Vm *VmTransactorSession) StartBroadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _Vm.Contract.StartBroadcast1(&_Vm.TransactOpts, privateKey) +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_Vm *VmTransactor) StartMappingRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startMappingRecording") +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_Vm *VmSession) StartMappingRecording() (*types.Transaction, error) { + return _Vm.Contract.StartMappingRecording(&_Vm.TransactOpts) +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_Vm *VmTransactorSession) StartMappingRecording() (*types.Transaction, error) { + return _Vm.Contract.StartMappingRecording(&_Vm.TransactOpts) +} + +// StartPrank is a paid mutator transaction binding the contract method 0x06447d56. +// +// Solidity: function startPrank(address msgSender) returns() +func (_Vm *VmTransactor) StartPrank(opts *bind.TransactOpts, msgSender common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startPrank", msgSender) +} + +// StartPrank is a paid mutator transaction binding the contract method 0x06447d56. +// +// Solidity: function startPrank(address msgSender) returns() +func (_Vm *VmSession) StartPrank(msgSender common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartPrank(&_Vm.TransactOpts, msgSender) +} + +// StartPrank is a paid mutator transaction binding the contract method 0x06447d56. +// +// Solidity: function startPrank(address msgSender) returns() +func (_Vm *VmTransactorSession) StartPrank(msgSender common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartPrank(&_Vm.TransactOpts, msgSender) +} + +// StartPrank0 is a paid mutator transaction binding the contract method 0x45b56078. +// +// Solidity: function startPrank(address msgSender, address txOrigin) returns() +func (_Vm *VmTransactor) StartPrank0(opts *bind.TransactOpts, msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startPrank0", msgSender, txOrigin) +} + +// StartPrank0 is a paid mutator transaction binding the contract method 0x45b56078. +// +// Solidity: function startPrank(address msgSender, address txOrigin) returns() +func (_Vm *VmSession) StartPrank0(msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartPrank0(&_Vm.TransactOpts, msgSender, txOrigin) +} + +// StartPrank0 is a paid mutator transaction binding the contract method 0x45b56078. +// +// Solidity: function startPrank(address msgSender, address txOrigin) returns() +func (_Vm *VmTransactorSession) StartPrank0(msgSender common.Address, txOrigin common.Address) (*types.Transaction, error) { + return _Vm.Contract.StartPrank0(&_Vm.TransactOpts, msgSender, txOrigin) +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_Vm *VmTransactor) StartStateDiffRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "startStateDiffRecording") +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_Vm *VmSession) StartStateDiffRecording() (*types.Transaction, error) { + return _Vm.Contract.StartStateDiffRecording(&_Vm.TransactOpts) +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_Vm *VmTransactorSession) StartStateDiffRecording() (*types.Transaction, error) { + return _Vm.Contract.StartStateDiffRecording(&_Vm.TransactOpts) +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_Vm *VmTransactor) StopAndReturnStateDiff(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "stopAndReturnStateDiff") +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_Vm *VmSession) StopAndReturnStateDiff() (*types.Transaction, error) { + return _Vm.Contract.StopAndReturnStateDiff(&_Vm.TransactOpts) +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_Vm *VmTransactorSession) StopAndReturnStateDiff() (*types.Transaction, error) { + return _Vm.Contract.StopAndReturnStateDiff(&_Vm.TransactOpts) +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_Vm *VmTransactor) StopBroadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "stopBroadcast") +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_Vm *VmSession) StopBroadcast() (*types.Transaction, error) { + return _Vm.Contract.StopBroadcast(&_Vm.TransactOpts) +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_Vm *VmTransactorSession) StopBroadcast() (*types.Transaction, error) { + return _Vm.Contract.StopBroadcast(&_Vm.TransactOpts) +} + +// StopExpectSafeMemory is a paid mutator transaction binding the contract method 0x0956441b. +// +// Solidity: function stopExpectSafeMemory() returns() +func (_Vm *VmTransactor) StopExpectSafeMemory(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "stopExpectSafeMemory") +} + +// StopExpectSafeMemory is a paid mutator transaction binding the contract method 0x0956441b. +// +// Solidity: function stopExpectSafeMemory() returns() +func (_Vm *VmSession) StopExpectSafeMemory() (*types.Transaction, error) { + return _Vm.Contract.StopExpectSafeMemory(&_Vm.TransactOpts) +} + +// StopExpectSafeMemory is a paid mutator transaction binding the contract method 0x0956441b. +// +// Solidity: function stopExpectSafeMemory() returns() +func (_Vm *VmTransactorSession) StopExpectSafeMemory() (*types.Transaction, error) { + return _Vm.Contract.StopExpectSafeMemory(&_Vm.TransactOpts) +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_Vm *VmTransactor) StopMappingRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "stopMappingRecording") +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_Vm *VmSession) StopMappingRecording() (*types.Transaction, error) { + return _Vm.Contract.StopMappingRecording(&_Vm.TransactOpts) +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_Vm *VmTransactorSession) StopMappingRecording() (*types.Transaction, error) { + return _Vm.Contract.StopMappingRecording(&_Vm.TransactOpts) +} + +// StopPrank is a paid mutator transaction binding the contract method 0x90c5013b. +// +// Solidity: function stopPrank() returns() +func (_Vm *VmTransactor) StopPrank(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "stopPrank") +} + +// StopPrank is a paid mutator transaction binding the contract method 0x90c5013b. +// +// Solidity: function stopPrank() returns() +func (_Vm *VmSession) StopPrank() (*types.Transaction, error) { + return _Vm.Contract.StopPrank(&_Vm.TransactOpts) +} + +// StopPrank is a paid mutator transaction binding the contract method 0x90c5013b. +// +// Solidity: function stopPrank() returns() +func (_Vm *VmTransactorSession) StopPrank() (*types.Transaction, error) { + return _Vm.Contract.StopPrank(&_Vm.TransactOpts) +} + +// Store is a paid mutator transaction binding the contract method 0x70ca10bb. +// +// Solidity: function store(address target, bytes32 slot, bytes32 value) returns() +func (_Vm *VmTransactor) Store(opts *bind.TransactOpts, target common.Address, slot [32]byte, value [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "store", target, slot, value) +} + +// Store is a paid mutator transaction binding the contract method 0x70ca10bb. +// +// Solidity: function store(address target, bytes32 slot, bytes32 value) returns() +func (_Vm *VmSession) Store(target common.Address, slot [32]byte, value [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Store(&_Vm.TransactOpts, target, slot, value) +} + +// Store is a paid mutator transaction binding the contract method 0x70ca10bb. +// +// Solidity: function store(address target, bytes32 slot, bytes32 value) returns() +func (_Vm *VmTransactorSession) Store(target common.Address, slot [32]byte, value [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Store(&_Vm.TransactOpts, target, slot, value) +} + +// Transact is a paid mutator transaction binding the contract method 0x4d8abc4b. +// +// Solidity: function transact(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmTransactor) Transact(opts *bind.TransactOpts, forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "transact", forkId, txHash) +} + +// Transact is a paid mutator transaction binding the contract method 0x4d8abc4b. +// +// Solidity: function transact(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmSession) Transact(forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Transact(&_Vm.TransactOpts, forkId, txHash) +} + +// Transact is a paid mutator transaction binding the contract method 0x4d8abc4b. +// +// Solidity: function transact(uint256 forkId, bytes32 txHash) returns() +func (_Vm *VmTransactorSession) Transact(forkId *big.Int, txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Transact(&_Vm.TransactOpts, forkId, txHash) +} + +// Transact0 is a paid mutator transaction binding the contract method 0xbe646da1. +// +// Solidity: function transact(bytes32 txHash) returns() +func (_Vm *VmTransactor) Transact0(opts *bind.TransactOpts, txHash [32]byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "transact0", txHash) +} + +// Transact0 is a paid mutator transaction binding the contract method 0xbe646da1. +// +// Solidity: function transact(bytes32 txHash) returns() +func (_Vm *VmSession) Transact0(txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Transact0(&_Vm.TransactOpts, txHash) +} + +// Transact0 is a paid mutator transaction binding the contract method 0xbe646da1. +// +// Solidity: function transact(bytes32 txHash) returns() +func (_Vm *VmTransactorSession) Transact0(txHash [32]byte) (*types.Transaction, error) { + return _Vm.Contract.Transact0(&_Vm.TransactOpts, txHash) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_Vm *VmTransactor) TryFfi(opts *bind.TransactOpts, commandInput []string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "tryFfi", commandInput) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_Vm *VmSession) TryFfi(commandInput []string) (*types.Transaction, error) { + return _Vm.Contract.TryFfi(&_Vm.TransactOpts, commandInput) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_Vm *VmTransactorSession) TryFfi(commandInput []string) (*types.Transaction, error) { + return _Vm.Contract.TryFfi(&_Vm.TransactOpts, commandInput) +} + +// TxGasPrice is a paid mutator transaction binding the contract method 0x48f50c0f. +// +// Solidity: function txGasPrice(uint256 newGasPrice) returns() +func (_Vm *VmTransactor) TxGasPrice(opts *bind.TransactOpts, newGasPrice *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "txGasPrice", newGasPrice) +} + +// TxGasPrice is a paid mutator transaction binding the contract method 0x48f50c0f. +// +// Solidity: function txGasPrice(uint256 newGasPrice) returns() +func (_Vm *VmSession) TxGasPrice(newGasPrice *big.Int) (*types.Transaction, error) { + return _Vm.Contract.TxGasPrice(&_Vm.TransactOpts, newGasPrice) +} + +// TxGasPrice is a paid mutator transaction binding the contract method 0x48f50c0f. +// +// Solidity: function txGasPrice(uint256 newGasPrice) returns() +func (_Vm *VmTransactorSession) TxGasPrice(newGasPrice *big.Int) (*types.Transaction, error) { + return _Vm.Contract.TxGasPrice(&_Vm.TransactOpts, newGasPrice) +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_Vm *VmTransactor) UnixTime(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "unixTime") +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_Vm *VmSession) UnixTime() (*types.Transaction, error) { + return _Vm.Contract.UnixTime(&_Vm.TransactOpts) +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_Vm *VmTransactorSession) UnixTime() (*types.Transaction, error) { + return _Vm.Contract.UnixTime(&_Vm.TransactOpts) +} + +// Warp is a paid mutator transaction binding the contract method 0xe5d6bf02. +// +// Solidity: function warp(uint256 newTimestamp) returns() +func (_Vm *VmTransactor) Warp(opts *bind.TransactOpts, newTimestamp *big.Int) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "warp", newTimestamp) +} + +// Warp is a paid mutator transaction binding the contract method 0xe5d6bf02. +// +// Solidity: function warp(uint256 newTimestamp) returns() +func (_Vm *VmSession) Warp(newTimestamp *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Warp(&_Vm.TransactOpts, newTimestamp) +} + +// Warp is a paid mutator transaction binding the contract method 0xe5d6bf02. +// +// Solidity: function warp(uint256 newTimestamp) returns() +func (_Vm *VmTransactorSession) Warp(newTimestamp *big.Int) (*types.Transaction, error) { + return _Vm.Contract.Warp(&_Vm.TransactOpts, newTimestamp) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_Vm *VmTransactor) WriteFile(opts *bind.TransactOpts, path string, data string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeFile", path, data) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_Vm *VmSession) WriteFile(path string, data string) (*types.Transaction, error) { + return _Vm.Contract.WriteFile(&_Vm.TransactOpts, path, data) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_Vm *VmTransactorSession) WriteFile(path string, data string) (*types.Transaction, error) { + return _Vm.Contract.WriteFile(&_Vm.TransactOpts, path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_Vm *VmTransactor) WriteFileBinary(opts *bind.TransactOpts, path string, data []byte) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeFileBinary", path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_Vm *VmSession) WriteFileBinary(path string, data []byte) (*types.Transaction, error) { + return _Vm.Contract.WriteFileBinary(&_Vm.TransactOpts, path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_Vm *VmTransactorSession) WriteFileBinary(path string, data []byte) (*types.Transaction, error) { + return _Vm.Contract.WriteFileBinary(&_Vm.TransactOpts, path, data) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_Vm *VmTransactor) WriteJson(opts *bind.TransactOpts, json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeJson", json, path, valueKey) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_Vm *VmSession) WriteJson(json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.Contract.WriteJson(&_Vm.TransactOpts, json, path, valueKey) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_Vm *VmTransactorSession) WriteJson(json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.Contract.WriteJson(&_Vm.TransactOpts, json, path, valueKey) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_Vm *VmTransactor) WriteJson0(opts *bind.TransactOpts, json string, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeJson0", json, path) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_Vm *VmSession) WriteJson0(json string, path string) (*types.Transaction, error) { + return _Vm.Contract.WriteJson0(&_Vm.TransactOpts, json, path) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_Vm *VmTransactorSession) WriteJson0(json string, path string) (*types.Transaction, error) { + return _Vm.Contract.WriteJson0(&_Vm.TransactOpts, json, path) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_Vm *VmTransactor) WriteLine(opts *bind.TransactOpts, path string, data string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeLine", path, data) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_Vm *VmSession) WriteLine(path string, data string) (*types.Transaction, error) { + return _Vm.Contract.WriteLine(&_Vm.TransactOpts, path, data) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_Vm *VmTransactorSession) WriteLine(path string, data string) (*types.Transaction, error) { + return _Vm.Contract.WriteLine(&_Vm.TransactOpts, path, data) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_Vm *VmTransactor) WriteToml(opts *bind.TransactOpts, json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeToml", json, path, valueKey) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_Vm *VmSession) WriteToml(json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.Contract.WriteToml(&_Vm.TransactOpts, json, path, valueKey) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_Vm *VmTransactorSession) WriteToml(json string, path string, valueKey string) (*types.Transaction, error) { + return _Vm.Contract.WriteToml(&_Vm.TransactOpts, json, path, valueKey) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_Vm *VmTransactor) WriteToml0(opts *bind.TransactOpts, json string, path string) (*types.Transaction, error) { + return _Vm.contract.Transact(opts, "writeToml0", json, path) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_Vm *VmSession) WriteToml0(json string, path string) (*types.Transaction, error) { + return _Vm.Contract.WriteToml0(&_Vm.TransactOpts, json, path) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_Vm *VmTransactorSession) WriteToml0(json string, path string) (*types.Transaction, error) { + return _Vm.Contract.WriteToml0(&_Vm.TransactOpts, json, path) +} diff --git a/v2/pkg/vm.sol/vmsafe.go b/v2/pkg/vm.sol/vmsafe.go new file mode 100644 index 00000000..80eb5739 --- /dev/null +++ b/v2/pkg/vm.sol/vmsafe.go @@ -0,0 +1,9344 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package vm + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// VmSafeAccountAccess is an auto generated low-level Go binding around an user-defined struct. +type VmSafeAccountAccess struct { + ChainInfo VmSafeChainInfo + Kind uint8 + Account common.Address + Accessor common.Address + Initialized bool + OldBalance *big.Int + NewBalance *big.Int + DeployedCode []byte + Value *big.Int + Data []byte + Reverted bool + StorageAccesses []VmSafeStorageAccess + Depth uint64 +} + +// VmSafeChainInfo is an auto generated low-level Go binding around an user-defined struct. +type VmSafeChainInfo struct { + ForkId *big.Int + ChainId *big.Int +} + +// VmSafeDirEntry is an auto generated low-level Go binding around an user-defined struct. +type VmSafeDirEntry struct { + ErrorMessage string + Path string + Depth uint64 + IsDir bool + IsSymlink bool +} + +// VmSafeEthGetLogs is an auto generated low-level Go binding around an user-defined struct. +type VmSafeEthGetLogs struct { + Emitter common.Address + Topics [][32]byte + Data []byte + BlockHash [32]byte + BlockNumber uint64 + TransactionHash [32]byte + TransactionIndex uint64 + LogIndex *big.Int + Removed bool +} + +// VmSafeFfiResult is an auto generated low-level Go binding around an user-defined struct. +type VmSafeFfiResult struct { + ExitCode int32 + Stdout []byte + Stderr []byte +} + +// VmSafeFsMetadata is an auto generated low-level Go binding around an user-defined struct. +type VmSafeFsMetadata struct { + IsDir bool + IsSymlink bool + Length *big.Int + ReadOnly bool + Modified *big.Int + Accessed *big.Int + Created *big.Int +} + +// VmSafeGas is an auto generated low-level Go binding around an user-defined struct. +type VmSafeGas struct { + GasLimit uint64 + GasTotalUsed uint64 + GasMemoryUsed uint64 + GasRefunded int64 + GasRemaining uint64 +} + +// VmSafeLog is an auto generated low-level Go binding around an user-defined struct. +type VmSafeLog struct { + Topics [][32]byte + Data []byte + Emitter common.Address +} + +// VmSafeRpc is an auto generated low-level Go binding around an user-defined struct. +type VmSafeRpc struct { + Key string + Url string +} + +// VmSafeStorageAccess is an auto generated low-level Go binding around an user-defined struct. +type VmSafeStorageAccess struct { + Account common.Address + Slot [32]byte + IsWrite bool + PreviousValue [32]byte + NewValue [32]byte + Reverted bool +} + +// VmSafeWallet is an auto generated low-level Go binding around an user-defined struct. +type VmSafeWallet struct { + Addr common.Address + PublicKeyX *big.Int + PublicKeyY *big.Int + PrivateKey *big.Int +} + +// VmSafeMetaData contains all meta data concerning the VmSafe contract. +var VmSafeMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"accesses\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"readSlots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"writeSlots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addr\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"keyAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbs\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqAbsDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRel\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertApproxEqRelDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"maxPercentDelta\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertFalse\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertFalse\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertGtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLe\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLeDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLt\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertLtDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"right\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"right\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"right\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"right\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"right\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"right\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"right\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"right\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"right\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"right\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"right\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"right\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEq\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"right\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertNotEqDecimal\",\"inputs\":[{\"name\":\"left\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"right\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertTrue\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assertTrue\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"error\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"assume\",\"inputs\":[{\"name\":\"condition\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"breakpoint\",\"inputs\":[{\"name\":\"char\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"breakpoint\",\"inputs\":[{\"name\":\"char\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"broadcast\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"closeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"computeCreate2Address\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"computeCreate2Address\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"initCodeHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"deployer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"computeCreateAddress\",\"inputs\":[{\"name\":\"deployer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"copyFile\",\"inputs\":[{\"name\":\"from\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"to\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"copied\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"recursive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"walletLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createWallet\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"walletLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"constructorArgs\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"deployedAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"deployedAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"derivationPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"language\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"language\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"deriveKey\",\"inputs\":[{\"name\":\"mnemonic\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"derivationPath\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"index\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"ensNamehash\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"envAddress\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envAddress\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBool\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBool\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes32\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envBytes32\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envExists\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envInt\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envInt\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envOr\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"defaultValue\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envString\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envString\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envUint\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"envUint\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delim\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eth_getLogs\",\"inputs\":[{\"name\":\"fromBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"toBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"logs\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.EthGetLogs[]\",\"components\":[{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"transactionHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"transactionIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"removed\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"exists\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ffi\",\"inputs\":[{\"name\":\"commandInput\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"fsMetadata\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"metadata\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.FsMetadata\",\"components\":[{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"readOnly\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"modified\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"accessed\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"created\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobBaseFee\",\"inputs\":[],\"outputs\":[{\"name\":\"blobBaseFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"creationBytecode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeployedCode\",\"inputs\":[{\"name\":\"artifactPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"runtimeBytecode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLabel\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"currentLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMappingKeyAndParentOf\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"elementSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"found\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parent\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMappingLength\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"mappingSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMappingSlotAt\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"mappingSlot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"idx\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getNonce\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNonce\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRecordedLogs\",\"inputs\":[],\"outputs\":[{\"name\":\"logs\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.Log[]\",\"components\":[{\"name\":\"topics\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"emitter\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"indexOf\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"isContext\",\"inputs\":[{\"name\":\"context\",\"type\":\"uint8\",\"internalType\":\"enumVmSafe.ForgeContext\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"keyExists\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyExistsJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyExistsToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"label\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newLabel\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCallGas\",\"inputs\":[],\"outputs\":[{\"name\":\"gas\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Gas\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasTotalUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasMemoryUsed\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasRefunded\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"gasRemaining\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"load\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"parseAddress\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBool\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBytes\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseBytes32\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseInt\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonAddress\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonAddressArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBool\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBoolArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes32\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytes32Array\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonBytesArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonInt\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonIntArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonKeys\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"keys\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonString\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonStringArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonType\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonType\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonTypeArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonUint\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseJsonUintArray\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseToml\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"abiEncodedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlAddress\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlAddressArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBool\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBoolArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes32\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytes32Array\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlBytesArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlInt\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlIntArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlKeys\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"keys\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlString\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlStringArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlUint\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseTomlUintArray\",\"inputs\":[{\"name\":\"toml\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"parseUint\",\"inputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"parsedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"pauseGasMetering\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"projectRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"prompt\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptAddress\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptSecret\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptSecretUint\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"promptUint\",\"inputs\":[{\"name\":\"promptText\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomUint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"randomUint\",\"inputs\":[{\"name\":\"min\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"maxDepth\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"maxDepth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"followLinks\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"entries\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.DirEntry[]\",\"components\":[{\"name\":\"errorMessage\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isDir\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"isSymlink\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readFileBinary\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readLine\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"line\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readLink\",\"inputs\":[{\"name\":\"linkPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"targetPath\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"record\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recordLogs\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rememberKey\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"keyAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDir\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"recursive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"replace\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"from\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"to\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"resumeGasMetering\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpc\",\"inputs\":[{\"name\":\"urlOrAlias\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"method\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpc\",\"inputs\":[{\"name\":\"method\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rpcUrl\",\"inputs\":[{\"name\":\"rpcAlias\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"rpcUrlStructs\",\"inputs\":[],\"outputs\":[{\"name\":\"urls\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.Rpc[]\",\"components\":[{\"name\":\"key\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"url\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"rpcUrls\",\"inputs\":[],\"outputs\":[{\"name\":\"urls\",\"type\":\"string[2][]\",\"internalType\":\"string[2][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"serializeAddress\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeAddress\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBool\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBool\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes32\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeBytes32\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeInt\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeInt\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"int256[]\",\"internalType\":\"int256[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeJson\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeJsonType\",\"inputs\":[{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"serializeJsonType\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"typeDescription\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeString\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeString\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUint\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUint\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"values\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serializeUintToHex\",\"inputs\":[{\"name\":\"objectKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEnv\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"value\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.Wallet\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"publicKeyX\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"publicKeyY\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sign\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"signP256\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"digest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sleep\",\"inputs\":[{\"name\":\"duration\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"split\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"delimiter\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"outputs\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startBroadcast\",\"inputs\":[{\"name\":\"privateKey\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startMappingRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"startStateDiffRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopAndReturnStateDiff\",\"inputs\":[],\"outputs\":[{\"name\":\"accountAccesses\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.AccountAccess[]\",\"components\":[{\"name\":\"chainInfo\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.ChainInfo\",\"components\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"enumVmSafe.AccountAccessKind\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"accessor\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialized\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"oldBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deployedCode\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reverted\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"storageAccesses\",\"type\":\"tuple[]\",\"internalType\":\"structVmSafe.StorageAccess[]\",\"components\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"isWrite\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"previousValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"newValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reverted\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"depth\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopBroadcast\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stopMappingRecording\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"toBase64\",\"inputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64URL\",\"inputs\":[{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toBase64URL\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toLowercase\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toString\",\"inputs\":[{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"stringifiedValue\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"toUppercase\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"trim\",\"inputs\":[{\"name\":\"input\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"output\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"tryFfi\",\"inputs\":[{\"name\":\"commandInput\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"tuple\",\"internalType\":\"structVmSafe.FfiResult\",\"components\":[{\"name\":\"exitCode\",\"type\":\"int32\",\"internalType\":\"int32\"},{\"name\":\"stdout\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stderr\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unixTime\",\"inputs\":[],\"outputs\":[{\"name\":\"milliseconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeFile\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeFileBinary\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeJson\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeLine\",\"inputs\":[{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"data\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeToml\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"valueKey\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeToml\",\"inputs\":[{\"name\":\"json\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"path\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// VmSafeABI is the input ABI used to generate the binding from. +// Deprecated: Use VmSafeMetaData.ABI instead. +var VmSafeABI = VmSafeMetaData.ABI + +// VmSafe is an auto generated Go binding around an Ethereum contract. +type VmSafe struct { + VmSafeCaller // Read-only binding to the contract + VmSafeTransactor // Write-only binding to the contract + VmSafeFilterer // Log filterer for contract events +} + +// VmSafeCaller is an auto generated read-only Go binding around an Ethereum contract. +type VmSafeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmSafeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VmSafeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmSafeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VmSafeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VmSafeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VmSafeSession struct { + Contract *VmSafe // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VmSafeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VmSafeCallerSession struct { + Contract *VmSafeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VmSafeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VmSafeTransactorSession struct { + Contract *VmSafeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VmSafeRaw is an auto generated low-level Go binding around an Ethereum contract. +type VmSafeRaw struct { + Contract *VmSafe // Generic contract binding to access the raw methods on +} + +// VmSafeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VmSafeCallerRaw struct { + Contract *VmSafeCaller // Generic read-only contract binding to access the raw methods on +} + +// VmSafeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VmSafeTransactorRaw struct { + Contract *VmSafeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVmSafe creates a new instance of VmSafe, bound to a specific deployed contract. +func NewVmSafe(address common.Address, backend bind.ContractBackend) (*VmSafe, error) { + contract, err := bindVmSafe(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &VmSafe{VmSafeCaller: VmSafeCaller{contract: contract}, VmSafeTransactor: VmSafeTransactor{contract: contract}, VmSafeFilterer: VmSafeFilterer{contract: contract}}, nil +} + +// NewVmSafeCaller creates a new read-only instance of VmSafe, bound to a specific deployed contract. +func NewVmSafeCaller(address common.Address, caller bind.ContractCaller) (*VmSafeCaller, error) { + contract, err := bindVmSafe(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VmSafeCaller{contract: contract}, nil +} + +// NewVmSafeTransactor creates a new write-only instance of VmSafe, bound to a specific deployed contract. +func NewVmSafeTransactor(address common.Address, transactor bind.ContractTransactor) (*VmSafeTransactor, error) { + contract, err := bindVmSafe(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VmSafeTransactor{contract: contract}, nil +} + +// NewVmSafeFilterer creates a new log filterer instance of VmSafe, bound to a specific deployed contract. +func NewVmSafeFilterer(address common.Address, filterer bind.ContractFilterer) (*VmSafeFilterer, error) { + contract, err := bindVmSafe(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VmSafeFilterer{contract: contract}, nil +} + +// bindVmSafe binds a generic wrapper to an already deployed contract. +func bindVmSafe(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VmSafeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_VmSafe *VmSafeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _VmSafe.Contract.VmSafeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_VmSafe *VmSafeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.Contract.VmSafeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_VmSafe *VmSafeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _VmSafe.Contract.VmSafeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_VmSafe *VmSafeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _VmSafe.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_VmSafe *VmSafeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_VmSafe *VmSafeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _VmSafe.Contract.contract.Transact(opts, method, params...) +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_VmSafe *VmSafeCaller) Addr(opts *bind.CallOpts, privateKey *big.Int) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "addr", privateKey) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_VmSafe *VmSafeSession) Addr(privateKey *big.Int) (common.Address, error) { + return _VmSafe.Contract.Addr(&_VmSafe.CallOpts, privateKey) +} + +// Addr is a free data retrieval call binding the contract method 0xffa18649. +// +// Solidity: function addr(uint256 privateKey) pure returns(address keyAddr) +func (_VmSafe *VmSafeCallerSession) Addr(privateKey *big.Int) (common.Address, error) { + return _VmSafe.Contract.Addr(&_VmSafe.CallOpts, privateKey) +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbs(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbs", left, right, maxDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbs(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbs(&_VmSafe.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs is a free data retrieval call binding the contract method 0x16d207c6. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbs(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbs(&_VmSafe.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbs0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbs0", left, right, maxDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbs0(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbs0(&_VmSafe.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs0 is a free data retrieval call binding the contract method 0x240f839d. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbs0(left *big.Int, right *big.Int, maxDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbs0(&_VmSafe.CallOpts, left, right, maxDelta) +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbs1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbs1", left, right, maxDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbs1(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbs1(&_VmSafe.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs1 is a free data retrieval call binding the contract method 0x8289e621. +// +// Solidity: function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbs1(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbs1(&_VmSafe.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbs2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbs2", left, right, maxDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbs2(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbs2(&_VmSafe.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbs2 is a free data retrieval call binding the contract method 0xf710b062. +// +// Solidity: function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbs2(left *big.Int, right *big.Int, maxDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbs2(&_VmSafe.CallOpts, left, right, maxDelta, error) +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbsDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbsDecimal", left, right, maxDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbsDecimal(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal(&_VmSafe.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal is a free data retrieval call binding the contract method 0x045c55ce. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbsDecimal(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal(&_VmSafe.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbsDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbsDecimal0", left, right, maxDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbsDecimal0(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal0(&_VmSafe.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal0 is a free data retrieval call binding the contract method 0x3d5bc8bc. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbsDecimal0(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal0(&_VmSafe.CallOpts, left, right, maxDelta, decimals) +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbsDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbsDecimal1", left, right, maxDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbsDecimal1(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal1(&_VmSafe.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal1 is a free data retrieval call binding the contract method 0x60429eb2. +// +// Solidity: function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbsDecimal1(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal1(&_VmSafe.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqAbsDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqAbsDecimal2", left, right, maxDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqAbsDecimal2(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal2(&_VmSafe.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqAbsDecimal2 is a free data retrieval call binding the contract method 0x6a5066d4. +// +// Solidity: function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqAbsDecimal2(left *big.Int, right *big.Int, maxDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqAbsDecimal2(&_VmSafe.CallOpts, left, right, maxDelta, decimals, error) +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRel(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRel", left, right, maxPercentDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRel(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRel(&_VmSafe.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel is a free data retrieval call binding the contract method 0x1ecb7d33. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRel(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRel(&_VmSafe.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRel0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRel0", left, right, maxPercentDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRel0(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRel0(&_VmSafe.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel0 is a free data retrieval call binding the contract method 0x8cf25ef4. +// +// Solidity: function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRel0(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRel0(&_VmSafe.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRel1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRel1", left, right, maxPercentDelta, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRel1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRel1(&_VmSafe.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel1 is a free data retrieval call binding the contract method 0xef277d72. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRel1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRel1(&_VmSafe.CallOpts, left, right, maxPercentDelta, error) +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRel2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRel2", left, right, maxPercentDelta) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRel2(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRel2(&_VmSafe.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRel2 is a free data retrieval call binding the contract method 0xfea2d14f. +// +// Solidity: function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRel2(left *big.Int, right *big.Int, maxPercentDelta *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRel2(&_VmSafe.CallOpts, left, right, maxPercentDelta) +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRelDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRelDecimal", left, right, maxPercentDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRelDecimal(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal is a free data retrieval call binding the contract method 0x21ed2977. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRelDecimal(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRelDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRelDecimal0", left, right, maxPercentDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRelDecimal0(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal0(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal0 is a free data retrieval call binding the contract method 0x82d6c8fd. +// +// Solidity: function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRelDecimal0(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal0(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRelDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRelDecimal1", left, right, maxPercentDelta, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRelDecimal1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal1(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal1 is a free data retrieval call binding the contract method 0xabbf21cc. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRelDecimal1(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal1(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals) +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertApproxEqRelDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertApproxEqRelDecimal2", left, right, maxPercentDelta, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertApproxEqRelDecimal2(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal2(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertApproxEqRelDecimal2 is a free data retrieval call binding the contract method 0xfccc11c4. +// +// Solidity: function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertApproxEqRelDecimal2(left *big.Int, right *big.Int, maxPercentDelta *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertApproxEqRelDecimal2(&_VmSafe.CallOpts, left, right, maxPercentDelta, decimals, error) +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq(opts *bind.CallOpts, left [][32]byte, right [][32]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq(left [][32]byte, right [][32]byte) error { + return _VmSafe.Contract.AssertEq(&_VmSafe.CallOpts, left, right) +} + +// AssertEq is a free data retrieval call binding the contract method 0x0cc9ee84. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq(left [][32]byte, right [][32]byte) error { + return _VmSafe.Contract.AssertEq(&_VmSafe.CallOpts, left, right) +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq0(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq0(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertEq0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq0 is a free data retrieval call binding the contract method 0x191f1b30. +// +// Solidity: function assertEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq0(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertEq0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq1(opts *bind.CallOpts, left common.Address, right common.Address, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq1(left common.Address, right common.Address, error string) error { + return _VmSafe.Contract.AssertEq1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq1 is a free data retrieval call binding the contract method 0x2f2769d1. +// +// Solidity: function assertEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq1(left common.Address, right common.Address, error string) error { + return _VmSafe.Contract.AssertEq1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq10(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq10", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq10(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertEq10(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq10 is a free data retrieval call binding the contract method 0x714a2f13. +// +// Solidity: function assertEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq10(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertEq10(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq11(opts *bind.CallOpts, left [32]byte, right [32]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq11", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq11(left [32]byte, right [32]byte) error { + return _VmSafe.Contract.AssertEq11(&_VmSafe.CallOpts, left, right) +} + +// AssertEq11 is a free data retrieval call binding the contract method 0x7c84c69b. +// +// Solidity: function assertEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq11(left [32]byte, right [32]byte) error { + return _VmSafe.Contract.AssertEq11(&_VmSafe.CallOpts, left, right) +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq12(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq12", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq12(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertEq12(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq12 is a free data retrieval call binding the contract method 0x88b44c85. +// +// Solidity: function assertEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq12(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertEq12(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq13(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq13", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq13(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertEq13(&_VmSafe.CallOpts, left, right) +} + +// AssertEq13 is a free data retrieval call binding the contract method 0x975d5a12. +// +// Solidity: function assertEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq13(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertEq13(&_VmSafe.CallOpts, left, right) +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq14(opts *bind.CallOpts, left []byte, right []byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq14", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq14(left []byte, right []byte) error { + return _VmSafe.Contract.AssertEq14(&_VmSafe.CallOpts, left, right) +} + +// AssertEq14 is a free data retrieval call binding the contract method 0x97624631. +// +// Solidity: function assertEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq14(left []byte, right []byte) error { + return _VmSafe.Contract.AssertEq14(&_VmSafe.CallOpts, left, right) +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq15(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq15", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq15(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertEq15(&_VmSafe.CallOpts, left, right) +} + +// AssertEq15 is a free data retrieval call binding the contract method 0x98296c54. +// +// Solidity: function assertEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq15(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertEq15(&_VmSafe.CallOpts, left, right) +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq16(opts *bind.CallOpts, left [32]byte, right [32]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq16", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq16(left [32]byte, right [32]byte, error string) error { + return _VmSafe.Contract.AssertEq16(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq16 is a free data retrieval call binding the contract method 0xc1fa1ed0. +// +// Solidity: function assertEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq16(left [32]byte, right [32]byte, error string) error { + return _VmSafe.Contract.AssertEq16(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq17(opts *bind.CallOpts, left []string, right []string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq17", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq17(left []string, right []string) error { + return _VmSafe.Contract.AssertEq17(&_VmSafe.CallOpts, left, right) +} + +// AssertEq17 is a free data retrieval call binding the contract method 0xcf1c049c. +// +// Solidity: function assertEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq17(left []string, right []string) error { + return _VmSafe.Contract.AssertEq17(&_VmSafe.CallOpts, left, right) +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq18(opts *bind.CallOpts, left [][32]byte, right [][32]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq18", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq18(left [][32]byte, right [][32]byte, error string) error { + return _VmSafe.Contract.AssertEq18(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq18 is a free data retrieval call binding the contract method 0xe03e9177. +// +// Solidity: function assertEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq18(left [][32]byte, right [][32]byte, error string) error { + return _VmSafe.Contract.AssertEq18(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq19(opts *bind.CallOpts, left []byte, right []byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq19", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq19(left []byte, right []byte, error string) error { + return _VmSafe.Contract.AssertEq19(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq19 is a free data retrieval call binding the contract method 0xe24fed00. +// +// Solidity: function assertEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq19(left []byte, right []byte, error string) error { + return _VmSafe.Contract.AssertEq19(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq2(opts *bind.CallOpts, left string, right string, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq2(left string, right string, error string) error { + return _VmSafe.Contract.AssertEq2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq2 is a free data retrieval call binding the contract method 0x36f656d8. +// +// Solidity: function assertEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq2(left string, right string, error string) error { + return _VmSafe.Contract.AssertEq2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq20(opts *bind.CallOpts, left []bool, right []bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq20", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq20(left []bool, right []bool, error string) error { + return _VmSafe.Contract.AssertEq20(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq20 is a free data retrieval call binding the contract method 0xe48a8f8d. +// +// Solidity: function assertEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq20(left []bool, right []bool, error string) error { + return _VmSafe.Contract.AssertEq20(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq21(opts *bind.CallOpts, left [][]byte, right [][]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq21", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq21(left [][]byte, right [][]byte) error { + return _VmSafe.Contract.AssertEq21(&_VmSafe.CallOpts, left, right) +} + +// AssertEq21 is a free data retrieval call binding the contract method 0xe5fb9b4a. +// +// Solidity: function assertEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq21(left [][]byte, right [][]byte) error { + return _VmSafe.Contract.AssertEq21(&_VmSafe.CallOpts, left, right) +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq22(opts *bind.CallOpts, left []string, right []string, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq22", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq22(left []string, right []string, error string) error { + return _VmSafe.Contract.AssertEq22(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq22 is a free data retrieval call binding the contract method 0xeff6b27d. +// +// Solidity: function assertEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq22(left []string, right []string, error string) error { + return _VmSafe.Contract.AssertEq22(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq23(opts *bind.CallOpts, left string, right string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq23", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq23(left string, right string) error { + return _VmSafe.Contract.AssertEq23(&_VmSafe.CallOpts, left, right) +} + +// AssertEq23 is a free data retrieval call binding the contract method 0xf320d963. +// +// Solidity: function assertEq(string left, string right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq23(left string, right string) error { + return _VmSafe.Contract.AssertEq23(&_VmSafe.CallOpts, left, right) +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq24(opts *bind.CallOpts, left [][]byte, right [][]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq24", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq24(left [][]byte, right [][]byte, error string) error { + return _VmSafe.Contract.AssertEq24(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq24 is a free data retrieval call binding the contract method 0xf413f0b6. +// +// Solidity: function assertEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq24(left [][]byte, right [][]byte, error string) error { + return _VmSafe.Contract.AssertEq24(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq25(opts *bind.CallOpts, left bool, right bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq25", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq25(left bool, right bool) error { + return _VmSafe.Contract.AssertEq25(&_VmSafe.CallOpts, left, right) +} + +// AssertEq25 is a free data retrieval call binding the contract method 0xf7fe3477. +// +// Solidity: function assertEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq25(left bool, right bool) error { + return _VmSafe.Contract.AssertEq25(&_VmSafe.CallOpts, left, right) +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq26(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq26", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq26(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertEq26(&_VmSafe.CallOpts, left, right) +} + +// AssertEq26 is a free data retrieval call binding the contract method 0xfe74f05b. +// +// Solidity: function assertEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq26(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertEq26(&_VmSafe.CallOpts, left, right) +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq3(opts *bind.CallOpts, left []common.Address, right []common.Address) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq3", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq3(left []common.Address, right []common.Address) error { + return _VmSafe.Contract.AssertEq3(&_VmSafe.CallOpts, left, right) +} + +// AssertEq3 is a free data retrieval call binding the contract method 0x3868ac34. +// +// Solidity: function assertEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq3(left []common.Address, right []common.Address) error { + return _VmSafe.Contract.AssertEq3(&_VmSafe.CallOpts, left, right) +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq4(opts *bind.CallOpts, left []common.Address, right []common.Address, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq4", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq4(left []common.Address, right []common.Address, error string) error { + return _VmSafe.Contract.AssertEq4(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq4 is a free data retrieval call binding the contract method 0x3e9173c5. +// +// Solidity: function assertEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq4(left []common.Address, right []common.Address, error string) error { + return _VmSafe.Contract.AssertEq4(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq5(opts *bind.CallOpts, left bool, right bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq5", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq5(left bool, right bool, error string) error { + return _VmSafe.Contract.AssertEq5(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq5 is a free data retrieval call binding the contract method 0x4db19e7e. +// +// Solidity: function assertEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq5(left bool, right bool, error string) error { + return _VmSafe.Contract.AssertEq5(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq6(opts *bind.CallOpts, left common.Address, right common.Address) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq6", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq6(left common.Address, right common.Address) error { + return _VmSafe.Contract.AssertEq6(&_VmSafe.CallOpts, left, right) +} + +// AssertEq6 is a free data retrieval call binding the contract method 0x515361f6. +// +// Solidity: function assertEq(address left, address right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq6(left common.Address, right common.Address) error { + return _VmSafe.Contract.AssertEq6(&_VmSafe.CallOpts, left, right) +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq7(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq7", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEq7(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertEq7(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq7 is a free data retrieval call binding the contract method 0x5d18c73a. +// +// Solidity: function assertEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq7(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertEq7(&_VmSafe.CallOpts, left, right, error) +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq8(opts *bind.CallOpts, left []bool, right []bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq8", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq8(left []bool, right []bool) error { + return _VmSafe.Contract.AssertEq8(&_VmSafe.CallOpts, left, right) +} + +// AssertEq8 is a free data retrieval call binding the contract method 0x707df785. +// +// Solidity: function assertEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq8(left []bool, right []bool) error { + return _VmSafe.Contract.AssertEq8(&_VmSafe.CallOpts, left, right) +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertEq9(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEq9", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertEq9(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertEq9(&_VmSafe.CallOpts, left, right) +} + +// AssertEq9 is a free data retrieval call binding the contract method 0x711043ac. +// +// Solidity: function assertEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEq9(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertEq9(&_VmSafe.CallOpts, left, right) +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertEqDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEqDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertEqDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertEqDecimal is a free data retrieval call binding the contract method 0x27af7d9c. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertEqDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertEqDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEqDecimal0", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertEqDecimal0(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertEqDecimal0 is a free data retrieval call binding the contract method 0x48016c04. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertEqDecimal0(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEqDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEqDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertEqDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal1 is a free data retrieval call binding the contract method 0x7e77b0c5. +// +// Solidity: function assertEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertEqDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertEqDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertEqDecimal2", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertEqDecimal2(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertEqDecimal2 is a free data retrieval call binding the contract method 0xd0cbbdef. +// +// Solidity: function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertEqDecimal2(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertFalse(opts *bind.CallOpts, condition bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertFalse", condition, error) + + if err != nil { + return err + } + + return err + +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertFalse(condition bool, error string) error { + return _VmSafe.Contract.AssertFalse(&_VmSafe.CallOpts, condition, error) +} + +// AssertFalse is a free data retrieval call binding the contract method 0x7ba04809. +// +// Solidity: function assertFalse(bool condition, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertFalse(condition bool, error string) error { + return _VmSafe.Contract.AssertFalse(&_VmSafe.CallOpts, condition, error) +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_VmSafe *VmSafeCaller) AssertFalse0(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertFalse0", condition) + + if err != nil { + return err + } + + return err + +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_VmSafe *VmSafeSession) AssertFalse0(condition bool) error { + return _VmSafe.Contract.AssertFalse0(&_VmSafe.CallOpts, condition) +} + +// AssertFalse0 is a free data retrieval call binding the contract method 0xa5982885. +// +// Solidity: function assertFalse(bool condition) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertFalse0(condition bool) error { + return _VmSafe.Contract.AssertFalse0(&_VmSafe.CallOpts, condition) +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertGe(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGe", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertGe(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGe(&_VmSafe.CallOpts, left, right) +} + +// AssertGe is a free data retrieval call binding the contract method 0x0a30b771. +// +// Solidity: function assertGe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGe(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGe(&_VmSafe.CallOpts, left, right) +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGe0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGe0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGe0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGe0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGe0 is a free data retrieval call binding the contract method 0xa84328dd. +// +// Solidity: function assertGe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGe0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGe0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertGe1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGe1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertGe1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGe1(&_VmSafe.CallOpts, left, right) +} + +// AssertGe1 is a free data retrieval call binding the contract method 0xa8d4d1d9. +// +// Solidity: function assertGe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGe1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGe1(&_VmSafe.CallOpts, left, right) +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGe2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGe2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGe2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGe2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGe2 is a free data retrieval call binding the contract method 0xe25242c0. +// +// Solidity: function assertGe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGe2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGe2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertGeDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGeDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertGeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGeDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGeDecimal is a free data retrieval call binding the contract method 0x3d1fe08a. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGeDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGeDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGeDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGeDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal0 is a free data retrieval call binding the contract method 0x5df93c9b. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGeDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGeDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGeDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGeDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal1 is a free data retrieval call binding the contract method 0x8bff9133. +// +// Solidity: function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGeDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertGeDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGeDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertGeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGeDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGeDecimal2 is a free data retrieval call binding the contract method 0xdc28c0f1. +// +// Solidity: function assertGeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGeDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertGt(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGt", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertGt(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGt(&_VmSafe.CallOpts, left, right) +} + +// AssertGt is a free data retrieval call binding the contract method 0x5a362d45. +// +// Solidity: function assertGt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGt(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGt(&_VmSafe.CallOpts, left, right) +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGt0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGt0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGt0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGt0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGt0 is a free data retrieval call binding the contract method 0xd9a3c4d2. +// +// Solidity: function assertGt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGt0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGt0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertGt1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGt1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertGt1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGt1(&_VmSafe.CallOpts, left, right) +} + +// AssertGt1 is a free data retrieval call binding the contract method 0xdb07fcd2. +// +// Solidity: function assertGt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGt1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertGt1(&_VmSafe.CallOpts, left, right) +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGt2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGt2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGt2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGt2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGt2 is a free data retrieval call binding the contract method 0xf8d33b9b. +// +// Solidity: function assertGt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGt2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertGt2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGtDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGtDecimal", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGtDecimal(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGtDecimal(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal is a free data retrieval call binding the contract method 0x04a5c7ab. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGtDecimal(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGtDecimal(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertGtDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGtDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertGtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGtDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal0 is a free data retrieval call binding the contract method 0x64949a8d. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertGtDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertGtDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGtDecimal1", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertGtDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGtDecimal1(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGtDecimal1 is a free data retrieval call binding the contract method 0x78611f0e. +// +// Solidity: function assertGtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGtDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGtDecimal1(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertGtDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertGtDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertGtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGtDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertGtDecimal2 is a free data retrieval call binding the contract method 0xeccd2437. +// +// Solidity: function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertGtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertGtDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLe(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLe", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLe(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLe(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLe is a free data retrieval call binding the contract method 0x4dfe692c. +// +// Solidity: function assertLe(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLe(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLe(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertLe0(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLe0", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertLe0(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLe0(&_VmSafe.CallOpts, left, right) +} + +// AssertLe0 is a free data retrieval call binding the contract method 0x8466f415. +// +// Solidity: function assertLe(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLe0(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLe0(&_VmSafe.CallOpts, left, right) +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertLe1(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLe1", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertLe1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLe1(&_VmSafe.CallOpts, left, right) +} + +// AssertLe1 is a free data retrieval call binding the contract method 0x95fd154e. +// +// Solidity: function assertLe(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLe1(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLe1(&_VmSafe.CallOpts, left, right) +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLe2(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLe2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLe2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLe2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLe2 is a free data retrieval call binding the contract method 0xd17d4b0d. +// +// Solidity: function assertLe(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLe2(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLe2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertLeDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLeDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertLeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLeDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLeDecimal is a free data retrieval call binding the contract method 0x11d1364a. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLeDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLeDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLeDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLeDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLeDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal0 is a free data retrieval call binding the contract method 0x7fefbbe0. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLeDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLeDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLeDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLeDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLeDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal1 is a free data retrieval call binding the contract method 0xaa5cf788. +// +// Solidity: function assertLeDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLeDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLeDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertLeDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLeDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertLeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLeDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLeDecimal2 is a free data retrieval call binding the contract method 0xc304aab7. +// +// Solidity: function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLeDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLeDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertLt(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLt", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertLt(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLt(&_VmSafe.CallOpts, left, right) +} + +// AssertLt is a free data retrieval call binding the contract method 0x3e914080. +// +// Solidity: function assertLt(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLt(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLt(&_VmSafe.CallOpts, left, right) +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLt0(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLt0", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLt0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLt0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLt0 is a free data retrieval call binding the contract method 0x65d5c135. +// +// Solidity: function assertLt(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLt0(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLt0(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLt1(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLt1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLt1(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLt1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLt1 is a free data retrieval call binding the contract method 0x9ff531e3. +// +// Solidity: function assertLt(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLt1(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertLt1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertLt2(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLt2", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertLt2(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLt2(&_VmSafe.CallOpts, left, right) +} + +// AssertLt2 is a free data retrieval call binding the contract method 0xb12fc005. +// +// Solidity: function assertLt(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLt2(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertLt2(&_VmSafe.CallOpts, left, right) +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertLtDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLtDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertLtDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLtDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLtDecimal is a free data retrieval call binding the contract method 0x2077337e. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLtDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLtDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLtDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLtDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLtDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal0 is a free data retrieval call binding the contract method 0x40f0b4e0. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLtDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLtDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertLtDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLtDecimal1", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertLtDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLtDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal1 is a free data retrieval call binding the contract method 0xa972d037. +// +// Solidity: function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLtDecimal1(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertLtDecimal1(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertLtDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertLtDecimal2", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertLtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLtDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertLtDecimal2 is a free data retrieval call binding the contract method 0xdbe8d88b. +// +// Solidity: function assertLtDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertLtDecimal2(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertLtDecimal2(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq(opts *bind.CallOpts, left [][32]byte, right [][32]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq(left [][32]byte, right [][32]byte) error { + return _VmSafe.Contract.AssertNotEq(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq is a free data retrieval call binding the contract method 0x0603ea68. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq(left [][32]byte, right [][32]byte) error { + return _VmSafe.Contract.AssertNotEq(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq0(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq0", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq0(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertNotEq0(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq0 is a free data retrieval call binding the contract method 0x0b72f4ef. +// +// Solidity: function assertNotEq(int256[] left, int256[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq0(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertNotEq0(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq1(opts *bind.CallOpts, left bool, right bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq1", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq1(left bool, right bool, error string) error { + return _VmSafe.Contract.AssertNotEq1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq1 is a free data retrieval call binding the contract method 0x1091a261. +// +// Solidity: function assertNotEq(bool left, bool right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq1(left bool, right bool, error string) error { + return _VmSafe.Contract.AssertNotEq1(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq10(opts *bind.CallOpts, left string, right string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq10", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq10(left string, right string) error { + return _VmSafe.Contract.AssertNotEq10(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq10 is a free data retrieval call binding the contract method 0x6a8237b3. +// +// Solidity: function assertNotEq(string left, string right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq10(left string, right string) error { + return _VmSafe.Contract.AssertNotEq10(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq11(opts *bind.CallOpts, left []common.Address, right []common.Address, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq11", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq11(left []common.Address, right []common.Address, error string) error { + return _VmSafe.Contract.AssertNotEq11(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq11 is a free data retrieval call binding the contract method 0x72c7e0b5. +// +// Solidity: function assertNotEq(address[] left, address[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq11(left []common.Address, right []common.Address, error string) error { + return _VmSafe.Contract.AssertNotEq11(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq12(opts *bind.CallOpts, left string, right string, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq12", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq12(left string, right string, error string) error { + return _VmSafe.Contract.AssertNotEq12(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq12 is a free data retrieval call binding the contract method 0x78bdcea7. +// +// Solidity: function assertNotEq(string left, string right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq12(left string, right string, error string) error { + return _VmSafe.Contract.AssertNotEq12(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq13(opts *bind.CallOpts, left common.Address, right common.Address, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq13", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq13(left common.Address, right common.Address, error string) error { + return _VmSafe.Contract.AssertNotEq13(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq13 is a free data retrieval call binding the contract method 0x8775a591. +// +// Solidity: function assertNotEq(address left, address right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq13(left common.Address, right common.Address, error string) error { + return _VmSafe.Contract.AssertNotEq13(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq14(opts *bind.CallOpts, left [32]byte, right [32]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq14", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq14(left [32]byte, right [32]byte) error { + return _VmSafe.Contract.AssertNotEq14(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq14 is a free data retrieval call binding the contract method 0x898e83fc. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq14(left [32]byte, right [32]byte) error { + return _VmSafe.Contract.AssertNotEq14(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq15(opts *bind.CallOpts, left []byte, right []byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq15", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq15(left []byte, right []byte, error string) error { + return _VmSafe.Contract.AssertNotEq15(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq15 is a free data retrieval call binding the contract method 0x9507540e. +// +// Solidity: function assertNotEq(bytes left, bytes right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq15(left []byte, right []byte, error string) error { + return _VmSafe.Contract.AssertNotEq15(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq16(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq16", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq16(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq16(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq16 is a free data retrieval call binding the contract method 0x98f9bdbd. +// +// Solidity: function assertNotEq(uint256 left, uint256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq16(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq16(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq17(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq17", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq17(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq17(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq17 is a free data retrieval call binding the contract method 0x9a7fbd8f. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq17(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq17(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq18(opts *bind.CallOpts, left common.Address, right common.Address) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq18", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq18(left common.Address, right common.Address) error { + return _VmSafe.Contract.AssertNotEq18(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq18 is a free data retrieval call binding the contract method 0xb12e1694. +// +// Solidity: function assertNotEq(address left, address right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq18(left common.Address, right common.Address) error { + return _VmSafe.Contract.AssertNotEq18(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq19(opts *bind.CallOpts, left [32]byte, right [32]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq19", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq19(left [32]byte, right [32]byte, error string) error { + return _VmSafe.Contract.AssertNotEq19(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq19 is a free data retrieval call binding the contract method 0xb2332f51. +// +// Solidity: function assertNotEq(bytes32 left, bytes32 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq19(left [32]byte, right [32]byte, error string) error { + return _VmSafe.Contract.AssertNotEq19(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq2(opts *bind.CallOpts, left [][]byte, right [][]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq2", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq2(left [][]byte, right [][]byte, error string) error { + return _VmSafe.Contract.AssertNotEq2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq2 is a free data retrieval call binding the contract method 0x1dcd1f68. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq2(left [][]byte, right [][]byte, error string) error { + return _VmSafe.Contract.AssertNotEq2(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq20(opts *bind.CallOpts, left []string, right []string, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq20", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq20(left []string, right []string, error string) error { + return _VmSafe.Contract.AssertNotEq20(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq20 is a free data retrieval call binding the contract method 0xb67187f3. +// +// Solidity: function assertNotEq(string[] left, string[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq20(left []string, right []string, error string) error { + return _VmSafe.Contract.AssertNotEq20(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq21(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq21", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq21(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertNotEq21(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq21 is a free data retrieval call binding the contract method 0xb7909320. +// +// Solidity: function assertNotEq(uint256 left, uint256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq21(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertNotEq21(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq22(opts *bind.CallOpts, left [][32]byte, right [][32]byte, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq22", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq22(left [][32]byte, right [][32]byte, error string) error { + return _VmSafe.Contract.AssertNotEq22(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq22 is a free data retrieval call binding the contract method 0xb873634c. +// +// Solidity: function assertNotEq(bytes32[] left, bytes32[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq22(left [][32]byte, right [][32]byte, error string) error { + return _VmSafe.Contract.AssertNotEq22(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq23(opts *bind.CallOpts, left []string, right []string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq23", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq23(left []string, right []string) error { + return _VmSafe.Contract.AssertNotEq23(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq23 is a free data retrieval call binding the contract method 0xbdfacbe8. +// +// Solidity: function assertNotEq(string[] left, string[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq23(left []string, right []string) error { + return _VmSafe.Contract.AssertNotEq23(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq24(opts *bind.CallOpts, left []*big.Int, right []*big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq24", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq24(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq24(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq24 is a free data retrieval call binding the contract method 0xd3977322. +// +// Solidity: function assertNotEq(int256[] left, int256[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq24(left []*big.Int, right []*big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq24(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq25(opts *bind.CallOpts, left [][]byte, right [][]byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq25", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq25(left [][]byte, right [][]byte) error { + return _VmSafe.Contract.AssertNotEq25(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq25 is a free data retrieval call binding the contract method 0xedecd035. +// +// Solidity: function assertNotEq(bytes[] left, bytes[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq25(left [][]byte, right [][]byte) error { + return _VmSafe.Contract.AssertNotEq25(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq26(opts *bind.CallOpts, left *big.Int, right *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq26", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq26(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertNotEq26(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq26 is a free data retrieval call binding the contract method 0xf4c004e3. +// +// Solidity: function assertNotEq(int256 left, int256 right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq26(left *big.Int, right *big.Int) error { + return _VmSafe.Contract.AssertNotEq26(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq3(opts *bind.CallOpts, left bool, right bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq3", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq3(left bool, right bool) error { + return _VmSafe.Contract.AssertNotEq3(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq3 is a free data retrieval call binding the contract method 0x236e4d66. +// +// Solidity: function assertNotEq(bool left, bool right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq3(left bool, right bool) error { + return _VmSafe.Contract.AssertNotEq3(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq4(opts *bind.CallOpts, left []bool, right []bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq4", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq4(left []bool, right []bool) error { + return _VmSafe.Contract.AssertNotEq4(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq4 is a free data retrieval call binding the contract method 0x286fafea. +// +// Solidity: function assertNotEq(bool[] left, bool[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq4(left []bool, right []bool) error { + return _VmSafe.Contract.AssertNotEq4(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq5(opts *bind.CallOpts, left []byte, right []byte) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq5", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq5(left []byte, right []byte) error { + return _VmSafe.Contract.AssertNotEq5(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq5 is a free data retrieval call binding the contract method 0x3cf78e28. +// +// Solidity: function assertNotEq(bytes left, bytes right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq5(left []byte, right []byte) error { + return _VmSafe.Contract.AssertNotEq5(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq6(opts *bind.CallOpts, left []common.Address, right []common.Address) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq6", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq6(left []common.Address, right []common.Address) error { + return _VmSafe.Contract.AssertNotEq6(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq6 is a free data retrieval call binding the contract method 0x46d0b252. +// +// Solidity: function assertNotEq(address[] left, address[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq6(left []common.Address, right []common.Address) error { + return _VmSafe.Contract.AssertNotEq6(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq7(opts *bind.CallOpts, left *big.Int, right *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq7", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq7(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq7(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq7 is a free data retrieval call binding the contract method 0x4724c5b9. +// +// Solidity: function assertNotEq(int256 left, int256 right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq7(left *big.Int, right *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEq7(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq8(opts *bind.CallOpts, left []*big.Int, right []*big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq8", left, right) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq8(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertNotEq8(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq8 is a free data retrieval call binding the contract method 0x56f29cba. +// +// Solidity: function assertNotEq(uint256[] left, uint256[] right) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq8(left []*big.Int, right []*big.Int) error { + return _VmSafe.Contract.AssertNotEq8(&_VmSafe.CallOpts, left, right) +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEq9(opts *bind.CallOpts, left []bool, right []bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEq9", left, right, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEq9(left []bool, right []bool, error string) error { + return _VmSafe.Contract.AssertNotEq9(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEq9 is a free data retrieval call binding the contract method 0x62c6f9fb. +// +// Solidity: function assertNotEq(bool[] left, bool[] right, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEq9(left []bool, right []bool, error string) error { + return _VmSafe.Contract.AssertNotEq9(&_VmSafe.CallOpts, left, right, error) +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEqDecimal(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEqDecimal", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertNotEqDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal is a free data retrieval call binding the contract method 0x14e75680. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEqDecimal(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertNotEqDecimal(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEqDecimal0(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEqDecimal0", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEqDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal0 is a free data retrieval call binding the contract method 0x33949f0b. +// +// Solidity: function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEqDecimal0(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEqDecimal0(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEqDecimal1(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEqDecimal1", left, right, decimals) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertNotEqDecimal1(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal1 is a free data retrieval call binding the contract method 0x669efca7. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEqDecimal1(left *big.Int, right *big.Int, decimals *big.Int) error { + return _VmSafe.Contract.AssertNotEqDecimal1(&_VmSafe.CallOpts, left, right, decimals) +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertNotEqDecimal2(opts *bind.CallOpts, left *big.Int, right *big.Int, decimals *big.Int, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertNotEqDecimal2", left, right, decimals, error) + + if err != nil { + return err + } + + return err + +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertNotEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEqDecimal2(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertNotEqDecimal2 is a free data retrieval call binding the contract method 0xf5a55558. +// +// Solidity: function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertNotEqDecimal2(left *big.Int, right *big.Int, decimals *big.Int, error string) error { + return _VmSafe.Contract.AssertNotEqDecimal2(&_VmSafe.CallOpts, left, right, decimals, error) +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_VmSafe *VmSafeCaller) AssertTrue(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertTrue", condition) + + if err != nil { + return err + } + + return err + +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_VmSafe *VmSafeSession) AssertTrue(condition bool) error { + return _VmSafe.Contract.AssertTrue(&_VmSafe.CallOpts, condition) +} + +// AssertTrue is a free data retrieval call binding the contract method 0x0c9fd581. +// +// Solidity: function assertTrue(bool condition) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertTrue(condition bool) error { + return _VmSafe.Contract.AssertTrue(&_VmSafe.CallOpts, condition) +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_VmSafe *VmSafeCaller) AssertTrue0(opts *bind.CallOpts, condition bool, error string) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assertTrue0", condition, error) + + if err != nil { + return err + } + + return err + +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_VmSafe *VmSafeSession) AssertTrue0(condition bool, error string) error { + return _VmSafe.Contract.AssertTrue0(&_VmSafe.CallOpts, condition, error) +} + +// AssertTrue0 is a free data retrieval call binding the contract method 0xa34edc03. +// +// Solidity: function assertTrue(bool condition, string error) pure returns() +func (_VmSafe *VmSafeCallerSession) AssertTrue0(condition bool, error string) error { + return _VmSafe.Contract.AssertTrue0(&_VmSafe.CallOpts, condition, error) +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_VmSafe *VmSafeCaller) Assume(opts *bind.CallOpts, condition bool) error { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "assume", condition) + + if err != nil { + return err + } + + return err + +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_VmSafe *VmSafeSession) Assume(condition bool) error { + return _VmSafe.Contract.Assume(&_VmSafe.CallOpts, condition) +} + +// Assume is a free data retrieval call binding the contract method 0x4c63e562. +// +// Solidity: function assume(bool condition) pure returns() +func (_VmSafe *VmSafeCallerSession) Assume(condition bool) error { + return _VmSafe.Contract.Assume(&_VmSafe.CallOpts, condition) +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_VmSafe *VmSafeCaller) ComputeCreate2Address(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "computeCreate2Address", salt, initCodeHash) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_VmSafe *VmSafeSession) ComputeCreate2Address(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _VmSafe.Contract.ComputeCreate2Address(&_VmSafe.CallOpts, salt, initCodeHash) +} + +// ComputeCreate2Address is a free data retrieval call binding the contract method 0x890c283b. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) pure returns(address) +func (_VmSafe *VmSafeCallerSession) ComputeCreate2Address(salt [32]byte, initCodeHash [32]byte) (common.Address, error) { + return _VmSafe.Contract.ComputeCreate2Address(&_VmSafe.CallOpts, salt, initCodeHash) +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_VmSafe *VmSafeCaller) ComputeCreate2Address0(opts *bind.CallOpts, salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "computeCreate2Address0", salt, initCodeHash, deployer) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_VmSafe *VmSafeSession) ComputeCreate2Address0(salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + return _VmSafe.Contract.ComputeCreate2Address0(&_VmSafe.CallOpts, salt, initCodeHash, deployer) +} + +// ComputeCreate2Address0 is a free data retrieval call binding the contract method 0xd323826a. +// +// Solidity: function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) pure returns(address) +func (_VmSafe *VmSafeCallerSession) ComputeCreate2Address0(salt [32]byte, initCodeHash [32]byte, deployer common.Address) (common.Address, error) { + return _VmSafe.Contract.ComputeCreate2Address0(&_VmSafe.CallOpts, salt, initCodeHash, deployer) +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_VmSafe *VmSafeCaller) ComputeCreateAddress(opts *bind.CallOpts, deployer common.Address, nonce *big.Int) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "computeCreateAddress", deployer, nonce) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_VmSafe *VmSafeSession) ComputeCreateAddress(deployer common.Address, nonce *big.Int) (common.Address, error) { + return _VmSafe.Contract.ComputeCreateAddress(&_VmSafe.CallOpts, deployer, nonce) +} + +// ComputeCreateAddress is a free data retrieval call binding the contract method 0x74637a7a. +// +// Solidity: function computeCreateAddress(address deployer, uint256 nonce) pure returns(address) +func (_VmSafe *VmSafeCallerSession) ComputeCreateAddress(deployer common.Address, nonce *big.Int) (common.Address, error) { + return _VmSafe.Contract.ComputeCreateAddress(&_VmSafe.CallOpts, deployer, nonce) +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCaller) DeriveKey(opts *bind.CallOpts, mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "deriveKey", mnemonic, derivationPath, index, language) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeSession) DeriveKey(mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey(&_VmSafe.CallOpts, mnemonic, derivationPath, index, language) +} + +// DeriveKey is a free data retrieval call binding the contract method 0x29233b1f. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCallerSession) DeriveKey(mnemonic string, derivationPath string, index uint32, language string) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey(&_VmSafe.CallOpts, mnemonic, derivationPath, index, language) +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCaller) DeriveKey0(opts *bind.CallOpts, mnemonic string, index uint32, language string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "deriveKey0", mnemonic, index, language) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeSession) DeriveKey0(mnemonic string, index uint32, language string) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey0(&_VmSafe.CallOpts, mnemonic, index, language) +} + +// DeriveKey0 is a free data retrieval call binding the contract method 0x32c8176d. +// +// Solidity: function deriveKey(string mnemonic, uint32 index, string language) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCallerSession) DeriveKey0(mnemonic string, index uint32, language string) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey0(&_VmSafe.CallOpts, mnemonic, index, language) +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCaller) DeriveKey1(opts *bind.CallOpts, mnemonic string, index uint32) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "deriveKey1", mnemonic, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeSession) DeriveKey1(mnemonic string, index uint32) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey1(&_VmSafe.CallOpts, mnemonic, index) +} + +// DeriveKey1 is a free data retrieval call binding the contract method 0x6229498b. +// +// Solidity: function deriveKey(string mnemonic, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCallerSession) DeriveKey1(mnemonic string, index uint32) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey1(&_VmSafe.CallOpts, mnemonic, index) +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCaller) DeriveKey2(opts *bind.CallOpts, mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "deriveKey2", mnemonic, derivationPath, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeSession) DeriveKey2(mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey2(&_VmSafe.CallOpts, mnemonic, derivationPath, index) +} + +// DeriveKey2 is a free data retrieval call binding the contract method 0x6bcb2c1b. +// +// Solidity: function deriveKey(string mnemonic, string derivationPath, uint32 index) pure returns(uint256 privateKey) +func (_VmSafe *VmSafeCallerSession) DeriveKey2(mnemonic string, derivationPath string, index uint32) (*big.Int, error) { + return _VmSafe.Contract.DeriveKey2(&_VmSafe.CallOpts, mnemonic, derivationPath, index) +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_VmSafe *VmSafeCaller) EnsNamehash(opts *bind.CallOpts, name string) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "ensNamehash", name) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_VmSafe *VmSafeSession) EnsNamehash(name string) ([32]byte, error) { + return _VmSafe.Contract.EnsNamehash(&_VmSafe.CallOpts, name) +} + +// EnsNamehash is a free data retrieval call binding the contract method 0x8c374c65. +// +// Solidity: function ensNamehash(string name) pure returns(bytes32) +func (_VmSafe *VmSafeCallerSession) EnsNamehash(name string) ([32]byte, error) { + return _VmSafe.Contract.EnsNamehash(&_VmSafe.CallOpts, name) +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_VmSafe *VmSafeCaller) EnvAddress(opts *bind.CallOpts, name string) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envAddress", name) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_VmSafe *VmSafeSession) EnvAddress(name string) (common.Address, error) { + return _VmSafe.Contract.EnvAddress(&_VmSafe.CallOpts, name) +} + +// EnvAddress is a free data retrieval call binding the contract method 0x350d56bf. +// +// Solidity: function envAddress(string name) view returns(address value) +func (_VmSafe *VmSafeCallerSession) EnvAddress(name string) (common.Address, error) { + return _VmSafe.Contract.EnvAddress(&_VmSafe.CallOpts, name) +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_VmSafe *VmSafeCaller) EnvAddress0(opts *bind.CallOpts, name string, delim string) ([]common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envAddress0", name, delim) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_VmSafe *VmSafeSession) EnvAddress0(name string, delim string) ([]common.Address, error) { + return _VmSafe.Contract.EnvAddress0(&_VmSafe.CallOpts, name, delim) +} + +// EnvAddress0 is a free data retrieval call binding the contract method 0xad31b9fa. +// +// Solidity: function envAddress(string name, string delim) view returns(address[] value) +func (_VmSafe *VmSafeCallerSession) EnvAddress0(name string, delim string) ([]common.Address, error) { + return _VmSafe.Contract.EnvAddress0(&_VmSafe.CallOpts, name, delim) +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_VmSafe *VmSafeCaller) EnvBool(opts *bind.CallOpts, name string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBool", name) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_VmSafe *VmSafeSession) EnvBool(name string) (bool, error) { + return _VmSafe.Contract.EnvBool(&_VmSafe.CallOpts, name) +} + +// EnvBool is a free data retrieval call binding the contract method 0x7ed1ec7d. +// +// Solidity: function envBool(string name) view returns(bool value) +func (_VmSafe *VmSafeCallerSession) EnvBool(name string) (bool, error) { + return _VmSafe.Contract.EnvBool(&_VmSafe.CallOpts, name) +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_VmSafe *VmSafeCaller) EnvBool0(opts *bind.CallOpts, name string, delim string) ([]bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBool0", name, delim) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_VmSafe *VmSafeSession) EnvBool0(name string, delim string) ([]bool, error) { + return _VmSafe.Contract.EnvBool0(&_VmSafe.CallOpts, name, delim) +} + +// EnvBool0 is a free data retrieval call binding the contract method 0xaaaddeaf. +// +// Solidity: function envBool(string name, string delim) view returns(bool[] value) +func (_VmSafe *VmSafeCallerSession) EnvBool0(name string, delim string) ([]bool, error) { + return _VmSafe.Contract.EnvBool0(&_VmSafe.CallOpts, name, delim) +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_VmSafe *VmSafeCaller) EnvBytes(opts *bind.CallOpts, name string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBytes", name) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_VmSafe *VmSafeSession) EnvBytes(name string) ([]byte, error) { + return _VmSafe.Contract.EnvBytes(&_VmSafe.CallOpts, name) +} + +// EnvBytes is a free data retrieval call binding the contract method 0x4d7baf06. +// +// Solidity: function envBytes(string name) view returns(bytes value) +func (_VmSafe *VmSafeCallerSession) EnvBytes(name string) ([]byte, error) { + return _VmSafe.Contract.EnvBytes(&_VmSafe.CallOpts, name) +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_VmSafe *VmSafeCaller) EnvBytes0(opts *bind.CallOpts, name string, delim string) ([][]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBytes0", name, delim) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_VmSafe *VmSafeSession) EnvBytes0(name string, delim string) ([][]byte, error) { + return _VmSafe.Contract.EnvBytes0(&_VmSafe.CallOpts, name, delim) +} + +// EnvBytes0 is a free data retrieval call binding the contract method 0xddc2651b. +// +// Solidity: function envBytes(string name, string delim) view returns(bytes[] value) +func (_VmSafe *VmSafeCallerSession) EnvBytes0(name string, delim string) ([][]byte, error) { + return _VmSafe.Contract.EnvBytes0(&_VmSafe.CallOpts, name, delim) +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_VmSafe *VmSafeCaller) EnvBytes32(opts *bind.CallOpts, name string, delim string) ([][32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBytes32", name, delim) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_VmSafe *VmSafeSession) EnvBytes32(name string, delim string) ([][32]byte, error) { + return _VmSafe.Contract.EnvBytes32(&_VmSafe.CallOpts, name, delim) +} + +// EnvBytes32 is a free data retrieval call binding the contract method 0x5af231c1. +// +// Solidity: function envBytes32(string name, string delim) view returns(bytes32[] value) +func (_VmSafe *VmSafeCallerSession) EnvBytes32(name string, delim string) ([][32]byte, error) { + return _VmSafe.Contract.EnvBytes32(&_VmSafe.CallOpts, name, delim) +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_VmSafe *VmSafeCaller) EnvBytes320(opts *bind.CallOpts, name string) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envBytes320", name) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_VmSafe *VmSafeSession) EnvBytes320(name string) ([32]byte, error) { + return _VmSafe.Contract.EnvBytes320(&_VmSafe.CallOpts, name) +} + +// EnvBytes320 is a free data retrieval call binding the contract method 0x97949042. +// +// Solidity: function envBytes32(string name) view returns(bytes32 value) +func (_VmSafe *VmSafeCallerSession) EnvBytes320(name string) ([32]byte, error) { + return _VmSafe.Contract.EnvBytes320(&_VmSafe.CallOpts, name) +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_VmSafe *VmSafeCaller) EnvExists(opts *bind.CallOpts, name string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envExists", name) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_VmSafe *VmSafeSession) EnvExists(name string) (bool, error) { + return _VmSafe.Contract.EnvExists(&_VmSafe.CallOpts, name) +} + +// EnvExists is a free data retrieval call binding the contract method 0xce8365f9. +// +// Solidity: function envExists(string name) view returns(bool result) +func (_VmSafe *VmSafeCallerSession) EnvExists(name string) (bool, error) { + return _VmSafe.Contract.EnvExists(&_VmSafe.CallOpts, name) +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_VmSafe *VmSafeCaller) EnvInt(opts *bind.CallOpts, name string, delim string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envInt", name, delim) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_VmSafe *VmSafeSession) EnvInt(name string, delim string) ([]*big.Int, error) { + return _VmSafe.Contract.EnvInt(&_VmSafe.CallOpts, name, delim) +} + +// EnvInt is a free data retrieval call binding the contract method 0x42181150. +// +// Solidity: function envInt(string name, string delim) view returns(int256[] value) +func (_VmSafe *VmSafeCallerSession) EnvInt(name string, delim string) ([]*big.Int, error) { + return _VmSafe.Contract.EnvInt(&_VmSafe.CallOpts, name, delim) +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_VmSafe *VmSafeCaller) EnvInt0(opts *bind.CallOpts, name string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envInt0", name) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_VmSafe *VmSafeSession) EnvInt0(name string) (*big.Int, error) { + return _VmSafe.Contract.EnvInt0(&_VmSafe.CallOpts, name) +} + +// EnvInt0 is a free data retrieval call binding the contract method 0x892a0c61. +// +// Solidity: function envInt(string name) view returns(int256 value) +func (_VmSafe *VmSafeCallerSession) EnvInt0(name string) (*big.Int, error) { + return _VmSafe.Contract.EnvInt0(&_VmSafe.CallOpts, name) +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_VmSafe *VmSafeCaller) EnvOr(opts *bind.CallOpts, name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr", name, delim, defaultValue) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_VmSafe *VmSafeSession) EnvOr(name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + return _VmSafe.Contract.EnvOr(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr is a free data retrieval call binding the contract method 0x2281f367. +// +// Solidity: function envOr(string name, string delim, bytes32[] defaultValue) view returns(bytes32[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr(name string, delim string, defaultValue [][32]byte) ([][32]byte, error) { + return _VmSafe.Contract.EnvOr(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_VmSafe *VmSafeCaller) EnvOr0(opts *bind.CallOpts, name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr0", name, delim, defaultValue) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_VmSafe *VmSafeSession) EnvOr0(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _VmSafe.Contract.EnvOr0(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr0 is a free data retrieval call binding the contract method 0x4700d74b. +// +// Solidity: function envOr(string name, string delim, int256[] defaultValue) view returns(int256[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr0(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _VmSafe.Contract.EnvOr0(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_VmSafe *VmSafeCaller) EnvOr1(opts *bind.CallOpts, name string, defaultValue bool) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr1", name, defaultValue) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_VmSafe *VmSafeSession) EnvOr1(name string, defaultValue bool) (bool, error) { + return _VmSafe.Contract.EnvOr1(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr1 is a free data retrieval call binding the contract method 0x4777f3cf. +// +// Solidity: function envOr(string name, bool defaultValue) view returns(bool value) +func (_VmSafe *VmSafeCallerSession) EnvOr1(name string, defaultValue bool) (bool, error) { + return _VmSafe.Contract.EnvOr1(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_VmSafe *VmSafeCaller) EnvOr10(opts *bind.CallOpts, name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr10", name, delim, defaultValue) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_VmSafe *VmSafeSession) EnvOr10(name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + return _VmSafe.Contract.EnvOr10(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr10 is a free data retrieval call binding the contract method 0xc74e9deb. +// +// Solidity: function envOr(string name, string delim, address[] defaultValue) view returns(address[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr10(name string, delim string, defaultValue []common.Address) ([]common.Address, error) { + return _VmSafe.Contract.EnvOr10(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_VmSafe *VmSafeCaller) EnvOr11(opts *bind.CallOpts, name string, defaultValue string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr11", name, defaultValue) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_VmSafe *VmSafeSession) EnvOr11(name string, defaultValue string) (string, error) { + return _VmSafe.Contract.EnvOr11(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr11 is a free data retrieval call binding the contract method 0xd145736c. +// +// Solidity: function envOr(string name, string defaultValue) view returns(string value) +func (_VmSafe *VmSafeCallerSession) EnvOr11(name string, defaultValue string) (string, error) { + return _VmSafe.Contract.EnvOr11(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_VmSafe *VmSafeCaller) EnvOr12(opts *bind.CallOpts, name string, delim string, defaultValue []bool) ([]bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr12", name, delim, defaultValue) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_VmSafe *VmSafeSession) EnvOr12(name string, delim string, defaultValue []bool) ([]bool, error) { + return _VmSafe.Contract.EnvOr12(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr12 is a free data retrieval call binding the contract method 0xeb85e83b. +// +// Solidity: function envOr(string name, string delim, bool[] defaultValue) view returns(bool[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr12(name string, delim string, defaultValue []bool) ([]bool, error) { + return _VmSafe.Contract.EnvOr12(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_VmSafe *VmSafeCaller) EnvOr2(opts *bind.CallOpts, name string, defaultValue common.Address) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr2", name, defaultValue) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_VmSafe *VmSafeSession) EnvOr2(name string, defaultValue common.Address) (common.Address, error) { + return _VmSafe.Contract.EnvOr2(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr2 is a free data retrieval call binding the contract method 0x561fe540. +// +// Solidity: function envOr(string name, address defaultValue) view returns(address value) +func (_VmSafe *VmSafeCallerSession) EnvOr2(name string, defaultValue common.Address) (common.Address, error) { + return _VmSafe.Contract.EnvOr2(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_VmSafe *VmSafeCaller) EnvOr3(opts *bind.CallOpts, name string, defaultValue *big.Int) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr3", name, defaultValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_VmSafe *VmSafeSession) EnvOr3(name string, defaultValue *big.Int) (*big.Int, error) { + return _VmSafe.Contract.EnvOr3(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr3 is a free data retrieval call binding the contract method 0x5e97348f. +// +// Solidity: function envOr(string name, uint256 defaultValue) view returns(uint256 value) +func (_VmSafe *VmSafeCallerSession) EnvOr3(name string, defaultValue *big.Int) (*big.Int, error) { + return _VmSafe.Contract.EnvOr3(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_VmSafe *VmSafeCaller) EnvOr4(opts *bind.CallOpts, name string, delim string, defaultValue [][]byte) ([][]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr4", name, delim, defaultValue) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_VmSafe *VmSafeSession) EnvOr4(name string, delim string, defaultValue [][]byte) ([][]byte, error) { + return _VmSafe.Contract.EnvOr4(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr4 is a free data retrieval call binding the contract method 0x64bc3e64. +// +// Solidity: function envOr(string name, string delim, bytes[] defaultValue) view returns(bytes[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr4(name string, delim string, defaultValue [][]byte) ([][]byte, error) { + return _VmSafe.Contract.EnvOr4(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_VmSafe *VmSafeCaller) EnvOr5(opts *bind.CallOpts, name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr5", name, delim, defaultValue) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_VmSafe *VmSafeSession) EnvOr5(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _VmSafe.Contract.EnvOr5(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr5 is a free data retrieval call binding the contract method 0x74318528. +// +// Solidity: function envOr(string name, string delim, uint256[] defaultValue) view returns(uint256[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr5(name string, delim string, defaultValue []*big.Int) ([]*big.Int, error) { + return _VmSafe.Contract.EnvOr5(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_VmSafe *VmSafeCaller) EnvOr6(opts *bind.CallOpts, name string, delim string, defaultValue []string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr6", name, delim, defaultValue) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_VmSafe *VmSafeSession) EnvOr6(name string, delim string, defaultValue []string) ([]string, error) { + return _VmSafe.Contract.EnvOr6(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr6 is a free data retrieval call binding the contract method 0x859216bc. +// +// Solidity: function envOr(string name, string delim, string[] defaultValue) view returns(string[] value) +func (_VmSafe *VmSafeCallerSession) EnvOr6(name string, delim string, defaultValue []string) ([]string, error) { + return _VmSafe.Contract.EnvOr6(&_VmSafe.CallOpts, name, delim, defaultValue) +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_VmSafe *VmSafeCaller) EnvOr7(opts *bind.CallOpts, name string, defaultValue []byte) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr7", name, defaultValue) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_VmSafe *VmSafeSession) EnvOr7(name string, defaultValue []byte) ([]byte, error) { + return _VmSafe.Contract.EnvOr7(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr7 is a free data retrieval call binding the contract method 0xb3e47705. +// +// Solidity: function envOr(string name, bytes defaultValue) view returns(bytes value) +func (_VmSafe *VmSafeCallerSession) EnvOr7(name string, defaultValue []byte) ([]byte, error) { + return _VmSafe.Contract.EnvOr7(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_VmSafe *VmSafeCaller) EnvOr8(opts *bind.CallOpts, name string, defaultValue [32]byte) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr8", name, defaultValue) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_VmSafe *VmSafeSession) EnvOr8(name string, defaultValue [32]byte) ([32]byte, error) { + return _VmSafe.Contract.EnvOr8(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr8 is a free data retrieval call binding the contract method 0xb4a85892. +// +// Solidity: function envOr(string name, bytes32 defaultValue) view returns(bytes32 value) +func (_VmSafe *VmSafeCallerSession) EnvOr8(name string, defaultValue [32]byte) ([32]byte, error) { + return _VmSafe.Contract.EnvOr8(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_VmSafe *VmSafeCaller) EnvOr9(opts *bind.CallOpts, name string, defaultValue *big.Int) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envOr9", name, defaultValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_VmSafe *VmSafeSession) EnvOr9(name string, defaultValue *big.Int) (*big.Int, error) { + return _VmSafe.Contract.EnvOr9(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvOr9 is a free data retrieval call binding the contract method 0xbbcb713e. +// +// Solidity: function envOr(string name, int256 defaultValue) view returns(int256 value) +func (_VmSafe *VmSafeCallerSession) EnvOr9(name string, defaultValue *big.Int) (*big.Int, error) { + return _VmSafe.Contract.EnvOr9(&_VmSafe.CallOpts, name, defaultValue) +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_VmSafe *VmSafeCaller) EnvString(opts *bind.CallOpts, name string, delim string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envString", name, delim) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_VmSafe *VmSafeSession) EnvString(name string, delim string) ([]string, error) { + return _VmSafe.Contract.EnvString(&_VmSafe.CallOpts, name, delim) +} + +// EnvString is a free data retrieval call binding the contract method 0x14b02bc9. +// +// Solidity: function envString(string name, string delim) view returns(string[] value) +func (_VmSafe *VmSafeCallerSession) EnvString(name string, delim string) ([]string, error) { + return _VmSafe.Contract.EnvString(&_VmSafe.CallOpts, name, delim) +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_VmSafe *VmSafeCaller) EnvString0(opts *bind.CallOpts, name string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envString0", name) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_VmSafe *VmSafeSession) EnvString0(name string) (string, error) { + return _VmSafe.Contract.EnvString0(&_VmSafe.CallOpts, name) +} + +// EnvString0 is a free data retrieval call binding the contract method 0xf877cb19. +// +// Solidity: function envString(string name) view returns(string value) +func (_VmSafe *VmSafeCallerSession) EnvString0(name string) (string, error) { + return _VmSafe.Contract.EnvString0(&_VmSafe.CallOpts, name) +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_VmSafe *VmSafeCaller) EnvUint(opts *bind.CallOpts, name string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envUint", name) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_VmSafe *VmSafeSession) EnvUint(name string) (*big.Int, error) { + return _VmSafe.Contract.EnvUint(&_VmSafe.CallOpts, name) +} + +// EnvUint is a free data retrieval call binding the contract method 0xc1978d1f. +// +// Solidity: function envUint(string name) view returns(uint256 value) +func (_VmSafe *VmSafeCallerSession) EnvUint(name string) (*big.Int, error) { + return _VmSafe.Contract.EnvUint(&_VmSafe.CallOpts, name) +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_VmSafe *VmSafeCaller) EnvUint0(opts *bind.CallOpts, name string, delim string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "envUint0", name, delim) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_VmSafe *VmSafeSession) EnvUint0(name string, delim string) ([]*big.Int, error) { + return _VmSafe.Contract.EnvUint0(&_VmSafe.CallOpts, name, delim) +} + +// EnvUint0 is a free data retrieval call binding the contract method 0xf3dec099. +// +// Solidity: function envUint(string name, string delim) view returns(uint256[] value) +func (_VmSafe *VmSafeCallerSession) EnvUint0(name string, delim string) ([]*big.Int, error) { + return _VmSafe.Contract.EnvUint0(&_VmSafe.CallOpts, name, delim) +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_VmSafe *VmSafeCaller) FsMetadata(opts *bind.CallOpts, path string) (VmSafeFsMetadata, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "fsMetadata", path) + + if err != nil { + return *new(VmSafeFsMetadata), err + } + + out0 := *abi.ConvertType(out[0], new(VmSafeFsMetadata)).(*VmSafeFsMetadata) + + return out0, err + +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_VmSafe *VmSafeSession) FsMetadata(path string) (VmSafeFsMetadata, error) { + return _VmSafe.Contract.FsMetadata(&_VmSafe.CallOpts, path) +} + +// FsMetadata is a free data retrieval call binding the contract method 0xaf368a08. +// +// Solidity: function fsMetadata(string path) view returns((bool,bool,uint256,bool,uint256,uint256,uint256) metadata) +func (_VmSafe *VmSafeCallerSession) FsMetadata(path string) (VmSafeFsMetadata, error) { + return _VmSafe.Contract.FsMetadata(&_VmSafe.CallOpts, path) +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_VmSafe *VmSafeCaller) GetBlobBaseFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getBlobBaseFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_VmSafe *VmSafeSession) GetBlobBaseFee() (*big.Int, error) { + return _VmSafe.Contract.GetBlobBaseFee(&_VmSafe.CallOpts) +} + +// GetBlobBaseFee is a free data retrieval call binding the contract method 0x1f6d6ef7. +// +// Solidity: function getBlobBaseFee() view returns(uint256 blobBaseFee) +func (_VmSafe *VmSafeCallerSession) GetBlobBaseFee() (*big.Int, error) { + return _VmSafe.Contract.GetBlobBaseFee(&_VmSafe.CallOpts) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_VmSafe *VmSafeCaller) GetBlockNumber(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getBlockNumber") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_VmSafe *VmSafeSession) GetBlockNumber() (*big.Int, error) { + return _VmSafe.Contract.GetBlockNumber(&_VmSafe.CallOpts) +} + +// GetBlockNumber is a free data retrieval call binding the contract method 0x42cbb15c. +// +// Solidity: function getBlockNumber() view returns(uint256 height) +func (_VmSafe *VmSafeCallerSession) GetBlockNumber() (*big.Int, error) { + return _VmSafe.Contract.GetBlockNumber(&_VmSafe.CallOpts) +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_VmSafe *VmSafeCaller) GetBlockTimestamp(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getBlockTimestamp") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_VmSafe *VmSafeSession) GetBlockTimestamp() (*big.Int, error) { + return _VmSafe.Contract.GetBlockTimestamp(&_VmSafe.CallOpts) +} + +// GetBlockTimestamp is a free data retrieval call binding the contract method 0x796b89b9. +// +// Solidity: function getBlockTimestamp() view returns(uint256 timestamp) +func (_VmSafe *VmSafeCallerSession) GetBlockTimestamp() (*big.Int, error) { + return _VmSafe.Contract.GetBlockTimestamp(&_VmSafe.CallOpts) +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_VmSafe *VmSafeCaller) GetCode(opts *bind.CallOpts, artifactPath string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getCode", artifactPath) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_VmSafe *VmSafeSession) GetCode(artifactPath string) ([]byte, error) { + return _VmSafe.Contract.GetCode(&_VmSafe.CallOpts, artifactPath) +} + +// GetCode is a free data retrieval call binding the contract method 0x8d1cc925. +// +// Solidity: function getCode(string artifactPath) view returns(bytes creationBytecode) +func (_VmSafe *VmSafeCallerSession) GetCode(artifactPath string) ([]byte, error) { + return _VmSafe.Contract.GetCode(&_VmSafe.CallOpts, artifactPath) +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_VmSafe *VmSafeCaller) GetDeployedCode(opts *bind.CallOpts, artifactPath string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getDeployedCode", artifactPath) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_VmSafe *VmSafeSession) GetDeployedCode(artifactPath string) ([]byte, error) { + return _VmSafe.Contract.GetDeployedCode(&_VmSafe.CallOpts, artifactPath) +} + +// GetDeployedCode is a free data retrieval call binding the contract method 0x3ebf73b4. +// +// Solidity: function getDeployedCode(string artifactPath) view returns(bytes runtimeBytecode) +func (_VmSafe *VmSafeCallerSession) GetDeployedCode(artifactPath string) ([]byte, error) { + return _VmSafe.Contract.GetDeployedCode(&_VmSafe.CallOpts, artifactPath) +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_VmSafe *VmSafeCaller) GetLabel(opts *bind.CallOpts, account common.Address) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getLabel", account) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_VmSafe *VmSafeSession) GetLabel(account common.Address) (string, error) { + return _VmSafe.Contract.GetLabel(&_VmSafe.CallOpts, account) +} + +// GetLabel is a free data retrieval call binding the contract method 0x28a249b0. +// +// Solidity: function getLabel(address account) view returns(string currentLabel) +func (_VmSafe *VmSafeCallerSession) GetLabel(account common.Address) (string, error) { + return _VmSafe.Contract.GetLabel(&_VmSafe.CallOpts, account) +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_VmSafe *VmSafeCaller) GetNonce(opts *bind.CallOpts, account common.Address) (uint64, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "getNonce", account) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_VmSafe *VmSafeSession) GetNonce(account common.Address) (uint64, error) { + return _VmSafe.Contract.GetNonce(&_VmSafe.CallOpts, account) +} + +// GetNonce is a free data retrieval call binding the contract method 0x2d0335ab. +// +// Solidity: function getNonce(address account) view returns(uint64 nonce) +func (_VmSafe *VmSafeCallerSession) GetNonce(account common.Address) (uint64, error) { + return _VmSafe.Contract.GetNonce(&_VmSafe.CallOpts, account) +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_VmSafe *VmSafeCaller) IndexOf(opts *bind.CallOpts, input string, key string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "indexOf", input, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_VmSafe *VmSafeSession) IndexOf(input string, key string) (*big.Int, error) { + return _VmSafe.Contract.IndexOf(&_VmSafe.CallOpts, input, key) +} + +// IndexOf is a free data retrieval call binding the contract method 0x8a0807b7. +// +// Solidity: function indexOf(string input, string key) pure returns(uint256) +func (_VmSafe *VmSafeCallerSession) IndexOf(input string, key string) (*big.Int, error) { + return _VmSafe.Contract.IndexOf(&_VmSafe.CallOpts, input, key) +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_VmSafe *VmSafeCaller) IsContext(opts *bind.CallOpts, context uint8) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "isContext", context) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_VmSafe *VmSafeSession) IsContext(context uint8) (bool, error) { + return _VmSafe.Contract.IsContext(&_VmSafe.CallOpts, context) +} + +// IsContext is a free data retrieval call binding the contract method 0x64af255d. +// +// Solidity: function isContext(uint8 context) view returns(bool result) +func (_VmSafe *VmSafeCallerSession) IsContext(context uint8) (bool, error) { + return _VmSafe.Contract.IsContext(&_VmSafe.CallOpts, context) +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_VmSafe *VmSafeCaller) KeyExists(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "keyExists", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_VmSafe *VmSafeSession) KeyExists(json string, key string) (bool, error) { + return _VmSafe.Contract.KeyExists(&_VmSafe.CallOpts, json, key) +} + +// KeyExists is a free data retrieval call binding the contract method 0x528a683c. +// +// Solidity: function keyExists(string json, string key) view returns(bool) +func (_VmSafe *VmSafeCallerSession) KeyExists(json string, key string) (bool, error) { + return _VmSafe.Contract.KeyExists(&_VmSafe.CallOpts, json, key) +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_VmSafe *VmSafeCaller) KeyExistsJson(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "keyExistsJson", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_VmSafe *VmSafeSession) KeyExistsJson(json string, key string) (bool, error) { + return _VmSafe.Contract.KeyExistsJson(&_VmSafe.CallOpts, json, key) +} + +// KeyExistsJson is a free data retrieval call binding the contract method 0xdb4235f6. +// +// Solidity: function keyExistsJson(string json, string key) view returns(bool) +func (_VmSafe *VmSafeCallerSession) KeyExistsJson(json string, key string) (bool, error) { + return _VmSafe.Contract.KeyExistsJson(&_VmSafe.CallOpts, json, key) +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_VmSafe *VmSafeCaller) KeyExistsToml(opts *bind.CallOpts, toml string, key string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "keyExistsToml", toml, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_VmSafe *VmSafeSession) KeyExistsToml(toml string, key string) (bool, error) { + return _VmSafe.Contract.KeyExistsToml(&_VmSafe.CallOpts, toml, key) +} + +// KeyExistsToml is a free data retrieval call binding the contract method 0x600903ad. +// +// Solidity: function keyExistsToml(string toml, string key) view returns(bool) +func (_VmSafe *VmSafeCallerSession) KeyExistsToml(toml string, key string) (bool, error) { + return _VmSafe.Contract.KeyExistsToml(&_VmSafe.CallOpts, toml, key) +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_VmSafe *VmSafeCaller) LastCallGas(opts *bind.CallOpts) (VmSafeGas, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "lastCallGas") + + if err != nil { + return *new(VmSafeGas), err + } + + out0 := *abi.ConvertType(out[0], new(VmSafeGas)).(*VmSafeGas) + + return out0, err + +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_VmSafe *VmSafeSession) LastCallGas() (VmSafeGas, error) { + return _VmSafe.Contract.LastCallGas(&_VmSafe.CallOpts) +} + +// LastCallGas is a free data retrieval call binding the contract method 0x2b589b28. +// +// Solidity: function lastCallGas() view returns((uint64,uint64,uint64,int64,uint64) gas) +func (_VmSafe *VmSafeCallerSession) LastCallGas() (VmSafeGas, error) { + return _VmSafe.Contract.LastCallGas(&_VmSafe.CallOpts) +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_VmSafe *VmSafeCaller) Load(opts *bind.CallOpts, target common.Address, slot [32]byte) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "load", target, slot) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_VmSafe *VmSafeSession) Load(target common.Address, slot [32]byte) ([32]byte, error) { + return _VmSafe.Contract.Load(&_VmSafe.CallOpts, target, slot) +} + +// Load is a free data retrieval call binding the contract method 0x667f9d70. +// +// Solidity: function load(address target, bytes32 slot) view returns(bytes32 data) +func (_VmSafe *VmSafeCallerSession) Load(target common.Address, slot [32]byte) ([32]byte, error) { + return _VmSafe.Contract.Load(&_VmSafe.CallOpts, target, slot) +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_VmSafe *VmSafeCaller) ParseAddress(opts *bind.CallOpts, stringifiedValue string) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseAddress", stringifiedValue) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_VmSafe *VmSafeSession) ParseAddress(stringifiedValue string) (common.Address, error) { + return _VmSafe.Contract.ParseAddress(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseAddress is a free data retrieval call binding the contract method 0xc6ce059d. +// +// Solidity: function parseAddress(string stringifiedValue) pure returns(address parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseAddress(stringifiedValue string) (common.Address, error) { + return _VmSafe.Contract.ParseAddress(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_VmSafe *VmSafeCaller) ParseBool(opts *bind.CallOpts, stringifiedValue string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseBool", stringifiedValue) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_VmSafe *VmSafeSession) ParseBool(stringifiedValue string) (bool, error) { + return _VmSafe.Contract.ParseBool(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBool is a free data retrieval call binding the contract method 0x974ef924. +// +// Solidity: function parseBool(string stringifiedValue) pure returns(bool parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseBool(stringifiedValue string) (bool, error) { + return _VmSafe.Contract.ParseBool(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_VmSafe *VmSafeCaller) ParseBytes(opts *bind.CallOpts, stringifiedValue string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseBytes", stringifiedValue) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_VmSafe *VmSafeSession) ParseBytes(stringifiedValue string) ([]byte, error) { + return _VmSafe.Contract.ParseBytes(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBytes is a free data retrieval call binding the contract method 0x8f5d232d. +// +// Solidity: function parseBytes(string stringifiedValue) pure returns(bytes parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseBytes(stringifiedValue string) ([]byte, error) { + return _VmSafe.Contract.ParseBytes(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_VmSafe *VmSafeCaller) ParseBytes32(opts *bind.CallOpts, stringifiedValue string) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseBytes32", stringifiedValue) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_VmSafe *VmSafeSession) ParseBytes32(stringifiedValue string) ([32]byte, error) { + return _VmSafe.Contract.ParseBytes32(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseBytes32 is a free data retrieval call binding the contract method 0x087e6e81. +// +// Solidity: function parseBytes32(string stringifiedValue) pure returns(bytes32 parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseBytes32(stringifiedValue string) ([32]byte, error) { + return _VmSafe.Contract.ParseBytes32(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_VmSafe *VmSafeCaller) ParseInt(opts *bind.CallOpts, stringifiedValue string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseInt", stringifiedValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_VmSafe *VmSafeSession) ParseInt(stringifiedValue string) (*big.Int, error) { + return _VmSafe.Contract.ParseInt(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseInt is a free data retrieval call binding the contract method 0x42346c5e. +// +// Solidity: function parseInt(string stringifiedValue) pure returns(int256 parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseInt(stringifiedValue string) (*big.Int, error) { + return _VmSafe.Contract.ParseInt(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCaller) ParseJson(opts *bind.CallOpts, json string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJson", json) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeSession) ParseJson(json string) ([]byte, error) { + return _VmSafe.Contract.ParseJson(&_VmSafe.CallOpts, json) +} + +// ParseJson is a free data retrieval call binding the contract method 0x6a82600a. +// +// Solidity: function parseJson(string json) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCallerSession) ParseJson(json string) ([]byte, error) { + return _VmSafe.Contract.ParseJson(&_VmSafe.CallOpts, json) +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCaller) ParseJson0(opts *bind.CallOpts, json string, key string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJson0", json, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeSession) ParseJson0(json string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseJson0(&_VmSafe.CallOpts, json, key) +} + +// ParseJson0 is a free data retrieval call binding the contract method 0x85940ef1. +// +// Solidity: function parseJson(string json, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCallerSession) ParseJson0(json string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseJson0(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_VmSafe *VmSafeCaller) ParseJsonAddress(opts *bind.CallOpts, json string, key string) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonAddress", json, key) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_VmSafe *VmSafeSession) ParseJsonAddress(json string, key string) (common.Address, error) { + return _VmSafe.Contract.ParseJsonAddress(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonAddress is a free data retrieval call binding the contract method 0x1e19e657. +// +// Solidity: function parseJsonAddress(string json, string key) pure returns(address) +func (_VmSafe *VmSafeCallerSession) ParseJsonAddress(json string, key string) (common.Address, error) { + return _VmSafe.Contract.ParseJsonAddress(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_VmSafe *VmSafeCaller) ParseJsonAddressArray(opts *bind.CallOpts, json string, key string) ([]common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonAddressArray", json, key) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_VmSafe *VmSafeSession) ParseJsonAddressArray(json string, key string) ([]common.Address, error) { + return _VmSafe.Contract.ParseJsonAddressArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonAddressArray is a free data retrieval call binding the contract method 0x2fce7883. +// +// Solidity: function parseJsonAddressArray(string json, string key) pure returns(address[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonAddressArray(json string, key string) ([]common.Address, error) { + return _VmSafe.Contract.ParseJsonAddressArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_VmSafe *VmSafeCaller) ParseJsonBool(opts *bind.CallOpts, json string, key string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBool", json, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_VmSafe *VmSafeSession) ParseJsonBool(json string, key string) (bool, error) { + return _VmSafe.Contract.ParseJsonBool(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBool is a free data retrieval call binding the contract method 0x9f86dc91. +// +// Solidity: function parseJsonBool(string json, string key) pure returns(bool) +func (_VmSafe *VmSafeCallerSession) ParseJsonBool(json string, key string) (bool, error) { + return _VmSafe.Contract.ParseJsonBool(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_VmSafe *VmSafeCaller) ParseJsonBoolArray(opts *bind.CallOpts, json string, key string) ([]bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBoolArray", json, key) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_VmSafe *VmSafeSession) ParseJsonBoolArray(json string, key string) ([]bool, error) { + return _VmSafe.Contract.ParseJsonBoolArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBoolArray is a free data retrieval call binding the contract method 0x91f3b94f. +// +// Solidity: function parseJsonBoolArray(string json, string key) pure returns(bool[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonBoolArray(json string, key string) ([]bool, error) { + return _VmSafe.Contract.ParseJsonBoolArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_VmSafe *VmSafeCaller) ParseJsonBytes(opts *bind.CallOpts, json string, key string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBytes", json, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_VmSafe *VmSafeSession) ParseJsonBytes(json string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonBytes(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes is a free data retrieval call binding the contract method 0xfd921be8. +// +// Solidity: function parseJsonBytes(string json, string key) pure returns(bytes) +func (_VmSafe *VmSafeCallerSession) ParseJsonBytes(json string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonBytes(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_VmSafe *VmSafeCaller) ParseJsonBytes32(opts *bind.CallOpts, json string, key string) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBytes32", json, key) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_VmSafe *VmSafeSession) ParseJsonBytes32(json string, key string) ([32]byte, error) { + return _VmSafe.Contract.ParseJsonBytes32(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes32 is a free data retrieval call binding the contract method 0x1777e59d. +// +// Solidity: function parseJsonBytes32(string json, string key) pure returns(bytes32) +func (_VmSafe *VmSafeCallerSession) ParseJsonBytes32(json string, key string) ([32]byte, error) { + return _VmSafe.Contract.ParseJsonBytes32(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeCaller) ParseJsonBytes32Array(opts *bind.CallOpts, json string, key string) ([][32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBytes32Array", json, key) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeSession) ParseJsonBytes32Array(json string, key string) ([][32]byte, error) { + return _VmSafe.Contract.ParseJsonBytes32Array(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytes32Array is a free data retrieval call binding the contract method 0x91c75bc3. +// +// Solidity: function parseJsonBytes32Array(string json, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonBytes32Array(json string, key string) ([][32]byte, error) { + return _VmSafe.Contract.ParseJsonBytes32Array(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeCaller) ParseJsonBytesArray(opts *bind.CallOpts, json string, key string) ([][]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonBytesArray", json, key) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeSession) ParseJsonBytesArray(json string, key string) ([][]byte, error) { + return _VmSafe.Contract.ParseJsonBytesArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonBytesArray is a free data retrieval call binding the contract method 0x6631aa99. +// +// Solidity: function parseJsonBytesArray(string json, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonBytesArray(json string, key string) ([][]byte, error) { + return _VmSafe.Contract.ParseJsonBytesArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_VmSafe *VmSafeCaller) ParseJsonInt(opts *bind.CallOpts, json string, key string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonInt", json, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_VmSafe *VmSafeSession) ParseJsonInt(json string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseJsonInt(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonInt is a free data retrieval call binding the contract method 0x7b048ccd. +// +// Solidity: function parseJsonInt(string json, string key) pure returns(int256) +func (_VmSafe *VmSafeCallerSession) ParseJsonInt(json string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseJsonInt(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_VmSafe *VmSafeCaller) ParseJsonIntArray(opts *bind.CallOpts, json string, key string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonIntArray", json, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_VmSafe *VmSafeSession) ParseJsonIntArray(json string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseJsonIntArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonIntArray is a free data retrieval call binding the contract method 0x9983c28a. +// +// Solidity: function parseJsonIntArray(string json, string key) pure returns(int256[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonIntArray(json string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseJsonIntArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeCaller) ParseJsonKeys(opts *bind.CallOpts, json string, key string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonKeys", json, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeSession) ParseJsonKeys(json string, key string) ([]string, error) { + return _VmSafe.Contract.ParseJsonKeys(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonKeys is a free data retrieval call binding the contract method 0x213e4198. +// +// Solidity: function parseJsonKeys(string json, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeCallerSession) ParseJsonKeys(json string, key string) ([]string, error) { + return _VmSafe.Contract.ParseJsonKeys(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_VmSafe *VmSafeCaller) ParseJsonString(opts *bind.CallOpts, json string, key string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonString", json, key) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_VmSafe *VmSafeSession) ParseJsonString(json string, key string) (string, error) { + return _VmSafe.Contract.ParseJsonString(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonString is a free data retrieval call binding the contract method 0x49c4fac8. +// +// Solidity: function parseJsonString(string json, string key) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ParseJsonString(json string, key string) (string, error) { + return _VmSafe.Contract.ParseJsonString(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_VmSafe *VmSafeCaller) ParseJsonStringArray(opts *bind.CallOpts, json string, key string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonStringArray", json, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_VmSafe *VmSafeSession) ParseJsonStringArray(json string, key string) ([]string, error) { + return _VmSafe.Contract.ParseJsonStringArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonStringArray is a free data retrieval call binding the contract method 0x498fdcf4. +// +// Solidity: function parseJsonStringArray(string json, string key) pure returns(string[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonStringArray(json string, key string) ([]string, error) { + return _VmSafe.Contract.ParseJsonStringArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCaller) ParseJsonType(opts *bind.CallOpts, json string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonType", json, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeSession) ParseJsonType(json string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonType(&_VmSafe.CallOpts, json, typeDescription) +} + +// ParseJsonType is a free data retrieval call binding the contract method 0xa9da313b. +// +// Solidity: function parseJsonType(string json, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCallerSession) ParseJsonType(json string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonType(&_VmSafe.CallOpts, json, typeDescription) +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCaller) ParseJsonType0(opts *bind.CallOpts, json string, key string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonType0", json, key, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeSession) ParseJsonType0(json string, key string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonType0(&_VmSafe.CallOpts, json, key, typeDescription) +} + +// ParseJsonType0 is a free data retrieval call binding the contract method 0xe3f5ae33. +// +// Solidity: function parseJsonType(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCallerSession) ParseJsonType0(json string, key string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonType0(&_VmSafe.CallOpts, json, key, typeDescription) +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCaller) ParseJsonTypeArray(opts *bind.CallOpts, json string, key string, typeDescription string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonTypeArray", json, key, typeDescription) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeSession) ParseJsonTypeArray(json string, key string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonTypeArray(&_VmSafe.CallOpts, json, key, typeDescription) +} + +// ParseJsonTypeArray is a free data retrieval call binding the contract method 0x0175d535. +// +// Solidity: function parseJsonTypeArray(string json, string key, string typeDescription) pure returns(bytes) +func (_VmSafe *VmSafeCallerSession) ParseJsonTypeArray(json string, key string, typeDescription string) ([]byte, error) { + return _VmSafe.Contract.ParseJsonTypeArray(&_VmSafe.CallOpts, json, key, typeDescription) +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_VmSafe *VmSafeCaller) ParseJsonUint(opts *bind.CallOpts, json string, key string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonUint", json, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_VmSafe *VmSafeSession) ParseJsonUint(json string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseJsonUint(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonUint is a free data retrieval call binding the contract method 0xaddde2b6. +// +// Solidity: function parseJsonUint(string json, string key) pure returns(uint256) +func (_VmSafe *VmSafeCallerSession) ParseJsonUint(json string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseJsonUint(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeCaller) ParseJsonUintArray(opts *bind.CallOpts, json string, key string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseJsonUintArray", json, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeSession) ParseJsonUintArray(json string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseJsonUintArray(&_VmSafe.CallOpts, json, key) +} + +// ParseJsonUintArray is a free data retrieval call binding the contract method 0x522074ab. +// +// Solidity: function parseJsonUintArray(string json, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeCallerSession) ParseJsonUintArray(json string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseJsonUintArray(&_VmSafe.CallOpts, json, key) +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCaller) ParseToml(opts *bind.CallOpts, toml string, key string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseToml", toml, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeSession) ParseToml(toml string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseToml(&_VmSafe.CallOpts, toml, key) +} + +// ParseToml is a free data retrieval call binding the contract method 0x37736e08. +// +// Solidity: function parseToml(string toml, string key) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCallerSession) ParseToml(toml string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseToml(&_VmSafe.CallOpts, toml, key) +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCaller) ParseToml0(opts *bind.CallOpts, toml string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseToml0", toml) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeSession) ParseToml0(toml string) ([]byte, error) { + return _VmSafe.Contract.ParseToml0(&_VmSafe.CallOpts, toml) +} + +// ParseToml0 is a free data retrieval call binding the contract method 0x592151f0. +// +// Solidity: function parseToml(string toml) pure returns(bytes abiEncodedData) +func (_VmSafe *VmSafeCallerSession) ParseToml0(toml string) ([]byte, error) { + return _VmSafe.Contract.ParseToml0(&_VmSafe.CallOpts, toml) +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_VmSafe *VmSafeCaller) ParseTomlAddress(opts *bind.CallOpts, toml string, key string) (common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlAddress", toml, key) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_VmSafe *VmSafeSession) ParseTomlAddress(toml string, key string) (common.Address, error) { + return _VmSafe.Contract.ParseTomlAddress(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlAddress is a free data retrieval call binding the contract method 0x65e7c844. +// +// Solidity: function parseTomlAddress(string toml, string key) pure returns(address) +func (_VmSafe *VmSafeCallerSession) ParseTomlAddress(toml string, key string) (common.Address, error) { + return _VmSafe.Contract.ParseTomlAddress(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_VmSafe *VmSafeCaller) ParseTomlAddressArray(opts *bind.CallOpts, toml string, key string) ([]common.Address, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlAddressArray", toml, key) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_VmSafe *VmSafeSession) ParseTomlAddressArray(toml string, key string) ([]common.Address, error) { + return _VmSafe.Contract.ParseTomlAddressArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlAddressArray is a free data retrieval call binding the contract method 0x65c428e7. +// +// Solidity: function parseTomlAddressArray(string toml, string key) pure returns(address[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlAddressArray(toml string, key string) ([]common.Address, error) { + return _VmSafe.Contract.ParseTomlAddressArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_VmSafe *VmSafeCaller) ParseTomlBool(opts *bind.CallOpts, toml string, key string) (bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBool", toml, key) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_VmSafe *VmSafeSession) ParseTomlBool(toml string, key string) (bool, error) { + return _VmSafe.Contract.ParseTomlBool(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBool is a free data retrieval call binding the contract method 0xd30dced6. +// +// Solidity: function parseTomlBool(string toml, string key) pure returns(bool) +func (_VmSafe *VmSafeCallerSession) ParseTomlBool(toml string, key string) (bool, error) { + return _VmSafe.Contract.ParseTomlBool(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_VmSafe *VmSafeCaller) ParseTomlBoolArray(opts *bind.CallOpts, toml string, key string) ([]bool, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBoolArray", toml, key) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_VmSafe *VmSafeSession) ParseTomlBoolArray(toml string, key string) ([]bool, error) { + return _VmSafe.Contract.ParseTomlBoolArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBoolArray is a free data retrieval call binding the contract method 0x127cfe9a. +// +// Solidity: function parseTomlBoolArray(string toml, string key) pure returns(bool[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlBoolArray(toml string, key string) ([]bool, error) { + return _VmSafe.Contract.ParseTomlBoolArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_VmSafe *VmSafeCaller) ParseTomlBytes(opts *bind.CallOpts, toml string, key string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBytes", toml, key) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_VmSafe *VmSafeSession) ParseTomlBytes(toml string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseTomlBytes(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes is a free data retrieval call binding the contract method 0xd77bfdb9. +// +// Solidity: function parseTomlBytes(string toml, string key) pure returns(bytes) +func (_VmSafe *VmSafeCallerSession) ParseTomlBytes(toml string, key string) ([]byte, error) { + return _VmSafe.Contract.ParseTomlBytes(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_VmSafe *VmSafeCaller) ParseTomlBytes32(opts *bind.CallOpts, toml string, key string) ([32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBytes32", toml, key) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_VmSafe *VmSafeSession) ParseTomlBytes32(toml string, key string) ([32]byte, error) { + return _VmSafe.Contract.ParseTomlBytes32(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes32 is a free data retrieval call binding the contract method 0x8e214810. +// +// Solidity: function parseTomlBytes32(string toml, string key) pure returns(bytes32) +func (_VmSafe *VmSafeCallerSession) ParseTomlBytes32(toml string, key string) ([32]byte, error) { + return _VmSafe.Contract.ParseTomlBytes32(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeCaller) ParseTomlBytes32Array(opts *bind.CallOpts, toml string, key string) ([][32]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBytes32Array", toml, key) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeSession) ParseTomlBytes32Array(toml string, key string) ([][32]byte, error) { + return _VmSafe.Contract.ParseTomlBytes32Array(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytes32Array is a free data retrieval call binding the contract method 0x3e716f81. +// +// Solidity: function parseTomlBytes32Array(string toml, string key) pure returns(bytes32[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlBytes32Array(toml string, key string) ([][32]byte, error) { + return _VmSafe.Contract.ParseTomlBytes32Array(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeCaller) ParseTomlBytesArray(opts *bind.CallOpts, toml string, key string) ([][]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlBytesArray", toml, key) + + if err != nil { + return *new([][]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][]byte)).(*[][]byte) + + return out0, err + +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeSession) ParseTomlBytesArray(toml string, key string) ([][]byte, error) { + return _VmSafe.Contract.ParseTomlBytesArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlBytesArray is a free data retrieval call binding the contract method 0xb197c247. +// +// Solidity: function parseTomlBytesArray(string toml, string key) pure returns(bytes[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlBytesArray(toml string, key string) ([][]byte, error) { + return _VmSafe.Contract.ParseTomlBytesArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_VmSafe *VmSafeCaller) ParseTomlInt(opts *bind.CallOpts, toml string, key string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlInt", toml, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_VmSafe *VmSafeSession) ParseTomlInt(toml string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseTomlInt(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlInt is a free data retrieval call binding the contract method 0xc1350739. +// +// Solidity: function parseTomlInt(string toml, string key) pure returns(int256) +func (_VmSafe *VmSafeCallerSession) ParseTomlInt(toml string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseTomlInt(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_VmSafe *VmSafeCaller) ParseTomlIntArray(opts *bind.CallOpts, toml string, key string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlIntArray", toml, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_VmSafe *VmSafeSession) ParseTomlIntArray(toml string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseTomlIntArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlIntArray is a free data retrieval call binding the contract method 0xd3522ae6. +// +// Solidity: function parseTomlIntArray(string toml, string key) pure returns(int256[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlIntArray(toml string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseTomlIntArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeCaller) ParseTomlKeys(opts *bind.CallOpts, toml string, key string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlKeys", toml, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeSession) ParseTomlKeys(toml string, key string) ([]string, error) { + return _VmSafe.Contract.ParseTomlKeys(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlKeys is a free data retrieval call binding the contract method 0x812a44b2. +// +// Solidity: function parseTomlKeys(string toml, string key) pure returns(string[] keys) +func (_VmSafe *VmSafeCallerSession) ParseTomlKeys(toml string, key string) ([]string, error) { + return _VmSafe.Contract.ParseTomlKeys(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_VmSafe *VmSafeCaller) ParseTomlString(opts *bind.CallOpts, toml string, key string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlString", toml, key) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_VmSafe *VmSafeSession) ParseTomlString(toml string, key string) (string, error) { + return _VmSafe.Contract.ParseTomlString(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlString is a free data retrieval call binding the contract method 0x8bb8dd43. +// +// Solidity: function parseTomlString(string toml, string key) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ParseTomlString(toml string, key string) (string, error) { + return _VmSafe.Contract.ParseTomlString(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_VmSafe *VmSafeCaller) ParseTomlStringArray(opts *bind.CallOpts, toml string, key string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlStringArray", toml, key) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_VmSafe *VmSafeSession) ParseTomlStringArray(toml string, key string) ([]string, error) { + return _VmSafe.Contract.ParseTomlStringArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlStringArray is a free data retrieval call binding the contract method 0x9f629281. +// +// Solidity: function parseTomlStringArray(string toml, string key) pure returns(string[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlStringArray(toml string, key string) ([]string, error) { + return _VmSafe.Contract.ParseTomlStringArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_VmSafe *VmSafeCaller) ParseTomlUint(opts *bind.CallOpts, toml string, key string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlUint", toml, key) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_VmSafe *VmSafeSession) ParseTomlUint(toml string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseTomlUint(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlUint is a free data retrieval call binding the contract method 0xcc7b0487. +// +// Solidity: function parseTomlUint(string toml, string key) pure returns(uint256) +func (_VmSafe *VmSafeCallerSession) ParseTomlUint(toml string, key string) (*big.Int, error) { + return _VmSafe.Contract.ParseTomlUint(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeCaller) ParseTomlUintArray(opts *bind.CallOpts, toml string, key string) ([]*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseTomlUintArray", toml, key) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeSession) ParseTomlUintArray(toml string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseTomlUintArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseTomlUintArray is a free data retrieval call binding the contract method 0xb5df27c8. +// +// Solidity: function parseTomlUintArray(string toml, string key) pure returns(uint256[]) +func (_VmSafe *VmSafeCallerSession) ParseTomlUintArray(toml string, key string) ([]*big.Int, error) { + return _VmSafe.Contract.ParseTomlUintArray(&_VmSafe.CallOpts, toml, key) +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_VmSafe *VmSafeCaller) ParseUint(opts *bind.CallOpts, stringifiedValue string) (*big.Int, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "parseUint", stringifiedValue) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_VmSafe *VmSafeSession) ParseUint(stringifiedValue string) (*big.Int, error) { + return _VmSafe.Contract.ParseUint(&_VmSafe.CallOpts, stringifiedValue) +} + +// ParseUint is a free data retrieval call binding the contract method 0xfa91454d. +// +// Solidity: function parseUint(string stringifiedValue) pure returns(uint256 parsedValue) +func (_VmSafe *VmSafeCallerSession) ParseUint(stringifiedValue string) (*big.Int, error) { + return _VmSafe.Contract.ParseUint(&_VmSafe.CallOpts, stringifiedValue) +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_VmSafe *VmSafeCaller) ProjectRoot(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "projectRoot") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_VmSafe *VmSafeSession) ProjectRoot() (string, error) { + return _VmSafe.Contract.ProjectRoot(&_VmSafe.CallOpts) +} + +// ProjectRoot is a free data retrieval call binding the contract method 0xd930a0e6. +// +// Solidity: function projectRoot() view returns(string path) +func (_VmSafe *VmSafeCallerSession) ProjectRoot() (string, error) { + return _VmSafe.Contract.ProjectRoot(&_VmSafe.CallOpts) +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCaller) ReadDir(opts *bind.CallOpts, path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readDir", path, maxDepth) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeSession) ReadDir(path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir(&_VmSafe.CallOpts, path, maxDepth) +} + +// ReadDir is a free data retrieval call binding the contract method 0x1497876c. +// +// Solidity: function readDir(string path, uint64 maxDepth) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCallerSession) ReadDir(path string, maxDepth uint64) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir(&_VmSafe.CallOpts, path, maxDepth) +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCaller) ReadDir0(opts *bind.CallOpts, path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readDir0", path, maxDepth, followLinks) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeSession) ReadDir0(path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir0(&_VmSafe.CallOpts, path, maxDepth, followLinks) +} + +// ReadDir0 is a free data retrieval call binding the contract method 0x8102d70d. +// +// Solidity: function readDir(string path, uint64 maxDepth, bool followLinks) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCallerSession) ReadDir0(path string, maxDepth uint64, followLinks bool) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir0(&_VmSafe.CallOpts, path, maxDepth, followLinks) +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCaller) ReadDir1(opts *bind.CallOpts, path string) ([]VmSafeDirEntry, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readDir1", path) + + if err != nil { + return *new([]VmSafeDirEntry), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeDirEntry)).(*[]VmSafeDirEntry) + + return out0, err + +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeSession) ReadDir1(path string) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir1(&_VmSafe.CallOpts, path) +} + +// ReadDir1 is a free data retrieval call binding the contract method 0xc4bc59e0. +// +// Solidity: function readDir(string path) view returns((string,string,uint64,bool,bool)[] entries) +func (_VmSafe *VmSafeCallerSession) ReadDir1(path string) ([]VmSafeDirEntry, error) { + return _VmSafe.Contract.ReadDir1(&_VmSafe.CallOpts, path) +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_VmSafe *VmSafeCaller) ReadFile(opts *bind.CallOpts, path string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readFile", path) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_VmSafe *VmSafeSession) ReadFile(path string) (string, error) { + return _VmSafe.Contract.ReadFile(&_VmSafe.CallOpts, path) +} + +// ReadFile is a free data retrieval call binding the contract method 0x60f9bb11. +// +// Solidity: function readFile(string path) view returns(string data) +func (_VmSafe *VmSafeCallerSession) ReadFile(path string) (string, error) { + return _VmSafe.Contract.ReadFile(&_VmSafe.CallOpts, path) +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_VmSafe *VmSafeCaller) ReadFileBinary(opts *bind.CallOpts, path string) ([]byte, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readFileBinary", path) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_VmSafe *VmSafeSession) ReadFileBinary(path string) ([]byte, error) { + return _VmSafe.Contract.ReadFileBinary(&_VmSafe.CallOpts, path) +} + +// ReadFileBinary is a free data retrieval call binding the contract method 0x16ed7bc4. +// +// Solidity: function readFileBinary(string path) view returns(bytes data) +func (_VmSafe *VmSafeCallerSession) ReadFileBinary(path string) ([]byte, error) { + return _VmSafe.Contract.ReadFileBinary(&_VmSafe.CallOpts, path) +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_VmSafe *VmSafeCaller) ReadLine(opts *bind.CallOpts, path string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readLine", path) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_VmSafe *VmSafeSession) ReadLine(path string) (string, error) { + return _VmSafe.Contract.ReadLine(&_VmSafe.CallOpts, path) +} + +// ReadLine is a free data retrieval call binding the contract method 0x70f55728. +// +// Solidity: function readLine(string path) view returns(string line) +func (_VmSafe *VmSafeCallerSession) ReadLine(path string) (string, error) { + return _VmSafe.Contract.ReadLine(&_VmSafe.CallOpts, path) +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_VmSafe *VmSafeCaller) ReadLink(opts *bind.CallOpts, linkPath string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "readLink", linkPath) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_VmSafe *VmSafeSession) ReadLink(linkPath string) (string, error) { + return _VmSafe.Contract.ReadLink(&_VmSafe.CallOpts, linkPath) +} + +// ReadLink is a free data retrieval call binding the contract method 0x9f5684a2. +// +// Solidity: function readLink(string linkPath) view returns(string targetPath) +func (_VmSafe *VmSafeCallerSession) ReadLink(linkPath string) (string, error) { + return _VmSafe.Contract.ReadLink(&_VmSafe.CallOpts, linkPath) +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_VmSafe *VmSafeCaller) Replace(opts *bind.CallOpts, input string, from string, to string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "replace", input, from, to) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_VmSafe *VmSafeSession) Replace(input string, from string, to string) (string, error) { + return _VmSafe.Contract.Replace(&_VmSafe.CallOpts, input, from, to) +} + +// Replace is a free data retrieval call binding the contract method 0xe00ad03e. +// +// Solidity: function replace(string input, string from, string to) pure returns(string output) +func (_VmSafe *VmSafeCallerSession) Replace(input string, from string, to string) (string, error) { + return _VmSafe.Contract.Replace(&_VmSafe.CallOpts, input, from, to) +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_VmSafe *VmSafeCaller) RpcUrl(opts *bind.CallOpts, rpcAlias string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "rpcUrl", rpcAlias) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_VmSafe *VmSafeSession) RpcUrl(rpcAlias string) (string, error) { + return _VmSafe.Contract.RpcUrl(&_VmSafe.CallOpts, rpcAlias) +} + +// RpcUrl is a free data retrieval call binding the contract method 0x975a6ce9. +// +// Solidity: function rpcUrl(string rpcAlias) view returns(string json) +func (_VmSafe *VmSafeCallerSession) RpcUrl(rpcAlias string) (string, error) { + return _VmSafe.Contract.RpcUrl(&_VmSafe.CallOpts, rpcAlias) +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_VmSafe *VmSafeCaller) RpcUrlStructs(opts *bind.CallOpts) ([]VmSafeRpc, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "rpcUrlStructs") + + if err != nil { + return *new([]VmSafeRpc), err + } + + out0 := *abi.ConvertType(out[0], new([]VmSafeRpc)).(*[]VmSafeRpc) + + return out0, err + +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_VmSafe *VmSafeSession) RpcUrlStructs() ([]VmSafeRpc, error) { + return _VmSafe.Contract.RpcUrlStructs(&_VmSafe.CallOpts) +} + +// RpcUrlStructs is a free data retrieval call binding the contract method 0x9d2ad72a. +// +// Solidity: function rpcUrlStructs() view returns((string,string)[] urls) +func (_VmSafe *VmSafeCallerSession) RpcUrlStructs() ([]VmSafeRpc, error) { + return _VmSafe.Contract.RpcUrlStructs(&_VmSafe.CallOpts) +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_VmSafe *VmSafeCaller) RpcUrls(opts *bind.CallOpts) ([][2]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "rpcUrls") + + if err != nil { + return *new([][2]string), err + } + + out0 := *abi.ConvertType(out[0], new([][2]string)).(*[][2]string) + + return out0, err + +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_VmSafe *VmSafeSession) RpcUrls() ([][2]string, error) { + return _VmSafe.Contract.RpcUrls(&_VmSafe.CallOpts) +} + +// RpcUrls is a free data retrieval call binding the contract method 0xa85a8418. +// +// Solidity: function rpcUrls() view returns(string[2][] urls) +func (_VmSafe *VmSafeCallerSession) RpcUrls() ([][2]string, error) { + return _VmSafe.Contract.RpcUrls(&_VmSafe.CallOpts) +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_VmSafe *VmSafeCaller) SerializeJsonType(opts *bind.CallOpts, typeDescription string, value []byte) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "serializeJsonType", typeDescription, value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_VmSafe *VmSafeSession) SerializeJsonType(typeDescription string, value []byte) (string, error) { + return _VmSafe.Contract.SerializeJsonType(&_VmSafe.CallOpts, typeDescription, value) +} + +// SerializeJsonType is a free data retrieval call binding the contract method 0x6d4f96a6. +// +// Solidity: function serializeJsonType(string typeDescription, bytes value) pure returns(string json) +func (_VmSafe *VmSafeCallerSession) SerializeJsonType(typeDescription string, value []byte) (string, error) { + return _VmSafe.Contract.SerializeJsonType(&_VmSafe.CallOpts, typeDescription, value) +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCaller) Sign(opts *bind.CallOpts, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "sign", digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeSession) Sign(digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign(&_VmSafe.CallOpts, digest) +} + +// Sign is a free data retrieval call binding the contract method 0x799cd333. +// +// Solidity: function sign(bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCallerSession) Sign(digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign(&_VmSafe.CallOpts, digest) +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCaller) Sign0(opts *bind.CallOpts, signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "sign0", signer, digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeSession) Sign0(signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign0(&_VmSafe.CallOpts, signer, digest) +} + +// Sign0 is a free data retrieval call binding the contract method 0x8c1aa205. +// +// Solidity: function sign(address signer, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCallerSession) Sign0(signer common.Address, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign0(&_VmSafe.CallOpts, signer, digest) +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCaller) Sign2(opts *bind.CallOpts, privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "sign2", privateKey, digest) + + outstruct := new(struct { + V uint8 + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.V = *abi.ConvertType(out[0], new(uint8)).(*uint8) + outstruct.R = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeSession) Sign2(privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign2(&_VmSafe.CallOpts, privateKey, digest) +} + +// Sign2 is a free data retrieval call binding the contract method 0xe341eaa4. +// +// Solidity: function sign(uint256 privateKey, bytes32 digest) pure returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCallerSession) Sign2(privateKey *big.Int, digest [32]byte) (struct { + V uint8 + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.Sign2(&_VmSafe.CallOpts, privateKey, digest) +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCaller) SignP256(opts *bind.CallOpts, privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "signP256", privateKey, digest) + + outstruct := new(struct { + R [32]byte + S [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.R = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.S = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_VmSafe *VmSafeSession) SignP256(privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.SignP256(&_VmSafe.CallOpts, privateKey, digest) +} + +// SignP256 is a free data retrieval call binding the contract method 0x83211b40. +// +// Solidity: function signP256(uint256 privateKey, bytes32 digest) pure returns(bytes32 r, bytes32 s) +func (_VmSafe *VmSafeCallerSession) SignP256(privateKey *big.Int, digest [32]byte) (struct { + R [32]byte + S [32]byte +}, error) { + return _VmSafe.Contract.SignP256(&_VmSafe.CallOpts, privateKey, digest) +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_VmSafe *VmSafeCaller) Split(opts *bind.CallOpts, input string, delimiter string) ([]string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "split", input, delimiter) + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_VmSafe *VmSafeSession) Split(input string, delimiter string) ([]string, error) { + return _VmSafe.Contract.Split(&_VmSafe.CallOpts, input, delimiter) +} + +// Split is a free data retrieval call binding the contract method 0x8bb75533. +// +// Solidity: function split(string input, string delimiter) pure returns(string[] outputs) +func (_VmSafe *VmSafeCallerSession) Split(input string, delimiter string) ([]string, error) { + return _VmSafe.Contract.Split(&_VmSafe.CallOpts, input, delimiter) +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_VmSafe *VmSafeCaller) ToBase64(opts *bind.CallOpts, data string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toBase64", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_VmSafe *VmSafeSession) ToBase64(data string) (string, error) { + return _VmSafe.Contract.ToBase64(&_VmSafe.CallOpts, data) +} + +// ToBase64 is a free data retrieval call binding the contract method 0x3f8be2c8. +// +// Solidity: function toBase64(string data) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ToBase64(data string) (string, error) { + return _VmSafe.Contract.ToBase64(&_VmSafe.CallOpts, data) +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_VmSafe *VmSafeCaller) ToBase640(opts *bind.CallOpts, data []byte) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toBase640", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_VmSafe *VmSafeSession) ToBase640(data []byte) (string, error) { + return _VmSafe.Contract.ToBase640(&_VmSafe.CallOpts, data) +} + +// ToBase640 is a free data retrieval call binding the contract method 0xa5cbfe65. +// +// Solidity: function toBase64(bytes data) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ToBase640(data []byte) (string, error) { + return _VmSafe.Contract.ToBase640(&_VmSafe.CallOpts, data) +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_VmSafe *VmSafeCaller) ToBase64URL(opts *bind.CallOpts, data string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toBase64URL", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_VmSafe *VmSafeSession) ToBase64URL(data string) (string, error) { + return _VmSafe.Contract.ToBase64URL(&_VmSafe.CallOpts, data) +} + +// ToBase64URL is a free data retrieval call binding the contract method 0xae3165b3. +// +// Solidity: function toBase64URL(string data) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ToBase64URL(data string) (string, error) { + return _VmSafe.Contract.ToBase64URL(&_VmSafe.CallOpts, data) +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_VmSafe *VmSafeCaller) ToBase64URL0(opts *bind.CallOpts, data []byte) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toBase64URL0", data) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_VmSafe *VmSafeSession) ToBase64URL0(data []byte) (string, error) { + return _VmSafe.Contract.ToBase64URL0(&_VmSafe.CallOpts, data) +} + +// ToBase64URL0 is a free data retrieval call binding the contract method 0xc8bd0e4a. +// +// Solidity: function toBase64URL(bytes data) pure returns(string) +func (_VmSafe *VmSafeCallerSession) ToBase64URL0(data []byte) (string, error) { + return _VmSafe.Contract.ToBase64URL0(&_VmSafe.CallOpts, data) +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_VmSafe *VmSafeCaller) ToLowercase(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toLowercase", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_VmSafe *VmSafeSession) ToLowercase(input string) (string, error) { + return _VmSafe.Contract.ToLowercase(&_VmSafe.CallOpts, input) +} + +// ToLowercase is a free data retrieval call binding the contract method 0x50bb0884. +// +// Solidity: function toLowercase(string input) pure returns(string output) +func (_VmSafe *VmSafeCallerSession) ToLowercase(input string) (string, error) { + return _VmSafe.Contract.ToLowercase(&_VmSafe.CallOpts, input) +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString(opts *bind.CallOpts, value common.Address) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString(value common.Address) (string, error) { + return _VmSafe.Contract.ToString(&_VmSafe.CallOpts, value) +} + +// ToString is a free data retrieval call binding the contract method 0x56ca623e. +// +// Solidity: function toString(address value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString(value common.Address) (string, error) { + return _VmSafe.Contract.ToString(&_VmSafe.CallOpts, value) +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString0(opts *bind.CallOpts, value *big.Int) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString0", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString0(value *big.Int) (string, error) { + return _VmSafe.Contract.ToString0(&_VmSafe.CallOpts, value) +} + +// ToString0 is a free data retrieval call binding the contract method 0x6900a3ae. +// +// Solidity: function toString(uint256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString0(value *big.Int) (string, error) { + return _VmSafe.Contract.ToString0(&_VmSafe.CallOpts, value) +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString1(opts *bind.CallOpts, value []byte) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString1", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString1(value []byte) (string, error) { + return _VmSafe.Contract.ToString1(&_VmSafe.CallOpts, value) +} + +// ToString1 is a free data retrieval call binding the contract method 0x71aad10d. +// +// Solidity: function toString(bytes value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString1(value []byte) (string, error) { + return _VmSafe.Contract.ToString1(&_VmSafe.CallOpts, value) +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString2(opts *bind.CallOpts, value bool) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString2", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString2(value bool) (string, error) { + return _VmSafe.Contract.ToString2(&_VmSafe.CallOpts, value) +} + +// ToString2 is a free data retrieval call binding the contract method 0x71dce7da. +// +// Solidity: function toString(bool value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString2(value bool) (string, error) { + return _VmSafe.Contract.ToString2(&_VmSafe.CallOpts, value) +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString3(opts *bind.CallOpts, value *big.Int) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString3", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString3(value *big.Int) (string, error) { + return _VmSafe.Contract.ToString3(&_VmSafe.CallOpts, value) +} + +// ToString3 is a free data retrieval call binding the contract method 0xa322c40e. +// +// Solidity: function toString(int256 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString3(value *big.Int) (string, error) { + return _VmSafe.Contract.ToString3(&_VmSafe.CallOpts, value) +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCaller) ToString4(opts *bind.CallOpts, value [32]byte) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toString4", value) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeSession) ToString4(value [32]byte) (string, error) { + return _VmSafe.Contract.ToString4(&_VmSafe.CallOpts, value) +} + +// ToString4 is a free data retrieval call binding the contract method 0xb11a19e8. +// +// Solidity: function toString(bytes32 value) pure returns(string stringifiedValue) +func (_VmSafe *VmSafeCallerSession) ToString4(value [32]byte) (string, error) { + return _VmSafe.Contract.ToString4(&_VmSafe.CallOpts, value) +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_VmSafe *VmSafeCaller) ToUppercase(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "toUppercase", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_VmSafe *VmSafeSession) ToUppercase(input string) (string, error) { + return _VmSafe.Contract.ToUppercase(&_VmSafe.CallOpts, input) +} + +// ToUppercase is a free data retrieval call binding the contract method 0x074ae3d7. +// +// Solidity: function toUppercase(string input) pure returns(string output) +func (_VmSafe *VmSafeCallerSession) ToUppercase(input string) (string, error) { + return _VmSafe.Contract.ToUppercase(&_VmSafe.CallOpts, input) +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_VmSafe *VmSafeCaller) Trim(opts *bind.CallOpts, input string) (string, error) { + var out []interface{} + err := _VmSafe.contract.Call(opts, &out, "trim", input) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_VmSafe *VmSafeSession) Trim(input string) (string, error) { + return _VmSafe.Contract.Trim(&_VmSafe.CallOpts, input) +} + +// Trim is a free data retrieval call binding the contract method 0xb2dad155. +// +// Solidity: function trim(string input) pure returns(string output) +func (_VmSafe *VmSafeCallerSession) Trim(input string) (string, error) { + return _VmSafe.Contract.Trim(&_VmSafe.CallOpts, input) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_VmSafe *VmSafeTransactor) Accesses(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "accesses", target) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_VmSafe *VmSafeSession) Accesses(target common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.Accesses(&_VmSafe.TransactOpts, target) +} + +// Accesses is a paid mutator transaction binding the contract method 0x65bc9481. +// +// Solidity: function accesses(address target) returns(bytes32[] readSlots, bytes32[] writeSlots) +func (_VmSafe *VmSafeTransactorSession) Accesses(target common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.Accesses(&_VmSafe.TransactOpts, target) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_VmSafe *VmSafeTransactor) Breakpoint(opts *bind.TransactOpts, char string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "breakpoint", char) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_VmSafe *VmSafeSession) Breakpoint(char string) (*types.Transaction, error) { + return _VmSafe.Contract.Breakpoint(&_VmSafe.TransactOpts, char) +} + +// Breakpoint is a paid mutator transaction binding the contract method 0xf0259e92. +// +// Solidity: function breakpoint(string char) returns() +func (_VmSafe *VmSafeTransactorSession) Breakpoint(char string) (*types.Transaction, error) { + return _VmSafe.Contract.Breakpoint(&_VmSafe.TransactOpts, char) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_VmSafe *VmSafeTransactor) Breakpoint0(opts *bind.TransactOpts, char string, value bool) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "breakpoint0", char, value) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_VmSafe *VmSafeSession) Breakpoint0(char string, value bool) (*types.Transaction, error) { + return _VmSafe.Contract.Breakpoint0(&_VmSafe.TransactOpts, char, value) +} + +// Breakpoint0 is a paid mutator transaction binding the contract method 0xf7d39a8d. +// +// Solidity: function breakpoint(string char, bool value) returns() +func (_VmSafe *VmSafeTransactorSession) Breakpoint0(char string, value bool) (*types.Transaction, error) { + return _VmSafe.Contract.Breakpoint0(&_VmSafe.TransactOpts, char, value) +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_VmSafe *VmSafeTransactor) Broadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "broadcast") +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_VmSafe *VmSafeSession) Broadcast() (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast(&_VmSafe.TransactOpts) +} + +// Broadcast is a paid mutator transaction binding the contract method 0xafc98040. +// +// Solidity: function broadcast() returns() +func (_VmSafe *VmSafeTransactorSession) Broadcast() (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast(&_VmSafe.TransactOpts) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_VmSafe *VmSafeTransactor) Broadcast0(opts *bind.TransactOpts, signer common.Address) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "broadcast0", signer) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_VmSafe *VmSafeSession) Broadcast0(signer common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast0(&_VmSafe.TransactOpts, signer) +} + +// Broadcast0 is a paid mutator transaction binding the contract method 0xe6962cdb. +// +// Solidity: function broadcast(address signer) returns() +func (_VmSafe *VmSafeTransactorSession) Broadcast0(signer common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast0(&_VmSafe.TransactOpts, signer) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeTransactor) Broadcast1(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "broadcast1", privateKey) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeSession) Broadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast1(&_VmSafe.TransactOpts, privateKey) +} + +// Broadcast1 is a paid mutator transaction binding the contract method 0xf67a965b. +// +// Solidity: function broadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeTransactorSession) Broadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.Broadcast1(&_VmSafe.TransactOpts, privateKey) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_VmSafe *VmSafeTransactor) CloseFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "closeFile", path) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_VmSafe *VmSafeSession) CloseFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.CloseFile(&_VmSafe.TransactOpts, path) +} + +// CloseFile is a paid mutator transaction binding the contract method 0x48c3241f. +// +// Solidity: function closeFile(string path) returns() +func (_VmSafe *VmSafeTransactorSession) CloseFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.CloseFile(&_VmSafe.TransactOpts, path) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_VmSafe *VmSafeTransactor) CopyFile(opts *bind.TransactOpts, from string, to string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "copyFile", from, to) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_VmSafe *VmSafeSession) CopyFile(from string, to string) (*types.Transaction, error) { + return _VmSafe.Contract.CopyFile(&_VmSafe.TransactOpts, from, to) +} + +// CopyFile is a paid mutator transaction binding the contract method 0xa54a87d8. +// +// Solidity: function copyFile(string from, string to) returns(uint64 copied) +func (_VmSafe *VmSafeTransactorSession) CopyFile(from string, to string) (*types.Transaction, error) { + return _VmSafe.Contract.CopyFile(&_VmSafe.TransactOpts, from, to) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeTransactor) CreateDir(opts *bind.TransactOpts, path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "createDir", path, recursive) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeSession) CreateDir(path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.Contract.CreateDir(&_VmSafe.TransactOpts, path, recursive) +} + +// CreateDir is a paid mutator transaction binding the contract method 0x168b64d3. +// +// Solidity: function createDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeTransactorSession) CreateDir(path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.Contract.CreateDir(&_VmSafe.TransactOpts, path, recursive) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactor) CreateWallet(opts *bind.TransactOpts, walletLabel string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "createWallet", walletLabel) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeSession) CreateWallet(walletLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet(&_VmSafe.TransactOpts, walletLabel) +} + +// CreateWallet is a paid mutator transaction binding the contract method 0x7404f1d2. +// +// Solidity: function createWallet(string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactorSession) CreateWallet(walletLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet(&_VmSafe.TransactOpts, walletLabel) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactor) CreateWallet0(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "createWallet0", privateKey) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeSession) CreateWallet0(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet0(&_VmSafe.TransactOpts, privateKey) +} + +// CreateWallet0 is a paid mutator transaction binding the contract method 0x7a675bb6. +// +// Solidity: function createWallet(uint256 privateKey) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactorSession) CreateWallet0(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet0(&_VmSafe.TransactOpts, privateKey) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactor) CreateWallet1(opts *bind.TransactOpts, privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "createWallet1", privateKey, walletLabel) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeSession) CreateWallet1(privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet1(&_VmSafe.TransactOpts, privateKey, walletLabel) +} + +// CreateWallet1 is a paid mutator transaction binding the contract method 0xed7c5462. +// +// Solidity: function createWallet(uint256 privateKey, string walletLabel) returns((address,uint256,uint256,uint256) wallet) +func (_VmSafe *VmSafeTransactorSession) CreateWallet1(privateKey *big.Int, walletLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.CreateWallet1(&_VmSafe.TransactOpts, privateKey, walletLabel) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_VmSafe *VmSafeTransactor) DeployCode(opts *bind.TransactOpts, artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "deployCode", artifactPath, constructorArgs) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_VmSafe *VmSafeSession) DeployCode(artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _VmSafe.Contract.DeployCode(&_VmSafe.TransactOpts, artifactPath, constructorArgs) +} + +// DeployCode is a paid mutator transaction binding the contract method 0x29ce9dde. +// +// Solidity: function deployCode(string artifactPath, bytes constructorArgs) returns(address deployedAddress) +func (_VmSafe *VmSafeTransactorSession) DeployCode(artifactPath string, constructorArgs []byte) (*types.Transaction, error) { + return _VmSafe.Contract.DeployCode(&_VmSafe.TransactOpts, artifactPath, constructorArgs) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_VmSafe *VmSafeTransactor) DeployCode0(opts *bind.TransactOpts, artifactPath string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "deployCode0", artifactPath) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_VmSafe *VmSafeSession) DeployCode0(artifactPath string) (*types.Transaction, error) { + return _VmSafe.Contract.DeployCode0(&_VmSafe.TransactOpts, artifactPath) +} + +// DeployCode0 is a paid mutator transaction binding the contract method 0x9a8325a0. +// +// Solidity: function deployCode(string artifactPath) returns(address deployedAddress) +func (_VmSafe *VmSafeTransactorSession) DeployCode0(artifactPath string) (*types.Transaction, error) { + return _VmSafe.Contract.DeployCode0(&_VmSafe.TransactOpts, artifactPath) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_VmSafe *VmSafeTransactor) EthGetLogs(opts *bind.TransactOpts, fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "eth_getLogs", fromBlock, toBlock, target, topics) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_VmSafe *VmSafeSession) EthGetLogs(fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.EthGetLogs(&_VmSafe.TransactOpts, fromBlock, toBlock, target, topics) +} + +// EthGetLogs is a paid mutator transaction binding the contract method 0x35e1349b. +// +// Solidity: function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] topics) returns((address,bytes32[],bytes,bytes32,uint64,bytes32,uint64,uint256,bool)[] logs) +func (_VmSafe *VmSafeTransactorSession) EthGetLogs(fromBlock *big.Int, toBlock *big.Int, target common.Address, topics [][32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.EthGetLogs(&_VmSafe.TransactOpts, fromBlock, toBlock, target, topics) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_VmSafe *VmSafeTransactor) Exists(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "exists", path) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_VmSafe *VmSafeSession) Exists(path string) (*types.Transaction, error) { + return _VmSafe.Contract.Exists(&_VmSafe.TransactOpts, path) +} + +// Exists is a paid mutator transaction binding the contract method 0x261a323e. +// +// Solidity: function exists(string path) returns(bool result) +func (_VmSafe *VmSafeTransactorSession) Exists(path string) (*types.Transaction, error) { + return _VmSafe.Contract.Exists(&_VmSafe.TransactOpts, path) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_VmSafe *VmSafeTransactor) Ffi(opts *bind.TransactOpts, commandInput []string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "ffi", commandInput) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_VmSafe *VmSafeSession) Ffi(commandInput []string) (*types.Transaction, error) { + return _VmSafe.Contract.Ffi(&_VmSafe.TransactOpts, commandInput) +} + +// Ffi is a paid mutator transaction binding the contract method 0x89160467. +// +// Solidity: function ffi(string[] commandInput) returns(bytes result) +func (_VmSafe *VmSafeTransactorSession) Ffi(commandInput []string) (*types.Transaction, error) { + return _VmSafe.Contract.Ffi(&_VmSafe.TransactOpts, commandInput) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_VmSafe *VmSafeTransactor) GetMappingKeyAndParentOf(opts *bind.TransactOpts, target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "getMappingKeyAndParentOf", target, elementSlot) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_VmSafe *VmSafeSession) GetMappingKeyAndParentOf(target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingKeyAndParentOf(&_VmSafe.TransactOpts, target, elementSlot) +} + +// GetMappingKeyAndParentOf is a paid mutator transaction binding the contract method 0x876e24e6. +// +// Solidity: function getMappingKeyAndParentOf(address target, bytes32 elementSlot) returns(bool found, bytes32 key, bytes32 parent) +func (_VmSafe *VmSafeTransactorSession) GetMappingKeyAndParentOf(target common.Address, elementSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingKeyAndParentOf(&_VmSafe.TransactOpts, target, elementSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_VmSafe *VmSafeTransactor) GetMappingLength(opts *bind.TransactOpts, target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "getMappingLength", target, mappingSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_VmSafe *VmSafeSession) GetMappingLength(target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingLength(&_VmSafe.TransactOpts, target, mappingSlot) +} + +// GetMappingLength is a paid mutator transaction binding the contract method 0x2f2fd63f. +// +// Solidity: function getMappingLength(address target, bytes32 mappingSlot) returns(uint256 length) +func (_VmSafe *VmSafeTransactorSession) GetMappingLength(target common.Address, mappingSlot [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingLength(&_VmSafe.TransactOpts, target, mappingSlot) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_VmSafe *VmSafeTransactor) GetMappingSlotAt(opts *bind.TransactOpts, target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "getMappingSlotAt", target, mappingSlot, idx) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_VmSafe *VmSafeSession) GetMappingSlotAt(target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingSlotAt(&_VmSafe.TransactOpts, target, mappingSlot, idx) +} + +// GetMappingSlotAt is a paid mutator transaction binding the contract method 0xebc73ab4. +// +// Solidity: function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) returns(bytes32 value) +func (_VmSafe *VmSafeTransactorSession) GetMappingSlotAt(target common.Address, mappingSlot [32]byte, idx *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.GetMappingSlotAt(&_VmSafe.TransactOpts, target, mappingSlot, idx) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_VmSafe *VmSafeTransactor) GetNonce0(opts *bind.TransactOpts, wallet VmSafeWallet) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "getNonce0", wallet) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_VmSafe *VmSafeSession) GetNonce0(wallet VmSafeWallet) (*types.Transaction, error) { + return _VmSafe.Contract.GetNonce0(&_VmSafe.TransactOpts, wallet) +} + +// GetNonce0 is a paid mutator transaction binding the contract method 0xa5748aad. +// +// Solidity: function getNonce((address,uint256,uint256,uint256) wallet) returns(uint64 nonce) +func (_VmSafe *VmSafeTransactorSession) GetNonce0(wallet VmSafeWallet) (*types.Transaction, error) { + return _VmSafe.Contract.GetNonce0(&_VmSafe.TransactOpts, wallet) +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_VmSafe *VmSafeTransactor) GetRecordedLogs(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "getRecordedLogs") +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_VmSafe *VmSafeSession) GetRecordedLogs() (*types.Transaction, error) { + return _VmSafe.Contract.GetRecordedLogs(&_VmSafe.TransactOpts) +} + +// GetRecordedLogs is a paid mutator transaction binding the contract method 0x191553a4. +// +// Solidity: function getRecordedLogs() returns((bytes32[],bytes,address)[] logs) +func (_VmSafe *VmSafeTransactorSession) GetRecordedLogs() (*types.Transaction, error) { + return _VmSafe.Contract.GetRecordedLogs(&_VmSafe.TransactOpts) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_VmSafe *VmSafeTransactor) IsDir(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "isDir", path) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_VmSafe *VmSafeSession) IsDir(path string) (*types.Transaction, error) { + return _VmSafe.Contract.IsDir(&_VmSafe.TransactOpts, path) +} + +// IsDir is a paid mutator transaction binding the contract method 0x7d15d019. +// +// Solidity: function isDir(string path) returns(bool result) +func (_VmSafe *VmSafeTransactorSession) IsDir(path string) (*types.Transaction, error) { + return _VmSafe.Contract.IsDir(&_VmSafe.TransactOpts, path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_VmSafe *VmSafeTransactor) IsFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "isFile", path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_VmSafe *VmSafeSession) IsFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.IsFile(&_VmSafe.TransactOpts, path) +} + +// IsFile is a paid mutator transaction binding the contract method 0xe0eb04d4. +// +// Solidity: function isFile(string path) returns(bool result) +func (_VmSafe *VmSafeTransactorSession) IsFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.IsFile(&_VmSafe.TransactOpts, path) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_VmSafe *VmSafeTransactor) Label(opts *bind.TransactOpts, account common.Address, newLabel string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "label", account, newLabel) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_VmSafe *VmSafeSession) Label(account common.Address, newLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.Label(&_VmSafe.TransactOpts, account, newLabel) +} + +// Label is a paid mutator transaction binding the contract method 0xc657c718. +// +// Solidity: function label(address account, string newLabel) returns() +func (_VmSafe *VmSafeTransactorSession) Label(account common.Address, newLabel string) (*types.Transaction, error) { + return _VmSafe.Contract.Label(&_VmSafe.TransactOpts, account, newLabel) +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_VmSafe *VmSafeTransactor) PauseGasMetering(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "pauseGasMetering") +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_VmSafe *VmSafeSession) PauseGasMetering() (*types.Transaction, error) { + return _VmSafe.Contract.PauseGasMetering(&_VmSafe.TransactOpts) +} + +// PauseGasMetering is a paid mutator transaction binding the contract method 0xd1a5b36f. +// +// Solidity: function pauseGasMetering() returns() +func (_VmSafe *VmSafeTransactorSession) PauseGasMetering() (*types.Transaction, error) { + return _VmSafe.Contract.PauseGasMetering(&_VmSafe.TransactOpts) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_VmSafe *VmSafeTransactor) Prompt(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "prompt", promptText) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_VmSafe *VmSafeSession) Prompt(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.Prompt(&_VmSafe.TransactOpts, promptText) +} + +// Prompt is a paid mutator transaction binding the contract method 0x47eaf474. +// +// Solidity: function prompt(string promptText) returns(string input) +func (_VmSafe *VmSafeTransactorSession) Prompt(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.Prompt(&_VmSafe.TransactOpts, promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_VmSafe *VmSafeTransactor) PromptAddress(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "promptAddress", promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_VmSafe *VmSafeSession) PromptAddress(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptAddress(&_VmSafe.TransactOpts, promptText) +} + +// PromptAddress is a paid mutator transaction binding the contract method 0x62ee05f4. +// +// Solidity: function promptAddress(string promptText) returns(address) +func (_VmSafe *VmSafeTransactorSession) PromptAddress(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptAddress(&_VmSafe.TransactOpts, promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_VmSafe *VmSafeTransactor) PromptSecret(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "promptSecret", promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_VmSafe *VmSafeSession) PromptSecret(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptSecret(&_VmSafe.TransactOpts, promptText) +} + +// PromptSecret is a paid mutator transaction binding the contract method 0x1e279d41. +// +// Solidity: function promptSecret(string promptText) returns(string input) +func (_VmSafe *VmSafeTransactorSession) PromptSecret(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptSecret(&_VmSafe.TransactOpts, promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeTransactor) PromptSecretUint(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "promptSecretUint", promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeSession) PromptSecretUint(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptSecretUint(&_VmSafe.TransactOpts, promptText) +} + +// PromptSecretUint is a paid mutator transaction binding the contract method 0x69ca02b7. +// +// Solidity: function promptSecretUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeTransactorSession) PromptSecretUint(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptSecretUint(&_VmSafe.TransactOpts, promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeTransactor) PromptUint(opts *bind.TransactOpts, promptText string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "promptUint", promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeSession) PromptUint(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptUint(&_VmSafe.TransactOpts, promptText) +} + +// PromptUint is a paid mutator transaction binding the contract method 0x652fd489. +// +// Solidity: function promptUint(string promptText) returns(uint256) +func (_VmSafe *VmSafeTransactorSession) PromptUint(promptText string) (*types.Transaction, error) { + return _VmSafe.Contract.PromptUint(&_VmSafe.TransactOpts, promptText) +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_VmSafe *VmSafeTransactor) RandomAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "randomAddress") +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_VmSafe *VmSafeSession) RandomAddress() (*types.Transaction, error) { + return _VmSafe.Contract.RandomAddress(&_VmSafe.TransactOpts) +} + +// RandomAddress is a paid mutator transaction binding the contract method 0xd5bee9f5. +// +// Solidity: function randomAddress() returns(address) +func (_VmSafe *VmSafeTransactorSession) RandomAddress() (*types.Transaction, error) { + return _VmSafe.Contract.RandomAddress(&_VmSafe.TransactOpts) +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_VmSafe *VmSafeTransactor) RandomUint(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "randomUint") +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_VmSafe *VmSafeSession) RandomUint() (*types.Transaction, error) { + return _VmSafe.Contract.RandomUint(&_VmSafe.TransactOpts) +} + +// RandomUint is a paid mutator transaction binding the contract method 0x25124730. +// +// Solidity: function randomUint() returns(uint256) +func (_VmSafe *VmSafeTransactorSession) RandomUint() (*types.Transaction, error) { + return _VmSafe.Contract.RandomUint(&_VmSafe.TransactOpts) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_VmSafe *VmSafeTransactor) RandomUint0(opts *bind.TransactOpts, min *big.Int, max *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "randomUint0", min, max) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_VmSafe *VmSafeSession) RandomUint0(min *big.Int, max *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.RandomUint0(&_VmSafe.TransactOpts, min, max) +} + +// RandomUint0 is a paid mutator transaction binding the contract method 0xd61b051b. +// +// Solidity: function randomUint(uint256 min, uint256 max) returns(uint256) +func (_VmSafe *VmSafeTransactorSession) RandomUint0(min *big.Int, max *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.RandomUint0(&_VmSafe.TransactOpts, min, max) +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_VmSafe *VmSafeTransactor) Record(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "record") +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_VmSafe *VmSafeSession) Record() (*types.Transaction, error) { + return _VmSafe.Contract.Record(&_VmSafe.TransactOpts) +} + +// Record is a paid mutator transaction binding the contract method 0x266cf109. +// +// Solidity: function record() returns() +func (_VmSafe *VmSafeTransactorSession) Record() (*types.Transaction, error) { + return _VmSafe.Contract.Record(&_VmSafe.TransactOpts) +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_VmSafe *VmSafeTransactor) RecordLogs(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "recordLogs") +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_VmSafe *VmSafeSession) RecordLogs() (*types.Transaction, error) { + return _VmSafe.Contract.RecordLogs(&_VmSafe.TransactOpts) +} + +// RecordLogs is a paid mutator transaction binding the contract method 0x41af2f52. +// +// Solidity: function recordLogs() returns() +func (_VmSafe *VmSafeTransactorSession) RecordLogs() (*types.Transaction, error) { + return _VmSafe.Contract.RecordLogs(&_VmSafe.TransactOpts) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_VmSafe *VmSafeTransactor) RememberKey(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "rememberKey", privateKey) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_VmSafe *VmSafeSession) RememberKey(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.RememberKey(&_VmSafe.TransactOpts, privateKey) +} + +// RememberKey is a paid mutator transaction binding the contract method 0x22100064. +// +// Solidity: function rememberKey(uint256 privateKey) returns(address keyAddr) +func (_VmSafe *VmSafeTransactorSession) RememberKey(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.RememberKey(&_VmSafe.TransactOpts, privateKey) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeTransactor) RemoveDir(opts *bind.TransactOpts, path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "removeDir", path, recursive) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeSession) RemoveDir(path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.Contract.RemoveDir(&_VmSafe.TransactOpts, path, recursive) +} + +// RemoveDir is a paid mutator transaction binding the contract method 0x45c62011. +// +// Solidity: function removeDir(string path, bool recursive) returns() +func (_VmSafe *VmSafeTransactorSession) RemoveDir(path string, recursive bool) (*types.Transaction, error) { + return _VmSafe.Contract.RemoveDir(&_VmSafe.TransactOpts, path, recursive) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_VmSafe *VmSafeTransactor) RemoveFile(opts *bind.TransactOpts, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "removeFile", path) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_VmSafe *VmSafeSession) RemoveFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.RemoveFile(&_VmSafe.TransactOpts, path) +} + +// RemoveFile is a paid mutator transaction binding the contract method 0xf1afe04d. +// +// Solidity: function removeFile(string path) returns() +func (_VmSafe *VmSafeTransactorSession) RemoveFile(path string) (*types.Transaction, error) { + return _VmSafe.Contract.RemoveFile(&_VmSafe.TransactOpts, path) +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_VmSafe *VmSafeTransactor) ResumeGasMetering(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "resumeGasMetering") +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_VmSafe *VmSafeSession) ResumeGasMetering() (*types.Transaction, error) { + return _VmSafe.Contract.ResumeGasMetering(&_VmSafe.TransactOpts) +} + +// ResumeGasMetering is a paid mutator transaction binding the contract method 0x2bcd50e0. +// +// Solidity: function resumeGasMetering() returns() +func (_VmSafe *VmSafeTransactorSession) ResumeGasMetering() (*types.Transaction, error) { + return _VmSafe.Contract.ResumeGasMetering(&_VmSafe.TransactOpts) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_VmSafe *VmSafeTransactor) Rpc(opts *bind.TransactOpts, urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "rpc", urlOrAlias, method, params) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_VmSafe *VmSafeSession) Rpc(urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _VmSafe.Contract.Rpc(&_VmSafe.TransactOpts, urlOrAlias, method, params) +} + +// Rpc is a paid mutator transaction binding the contract method 0x0199a220. +// +// Solidity: function rpc(string urlOrAlias, string method, string params) returns(bytes data) +func (_VmSafe *VmSafeTransactorSession) Rpc(urlOrAlias string, method string, params string) (*types.Transaction, error) { + return _VmSafe.Contract.Rpc(&_VmSafe.TransactOpts, urlOrAlias, method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_VmSafe *VmSafeTransactor) Rpc0(opts *bind.TransactOpts, method string, params string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "rpc0", method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_VmSafe *VmSafeSession) Rpc0(method string, params string) (*types.Transaction, error) { + return _VmSafe.Contract.Rpc0(&_VmSafe.TransactOpts, method, params) +} + +// Rpc0 is a paid mutator transaction binding the contract method 0x1206c8a8. +// +// Solidity: function rpc(string method, string params) returns(bytes data) +func (_VmSafe *VmSafeTransactorSession) Rpc0(method string, params string) (*types.Transaction, error) { + return _VmSafe.Contract.Rpc0(&_VmSafe.TransactOpts, method, params) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeAddress(opts *bind.TransactOpts, objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeAddress", objectKey, valueKey, values) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeAddress(objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeAddress(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeAddress is a paid mutator transaction binding the contract method 0x1e356e1a. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeAddress(objectKey string, valueKey string, values []common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeAddress(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeAddress0(opts *bind.TransactOpts, objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeAddress0", objectKey, valueKey, value) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeAddress0(objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeAddress0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeAddress0 is a paid mutator transaction binding the contract method 0x972c6062. +// +// Solidity: function serializeAddress(string objectKey, string valueKey, address value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeAddress0(objectKey string, valueKey string, value common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeAddress0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBool(opts *bind.TransactOpts, objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBool", objectKey, valueKey, values) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBool(objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBool(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBool is a paid mutator transaction binding the contract method 0x92925aa1. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBool(objectKey string, valueKey string, values []bool) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBool(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBool0(opts *bind.TransactOpts, objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBool0", objectKey, valueKey, value) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBool0(objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBool0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBool0 is a paid mutator transaction binding the contract method 0xac22e971. +// +// Solidity: function serializeBool(string objectKey, string valueKey, bool value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBool0(objectKey string, valueKey string, value bool) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBool0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBytes(opts *bind.TransactOpts, objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBytes", objectKey, valueKey, values) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBytes(objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes is a paid mutator transaction binding the contract method 0x9884b232. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBytes(objectKey string, valueKey string, values [][]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBytes0(opts *bind.TransactOpts, objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBytes0", objectKey, valueKey, value) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBytes0(objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes0 is a paid mutator transaction binding the contract method 0xf21d52c7. +// +// Solidity: function serializeBytes(string objectKey, string valueKey, bytes value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBytes0(objectKey string, valueKey string, value []byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBytes32(opts *bind.TransactOpts, objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBytes32", objectKey, valueKey, values) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBytes32(objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes32(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes32 is a paid mutator transaction binding the contract method 0x201e43e2. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBytes32(objectKey string, valueKey string, values [][32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes32(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeBytes320(opts *bind.TransactOpts, objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeBytes320", objectKey, valueKey, value) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeBytes320(objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes320(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeBytes320 is a paid mutator transaction binding the contract method 0x2d812b44. +// +// Solidity: function serializeBytes32(string objectKey, string valueKey, bytes32 value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeBytes320(objectKey string, valueKey string, value [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeBytes320(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeInt(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeInt", objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeInt(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeInt(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt is a paid mutator transaction binding the contract method 0x3f33db60. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256 value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeInt(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeInt(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeInt0(opts *bind.TransactOpts, objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeInt0", objectKey, valueKey, values) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeInt0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeInt0(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeInt0 is a paid mutator transaction binding the contract method 0x7676e127. +// +// Solidity: function serializeInt(string objectKey, string valueKey, int256[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeInt0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeInt0(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeJson(opts *bind.TransactOpts, objectKey string, value string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeJson", objectKey, value) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeJson(objectKey string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeJson(&_VmSafe.TransactOpts, objectKey, value) +} + +// SerializeJson is a paid mutator transaction binding the contract method 0x9b3358b0. +// +// Solidity: function serializeJson(string objectKey, string value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeJson(objectKey string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeJson(&_VmSafe.TransactOpts, objectKey, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeJsonType0(opts *bind.TransactOpts, objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeJsonType0", objectKey, valueKey, typeDescription, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeJsonType0(objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeJsonType0(&_VmSafe.TransactOpts, objectKey, valueKey, typeDescription, value) +} + +// SerializeJsonType0 is a paid mutator transaction binding the contract method 0x6f93bccb. +// +// Solidity: function serializeJsonType(string objectKey, string valueKey, string typeDescription, bytes value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeJsonType0(objectKey string, valueKey string, typeDescription string, value []byte) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeJsonType0(&_VmSafe.TransactOpts, objectKey, valueKey, typeDescription, value) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeString(opts *bind.TransactOpts, objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeString", objectKey, valueKey, values) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeString(objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeString(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeString is a paid mutator transaction binding the contract method 0x561cd6f3. +// +// Solidity: function serializeString(string objectKey, string valueKey, string[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeString(objectKey string, valueKey string, values []string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeString(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeString0(opts *bind.TransactOpts, objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeString0", objectKey, valueKey, value) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeString0(objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeString0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeString0 is a paid mutator transaction binding the contract method 0x88da6d35. +// +// Solidity: function serializeString(string objectKey, string valueKey, string value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeString0(objectKey string, valueKey string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeString0(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeUint(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeUint", objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeUint(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUint(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint is a paid mutator transaction binding the contract method 0x129e9002. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeUint(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUint(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeUint0(opts *bind.TransactOpts, objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeUint0", objectKey, valueKey, values) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_VmSafe *VmSafeSession) SerializeUint0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUint0(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeUint0 is a paid mutator transaction binding the contract method 0xfee9a469. +// +// Solidity: function serializeUint(string objectKey, string valueKey, uint256[] values) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeUint0(objectKey string, valueKey string, values []*big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUint0(&_VmSafe.TransactOpts, objectKey, valueKey, values) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeTransactor) SerializeUintToHex(opts *bind.TransactOpts, objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "serializeUintToHex", objectKey, valueKey, value) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeSession) SerializeUintToHex(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUintToHex(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SerializeUintToHex is a paid mutator transaction binding the contract method 0xae5a2ae8. +// +// Solidity: function serializeUintToHex(string objectKey, string valueKey, uint256 value) returns(string json) +func (_VmSafe *VmSafeTransactorSession) SerializeUintToHex(objectKey string, valueKey string, value *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.SerializeUintToHex(&_VmSafe.TransactOpts, objectKey, valueKey, value) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_VmSafe *VmSafeTransactor) SetEnv(opts *bind.TransactOpts, name string, value string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "setEnv", name, value) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_VmSafe *VmSafeSession) SetEnv(name string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SetEnv(&_VmSafe.TransactOpts, name, value) +} + +// SetEnv is a paid mutator transaction binding the contract method 0x3d5923ee. +// +// Solidity: function setEnv(string name, string value) returns() +func (_VmSafe *VmSafeTransactorSession) SetEnv(name string, value string) (*types.Transaction, error) { + return _VmSafe.Contract.SetEnv(&_VmSafe.TransactOpts, name, value) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeTransactor) Sign1(opts *bind.TransactOpts, wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "sign1", wallet, digest) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeSession) Sign1(wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.Sign1(&_VmSafe.TransactOpts, wallet, digest) +} + +// Sign1 is a paid mutator transaction binding the contract method 0xb25c5a25. +// +// Solidity: function sign((address,uint256,uint256,uint256) wallet, bytes32 digest) returns(uint8 v, bytes32 r, bytes32 s) +func (_VmSafe *VmSafeTransactorSession) Sign1(wallet VmSafeWallet, digest [32]byte) (*types.Transaction, error) { + return _VmSafe.Contract.Sign1(&_VmSafe.TransactOpts, wallet, digest) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_VmSafe *VmSafeTransactor) Sleep(opts *bind.TransactOpts, duration *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "sleep", duration) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_VmSafe *VmSafeSession) Sleep(duration *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.Sleep(&_VmSafe.TransactOpts, duration) +} + +// Sleep is a paid mutator transaction binding the contract method 0xfa9d8713. +// +// Solidity: function sleep(uint256 duration) returns() +func (_VmSafe *VmSafeTransactorSession) Sleep(duration *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.Sleep(&_VmSafe.TransactOpts, duration) +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_VmSafe *VmSafeTransactor) StartBroadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "startBroadcast") +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_VmSafe *VmSafeSession) StartBroadcast() (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast(&_VmSafe.TransactOpts) +} + +// StartBroadcast is a paid mutator transaction binding the contract method 0x7fb5297f. +// +// Solidity: function startBroadcast() returns() +func (_VmSafe *VmSafeTransactorSession) StartBroadcast() (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast(&_VmSafe.TransactOpts) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_VmSafe *VmSafeTransactor) StartBroadcast0(opts *bind.TransactOpts, signer common.Address) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "startBroadcast0", signer) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_VmSafe *VmSafeSession) StartBroadcast0(signer common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast0(&_VmSafe.TransactOpts, signer) +} + +// StartBroadcast0 is a paid mutator transaction binding the contract method 0x7fec2a8d. +// +// Solidity: function startBroadcast(address signer) returns() +func (_VmSafe *VmSafeTransactorSession) StartBroadcast0(signer common.Address) (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast0(&_VmSafe.TransactOpts, signer) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeTransactor) StartBroadcast1(opts *bind.TransactOpts, privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "startBroadcast1", privateKey) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeSession) StartBroadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast1(&_VmSafe.TransactOpts, privateKey) +} + +// StartBroadcast1 is a paid mutator transaction binding the contract method 0xce817d47. +// +// Solidity: function startBroadcast(uint256 privateKey) returns() +func (_VmSafe *VmSafeTransactorSession) StartBroadcast1(privateKey *big.Int) (*types.Transaction, error) { + return _VmSafe.Contract.StartBroadcast1(&_VmSafe.TransactOpts, privateKey) +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_VmSafe *VmSafeTransactor) StartMappingRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "startMappingRecording") +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_VmSafe *VmSafeSession) StartMappingRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StartMappingRecording(&_VmSafe.TransactOpts) +} + +// StartMappingRecording is a paid mutator transaction binding the contract method 0x3e9705c0. +// +// Solidity: function startMappingRecording() returns() +func (_VmSafe *VmSafeTransactorSession) StartMappingRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StartMappingRecording(&_VmSafe.TransactOpts) +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_VmSafe *VmSafeTransactor) StartStateDiffRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "startStateDiffRecording") +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_VmSafe *VmSafeSession) StartStateDiffRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StartStateDiffRecording(&_VmSafe.TransactOpts) +} + +// StartStateDiffRecording is a paid mutator transaction binding the contract method 0xcf22e3c9. +// +// Solidity: function startStateDiffRecording() returns() +func (_VmSafe *VmSafeTransactorSession) StartStateDiffRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StartStateDiffRecording(&_VmSafe.TransactOpts) +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_VmSafe *VmSafeTransactor) StopAndReturnStateDiff(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "stopAndReturnStateDiff") +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_VmSafe *VmSafeSession) StopAndReturnStateDiff() (*types.Transaction, error) { + return _VmSafe.Contract.StopAndReturnStateDiff(&_VmSafe.TransactOpts) +} + +// StopAndReturnStateDiff is a paid mutator transaction binding the contract method 0xaa5cf90e. +// +// Solidity: function stopAndReturnStateDiff() returns(((uint256,uint256),uint8,address,address,bool,uint256,uint256,bytes,uint256,bytes,bool,(address,bytes32,bool,bytes32,bytes32,bool)[],uint64)[] accountAccesses) +func (_VmSafe *VmSafeTransactorSession) StopAndReturnStateDiff() (*types.Transaction, error) { + return _VmSafe.Contract.StopAndReturnStateDiff(&_VmSafe.TransactOpts) +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_VmSafe *VmSafeTransactor) StopBroadcast(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "stopBroadcast") +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_VmSafe *VmSafeSession) StopBroadcast() (*types.Transaction, error) { + return _VmSafe.Contract.StopBroadcast(&_VmSafe.TransactOpts) +} + +// StopBroadcast is a paid mutator transaction binding the contract method 0x76eadd36. +// +// Solidity: function stopBroadcast() returns() +func (_VmSafe *VmSafeTransactorSession) StopBroadcast() (*types.Transaction, error) { + return _VmSafe.Contract.StopBroadcast(&_VmSafe.TransactOpts) +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_VmSafe *VmSafeTransactor) StopMappingRecording(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "stopMappingRecording") +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_VmSafe *VmSafeSession) StopMappingRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StopMappingRecording(&_VmSafe.TransactOpts) +} + +// StopMappingRecording is a paid mutator transaction binding the contract method 0x0d4aae9b. +// +// Solidity: function stopMappingRecording() returns() +func (_VmSafe *VmSafeTransactorSession) StopMappingRecording() (*types.Transaction, error) { + return _VmSafe.Contract.StopMappingRecording(&_VmSafe.TransactOpts) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_VmSafe *VmSafeTransactor) TryFfi(opts *bind.TransactOpts, commandInput []string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "tryFfi", commandInput) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_VmSafe *VmSafeSession) TryFfi(commandInput []string) (*types.Transaction, error) { + return _VmSafe.Contract.TryFfi(&_VmSafe.TransactOpts, commandInput) +} + +// TryFfi is a paid mutator transaction binding the contract method 0xf45c1ce7. +// +// Solidity: function tryFfi(string[] commandInput) returns((int32,bytes,bytes) result) +func (_VmSafe *VmSafeTransactorSession) TryFfi(commandInput []string) (*types.Transaction, error) { + return _VmSafe.Contract.TryFfi(&_VmSafe.TransactOpts, commandInput) +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_VmSafe *VmSafeTransactor) UnixTime(opts *bind.TransactOpts) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "unixTime") +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_VmSafe *VmSafeSession) UnixTime() (*types.Transaction, error) { + return _VmSafe.Contract.UnixTime(&_VmSafe.TransactOpts) +} + +// UnixTime is a paid mutator transaction binding the contract method 0x625387dc. +// +// Solidity: function unixTime() returns(uint256 milliseconds) +func (_VmSafe *VmSafeTransactorSession) UnixTime() (*types.Transaction, error) { + return _VmSafe.Contract.UnixTime(&_VmSafe.TransactOpts) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_VmSafe *VmSafeTransactor) WriteFile(opts *bind.TransactOpts, path string, data string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeFile", path, data) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_VmSafe *VmSafeSession) WriteFile(path string, data string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteFile(&_VmSafe.TransactOpts, path, data) +} + +// WriteFile is a paid mutator transaction binding the contract method 0x897e0a97. +// +// Solidity: function writeFile(string path, string data) returns() +func (_VmSafe *VmSafeTransactorSession) WriteFile(path string, data string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteFile(&_VmSafe.TransactOpts, path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_VmSafe *VmSafeTransactor) WriteFileBinary(opts *bind.TransactOpts, path string, data []byte) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeFileBinary", path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_VmSafe *VmSafeSession) WriteFileBinary(path string, data []byte) (*types.Transaction, error) { + return _VmSafe.Contract.WriteFileBinary(&_VmSafe.TransactOpts, path, data) +} + +// WriteFileBinary is a paid mutator transaction binding the contract method 0x1f21fc80. +// +// Solidity: function writeFileBinary(string path, bytes data) returns() +func (_VmSafe *VmSafeTransactorSession) WriteFileBinary(path string, data []byte) (*types.Transaction, error) { + return _VmSafe.Contract.WriteFileBinary(&_VmSafe.TransactOpts, path, data) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeTransactor) WriteJson(opts *bind.TransactOpts, json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeJson", json, path, valueKey) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeSession) WriteJson(json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteJson(&_VmSafe.TransactOpts, json, path, valueKey) +} + +// WriteJson is a paid mutator transaction binding the contract method 0x35d6ad46. +// +// Solidity: function writeJson(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeTransactorSession) WriteJson(json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteJson(&_VmSafe.TransactOpts, json, path, valueKey) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_VmSafe *VmSafeTransactor) WriteJson0(opts *bind.TransactOpts, json string, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeJson0", json, path) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_VmSafe *VmSafeSession) WriteJson0(json string, path string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteJson0(&_VmSafe.TransactOpts, json, path) +} + +// WriteJson0 is a paid mutator transaction binding the contract method 0xe23cd19f. +// +// Solidity: function writeJson(string json, string path) returns() +func (_VmSafe *VmSafeTransactorSession) WriteJson0(json string, path string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteJson0(&_VmSafe.TransactOpts, json, path) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_VmSafe *VmSafeTransactor) WriteLine(opts *bind.TransactOpts, path string, data string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeLine", path, data) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_VmSafe *VmSafeSession) WriteLine(path string, data string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteLine(&_VmSafe.TransactOpts, path, data) +} + +// WriteLine is a paid mutator transaction binding the contract method 0x619d897f. +// +// Solidity: function writeLine(string path, string data) returns() +func (_VmSafe *VmSafeTransactorSession) WriteLine(path string, data string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteLine(&_VmSafe.TransactOpts, path, data) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeTransactor) WriteToml(opts *bind.TransactOpts, json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeToml", json, path, valueKey) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeSession) WriteToml(json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteToml(&_VmSafe.TransactOpts, json, path, valueKey) +} + +// WriteToml is a paid mutator transaction binding the contract method 0x51ac6a33. +// +// Solidity: function writeToml(string json, string path, string valueKey) returns() +func (_VmSafe *VmSafeTransactorSession) WriteToml(json string, path string, valueKey string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteToml(&_VmSafe.TransactOpts, json, path, valueKey) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_VmSafe *VmSafeTransactor) WriteToml0(opts *bind.TransactOpts, json string, path string) (*types.Transaction, error) { + return _VmSafe.contract.Transact(opts, "writeToml0", json, path) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_VmSafe *VmSafeSession) WriteToml0(json string, path string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteToml0(&_VmSafe.TransactOpts, json, path) +} + +// WriteToml0 is a paid mutator transaction binding the contract method 0xc0865ba7. +// +// Solidity: function writeToml(string json, string path) returns() +func (_VmSafe *VmSafeTransactorSession) WriteToml0(json string, path string) (*types.Transaction, error) { + return _VmSafe.Contract.WriteToml0(&_VmSafe.TransactOpts, json, path) +} diff --git a/v2/pkg/wzeta.sol/weth9.go b/v2/pkg/wzeta.sol/weth9.go new file mode 100644 index 00000000..94a2af08 --- /dev/null +++ b/v2/pkg/wzeta.sol/weth9.go @@ -0,0 +1,1113 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package wzeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"guy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"dst\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dst\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"guy\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"dst\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"dst\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a0033", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use WETH9MetaData.Bin instead. +var WETH9Bin = WETH9MetaData.Bin + +// DeployWETH9 deploys a new Ethereum contract, binding an instance of WETH9 to it. +func DeployWETH9(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WETH9, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(WETH9Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9Caller) Allowance(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "allowance", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9Session) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address , address ) view returns(uint256) +func (_WETH9 *WETH9CallerSession) Allowance(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _WETH9.Contract.Allowance(&_WETH9.CallOpts, arg0, arg1) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9Caller) BalanceOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "balanceOf", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9Session) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address ) view returns(uint256) +func (_WETH9 *WETH9CallerSession) BalanceOf(arg0 common.Address) (*big.Int, error) { + return _WETH9.Contract.BalanceOf(&_WETH9.CallOpts, arg0) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9Caller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9Session) Decimals() (uint8, error) { + return _WETH9.Contract.Decimals(&_WETH9.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_WETH9 *WETH9CallerSession) Decimals() (uint8, error) { + return _WETH9.Contract.Decimals(&_WETH9.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9Session) Name() (string, error) { + return _WETH9.Contract.Name(&_WETH9.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_WETH9 *WETH9CallerSession) Name() (string, error) { + return _WETH9.Contract.Name(&_WETH9.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9Session) Symbol() (string, error) { + return _WETH9.Contract.Symbol(&_WETH9.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_WETH9 *WETH9CallerSession) Symbol() (string, error) { + return _WETH9.Contract.Symbol(&_WETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _WETH9.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9Session) TotalSupply() (*big.Int, error) { + return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_WETH9 *WETH9CallerSession) TotalSupply() (*big.Int, error) { + return _WETH9.Contract.TotalSupply(&_WETH9.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) Approve(opts *bind.TransactOpts, guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "approve", guy, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address guy, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) Approve(guy common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Approve(&_WETH9.TransactOpts, guy, wad) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9Session) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_WETH9 *WETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _WETH9.Contract.Deposit(&_WETH9.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) Transfer(opts *bind.TransactOpts, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "transfer", dst, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) Transfer(dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Transfer(&_WETH9.TransactOpts, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Transactor) TransferFrom(opts *bind.TransactOpts, src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "transferFrom", src, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9Session) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address src, address dst, uint256 wad) returns(bool) +func (_WETH9 *WETH9TransactorSession) TransferFrom(src common.Address, dst common.Address, wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.TransferFrom(&_WETH9.TransactOpts, src, dst, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9Session) Receive() (*types.Transaction, error) { + return _WETH9.Contract.Receive(&_WETH9.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WETH9 *WETH9TransactorSession) Receive() (*types.Transaction, error) { + return _WETH9.Contract.Receive(&_WETH9.TransactOpts) +} + +// WETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WETH9 contract. +type WETH9ApprovalIterator struct { + Event *WETH9Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Approval represents a Approval event raised by the WETH9 contract. +type WETH9Approval struct { + Src common.Address + Guy common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterApproval(opts *bind.FilterOpts, src []common.Address, guy []common.Address) (*WETH9ApprovalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var guyRule []interface{} + for _, guyItem := range guy { + guyRule = append(guyRule, guyItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Approval", srcRule, guyRule) + if err != nil { + return nil, err + } + return &WETH9ApprovalIterator{contract: _WETH9.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *WETH9Approval, src []common.Address, guy []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var guyRule []interface{} + for _, guyItem := range guy { + guyRule = append(guyRule, guyItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Approval", srcRule, guyRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Approval) + if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed src, address indexed guy, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseApproval(log types.Log) (*WETH9Approval, error) { + event := new(WETH9Approval) + if err := _WETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the WETH9 contract. +type WETH9DepositIterator struct { + Event *WETH9Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Deposit represents a Deposit event raised by the WETH9 contract. +type WETH9Deposit struct { + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*WETH9DepositIterator, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return &WETH9DepositIterator{contract: _WETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *WETH9Deposit, dst []common.Address) (event.Subscription, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Deposit) + if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseDeposit(log types.Log) (*WETH9Deposit, error) { + event := new(WETH9Deposit) + if err := _WETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the WETH9 contract. +type WETH9TransferIterator struct { + Event *WETH9Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Transfer represents a Transfer event raised by the WETH9 contract. +type WETH9Transfer struct { + Src common.Address + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterTransfer(opts *bind.FilterOpts, src []common.Address, dst []common.Address) (*WETH9TransferIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Transfer", srcRule, dstRule) + if err != nil { + return nil, err + } + return &WETH9TransferIterator{contract: _WETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *WETH9Transfer, src []common.Address, dst []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Transfer", srcRule, dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Transfer) + if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed src, address indexed dst, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseTransfer(log types.Log) (*WETH9Transfer, error) { + event := new(WETH9Transfer) + if err := _WETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the WETH9 contract. +type WETH9WithdrawalIterator struct { + Event *WETH9Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WETH9WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WETH9WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WETH9WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WETH9Withdrawal represents a Withdrawal event raised by the WETH9 contract. +type WETH9Withdrawal struct { + Src common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*WETH9WithdrawalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _WETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return &WETH9WithdrawalIterator{contract: _WETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *WETH9Withdrawal, src []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _WETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WETH9Withdrawal) + if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_WETH9 *WETH9Filterer) ParseWithdrawal(log types.Log) (*WETH9Withdrawal, error) { + event := new(WETH9Withdrawal) + if err := _WETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zcontract.sol/universalcontract.go b/v2/pkg/zcontract.sol/universalcontract.go new file mode 100644 index 00000000..6a689167 --- /dev/null +++ b/v2/pkg/zcontract.sol/universalcontract.go @@ -0,0 +1,237 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// RevertContext is an auto generated low-level Go binding around an user-defined struct. +type RevertContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// UniversalContractMetaData contains all meta data concerning the UniversalContract contract. +var UniversalContractMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// UniversalContractABI is the input ABI used to generate the binding from. +// Deprecated: Use UniversalContractMetaData.ABI instead. +var UniversalContractABI = UniversalContractMetaData.ABI + +// UniversalContract is an auto generated Go binding around an Ethereum contract. +type UniversalContract struct { + UniversalContractCaller // Read-only binding to the contract + UniversalContractTransactor // Write-only binding to the contract + UniversalContractFilterer // Log filterer for contract events +} + +// UniversalContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type UniversalContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UniversalContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UniversalContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UniversalContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UniversalContractSession struct { + Contract *UniversalContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniversalContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UniversalContractCallerSession struct { + Contract *UniversalContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UniversalContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UniversalContractTransactorSession struct { + Contract *UniversalContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UniversalContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type UniversalContractRaw struct { + Contract *UniversalContract // Generic contract binding to access the raw methods on +} + +// UniversalContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UniversalContractCallerRaw struct { + Contract *UniversalContractCaller // Generic read-only contract binding to access the raw methods on +} + +// UniversalContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UniversalContractTransactorRaw struct { + Contract *UniversalContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUniversalContract creates a new instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContract(address common.Address, backend bind.ContractBackend) (*UniversalContract, error) { + contract, err := bindUniversalContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UniversalContract{UniversalContractCaller: UniversalContractCaller{contract: contract}, UniversalContractTransactor: UniversalContractTransactor{contract: contract}, UniversalContractFilterer: UniversalContractFilterer{contract: contract}}, nil +} + +// NewUniversalContractCaller creates a new read-only instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractCaller(address common.Address, caller bind.ContractCaller) (*UniversalContractCaller, error) { + contract, err := bindUniversalContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UniversalContractCaller{contract: contract}, nil +} + +// NewUniversalContractTransactor creates a new write-only instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractTransactor(address common.Address, transactor bind.ContractTransactor) (*UniversalContractTransactor, error) { + contract, err := bindUniversalContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UniversalContractTransactor{contract: contract}, nil +} + +// NewUniversalContractFilterer creates a new log filterer instance of UniversalContract, bound to a specific deployed contract. +func NewUniversalContractFilterer(address common.Address, filterer bind.ContractFilterer) (*UniversalContractFilterer, error) { + contract, err := bindUniversalContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UniversalContractFilterer{contract: contract}, nil +} + +// bindUniversalContract binds a generic wrapper to an already deployed contract. +func bindUniversalContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UniversalContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniversalContract *UniversalContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniversalContract.Contract.UniversalContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniversalContract *UniversalContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniversalContract.Contract.UniversalContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniversalContract *UniversalContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniversalContract.Contract.UniversalContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_UniversalContract *UniversalContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UniversalContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_UniversalContract *UniversalContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UniversalContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UniversalContract *UniversalContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UniversalContract.Contract.contract.Transact(opts, method, params...) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnCrossChainCall(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactor) OnRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.contract.Transact(opts, "onRevert", context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} + +// OnRevert is a paid mutator transaction binding the contract method 0x69582bee. +// +// Solidity: function onRevert((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_UniversalContract *UniversalContractTransactorSession) OnRevert(context RevertContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _UniversalContract.Contract.OnRevert(&_UniversalContract.TransactOpts, context, zrc20, amount, message) +} diff --git a/v2/pkg/zcontract.sol/zcontract.go b/v2/pkg/zcontract.sol/zcontract.go new file mode 100644 index 00000000..0d9ee4ef --- /dev/null +++ b/v2/pkg/zcontract.sol/zcontract.go @@ -0,0 +1,209 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zcontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZContext is an auto generated low-level Go binding around an user-defined struct. +type ZContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ZContractMetaData contains all meta data concerning the ZContract contract. +var ZContractMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", +} + +// ZContractABI is the input ABI used to generate the binding from. +// Deprecated: Use ZContractMetaData.ABI instead. +var ZContractABI = ZContractMetaData.ABI + +// ZContract is an auto generated Go binding around an Ethereum contract. +type ZContract struct { + ZContractCaller // Read-only binding to the contract + ZContractTransactor // Write-only binding to the contract + ZContractFilterer // Log filterer for contract events +} + +// ZContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZContractSession struct { + Contract *ZContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZContractCallerSession struct { + Contract *ZContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZContractTransactorSession struct { + Contract *ZContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZContractRaw struct { + Contract *ZContract // Generic contract binding to access the raw methods on +} + +// ZContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZContractCallerRaw struct { + Contract *ZContractCaller // Generic read-only contract binding to access the raw methods on +} + +// ZContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZContractTransactorRaw struct { + Contract *ZContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZContract creates a new instance of ZContract, bound to a specific deployed contract. +func NewZContract(address common.Address, backend bind.ContractBackend) (*ZContract, error) { + contract, err := bindZContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZContract{ZContractCaller: ZContractCaller{contract: contract}, ZContractTransactor: ZContractTransactor{contract: contract}, ZContractFilterer: ZContractFilterer{contract: contract}}, nil +} + +// NewZContractCaller creates a new read-only instance of ZContract, bound to a specific deployed contract. +func NewZContractCaller(address common.Address, caller bind.ContractCaller) (*ZContractCaller, error) { + contract, err := bindZContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZContractCaller{contract: contract}, nil +} + +// NewZContractTransactor creates a new write-only instance of ZContract, bound to a specific deployed contract. +func NewZContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ZContractTransactor, error) { + contract, err := bindZContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZContractTransactor{contract: contract}, nil +} + +// NewZContractFilterer creates a new log filterer instance of ZContract, bound to a specific deployed contract. +func NewZContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ZContractFilterer, error) { + contract, err := bindZContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZContractFilterer{contract: contract}, nil +} + +// bindZContract binds a generic wrapper to an already deployed contract. +func bindZContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZContract *ZContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZContract.Contract.ZContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZContract *ZContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZContract.Contract.ZContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZContract *ZContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZContract.Contract.ZContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZContract *ZContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZContract *ZContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZContract *ZContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZContract.Contract.contract.Transact(opts, method, params...) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_ZContract *ZContractTransactorSession) OnCrossChainCall(context ZContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _ZContract.Contract.OnCrossChainCall(&_ZContract.TransactOpts, context, zrc20, amount, message) +} diff --git a/v2/pkg/zeta.non-eth.sol/zetaerrors.go b/v2/pkg/zeta.non-eth.sol/zetaerrors.go new file mode 100644 index 00000000..69bbddf0 --- /dev/null +++ b/v2/pkg/zeta.non-eth.sol/zetaerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaErrorsMetaData contains all meta data concerning the ZetaErrors contract. +var ZetaErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotConnector\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTss\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssOrUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZetaTransferError\",\"inputs\":[]}]", +} + +// ZetaErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaErrorsMetaData.ABI instead. +var ZetaErrorsABI = ZetaErrorsMetaData.ABI + +// ZetaErrors is an auto generated Go binding around an Ethereum contract. +type ZetaErrors struct { + ZetaErrorsCaller // Read-only binding to the contract + ZetaErrorsTransactor // Write-only binding to the contract + ZetaErrorsFilterer // Log filterer for contract events +} + +// ZetaErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaErrorsSession struct { + Contract *ZetaErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaErrorsCallerSession struct { + Contract *ZetaErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaErrorsTransactorSession struct { + Contract *ZetaErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaErrorsRaw struct { + Contract *ZetaErrors // Generic contract binding to access the raw methods on +} + +// ZetaErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaErrorsCallerRaw struct { + Contract *ZetaErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaErrorsTransactorRaw struct { + Contract *ZetaErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaErrors creates a new instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrors(address common.Address, backend bind.ContractBackend) (*ZetaErrors, error) { + contract, err := bindZetaErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaErrors{ZetaErrorsCaller: ZetaErrorsCaller{contract: contract}, ZetaErrorsTransactor: ZetaErrorsTransactor{contract: contract}, ZetaErrorsFilterer: ZetaErrorsFilterer{contract: contract}}, nil +} + +// NewZetaErrorsCaller creates a new read-only instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaErrorsCaller, error) { + contract, err := bindZetaErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaErrorsCaller{contract: contract}, nil +} + +// NewZetaErrorsTransactor creates a new write-only instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaErrorsTransactor, error) { + contract, err := bindZetaErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaErrorsTransactor{contract: contract}, nil +} + +// NewZetaErrorsFilterer creates a new log filterer instance of ZetaErrors, bound to a specific deployed contract. +func NewZetaErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaErrorsFilterer, error) { + contract, err := bindZetaErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaErrorsFilterer{contract: contract}, nil +} + +// bindZetaErrors binds a generic wrapper to an already deployed contract. +func bindZetaErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaErrors *ZetaErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaErrors.Contract.ZetaErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaErrors *ZetaErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaErrors *ZetaErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaErrors.Contract.ZetaErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaErrors *ZetaErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaErrors *ZetaErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaErrors *ZetaErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/zeta.non-eth.sol/zetanoneth.go b/v2/pkg/zeta.non-eth.sol/zetanoneth.go new file mode 100644 index 00000000..67787ca9 --- /dev/null +++ b/v2/pkg/zeta.non-eth.sol/zetanoneth.go @@ -0,0 +1,1664 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaNonEthMetaData contains all meta data concerning the ZetaNonEth contract. +var ZetaNonEthMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddressUpdater_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"connectorAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceTssAddressUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddressUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateTssAndConnectorAddresses\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"connectorAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Burnt\",\"inputs\":[{\"name\":\"burnee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConnectorAddressUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newConnectorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Minted\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TSSAddressUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTssAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TSSAddressUpdaterUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTssUpdaterAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotConnector\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTss\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssOrUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZetaTransferError\",\"inputs\":[]}]", + Bin: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033", +} + +// ZetaNonEthABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaNonEthMetaData.ABI instead. +var ZetaNonEthABI = ZetaNonEthMetaData.ABI + +// ZetaNonEthBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaNonEthMetaData.Bin instead. +var ZetaNonEthBin = ZetaNonEthMetaData.Bin + +// DeployZetaNonEth deploys a new Ethereum contract, binding an instance of ZetaNonEth to it. +func DeployZetaNonEth(auth *bind.TransactOpts, backend bind.ContractBackend, tssAddress_ common.Address, tssAddressUpdater_ common.Address) (common.Address, *types.Transaction, *ZetaNonEth, error) { + parsed, err := ZetaNonEthMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaNonEthBin), backend, tssAddress_, tssAddressUpdater_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil +} + +// ZetaNonEth is an auto generated Go binding around an Ethereum contract. +type ZetaNonEth struct { + ZetaNonEthCaller // Read-only binding to the contract + ZetaNonEthTransactor // Write-only binding to the contract + ZetaNonEthFilterer // Log filterer for contract events +} + +// ZetaNonEthCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaNonEthCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaNonEthTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaNonEthFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaNonEthSession struct { + Contract *ZetaNonEth // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaNonEthCallerSession struct { + Contract *ZetaNonEthCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaNonEthTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaNonEthTransactorSession struct { + Contract *ZetaNonEthTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaNonEthRaw struct { + Contract *ZetaNonEth // Generic contract binding to access the raw methods on +} + +// ZetaNonEthCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaNonEthCallerRaw struct { + Contract *ZetaNonEthCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaNonEthTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaNonEthTransactorRaw struct { + Contract *ZetaNonEthTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaNonEth creates a new instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEth(address common.Address, backend bind.ContractBackend) (*ZetaNonEth, error) { + contract, err := bindZetaNonEth(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaNonEth{ZetaNonEthCaller: ZetaNonEthCaller{contract: contract}, ZetaNonEthTransactor: ZetaNonEthTransactor{contract: contract}, ZetaNonEthFilterer: ZetaNonEthFilterer{contract: contract}}, nil +} + +// NewZetaNonEthCaller creates a new read-only instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthCaller, error) { + contract, err := bindZetaNonEth(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthCaller{contract: contract}, nil +} + +// NewZetaNonEthTransactor creates a new write-only instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthTransactor, error) { + contract, err := bindZetaNonEth(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthTransactor{contract: contract}, nil +} + +// NewZetaNonEthFilterer creates a new log filterer instance of ZetaNonEth, bound to a specific deployed contract. +func NewZetaNonEthFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthFilterer, error) { + contract, err := bindZetaNonEth(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaNonEthFilterer{contract: contract}, nil +} + +// bindZetaNonEth binds a generic wrapper to an already deployed contract. +func bindZetaNonEth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaNonEthMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEth *ZetaNonEthRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEth.Contract.ZetaNonEthCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEth *ZetaNonEthRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEth *ZetaNonEthRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEth.Contract.ZetaNonEthTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEth *ZetaNonEthCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEth.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEth *ZetaNonEthTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEth.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.Allowance(&_ZetaNonEth.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEth.Contract.BalanceOf(&_ZetaNonEth.CallOpts, account) +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) ConnectorAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "connectorAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) ConnectorAddress() (common.Address, error) { + return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) +} + +// ConnectorAddress is a free data retrieval call binding the contract method 0xbff9662a. +// +// Solidity: function connectorAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) ConnectorAddress() (common.Address, error) { + return _ZetaNonEth.Contract.ConnectorAddress(&_ZetaNonEth.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthSession) Decimals() (uint8, error) { + return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZetaNonEth *ZetaNonEthCallerSession) Decimals() (uint8, error) { + return _ZetaNonEth.Contract.Decimals(&_ZetaNonEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthSession) Name() (string, error) { + return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZetaNonEth *ZetaNonEthCallerSession) Name() (string, error) { + return _ZetaNonEth.Contract.Name(&_ZetaNonEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthSession) Symbol() (string, error) { + return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZetaNonEth *ZetaNonEthCallerSession) Symbol() (string, error) { + return _ZetaNonEth.Contract.Symbol(&_ZetaNonEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEth *ZetaNonEthCallerSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEth.Contract.TotalSupply(&_ZetaNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) TssAddress() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddress() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddress(&_ZetaNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthCaller) TssAddressUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaNonEth.contract.Call(opts, &out, "tssAddressUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthSession) TssAddressUpdater() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) +} + +// TssAddressUpdater is a free data retrieval call binding the contract method 0x328a01d0. +// +// Solidity: function tssAddressUpdater() view returns(address) +func (_ZetaNonEth *ZetaNonEthCallerSession) TssAddressUpdater() (common.Address, error) { + return _ZetaNonEth.Contract.TssAddressUpdater(&_ZetaNonEth.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Approve(&_ZetaNonEth.TransactOpts, spender, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "burn", value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ZetaNonEth *ZetaNonEthSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, value) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 value) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Burn(&_ZetaNonEth.TransactOpts, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.BurnFrom(&_ZetaNonEth.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "mint", mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Mint(&_ZetaNonEth.TransactOpts, mintee, value, internalSendHash) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthTransactor) RenounceTssAddressUpdater(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "renounceTssAddressUpdater") +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) +} + +// RenounceTssAddressUpdater is a paid mutator transaction binding the contract method 0x779e3b63. +// +// Solidity: function renounceTssAddressUpdater() returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) RenounceTssAddressUpdater() (*types.Transaction, error) { + return _ZetaNonEth.Contract.RenounceTssAddressUpdater(&_ZetaNonEth.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.Transfer(&_ZetaNonEth.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEth *ZetaNonEthTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEth.Contract.TransferFrom(&_ZetaNonEth.TransactOpts, from, to, value) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthTransactor) UpdateTssAndConnectorAddresses(opts *bind.TransactOpts, tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.contract.Transact(opts, "updateTssAndConnectorAddresses", tssAddress_, connectorAddress_) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) +} + +// UpdateTssAndConnectorAddresses is a paid mutator transaction binding the contract method 0x15d57fd4. +// +// Solidity: function updateTssAndConnectorAddresses(address tssAddress_, address connectorAddress_) returns() +func (_ZetaNonEth *ZetaNonEthTransactorSession) UpdateTssAndConnectorAddresses(tssAddress_ common.Address, connectorAddress_ common.Address) (*types.Transaction, error) { + return _ZetaNonEth.Contract.UpdateTssAndConnectorAddresses(&_ZetaNonEth.TransactOpts, tssAddress_, connectorAddress_) +} + +// ZetaNonEthApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEth contract. +type ZetaNonEthApprovalIterator struct { + Event *ZetaNonEthApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthApproval represents a Approval event raised by the ZetaNonEth contract. +type ZetaNonEthApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZetaNonEthApprovalIterator{contract: _ZetaNonEth.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthApproval) + if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseApproval(log types.Log) (*ZetaNonEthApproval, error) { + event := new(ZetaNonEthApproval) + if err := _ZetaNonEth.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthBurntIterator is returned from FilterBurnt and is used to iterate over the raw logs and unpacked data for Burnt events raised by the ZetaNonEth contract. +type ZetaNonEthBurntIterator struct { + Event *ZetaNonEthBurnt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthBurntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthBurnt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthBurnt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthBurntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthBurntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthBurnt represents a Burnt event raised by the ZetaNonEth contract. +type ZetaNonEthBurnt struct { + Burnee common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnt is a free log retrieval operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterBurnt(opts *bind.FilterOpts, burnee []common.Address) (*ZetaNonEthBurntIterator, error) { + + var burneeRule []interface{} + for _, burneeItem := range burnee { + burneeRule = append(burneeRule, burneeItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Burnt", burneeRule) + if err != nil { + return nil, err + } + return &ZetaNonEthBurntIterator{contract: _ZetaNonEth.contract, event: "Burnt", logs: logs, sub: sub}, nil +} + +// WatchBurnt is a free log subscription operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchBurnt(opts *bind.WatchOpts, sink chan<- *ZetaNonEthBurnt, burnee []common.Address) (event.Subscription, error) { + + var burneeRule []interface{} + for _, burneeItem := range burnee { + burneeRule = append(burneeRule, burneeItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Burnt", burneeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthBurnt) + if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnt is a log parse operation binding the contract event 0x919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1. +// +// Solidity: event Burnt(address indexed burnee, uint256 amount) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseBurnt(log types.Log) (*ZetaNonEthBurnt, error) { + event := new(ZetaNonEthBurnt) + if err := _ZetaNonEth.contract.UnpackLog(event, "Burnt", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthConnectorAddressUpdatedIterator is returned from FilterConnectorAddressUpdated and is used to iterate over the raw logs and unpacked data for ConnectorAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdatedIterator struct { + Event *ZetaNonEthConnectorAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthConnectorAddressUpdated represents a ConnectorAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdated struct { + CallerAddress common.Address + NewConnectorAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConnectorAddressUpdated is a free log retrieval operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterConnectorAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthConnectorAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthConnectorAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "ConnectorAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchConnectorAddressUpdated is a free log subscription operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchConnectorAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthConnectorAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConnectorAddressUpdated is a log parse operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseConnectorAddressUpdated(log types.Log) (*ZetaNonEthConnectorAddressUpdated, error) { + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthMintedIterator is returned from FilterMinted and is used to iterate over the raw logs and unpacked data for Minted events raised by the ZetaNonEth contract. +type ZetaNonEthMintedIterator struct { + Event *ZetaNonEthMinted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthMintedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthMinted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthMintedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthMintedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthMinted represents a Minted event raised by the ZetaNonEth contract. +type ZetaNonEthMinted struct { + Mintee common.Address + Amount *big.Int + InternalSendHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinted is a free log retrieval operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterMinted(opts *bind.FilterOpts, mintee []common.Address, internalSendHash [][32]byte) (*ZetaNonEthMintedIterator, error) { + + var minteeRule []interface{} + for _, minteeItem := range mintee { + minteeRule = append(minteeRule, minteeItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Minted", minteeRule, internalSendHashRule) + if err != nil { + return nil, err + } + return &ZetaNonEthMintedIterator{contract: _ZetaNonEth.contract, event: "Minted", logs: logs, sub: sub}, nil +} + +// WatchMinted is a free log subscription operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchMinted(opts *bind.WatchOpts, sink chan<- *ZetaNonEthMinted, mintee []common.Address, internalSendHash [][32]byte) (event.Subscription, error) { + + var minteeRule []interface{} + for _, minteeItem := range mintee { + minteeRule = append(minteeRule, minteeItem) + } + + var internalSendHashRule []interface{} + for _, internalSendHashItem := range internalSendHash { + internalSendHashRule = append(internalSendHashRule, internalSendHashItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Minted", minteeRule, internalSendHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthMinted) + if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinted is a log parse operation binding the contract event 0xc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb. +// +// Solidity: event Minted(address indexed mintee, uint256 amount, bytes32 indexed internalSendHash) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseMinted(log types.Log) (*ZetaNonEthMinted, error) { + event := new(ZetaNonEthMinted) + if err := _ZetaNonEth.contract.UnpackLog(event, "Minted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEth contract. +type ZetaNonEthTransferIterator struct { + Event *ZetaNonEthTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTransfer represents a Transfer event raised by the ZetaNonEth contract. +type ZetaNonEthTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZetaNonEthTransferIterator{contract: _ZetaNonEth.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTransfer) + if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTransfer(log types.Log) (*ZetaNonEthTransfer, error) { + event := new(ZetaNonEthTransfer) + if err := _ZetaNonEth.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zeta.non-eth.sol/zetanonethinterface.go b/v2/pkg/zeta.non-eth.sol/zetanonethinterface.go new file mode 100644 index 00000000..eb47f495 --- /dev/null +++ b/v2/pkg/zeta.non-eth.sol/zetanonethinterface.go @@ -0,0 +1,687 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaNonEthInterfaceMetaData contains all meta data concerning the ZetaNonEthInterface contract. +var ZetaNonEthInterfaceMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// ZetaNonEthInterfaceABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaNonEthInterfaceMetaData.ABI instead. +var ZetaNonEthInterfaceABI = ZetaNonEthInterfaceMetaData.ABI + +// ZetaNonEthInterface is an auto generated Go binding around an Ethereum contract. +type ZetaNonEthInterface struct { + ZetaNonEthInterfaceCaller // Read-only binding to the contract + ZetaNonEthInterfaceTransactor // Write-only binding to the contract + ZetaNonEthInterfaceFilterer // Log filterer for contract events +} + +// ZetaNonEthInterfaceCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaNonEthInterfaceFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaNonEthInterfaceSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaNonEthInterfaceSession struct { + Contract *ZetaNonEthInterface // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthInterfaceCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaNonEthInterfaceCallerSession struct { + Contract *ZetaNonEthInterfaceCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaNonEthInterfaceTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaNonEthInterfaceTransactorSession struct { + Contract *ZetaNonEthInterfaceTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaNonEthInterfaceRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaNonEthInterfaceRaw struct { + Contract *ZetaNonEthInterface // Generic contract binding to access the raw methods on +} + +// ZetaNonEthInterfaceCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceCallerRaw struct { + Contract *ZetaNonEthInterfaceCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaNonEthInterfaceTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaNonEthInterfaceTransactorRaw struct { + Contract *ZetaNonEthInterfaceTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaNonEthInterface creates a new instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterface(address common.Address, backend bind.ContractBackend) (*ZetaNonEthInterface, error) { + contract, err := bindZetaNonEthInterface(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaNonEthInterface{ZetaNonEthInterfaceCaller: ZetaNonEthInterfaceCaller{contract: contract}, ZetaNonEthInterfaceTransactor: ZetaNonEthInterfaceTransactor{contract: contract}, ZetaNonEthInterfaceFilterer: ZetaNonEthInterfaceFilterer{contract: contract}}, nil +} + +// NewZetaNonEthInterfaceCaller creates a new read-only instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceCaller(address common.Address, caller bind.ContractCaller) (*ZetaNonEthInterfaceCaller, error) { + contract, err := bindZetaNonEthInterface(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceCaller{contract: contract}, nil +} + +// NewZetaNonEthInterfaceTransactor creates a new write-only instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaNonEthInterfaceTransactor, error) { + contract, err := bindZetaNonEthInterface(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceTransactor{contract: contract}, nil +} + +// NewZetaNonEthInterfaceFilterer creates a new log filterer instance of ZetaNonEthInterface, bound to a specific deployed contract. +func NewZetaNonEthInterfaceFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaNonEthInterfaceFilterer, error) { + contract, err := bindZetaNonEthInterface(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceFilterer{contract: contract}, nil +} + +// bindZetaNonEthInterface binds a generic wrapper to an already deployed contract. +func bindZetaNonEthInterface(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaNonEthInterfaceMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.ZetaNonEthInterfaceTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaNonEthInterface.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.Allowance(&_ZetaNonEthInterface.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZetaNonEthInterface.Contract.BalanceOf(&_ZetaNonEthInterface.CallOpts, account) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaNonEthInterface.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceCallerSession) TotalSupply() (*big.Int, error) { + return _ZetaNonEthInterface.Contract.TotalSupply(&_ZetaNonEthInterface.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "approve", spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, value) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Approve(&_ZetaNonEthInterface.TransactOpts, spender, value) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "burnFrom", account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) +} + +// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. +// +// Solidity: function burnFrom(address account, uint256 amount) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.BurnFrom(&_ZetaNonEthInterface.TransactOpts, account, amount) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Mint(opts *bind.TransactOpts, mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "mint", mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) +} + +// Mint is a paid mutator transaction binding the contract method 0x1e458bee. +// +// Solidity: function mint(address mintee, uint256 value, bytes32 internalSendHash) returns() +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Mint(mintee common.Address, value *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Mint(&_ZetaNonEthInterface.TransactOpts, mintee, value, internalSendHash) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "transfer", to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, value) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.Transfer(&_ZetaNonEthInterface.TransactOpts, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.contract.Transact(opts, "transferFrom", from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, value) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceTransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ZetaNonEthInterface.Contract.TransferFrom(&_ZetaNonEthInterface.TransactOpts, from, to, value) +} + +// ZetaNonEthInterfaceApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceApprovalIterator struct { + Event *ZetaNonEthInterfaceApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthInterfaceApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthInterfaceApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthInterfaceApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthInterfaceApproval represents a Approval event raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZetaNonEthInterfaceApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceApprovalIterator{contract: _ZetaNonEthInterface.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthInterfaceApproval) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseApproval(log types.Log) (*ZetaNonEthInterfaceApproval, error) { + event := new(ZetaNonEthInterfaceApproval) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthInterfaceTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceTransferIterator struct { + Event *ZetaNonEthInterfaceTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthInterfaceTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthInterfaceTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthInterfaceTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthInterfaceTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthInterfaceTransfer represents a Transfer event raised by the ZetaNonEthInterface contract. +type ZetaNonEthInterfaceTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZetaNonEthInterfaceTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZetaNonEthInterfaceTransferIterator{contract: _ZetaNonEthInterface.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZetaNonEthInterfaceTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaNonEthInterface.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthInterfaceTransfer) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZetaNonEthInterface *ZetaNonEthInterfaceFilterer) ParseTransfer(log types.Log) (*ZetaNonEthInterfaceTransfer, error) { + event := new(ZetaNonEthInterfaceTransfer) + if err := _ZetaNonEthInterface.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go new file mode 100644 index 00000000..ac4fff8e --- /dev/null +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -0,0 +1,817 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectornative + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. +var ZetaConnectorNativeMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033", +} + +// ZetaConnectorNativeABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNativeMetaData.ABI instead. +var ZetaConnectorNativeABI = ZetaConnectorNativeMetaData.ABI + +// ZetaConnectorNativeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorNativeMetaData.Bin instead. +var ZetaConnectorNativeBin = ZetaConnectorNativeMetaData.Bin + +// DeployZetaConnectorNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNative to it. +func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { + parsed, err := ZetaConnectorNativeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorNative{ZetaConnectorNativeCaller: ZetaConnectorNativeCaller{contract: contract}, ZetaConnectorNativeTransactor: ZetaConnectorNativeTransactor{contract: contract}, ZetaConnectorNativeFilterer: ZetaConnectorNativeFilterer{contract: contract}}, nil +} + +// ZetaConnectorNative is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNative struct { + ZetaConnectorNativeCaller // Read-only binding to the contract + ZetaConnectorNativeTransactor // Write-only binding to the contract + ZetaConnectorNativeFilterer // Log filterer for contract events +} + +// ZetaConnectorNativeCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNativeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNativeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNativeSession struct { + Contract *ZetaConnectorNative // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNativeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNativeCallerSession struct { + Contract *ZetaConnectorNativeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNativeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNativeTransactorSession struct { + Contract *ZetaConnectorNativeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNativeRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNativeRaw struct { + Contract *ZetaConnectorNative // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNativeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNativeCallerRaw struct { + Contract *ZetaConnectorNativeCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNativeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTransactorRaw struct { + Contract *ZetaConnectorNativeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNative creates a new instance of ZetaConnectorNative, bound to a specific deployed contract. +func NewZetaConnectorNative(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNative, error) { + contract, err := bindZetaConnectorNative(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNative{ZetaConnectorNativeCaller: ZetaConnectorNativeCaller{contract: contract}, ZetaConnectorNativeTransactor: ZetaConnectorNativeTransactor{contract: contract}, ZetaConnectorNativeFilterer: ZetaConnectorNativeFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNativeCaller creates a new read-only instance of ZetaConnectorNative, bound to a specific deployed contract. +func NewZetaConnectorNativeCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNativeCaller, error) { + contract, err := bindZetaConnectorNative(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeCaller{contract: contract}, nil +} + +// NewZetaConnectorNativeTransactor creates a new write-only instance of ZetaConnectorNative, bound to a specific deployed contract. +func NewZetaConnectorNativeTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNativeTransactor, error) { + contract, err := bindZetaConnectorNative(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTransactor{contract: contract}, nil +} + +// NewZetaConnectorNativeFilterer creates a new log filterer instance of ZetaConnectorNative, bound to a specific deployed contract. +func NewZetaConnectorNativeFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNativeFilterer, error) { + contract, err := bindZetaConnectorNative(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeFilterer{contract: contract}, nil +} + +// bindZetaConnectorNative binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNative(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNativeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNative.Contract.ZetaConnectorNativeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.ZetaConnectorNativeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNative *ZetaConnectorNativeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.ZetaConnectorNativeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNative *ZetaConnectorNativeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNative.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.contract.Transact(opts, method, params...) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Gateway() (common.Address, error) { + return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) Gateway() (common.Address, error) { + return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNative.Contract.ZetaToken(&_ZetaConnectorNative.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNative.Contract.ZetaToken(&_ZetaConnectorNative.CallOpts) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "receiveTokens", amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.ReceiveTokens(&_ZetaConnectorNative.TransactOpts, amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.ReceiveTokens(&_ZetaConnectorNative.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdraw", to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) +} + +// ZetaConnectorNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdrawIterator struct { + Event *ZetaConnectorNativeWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeWithdraw represents a Withdraw event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeWithdrawIterator{contract: _ZetaConnectorNative.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeWithdraw) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNativeWithdraw, error) { + event := new(ZetaConnectorNativeWithdraw) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdrawAndCallIterator struct { + Event *ZetaConnectorNativeWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeWithdrawAndCallIterator{contract: _ZetaConnectorNative.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeWithdrawAndCall) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNativeWithdrawAndCall, error) { + event := new(ZetaConnectorNativeWithdrawAndCall) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdrawAndRevertIterator struct { + Event *ZetaConnectorNativeWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeWithdrawAndRevertIterator{contract: _ZetaConnectorNative.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeWithdrawAndRevert) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNativeWithdrawAndRevert, error) { + event := new(ZetaConnectorNativeWithdrawAndRevert) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go new file mode 100644 index 00000000..24ee01fd --- /dev/null +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -0,0 +1,5773 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectornative + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. +var ZetaConnectorNativeTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061c3288061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e6109bf565b60405161019b9190617991565b60405180910390f35b6101ac610a21565b60405161019b9190617a2d565b610184610b63565b61018e611336565b61018e611396565b6101846113f6565b610184611a52565b6101e9611c48565b60405161019b9190617b93565b6101fe611dca565b60405161019b9190617c31565b610184611e9a565b61021b612055565b60405161019b9190617ca8565b610184612150565b61021b612358565b6101fe612453565b610248612523565b604051901515815260200161019b565b6101846125f7565b610184612a0d565b6101846130cd565b61018e613733565b601f546102489060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516102d7906178a4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561035b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015261043f919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613793565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906104c3906178b1565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104f6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061054b906178be565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610587573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105cc906178cb565b604051809103906000f0801580156105e8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f9575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b43578382906000526020600020018054610ab690617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae290617d3f565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b505050508152505081526020019060010190610a45565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c629190617d8c565b9050610c6f8160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce39190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610dc6916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610fe29089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110c892909116908a9089908b90600401617de6565b600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190617d8c565b905061117981886137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190617d8c565b9050611202816111fd8a87617e4e565b6137b2565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190617d8c565b90506112a98160006137b2565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190617d8c565b905061132a8160006137b2565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361149793921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190617d8c565b90506114e58160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161163c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061183b9089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061192192909116908a9089908b90600401617de6565b600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190617d8c565b90506119d28160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190617d8c565b905061120281856137b2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611c119290911690879086908890600401617de6565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5783829060005260206000209060020201604051806040016040529081600082018054611c9f90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ccb90617d3f565b8015611d185780601f10611ced57610100808354040283529160200191611d18565b820191906000526020600020905b815481529060010190602001808311611cfb57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d5f5790505b50505050508152505081526020019060010190611c6c565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5a578382906000526020600020018054611e0d90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990617d3f565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b505050505081526020019060010190611dee565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561213857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120e55790505b50505050508152505081526020019060010190612079565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611c119290911690879086908890600401617de6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561243b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123e85790505b5050505050815250508152602001906001019061237c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57838290600052602060002001805461249690617d3f565b80601f01602080910402602001604051908101604052809291908181526020018280546124c290617d3f565b801561250f5780601f106124e45761010080835404028352916020019161250f565b820191906000526020600020905b8154815290600101906020018083116124f257829003601f168201915b505050505081526020019060010190612477565b60085460009060ff161561253b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f09190617d8c565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa15801561264b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266f9190617d8c565b905061267c8160006137b2565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161275c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561297057600080fd5b505af1158015612984573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190617d8c565b9050612a0681866137b2565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190617d8c565b9050612b198160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c70916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d82600289617e61565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612ea39089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f8992909116908a9089908b90600401617de6565b600060405180830381600087803b158015612fa357600080fd5b505af1158015612fb7573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190617d8c565b905061303e816111fd60028a617e61565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b29190617d8c565b9050611202816130c360028b617e61565b6111fd9087617e4e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190617d8c565b90506131938160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916132ea916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061340192506001600160a01b03909116908790617e9c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561349757600080fd5b505af11580156134ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906134f6908a908990617dcd565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561358c57600080fd5b505af11580156135a0573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506135e59089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506136cb92909116908a9089908b90600401617de6565b600060405180830381600087803b1580156136e557600080fd5b505af11580156136f9573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161112c565b60606015805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b600061379d6178d8565b6137a8848483613831565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561381d57600080fd5b505afa15801561204d573d6000803e3d6000fd5b60008061383e85846138ac565b90506138a16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161388c929190617e9c565b604051602081830303815290604052856138b8565b9150505b9392505050565b60006138a583836138e6565b60c081015151600090156138dc576138d584848460c00151613901565b90506138a5565b6138d58484613aa7565b60006138f28383613b92565b6138a5838360200151846138b8565b60008061390c613ba2565b9050600061391a8683613c75565b90506000613931826060015183602001518561411b565b905060006139418383898961432d565b9050600061394e826151aa565b602081015181519192509060030b156139c157898260400151604051602001613978929190617ebe565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526139b891600401617f3f565b60405180910390fd5b6000613a046040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615379565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613a57908490600401617f3f565b602060405180830381865afa158015613a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a989190617f52565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613afc908790600401617f3f565b600060405180830381865afa158015613b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b419190810190618063565b90506000613b6f8285604051602001613b5b929190618098565b604051602081830303815290604052615579565b90506001600160a01b0381166137a85784846040516020016139789291906180c7565b613b9e8282600061558c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613c29908490600401618172565b600060405180830381865afa158015613c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6e91908101906181b9565b9250505090565b613ca76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613cf26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613cfb8561568f565b60208201526000613d0b86615a74565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d7591908101906181b9565b86838560200151604051602001613d8f9493929190618202565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613de7908590600401617f3f565b600060405180830381865afa158015613e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e2c91908101906181b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e74908490600401618306565b602060405180830381865afa158015613e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb59190618358565b613eca5781604051602001613978919061837a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f0f90849060040161840c565b600060405180830381865afa158015613f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f5491908101906181b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f9b90849060040161845e565b602060405180830381865afa158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190618358565b15614071576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061402690849060040161845e565b600060405180830381865afa158015614043573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406b91908101906181b9565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161409691906184b0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140c292919061851c565b600060405180830381865afa1580156140df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261410791908101906181b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816141375790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061419757614197618541565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106141eb576141eb618541565b6020026020010181905250846040516020016142079190618570565b6040516020818303038152906040528160028151811061422957614229618541565b60200260200101819052508260405160200161424591906185dc565b6040516020818303038152906040528160038151811061426757614267618541565b6020026020010181905250600061427d826151aa565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061430e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615cf7565b6143235785604051602001613978919061861d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561437d565b511590565b6144f157826020015115614439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016139b8565b8260c00151156144f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016139b8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161450a57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614565906186ae565b935060ff168151811061457a5761457a618541565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145cb91906186cd565b6040516020818303038152906040528282806145e6906186ae565b935060ff16815181106145fb576145fb618541565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614648906186ae565b935060ff168151811061465d5761465d618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806146aa906186ae565b935060ff16815181106146bf576146bf618541565b602002602001018190525087602001518282806146db906186ae565b935060ff16815181106146f0576146f0618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061473d906186ae565b935060ff168151811061475257614752618541565b60209081029190910101528751828261476a816186ae565b935060ff168151811061477f5761477f618541565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806147cc906186ae565b935060ff16815181106147e1576147e1618541565b60200260200101819052506147f546615d58565b8282614800816186ae565b935060ff168151811061481557614815618541565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614862906186ae565b935060ff168151811061487757614877618541565b60200260200101819052508682828061488f906186ae565b935060ff16815181106148a4576148a4618541565b60209081029190910101528551156149cb5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148f5816186ae565b935060ff168151811061490a5761490a618541565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061495a908990600401617f3f565b600060405180830381865afa158015614977573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261499f91908101906181b9565b82826149aa816186ae565b935060ff16815181106149bf576149bf618541565b60200260200101819052505b846020015115614a9b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614a14816186ae565b935060ff1681518110614a2957614a29618541565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a76906186ae565b935060ff1681518110614a8b57614a8b618541565b6020026020010181905250614c62565b614ad36143788660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b665760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b16816186ae565b935060ff1681518110614b2b57614b2b618541565b60200260200101819052508460a00151604051602001614b4b9190618570565b604051602081830303815290604052828280614a76906186ae565b8460c00151158015614ba9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ba790511590565b155b15614c625760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614bed816186ae565b935060ff1681518110614c0257614c02618541565b6020026020010181905250614c1688615df8565b604051602001614c269190618570565b604051602081830303815290604052828280614c41906186ae565b935060ff1681518110614c5657614c56618541565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c9690511590565b614d2b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614cd9816186ae565b935060ff1681518110614cee57614cee618541565b60200260200101819052508460400151828280614d0a906186ae565b935060ff1681518110614d1f57614d1f618541565b60200260200101819052505b606085015115614e4c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d74816186ae565b935060ff1681518110614d8957614d89618541565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614df8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e2091908101906181b9565b8282614e2b816186ae565b935060ff1681518110614e4057614e40618541565b60200260200101819052505b60e08501515115614ef35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e96816186ae565b935060ff1681518110614eab57614eab618541565b6020026020010181905250614ec78560e0015160000151615d58565b8282614ed2816186ae565b935060ff1681518110614ee757614ee7618541565b60200260200101819052505b60e08501516020015115614f9d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614f40816186ae565b935060ff1681518110614f5557614f55618541565b6020026020010181905250614f718560e0015160200151615d58565b8282614f7c816186ae565b935060ff1681518110614f9157614f91618541565b60200260200101819052505b60e085015160400151156150475760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614fea816186ae565b935060ff1681518110614fff57614fff618541565b602002602001018190525061501b8560e0015160400151615d58565b8282615026816186ae565b935060ff168151811061503b5761503b618541565b60200260200101819052505b60e085015160600151156150f15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615094816186ae565b935060ff16815181106150a9576150a9618541565b60200260200101819052506150c58560e0015160600151615d58565b82826150d0816186ae565b935060ff16815181106150e5576150e5618541565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561510f5761510f617f7b565b60405190808252806020026020018201604052801561514257816020015b606081526020019060019003908161512d5790505b50905060005b8260ff168160ff16101561519b57838160ff168151811061516b5761516b618541565b6020026020010151828260ff168151811061518857615188618541565b6020908102919091010152600101615148565b5093505050505b949350505050565b6151d16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161525791869101618738565b600060405180830381865afa158015615274573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261529c91908101906181b9565b905060006152aa86836168e7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152da9190617c31565b6000604051808303816000875af11580156152f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615321919081019061877f565b805190915060030b1580159061533a5750602081015151155b80156153495750604081015151155b15614323578160008151811061536157615361618541565b60200260200101516040516020016139789190618835565b606060006153ae8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153e59082905b90616a3c565b156155425760006154628261545c846154566154288a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a63565b90616ac5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154c6908290616a3c565b1561553057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261552d905b8290616b4a565b90505b61553981616b70565b925050506138a5565b821561555b578484604051602001613978929190618a21565b50506040805160208101909152600081526138a5565b509392505050565b6000808251602084016000f09392505050565b8160a001511561559b57505050565b60006155a8848484616bd9565b905060006155b5826151aa565b602081015181519192509060030b1580156156515750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615651906040805180820182526000808252602091820152815180830190925284518252808501908201526153df565b1561565e57505050505050565b6040820151511561567e5781604001516040516020016139789190618ac8565b806040516020016139789190618b26565b606060006156c48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615729905b8290615cf7565b1561579857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793908390617174565b616b70565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157fa905b82906171fe565b6001036158c757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586090615526565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793905b8390616b4a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261592690615722565b15615a5d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061598e908390617298565b9050600081600183516159a19190617e4e565b815181106159b1576159b1618541565b60200260200101519050615a54615793615a276040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617174565b95945050505050565b826040516020016139789190618b91565b50919050565b60606000615aa98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b0b90615722565b15615b19576138a581616b70565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b78906157f3565b600103615be257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793906158c0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c4190615722565b15615a5d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615ca9908390617298565b9050600181511115615ce5578060028251615cc49190617e4e565b81518110615cd457615cd4618541565b602002602001015192505050919050565b50826040516020016139789190618b91565b805182516000911115615d0c575060006137ac565b81518351602085015160009291615d2291618c6f565b615d2c9190617e4e565b905082602001518103615d435760019150506137ac565b82516020840151819020912014905092915050565b60606000615d658361733d565b600101905060008167ffffffffffffffff811115615d8557615d85617f7b565b6040519080825280601f01601f191660200182016040528015615daf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615db957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e84905b829061741f565b15615ec457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f2390615e7d565b15615f6357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc290615e7d565b1561600257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606190615e7d565b806160c65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160c690615e7d565b1561610657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261616590615e7d565b806161ca5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ca90615e7d565b1561620a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626990615e7d565b806162ce5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ce90615e7d565b1561630e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636d90615e7d565b806163d25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d290615e7d565b1561641257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261647190615e7d565b156164b157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261651090615e7d565b1561655057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165af90615e7d565b156165ef57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261664e90615e7d565b1561668e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ed90615e7d565b1561672d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678c90615e7d565b806167f15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f190615e7d565b1561683157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261689090615e7d565b156168d057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516139789290602001618c82565b60608060005b8451811015616972578185828151811061690957616909618541565b6020026020010151604051602001616922929190618098565b6040516020818303038152906040529150600185516169419190617e4e565b811461696a57816040516020016169589190618deb565b60405160208183030381529060405291505b6001016168ed565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161698b57905050905083816000815181106169b6576169b6618541565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616a0a57616a0a618541565b60200260200101819052508181600281518110616a2957616a29618541565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a5a9291849190617433565b14159392505050565b60408051808201909152600080825260208201526000616a958460000151856020015185600001518660200151617544565b9050836020015181616aa79190617e4e565b84518590616ab6908390617e4e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616aea5750816137ac565b6020808301519084015160019114616b115750815160208481015190840151829020919020145b8015616b4257825184518590616b28908390617e4e565b9052508251602085018051616b3e908390618c6f565b9052505b509192915050565b6040805180820190915260008082526020820152616b69838383617664565b5092915050565b60606000826000015167ffffffffffffffff811115616b9157616b91617f7b565b6040519080825280601f01601f191660200182016040528015616bbb576020820181803683370190505b5090506000602082019050616b69818560200151866000015161770f565b60606000616be5613ba2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616c0257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c5d906186ae565b935060ff1681518110616c7257616c72618541565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616cc39190618e2c565b604051602081830303815290604052828280616cde906186ae565b935060ff1681518110616cf357616cf3618541565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616d40906186ae565b935060ff1681518110616d5557616d55618541565b602002602001018190525082604051602001616d7191906185dc565b604051602081830303815290604052828280616d8c906186ae565b935060ff1681518110616da157616da1618541565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616dee906186ae565b935060ff1681518110616e0357616e03618541565b6020026020010181905250616e188784617789565b8282616e23816186ae565b935060ff1681518110616e3857616e38618541565b602090810291909101015285515115616ee45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e8a816186ae565b935060ff1681518110616e9f57616e9f618541565b6020026020010181905250616eb8866000015184617789565b8282616ec3816186ae565b935060ff1681518110616ed857616ed8618541565b60200260200101819052505b856080015115616f525760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616f2d816186ae565b935060ff1681518110616f4257616f42618541565b6020026020010181905250616fb8565b8415616fb85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f97816186ae565b935060ff1681518110616fac57616fac618541565b60200260200101819052505b604086015151156170545760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617002816186ae565b935060ff168151811061701757617017618541565b60200260200101819052508560400151828280617033906186ae565b935060ff168151811061704857617048618541565b60200260200101819052505b8560600151156170be5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261709d816186ae565b935060ff16815181106170b2576170b2618541565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156170dc576170dc617f7b565b60405190808252806020026020018201604052801561710f57816020015b60608152602001906001900390816170fa5790505b50905060005b8260ff168160ff16101561716857838160ff168151811061713857617138618541565b6020026020010151828260ff168151811061715557617155618541565b6020908102919091010152600101617115565b50979650505050505050565b60408051808201909152600080825260208201528151835110156171995750816137ac565b815183516020850151600092916171af91618c6f565b6171b99190617e4e565b602084015190915060019082146171da575082516020840151819020908220145b80156171f5578351855186906171f1908390617e4e565b9052505b50929392505050565b60008082600001516172228560000151866020015186600001518760200151617544565b61722c9190618c6f565b90505b835160208501516172409190618c6f565b8111616b69578161725081618e71565b925050826000015161728785602001518361726b9190617e4e565b86516172779190617e4e565b8386600001518760200151617544565b6172919190618c6f565b905061722f565b606060006172a684846171fe565b6172b1906001618c6f565b67ffffffffffffffff8111156172c9576172c9617f7b565b6040519080825280602002602001820160405280156172fc57816020015b60608152602001906001900390816172e75790505b50905060005b8151811015615571576173186157938686616b4a565b82828151811061732a5761732a618541565b6020908102919091010152600101617302565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617386577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106173b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106173d057662386f26fc10000830492506010015b6305f5e10083106173e8576305f5e100830492506008015b61271083106173fc57612710830492506004015b6064831061740e576064830492506002015b600a83106137ac5760010192915050565b600061742b83836177c9565b159392505050565b60008085841161753a57602084116174e6576000841561747e57600161745a866020617e4e565b617465906008618e8b565b617470906002618f89565b61747a9190617e4e565b1990505b835181168561748d8989618c6f565b6174979190617e4e565b805190935082165b8181146174d1578784116174b957879450505050506151a2565b836174c381618f95565b94505082845116905061749f565b6174db8785618c6f565b9450505050506151a2565b8383206174f38588617e4e565b6174fd9087618c6f565b91505b858210617538578482208082036175255761751b8684618c6f565b93505050506151a2565b617530600184617e4e565b925050617500565b505b5092949350505050565b6000838186851161764f57602085116175fe576000851561759057600161756c876020617e4e565b617577906008618e8b565b617582906002618f89565b61758c9190617e4e565b1990505b845181166000876175a18b8b618c6f565b6175ab9190617e4e565b855190915083165b8281146175f0578186106175d8576175cb8b8b618c6f565b96505050505050506151a2565b856175e281618e71565b9650508386511690506175b3565b8596505050505050506151a2565b508383206000905b6176108689617e4e565b821161764d5785832080820361762c57839450505050506151a2565b617637600185618c6f565b935050818061764590618e71565b925050617606565b505b6176598787618c6f565b979650505050505050565b604080518082019091526000808252602082015260006176968560000151866020015186600001518760200151617544565b6020808701805191860191909152519091506176b29082617e4e565b8352845160208601516176c59190618c6f565b81036176d45760008552617706565b835183516176e29190618c6f565b855186906176f1908390617e4e565b90525083516177009082618c6f565b60208601525b50909392505050565b602081106177475781518352617726602084618c6f565b9250617733602083618c6f565b9150617740602082617e4e565b905061770f565b600019811561777657600161775d836020617e4e565b61776990610100618f89565b6177739190617e4e565b90505b9151835183169219169190911790915250565b606060006177978484613c75565b80516020808301516040519394506177b193909101618fac565b60405160208183030381529060405291505092915050565b81518151600091908111156177dc575081515b6020808501519084015160005b83811015617895578251825180821461786557600019602087101561784457600184617816896020617e4e565b6178209190618c6f565b61782b906008618e8b565b617836906002618f89565b6178409190617e4e565b1990505b81811683821681810391146178625797506137ac9650505050505050565b50505b617870602086618c6f565b945061787d602085618c6f565b9350505060208161788e9190618c6f565b90506177e9565b50845186516143239190619004565b610c9f8061902583390190565b610b4a80619cc483390190565b610d878061a80e83390190565b610d5e8061b59583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161791b617920565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161791b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179d25783516001600160a01b03168352602093840193909201916001016179ab565b509095945050505050565b60005b838110156179f85781810151838201526020016179e0565b50506000910152565b60008151808452617a198160208601602086016179dd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617b0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617af9848651617a01565b6020958601959094509290920191600101617abf565b509197505050602094850194929092019150600101617a55565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b895781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617b49565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bff6040880182617a01565b9050602082015191508681036020880152617c1a8183617b35565b965050506020938401939190910190600101617bbb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c93858351617a01565b94506020938401939190910190600101617c59565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617d296040870182617b35565b9550506020938401939190910190600101617cd0565b600181811c90821680617d5357607f821691505b602082108103615a6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d9e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615a546060830184617a01565b8281526040602082015260006151a26040830184617a01565b6001600160a01b0385168152836020820152608060408201526000617e0e6080830185617a01565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156137ac576137ac617e1f565b600082617e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151a26040830184617a01565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617ef681601a8501602088016179dd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f3381601c8401602088016179dd565b01601c01949350505050565b6020815260006138a56020830184617a01565b600060208284031215617f6457600080fd5b81516001600160a01b03811681146138a557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617fcd57617fcd617f7b565b60405290565b60008067ffffffffffffffff841115617fee57617fee617f7b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561801d5761801d617f7b565b60405283815290508082840185101561803557600080fd5b6155718460208301856179dd565b600082601f83011261805457600080fd5b6138a583835160208501617fd3565b60006020828403121561807557600080fd5b815167ffffffffffffffff81111561808c57600080fd5b6137a884828501618043565b600083516180aa8184602088016179dd565b8351908301906180be8183602088016179dd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ff81601a8501602088016179dd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161813c8160338401602088016179dd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138a56080830184617a01565b6000602082840312156181cb57600080fd5b815167ffffffffffffffff8111156181e257600080fd5b8201601f810184136181f357600080fd5b6137a884825160208401617fd3565b60008551618214818460208a016179dd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161824e816001840160208a016179dd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161828c8160028401602089016179dd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516182ce8160028401602088016179dd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006183196040830184617a01565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561836a57600080fd5b815180151581146138a557600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516183b281601f8501602087016179dd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061841f6040830184617a01565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006184716040830184617a01565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516184e88160148501602087016179dd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061852f6040830185617a01565b82810360208401526138a18185617a01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516185a88160018501602087016179dd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516185ee8184602087016179dd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516186a181604b8501602087016179dd565b91909101604b0192915050565b600060ff821660ff81036186c4576186c4617e1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138a56080830184617a01565b60006020828403121561879157600080fd5b815167ffffffffffffffff8111156187a857600080fd5b8201606081850312156187ba57600080fd5b6187c2617faa565b81518060030b81146187d357600080fd5b8152602082015167ffffffffffffffff8111156187ef57600080fd5b6187fb86828501618043565b602083015250604082015167ffffffffffffffff81111561881b57600080fd5b61882786828501618043565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516188938160218501602087016179dd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618a7f8160218501602088016179dd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618abc81602e8401602088016179dd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b848160228501602087016179dd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618bc981600e8501602087016179dd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156137ac576137ac617e1f565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618cba8160188501602088016179dd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618cf781601c8401602088016179dd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618dfd8184602087016179dd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618e6481601c8501602087016179dd565b91909101601c0192915050565b60006000198203618e8457618e84617e1f565b5060010190565b80820281158282048414176137ac576137ac617e1f565b6001815b6001841115618edd57808504811115618ec157618ec1617e1f565b6001841615618ecf57908102905b60019390931c928002618ea6565b935093915050565b600082618ef4575060016137ac565b81618f01575060006137ac565b8160018114618f175760028114618f2157618f3d565b60019150506137ac565b60ff841115618f3257618f32617e1f565b50506001821b6137ac565b5060208310610133831016604e8410600b8410161715618f60575081810a6137ac565b618f6d6000198484618ea2565b8060001904821115618f8157618f81617e1f565b029392505050565b60006138a58383618ee5565b600081618fa457618fa4617e1f565b506000190190565b60008351618fbe8184602088016179dd565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618ff88160018401602088016179dd565b01600101949350505050565b8181036000831280158383131683831282161715616b6957616b69617e1f56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212206c7d17709d0b69a2ea55c6d800efcb900d2422dfe8e6cff6f73e98d3c88267f464736f6c634300081a0033", +} + +// ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNativeTestMetaData.ABI instead. +var ZetaConnectorNativeTestABI = ZetaConnectorNativeTestMetaData.ABI + +// ZetaConnectorNativeTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorNativeTestMetaData.Bin instead. +var ZetaConnectorNativeTestBin = ZetaConnectorNativeTestMetaData.Bin + +// DeployZetaConnectorNativeTest deploys a new Ethereum contract, binding an instance of ZetaConnectorNativeTest to it. +func DeployZetaConnectorNativeTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ZetaConnectorNativeTest, error) { + parsed, err := ZetaConnectorNativeTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorNativeTest{ZetaConnectorNativeTestCaller: ZetaConnectorNativeTestCaller{contract: contract}, ZetaConnectorNativeTestTransactor: ZetaConnectorNativeTestTransactor{contract: contract}, ZetaConnectorNativeTestFilterer: ZetaConnectorNativeTestFilterer{contract: contract}}, nil +} + +// ZetaConnectorNativeTest is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNativeTest struct { + ZetaConnectorNativeTestCaller // Read-only binding to the contract + ZetaConnectorNativeTestTransactor // Write-only binding to the contract + ZetaConnectorNativeTestFilterer // Log filterer for contract events +} + +// ZetaConnectorNativeTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNativeTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNativeTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNativeTestSession struct { + Contract *ZetaConnectorNativeTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNativeTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNativeTestCallerSession struct { + Contract *ZetaConnectorNativeTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNativeTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNativeTestTransactorSession struct { + Contract *ZetaConnectorNativeTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNativeTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNativeTestRaw struct { + Contract *ZetaConnectorNativeTest // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNativeTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTestCallerRaw struct { + Contract *ZetaConnectorNativeTestCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNativeTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNativeTestTransactorRaw struct { + Contract *ZetaConnectorNativeTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNativeTest creates a new instance of ZetaConnectorNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNativeTest(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNativeTest, error) { + contract, err := bindZetaConnectorNativeTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTest{ZetaConnectorNativeTestCaller: ZetaConnectorNativeTestCaller{contract: contract}, ZetaConnectorNativeTestTransactor: ZetaConnectorNativeTestTransactor{contract: contract}, ZetaConnectorNativeTestFilterer: ZetaConnectorNativeTestFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNativeTestCaller creates a new read-only instance of ZetaConnectorNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNativeTestCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNativeTestCaller, error) { + contract, err := bindZetaConnectorNativeTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestCaller{contract: contract}, nil +} + +// NewZetaConnectorNativeTestTransactor creates a new write-only instance of ZetaConnectorNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNativeTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNativeTestTransactor, error) { + contract, err := bindZetaConnectorNativeTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestTransactor{contract: contract}, nil +} + +// NewZetaConnectorNativeTestFilterer creates a new log filterer instance of ZetaConnectorNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNativeTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNativeTestFilterer, error) { + contract, err := bindZetaConnectorNativeTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestFilterer{contract: contract}, nil +} + +// bindZetaConnectorNativeTest binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNativeTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNativeTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNativeTest.Contract.ZetaConnectorNativeTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.ZetaConnectorNativeTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.ZetaConnectorNativeTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNativeTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) ISTEST() (bool, error) { + return _ZetaConnectorNativeTest.Contract.ISTEST(&_ZetaConnectorNativeTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ISTEST() (bool, error) { + return _ZetaConnectorNativeTest.Contract.ISTEST(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) ExcludeArtifacts() ([]string, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeArtifacts(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeArtifacts(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) ExcludeContracts() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeContracts(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeContracts(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) ExcludeSenders() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeSenders(&_ZetaConnectorNativeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.ExcludeSenders(&_ZetaConnectorNativeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) Failed() (bool, error) { + return _ZetaConnectorNativeTest.Contract.Failed(&_ZetaConnectorNativeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) Failed() (bool, error) { + return _ZetaConnectorNativeTest.Contract.Failed(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZetaConnectorNativeTest.Contract.TargetArtifactSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZetaConnectorNativeTest.Contract.TargetArtifactSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetArtifacts() ([]string, error) { + return _ZetaConnectorNativeTest.Contract.TargetArtifacts(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetArtifacts() ([]string, error) { + return _ZetaConnectorNativeTest.Contract.TargetArtifacts(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetContracts() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.TargetContracts(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetContracts() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.TargetContracts(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZetaConnectorNativeTest.Contract.TargetInterfaces(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZetaConnectorNativeTest.Contract.TargetInterfaces(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNativeTest.Contract.TargetSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNativeTest.Contract.TargetSelectors(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TargetSenders() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.TargetSenders(&_ZetaConnectorNativeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) TargetSenders() ([]common.Address, error) { + return _ZetaConnectorNativeTest.Contract.TargetSenders(&_ZetaConnectorNativeTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) SetUp() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.SetUp(&_ZetaConnectorNativeTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) SetUp() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.SetUp(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdraw(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdraw") +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdraw() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdraw(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdraw() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdraw(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveERC20(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20") +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveERC20() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS") +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveERC20Partial(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20Partial") +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveERC20Partial() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20Partial(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20Partial() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20Partial(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveNoParams(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveNoParams") +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveNoParams() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveNoParams(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveNoParams() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveNoParams(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndRevert(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndRevert") +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndRevert() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndRevert() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotTSS") +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotTSS") +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +} + +// ZetaConnectorNativeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestCallIterator struct { + Event *ZetaConnectorNativeTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestCall represents a Call event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*ZetaConnectorNativeTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestCallIterator{contract: _ZetaConnectorNativeTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestCall) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseCall(log types.Log) (*ZetaConnectorNativeTestCall, error) { + event := new(ZetaConnectorNativeTestCall) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestDepositIterator struct { + Event *ZetaConnectorNativeTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestDeposit represents a Deposit event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*ZetaConnectorNativeTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestDepositIterator{contract: _ZetaConnectorNativeTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestDeposit) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseDeposit(log types.Log) (*ZetaConnectorNativeTestDeposit, error) { + event := new(ZetaConnectorNativeTestDeposit) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestExecutedIterator struct { + Event *ZetaConnectorNativeTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestExecuted represents a Executed event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*ZetaConnectorNativeTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestExecutedIterator{contract: _ZetaConnectorNativeTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestExecuted) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseExecuted(log types.Log) (*ZetaConnectorNativeTestExecuted, error) { + event := new(ZetaConnectorNativeTestExecuted) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestExecutedWithERC20Iterator struct { + Event *ZetaConnectorNativeTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ZetaConnectorNativeTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestExecutedWithERC20Iterator{contract: _ZetaConnectorNativeTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestExecutedWithERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseExecutedWithERC20(log types.Log) (*ZetaConnectorNativeTestExecutedWithERC20, error) { + event := new(ZetaConnectorNativeTestExecutedWithERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedERC20Iterator struct { + Event *ZetaConnectorNativeTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReceivedERC20 represents a ReceivedERC20 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*ZetaConnectorNativeTestReceivedERC20Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestReceivedERC20Iterator{contract: _ZetaConnectorNativeTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReceivedERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReceivedERC20(log types.Log) (*ZetaConnectorNativeTestReceivedERC20, error) { + event := new(ZetaConnectorNativeTestReceivedERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedNoParamsIterator struct { + Event *ZetaConnectorNativeTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReceivedNoParams represents a ReceivedNoParams event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*ZetaConnectorNativeTestReceivedNoParamsIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestReceivedNoParamsIterator{contract: _ZetaConnectorNativeTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReceivedNoParams) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReceivedNoParams(log types.Log) (*ZetaConnectorNativeTestReceivedNoParams, error) { + event := new(ZetaConnectorNativeTestReceivedNoParams) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedNonPayableIterator struct { + Event *ZetaConnectorNativeTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReceivedNonPayable represents a ReceivedNonPayable event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*ZetaConnectorNativeTestReceivedNonPayableIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestReceivedNonPayableIterator{contract: _ZetaConnectorNativeTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReceivedNonPayable) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReceivedNonPayable(log types.Log) (*ZetaConnectorNativeTestReceivedNonPayable, error) { + event := new(ZetaConnectorNativeTestReceivedNonPayable) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedPayableIterator struct { + Event *ZetaConnectorNativeTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReceivedPayable represents a ReceivedPayable event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*ZetaConnectorNativeTestReceivedPayableIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestReceivedPayableIterator{contract: _ZetaConnectorNativeTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReceivedPayable) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReceivedPayable(log types.Log) (*ZetaConnectorNativeTestReceivedPayable, error) { + event := new(ZetaConnectorNativeTestReceivedPayable) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedRevertIterator struct { + Event *ZetaConnectorNativeTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReceivedRevert represents a ReceivedRevert event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*ZetaConnectorNativeTestReceivedRevertIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestReceivedRevertIterator{contract: _ZetaConnectorNativeTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReceivedRevert) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReceivedRevert(log types.Log) (*ZetaConnectorNativeTestReceivedRevert, error) { + event := new(ZetaConnectorNativeTestReceivedRevert) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestRevertedIterator struct { + Event *ZetaConnectorNativeTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestReverted represents a Reverted event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*ZetaConnectorNativeTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestRevertedIterator{contract: _ZetaConnectorNativeTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestReverted) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseReverted(log types.Log) (*ZetaConnectorNativeTestReverted, error) { + event := new(ZetaConnectorNativeTestReverted) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestRevertedWithERC20Iterator struct { + Event *ZetaConnectorNativeTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ZetaConnectorNativeTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestRevertedWithERC20Iterator{contract: _ZetaConnectorNativeTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestRevertedWithERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseRevertedWithERC20(log types.Log) (*ZetaConnectorNativeTestRevertedWithERC20, error) { + event := new(ZetaConnectorNativeTestRevertedWithERC20) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdrawIterator struct { + Event *ZetaConnectorNativeTestWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestWithdraw represents a Withdraw event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeTestWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestWithdrawIterator{contract: _ZetaConnectorNativeTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestWithdraw) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNativeTestWithdraw, error) { + event := new(ZetaConnectorNativeTestWithdraw) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdrawAndCallIterator struct { + Event *ZetaConnectorNativeTestWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeTestWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestWithdrawAndCallIterator{contract: _ZetaConnectorNativeTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestWithdrawAndCall) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNativeTestWithdrawAndCall, error) { + event := new(ZetaConnectorNativeTestWithdrawAndCall) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdrawAndRevertIterator struct { + Event *ZetaConnectorNativeTestWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNativeTestWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestWithdrawAndRevertIterator{contract: _ZetaConnectorNativeTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestWithdrawAndRevert) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNativeTestWithdrawAndRevert, error) { + event := new(ZetaConnectorNativeTestWithdrawAndRevert) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogIterator struct { + Event *ZetaConnectorNativeTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLog represents a Log event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLog(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogIterator{contract: _ZetaConnectorNativeTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLog) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLog) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLog(log types.Log) (*ZetaConnectorNativeTestLog, error) { + event := new(ZetaConnectorNativeTestLog) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogAddressIterator struct { + Event *ZetaConnectorNativeTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogAddress represents a LogAddress event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogAddressIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogAddressIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogAddress) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogAddress(log types.Log) (*ZetaConnectorNativeTestLogAddress, error) { + event := new(ZetaConnectorNativeTestLogAddress) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArrayIterator struct { + Event *ZetaConnectorNativeTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogArray represents a LogArray event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogArrayIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogArrayIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogArray) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogArray) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogArray(log types.Log) (*ZetaConnectorNativeTestLogArray, error) { + event := new(ZetaConnectorNativeTestLogArray) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArray0Iterator struct { + Event *ZetaConnectorNativeTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogArray0 represents a LogArray0 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogArray0Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogArray0Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogArray0) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogArray0(log types.Log) (*ZetaConnectorNativeTestLogArray0, error) { + event := new(ZetaConnectorNativeTestLogArray0) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArray1Iterator struct { + Event *ZetaConnectorNativeTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogArray1 represents a LogArray1 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogArray1Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogArray1Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogArray1) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogArray1(log types.Log) (*ZetaConnectorNativeTestLogArray1, error) { + event := new(ZetaConnectorNativeTestLogArray1) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogBytesIterator struct { + Event *ZetaConnectorNativeTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogBytes represents a LogBytes event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogBytesIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogBytesIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogBytes) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogBytes(log types.Log) (*ZetaConnectorNativeTestLogBytes, error) { + event := new(ZetaConnectorNativeTestLogBytes) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogBytes32Iterator struct { + Event *ZetaConnectorNativeTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogBytes32 represents a LogBytes32 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogBytes32Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogBytes32Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogBytes32) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogBytes32(log types.Log) (*ZetaConnectorNativeTestLogBytes32, error) { + event := new(ZetaConnectorNativeTestLogBytes32) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogIntIterator struct { + Event *ZetaConnectorNativeTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogInt represents a LogInt event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogIntIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogIntIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogInt(log types.Log) (*ZetaConnectorNativeTestLogInt, error) { + event := new(ZetaConnectorNativeTestLogInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedAddressIterator struct { + Event *ZetaConnectorNativeTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedAddress represents a LogNamedAddress event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedAddressIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedAddressIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedAddress) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedAddress(log types.Log) (*ZetaConnectorNativeTestLogNamedAddress, error) { + event := new(ZetaConnectorNativeTestLogNamedAddress) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArrayIterator struct { + Event *ZetaConnectorNativeTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedArray represents a LogNamedArray event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedArrayIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedArrayIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedArray) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedArray(log types.Log) (*ZetaConnectorNativeTestLogNamedArray, error) { + event := new(ZetaConnectorNativeTestLogNamedArray) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArray0Iterator struct { + Event *ZetaConnectorNativeTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedArray0 represents a LogNamedArray0 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedArray0Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedArray0Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedArray0) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedArray0(log types.Log) (*ZetaConnectorNativeTestLogNamedArray0, error) { + event := new(ZetaConnectorNativeTestLogNamedArray0) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArray1Iterator struct { + Event *ZetaConnectorNativeTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedArray1 represents a LogNamedArray1 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedArray1Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedArray1Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedArray1) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedArray1(log types.Log) (*ZetaConnectorNativeTestLogNamedArray1, error) { + event := new(ZetaConnectorNativeTestLogNamedArray1) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedBytesIterator struct { + Event *ZetaConnectorNativeTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedBytes represents a LogNamedBytes event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedBytesIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedBytesIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedBytes) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedBytes(log types.Log) (*ZetaConnectorNativeTestLogNamedBytes, error) { + event := new(ZetaConnectorNativeTestLogNamedBytes) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedBytes32Iterator struct { + Event *ZetaConnectorNativeTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedBytes32Iterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedBytes32) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedBytes32(log types.Log) (*ZetaConnectorNativeTestLogNamedBytes32, error) { + event := new(ZetaConnectorNativeTestLogNamedBytes32) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedDecimalIntIterator struct { + Event *ZetaConnectorNativeTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedDecimalIntIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedDecimalInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*ZetaConnectorNativeTestLogNamedDecimalInt, error) { + event := new(ZetaConnectorNativeTestLogNamedDecimalInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedDecimalUintIterator struct { + Event *ZetaConnectorNativeTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedDecimalUintIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedDecimalUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*ZetaConnectorNativeTestLogNamedDecimalUint, error) { + event := new(ZetaConnectorNativeTestLogNamedDecimalUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedIntIterator struct { + Event *ZetaConnectorNativeTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedInt represents a LogNamedInt event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedIntIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedIntIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedInt(log types.Log) (*ZetaConnectorNativeTestLogNamedInt, error) { + event := new(ZetaConnectorNativeTestLogNamedInt) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedStringIterator struct { + Event *ZetaConnectorNativeTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedString represents a LogNamedString event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedStringIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedStringIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedString) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedString(log types.Log) (*ZetaConnectorNativeTestLogNamedString, error) { + event := new(ZetaConnectorNativeTestLogNamedString) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedUintIterator struct { + Event *ZetaConnectorNativeTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogNamedUint represents a LogNamedUint event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogNamedUintIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogNamedUintIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogNamedUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogNamedUint(log types.Log) (*ZetaConnectorNativeTestLogNamedUint, error) { + event := new(ZetaConnectorNativeTestLogNamedUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogStringIterator struct { + Event *ZetaConnectorNativeTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogString represents a LogString event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogString(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogStringIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogStringIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogString) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogString) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogString(log types.Log) (*ZetaConnectorNativeTestLogString, error) { + event := new(ZetaConnectorNativeTestLogString) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogUintIterator struct { + Event *ZetaConnectorNativeTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogUint represents a LogUint event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogUintIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogUintIterator{contract: _ZetaConnectorNativeTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogUint(log types.Log) (*ZetaConnectorNativeTestLogUint, error) { + event := new(ZetaConnectorNativeTestLogUint) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogsIterator struct { + Event *ZetaConnectorNativeTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeTestLogs represents a Logs event raised by the ZetaConnectorNativeTest contract. +type ZetaConnectorNativeTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) FilterLogs(opts *bind.FilterOpts) (*ZetaConnectorNativeTestLogsIterator, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeTestLogsIterator{contract: _ZetaConnectorNativeTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeTestLogs) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNativeTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeTestLogs) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestFilterer) ParseLogs(log types.Log) (*ZetaConnectorNativeTestLogs, error) { + event := new(ZetaConnectorNativeTestLogs) + if err := _ZetaConnectorNativeTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go b/v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go new file mode 100644 index 00000000..526da37d --- /dev/null +++ b/v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go @@ -0,0 +1,795 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectornewbase + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaConnectorNewBaseMetaData contains all meta data concerning the ZetaConnectorNewBase contract. +var ZetaConnectorNewBaseMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", +} + +// ZetaConnectorNewBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNewBaseMetaData.ABI instead. +var ZetaConnectorNewBaseABI = ZetaConnectorNewBaseMetaData.ABI + +// ZetaConnectorNewBase is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNewBase struct { + ZetaConnectorNewBaseCaller // Read-only binding to the contract + ZetaConnectorNewBaseTransactor // Write-only binding to the contract + ZetaConnectorNewBaseFilterer // Log filterer for contract events +} + +// ZetaConnectorNewBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNewBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNewBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNewBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNewBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNewBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNewBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNewBaseSession struct { + Contract *ZetaConnectorNewBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNewBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNewBaseCallerSession struct { + Contract *ZetaConnectorNewBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNewBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNewBaseTransactorSession struct { + Contract *ZetaConnectorNewBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNewBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNewBaseRaw struct { + Contract *ZetaConnectorNewBase // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNewBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNewBaseCallerRaw struct { + Contract *ZetaConnectorNewBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNewBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNewBaseTransactorRaw struct { + Contract *ZetaConnectorNewBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNewBase creates a new instance of ZetaConnectorNewBase, bound to a specific deployed contract. +func NewZetaConnectorNewBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNewBase, error) { + contract, err := bindZetaConnectorNewBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBase{ZetaConnectorNewBaseCaller: ZetaConnectorNewBaseCaller{contract: contract}, ZetaConnectorNewBaseTransactor: ZetaConnectorNewBaseTransactor{contract: contract}, ZetaConnectorNewBaseFilterer: ZetaConnectorNewBaseFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNewBaseCaller creates a new read-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. +func NewZetaConnectorNewBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNewBaseCaller, error) { + contract, err := bindZetaConnectorNewBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseCaller{contract: contract}, nil +} + +// NewZetaConnectorNewBaseTransactor creates a new write-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. +func NewZetaConnectorNewBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNewBaseTransactor, error) { + contract, err := bindZetaConnectorNewBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseTransactor{contract: contract}, nil +} + +// NewZetaConnectorNewBaseFilterer creates a new log filterer instance of ZetaConnectorNewBase, bound to a specific deployed contract. +func NewZetaConnectorNewBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNewBaseFilterer, error) { + contract, err := bindZetaConnectorNewBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseFilterer{contract: contract}, nil +} + +// bindZetaConnectorNewBase binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNewBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNewBaseMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNewBase.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.contract.Transact(opts, method, params...) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNewBase.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Gateway() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) Gateway() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNewBase.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNewBase.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNewBase.contract.Transact(opts, "receiveTokens", amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.contract.Transact(opts, "withdraw", to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +} + +// ZetaConnectorNewBaseWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdrawIterator struct { + Event *ZetaConnectorNewBaseWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNewBaseWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNewBaseWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNewBaseWithdraw represents a Withdraw event raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseWithdrawIterator{contract: _ZetaConnectorNewBase.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNewBaseWithdraw) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNewBaseWithdraw, error) { + event := new(ZetaConnectorNewBaseWithdraw) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNewBaseWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdrawAndCallIterator struct { + Event *ZetaConnectorNewBaseWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNewBaseWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseWithdrawAndCallIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNewBaseWithdrawAndCall) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNewBaseWithdrawAndCall, error) { + event := new(ZetaConnectorNewBaseWithdrawAndCall) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNewBaseWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdrawAndRevertIterator struct { + Event *ZetaConnectorNewBaseWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNewBaseWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNewBase contract. +type ZetaConnectorNewBaseWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNewBaseWithdrawAndRevertIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNewBaseWithdrawAndRevert) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNewBaseWithdrawAndRevert, error) { + event := new(ZetaConnectorNewBaseWithdrawAndRevert) + if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go new file mode 100644 index 00000000..e605370e --- /dev/null +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -0,0 +1,1003 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectornonnative + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. +var ZetaConnectorNonNativeMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033", +} + +// ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNonNativeMetaData.ABI instead. +var ZetaConnectorNonNativeABI = ZetaConnectorNonNativeMetaData.ABI + +// ZetaConnectorNonNativeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorNonNativeMetaData.Bin instead. +var ZetaConnectorNonNativeBin = ZetaConnectorNonNativeMetaData.Bin + +// DeployZetaConnectorNonNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNative to it. +func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { + parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorNonNative{ZetaConnectorNonNativeCaller: ZetaConnectorNonNativeCaller{contract: contract}, ZetaConnectorNonNativeTransactor: ZetaConnectorNonNativeTransactor{contract: contract}, ZetaConnectorNonNativeFilterer: ZetaConnectorNonNativeFilterer{contract: contract}}, nil +} + +// ZetaConnectorNonNative is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNonNative struct { + ZetaConnectorNonNativeCaller // Read-only binding to the contract + ZetaConnectorNonNativeTransactor // Write-only binding to the contract + ZetaConnectorNonNativeFilterer // Log filterer for contract events +} + +// ZetaConnectorNonNativeCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNonNativeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNonNativeSession struct { + Contract *ZetaConnectorNonNative // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonNativeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNonNativeCallerSession struct { + Contract *ZetaConnectorNonNativeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNonNativeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNonNativeTransactorSession struct { + Contract *ZetaConnectorNonNativeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonNativeRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNonNativeRaw struct { + Contract *ZetaConnectorNonNative // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNonNativeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeCallerRaw struct { + Contract *ZetaConnectorNonNativeCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNonNativeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTransactorRaw struct { + Contract *ZetaConnectorNonNativeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNonNative creates a new instance of ZetaConnectorNonNative, bound to a specific deployed contract. +func NewZetaConnectorNonNative(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNonNative, error) { + contract, err := bindZetaConnectorNonNative(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNative{ZetaConnectorNonNativeCaller: ZetaConnectorNonNativeCaller{contract: contract}, ZetaConnectorNonNativeTransactor: ZetaConnectorNonNativeTransactor{contract: contract}, ZetaConnectorNonNativeFilterer: ZetaConnectorNonNativeFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNonNativeCaller creates a new read-only instance of ZetaConnectorNonNative, bound to a specific deployed contract. +func NewZetaConnectorNonNativeCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNonNativeCaller, error) { + contract, err := bindZetaConnectorNonNative(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeCaller{contract: contract}, nil +} + +// NewZetaConnectorNonNativeTransactor creates a new write-only instance of ZetaConnectorNonNative, bound to a specific deployed contract. +func NewZetaConnectorNonNativeTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNonNativeTransactor, error) { + contract, err := bindZetaConnectorNonNative(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTransactor{contract: contract}, nil +} + +// NewZetaConnectorNonNativeFilterer creates a new log filterer instance of ZetaConnectorNonNative, bound to a specific deployed contract. +func NewZetaConnectorNonNativeFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNonNativeFilterer, error) { + contract, err := bindZetaConnectorNonNative(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeFilterer{contract: contract}, nil +} + +// bindZetaConnectorNonNative binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNonNative(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.ZetaConnectorNonNativeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonNative.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.contract.Transact(opts, method, params...) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "gateway") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Gateway() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) +} + +// Gateway is a free data retrieval call binding the contract method 0x116191b6. +// +// Solidity: function gateway() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) Gateway() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) MaxSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "maxSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) MaxSupply() (*big.Int, error) { + return _ZetaConnectorNonNative.Contract.MaxSupply(&_ZetaConnectorNonNative.CallOpts) +} + +// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. +// +// Solidity: function maxSupply() view returns(uint256) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) MaxSupply() (*big.Int, error) { + return _ZetaConnectorNonNative.Contract.MaxSupply(&_ZetaConnectorNonNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "tssAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) +} + +// TssAddress is a free data retrieval call binding the contract method 0x5b112591. +// +// Solidity: function tssAddress() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.ZetaToken(&_ZetaConnectorNonNative.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorNonNative.Contract.ZetaToken(&_ZetaConnectorNonNative.CallOpts) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "receiveTokens", amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.ReceiveTokens(&_ZetaConnectorNonNative.TransactOpts, amount) +} + +// ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. +// +// Solidity: function receiveTokens(uint256 amount) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.ReceiveTokens(&_ZetaConnectorNonNative.TransactOpts, amount) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 _maxSupply) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) SetMaxSupply(opts *bind.TransactOpts, _maxSupply *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "setMaxSupply", _maxSupply) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 _maxSupply) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) SetMaxSupply(_maxSupply *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, _maxSupply) +} + +// SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. +// +// Solidity: function setMaxSupply(uint256 _maxSupply) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) SetMaxSupply(_maxSupply *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, _maxSupply) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "withdraw", to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Withdraw(&_ZetaConnectorNonNative.TransactOpts, to, amount, internalSendHash) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x106e6290. +// +// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Withdraw(&_ZetaConnectorNonNative.TransactOpts, to, amount, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.WithdrawAndCall(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. +// +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.WithdrawAndCall(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.WithdrawAndRevert(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) +} + +// WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. +// +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.WithdrawAndRevert(&_ZetaConnectorNonNative.TransactOpts, to, amount, data, internalSendHash) +} + +// ZetaConnectorNonNativeMaxSupplyUpdatedIterator is returned from FilterMaxSupplyUpdated and is used to iterate over the raw logs and unpacked data for MaxSupplyUpdated events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeMaxSupplyUpdatedIterator struct { + Event *ZetaConnectorNonNativeMaxSupplyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeMaxSupplyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeMaxSupplyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeMaxSupplyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeMaxSupplyUpdated represents a MaxSupplyUpdated event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeMaxSupplyUpdated struct { + MaxSupply *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxSupplyUpdated is a free log retrieval operation binding the contract event 0x7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c. +// +// Solidity: event MaxSupplyUpdated(uint256 maxSupply) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterMaxSupplyUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonNativeMaxSupplyUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeMaxSupplyUpdatedIterator{contract: _ZetaConnectorNonNative.contract, event: "MaxSupplyUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxSupplyUpdated is a free log subscription operation binding the contract event 0x7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c. +// +// Solidity: event MaxSupplyUpdated(uint256 maxSupply) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchMaxSupplyUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeMaxSupplyUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeMaxSupplyUpdated) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMaxSupplyUpdated is a log parse operation binding the contract event 0x7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c. +// +// Solidity: event MaxSupplyUpdated(uint256 maxSupply) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseMaxSupplyUpdated(log types.Log) (*ZetaConnectorNonNativeMaxSupplyUpdated, error) { + event := new(ZetaConnectorNonNativeMaxSupplyUpdated) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdrawIterator struct { + Event *ZetaConnectorNonNativeWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeWithdraw represents a Withdraw event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeWithdrawIterator{contract: _ZetaConnectorNonNative.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeWithdraw) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNonNativeWithdraw, error) { + event := new(ZetaConnectorNonNativeWithdraw) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdrawAndCallIterator struct { + Event *ZetaConnectorNonNativeWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeWithdrawAndCallIterator{contract: _ZetaConnectorNonNative.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeWithdrawAndCall) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNonNativeWithdrawAndCall, error) { + event := new(ZetaConnectorNonNativeWithdrawAndCall) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdrawAndRevertIterator struct { + Event *ZetaConnectorNonNativeWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeWithdrawAndRevertIterator{contract: _ZetaConnectorNonNative.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeWithdrawAndRevert) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNonNativeWithdrawAndRevert, error) { + event := new(ZetaConnectorNonNativeWithdrawAndRevert) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go new file mode 100644 index 00000000..39cc897c --- /dev/null +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -0,0 +1,5605 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetaconnectornonnative + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. +var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50610f868061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101bb578063ba414fa6146101c3578063e20c9f71146101db578063fa7626d4146101e357600080fd5b806385226c8114610189578063916a17c61461019e578063b0464fdc146101b357600080fd5b80633e5e3c23116100bd5780633e5e3c23146101645780633f7286f41461016c57806366d9a9a01461017457600080fd5b80630a9254e4146100e45780631ed7831c146101315780632ade38801461014f575b600080fd5b61012f602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560258054821661123417905560268054909116615678179055565b005b6101396101f0565b6040516101469190610afb565b60405180910390f35b61015761025f565b6040516101469190610bb8565b6101396103ae565b61013961041b565b61017c610488565b6040516101469190610d2b565b61019161060a565b6040516101469190610dc9565b6101a66106da565b6040516101469190610e40565b6101a66107e2565b6101916108ea565b6101cb6109ba565b6040519015158152602001610146565b610139610a8e565b601f546101cb9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561025557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103a5576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561038e57838290600052602060002001805461030190610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461032d90610ee4565b801561037a5780601f1061034f5761010080835404028352916020019161037a565b820191906000526020600020905b81548152906001019060200180831161035d57829003601f168201915b5050505050815260200190600101906102e2565b505050508152505081526020019060010190610283565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002090600202016040518060400160405290816000820180546104df90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610ee4565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059f5790505b505050505081525050815260200190600101906104ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461064d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461067990610ee4565b80156106c65780601f1061069b576101008083540402835291602001916106c6565b820191906000526020600020905b8154815290600101906020018083116106a957829003601f168201915b50505050508152602001906001019061062e565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107ca57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107775790505b505050505081525050815260200190600101906106fe565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161087f5790505b50505050508152505081526020019060010190610806565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461092d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461095990610ee4565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b50505050508152602001906001019061090e565b60085460009060ff16156109d2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190610f37565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b602080825282518282018190526000918401906040840190835b81811015610b4957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610b15565b509095945050505050565b6000815180845260005b81811015610b7a57602081850181015186830182015201610b5e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610ca7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352610c91848651610b54565b6020958601959094509290920191600101610c57565b509197505050602094850194929092019150600101610be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015610d215781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101610ce1565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752610d976040880182610b54565b9050602082015191508681036020880152610db28183610ccd565b965050506020938401939190910190600101610d53565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452610e2b858351610b54565b94506020938401939190910190600101610df1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152610ece6040870182610ccd565b9550506020938401939190910190600101610e68565b600181811c90821680610ef857607f821691505b602082108103610f31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f4957600080fd5b505191905056fea2646970667358221220e6ce98b1e4db0be37c7d41156129bf2894aeb3fbfccc1ebf666e905caf87609e64736f6c634300081a0033", +} + +// ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorNonNativeTestMetaData.ABI instead. +var ZetaConnectorNonNativeTestABI = ZetaConnectorNonNativeTestMetaData.ABI + +// ZetaConnectorNonNativeTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaConnectorNonNativeTestMetaData.Bin instead. +var ZetaConnectorNonNativeTestBin = ZetaConnectorNonNativeTestMetaData.Bin + +// DeployZetaConnectorNonNativeTest deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNativeTest to it. +func DeployZetaConnectorNonNativeTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ZetaConnectorNonNativeTest, error) { + parsed, err := ZetaConnectorNonNativeTestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaConnectorNonNativeTest{ZetaConnectorNonNativeTestCaller: ZetaConnectorNonNativeTestCaller{contract: contract}, ZetaConnectorNonNativeTestTransactor: ZetaConnectorNonNativeTestTransactor{contract: contract}, ZetaConnectorNonNativeTestFilterer: ZetaConnectorNonNativeTestFilterer{contract: contract}}, nil +} + +// ZetaConnectorNonNativeTest is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTest struct { + ZetaConnectorNonNativeTestCaller // Read-only binding to the contract + ZetaConnectorNonNativeTestTransactor // Write-only binding to the contract + ZetaConnectorNonNativeTestFilterer // Log filterer for contract events +} + +// ZetaConnectorNonNativeTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorNonNativeTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaConnectorNonNativeTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaConnectorNonNativeTestSession struct { + Contract *ZetaConnectorNonNativeTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonNativeTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaConnectorNonNativeTestCallerSession struct { + Contract *ZetaConnectorNonNativeTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaConnectorNonNativeTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaConnectorNonNativeTestTransactorSession struct { + Contract *ZetaConnectorNonNativeTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaConnectorNonNativeTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTestRaw struct { + Contract *ZetaConnectorNonNativeTest // Generic contract binding to access the raw methods on +} + +// ZetaConnectorNonNativeTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTestCallerRaw struct { + Contract *ZetaConnectorNonNativeTestCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaConnectorNonNativeTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorNonNativeTestTransactorRaw struct { + Contract *ZetaConnectorNonNativeTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaConnectorNonNativeTest creates a new instance of ZetaConnectorNonNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNonNativeTest(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNonNativeTest, error) { + contract, err := bindZetaConnectorNonNativeTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTest{ZetaConnectorNonNativeTestCaller: ZetaConnectorNonNativeTestCaller{contract: contract}, ZetaConnectorNonNativeTestTransactor: ZetaConnectorNonNativeTestTransactor{contract: contract}, ZetaConnectorNonNativeTestFilterer: ZetaConnectorNonNativeTestFilterer{contract: contract}}, nil +} + +// NewZetaConnectorNonNativeTestCaller creates a new read-only instance of ZetaConnectorNonNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNonNativeTestCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNonNativeTestCaller, error) { + contract, err := bindZetaConnectorNonNativeTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestCaller{contract: contract}, nil +} + +// NewZetaConnectorNonNativeTestTransactor creates a new write-only instance of ZetaConnectorNonNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNonNativeTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNonNativeTestTransactor, error) { + contract, err := bindZetaConnectorNonNativeTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestTransactor{contract: contract}, nil +} + +// NewZetaConnectorNonNativeTestFilterer creates a new log filterer instance of ZetaConnectorNonNativeTest, bound to a specific deployed contract. +func NewZetaConnectorNonNativeTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNonNativeTestFilterer, error) { + contract, err := bindZetaConnectorNonNativeTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestFilterer{contract: contract}, nil +} + +// bindZetaConnectorNonNativeTest binds a generic wrapper to an already deployed contract. +func bindZetaConnectorNonNativeTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorNonNativeTestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonNativeTest.Contract.ZetaConnectorNonNativeTestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.ZetaConnectorNonNativeTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.ZetaConnectorNonNativeTestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorNonNativeTest.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) ISTEST() (bool, error) { + return _ZetaConnectorNonNativeTest.Contract.ISTEST(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ISTEST() (bool, error) { + return _ZetaConnectorNonNativeTest.Contract.ISTEST(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) ExcludeArtifacts() ([]string, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeArtifacts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeArtifacts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) ExcludeContracts() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeContracts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeContracts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) ExcludeSenders() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeSenders(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.ExcludeSenders(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) Failed() (bool, error) { + return _ZetaConnectorNonNativeTest.Contract.Failed(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) Failed() (bool, error) { + return _ZetaConnectorNonNativeTest.Contract.Failed(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetArtifactSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetArtifactSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetArtifacts() ([]string, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetArtifacts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetArtifacts() ([]string, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetArtifacts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetContracts() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetContracts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetContracts() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetContracts(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetInterfaces(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetInterfaces(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetSelectors(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TargetSenders() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetSenders(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) TargetSenders() ([]common.Address, error) { + return _ZetaConnectorNonNativeTest.Contract.TargetSenders(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) SetUp() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.SetUp(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) SetUp() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.SetUp(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// ZetaConnectorNonNativeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestCallIterator struct { + Event *ZetaConnectorNonNativeTestCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestCall represents a Call event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestCall struct { + Sender common.Address + Receiver common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCall is a free log retrieval operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*ZetaConnectorNonNativeTestCallIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestCallIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "Call", logs: logs, sub: sub}, nil +} + +// WatchCall is a free log subscription operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestCall, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "Call", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestCall) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Call", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCall is a log parse operation binding the contract event 0x2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3. +// +// Solidity: event Call(address indexed sender, address indexed receiver, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseCall(log types.Log) (*ZetaConnectorNonNativeTestCall, error) { + event := new(ZetaConnectorNonNativeTestCall) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Call", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestDepositIterator struct { + Event *ZetaConnectorNonNativeTestDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestDeposit represents a Deposit event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestDeposit struct { + Sender common.Address + Receiver common.Address + Amount *big.Int + Asset common.Address + Payload []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterDeposit(opts *bind.FilterOpts, sender []common.Address, receiver []common.Address) (*ZetaConnectorNonNativeTestDepositIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestDepositIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestDeposit, sender []common.Address, receiver []common.Address) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "Deposit", senderRule, receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestDeposit) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4. +// +// Solidity: event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseDeposit(log types.Log) (*ZetaConnectorNonNativeTestDeposit, error) { + event := new(ZetaConnectorNonNativeTestDeposit) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestExecutedIterator is returned from FilterExecuted and is used to iterate over the raw logs and unpacked data for Executed events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestExecutedIterator struct { + Event *ZetaConnectorNonNativeTestExecuted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestExecutedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestExecuted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestExecutedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestExecutedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestExecuted represents a Executed event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestExecuted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecuted is a free log retrieval operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterExecuted(opts *bind.FilterOpts, destination []common.Address) (*ZetaConnectorNonNativeTestExecutedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestExecutedIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "Executed", logs: logs, sub: sub}, nil +} + +// WatchExecuted is a free log subscription operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchExecuted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestExecuted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "Executed", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestExecuted) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecuted is a log parse operation binding the contract event 0xcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f. +// +// Solidity: event Executed(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseExecuted(log types.Log) (*ZetaConnectorNonNativeTestExecuted, error) { + event := new(ZetaConnectorNonNativeTestExecuted) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Executed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestExecutedWithERC20Iterator is returned from FilterExecutedWithERC20 and is used to iterate over the raw logs and unpacked data for ExecutedWithERC20 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestExecutedWithERC20Iterator struct { + Event *ZetaConnectorNonNativeTestExecutedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestExecutedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestExecutedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestExecutedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestExecutedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestExecutedWithERC20 represents a ExecutedWithERC20 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestExecutedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterExecutedWithERC20 is a free log retrieval operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterExecutedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ZetaConnectorNonNativeTestExecutedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestExecutedWithERC20Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ExecutedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchExecutedWithERC20 is a free log subscription operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchExecutedWithERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestExecutedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ExecutedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestExecutedWithERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseExecutedWithERC20 is a log parse operation binding the contract event 0x29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382. +// +// Solidity: event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseExecutedWithERC20(log types.Log) (*ZetaConnectorNonNativeTestExecutedWithERC20, error) { + event := new(ZetaConnectorNonNativeTestExecutedWithERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ExecutedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestReceivedERC20Iterator is returned from FilterReceivedERC20 and is used to iterate over the raw logs and unpacked data for ReceivedERC20 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedERC20Iterator struct { + Event *ZetaConnectorNonNativeTestReceivedERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestReceivedERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestReceivedERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestReceivedERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReceivedERC20 represents a ReceivedERC20 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedERC20 struct { + Sender common.Address + Amount *big.Int + Token common.Address + Destination common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedERC20 is a free log retrieval operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReceivedERC20(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestReceivedERC20Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestReceivedERC20Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ReceivedERC20", logs: logs, sub: sub}, nil +} + +// WatchReceivedERC20 is a free log subscription operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReceivedERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReceivedERC20) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ReceivedERC20") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReceivedERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedERC20 is a log parse operation binding the contract event 0x2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60. +// +// Solidity: event ReceivedERC20(address sender, uint256 amount, address token, address destination) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReceivedERC20(log types.Log) (*ZetaConnectorNonNativeTestReceivedERC20, error) { + event := new(ZetaConnectorNonNativeTestReceivedERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestReceivedNoParamsIterator is returned from FilterReceivedNoParams and is used to iterate over the raw logs and unpacked data for ReceivedNoParams events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedNoParamsIterator struct { + Event *ZetaConnectorNonNativeTestReceivedNoParams // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestReceivedNoParamsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedNoParams) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestReceivedNoParamsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestReceivedNoParamsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReceivedNoParams represents a ReceivedNoParams event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedNoParams struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNoParams is a free log retrieval operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReceivedNoParams(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestReceivedNoParamsIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestReceivedNoParamsIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ReceivedNoParams", logs: logs, sub: sub}, nil +} + +// WatchReceivedNoParams is a free log subscription operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReceivedNoParams(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReceivedNoParams) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ReceivedNoParams") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReceivedNoParams) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNoParams is a log parse operation binding the contract event 0xbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0. +// +// Solidity: event ReceivedNoParams(address sender) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReceivedNoParams(log types.Log) (*ZetaConnectorNonNativeTestReceivedNoParams, error) { + event := new(ZetaConnectorNonNativeTestReceivedNoParams) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedNoParams", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestReceivedNonPayableIterator is returned from FilterReceivedNonPayable and is used to iterate over the raw logs and unpacked data for ReceivedNonPayable events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedNonPayableIterator struct { + Event *ZetaConnectorNonNativeTestReceivedNonPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestReceivedNonPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedNonPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestReceivedNonPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestReceivedNonPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReceivedNonPayable represents a ReceivedNonPayable event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedNonPayable struct { + Sender common.Address + Strs []string + Nums []*big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedNonPayable is a free log retrieval operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReceivedNonPayable(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestReceivedNonPayableIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestReceivedNonPayableIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ReceivedNonPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedNonPayable is a free log subscription operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReceivedNonPayable(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReceivedNonPayable) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ReceivedNonPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReceivedNonPayable) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedNonPayable is a log parse operation binding the contract event 0x74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146. +// +// Solidity: event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReceivedNonPayable(log types.Log) (*ZetaConnectorNonNativeTestReceivedNonPayable, error) { + event := new(ZetaConnectorNonNativeTestReceivedNonPayable) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedNonPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestReceivedPayableIterator is returned from FilterReceivedPayable and is used to iterate over the raw logs and unpacked data for ReceivedPayable events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedPayableIterator struct { + Event *ZetaConnectorNonNativeTestReceivedPayable // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestReceivedPayableIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedPayable) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestReceivedPayableIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestReceivedPayableIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReceivedPayable represents a ReceivedPayable event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedPayable struct { + Sender common.Address + Value *big.Int + Str string + Num *big.Int + Flag bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedPayable is a free log retrieval operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReceivedPayable(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestReceivedPayableIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestReceivedPayableIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ReceivedPayable", logs: logs, sub: sub}, nil +} + +// WatchReceivedPayable is a free log subscription operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReceivedPayable(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReceivedPayable) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ReceivedPayable") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReceivedPayable) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedPayable is a log parse operation binding the contract event 0x1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa. +// +// Solidity: event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReceivedPayable(log types.Log) (*ZetaConnectorNonNativeTestReceivedPayable, error) { + event := new(ZetaConnectorNonNativeTestReceivedPayable) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedPayable", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestReceivedRevertIterator is returned from FilterReceivedRevert and is used to iterate over the raw logs and unpacked data for ReceivedRevert events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedRevertIterator struct { + Event *ZetaConnectorNonNativeTestReceivedRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestReceivedRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReceivedRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestReceivedRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestReceivedRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReceivedRevert represents a ReceivedRevert event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReceivedRevert struct { + Sender common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReceivedRevert is a free log retrieval operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReceivedRevert(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestReceivedRevertIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestReceivedRevertIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "ReceivedRevert", logs: logs, sub: sub}, nil +} + +// WatchReceivedRevert is a free log subscription operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReceivedRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReceivedRevert) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "ReceivedRevert") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReceivedRevert) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReceivedRevert is a log parse operation binding the contract event 0x0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa. +// +// Solidity: event ReceivedRevert(address sender, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReceivedRevert(log types.Log) (*ZetaConnectorNonNativeTestReceivedRevert, error) { + event := new(ZetaConnectorNonNativeTestReceivedRevert) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "ReceivedRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestRevertedIterator is returned from FilterReverted and is used to iterate over the raw logs and unpacked data for Reverted events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestRevertedIterator struct { + Event *ZetaConnectorNonNativeTestReverted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestRevertedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestReverted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestRevertedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestRevertedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestReverted represents a Reverted event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestReverted struct { + Destination common.Address + Value *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterReverted is a free log retrieval operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterReverted(opts *bind.FilterOpts, destination []common.Address) (*ZetaConnectorNonNativeTestRevertedIterator, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestRevertedIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "Reverted", logs: logs, sub: sub}, nil +} + +// WatchReverted is a free log subscription operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchReverted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestReverted, destination []common.Address) (event.Subscription, error) { + + var destinationRule []interface{} + for _, destinationItem := range destination { + destinationRule = append(destinationRule, destinationItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "Reverted", destinationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestReverted) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseReverted is a log parse operation binding the contract event 0xd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c. +// +// Solidity: event Reverted(address indexed destination, uint256 value, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseReverted(log types.Log) (*ZetaConnectorNonNativeTestReverted, error) { + event := new(ZetaConnectorNonNativeTestReverted) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Reverted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestRevertedWithERC20Iterator is returned from FilterRevertedWithERC20 and is used to iterate over the raw logs and unpacked data for RevertedWithERC20 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestRevertedWithERC20Iterator struct { + Event *ZetaConnectorNonNativeTestRevertedWithERC20 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestRevertedWithERC20Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestRevertedWithERC20) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestRevertedWithERC20Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestRevertedWithERC20Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestRevertedWithERC20 represents a RevertedWithERC20 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestRevertedWithERC20 struct { + Token common.Address + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRevertedWithERC20 is a free log retrieval operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterRevertedWithERC20(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ZetaConnectorNonNativeTestRevertedWithERC20Iterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestRevertedWithERC20Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "RevertedWithERC20", logs: logs, sub: sub}, nil +} + +// WatchRevertedWithERC20 is a free log subscription operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchRevertedWithERC20(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestRevertedWithERC20, token []common.Address, to []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "RevertedWithERC20", tokenRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestRevertedWithERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRevertedWithERC20 is a log parse operation binding the contract event 0x723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7. +// +// Solidity: event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseRevertedWithERC20(log types.Log) (*ZetaConnectorNonNativeTestRevertedWithERC20, error) { + event := new(ZetaConnectorNonNativeTestRevertedWithERC20) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "RevertedWithERC20", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdrawIterator struct { + Event *ZetaConnectorNonNativeTestWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestWithdraw represents a Withdraw event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdraw struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeTestWithdrawIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestWithdrawIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestWithdraw, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "Withdraw", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestWithdraw) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. +// +// Solidity: event Withdraw(address indexed to, uint256 amount) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNonNativeTestWithdraw, error) { + event := new(ZetaConnectorNonNativeTestWithdraw) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdrawAndCallIterator struct { + Event *ZetaConnectorNonNativeTestWithdrawAndCall // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestWithdrawAndCallIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdrawAndCall) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestWithdrawAndCallIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestWithdrawAndCallIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdrawAndCall struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeTestWithdrawAndCallIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestWithdrawAndCallIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestWithdrawAndCall, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestWithdrawAndCall) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. +// +// Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNonNativeTestWithdrawAndCall, error) { + event := new(ZetaConnectorNonNativeTestWithdrawAndCall) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdrawAndRevertIterator struct { + Event *ZetaConnectorNonNativeTestWithdrawAndRevert // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestWithdrawAndRevertIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestWithdrawAndRevert) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestWithdrawAndRevertIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestWithdrawAndRevertIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestWithdrawAndRevert struct { + To common.Address + Amount *big.Int + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNonNativeTestWithdrawAndRevertIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestWithdrawAndRevertIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil +} + +// WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestWithdrawAndRevert, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestWithdrawAndRevert) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. +// +// Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNonNativeTestWithdrawAndRevert, error) { + event := new(ZetaConnectorNonNativeTestWithdrawAndRevert) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogIterator struct { + Event *ZetaConnectorNonNativeTestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLog represents a Log event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLog(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLog) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLog) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLog(log types.Log) (*ZetaConnectorNonNativeTestLog, error) { + event := new(ZetaConnectorNonNativeTestLog) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogAddressIterator struct { + Event *ZetaConnectorNonNativeTestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogAddress represents a LogAddress event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogAddressIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogAddressIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogAddress) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogAddress(log types.Log) (*ZetaConnectorNonNativeTestLogAddress, error) { + event := new(ZetaConnectorNonNativeTestLogAddress) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArrayIterator struct { + Event *ZetaConnectorNonNativeTestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogArray represents a LogArray event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogArrayIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogArrayIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogArray) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogArray) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogArray(log types.Log) (*ZetaConnectorNonNativeTestLogArray, error) { + event := new(ZetaConnectorNonNativeTestLogArray) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArray0Iterator struct { + Event *ZetaConnectorNonNativeTestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogArray0 represents a LogArray0 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogArray0Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogArray0Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogArray0) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogArray0(log types.Log) (*ZetaConnectorNonNativeTestLogArray0, error) { + event := new(ZetaConnectorNonNativeTestLogArray0) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArray1Iterator struct { + Event *ZetaConnectorNonNativeTestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogArray1 represents a LogArray1 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogArray1Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogArray1Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogArray1) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogArray1(log types.Log) (*ZetaConnectorNonNativeTestLogArray1, error) { + event := new(ZetaConnectorNonNativeTestLogArray1) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogBytesIterator struct { + Event *ZetaConnectorNonNativeTestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogBytes represents a LogBytes event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogBytesIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogBytesIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogBytes) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogBytes(log types.Log) (*ZetaConnectorNonNativeTestLogBytes, error) { + event := new(ZetaConnectorNonNativeTestLogBytes) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogBytes32Iterator struct { + Event *ZetaConnectorNonNativeTestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogBytes32 represents a LogBytes32 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogBytes32Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogBytes32Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogBytes32) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogBytes32(log types.Log) (*ZetaConnectorNonNativeTestLogBytes32, error) { + event := new(ZetaConnectorNonNativeTestLogBytes32) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogIntIterator struct { + Event *ZetaConnectorNonNativeTestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogInt represents a LogInt event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogIntIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogIntIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogInt(log types.Log) (*ZetaConnectorNonNativeTestLogInt, error) { + event := new(ZetaConnectorNonNativeTestLogInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedAddressIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedAddress represents a LogNamedAddress event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedAddressIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedAddressIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedAddress) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedAddress(log types.Log) (*ZetaConnectorNonNativeTestLogNamedAddress, error) { + event := new(ZetaConnectorNonNativeTestLogNamedAddress) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArrayIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedArray represents a LogNamedArray event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedArrayIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedArrayIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedArray) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedArray(log types.Log) (*ZetaConnectorNonNativeTestLogNamedArray, error) { + event := new(ZetaConnectorNonNativeTestLogNamedArray) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArray0Iterator struct { + Event *ZetaConnectorNonNativeTestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedArray0 represents a LogNamedArray0 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedArray0Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedArray0Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedArray0) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedArray0(log types.Log) (*ZetaConnectorNonNativeTestLogNamedArray0, error) { + event := new(ZetaConnectorNonNativeTestLogNamedArray0) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArray1Iterator struct { + Event *ZetaConnectorNonNativeTestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedArray1 represents a LogNamedArray1 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedArray1Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedArray1Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedArray1) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedArray1(log types.Log) (*ZetaConnectorNonNativeTestLogNamedArray1, error) { + event := new(ZetaConnectorNonNativeTestLogNamedArray1) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedBytesIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedBytes represents a LogNamedBytes event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedBytesIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedBytesIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedBytes) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedBytes(log types.Log) (*ZetaConnectorNonNativeTestLogNamedBytes, error) { + event := new(ZetaConnectorNonNativeTestLogNamedBytes) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedBytes32Iterator struct { + Event *ZetaConnectorNonNativeTestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedBytes32Iterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedBytes32) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedBytes32(log types.Log) (*ZetaConnectorNonNativeTestLogNamedBytes32, error) { + event := new(ZetaConnectorNonNativeTestLogNamedBytes32) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedDecimalIntIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedDecimalIntIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedDecimalInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*ZetaConnectorNonNativeTestLogNamedDecimalInt, error) { + event := new(ZetaConnectorNonNativeTestLogNamedDecimalInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedDecimalUintIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedDecimalUintIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedDecimalUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*ZetaConnectorNonNativeTestLogNamedDecimalUint, error) { + event := new(ZetaConnectorNonNativeTestLogNamedDecimalUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedIntIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedInt represents a LogNamedInt event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedIntIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedIntIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedInt(log types.Log) (*ZetaConnectorNonNativeTestLogNamedInt, error) { + event := new(ZetaConnectorNonNativeTestLogNamedInt) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedStringIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedString represents a LogNamedString event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedStringIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedStringIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedString) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedString(log types.Log) (*ZetaConnectorNonNativeTestLogNamedString, error) { + event := new(ZetaConnectorNonNativeTestLogNamedString) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedUintIterator struct { + Event *ZetaConnectorNonNativeTestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogNamedUint represents a LogNamedUint event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogNamedUintIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogNamedUintIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogNamedUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogNamedUint(log types.Log) (*ZetaConnectorNonNativeTestLogNamedUint, error) { + event := new(ZetaConnectorNonNativeTestLogNamedUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogStringIterator struct { + Event *ZetaConnectorNonNativeTestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogString represents a LogString event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogString(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogStringIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogStringIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogString) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogString) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogString(log types.Log) (*ZetaConnectorNonNativeTestLogString, error) { + event := new(ZetaConnectorNonNativeTestLogString) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogUintIterator struct { + Event *ZetaConnectorNonNativeTestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogUint represents a LogUint event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogUintIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogUintIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogUint) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogUint(log types.Log) (*ZetaConnectorNonNativeTestLogUint, error) { + event := new(ZetaConnectorNonNativeTestLogUint) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogsIterator struct { + Event *ZetaConnectorNonNativeTestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeTestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeTestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeTestLogs represents a Logs event raised by the ZetaConnectorNonNativeTest contract. +type ZetaConnectorNonNativeTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) FilterLogs(opts *bind.FilterOpts) (*ZetaConnectorNonNativeTestLogsIterator, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeTestLogsIterator{contract: _ZetaConnectorNonNativeTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeTestLogs) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNativeTest.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeTestLogs) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestFilterer) ParseLogs(log types.Log) (*ZetaConnectorNonNativeTestLogs, error) { + event := new(ZetaConnectorNonNativeTestLogs) + if err := _ZetaConnectorNonNativeTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/zrc20new.sol/zrc20errors.go b/v2/pkg/zrc20new.sol/zrc20errors.go new file mode 100644 index 00000000..0e2f5b87 --- /dev/null +++ b/v2/pkg/zrc20new.sol/zrc20errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20new + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. +var ZRC20ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", +} + +// ZRC20ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. +var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI + +// ZRC20Errors is an auto generated Go binding around an Ethereum contract. +type ZRC20Errors struct { + ZRC20ErrorsCaller // Read-only binding to the contract + ZRC20ErrorsTransactor // Write-only binding to the contract + ZRC20ErrorsFilterer // Log filterer for contract events +} + +// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20ErrorsSession struct { + Contract *ZRC20Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20ErrorsCallerSession struct { + Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20ErrorsTransactorSession struct { + Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20ErrorsRaw struct { + Contract *ZRC20Errors // Generic contract binding to access the raw methods on +} + +// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20ErrorsCallerRaw struct { + Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20ErrorsTransactorRaw struct { + Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { + contract, err := bindZRC20Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil +} + +// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { + contract, err := bindZRC20Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsCaller{contract: contract}, nil +} + +// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { + contract, err := bindZRC20Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20ErrorsTransactor{contract: contract}, nil +} + +// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. +func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { + contract, err := bindZRC20Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20ErrorsFilterer{contract: contract}, nil +} + +// bindZRC20Errors binds a generic wrapper to an already deployed contract. +func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/zrc20new.sol/zrc20new.go b/v2/pkg/zrc20new.sol/zrc20new.go new file mode 100644 index 00000000..aceb41d1 --- /dev/null +++ b/v2/pkg/zrc20new.sol/zrc20new.go @@ -0,0 +1,1831 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20new + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. +var ZRC20NewMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033", +} + +// ZRC20NewABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20NewMetaData.ABI instead. +var ZRC20NewABI = ZRC20NewMetaData.ABI + +// ZRC20NewBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZRC20NewMetaData.Bin instead. +var ZRC20NewBin = ZRC20NewMetaData.Bin + +// DeployZRC20New deploys a new Ethereum contract, binding an instance of ZRC20New to it. +func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20New, error) { + parsed, err := ZRC20NewMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20NewBin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil +} + +// ZRC20New is an auto generated Go binding around an Ethereum contract. +type ZRC20New struct { + ZRC20NewCaller // Read-only binding to the contract + ZRC20NewTransactor // Write-only binding to the contract + ZRC20NewFilterer // Log filterer for contract events +} + +// ZRC20NewCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20NewCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20NewTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20NewFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20NewSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20NewSession struct { + Contract *ZRC20New // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20NewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20NewCallerSession struct { + Contract *ZRC20NewCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20NewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20NewTransactorSession struct { + Contract *ZRC20NewTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20NewRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20NewRaw struct { + Contract *ZRC20New // Generic contract binding to access the raw methods on +} + +// ZRC20NewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20NewCallerRaw struct { + Contract *ZRC20NewCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20NewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20NewTransactorRaw struct { + Contract *ZRC20NewTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20New creates a new instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20New(address common.Address, backend bind.ContractBackend) (*ZRC20New, error) { + contract, err := bindZRC20New(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil +} + +// NewZRC20NewCaller creates a new read-only instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewCaller(address common.Address, caller bind.ContractCaller) (*ZRC20NewCaller, error) { + contract, err := bindZRC20New(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20NewCaller{contract: contract}, nil +} + +// NewZRC20NewTransactor creates a new write-only instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20NewTransactor, error) { + contract, err := bindZRC20New(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20NewTransactor{contract: contract}, nil +} + +// NewZRC20NewFilterer creates a new log filterer instance of ZRC20New, bound to a specific deployed contract. +func NewZRC20NewFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20NewFilterer, error) { + contract, err := bindZRC20New(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20NewFilterer{contract: contract}, nil +} + +// bindZRC20New binds a generic wrapper to an already deployed contract. +func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20NewMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20New *ZRC20NewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20New.Contract.ZRC20NewCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20New *ZRC20NewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20New *ZRC20NewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20New *ZRC20NewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20New.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20New *ZRC20NewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20New.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20New *ZRC20NewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20New.Contract.contract.Transact(opts, method, params...) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "CHAIN_ID") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) CHAINID() (*big.Int, error) { + return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +} + +// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. +// +// Solidity: function CHAIN_ID() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) CHAINID() (*big.Int, error) { + return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "COIN_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewSession) COINTYPE() (uint8, error) { + return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +} + +// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. +// +// Solidity: function COIN_TYPE() view returns(uint8) +func (_ZRC20New *ZRC20NewCallerSession) COINTYPE() (uint8, error) { + return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +} + +// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. +// +// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "GAS_LIMIT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) GASLIMIT() (*big.Int, error) { + return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +} + +// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// +// Solidity: function GAS_LIMIT() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) GASLIMIT() (*big.Int, error) { + return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// +// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +} + +// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// +// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// +// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) +func (_ZRC20New *ZRC20NewCallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewSession) Decimals() (uint8, error) { + return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ZRC20New *ZRC20NewCallerSession) Decimals() (uint8, error) { + return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewSession) Name() (string, error) { + return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ZRC20New *ZRC20NewCallerSession) Name() (string, error) { + return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewSession) Symbol() (string, error) { + return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ZRC20New *ZRC20NewCallerSession) Symbol() (string, error) { + return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewSession) TotalSupply() (*big.Int, error) { + return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ZRC20New *ZRC20NewCallerSession) TotalSupply() (*big.Int, error) { + return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { + var out []interface{} + err := _ZRC20New.contract.Call(opts, &out, "withdrawGasFee") + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +} + +// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. +// +// Solidity: function withdrawGasFee() view returns(address, uint256) +func (_ZRC20New *ZRC20NewCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "burn", amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "deposit", to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "transfer", recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "transferFrom", sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateGasLimit", gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +} + +// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. +// +// Solidity: function updateGasLimit(uint256 gasLimit) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +} + +// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. +// +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewTransactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "updateSystemContractAddress", addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +} + +// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. +// +// Solidity: function updateSystemContractAddress(address addr) returns() +func (_ZRC20New *ZRC20NewTransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.contract.Transact(opts, "withdraw", to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. +// +// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) +func (_ZRC20New *ZRC20NewTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +} + +// ZRC20NewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20New contract. +type ZRC20NewApprovalIterator struct { + Event *ZRC20NewApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewApproval represents a Approval event raised by the ZRC20New contract. +type ZRC20NewApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20NewApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ZRC20NewApprovalIterator{contract: _ZRC20New.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20NewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewApproval) + if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseApproval(log types.Log) (*ZRC20NewApproval, error) { + event := new(ZRC20NewApproval) + if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20New contract. +type ZRC20NewDepositIterator struct { + Event *ZRC20NewDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewDeposit represents a Deposit event raised by the ZRC20New contract. +type ZRC20NewDeposit struct { + From []byte + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20NewDepositIterator, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return &ZRC20NewDepositIterator{contract: _ZRC20New.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20NewDeposit, to []common.Address) (event.Subscription, error) { + + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Deposit", toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewDeposit) + if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. +// +// Solidity: event Deposit(bytes from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseDeposit(log types.Log) (*ZRC20NewDeposit, error) { + event := new(ZRC20NewDeposit) + if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20New contract. +type ZRC20NewTransferIterator struct { + Event *ZRC20NewTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewTransfer represents a Transfer event raised by the ZRC20New contract. +type ZRC20NewTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20NewTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ZRC20NewTransferIterator{contract: _ZRC20New.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20NewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewTransfer) + if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ZRC20New *ZRC20NewFilterer) ParseTransfer(log types.Log) (*ZRC20NewTransfer, error) { + event := new(ZRC20NewTransfer) + if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20New contract. +type ZRC20NewUpdatedGasLimitIterator struct { + Event *ZRC20NewUpdatedGasLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedGasLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedGasLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedGasLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20New contract. +type ZRC20NewUpdatedGasLimit struct { + GasLimit *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20NewUpdatedGasLimitIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedGasLimitIterator{contract: _ZRC20New.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedGasLimit) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedGasLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedGasLimit) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. +// +// Solidity: event UpdatedGasLimit(uint256 gasLimit) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20NewUpdatedGasLimit, error) { + event := new(ZRC20NewUpdatedGasLimit) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20New contract. +type ZRC20NewUpdatedProtocolFlatFeeIterator struct { + Event *ZRC20NewUpdatedProtocolFlatFee // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20New contract. +type ZRC20NewUpdatedProtocolFlatFee struct { + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20NewUpdatedProtocolFlatFeeIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedProtocolFlatFeeIterator{contract: _ZRC20New.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil +} + +// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedProtocolFlatFee) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedProtocolFlatFee) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. +// +// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20NewUpdatedProtocolFlatFee, error) { + event := new(ZRC20NewUpdatedProtocolFlatFee) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20New contract. +type ZRC20NewUpdatedSystemContractIterator struct { + Event *ZRC20NewUpdatedSystemContract // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewUpdatedSystemContract) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewUpdatedSystemContractIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewUpdatedSystemContractIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20New contract. +type ZRC20NewUpdatedSystemContract struct { + SystemContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20NewUpdatedSystemContractIterator, error) { + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return &ZRC20NewUpdatedSystemContractIterator{contract: _ZRC20New.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil +} + +// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedSystemContract) (event.Subscription, error) { + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedSystemContract") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewUpdatedSystemContract) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. +// +// Solidity: event UpdatedSystemContract(address systemContract) +func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20NewUpdatedSystemContract, error) { + event := new(ZRC20NewUpdatedSystemContract) + if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20NewWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20New contract. +type ZRC20NewWithdrawalIterator struct { + Event *ZRC20NewWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20NewWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20NewWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20NewWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20NewWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20NewWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20NewWithdrawal represents a Withdrawal event raised by the ZRC20New contract. +type ZRC20NewWithdrawal struct { + From common.Address + To []byte + Value *big.Int + GasFee *big.Int + ProtocolFlatFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20NewWithdrawalIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return &ZRC20NewWithdrawalIterator{contract: _ZRC20New.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20NewWithdrawal, from []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + + logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Withdrawal", fromRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20NewWithdrawal) + if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. +// +// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) +func (_ZRC20New *ZRC20NewFilterer) ParseWithdrawal(log types.Log) (*ZRC20NewWithdrawal, error) { + event := new(ZRC20NewWithdrawal) + if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/scripts/generate_go.sh b/v2/scripts/generate_go.sh new file mode 100755 index 00000000..f896618f --- /dev/null +++ b/v2/scripts/generate_go.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Define the input and output directories +ARTIFACTS_DIR="./out" +OUTPUT_DIR="./pkg" + +rm -rf $OUTPUT_DIR + +# Create the output directory if it doesn't exist +mkdir -p $OUTPUT_DIR + +# Initialize error counter +errors=0 + +# Function to process JSON files and generate Go bindings +process_file() { + local contract="$1" + local subdir="$2" + + # Check if the JSON file contains "abi" and "bytecode" properties + if ! jq 'has("abi") and has("bytecode")' "$contract" | grep -q 'true'; then + return + fi + + # Extract the contract name from the file name (without the .json extension) + contract_name=$(basename "$contract" .json) + contract_name_lowercase=$(echo "$contract_name" | tr '[:upper:]' '[:lower:]') + + # Define output subdirectory and create it if it doesn't exist + output_subdir="$OUTPUT_DIR/${subdir/@/}" + output_subdir_lowercase=$(echo "$output_subdir" | tr '[:upper:]' '[:lower:]') + mkdir -p "$output_subdir_lowercase" + + package_name=$(basename "${subdir/@/}" | cut -d'.' -f1 | tr '[:upper:]' '[:lower:]') + + # Generate the Go binding for the contract + echo "Compiling $contract_name..." + cat "$contract" | jq .abi > "$output_subdir_lowercase/$contract_name.abi" + cat "$contract" | jq .bytecode.object | tr -d '\"' > "$output_subdir_lowercase/$contract_name.bin" + abigen --abi "$output_subdir_lowercase/$contract_name.abi" --bin "$output_subdir_lowercase/$contract_name.bin" --pkg "$package_name" --type "$contract_name" --out "$output_subdir_lowercase/$contract_name_lowercase.go" > /dev/null 2>&1 + # Check if there were errors during the compilation + if [ $? -ne 0 ]; then + echo "Error: Failed to compile $contract_name" + errors=$((errors + 1)) + fi + + # Remove temporary .abi and .bin files + rm "$output_subdir_lowercase/$contract_name.abi" "$output_subdir_lowercase/$contract_name.bin" +} + +# Function to iterate through the artifacts directory +iterate_directory() { + local parent="$1" + local subdir="$2" + + for entry in "$parent"/*; do + if [ -d "$entry" ]; then + local new_subdir + if [ -z "$subdir" ]; then + new_subdir=$(basename "$entry") + else + new_subdir="$subdir/$(basename "$entry")" + fi + iterate_directory "$entry" "$new_subdir" + elif [ -f "$entry" ] && [ "${entry##*.}" = "json" ]; then + process_file "$entry" "$subdir" + fi + done +} + +echo -e "" + +iterate_directory "$ARTIFACTS_DIR" + +echo -e "" + +if [ $errors -eq 0 ]; then + echo "All contracts have been compiled successfully." +else + echo "There were $errors error(s) during the compilation process." +fi + +echo -e "" \ No newline at end of file diff --git a/v2/scripts/localnet/EvmCall.s.sol b/v2/scripts/localnet/EvmCall.s.sol index c8b142be..85a4fb70 100644 --- a/v2/scripts/localnet/EvmCall.s.sol +++ b/v2/scripts/localnet/EvmCall.s.sol @@ -1,5 +1,5 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; import "forge-std/Script.sol"; import "src/evm/GatewayEVM.sol"; diff --git a/v2/scripts/localnet/EvmDepositAndCall.s.sol b/v2/scripts/localnet/EvmDepositAndCall.s.sol index 284b010e..e44c3e88 100644 --- a/v2/scripts/localnet/EvmDepositAndCall.s.sol +++ b/v2/scripts/localnet/EvmDepositAndCall.s.sol @@ -1,5 +1,5 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; import "forge-std/Script.sol"; import "src/evm/GatewayEVM.sol"; diff --git a/v2/scripts/localnet/ZevmCall.s.sol b/v2/scripts/localnet/ZevmCall.s.sol index 544b90d6..f787f0b9 100644 --- a/v2/scripts/localnet/ZevmCall.s.sol +++ b/v2/scripts/localnet/ZevmCall.s.sol @@ -1,5 +1,5 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; import "forge-std/Script.sol"; import "src/zevm/GatewayZEVM.sol"; diff --git a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol index 2cec8a66..2db54f6d 100644 --- a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol +++ b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol @@ -1,5 +1,5 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; import "forge-std/Script.sol"; import "src/zevm/GatewayZEVM.sol"; diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20CustodyNew.sol index 963afa3d..66580925 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20CustodyNew.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./interfaces//IGatewayEVM.sol"; import "./interfaces/IERC20CustodyNew.sol"; diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index e69abb1b..b064154f 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./ZetaConnectorNewBase.sol"; import "./interfaces/IGatewayEVM.sol"; diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index 860c4f6d..38291ba1 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./ZetaConnectorNewBase.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorNewBase.sol index 7295ecde..62be9d83 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorNewBase.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index a9870e18..b16544d1 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./ZetaConnectorNewBase.sol"; import "./interfaces/IZetaNonEthNew.sol"; diff --git a/v2/src/evm/interfaces/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20CustodyNew.sol index e4015f98..27978071 100644 --- a/v2/src/evm/interfaces/IERC20CustodyNew.sol +++ b/v2/src/evm/interfaces/IERC20CustodyNew.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IERC20CustodyNewEvents /// @notice Interface for the events emitted by the ERC20 custody contract. diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index 424dbba7..75c41562 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IGatewayEVMEvents /// @notice Interface for the events emitted by the GatewayEVM contract. diff --git a/v2/src/evm/interfaces/IZetaConnector.sol b/v2/src/evm/interfaces/IZetaConnector.sol index b53a1eb7..0e7794df 100644 --- a/v2/src/evm/interfaces/IZetaConnector.sol +++ b/v2/src/evm/interfaces/IZetaConnector.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IZetaConnectorEvents /// @notice Interface for the events emitted by the ZetaConnector contracts. diff --git a/v2/src/evm/interfaces/IZetaNonEthNew.sol b/v2/src/evm/interfaces/IZetaNonEthNew.sol index 094debdf..11b9ee3c 100644 --- a/v2/src/evm/interfaces/IZetaNonEthNew.sol +++ b/v2/src/evm/interfaces/IZetaNonEthNew.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index 426475d8..834d4743 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./interfaces/IGatewayZEVM.sol"; import "./interfaces/IWZETA.sol"; diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol index 2b9a7ff6..307c07a2 100644 --- a/v2/src/zevm/interfaces/IGatewayZEVM.sol +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./zContract.sol"; diff --git a/v2/src/zevm/interfaces/ISystem.sol b/v2/src/zevm/interfaces/ISystem.sol index 6a9e4585..c91f2b4c 100644 --- a/v2/src/zevm/interfaces/ISystem.sol +++ b/v2/src/zevm/interfaces/ISystem.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title ISystem /// @notice Interface for the System contract. diff --git a/v2/src/zevm/interfaces/IWZETA.sol b/v2/src/zevm/interfaces/IWZETA.sol index 5c5c4b73..1e0ada56 100644 --- a/v2/src/zevm/interfaces/IWZETA.sol +++ b/v2/src/zevm/interfaces/IWZETA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IWETH9 /// @notice Interface for the Weth9 contract. diff --git a/v2/src/zevm/interfaces/IZRC20.sol b/v2/src/zevm/interfaces/IZRC20.sol index bb383621..8987c6ea 100644 --- a/v2/src/zevm/interfaces/IZRC20.sol +++ b/v2/src/zevm/interfaces/IZRC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IZRC20 /// @notice Interface for the ZRC20 token contract. diff --git a/v2/src/zevm/interfaces/zContract.sol b/v2/src/zevm/interfaces/zContract.sol index 4470994f..45013a93 100644 --- a/v2/src/zevm/interfaces/zContract.sol +++ b/v2/src/zevm/interfaces/zContract.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; struct zContext { bytes origin; diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index b1b6c5c0..b18bc34a 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index c9581dc6..bc447638 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index cb62da47..4a9b84c6 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index a19e0546..f6132b90 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index 9960da26..f03e4a81 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/ZetaConnectorNonNative.t.sol b/v2/test/ZetaConnectorNonNative.t.sol index 5aac070a..bc993b2d 100644 --- a/v2/test/ZetaConnectorNonNative.t.sol +++ b/v2/test/ZetaConnectorNonNative.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "forge-std/Test.sol"; import "forge-std/Vm.sol"; diff --git a/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol b/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol index f0d8b686..f44728ee 100644 --- a/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol +++ b/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/v2/test/fuzz/GatewayEVMEchidnaTest.sol b/v2/test/fuzz/GatewayEVMEchidnaTest.sol index 684c4d21..3cc8e56b 100644 --- a/v2/test/fuzz/GatewayEVMEchidnaTest.sol +++ b/v2/test/fuzz/GatewayEVMEchidnaTest.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index 7e910379..a56b941a 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; diff --git a/v2/test/utils/IReceiverEVM.sol b/v2/test/utils/IReceiverEVM.sol index 3d053d5e..3ed300f8 100644 --- a/v2/test/utils/IReceiverEVM.sol +++ b/v2/test/utils/IReceiverEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; /// @title IReceiverEVMEvents /// @notice Interface for the events emitted by the ReceiverEVM contract. diff --git a/v2/test/utils/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol index a0d49a4e..76d1272a 100644 --- a/v2/test/utils/ReceiverEVM.sol +++ b/v2/test/utils/ReceiverEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "./IReceiverEVM.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index 5398647c..4af26ed1 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "src/zevm/interfaces/IGatewayZEVM.sol"; diff --git a/v2/test/utils/SystemContract.sol b/v2/test/utils/SystemContract.sol index 59027a1e..f11e2af1 100644 --- a/v2/test/utils/SystemContract.sol +++ b/v2/test/utils/SystemContract.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "src/zevm/interfaces/IZRC20.sol"; import "src/zevm/interfaces/zContract.sol"; diff --git a/v2/test/utils/SystemContractMock.sol b/v2/test/utils/SystemContractMock.sol index 423f2502..446429e8 100644 --- a/v2/test/utils/SystemContractMock.sol +++ b/v2/test/utils/SystemContractMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "src/zevm/interfaces/IZRC20.sol"; import "src/zevm/interfaces/zContract.sol"; diff --git a/v2/test/utils/TestERC20.sol b/v2/test/utils/TestERC20.sol index 8bca78de..5712f7fb 100644 --- a/v2/test/utils/TestERC20.sol +++ b/v2/test/utils/TestERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; diff --git a/v2/test/utils/TestZContract.sol b/v2/test/utils/TestZContract.sol index c3f0837e..62003285 100644 --- a/v2/test/utils/TestZContract.sol +++ b/v2/test/utils/TestZContract.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "src/zevm/interfaces/zContract.sol"; diff --git a/v2/test/utils/WZETA.sol b/v2/test/utils/WZETA.sol index 21626b93..2ecb7047 100644 --- a/v2/test/utils/WZETA.sol +++ b/v2/test/utils/WZETA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; contract WETH9 { string public name = "Wrapped Ether"; diff --git a/v2/test/utils/ZRC20New.sol b/v2/test/utils/ZRC20New.sol index 7ff4cad8..f720db56 100644 --- a/v2/test/utils/ZRC20New.sol +++ b/v2/test/utils/ZRC20New.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; +pragma solidity 0.8.26; import "src/zevm/interfaces/ISystem.sol"; import "src/zevm/interfaces/IZRC20.sol"; diff --git a/v2/test/utils/Zeta.non-eth.sol b/v2/test/utils/Zeta.non-eth.sol index a420890d..31414d7c 100644 --- a/v2/test/utils/Zeta.non-eth.sol +++ b/v2/test/utils/Zeta.non-eth.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; diff --git a/v2/typechain-types/Address.ts b/v2/typechain-types/Address.ts new file mode 100644 index 00000000..7e78a495 --- /dev/null +++ b/v2/typechain-types/Address.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface AddressInterface extends Interface {} + +export interface Address extends BaseContract { + connect(runner?: ContractRunner | null): Address; + waitForDeployment(): Promise; + + interface: AddressInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/BeaconProxy.ts b/v2/typechain-types/BeaconProxy.ts new file mode 100644 index 00000000..4341e6c0 --- /dev/null +++ b/v2/typechain-types/BeaconProxy.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface BeaconProxyInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "BeaconUpgraded"): EventFragment; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface BeaconProxy extends BaseContract { + connect(runner?: ContractRunner | null): BeaconProxy; + waitForDeployment(): Promise; + + interface: BeaconProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + filters: { + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ContextUpgradeable.ts b/v2/typechain-types/ContextUpgradeable.ts new file mode 100644 index 00000000..bcdd7d0c --- /dev/null +++ b/v2/typechain-types/ContextUpgradeable.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + FunctionFragment, + Interface, + EventFragment, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface ContextUpgradeableInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ContextUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): ContextUpgradeable; + waitForDeployment(): Promise; + + interface: ContextUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC1967Proxy.ts b/v2/typechain-types/ERC1967Proxy.ts new file mode 100644 index 00000000..22888274 --- /dev/null +++ b/v2/typechain-types/ERC1967Proxy.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface ERC1967ProxyInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "Upgraded"): EventFragment; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC1967Proxy extends BaseContract { + connect(runner?: ContractRunner | null): ERC1967Proxy; + waitForDeployment(): Promise; + + interface: ERC1967ProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC1967Utils.ts b/v2/typechain-types/ERC1967Utils.ts new file mode 100644 index 00000000..3913b11a --- /dev/null +++ b/v2/typechain-types/ERC1967Utils.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface ERC1967UtilsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: "AdminChanged" | "BeaconUpgraded" | "Upgraded" + ): EventFragment; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC1967Utils extends BaseContract { + connect(runner?: ContractRunner | null): ERC1967Utils; + waitForDeployment(): Promise; + + interface: ERC1967UtilsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20.ts b/v2/typechain-types/ERC20.ts new file mode 100644 index 00000000..9d53a66f --- /dev/null +++ b/v2/typechain-types/ERC20.ts @@ -0,0 +1,286 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC20Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC20 extends BaseContract { + connect(runner?: ContractRunner | null): ERC20; + waitForDeployment(): Promise; + + interface: ERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20/IERC20.ts b/v2/typechain-types/ERC20/IERC20.ts new file mode 100644 index 00000000..21742c4d --- /dev/null +++ b/v2/typechain-types/ERC20/IERC20.ts @@ -0,0 +1,262 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC20Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC20 extends BaseContract { + connect(runner?: ContractRunner | null): IERC20; + waitForDeployment(): Promise; + + interface: IERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20/index.ts b/v2/typechain-types/ERC20/index.ts new file mode 100644 index 00000000..8312ccd9 --- /dev/null +++ b/v2/typechain-types/ERC20/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC20 } from "./IERC20"; diff --git a/v2/typechain-types/ERC20Burnable.ts b/v2/typechain-types/ERC20Burnable.ts new file mode 100644 index 00000000..e46049bc --- /dev/null +++ b/v2/typechain-types/ERC20Burnable.ts @@ -0,0 +1,313 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC20BurnableInterface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "burn" + | "burnFrom" + | "decimals" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "burnFrom", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC20Burnable extends BaseContract { + connect(runner?: ContractRunner | null): ERC20Burnable; + waitForDeployment(): Promise; + + interface: ERC20BurnableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burn: TypedContractMethod<[value: BigNumberish], [void], "nonpayable">; + + burnFrom: TypedContractMethod< + [account: AddressLike, value: BigNumberish], + [void], + "nonpayable" + >; + + decimals: TypedContractMethod<[], [bigint], "view">; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burn" + ): TypedContractMethod<[value: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "burnFrom" + ): TypedContractMethod< + [account: AddressLike, value: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20CustodyNew.ts b/v2/typechain-types/ERC20CustodyNew.ts new file mode 100644 index 00000000..1edff18a --- /dev/null +++ b/v2/typechain-types/ERC20CustodyNew.ts @@ -0,0 +1,312 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC20CustodyNewInterface extends Interface { + getFunction( + nameOrSignature: + | "gateway" + | "tssAddress" + | "withdraw" + | "withdrawAndCall" + | "withdrawAndRevert" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; + + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndRevert", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndRevert", + data: BytesLike + ): Result; +} + +export namespace WithdrawEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish + ]; + export type OutputTuple = [token: string, to: string, amount: bigint]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC20CustodyNew extends BaseContract { + connect(runner?: ContractRunner | null): ERC20CustodyNew; + waitForDeployment(): Promise; + + interface: ERC20CustodyNewInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + gateway: TypedContractMethod<[], [string], "view">; + + tssAddress: TypedContractMethod<[], [string], "view">; + + withdraw: TypedContractMethod< + [token: AddressLike, to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + withdrawAndRevert: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [token: AddressLike, to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndRevert" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20CustodyNewEchidnaTest.ts b/v2/typechain-types/ERC20CustodyNewEchidnaTest.ts new file mode 100644 index 00000000..57327a20 --- /dev/null +++ b/v2/typechain-types/ERC20CustodyNewEchidnaTest.ts @@ -0,0 +1,356 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC20CustodyNewEchidnaTestInterface extends Interface { + getFunction( + nameOrSignature: + | "echidnaCaller" + | "gateway" + | "testERC20" + | "testWithdrawAndCall" + | "tssAddress" + | "withdraw" + | "withdrawAndCall" + | "withdrawAndRevert" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; + + encodeFunctionData( + functionFragment: "echidnaCaller", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; + encodeFunctionData( + functionFragment: "testWithdrawAndCall", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndRevert", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "echidnaCaller", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "testWithdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndRevert", + data: BytesLike + ): Result; +} + +export namespace WithdrawEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish + ]; + export type OutputTuple = [token: string, to: string, amount: bigint]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC20CustodyNewEchidnaTest extends BaseContract { + connect(runner?: ContractRunner | null): ERC20CustodyNewEchidnaTest; + waitForDeployment(): Promise; + + interface: ERC20CustodyNewEchidnaTestInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + echidnaCaller: TypedContractMethod<[], [string], "view">; + + gateway: TypedContractMethod<[], [string], "view">; + + testERC20: TypedContractMethod<[], [string], "view">; + + testWithdrawAndCall: TypedContractMethod< + [to: AddressLike, amount: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + withdraw: TypedContractMethod< + [token: AddressLike, to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + withdrawAndRevert: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "echidnaCaller" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "testERC20" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "testWithdrawAndCall" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [token: AddressLike, to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndRevert" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/GatewayEVM.ts b/v2/typechain-types/GatewayEVM.ts new file mode 100644 index 00000000..7ab5fc9d --- /dev/null +++ b/v2/typechain-types/GatewayEVM.ts @@ -0,0 +1,829 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface GatewayEVMInterface extends Interface { + getFunction( + nameOrSignature: + | "UPGRADE_INTERFACE_VERSION" + | "call" + | "custody" + | "deposit(address)" + | "deposit(address,uint256,address)" + | "depositAndCall(address,bytes)" + | "depositAndCall(address,uint256,address,bytes)" + | "execute" + | "executeRevert" + | "executeWithERC20" + | "initialize" + | "owner" + | "proxiableUUID" + | "renounceOwnership" + | "revertWithERC20" + | "setConnector" + | "setCustody" + | "transferOwnership" + | "tssAddress" + | "upgradeToAndCall" + | "zetaConnector" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Call" + | "Deposit" + | "Executed" + | "ExecutedWithERC20" + | "Initialized" + | "OwnershipTransferred" + | "Reverted" + | "RevertedWithERC20" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "call", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "custody", values?: undefined): string; + encodeFunctionData( + functionFragment: "deposit(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "deposit(address,uint256,address)", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,bytes)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + values: [AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "revertWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setConnector", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setCustody", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "zetaConnector", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deposit(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deposit(address,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "executeWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revertWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "zetaConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, payload: string]; + export interface OutputObject { + sender: string; + receiver: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [ + sender: string, + receiver: string, + amount: bigint, + asset: string, + payload: string + ]; + export interface OutputObject { + sender: string; + receiver: string; + amount: bigint; + asset: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface GatewayEVM extends BaseContract { + connect(runner?: ContractRunner | null): GatewayEVM; + waitForDeployment(): Promise; + + interface: GatewayEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + call: TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + + custody: TypedContractMethod<[], [string], "view">; + + "deposit(address)": TypedContractMethod< + [receiver: AddressLike], + [void], + "payable" + >; + + "deposit(address,uint256,address)": TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + + "depositAndCall(address,bytes)": TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + + "depositAndCall(address,uint256,address,bytes)": TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + + execute: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + + executeRevert: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + + executeWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + initialize: TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + + owner: TypedContractMethod<[], [string], "view">; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + revertWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + setConnector: TypedContractMethod< + [_zetaConnector: AddressLike], + [void], + "nonpayable" + >; + + setCustody: TypedContractMethod< + [_custody: AddressLike], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + zetaConnector: TypedContractMethod<[], [string], "view">; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "custody" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "deposit(address)" + ): TypedContractMethod<[receiver: AddressLike], [void], "payable">; + getFunction( + nameOrSignature: "deposit(address,uint256,address)" + ): TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,bytes)" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,uint256,address,bytes)" + ): TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "executeWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "revertWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setConnector" + ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setCustody" + ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "zetaConnector" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Executed" + ): TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + getEvent( + key: "ExecutedWithERC20" + ): TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Reverted" + ): TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + getEvent( + key: "RevertedWithERC20" + ): TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "Call(address,address,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Deposit(address,address,uint256,address,bytes)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Executed(address,uint256,bytes)": TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + Executed: TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + + "ExecutedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + ExecutedWithERC20: TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Reverted(address,uint256,bytes)": TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + Reverted: TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + + "RevertedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + RevertedWithERC20: TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/GatewayEVMEchidnaTest.ts b/v2/typechain-types/GatewayEVMEchidnaTest.ts new file mode 100644 index 00000000..a79f5e1b --- /dev/null +++ b/v2/typechain-types/GatewayEVMEchidnaTest.ts @@ -0,0 +1,873 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface GatewayEVMEchidnaTestInterface extends Interface { + getFunction( + nameOrSignature: + | "UPGRADE_INTERFACE_VERSION" + | "call" + | "custody" + | "deposit(address)" + | "deposit(address,uint256,address)" + | "depositAndCall(address,bytes)" + | "depositAndCall(address,uint256,address,bytes)" + | "echidnaCaller" + | "execute" + | "executeRevert" + | "executeWithERC20" + | "initialize" + | "owner" + | "proxiableUUID" + | "renounceOwnership" + | "revertWithERC20" + | "setConnector" + | "setCustody" + | "testERC20" + | "testExecuteWithERC20" + | "transferOwnership" + | "tssAddress" + | "upgradeToAndCall" + | "zetaConnector" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Call" + | "Deposit" + | "Executed" + | "ExecutedWithERC20" + | "Initialized" + | "OwnershipTransferred" + | "Reverted" + | "RevertedWithERC20" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "call", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "custody", values?: undefined): string; + encodeFunctionData( + functionFragment: "deposit(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "deposit(address,uint256,address)", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,bytes)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + values: [AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "echidnaCaller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "revertWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setConnector", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setCustody", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; + encodeFunctionData( + functionFragment: "testExecuteWithERC20", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "zetaConnector", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deposit(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deposit(address,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "echidnaCaller", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "executeWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revertWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "testExecuteWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "zetaConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, payload: string]; + export interface OutputObject { + sender: string; + receiver: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [ + sender: string, + receiver: string, + amount: bigint, + asset: string, + payload: string + ]; + export interface OutputObject { + sender: string; + receiver: string; + amount: bigint; + asset: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface GatewayEVMEchidnaTest extends BaseContract { + connect(runner?: ContractRunner | null): GatewayEVMEchidnaTest; + waitForDeployment(): Promise; + + interface: GatewayEVMEchidnaTestInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + call: TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + + custody: TypedContractMethod<[], [string], "view">; + + "deposit(address)": TypedContractMethod< + [receiver: AddressLike], + [void], + "payable" + >; + + "deposit(address,uint256,address)": TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + + "depositAndCall(address,bytes)": TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + + "depositAndCall(address,uint256,address,bytes)": TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + + echidnaCaller: TypedContractMethod<[], [string], "view">; + + execute: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + + executeRevert: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + + executeWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + initialize: TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + + owner: TypedContractMethod<[], [string], "view">; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + revertWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + setConnector: TypedContractMethod< + [_zetaConnector: AddressLike], + [void], + "nonpayable" + >; + + setCustody: TypedContractMethod< + [_custody: AddressLike], + [void], + "nonpayable" + >; + + testERC20: TypedContractMethod<[], [string], "view">; + + testExecuteWithERC20: TypedContractMethod< + [to: AddressLike, amount: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + zetaConnector: TypedContractMethod<[], [string], "view">; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "custody" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "deposit(address)" + ): TypedContractMethod<[receiver: AddressLike], [void], "payable">; + getFunction( + nameOrSignature: "deposit(address,uint256,address)" + ): TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,bytes)" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,uint256,address,bytes)" + ): TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "echidnaCaller" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "executeWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "revertWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setConnector" + ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setCustody" + ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "testERC20" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "testExecuteWithERC20" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "zetaConnector" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Executed" + ): TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + getEvent( + key: "ExecutedWithERC20" + ): TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Reverted" + ): TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + getEvent( + key: "RevertedWithERC20" + ): TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "Call(address,address,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Deposit(address,address,uint256,address,bytes)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Executed(address,uint256,bytes)": TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + Executed: TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + + "ExecutedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + ExecutedWithERC20: TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Reverted(address,uint256,bytes)": TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + Reverted: TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + + "RevertedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + RevertedWithERC20: TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/GatewayEVMUpgradeTest.ts b/v2/typechain-types/GatewayEVMUpgradeTest.ts new file mode 100644 index 00000000..2f62b00b --- /dev/null +++ b/v2/typechain-types/GatewayEVMUpgradeTest.ts @@ -0,0 +1,866 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface GatewayEVMUpgradeTestInterface extends Interface { + getFunction( + nameOrSignature: + | "UPGRADE_INTERFACE_VERSION" + | "call" + | "custody" + | "deposit(address)" + | "deposit(address,uint256,address)" + | "depositAndCall(address,bytes)" + | "depositAndCall(address,uint256,address,bytes)" + | "execute" + | "executeRevert" + | "executeWithERC20" + | "initialize" + | "owner" + | "proxiableUUID" + | "renounceOwnership" + | "revertWithERC20" + | "setConnector" + | "setCustody" + | "transferOwnership" + | "tssAddress" + | "upgradeToAndCall" + | "zetaConnector" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Call" + | "Deposit" + | "Executed" + | "ExecutedV2" + | "ExecutedWithERC20" + | "Initialized" + | "OwnershipTransferred" + | "Reverted" + | "RevertedWithERC20" + | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "call", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "custody", values?: undefined): string; + encodeFunctionData( + functionFragment: "deposit(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "deposit(address,uint256,address)", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,bytes)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + values: [AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "revertWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setConnector", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setCustody", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "zetaConnector", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "custody", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deposit(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deposit(address,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "executeWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revertWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "zetaConnector", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, payload: string]; + export interface OutputObject { + sender: string; + receiver: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [ + sender: string, + receiver: string, + amount: bigint, + asset: string, + payload: string + ]; + export interface OutputObject { + sender: string; + receiver: string; + amount: bigint; + asset: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedV2Event { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface GatewayEVMUpgradeTest extends BaseContract { + connect(runner?: ContractRunner | null): GatewayEVMUpgradeTest; + waitForDeployment(): Promise; + + interface: GatewayEVMUpgradeTestInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + call: TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + + custody: TypedContractMethod<[], [string], "view">; + + "deposit(address)": TypedContractMethod< + [receiver: AddressLike], + [void], + "payable" + >; + + "deposit(address,uint256,address)": TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + + "depositAndCall(address,bytes)": TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + + "depositAndCall(address,uint256,address,bytes)": TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + + execute: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + + executeRevert: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + + executeWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + initialize: TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + + owner: TypedContractMethod<[], [string], "view">; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + revertWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + setConnector: TypedContractMethod< + [_zetaConnector: AddressLike], + [void], + "nonpayable" + >; + + setCustody: TypedContractMethod< + [_custody: AddressLike], + [void], + "nonpayable" + >; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + zetaConnector: TypedContractMethod<[], [string], "view">; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "custody" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "deposit(address)" + ): TypedContractMethod<[receiver: AddressLike], [void], "payable">; + getFunction( + nameOrSignature: "deposit(address,uint256,address)" + ): TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,bytes)" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,uint256,address,bytes)" + ): TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "executeWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod< + [_tssAddress: AddressLike, _zetaToken: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "revertWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setConnector" + ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setCustody" + ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "zetaConnector" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Executed" + ): TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + getEvent( + key: "ExecutedV2" + ): TypedContractEvent< + ExecutedV2Event.InputTuple, + ExecutedV2Event.OutputTuple, + ExecutedV2Event.OutputObject + >; + getEvent( + key: "ExecutedWithERC20" + ): TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Reverted" + ): TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + getEvent( + key: "RevertedWithERC20" + ): TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "Call(address,address,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Deposit(address,address,uint256,address,bytes)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Executed(address,uint256,bytes)": TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + Executed: TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + + "ExecutedV2(address,uint256,bytes)": TypedContractEvent< + ExecutedV2Event.InputTuple, + ExecutedV2Event.OutputTuple, + ExecutedV2Event.OutputObject + >; + ExecutedV2: TypedContractEvent< + ExecutedV2Event.InputTuple, + ExecutedV2Event.OutputTuple, + ExecutedV2Event.OutputObject + >; + + "ExecutedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + ExecutedWithERC20: TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Reverted(address,uint256,bytes)": TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + Reverted: TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + + "RevertedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + RevertedWithERC20: TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/GatewayZEVM.ts b/v2/typechain-types/GatewayZEVM.ts new file mode 100644 index 00000000..80069cc1 --- /dev/null +++ b/v2/typechain-types/GatewayZEVM.ts @@ -0,0 +1,732 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export type RevertContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type RevertContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface GatewayZEVMInterface extends Interface { + getFunction( + nameOrSignature: + | "FUNGIBLE_MODULE_ADDRESS" + | "UPGRADE_INTERFACE_VERSION" + | "call" + | "deposit" + | "depositAndCall((bytes,address,uint256),uint256,address,bytes)" + | "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)" + | "depositAndRevert" + | "execute" + | "executeRevert" + | "initialize" + | "owner" + | "proxiableUUID" + | "renounceOwnership" + | "transferOwnership" + | "upgradeToAndCall" + | "withdraw(bytes,uint256,address)" + | "withdraw(uint256)" + | "withdrawAndCall(uint256,bytes)" + | "withdrawAndCall(bytes,uint256,address,bytes)" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Call" + | "Initialized" + | "OwnershipTransferred" + | "Upgraded" + | "Withdrawal" + ): EventFragment; + + encodeFunctionData( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "call", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", + values: [ZContextStruct, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", + values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndRevert", + values: [ + RevertContextStruct, + AddressLike, + BigNumberish, + AddressLike, + BytesLike + ] + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [ + RevertContextStruct, + AddressLike, + BigNumberish, + AddressLike, + BytesLike + ] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdraw(bytes,uint256,address)", + values: [BytesLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "withdraw(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall(uint256,bytes)", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", + values: [BytesLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdraw(bytes,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdraw(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall(uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: BytesLike, + message: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, message: string]; + export interface OutputObject { + sender: string; + receiver: string; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [ + from: AddressLike, + zrc20: AddressLike, + to: BytesLike, + value: BigNumberish, + gasfee: BigNumberish, + protocolFlatFee: BigNumberish, + message: BytesLike + ]; + export type OutputTuple = [ + from: string, + zrc20: string, + to: string, + value: bigint, + gasfee: bigint, + protocolFlatFee: bigint, + message: string + ]; + export interface OutputObject { + from: string; + zrc20: string; + to: string; + value: bigint; + gasfee: bigint; + protocolFlatFee: bigint; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface GatewayZEVM extends BaseContract { + connect(runner?: ContractRunner | null): GatewayZEVM; + waitForDeployment(): Promise; + + interface: GatewayZEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + call: TypedContractMethod< + [receiver: BytesLike, message: BytesLike], + [void], + "nonpayable" + >; + + deposit: TypedContractMethod< + [zrc20: AddressLike, amount: BigNumberish, target: AddressLike], + [void], + "nonpayable" + >; + + "depositAndCall((bytes,address,uint256),uint256,address,bytes)": TypedContractMethod< + [ + context: ZContextStruct, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + depositAndRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + execute: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + executeRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + initialize: TypedContractMethod< + [_zetaToken: AddressLike], + [void], + "nonpayable" + >; + + owner: TypedContractMethod<[], [string], "view">; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + "withdraw(bytes,uint256,address)": TypedContractMethod< + [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + + "withdraw(uint256)": TypedContractMethod< + [amount: BigNumberish], + [void], + "nonpayable" + >; + + "withdrawAndCall(uint256,bytes)": TypedContractMethod< + [amount: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; + + "withdrawAndCall(bytes,uint256,address,bytes)": TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: BytesLike, message: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod< + [zrc20: AddressLike, amount: BigNumberish, target: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall((bytes,address,uint256),uint256,address,bytes)" + ): TypedContractMethod< + [ + context: ZContextStruct, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod<[_zetaToken: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "withdraw(bytes,uint256,address)" + ): TypedContractMethod< + [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw(uint256)" + ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "withdrawAndCall(uint256,bytes)" + ): TypedContractMethod< + [amount: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall(bytes,uint256,address,bytes)" + ): TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Call(address,bytes,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IBeacon.ts b/v2/typechain-types/IBeacon.ts new file mode 100644 index 00000000..225d2cdc --- /dev/null +++ b/v2/typechain-types/IBeacon.ts @@ -0,0 +1,90 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IBeaconInterface extends Interface { + getFunction(nameOrSignature: "implementation"): FunctionFragment; + + encodeFunctionData( + functionFragment: "implementation", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "implementation", + data: BytesLike + ): Result; +} + +export interface IBeacon extends BaseContract { + connect(runner?: ContractRunner | null): IBeacon; + waitForDeployment(): Promise; + + interface: IBeaconInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + implementation: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "implementation" + ): TypedContractMethod<[], [string], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/IERC165.ts b/v2/typechain-types/IERC165.ts new file mode 100644 index 00000000..f51bc2de --- /dev/null +++ b/v2/typechain-types/IERC165.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IERC165Interface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export interface IERC165 extends BaseContract { + connect(runner?: ContractRunner | null): IERC165; + waitForDeployment(): Promise; + + interface: IERC165Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceID: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceID: BytesLike], [boolean], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/IERC1967.ts b/v2/typechain-types/IERC1967.ts new file mode 100644 index 00000000..9000613f --- /dev/null +++ b/v2/typechain-types/IERC1967.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface IERC1967Interface extends Interface { + getEvent( + nameOrSignatureOrTopic: "AdminChanged" | "BeaconUpgraded" | "Upgraded" + ): EventFragment; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC1967 extends BaseContract { + connect(runner?: ContractRunner | null): IERC1967; + waitForDeployment(): Promise; + + interface: IERC1967Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC20.ts b/v2/typechain-types/IERC20.ts new file mode 100644 index 00000000..783ad436 --- /dev/null +++ b/v2/typechain-types/IERC20.ts @@ -0,0 +1,286 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IERC20Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC20 extends BaseContract { + connect(runner?: ContractRunner | null): IERC20; + waitForDeployment(): Promise; + + interface: IERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts new file mode 100644 index 00000000..3abacff5 --- /dev/null +++ b/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IERC20CustodyNewErrorsInterface extends Interface {} + +export interface IERC20CustodyNewErrors extends BaseContract { + connect(runner?: ContractRunner | null): IERC20CustodyNewErrors; + waitForDeployment(): Promise; + + interface: IERC20CustodyNewErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts new file mode 100644 index 00000000..60ffe056 --- /dev/null +++ b/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts @@ -0,0 +1,201 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface IERC20CustodyNewEventsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; +} + +export namespace WithdrawEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish + ]; + export type OutputTuple = [token: string, to: string, amount: bigint]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC20CustodyNewEvents extends BaseContract { + connect(runner?: ContractRunner | null): IERC20CustodyNewEvents; + waitForDeployment(): Promise; + + interface: IERC20CustodyNewEventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC20CustodyNew.sol/index.ts b/v2/typechain-types/IERC20CustodyNew.sol/index.ts new file mode 100644 index 00000000..8106a206 --- /dev/null +++ b/v2/typechain-types/IERC20CustodyNew.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC20CustodyNewErrors } from "./IERC20CustodyNewErrors"; +export type { IERC20CustodyNewEvents } from "./IERC20CustodyNewEvents"; diff --git a/v2/typechain-types/IERC20Metadata.ts b/v2/typechain-types/IERC20Metadata.ts new file mode 100644 index 00000000..c99517a9 --- /dev/null +++ b/v2/typechain-types/IERC20Metadata.ts @@ -0,0 +1,286 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IERC20MetadataInterface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC20Metadata extends BaseContract { + connect(runner?: ContractRunner | null): IERC20Metadata; + waitForDeployment(): Promise; + + interface: IERC20MetadataInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC20Permit.ts b/v2/typechain-types/IERC20Permit.ts new file mode 100644 index 00000000..9d1f1b3d --- /dev/null +++ b/v2/typechain-types/IERC20Permit.ts @@ -0,0 +1,143 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IERC20PermitInterface extends Interface { + getFunction( + nameOrSignature: "DOMAIN_SEPARATOR" | "nonces" | "permit" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "nonces", values: [AddressLike]): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + AddressLike, + AddressLike, + BigNumberish, + BigNumberish, + BigNumberish, + BytesLike, + BytesLike + ] + ): string; + + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; +} + +export interface IERC20Permit extends BaseContract { + connect(runner?: ContractRunner | null): IERC20Permit; + waitForDeployment(): Promise; + + interface: IERC20PermitInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DOMAIN_SEPARATOR: TypedContractMethod<[], [string], "view">; + + nonces: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + + permit: TypedContractMethod< + [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DOMAIN_SEPARATOR" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "nonces" + ): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "permit" + ): TypedContractMethod< + [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IERC721.sol/IERC721.ts b/v2/typechain-types/IERC721.sol/IERC721.ts new file mode 100644 index 00000000..7afcd4d1 --- /dev/null +++ b/v2/typechain-types/IERC721.sol/IERC721.ts @@ -0,0 +1,397 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC721Interface extends Interface { + getFunction( + nameOrSignature: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "transferFrom" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "ApprovalForAll" | "Transfer" + ): EventFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + _owner: AddressLike, + _approved: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [ + _owner: string, + _approved: string, + _tokenId: bigint + ]; + export interface OutputObject { + _owner: string; + _approved: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ApprovalForAllEvent { + export type InputTuple = [ + _owner: AddressLike, + _operator: AddressLike, + _approved: boolean + ]; + export type OutputTuple = [ + _owner: string, + _operator: string, + _approved: boolean + ]; + export interface OutputObject { + _owner: string; + _operator: string; + _approved: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [_from: string, _to: string, _tokenId: bigint]; + export interface OutputObject { + _from: string; + _to: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC721 extends BaseContract { + connect(runner?: ContractRunner | null): IERC721; + waitForDeployment(): Promise; + + interface: IERC721Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + approve: TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + balanceOf: TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + + getApproved: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + isApprovedForAll: TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + + ownerOf: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + "safeTransferFrom(address,address,uint256)": TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + "safeTransferFrom(address,address,uint256,bytes)": TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + + setApprovalForAll: TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceID: BytesLike], + [boolean], + "view" + >; + + transferFrom: TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getApproved" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "isApprovedForAll" + ): TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "ownerOf" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256)" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256,bytes)" + ): TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setApprovalForAll" + ): TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceID: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "ApprovalForAll" + ): TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "ApprovalForAll(address,address,bool)": TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + ApprovalForAll: TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC721.sol/IERC721Enumerable.ts b/v2/typechain-types/IERC721.sol/IERC721Enumerable.ts new file mode 100644 index 00000000..0331b48b --- /dev/null +++ b/v2/typechain-types/IERC721.sol/IERC721Enumerable.ts @@ -0,0 +1,447 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC721EnumerableInterface extends Interface { + getFunction( + nameOrSignature: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "tokenByIndex" + | "tokenOfOwnerByIndex" + | "totalSupply" + | "transferFrom" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "ApprovalForAll" | "Transfer" + ): EventFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "tokenByIndex", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "tokenOfOwnerByIndex", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tokenByIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tokenOfOwnerByIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + _owner: AddressLike, + _approved: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [ + _owner: string, + _approved: string, + _tokenId: bigint + ]; + export interface OutputObject { + _owner: string; + _approved: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ApprovalForAllEvent { + export type InputTuple = [ + _owner: AddressLike, + _operator: AddressLike, + _approved: boolean + ]; + export type OutputTuple = [ + _owner: string, + _operator: string, + _approved: boolean + ]; + export interface OutputObject { + _owner: string; + _operator: string; + _approved: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [_from: string, _to: string, _tokenId: bigint]; + export interface OutputObject { + _from: string; + _to: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC721Enumerable extends BaseContract { + connect(runner?: ContractRunner | null): IERC721Enumerable; + waitForDeployment(): Promise; + + interface: IERC721EnumerableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + approve: TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + balanceOf: TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + + getApproved: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + isApprovedForAll: TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + + ownerOf: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + "safeTransferFrom(address,address,uint256)": TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + "safeTransferFrom(address,address,uint256,bytes)": TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + + setApprovalForAll: TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceID: BytesLike], + [boolean], + "view" + >; + + tokenByIndex: TypedContractMethod<[_index: BigNumberish], [bigint], "view">; + + tokenOfOwnerByIndex: TypedContractMethod< + [_owner: AddressLike, _index: BigNumberish], + [bigint], + "view" + >; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transferFrom: TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getApproved" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "isApprovedForAll" + ): TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "ownerOf" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256)" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256,bytes)" + ): TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setApprovalForAll" + ): TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceID: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "tokenByIndex" + ): TypedContractMethod<[_index: BigNumberish], [bigint], "view">; + getFunction( + nameOrSignature: "tokenOfOwnerByIndex" + ): TypedContractMethod< + [_owner: AddressLike, _index: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "ApprovalForAll" + ): TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "ApprovalForAll(address,address,bool)": TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + ApprovalForAll: TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC721.sol/IERC721Metadata.ts b/v2/typechain-types/IERC721.sol/IERC721Metadata.ts new file mode 100644 index 00000000..d9ccf0f0 --- /dev/null +++ b/v2/typechain-types/IERC721.sol/IERC721Metadata.ts @@ -0,0 +1,424 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC721MetadataInterface extends Interface { + getFunction( + nameOrSignature: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "name" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "symbol" + | "tokenURI" + | "transferFrom" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "ApprovalForAll" | "Transfer" + ): EventFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + _owner: AddressLike, + _approved: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [ + _owner: string, + _approved: string, + _tokenId: bigint + ]; + export interface OutputObject { + _owner: string; + _approved: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ApprovalForAllEvent { + export type InputTuple = [ + _owner: AddressLike, + _operator: AddressLike, + _approved: boolean + ]; + export type OutputTuple = [ + _owner: string, + _operator: string, + _approved: boolean + ]; + export interface OutputObject { + _owner: string; + _operator: string; + _approved: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [_from: string, _to: string, _tokenId: bigint]; + export interface OutputObject { + _from: string; + _to: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IERC721Metadata extends BaseContract { + connect(runner?: ContractRunner | null): IERC721Metadata; + waitForDeployment(): Promise; + + interface: IERC721MetadataInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + approve: TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + balanceOf: TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + + getApproved: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + isApprovedForAll: TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + + name: TypedContractMethod<[], [string], "view">; + + ownerOf: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + "safeTransferFrom(address,address,uint256)": TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + "safeTransferFrom(address,address,uint256,bytes)": TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + + setApprovalForAll: TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceID: BytesLike], + [boolean], + "view" + >; + + symbol: TypedContractMethod<[], [string], "view">; + + tokenURI: TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + + transferFrom: TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [_approved: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[_owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getApproved" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "isApprovedForAll" + ): TypedContractMethod< + [_owner: AddressLike, _operator: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "ownerOf" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256)" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256,bytes)" + ): TypedContractMethod< + [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish, + data: BytesLike + ], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setApprovalForAll" + ): TypedContractMethod< + [_operator: AddressLike, _approved: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceID: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tokenURI" + ): TypedContractMethod<[_tokenId: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [_from: AddressLike, _to: AddressLike, _tokenId: BigNumberish], + [void], + "payable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "ApprovalForAll" + ): TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "ApprovalForAll(address,address,bool)": TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + ApprovalForAll: TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IERC721.sol/IERC721TokenReceiver.ts b/v2/typechain-types/IERC721.sol/IERC721TokenReceiver.ts new file mode 100644 index 00000000..1ae28171 --- /dev/null +++ b/v2/typechain-types/IERC721.sol/IERC721TokenReceiver.ts @@ -0,0 +1,110 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC721TokenReceiverInterface extends Interface { + getFunction(nameOrSignature: "onERC721Received"): FunctionFragment; + + encodeFunctionData( + functionFragment: "onERC721Received", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; +} + +export interface IERC721TokenReceiver extends BaseContract { + connect(runner?: ContractRunner | null): IERC721TokenReceiver; + waitForDeployment(): Promise; + + interface: IERC721TokenReceiverInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onERC721Received: TypedContractMethod< + [ + _operator: AddressLike, + _from: AddressLike, + _tokenId: BigNumberish, + _data: BytesLike + ], + [string], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onERC721Received" + ): TypedContractMethod< + [ + _operator: AddressLike, + _from: AddressLike, + _tokenId: BigNumberish, + _data: BytesLike + ], + [string], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IERC721.sol/index.ts b/v2/typechain-types/IERC721.sol/index.ts new file mode 100644 index 00000000..8df44aee --- /dev/null +++ b/v2/typechain-types/IERC721.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC721 } from "./IERC721"; +export type { IERC721Enumerable } from "./IERC721Enumerable"; +export type { IERC721Metadata } from "./IERC721Metadata"; +export type { IERC721TokenReceiver } from "./IERC721TokenReceiver"; diff --git a/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts new file mode 100644 index 00000000..6ee17425 --- /dev/null +++ b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts @@ -0,0 +1,161 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IGatewayEVMInterface extends Interface { + getFunction( + nameOrSignature: "execute" | "executeWithERC20" | "revertWithERC20" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "execute", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "executeWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "revertWithERC20", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeWithERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revertWithERC20", + data: BytesLike + ): Result; +} + +export interface IGatewayEVM extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayEVM; + waitForDeployment(): Promise; + + interface: IGatewayEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + execute: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + + executeWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + revertWithERC20: TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [string], + "payable" + >; + getFunction( + nameOrSignature: "executeWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revertWithERC20" + ): TypedContractMethod< + [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMErrors.ts b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMErrors.ts new file mode 100644 index 00000000..d20bea9a --- /dev/null +++ b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IGatewayEVMErrorsInterface extends Interface {} + +export interface IGatewayEVMErrors extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayEVMErrors; + waitForDeployment(): Promise; + + interface: IGatewayEVMErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMEvents.ts b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMEvents.ts new file mode 100644 index 00000000..0dbee710 --- /dev/null +++ b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVMEvents.ts @@ -0,0 +1,325 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface IGatewayEVMEventsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: + | "Call" + | "Deposit" + | "Executed" + | "ExecutedWithERC20" + | "Reverted" + | "RevertedWithERC20" + ): EventFragment; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, payload: string]; + export interface OutputObject { + sender: string; + receiver: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ]; + export type OutputTuple = [ + sender: string, + receiver: string, + amount: bigint, + asset: string, + payload: string + ]; + export interface OutputObject { + sender: string; + receiver: string; + amount: bigint; + asset: string; + payload: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ExecutedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedEvent { + export type InputTuple = [ + destination: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [destination: string, value: bigint, data: string]; + export interface OutputObject { + destination: string; + value: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RevertedWithERC20Event { + export type InputTuple = [ + token: AddressLike, + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [ + token: string, + to: string, + amount: bigint, + data: string + ]; + export interface OutputObject { + token: string; + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IGatewayEVMEvents extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayEVMEvents; + waitForDeployment(): Promise; + + interface: IGatewayEVMEventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Executed" + ): TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + getEvent( + key: "ExecutedWithERC20" + ): TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + getEvent( + key: "Reverted" + ): TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + getEvent( + key: "RevertedWithERC20" + ): TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + + filters: { + "Call(address,address,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Deposit(address,address,uint256,address,bytes)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Executed(address,uint256,bytes)": TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + Executed: TypedContractEvent< + ExecutedEvent.InputTuple, + ExecutedEvent.OutputTuple, + ExecutedEvent.OutputObject + >; + + "ExecutedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + ExecutedWithERC20: TypedContractEvent< + ExecutedWithERC20Event.InputTuple, + ExecutedWithERC20Event.OutputTuple, + ExecutedWithERC20Event.OutputObject + >; + + "Reverted(address,uint256,bytes)": TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + Reverted: TypedContractEvent< + RevertedEvent.InputTuple, + RevertedEvent.OutputTuple, + RevertedEvent.OutputObject + >; + + "RevertedWithERC20(address,address,uint256,bytes)": TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + RevertedWithERC20: TypedContractEvent< + RevertedWithERC20Event.InputTuple, + RevertedWithERC20Event.OutputTuple, + RevertedWithERC20Event.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IGatewayEVM.sol/Revertable.ts b/v2/typechain-types/IGatewayEVM.sol/Revertable.ts new file mode 100644 index 00000000..c21600a5 --- /dev/null +++ b/v2/typechain-types/IGatewayEVM.sol/Revertable.ts @@ -0,0 +1,84 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface RevertableInterface extends Interface { + getFunction(nameOrSignature: "onRevert"): FunctionFragment; + + encodeFunctionData(functionFragment: "onRevert", values: [BytesLike]): string; + + decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; +} + +export interface Revertable extends BaseContract { + connect(runner?: ContractRunner | null): Revertable; + waitForDeployment(): Promise; + + interface: RevertableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onRevert: TypedContractMethod<[data: BytesLike], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onRevert" + ): TypedContractMethod<[data: BytesLike], [void], "nonpayable">; + + filters: {}; +} diff --git a/v2/typechain-types/IGatewayEVM.sol/index.ts b/v2/typechain-types/IGatewayEVM.sol/index.ts new file mode 100644 index 00000000..52962cd9 --- /dev/null +++ b/v2/typechain-types/IGatewayEVM.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IGatewayEVM } from "./IGatewayEVM"; +export type { IGatewayEVMErrors } from "./IGatewayEVMErrors"; +export type { IGatewayEVMEvents } from "./IGatewayEVMEvents"; +export type { Revertable } from "./Revertable"; diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts new file mode 100644 index 00000000..da6ceb42 --- /dev/null +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts @@ -0,0 +1,247 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface IGatewayZEVMInterface extends Interface { + getFunction( + nameOrSignature: + | "call" + | "deposit" + | "depositAndCall" + | "execute" + | "withdraw" + | "withdrawAndCall" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "call", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall", + values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "execute", + values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BytesLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [BytesLike, BigNumberish, AddressLike, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "depositAndCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; +} + +export interface IGatewayZEVM extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayZEVM; + waitForDeployment(): Promise; + + interface: IGatewayZEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + call: TypedContractMethod< + [receiver: BytesLike, message: BytesLike], + [void], + "nonpayable" + >; + + deposit: TypedContractMethod< + [zrc20: AddressLike, amount: BigNumberish, target: AddressLike], + [void], + "nonpayable" + >; + + depositAndCall: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + execute: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + withdraw: TypedContractMethod< + [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: BytesLike, message: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod< + [zrc20: AddressLike, amount: BigNumberish, target: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "execute" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMErrors.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMErrors.ts new file mode 100644 index 00000000..c15ddae9 --- /dev/null +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IGatewayZEVMErrorsInterface extends Interface {} + +export interface IGatewayZEVMErrors extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayZEVMErrors; + waitForDeployment(): Promise; + + interface: IGatewayZEVMErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts new file mode 100644 index 00000000..6379cc14 --- /dev/null +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts @@ -0,0 +1,165 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface IGatewayZEVMEventsInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "Call" | "Withdrawal"): EventFragment; +} + +export namespace CallEvent { + export type InputTuple = [ + sender: AddressLike, + receiver: BytesLike, + message: BytesLike + ]; + export type OutputTuple = [sender: string, receiver: string, message: string]; + export interface OutputObject { + sender: string; + receiver: string; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [ + from: AddressLike, + zrc20: AddressLike, + to: BytesLike, + value: BigNumberish, + gasfee: BigNumberish, + protocolFlatFee: BigNumberish, + message: BytesLike + ]; + export type OutputTuple = [ + from: string, + zrc20: string, + to: string, + value: bigint, + gasfee: bigint, + protocolFlatFee: bigint, + message: string + ]; + export interface OutputObject { + from: string; + zrc20: string; + to: string; + value: bigint; + gasfee: bigint; + protocolFlatFee: bigint; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IGatewayZEVMEvents extends BaseContract { + connect(runner?: ContractRunner | null): IGatewayZEVMEvents; + waitForDeployment(): Promise; + + interface: IGatewayZEVMEventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Call" + ): TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Call(address,bytes,bytes)": TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + Call: TypedContractEvent< + CallEvent.InputTuple, + CallEvent.OutputTuple, + CallEvent.OutputObject + >; + + "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IGatewayZEVM.sol/index.ts b/v2/typechain-types/IGatewayZEVM.sol/index.ts new file mode 100644 index 00000000..736bdfc6 --- /dev/null +++ b/v2/typechain-types/IGatewayZEVM.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IGatewayZEVM } from "./IGatewayZEVM"; +export type { IGatewayZEVMErrors } from "./IGatewayZEVMErrors"; +export type { IGatewayZEVMEvents } from "./IGatewayZEVMEvents"; diff --git a/v2/typechain-types/IMulticall3.ts b/v2/typechain-types/IMulticall3.ts new file mode 100644 index 00000000..3624a658 --- /dev/null +++ b/v2/typechain-types/IMulticall3.ts @@ -0,0 +1,416 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace IMulticall3 { + export type CallStruct = { target: AddressLike; callData: BytesLike }; + + export type CallStructOutput = [target: string, callData: string] & { + target: string; + callData: string; + }; + + export type Call3Struct = { + target: AddressLike; + allowFailure: boolean; + callData: BytesLike; + }; + + export type Call3StructOutput = [ + target: string, + allowFailure: boolean, + callData: string + ] & { target: string; allowFailure: boolean; callData: string }; + + export type ResultStruct = { success: boolean; returnData: BytesLike }; + + export type ResultStructOutput = [success: boolean, returnData: string] & { + success: boolean; + returnData: string; + }; + + export type Call3ValueStruct = { + target: AddressLike; + allowFailure: boolean; + value: BigNumberish; + callData: BytesLike; + }; + + export type Call3ValueStructOutput = [ + target: string, + allowFailure: boolean, + value: bigint, + callData: string + ] & { + target: string; + allowFailure: boolean; + value: bigint; + callData: string; + }; +} + +export interface IMulticall3Interface extends Interface { + getFunction( + nameOrSignature: + | "aggregate" + | "aggregate3" + | "aggregate3Value" + | "blockAndAggregate" + | "getBasefee" + | "getBlockHash" + | "getBlockNumber" + | "getChainId" + | "getCurrentBlockCoinbase" + | "getCurrentBlockDifficulty" + | "getCurrentBlockGasLimit" + | "getCurrentBlockTimestamp" + | "getEthBalance" + | "getLastBlockHash" + | "tryAggregate" + | "tryBlockAndAggregate" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "aggregate", + values: [IMulticall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "aggregate3", + values: [IMulticall3.Call3Struct[]] + ): string; + encodeFunctionData( + functionFragment: "aggregate3Value", + values: [IMulticall3.Call3ValueStruct[]] + ): string; + encodeFunctionData( + functionFragment: "blockAndAggregate", + values: [IMulticall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "getBasefee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockHash", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getBlockNumber", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getChainId", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockCoinbase", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockDifficulty", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockGasLimit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getEthBalance", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getLastBlockHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tryAggregate", + values: [boolean, IMulticall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "tryBlockAndAggregate", + values: [boolean, IMulticall3.CallStruct[]] + ): string; + + decodeFunctionResult(functionFragment: "aggregate", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "aggregate3", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "aggregate3Value", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "blockAndAggregate", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getBasefee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getBlockHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockNumber", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getChainId", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockCoinbase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockDifficulty", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockGasLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getEthBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLastBlockHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tryAggregate", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tryBlockAndAggregate", + data: BytesLike + ): Result; +} + +export interface IMulticall3 extends BaseContract { + connect(runner?: ContractRunner | null): IMulticall3; + waitForDeployment(): Promise; + + interface: IMulticall3Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + aggregate: TypedContractMethod< + [calls: IMulticall3.CallStruct[]], + [[bigint, string[]] & { blockNumber: bigint; returnData: string[] }], + "payable" + >; + + aggregate3: TypedContractMethod< + [calls: IMulticall3.Call3Struct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + + aggregate3Value: TypedContractMethod< + [calls: IMulticall3.Call3ValueStruct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + + blockAndAggregate: TypedContractMethod< + [calls: IMulticall3.CallStruct[]], + [ + [bigint, string, IMulticall3.ResultStructOutput[]] & { + blockNumber: bigint; + blockHash: string; + returnData: IMulticall3.ResultStructOutput[]; + } + ], + "payable" + >; + + getBasefee: TypedContractMethod<[], [bigint], "view">; + + getBlockHash: TypedContractMethod< + [blockNumber: BigNumberish], + [string], + "view" + >; + + getBlockNumber: TypedContractMethod<[], [bigint], "view">; + + getChainId: TypedContractMethod<[], [bigint], "view">; + + getCurrentBlockCoinbase: TypedContractMethod<[], [string], "view">; + + getCurrentBlockDifficulty: TypedContractMethod<[], [bigint], "view">; + + getCurrentBlockGasLimit: TypedContractMethod<[], [bigint], "view">; + + getCurrentBlockTimestamp: TypedContractMethod<[], [bigint], "view">; + + getEthBalance: TypedContractMethod<[addr: AddressLike], [bigint], "view">; + + getLastBlockHash: TypedContractMethod<[], [string], "view">; + + tryAggregate: TypedContractMethod< + [requireSuccess: boolean, calls: IMulticall3.CallStruct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + + tryBlockAndAggregate: TypedContractMethod< + [requireSuccess: boolean, calls: IMulticall3.CallStruct[]], + [ + [bigint, string, IMulticall3.ResultStructOutput[]] & { + blockNumber: bigint; + blockHash: string; + returnData: IMulticall3.ResultStructOutput[]; + } + ], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "aggregate" + ): TypedContractMethod< + [calls: IMulticall3.CallStruct[]], + [[bigint, string[]] & { blockNumber: bigint; returnData: string[] }], + "payable" + >; + getFunction( + nameOrSignature: "aggregate3" + ): TypedContractMethod< + [calls: IMulticall3.Call3Struct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + getFunction( + nameOrSignature: "aggregate3Value" + ): TypedContractMethod< + [calls: IMulticall3.Call3ValueStruct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + getFunction( + nameOrSignature: "blockAndAggregate" + ): TypedContractMethod< + [calls: IMulticall3.CallStruct[]], + [ + [bigint, string, IMulticall3.ResultStructOutput[]] & { + blockNumber: bigint; + blockHash: string; + returnData: IMulticall3.ResultStructOutput[]; + } + ], + "payable" + >; + getFunction( + nameOrSignature: "getBasefee" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getBlockHash" + ): TypedContractMethod<[blockNumber: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "getBlockNumber" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getChainId" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getCurrentBlockCoinbase" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getCurrentBlockDifficulty" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getCurrentBlockGasLimit" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getCurrentBlockTimestamp" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getEthBalance" + ): TypedContractMethod<[addr: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getLastBlockHash" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tryAggregate" + ): TypedContractMethod< + [requireSuccess: boolean, calls: IMulticall3.CallStruct[]], + [IMulticall3.ResultStructOutput[]], + "payable" + >; + getFunction( + nameOrSignature: "tryBlockAndAggregate" + ): TypedContractMethod< + [requireSuccess: boolean, calls: IMulticall3.CallStruct[]], + [ + [bigint, string, IMulticall3.ResultStructOutput[]] & { + blockNumber: bigint; + blockHash: string; + returnData: IMulticall3.ResultStructOutput[]; + } + ], + "payable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IProxyAdmin.ts b/v2/typechain-types/IProxyAdmin.ts new file mode 100644 index 00000000..515f75cf --- /dev/null +++ b/v2/typechain-types/IProxyAdmin.ts @@ -0,0 +1,117 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IProxyAdminInterface extends Interface { + getFunction(nameOrSignature: "upgrade" | "upgradeAndCall"): FunctionFragment; + + encodeFunctionData( + functionFragment: "upgrade", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeAndCall", + values: [AddressLike, AddressLike, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "upgrade", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeAndCall", + data: BytesLike + ): Result; +} + +export interface IProxyAdmin extends BaseContract { + connect(runner?: ContractRunner | null): IProxyAdmin; + waitForDeployment(): Promise; + + interface: IProxyAdminInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + upgrade: TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike], + [void], + "nonpayable" + >; + + upgradeAndCall: TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike, arg2: BytesLike], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "upgrade" + ): TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "upgradeAndCall" + ): TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike, arg2: BytesLike], + [void], + "payable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IReceiverEVM.sol/IReceiverEVMEvents.ts b/v2/typechain-types/IReceiverEVM.sol/IReceiverEVMEvents.ts new file mode 100644 index 00000000..16c5430e --- /dev/null +++ b/v2/typechain-types/IReceiverEVM.sol/IReceiverEVMEvents.ts @@ -0,0 +1,277 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface IReceiverEVMEventsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: + | "ReceivedERC20" + | "ReceivedNoParams" + | "ReceivedNonPayable" + | "ReceivedPayable" + | "ReceivedRevert" + ): EventFragment; +} + +export namespace ReceivedERC20Event { + export type InputTuple = [ + sender: AddressLike, + amount: BigNumberish, + token: AddressLike, + destination: AddressLike + ]; + export type OutputTuple = [ + sender: string, + amount: bigint, + token: string, + destination: string + ]; + export interface OutputObject { + sender: string; + amount: bigint; + token: string; + destination: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedNoParamsEvent { + export type InputTuple = [sender: AddressLike]; + export type OutputTuple = [sender: string]; + export interface OutputObject { + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedNonPayableEvent { + export type InputTuple = [ + sender: AddressLike, + strs: string[], + nums: BigNumberish[], + flag: boolean + ]; + export type OutputTuple = [ + sender: string, + strs: string[], + nums: bigint[], + flag: boolean + ]; + export interface OutputObject { + sender: string; + strs: string[]; + nums: bigint[]; + flag: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedPayableEvent { + export type InputTuple = [ + sender: AddressLike, + value: BigNumberish, + str: string, + num: BigNumberish, + flag: boolean + ]; + export type OutputTuple = [ + sender: string, + value: bigint, + str: string, + num: bigint, + flag: boolean + ]; + export interface OutputObject { + sender: string; + value: bigint; + str: string; + num: bigint; + flag: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedRevertEvent { + export type InputTuple = [sender: AddressLike, data: BytesLike]; + export type OutputTuple = [sender: string, data: string]; + export interface OutputObject { + sender: string; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IReceiverEVMEvents extends BaseContract { + connect(runner?: ContractRunner | null): IReceiverEVMEvents; + waitForDeployment(): Promise; + + interface: IReceiverEVMEventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "ReceivedERC20" + ): TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + getEvent( + key: "ReceivedNoParams" + ): TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + getEvent( + key: "ReceivedNonPayable" + ): TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + getEvent( + key: "ReceivedPayable" + ): TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + getEvent( + key: "ReceivedRevert" + ): TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + + filters: { + "ReceivedERC20(address,uint256,address,address)": TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + ReceivedERC20: TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + + "ReceivedNoParams(address)": TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + ReceivedNoParams: TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + + "ReceivedNonPayable(address,string[],uint256[],bool)": TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + ReceivedNonPayable: TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + + "ReceivedPayable(address,uint256,string,uint256,bool)": TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + ReceivedPayable: TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + + "ReceivedRevert(address,bytes)": TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + ReceivedRevert: TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IReceiverEVM.sol/index.ts b/v2/typechain-types/IReceiverEVM.sol/index.ts new file mode 100644 index 00000000..6abc6179 --- /dev/null +++ b/v2/typechain-types/IReceiverEVM.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IReceiverEVMEvents } from "./IReceiverEVMEvents"; diff --git a/v2/typechain-types/ISystem.ts b/v2/typechain-types/ISystem.ts new file mode 100644 index 00000000..17e6bc29 --- /dev/null +++ b/v2/typechain-types/ISystem.ts @@ -0,0 +1,176 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ISystemInterface extends Interface { + getFunction( + nameOrSignature: + | "FUNGIBLE_MODULE_ADDRESS" + | "gasCoinZRC20ByChainId" + | "gasPriceByChainId" + | "gasZetaPoolByChainId" + | "uniswapv2FactoryAddress" + | "wZetaContractAddress" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "gasCoinZRC20ByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasPriceByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasZetaPoolByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2FactoryAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "wZetaContractAddress", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasCoinZRC20ByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasPriceByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasZetaPoolByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2FactoryAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "wZetaContractAddress", + data: BytesLike + ): Result; +} + +export interface ISystem extends BaseContract { + connect(runner?: ContractRunner | null): ISystem; + waitForDeployment(): Promise; + + interface: ISystemInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; + + gasCoinZRC20ByChainId: TypedContractMethod< + [chainID: BigNumberish], + [string], + "view" + >; + + gasPriceByChainId: TypedContractMethod< + [chainID: BigNumberish], + [bigint], + "view" + >; + + gasZetaPoolByChainId: TypedContractMethod< + [chainID: BigNumberish], + [string], + "view" + >; + + uniswapv2FactoryAddress: TypedContractMethod<[], [string], "view">; + + wZetaContractAddress: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "gasCoinZRC20ByChainId" + ): TypedContractMethod<[chainID: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "gasPriceByChainId" + ): TypedContractMethod<[chainID: BigNumberish], [bigint], "view">; + getFunction( + nameOrSignature: "gasZetaPoolByChainId" + ): TypedContractMethod<[chainID: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "uniswapv2FactoryAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "wZetaContractAddress" + ): TypedContractMethod<[], [string], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/IUpgradeableBeacon.ts b/v2/typechain-types/IUpgradeableBeacon.ts new file mode 100644 index 00000000..1fd3a80c --- /dev/null +++ b/v2/typechain-types/IUpgradeableBeacon.ts @@ -0,0 +1,88 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IUpgradeableBeaconInterface extends Interface { + getFunction(nameOrSignature: "upgradeTo"): FunctionFragment; + + encodeFunctionData( + functionFragment: "upgradeTo", + values: [AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; +} + +export interface IUpgradeableBeacon extends BaseContract { + connect(runner?: ContractRunner | null): IUpgradeableBeacon; + waitForDeployment(): Promise; + + interface: IUpgradeableBeaconInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + upgradeTo: TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "upgradeTo" + ): TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">; + + filters: {}; +} diff --git a/v2/typechain-types/IUpgradeableProxy.ts b/v2/typechain-types/IUpgradeableProxy.ts new file mode 100644 index 00000000..448a53db --- /dev/null +++ b/v2/typechain-types/IUpgradeableProxy.ts @@ -0,0 +1,111 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IUpgradeableProxyInterface extends Interface { + getFunction( + nameOrSignature: "upgradeTo" | "upgradeToAndCall" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "upgradeTo", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; +} + +export interface IUpgradeableProxy extends BaseContract { + connect(runner?: ContractRunner | null): IUpgradeableProxy; + waitForDeployment(): Promise; + + interface: IUpgradeableProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + upgradeTo: TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">; + + upgradeToAndCall: TypedContractMethod< + [arg0: AddressLike, arg1: BytesLike], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "upgradeTo" + ): TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [arg0: AddressLike, arg1: BytesLike], + [void], + "payable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/IWZETA.sol/IWETH9.ts b/v2/typechain-types/IWZETA.sol/IWETH9.ts new file mode 100644 index 00000000..5e08f529 --- /dev/null +++ b/v2/typechain-types/IWZETA.sol/IWETH9.ts @@ -0,0 +1,345 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IWETH9Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "deposit" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "Deposit" | "Transfer" | "Withdrawal" + ): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [dst: AddressLike, wad: BigNumberish]; + export type OutputTuple = [dst: string, wad: bigint]; + export interface OutputObject { + dst: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [src: AddressLike, wad: BigNumberish]; + export type OutputTuple = [src: string, wad: bigint]; + export interface OutputObject { + src: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IWETH9 extends BaseContract { + connect(runner?: ContractRunner | null): IWETH9; + waitForDeployment(): Promise; + + interface: IWETH9Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + + deposit: TypedContractMethod<[], [void], "payable">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + withdraw: TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod<[], [void], "payable">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Deposit(address,uint256)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + "Withdrawal(address,uint256)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IWZETA.sol/index.ts b/v2/typechain-types/IWZETA.sol/index.ts new file mode 100644 index 00000000..95069327 --- /dev/null +++ b/v2/typechain-types/IWZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IWETH9 } from "./IWETH9"; diff --git a/v2/typechain-types/IZRC20.sol/IZRC20.ts b/v2/typechain-types/IZRC20.sol/IZRC20.ts new file mode 100644 index 00000000..fdd91a64 --- /dev/null +++ b/v2/typechain-types/IZRC20.sol/IZRC20.ts @@ -0,0 +1,259 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IZRC20Interface extends Interface { + getFunction( + nameOrSignature: + | "PROTOCOL_FLAT_FEE" + | "allowance" + | "approve" + | "balanceOf" + | "burn" + | "deposit" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + | "withdrawGasFee" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "PROTOCOL_FLAT_FEE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "deposit", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawGasFee", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "PROTOCOL_FLAT_FEE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawGasFee", + data: BytesLike + ): Result; +} + +export interface IZRC20 extends BaseContract { + connect(runner?: ContractRunner | null): IZRC20; + waitForDeployment(): Promise; + + interface: IZRC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burn: TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + + deposit: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + withdraw: TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + withdrawGasFee: TypedContractMethod<[], [[string, bigint]], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "PROTOCOL_FLAT_FEE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burn" + ): TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawGasFee" + ): TypedContractMethod<[], [[string, bigint]], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts b/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts new file mode 100644 index 00000000..38ec49b5 --- /dev/null +++ b/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts @@ -0,0 +1,283 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IZRC20MetadataInterface extends Interface { + getFunction( + nameOrSignature: + | "PROTOCOL_FLAT_FEE" + | "allowance" + | "approve" + | "balanceOf" + | "burn" + | "decimals" + | "deposit" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + | "withdrawGasFee" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "PROTOCOL_FLAT_FEE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "deposit", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawGasFee", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "PROTOCOL_FLAT_FEE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawGasFee", + data: BytesLike + ): Result; +} + +export interface IZRC20Metadata extends BaseContract { + connect(runner?: ContractRunner | null): IZRC20Metadata; + waitForDeployment(): Promise; + + interface: IZRC20MetadataInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burn: TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + deposit: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + withdraw: TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + withdrawGasFee: TypedContractMethod<[], [[string, bigint]], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "PROTOCOL_FLAT_FEE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burn" + ): TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawGasFee" + ): TypedContractMethod<[], [[string, bigint]], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/IZRC20.sol/ZRC20Events.ts b/v2/typechain-types/IZRC20.sol/ZRC20Events.ts new file mode 100644 index 00000000..0754f144 --- /dev/null +++ b/v2/typechain-types/IZRC20.sol/ZRC20Events.ts @@ -0,0 +1,330 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface ZRC20EventsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: + | "Approval" + | "Deposit" + | "Transfer" + | "UpdatedGasLimit" + | "UpdatedProtocolFlatFee" + | "UpdatedSystemContract" + | "Withdrawal" + ): EventFragment; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + from: BytesLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedGasLimitEvent { + export type InputTuple = [gasLimit: BigNumberish]; + export type OutputTuple = [gasLimit: bigint]; + export interface OutputObject { + gasLimit: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedProtocolFlatFeeEvent { + export type InputTuple = [protocolFlatFee: BigNumberish]; + export type OutputTuple = [protocolFlatFee: bigint]; + export interface OutputObject { + protocolFlatFee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedSystemContractEvent { + export type InputTuple = [systemContract: AddressLike]; + export type OutputTuple = [systemContract: string]; + export interface OutputObject { + systemContract: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [ + from: AddressLike, + to: BytesLike, + value: BigNumberish, + gasFee: BigNumberish, + protocolFlatFee: BigNumberish + ]; + export type OutputTuple = [ + from: string, + to: string, + value: bigint, + gasFee: bigint, + protocolFlatFee: bigint + ]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + gasFee: bigint; + protocolFlatFee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZRC20Events extends BaseContract { + connect(runner?: ContractRunner | null): ZRC20Events; + waitForDeployment(): Promise; + + interface: ZRC20EventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + getEvent( + key: "UpdatedGasLimit" + ): TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + getEvent( + key: "UpdatedProtocolFlatFee" + ): TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + getEvent( + key: "UpdatedSystemContract" + ): TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Deposit(bytes,address,uint256)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + "UpdatedGasLimit(uint256)": TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + UpdatedGasLimit: TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + + "UpdatedProtocolFlatFee(uint256)": TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + UpdatedProtocolFlatFee: TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + + "UpdatedSystemContract(address)": TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + UpdatedSystemContract: TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + + "Withdrawal(address,bytes,uint256,uint256,uint256)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IZRC20.sol/index.ts b/v2/typechain-types/IZRC20.sol/index.ts new file mode 100644 index 00000000..603ef6e3 --- /dev/null +++ b/v2/typechain-types/IZRC20.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IZRC20 } from "./IZRC20"; +export type { IZRC20Metadata } from "./IZRC20Metadata"; +export type { ZRC20Events } from "./ZRC20Events"; diff --git a/v2/typechain-types/IZetaConnector.sol/IZetaConnectorEvents.ts b/v2/typechain-types/IZetaConnector.sol/IZetaConnectorEvents.ts new file mode 100644 index 00000000..58de4a51 --- /dev/null +++ b/v2/typechain-types/IZetaConnector.sol/IZetaConnectorEvents.ts @@ -0,0 +1,182 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface IZetaConnectorEventsInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; +} + +export namespace WithdrawEvent { + export type InputTuple = [to: AddressLike, amount: BigNumberish]; + export type OutputTuple = [to: string, amount: bigint]; + export interface OutputObject { + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IZetaConnectorEvents extends BaseContract { + connect(runner?: ContractRunner | null): IZetaConnectorEvents; + waitForDeployment(): Promise; + + interface: IZetaConnectorEventsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IZetaConnector.sol/index.ts b/v2/typechain-types/IZetaConnector.sol/index.ts new file mode 100644 index 00000000..eb97bbe0 --- /dev/null +++ b/v2/typechain-types/IZetaConnector.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IZetaConnectorEvents } from "./IZetaConnectorEvents"; diff --git a/v2/typechain-types/IZetaNonEthNew.ts b/v2/typechain-types/IZetaNonEthNew.ts new file mode 100644 index 00000000..0a306df7 --- /dev/null +++ b/v2/typechain-types/IZetaNonEthNew.ts @@ -0,0 +1,300 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IZetaNonEthNewInterface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "burnFrom" + | "mint" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "burnFrom", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IZetaNonEthNew extends BaseContract { + connect(runner?: ContractRunner | null): IZetaNonEthNew; + waitForDeployment(): Promise; + + interface: IZetaNonEthNewInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burnFrom: TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + mint: TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burnFrom" + ): TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mint" + ): TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Initializable.ts b/v2/typechain-types/Initializable.ts new file mode 100644 index 00000000..45c2e5fe --- /dev/null +++ b/v2/typechain-types/Initializable.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + FunctionFragment, + Interface, + EventFragment, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface InitializableInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Initializable extends BaseContract { + connect(runner?: ContractRunner | null): Initializable; + waitForDeployment(): Promise; + + interface: InitializableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Math.ts b/v2/typechain-types/Math.ts new file mode 100644 index 00000000..b3ebedb6 --- /dev/null +++ b/v2/typechain-types/Math.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface MathInterface extends Interface {} + +export interface Math extends BaseContract { + connect(runner?: ContractRunner | null): Math; + waitForDeployment(): Promise; + + interface: MathInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/MockERC20.ts b/v2/typechain-types/MockERC20.ts new file mode 100644 index 00000000..84669ff4 --- /dev/null +++ b/v2/typechain-types/MockERC20.ts @@ -0,0 +1,370 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface MockERC20Interface extends Interface { + getFunction( + nameOrSignature: + | "DOMAIN_SEPARATOR" + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "initialize" + | "name" + | "nonces" + | "permit" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "nonces", values: [AddressLike]): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + AddressLike, + AddressLike, + BigNumberish, + BigNumberish, + BigNumberish, + BytesLike, + BytesLike + ] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface MockERC20 extends BaseContract { + connect(runner?: ContractRunner | null): MockERC20; + waitForDeployment(): Promise; + + interface: MockERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DOMAIN_SEPARATOR: TypedContractMethod<[], [string], "view">; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + initialize: TypedContractMethod< + [name_: string, symbol_: string, decimals_: BigNumberish], + [void], + "nonpayable" + >; + + name: TypedContractMethod<[], [string], "view">; + + nonces: TypedContractMethod<[arg0: AddressLike], [bigint], "view">; + + permit: TypedContractMethod< + [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], + [void], + "nonpayable" + >; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DOMAIN_SEPARATOR" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod< + [name_: string, symbol_: string, decimals_: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "nonces" + ): TypedContractMethod<[arg0: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "permit" + ): TypedContractMethod< + [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/MockERC721.ts b/v2/typechain-types/MockERC721.ts new file mode 100644 index 00000000..6d5df3dd --- /dev/null +++ b/v2/typechain-types/MockERC721.ts @@ -0,0 +1,433 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface MockERC721Interface extends Interface { + getFunction( + nameOrSignature: + | "approve" + | "balanceOf" + | "getApproved" + | "initialize" + | "isApprovedForAll" + | "name" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "symbol" + | "tokenURI" + | "transferFrom" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "ApprovalForAll" | "Transfer" + ): EventFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [AddressLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + _owner: AddressLike, + _approved: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [ + _owner: string, + _approved: string, + _tokenId: bigint + ]; + export interface OutputObject { + _owner: string; + _approved: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ApprovalForAllEvent { + export type InputTuple = [ + _owner: AddressLike, + _operator: AddressLike, + _approved: boolean + ]; + export type OutputTuple = [ + _owner: string, + _operator: string, + _approved: boolean + ]; + export interface OutputObject { + _owner: string; + _operator: string; + _approved: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + _from: AddressLike, + _to: AddressLike, + _tokenId: BigNumberish + ]; + export type OutputTuple = [_from: string, _to: string, _tokenId: bigint]; + export interface OutputObject { + _from: string; + _to: string; + _tokenId: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface MockERC721 extends BaseContract { + connect(runner?: ContractRunner | null): MockERC721; + waitForDeployment(): Promise; + + interface: MockERC721Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + approve: TypedContractMethod< + [spender: AddressLike, id: BigNumberish], + [void], + "payable" + >; + + balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + + getApproved: TypedContractMethod<[id: BigNumberish], [string], "view">; + + initialize: TypedContractMethod< + [name_: string, symbol_: string], + [void], + "nonpayable" + >; + + isApprovedForAll: TypedContractMethod< + [owner: AddressLike, operator: AddressLike], + [boolean], + "view" + >; + + name: TypedContractMethod<[], [string], "view">; + + ownerOf: TypedContractMethod<[id: BigNumberish], [string], "view">; + + "safeTransferFrom(address,address,uint256)": TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish], + [void], + "payable" + >; + + "safeTransferFrom(address,address,uint256,bytes)": TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish, data: BytesLike], + [void], + "payable" + >; + + setApprovalForAll: TypedContractMethod< + [operator: AddressLike, approved: boolean], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + symbol: TypedContractMethod<[], [string], "view">; + + tokenURI: TypedContractMethod<[id: BigNumberish], [string], "view">; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, id: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getApproved" + ): TypedContractMethod<[id: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "initialize" + ): TypedContractMethod< + [name_: string, symbol_: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "isApprovedForAll" + ): TypedContractMethod< + [owner: AddressLike, operator: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "ownerOf" + ): TypedContractMethod<[id: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256)" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish], + [void], + "payable" + >; + getFunction( + nameOrSignature: "safeTransferFrom(address,address,uint256,bytes)" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish, data: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "setApprovalForAll" + ): TypedContractMethod< + [operator: AddressLike, approved: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tokenURI" + ): TypedContractMethod<[id: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, id: BigNumberish], + [void], + "payable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "ApprovalForAll" + ): TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "ApprovalForAll(address,address,bool)": TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + ApprovalForAll: TypedContractEvent< + ApprovalForAllEvent.InputTuple, + ApprovalForAllEvent.OutputTuple, + ApprovalForAllEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Ownable.ts b/v2/typechain-types/Ownable.ts new file mode 100644 index 00000000..c3efc4b2 --- /dev/null +++ b/v2/typechain-types/Ownable.ts @@ -0,0 +1,153 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface OwnableInterface extends Interface { + getFunction( + nameOrSignature: "owner" | "renounceOwnership" | "transferOwnership" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Ownable extends BaseContract { + connect(runner?: ContractRunner | null): Ownable; + waitForDeployment(): Promise; + + interface: OwnableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/OwnableUpgradeable.ts b/v2/typechain-types/OwnableUpgradeable.ts new file mode 100644 index 00000000..dbbbfcd0 --- /dev/null +++ b/v2/typechain-types/OwnableUpgradeable.ts @@ -0,0 +1,186 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface OwnableUpgradeableInterface extends Interface { + getFunction( + nameOrSignature: "owner" | "renounceOwnership" | "transferOwnership" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Initialized" | "OwnershipTransferred" + ): EventFragment; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface OwnableUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): OwnableUpgradeable; + waitForDeployment(): Promise; + + interface: OwnableUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Proxy.ts b/v2/typechain-types/Proxy.ts new file mode 100644 index 00000000..c06e88c6 --- /dev/null +++ b/v2/typechain-types/Proxy.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface ProxyInterface extends Interface {} + +export interface Proxy extends BaseContract { + connect(runner?: ContractRunner | null): Proxy; + waitForDeployment(): Promise; + + interface: ProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/ProxyAdmin.ts b/v2/typechain-types/ProxyAdmin.ts new file mode 100644 index 00000000..e0ce5816 --- /dev/null +++ b/v2/typechain-types/ProxyAdmin.ts @@ -0,0 +1,192 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ProxyAdminInterface extends Interface { + getFunction( + nameOrSignature: + | "UPGRADE_INTERFACE_VERSION" + | "owner" + | "renounceOwnership" + | "transferOwnership" + | "upgradeAndCall" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeAndCall", + values: [AddressLike, AddressLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "upgradeAndCall", + data: BytesLike + ): Result; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ProxyAdmin extends BaseContract { + connect(runner?: ContractRunner | null): ProxyAdmin; + waitForDeployment(): Promise; + + interface: ProxyAdminInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + upgradeAndCall: TypedContractMethod< + [proxy: AddressLike, implementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgradeAndCall" + ): TypedContractMethod< + [proxy: AddressLike, implementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + filters: { + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ReceiverEVM.ts b/v2/typechain-types/ReceiverEVM.ts new file mode 100644 index 00000000..1d3316e5 --- /dev/null +++ b/v2/typechain-types/ReceiverEVM.ts @@ -0,0 +1,396 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ReceiverEVMInterface extends Interface { + getFunction( + nameOrSignature: + | "onRevert" + | "receiveERC20" + | "receiveERC20Partial" + | "receiveNoParams" + | "receiveNonPayable" + | "receivePayable" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "ReceivedERC20" + | "ReceivedNoParams" + | "ReceivedNonPayable" + | "ReceivedPayable" + | "ReceivedRevert" + ): EventFragment; + + encodeFunctionData(functionFragment: "onRevert", values: [BytesLike]): string; + encodeFunctionData( + functionFragment: "receiveERC20", + values: [BigNumberish, AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "receiveERC20Partial", + values: [BigNumberish, AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "receiveNoParams", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "receiveNonPayable", + values: [string[], BigNumberish[], boolean] + ): string; + encodeFunctionData( + functionFragment: "receivePayable", + values: [string, BigNumberish, boolean] + ): string; + + decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveERC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receiveERC20Partial", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receiveNoParams", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receiveNonPayable", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "receivePayable", + data: BytesLike + ): Result; +} + +export namespace ReceivedERC20Event { + export type InputTuple = [ + sender: AddressLike, + amount: BigNumberish, + token: AddressLike, + destination: AddressLike + ]; + export type OutputTuple = [ + sender: string, + amount: bigint, + token: string, + destination: string + ]; + export interface OutputObject { + sender: string; + amount: bigint; + token: string; + destination: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedNoParamsEvent { + export type InputTuple = [sender: AddressLike]; + export type OutputTuple = [sender: string]; + export interface OutputObject { + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedNonPayableEvent { + export type InputTuple = [ + sender: AddressLike, + strs: string[], + nums: BigNumberish[], + flag: boolean + ]; + export type OutputTuple = [ + sender: string, + strs: string[], + nums: bigint[], + flag: boolean + ]; + export interface OutputObject { + sender: string; + strs: string[]; + nums: bigint[]; + flag: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedPayableEvent { + export type InputTuple = [ + sender: AddressLike, + value: BigNumberish, + str: string, + num: BigNumberish, + flag: boolean + ]; + export type OutputTuple = [ + sender: string, + value: bigint, + str: string, + num: bigint, + flag: boolean + ]; + export interface OutputObject { + sender: string; + value: bigint; + str: string; + num: bigint; + flag: boolean; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ReceivedRevertEvent { + export type InputTuple = [sender: AddressLike, data: BytesLike]; + export type OutputTuple = [sender: string, data: string]; + export interface OutputObject { + sender: string; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ReceiverEVM extends BaseContract { + connect(runner?: ContractRunner | null): ReceiverEVM; + waitForDeployment(): Promise; + + interface: ReceiverEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onRevert: TypedContractMethod<[data: BytesLike], [void], "nonpayable">; + + receiveERC20: TypedContractMethod< + [amount: BigNumberish, token: AddressLike, destination: AddressLike], + [void], + "nonpayable" + >; + + receiveERC20Partial: TypedContractMethod< + [amount: BigNumberish, token: AddressLike, destination: AddressLike], + [void], + "nonpayable" + >; + + receiveNoParams: TypedContractMethod<[], [void], "nonpayable">; + + receiveNonPayable: TypedContractMethod< + [strs: string[], nums: BigNumberish[], flag: boolean], + [void], + "nonpayable" + >; + + receivePayable: TypedContractMethod< + [str: string, num: BigNumberish, flag: boolean], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onRevert" + ): TypedContractMethod<[data: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "receiveERC20" + ): TypedContractMethod< + [amount: BigNumberish, token: AddressLike, destination: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "receiveERC20Partial" + ): TypedContractMethod< + [amount: BigNumberish, token: AddressLike, destination: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "receiveNoParams" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "receiveNonPayable" + ): TypedContractMethod< + [strs: string[], nums: BigNumberish[], flag: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "receivePayable" + ): TypedContractMethod< + [str: string, num: BigNumberish, flag: boolean], + [void], + "payable" + >; + + getEvent( + key: "ReceivedERC20" + ): TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + getEvent( + key: "ReceivedNoParams" + ): TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + getEvent( + key: "ReceivedNonPayable" + ): TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + getEvent( + key: "ReceivedPayable" + ): TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + getEvent( + key: "ReceivedRevert" + ): TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + + filters: { + "ReceivedERC20(address,uint256,address,address)": TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + ReceivedERC20: TypedContractEvent< + ReceivedERC20Event.InputTuple, + ReceivedERC20Event.OutputTuple, + ReceivedERC20Event.OutputObject + >; + + "ReceivedNoParams(address)": TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + ReceivedNoParams: TypedContractEvent< + ReceivedNoParamsEvent.InputTuple, + ReceivedNoParamsEvent.OutputTuple, + ReceivedNoParamsEvent.OutputObject + >; + + "ReceivedNonPayable(address,string[],uint256[],bool)": TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + ReceivedNonPayable: TypedContractEvent< + ReceivedNonPayableEvent.InputTuple, + ReceivedNonPayableEvent.OutputTuple, + ReceivedNonPayableEvent.OutputObject + >; + + "ReceivedPayable(address,uint256,string,uint256,bool)": TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + ReceivedPayable: TypedContractEvent< + ReceivedPayableEvent.InputTuple, + ReceivedPayableEvent.OutputTuple, + ReceivedPayableEvent.OutputObject + >; + + "ReceivedRevert(address,bytes)": TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + ReceivedRevert: TypedContractEvent< + ReceivedRevertEvent.InputTuple, + ReceivedRevertEvent.OutputTuple, + ReceivedRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ReentrancyGuard.ts b/v2/typechain-types/ReentrancyGuard.ts new file mode 100644 index 00000000..c6fb4446 --- /dev/null +++ b/v2/typechain-types/ReentrancyGuard.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface ReentrancyGuardInterface extends Interface {} + +export interface ReentrancyGuard extends BaseContract { + connect(runner?: ContractRunner | null): ReentrancyGuard; + waitForDeployment(): Promise; + + interface: ReentrancyGuardInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/ReentrancyGuardUpgradeable.ts b/v2/typechain-types/ReentrancyGuardUpgradeable.ts new file mode 100644 index 00000000..827db14c --- /dev/null +++ b/v2/typechain-types/ReentrancyGuardUpgradeable.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + FunctionFragment, + Interface, + EventFragment, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "./common"; + +export interface ReentrancyGuardUpgradeableInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ReentrancyGuardUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): ReentrancyGuardUpgradeable; + waitForDeployment(): Promise; + + interface: ReentrancyGuardUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/SafeERC20.ts b/v2/typechain-types/SafeERC20.ts new file mode 100644 index 00000000..99be3230 --- /dev/null +++ b/v2/typechain-types/SafeERC20.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "./common"; + +export interface SafeERC20Interface extends Interface {} + +export interface SafeERC20 extends BaseContract { + connect(runner?: ContractRunner | null): SafeERC20; + waitForDeployment(): Promise; + + interface: SafeERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/SenderZEVM.ts b/v2/typechain-types/SenderZEVM.ts new file mode 100644 index 00000000..02bc0828 --- /dev/null +++ b/v2/typechain-types/SenderZEVM.ts @@ -0,0 +1,151 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface SenderZEVMInterface extends Interface { + getFunction( + nameOrSignature: "callReceiver" | "gateway" | "withdrawAndCallReceiver" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "callReceiver", + values: [BytesLike, string, BigNumberish, boolean] + ): string; + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "withdrawAndCallReceiver", + values: [ + BytesLike, + BigNumberish, + AddressLike, + string, + BigNumberish, + boolean + ] + ): string; + + decodeFunctionResult( + functionFragment: "callReceiver", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCallReceiver", + data: BytesLike + ): Result; +} + +export interface SenderZEVM extends BaseContract { + connect(runner?: ContractRunner | null): SenderZEVM; + waitForDeployment(): Promise; + + interface: SenderZEVMInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + callReceiver: TypedContractMethod< + [receiver: BytesLike, str: string, num: BigNumberish, flag: boolean], + [void], + "nonpayable" + >; + + gateway: TypedContractMethod<[], [string], "view">; + + withdrawAndCallReceiver: TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + str: string, + num: BigNumberish, + flag: boolean + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "callReceiver" + ): TypedContractMethod< + [receiver: BytesLike, str: string, num: BigNumberish, flag: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdrawAndCallReceiver" + ): TypedContractMethod< + [ + receiver: BytesLike, + amount: BigNumberish, + zrc20: AddressLike, + str: string, + num: BigNumberish, + flag: boolean + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/StdAssertions.ts b/v2/typechain-types/StdAssertions.ts new file mode 100644 index 00000000..fc9aab39 --- /dev/null +++ b/v2/typechain-types/StdAssertions.ts @@ -0,0 +1,762 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface StdAssertionsInterface extends Interface { + getFunction(nameOrSignature: "failed"): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "log" + | "log_address" + | "log_array(uint256[])" + | "log_array(int256[])" + | "log_array(address[])" + | "log_bytes" + | "log_bytes32" + | "log_int" + | "log_named_address" + | "log_named_array(string,uint256[])" + | "log_named_array(string,int256[])" + | "log_named_array(string,address[])" + | "log_named_bytes" + | "log_named_bytes32" + | "log_named_decimal_int" + | "log_named_decimal_uint" + | "log_named_int" + | "log_named_string" + | "log_named_uint" + | "log_string" + | "log_uint" + | "logs" + ): EventFragment; + + encodeFunctionData(functionFragment: "failed", values?: undefined): string; + + decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; +} + +export namespace logEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_addressEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_uint256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_int256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_address_array_Event { + export type InputTuple = [val: AddressLike[]]; + export type OutputTuple = [val: string[]]; + export interface OutputObject { + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytesEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytes32Event { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_intEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_addressEvent { + export type InputTuple = [key: string, val: AddressLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_uint256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_int256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_address_array_Event { + export type InputTuple = [key: string, val: AddressLike[]]; + export type OutputTuple = [key: string, val: string[]]; + export interface OutputObject { + key: string; + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytesEvent { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytes32Event { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_intEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_uintEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_intEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_stringEvent { + export type InputTuple = [key: string, val: string]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_uintEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_stringEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_uintEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace logsEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StdAssertions extends BaseContract { + connect(runner?: ContractRunner | null): StdAssertions; + waitForDeployment(): Promise; + + interface: StdAssertionsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + failed: TypedContractMethod<[], [boolean], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "failed" + ): TypedContractMethod<[], [boolean], "view">; + + getEvent( + key: "log" + ): TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + getEvent( + key: "log_address" + ): TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + getEvent( + key: "log_array(uint256[])" + ): TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_array(int256[])" + ): TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + getEvent( + key: "log_array(address[])" + ): TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + getEvent( + key: "log_bytes" + ): TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + getEvent( + key: "log_bytes32" + ): TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + getEvent( + key: "log_int" + ): TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + getEvent( + key: "log_named_address" + ): TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + getEvent( + key: "log_named_array(string,uint256[])" + ): TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,int256[])" + ): TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,address[])" + ): TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + getEvent( + key: "log_named_bytes" + ): TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + getEvent( + key: "log_named_bytes32" + ): TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + getEvent( + key: "log_named_decimal_int" + ): TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + getEvent( + key: "log_named_decimal_uint" + ): TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + getEvent( + key: "log_named_int" + ): TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + getEvent( + key: "log_named_string" + ): TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + getEvent( + key: "log_named_uint" + ): TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + getEvent( + key: "log_string" + ): TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + getEvent( + key: "log_uint" + ): TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + getEvent( + key: "logs" + ): TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + + filters: { + "log(string)": TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + log: TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + + "log_address(address)": TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + log_address: TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + + "log_array(uint256[])": TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + "log_array(int256[])": TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + "log_array(address[])": TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + + "log_bytes(bytes)": TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + log_bytes: TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + + "log_bytes32(bytes32)": TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + log_bytes32: TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + + "log_int(int256)": TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + log_int: TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + + "log_named_address(string,address)": TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + log_named_address: TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + + "log_named_array(string,uint256[])": TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + "log_named_array(string,int256[])": TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + "log_named_array(string,address[])": TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + + "log_named_bytes(string,bytes)": TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + log_named_bytes: TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + + "log_named_bytes32(string,bytes32)": TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + log_named_bytes32: TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + + "log_named_decimal_int(string,int256,uint256)": TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + log_named_decimal_int: TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + + "log_named_decimal_uint(string,uint256,uint256)": TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + log_named_decimal_uint: TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + + "log_named_int(string,int256)": TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + log_named_int: TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + + "log_named_string(string,string)": TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + log_named_string: TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + + "log_named_uint(string,uint256)": TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + log_named_uint: TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + + "log_string(string)": TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + log_string: TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + + "log_uint(uint256)": TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + log_uint: TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + + "logs(bytes)": TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + logs: TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/StdError.sol/StdError.ts b/v2/typechain-types/StdError.sol/StdError.ts new file mode 100644 index 00000000..0159728c --- /dev/null +++ b/v2/typechain-types/StdError.sol/StdError.ts @@ -0,0 +1,199 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface StdErrorInterface extends Interface { + getFunction( + nameOrSignature: + | "arithmeticError" + | "assertionError" + | "divisionError" + | "encodeStorageError" + | "enumConversionError" + | "indexOOBError" + | "memOverflowError" + | "popError" + | "zeroVarError" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "arithmeticError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assertionError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "divisionError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "encodeStorageError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enumConversionError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "indexOOBError", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "memOverflowError", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "popError", values?: undefined): string; + encodeFunctionData( + functionFragment: "zeroVarError", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "arithmeticError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertionError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "divisionError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "encodeStorageError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "enumConversionError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "indexOOBError", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "memOverflowError", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "popError", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "zeroVarError", + data: BytesLike + ): Result; +} + +export interface StdError extends BaseContract { + connect(runner?: ContractRunner | null): StdError; + waitForDeployment(): Promise; + + interface: StdErrorInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + arithmeticError: TypedContractMethod<[], [string], "view">; + + assertionError: TypedContractMethod<[], [string], "view">; + + divisionError: TypedContractMethod<[], [string], "view">; + + encodeStorageError: TypedContractMethod<[], [string], "view">; + + enumConversionError: TypedContractMethod<[], [string], "view">; + + indexOOBError: TypedContractMethod<[], [string], "view">; + + memOverflowError: TypedContractMethod<[], [string], "view">; + + popError: TypedContractMethod<[], [string], "view">; + + zeroVarError: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "arithmeticError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "assertionError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "divisionError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "encodeStorageError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "enumConversionError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "indexOOBError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "memOverflowError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "popError" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "zeroVarError" + ): TypedContractMethod<[], [string], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/StdError.sol/index.ts b/v2/typechain-types/StdError.sol/index.ts new file mode 100644 index 00000000..011e98fa --- /dev/null +++ b/v2/typechain-types/StdError.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { StdError } from "./StdError"; diff --git a/v2/typechain-types/StdInvariant.ts b/v2/typechain-types/StdInvariant.ts new file mode 100644 index 00000000..6cbf282b --- /dev/null +++ b/v2/typechain-types/StdInvariant.ts @@ -0,0 +1,273 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace StdInvariant { + export type FuzzSelectorStruct = { + addr: AddressLike; + selectors: BytesLike[]; + }; + + export type FuzzSelectorStructOutput = [addr: string, selectors: string[]] & { + addr: string; + selectors: string[]; + }; + + export type FuzzArtifactSelectorStruct = { + artifact: string; + selectors: BytesLike[]; + }; + + export type FuzzArtifactSelectorStructOutput = [ + artifact: string, + selectors: string[] + ] & { artifact: string; selectors: string[] }; + + export type FuzzInterfaceStruct = { addr: AddressLike; artifacts: string[] }; + + export type FuzzInterfaceStructOutput = [ + addr: string, + artifacts: string[] + ] & { addr: string; artifacts: string[] }; +} + +export interface StdInvariantInterface extends Interface { + getFunction( + nameOrSignature: + | "excludeArtifacts" + | "excludeContracts" + | "excludeSelectors" + | "excludeSenders" + | "targetArtifactSelectors" + | "targetArtifacts" + | "targetContracts" + | "targetInterfaces" + | "targetSelectors" + | "targetSenders" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "excludeArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSenders", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetArtifactSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetInterfaces", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSenders", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "excludeArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSenders", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetArtifactSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetInterfaces", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSenders", + data: BytesLike + ): Result; +} + +export interface StdInvariant extends BaseContract { + connect(runner?: ContractRunner | null): StdInvariant; + waitForDeployment(): Promise; + + interface: StdInvariantInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + excludeArtifacts: TypedContractMethod<[], [string[]], "view">; + + excludeContracts: TypedContractMethod<[], [string[]], "view">; + + excludeSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + excludeSenders: TypedContractMethod<[], [string[]], "view">; + + targetArtifactSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + + targetArtifacts: TypedContractMethod<[], [string[]], "view">; + + targetContracts: TypedContractMethod<[], [string[]], "view">; + + targetInterfaces: TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + + targetSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + targetSenders: TypedContractMethod<[], [string[]], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "excludeArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "excludeSenders" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetArtifactSelectors" + ): TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetInterfaces" + ): TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "targetSenders" + ): TypedContractMethod<[], [string[]], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/StdStorage.sol/StdStorageSafe.ts b/v2/typechain-types/StdStorage.sol/StdStorageSafe.ts new file mode 100644 index 00000000..68c56aa9 --- /dev/null +++ b/v2/typechain-types/StdStorage.sol/StdStorageSafe.ts @@ -0,0 +1,153 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface StdStorageSafeInterface extends Interface { + getEvent( + nameOrSignatureOrTopic: "SlotFound" | "WARNING_UninitedSlot" + ): EventFragment; +} + +export namespace SlotFoundEvent { + export type InputTuple = [ + who: AddressLike, + fsig: BytesLike, + keysHash: BytesLike, + slot: BigNumberish + ]; + export type OutputTuple = [ + who: string, + fsig: string, + keysHash: string, + slot: bigint + ]; + export interface OutputObject { + who: string; + fsig: string; + keysHash: string; + slot: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WARNING_UninitedSlotEvent { + export type InputTuple = [who: AddressLike, slot: BigNumberish]; + export type OutputTuple = [who: string, slot: bigint]; + export interface OutputObject { + who: string; + slot: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface StdStorageSafe extends BaseContract { + connect(runner?: ContractRunner | null): StdStorageSafe; + waitForDeployment(): Promise; + + interface: StdStorageSafeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "SlotFound" + ): TypedContractEvent< + SlotFoundEvent.InputTuple, + SlotFoundEvent.OutputTuple, + SlotFoundEvent.OutputObject + >; + getEvent( + key: "WARNING_UninitedSlot" + ): TypedContractEvent< + WARNING_UninitedSlotEvent.InputTuple, + WARNING_UninitedSlotEvent.OutputTuple, + WARNING_UninitedSlotEvent.OutputObject + >; + + filters: { + "SlotFound(address,bytes4,bytes32,uint256)": TypedContractEvent< + SlotFoundEvent.InputTuple, + SlotFoundEvent.OutputTuple, + SlotFoundEvent.OutputObject + >; + SlotFound: TypedContractEvent< + SlotFoundEvent.InputTuple, + SlotFoundEvent.OutputTuple, + SlotFoundEvent.OutputObject + >; + + "WARNING_UninitedSlot(address,uint256)": TypedContractEvent< + WARNING_UninitedSlotEvent.InputTuple, + WARNING_UninitedSlotEvent.OutputTuple, + WARNING_UninitedSlotEvent.OutputObject + >; + WARNING_UninitedSlot: TypedContractEvent< + WARNING_UninitedSlotEvent.InputTuple, + WARNING_UninitedSlotEvent.OutputTuple, + WARNING_UninitedSlotEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/StdStorage.sol/index.ts b/v2/typechain-types/StdStorage.sol/index.ts new file mode 100644 index 00000000..8a3fb579 --- /dev/null +++ b/v2/typechain-types/StdStorage.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { StdStorageSafe } from "./StdStorageSafe"; diff --git a/v2/typechain-types/SystemContract.sol/SystemContract.ts b/v2/typechain-types/SystemContract.sol/SystemContract.ts new file mode 100644 index 00000000..b881b237 --- /dev/null +++ b/v2/typechain-types/SystemContract.sol/SystemContract.ts @@ -0,0 +1,569 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface SystemContractInterface extends Interface { + getFunction( + nameOrSignature: + | "FUNGIBLE_MODULE_ADDRESS" + | "depositAndCall" + | "gasCoinZRC20ByChainId" + | "gasPriceByChainId" + | "gasZetaPoolByChainId" + | "setConnectorZEVMAddress" + | "setGasCoinZRC20" + | "setGasPrice" + | "setGasZetaPool" + | "setWZETAContractAddress" + | "uniswapv2FactoryAddress" + | "uniswapv2PairFor" + | "uniswapv2Router02Address" + | "wZetaContractAddress" + | "zetaConnectorZEVMAddress" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "SetConnectorZEVM" + | "SetGasCoin" + | "SetGasPrice" + | "SetGasZetaPool" + | "SetWZeta" + | "SystemContractDeployed" + ): EventFragment; + + encodeFunctionData( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "depositAndCall", + values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "gasCoinZRC20ByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasPriceByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasZetaPoolByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setConnectorZEVMAddress", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setGasCoinZRC20", + values: [BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setGasPrice", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setGasZetaPool", + values: [BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setWZETAContractAddress", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2FactoryAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "uniswapv2PairFor", + values: [AddressLike, AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2Router02Address", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "wZetaContractAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "zetaConnectorZEVMAddress", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasCoinZRC20ByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasPriceByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasZetaPoolByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConnectorZEVMAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasCoinZRC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasZetaPool", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setWZETAContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2FactoryAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2PairFor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2Router02Address", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "wZetaContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "zetaConnectorZEVMAddress", + data: BytesLike + ): Result; +} + +export namespace SetConnectorZEVMEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetGasCoinEvent { + export type InputTuple = [arg0: BigNumberish, arg1: AddressLike]; + export type OutputTuple = [arg0: bigint, arg1: string]; + export interface OutputObject { + arg0: bigint; + arg1: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetGasPriceEvent { + export type InputTuple = [arg0: BigNumberish, arg1: BigNumberish]; + export type OutputTuple = [arg0: bigint, arg1: bigint]; + export interface OutputObject { + arg0: bigint; + arg1: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetGasZetaPoolEvent { + export type InputTuple = [arg0: BigNumberish, arg1: AddressLike]; + export type OutputTuple = [arg0: bigint, arg1: string]; + export interface OutputObject { + arg0: bigint; + arg1: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetWZetaEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SystemContractDeployedEvent { + export type InputTuple = []; + export type OutputTuple = []; + export interface OutputObject {} + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface SystemContract extends BaseContract { + connect(runner?: ContractRunner | null): SystemContract; + waitForDeployment(): Promise; + + interface: SystemContractInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; + + depositAndCall: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + gasCoinZRC20ByChainId: TypedContractMethod< + [arg0: BigNumberish], + [string], + "view" + >; + + gasPriceByChainId: TypedContractMethod< + [arg0: BigNumberish], + [bigint], + "view" + >; + + gasZetaPoolByChainId: TypedContractMethod< + [arg0: BigNumberish], + [string], + "view" + >; + + setConnectorZEVMAddress: TypedContractMethod< + [addr: AddressLike], + [void], + "nonpayable" + >; + + setGasCoinZRC20: TypedContractMethod< + [chainID: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + + setGasPrice: TypedContractMethod< + [chainID: BigNumberish, price: BigNumberish], + [void], + "nonpayable" + >; + + setGasZetaPool: TypedContractMethod< + [chainID: BigNumberish, erc20: AddressLike], + [void], + "nonpayable" + >; + + setWZETAContractAddress: TypedContractMethod< + [addr: AddressLike], + [void], + "nonpayable" + >; + + uniswapv2FactoryAddress: TypedContractMethod<[], [string], "view">; + + uniswapv2PairFor: TypedContractMethod< + [factory: AddressLike, tokenA: AddressLike, tokenB: AddressLike], + [string], + "view" + >; + + uniswapv2Router02Address: TypedContractMethod<[], [string], "view">; + + wZetaContractAddress: TypedContractMethod<[], [string], "view">; + + zetaConnectorZEVMAddress: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "depositAndCall" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "gasCoinZRC20ByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "gasPriceByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; + getFunction( + nameOrSignature: "gasZetaPoolByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "setConnectorZEVMAddress" + ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "setGasCoinZRC20" + ): TypedContractMethod< + [chainID: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setGasPrice" + ): TypedContractMethod< + [chainID: BigNumberish, price: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setGasZetaPool" + ): TypedContractMethod< + [chainID: BigNumberish, erc20: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setWZETAContractAddress" + ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "uniswapv2FactoryAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "uniswapv2PairFor" + ): TypedContractMethod< + [factory: AddressLike, tokenA: AddressLike, tokenB: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "uniswapv2Router02Address" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "wZetaContractAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "zetaConnectorZEVMAddress" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "SetConnectorZEVM" + ): TypedContractEvent< + SetConnectorZEVMEvent.InputTuple, + SetConnectorZEVMEvent.OutputTuple, + SetConnectorZEVMEvent.OutputObject + >; + getEvent( + key: "SetGasCoin" + ): TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + getEvent( + key: "SetGasPrice" + ): TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + getEvent( + key: "SetGasZetaPool" + ): TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + getEvent( + key: "SetWZeta" + ): TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + getEvent( + key: "SystemContractDeployed" + ): TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + + filters: { + "SetConnectorZEVM(address)": TypedContractEvent< + SetConnectorZEVMEvent.InputTuple, + SetConnectorZEVMEvent.OutputTuple, + SetConnectorZEVMEvent.OutputObject + >; + SetConnectorZEVM: TypedContractEvent< + SetConnectorZEVMEvent.InputTuple, + SetConnectorZEVMEvent.OutputTuple, + SetConnectorZEVMEvent.OutputObject + >; + + "SetGasCoin(uint256,address)": TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + SetGasCoin: TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + + "SetGasPrice(uint256,uint256)": TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + SetGasPrice: TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + + "SetGasZetaPool(uint256,address)": TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + SetGasZetaPool: TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + + "SetWZeta(address)": TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + SetWZeta: TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + + "SystemContractDeployed()": TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + SystemContractDeployed: TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/SystemContract.sol/SystemContractErrors.ts b/v2/typechain-types/SystemContract.sol/SystemContractErrors.ts new file mode 100644 index 00000000..ee048a50 --- /dev/null +++ b/v2/typechain-types/SystemContract.sol/SystemContractErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface SystemContractErrorsInterface extends Interface {} + +export interface SystemContractErrors extends BaseContract { + connect(runner?: ContractRunner | null): SystemContractErrors; + waitForDeployment(): Promise; + + interface: SystemContractErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/SystemContract.sol/index.ts b/v2/typechain-types/SystemContract.sol/index.ts new file mode 100644 index 00000000..d5591cc5 --- /dev/null +++ b/v2/typechain-types/SystemContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SystemContract } from "./SystemContract"; +export type { SystemContractErrors } from "./SystemContractErrors"; diff --git a/v2/typechain-types/SystemContractMock.sol/SystemContractErrors.ts b/v2/typechain-types/SystemContractMock.sol/SystemContractErrors.ts new file mode 100644 index 00000000..ee048a50 --- /dev/null +++ b/v2/typechain-types/SystemContractMock.sol/SystemContractErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface SystemContractErrorsInterface extends Interface {} + +export interface SystemContractErrors extends BaseContract { + connect(runner?: ContractRunner | null): SystemContractErrors; + waitForDeployment(): Promise; + + interface: SystemContractErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/SystemContractMock.sol/SystemContractMock.ts b/v2/typechain-types/SystemContractMock.sol/SystemContractMock.ts new file mode 100644 index 00000000..7b6607c4 --- /dev/null +++ b/v2/typechain-types/SystemContractMock.sol/SystemContractMock.ts @@ -0,0 +1,456 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface SystemContractMockInterface extends Interface { + getFunction( + nameOrSignature: + | "gasCoinZRC20ByChainId" + | "gasPriceByChainId" + | "gasZetaPoolByChainId" + | "onCrossChainCall" + | "setGasCoinZRC20" + | "setGasPrice" + | "setWZETAContractAddress" + | "uniswapv2FactoryAddress" + | "uniswapv2PairFor" + | "uniswapv2Router02Address" + | "wZetaContractAddress" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "SetGasCoin" + | "SetGasPrice" + | "SetGasZetaPool" + | "SetWZeta" + | "SystemContractDeployed" + ): EventFragment; + + encodeFunctionData( + functionFragment: "gasCoinZRC20ByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasPriceByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "gasZetaPoolByChainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "onCrossChainCall", + values: [AddressLike, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setGasCoinZRC20", + values: [BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "setGasPrice", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setWZETAContractAddress", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2FactoryAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "uniswapv2PairFor", + values: [AddressLike, AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2Router02Address", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "wZetaContractAddress", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "gasCoinZRC20ByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasPriceByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasZetaPoolByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onCrossChainCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasCoinZRC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setWZETAContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2FactoryAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2PairFor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2Router02Address", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "wZetaContractAddress", + data: BytesLike + ): Result; +} + +export namespace SetGasCoinEvent { + export type InputTuple = [arg0: BigNumberish, arg1: AddressLike]; + export type OutputTuple = [arg0: bigint, arg1: string]; + export interface OutputObject { + arg0: bigint; + arg1: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetGasPriceEvent { + export type InputTuple = [arg0: BigNumberish, arg1: BigNumberish]; + export type OutputTuple = [arg0: bigint, arg1: bigint]; + export interface OutputObject { + arg0: bigint; + arg1: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetGasZetaPoolEvent { + export type InputTuple = [arg0: BigNumberish, arg1: AddressLike]; + export type OutputTuple = [arg0: bigint, arg1: string]; + export interface OutputObject { + arg0: bigint; + arg1: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SetWZetaEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace SystemContractDeployedEvent { + export type InputTuple = []; + export type OutputTuple = []; + export interface OutputObject {} + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface SystemContractMock extends BaseContract { + connect(runner?: ContractRunner | null): SystemContractMock; + waitForDeployment(): Promise; + + interface: SystemContractMockInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + gasCoinZRC20ByChainId: TypedContractMethod< + [arg0: BigNumberish], + [string], + "view" + >; + + gasPriceByChainId: TypedContractMethod< + [arg0: BigNumberish], + [bigint], + "view" + >; + + gasZetaPoolByChainId: TypedContractMethod< + [arg0: BigNumberish], + [string], + "view" + >; + + onCrossChainCall: TypedContractMethod< + [ + target: AddressLike, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + setGasCoinZRC20: TypedContractMethod< + [chainID: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + + setGasPrice: TypedContractMethod< + [chainID: BigNumberish, price: BigNumberish], + [void], + "nonpayable" + >; + + setWZETAContractAddress: TypedContractMethod< + [addr: AddressLike], + [void], + "nonpayable" + >; + + uniswapv2FactoryAddress: TypedContractMethod<[], [string], "view">; + + uniswapv2PairFor: TypedContractMethod< + [factory: AddressLike, tokenA: AddressLike, tokenB: AddressLike], + [string], + "view" + >; + + uniswapv2Router02Address: TypedContractMethod<[], [string], "view">; + + wZetaContractAddress: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "gasCoinZRC20ByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "gasPriceByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; + getFunction( + nameOrSignature: "gasZetaPoolByChainId" + ): TypedContractMethod<[arg0: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "onCrossChainCall" + ): TypedContractMethod< + [ + target: AddressLike, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setGasCoinZRC20" + ): TypedContractMethod< + [chainID: BigNumberish, zrc20: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setGasPrice" + ): TypedContractMethod< + [chainID: BigNumberish, price: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setWZETAContractAddress" + ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "uniswapv2FactoryAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "uniswapv2PairFor" + ): TypedContractMethod< + [factory: AddressLike, tokenA: AddressLike, tokenB: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "uniswapv2Router02Address" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "wZetaContractAddress" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "SetGasCoin" + ): TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + getEvent( + key: "SetGasPrice" + ): TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + getEvent( + key: "SetGasZetaPool" + ): TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + getEvent( + key: "SetWZeta" + ): TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + getEvent( + key: "SystemContractDeployed" + ): TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + + filters: { + "SetGasCoin(uint256,address)": TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + SetGasCoin: TypedContractEvent< + SetGasCoinEvent.InputTuple, + SetGasCoinEvent.OutputTuple, + SetGasCoinEvent.OutputObject + >; + + "SetGasPrice(uint256,uint256)": TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + SetGasPrice: TypedContractEvent< + SetGasPriceEvent.InputTuple, + SetGasPriceEvent.OutputTuple, + SetGasPriceEvent.OutputObject + >; + + "SetGasZetaPool(uint256,address)": TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + SetGasZetaPool: TypedContractEvent< + SetGasZetaPoolEvent.InputTuple, + SetGasZetaPoolEvent.OutputTuple, + SetGasZetaPoolEvent.OutputObject + >; + + "SetWZeta(address)": TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + SetWZeta: TypedContractEvent< + SetWZetaEvent.InputTuple, + SetWZetaEvent.OutputTuple, + SetWZetaEvent.OutputObject + >; + + "SystemContractDeployed()": TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + SystemContractDeployed: TypedContractEvent< + SystemContractDeployedEvent.InputTuple, + SystemContractDeployedEvent.OutputTuple, + SystemContractDeployedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/SystemContractMock.sol/index.ts b/v2/typechain-types/SystemContractMock.sol/index.ts new file mode 100644 index 00000000..122c1994 --- /dev/null +++ b/v2/typechain-types/SystemContractMock.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SystemContractErrors } from "./SystemContractErrors"; +export type { SystemContractMock } from "./SystemContractMock"; diff --git a/v2/typechain-types/Test.ts b/v2/typechain-types/Test.ts new file mode 100644 index 00000000..e3e11456 --- /dev/null +++ b/v2/typechain-types/Test.ts @@ -0,0 +1,966 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace StdInvariant { + export type FuzzSelectorStruct = { + addr: AddressLike; + selectors: BytesLike[]; + }; + + export type FuzzSelectorStructOutput = [addr: string, selectors: string[]] & { + addr: string; + selectors: string[]; + }; + + export type FuzzArtifactSelectorStruct = { + artifact: string; + selectors: BytesLike[]; + }; + + export type FuzzArtifactSelectorStructOutput = [ + artifact: string, + selectors: string[] + ] & { artifact: string; selectors: string[] }; + + export type FuzzInterfaceStruct = { addr: AddressLike; artifacts: string[] }; + + export type FuzzInterfaceStructOutput = [ + addr: string, + artifacts: string[] + ] & { addr: string; artifacts: string[] }; +} + +export interface TestInterface extends Interface { + getFunction( + nameOrSignature: + | "IS_TEST" + | "excludeArtifacts" + | "excludeContracts" + | "excludeSelectors" + | "excludeSenders" + | "failed" + | "targetArtifactSelectors" + | "targetArtifacts" + | "targetContracts" + | "targetInterfaces" + | "targetSelectors" + | "targetSenders" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "log" + | "log_address" + | "log_array(uint256[])" + | "log_array(int256[])" + | "log_array(address[])" + | "log_bytes" + | "log_bytes32" + | "log_int" + | "log_named_address" + | "log_named_array(string,uint256[])" + | "log_named_array(string,int256[])" + | "log_named_array(string,address[])" + | "log_named_bytes" + | "log_named_bytes32" + | "log_named_decimal_int" + | "log_named_decimal_uint" + | "log_named_int" + | "log_named_string" + | "log_named_uint" + | "log_string" + | "log_uint" + | "logs" + ): EventFragment; + + encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; + encodeFunctionData( + functionFragment: "excludeArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSenders", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "failed", values?: undefined): string; + encodeFunctionData( + functionFragment: "targetArtifactSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetInterfaces", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSenders", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "excludeArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSenders", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "targetArtifactSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetInterfaces", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSenders", + data: BytesLike + ): Result; +} + +export namespace logEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_addressEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_uint256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_int256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_address_array_Event { + export type InputTuple = [val: AddressLike[]]; + export type OutputTuple = [val: string[]]; + export interface OutputObject { + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytesEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytes32Event { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_intEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_addressEvent { + export type InputTuple = [key: string, val: AddressLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_uint256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_int256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_address_array_Event { + export type InputTuple = [key: string, val: AddressLike[]]; + export type OutputTuple = [key: string, val: string[]]; + export interface OutputObject { + key: string; + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytesEvent { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytes32Event { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_intEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_uintEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_intEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_stringEvent { + export type InputTuple = [key: string, val: string]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_uintEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_stringEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_uintEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace logsEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Test extends BaseContract { + connect(runner?: ContractRunner | null): Test; + waitForDeployment(): Promise; + + interface: TestInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + IS_TEST: TypedContractMethod<[], [boolean], "view">; + + excludeArtifacts: TypedContractMethod<[], [string[]], "view">; + + excludeContracts: TypedContractMethod<[], [string[]], "view">; + + excludeSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + excludeSenders: TypedContractMethod<[], [string[]], "view">; + + failed: TypedContractMethod<[], [boolean], "view">; + + targetArtifactSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + + targetArtifacts: TypedContractMethod<[], [string[]], "view">; + + targetContracts: TypedContractMethod<[], [string[]], "view">; + + targetInterfaces: TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + + targetSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + targetSenders: TypedContractMethod<[], [string[]], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "IS_TEST" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "excludeArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "excludeSenders" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "failed" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "targetArtifactSelectors" + ): TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetInterfaces" + ): TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "targetSenders" + ): TypedContractMethod<[], [string[]], "view">; + + getEvent( + key: "log" + ): TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + getEvent( + key: "log_address" + ): TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + getEvent( + key: "log_array(uint256[])" + ): TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_array(int256[])" + ): TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + getEvent( + key: "log_array(address[])" + ): TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + getEvent( + key: "log_bytes" + ): TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + getEvent( + key: "log_bytes32" + ): TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + getEvent( + key: "log_int" + ): TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + getEvent( + key: "log_named_address" + ): TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + getEvent( + key: "log_named_array(string,uint256[])" + ): TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,int256[])" + ): TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,address[])" + ): TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + getEvent( + key: "log_named_bytes" + ): TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + getEvent( + key: "log_named_bytes32" + ): TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + getEvent( + key: "log_named_decimal_int" + ): TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + getEvent( + key: "log_named_decimal_uint" + ): TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + getEvent( + key: "log_named_int" + ): TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + getEvent( + key: "log_named_string" + ): TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + getEvent( + key: "log_named_uint" + ): TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + getEvent( + key: "log_string" + ): TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + getEvent( + key: "log_uint" + ): TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + getEvent( + key: "logs" + ): TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + + filters: { + "log(string)": TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + log: TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + + "log_address(address)": TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + log_address: TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + + "log_array(uint256[])": TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + "log_array(int256[])": TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + "log_array(address[])": TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + + "log_bytes(bytes)": TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + log_bytes: TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + + "log_bytes32(bytes32)": TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + log_bytes32: TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + + "log_int(int256)": TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + log_int: TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + + "log_named_address(string,address)": TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + log_named_address: TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + + "log_named_array(string,uint256[])": TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + "log_named_array(string,int256[])": TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + "log_named_array(string,address[])": TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + + "log_named_bytes(string,bytes)": TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + log_named_bytes: TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + + "log_named_bytes32(string,bytes32)": TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + log_named_bytes32: TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + + "log_named_decimal_int(string,int256,uint256)": TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + log_named_decimal_int: TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + + "log_named_decimal_uint(string,uint256,uint256)": TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + log_named_decimal_uint: TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + + "log_named_int(string,int256)": TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + log_named_int: TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + + "log_named_string(string,string)": TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + log_named_string: TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + + "log_named_uint(string,uint256)": TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + log_named_uint: TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + + "log_string(string)": TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + log_string: TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + + "log_uint(uint256)": TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + log_uint: TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + + "logs(bytes)": TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + logs: TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/TestERC20.ts b/v2/typechain-types/TestERC20.ts new file mode 100644 index 00000000..ad2fca55 --- /dev/null +++ b/v2/typechain-types/TestERC20.ts @@ -0,0 +1,305 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface TestERC20Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "mint" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "mint", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface TestERC20 extends BaseContract { + connect(runner?: ContractRunner | null): TestERC20; + waitForDeployment(): Promise; + + interface: TestERC20Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + mint: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "mint" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/TestZContract.ts b/v2/typechain-types/TestZContract.ts new file mode 100644 index 00000000..71b53ec2 --- /dev/null +++ b/v2/typechain-types/TestZContract.ts @@ -0,0 +1,263 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export type RevertContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type RevertContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface TestZContractInterface extends Interface { + getFunction( + nameOrSignature: "onCrossChainCall" | "onRevert" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "ContextData" | "ContextDataRevert" + ): EventFragment; + + encodeFunctionData( + functionFragment: "onCrossChainCall", + values: [ZContextStruct, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "onRevert", + values: [RevertContextStruct, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onCrossChainCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; +} + +export namespace ContextDataEvent { + export type InputTuple = [ + origin: BytesLike, + sender: AddressLike, + chainID: BigNumberish, + msgSender: AddressLike, + message: string + ]; + export type OutputTuple = [ + origin: string, + sender: string, + chainID: bigint, + msgSender: string, + message: string + ]; + export interface OutputObject { + origin: string; + sender: string; + chainID: bigint; + msgSender: string; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ContextDataRevertEvent { + export type InputTuple = [ + origin: BytesLike, + sender: AddressLike, + chainID: BigNumberish, + msgSender: AddressLike, + message: string + ]; + export type OutputTuple = [ + origin: string, + sender: string, + chainID: bigint, + msgSender: string, + message: string + ]; + export interface OutputObject { + origin: string; + sender: string; + chainID: bigint; + msgSender: string; + message: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface TestZContract extends BaseContract { + connect(runner?: ContractRunner | null): TestZContract; + waitForDeployment(): Promise; + + interface: TestZContractInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onCrossChainCall: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + onRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onCrossChainCall" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "onRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + getEvent( + key: "ContextData" + ): TypedContractEvent< + ContextDataEvent.InputTuple, + ContextDataEvent.OutputTuple, + ContextDataEvent.OutputObject + >; + getEvent( + key: "ContextDataRevert" + ): TypedContractEvent< + ContextDataRevertEvent.InputTuple, + ContextDataRevertEvent.OutputTuple, + ContextDataRevertEvent.OutputObject + >; + + filters: { + "ContextData(bytes,address,uint256,address,string)": TypedContractEvent< + ContextDataEvent.InputTuple, + ContextDataEvent.OutputTuple, + ContextDataEvent.OutputObject + >; + ContextData: TypedContractEvent< + ContextDataEvent.InputTuple, + ContextDataEvent.OutputTuple, + ContextDataEvent.OutputObject + >; + + "ContextDataRevert(bytes,address,uint256,address,string)": TypedContractEvent< + ContextDataRevertEvent.InputTuple, + ContextDataRevertEvent.OutputTuple, + ContextDataRevertEvent.OutputObject + >; + ContextDataRevert: TypedContractEvent< + ContextDataRevertEvent.InputTuple, + ContextDataRevertEvent.OutputTuple, + ContextDataRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.ts b/v2/typechain-types/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.ts new file mode 100644 index 00000000..32c3d115 --- /dev/null +++ b/v2/typechain-types/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.ts @@ -0,0 +1,197 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface ITransparentUpgradeableProxyInterface extends Interface { + getFunction(nameOrSignature: "upgradeToAndCall"): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "AdminChanged" | "BeaconUpgraded" | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BeaconUpgradedEvent { + export type InputTuple = [beacon: AddressLike]; + export type OutputTuple = [beacon: string]; + export interface OutputObject { + beacon: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ITransparentUpgradeableProxy extends BaseContract { + connect(runner?: ContractRunner | null): ITransparentUpgradeableProxy; + waitForDeployment(): Promise; + + interface: ITransparentUpgradeableProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + upgradeToAndCall: TypedContractMethod< + [arg0: AddressLike, arg1: BytesLike], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [arg0: AddressLike, arg1: BytesLike], + [void], + "payable" + >; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "BeaconUpgraded" + ): TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "BeaconUpgraded(address)": TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + BeaconUpgraded: TypedContractEvent< + BeaconUpgradedEvent.InputTuple, + BeaconUpgradedEvent.OutputTuple, + BeaconUpgradedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.ts b/v2/typechain-types/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.ts new file mode 100644 index 00000000..3c69dc83 --- /dev/null +++ b/v2/typechain-types/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.ts @@ -0,0 +1,136 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, +} from "../common"; + +export interface TransparentUpgradeableProxyInterface extends Interface { + getEvent(nameOrSignatureOrTopic: "AdminChanged" | "Upgraded"): EventFragment; +} + +export namespace AdminChangedEvent { + export type InputTuple = [previousAdmin: AddressLike, newAdmin: AddressLike]; + export type OutputTuple = [previousAdmin: string, newAdmin: string]; + export interface OutputObject { + previousAdmin: string; + newAdmin: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface TransparentUpgradeableProxy extends BaseContract { + connect(runner?: ContractRunner | null): TransparentUpgradeableProxy; + waitForDeployment(): Promise; + + interface: TransparentUpgradeableProxyInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + getEvent( + key: "AdminChanged" + ): TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "AdminChanged(address,address)": TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + AdminChanged: TypedContractEvent< + AdminChangedEvent.InputTuple, + AdminChangedEvent.OutputTuple, + AdminChangedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/TransparentUpgradeableProxy.sol/index.ts b/v2/typechain-types/TransparentUpgradeableProxy.sol/index.ts new file mode 100644 index 00000000..0ada46de --- /dev/null +++ b/v2/typechain-types/TransparentUpgradeableProxy.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ITransparentUpgradeableProxy } from "./ITransparentUpgradeableProxy"; +export type { TransparentUpgradeableProxy } from "./TransparentUpgradeableProxy"; diff --git a/v2/typechain-types/UUPSUpgradeable.ts b/v2/typechain-types/UUPSUpgradeable.ts new file mode 100644 index 00000000..82546703 --- /dev/null +++ b/v2/typechain-types/UUPSUpgradeable.ts @@ -0,0 +1,196 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface UUPSUpgradeableInterface extends Interface { + getFunction( + nameOrSignature: + | "UPGRADE_INTERFACE_VERSION" + | "proxiableUUID" + | "upgradeToAndCall" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Initialized" | "Upgraded"): EventFragment; + + encodeFunctionData( + functionFragment: "UPGRADE_INTERFACE_VERSION", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "upgradeToAndCall", + values: [AddressLike, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "UPGRADE_INTERFACE_VERSION", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "upgradeToAndCall", + data: BytesLike + ): Result; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface UUPSUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): UUPSUpgradeable; + waitForDeployment(): Promise; + + interface: UUPSUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + upgradeToAndCall: TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "UPGRADE_INTERFACE_VERSION" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "upgradeToAndCall" + ): TypedContractMethod< + [newImplementation: AddressLike, data: BytesLike], + [void], + "payable" + >; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/UpgradeableBeacon.ts b/v2/typechain-types/UpgradeableBeacon.ts new file mode 100644 index 00000000..63ca154d --- /dev/null +++ b/v2/typechain-types/UpgradeableBeacon.ts @@ -0,0 +1,221 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface UpgradeableBeaconInterface extends Interface { + getFunction( + nameOrSignature: + | "implementation" + | "owner" + | "renounceOwnership" + | "transferOwnership" + | "upgradeTo" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred" | "Upgraded" + ): EventFragment; + + encodeFunctionData( + functionFragment: "implementation", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "upgradeTo", + values: [AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "implementation", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; +} + +export namespace OwnershipTransferredEvent { + export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; + export type OutputTuple = [previousOwner: string, newOwner: string]; + export interface OutputObject { + previousOwner: string; + newOwner: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpgradedEvent { + export type InputTuple = [implementation: AddressLike]; + export type OutputTuple = [implementation: string]; + export interface OutputObject { + implementation: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface UpgradeableBeacon extends BaseContract { + connect(runner?: ContractRunner | null): UpgradeableBeacon; + waitForDeployment(): Promise; + + interface: UpgradeableBeaconInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + implementation: TypedContractMethod<[], [string], "view">; + + owner: TypedContractMethod<[], [string], "view">; + + renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + + transferOwnership: TypedContractMethod< + [newOwner: AddressLike], + [void], + "nonpayable" + >; + + upgradeTo: TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "implementation" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "owner" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceOwnership" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "transferOwnership" + ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "upgradeTo" + ): TypedContractMethod< + [newImplementation: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "OwnershipTransferred" + ): TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + getEvent( + key: "Upgraded" + ): TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + + filters: { + "OwnershipTransferred(address,address)": TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + OwnershipTransferred: TypedContractEvent< + OwnershipTransferredEvent.InputTuple, + OwnershipTransferredEvent.OutputTuple, + OwnershipTransferredEvent.OutputObject + >; + + "Upgraded(address)": TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + Upgraded: TypedContractEvent< + UpgradedEvent.InputTuple, + UpgradedEvent.OutputTuple, + UpgradedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Vm.sol/Vm.ts b/v2/typechain-types/Vm.sol/Vm.ts new file mode 100644 index 00000000..ea8f2670 --- /dev/null +++ b/v2/typechain-types/Vm.sol/Vm.ts @@ -0,0 +1,8230 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export declare namespace VmSafe { + export type WalletStruct = { + addr: AddressLike; + publicKeyX: BigNumberish; + publicKeyY: BigNumberish; + privateKey: BigNumberish; + }; + + export type WalletStructOutput = [ + addr: string, + publicKeyX: bigint, + publicKeyY: bigint, + privateKey: bigint + ] & { + addr: string; + publicKeyX: bigint; + publicKeyY: bigint; + privateKey: bigint; + }; + + export type EthGetLogsStruct = { + emitter: AddressLike; + topics: BytesLike[]; + data: BytesLike; + blockHash: BytesLike; + blockNumber: BigNumberish; + transactionHash: BytesLike; + transactionIndex: BigNumberish; + logIndex: BigNumberish; + removed: boolean; + }; + + export type EthGetLogsStructOutput = [ + emitter: string, + topics: string[], + data: string, + blockHash: string, + blockNumber: bigint, + transactionHash: string, + transactionIndex: bigint, + logIndex: bigint, + removed: boolean + ] & { + emitter: string; + topics: string[]; + data: string; + blockHash: string; + blockNumber: bigint; + transactionHash: string; + transactionIndex: bigint; + logIndex: bigint; + removed: boolean; + }; + + export type FsMetadataStruct = { + isDir: boolean; + isSymlink: boolean; + length: BigNumberish; + readOnly: boolean; + modified: BigNumberish; + accessed: BigNumberish; + created: BigNumberish; + }; + + export type FsMetadataStructOutput = [ + isDir: boolean, + isSymlink: boolean, + length: bigint, + readOnly: boolean, + modified: bigint, + accessed: bigint, + created: bigint + ] & { + isDir: boolean; + isSymlink: boolean; + length: bigint; + readOnly: boolean; + modified: bigint; + accessed: bigint; + created: bigint; + }; + + export type LogStruct = { + topics: BytesLike[]; + data: BytesLike; + emitter: AddressLike; + }; + + export type LogStructOutput = [ + topics: string[], + data: string, + emitter: string + ] & { topics: string[]; data: string; emitter: string }; + + export type GasStruct = { + gasLimit: BigNumberish; + gasTotalUsed: BigNumberish; + gasMemoryUsed: BigNumberish; + gasRefunded: BigNumberish; + gasRemaining: BigNumberish; + }; + + export type GasStructOutput = [ + gasLimit: bigint, + gasTotalUsed: bigint, + gasMemoryUsed: bigint, + gasRefunded: bigint, + gasRemaining: bigint + ] & { + gasLimit: bigint; + gasTotalUsed: bigint; + gasMemoryUsed: bigint; + gasRefunded: bigint; + gasRemaining: bigint; + }; + + export type DirEntryStruct = { + errorMessage: string; + path: string; + depth: BigNumberish; + isDir: boolean; + isSymlink: boolean; + }; + + export type DirEntryStructOutput = [ + errorMessage: string, + path: string, + depth: bigint, + isDir: boolean, + isSymlink: boolean + ] & { + errorMessage: string; + path: string; + depth: bigint; + isDir: boolean; + isSymlink: boolean; + }; + + export type RpcStruct = { key: string; url: string }; + + export type RpcStructOutput = [key: string, url: string] & { + key: string; + url: string; + }; + + export type ChainInfoStruct = { forkId: BigNumberish; chainId: BigNumberish }; + + export type ChainInfoStructOutput = [forkId: bigint, chainId: bigint] & { + forkId: bigint; + chainId: bigint; + }; + + export type StorageAccessStruct = { + account: AddressLike; + slot: BytesLike; + isWrite: boolean; + previousValue: BytesLike; + newValue: BytesLike; + reverted: boolean; + }; + + export type StorageAccessStructOutput = [ + account: string, + slot: string, + isWrite: boolean, + previousValue: string, + newValue: string, + reverted: boolean + ] & { + account: string; + slot: string; + isWrite: boolean; + previousValue: string; + newValue: string; + reverted: boolean; + }; + + export type AccountAccessStruct = { + chainInfo: VmSafe.ChainInfoStruct; + kind: BigNumberish; + account: AddressLike; + accessor: AddressLike; + initialized: boolean; + oldBalance: BigNumberish; + newBalance: BigNumberish; + deployedCode: BytesLike; + value: BigNumberish; + data: BytesLike; + reverted: boolean; + storageAccesses: VmSafe.StorageAccessStruct[]; + depth: BigNumberish; + }; + + export type AccountAccessStructOutput = [ + chainInfo: VmSafe.ChainInfoStructOutput, + kind: bigint, + account: string, + accessor: string, + initialized: boolean, + oldBalance: bigint, + newBalance: bigint, + deployedCode: string, + value: bigint, + data: string, + reverted: boolean, + storageAccesses: VmSafe.StorageAccessStructOutput[], + depth: bigint + ] & { + chainInfo: VmSafe.ChainInfoStructOutput; + kind: bigint; + account: string; + accessor: string; + initialized: boolean; + oldBalance: bigint; + newBalance: bigint; + deployedCode: string; + value: bigint; + data: string; + reverted: boolean; + storageAccesses: VmSafe.StorageAccessStructOutput[]; + depth: bigint; + }; + + export type FfiResultStruct = { + exitCode: BigNumberish; + stdout: BytesLike; + stderr: BytesLike; + }; + + export type FfiResultStructOutput = [ + exitCode: bigint, + stdout: string, + stderr: string + ] & { exitCode: bigint; stdout: string; stderr: string }; +} + +export interface VmInterface extends Interface { + getFunction( + nameOrSignature: + | "accesses" + | "activeFork" + | "addr" + | "allowCheatcodes" + | "assertApproxEqAbs(uint256,uint256,uint256)" + | "assertApproxEqAbs(int256,int256,uint256)" + | "assertApproxEqAbs(int256,int256,uint256,string)" + | "assertApproxEqAbs(uint256,uint256,uint256,string)" + | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" + | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" + | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" + | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" + | "assertApproxEqRel(uint256,uint256,uint256,string)" + | "assertApproxEqRel(uint256,uint256,uint256)" + | "assertApproxEqRel(int256,int256,uint256,string)" + | "assertApproxEqRel(int256,int256,uint256)" + | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" + | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" + | "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" + | "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" + | "assertEq(bytes32[],bytes32[])" + | "assertEq(int256[],int256[],string)" + | "assertEq(address,address,string)" + | "assertEq(string,string,string)" + | "assertEq(address[],address[])" + | "assertEq(address[],address[],string)" + | "assertEq(bool,bool,string)" + | "assertEq(address,address)" + | "assertEq(uint256[],uint256[],string)" + | "assertEq(bool[],bool[])" + | "assertEq(int256[],int256[])" + | "assertEq(int256,int256,string)" + | "assertEq(bytes32,bytes32)" + | "assertEq(uint256,uint256,string)" + | "assertEq(uint256[],uint256[])" + | "assertEq(bytes,bytes)" + | "assertEq(uint256,uint256)" + | "assertEq(bytes32,bytes32,string)" + | "assertEq(string[],string[])" + | "assertEq(bytes32[],bytes32[],string)" + | "assertEq(bytes,bytes,string)" + | "assertEq(bool[],bool[],string)" + | "assertEq(bytes[],bytes[])" + | "assertEq(string[],string[],string)" + | "assertEq(string,string)" + | "assertEq(bytes[],bytes[],string)" + | "assertEq(bool,bool)" + | "assertEq(int256,int256)" + | "assertEqDecimal(uint256,uint256,uint256)" + | "assertEqDecimal(int256,int256,uint256)" + | "assertEqDecimal(int256,int256,uint256,string)" + | "assertEqDecimal(uint256,uint256,uint256,string)" + | "assertFalse(bool,string)" + | "assertFalse(bool)" + | "assertGe(int256,int256)" + | "assertGe(int256,int256,string)" + | "assertGe(uint256,uint256)" + | "assertGe(uint256,uint256,string)" + | "assertGeDecimal(uint256,uint256,uint256)" + | "assertGeDecimal(int256,int256,uint256,string)" + | "assertGeDecimal(uint256,uint256,uint256,string)" + | "assertGeDecimal(int256,int256,uint256)" + | "assertGt(int256,int256)" + | "assertGt(uint256,uint256,string)" + | "assertGt(uint256,uint256)" + | "assertGt(int256,int256,string)" + | "assertGtDecimal(int256,int256,uint256,string)" + | "assertGtDecimal(uint256,uint256,uint256,string)" + | "assertGtDecimal(int256,int256,uint256)" + | "assertGtDecimal(uint256,uint256,uint256)" + | "assertLe(int256,int256,string)" + | "assertLe(uint256,uint256)" + | "assertLe(int256,int256)" + | "assertLe(uint256,uint256,string)" + | "assertLeDecimal(int256,int256,uint256)" + | "assertLeDecimal(uint256,uint256,uint256,string)" + | "assertLeDecimal(int256,int256,uint256,string)" + | "assertLeDecimal(uint256,uint256,uint256)" + | "assertLt(int256,int256)" + | "assertLt(uint256,uint256,string)" + | "assertLt(int256,int256,string)" + | "assertLt(uint256,uint256)" + | "assertLtDecimal(uint256,uint256,uint256)" + | "assertLtDecimal(int256,int256,uint256,string)" + | "assertLtDecimal(uint256,uint256,uint256,string)" + | "assertLtDecimal(int256,int256,uint256)" + | "assertNotEq(bytes32[],bytes32[])" + | "assertNotEq(int256[],int256[])" + | "assertNotEq(bool,bool,string)" + | "assertNotEq(bytes[],bytes[],string)" + | "assertNotEq(bool,bool)" + | "assertNotEq(bool[],bool[])" + | "assertNotEq(bytes,bytes)" + | "assertNotEq(address[],address[])" + | "assertNotEq(int256,int256,string)" + | "assertNotEq(uint256[],uint256[])" + | "assertNotEq(bool[],bool[],string)" + | "assertNotEq(string,string)" + | "assertNotEq(address[],address[],string)" + | "assertNotEq(string,string,string)" + | "assertNotEq(address,address,string)" + | "assertNotEq(bytes32,bytes32)" + | "assertNotEq(bytes,bytes,string)" + | "assertNotEq(uint256,uint256,string)" + | "assertNotEq(uint256[],uint256[],string)" + | "assertNotEq(address,address)" + | "assertNotEq(bytes32,bytes32,string)" + | "assertNotEq(string[],string[],string)" + | "assertNotEq(uint256,uint256)" + | "assertNotEq(bytes32[],bytes32[],string)" + | "assertNotEq(string[],string[])" + | "assertNotEq(int256[],int256[],string)" + | "assertNotEq(bytes[],bytes[])" + | "assertNotEq(int256,int256)" + | "assertNotEqDecimal(int256,int256,uint256)" + | "assertNotEqDecimal(int256,int256,uint256,string)" + | "assertNotEqDecimal(uint256,uint256,uint256)" + | "assertNotEqDecimal(uint256,uint256,uint256,string)" + | "assertTrue(bool)" + | "assertTrue(bool,string)" + | "assume" + | "blobBaseFee" + | "blobhashes" + | "breakpoint(string)" + | "breakpoint(string,bool)" + | "broadcast()" + | "broadcast(address)" + | "broadcast(uint256)" + | "chainId" + | "clearMockedCalls" + | "closeFile" + | "coinbase" + | "computeCreate2Address(bytes32,bytes32)" + | "computeCreate2Address(bytes32,bytes32,address)" + | "computeCreateAddress" + | "copyFile" + | "createDir" + | "createFork(string)" + | "createFork(string,uint256)" + | "createFork(string,bytes32)" + | "createSelectFork(string,uint256)" + | "createSelectFork(string,bytes32)" + | "createSelectFork(string)" + | "createWallet(string)" + | "createWallet(uint256)" + | "createWallet(uint256,string)" + | "deal" + | "deleteSnapshot" + | "deleteSnapshots" + | "deployCode(string,bytes)" + | "deployCode(string)" + | "deriveKey(string,string,uint32,string)" + | "deriveKey(string,uint32,string)" + | "deriveKey(string,uint32)" + | "deriveKey(string,string,uint32)" + | "difficulty" + | "dumpState" + | "ensNamehash" + | "envAddress(string)" + | "envAddress(string,string)" + | "envBool(string)" + | "envBool(string,string)" + | "envBytes(string)" + | "envBytes(string,string)" + | "envBytes32(string,string)" + | "envBytes32(string)" + | "envExists" + | "envInt(string,string)" + | "envInt(string)" + | "envOr(string,string,bytes32[])" + | "envOr(string,string,int256[])" + | "envOr(string,bool)" + | "envOr(string,address)" + | "envOr(string,uint256)" + | "envOr(string,string,bytes[])" + | "envOr(string,string,uint256[])" + | "envOr(string,string,string[])" + | "envOr(string,bytes)" + | "envOr(string,bytes32)" + | "envOr(string,int256)" + | "envOr(string,string,address[])" + | "envOr(string,string)" + | "envOr(string,string,bool[])" + | "envString(string,string)" + | "envString(string)" + | "envUint(string)" + | "envUint(string,string)" + | "etch" + | "eth_getLogs" + | "exists" + | "expectCall(address,uint256,uint64,bytes)" + | "expectCall(address,uint256,uint64,bytes,uint64)" + | "expectCall(address,uint256,bytes,uint64)" + | "expectCall(address,bytes)" + | "expectCall(address,bytes,uint64)" + | "expectCall(address,uint256,bytes)" + | "expectCallMinGas(address,uint256,uint64,bytes)" + | "expectCallMinGas(address,uint256,uint64,bytes,uint64)" + | "expectEmit()" + | "expectEmit(bool,bool,bool,bool)" + | "expectEmit(bool,bool,bool,bool,address)" + | "expectEmit(address)" + | "expectEmitAnonymous()" + | "expectEmitAnonymous(address)" + | "expectEmitAnonymous(bool,bool,bool,bool,bool,address)" + | "expectEmitAnonymous(bool,bool,bool,bool,bool)" + | "expectRevert(bytes4)" + | "expectRevert(bytes)" + | "expectRevert()" + | "expectSafeMemory" + | "expectSafeMemoryCall" + | "fee" + | "ffi" + | "fsMetadata" + | "getBlobBaseFee" + | "getBlobhashes" + | "getBlockNumber" + | "getBlockTimestamp" + | "getCode" + | "getDeployedCode" + | "getLabel" + | "getMappingKeyAndParentOf" + | "getMappingLength" + | "getMappingSlotAt" + | "getNonce(address)" + | "getNonce((address,uint256,uint256,uint256))" + | "getRecordedLogs" + | "indexOf" + | "isContext" + | "isDir" + | "isFile" + | "isPersistent" + | "keyExists" + | "keyExistsJson" + | "keyExistsToml" + | "label" + | "lastCallGas" + | "load" + | "loadAllocs" + | "makePersistent(address[])" + | "makePersistent(address,address)" + | "makePersistent(address)" + | "makePersistent(address,address,address)" + | "mockCall(address,uint256,bytes,bytes)" + | "mockCall(address,bytes,bytes)" + | "mockCallRevert(address,uint256,bytes,bytes)" + | "mockCallRevert(address,bytes,bytes)" + | "parseAddress" + | "parseBool" + | "parseBytes" + | "parseBytes32" + | "parseInt" + | "parseJson(string)" + | "parseJson(string,string)" + | "parseJsonAddress" + | "parseJsonAddressArray" + | "parseJsonBool" + | "parseJsonBoolArray" + | "parseJsonBytes" + | "parseJsonBytes32" + | "parseJsonBytes32Array" + | "parseJsonBytesArray" + | "parseJsonInt" + | "parseJsonIntArray" + | "parseJsonKeys" + | "parseJsonString" + | "parseJsonStringArray" + | "parseJsonType(string,string)" + | "parseJsonType(string,string,string)" + | "parseJsonTypeArray" + | "parseJsonUint" + | "parseJsonUintArray" + | "parseToml(string,string)" + | "parseToml(string)" + | "parseTomlAddress" + | "parseTomlAddressArray" + | "parseTomlBool" + | "parseTomlBoolArray" + | "parseTomlBytes" + | "parseTomlBytes32" + | "parseTomlBytes32Array" + | "parseTomlBytesArray" + | "parseTomlInt" + | "parseTomlIntArray" + | "parseTomlKeys" + | "parseTomlString" + | "parseTomlStringArray" + | "parseTomlUint" + | "parseTomlUintArray" + | "parseUint" + | "pauseGasMetering" + | "prank(address,address)" + | "prank(address)" + | "prevrandao(bytes32)" + | "prevrandao(uint256)" + | "projectRoot" + | "prompt" + | "promptAddress" + | "promptSecret" + | "promptSecretUint" + | "promptUint" + | "randomAddress" + | "randomUint()" + | "randomUint(uint256,uint256)" + | "readCallers" + | "readDir(string,uint64)" + | "readDir(string,uint64,bool)" + | "readDir(string)" + | "readFile" + | "readFileBinary" + | "readLine" + | "readLink" + | "record" + | "recordLogs" + | "rememberKey" + | "removeDir" + | "removeFile" + | "replace" + | "resetNonce" + | "resumeGasMetering" + | "revertTo" + | "revertToAndDelete" + | "revokePersistent(address[])" + | "revokePersistent(address)" + | "roll" + | "rollFork(bytes32)" + | "rollFork(uint256,uint256)" + | "rollFork(uint256)" + | "rollFork(uint256,bytes32)" + | "rpc(string,string,string)" + | "rpc(string,string)" + | "rpcUrl" + | "rpcUrlStructs" + | "rpcUrls" + | "selectFork" + | "serializeAddress(string,string,address[])" + | "serializeAddress(string,string,address)" + | "serializeBool(string,string,bool[])" + | "serializeBool(string,string,bool)" + | "serializeBytes(string,string,bytes[])" + | "serializeBytes(string,string,bytes)" + | "serializeBytes32(string,string,bytes32[])" + | "serializeBytes32(string,string,bytes32)" + | "serializeInt(string,string,int256)" + | "serializeInt(string,string,int256[])" + | "serializeJson" + | "serializeJsonType(string,bytes)" + | "serializeJsonType(string,string,string,bytes)" + | "serializeString(string,string,string[])" + | "serializeString(string,string,string)" + | "serializeUint(string,string,uint256)" + | "serializeUint(string,string,uint256[])" + | "serializeUintToHex" + | "setBlockhash" + | "setEnv" + | "setNonce" + | "setNonceUnsafe" + | "sign(bytes32)" + | "sign(address,bytes32)" + | "sign((address,uint256,uint256,uint256),bytes32)" + | "sign(uint256,bytes32)" + | "signP256" + | "skip" + | "sleep" + | "snapshot" + | "split" + | "startBroadcast()" + | "startBroadcast(address)" + | "startBroadcast(uint256)" + | "startMappingRecording" + | "startPrank(address)" + | "startPrank(address,address)" + | "startStateDiffRecording" + | "stopAndReturnStateDiff" + | "stopBroadcast" + | "stopExpectSafeMemory" + | "stopMappingRecording" + | "stopPrank" + | "store" + | "toBase64(string)" + | "toBase64(bytes)" + | "toBase64URL(string)" + | "toBase64URL(bytes)" + | "toLowercase" + | "toString(address)" + | "toString(uint256)" + | "toString(bytes)" + | "toString(bool)" + | "toString(int256)" + | "toString(bytes32)" + | "toUppercase" + | "transact(uint256,bytes32)" + | "transact(bytes32)" + | "trim" + | "tryFfi" + | "txGasPrice" + | "unixTime" + | "warp" + | "writeFile" + | "writeFileBinary" + | "writeJson(string,string,string)" + | "writeJson(string,string)" + | "writeLine" + | "writeToml(string,string,string)" + | "writeToml(string,string)" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "accesses", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "activeFork", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "addr", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "allowCheatcodes", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32[],bytes32[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256[],int256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address,address,string)", + values: [AddressLike, AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address[],address[])", + values: [AddressLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address[],address[],string)", + values: [AddressLike[], AddressLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool,bool,string)", + values: [boolean, boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256[],uint256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool[],bool[])", + values: [boolean[], boolean[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256[],int256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256[],uint256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes,bytes)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32,bytes32,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string[],string[])", + values: [string[], string[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32[],bytes32[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes,bytes,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool[],bool[],string)", + values: [boolean[], boolean[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes[],bytes[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string[],string[],string)", + values: [string[], string[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes[],bytes[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool,bool)", + values: [boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertFalse(bool,string)", + values: [boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertFalse(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "assertGe(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGe(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGe(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGe(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGt(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLe(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLt(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLt(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLt(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLt(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32[],bytes32[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256[],int256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool,bool,string)", + values: [boolean, boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes[],bytes[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool,bool)", + values: [boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool[],bool[])", + values: [boolean[], boolean[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes,bytes)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address[],address[])", + values: [AddressLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256[],uint256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool[],bool[],string)", + values: [boolean[], boolean[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address[],address[],string)", + values: [AddressLike[], AddressLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address,address,string)", + values: [AddressLike, AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes,bytes,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256[],uint256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32,bytes32,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string[],string[],string)", + values: [string[], string[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32[],bytes32[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string[],string[])", + values: [string[], string[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256[],int256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes[],bytes[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertTrue(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "assertTrue(bool,string)", + values: [boolean, string] + ): string; + encodeFunctionData(functionFragment: "assume", values: [boolean]): string; + encodeFunctionData( + functionFragment: "blobBaseFee", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "blobhashes", + values: [BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "breakpoint(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "breakpoint(string,bool)", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "broadcast()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "broadcast(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "broadcast(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "chainId", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "clearMockedCalls", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "closeFile", values: [string]): string; + encodeFunctionData( + functionFragment: "coinbase", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "computeCreate2Address(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "computeCreate2Address(bytes32,bytes32,address)", + values: [BytesLike, BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "computeCreateAddress", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "copyFile", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "createDir", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "createFork(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "createFork(string,uint256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "createFork(string,bytes32)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "createSelectFork(string,uint256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "createSelectFork(string,bytes32)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "createSelectFork(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "createWallet(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "createWallet(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "createWallet(uint256,string)", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deal", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "deleteSnapshot", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "deleteSnapshots", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deployCode(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deployCode(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,string,uint32,string)", + values: [string, string, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,uint32,string)", + values: [string, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,uint32)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,string,uint32)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "difficulty", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "dumpState", values: [string]): string; + encodeFunctionData(functionFragment: "ensNamehash", values: [string]): string; + encodeFunctionData( + functionFragment: "envAddress(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envAddress(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBool(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envBool(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envBytes(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes32(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes32(string)", + values: [string] + ): string; + encodeFunctionData(functionFragment: "envExists", values: [string]): string; + encodeFunctionData( + functionFragment: "envInt(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envInt(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bytes32[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,int256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bool)", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,address)", + values: [string, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,uint256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bytes[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,uint256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,string[])", + values: [string, string, string[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bytes32)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,int256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,address[])", + values: [string, string, AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bool[])", + values: [string, string, boolean[]] + ): string; + encodeFunctionData( + functionFragment: "envString(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envString(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envUint(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envUint(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "etch", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "eth_getLogs", + values: [BigNumberish, BigNumberish, AddressLike, BytesLike[]] + ): string; + encodeFunctionData(functionFragment: "exists", values: [string]): string; + encodeFunctionData( + functionFragment: "expectCall(address,uint256,uint64,bytes)", + values: [AddressLike, BigNumberish, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectCall(address,uint256,uint64,bytes,uint64)", + values: [AddressLike, BigNumberish, BigNumberish, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "expectCall(address,uint256,bytes,uint64)", + values: [AddressLike, BigNumberish, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "expectCall(address,bytes)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectCall(address,bytes,uint64)", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "expectCall(address,uint256,bytes)", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectCallMinGas(address,uint256,uint64,bytes)", + values: [AddressLike, BigNumberish, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectCallMinGas(address,uint256,uint64,bytes,uint64)", + values: [AddressLike, BigNumberish, BigNumberish, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "expectEmit()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "expectEmit(bool,bool,bool,bool)", + values: [boolean, boolean, boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "expectEmit(bool,bool,bool,bool,address)", + values: [boolean, boolean, boolean, boolean, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "expectEmit(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "expectEmitAnonymous()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "expectEmitAnonymous(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "expectEmitAnonymous(bool,bool,bool,bool,bool,address)", + values: [boolean, boolean, boolean, boolean, boolean, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "expectEmitAnonymous(bool,bool,bool,bool,bool)", + values: [boolean, boolean, boolean, boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "expectRevert(bytes4)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectRevert(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "expectRevert()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "expectSafeMemory", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "expectSafeMemoryCall", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "fee", values: [BigNumberish]): string; + encodeFunctionData(functionFragment: "ffi", values: [string[]]): string; + encodeFunctionData(functionFragment: "fsMetadata", values: [string]): string; + encodeFunctionData( + functionFragment: "getBlobBaseFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlobhashes", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockNumber", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockTimestamp", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getCode", values: [string]): string; + encodeFunctionData( + functionFragment: "getDeployedCode", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "getLabel", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingKeyAndParentOf", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingLength", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingSlotAt", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getNonce(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getNonce((address,uint256,uint256,uint256))", + values: [VmSafe.WalletStruct] + ): string; + encodeFunctionData( + functionFragment: "getRecordedLogs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "indexOf", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "isContext", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "isDir", values: [string]): string; + encodeFunctionData(functionFragment: "isFile", values: [string]): string; + encodeFunctionData( + functionFragment: "isPersistent", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "keyExists", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "keyExistsJson", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "keyExistsToml", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "label", + values: [AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "lastCallGas", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "load", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "loadAllocs", values: [string]): string; + encodeFunctionData( + functionFragment: "makePersistent(address[])", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "makePersistent(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "makePersistent(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "makePersistent(address,address,address)", + values: [AddressLike, AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "mockCall(address,uint256,bytes,bytes)", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "mockCall(address,bytes,bytes)", + values: [AddressLike, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "mockCallRevert(address,uint256,bytes,bytes)", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "mockCallRevert(address,bytes,bytes)", + values: [AddressLike, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "parseAddress", + values: [string] + ): string; + encodeFunctionData(functionFragment: "parseBool", values: [string]): string; + encodeFunctionData(functionFragment: "parseBytes", values: [string]): string; + encodeFunctionData( + functionFragment: "parseBytes32", + values: [string] + ): string; + encodeFunctionData(functionFragment: "parseInt", values: [string]): string; + encodeFunctionData( + functionFragment: "parseJson(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "parseJson(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonAddress", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonAddressArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBool", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBoolArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes32", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes32Array", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytesArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonInt", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonIntArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonKeys", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonString", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonStringArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonType(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonType(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonTypeArray", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonUint", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonUintArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseToml(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseToml(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlAddress", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlAddressArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBool", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBoolArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes32", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes32Array", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytesArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlInt", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlIntArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlKeys", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlString", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlStringArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlUint", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlUintArray", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "parseUint", values: [string]): string; + encodeFunctionData( + functionFragment: "pauseGasMetering", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "prank(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "prank(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "prevrandao(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "prevrandao(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "projectRoot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "prompt", values: [string]): string; + encodeFunctionData( + functionFragment: "promptAddress", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "promptSecret", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "promptSecretUint", + values: [string] + ): string; + encodeFunctionData(functionFragment: "promptUint", values: [string]): string; + encodeFunctionData( + functionFragment: "randomAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "randomUint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "randomUint(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "readCallers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "readDir(string,uint64)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "readDir(string,uint64,bool)", + values: [string, BigNumberish, boolean] + ): string; + encodeFunctionData( + functionFragment: "readDir(string)", + values: [string] + ): string; + encodeFunctionData(functionFragment: "readFile", values: [string]): string; + encodeFunctionData( + functionFragment: "readFileBinary", + values: [string] + ): string; + encodeFunctionData(functionFragment: "readLine", values: [string]): string; + encodeFunctionData(functionFragment: "readLink", values: [string]): string; + encodeFunctionData(functionFragment: "record", values?: undefined): string; + encodeFunctionData( + functionFragment: "recordLogs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "rememberKey", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "removeDir", + values: [string, boolean] + ): string; + encodeFunctionData(functionFragment: "removeFile", values: [string]): string; + encodeFunctionData( + functionFragment: "replace", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "resetNonce", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "resumeGasMetering", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "revertTo", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "revertToAndDelete", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "revokePersistent(address[])", + values: [AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "revokePersistent(address)", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "roll", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "rollFork(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "rollFork(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "rollFork(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "rollFork(uint256,bytes32)", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "rpc(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "rpc(string,string)", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "rpcUrl", values: [string]): string; + encodeFunctionData( + functionFragment: "rpcUrlStructs", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "rpcUrls", values?: undefined): string; + encodeFunctionData( + functionFragment: "selectFork", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "serializeAddress(string,string,address[])", + values: [string, string, AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeAddress(string,string,address)", + values: [string, string, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "serializeBool(string,string,bool[])", + values: [string, string, boolean[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBool(string,string,bool)", + values: [string, string, boolean] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes(string,string,bytes[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes(string,string,bytes)", + values: [string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes32(string,string,bytes32[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes32(string,string,bytes32)", + values: [string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeInt(string,string,int256)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "serializeInt(string,string,int256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "serializeJson", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "serializeJsonType(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeJsonType(string,string,string,bytes)", + values: [string, string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeString(string,string,string[])", + values: [string, string, string[]] + ): string; + encodeFunctionData( + functionFragment: "serializeString(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "serializeUint(string,string,uint256)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "serializeUint(string,string,uint256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "serializeUintToHex", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setBlockhash", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setEnv", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "setNonce", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setNonceUnsafe", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "sign(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign(address,bytes32)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", + values: [VmSafe.WalletStruct, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign(uint256,bytes32)", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "signP256", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData(functionFragment: "skip", values: [boolean]): string; + encodeFunctionData(functionFragment: "sleep", values: [BigNumberish]): string; + encodeFunctionData(functionFragment: "snapshot", values?: undefined): string; + encodeFunctionData( + functionFragment: "split", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "startBroadcast()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startBroadcast(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "startBroadcast(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "startMappingRecording", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startPrank(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "startPrank(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "startStateDiffRecording", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopAndReturnStateDiff", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopBroadcast", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopExpectSafeMemory", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopMappingRecording", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "stopPrank", values?: undefined): string; + encodeFunctionData( + functionFragment: "store", + values: [AddressLike, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "toBase64(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "toBase64(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "toBase64URL(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "toBase64URL(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "toLowercase", values: [string]): string; + encodeFunctionData( + functionFragment: "toString(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "toString(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "toString(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "toString(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "toString(int256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "toString(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "toUppercase", values: [string]): string; + encodeFunctionData( + functionFragment: "transact(uint256,bytes32)", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transact(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "trim", values: [string]): string; + encodeFunctionData(functionFragment: "tryFfi", values: [string[]]): string; + encodeFunctionData( + functionFragment: "txGasPrice", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "unixTime", values?: undefined): string; + encodeFunctionData(functionFragment: "warp", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "writeFile", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeFileBinary", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "writeJson(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "writeJson(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeLine", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeToml(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "writeToml(string,string)", + values: [string, string] + ): string; + + decodeFunctionResult(functionFragment: "accesses", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "activeFork", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "addr", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowCheatcodes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32[],bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256[],int256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address,address,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address[],address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address[],address[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool,bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256[],uint256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool[],bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256[],int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256[],uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32,bytes32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string[],string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32[],bytes32[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes,bytes,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool[],bool[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes[],bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string[],string[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes[],bytes[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertFalse(bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertFalse(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32[],bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256[],int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool,bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes[],bytes[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool[],bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address[],address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256[],uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool[],bool[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address[],address[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address,address,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes,bytes,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256[],uint256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32,bytes32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string[],string[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32[],bytes32[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string[],string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256[],int256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes[],bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertTrue(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertTrue(bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "assume", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "blobBaseFee", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "blobhashes", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "breakpoint(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "breakpoint(string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "clearMockedCalls", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "closeFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "coinbase", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "computeCreate2Address(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "computeCreate2Address(bytes32,bytes32,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "computeCreateAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "copyFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "createDir", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createFork(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createFork(string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createFork(string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createSelectFork(string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createSelectFork(string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createSelectFork(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createWallet(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createWallet(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createWallet(uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deal", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deleteSnapshot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deleteSnapshots", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployCode(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployCode(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,string,uint32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,uint32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,uint32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,string,uint32)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "difficulty", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "dumpState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensNamehash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envAddress(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envAddress(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBool(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBool(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes32(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes32(string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "envExists", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "envInt(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envInt(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envString(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envString(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envUint(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envUint(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "etch", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "eth_getLogs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,uint256,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,uint256,uint64,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,uint256,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCall(address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCallMinGas(address,uint256,uint64,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectCallMinGas(address,uint256,uint64,bytes,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmit()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmit(bool,bool,bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmit(bool,bool,bool,bool,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmit(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmitAnonymous()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmitAnonymous(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmitAnonymous(bool,bool,bool,bool,bool,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectEmitAnonymous(bool,bool,bool,bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectRevert(bytes4)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectRevert(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectRevert()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectSafeMemory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "expectSafeMemoryCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "fee", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ffi", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fsMetadata", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getBlobBaseFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlobhashes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockNumber", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getCode", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDeployedCode", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getLabel", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMappingKeyAndParentOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMappingLength", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMappingSlotAt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNonce(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNonce((address,uint256,uint256,uint256))", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecordedLogs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "indexOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isContext", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isDir", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isPersistent", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "keyExists", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "keyExistsJson", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "keyExistsToml", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "label", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lastCallGas", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "load", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "loadAllocs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "makePersistent(address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "makePersistent(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "makePersistent(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "makePersistent(address,address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mockCall(address,uint256,bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mockCall(address,bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mockCallRevert(address,uint256,bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mockCallRevert(address,bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseBool", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "parseBytes", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseBytes32", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseInt", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseJson(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJson(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonAddressArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBool", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBoolArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes32", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes32Array", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytesArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonInt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonIntArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonString", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonStringArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonType(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonType(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonTypeArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonUint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonUintArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseToml(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseToml(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlAddressArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBool", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBoolArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes32", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes32Array", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytesArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlInt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlIntArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlString", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlStringArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlUint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlUintArray", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseUint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pauseGasMetering", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "prank(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "prank(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "prevrandao(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "prevrandao(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "projectRoot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "prompt", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "promptAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "promptSecret", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "promptSecretUint", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "promptUint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "randomAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "randomUint()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "randomUint(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readCallers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string,uint64,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "readFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "readFileBinary", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "readLine", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "readLink", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "record", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "recordLogs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rememberKey", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "removeDir", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "removeFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "replace", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resetNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "resumeGasMetering", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revertTo", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "revertToAndDelete", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokePersistent(address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokePersistent(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "roll", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rollFork(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rollFork(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rollFork(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rollFork(uint256,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rpc(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rpc(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "rpcUrl", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rpcUrlStructs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "rpcUrls", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "selectFork", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "serializeAddress(string,string,address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeAddress(string,string,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBool(string,string,bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBool(string,string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes(string,string,bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes(string,string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes32(string,string,bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes32(string,string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeInt(string,string,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeInt(string,string,int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJson", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJsonType(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJsonType(string,string,string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeString(string,string,string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeString(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUint(string,string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUint(string,string,uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUintToHex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setBlockhash", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setEnv", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setNonce", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setNonceUnsafe", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign(address,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign(uint256,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "signP256", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "skip", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "sleep", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "snapshot", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "split", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "startBroadcast()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startBroadcast(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startBroadcast(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startMappingRecording", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startPrank(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startPrank(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startStateDiffRecording", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopAndReturnStateDiff", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopBroadcast", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopExpectSafeMemory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopMappingRecording", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stopPrank", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "store", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "toBase64(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64URL(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64URL(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toLowercase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toUppercase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transact(uint256,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transact(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "trim", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tryFfi", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "txGasPrice", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unixTime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "warp", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "writeFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "writeFileBinary", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeJson(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeJson(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "writeLine", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "writeToml(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeToml(string,string)", + data: BytesLike + ): Result; +} + +export interface Vm extends BaseContract { + connect(runner?: ContractRunner | null): Vm; + waitForDeployment(): Promise; + + interface: VmInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + accesses: TypedContractMethod< + [target: AddressLike], + [[string[], string[]] & { readSlots: string[]; writeSlots: string[] }], + "nonpayable" + >; + + activeFork: TypedContractMethod<[], [bigint], "view">; + + addr: TypedContractMethod<[privateKey: BigNumberish], [string], "view">; + + allowCheatcodes: TypedContractMethod< + [account: AddressLike], + [void], + "nonpayable" + >; + + "assertApproxEqAbs(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqAbs(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqAbs(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbs(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqRel(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(int256,int256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertEq(bytes32[],bytes32[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertEq(int256[],int256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertEq(address,address,string)": TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + + "assertEq(string,string,string)": TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + + "assertEq(address[],address[])": TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + + "assertEq(address[],address[],string)": TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + + "assertEq(bool,bool,string)": TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + + "assertEq(address,address)": TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + + "assertEq(uint256[],uint256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertEq(bool[],bool[])": TypedContractMethod< + [left: boolean[], right: boolean[]], + [void], + "view" + >; + + "assertEq(int256[],int256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertEq(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertEq(bytes32,bytes32)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertEq(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertEq(uint256[],uint256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertEq(bytes,bytes)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertEq(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertEq(bytes32,bytes32,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertEq(string[],string[])": TypedContractMethod< + [left: string[], right: string[]], + [void], + "view" + >; + + "assertEq(bytes32[],bytes32[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertEq(bytes,bytes,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertEq(bool[],bool[],string)": TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + + "assertEq(bytes[],bytes[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertEq(string[],string[],string)": TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + + "assertEq(string,string)": TypedContractMethod< + [left: string, right: string], + [void], + "view" + >; + + "assertEq(bytes[],bytes[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertEq(bool,bool)": TypedContractMethod< + [left: boolean, right: boolean], + [void], + "view" + >; + + "assertEq(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertEqDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertFalse(bool,string)": TypedContractMethod< + [condition: boolean, error: string], + [void], + "view" + >; + + "assertFalse(bool)": TypedContractMethod< + [condition: boolean], + [void], + "view" + >; + + "assertGe(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGe(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGe(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGe(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGeDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGeDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGeDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGeDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGt(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGt(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGt(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGt(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGtDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGtDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGtDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGtDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLe(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLe(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLe(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLe(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLeDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLeDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLeDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLeDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLt(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLt(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLt(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLt(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLtDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLtDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLtDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLtDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEq(bytes32[],bytes32[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertNotEq(int256[],int256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertNotEq(bool,bool,string)": TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + + "assertNotEq(bytes[],bytes[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertNotEq(bool,bool)": TypedContractMethod< + [left: boolean, right: boolean], + [void], + "view" + >; + + "assertNotEq(bool[],bool[])": TypedContractMethod< + [left: boolean[], right: boolean[]], + [void], + "view" + >; + + "assertNotEq(bytes,bytes)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertNotEq(address[],address[])": TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + + "assertNotEq(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertNotEq(uint256[],uint256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertNotEq(bool[],bool[],string)": TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + + "assertNotEq(string,string)": TypedContractMethod< + [left: string, right: string], + [void], + "view" + >; + + "assertNotEq(address[],address[],string)": TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + + "assertNotEq(string,string,string)": TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + + "assertNotEq(address,address,string)": TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + + "assertNotEq(bytes32,bytes32)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertNotEq(bytes,bytes,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertNotEq(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertNotEq(uint256[],uint256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertNotEq(address,address)": TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + + "assertNotEq(bytes32,bytes32,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertNotEq(string[],string[],string)": TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + + "assertNotEq(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertNotEq(bytes32[],bytes32[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertNotEq(string[],string[])": TypedContractMethod< + [left: string[], right: string[]], + [void], + "view" + >; + + "assertNotEq(int256[],int256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertNotEq(bytes[],bytes[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertNotEq(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertNotEqDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertTrue(bool)": TypedContractMethod<[condition: boolean], [void], "view">; + + "assertTrue(bool,string)": TypedContractMethod< + [condition: boolean, error: string], + [void], + "view" + >; + + assume: TypedContractMethod<[condition: boolean], [void], "view">; + + blobBaseFee: TypedContractMethod< + [newBlobBaseFee: BigNumberish], + [void], + "nonpayable" + >; + + blobhashes: TypedContractMethod<[hashes: BytesLike[]], [void], "nonpayable">; + + "breakpoint(string)": TypedContractMethod< + [char: string], + [void], + "nonpayable" + >; + + "breakpoint(string,bool)": TypedContractMethod< + [char: string, value: boolean], + [void], + "nonpayable" + >; + + "broadcast()": TypedContractMethod<[], [void], "nonpayable">; + + "broadcast(address)": TypedContractMethod< + [signer: AddressLike], + [void], + "nonpayable" + >; + + "broadcast(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [void], + "nonpayable" + >; + + chainId: TypedContractMethod< + [newChainId: BigNumberish], + [void], + "nonpayable" + >; + + clearMockedCalls: TypedContractMethod<[], [void], "nonpayable">; + + closeFile: TypedContractMethod<[path: string], [void], "nonpayable">; + + coinbase: TypedContractMethod< + [newCoinbase: AddressLike], + [void], + "nonpayable" + >; + + "computeCreate2Address(bytes32,bytes32)": TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike], + [string], + "view" + >; + + "computeCreate2Address(bytes32,bytes32,address)": TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike, deployer: AddressLike], + [string], + "view" + >; + + computeCreateAddress: TypedContractMethod< + [deployer: AddressLike, nonce: BigNumberish], + [string], + "view" + >; + + copyFile: TypedContractMethod< + [from: string, to: string], + [bigint], + "nonpayable" + >; + + createDir: TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + + "createFork(string)": TypedContractMethod< + [urlOrAlias: string], + [bigint], + "nonpayable" + >; + + "createFork(string,uint256)": TypedContractMethod< + [urlOrAlias: string, blockNumber: BigNumberish], + [bigint], + "nonpayable" + >; + + "createFork(string,bytes32)": TypedContractMethod< + [urlOrAlias: string, txHash: BytesLike], + [bigint], + "nonpayable" + >; + + "createSelectFork(string,uint256)": TypedContractMethod< + [urlOrAlias: string, blockNumber: BigNumberish], + [bigint], + "nonpayable" + >; + + "createSelectFork(string,bytes32)": TypedContractMethod< + [urlOrAlias: string, txHash: BytesLike], + [bigint], + "nonpayable" + >; + + "createSelectFork(string)": TypedContractMethod< + [urlOrAlias: string], + [bigint], + "nonpayable" + >; + + "createWallet(string)": TypedContractMethod< + [walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + "createWallet(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + "createWallet(uint256,string)": TypedContractMethod< + [privateKey: BigNumberish, walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + deal: TypedContractMethod< + [account: AddressLike, newBalance: BigNumberish], + [void], + "nonpayable" + >; + + deleteSnapshot: TypedContractMethod< + [snapshotId: BigNumberish], + [boolean], + "nonpayable" + >; + + deleteSnapshots: TypedContractMethod<[], [void], "nonpayable">; + + "deployCode(string,bytes)": TypedContractMethod< + [artifactPath: string, constructorArgs: BytesLike], + [string], + "nonpayable" + >; + + "deployCode(string)": TypedContractMethod< + [artifactPath: string], + [string], + "nonpayable" + >; + + "deriveKey(string,string,uint32,string)": TypedContractMethod< + [ + mnemonic: string, + derivationPath: string, + index: BigNumberish, + language: string + ], + [bigint], + "view" + >; + + "deriveKey(string,uint32,string)": TypedContractMethod< + [mnemonic: string, index: BigNumberish, language: string], + [bigint], + "view" + >; + + "deriveKey(string,uint32)": TypedContractMethod< + [mnemonic: string, index: BigNumberish], + [bigint], + "view" + >; + + "deriveKey(string,string,uint32)": TypedContractMethod< + [mnemonic: string, derivationPath: string, index: BigNumberish], + [bigint], + "view" + >; + + difficulty: TypedContractMethod< + [newDifficulty: BigNumberish], + [void], + "nonpayable" + >; + + dumpState: TypedContractMethod< + [pathToStateJson: string], + [void], + "nonpayable" + >; + + ensNamehash: TypedContractMethod<[name: string], [string], "view">; + + "envAddress(string)": TypedContractMethod<[name: string], [string], "view">; + + "envAddress(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBool(string)": TypedContractMethod<[name: string], [boolean], "view">; + + "envBool(string,string)": TypedContractMethod< + [name: string, delim: string], + [boolean[]], + "view" + >; + + "envBytes(string)": TypedContractMethod<[name: string], [string], "view">; + + "envBytes(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBytes32(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBytes32(string)": TypedContractMethod<[name: string], [string], "view">; + + envExists: TypedContractMethod<[name: string], [boolean], "view">; + + "envInt(string,string)": TypedContractMethod< + [name: string, delim: string], + [bigint[]], + "view" + >; + + "envInt(string)": TypedContractMethod<[name: string], [bigint], "view">; + + "envOr(string,string,bytes32[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + + "envOr(string,string,int256[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + + "envOr(string,bool)": TypedContractMethod< + [name: string, defaultValue: boolean], + [boolean], + "view" + >; + + "envOr(string,address)": TypedContractMethod< + [name: string, defaultValue: AddressLike], + [string], + "view" + >; + + "envOr(string,uint256)": TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + + "envOr(string,string,bytes[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + + "envOr(string,string,uint256[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + + "envOr(string,string,string[])": TypedContractMethod< + [name: string, delim: string, defaultValue: string[]], + [string[]], + "view" + >; + + "envOr(string,bytes)": TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + + "envOr(string,bytes32)": TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + + "envOr(string,int256)": TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + + "envOr(string,string,address[])": TypedContractMethod< + [name: string, delim: string, defaultValue: AddressLike[]], + [string[]], + "view" + >; + + "envOr(string,string)": TypedContractMethod< + [name: string, defaultValue: string], + [string], + "view" + >; + + "envOr(string,string,bool[])": TypedContractMethod< + [name: string, delim: string, defaultValue: boolean[]], + [boolean[]], + "view" + >; + + "envString(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envString(string)": TypedContractMethod<[name: string], [string], "view">; + + "envUint(string)": TypedContractMethod<[name: string], [bigint], "view">; + + "envUint(string,string)": TypedContractMethod< + [name: string, delim: string], + [bigint[]], + "view" + >; + + etch: TypedContractMethod< + [target: AddressLike, newRuntimeBytecode: BytesLike], + [void], + "nonpayable" + >; + + eth_getLogs: TypedContractMethod< + [ + fromBlock: BigNumberish, + toBlock: BigNumberish, + target: AddressLike, + topics: BytesLike[] + ], + [VmSafe.EthGetLogsStructOutput[]], + "nonpayable" + >; + + exists: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + "expectCall(address,uint256,uint64,bytes)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + gas: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + "expectCall(address,uint256,uint64,bytes,uint64)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + gas: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + + "expectCall(address,uint256,bytes,uint64)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + + "expectCall(address,bytes)": TypedContractMethod< + [callee: AddressLike, data: BytesLike], + [void], + "nonpayable" + >; + + "expectCall(address,bytes,uint64)": TypedContractMethod< + [callee: AddressLike, data: BytesLike, count: BigNumberish], + [void], + "nonpayable" + >; + + "expectCall(address,uint256,bytes)": TypedContractMethod< + [callee: AddressLike, msgValue: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + + "expectCallMinGas(address,uint256,uint64,bytes)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + minGas: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + + "expectCallMinGas(address,uint256,uint64,bytes,uint64)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + minGas: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + + "expectEmit()": TypedContractMethod<[], [void], "nonpayable">; + + "expectEmit(bool,bool,bool,bool)": TypedContractMethod< + [ + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean + ], + [void], + "nonpayable" + >; + + "expectEmit(bool,bool,bool,bool,address)": TypedContractMethod< + [ + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean, + emitter: AddressLike + ], + [void], + "nonpayable" + >; + + "expectEmit(address)": TypedContractMethod< + [emitter: AddressLike], + [void], + "nonpayable" + >; + + "expectEmitAnonymous()": TypedContractMethod<[], [void], "nonpayable">; + + "expectEmitAnonymous(address)": TypedContractMethod< + [emitter: AddressLike], + [void], + "nonpayable" + >; + + "expectEmitAnonymous(bool,bool,bool,bool,bool,address)": TypedContractMethod< + [ + checkTopic0: boolean, + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean, + emitter: AddressLike + ], + [void], + "nonpayable" + >; + + "expectEmitAnonymous(bool,bool,bool,bool,bool)": TypedContractMethod< + [ + checkTopic0: boolean, + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean + ], + [void], + "nonpayable" + >; + + "expectRevert(bytes4)": TypedContractMethod< + [revertData: BytesLike], + [void], + "nonpayable" + >; + + "expectRevert(bytes)": TypedContractMethod< + [revertData: BytesLike], + [void], + "nonpayable" + >; + + "expectRevert()": TypedContractMethod<[], [void], "nonpayable">; + + expectSafeMemory: TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [void], + "nonpayable" + >; + + expectSafeMemoryCall: TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [void], + "nonpayable" + >; + + fee: TypedContractMethod<[newBasefee: BigNumberish], [void], "nonpayable">; + + ffi: TypedContractMethod<[commandInput: string[]], [string], "nonpayable">; + + fsMetadata: TypedContractMethod< + [path: string], + [VmSafe.FsMetadataStructOutput], + "view" + >; + + getBlobBaseFee: TypedContractMethod<[], [bigint], "view">; + + getBlobhashes: TypedContractMethod<[], [string[]], "view">; + + getBlockNumber: TypedContractMethod<[], [bigint], "view">; + + getBlockTimestamp: TypedContractMethod<[], [bigint], "view">; + + getCode: TypedContractMethod<[artifactPath: string], [string], "view">; + + getDeployedCode: TypedContractMethod< + [artifactPath: string], + [string], + "view" + >; + + getLabel: TypedContractMethod<[account: AddressLike], [string], "view">; + + getMappingKeyAndParentOf: TypedContractMethod< + [target: AddressLike, elementSlot: BytesLike], + [ + [boolean, string, string] & { + found: boolean; + key: string; + parent: string; + } + ], + "nonpayable" + >; + + getMappingLength: TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike], + [bigint], + "nonpayable" + >; + + getMappingSlotAt: TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike, idx: BigNumberish], + [string], + "nonpayable" + >; + + "getNonce(address)": TypedContractMethod< + [account: AddressLike], + [bigint], + "view" + >; + + "getNonce((address,uint256,uint256,uint256))": TypedContractMethod< + [wallet: VmSafe.WalletStruct], + [bigint], + "nonpayable" + >; + + getRecordedLogs: TypedContractMethod< + [], + [VmSafe.LogStructOutput[]], + "nonpayable" + >; + + indexOf: TypedContractMethod<[input: string, key: string], [bigint], "view">; + + isContext: TypedContractMethod<[context: BigNumberish], [boolean], "view">; + + isDir: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + isFile: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + isPersistent: TypedContractMethod<[account: AddressLike], [boolean], "view">; + + keyExists: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + keyExistsJson: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + keyExistsToml: TypedContractMethod< + [toml: string, key: string], + [boolean], + "view" + >; + + label: TypedContractMethod< + [account: AddressLike, newLabel: string], + [void], + "nonpayable" + >; + + lastCallGas: TypedContractMethod<[], [VmSafe.GasStructOutput], "view">; + + load: TypedContractMethod< + [target: AddressLike, slot: BytesLike], + [string], + "view" + >; + + loadAllocs: TypedContractMethod< + [pathToAllocsJson: string], + [void], + "nonpayable" + >; + + "makePersistent(address[])": TypedContractMethod< + [accounts: AddressLike[]], + [void], + "nonpayable" + >; + + "makePersistent(address,address)": TypedContractMethod< + [account0: AddressLike, account1: AddressLike], + [void], + "nonpayable" + >; + + "makePersistent(address)": TypedContractMethod< + [account: AddressLike], + [void], + "nonpayable" + >; + + "makePersistent(address,address,address)": TypedContractMethod< + [account0: AddressLike, account1: AddressLike, account2: AddressLike], + [void], + "nonpayable" + >; + + "mockCall(address,uint256,bytes,bytes)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + returnData: BytesLike + ], + [void], + "nonpayable" + >; + + "mockCall(address,bytes,bytes)": TypedContractMethod< + [callee: AddressLike, data: BytesLike, returnData: BytesLike], + [void], + "nonpayable" + >; + + "mockCallRevert(address,uint256,bytes,bytes)": TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + revertData: BytesLike + ], + [void], + "nonpayable" + >; + + "mockCallRevert(address,bytes,bytes)": TypedContractMethod< + [callee: AddressLike, data: BytesLike, revertData: BytesLike], + [void], + "nonpayable" + >; + + parseAddress: TypedContractMethod< + [stringifiedValue: string], + [string], + "view" + >; + + parseBool: TypedContractMethod<[stringifiedValue: string], [boolean], "view">; + + parseBytes: TypedContractMethod<[stringifiedValue: string], [string], "view">; + + parseBytes32: TypedContractMethod< + [stringifiedValue: string], + [string], + "view" + >; + + parseInt: TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + + "parseJson(string)": TypedContractMethod<[json: string], [string], "view">; + + "parseJson(string,string)": TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonAddress: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonAddressArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonBool: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + parseJsonBoolArray: TypedContractMethod< + [json: string, key: string], + [boolean[]], + "view" + >; + + parseJsonBytes: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonBytes32: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonBytes32Array: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonBytesArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonInt: TypedContractMethod< + [json: string, key: string], + [bigint], + "view" + >; + + parseJsonIntArray: TypedContractMethod< + [json: string, key: string], + [bigint[]], + "view" + >; + + parseJsonKeys: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonString: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonStringArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + "parseJsonType(string,string)": TypedContractMethod< + [json: string, typeDescription: string], + [string], + "view" + >; + + "parseJsonType(string,string,string)": TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + + parseJsonTypeArray: TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + + parseJsonUint: TypedContractMethod< + [json: string, key: string], + [bigint], + "view" + >; + + parseJsonUintArray: TypedContractMethod< + [json: string, key: string], + [bigint[]], + "view" + >; + + "parseToml(string,string)": TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + "parseToml(string)": TypedContractMethod<[toml: string], [string], "view">; + + parseTomlAddress: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlAddressArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlBool: TypedContractMethod< + [toml: string, key: string], + [boolean], + "view" + >; + + parseTomlBoolArray: TypedContractMethod< + [toml: string, key: string], + [boolean[]], + "view" + >; + + parseTomlBytes: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlBytes32: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlBytes32Array: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlBytesArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlInt: TypedContractMethod< + [toml: string, key: string], + [bigint], + "view" + >; + + parseTomlIntArray: TypedContractMethod< + [toml: string, key: string], + [bigint[]], + "view" + >; + + parseTomlKeys: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlString: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlStringArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlUint: TypedContractMethod< + [toml: string, key: string], + [bigint], + "view" + >; + + parseTomlUintArray: TypedContractMethod< + [toml: string, key: string], + [bigint[]], + "view" + >; + + parseUint: TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + + pauseGasMetering: TypedContractMethod<[], [void], "nonpayable">; + + "prank(address,address)": TypedContractMethod< + [msgSender: AddressLike, txOrigin: AddressLike], + [void], + "nonpayable" + >; + + "prank(address)": TypedContractMethod< + [msgSender: AddressLike], + [void], + "nonpayable" + >; + + "prevrandao(bytes32)": TypedContractMethod< + [newPrevrandao: BytesLike], + [void], + "nonpayable" + >; + + "prevrandao(uint256)": TypedContractMethod< + [newPrevrandao: BigNumberish], + [void], + "nonpayable" + >; + + projectRoot: TypedContractMethod<[], [string], "view">; + + prompt: TypedContractMethod<[promptText: string], [string], "nonpayable">; + + promptAddress: TypedContractMethod< + [promptText: string], + [string], + "nonpayable" + >; + + promptSecret: TypedContractMethod< + [promptText: string], + [string], + "nonpayable" + >; + + promptSecretUint: TypedContractMethod< + [promptText: string], + [bigint], + "nonpayable" + >; + + promptUint: TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + + randomAddress: TypedContractMethod<[], [string], "nonpayable">; + + "randomUint()": TypedContractMethod<[], [bigint], "nonpayable">; + + "randomUint(uint256,uint256)": TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [bigint], + "nonpayable" + >; + + readCallers: TypedContractMethod< + [], + [ + [bigint, string, string] & { + callerMode: bigint; + msgSender: string; + txOrigin: string; + } + ], + "nonpayable" + >; + + "readDir(string,uint64)": TypedContractMethod< + [path: string, maxDepth: BigNumberish], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + "readDir(string,uint64,bool)": TypedContractMethod< + [path: string, maxDepth: BigNumberish, followLinks: boolean], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + "readDir(string)": TypedContractMethod< + [path: string], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + readFile: TypedContractMethod<[path: string], [string], "view">; + + readFileBinary: TypedContractMethod<[path: string], [string], "view">; + + readLine: TypedContractMethod<[path: string], [string], "view">; + + readLink: TypedContractMethod<[linkPath: string], [string], "view">; + + record: TypedContractMethod<[], [void], "nonpayable">; + + recordLogs: TypedContractMethod<[], [void], "nonpayable">; + + rememberKey: TypedContractMethod< + [privateKey: BigNumberish], + [string], + "nonpayable" + >; + + removeDir: TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + + removeFile: TypedContractMethod<[path: string], [void], "nonpayable">; + + replace: TypedContractMethod< + [input: string, from: string, to: string], + [string], + "view" + >; + + resetNonce: TypedContractMethod<[account: AddressLike], [void], "nonpayable">; + + resumeGasMetering: TypedContractMethod<[], [void], "nonpayable">; + + revertTo: TypedContractMethod< + [snapshotId: BigNumberish], + [boolean], + "nonpayable" + >; + + revertToAndDelete: TypedContractMethod< + [snapshotId: BigNumberish], + [boolean], + "nonpayable" + >; + + "revokePersistent(address[])": TypedContractMethod< + [accounts: AddressLike[]], + [void], + "nonpayable" + >; + + "revokePersistent(address)": TypedContractMethod< + [account: AddressLike], + [void], + "nonpayable" + >; + + roll: TypedContractMethod<[newHeight: BigNumberish], [void], "nonpayable">; + + "rollFork(bytes32)": TypedContractMethod< + [txHash: BytesLike], + [void], + "nonpayable" + >; + + "rollFork(uint256,uint256)": TypedContractMethod< + [forkId: BigNumberish, blockNumber: BigNumberish], + [void], + "nonpayable" + >; + + "rollFork(uint256)": TypedContractMethod< + [blockNumber: BigNumberish], + [void], + "nonpayable" + >; + + "rollFork(uint256,bytes32)": TypedContractMethod< + [forkId: BigNumberish, txHash: BytesLike], + [void], + "nonpayable" + >; + + "rpc(string,string,string)": TypedContractMethod< + [urlOrAlias: string, method: string, params: string], + [string], + "nonpayable" + >; + + "rpc(string,string)": TypedContractMethod< + [method: string, params: string], + [string], + "nonpayable" + >; + + rpcUrl: TypedContractMethod<[rpcAlias: string], [string], "view">; + + rpcUrlStructs: TypedContractMethod<[], [VmSafe.RpcStructOutput[]], "view">; + + rpcUrls: TypedContractMethod<[], [[string, string][]], "view">; + + selectFork: TypedContractMethod<[forkId: BigNumberish], [void], "nonpayable">; + + "serializeAddress(string,string,address[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: AddressLike[]], + [string], + "nonpayable" + >; + + "serializeAddress(string,string,address)": TypedContractMethod< + [objectKey: string, valueKey: string, value: AddressLike], + [string], + "nonpayable" + >; + + "serializeBool(string,string,bool[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: boolean[]], + [string], + "nonpayable" + >; + + "serializeBool(string,string,bool)": TypedContractMethod< + [objectKey: string, valueKey: string, value: boolean], + [string], + "nonpayable" + >; + + "serializeBytes(string,string,bytes[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + + "serializeBytes(string,string,bytes)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + + "serializeBytes32(string,string,bytes32[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + + "serializeBytes32(string,string,bytes32)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + + "serializeInt(string,string,int256)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + "serializeInt(string,string,int256[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + + serializeJson: TypedContractMethod< + [objectKey: string, value: string], + [string], + "nonpayable" + >; + + "serializeJsonType(string,bytes)": TypedContractMethod< + [typeDescription: string, value: BytesLike], + [string], + "view" + >; + + "serializeJsonType(string,string,string,bytes)": TypedContractMethod< + [ + objectKey: string, + valueKey: string, + typeDescription: string, + value: BytesLike + ], + [string], + "nonpayable" + >; + + "serializeString(string,string,string[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: string[]], + [string], + "nonpayable" + >; + + "serializeString(string,string,string)": TypedContractMethod< + [objectKey: string, valueKey: string, value: string], + [string], + "nonpayable" + >; + + "serializeUint(string,string,uint256)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + "serializeUint(string,string,uint256[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + + serializeUintToHex: TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + setBlockhash: TypedContractMethod< + [blockNumber: BigNumberish, blockHash: BytesLike], + [void], + "nonpayable" + >; + + setEnv: TypedContractMethod< + [name: string, value: string], + [void], + "nonpayable" + >; + + setNonce: TypedContractMethod< + [account: AddressLike, newNonce: BigNumberish], + [void], + "nonpayable" + >; + + setNonceUnsafe: TypedContractMethod< + [account: AddressLike, newNonce: BigNumberish], + [void], + "nonpayable" + >; + + "sign(bytes32)": TypedContractMethod< + [digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + "sign(address,bytes32)": TypedContractMethod< + [signer: AddressLike, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + "sign((address,uint256,uint256,uint256),bytes32)": TypedContractMethod< + [wallet: VmSafe.WalletStruct, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "nonpayable" + >; + + "sign(uint256,bytes32)": TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + signP256: TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[string, string] & { r: string; s: string }], + "view" + >; + + skip: TypedContractMethod<[skipTest: boolean], [void], "nonpayable">; + + sleep: TypedContractMethod<[duration: BigNumberish], [void], "nonpayable">; + + snapshot: TypedContractMethod<[], [bigint], "nonpayable">; + + split: TypedContractMethod< + [input: string, delimiter: string], + [string[]], + "view" + >; + + "startBroadcast()": TypedContractMethod<[], [void], "nonpayable">; + + "startBroadcast(address)": TypedContractMethod< + [signer: AddressLike], + [void], + "nonpayable" + >; + + "startBroadcast(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [void], + "nonpayable" + >; + + startMappingRecording: TypedContractMethod<[], [void], "nonpayable">; + + "startPrank(address)": TypedContractMethod< + [msgSender: AddressLike], + [void], + "nonpayable" + >; + + "startPrank(address,address)": TypedContractMethod< + [msgSender: AddressLike, txOrigin: AddressLike], + [void], + "nonpayable" + >; + + startStateDiffRecording: TypedContractMethod<[], [void], "nonpayable">; + + stopAndReturnStateDiff: TypedContractMethod< + [], + [VmSafe.AccountAccessStructOutput[]], + "nonpayable" + >; + + stopBroadcast: TypedContractMethod<[], [void], "nonpayable">; + + stopExpectSafeMemory: TypedContractMethod<[], [void], "nonpayable">; + + stopMappingRecording: TypedContractMethod<[], [void], "nonpayable">; + + stopPrank: TypedContractMethod<[], [void], "nonpayable">; + + store: TypedContractMethod< + [target: AddressLike, slot: BytesLike, value: BytesLike], + [void], + "nonpayable" + >; + + "toBase64(string)": TypedContractMethod<[data: string], [string], "view">; + + "toBase64(bytes)": TypedContractMethod<[data: BytesLike], [string], "view">; + + "toBase64URL(string)": TypedContractMethod<[data: string], [string], "view">; + + "toBase64URL(bytes)": TypedContractMethod< + [data: BytesLike], + [string], + "view" + >; + + toLowercase: TypedContractMethod<[input: string], [string], "view">; + + "toString(address)": TypedContractMethod< + [value: AddressLike], + [string], + "view" + >; + + "toString(uint256)": TypedContractMethod< + [value: BigNumberish], + [string], + "view" + >; + + "toString(bytes)": TypedContractMethod<[value: BytesLike], [string], "view">; + + "toString(bool)": TypedContractMethod<[value: boolean], [string], "view">; + + "toString(int256)": TypedContractMethod< + [value: BigNumberish], + [string], + "view" + >; + + "toString(bytes32)": TypedContractMethod< + [value: BytesLike], + [string], + "view" + >; + + toUppercase: TypedContractMethod<[input: string], [string], "view">; + + "transact(uint256,bytes32)": TypedContractMethod< + [forkId: BigNumberish, txHash: BytesLike], + [void], + "nonpayable" + >; + + "transact(bytes32)": TypedContractMethod< + [txHash: BytesLike], + [void], + "nonpayable" + >; + + trim: TypedContractMethod<[input: string], [string], "view">; + + tryFfi: TypedContractMethod< + [commandInput: string[]], + [VmSafe.FfiResultStructOutput], + "nonpayable" + >; + + txGasPrice: TypedContractMethod< + [newGasPrice: BigNumberish], + [void], + "nonpayable" + >; + + unixTime: TypedContractMethod<[], [bigint], "nonpayable">; + + warp: TypedContractMethod<[newTimestamp: BigNumberish], [void], "nonpayable">; + + writeFile: TypedContractMethod< + [path: string, data: string], + [void], + "nonpayable" + >; + + writeFileBinary: TypedContractMethod< + [path: string, data: BytesLike], + [void], + "nonpayable" + >; + + "writeJson(string,string,string)": TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + + "writeJson(string,string)": TypedContractMethod< + [json: string, path: string], + [void], + "nonpayable" + >; + + writeLine: TypedContractMethod< + [path: string, data: string], + [void], + "nonpayable" + >; + + "writeToml(string,string,string)": TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + + "writeToml(string,string)": TypedContractMethod< + [json: string, path: string], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "accesses" + ): TypedContractMethod< + [target: AddressLike], + [[string[], string[]] & { readSlots: string[]; writeSlots: string[] }], + "nonpayable" + >; + getFunction( + nameOrSignature: "activeFork" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "addr" + ): TypedContractMethod<[privateKey: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "allowCheatcodes" + ): TypedContractMethod<[account: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "assertApproxEqAbs(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32[],bytes32[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(int256[],int256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address,address,string)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string,string,string)" + ): TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address[],address[])" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address[],address[],string)" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool,bool,string)" + ): TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address,address)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(uint256[],uint256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool[],bool[])" + ): TypedContractMethod<[left: boolean[], right: boolean[]], [void], "view">; + getFunction( + nameOrSignature: "assertEq(int256[],int256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32,bytes32)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertEq(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(uint256[],uint256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes,bytes)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertEq(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32,bytes32,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string[],string[])" + ): TypedContractMethod<[left: string[], right: string[]], [void], "view">; + getFunction( + nameOrSignature: "assertEq(bytes32[],bytes32[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes,bytes,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool[],bool[],string)" + ): TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes[],bytes[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string[],string[],string)" + ): TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string,string)" + ): TypedContractMethod<[left: string, right: string], [void], "view">; + getFunction( + nameOrSignature: "assertEq(bytes[],bytes[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool,bool)" + ): TypedContractMethod<[left: boolean, right: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertEq(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertFalse(bool,string)" + ): TypedContractMethod<[condition: boolean, error: string], [void], "view">; + getFunction( + nameOrSignature: "assertFalse(bool)" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertGe(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32[],bytes32[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256[],int256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool,bool,string)" + ): TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes[],bytes[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool,bool)" + ): TypedContractMethod<[left: boolean, right: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bool[],bool[])" + ): TypedContractMethod<[left: boolean[], right: boolean[]], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bytes,bytes)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(address[],address[])" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256[],uint256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool[],bool[],string)" + ): TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string,string)" + ): TypedContractMethod<[left: string, right: string], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(address[],address[],string)" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string,string,string)" + ): TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(address,address,string)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32,bytes32)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bytes,bytes,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256[],uint256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(address,address)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32,bytes32,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string[],string[],string)" + ): TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32[],bytes32[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string[],string[])" + ): TypedContractMethod<[left: string[], right: string[]], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(int256[],int256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes[],bytes[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertTrue(bool)" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertTrue(bool,string)" + ): TypedContractMethod<[condition: boolean, error: string], [void], "view">; + getFunction( + nameOrSignature: "assume" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "blobBaseFee" + ): TypedContractMethod<[newBlobBaseFee: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "blobhashes" + ): TypedContractMethod<[hashes: BytesLike[]], [void], "nonpayable">; + getFunction( + nameOrSignature: "breakpoint(string)" + ): TypedContractMethod<[char: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "breakpoint(string,bool)" + ): TypedContractMethod<[char: string, value: boolean], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast(address)" + ): TypedContractMethod<[signer: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast(uint256)" + ): TypedContractMethod<[privateKey: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "chainId" + ): TypedContractMethod<[newChainId: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "clearMockedCalls" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "closeFile" + ): TypedContractMethod<[path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "coinbase" + ): TypedContractMethod<[newCoinbase: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "computeCreate2Address(bytes32,bytes32)" + ): TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "computeCreate2Address(bytes32,bytes32,address)" + ): TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike, deployer: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "computeCreateAddress" + ): TypedContractMethod< + [deployer: AddressLike, nonce: BigNumberish], + [string], + "view" + >; + getFunction( + nameOrSignature: "copyFile" + ): TypedContractMethod<[from: string, to: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "createDir" + ): TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "createFork(string)" + ): TypedContractMethod<[urlOrAlias: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "createFork(string,uint256)" + ): TypedContractMethod< + [urlOrAlias: string, blockNumber: BigNumberish], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "createFork(string,bytes32)" + ): TypedContractMethod< + [urlOrAlias: string, txHash: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "createSelectFork(string,uint256)" + ): TypedContractMethod< + [urlOrAlias: string, blockNumber: BigNumberish], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "createSelectFork(string,bytes32)" + ): TypedContractMethod< + [urlOrAlias: string, txHash: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "createSelectFork(string)" + ): TypedContractMethod<[urlOrAlias: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "createWallet(string)" + ): TypedContractMethod< + [walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "createWallet(uint256)" + ): TypedContractMethod< + [privateKey: BigNumberish], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "createWallet(uint256,string)" + ): TypedContractMethod< + [privateKey: BigNumberish, walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "deal" + ): TypedContractMethod< + [account: AddressLike, newBalance: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "deleteSnapshot" + ): TypedContractMethod<[snapshotId: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "deleteSnapshots" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "deployCode(string,bytes)" + ): TypedContractMethod< + [artifactPath: string, constructorArgs: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "deployCode(string)" + ): TypedContractMethod<[artifactPath: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "deriveKey(string,string,uint32,string)" + ): TypedContractMethod< + [ + mnemonic: string, + derivationPath: string, + index: BigNumberish, + language: string + ], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,uint32,string)" + ): TypedContractMethod< + [mnemonic: string, index: BigNumberish, language: string], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,uint32)" + ): TypedContractMethod< + [mnemonic: string, index: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,string,uint32)" + ): TypedContractMethod< + [mnemonic: string, derivationPath: string, index: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "difficulty" + ): TypedContractMethod<[newDifficulty: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "dumpState" + ): TypedContractMethod<[pathToStateJson: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "ensNamehash" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envAddress(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envAddress(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBool(string)" + ): TypedContractMethod<[name: string], [boolean], "view">; + getFunction( + nameOrSignature: "envBool(string,string)" + ): TypedContractMethod<[name: string, delim: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "envBytes(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envBytes(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBytes32(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBytes32(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envExists" + ): TypedContractMethod<[name: string], [boolean], "view">; + getFunction( + nameOrSignature: "envInt(string,string)" + ): TypedContractMethod<[name: string, delim: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "envInt(string)" + ): TypedContractMethod<[name: string], [bigint], "view">; + getFunction( + nameOrSignature: "envOr(string,string,bytes32[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,int256[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bool)" + ): TypedContractMethod< + [name: string, defaultValue: boolean], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,address)" + ): TypedContractMethod< + [name: string, defaultValue: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,uint256)" + ): TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,bytes[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,uint256[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,string[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: string[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bytes)" + ): TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bytes32)" + ): TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,int256)" + ): TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,address[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: AddressLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string)" + ): TypedContractMethod< + [name: string, defaultValue: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,bool[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: boolean[]], + [boolean[]], + "view" + >; + getFunction( + nameOrSignature: "envString(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envString(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envUint(string)" + ): TypedContractMethod<[name: string], [bigint], "view">; + getFunction( + nameOrSignature: "envUint(string,string)" + ): TypedContractMethod<[name: string, delim: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "etch" + ): TypedContractMethod< + [target: AddressLike, newRuntimeBytecode: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "eth_getLogs" + ): TypedContractMethod< + [ + fromBlock: BigNumberish, + toBlock: BigNumberish, + target: AddressLike, + topics: BytesLike[] + ], + [VmSafe.EthGetLogsStructOutput[]], + "nonpayable" + >; + getFunction( + nameOrSignature: "exists" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "expectCall(address,uint256,uint64,bytes)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + gas: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCall(address,uint256,uint64,bytes,uint64)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + gas: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCall(address,uint256,bytes,uint64)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCall(address,bytes)" + ): TypedContractMethod< + [callee: AddressLike, data: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCall(address,bytes,uint64)" + ): TypedContractMethod< + [callee: AddressLike, data: BytesLike, count: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCall(address,uint256,bytes)" + ): TypedContractMethod< + [callee: AddressLike, msgValue: BigNumberish, data: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCallMinGas(address,uint256,uint64,bytes)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + minGas: BigNumberish, + data: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectCallMinGas(address,uint256,uint64,bytes,uint64)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + minGas: BigNumberish, + data: BytesLike, + count: BigNumberish + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectEmit()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectEmit(bool,bool,bool,bool)" + ): TypedContractMethod< + [ + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectEmit(bool,bool,bool,bool,address)" + ): TypedContractMethod< + [ + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean, + emitter: AddressLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectEmit(address)" + ): TypedContractMethod<[emitter: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectEmitAnonymous()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectEmitAnonymous(address)" + ): TypedContractMethod<[emitter: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectEmitAnonymous(bool,bool,bool,bool,bool,address)" + ): TypedContractMethod< + [ + checkTopic0: boolean, + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean, + emitter: AddressLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectEmitAnonymous(bool,bool,bool,bool,bool)" + ): TypedContractMethod< + [ + checkTopic0: boolean, + checkTopic1: boolean, + checkTopic2: boolean, + checkTopic3: boolean, + checkData: boolean + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectRevert(bytes4)" + ): TypedContractMethod<[revertData: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectRevert(bytes)" + ): TypedContractMethod<[revertData: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectRevert()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "expectSafeMemory" + ): TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "expectSafeMemoryCall" + ): TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "fee" + ): TypedContractMethod<[newBasefee: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "ffi" + ): TypedContractMethod<[commandInput: string[]], [string], "nonpayable">; + getFunction( + nameOrSignature: "fsMetadata" + ): TypedContractMethod< + [path: string], + [VmSafe.FsMetadataStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getBlobBaseFee" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getBlobhashes" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "getBlockNumber" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getBlockTimestamp" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getCode" + ): TypedContractMethod<[artifactPath: string], [string], "view">; + getFunction( + nameOrSignature: "getDeployedCode" + ): TypedContractMethod<[artifactPath: string], [string], "view">; + getFunction( + nameOrSignature: "getLabel" + ): TypedContractMethod<[account: AddressLike], [string], "view">; + getFunction( + nameOrSignature: "getMappingKeyAndParentOf" + ): TypedContractMethod< + [target: AddressLike, elementSlot: BytesLike], + [ + [boolean, string, string] & { + found: boolean; + key: string; + parent: string; + } + ], + "nonpayable" + >; + getFunction( + nameOrSignature: "getMappingLength" + ): TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "getMappingSlotAt" + ): TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike, idx: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "getNonce(address)" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getNonce((address,uint256,uint256,uint256))" + ): TypedContractMethod<[wallet: VmSafe.WalletStruct], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "getRecordedLogs" + ): TypedContractMethod<[], [VmSafe.LogStructOutput[]], "nonpayable">; + getFunction( + nameOrSignature: "indexOf" + ): TypedContractMethod<[input: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "isContext" + ): TypedContractMethod<[context: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "isDir" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "isFile" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "isPersistent" + ): TypedContractMethod<[account: AddressLike], [boolean], "view">; + getFunction( + nameOrSignature: "keyExists" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "keyExistsJson" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "keyExistsToml" + ): TypedContractMethod<[toml: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "label" + ): TypedContractMethod< + [account: AddressLike, newLabel: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "lastCallGas" + ): TypedContractMethod<[], [VmSafe.GasStructOutput], "view">; + getFunction( + nameOrSignature: "load" + ): TypedContractMethod< + [target: AddressLike, slot: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "loadAllocs" + ): TypedContractMethod<[pathToAllocsJson: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "makePersistent(address[])" + ): TypedContractMethod<[accounts: AddressLike[]], [void], "nonpayable">; + getFunction( + nameOrSignature: "makePersistent(address,address)" + ): TypedContractMethod< + [account0: AddressLike, account1: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "makePersistent(address)" + ): TypedContractMethod<[account: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "makePersistent(address,address,address)" + ): TypedContractMethod< + [account0: AddressLike, account1: AddressLike, account2: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mockCall(address,uint256,bytes,bytes)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + returnData: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mockCall(address,bytes,bytes)" + ): TypedContractMethod< + [callee: AddressLike, data: BytesLike, returnData: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mockCallRevert(address,uint256,bytes,bytes)" + ): TypedContractMethod< + [ + callee: AddressLike, + msgValue: BigNumberish, + data: BytesLike, + revertData: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mockCallRevert(address,bytes,bytes)" + ): TypedContractMethod< + [callee: AddressLike, data: BytesLike, revertData: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "parseAddress" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseBool" + ): TypedContractMethod<[stringifiedValue: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseBytes" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseBytes32" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseInt" + ): TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJson(string)" + ): TypedContractMethod<[json: string], [string], "view">; + getFunction( + nameOrSignature: "parseJson(string,string)" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonAddress" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonAddressArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonBool" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseJsonBoolArray" + ): TypedContractMethod<[json: string, key: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "parseJsonBytes" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonBytes32" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonBytes32Array" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonBytesArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonInt" + ): TypedContractMethod<[json: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJsonIntArray" + ): TypedContractMethod<[json: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseJsonKeys" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonString" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonStringArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonType(string,string)" + ): TypedContractMethod< + [json: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonType(string,string,string)" + ): TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonTypeArray" + ): TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonUint" + ): TypedContractMethod<[json: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJsonUintArray" + ): TypedContractMethod<[json: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseToml(string,string)" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseToml(string)" + ): TypedContractMethod<[toml: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlAddress" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlAddressArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlBool" + ): TypedContractMethod<[toml: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseTomlBoolArray" + ): TypedContractMethod<[toml: string, key: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "parseTomlBytes" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlBytes32" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlBytes32Array" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlBytesArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlInt" + ): TypedContractMethod<[toml: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseTomlIntArray" + ): TypedContractMethod<[toml: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseTomlKeys" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlString" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlStringArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlUint" + ): TypedContractMethod<[toml: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseTomlUintArray" + ): TypedContractMethod<[toml: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseUint" + ): TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + getFunction( + nameOrSignature: "pauseGasMetering" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "prank(address,address)" + ): TypedContractMethod< + [msgSender: AddressLike, txOrigin: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "prank(address)" + ): TypedContractMethod<[msgSender: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "prevrandao(bytes32)" + ): TypedContractMethod<[newPrevrandao: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "prevrandao(uint256)" + ): TypedContractMethod<[newPrevrandao: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "projectRoot" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "prompt" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptAddress" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptSecret" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptSecretUint" + ): TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "promptUint" + ): TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "randomAddress" + ): TypedContractMethod<[], [string], "nonpayable">; + getFunction( + nameOrSignature: "randomUint()" + ): TypedContractMethod<[], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "randomUint(uint256,uint256)" + ): TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "readCallers" + ): TypedContractMethod< + [], + [ + [bigint, string, string] & { + callerMode: bigint; + msgSender: string; + txOrigin: string; + } + ], + "nonpayable" + >; + getFunction( + nameOrSignature: "readDir(string,uint64)" + ): TypedContractMethod< + [path: string, maxDepth: BigNumberish], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readDir(string,uint64,bool)" + ): TypedContractMethod< + [path: string, maxDepth: BigNumberish, followLinks: boolean], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readDir(string)" + ): TypedContractMethod< + [path: string], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readFile" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readFileBinary" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readLine" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readLink" + ): TypedContractMethod<[linkPath: string], [string], "view">; + getFunction( + nameOrSignature: "record" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "recordLogs" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "rememberKey" + ): TypedContractMethod<[privateKey: BigNumberish], [string], "nonpayable">; + getFunction( + nameOrSignature: "removeDir" + ): TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "removeFile" + ): TypedContractMethod<[path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "replace" + ): TypedContractMethod< + [input: string, from: string, to: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "resetNonce" + ): TypedContractMethod<[account: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "resumeGasMetering" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "revertTo" + ): TypedContractMethod<[snapshotId: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "revertToAndDelete" + ): TypedContractMethod<[snapshotId: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "revokePersistent(address[])" + ): TypedContractMethod<[accounts: AddressLike[]], [void], "nonpayable">; + getFunction( + nameOrSignature: "revokePersistent(address)" + ): TypedContractMethod<[account: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "roll" + ): TypedContractMethod<[newHeight: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "rollFork(bytes32)" + ): TypedContractMethod<[txHash: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "rollFork(uint256,uint256)" + ): TypedContractMethod< + [forkId: BigNumberish, blockNumber: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "rollFork(uint256)" + ): TypedContractMethod<[blockNumber: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "rollFork(uint256,bytes32)" + ): TypedContractMethod< + [forkId: BigNumberish, txHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "rpc(string,string,string)" + ): TypedContractMethod< + [urlOrAlias: string, method: string, params: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "rpc(string,string)" + ): TypedContractMethod< + [method: string, params: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "rpcUrl" + ): TypedContractMethod<[rpcAlias: string], [string], "view">; + getFunction( + nameOrSignature: "rpcUrlStructs" + ): TypedContractMethod<[], [VmSafe.RpcStructOutput[]], "view">; + getFunction( + nameOrSignature: "rpcUrls" + ): TypedContractMethod<[], [[string, string][]], "view">; + getFunction( + nameOrSignature: "selectFork" + ): TypedContractMethod<[forkId: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "serializeAddress(string,string,address[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: AddressLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeAddress(string,string,address)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: AddressLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBool(string,string,bool[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: boolean[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBool(string,string,bool)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: boolean], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes(string,string,bytes[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes(string,string,bytes)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes32(string,string,bytes32[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes32(string,string,bytes32)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeInt(string,string,int256)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeInt(string,string,int256[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeJson" + ): TypedContractMethod< + [objectKey: string, value: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeJsonType(string,bytes)" + ): TypedContractMethod< + [typeDescription: string, value: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "serializeJsonType(string,string,string,bytes)" + ): TypedContractMethod< + [ + objectKey: string, + valueKey: string, + typeDescription: string, + value: BytesLike + ], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeString(string,string,string[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: string[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeString(string,string,string)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUint(string,string,uint256)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUint(string,string,uint256[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUintToHex" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "setBlockhash" + ): TypedContractMethod< + [blockNumber: BigNumberish, blockHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setEnv" + ): TypedContractMethod<[name: string, value: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "setNonce" + ): TypedContractMethod< + [account: AddressLike, newNonce: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "setNonceUnsafe" + ): TypedContractMethod< + [account: AddressLike, newNonce: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "sign(bytes32)" + ): TypedContractMethod< + [digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "sign(address,bytes32)" + ): TypedContractMethod< + [signer: AddressLike, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "sign((address,uint256,uint256,uint256),bytes32)" + ): TypedContractMethod< + [wallet: VmSafe.WalletStruct, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "nonpayable" + >; + getFunction( + nameOrSignature: "sign(uint256,bytes32)" + ): TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "signP256" + ): TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[string, string] & { r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "skip" + ): TypedContractMethod<[skipTest: boolean], [void], "nonpayable">; + getFunction( + nameOrSignature: "sleep" + ): TypedContractMethod<[duration: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "snapshot" + ): TypedContractMethod<[], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "split" + ): TypedContractMethod< + [input: string, delimiter: string], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "startBroadcast()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "startBroadcast(address)" + ): TypedContractMethod<[signer: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "startBroadcast(uint256)" + ): TypedContractMethod<[privateKey: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "startMappingRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "startPrank(address)" + ): TypedContractMethod<[msgSender: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "startPrank(address,address)" + ): TypedContractMethod< + [msgSender: AddressLike, txOrigin: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "startStateDiffRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopAndReturnStateDiff" + ): TypedContractMethod< + [], + [VmSafe.AccountAccessStructOutput[]], + "nonpayable" + >; + getFunction( + nameOrSignature: "stopBroadcast" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopExpectSafeMemory" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopMappingRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopPrank" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "store" + ): TypedContractMethod< + [target: AddressLike, slot: BytesLike, value: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "toBase64(string)" + ): TypedContractMethod<[data: string], [string], "view">; + getFunction( + nameOrSignature: "toBase64(bytes)" + ): TypedContractMethod<[data: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toBase64URL(string)" + ): TypedContractMethod<[data: string], [string], "view">; + getFunction( + nameOrSignature: "toBase64URL(bytes)" + ): TypedContractMethod<[data: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toLowercase" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "toString(address)" + ): TypedContractMethod<[value: AddressLike], [string], "view">; + getFunction( + nameOrSignature: "toString(uint256)" + ): TypedContractMethod<[value: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "toString(bytes)" + ): TypedContractMethod<[value: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toString(bool)" + ): TypedContractMethod<[value: boolean], [string], "view">; + getFunction( + nameOrSignature: "toString(int256)" + ): TypedContractMethod<[value: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "toString(bytes32)" + ): TypedContractMethod<[value: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toUppercase" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "transact(uint256,bytes32)" + ): TypedContractMethod< + [forkId: BigNumberish, txHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "transact(bytes32)" + ): TypedContractMethod<[txHash: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "trim" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "tryFfi" + ): TypedContractMethod< + [commandInput: string[]], + [VmSafe.FfiResultStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "txGasPrice" + ): TypedContractMethod<[newGasPrice: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "unixTime" + ): TypedContractMethod<[], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "warp" + ): TypedContractMethod<[newTimestamp: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeFile" + ): TypedContractMethod<[path: string, data: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeFileBinary" + ): TypedContractMethod<[path: string, data: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeJson(string,string,string)" + ): TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "writeJson(string,string)" + ): TypedContractMethod<[json: string, path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeLine" + ): TypedContractMethod<[path: string, data: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeToml(string,string,string)" + ): TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "writeToml(string,string)" + ): TypedContractMethod<[json: string, path: string], [void], "nonpayable">; + + filters: {}; +} diff --git a/v2/typechain-types/Vm.sol/VmSafe.ts b/v2/typechain-types/Vm.sol/VmSafe.ts new file mode 100644 index 00000000..a7500a52 --- /dev/null +++ b/v2/typechain-types/Vm.sol/VmSafe.ts @@ -0,0 +1,6635 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export declare namespace VmSafe { + export type WalletStruct = { + addr: AddressLike; + publicKeyX: BigNumberish; + publicKeyY: BigNumberish; + privateKey: BigNumberish; + }; + + export type WalletStructOutput = [ + addr: string, + publicKeyX: bigint, + publicKeyY: bigint, + privateKey: bigint + ] & { + addr: string; + publicKeyX: bigint; + publicKeyY: bigint; + privateKey: bigint; + }; + + export type EthGetLogsStruct = { + emitter: AddressLike; + topics: BytesLike[]; + data: BytesLike; + blockHash: BytesLike; + blockNumber: BigNumberish; + transactionHash: BytesLike; + transactionIndex: BigNumberish; + logIndex: BigNumberish; + removed: boolean; + }; + + export type EthGetLogsStructOutput = [ + emitter: string, + topics: string[], + data: string, + blockHash: string, + blockNumber: bigint, + transactionHash: string, + transactionIndex: bigint, + logIndex: bigint, + removed: boolean + ] & { + emitter: string; + topics: string[]; + data: string; + blockHash: string; + blockNumber: bigint; + transactionHash: string; + transactionIndex: bigint; + logIndex: bigint; + removed: boolean; + }; + + export type FsMetadataStruct = { + isDir: boolean; + isSymlink: boolean; + length: BigNumberish; + readOnly: boolean; + modified: BigNumberish; + accessed: BigNumberish; + created: BigNumberish; + }; + + export type FsMetadataStructOutput = [ + isDir: boolean, + isSymlink: boolean, + length: bigint, + readOnly: boolean, + modified: bigint, + accessed: bigint, + created: bigint + ] & { + isDir: boolean; + isSymlink: boolean; + length: bigint; + readOnly: boolean; + modified: bigint; + accessed: bigint; + created: bigint; + }; + + export type LogStruct = { + topics: BytesLike[]; + data: BytesLike; + emitter: AddressLike; + }; + + export type LogStructOutput = [ + topics: string[], + data: string, + emitter: string + ] & { topics: string[]; data: string; emitter: string }; + + export type GasStruct = { + gasLimit: BigNumberish; + gasTotalUsed: BigNumberish; + gasMemoryUsed: BigNumberish; + gasRefunded: BigNumberish; + gasRemaining: BigNumberish; + }; + + export type GasStructOutput = [ + gasLimit: bigint, + gasTotalUsed: bigint, + gasMemoryUsed: bigint, + gasRefunded: bigint, + gasRemaining: bigint + ] & { + gasLimit: bigint; + gasTotalUsed: bigint; + gasMemoryUsed: bigint; + gasRefunded: bigint; + gasRemaining: bigint; + }; + + export type DirEntryStruct = { + errorMessage: string; + path: string; + depth: BigNumberish; + isDir: boolean; + isSymlink: boolean; + }; + + export type DirEntryStructOutput = [ + errorMessage: string, + path: string, + depth: bigint, + isDir: boolean, + isSymlink: boolean + ] & { + errorMessage: string; + path: string; + depth: bigint; + isDir: boolean; + isSymlink: boolean; + }; + + export type RpcStruct = { key: string; url: string }; + + export type RpcStructOutput = [key: string, url: string] & { + key: string; + url: string; + }; + + export type ChainInfoStruct = { forkId: BigNumberish; chainId: BigNumberish }; + + export type ChainInfoStructOutput = [forkId: bigint, chainId: bigint] & { + forkId: bigint; + chainId: bigint; + }; + + export type StorageAccessStruct = { + account: AddressLike; + slot: BytesLike; + isWrite: boolean; + previousValue: BytesLike; + newValue: BytesLike; + reverted: boolean; + }; + + export type StorageAccessStructOutput = [ + account: string, + slot: string, + isWrite: boolean, + previousValue: string, + newValue: string, + reverted: boolean + ] & { + account: string; + slot: string; + isWrite: boolean; + previousValue: string; + newValue: string; + reverted: boolean; + }; + + export type AccountAccessStruct = { + chainInfo: VmSafe.ChainInfoStruct; + kind: BigNumberish; + account: AddressLike; + accessor: AddressLike; + initialized: boolean; + oldBalance: BigNumberish; + newBalance: BigNumberish; + deployedCode: BytesLike; + value: BigNumberish; + data: BytesLike; + reverted: boolean; + storageAccesses: VmSafe.StorageAccessStruct[]; + depth: BigNumberish; + }; + + export type AccountAccessStructOutput = [ + chainInfo: VmSafe.ChainInfoStructOutput, + kind: bigint, + account: string, + accessor: string, + initialized: boolean, + oldBalance: bigint, + newBalance: bigint, + deployedCode: string, + value: bigint, + data: string, + reverted: boolean, + storageAccesses: VmSafe.StorageAccessStructOutput[], + depth: bigint + ] & { + chainInfo: VmSafe.ChainInfoStructOutput; + kind: bigint; + account: string; + accessor: string; + initialized: boolean; + oldBalance: bigint; + newBalance: bigint; + deployedCode: string; + value: bigint; + data: string; + reverted: boolean; + storageAccesses: VmSafe.StorageAccessStructOutput[]; + depth: bigint; + }; + + export type FfiResultStruct = { + exitCode: BigNumberish; + stdout: BytesLike; + stderr: BytesLike; + }; + + export type FfiResultStructOutput = [ + exitCode: bigint, + stdout: string, + stderr: string + ] & { exitCode: bigint; stdout: string; stderr: string }; +} + +export interface VmSafeInterface extends Interface { + getFunction( + nameOrSignature: + | "accesses" + | "addr" + | "assertApproxEqAbs(uint256,uint256,uint256)" + | "assertApproxEqAbs(int256,int256,uint256)" + | "assertApproxEqAbs(int256,int256,uint256,string)" + | "assertApproxEqAbs(uint256,uint256,uint256,string)" + | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" + | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" + | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" + | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" + | "assertApproxEqRel(uint256,uint256,uint256,string)" + | "assertApproxEqRel(uint256,uint256,uint256)" + | "assertApproxEqRel(int256,int256,uint256,string)" + | "assertApproxEqRel(int256,int256,uint256)" + | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" + | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" + | "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" + | "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" + | "assertEq(bytes32[],bytes32[])" + | "assertEq(int256[],int256[],string)" + | "assertEq(address,address,string)" + | "assertEq(string,string,string)" + | "assertEq(address[],address[])" + | "assertEq(address[],address[],string)" + | "assertEq(bool,bool,string)" + | "assertEq(address,address)" + | "assertEq(uint256[],uint256[],string)" + | "assertEq(bool[],bool[])" + | "assertEq(int256[],int256[])" + | "assertEq(int256,int256,string)" + | "assertEq(bytes32,bytes32)" + | "assertEq(uint256,uint256,string)" + | "assertEq(uint256[],uint256[])" + | "assertEq(bytes,bytes)" + | "assertEq(uint256,uint256)" + | "assertEq(bytes32,bytes32,string)" + | "assertEq(string[],string[])" + | "assertEq(bytes32[],bytes32[],string)" + | "assertEq(bytes,bytes,string)" + | "assertEq(bool[],bool[],string)" + | "assertEq(bytes[],bytes[])" + | "assertEq(string[],string[],string)" + | "assertEq(string,string)" + | "assertEq(bytes[],bytes[],string)" + | "assertEq(bool,bool)" + | "assertEq(int256,int256)" + | "assertEqDecimal(uint256,uint256,uint256)" + | "assertEqDecimal(int256,int256,uint256)" + | "assertEqDecimal(int256,int256,uint256,string)" + | "assertEqDecimal(uint256,uint256,uint256,string)" + | "assertFalse(bool,string)" + | "assertFalse(bool)" + | "assertGe(int256,int256)" + | "assertGe(int256,int256,string)" + | "assertGe(uint256,uint256)" + | "assertGe(uint256,uint256,string)" + | "assertGeDecimal(uint256,uint256,uint256)" + | "assertGeDecimal(int256,int256,uint256,string)" + | "assertGeDecimal(uint256,uint256,uint256,string)" + | "assertGeDecimal(int256,int256,uint256)" + | "assertGt(int256,int256)" + | "assertGt(uint256,uint256,string)" + | "assertGt(uint256,uint256)" + | "assertGt(int256,int256,string)" + | "assertGtDecimal(int256,int256,uint256,string)" + | "assertGtDecimal(uint256,uint256,uint256,string)" + | "assertGtDecimal(int256,int256,uint256)" + | "assertGtDecimal(uint256,uint256,uint256)" + | "assertLe(int256,int256,string)" + | "assertLe(uint256,uint256)" + | "assertLe(int256,int256)" + | "assertLe(uint256,uint256,string)" + | "assertLeDecimal(int256,int256,uint256)" + | "assertLeDecimal(uint256,uint256,uint256,string)" + | "assertLeDecimal(int256,int256,uint256,string)" + | "assertLeDecimal(uint256,uint256,uint256)" + | "assertLt(int256,int256)" + | "assertLt(uint256,uint256,string)" + | "assertLt(int256,int256,string)" + | "assertLt(uint256,uint256)" + | "assertLtDecimal(uint256,uint256,uint256)" + | "assertLtDecimal(int256,int256,uint256,string)" + | "assertLtDecimal(uint256,uint256,uint256,string)" + | "assertLtDecimal(int256,int256,uint256)" + | "assertNotEq(bytes32[],bytes32[])" + | "assertNotEq(int256[],int256[])" + | "assertNotEq(bool,bool,string)" + | "assertNotEq(bytes[],bytes[],string)" + | "assertNotEq(bool,bool)" + | "assertNotEq(bool[],bool[])" + | "assertNotEq(bytes,bytes)" + | "assertNotEq(address[],address[])" + | "assertNotEq(int256,int256,string)" + | "assertNotEq(uint256[],uint256[])" + | "assertNotEq(bool[],bool[],string)" + | "assertNotEq(string,string)" + | "assertNotEq(address[],address[],string)" + | "assertNotEq(string,string,string)" + | "assertNotEq(address,address,string)" + | "assertNotEq(bytes32,bytes32)" + | "assertNotEq(bytes,bytes,string)" + | "assertNotEq(uint256,uint256,string)" + | "assertNotEq(uint256[],uint256[],string)" + | "assertNotEq(address,address)" + | "assertNotEq(bytes32,bytes32,string)" + | "assertNotEq(string[],string[],string)" + | "assertNotEq(uint256,uint256)" + | "assertNotEq(bytes32[],bytes32[],string)" + | "assertNotEq(string[],string[])" + | "assertNotEq(int256[],int256[],string)" + | "assertNotEq(bytes[],bytes[])" + | "assertNotEq(int256,int256)" + | "assertNotEqDecimal(int256,int256,uint256)" + | "assertNotEqDecimal(int256,int256,uint256,string)" + | "assertNotEqDecimal(uint256,uint256,uint256)" + | "assertNotEqDecimal(uint256,uint256,uint256,string)" + | "assertTrue(bool)" + | "assertTrue(bool,string)" + | "assume" + | "breakpoint(string)" + | "breakpoint(string,bool)" + | "broadcast()" + | "broadcast(address)" + | "broadcast(uint256)" + | "closeFile" + | "computeCreate2Address(bytes32,bytes32)" + | "computeCreate2Address(bytes32,bytes32,address)" + | "computeCreateAddress" + | "copyFile" + | "createDir" + | "createWallet(string)" + | "createWallet(uint256)" + | "createWallet(uint256,string)" + | "deployCode(string,bytes)" + | "deployCode(string)" + | "deriveKey(string,string,uint32,string)" + | "deriveKey(string,uint32,string)" + | "deriveKey(string,uint32)" + | "deriveKey(string,string,uint32)" + | "ensNamehash" + | "envAddress(string)" + | "envAddress(string,string)" + | "envBool(string)" + | "envBool(string,string)" + | "envBytes(string)" + | "envBytes(string,string)" + | "envBytes32(string,string)" + | "envBytes32(string)" + | "envExists" + | "envInt(string,string)" + | "envInt(string)" + | "envOr(string,string,bytes32[])" + | "envOr(string,string,int256[])" + | "envOr(string,bool)" + | "envOr(string,address)" + | "envOr(string,uint256)" + | "envOr(string,string,bytes[])" + | "envOr(string,string,uint256[])" + | "envOr(string,string,string[])" + | "envOr(string,bytes)" + | "envOr(string,bytes32)" + | "envOr(string,int256)" + | "envOr(string,string,address[])" + | "envOr(string,string)" + | "envOr(string,string,bool[])" + | "envString(string,string)" + | "envString(string)" + | "envUint(string)" + | "envUint(string,string)" + | "eth_getLogs" + | "exists" + | "ffi" + | "fsMetadata" + | "getBlobBaseFee" + | "getBlockNumber" + | "getBlockTimestamp" + | "getCode" + | "getDeployedCode" + | "getLabel" + | "getMappingKeyAndParentOf" + | "getMappingLength" + | "getMappingSlotAt" + | "getNonce(address)" + | "getNonce((address,uint256,uint256,uint256))" + | "getRecordedLogs" + | "indexOf" + | "isContext" + | "isDir" + | "isFile" + | "keyExists" + | "keyExistsJson" + | "keyExistsToml" + | "label" + | "lastCallGas" + | "load" + | "parseAddress" + | "parseBool" + | "parseBytes" + | "parseBytes32" + | "parseInt" + | "parseJson(string)" + | "parseJson(string,string)" + | "parseJsonAddress" + | "parseJsonAddressArray" + | "parseJsonBool" + | "parseJsonBoolArray" + | "parseJsonBytes" + | "parseJsonBytes32" + | "parseJsonBytes32Array" + | "parseJsonBytesArray" + | "parseJsonInt" + | "parseJsonIntArray" + | "parseJsonKeys" + | "parseJsonString" + | "parseJsonStringArray" + | "parseJsonType(string,string)" + | "parseJsonType(string,string,string)" + | "parseJsonTypeArray" + | "parseJsonUint" + | "parseJsonUintArray" + | "parseToml(string,string)" + | "parseToml(string)" + | "parseTomlAddress" + | "parseTomlAddressArray" + | "parseTomlBool" + | "parseTomlBoolArray" + | "parseTomlBytes" + | "parseTomlBytes32" + | "parseTomlBytes32Array" + | "parseTomlBytesArray" + | "parseTomlInt" + | "parseTomlIntArray" + | "parseTomlKeys" + | "parseTomlString" + | "parseTomlStringArray" + | "parseTomlUint" + | "parseTomlUintArray" + | "parseUint" + | "pauseGasMetering" + | "projectRoot" + | "prompt" + | "promptAddress" + | "promptSecret" + | "promptSecretUint" + | "promptUint" + | "randomAddress" + | "randomUint()" + | "randomUint(uint256,uint256)" + | "readDir(string,uint64)" + | "readDir(string,uint64,bool)" + | "readDir(string)" + | "readFile" + | "readFileBinary" + | "readLine" + | "readLink" + | "record" + | "recordLogs" + | "rememberKey" + | "removeDir" + | "removeFile" + | "replace" + | "resumeGasMetering" + | "rpc(string,string,string)" + | "rpc(string,string)" + | "rpcUrl" + | "rpcUrlStructs" + | "rpcUrls" + | "serializeAddress(string,string,address[])" + | "serializeAddress(string,string,address)" + | "serializeBool(string,string,bool[])" + | "serializeBool(string,string,bool)" + | "serializeBytes(string,string,bytes[])" + | "serializeBytes(string,string,bytes)" + | "serializeBytes32(string,string,bytes32[])" + | "serializeBytes32(string,string,bytes32)" + | "serializeInt(string,string,int256)" + | "serializeInt(string,string,int256[])" + | "serializeJson" + | "serializeJsonType(string,bytes)" + | "serializeJsonType(string,string,string,bytes)" + | "serializeString(string,string,string[])" + | "serializeString(string,string,string)" + | "serializeUint(string,string,uint256)" + | "serializeUint(string,string,uint256[])" + | "serializeUintToHex" + | "setEnv" + | "sign(bytes32)" + | "sign(address,bytes32)" + | "sign((address,uint256,uint256,uint256),bytes32)" + | "sign(uint256,bytes32)" + | "signP256" + | "sleep" + | "split" + | "startBroadcast()" + | "startBroadcast(address)" + | "startBroadcast(uint256)" + | "startMappingRecording" + | "startStateDiffRecording" + | "stopAndReturnStateDiff" + | "stopBroadcast" + | "stopMappingRecording" + | "toBase64(string)" + | "toBase64(bytes)" + | "toBase64URL(string)" + | "toBase64URL(bytes)" + | "toLowercase" + | "toString(address)" + | "toString(uint256)" + | "toString(bytes)" + | "toString(bool)" + | "toString(int256)" + | "toString(bytes32)" + | "toUppercase" + | "trim" + | "tryFfi" + | "unixTime" + | "writeFile" + | "writeFileBinary" + | "writeJson(string,string,string)" + | "writeJson(string,string)" + | "writeLine" + | "writeToml(string,string,string)" + | "writeToml(string,string)" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "accesses", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "addr", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRel(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32[],bytes32[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256[],int256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address,address,string)", + values: [AddressLike, AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address[],address[])", + values: [AddressLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address[],address[],string)", + values: [AddressLike[], AddressLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool,bool,string)", + values: [boolean, boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256[],uint256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool[],bool[])", + values: [boolean[], boolean[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256[],int256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256[],uint256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes,bytes)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertEq(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32,bytes32,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string[],string[])", + values: [string[], string[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes32[],bytes32[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes,bytes,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool[],bool[],string)", + values: [boolean[], boolean[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes[],bytes[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string[],string[],string)", + values: [string[], string[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bytes[],bytes[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertEq(bool,bool)", + values: [boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "assertEq(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertFalse(bool,string)", + values: [boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertFalse(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "assertGe(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGe(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGe(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGe(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGeDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGt(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGt(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertGtDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLe(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLe(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLeDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLt(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLt(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLt(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLt(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertLtDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32[],bytes32[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256[],int256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool,bool,string)", + values: [boolean, boolean, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes[],bytes[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool,bool)", + values: [boolean, boolean] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool[],bool[])", + values: [boolean[], boolean[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes,bytes)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address[],address[])", + values: [AddressLike[], AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256,int256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256[],uint256[])", + values: [BigNumberish[], BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bool[],bool[],string)", + values: [boolean[], boolean[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address[],address[],string)", + values: [AddressLike[], AddressLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address,address,string)", + values: [AddressLike, AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes,bytes,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256,uint256,string)", + values: [BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256[],uint256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(address,address)", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32,bytes32,string)", + values: [BytesLike, BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string[],string[],string)", + values: [string[], string[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes32[],bytes32[],string)", + values: [BytesLike[], BytesLike[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(string[],string[])", + values: [string[], string[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256[],int256[],string)", + values: [BigNumberish[], BigNumberish[], string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(bytes[],bytes[])", + values: [BytesLike[], BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "assertNotEq(int256,int256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(int256,int256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", + values: [BigNumberish, BigNumberish, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "assertTrue(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "assertTrue(bool,string)", + values: [boolean, string] + ): string; + encodeFunctionData(functionFragment: "assume", values: [boolean]): string; + encodeFunctionData( + functionFragment: "breakpoint(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "breakpoint(string,bool)", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "broadcast()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "broadcast(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "broadcast(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "closeFile", values: [string]): string; + encodeFunctionData( + functionFragment: "computeCreate2Address(bytes32,bytes32)", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "computeCreate2Address(bytes32,bytes32,address)", + values: [BytesLike, BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "computeCreateAddress", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "copyFile", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "createDir", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "createWallet(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "createWallet(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "createWallet(uint256,string)", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deployCode(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deployCode(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,string,uint32,string)", + values: [string, string, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,uint32,string)", + values: [string, BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,uint32)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "deriveKey(string,string,uint32)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "ensNamehash", values: [string]): string; + encodeFunctionData( + functionFragment: "envAddress(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envAddress(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBool(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envBool(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envBytes(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes32(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envBytes32(string)", + values: [string] + ): string; + encodeFunctionData(functionFragment: "envExists", values: [string]): string; + encodeFunctionData( + functionFragment: "envInt(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envInt(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bytes32[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,int256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bool)", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,address)", + values: [string, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,uint256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bytes[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,uint256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,string[])", + values: [string, string, string[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,bytes32)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,int256)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,address[])", + values: [string, string, AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envOr(string,string,bool[])", + values: [string, string, boolean[]] + ): string; + encodeFunctionData( + functionFragment: "envString(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "envString(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envUint(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "envUint(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "eth_getLogs", + values: [BigNumberish, BigNumberish, AddressLike, BytesLike[]] + ): string; + encodeFunctionData(functionFragment: "exists", values: [string]): string; + encodeFunctionData(functionFragment: "ffi", values: [string[]]): string; + encodeFunctionData(functionFragment: "fsMetadata", values: [string]): string; + encodeFunctionData( + functionFragment: "getBlobBaseFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockNumber", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockTimestamp", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getCode", values: [string]): string; + encodeFunctionData( + functionFragment: "getDeployedCode", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "getLabel", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingKeyAndParentOf", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingLength", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "getMappingSlotAt", + values: [AddressLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "getNonce(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "getNonce((address,uint256,uint256,uint256))", + values: [VmSafe.WalletStruct] + ): string; + encodeFunctionData( + functionFragment: "getRecordedLogs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "indexOf", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "isContext", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "isDir", values: [string]): string; + encodeFunctionData(functionFragment: "isFile", values: [string]): string; + encodeFunctionData( + functionFragment: "keyExists", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "keyExistsJson", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "keyExistsToml", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "label", + values: [AddressLike, string] + ): string; + encodeFunctionData( + functionFragment: "lastCallGas", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "load", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "parseAddress", + values: [string] + ): string; + encodeFunctionData(functionFragment: "parseBool", values: [string]): string; + encodeFunctionData(functionFragment: "parseBytes", values: [string]): string; + encodeFunctionData( + functionFragment: "parseBytes32", + values: [string] + ): string; + encodeFunctionData(functionFragment: "parseInt", values: [string]): string; + encodeFunctionData( + functionFragment: "parseJson(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "parseJson(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonAddress", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonAddressArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBool", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBoolArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes32", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytes32Array", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonBytesArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonInt", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonIntArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonKeys", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonString", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonStringArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonType(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonType(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonTypeArray", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonUint", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseJsonUintArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseToml(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseToml(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlAddress", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlAddressArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBool", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBoolArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes32", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytes32Array", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlBytesArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlInt", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlIntArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlKeys", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlString", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlStringArray", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlUint", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "parseTomlUintArray", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "parseUint", values: [string]): string; + encodeFunctionData( + functionFragment: "pauseGasMetering", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "projectRoot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "prompt", values: [string]): string; + encodeFunctionData( + functionFragment: "promptAddress", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "promptSecret", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "promptSecretUint", + values: [string] + ): string; + encodeFunctionData(functionFragment: "promptUint", values: [string]): string; + encodeFunctionData( + functionFragment: "randomAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "randomUint()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "randomUint(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "readDir(string,uint64)", + values: [string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "readDir(string,uint64,bool)", + values: [string, BigNumberish, boolean] + ): string; + encodeFunctionData( + functionFragment: "readDir(string)", + values: [string] + ): string; + encodeFunctionData(functionFragment: "readFile", values: [string]): string; + encodeFunctionData( + functionFragment: "readFileBinary", + values: [string] + ): string; + encodeFunctionData(functionFragment: "readLine", values: [string]): string; + encodeFunctionData(functionFragment: "readLink", values: [string]): string; + encodeFunctionData(functionFragment: "record", values?: undefined): string; + encodeFunctionData( + functionFragment: "recordLogs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "rememberKey", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "removeDir", + values: [string, boolean] + ): string; + encodeFunctionData(functionFragment: "removeFile", values: [string]): string; + encodeFunctionData( + functionFragment: "replace", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "resumeGasMetering", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "rpc(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "rpc(string,string)", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "rpcUrl", values: [string]): string; + encodeFunctionData( + functionFragment: "rpcUrlStructs", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "rpcUrls", values?: undefined): string; + encodeFunctionData( + functionFragment: "serializeAddress(string,string,address[])", + values: [string, string, AddressLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeAddress(string,string,address)", + values: [string, string, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "serializeBool(string,string,bool[])", + values: [string, string, boolean[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBool(string,string,bool)", + values: [string, string, boolean] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes(string,string,bytes[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes(string,string,bytes)", + values: [string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes32(string,string,bytes32[])", + values: [string, string, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "serializeBytes32(string,string,bytes32)", + values: [string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeInt(string,string,int256)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "serializeInt(string,string,int256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "serializeJson", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "serializeJsonType(string,bytes)", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeJsonType(string,string,string,bytes)", + values: [string, string, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "serializeString(string,string,string[])", + values: [string, string, string[]] + ): string; + encodeFunctionData( + functionFragment: "serializeString(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "serializeUint(string,string,uint256)", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "serializeUint(string,string,uint256[])", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "serializeUintToHex", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setEnv", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "sign(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign(address,bytes32)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", + values: [VmSafe.WalletStruct, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "sign(uint256,bytes32)", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "signP256", + values: [BigNumberish, BytesLike] + ): string; + encodeFunctionData(functionFragment: "sleep", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "split", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "startBroadcast()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startBroadcast(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "startBroadcast(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "startMappingRecording", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startStateDiffRecording", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopAndReturnStateDiff", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopBroadcast", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stopMappingRecording", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "toBase64(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "toBase64(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "toBase64URL(string)", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "toBase64URL(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "toLowercase", values: [string]): string; + encodeFunctionData( + functionFragment: "toString(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "toString(uint256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "toString(bytes)", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "toString(bool)", + values: [boolean] + ): string; + encodeFunctionData( + functionFragment: "toString(int256)", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "toString(bytes32)", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "toUppercase", values: [string]): string; + encodeFunctionData(functionFragment: "trim", values: [string]): string; + encodeFunctionData(functionFragment: "tryFfi", values: [string[]]): string; + encodeFunctionData(functionFragment: "unixTime", values?: undefined): string; + encodeFunctionData( + functionFragment: "writeFile", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeFileBinary", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "writeJson(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "writeJson(string,string)", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeLine", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "writeToml(string,string,string)", + values: [string, string, string] + ): string; + encodeFunctionData( + functionFragment: "writeToml(string,string)", + values: [string, string] + ): string; + + decodeFunctionResult(functionFragment: "accesses", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "addr", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRel(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32[],bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256[],int256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address,address,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address[],address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address[],address[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool,bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256[],uint256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool[],bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256[],int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256[],uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32,bytes32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string[],string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes32[],bytes32[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes,bytes,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool[],bool[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes[],bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string[],string[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bytes[],bytes[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEq(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertFalse(bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertFalse(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGe(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGeDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGt(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertGtDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLe(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLeDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLt(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertLtDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32[],bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256[],int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool,bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes[],bytes[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool[],bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address[],address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256,int256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256[],uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bool[],bool[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address[],address[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address,address,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes,bytes,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256[],uint256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32,bytes32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string[],string[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes32[],bytes32[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(string[],string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256[],int256[],string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(bytes[],bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEq(int256,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(int256,int256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertTrue(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assertTrue(bool,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "assume", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "breakpoint(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "breakpoint(string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "broadcast(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "closeFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "computeCreate2Address(bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "computeCreate2Address(bytes32,bytes32,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "computeCreateAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "copyFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "createDir", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createWallet(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createWallet(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createWallet(uint256,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployCode(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployCode(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,string,uint32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,uint32,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,uint32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deriveKey(string,string,uint32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "ensNamehash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envAddress(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envAddress(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBool(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBool(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes32(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envBytes32(string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "envExists", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "envInt(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envInt(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envOr(string,string,bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envString(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envString(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envUint(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "envUint(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "eth_getLogs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ffi", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fsMetadata", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getBlobBaseFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockNumber", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getCode", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getDeployedCode", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getLabel", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMappingKeyAndParentOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMappingLength", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMappingSlotAt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNonce(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNonce((address,uint256,uint256,uint256))", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecordedLogs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "indexOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isContext", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isDir", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "keyExists", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "keyExistsJson", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "keyExistsToml", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "label", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "lastCallGas", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "load", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseBool", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "parseBytes", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseBytes32", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseInt", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "parseJson(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJson(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonAddressArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBool", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBoolArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes32", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytes32Array", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonBytesArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonInt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonIntArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonString", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonStringArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonType(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonType(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonTypeArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonUint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseJsonUintArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseToml(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseToml(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlAddressArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBool", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBoolArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes32", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytes32Array", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlBytesArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlInt", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlIntArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlString", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlStringArray", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlUint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "parseTomlUintArray", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "parseUint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pauseGasMetering", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "projectRoot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "prompt", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "promptAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "promptSecret", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "promptSecretUint", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "promptUint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "randomAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "randomUint()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "randomUint(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string,uint64)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string,uint64,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "readDir(string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "readFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "readFileBinary", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "readLine", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "readLink", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "record", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "recordLogs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rememberKey", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "removeDir", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "removeFile", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "replace", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "resumeGasMetering", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rpc(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rpc(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "rpcUrl", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rpcUrlStructs", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "rpcUrls", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "serializeAddress(string,string,address[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeAddress(string,string,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBool(string,string,bool[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBool(string,string,bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes(string,string,bytes[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes(string,string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes32(string,string,bytes32[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeBytes32(string,string,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeInt(string,string,int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeInt(string,string,int256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJson", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJsonType(string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeJsonType(string,string,string,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeString(string,string,string[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeString(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUint(string,string,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUint(string,string,uint256[])", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "serializeUintToHex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setEnv", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "sign(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign(address,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign((address,uint256,uint256,uint256),bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "sign(uint256,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "signP256", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "sleep", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "split", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "startBroadcast()", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startBroadcast(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startBroadcast(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startMappingRecording", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startStateDiffRecording", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopAndReturnStateDiff", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopBroadcast", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopMappingRecording", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64URL(string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toBase64URL(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toLowercase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bool)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(int256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toString(bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "toUppercase", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "trim", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tryFfi", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unixTime", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "writeFile", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "writeFileBinary", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeJson(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeJson(string,string)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "writeLine", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "writeToml(string,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "writeToml(string,string)", + data: BytesLike + ): Result; +} + +export interface VmSafe extends BaseContract { + connect(runner?: ContractRunner | null): VmSafe; + waitForDeployment(): Promise; + + interface: VmSafeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + accesses: TypedContractMethod< + [target: AddressLike], + [[string[], string[]] & { readSlots: string[]; writeSlots: string[] }], + "nonpayable" + >; + + addr: TypedContractMethod<[privateKey: BigNumberish], [string], "view">; + + "assertApproxEqAbs(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqAbs(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqAbs(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbs(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqRel(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRel(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + + "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(int256,int256,uint256,uint256)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + + "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertEq(bytes32[],bytes32[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertEq(int256[],int256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertEq(address,address,string)": TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + + "assertEq(string,string,string)": TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + + "assertEq(address[],address[])": TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + + "assertEq(address[],address[],string)": TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + + "assertEq(bool,bool,string)": TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + + "assertEq(address,address)": TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + + "assertEq(uint256[],uint256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertEq(bool[],bool[])": TypedContractMethod< + [left: boolean[], right: boolean[]], + [void], + "view" + >; + + "assertEq(int256[],int256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertEq(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertEq(bytes32,bytes32)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertEq(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertEq(uint256[],uint256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertEq(bytes,bytes)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertEq(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertEq(bytes32,bytes32,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertEq(string[],string[])": TypedContractMethod< + [left: string[], right: string[]], + [void], + "view" + >; + + "assertEq(bytes32[],bytes32[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertEq(bytes,bytes,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertEq(bool[],bool[],string)": TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + + "assertEq(bytes[],bytes[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertEq(string[],string[],string)": TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + + "assertEq(string,string)": TypedContractMethod< + [left: string, right: string], + [void], + "view" + >; + + "assertEq(bytes[],bytes[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertEq(bool,bool)": TypedContractMethod< + [left: boolean, right: boolean], + [void], + "view" + >; + + "assertEq(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertEqDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertEqDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertFalse(bool,string)": TypedContractMethod< + [condition: boolean, error: string], + [void], + "view" + >; + + "assertFalse(bool)": TypedContractMethod< + [condition: boolean], + [void], + "view" + >; + + "assertGe(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGe(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGe(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGe(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGeDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGeDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGeDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGeDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGt(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGt(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGt(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertGt(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertGtDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGtDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertGtDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertGtDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLe(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLe(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLe(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLe(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLeDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLeDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLeDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLeDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLt(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLt(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLt(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertLt(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertLtDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertLtDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLtDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertLtDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEq(bytes32[],bytes32[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertNotEq(int256[],int256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertNotEq(bool,bool,string)": TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + + "assertNotEq(bytes[],bytes[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertNotEq(bool,bool)": TypedContractMethod< + [left: boolean, right: boolean], + [void], + "view" + >; + + "assertNotEq(bool[],bool[])": TypedContractMethod< + [left: boolean[], right: boolean[]], + [void], + "view" + >; + + "assertNotEq(bytes,bytes)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertNotEq(address[],address[])": TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + + "assertNotEq(int256,int256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertNotEq(uint256[],uint256[])": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + + "assertNotEq(bool[],bool[],string)": TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + + "assertNotEq(string,string)": TypedContractMethod< + [left: string, right: string], + [void], + "view" + >; + + "assertNotEq(address[],address[],string)": TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + + "assertNotEq(string,string,string)": TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + + "assertNotEq(address,address,string)": TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + + "assertNotEq(bytes32,bytes32)": TypedContractMethod< + [left: BytesLike, right: BytesLike], + [void], + "view" + >; + + "assertNotEq(bytes,bytes,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertNotEq(uint256,uint256,string)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + + "assertNotEq(uint256[],uint256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertNotEq(address,address)": TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + + "assertNotEq(bytes32,bytes32,string)": TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + + "assertNotEq(string[],string[],string)": TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + + "assertNotEq(uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertNotEq(bytes32[],bytes32[],string)": TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + + "assertNotEq(string[],string[])": TypedContractMethod< + [left: string[], right: string[]], + [void], + "view" + >; + + "assertNotEq(int256[],int256[],string)": TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + + "assertNotEq(bytes[],bytes[])": TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + + "assertNotEq(int256,int256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(int256,int256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(int256,int256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertNotEqDecimal(uint256,uint256,uint256)": TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + + "assertNotEqDecimal(uint256,uint256,uint256,string)": TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + + "assertTrue(bool)": TypedContractMethod<[condition: boolean], [void], "view">; + + "assertTrue(bool,string)": TypedContractMethod< + [condition: boolean, error: string], + [void], + "view" + >; + + assume: TypedContractMethod<[condition: boolean], [void], "view">; + + "breakpoint(string)": TypedContractMethod< + [char: string], + [void], + "nonpayable" + >; + + "breakpoint(string,bool)": TypedContractMethod< + [char: string, value: boolean], + [void], + "nonpayable" + >; + + "broadcast()": TypedContractMethod<[], [void], "nonpayable">; + + "broadcast(address)": TypedContractMethod< + [signer: AddressLike], + [void], + "nonpayable" + >; + + "broadcast(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [void], + "nonpayable" + >; + + closeFile: TypedContractMethod<[path: string], [void], "nonpayable">; + + "computeCreate2Address(bytes32,bytes32)": TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike], + [string], + "view" + >; + + "computeCreate2Address(bytes32,bytes32,address)": TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike, deployer: AddressLike], + [string], + "view" + >; + + computeCreateAddress: TypedContractMethod< + [deployer: AddressLike, nonce: BigNumberish], + [string], + "view" + >; + + copyFile: TypedContractMethod< + [from: string, to: string], + [bigint], + "nonpayable" + >; + + createDir: TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + + "createWallet(string)": TypedContractMethod< + [walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + "createWallet(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + "createWallet(uint256,string)": TypedContractMethod< + [privateKey: BigNumberish, walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + + "deployCode(string,bytes)": TypedContractMethod< + [artifactPath: string, constructorArgs: BytesLike], + [string], + "nonpayable" + >; + + "deployCode(string)": TypedContractMethod< + [artifactPath: string], + [string], + "nonpayable" + >; + + "deriveKey(string,string,uint32,string)": TypedContractMethod< + [ + mnemonic: string, + derivationPath: string, + index: BigNumberish, + language: string + ], + [bigint], + "view" + >; + + "deriveKey(string,uint32,string)": TypedContractMethod< + [mnemonic: string, index: BigNumberish, language: string], + [bigint], + "view" + >; + + "deriveKey(string,uint32)": TypedContractMethod< + [mnemonic: string, index: BigNumberish], + [bigint], + "view" + >; + + "deriveKey(string,string,uint32)": TypedContractMethod< + [mnemonic: string, derivationPath: string, index: BigNumberish], + [bigint], + "view" + >; + + ensNamehash: TypedContractMethod<[name: string], [string], "view">; + + "envAddress(string)": TypedContractMethod<[name: string], [string], "view">; + + "envAddress(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBool(string)": TypedContractMethod<[name: string], [boolean], "view">; + + "envBool(string,string)": TypedContractMethod< + [name: string, delim: string], + [boolean[]], + "view" + >; + + "envBytes(string)": TypedContractMethod<[name: string], [string], "view">; + + "envBytes(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBytes32(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envBytes32(string)": TypedContractMethod<[name: string], [string], "view">; + + envExists: TypedContractMethod<[name: string], [boolean], "view">; + + "envInt(string,string)": TypedContractMethod< + [name: string, delim: string], + [bigint[]], + "view" + >; + + "envInt(string)": TypedContractMethod<[name: string], [bigint], "view">; + + "envOr(string,string,bytes32[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + + "envOr(string,string,int256[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + + "envOr(string,bool)": TypedContractMethod< + [name: string, defaultValue: boolean], + [boolean], + "view" + >; + + "envOr(string,address)": TypedContractMethod< + [name: string, defaultValue: AddressLike], + [string], + "view" + >; + + "envOr(string,uint256)": TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + + "envOr(string,string,bytes[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + + "envOr(string,string,uint256[])": TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + + "envOr(string,string,string[])": TypedContractMethod< + [name: string, delim: string, defaultValue: string[]], + [string[]], + "view" + >; + + "envOr(string,bytes)": TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + + "envOr(string,bytes32)": TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + + "envOr(string,int256)": TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + + "envOr(string,string,address[])": TypedContractMethod< + [name: string, delim: string, defaultValue: AddressLike[]], + [string[]], + "view" + >; + + "envOr(string,string)": TypedContractMethod< + [name: string, defaultValue: string], + [string], + "view" + >; + + "envOr(string,string,bool[])": TypedContractMethod< + [name: string, delim: string, defaultValue: boolean[]], + [boolean[]], + "view" + >; + + "envString(string,string)": TypedContractMethod< + [name: string, delim: string], + [string[]], + "view" + >; + + "envString(string)": TypedContractMethod<[name: string], [string], "view">; + + "envUint(string)": TypedContractMethod<[name: string], [bigint], "view">; + + "envUint(string,string)": TypedContractMethod< + [name: string, delim: string], + [bigint[]], + "view" + >; + + eth_getLogs: TypedContractMethod< + [ + fromBlock: BigNumberish, + toBlock: BigNumberish, + target: AddressLike, + topics: BytesLike[] + ], + [VmSafe.EthGetLogsStructOutput[]], + "nonpayable" + >; + + exists: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + ffi: TypedContractMethod<[commandInput: string[]], [string], "nonpayable">; + + fsMetadata: TypedContractMethod< + [path: string], + [VmSafe.FsMetadataStructOutput], + "view" + >; + + getBlobBaseFee: TypedContractMethod<[], [bigint], "view">; + + getBlockNumber: TypedContractMethod<[], [bigint], "view">; + + getBlockTimestamp: TypedContractMethod<[], [bigint], "view">; + + getCode: TypedContractMethod<[artifactPath: string], [string], "view">; + + getDeployedCode: TypedContractMethod< + [artifactPath: string], + [string], + "view" + >; + + getLabel: TypedContractMethod<[account: AddressLike], [string], "view">; + + getMappingKeyAndParentOf: TypedContractMethod< + [target: AddressLike, elementSlot: BytesLike], + [ + [boolean, string, string] & { + found: boolean; + key: string; + parent: string; + } + ], + "nonpayable" + >; + + getMappingLength: TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike], + [bigint], + "nonpayable" + >; + + getMappingSlotAt: TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike, idx: BigNumberish], + [string], + "nonpayable" + >; + + "getNonce(address)": TypedContractMethod< + [account: AddressLike], + [bigint], + "view" + >; + + "getNonce((address,uint256,uint256,uint256))": TypedContractMethod< + [wallet: VmSafe.WalletStruct], + [bigint], + "nonpayable" + >; + + getRecordedLogs: TypedContractMethod< + [], + [VmSafe.LogStructOutput[]], + "nonpayable" + >; + + indexOf: TypedContractMethod<[input: string, key: string], [bigint], "view">; + + isContext: TypedContractMethod<[context: BigNumberish], [boolean], "view">; + + isDir: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + isFile: TypedContractMethod<[path: string], [boolean], "nonpayable">; + + keyExists: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + keyExistsJson: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + keyExistsToml: TypedContractMethod< + [toml: string, key: string], + [boolean], + "view" + >; + + label: TypedContractMethod< + [account: AddressLike, newLabel: string], + [void], + "nonpayable" + >; + + lastCallGas: TypedContractMethod<[], [VmSafe.GasStructOutput], "view">; + + load: TypedContractMethod< + [target: AddressLike, slot: BytesLike], + [string], + "view" + >; + + parseAddress: TypedContractMethod< + [stringifiedValue: string], + [string], + "view" + >; + + parseBool: TypedContractMethod<[stringifiedValue: string], [boolean], "view">; + + parseBytes: TypedContractMethod<[stringifiedValue: string], [string], "view">; + + parseBytes32: TypedContractMethod< + [stringifiedValue: string], + [string], + "view" + >; + + parseInt: TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + + "parseJson(string)": TypedContractMethod<[json: string], [string], "view">; + + "parseJson(string,string)": TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonAddress: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonAddressArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonBool: TypedContractMethod< + [json: string, key: string], + [boolean], + "view" + >; + + parseJsonBoolArray: TypedContractMethod< + [json: string, key: string], + [boolean[]], + "view" + >; + + parseJsonBytes: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonBytes32: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonBytes32Array: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonBytesArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonInt: TypedContractMethod< + [json: string, key: string], + [bigint], + "view" + >; + + parseJsonIntArray: TypedContractMethod< + [json: string, key: string], + [bigint[]], + "view" + >; + + parseJsonKeys: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + parseJsonString: TypedContractMethod< + [json: string, key: string], + [string], + "view" + >; + + parseJsonStringArray: TypedContractMethod< + [json: string, key: string], + [string[]], + "view" + >; + + "parseJsonType(string,string)": TypedContractMethod< + [json: string, typeDescription: string], + [string], + "view" + >; + + "parseJsonType(string,string,string)": TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + + parseJsonTypeArray: TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + + parseJsonUint: TypedContractMethod< + [json: string, key: string], + [bigint], + "view" + >; + + parseJsonUintArray: TypedContractMethod< + [json: string, key: string], + [bigint[]], + "view" + >; + + "parseToml(string,string)": TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + "parseToml(string)": TypedContractMethod<[toml: string], [string], "view">; + + parseTomlAddress: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlAddressArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlBool: TypedContractMethod< + [toml: string, key: string], + [boolean], + "view" + >; + + parseTomlBoolArray: TypedContractMethod< + [toml: string, key: string], + [boolean[]], + "view" + >; + + parseTomlBytes: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlBytes32: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlBytes32Array: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlBytesArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlInt: TypedContractMethod< + [toml: string, key: string], + [bigint], + "view" + >; + + parseTomlIntArray: TypedContractMethod< + [toml: string, key: string], + [bigint[]], + "view" + >; + + parseTomlKeys: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlString: TypedContractMethod< + [toml: string, key: string], + [string], + "view" + >; + + parseTomlStringArray: TypedContractMethod< + [toml: string, key: string], + [string[]], + "view" + >; + + parseTomlUint: TypedContractMethod< + [toml: string, key: string], + [bigint], + "view" + >; + + parseTomlUintArray: TypedContractMethod< + [toml: string, key: string], + [bigint[]], + "view" + >; + + parseUint: TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + + pauseGasMetering: TypedContractMethod<[], [void], "nonpayable">; + + projectRoot: TypedContractMethod<[], [string], "view">; + + prompt: TypedContractMethod<[promptText: string], [string], "nonpayable">; + + promptAddress: TypedContractMethod< + [promptText: string], + [string], + "nonpayable" + >; + + promptSecret: TypedContractMethod< + [promptText: string], + [string], + "nonpayable" + >; + + promptSecretUint: TypedContractMethod< + [promptText: string], + [bigint], + "nonpayable" + >; + + promptUint: TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + + randomAddress: TypedContractMethod<[], [string], "nonpayable">; + + "randomUint()": TypedContractMethod<[], [bigint], "nonpayable">; + + "randomUint(uint256,uint256)": TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [bigint], + "nonpayable" + >; + + "readDir(string,uint64)": TypedContractMethod< + [path: string, maxDepth: BigNumberish], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + "readDir(string,uint64,bool)": TypedContractMethod< + [path: string, maxDepth: BigNumberish, followLinks: boolean], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + "readDir(string)": TypedContractMethod< + [path: string], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + + readFile: TypedContractMethod<[path: string], [string], "view">; + + readFileBinary: TypedContractMethod<[path: string], [string], "view">; + + readLine: TypedContractMethod<[path: string], [string], "view">; + + readLink: TypedContractMethod<[linkPath: string], [string], "view">; + + record: TypedContractMethod<[], [void], "nonpayable">; + + recordLogs: TypedContractMethod<[], [void], "nonpayable">; + + rememberKey: TypedContractMethod< + [privateKey: BigNumberish], + [string], + "nonpayable" + >; + + removeDir: TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + + removeFile: TypedContractMethod<[path: string], [void], "nonpayable">; + + replace: TypedContractMethod< + [input: string, from: string, to: string], + [string], + "view" + >; + + resumeGasMetering: TypedContractMethod<[], [void], "nonpayable">; + + "rpc(string,string,string)": TypedContractMethod< + [urlOrAlias: string, method: string, params: string], + [string], + "nonpayable" + >; + + "rpc(string,string)": TypedContractMethod< + [method: string, params: string], + [string], + "nonpayable" + >; + + rpcUrl: TypedContractMethod<[rpcAlias: string], [string], "view">; + + rpcUrlStructs: TypedContractMethod<[], [VmSafe.RpcStructOutput[]], "view">; + + rpcUrls: TypedContractMethod<[], [[string, string][]], "view">; + + "serializeAddress(string,string,address[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: AddressLike[]], + [string], + "nonpayable" + >; + + "serializeAddress(string,string,address)": TypedContractMethod< + [objectKey: string, valueKey: string, value: AddressLike], + [string], + "nonpayable" + >; + + "serializeBool(string,string,bool[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: boolean[]], + [string], + "nonpayable" + >; + + "serializeBool(string,string,bool)": TypedContractMethod< + [objectKey: string, valueKey: string, value: boolean], + [string], + "nonpayable" + >; + + "serializeBytes(string,string,bytes[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + + "serializeBytes(string,string,bytes)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + + "serializeBytes32(string,string,bytes32[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + + "serializeBytes32(string,string,bytes32)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + + "serializeInt(string,string,int256)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + "serializeInt(string,string,int256[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + + serializeJson: TypedContractMethod< + [objectKey: string, value: string], + [string], + "nonpayable" + >; + + "serializeJsonType(string,bytes)": TypedContractMethod< + [typeDescription: string, value: BytesLike], + [string], + "view" + >; + + "serializeJsonType(string,string,string,bytes)": TypedContractMethod< + [ + objectKey: string, + valueKey: string, + typeDescription: string, + value: BytesLike + ], + [string], + "nonpayable" + >; + + "serializeString(string,string,string[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: string[]], + [string], + "nonpayable" + >; + + "serializeString(string,string,string)": TypedContractMethod< + [objectKey: string, valueKey: string, value: string], + [string], + "nonpayable" + >; + + "serializeUint(string,string,uint256)": TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + "serializeUint(string,string,uint256[])": TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + + serializeUintToHex: TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + + setEnv: TypedContractMethod< + [name: string, value: string], + [void], + "nonpayable" + >; + + "sign(bytes32)": TypedContractMethod< + [digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + "sign(address,bytes32)": TypedContractMethod< + [signer: AddressLike, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + "sign((address,uint256,uint256,uint256),bytes32)": TypedContractMethod< + [wallet: VmSafe.WalletStruct, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "nonpayable" + >; + + "sign(uint256,bytes32)": TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + + signP256: TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[string, string] & { r: string; s: string }], + "view" + >; + + sleep: TypedContractMethod<[duration: BigNumberish], [void], "nonpayable">; + + split: TypedContractMethod< + [input: string, delimiter: string], + [string[]], + "view" + >; + + "startBroadcast()": TypedContractMethod<[], [void], "nonpayable">; + + "startBroadcast(address)": TypedContractMethod< + [signer: AddressLike], + [void], + "nonpayable" + >; + + "startBroadcast(uint256)": TypedContractMethod< + [privateKey: BigNumberish], + [void], + "nonpayable" + >; + + startMappingRecording: TypedContractMethod<[], [void], "nonpayable">; + + startStateDiffRecording: TypedContractMethod<[], [void], "nonpayable">; + + stopAndReturnStateDiff: TypedContractMethod< + [], + [VmSafe.AccountAccessStructOutput[]], + "nonpayable" + >; + + stopBroadcast: TypedContractMethod<[], [void], "nonpayable">; + + stopMappingRecording: TypedContractMethod<[], [void], "nonpayable">; + + "toBase64(string)": TypedContractMethod<[data: string], [string], "view">; + + "toBase64(bytes)": TypedContractMethod<[data: BytesLike], [string], "view">; + + "toBase64URL(string)": TypedContractMethod<[data: string], [string], "view">; + + "toBase64URL(bytes)": TypedContractMethod< + [data: BytesLike], + [string], + "view" + >; + + toLowercase: TypedContractMethod<[input: string], [string], "view">; + + "toString(address)": TypedContractMethod< + [value: AddressLike], + [string], + "view" + >; + + "toString(uint256)": TypedContractMethod< + [value: BigNumberish], + [string], + "view" + >; + + "toString(bytes)": TypedContractMethod<[value: BytesLike], [string], "view">; + + "toString(bool)": TypedContractMethod<[value: boolean], [string], "view">; + + "toString(int256)": TypedContractMethod< + [value: BigNumberish], + [string], + "view" + >; + + "toString(bytes32)": TypedContractMethod< + [value: BytesLike], + [string], + "view" + >; + + toUppercase: TypedContractMethod<[input: string], [string], "view">; + + trim: TypedContractMethod<[input: string], [string], "view">; + + tryFfi: TypedContractMethod< + [commandInput: string[]], + [VmSafe.FfiResultStructOutput], + "nonpayable" + >; + + unixTime: TypedContractMethod<[], [bigint], "nonpayable">; + + writeFile: TypedContractMethod< + [path: string, data: string], + [void], + "nonpayable" + >; + + writeFileBinary: TypedContractMethod< + [path: string, data: BytesLike], + [void], + "nonpayable" + >; + + "writeJson(string,string,string)": TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + + "writeJson(string,string)": TypedContractMethod< + [json: string, path: string], + [void], + "nonpayable" + >; + + writeLine: TypedContractMethod< + [path: string, data: string], + [void], + "nonpayable" + >; + + "writeToml(string,string,string)": TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + + "writeToml(string,string)": TypedContractMethod< + [json: string, path: string], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "accesses" + ): TypedContractMethod< + [target: AddressLike], + [[string[], string[]] & { readSlots: string[]; writeSlots: string[] }], + "nonpayable" + >; + getFunction( + nameOrSignature: "addr" + ): TypedContractMethod<[privateKey: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "assertApproxEqAbs(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbs(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRel(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, maxPercentDelta: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + maxPercentDelta: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32[],bytes32[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(int256[],int256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address,address,string)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string,string,string)" + ): TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address[],address[])" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address[],address[],string)" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool,bool,string)" + ): TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(address,address)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(uint256[],uint256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool[],bool[])" + ): TypedContractMethod<[left: boolean[], right: boolean[]], [void], "view">; + getFunction( + nameOrSignature: "assertEq(int256[],int256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32,bytes32)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertEq(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(uint256[],uint256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes,bytes)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertEq(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes32,bytes32,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string[],string[])" + ): TypedContractMethod<[left: string[], right: string[]], [void], "view">; + getFunction( + nameOrSignature: "assertEq(bytes32[],bytes32[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes,bytes,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool[],bool[],string)" + ): TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bytes[],bytes[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string[],string[],string)" + ): TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(string,string)" + ): TypedContractMethod<[left: string, right: string], [void], "view">; + getFunction( + nameOrSignature: "assertEq(bytes[],bytes[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEq(bool,bool)" + ): TypedContractMethod<[left: boolean, right: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertEq(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertEqDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertFalse(bool,string)" + ): TypedContractMethod<[condition: boolean, error: string], [void], "view">; + getFunction( + nameOrSignature: "assertFalse(bool)" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertGe(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGe(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGeDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGt(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertGtDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLe(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLeDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLt(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertLtDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32[],bytes32[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256[],int256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool,bool,string)" + ): TypedContractMethod< + [left: boolean, right: boolean, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes[],bytes[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool,bool)" + ): TypedContractMethod<[left: boolean, right: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bool[],bool[])" + ): TypedContractMethod<[left: boolean[], right: boolean[]], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bytes,bytes)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(address[],address[])" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256,int256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256[],uint256[])" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bool[],bool[],string)" + ): TypedContractMethod< + [left: boolean[], right: boolean[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string,string)" + ): TypedContractMethod<[left: string, right: string], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(address[],address[],string)" + ): TypedContractMethod< + [left: AddressLike[], right: AddressLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string,string,string)" + ): TypedContractMethod< + [left: string, right: string, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(address,address,string)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32,bytes32)" + ): TypedContractMethod<[left: BytesLike, right: BytesLike], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(bytes,bytes,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256,uint256,string)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256[],uint256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(address,address)" + ): TypedContractMethod< + [left: AddressLike, right: AddressLike], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32,bytes32,string)" + ): TypedContractMethod< + [left: BytesLike, right: BytesLike, error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string[],string[],string)" + ): TypedContractMethod< + [left: string[], right: string[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes32[],bytes32[],string)" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(string[],string[])" + ): TypedContractMethod<[left: string[], right: string[]], [void], "view">; + getFunction( + nameOrSignature: "assertNotEq(int256[],int256[],string)" + ): TypedContractMethod< + [left: BigNumberish[], right: BigNumberish[], error: string], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(bytes[],bytes[])" + ): TypedContractMethod< + [left: BytesLike[], right: BytesLike[]], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEq(int256,int256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(int256,int256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(int256,int256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(uint256,uint256,uint256)" + ): TypedContractMethod< + [left: BigNumberish, right: BigNumberish, decimals: BigNumberish], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertNotEqDecimal(uint256,uint256,uint256,string)" + ): TypedContractMethod< + [ + left: BigNumberish, + right: BigNumberish, + decimals: BigNumberish, + error: string + ], + [void], + "view" + >; + getFunction( + nameOrSignature: "assertTrue(bool)" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "assertTrue(bool,string)" + ): TypedContractMethod<[condition: boolean, error: string], [void], "view">; + getFunction( + nameOrSignature: "assume" + ): TypedContractMethod<[condition: boolean], [void], "view">; + getFunction( + nameOrSignature: "breakpoint(string)" + ): TypedContractMethod<[char: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "breakpoint(string,bool)" + ): TypedContractMethod<[char: string, value: boolean], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast(address)" + ): TypedContractMethod<[signer: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "broadcast(uint256)" + ): TypedContractMethod<[privateKey: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "closeFile" + ): TypedContractMethod<[path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "computeCreate2Address(bytes32,bytes32)" + ): TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "computeCreate2Address(bytes32,bytes32,address)" + ): TypedContractMethod< + [salt: BytesLike, initCodeHash: BytesLike, deployer: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "computeCreateAddress" + ): TypedContractMethod< + [deployer: AddressLike, nonce: BigNumberish], + [string], + "view" + >; + getFunction( + nameOrSignature: "copyFile" + ): TypedContractMethod<[from: string, to: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "createDir" + ): TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "createWallet(string)" + ): TypedContractMethod< + [walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "createWallet(uint256)" + ): TypedContractMethod< + [privateKey: BigNumberish], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "createWallet(uint256,string)" + ): TypedContractMethod< + [privateKey: BigNumberish, walletLabel: string], + [VmSafe.WalletStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "deployCode(string,bytes)" + ): TypedContractMethod< + [artifactPath: string, constructorArgs: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "deployCode(string)" + ): TypedContractMethod<[artifactPath: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "deriveKey(string,string,uint32,string)" + ): TypedContractMethod< + [ + mnemonic: string, + derivationPath: string, + index: BigNumberish, + language: string + ], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,uint32,string)" + ): TypedContractMethod< + [mnemonic: string, index: BigNumberish, language: string], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,uint32)" + ): TypedContractMethod< + [mnemonic: string, index: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "deriveKey(string,string,uint32)" + ): TypedContractMethod< + [mnemonic: string, derivationPath: string, index: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "ensNamehash" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envAddress(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envAddress(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBool(string)" + ): TypedContractMethod<[name: string], [boolean], "view">; + getFunction( + nameOrSignature: "envBool(string,string)" + ): TypedContractMethod<[name: string, delim: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "envBytes(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envBytes(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBytes32(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envBytes32(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envExists" + ): TypedContractMethod<[name: string], [boolean], "view">; + getFunction( + nameOrSignature: "envInt(string,string)" + ): TypedContractMethod<[name: string, delim: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "envInt(string)" + ): TypedContractMethod<[name: string], [bigint], "view">; + getFunction( + nameOrSignature: "envOr(string,string,bytes32[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,int256[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bool)" + ): TypedContractMethod< + [name: string, defaultValue: boolean], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,address)" + ): TypedContractMethod< + [name: string, defaultValue: AddressLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,uint256)" + ): TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,bytes[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BytesLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,uint256[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: BigNumberish[]], + [bigint[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,string[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: string[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bytes)" + ): TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,bytes32)" + ): TypedContractMethod< + [name: string, defaultValue: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,int256)" + ): TypedContractMethod< + [name: string, defaultValue: BigNumberish], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,address[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: AddressLike[]], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string)" + ): TypedContractMethod< + [name: string, defaultValue: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "envOr(string,string,bool[])" + ): TypedContractMethod< + [name: string, delim: string, defaultValue: boolean[]], + [boolean[]], + "view" + >; + getFunction( + nameOrSignature: "envString(string,string)" + ): TypedContractMethod<[name: string, delim: string], [string[]], "view">; + getFunction( + nameOrSignature: "envString(string)" + ): TypedContractMethod<[name: string], [string], "view">; + getFunction( + nameOrSignature: "envUint(string)" + ): TypedContractMethod<[name: string], [bigint], "view">; + getFunction( + nameOrSignature: "envUint(string,string)" + ): TypedContractMethod<[name: string, delim: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "eth_getLogs" + ): TypedContractMethod< + [ + fromBlock: BigNumberish, + toBlock: BigNumberish, + target: AddressLike, + topics: BytesLike[] + ], + [VmSafe.EthGetLogsStructOutput[]], + "nonpayable" + >; + getFunction( + nameOrSignature: "exists" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "ffi" + ): TypedContractMethod<[commandInput: string[]], [string], "nonpayable">; + getFunction( + nameOrSignature: "fsMetadata" + ): TypedContractMethod< + [path: string], + [VmSafe.FsMetadataStructOutput], + "view" + >; + getFunction( + nameOrSignature: "getBlobBaseFee" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getBlockNumber" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getBlockTimestamp" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "getCode" + ): TypedContractMethod<[artifactPath: string], [string], "view">; + getFunction( + nameOrSignature: "getDeployedCode" + ): TypedContractMethod<[artifactPath: string], [string], "view">; + getFunction( + nameOrSignature: "getLabel" + ): TypedContractMethod<[account: AddressLike], [string], "view">; + getFunction( + nameOrSignature: "getMappingKeyAndParentOf" + ): TypedContractMethod< + [target: AddressLike, elementSlot: BytesLike], + [ + [boolean, string, string] & { + found: boolean; + key: string; + parent: string; + } + ], + "nonpayable" + >; + getFunction( + nameOrSignature: "getMappingLength" + ): TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "getMappingSlotAt" + ): TypedContractMethod< + [target: AddressLike, mappingSlot: BytesLike, idx: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "getNonce(address)" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "getNonce((address,uint256,uint256,uint256))" + ): TypedContractMethod<[wallet: VmSafe.WalletStruct], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "getRecordedLogs" + ): TypedContractMethod<[], [VmSafe.LogStructOutput[]], "nonpayable">; + getFunction( + nameOrSignature: "indexOf" + ): TypedContractMethod<[input: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "isContext" + ): TypedContractMethod<[context: BigNumberish], [boolean], "view">; + getFunction( + nameOrSignature: "isDir" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "isFile" + ): TypedContractMethod<[path: string], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "keyExists" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "keyExistsJson" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "keyExistsToml" + ): TypedContractMethod<[toml: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "label" + ): TypedContractMethod< + [account: AddressLike, newLabel: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "lastCallGas" + ): TypedContractMethod<[], [VmSafe.GasStructOutput], "view">; + getFunction( + nameOrSignature: "load" + ): TypedContractMethod< + [target: AddressLike, slot: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseAddress" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseBool" + ): TypedContractMethod<[stringifiedValue: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseBytes" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseBytes32" + ): TypedContractMethod<[stringifiedValue: string], [string], "view">; + getFunction( + nameOrSignature: "parseInt" + ): TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJson(string)" + ): TypedContractMethod<[json: string], [string], "view">; + getFunction( + nameOrSignature: "parseJson(string,string)" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonAddress" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonAddressArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonBool" + ): TypedContractMethod<[json: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseJsonBoolArray" + ): TypedContractMethod<[json: string, key: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "parseJsonBytes" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonBytes32" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonBytes32Array" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonBytesArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonInt" + ): TypedContractMethod<[json: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJsonIntArray" + ): TypedContractMethod<[json: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseJsonKeys" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonString" + ): TypedContractMethod<[json: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseJsonStringArray" + ): TypedContractMethod<[json: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseJsonType(string,string)" + ): TypedContractMethod< + [json: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonType(string,string,string)" + ): TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonTypeArray" + ): TypedContractMethod< + [json: string, key: string, typeDescription: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "parseJsonUint" + ): TypedContractMethod<[json: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseJsonUintArray" + ): TypedContractMethod<[json: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseToml(string,string)" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseToml(string)" + ): TypedContractMethod<[toml: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlAddress" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlAddressArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlBool" + ): TypedContractMethod<[toml: string, key: string], [boolean], "view">; + getFunction( + nameOrSignature: "parseTomlBoolArray" + ): TypedContractMethod<[toml: string, key: string], [boolean[]], "view">; + getFunction( + nameOrSignature: "parseTomlBytes" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlBytes32" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlBytes32Array" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlBytesArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlInt" + ): TypedContractMethod<[toml: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseTomlIntArray" + ): TypedContractMethod<[toml: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseTomlKeys" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlString" + ): TypedContractMethod<[toml: string, key: string], [string], "view">; + getFunction( + nameOrSignature: "parseTomlStringArray" + ): TypedContractMethod<[toml: string, key: string], [string[]], "view">; + getFunction( + nameOrSignature: "parseTomlUint" + ): TypedContractMethod<[toml: string, key: string], [bigint], "view">; + getFunction( + nameOrSignature: "parseTomlUintArray" + ): TypedContractMethod<[toml: string, key: string], [bigint[]], "view">; + getFunction( + nameOrSignature: "parseUint" + ): TypedContractMethod<[stringifiedValue: string], [bigint], "view">; + getFunction( + nameOrSignature: "pauseGasMetering" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "projectRoot" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "prompt" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptAddress" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptSecret" + ): TypedContractMethod<[promptText: string], [string], "nonpayable">; + getFunction( + nameOrSignature: "promptSecretUint" + ): TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "promptUint" + ): TypedContractMethod<[promptText: string], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "randomAddress" + ): TypedContractMethod<[], [string], "nonpayable">; + getFunction( + nameOrSignature: "randomUint()" + ): TypedContractMethod<[], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "randomUint(uint256,uint256)" + ): TypedContractMethod< + [min: BigNumberish, max: BigNumberish], + [bigint], + "nonpayable" + >; + getFunction( + nameOrSignature: "readDir(string,uint64)" + ): TypedContractMethod< + [path: string, maxDepth: BigNumberish], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readDir(string,uint64,bool)" + ): TypedContractMethod< + [path: string, maxDepth: BigNumberish, followLinks: boolean], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readDir(string)" + ): TypedContractMethod< + [path: string], + [VmSafe.DirEntryStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "readFile" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readFileBinary" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readLine" + ): TypedContractMethod<[path: string], [string], "view">; + getFunction( + nameOrSignature: "readLink" + ): TypedContractMethod<[linkPath: string], [string], "view">; + getFunction( + nameOrSignature: "record" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "recordLogs" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "rememberKey" + ): TypedContractMethod<[privateKey: BigNumberish], [string], "nonpayable">; + getFunction( + nameOrSignature: "removeDir" + ): TypedContractMethod< + [path: string, recursive: boolean], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "removeFile" + ): TypedContractMethod<[path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "replace" + ): TypedContractMethod< + [input: string, from: string, to: string], + [string], + "view" + >; + getFunction( + nameOrSignature: "resumeGasMetering" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "rpc(string,string,string)" + ): TypedContractMethod< + [urlOrAlias: string, method: string, params: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "rpc(string,string)" + ): TypedContractMethod< + [method: string, params: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "rpcUrl" + ): TypedContractMethod<[rpcAlias: string], [string], "view">; + getFunction( + nameOrSignature: "rpcUrlStructs" + ): TypedContractMethod<[], [VmSafe.RpcStructOutput[]], "view">; + getFunction( + nameOrSignature: "rpcUrls" + ): TypedContractMethod<[], [[string, string][]], "view">; + getFunction( + nameOrSignature: "serializeAddress(string,string,address[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: AddressLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeAddress(string,string,address)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: AddressLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBool(string,string,bool[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: boolean[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBool(string,string,bool)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: boolean], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes(string,string,bytes[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes(string,string,bytes)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes32(string,string,bytes32[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BytesLike[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeBytes32(string,string,bytes32)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BytesLike], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeInt(string,string,int256)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeInt(string,string,int256[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeJson" + ): TypedContractMethod< + [objectKey: string, value: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeJsonType(string,bytes)" + ): TypedContractMethod< + [typeDescription: string, value: BytesLike], + [string], + "view" + >; + getFunction( + nameOrSignature: "serializeJsonType(string,string,string,bytes)" + ): TypedContractMethod< + [ + objectKey: string, + valueKey: string, + typeDescription: string, + value: BytesLike + ], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeString(string,string,string[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: string[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeString(string,string,string)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: string], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUint(string,string,uint256)" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUint(string,string,uint256[])" + ): TypedContractMethod< + [objectKey: string, valueKey: string, values: BigNumberish[]], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "serializeUintToHex" + ): TypedContractMethod< + [objectKey: string, valueKey: string, value: BigNumberish], + [string], + "nonpayable" + >; + getFunction( + nameOrSignature: "setEnv" + ): TypedContractMethod<[name: string, value: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "sign(bytes32)" + ): TypedContractMethod< + [digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "sign(address,bytes32)" + ): TypedContractMethod< + [signer: AddressLike, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "sign((address,uint256,uint256,uint256),bytes32)" + ): TypedContractMethod< + [wallet: VmSafe.WalletStruct, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "nonpayable" + >; + getFunction( + nameOrSignature: "sign(uint256,bytes32)" + ): TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[bigint, string, string] & { v: bigint; r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "signP256" + ): TypedContractMethod< + [privateKey: BigNumberish, digest: BytesLike], + [[string, string] & { r: string; s: string }], + "view" + >; + getFunction( + nameOrSignature: "sleep" + ): TypedContractMethod<[duration: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "split" + ): TypedContractMethod< + [input: string, delimiter: string], + [string[]], + "view" + >; + getFunction( + nameOrSignature: "startBroadcast()" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "startBroadcast(address)" + ): TypedContractMethod<[signer: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "startBroadcast(uint256)" + ): TypedContractMethod<[privateKey: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "startMappingRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "startStateDiffRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopAndReturnStateDiff" + ): TypedContractMethod< + [], + [VmSafe.AccountAccessStructOutput[]], + "nonpayable" + >; + getFunction( + nameOrSignature: "stopBroadcast" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "stopMappingRecording" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "toBase64(string)" + ): TypedContractMethod<[data: string], [string], "view">; + getFunction( + nameOrSignature: "toBase64(bytes)" + ): TypedContractMethod<[data: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toBase64URL(string)" + ): TypedContractMethod<[data: string], [string], "view">; + getFunction( + nameOrSignature: "toBase64URL(bytes)" + ): TypedContractMethod<[data: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toLowercase" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "toString(address)" + ): TypedContractMethod<[value: AddressLike], [string], "view">; + getFunction( + nameOrSignature: "toString(uint256)" + ): TypedContractMethod<[value: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "toString(bytes)" + ): TypedContractMethod<[value: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toString(bool)" + ): TypedContractMethod<[value: boolean], [string], "view">; + getFunction( + nameOrSignature: "toString(int256)" + ): TypedContractMethod<[value: BigNumberish], [string], "view">; + getFunction( + nameOrSignature: "toString(bytes32)" + ): TypedContractMethod<[value: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "toUppercase" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "trim" + ): TypedContractMethod<[input: string], [string], "view">; + getFunction( + nameOrSignature: "tryFfi" + ): TypedContractMethod< + [commandInput: string[]], + [VmSafe.FfiResultStructOutput], + "nonpayable" + >; + getFunction( + nameOrSignature: "unixTime" + ): TypedContractMethod<[], [bigint], "nonpayable">; + getFunction( + nameOrSignature: "writeFile" + ): TypedContractMethod<[path: string, data: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeFileBinary" + ): TypedContractMethod<[path: string, data: BytesLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeJson(string,string,string)" + ): TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "writeJson(string,string)" + ): TypedContractMethod<[json: string, path: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeLine" + ): TypedContractMethod<[path: string, data: string], [void], "nonpayable">; + getFunction( + nameOrSignature: "writeToml(string,string,string)" + ): TypedContractMethod< + [json: string, path: string, valueKey: string], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "writeToml(string,string)" + ): TypedContractMethod<[json: string, path: string], [void], "nonpayable">; + + filters: {}; +} diff --git a/v2/typechain-types/Vm.sol/index.ts b/v2/typechain-types/Vm.sol/index.ts new file mode 100644 index 00000000..6ea1a166 --- /dev/null +++ b/v2/typechain-types/Vm.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Vm } from "./Vm"; +export type { VmSafe } from "./VmSafe"; diff --git a/v2/typechain-types/WZETA.sol/WETH9.ts b/v2/typechain-types/WZETA.sol/WETH9.ts new file mode 100644 index 00000000..f285f76c --- /dev/null +++ b/v2/typechain-types/WZETA.sol/WETH9.ts @@ -0,0 +1,369 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface WETH9Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "deposit" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "Deposit" | "Transfer" | "Withdrawal" + ): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + src: AddressLike, + guy: AddressLike, + wad: BigNumberish + ]; + export type OutputTuple = [src: string, guy: string, wad: bigint]; + export interface OutputObject { + src: string; + guy: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [dst: AddressLike, wad: BigNumberish]; + export type OutputTuple = [dst: string, wad: bigint]; + export interface OutputObject { + dst: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + src: AddressLike, + dst: AddressLike, + wad: BigNumberish + ]; + export type OutputTuple = [src: string, dst: string, wad: bigint]; + export interface OutputObject { + src: string; + dst: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [src: AddressLike, wad: BigNumberish]; + export type OutputTuple = [src: string, wad: bigint]; + export interface OutputObject { + src: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface WETH9 extends BaseContract { + connect(runner?: ContractRunner | null): WETH9; + waitForDeployment(): Promise; + + interface: WETH9Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [guy: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[arg0: AddressLike], [bigint], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + deposit: TypedContractMethod<[], [void], "payable">; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [dst: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [src: AddressLike, dst: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + withdraw: TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [arg0: AddressLike, arg1: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [guy: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[arg0: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod<[], [void], "payable">; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [dst: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [src: AddressLike, dst: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Deposit(address,uint256)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + "Withdrawal(address,uint256)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/WZETA.sol/index.ts b/v2/typechain-types/WZETA.sol/index.ts new file mode 100644 index 00000000..3f031232 --- /dev/null +++ b/v2/typechain-types/WZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { WETH9 } from "./WETH9"; diff --git a/v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts b/v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts new file mode 100644 index 00000000..4bac6254 --- /dev/null +++ b/v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface ZRC20ErrorsInterface extends Interface {} + +export interface ZRC20Errors extends BaseContract { + connect(runner?: ContractRunner | null): ZRC20Errors; + waitForDeployment(): Promise; + + interface: ZRC20ErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/ZRC20New.sol/ZRC20New.ts b/v2/typechain-types/ZRC20New.sol/ZRC20New.ts new file mode 100644 index 00000000..b81ffd19 --- /dev/null +++ b/v2/typechain-types/ZRC20New.sol/ZRC20New.ts @@ -0,0 +1,661 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface ZRC20NewInterface extends Interface { + getFunction( + nameOrSignature: + | "CHAIN_ID" + | "COIN_TYPE" + | "FUNGIBLE_MODULE_ADDRESS" + | "GAS_LIMIT" + | "GATEWAY_CONTRACT_ADDRESS" + | "PROTOCOL_FLAT_FEE" + | "SYSTEM_CONTRACT_ADDRESS" + | "allowance" + | "approve" + | "balanceOf" + | "burn" + | "decimals" + | "deposit" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + | "updateGasLimit" + | "updateProtocolFlatFee" + | "updateSystemContractAddress" + | "withdraw" + | "withdrawGasFee" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Approval" + | "Deposit" + | "Transfer" + | "UpdatedGasLimit" + | "UpdatedProtocolFlatFee" + | "UpdatedSystemContract" + | "Withdrawal" + ): EventFragment; + + encodeFunctionData(functionFragment: "CHAIN_ID", values?: undefined): string; + encodeFunctionData(functionFragment: "COIN_TYPE", values?: undefined): string; + encodeFunctionData( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; + encodeFunctionData( + functionFragment: "GATEWAY_CONTRACT_ADDRESS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PROTOCOL_FLAT_FEE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "SYSTEM_CONTRACT_ADDRESS", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "deposit", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateGasLimit", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateProtocolFlatFee", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateSystemContractAddress", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawGasFee", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "CHAIN_ID", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "COIN_TYPE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "FUNGIBLE_MODULE_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "GATEWAY_CONTRACT_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PROTOCOL_FLAT_FEE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "SYSTEM_CONTRACT_ADDRESS", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateGasLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateProtocolFlatFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSystemContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawGasFee", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [ + from: BytesLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedGasLimitEvent { + export type InputTuple = [gasLimit: BigNumberish]; + export type OutputTuple = [gasLimit: bigint]; + export interface OutputObject { + gasLimit: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedProtocolFlatFeeEvent { + export type InputTuple = [protocolFlatFee: BigNumberish]; + export type OutputTuple = [protocolFlatFee: bigint]; + export interface OutputObject { + protocolFlatFee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UpdatedSystemContractEvent { + export type InputTuple = [systemContract: AddressLike]; + export type OutputTuple = [systemContract: string]; + export interface OutputObject { + systemContract: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [ + from: AddressLike, + to: BytesLike, + value: BigNumberish, + gasFee: BigNumberish, + protocolFlatFee: BigNumberish + ]; + export type OutputTuple = [ + from: string, + to: string, + value: bigint, + gasFee: bigint, + protocolFlatFee: bigint + ]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + gasFee: bigint; + protocolFlatFee: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZRC20New extends BaseContract { + connect(runner?: ContractRunner | null): ZRC20New; + waitForDeployment(): Promise; + + interface: ZRC20NewInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + CHAIN_ID: TypedContractMethod<[], [bigint], "view">; + + COIN_TYPE: TypedContractMethod<[], [bigint], "view">; + + FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; + + GAS_LIMIT: TypedContractMethod<[], [bigint], "view">; + + GATEWAY_CONTRACT_ADDRESS: TypedContractMethod<[], [string], "view">; + + PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; + + SYSTEM_CONTRACT_ADDRESS: TypedContractMethod<[], [string], "view">; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burn: TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + deposit: TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + name: TypedContractMethod<[], [string], "view">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + updateGasLimit: TypedContractMethod< + [gasLimit: BigNumberish], + [void], + "nonpayable" + >; + + updateProtocolFlatFee: TypedContractMethod< + [protocolFlatFee: BigNumberish], + [void], + "nonpayable" + >; + + updateSystemContractAddress: TypedContractMethod< + [addr: AddressLike], + [void], + "nonpayable" + >; + + withdraw: TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + + withdrawGasFee: TypedContractMethod<[], [[string, bigint]], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "CHAIN_ID" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "COIN_TYPE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "GAS_LIMIT" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "GATEWAY_CONTRACT_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PROTOCOL_FLAT_FEE" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "SYSTEM_CONTRACT_ADDRESS" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burn" + ): TypedContractMethod<[amount: BigNumberish], [boolean], "nonpayable">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [sender: AddressLike, recipient: AddressLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "updateGasLimit" + ): TypedContractMethod<[gasLimit: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "updateProtocolFlatFee" + ): TypedContractMethod<[protocolFlatFee: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "updateSystemContractAddress" + ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: BytesLike, amount: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawGasFee" + ): TypedContractMethod<[], [[string, bigint]], "view">; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + getEvent( + key: "UpdatedGasLimit" + ): TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + getEvent( + key: "UpdatedProtocolFlatFee" + ): TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + getEvent( + key: "UpdatedSystemContract" + ): TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Deposit(bytes,address,uint256)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + "UpdatedGasLimit(uint256)": TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + UpdatedGasLimit: TypedContractEvent< + UpdatedGasLimitEvent.InputTuple, + UpdatedGasLimitEvent.OutputTuple, + UpdatedGasLimitEvent.OutputObject + >; + + "UpdatedProtocolFlatFee(uint256)": TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + UpdatedProtocolFlatFee: TypedContractEvent< + UpdatedProtocolFlatFeeEvent.InputTuple, + UpdatedProtocolFlatFeeEvent.OutputTuple, + UpdatedProtocolFlatFeeEvent.OutputObject + >; + + "UpdatedSystemContract(address)": TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + UpdatedSystemContract: TypedContractEvent< + UpdatedSystemContractEvent.InputTuple, + UpdatedSystemContractEvent.OutputTuple, + UpdatedSystemContractEvent.OutputObject + >; + + "Withdrawal(address,bytes,uint256,uint256,uint256)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ZRC20New.sol/index.ts b/v2/typechain-types/ZRC20New.sol/index.ts new file mode 100644 index 00000000..ea6138df --- /dev/null +++ b/v2/typechain-types/ZRC20New.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ZRC20Errors } from "./ZRC20Errors"; +export type { ZRC20New } from "./ZRC20New"; diff --git a/v2/typechain-types/Zeta.non-eth.sol/ZetaErrors.ts b/v2/typechain-types/Zeta.non-eth.sol/ZetaErrors.ts new file mode 100644 index 00000000..5dfc1c08 --- /dev/null +++ b/v2/typechain-types/Zeta.non-eth.sol/ZetaErrors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface ZetaErrorsInterface extends Interface {} + +export interface ZetaErrors extends BaseContract { + connect(runner?: ContractRunner | null): ZetaErrors; + waitForDeployment(): Promise; + + interface: ZetaErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEth.ts b/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEth.ts new file mode 100644 index 00000000..886cbd86 --- /dev/null +++ b/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEth.ts @@ -0,0 +1,595 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface ZetaNonEthInterface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "burn" + | "burnFrom" + | "connectorAddress" + | "decimals" + | "mint" + | "name" + | "renounceTssAddressUpdater" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + | "tssAddress" + | "tssAddressUpdater" + | "updateTssAndConnectorAddresses" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Approval" + | "Burnt" + | "ConnectorAddressUpdated" + | "Minted" + | "TSSAddressUpdated" + | "TSSAddressUpdaterUpdated" + | "Transfer" + ): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: "burnFrom", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "connectorAddress", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "mint", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceTssAddressUpdater", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tssAddressUpdater", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateTssAndConnectorAddresses", + values: [AddressLike, AddressLike] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "connectorAddress", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceTssAddressUpdater", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tssAddressUpdater", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateTssAndConnectorAddresses", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace BurntEvent { + export type InputTuple = [burnee: AddressLike, amount: BigNumberish]; + export type OutputTuple = [burnee: string, amount: bigint]; + export interface OutputObject { + burnee: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace ConnectorAddressUpdatedEvent { + export type InputTuple = [ + callerAddress: AddressLike, + newConnectorAddress: AddressLike + ]; + export type OutputTuple = [ + callerAddress: string, + newConnectorAddress: string + ]; + export interface OutputObject { + callerAddress: string; + newConnectorAddress: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace MintedEvent { + export type InputTuple = [ + mintee: AddressLike, + amount: BigNumberish, + internalSendHash: BytesLike + ]; + export type OutputTuple = [ + mintee: string, + amount: bigint, + internalSendHash: string + ]; + export interface OutputObject { + mintee: string; + amount: bigint; + internalSendHash: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TSSAddressUpdatedEvent { + export type InputTuple = [ + callerAddress: AddressLike, + newTssAddress: AddressLike + ]; + export type OutputTuple = [callerAddress: string, newTssAddress: string]; + export interface OutputObject { + callerAddress: string; + newTssAddress: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TSSAddressUpdaterUpdatedEvent { + export type InputTuple = [ + callerAddress: AddressLike, + newTssUpdaterAddress: AddressLike + ]; + export type OutputTuple = [ + callerAddress: string, + newTssUpdaterAddress: string + ]; + export interface OutputObject { + callerAddress: string; + newTssUpdaterAddress: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZetaNonEth extends BaseContract { + connect(runner?: ContractRunner | null): ZetaNonEth; + waitForDeployment(): Promise; + + interface: ZetaNonEthInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burn: TypedContractMethod<[value: BigNumberish], [void], "nonpayable">; + + burnFrom: TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + connectorAddress: TypedContractMethod<[], [string], "view">; + + decimals: TypedContractMethod<[], [bigint], "view">; + + mint: TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + name: TypedContractMethod<[], [string], "view">; + + renounceTssAddressUpdater: TypedContractMethod<[], [void], "nonpayable">; + + symbol: TypedContractMethod<[], [string], "view">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + tssAddressUpdater: TypedContractMethod<[], [string], "view">; + + updateTssAndConnectorAddresses: TypedContractMethod< + [tssAddress_: AddressLike, connectorAddress_: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burn" + ): TypedContractMethod<[value: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "burnFrom" + ): TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "connectorAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "decimals" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "mint" + ): TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "name" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "renounceTssAddressUpdater" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "symbol" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "tssAddressUpdater" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "updateTssAndConnectorAddresses" + ): TypedContractMethod< + [tssAddress_: AddressLike, connectorAddress_: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Burnt" + ): TypedContractEvent< + BurntEvent.InputTuple, + BurntEvent.OutputTuple, + BurntEvent.OutputObject + >; + getEvent( + key: "ConnectorAddressUpdated" + ): TypedContractEvent< + ConnectorAddressUpdatedEvent.InputTuple, + ConnectorAddressUpdatedEvent.OutputTuple, + ConnectorAddressUpdatedEvent.OutputObject + >; + getEvent( + key: "Minted" + ): TypedContractEvent< + MintedEvent.InputTuple, + MintedEvent.OutputTuple, + MintedEvent.OutputObject + >; + getEvent( + key: "TSSAddressUpdated" + ): TypedContractEvent< + TSSAddressUpdatedEvent.InputTuple, + TSSAddressUpdatedEvent.OutputTuple, + TSSAddressUpdatedEvent.OutputObject + >; + getEvent( + key: "TSSAddressUpdaterUpdated" + ): TypedContractEvent< + TSSAddressUpdaterUpdatedEvent.InputTuple, + TSSAddressUpdaterUpdatedEvent.OutputTuple, + TSSAddressUpdaterUpdatedEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Burnt(address,uint256)": TypedContractEvent< + BurntEvent.InputTuple, + BurntEvent.OutputTuple, + BurntEvent.OutputObject + >; + Burnt: TypedContractEvent< + BurntEvent.InputTuple, + BurntEvent.OutputTuple, + BurntEvent.OutputObject + >; + + "ConnectorAddressUpdated(address,address)": TypedContractEvent< + ConnectorAddressUpdatedEvent.InputTuple, + ConnectorAddressUpdatedEvent.OutputTuple, + ConnectorAddressUpdatedEvent.OutputObject + >; + ConnectorAddressUpdated: TypedContractEvent< + ConnectorAddressUpdatedEvent.InputTuple, + ConnectorAddressUpdatedEvent.OutputTuple, + ConnectorAddressUpdatedEvent.OutputObject + >; + + "Minted(address,uint256,bytes32)": TypedContractEvent< + MintedEvent.InputTuple, + MintedEvent.OutputTuple, + MintedEvent.OutputObject + >; + Minted: TypedContractEvent< + MintedEvent.InputTuple, + MintedEvent.OutputTuple, + MintedEvent.OutputObject + >; + + "TSSAddressUpdated(address,address)": TypedContractEvent< + TSSAddressUpdatedEvent.InputTuple, + TSSAddressUpdatedEvent.OutputTuple, + TSSAddressUpdatedEvent.OutputObject + >; + TSSAddressUpdated: TypedContractEvent< + TSSAddressUpdatedEvent.InputTuple, + TSSAddressUpdatedEvent.OutputTuple, + TSSAddressUpdatedEvent.OutputObject + >; + + "TSSAddressUpdaterUpdated(address,address)": TypedContractEvent< + TSSAddressUpdaterUpdatedEvent.InputTuple, + TSSAddressUpdaterUpdatedEvent.OutputTuple, + TSSAddressUpdaterUpdatedEvent.OutputObject + >; + TSSAddressUpdaterUpdated: TypedContractEvent< + TSSAddressUpdaterUpdatedEvent.InputTuple, + TSSAddressUpdaterUpdatedEvent.OutputTuple, + TSSAddressUpdaterUpdatedEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEthInterface.ts b/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEthInterface.ts new file mode 100644 index 00000000..9dc0435e --- /dev/null +++ b/v2/typechain-types/Zeta.non-eth.sol/ZetaNonEthInterface.ts @@ -0,0 +1,300 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface ZetaNonEthInterfaceInterface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "burnFrom" + | "mint" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer"): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "burnFrom", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZetaNonEthInterface extends BaseContract { + connect(runner?: ContractRunner | null): ZetaNonEthInterface; + waitForDeployment(): Promise; + + interface: ZetaNonEthInterfaceInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + + burnFrom: TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + + mint: TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "burnFrom" + ): TypedContractMethod< + [account: AddressLike, amount: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "mint" + ): TypedContractMethod< + [mintee: AddressLike, value: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, value: BigNumberish], + [boolean], + "nonpayable" + >; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/Zeta.non-eth.sol/index.ts b/v2/typechain-types/Zeta.non-eth.sol/index.ts new file mode 100644 index 00000000..37bc8bf0 --- /dev/null +++ b/v2/typechain-types/Zeta.non-eth.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ZetaErrors } from "./ZetaErrors"; +export type { ZetaNonEth } from "./ZetaNonEth"; +export type { ZetaNonEthInterface } from "./ZetaNonEthInterface"; diff --git a/v2/typechain-types/ZetaConnectorNative.ts b/v2/typechain-types/ZetaConnectorNative.ts new file mode 100644 index 00000000..157f1f57 --- /dev/null +++ b/v2/typechain-types/ZetaConnectorNative.ts @@ -0,0 +1,319 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ZetaConnectorNativeInterface extends Interface { + getFunction( + nameOrSignature: + | "gateway" + | "receiveTokens" + | "tssAddress" + | "withdraw" + | "withdrawAndCall" + | "withdrawAndRevert" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; + + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "receiveTokens", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndRevert", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveTokens", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace WithdrawEvent { + export type InputTuple = [to: AddressLike, amount: BigNumberish]; + export type OutputTuple = [to: string, amount: bigint]; + export interface OutputObject { + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZetaConnectorNative extends BaseContract { + connect(runner?: ContractRunner | null): ZetaConnectorNative; + waitForDeployment(): Promise; + + interface: ZetaConnectorNativeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + gateway: TypedContractMethod<[], [string], "view">; + + receiveTokens: TypedContractMethod< + [amount: BigNumberish], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + withdraw: TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + withdrawAndRevert: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "receiveTokens" + ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndRevert" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ZetaConnectorNewBase.ts b/v2/typechain-types/ZetaConnectorNewBase.ts new file mode 100644 index 00000000..12672d35 --- /dev/null +++ b/v2/typechain-types/ZetaConnectorNewBase.ts @@ -0,0 +1,319 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ZetaConnectorNewBaseInterface extends Interface { + getFunction( + nameOrSignature: + | "gateway" + | "receiveTokens" + | "tssAddress" + | "withdraw" + | "withdrawAndCall" + | "withdrawAndRevert" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + ): EventFragment; + + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "receiveTokens", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndRevert", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveTokens", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace WithdrawEvent { + export type InputTuple = [to: AddressLike, amount: BigNumberish]; + export type OutputTuple = [to: string, amount: bigint]; + export interface OutputObject { + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZetaConnectorNewBase extends BaseContract { + connect(runner?: ContractRunner | null): ZetaConnectorNewBase; + waitForDeployment(): Promise; + + interface: ZetaConnectorNewBaseInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + gateway: TypedContractMethod<[], [string], "view">; + + receiveTokens: TypedContractMethod< + [amount: BigNumberish], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + withdraw: TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + withdrawAndRevert: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "receiveTokens" + ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndRevert" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "Withdraw(address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ZetaConnectorNonNative.ts b/v2/typechain-types/ZetaConnectorNonNative.ts new file mode 100644 index 00000000..6182ceb9 --- /dev/null +++ b/v2/typechain-types/ZetaConnectorNonNative.ts @@ -0,0 +1,379 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ZetaConnectorNonNativeInterface extends Interface { + getFunction( + nameOrSignature: + | "gateway" + | "maxSupply" + | "receiveTokens" + | "setMaxSupply" + | "tssAddress" + | "withdraw" + | "withdrawAndCall" + | "withdrawAndRevert" + | "zetaToken" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "MaxSupplyUpdated" + | "Withdraw" + | "WithdrawAndCall" + | "WithdrawAndRevert" + ): EventFragment; + + encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData(functionFragment: "maxSupply", values?: undefined): string; + encodeFunctionData( + functionFragment: "receiveTokens", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setMaxSupply", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "tssAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndRevert", + values: [AddressLike, BigNumberish, BytesLike, BytesLike] + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "maxSupply", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "receiveTokens", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndRevert", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; +} + +export namespace MaxSupplyUpdatedEvent { + export type InputTuple = [maxSupply: BigNumberish]; + export type OutputTuple = [maxSupply: bigint]; + export interface OutputObject { + maxSupply: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawEvent { + export type InputTuple = [to: AddressLike, amount: BigNumberish]; + export type OutputTuple = [to: string, amount: bigint]; + export interface OutputObject { + to: string; + amount: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndCallEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawAndRevertEvent { + export type InputTuple = [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike + ]; + export type OutputTuple = [to: string, amount: bigint, data: string]; + export interface OutputObject { + to: string; + amount: bigint; + data: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ZetaConnectorNonNative extends BaseContract { + connect(runner?: ContractRunner | null): ZetaConnectorNonNative; + waitForDeployment(): Promise; + + interface: ZetaConnectorNonNativeInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + gateway: TypedContractMethod<[], [string], "view">; + + maxSupply: TypedContractMethod<[], [bigint], "view">; + + receiveTokens: TypedContractMethod< + [amount: BigNumberish], + [void], + "nonpayable" + >; + + setMaxSupply: TypedContractMethod< + [_maxSupply: BigNumberish], + [void], + "nonpayable" + >; + + tssAddress: TypedContractMethod<[], [string], "view">; + + withdraw: TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + + withdrawAndCall: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + withdrawAndRevert: TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + + zetaToken: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "gateway" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "maxSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "receiveTokens" + ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "setMaxSupply" + ): TypedContractMethod<[_maxSupply: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "tssAddress" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod< + [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndRevert" + ): TypedContractMethod< + [ + to: AddressLike, + amount: BigNumberish, + data: BytesLike, + internalSendHash: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "zetaToken" + ): TypedContractMethod<[], [string], "view">; + + getEvent( + key: "MaxSupplyUpdated" + ): TypedContractEvent< + MaxSupplyUpdatedEvent.InputTuple, + MaxSupplyUpdatedEvent.OutputTuple, + MaxSupplyUpdatedEvent.OutputObject + >; + getEvent( + key: "Withdraw" + ): TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + getEvent( + key: "WithdrawAndCall" + ): TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + getEvent( + key: "WithdrawAndRevert" + ): TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + + filters: { + "MaxSupplyUpdated(uint256)": TypedContractEvent< + MaxSupplyUpdatedEvent.InputTuple, + MaxSupplyUpdatedEvent.OutputTuple, + MaxSupplyUpdatedEvent.OutputObject + >; + MaxSupplyUpdated: TypedContractEvent< + MaxSupplyUpdatedEvent.InputTuple, + MaxSupplyUpdatedEvent.OutputTuple, + MaxSupplyUpdatedEvent.OutputObject + >; + + "Withdraw(address,uint256)": TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + Withdraw: TypedContractEvent< + WithdrawEvent.InputTuple, + WithdrawEvent.OutputTuple, + WithdrawEvent.OutputObject + >; + + "WithdrawAndCall(address,uint256,bytes)": TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + WithdrawAndCall: TypedContractEvent< + WithdrawAndCallEvent.InputTuple, + WithdrawAndCallEvent.OutputTuple, + WithdrawAndCallEvent.OutputObject + >; + + "WithdrawAndRevert(address,uint256,bytes)": TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + WithdrawAndRevert: TypedContractEvent< + WithdrawAndRevertEvent.InputTuple, + WithdrawAndRevertEvent.OutputTuple, + WithdrawAndRevertEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/common.ts b/v2/typechain-types/common.ts new file mode 100644 index 00000000..56b5f21e --- /dev/null +++ b/v2/typechain-types/common.ts @@ -0,0 +1,131 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + FunctionFragment, + Typed, + EventFragment, + ContractTransaction, + ContractTransactionResponse, + DeferredTopicFilter, + EventLog, + TransactionRequest, + LogDescription, +} from "ethers"; + +export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> + extends DeferredTopicFilter {} + +export interface TypedContractEvent< + InputTuple extends Array = any, + OutputTuple extends Array = any, + OutputObject = any +> { + (...args: Partial): TypedDeferredTopicFilter< + TypedContractEvent + >; + name: string; + fragment: EventFragment; + getFragment(...args: Partial): EventFragment; +} + +type __TypechainAOutputTuple = T extends TypedContractEvent< + infer _U, + infer W +> + ? W + : never; +type __TypechainOutputObject = T extends TypedContractEvent< + infer _U, + infer _W, + infer V +> + ? V + : never; + +export interface TypedEventLog + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export interface TypedLogDescription + extends Omit { + args: __TypechainAOutputTuple & __TypechainOutputObject; +} + +export type TypedListener = ( + ...listenerArg: [ + ...__TypechainAOutputTuple, + TypedEventLog, + ...undefined[] + ] +) => void; + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type StateMutability = "nonpayable" | "payable" | "view"; + +export type BaseOverrides = Omit; +export type NonPayableOverrides = Omit< + BaseOverrides, + "value" | "blockTag" | "enableCcipRead" +>; +export type PayableOverrides = Omit< + BaseOverrides, + "blockTag" | "enableCcipRead" +>; +export type ViewOverrides = Omit; +export type Overrides = S extends "nonpayable" + ? NonPayableOverrides + : S extends "payable" + ? PayableOverrides + : ViewOverrides; + +export type PostfixOverrides, S extends StateMutability> = + | A + | [...A, Overrides]; +export type ContractMethodArgs< + A extends Array, + S extends StateMutability +> = PostfixOverrides<{ [I in keyof A]-?: A[I] | Typed }, S>; + +export type DefaultReturnType = R extends Array ? R[0] : R; + +// export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = R | ContractTransactionResponse> { +export interface TypedContractMethod< + A extends Array = Array, + R = any, + S extends StateMutability = "payable" +> { + (...args: ContractMethodArgs): S extends "view" + ? Promise> + : Promise; + + name: string; + + fragment: FunctionFragment; + + getFragment(...args: ContractMethodArgs): FunctionFragment; + + populateTransaction( + ...args: ContractMethodArgs + ): Promise; + staticCall( + ...args: ContractMethodArgs + ): Promise>; + send(...args: ContractMethodArgs): Promise; + estimateGas(...args: ContractMethodArgs): Promise; + staticCallResult(...args: ContractMethodArgs): Promise; +} diff --git a/v2/typechain-types/draft-IERC1822.sol/IERC1822Proxiable.ts b/v2/typechain-types/draft-IERC1822.sol/IERC1822Proxiable.ts new file mode 100644 index 00000000..2c1d4207 --- /dev/null +++ b/v2/typechain-types/draft-IERC1822.sol/IERC1822Proxiable.ts @@ -0,0 +1,90 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC1822ProxiableInterface extends Interface { + getFunction(nameOrSignature: "proxiableUUID"): FunctionFragment; + + encodeFunctionData( + functionFragment: "proxiableUUID", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "proxiableUUID", + data: BytesLike + ): Result; +} + +export interface IERC1822Proxiable extends BaseContract { + connect(runner?: ContractRunner | null): IERC1822Proxiable; + waitForDeployment(): Promise; + + interface: IERC1822ProxiableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + proxiableUUID: TypedContractMethod<[], [string], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "proxiableUUID" + ): TypedContractMethod<[], [string], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/draft-IERC1822.sol/index.ts b/v2/typechain-types/draft-IERC1822.sol/index.ts new file mode 100644 index 00000000..daec45bb --- /dev/null +++ b/v2/typechain-types/draft-IERC1822.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC1822Proxiable } from "./IERC1822Proxiable"; diff --git a/v2/typechain-types/draft-IERC6093.sol/IERC1155Errors.ts b/v2/typechain-types/draft-IERC6093.sol/IERC1155Errors.ts new file mode 100644 index 00000000..7d86997b --- /dev/null +++ b/v2/typechain-types/draft-IERC6093.sol/IERC1155Errors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IERC1155ErrorsInterface extends Interface {} + +export interface IERC1155Errors extends BaseContract { + connect(runner?: ContractRunner | null): IERC1155Errors; + waitForDeployment(): Promise; + + interface: IERC1155ErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/draft-IERC6093.sol/IERC20Errors.ts b/v2/typechain-types/draft-IERC6093.sol/IERC20Errors.ts new file mode 100644 index 00000000..6a2e0510 --- /dev/null +++ b/v2/typechain-types/draft-IERC6093.sol/IERC20Errors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IERC20ErrorsInterface extends Interface {} + +export interface IERC20Errors extends BaseContract { + connect(runner?: ContractRunner | null): IERC20Errors; + waitForDeployment(): Promise; + + interface: IERC20ErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/draft-IERC6093.sol/IERC721Errors.ts b/v2/typechain-types/draft-IERC6093.sol/IERC721Errors.ts new file mode 100644 index 00000000..d456fa2f --- /dev/null +++ b/v2/typechain-types/draft-IERC6093.sol/IERC721Errors.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface IERC721ErrorsInterface extends Interface {} + +export interface IERC721Errors extends BaseContract { + connect(runner?: ContractRunner | null): IERC721Errors; + waitForDeployment(): Promise; + + interface: IERC721ErrorsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/draft-IERC6093.sol/index.ts b/v2/typechain-types/draft-IERC6093.sol/index.ts new file mode 100644 index 00000000..9415fdf5 --- /dev/null +++ b/v2/typechain-types/draft-IERC6093.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC1155Errors } from "./IERC1155Errors"; +export type { IERC20Errors } from "./IERC20Errors"; +export type { IERC721Errors } from "./IERC721Errors"; diff --git a/v2/typechain-types/factories/Address__factory.ts b/v2/typechain-types/factories/Address__factory.ts new file mode 100644 index 00000000..0c17e5c9 --- /dev/null +++ b/v2/typechain-types/factories/Address__factory.ts @@ -0,0 +1,88 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { Address, AddressInterface } from "../Address"; + +const _abi = [ + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051aee3d3cbb51dd227047d3a402e288a90aab6ebded8bce84a18c9d83c6fa8b264736f6c634300081a0033"; + +type AddressConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AddressConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Address__factory extends ContractFactory { + constructor(...args: AddressConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Address & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Address__factory { + return super.connect(runner) as Address__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AddressInterface { + return new Interface(_abi) as AddressInterface; + } + static connect(address: string, runner?: ContractRunner | null): Address { + return new Contract(address, _abi, runner) as unknown as Address; + } +} diff --git a/v2/typechain-types/factories/BeaconProxy__factory.ts b/v2/typechain-types/factories/BeaconProxy__factory.ts new file mode 100644 index 00000000..09e0f9de --- /dev/null +++ b/v2/typechain-types/factories/BeaconProxy__factory.ts @@ -0,0 +1,149 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BytesLike, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { PayableOverrides } from "../common"; +import type { BeaconProxy, BeaconProxyInterface } from "../BeaconProxy"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "beacon", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "fallback", + stateMutability: "payable", + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidBeacon", + inputs: [ + { + name: "beacon", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220fbef562e23099f6b70d42efa68ad4a1991c21a30ee88b7ae19894071f581e3e364736f6c634300081a0033"; + +type BeaconProxyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: BeaconProxyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class BeaconProxy__factory extends ContractFactory { + constructor(...args: BeaconProxyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + beacon: AddressLike, + data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(beacon, data, overrides || {}); + } + override deploy( + beacon: AddressLike, + data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ) { + return super.deploy(beacon, data, overrides || {}) as Promise< + BeaconProxy & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): BeaconProxy__factory { + return super.connect(runner) as BeaconProxy__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): BeaconProxyInterface { + return new Interface(_abi) as BeaconProxyInterface; + } + static connect(address: string, runner?: ContractRunner | null): BeaconProxy { + return new Contract(address, _abi, runner) as unknown as BeaconProxy; + } +} diff --git a/v2/typechain-types/factories/ContextUpgradeable__factory.ts b/v2/typechain-types/factories/ContextUpgradeable__factory.ts new file mode 100644 index 00000000..238c5ff8 --- /dev/null +++ b/v2/typechain-types/factories/ContextUpgradeable__factory.ts @@ -0,0 +1,48 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ContextUpgradeable, + ContextUpgradeableInterface, +} from "../ContextUpgradeable"; + +const _abi = [ + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, +] as const; + +export class ContextUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): ContextUpgradeableInterface { + return new Interface(_abi) as ContextUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ContextUpgradeable { + return new Contract(address, _abi, runner) as unknown as ContextUpgradeable; + } +} diff --git a/v2/typechain-types/factories/ERC1967Proxy__factory.ts b/v2/typechain-types/factories/ERC1967Proxy__factory.ts new file mode 100644 index 00000000..d5897eb0 --- /dev/null +++ b/v2/typechain-types/factories/ERC1967Proxy__factory.ts @@ -0,0 +1,141 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BytesLike, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { PayableOverrides } from "../common"; +import type { ERC1967Proxy, ERC1967ProxyInterface } from "../ERC1967Proxy"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + { + name: "_data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "fallback", + stateMutability: "payable", + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, +] as const; + +const _bytecode = + "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220266fcff3f047fd27b99bc2ae00f2594c9dc6c8903cdba2daf7cf2623c610c93f64736f6c634300081a0033"; + +type ERC1967ProxyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC1967ProxyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC1967Proxy__factory extends ContractFactory { + constructor(...args: ERC1967ProxyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + implementation: AddressLike, + _data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(implementation, _data, overrides || {}); + } + override deploy( + implementation: AddressLike, + _data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ) { + return super.deploy(implementation, _data, overrides || {}) as Promise< + ERC1967Proxy & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ERC1967Proxy__factory { + return super.connect(runner) as ERC1967Proxy__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC1967ProxyInterface { + return new Interface(_abi) as ERC1967ProxyInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC1967Proxy { + return new Contract(address, _abi, runner) as unknown as ERC1967Proxy; + } +} diff --git a/v2/typechain-types/factories/ERC1967Utils__factory.ts b/v2/typechain-types/factories/ERC1967Utils__factory.ts new file mode 100644 index 00000000..fb912e69 --- /dev/null +++ b/v2/typechain-types/factories/ERC1967Utils__factory.ts @@ -0,0 +1,147 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { ERC1967Utils, ERC1967UtilsInterface } from "../ERC1967Utils"; + +const _abi = [ + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "ERC1967InvalidAdmin", + inputs: [ + { + name: "admin", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidBeacon", + inputs: [ + { + name: "beacon", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001eb0535328502a373828dff3af9c93d4979f247a97487a5d4c2b93bcd54364f64736f6c634300081a0033"; + +type ERC1967UtilsConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC1967UtilsConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC1967Utils__factory extends ContractFactory { + constructor(...args: ERC1967UtilsConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + ERC1967Utils & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ERC1967Utils__factory { + return super.connect(runner) as ERC1967Utils__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC1967UtilsInterface { + return new Interface(_abi) as ERC1967UtilsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC1967Utils { + return new Contract(address, _abi, runner) as unknown as ERC1967Utils; + } +} diff --git a/v2/typechain-types/factories/ERC20/IERC20__factory.ts b/v2/typechain-types/factories/ERC20/IERC20__factory.ts new file mode 100644 index 00000000..17a24cab --- /dev/null +++ b/v2/typechain-types/factories/ERC20/IERC20__factory.ts @@ -0,0 +1,202 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC20, IERC20Interface } from "../../ERC20/IERC20"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC20__factory { + static readonly abi = _abi; + static createInterface(): IERC20Interface { + return new Interface(_abi) as IERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC20 { + return new Contract(address, _abi, runner) as unknown as IERC20; + } +} diff --git a/v2/typechain-types/factories/ERC20/index.ts b/v2/typechain-types/factories/ERC20/index.ts new file mode 100644 index 00000000..2071ce5a --- /dev/null +++ b/v2/typechain-types/factories/ERC20/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC20__factory } from "./IERC20__factory"; diff --git a/v2/typechain-types/factories/ERC20Burnable__factory.ts b/v2/typechain-types/factories/ERC20Burnable__factory.ts new file mode 100644 index 00000000..9f930aa4 --- /dev/null +++ b/v2/typechain-types/factories/ERC20Burnable__factory.ts @@ -0,0 +1,361 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { ERC20Burnable, ERC20BurnableInterface } from "../ERC20Burnable"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burn", + inputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "burnFrom", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "ERC20InsufficientAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "allowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSpender", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class ERC20Burnable__factory { + static readonly abi = _abi; + static createInterface(): ERC20BurnableInterface { + return new Interface(_abi) as ERC20BurnableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC20Burnable { + return new Contract(address, _abi, runner) as unknown as ERC20Burnable; + } +} diff --git a/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts new file mode 100644 index 00000000..5f358801 --- /dev/null +++ b/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts @@ -0,0 +1,372 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + ERC20CustodyNewEchidnaTest, + ERC20CustodyNewEchidnaTestInterface, +} from "../ERC20CustodyNewEchidnaTest"; + +const _abi = [ + { + type: "constructor", + inputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "echidnaCaller", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IGatewayEVM", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "testERC20", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract TestERC20", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "testWithdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndRevert", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + +type ERC20CustodyNewEchidnaTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC20CustodyNewEchidnaTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC20CustodyNewEchidnaTest__factory extends ContractFactory { + constructor(...args: ERC20CustodyNewEchidnaTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + ERC20CustodyNewEchidnaTest & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): ERC20CustodyNewEchidnaTest__factory { + return super.connect(runner) as ERC20CustodyNewEchidnaTest__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC20CustodyNewEchidnaTestInterface { + return new Interface(_abi) as ERC20CustodyNewEchidnaTestInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC20CustodyNewEchidnaTest { + return new Contract( + address, + _abi, + runner + ) as unknown as ERC20CustodyNewEchidnaTest; + } +} diff --git a/v2/typechain-types/factories/ERC20CustodyNew__factory.ts b/v2/typechain-types/factories/ERC20CustodyNew__factory.ts new file mode 100644 index 00000000..14d94ff9 --- /dev/null +++ b/v2/typechain-types/factories/ERC20CustodyNew__factory.ts @@ -0,0 +1,339 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + ERC20CustodyNew, + ERC20CustodyNewInterface, +} from "../ERC20CustodyNew"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_gateway", + type: "address", + internalType: "address", + }, + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IGatewayEVM", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndRevert", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; + +type ERC20CustodyNewConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC20CustodyNewConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC20CustodyNew__factory extends ContractFactory { + constructor(...args: ERC20CustodyNewConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _gateway: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(_gateway, _tssAddress, overrides || {}); + } + override deploy( + _gateway: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(_gateway, _tssAddress, overrides || {}) as Promise< + ERC20CustodyNew & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ERC20CustodyNew__factory { + return super.connect(runner) as ERC20CustodyNew__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC20CustodyNewInterface { + return new Interface(_abi) as ERC20CustodyNewInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC20CustodyNew { + return new Contract(address, _abi, runner) as unknown as ERC20CustodyNew; + } +} diff --git a/v2/typechain-types/factories/ERC20__factory.ts b/v2/typechain-types/factories/ERC20__factory.ts new file mode 100644 index 00000000..4734fcc6 --- /dev/null +++ b/v2/typechain-types/factories/ERC20__factory.ts @@ -0,0 +1,327 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { ERC20, ERC20Interface } from "../ERC20"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "ERC20InsufficientAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "allowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSpender", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class ERC20__factory { + static readonly abi = _abi; + static createInterface(): ERC20Interface { + return new Interface(_abi) as ERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): ERC20 { + return new Contract(address, _abi, runner) as unknown as ERC20; + } +} diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts new file mode 100644 index 00000000..91c6d73a --- /dev/null +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -0,0 +1,864 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + GatewayEVMEchidnaTest, + GatewayEVMEchidnaTestInterface, +} from "../GatewayEVMEchidnaTest"; + +const _abi = [ + { + type: "constructor", + inputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "custody", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "echidnaCaller", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "execute", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "executeWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setConnector", + inputs: [ + { + name: "_zetaConnector", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setCustody", + inputs: [ + { + name: "_custody", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "testERC20", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract TestERC20", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "testExecuteWithERC20", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "zetaConnector", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "asset", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Executed", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ExecutedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Reverted", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RevertedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ApprovalFailed", + inputs: [], + }, + { + type: "error", + name: "CustodyInitialized", + inputs: [], + }, + { + type: "error", + name: "DepositFailed", + inputs: [], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "ExecutionFailed", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InsufficientERC20Amount", + inputs: [], + }, + { + type: "error", + name: "InsufficientETHAmount", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "UUPSUnauthorizedCallContext", + inputs: [], + }, + { + type: "error", + name: "UUPSUnsupportedProxiableUUID", + inputs: [ + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; + +type GatewayEVMEchidnaTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GatewayEVMEchidnaTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GatewayEVMEchidnaTest__factory extends ContractFactory { + constructor(...args: GatewayEVMEchidnaTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + GatewayEVMEchidnaTest & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): GatewayEVMEchidnaTest__factory { + return super.connect(runner) as GatewayEVMEchidnaTest__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GatewayEVMEchidnaTestInterface { + return new Interface(_abi) as GatewayEVMEchidnaTestInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): GatewayEVMEchidnaTest { + return new Contract( + address, + _abi, + runner + ) as unknown as GatewayEVMEchidnaTest; + } +} diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts new file mode 100644 index 00000000..041b83fc --- /dev/null +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -0,0 +1,840 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + GatewayEVMUpgradeTest, + GatewayEVMUpgradeTestInterface, +} from "../GatewayEVMUpgradeTest"; + +const _abi = [ + { + type: "constructor", + inputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "custody", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "execute", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "executeWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setConnector", + inputs: [ + { + name: "_zetaConnector", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setCustody", + inputs: [ + { + name: "_custody", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "zetaConnector", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "asset", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Executed", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ExecutedV2", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ExecutedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Reverted", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RevertedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ApprovalFailed", + inputs: [], + }, + { + type: "error", + name: "CustodyInitialized", + inputs: [], + }, + { + type: "error", + name: "DepositFailed", + inputs: [], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "ExecutionFailed", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InsufficientERC20Amount", + inputs: [], + }, + { + type: "error", + name: "InsufficientETHAmount", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "UUPSUnauthorizedCallContext", + inputs: [], + }, + { + type: "error", + name: "UUPSUnsupportedProxiableUUID", + inputs: [ + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033"; + +type GatewayEVMUpgradeTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GatewayEVMUpgradeTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GatewayEVMUpgradeTest__factory extends ContractFactory { + constructor(...args: GatewayEVMUpgradeTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + GatewayEVMUpgradeTest & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): GatewayEVMUpgradeTest__factory { + return super.connect(runner) as GatewayEVMUpgradeTest__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GatewayEVMUpgradeTestInterface { + return new Interface(_abi) as GatewayEVMUpgradeTestInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): GatewayEVMUpgradeTest { + return new Contract( + address, + _abi, + runner + ) as unknown as GatewayEVMUpgradeTest; + } +} diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts new file mode 100644 index 00000000..59f29d9f --- /dev/null +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -0,0 +1,803 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { GatewayEVM, GatewayEVMInterface } from "../GatewayEVM"; + +const _abi = [ + { + type: "constructor", + inputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "custody", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "execute", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "executeWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setConnector", + inputs: [ + { + name: "_zetaConnector", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setCustody", + inputs: [ + { + name: "_custody", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "zetaConnector", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "asset", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Executed", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ExecutedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Reverted", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RevertedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ApprovalFailed", + inputs: [], + }, + { + type: "error", + name: "CustodyInitialized", + inputs: [], + }, + { + type: "error", + name: "DepositFailed", + inputs: [], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "ExecutionFailed", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InsufficientERC20Amount", + inputs: [], + }, + { + type: "error", + name: "InsufficientETHAmount", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "UUPSUnauthorizedCallContext", + inputs: [], + }, + { + type: "error", + name: "UUPSUnsupportedProxiableUUID", + inputs: [ + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033"; + +type GatewayEVMConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GatewayEVMConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GatewayEVM__factory extends ContractFactory { + constructor(...args: GatewayEVMConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + GatewayEVM & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): GatewayEVM__factory { + return super.connect(runner) as GatewayEVM__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GatewayEVMInterface { + return new Interface(_abi) as GatewayEVMInterface; + } + static connect(address: string, runner?: ContractRunner | null): GatewayEVM { + return new Contract(address, _abi, runner) as unknown as GatewayEVM; + } +} diff --git a/v2/typechain-types/factories/GatewayZEVM__factory.ts b/v2/typechain-types/factories/GatewayZEVM__factory.ts new file mode 100644 index 00000000..d1a8225b --- /dev/null +++ b/v2/typechain-types/factories/GatewayZEVM__factory.ts @@ -0,0 +1,808 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { GatewayZEVM, GatewayZEVMInterface } from "../GatewayZEVM"; + +const _abi = [ + { + type: "constructor", + inputs: [], + stateMutability: "nonpayable", + }, + { + type: "receive", + stateMutability: "payable", + }, + { + type: "function", + name: "FUNGIBLE_MODULE_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "execute", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "message", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "zrc20", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "to", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "gasfee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "FailedZetaSent", + inputs: [], + }, + { + type: "error", + name: "GasFeeTransferFailed", + inputs: [], + }, + { + type: "error", + name: "InsufficientZRC20Amount", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "OnlyWZETAOrFungible", + inputs: [], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "UUPSUnauthorizedCallContext", + inputs: [], + }, + { + type: "error", + name: "UUPSUnsupportedProxiableUUID", + inputs: [ + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "WithdrawalFailed", + inputs: [], + }, + { + type: "error", + name: "ZRC20BurnFailed", + inputs: [], + }, + { + type: "error", + name: "ZRC20TransferFailed", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033"; + +type GatewayZEVMConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GatewayZEVMConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GatewayZEVM__factory extends ContractFactory { + constructor(...args: GatewayZEVMConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + GatewayZEVM & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): GatewayZEVM__factory { + return super.connect(runner) as GatewayZEVM__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GatewayZEVMInterface { + return new Interface(_abi) as GatewayZEVMInterface; + } + static connect(address: string, runner?: ContractRunner | null): GatewayZEVM { + return new Contract(address, _abi, runner) as unknown as GatewayZEVM; + } +} diff --git a/v2/typechain-types/factories/IBeacon__factory.ts b/v2/typechain-types/factories/IBeacon__factory.ts new file mode 100644 index 00000000..055aee58 --- /dev/null +++ b/v2/typechain-types/factories/IBeacon__factory.ts @@ -0,0 +1,32 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IBeacon, IBeaconInterface } from "../IBeacon"; + +const _abi = [ + { + type: "function", + name: "implementation", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IBeacon__factory { + static readonly abi = _abi; + static createInterface(): IBeaconInterface { + return new Interface(_abi) as IBeaconInterface; + } + static connect(address: string, runner?: ContractRunner | null): IBeacon { + return new Contract(address, _abi, runner) as unknown as IBeacon; + } +} diff --git a/v2/typechain-types/factories/IERC165__factory.ts b/v2/typechain-types/factories/IERC165__factory.ts new file mode 100644 index 00000000..77202ee7 --- /dev/null +++ b/v2/typechain-types/factories/IERC165__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC165, IERC165Interface } from "../IERC165"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceID", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IERC165__factory { + static readonly abi = _abi; + static createInterface(): IERC165Interface { + return new Interface(_abi) as IERC165Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC165 { + return new Contract(address, _abi, runner) as unknown as IERC165; + } +} diff --git a/v2/typechain-types/factories/IERC1967__factory.ts b/v2/typechain-types/factories/IERC1967__factory.ts new file mode 100644 index 00000000..a1610365 --- /dev/null +++ b/v2/typechain-types/factories/IERC1967__factory.ts @@ -0,0 +1,64 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC1967, IERC1967Interface } from "../IERC1967"; + +const _abi = [ + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC1967__factory { + static readonly abi = _abi; + static createInterface(): IERC1967Interface { + return new Interface(_abi) as IERC1967Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC1967 { + return new Contract(address, _abi, runner) as unknown as IERC1967; + } +} diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts new file mode 100644 index 00000000..de0b1108 --- /dev/null +++ b/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts @@ -0,0 +1,39 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC20CustodyNewErrors, + IERC20CustodyNewErrorsInterface, +} from "../../IERC20CustodyNew.sol/IERC20CustodyNewErrors"; + +const _abi = [ + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +export class IERC20CustodyNewErrors__factory { + static readonly abi = _abi; + static createInterface(): IERC20CustodyNewErrorsInterface { + return new Interface(_abi) as IERC20CustodyNewErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC20CustodyNewErrors { + return new Contract( + address, + _abi, + runner + ) as unknown as IERC20CustodyNewErrors; + } +} diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts new file mode 100644 index 00000000..ab4aec0c --- /dev/null +++ b/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts @@ -0,0 +1,116 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC20CustodyNewEvents, + IERC20CustodyNewEventsInterface, +} from "../../IERC20CustodyNew.sol/IERC20CustodyNewEvents"; + +const _abi = [ + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC20CustodyNewEvents__factory { + static readonly abi = _abi; + static createInterface(): IERC20CustodyNewEventsInterface { + return new Interface(_abi) as IERC20CustodyNewEventsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC20CustodyNewEvents { + return new Contract( + address, + _abi, + runner + ) as unknown as IERC20CustodyNewEvents; + } +} diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts b/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts new file mode 100644 index 00000000..9f3d2112 --- /dev/null +++ b/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC20CustodyNewErrors__factory } from "./IERC20CustodyNewErrors__factory"; +export { IERC20CustodyNewEvents__factory } from "./IERC20CustodyNewEvents__factory"; diff --git a/v2/typechain-types/factories/IERC20Metadata__factory.ts b/v2/typechain-types/factories/IERC20Metadata__factory.ts new file mode 100644 index 00000000..fff75af5 --- /dev/null +++ b/v2/typechain-types/factories/IERC20Metadata__factory.ts @@ -0,0 +1,247 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC20Metadata, + IERC20MetadataInterface, +} from "../IERC20Metadata"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC20Metadata__factory { + static readonly abi = _abi; + static createInterface(): IERC20MetadataInterface { + return new Interface(_abi) as IERC20MetadataInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC20Metadata { + return new Contract(address, _abi, runner) as unknown as IERC20Metadata; + } +} diff --git a/v2/typechain-types/factories/IERC20Permit__factory.ts b/v2/typechain-types/factories/IERC20Permit__factory.ts new file mode 100644 index 00000000..24090d2d --- /dev/null +++ b/v2/typechain-types/factories/IERC20Permit__factory.ts @@ -0,0 +1,97 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC20Permit, IERC20PermitInterface } from "../IERC20Permit"; + +const _abi = [ + { + type: "function", + name: "DOMAIN_SEPARATOR", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "nonces", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "permit", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "deadline", + type: "uint256", + internalType: "uint256", + }, + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IERC20Permit__factory { + static readonly abi = _abi; + static createInterface(): IERC20PermitInterface { + return new Interface(_abi) as IERC20PermitInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC20Permit { + return new Contract(address, _abi, runner) as unknown as IERC20Permit; + } +} diff --git a/v2/typechain-types/factories/IERC20__factory.ts b/v2/typechain-types/factories/IERC20__factory.ts new file mode 100644 index 00000000..b55e3c17 --- /dev/null +++ b/v2/typechain-types/factories/IERC20__factory.ts @@ -0,0 +1,241 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC20, IERC20Interface } from "../IERC20"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC20__factory { + static readonly abi = _abi; + static createInterface(): IERC20Interface { + return new Interface(_abi) as IERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC20 { + return new Contract(address, _abi, runner) as unknown as IERC20; + } +} diff --git a/v2/typechain-types/factories/IERC721.sol/IERC721Enumerable__factory.ts b/v2/typechain-types/factories/IERC721.sol/IERC721Enumerable__factory.ts new file mode 100644 index 00000000..2d67ea00 --- /dev/null +++ b/v2/typechain-types/factories/IERC721.sol/IERC721Enumerable__factory.ts @@ -0,0 +1,366 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC721Enumerable, + IERC721EnumerableInterface, +} from "../../IERC721.sol/IERC721Enumerable"; + +const _abi = [ + { + type: "function", + name: "approve", + inputs: [ + { + name: "_approved", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getApproved", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isApprovedForAll", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + { + name: "_operator", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ownerOf", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "setApprovalForAll", + inputs: [ + { + name: "_operator", + type: "address", + internalType: "address", + }, + { + name: "_approved", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceID", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tokenByIndex", + inputs: [ + { + name: "_index", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tokenOfOwnerByIndex", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + { + name: "_index", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ApprovalForAll", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_operator", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "_from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC721Enumerable__factory { + static readonly abi = _abi; + static createInterface(): IERC721EnumerableInterface { + return new Interface(_abi) as IERC721EnumerableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC721Enumerable { + return new Contract(address, _abi, runner) as unknown as IERC721Enumerable; + } +} diff --git a/v2/typechain-types/factories/IERC721.sol/IERC721Metadata__factory.ts b/v2/typechain-types/factories/IERC721.sol/IERC721Metadata__factory.ts new file mode 100644 index 00000000..49408fb9 --- /dev/null +++ b/v2/typechain-types/factories/IERC721.sol/IERC721Metadata__factory.ts @@ -0,0 +1,355 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC721Metadata, + IERC721MetadataInterface, +} from "../../IERC721.sol/IERC721Metadata"; + +const _abi = [ + { + type: "function", + name: "approve", + inputs: [ + { + name: "_approved", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getApproved", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isApprovedForAll", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + { + name: "_operator", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "_name", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ownerOf", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "setApprovalForAll", + inputs: [ + { + name: "_operator", + type: "address", + internalType: "address", + }, + { + name: "_approved", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceID", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "_symbol", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tokenURI", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ApprovalForAll", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_operator", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "_from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC721Metadata__factory { + static readonly abi = _abi; + static createInterface(): IERC721MetadataInterface { + return new Interface(_abi) as IERC721MetadataInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC721Metadata { + return new Contract(address, _abi, runner) as unknown as IERC721Metadata; + } +} diff --git a/v2/typechain-types/factories/IERC721.sol/IERC721TokenReceiver__factory.ts b/v2/typechain-types/factories/IERC721.sol/IERC721TokenReceiver__factory.ts new file mode 100644 index 00000000..07fff32e --- /dev/null +++ b/v2/typechain-types/factories/IERC721.sol/IERC721TokenReceiver__factory.ts @@ -0,0 +1,63 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC721TokenReceiver, + IERC721TokenReceiverInterface, +} from "../../IERC721.sol/IERC721TokenReceiver"; + +const _abi = [ + { + type: "function", + name: "onERC721Received", + inputs: [ + { + name: "_operator", + type: "address", + internalType: "address", + }, + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + { + name: "_data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes4", + internalType: "bytes4", + }, + ], + stateMutability: "nonpayable", + }, +] as const; + +export class IERC721TokenReceiver__factory { + static readonly abi = _abi; + static createInterface(): IERC721TokenReceiverInterface { + return new Interface(_abi) as IERC721TokenReceiverInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC721TokenReceiver { + return new Contract( + address, + _abi, + runner + ) as unknown as IERC721TokenReceiver; + } +} diff --git a/v2/typechain-types/factories/IERC721.sol/IERC721__factory.ts b/v2/typechain-types/factories/IERC721.sol/IERC721__factory.ts new file mode 100644 index 00000000..f4b91ccd --- /dev/null +++ b/v2/typechain-types/factories/IERC721.sol/IERC721__factory.ts @@ -0,0 +1,304 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC721, IERC721Interface } from "../../IERC721.sol/IERC721"; + +const _abi = [ + { + type: "function", + name: "approve", + inputs: [ + { + name: "_approved", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getApproved", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isApprovedForAll", + inputs: [ + { + name: "_owner", + type: "address", + internalType: "address", + }, + { + name: "_operator", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ownerOf", + inputs: [ + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "setApprovalForAll", + inputs: [ + { + name: "_operator", + type: "address", + internalType: "address", + }, + { + name: "_approved", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceID", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "_from", + type: "address", + internalType: "address", + }, + { + name: "_to", + type: "address", + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ApprovalForAll", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_operator", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "_from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IERC721__factory { + static readonly abi = _abi; + static createInterface(): IERC721Interface { + return new Interface(_abi) as IERC721Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC721 { + return new Contract(address, _abi, runner) as unknown as IERC721; + } +} diff --git a/v2/typechain-types/factories/IERC721.sol/index.ts b/v2/typechain-types/factories/IERC721.sol/index.ts new file mode 100644 index 00000000..93147b21 --- /dev/null +++ b/v2/typechain-types/factories/IERC721.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC721__factory } from "./IERC721__factory"; +export { IERC721Enumerable__factory } from "./IERC721Enumerable__factory"; +export { IERC721Metadata__factory } from "./IERC721Metadata__factory"; +export { IERC721TokenReceiver__factory } from "./IERC721TokenReceiver__factory"; diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts new file mode 100644 index 00000000..be6c8b1a --- /dev/null +++ b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts @@ -0,0 +1,65 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayEVMErrors, + IGatewayEVMErrorsInterface, +} from "../../IGatewayEVM.sol/IGatewayEVMErrors"; + +const _abi = [ + { + type: "error", + name: "ApprovalFailed", + inputs: [], + }, + { + type: "error", + name: "CustodyInitialized", + inputs: [], + }, + { + type: "error", + name: "DepositFailed", + inputs: [], + }, + { + type: "error", + name: "ExecutionFailed", + inputs: [], + }, + { + type: "error", + name: "InsufficientERC20Amount", + inputs: [], + }, + { + type: "error", + name: "InsufficientETHAmount", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +export class IGatewayEVMErrors__factory { + static readonly abi = _abi; + static createInterface(): IGatewayEVMErrorsInterface { + return new Interface(_abi) as IGatewayEVMErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IGatewayEVMErrors { + return new Contract(address, _abi, runner) as unknown as IGatewayEVMErrors; + } +} diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts new file mode 100644 index 00000000..aff49e3a --- /dev/null +++ b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMEvents__factory.ts @@ -0,0 +1,199 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayEVMEvents, + IGatewayEVMEventsInterface, +} from "../../IGatewayEVM.sol/IGatewayEVMEvents"; + +const _abi = [ + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "asset", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "payload", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Executed", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ExecutedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Reverted", + inputs: [ + { + name: "destination", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RevertedWithERC20", + inputs: [ + { + name: "token", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class IGatewayEVMEvents__factory { + static readonly abi = _abi; + static createInterface(): IGatewayEVMEventsInterface { + return new Interface(_abi) as IGatewayEVMEventsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IGatewayEVMEvents { + return new Contract(address, _abi, runner) as unknown as IGatewayEVMEvents; + } +} diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts new file mode 100644 index 00000000..46d1bca3 --- /dev/null +++ b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts @@ -0,0 +1,102 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayEVM, + IGatewayEVMInterface, +} from "../../IGatewayEVM.sol/IGatewayEVM"; + +const _abi = [ + { + type: "function", + name: "execute", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "executeWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertWithERC20", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IGatewayEVM__factory { + static readonly abi = _abi; + static createInterface(): IGatewayEVMInterface { + return new Interface(_abi) as IGatewayEVMInterface; + } + static connect(address: string, runner?: ContractRunner | null): IGatewayEVM { + return new Contract(address, _abi, runner) as unknown as IGatewayEVM; + } +} diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/Revertable__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/Revertable__factory.ts new file mode 100644 index 00000000..75f50695 --- /dev/null +++ b/v2/typechain-types/factories/IGatewayEVM.sol/Revertable__factory.ts @@ -0,0 +1,35 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + Revertable, + RevertableInterface, +} from "../../IGatewayEVM.sol/Revertable"; + +const _abi = [ + { + type: "function", + name: "onRevert", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class Revertable__factory { + static readonly abi = _abi; + static createInterface(): RevertableInterface { + return new Interface(_abi) as RevertableInterface; + } + static connect(address: string, runner?: ContractRunner | null): Revertable { + return new Contract(address, _abi, runner) as unknown as Revertable; + } +} diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/index.ts b/v2/typechain-types/factories/IGatewayEVM.sol/index.ts new file mode 100644 index 00000000..5f406b5d --- /dev/null +++ b/v2/typechain-types/factories/IGatewayEVM.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IGatewayEVM__factory } from "./IGatewayEVM__factory"; +export { IGatewayEVMErrors__factory } from "./IGatewayEVMErrors__factory"; +export { IGatewayEVMEvents__factory } from "./IGatewayEVMEvents__factory"; +export { Revertable__factory } from "./Revertable__factory"; diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts new file mode 100644 index 00000000..28a247d5 --- /dev/null +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts @@ -0,0 +1,70 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayZEVMErrors, + IGatewayZEVMErrorsInterface, +} from "../../IGatewayZEVM.sol/IGatewayZEVMErrors"; + +const _abi = [ + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "FailedZetaSent", + inputs: [], + }, + { + type: "error", + name: "GasFeeTransferFailed", + inputs: [], + }, + { + type: "error", + name: "InsufficientZRC20Amount", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, + { + type: "error", + name: "OnlyWZETAOrFungible", + inputs: [], + }, + { + type: "error", + name: "WithdrawalFailed", + inputs: [], + }, + { + type: "error", + name: "ZRC20BurnFailed", + inputs: [], + }, + { + type: "error", + name: "ZRC20TransferFailed", + inputs: [], + }, +] as const; + +export class IGatewayZEVMErrors__factory { + static readonly abi = _abi; + static createInterface(): IGatewayZEVMErrorsInterface { + return new Interface(_abi) as IGatewayZEVMErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IGatewayZEVMErrors { + return new Contract(address, _abi, runner) as unknown as IGatewayZEVMErrors; + } +} diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts new file mode 100644 index 00000000..c9d953f6 --- /dev/null +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayZEVMEvents, + IGatewayZEVMEventsInterface, +} from "../../IGatewayZEVM.sol/IGatewayZEVMEvents"; + +const _abi = [ + { + type: "event", + name: "Call", + inputs: [ + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "receiver", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "message", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "zrc20", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "to", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "gasfee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class IGatewayZEVMEvents__factory { + static readonly abi = _abi; + static createInterface(): IGatewayZEVMEventsInterface { + return new Interface(_abi) as IGatewayZEVMEventsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IGatewayZEVMEvents { + return new Contract(address, _abi, runner) as unknown as IGatewayZEVMEvents; + } +} diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts new file mode 100644 index 00000000..149b91e6 --- /dev/null +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts @@ -0,0 +1,217 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IGatewayZEVM, + IGatewayZEVMInterface, +} from "../../IGatewayZEVM.sol/IGatewayZEVM"; + +const _abi = [ + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "execute", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IGatewayZEVM__factory { + static readonly abi = _abi; + static createInterface(): IGatewayZEVMInterface { + return new Interface(_abi) as IGatewayZEVMInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IGatewayZEVM { + return new Contract(address, _abi, runner) as unknown as IGatewayZEVM; + } +} diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/index.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/index.ts new file mode 100644 index 00000000..0b6212ee --- /dev/null +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IGatewayZEVM__factory } from "./IGatewayZEVM__factory"; +export { IGatewayZEVMErrors__factory } from "./IGatewayZEVMErrors__factory"; +export { IGatewayZEVMEvents__factory } from "./IGatewayZEVMEvents__factory"; diff --git a/v2/typechain-types/factories/IMulticall3__factory.ts b/v2/typechain-types/factories/IMulticall3__factory.ts new file mode 100644 index 00000000..199236db --- /dev/null +++ b/v2/typechain-types/factories/IMulticall3__factory.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IMulticall3, IMulticall3Interface } from "../IMulticall3"; + +const _abi = [ + { + type: "function", + name: "aggregate", + inputs: [ + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + { + name: "returnData", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "aggregate3", + inputs: [ + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call3[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "allowFailure", + type: "bool", + internalType: "bool", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "returnData", + type: "tuple[]", + internalType: "struct IMulticall3.Result[]", + components: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "aggregate3Value", + inputs: [ + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call3Value[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "allowFailure", + type: "bool", + internalType: "bool", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "returnData", + type: "tuple[]", + internalType: "struct IMulticall3.Result[]", + components: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "blockAndAggregate", + inputs: [ + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "returnData", + type: "tuple[]", + internalType: "struct IMulticall3.Result[]", + components: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "getBasefee", + inputs: [], + outputs: [ + { + name: "basefee", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockHash", + inputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockNumber", + inputs: [], + outputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getChainId", + inputs: [], + outputs: [ + { + name: "chainid", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCurrentBlockCoinbase", + inputs: [], + outputs: [ + { + name: "coinbase", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCurrentBlockDifficulty", + inputs: [], + outputs: [ + { + name: "difficulty", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCurrentBlockGasLimit", + inputs: [], + outputs: [ + { + name: "gaslimit", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCurrentBlockTimestamp", + inputs: [], + outputs: [ + { + name: "timestamp", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getEthBalance", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getLastBlockHash", + inputs: [], + outputs: [ + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tryAggregate", + inputs: [ + { + name: "requireSuccess", + type: "bool", + internalType: "bool", + }, + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "returnData", + type: "tuple[]", + internalType: "struct IMulticall3.Result[]", + components: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "payable", + }, + { + type: "function", + name: "tryBlockAndAggregate", + inputs: [ + { + name: "requireSuccess", + type: "bool", + internalType: "bool", + }, + { + name: "calls", + type: "tuple[]", + internalType: "struct IMulticall3.Call[]", + components: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "callData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + outputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "returnData", + type: "tuple[]", + internalType: "struct IMulticall3.Result[]", + components: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "payable", + }, +] as const; + +export class IMulticall3__factory { + static readonly abi = _abi; + static createInterface(): IMulticall3Interface { + return new Interface(_abi) as IMulticall3Interface; + } + static connect(address: string, runner?: ContractRunner | null): IMulticall3 { + return new Contract(address, _abi, runner) as unknown as IMulticall3; + } +} diff --git a/v2/typechain-types/factories/IProxyAdmin__factory.ts b/v2/typechain-types/factories/IProxyAdmin__factory.ts new file mode 100644 index 00000000..4bb1886d --- /dev/null +++ b/v2/typechain-types/factories/IProxyAdmin__factory.ts @@ -0,0 +1,60 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IProxyAdmin, IProxyAdminInterface } from "../IProxyAdmin"; + +const _abi = [ + { + type: "function", + name: "upgrade", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeAndCall", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, +] as const; + +export class IProxyAdmin__factory { + static readonly abi = _abi; + static createInterface(): IProxyAdminInterface { + return new Interface(_abi) as IProxyAdminInterface; + } + static connect(address: string, runner?: ContractRunner | null): IProxyAdmin { + return new Contract(address, _abi, runner) as unknown as IProxyAdmin; + } +} diff --git a/v2/typechain-types/factories/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts b/v2/typechain-types/factories/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts new file mode 100644 index 00000000..dab09064 --- /dev/null +++ b/v2/typechain-types/factories/IReceiverEVM.sol/IReceiverEVMEvents__factory.ts @@ -0,0 +1,156 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IReceiverEVMEvents, + IReceiverEVMEventsInterface, +} from "../../IReceiverEVM.sol/IReceiverEVMEvents"; + +const _abi = [ + { + type: "event", + name: "ReceivedERC20", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "token", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "destination", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedNoParams", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedNonPayable", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "strs", + type: "string[]", + indexed: false, + internalType: "string[]", + }, + { + name: "nums", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + { + name: "flag", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedPayable", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "str", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "num", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "flag", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedRevert", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class IReceiverEVMEvents__factory { + static readonly abi = _abi; + static createInterface(): IReceiverEVMEventsInterface { + return new Interface(_abi) as IReceiverEVMEventsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IReceiverEVMEvents { + return new Contract(address, _abi, runner) as unknown as IReceiverEVMEvents; + } +} diff --git a/v2/typechain-types/factories/IReceiverEVM.sol/index.ts b/v2/typechain-types/factories/IReceiverEVM.sol/index.ts new file mode 100644 index 00000000..49a704f0 --- /dev/null +++ b/v2/typechain-types/factories/IReceiverEVM.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IReceiverEVMEvents__factory } from "./IReceiverEVMEvents__factory"; diff --git a/v2/typechain-types/factories/ISystem__factory.ts b/v2/typechain-types/factories/ISystem__factory.ts new file mode 100644 index 00000000..32be743d --- /dev/null +++ b/v2/typechain-types/factories/ISystem__factory.ts @@ -0,0 +1,115 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { ISystem, ISystemInterface } from "../ISystem"; + +const _abi = [ + { + type: "function", + name: "FUNGIBLE_MODULE_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasCoinZRC20ByChainId", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasPriceByChainId", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasZetaPoolByChainId", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "uniswapv2FactoryAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "wZetaContractAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, +] as const; + +export class ISystem__factory { + static readonly abi = _abi; + static createInterface(): ISystemInterface { + return new Interface(_abi) as ISystemInterface; + } + static connect(address: string, runner?: ContractRunner | null): ISystem { + return new Contract(address, _abi, runner) as unknown as ISystem; + } +} diff --git a/v2/typechain-types/factories/IUpgradeableBeacon__factory.ts b/v2/typechain-types/factories/IUpgradeableBeacon__factory.ts new file mode 100644 index 00000000..2e857a90 --- /dev/null +++ b/v2/typechain-types/factories/IUpgradeableBeacon__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IUpgradeableBeacon, + IUpgradeableBeaconInterface, +} from "../IUpgradeableBeacon"; + +const _abi = [ + { + type: "function", + name: "upgradeTo", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class IUpgradeableBeacon__factory { + static readonly abi = _abi; + static createInterface(): IUpgradeableBeaconInterface { + return new Interface(_abi) as IUpgradeableBeaconInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IUpgradeableBeacon { + return new Contract(address, _abi, runner) as unknown as IUpgradeableBeacon; + } +} diff --git a/v2/typechain-types/factories/IUpgradeableProxy__factory.ts b/v2/typechain-types/factories/IUpgradeableProxy__factory.ts new file mode 100644 index 00000000..734deb6c --- /dev/null +++ b/v2/typechain-types/factories/IUpgradeableProxy__factory.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IUpgradeableProxy, + IUpgradeableProxyInterface, +} from "../IUpgradeableProxy"; + +const _abi = [ + { + type: "function", + name: "upgradeTo", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, +] as const; + +export class IUpgradeableProxy__factory { + static readonly abi = _abi; + static createInterface(): IUpgradeableProxyInterface { + return new Interface(_abi) as IUpgradeableProxyInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IUpgradeableProxy { + return new Contract(address, _abi, runner) as unknown as IUpgradeableProxy; + } +} diff --git a/v2/typechain-types/factories/IWZETA.sol/IWETH9__factory.ts b/v2/typechain-types/factories/IWZETA.sol/IWETH9__factory.ts new file mode 100644 index 00000000..de75b149 --- /dev/null +++ b/v2/typechain-types/factories/IWZETA.sol/IWETH9__factory.ts @@ -0,0 +1,260 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IWETH9, IWETH9Interface } from "../../IWZETA.sol/IWETH9"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "dst", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "src", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IWETH9__factory { + static readonly abi = _abi; + static createInterface(): IWETH9Interface { + return new Interface(_abi) as IWETH9Interface; + } + static connect(address: string, runner?: ContractRunner | null): IWETH9 { + return new Contract(address, _abi, runner) as unknown as IWETH9; + } +} diff --git a/v2/typechain-types/factories/IWZETA.sol/index.ts b/v2/typechain-types/factories/IWZETA.sol/index.ts new file mode 100644 index 00000000..d3b0ed8d --- /dev/null +++ b/v2/typechain-types/factories/IWZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IWETH9__factory } from "./IWETH9__factory"; diff --git a/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts b/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts new file mode 100644 index 00000000..3352f12f --- /dev/null +++ b/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts @@ -0,0 +1,295 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IZRC20Metadata, + IZRC20MetadataInterface, +} from "../../IZRC20.sol/IZRC20Metadata"; + +const _abi = [ + { + type: "function", + name: "PROTOCOL_FLAT_FEE", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burn", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawGasFee", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IZRC20Metadata__factory { + static readonly abi = _abi; + static createInterface(): IZRC20MetadataInterface { + return new Interface(_abi) as IZRC20MetadataInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IZRC20Metadata { + return new Contract(address, _abi, runner) as unknown as IZRC20Metadata; + } +} diff --git a/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts b/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts new file mode 100644 index 00000000..12c53aa6 --- /dev/null +++ b/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts @@ -0,0 +1,250 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IZRC20, IZRC20Interface } from "../../IZRC20.sol/IZRC20"; + +const _abi = [ + { + type: "function", + name: "PROTOCOL_FLAT_FEE", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burn", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawGasFee", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IZRC20__factory { + static readonly abi = _abi; + static createInterface(): IZRC20Interface { + return new Interface(_abi) as IZRC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): IZRC20 { + return new Contract(address, _abi, runner) as unknown as IZRC20; + } +} diff --git a/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts b/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts new file mode 100644 index 00000000..6cf7538f --- /dev/null +++ b/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts @@ -0,0 +1,173 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZRC20Events, + ZRC20EventsInterface, +} from "../../IZRC20.sol/ZRC20Events"; + +const _abi = [ + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "from", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedGasLimit", + inputs: [ + { + name: "gasLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedProtocolFlatFee", + inputs: [ + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedSystemContract", + inputs: [ + { + name: "systemContract", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "gasFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class ZRC20Events__factory { + static readonly abi = _abi; + static createInterface(): ZRC20EventsInterface { + return new Interface(_abi) as ZRC20EventsInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZRC20Events { + return new Contract(address, _abi, runner) as unknown as ZRC20Events; + } +} diff --git a/v2/typechain-types/factories/IZRC20.sol/index.ts b/v2/typechain-types/factories/IZRC20.sol/index.ts new file mode 100644 index 00000000..98e010d3 --- /dev/null +++ b/v2/typechain-types/factories/IZRC20.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IZRC20__factory } from "./IZRC20__factory"; +export { IZRC20Metadata__factory } from "./IZRC20Metadata__factory"; +export { ZRC20Events__factory } from "./ZRC20Events__factory"; diff --git a/v2/typechain-types/factories/IZetaConnector.sol/IZetaConnectorEvents__factory.ts b/v2/typechain-types/factories/IZetaConnector.sol/IZetaConnectorEvents__factory.ts new file mode 100644 index 00000000..92dae62d --- /dev/null +++ b/v2/typechain-types/factories/IZetaConnector.sol/IZetaConnectorEvents__factory.ts @@ -0,0 +1,98 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IZetaConnectorEvents, + IZetaConnectorEventsInterface, +} from "../../IZetaConnector.sol/IZetaConnectorEvents"; + +const _abi = [ + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class IZetaConnectorEvents__factory { + static readonly abi = _abi; + static createInterface(): IZetaConnectorEventsInterface { + return new Interface(_abi) as IZetaConnectorEventsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IZetaConnectorEvents { + return new Contract( + address, + _abi, + runner + ) as unknown as IZetaConnectorEvents; + } +} diff --git a/v2/typechain-types/factories/IZetaConnector.sol/index.ts b/v2/typechain-types/factories/IZetaConnector.sol/index.ts new file mode 100644 index 00000000..a60ddc89 --- /dev/null +++ b/v2/typechain-types/factories/IZetaConnector.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IZetaConnectorEvents__factory } from "./IZetaConnectorEvents__factory"; diff --git a/v2/typechain-types/factories/IZetaNonEthNew__factory.ts b/v2/typechain-types/factories/IZetaNonEthNew__factory.ts new file mode 100644 index 00000000..362f9de6 --- /dev/null +++ b/v2/typechain-types/factories/IZetaNonEthNew__factory.ts @@ -0,0 +1,249 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IZetaNonEthNew, + IZetaNonEthNewInterface, +} from "../IZetaNonEthNew"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burnFrom", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mint", + inputs: [ + { + name: "mintee", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IZetaNonEthNew__factory { + static readonly abi = _abi; + static createInterface(): IZetaNonEthNewInterface { + return new Interface(_abi) as IZetaNonEthNewInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IZetaNonEthNew { + return new Contract(address, _abi, runner) as unknown as IZetaNonEthNew; + } +} diff --git a/v2/typechain-types/factories/Initializable__factory.ts b/v2/typechain-types/factories/Initializable__factory.ts new file mode 100644 index 00000000..d6c76134 --- /dev/null +++ b/v2/typechain-types/factories/Initializable__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Initializable, InitializableInterface } from "../Initializable"; + +const _abi = [ + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, +] as const; + +export class Initializable__factory { + static readonly abi = _abi; + static createInterface(): InitializableInterface { + return new Interface(_abi) as InitializableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): Initializable { + return new Contract(address, _abi, runner) as unknown as Initializable; + } +} diff --git a/v2/typechain-types/factories/Math__factory.ts b/v2/typechain-types/factories/Math__factory.ts new file mode 100644 index 00000000..77764d8f --- /dev/null +++ b/v2/typechain-types/factories/Math__factory.ts @@ -0,0 +1,66 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { Math, MathInterface } from "../Math"; + +const _abi = [ + { + type: "error", + name: "MathOverflowedMulDiv", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0b270b0be59fe690f25903756d3c17b6ea12af9948ddfe45caafa979d407cf964736f6c634300081a0033"; + +type MathConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MathConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Math__factory extends ContractFactory { + constructor(...args: MathConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Math & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Math__factory { + return super.connect(runner) as Math__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MathInterface { + return new Interface(_abi) as MathInterface; + } + static connect(address: string, runner?: ContractRunner | null): Math { + return new Contract(address, _abi, runner) as unknown as Math; + } +} diff --git a/v2/typechain-types/factories/MockERC20__factory.ts b/v2/typechain-types/factories/MockERC20__factory.ts new file mode 100644 index 00000000..5effecad --- /dev/null +++ b/v2/typechain-types/factories/MockERC20__factory.ts @@ -0,0 +1,381 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { MockERC20, MockERC20Interface } from "../MockERC20"; + +const _abi = [ + { + type: "function", + name: "DOMAIN_SEPARATOR", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "name_", + type: "string", + internalType: "string", + }, + { + name: "symbol_", + type: "string", + internalType: "string", + }, + { + name: "decimals_", + type: "uint8", + internalType: "uint8", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "nonces", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "permit", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "deadline", + type: "uint256", + internalType: "uint256", + }, + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220851d97dae90e79fa61b9e1ffe627628587a83f0e58ff9e31aa3727a08c88fd7d64736f6c634300081a0033"; + +type MockERC20ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MockERC20ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class MockERC20__factory extends ContractFactory { + constructor(...args: MockERC20ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + MockERC20 & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): MockERC20__factory { + return super.connect(runner) as MockERC20__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MockERC20Interface { + return new Interface(_abi) as MockERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): MockERC20 { + return new Contract(address, _abi, runner) as unknown as MockERC20; + } +} diff --git a/v2/typechain-types/factories/MockERC721__factory.ts b/v2/typechain-types/factories/MockERC721__factory.ts new file mode 100644 index 00000000..60e495a3 --- /dev/null +++ b/v2/typechain-types/factories/MockERC721__factory.ts @@ -0,0 +1,409 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { MockERC721, MockERC721Interface } from "../MockERC721"; + +const _abi = [ + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getApproved", + inputs: [ + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "initialize", + inputs: [ + { + name: "name_", + type: "string", + internalType: "string", + }, + { + name: "symbol_", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "isApprovedForAll", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "operator", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ownerOf", + inputs: [ + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "safeTransferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "setApprovalForAll", + inputs: [ + { + name: "operator", + type: "address", + internalType: "address", + }, + { + name: "approved", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tokenURI", + inputs: [ + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "id", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ApprovalForAll", + inputs: [ + { + name: "_owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_operator", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_approved", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "_from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "_tokenId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea26469706673582212202332803a16bf7eaf4a68e83df79b845e756649c92da3b94bb9b4061f246da5be64736f6c634300081a0033"; + +type MockERC721ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MockERC721ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class MockERC721__factory extends ContractFactory { + constructor(...args: MockERC721ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + MockERC721 & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): MockERC721__factory { + return super.connect(runner) as MockERC721__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MockERC721Interface { + return new Interface(_abi) as MockERC721Interface; + } + static connect(address: string, runner?: ContractRunner | null): MockERC721 { + return new Contract(address, _abi, runner) as unknown as MockERC721; + } +} diff --git a/v2/typechain-types/factories/OwnableUpgradeable__factory.ts b/v2/typechain-types/factories/OwnableUpgradeable__factory.ts new file mode 100644 index 00000000..024cfecf --- /dev/null +++ b/v2/typechain-types/factories/OwnableUpgradeable__factory.ts @@ -0,0 +1,122 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + OwnableUpgradeable, + OwnableUpgradeableInterface, +} from "../OwnableUpgradeable"; + +const _abi = [ + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class OwnableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): OwnableUpgradeableInterface { + return new Interface(_abi) as OwnableUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): OwnableUpgradeable { + return new Contract(address, _abi, runner) as unknown as OwnableUpgradeable; + } +} diff --git a/v2/typechain-types/factories/Ownable__factory.ts b/v2/typechain-types/factories/Ownable__factory.ts new file mode 100644 index 00000000..d7eebd03 --- /dev/null +++ b/v2/typechain-types/factories/Ownable__factory.ts @@ -0,0 +1,93 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Ownable, OwnableInterface } from "../Ownable"; + +const _abi = [ + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class Ownable__factory { + static readonly abi = _abi; + static createInterface(): OwnableInterface { + return new Interface(_abi) as OwnableInterface; + } + static connect(address: string, runner?: ContractRunner | null): Ownable { + return new Contract(address, _abi, runner) as unknown as Ownable; + } +} diff --git a/v2/typechain-types/factories/ProxyAdmin__factory.ts b/v2/typechain-types/factories/ProxyAdmin__factory.ts new file mode 100644 index 00000000..f38082f3 --- /dev/null +++ b/v2/typechain-types/factories/ProxyAdmin__factory.ts @@ -0,0 +1,191 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { ProxyAdmin, ProxyAdminInterface } from "../ProxyAdmin"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "initialOwner", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeAndCall", + inputs: [ + { + name: "proxy", + type: "address", + internalType: "contract ITransparentUpgradeableProxy", + }, + { + name: "implementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033"; + +type ProxyAdminConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ProxyAdminConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ProxyAdmin__factory extends ContractFactory { + constructor(...args: ProxyAdminConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + initialOwner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(initialOwner, overrides || {}); + } + override deploy( + initialOwner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(initialOwner, overrides || {}) as Promise< + ProxyAdmin & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ProxyAdmin__factory { + return super.connect(runner) as ProxyAdmin__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ProxyAdminInterface { + return new Interface(_abi) as ProxyAdminInterface; + } + static connect(address: string, runner?: ContractRunner | null): ProxyAdmin { + return new Contract(address, _abi, runner) as unknown as ProxyAdmin; + } +} diff --git a/v2/typechain-types/factories/Proxy__factory.ts b/v2/typechain-types/factories/Proxy__factory.ts new file mode 100644 index 00000000..3b29df3b --- /dev/null +++ b/v2/typechain-types/factories/Proxy__factory.ts @@ -0,0 +1,23 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Proxy, ProxyInterface } from "../Proxy"; + +const _abi = [ + { + type: "fallback", + stateMutability: "payable", + }, +] as const; + +export class Proxy__factory { + static readonly abi = _abi; + static createInterface(): ProxyInterface { + return new Interface(_abi) as ProxyInterface; + } + static connect(address: string, runner?: ContractRunner | null): Proxy { + return new Contract(address, _abi, runner) as unknown as Proxy; + } +} diff --git a/v2/typechain-types/factories/ReceiverEVM__factory.ts b/v2/typechain-types/factories/ReceiverEVM__factory.ts new file mode 100644 index 00000000..3cd1a430 --- /dev/null +++ b/v2/typechain-types/factories/ReceiverEVM__factory.ts @@ -0,0 +1,360 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { ReceiverEVM, ReceiverEVMInterface } from "../ReceiverEVM"; + +const _abi = [ + { + type: "fallback", + stateMutability: "payable", + }, + { + type: "receive", + stateMutability: "payable", + }, + { + type: "function", + name: "onRevert", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "receiveERC20", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "destination", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "receiveERC20Partial", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "token", + type: "address", + internalType: "address", + }, + { + name: "destination", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "receiveNoParams", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "receiveNonPayable", + inputs: [ + { + name: "strs", + type: "string[]", + internalType: "string[]", + }, + { + name: "nums", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "flag", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "receivePayable", + inputs: [ + { + name: "str", + type: "string", + internalType: "string", + }, + { + name: "num", + type: "uint256", + internalType: "uint256", + }, + { + name: "flag", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "ReceivedERC20", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "token", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "destination", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedNoParams", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedNonPayable", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "strs", + type: "string[]", + indexed: false, + internalType: "string[]", + }, + { + name: "nums", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + { + name: "flag", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedPayable", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "str", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "num", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "flag", + type: "bool", + indexed: false, + internalType: "bool", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ReceivedRevert", + inputs: [ + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ZeroAmount", + inputs: [], + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033"; + +type ReceiverEVMConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ReceiverEVMConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ReceiverEVM__factory extends ContractFactory { + constructor(...args: ReceiverEVMConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + ReceiverEVM & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ReceiverEVM__factory { + return super.connect(runner) as ReceiverEVM__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ReceiverEVMInterface { + return new Interface(_abi) as ReceiverEVMInterface; + } + static connect(address: string, runner?: ContractRunner | null): ReceiverEVM { + return new Contract(address, _abi, runner) as unknown as ReceiverEVM; + } +} diff --git a/v2/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts b/v2/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts new file mode 100644 index 00000000..6371f807 --- /dev/null +++ b/v2/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts @@ -0,0 +1,57 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ReentrancyGuardUpgradeable, + ReentrancyGuardUpgradeableInterface, +} from "../ReentrancyGuardUpgradeable"; + +const _abi = [ + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, +] as const; + +export class ReentrancyGuardUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): ReentrancyGuardUpgradeableInterface { + return new Interface(_abi) as ReentrancyGuardUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ReentrancyGuardUpgradeable { + return new Contract( + address, + _abi, + runner + ) as unknown as ReentrancyGuardUpgradeable; + } +} diff --git a/v2/typechain-types/factories/ReentrancyGuard__factory.ts b/v2/typechain-types/factories/ReentrancyGuard__factory.ts new file mode 100644 index 00000000..26a1cce5 --- /dev/null +++ b/v2/typechain-types/factories/ReentrancyGuard__factory.ts @@ -0,0 +1,30 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ReentrancyGuard, + ReentrancyGuardInterface, +} from "../ReentrancyGuard"; + +const _abi = [ + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, +] as const; + +export class ReentrancyGuard__factory { + static readonly abi = _abi; + static createInterface(): ReentrancyGuardInterface { + return new Interface(_abi) as ReentrancyGuardInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ReentrancyGuard { + return new Contract(address, _abi, runner) as unknown as ReentrancyGuard; + } +} diff --git a/v2/typechain-types/factories/SafeERC20__factory.ts b/v2/typechain-types/factories/SafeERC20__factory.ts new file mode 100644 index 00000000..9740e0a3 --- /dev/null +++ b/v2/typechain-types/factories/SafeERC20__factory.ts @@ -0,0 +1,93 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { SafeERC20, SafeERC20Interface } from "../SafeERC20"; + +const _abi = [ + { + type: "error", + name: "SafeERC20FailedDecreaseAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "currentAllowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "requestedDecrease", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b149ed6660f3fbf5a50e73e0348cd9d9861a3fa7d998ed32eee66773e3cb05b864736f6c634300081a0033"; + +type SafeERC20ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SafeERC20ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SafeERC20__factory extends ContractFactory { + constructor(...args: SafeERC20ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + SafeERC20 & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): SafeERC20__factory { + return super.connect(runner) as SafeERC20__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SafeERC20Interface { + return new Interface(_abi) as SafeERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): SafeERC20 { + return new Contract(address, _abi, runner) as unknown as SafeERC20; + } +} diff --git a/v2/typechain-types/factories/SenderZEVM__factory.ts b/v2/typechain-types/factories/SenderZEVM__factory.ts new file mode 100644 index 00000000..4a7c1876 --- /dev/null +++ b/v2/typechain-types/factories/SenderZEVM__factory.ts @@ -0,0 +1,165 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { SenderZEVM, SenderZEVMInterface } from "../SenderZEVM"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_gateway", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "callReceiver", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "str", + type: "string", + internalType: "string", + }, + { + name: "num", + type: "uint256", + internalType: "uint256", + }, + { + name: "flag", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdrawAndCallReceiver", + inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "str", + type: "string", + internalType: "string", + }, + { + name: "num", + type: "uint256", + internalType: "uint256", + }, + { + name: "flag", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "error", + name: "ApprovalFailed", + inputs: [], + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033"; + +type SenderZEVMConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SenderZEVMConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SenderZEVM__factory extends ContractFactory { + constructor(...args: SenderZEVMConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _gateway: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(_gateway, overrides || {}); + } + override deploy( + _gateway: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(_gateway, overrides || {}) as Promise< + SenderZEVM & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): SenderZEVM__factory { + return super.connect(runner) as SenderZEVM__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SenderZEVMInterface { + return new Interface(_abi) as SenderZEVMInterface; + } + static connect(address: string, runner?: ContractRunner | null): SenderZEVM { + return new Contract(address, _abi, runner) as unknown as SenderZEVM; + } +} diff --git a/v2/typechain-types/factories/StdAssertions__factory.ts b/v2/typechain-types/factories/StdAssertions__factory.ts new file mode 100644 index 00000000..7ba2478b --- /dev/null +++ b/v2/typechain-types/factories/StdAssertions__factory.ts @@ -0,0 +1,399 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { StdAssertions, StdAssertionsInterface } from "../StdAssertions"; + +const _abi = [ + { + type: "function", + name: "failed", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "log", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_address", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes32", + inputs: [ + { + name: "", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_int", + inputs: [ + { + name: "", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_address", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes32", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_string", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_string", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_uint", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "logs", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class StdAssertions__factory { + static readonly abi = _abi; + static createInterface(): StdAssertionsInterface { + return new Interface(_abi) as StdAssertionsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StdAssertions { + return new Contract(address, _abi, runner) as unknown as StdAssertions; + } +} diff --git a/v2/typechain-types/factories/StdError.sol/StdError__factory.ts b/v2/typechain-types/factories/StdError.sol/StdError__factory.ts new file mode 100644 index 00000000..6f702f39 --- /dev/null +++ b/v2/typechain-types/factories/StdError.sol/StdError__factory.ts @@ -0,0 +1,178 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { StdError, StdErrorInterface } from "../../StdError.sol/StdError"; + +const _abi = [ + { + type: "function", + name: "arithmeticError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "assertionError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "divisionError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "encodeStorageError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "enumConversionError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "indexOOBError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "memOverflowError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "popError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "zeroVarError", + inputs: [], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, +] as const; + +const _bytecode = + "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212209d55015f4a99eb82983bead015f4946ac9e7ee7d323094e4fb909dc07bb134c164736f6c634300081a0033"; + +type StdErrorConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StdErrorConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StdError__factory extends ContractFactory { + constructor(...args: StdErrorConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + StdError & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): StdError__factory { + return super.connect(runner) as StdError__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StdErrorInterface { + return new Interface(_abi) as StdErrorInterface; + } + static connect(address: string, runner?: ContractRunner | null): StdError { + return new Contract(address, _abi, runner) as unknown as StdError; + } +} diff --git a/v2/typechain-types/factories/StdError.sol/index.ts b/v2/typechain-types/factories/StdError.sol/index.ts new file mode 100644 index 00000000..5c898ac1 --- /dev/null +++ b/v2/typechain-types/factories/StdError.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { StdError__factory } from "./StdError__factory"; diff --git a/v2/typechain-types/factories/StdInvariant__factory.ts b/v2/typechain-types/factories/StdInvariant__factory.ts new file mode 100644 index 00000000..e216a1e4 --- /dev/null +++ b/v2/typechain-types/factories/StdInvariant__factory.ts @@ -0,0 +1,200 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { StdInvariant, StdInvariantInterface } from "../StdInvariant"; + +const _abi = [ + { + type: "function", + name: "excludeArtifacts", + inputs: [], + outputs: [ + { + name: "excludedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeContracts", + inputs: [], + outputs: [ + { + name: "excludedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSelectors", + inputs: [], + outputs: [ + { + name: "excludedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSenders", + inputs: [], + outputs: [ + { + name: "excludedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetArtifactSelectors", + inputs: [], + outputs: [ + { + name: "targetedArtifactSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzArtifactSelector[]", + components: [ + { + name: "artifact", + type: "string", + internalType: "string", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetArtifacts", + inputs: [], + outputs: [ + { + name: "targetedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetContracts", + inputs: [], + outputs: [ + { + name: "targetedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetInterfaces", + inputs: [], + outputs: [ + { + name: "targetedInterfaces_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzInterface[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "artifacts", + type: "string[]", + internalType: "string[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSelectors", + inputs: [], + outputs: [ + { + name: "targetedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSenders", + inputs: [], + outputs: [ + { + name: "targetedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, +] as const; + +export class StdInvariant__factory { + static readonly abi = _abi; + static createInterface(): StdInvariantInterface { + return new Interface(_abi) as StdInvariantInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StdInvariant { + return new Contract(address, _abi, runner) as unknown as StdInvariant; + } +} diff --git a/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts b/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts new file mode 100644 index 00000000..826a2270 --- /dev/null +++ b/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts @@ -0,0 +1,117 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { + StdStorageSafe, + StdStorageSafeInterface, +} from "../../StdStorage.sol/StdStorageSafe"; + +const _abi = [ + { + type: "event", + name: "SlotFound", + inputs: [ + { + name: "who", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "fsig", + type: "bytes4", + indexed: false, + internalType: "bytes4", + }, + { + name: "keysHash", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + { + name: "slot", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WARNING_UninitedSlot", + inputs: [ + { + name: "who", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "slot", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6473a3e455f11b00943e19d62d02cf957dec4d27a7a7ddb023bf40264d580b064736f6c634300081a0033"; + +type StdStorageSafeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StdStorageSafeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StdStorageSafe__factory extends ContractFactory { + constructor(...args: StdStorageSafeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + StdStorageSafe & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): StdStorageSafe__factory { + return super.connect(runner) as StdStorageSafe__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StdStorageSafeInterface { + return new Interface(_abi) as StdStorageSafeInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): StdStorageSafe { + return new Contract(address, _abi, runner) as unknown as StdStorageSafe; + } +} diff --git a/v2/typechain-types/factories/StdStorage.sol/index.ts b/v2/typechain-types/factories/StdStorage.sol/index.ts new file mode 100644 index 00000000..4f4de1e2 --- /dev/null +++ b/v2/typechain-types/factories/StdStorage.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { StdStorageSafe__factory } from "./StdStorageSafe__factory"; diff --git a/v2/typechain-types/factories/SystemContract.sol/SystemContractErrors__factory.ts b/v2/typechain-types/factories/SystemContract.sol/SystemContractErrors__factory.ts new file mode 100644 index 00000000..6f5be47a --- /dev/null +++ b/v2/typechain-types/factories/SystemContract.sol/SystemContractErrors__factory.ts @@ -0,0 +1,54 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + SystemContractErrors, + SystemContractErrorsInterface, +} from "../../SystemContract.sol/SystemContractErrors"; + +const _abi = [ + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "CantBeIdenticalAddresses", + inputs: [], + }, + { + type: "error", + name: "CantBeZeroAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +export class SystemContractErrors__factory { + static readonly abi = _abi; + static createInterface(): SystemContractErrorsInterface { + return new Interface(_abi) as SystemContractErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SystemContractErrors { + return new Contract( + address, + _abi, + runner + ) as unknown as SystemContractErrors; + } +} diff --git a/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts new file mode 100644 index 00000000..9dcf65a1 --- /dev/null +++ b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts @@ -0,0 +1,506 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { + SystemContract, + SystemContractInterface, +} from "../../SystemContract.sol/SystemContract"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "wzeta_", + type: "address", + internalType: "address", + }, + { + name: "uniswapv2Factory_", + type: "address", + internalType: "address", + }, + { + name: "uniswapv2Router02_", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "FUNGIBLE_MODULE_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gasCoinZRC20ByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasPriceByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasZetaPoolByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "setConnectorZEVMAddress", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setGasCoinZRC20", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setGasPrice", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + { + name: "price", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setGasZetaPool", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + { + name: "erc20", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setWZETAContractAddress", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "uniswapv2FactoryAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "uniswapv2PairFor", + inputs: [ + { + name: "factory", + type: "address", + internalType: "address", + }, + { + name: "tokenA", + type: "address", + internalType: "address", + }, + { + name: "tokenB", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "pair", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "uniswapv2Router02Address", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "wZetaContractAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "zetaConnectorZEVMAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "SetConnectorZEVM", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetGasCoin", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetGasPrice", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetGasZetaPool", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetWZeta", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SystemContractDeployed", + inputs: [], + anonymous: false, + }, + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "CantBeIdenticalAddresses", + inputs: [], + }, + { + type: "error", + name: "CantBeZeroAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033"; + +type SystemContractConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SystemContractConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SystemContract__factory extends ContractFactory { + constructor(...args: SystemContractConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + wzeta_: AddressLike, + uniswapv2Factory_: AddressLike, + uniswapv2Router02_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ); + } + override deploy( + wzeta_: AddressLike, + uniswapv2Factory_: AddressLike, + uniswapv2Router02_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ) as Promise< + SystemContract & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): SystemContract__factory { + return super.connect(runner) as SystemContract__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SystemContractInterface { + return new Interface(_abi) as SystemContractInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SystemContract { + return new Contract(address, _abi, runner) as unknown as SystemContract; + } +} diff --git a/v2/typechain-types/factories/SystemContract.sol/index.ts b/v2/typechain-types/factories/SystemContract.sol/index.ts new file mode 100644 index 00000000..32da62eb --- /dev/null +++ b/v2/typechain-types/factories/SystemContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { SystemContract__factory } from "./SystemContract__factory"; +export { SystemContractErrors__factory } from "./SystemContractErrors__factory"; diff --git a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractErrors__factory.ts b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractErrors__factory.ts new file mode 100644 index 00000000..c211372f --- /dev/null +++ b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractErrors__factory.ts @@ -0,0 +1,49 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + SystemContractErrors, + SystemContractErrorsInterface, +} from "../../SystemContractMock.sol/SystemContractErrors"; + +const _abi = [ + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "CantBeIdenticalAddresses", + inputs: [], + }, + { + type: "error", + name: "CantBeZeroAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, +] as const; + +export class SystemContractErrors__factory { + static readonly abi = _abi; + static createInterface(): SystemContractErrorsInterface { + return new Interface(_abi) as SystemContractErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SystemContractErrors { + return new Contract( + address, + _abi, + runner + ) as unknown as SystemContractErrors; + } +} diff --git a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts new file mode 100644 index 00000000..0135ac55 --- /dev/null +++ b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts @@ -0,0 +1,409 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { + SystemContractMock, + SystemContractMockInterface, +} from "../../SystemContractMock.sol/SystemContractMock"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "wzeta_", + type: "address", + internalType: "address", + }, + { + name: "uniswapv2Factory_", + type: "address", + internalType: "address", + }, + { + name: "uniswapv2Router02_", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gasCoinZRC20ByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasPriceByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gasZetaPoolByChainId", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "onCrossChainCall", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setGasCoinZRC20", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setGasPrice", + inputs: [ + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + { + name: "price", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setWZETAContractAddress", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "uniswapv2FactoryAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "uniswapv2PairFor", + inputs: [ + { + name: "factory", + type: "address", + internalType: "address", + }, + { + name: "tokenA", + type: "address", + internalType: "address", + }, + { + name: "tokenB", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "pair", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "uniswapv2Router02Address", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "wZetaContractAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "SetGasCoin", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetGasPrice", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetGasZetaPool", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SetWZeta", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "SystemContractDeployed", + inputs: [], + anonymous: false, + }, + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "CantBeIdenticalAddresses", + inputs: [], + }, + { + type: "error", + name: "CantBeZeroAddress", + inputs: [], + }, + { + type: "error", + name: "InvalidTarget", + inputs: [], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033"; + +type SystemContractMockConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SystemContractMockConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SystemContractMock__factory extends ContractFactory { + constructor(...args: SystemContractMockConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + wzeta_: AddressLike, + uniswapv2Factory_: AddressLike, + uniswapv2Router02_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ); + } + override deploy( + wzeta_: AddressLike, + uniswapv2Factory_: AddressLike, + uniswapv2Router02_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ) as Promise< + SystemContractMock & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): SystemContractMock__factory { + return super.connect(runner) as SystemContractMock__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SystemContractMockInterface { + return new Interface(_abi) as SystemContractMockInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): SystemContractMock { + return new Contract(address, _abi, runner) as unknown as SystemContractMock; + } +} diff --git a/v2/typechain-types/factories/SystemContractMock.sol/index.ts b/v2/typechain-types/factories/SystemContractMock.sol/index.ts new file mode 100644 index 00000000..006bdc5d --- /dev/null +++ b/v2/typechain-types/factories/SystemContractMock.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { SystemContractErrors__factory } from "./SystemContractErrors__factory"; +export { SystemContractMock__factory } from "./SystemContractMock__factory"; diff --git a/v2/typechain-types/factories/TestERC20__factory.ts b/v2/typechain-types/factories/TestERC20__factory.ts new file mode 100644 index 00000000..3c8adeb0 --- /dev/null +++ b/v2/typechain-types/factories/TestERC20__factory.ts @@ -0,0 +1,409 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { TestERC20, TestERC20Interface } from "../TestERC20"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "symbol", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "mint", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "ERC20InsufficientAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "allowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSpender", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033"; + +type TestERC20ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TestERC20ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TestERC20__factory extends ContractFactory { + constructor(...args: TestERC20ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + name: string, + symbol: string, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(name, symbol, overrides || {}); + } + override deploy( + name: string, + symbol: string, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy(name, symbol, overrides || {}) as Promise< + TestERC20 & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): TestERC20__factory { + return super.connect(runner) as TestERC20__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TestERC20Interface { + return new Interface(_abi) as TestERC20Interface; + } + static connect(address: string, runner?: ContractRunner | null): TestERC20 { + return new Contract(address, _abi, runner) as unknown as TestERC20; + } +} diff --git a/v2/typechain-types/factories/TestZContract__factory.ts b/v2/typechain-types/factories/TestZContract__factory.ts new file mode 100644 index 00000000..3f8682b4 --- /dev/null +++ b/v2/typechain-types/factories/TestZContract__factory.ts @@ -0,0 +1,236 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { TestZContract, TestZContractInterface } from "../TestZContract"; + +const _abi = [ + { + type: "fallback", + stateMutability: "payable", + }, + { + type: "receive", + stateMutability: "payable", + }, + { + type: "function", + name: "onCrossChainCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "onRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "ContextData", + inputs: [ + { + name: "origin", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "msgSender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "message", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ContextDataRevert", + inputs: [ + { + name: "origin", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "sender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "msgSender", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "message", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a0033"; + +type TestZContractConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TestZContractConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TestZContract__factory extends ContractFactory { + constructor(...args: TestZContractConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + TestZContract & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): TestZContract__factory { + return super.connect(runner) as TestZContract__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TestZContractInterface { + return new Interface(_abi) as TestZContractInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): TestZContract { + return new Contract(address, _abi, runner) as unknown as TestZContract; + } +} diff --git a/v2/typechain-types/factories/Test__factory.ts b/v2/typechain-types/factories/Test__factory.ts new file mode 100644 index 00000000..1ddaff9b --- /dev/null +++ b/v2/typechain-types/factories/Test__factory.ts @@ -0,0 +1,587 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Test, TestInterface } from "../Test"; + +const _abi = [ + { + type: "function", + name: "IS_TEST", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeArtifacts", + inputs: [], + outputs: [ + { + name: "excludedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeContracts", + inputs: [], + outputs: [ + { + name: "excludedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSelectors", + inputs: [], + outputs: [ + { + name: "excludedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSenders", + inputs: [], + outputs: [ + { + name: "excludedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "failed", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetArtifactSelectors", + inputs: [], + outputs: [ + { + name: "targetedArtifactSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzArtifactSelector[]", + components: [ + { + name: "artifact", + type: "string", + internalType: "string", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetArtifacts", + inputs: [], + outputs: [ + { + name: "targetedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetContracts", + inputs: [], + outputs: [ + { + name: "targetedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetInterfaces", + inputs: [], + outputs: [ + { + name: "targetedInterfaces_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzInterface[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "artifacts", + type: "string[]", + internalType: "string[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSelectors", + inputs: [], + outputs: [ + { + name: "targetedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSenders", + inputs: [], + outputs: [ + { + name: "targetedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "log", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_address", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes32", + inputs: [ + { + name: "", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_int", + inputs: [ + { + name: "", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_address", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes32", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_string", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_string", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_uint", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "logs", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class Test__factory { + static readonly abi = _abi; + static createInterface(): TestInterface { + return new Interface(_abi) as TestInterface; + } + static connect(address: string, runner?: ContractRunner | null): Test { + return new Contract(address, _abi, runner) as unknown as Test; + } +} diff --git a/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.ts b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.ts new file mode 100644 index 00000000..0e89439e --- /dev/null +++ b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.ts @@ -0,0 +1,92 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ITransparentUpgradeableProxy, + ITransparentUpgradeableProxyInterface, +} from "../../TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy"; + +const _abi = [ + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "BeaconUpgraded", + inputs: [ + { + name: "beacon", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, +] as const; + +export class ITransparentUpgradeableProxy__factory { + static readonly abi = _abi; + static createInterface(): ITransparentUpgradeableProxyInterface { + return new Interface(_abi) as ITransparentUpgradeableProxyInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ITransparentUpgradeableProxy { + return new Contract( + address, + _abi, + runner + ) as unknown as ITransparentUpgradeableProxy; + } +} diff --git a/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts new file mode 100644 index 00000000..4423fc5e --- /dev/null +++ b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts @@ -0,0 +1,202 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BytesLike, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { PayableOverrides } from "../../common"; +import type { + TransparentUpgradeableProxy, + TransparentUpgradeableProxyInterface, +} from "../../TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_logic", + type: "address", + internalType: "address", + }, + { + name: "initialOwner", + type: "address", + internalType: "address", + }, + { + name: "_data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "payable", + }, + { + type: "fallback", + stateMutability: "payable", + }, + { + type: "event", + name: "AdminChanged", + inputs: [ + { + name: "previousAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newAdmin", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidAdmin", + inputs: [ + { + name: "admin", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "ProxyDeniedAdminAccess", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220fd77e8da75db1db8869da9f85c4ad64fb3db9f30cb52edf1c23c9afbda1e8dc664736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; + +type TransparentUpgradeableProxyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TransparentUpgradeableProxyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TransparentUpgradeableProxy__factory extends ContractFactory { + constructor(...args: TransparentUpgradeableProxyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _logic: AddressLike, + initialOwner: AddressLike, + _data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _logic, + initialOwner, + _data, + overrides || {} + ); + } + override deploy( + _logic: AddressLike, + initialOwner: AddressLike, + _data: BytesLike, + overrides?: PayableOverrides & { from?: string } + ) { + return super.deploy( + _logic, + initialOwner, + _data, + overrides || {} + ) as Promise< + TransparentUpgradeableProxy & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): TransparentUpgradeableProxy__factory { + return super.connect(runner) as TransparentUpgradeableProxy__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TransparentUpgradeableProxyInterface { + return new Interface(_abi) as TransparentUpgradeableProxyInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): TransparentUpgradeableProxy { + return new Contract( + address, + _abi, + runner + ) as unknown as TransparentUpgradeableProxy; + } +} diff --git a/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/index.ts b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/index.ts new file mode 100644 index 00000000..1114d38c --- /dev/null +++ b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ITransparentUpgradeableProxy__factory } from "./ITransparentUpgradeableProxy__factory"; +export { TransparentUpgradeableProxy__factory } from "./TransparentUpgradeableProxy__factory"; diff --git a/v2/typechain-types/factories/UUPSUpgradeable__factory.ts b/v2/typechain-types/factories/UUPSUpgradeable__factory.ts new file mode 100644 index 00000000..2f4fc594 --- /dev/null +++ b/v2/typechain-types/factories/UUPSUpgradeable__factory.ts @@ -0,0 +1,153 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + UUPSUpgradeable, + UUPSUpgradeableInterface, +} from "../UUPSUpgradeable"; + +const _abi = [ + { + type: "function", + name: "UPGRADE_INTERFACE_VERSION", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "upgradeToAndCall", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967InvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1967NonPayable", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, + { + type: "error", + name: "UUPSUnauthorizedCallContext", + inputs: [], + }, + { + type: "error", + name: "UUPSUnsupportedProxiableUUID", + inputs: [ + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +export class UUPSUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): UUPSUpgradeableInterface { + return new Interface(_abi) as UUPSUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): UUPSUpgradeable { + return new Contract(address, _abi, runner) as unknown as UUPSUpgradeable; + } +} diff --git a/v2/typechain-types/factories/UpgradeableBeacon__factory.ts b/v2/typechain-types/factories/UpgradeableBeacon__factory.ts new file mode 100644 index 00000000..2b6d399f --- /dev/null +++ b/v2/typechain-types/factories/UpgradeableBeacon__factory.ts @@ -0,0 +1,226 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + UpgradeableBeacon, + UpgradeableBeaconInterface, +} from "../UpgradeableBeacon"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "implementation_", + type: "address", + internalType: "address", + }, + { + name: "initialOwner", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "implementation", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "owner", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceOwnership", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferOwnership", + inputs: [ + { + name: "newOwner", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "upgradeTo", + inputs: [ + { + name: "newImplementation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "OwnershipTransferred", + inputs: [ + { + name: "previousOwner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "newOwner", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Upgraded", + inputs: [ + { + name: "implementation", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "BeaconInvalidImplementation", + inputs: [ + { + name: "implementation", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableInvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "OwnableUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea264697066735822122063e6ac8c10cb14b9254b2b497f04ed7c7aa519086cae45504282764c66a749f364736f6c634300081a0033"; + +type UpgradeableBeaconConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: UpgradeableBeaconConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class UpgradeableBeacon__factory extends ContractFactory { + constructor(...args: UpgradeableBeaconConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + implementation_: AddressLike, + initialOwner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + implementation_, + initialOwner, + overrides || {} + ); + } + override deploy( + implementation_: AddressLike, + initialOwner: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + implementation_, + initialOwner, + overrides || {} + ) as Promise< + UpgradeableBeacon & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): UpgradeableBeacon__factory { + return super.connect(runner) as UpgradeableBeacon__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): UpgradeableBeaconInterface { + return new Interface(_abi) as UpgradeableBeaconInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): UpgradeableBeacon { + return new Contract(address, _abi, runner) as unknown as UpgradeableBeacon; + } +} diff --git a/v2/typechain-types/factories/Vm.sol/VmSafe__factory.ts b/v2/typechain-types/factories/Vm.sol/VmSafe__factory.ts new file mode 100644 index 00000000..c77af7eb --- /dev/null +++ b/v2/typechain-types/factories/Vm.sol/VmSafe__factory.ts @@ -0,0 +1,7526 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { VmSafe, VmSafeInterface } from "../../Vm.sol/VmSafe"; + +const _abi = [ + { + type: "function", + name: "accesses", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "readSlots", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "writeSlots", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "addr", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "keyAddr", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertFalse", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertFalse", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertTrue", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertTrue", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assume", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "breakpoint", + inputs: [ + { + name: "char", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "breakpoint", + inputs: [ + { + name: "char", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "closeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "computeCreate2Address", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "initCodeHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "computeCreate2Address", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "initCodeHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "deployer", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "computeCreateAddress", + inputs: [ + { + name: "deployer", + type: "address", + internalType: "address", + }, + { + name: "nonce", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "copyFile", + inputs: [ + { + name: "from", + type: "string", + internalType: "string", + }, + { + name: "to", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "copied", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "recursive", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "walletLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "walletLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deployCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + { + name: "constructorArgs", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "deployedAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deployCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "deployedAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "derivationPath", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + { + name: "language", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + { + name: "language", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "derivationPath", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "ensNamehash", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "envAddress", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envAddress", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBool", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBool", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes32", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes32", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envExists", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envInt", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envInt", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [ + { + name: "value", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "value", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [ + { + name: "value", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "value", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [ + { + name: "value", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [ + { + name: "value", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envString", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envString", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envUint", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envUint", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "eth_getLogs", + inputs: [ + { + name: "fromBlock", + type: "uint256", + internalType: "uint256", + }, + { + name: "toBlock", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "logs", + type: "tuple[]", + internalType: "struct VmSafe.EthGetLogs[]", + components: [ + { + name: "emitter", + type: "address", + internalType: "address", + }, + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "blockNumber", + type: "uint64", + internalType: "uint64", + }, + { + name: "transactionHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "transactionIndex", + type: "uint64", + internalType: "uint64", + }, + { + name: "logIndex", + type: "uint256", + internalType: "uint256", + }, + { + name: "removed", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "exists", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ffi", + inputs: [ + { + name: "commandInput", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "result", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "fsMetadata", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "metadata", + type: "tuple", + internalType: "struct VmSafe.FsMetadata", + components: [ + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + { + name: "length", + type: "uint256", + internalType: "uint256", + }, + { + name: "readOnly", + type: "bool", + internalType: "bool", + }, + { + name: "modified", + type: "uint256", + internalType: "uint256", + }, + { + name: "accessed", + type: "uint256", + internalType: "uint256", + }, + { + name: "created", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlobBaseFee", + inputs: [], + outputs: [ + { + name: "blobBaseFee", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockNumber", + inputs: [], + outputs: [ + { + name: "height", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockTimestamp", + inputs: [], + outputs: [ + { + name: "timestamp", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "creationBytecode", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getDeployedCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "runtimeBytecode", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getLabel", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "currentLabel", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getMappingKeyAndParentOf", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "elementSlot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "found", + type: "bool", + internalType: "bool", + }, + { + name: "key", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "parent", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getMappingLength", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "mappingSlot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "length", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getMappingSlotAt", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "mappingSlot", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "idx", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getNonce", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "nonce", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getNonce", + inputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + outputs: [ + { + name: "nonce", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getRecordedLogs", + inputs: [], + outputs: [ + { + name: "logs", + type: "tuple[]", + internalType: "struct VmSafe.Log[]", + components: [ + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "indexOf", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "isContext", + inputs: [ + { + name: "context", + type: "uint8", + internalType: "enum VmSafe.ForgeContext", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "isFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "keyExists", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "keyExistsJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "keyExistsToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "label", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "newLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "lastCallGas", + inputs: [], + outputs: [ + { + name: "gas", + type: "tuple", + internalType: "struct VmSafe.Gas", + components: [ + { + name: "gasLimit", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasTotalUsed", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasMemoryUsed", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasRefunded", + type: "int64", + internalType: "int64", + }, + { + name: "gasRemaining", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "load", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "data", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "parseAddress", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBool", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBytes", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBytes32", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseInt", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonAddress", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonAddressArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBool", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBoolArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes32", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes32Array", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytesArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonInt", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonIntArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonKeys", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "keys", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonString", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonStringArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonType", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonType", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonTypeArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonUint", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonUintArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlAddress", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlAddressArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBool", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBoolArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes32", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes32Array", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytesArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlInt", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlIntArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlKeys", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "keys", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlString", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlStringArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlUint", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlUintArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseUint", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "pauseGasMetering", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "projectRoot", + inputs: [], + outputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "prompt", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptAddress", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptSecret", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptSecretUint", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptUint", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomUint", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomUint", + inputs: [ + { + name: "min", + type: "uint256", + internalType: "uint256", + }, + { + name: "max", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "maxDepth", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "maxDepth", + type: "uint64", + internalType: "uint64", + }, + { + name: "followLinks", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readFileBinary", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readLine", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "line", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readLink", + inputs: [ + { + name: "linkPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "targetPath", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "record", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "recordLogs", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rememberKey", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "keyAddr", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "removeDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "recursive", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "removeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "replace", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "from", + type: "string", + internalType: "string", + }, + { + name: "to", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "resumeGasMetering", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpc", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "method", + type: "string", + internalType: "string", + }, + { + name: "params", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpc", + inputs: [ + { + name: "method", + type: "string", + internalType: "string", + }, + { + name: "params", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpcUrl", + inputs: [ + { + name: "rpcAlias", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "rpcUrlStructs", + inputs: [], + outputs: [ + { + name: "urls", + type: "tuple[]", + internalType: "struct VmSafe.Rpc[]", + components: [ + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "url", + type: "string", + internalType: "string", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "rpcUrls", + inputs: [], + outputs: [ + { + name: "urls", + type: "string[2][]", + internalType: "string[2][]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "serializeAddress", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeAddress", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBool", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBool", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes32", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes32", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeInt", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeInt", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeJson", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeJsonType", + inputs: [ + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "serializeJsonType", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeString", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeString", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUint", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUint", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUintToHex", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setEnv", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "signP256", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "sleep", + inputs: [ + { + name: "duration", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "split", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "delimiter", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "outputs", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "startBroadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startBroadcast", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startBroadcast", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startMappingRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startStateDiffRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopAndReturnStateDiff", + inputs: [], + outputs: [ + { + name: "accountAccesses", + type: "tuple[]", + internalType: "struct VmSafe.AccountAccess[]", + components: [ + { + name: "chainInfo", + type: "tuple", + internalType: "struct VmSafe.ChainInfo", + components: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "kind", + type: "uint8", + internalType: "enum VmSafe.AccountAccessKind", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "accessor", + type: "address", + internalType: "address", + }, + { + name: "initialized", + type: "bool", + internalType: "bool", + }, + { + name: "oldBalance", + type: "uint256", + internalType: "uint256", + }, + { + name: "newBalance", + type: "uint256", + internalType: "uint256", + }, + { + name: "deployedCode", + type: "bytes", + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "reverted", + type: "bool", + internalType: "bool", + }, + { + name: "storageAccesses", + type: "tuple[]", + internalType: "struct VmSafe.StorageAccess[]", + components: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "isWrite", + type: "bool", + internalType: "bool", + }, + { + name: "previousValue", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "newValue", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "reverted", + type: "bool", + internalType: "bool", + }, + ], + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopBroadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopMappingRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "toBase64", + inputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64URL", + inputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64URL", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toLowercase", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toUppercase", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "trim", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "tryFfi", + inputs: [ + { + name: "commandInput", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "result", + type: "tuple", + internalType: "struct VmSafe.FfiResult", + components: [ + { + name: "exitCode", + type: "int32", + internalType: "int32", + }, + { + name: "stdout", + type: "bytes", + internalType: "bytes", + }, + { + name: "stderr", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "unixTime", + inputs: [], + outputs: [ + { + name: "milliseconds", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeFileBinary", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeLine", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeToml", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeToml", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class VmSafe__factory { + static readonly abi = _abi; + static createInterface(): VmSafeInterface { + return new Interface(_abi) as VmSafeInterface; + } + static connect(address: string, runner?: ContractRunner | null): VmSafe { + return new Contract(address, _abi, runner) as unknown as VmSafe; + } +} diff --git a/v2/typechain-types/factories/Vm.sol/Vm__factory.ts b/v2/typechain-types/factories/Vm.sol/Vm__factory.ts new file mode 100644 index 00000000..722aee90 --- /dev/null +++ b/v2/typechain-types/factories/Vm.sol/Vm__factory.ts @@ -0,0 +1,8965 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Vm, VmInterface } from "../../Vm.sol/Vm"; + +const _abi = [ + { + type: "function", + name: "accesses", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "readSlots", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "writeSlots", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "activeFork", + inputs: [], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "addr", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "keyAddr", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "allowCheatcodes", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbs", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqAbsDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRel", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertApproxEqRelDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "maxPercentDelta", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertFalse", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertFalse", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertGtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLe", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLeDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLt", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertLtDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool", + internalType: "bool", + }, + { + name: "right", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "right", + type: "bool[]", + internalType: "bool[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address[]", + internalType: "address[]", + }, + { + name: "right", + type: "address[]", + internalType: "address[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string", + internalType: "string", + }, + { + name: "right", + type: "string", + internalType: "string", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes", + internalType: "bytes", + }, + { + name: "right", + type: "bytes", + internalType: "bytes", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "right", + type: "uint256[]", + internalType: "uint256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "address", + internalType: "address", + }, + { + name: "right", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "right", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "right", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "string[]", + internalType: "string[]", + }, + { + name: "right", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "right", + type: "int256[]", + internalType: "int256[]", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "bytes[]", + internalType: "bytes[]", + }, + { + name: "right", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEq", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "int256", + internalType: "int256", + }, + { + name: "right", + type: "int256", + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertNotEqDecimal", + inputs: [ + { + name: "left", + type: "uint256", + internalType: "uint256", + }, + { + name: "right", + type: "uint256", + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + internalType: "uint256", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertTrue", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assertTrue", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + { + name: "error", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "assume", + inputs: [ + { + name: "condition", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "pure", + }, + { + type: "function", + name: "blobBaseFee", + inputs: [ + { + name: "newBlobBaseFee", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "blobhashes", + inputs: [ + { + name: "hashes", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "breakpoint", + inputs: [ + { + name: "char", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "breakpoint", + inputs: [ + { + name: "char", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "broadcast", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "chainId", + inputs: [ + { + name: "newChainId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "clearMockedCalls", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "closeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "coinbase", + inputs: [ + { + name: "newCoinbase", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "computeCreate2Address", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "initCodeHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "computeCreate2Address", + inputs: [ + { + name: "salt", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "initCodeHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "deployer", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "computeCreateAddress", + inputs: [ + { + name: "deployer", + type: "address", + internalType: "address", + }, + { + name: "nonce", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "copyFile", + inputs: [ + { + name: "from", + type: "string", + internalType: "string", + }, + { + name: "to", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "copied", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "recursive", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createSelectFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createSelectFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createSelectFork", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "walletLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "createWallet", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "walletLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deal", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "newBalance", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deleteSnapshot", + inputs: [ + { + name: "snapshotId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deleteSnapshots", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deployCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + { + name: "constructorArgs", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "deployedAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deployCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "deployedAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "derivationPath", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + { + name: "language", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + { + name: "language", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "deriveKey", + inputs: [ + { + name: "mnemonic", + type: "string", + internalType: "string", + }, + { + name: "derivationPath", + type: "string", + internalType: "string", + }, + { + name: "index", + type: "uint32", + internalType: "uint32", + }, + ], + outputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "difficulty", + inputs: [ + { + name: "newDifficulty", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "dumpState", + inputs: [ + { + name: "pathToStateJson", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ensNamehash", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "envAddress", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envAddress", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBool", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBool", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes32", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envBytes32", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envExists", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envInt", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envInt", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [ + { + name: "value", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "value", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [ + { + name: "value", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "value", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [ + { + name: "value", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envOr", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + { + name: "defaultValue", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [ + { + name: "value", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envString", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envString", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envUint", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "envUint", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "delim", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "value", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "etch", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "newRuntimeBytecode", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "eth_getLogs", + inputs: [ + { + name: "fromBlock", + type: "uint256", + internalType: "uint256", + }, + { + name: "toBlock", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "logs", + type: "tuple[]", + internalType: "struct VmSafe.EthGetLogs[]", + components: [ + { + name: "emitter", + type: "address", + internalType: "address", + }, + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "blockNumber", + type: "uint64", + internalType: "uint64", + }, + { + name: "transactionHash", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "transactionIndex", + type: "uint64", + internalType: "uint64", + }, + { + name: "logIndex", + type: "uint256", + internalType: "uint256", + }, + { + name: "removed", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "exists", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "gas", + type: "uint64", + internalType: "uint64", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "gas", + type: "uint64", + internalType: "uint64", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "count", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "count", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "count", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCallMinGas", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "minGas", + type: "uint64", + internalType: "uint64", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectCallMinGas", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "minGas", + type: "uint64", + internalType: "uint64", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "count", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmit", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmit", + inputs: [ + { + name: "checkTopic1", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic2", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic3", + type: "bool", + internalType: "bool", + }, + { + name: "checkData", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmit", + inputs: [ + { + name: "checkTopic1", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic2", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic3", + type: "bool", + internalType: "bool", + }, + { + name: "checkData", + type: "bool", + internalType: "bool", + }, + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmit", + inputs: [ + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmitAnonymous", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmitAnonymous", + inputs: [ + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmitAnonymous", + inputs: [ + { + name: "checkTopic0", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic1", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic2", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic3", + type: "bool", + internalType: "bool", + }, + { + name: "checkData", + type: "bool", + internalType: "bool", + }, + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectEmitAnonymous", + inputs: [ + { + name: "checkTopic0", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic1", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic2", + type: "bool", + internalType: "bool", + }, + { + name: "checkTopic3", + type: "bool", + internalType: "bool", + }, + { + name: "checkData", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectRevert", + inputs: [ + { + name: "revertData", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectRevert", + inputs: [ + { + name: "revertData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectRevert", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectSafeMemory", + inputs: [ + { + name: "min", + type: "uint64", + internalType: "uint64", + }, + { + name: "max", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "expectSafeMemoryCall", + inputs: [ + { + name: "min", + type: "uint64", + internalType: "uint64", + }, + { + name: "max", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "fee", + inputs: [ + { + name: "newBasefee", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "ffi", + inputs: [ + { + name: "commandInput", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "result", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "fsMetadata", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "metadata", + type: "tuple", + internalType: "struct VmSafe.FsMetadata", + components: [ + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + { + name: "length", + type: "uint256", + internalType: "uint256", + }, + { + name: "readOnly", + type: "bool", + internalType: "bool", + }, + { + name: "modified", + type: "uint256", + internalType: "uint256", + }, + { + name: "accessed", + type: "uint256", + internalType: "uint256", + }, + { + name: "created", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlobBaseFee", + inputs: [], + outputs: [ + { + name: "blobBaseFee", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlobhashes", + inputs: [], + outputs: [ + { + name: "hashes", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockNumber", + inputs: [], + outputs: [ + { + name: "height", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getBlockTimestamp", + inputs: [], + outputs: [ + { + name: "timestamp", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "creationBytecode", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getDeployedCode", + inputs: [ + { + name: "artifactPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "runtimeBytecode", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getLabel", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "currentLabel", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getMappingKeyAndParentOf", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "elementSlot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "found", + type: "bool", + internalType: "bool", + }, + { + name: "key", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "parent", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getMappingLength", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "mappingSlot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "length", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getMappingSlotAt", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "mappingSlot", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "idx", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getNonce", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "nonce", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getNonce", + inputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + ], + outputs: [ + { + name: "nonce", + type: "uint64", + internalType: "uint64", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "getRecordedLogs", + inputs: [], + outputs: [ + { + name: "logs", + type: "tuple[]", + internalType: "struct VmSafe.Log[]", + components: [ + { + name: "topics", + type: "bytes32[]", + internalType: "bytes32[]", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "emitter", + type: "address", + internalType: "address", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "indexOf", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "isContext", + inputs: [ + { + name: "context", + type: "uint8", + internalType: "enum VmSafe.ForgeContext", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "isDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "isFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "result", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "isPersistent", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "persistent", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "keyExists", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "keyExistsJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "keyExistsToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "label", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "newLabel", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "lastCallGas", + inputs: [], + outputs: [ + { + name: "gas", + type: "tuple", + internalType: "struct VmSafe.Gas", + components: [ + { + name: "gasLimit", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasTotalUsed", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasMemoryUsed", + type: "uint64", + internalType: "uint64", + }, + { + name: "gasRefunded", + type: "int64", + internalType: "int64", + }, + { + name: "gasRemaining", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "load", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "data", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "loadAllocs", + inputs: [ + { + name: "pathToAllocsJson", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "makePersistent", + inputs: [ + { + name: "accounts", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "makePersistent", + inputs: [ + { + name: "account0", + type: "address", + internalType: "address", + }, + { + name: "account1", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "makePersistent", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "makePersistent", + inputs: [ + { + name: "account0", + type: "address", + internalType: "address", + }, + { + name: "account1", + type: "address", + internalType: "address", + }, + { + name: "account2", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mockCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mockCall", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "returnData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mockCallRevert", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "msgValue", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "revertData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mockCallRevert", + inputs: [ + { + name: "callee", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "revertData", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "parseAddress", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBool", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBytes", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseBytes32", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseInt", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonAddress", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonAddressArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBool", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBoolArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes32", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytes32Array", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonBytesArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonInt", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonIntArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonKeys", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "keys", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonString", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonStringArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonType", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonType", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonTypeArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonUint", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseJsonUintArray", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseToml", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "abiEncodedData", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlAddress", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlAddressArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBool", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBoolArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bool[]", + internalType: "bool[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes32", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytes32Array", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlBytesArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlInt", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256", + internalType: "int256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlIntArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "int256[]", + internalType: "int256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlKeys", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "keys", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlString", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlStringArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlUint", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseTomlUintArray", + inputs: [ + { + name: "toml", + type: "string", + internalType: "string", + }, + { + name: "key", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "parseUint", + inputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "parsedValue", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "pauseGasMetering", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "prank", + inputs: [ + { + name: "msgSender", + type: "address", + internalType: "address", + }, + { + name: "txOrigin", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "prank", + inputs: [ + { + name: "msgSender", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "prevrandao", + inputs: [ + { + name: "newPrevrandao", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "prevrandao", + inputs: [ + { + name: "newPrevrandao", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "projectRoot", + inputs: [], + outputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "prompt", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptAddress", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptSecret", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptSecretUint", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "promptUint", + inputs: [ + { + name: "promptText", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomUint", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "randomUint", + inputs: [ + { + name: "min", + type: "uint256", + internalType: "uint256", + }, + { + name: "max", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "readCallers", + inputs: [], + outputs: [ + { + name: "callerMode", + type: "uint8", + internalType: "enum VmSafe.CallerMode", + }, + { + name: "msgSender", + type: "address", + internalType: "address", + }, + { + name: "txOrigin", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "maxDepth", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "maxDepth", + type: "uint64", + internalType: "uint64", + }, + { + name: "followLinks", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "entries", + type: "tuple[]", + internalType: "struct VmSafe.DirEntry[]", + components: [ + { + name: "errorMessage", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + { + name: "isDir", + type: "bool", + internalType: "bool", + }, + { + name: "isSymlink", + type: "bool", + internalType: "bool", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readFileBinary", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readLine", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "line", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "readLink", + inputs: [ + { + name: "linkPath", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "targetPath", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "record", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "recordLogs", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rememberKey", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "keyAddr", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "removeDir", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "recursive", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "removeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "replace", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "from", + type: "string", + internalType: "string", + }, + { + name: "to", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "resetNonce", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "resumeGasMetering", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertTo", + inputs: [ + { + name: "snapshotId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revertToAndDelete", + inputs: [ + { + name: "snapshotId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "success", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokePersistent", + inputs: [ + { + name: "accounts", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokePersistent", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "roll", + inputs: [ + { + name: "newHeight", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rollFork", + inputs: [ + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rollFork", + inputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rollFork", + inputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rollFork", + inputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpc", + inputs: [ + { + name: "urlOrAlias", + type: "string", + internalType: "string", + }, + { + name: "method", + type: "string", + internalType: "string", + }, + { + name: "params", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpc", + inputs: [ + { + name: "method", + type: "string", + internalType: "string", + }, + { + name: "params", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "rpcUrl", + inputs: [ + { + name: "rpcAlias", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "rpcUrlStructs", + inputs: [], + outputs: [ + { + name: "urls", + type: "tuple[]", + internalType: "struct VmSafe.Rpc[]", + components: [ + { + name: "key", + type: "string", + internalType: "string", + }, + { + name: "url", + type: "string", + internalType: "string", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "rpcUrls", + inputs: [], + outputs: [ + { + name: "urls", + type: "string[2][]", + internalType: "string[2][]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "selectFork", + inputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeAddress", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "address[]", + internalType: "address[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeAddress", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBool", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bool[]", + internalType: "bool[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBool", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bytes[]", + internalType: "bytes[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes32", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "bytes32[]", + internalType: "bytes32[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeBytes32", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeInt", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeInt", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "int256[]", + internalType: "int256[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeJson", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeJsonType", + inputs: [ + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "serializeJsonType", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "typeDescription", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeString", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeString", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUint", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUint", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "values", + type: "uint256[]", + internalType: "uint256[]", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "serializeUintToHex", + inputs: [ + { + name: "objectKey", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setBlockhash", + inputs: [ + { + name: "blockNumber", + type: "uint256", + internalType: "uint256", + }, + { + name: "blockHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setEnv", + inputs: [ + { + name: "name", + type: "string", + internalType: "string", + }, + { + name: "value", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setNonce", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "newNonce", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setNonceUnsafe", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "newNonce", + type: "uint64", + internalType: "uint64", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "wallet", + type: "tuple", + internalType: "struct VmSafe.Wallet", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "publicKeyX", + type: "uint256", + internalType: "uint256", + }, + { + name: "publicKeyY", + type: "uint256", + internalType: "uint256", + }, + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sign", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "v", + type: "uint8", + internalType: "uint8", + }, + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "signP256", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + { + name: "digest", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "r", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "s", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "skip", + inputs: [ + { + name: "skipTest", + type: "bool", + internalType: "bool", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "sleep", + inputs: [ + { + name: "duration", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "snapshot", + inputs: [], + outputs: [ + { + name: "snapshotId", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "split", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + { + name: "delimiter", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "outputs", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "startBroadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startBroadcast", + inputs: [ + { + name: "signer", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startBroadcast", + inputs: [ + { + name: "privateKey", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startMappingRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startPrank", + inputs: [ + { + name: "msgSender", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startPrank", + inputs: [ + { + name: "msgSender", + type: "address", + internalType: "address", + }, + { + name: "txOrigin", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "startStateDiffRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopAndReturnStateDiff", + inputs: [], + outputs: [ + { + name: "accountAccesses", + type: "tuple[]", + internalType: "struct VmSafe.AccountAccess[]", + components: [ + { + name: "chainInfo", + type: "tuple", + internalType: "struct VmSafe.ChainInfo", + components: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "kind", + type: "uint8", + internalType: "enum VmSafe.AccountAccessKind", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "accessor", + type: "address", + internalType: "address", + }, + { + name: "initialized", + type: "bool", + internalType: "bool", + }, + { + name: "oldBalance", + type: "uint256", + internalType: "uint256", + }, + { + name: "newBalance", + type: "uint256", + internalType: "uint256", + }, + { + name: "deployedCode", + type: "bytes", + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "reverted", + type: "bool", + internalType: "bool", + }, + { + name: "storageAccesses", + type: "tuple[]", + internalType: "struct VmSafe.StorageAccess[]", + components: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "isWrite", + type: "bool", + internalType: "bool", + }, + { + name: "previousValue", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "newValue", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "reverted", + type: "bool", + internalType: "bool", + }, + ], + }, + { + name: "depth", + type: "uint64", + internalType: "uint64", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopBroadcast", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopExpectSafeMemory", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopMappingRecording", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "stopPrank", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "store", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "slot", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "toBase64", + inputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64URL", + inputs: [ + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toBase64URL", + inputs: [ + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toLowercase", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bool", + internalType: "bool", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "int256", + internalType: "int256", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toString", + inputs: [ + { + name: "value", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "stringifiedValue", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "toUppercase", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "transact", + inputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transact", + inputs: [ + { + name: "txHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "trim", + inputs: [ + { + name: "input", + type: "string", + internalType: "string", + }, + ], + outputs: [ + { + name: "output", + type: "string", + internalType: "string", + }, + ], + stateMutability: "pure", + }, + { + type: "function", + name: "tryFfi", + inputs: [ + { + name: "commandInput", + type: "string[]", + internalType: "string[]", + }, + ], + outputs: [ + { + name: "result", + type: "tuple", + internalType: "struct VmSafe.FfiResult", + components: [ + { + name: "exitCode", + type: "int32", + internalType: "int32", + }, + { + name: "stdout", + type: "bytes", + internalType: "bytes", + }, + { + name: "stderr", + type: "bytes", + internalType: "bytes", + }, + ], + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "txGasPrice", + inputs: [ + { + name: "newGasPrice", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "unixTime", + inputs: [], + outputs: [ + { + name: "milliseconds", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "warp", + inputs: [ + { + name: "newTimestamp", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeFile", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeFileBinary", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeJson", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeLine", + inputs: [ + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "data", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeToml", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + { + name: "valueKey", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "writeToml", + inputs: [ + { + name: "json", + type: "string", + internalType: "string", + }, + { + name: "path", + type: "string", + internalType: "string", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class Vm__factory { + static readonly abi = _abi; + static createInterface(): VmInterface { + return new Interface(_abi) as VmInterface; + } + static connect(address: string, runner?: ContractRunner | null): Vm { + return new Contract(address, _abi, runner) as unknown as Vm; + } +} diff --git a/v2/typechain-types/factories/Vm.sol/index.ts b/v2/typechain-types/factories/Vm.sol/index.ts new file mode 100644 index 00000000..fcea6ed4 --- /dev/null +++ b/v2/typechain-types/factories/Vm.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Vm__factory } from "./Vm__factory"; +export { VmSafe__factory } from "./VmSafe__factory"; diff --git a/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts b/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts new file mode 100644 index 00000000..cec30665 --- /dev/null +++ b/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts @@ -0,0 +1,345 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { WETH9, WETH9Interface } from "../../WZETA.sol/WETH9"; + +const _abi = [ + { + type: "receive", + stateMutability: "payable", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "guy", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "dst", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "src", + type: "address", + internalType: "address", + }, + { + name: "dst", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "src", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "guy", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "dst", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "src", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "dst", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "src", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +const _bytecode = + "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a0033"; + +type WETH9ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: WETH9ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class WETH9__factory extends ContractFactory { + constructor(...args: WETH9ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + WETH9 & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): WETH9__factory { + return super.connect(runner) as WETH9__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): WETH9Interface { + return new Interface(_abi) as WETH9Interface; + } + static connect(address: string, runner?: ContractRunner | null): WETH9 { + return new Contract(address, _abi, runner) as unknown as WETH9; + } +} diff --git a/v2/typechain-types/factories/WZETA.sol/index.ts b/v2/typechain-types/factories/WZETA.sol/index.ts new file mode 100644 index 00000000..63c8f2fc --- /dev/null +++ b/v2/typechain-types/factories/WZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { WETH9__factory } from "./WETH9__factory"; diff --git a/v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts b/v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts new file mode 100644 index 00000000..35134d33 --- /dev/null +++ b/v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts @@ -0,0 +1,62 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZRC20Errors, + ZRC20ErrorsInterface, +} from "../../ZRC20New.sol/ZRC20Errors"; + +const _abi = [ + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "GasFeeTransferFailed", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "LowAllowance", + inputs: [], + }, + { + type: "error", + name: "LowBalance", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, + { + type: "error", + name: "ZeroGasCoin", + inputs: [], + }, + { + type: "error", + name: "ZeroGasPrice", + inputs: [], + }, +] as const; + +export class ZRC20Errors__factory { + static readonly abi = _abi; + static createInterface(): ZRC20ErrorsInterface { + return new Interface(_abi) as ZRC20ErrorsInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZRC20Errors { + return new Contract(address, _abi, runner) as unknown as ZRC20Errors; + } +} diff --git a/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts b/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts new file mode 100644 index 00000000..26fd96a6 --- /dev/null +++ b/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts @@ -0,0 +1,729 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + BigNumberish, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { ZRC20New, ZRC20NewInterface } from "../../ZRC20New.sol/ZRC20New"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "name_", + type: "string", + internalType: "string", + }, + { + name: "symbol_", + type: "string", + internalType: "string", + }, + { + name: "decimals_", + type: "uint8", + internalType: "uint8", + }, + { + name: "chainid_", + type: "uint256", + internalType: "uint256", + }, + { + name: "coinType_", + type: "uint8", + internalType: "enum CoinType", + }, + { + name: "gasLimit_", + type: "uint256", + internalType: "uint256", + }, + { + name: "systemContractAddress_", + type: "address", + internalType: "address", + }, + { + name: "gatewayContractAddress_", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "CHAIN_ID", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "COIN_TYPE", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum CoinType", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "FUNGIBLE_MODULE_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "GAS_LIMIT", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "GATEWAY_CONTRACT_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PROTOCOL_FLAT_FEE", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "SYSTEM_CONTRACT_ADDRESS", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burn", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "recipient", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "updateGasLimit", + inputs: [ + { + name: "gasLimit", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "updateProtocolFlatFee", + inputs: [ + { + name: "protocolFlatFee", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "updateSystemContractAddress", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "bytes", + internalType: "bytes", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawGasFee", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "from", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedGasLimit", + inputs: [ + { + name: "gasLimit", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedProtocolFlatFee", + inputs: [ + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "UpdatedSystemContract", + inputs: [ + { + name: "systemContract", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "gasFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "protocolFlatFee", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "CallerIsNotFungibleModule", + inputs: [], + }, + { + type: "error", + name: "GasFeeTransferFailed", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "LowAllowance", + inputs: [], + }, + { + type: "error", + name: "LowBalance", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, + { + type: "error", + name: "ZeroGasCoin", + inputs: [], + }, + { + type: "error", + name: "ZeroGasPrice", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033"; + +type ZRC20NewConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ZRC20NewConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ZRC20New__factory extends ContractFactory { + constructor(...args: ZRC20NewConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + name_: string, + symbol_: string, + decimals_: BigNumberish, + chainid_: BigNumberish, + coinType_: BigNumberish, + gasLimit_: BigNumberish, + systemContractAddress_: AddressLike, + gatewayContractAddress_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + name_, + symbol_, + decimals_, + chainid_, + coinType_, + gasLimit_, + systemContractAddress_, + gatewayContractAddress_, + overrides || {} + ); + } + override deploy( + name_: string, + symbol_: string, + decimals_: BigNumberish, + chainid_: BigNumberish, + coinType_: BigNumberish, + gasLimit_: BigNumberish, + systemContractAddress_: AddressLike, + gatewayContractAddress_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + name_, + symbol_, + decimals_, + chainid_, + coinType_, + gasLimit_, + systemContractAddress_, + gatewayContractAddress_, + overrides || {} + ) as Promise< + ZRC20New & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ZRC20New__factory { + return super.connect(runner) as ZRC20New__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ZRC20NewInterface { + return new Interface(_abi) as ZRC20NewInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZRC20New { + return new Contract(address, _abi, runner) as unknown as ZRC20New; + } +} diff --git a/v2/typechain-types/factories/ZRC20New.sol/index.ts b/v2/typechain-types/factories/ZRC20New.sol/index.ts new file mode 100644 index 00000000..7e4b987c --- /dev/null +++ b/v2/typechain-types/factories/ZRC20New.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ZRC20Errors__factory } from "./ZRC20Errors__factory"; +export { ZRC20New__factory } from "./ZRC20New__factory"; diff --git a/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaErrors__factory.ts b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaErrors__factory.ts new file mode 100644 index 00000000..5b6671d8 --- /dev/null +++ b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaErrors__factory.ts @@ -0,0 +1,76 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZetaErrors, + ZetaErrorsInterface, +} from "../../Zeta.non-eth.sol/ZetaErrors"; + +const _abi = [ + { + type: "error", + name: "CallerIsNotConnector", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTss", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTssOrUpdater", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTssUpdater", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InvalidAddress", + inputs: [], + }, + { + type: "error", + name: "ZetaTransferError", + inputs: [], + }, +] as const; + +export class ZetaErrors__factory { + static readonly abi = _abi; + static createInterface(): ZetaErrorsInterface { + return new Interface(_abi) as ZetaErrorsInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZetaErrors { + return new Contract(address, _abi, runner) as unknown as ZetaErrors; + } +} diff --git a/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory.ts b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory.ts new file mode 100644 index 00000000..d16d94a6 --- /dev/null +++ b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory.ts @@ -0,0 +1,253 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZetaNonEthInterface, + ZetaNonEthInterfaceInterface, +} from "../../Zeta.non-eth.sol/ZetaNonEthInterface"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burnFrom", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "mint", + inputs: [ + { + name: "mintee", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class ZetaNonEthInterface__factory { + static readonly abi = _abi; + static createInterface(): ZetaNonEthInterfaceInterface { + return new Interface(_abi) as ZetaNonEthInterfaceInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ZetaNonEthInterface { + return new Contract( + address, + _abi, + runner + ) as unknown as ZetaNonEthInterface; + } +} diff --git a/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts new file mode 100644 index 00000000..f1bddbec --- /dev/null +++ b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -0,0 +1,680 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { + ZetaNonEth, + ZetaNonEthInterface, +} from "../../Zeta.non-eth.sol/ZetaNonEth"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "tssAddress_", + type: "address", + internalType: "address", + }, + { + name: "tssAddressUpdater_", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "burn", + inputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "burnFrom", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "connectorAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "decimals", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "uint8", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "mint", + inputs: [ + { + name: "mintee", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "name", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceTssAddressUpdater", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "symbol", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "tssAddressUpdater", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "updateTssAndConnectorAddresses", + inputs: [ + { + name: "tssAddress_", + type: "address", + internalType: "address", + }, + { + name: "connectorAddress_", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Burnt", + inputs: [ + { + name: "burnee", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "ConnectorAddressUpdated", + inputs: [ + { + name: "callerAddress", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newConnectorAddress", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Minted", + inputs: [ + { + name: "mintee", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TSSAddressUpdated", + inputs: [ + { + name: "callerAddress", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newTssAddress", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "TSSAddressUpdaterUpdated", + inputs: [ + { + name: "callerAddress", + type: "address", + indexed: false, + internalType: "address", + }, + { + name: "newTssUpdaterAddress", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "CallerIsNotConnector", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTss", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTssOrUpdater", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "CallerIsNotTssUpdater", + inputs: [ + { + name: "caller", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "allowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSpender", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "InvalidAddress", + inputs: [], + }, + { + type: "error", + name: "ZetaTransferError", + inputs: [], + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033"; + +type ZetaNonEthConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ZetaNonEthConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ZetaNonEth__factory extends ContractFactory { + constructor(...args: ZetaNonEthConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + tssAddress_: AddressLike, + tssAddressUpdater_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + tssAddress_, + tssAddressUpdater_, + overrides || {} + ); + } + override deploy( + tssAddress_: AddressLike, + tssAddressUpdater_: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + tssAddress_, + tssAddressUpdater_, + overrides || {} + ) as Promise< + ZetaNonEth & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): ZetaNonEth__factory { + return super.connect(runner) as ZetaNonEth__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ZetaNonEthInterface { + return new Interface(_abi) as ZetaNonEthInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZetaNonEth { + return new Contract(address, _abi, runner) as unknown as ZetaNonEth; + } +} diff --git a/v2/typechain-types/factories/Zeta.non-eth.sol/index.ts b/v2/typechain-types/factories/Zeta.non-eth.sol/index.ts new file mode 100644 index 00000000..6e668c39 --- /dev/null +++ b/v2/typechain-types/factories/Zeta.non-eth.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ZetaErrors__factory } from "./ZetaErrors__factory"; +export { ZetaNonEth__factory } from "./ZetaNonEth__factory"; +export { ZetaNonEthInterface__factory } from "./ZetaNonEthInterface__factory"; diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts new file mode 100644 index 00000000..e5f4dfce --- /dev/null +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -0,0 +1,370 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + ZetaConnectorNative, + ZetaConnectorNativeInterface, +} from "../ZetaConnectorNative"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_gateway", + type: "address", + internalType: "address", + }, + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IGatewayEVM", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveTokens", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AddressEmptyCode", + inputs: [ + { + name: "target", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "AddressInsufficientBalance", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "FailedInnerCall", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "SafeERC20FailedOperation", + inputs: [ + { + name: "token", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033"; + +type ZetaConnectorNativeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ZetaConnectorNativeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ZetaConnectorNative__factory extends ContractFactory { + constructor(...args: ZetaConnectorNativeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _gateway: AddressLike, + _zetaToken: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ); + } + override deploy( + _gateway: AddressLike, + _zetaToken: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ) as Promise< + ZetaConnectorNative & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): ZetaConnectorNative__factory { + return super.connect(runner) as ZetaConnectorNative__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ZetaConnectorNativeInterface { + return new Interface(_abi) as ZetaConnectorNativeInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ZetaConnectorNative { + return new Contract( + address, + _abi, + runner + ) as unknown as ZetaConnectorNative; + } +} diff --git a/v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts b/v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts new file mode 100644 index 00000000..3756d6aa --- /dev/null +++ b/v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts @@ -0,0 +1,244 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZetaConnectorNewBase, + ZetaConnectorNewBaseInterface, +} from "../ZetaConnectorNewBase"; + +const _abi = [ + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IGatewayEVM", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveTokens", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +export class ZetaConnectorNewBase__factory { + static readonly abi = _abi; + static createInterface(): ZetaConnectorNewBaseInterface { + return new Interface(_abi) as ZetaConnectorNewBaseInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ZetaConnectorNewBase { + return new Contract( + address, + _abi, + runner + ) as unknown as ZetaConnectorNewBase; + } +} diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts new file mode 100644 index 00000000..42566148 --- /dev/null +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -0,0 +1,376 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { + Signer, + AddressLike, + ContractDeployTransaction, + ContractRunner, +} from "ethers"; +import type { NonPayableOverrides } from "../common"; +import type { + ZetaConnectorNonNative, + ZetaConnectorNonNativeInterface, +} from "../ZetaConnectorNonNative"; + +const _abi = [ + { + type: "constructor", + inputs: [ + { + name: "_gateway", + type: "address", + internalType: "address", + }, + { + name: "_zetaToken", + type: "address", + internalType: "address", + }, + { + name: "_tssAddress", + type: "address", + internalType: "address", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "gateway", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "contract IGatewayEVM", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "maxSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "receiveTokens", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "setMaxSupply", + inputs: [ + { + name: "_maxSupply", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "tssAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + { + name: "internalSendHash", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "zetaToken", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "MaxSupplyUpdated", + inputs: [ + { + name: "maxSupply", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdraw", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndCall", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "WithdrawAndRevert", + inputs: [ + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "amount", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "data", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "ExceedsMaxSupply", + inputs: [], + }, + { + type: "error", + name: "InvalidSender", + inputs: [], + }, + { + type: "error", + name: "ReentrancyGuardReentrantCall", + inputs: [], + }, + { + type: "error", + name: "ZeroAddress", + inputs: [], + }, +] as const; + +const _bytecode = + "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033"; + +type ZetaConnectorNonNativeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ZetaConnectorNonNativeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ZetaConnectorNonNative__factory extends ContractFactory { + constructor(...args: ZetaConnectorNonNativeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + _gateway: AddressLike, + _zetaToken: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ); + } + override deploy( + _gateway: AddressLike, + _zetaToken: AddressLike, + _tssAddress: AddressLike, + overrides?: NonPayableOverrides & { from?: string } + ) { + return super.deploy( + _gateway, + _zetaToken, + _tssAddress, + overrides || {} + ) as Promise< + ZetaConnectorNonNative & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect( + runner: ContractRunner | null + ): ZetaConnectorNonNative__factory { + return super.connect(runner) as ZetaConnectorNonNative__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ZetaConnectorNonNativeInterface { + return new Interface(_abi) as ZetaConnectorNonNativeInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ZetaConnectorNonNative { + return new Contract( + address, + _abi, + runner + ) as unknown as ZetaConnectorNonNative; + } +} diff --git a/v2/typechain-types/factories/draft-IERC1822.sol/IERC1822Proxiable__factory.ts b/v2/typechain-types/factories/draft-IERC1822.sol/IERC1822Proxiable__factory.ts new file mode 100644 index 00000000..3a944ae4 --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC1822.sol/IERC1822Proxiable__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC1822Proxiable, + IERC1822ProxiableInterface, +} from "../../draft-IERC1822.sol/IERC1822Proxiable"; + +const _abi = [ + { + type: "function", + name: "proxiableUUID", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IERC1822Proxiable__factory { + static readonly abi = _abi; + static createInterface(): IERC1822ProxiableInterface { + return new Interface(_abi) as IERC1822ProxiableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC1822Proxiable { + return new Contract(address, _abi, runner) as unknown as IERC1822Proxiable; + } +} diff --git a/v2/typechain-types/factories/draft-IERC1822.sol/index.ts b/v2/typechain-types/factories/draft-IERC1822.sol/index.ts new file mode 100644 index 00000000..ecca1339 --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC1822.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC1822Proxiable__factory } from "./IERC1822Proxiable__factory"; diff --git a/v2/typechain-types/factories/draft-IERC6093.sol/IERC1155Errors__factory.ts b/v2/typechain-types/factories/draft-IERC6093.sol/IERC1155Errors__factory.ts new file mode 100644 index 00000000..981b3528 --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC6093.sol/IERC1155Errors__factory.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC1155Errors, + IERC1155ErrorsInterface, +} from "../../draft-IERC6093.sol/IERC1155Errors"; + +const _abi = [ + { + type: "error", + name: "ERC1155InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + { + name: "tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC1155InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1155InvalidArrayLength", + inputs: [ + { + name: "idsLength", + type: "uint256", + internalType: "uint256", + }, + { + name: "valuesLength", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC1155InvalidOperator", + inputs: [ + { + name: "operator", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1155InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1155InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC1155MissingApprovalForAll", + inputs: [ + { + name: "operator", + type: "address", + internalType: "address", + }, + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class IERC1155Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC1155ErrorsInterface { + return new Interface(_abi) as IERC1155ErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC1155Errors { + return new Contract(address, _abi, runner) as unknown as IERC1155Errors; + } +} diff --git a/v2/typechain-types/factories/draft-IERC6093.sol/IERC20Errors__factory.ts b/v2/typechain-types/factories/draft-IERC6093.sol/IERC20Errors__factory.ts new file mode 100644 index 00000000..f707f8a1 --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC6093.sol/IERC20Errors__factory.ts @@ -0,0 +1,111 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC20Errors, + IERC20ErrorsInterface, +} from "../../draft-IERC6093.sol/IERC20Errors"; + +const _abi = [ + { + type: "error", + name: "ERC20InsufficientAllowance", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "allowance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InsufficientBalance", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "balance", + type: "uint256", + internalType: "uint256", + }, + { + name: "needed", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC20InvalidSpender", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + }, +] as const; + +export class IERC20Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC20ErrorsInterface { + return new Interface(_abi) as IERC20ErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC20Errors { + return new Contract(address, _abi, runner) as unknown as IERC20Errors; + } +} diff --git a/v2/typechain-types/factories/draft-IERC6093.sol/IERC721Errors__factory.ts b/v2/typechain-types/factories/draft-IERC6093.sol/IERC721Errors__factory.ts new file mode 100644 index 00000000..450c4ac0 --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC6093.sol/IERC721Errors__factory.ts @@ -0,0 +1,128 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IERC721Errors, + IERC721ErrorsInterface, +} from "../../draft-IERC6093.sol/IERC721Errors"; + +const _abi = [ + { + type: "error", + name: "ERC721IncorrectOwner", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "tokenId", + type: "uint256", + internalType: "uint256", + }, + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721InsufficientApproval", + inputs: [ + { + name: "operator", + type: "address", + internalType: "address", + }, + { + name: "tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + type: "error", + name: "ERC721InvalidApprover", + inputs: [ + { + name: "approver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721InvalidOperator", + inputs: [ + { + name: "operator", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721InvalidOwner", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721InvalidReceiver", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721InvalidSender", + inputs: [ + { + name: "sender", + type: "address", + internalType: "address", + }, + ], + }, + { + type: "error", + name: "ERC721NonexistentToken", + inputs: [ + { + name: "tokenId", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +export class IERC721Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC721ErrorsInterface { + return new Interface(_abi) as IERC721ErrorsInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IERC721Errors { + return new Contract(address, _abi, runner) as unknown as IERC721Errors; + } +} diff --git a/v2/typechain-types/factories/draft-IERC6093.sol/index.ts b/v2/typechain-types/factories/draft-IERC6093.sol/index.ts new file mode 100644 index 00000000..571330ea --- /dev/null +++ b/v2/typechain-types/factories/draft-IERC6093.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC1155Errors__factory } from "./IERC1155Errors__factory"; +export { IERC20Errors__factory } from "./IERC20Errors__factory"; +export { IERC721Errors__factory } from "./IERC721Errors__factory"; diff --git a/v2/typechain-types/factories/index.ts b/v2/typechain-types/factories/index.ts new file mode 100644 index 00000000..4878e50d --- /dev/null +++ b/v2/typechain-types/factories/index.ts @@ -0,0 +1,73 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as erc20 from "./ERC20"; +export * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; +export * as ierc721Sol from "./IERC721.sol"; +export * as iGatewayEvmSol from "./IGatewayEVM.sol"; +export * as iGatewayZevmSol from "./IGatewayZEVM.sol"; +export * as iReceiverEvmSol from "./IReceiverEVM.sol"; +export * as iwzetaSol from "./IWZETA.sol"; +export * as izrc20Sol from "./IZRC20.sol"; +export * as iZetaConnectorSol from "./IZetaConnector.sol"; +export * as stdErrorSol from "./StdError.sol"; +export * as stdStorageSol from "./StdStorage.sol"; +export * as systemContractSol from "./SystemContract.sol"; +export * as systemContractMockSol from "./SystemContractMock.sol"; +export * as transparentUpgradeableProxySol from "./TransparentUpgradeableProxy.sol"; +export * as vmSol from "./Vm.sol"; +export * as wzetaSol from "./WZETA.sol"; +export * as zrc20NewSol from "./ZRC20New.sol"; +export * as zetaNonEthSol from "./Zeta.non-eth.sol"; +export * as draftIerc1822Sol from "./draft-IERC1822.sol"; +export * as draftIerc6093Sol from "./draft-IERC6093.sol"; +export * as utils from "./utils"; +export * as zContractSol from "./zContract.sol"; +export { Address__factory } from "./Address__factory"; +export { BeaconProxy__factory } from "./BeaconProxy__factory"; +export { ContextUpgradeable__factory } from "./ContextUpgradeable__factory"; +export { ERC1967Proxy__factory } from "./ERC1967Proxy__factory"; +export { ERC1967Utils__factory } from "./ERC1967Utils__factory"; +export { ERC20__factory } from "./ERC20__factory"; +export { ERC20Burnable__factory } from "./ERC20Burnable__factory"; +export { ERC20CustodyNew__factory } from "./ERC20CustodyNew__factory"; +export { ERC20CustodyNewEchidnaTest__factory } from "./ERC20CustodyNewEchidnaTest__factory"; +export { GatewayEVM__factory } from "./GatewayEVM__factory"; +export { GatewayEVMEchidnaTest__factory } from "./GatewayEVMEchidnaTest__factory"; +export { GatewayEVMUpgradeTest__factory } from "./GatewayEVMUpgradeTest__factory"; +export { GatewayZEVM__factory } from "./GatewayZEVM__factory"; +export { IBeacon__factory } from "./IBeacon__factory"; +export { IERC165__factory } from "./IERC165__factory"; +export { IERC1967__factory } from "./IERC1967__factory"; +export { IERC20__factory } from "./IERC20__factory"; +export { IERC20Metadata__factory } from "./IERC20Metadata__factory"; +export { IERC20Permit__factory } from "./IERC20Permit__factory"; +export { IMulticall3__factory } from "./IMulticall3__factory"; +export { IProxyAdmin__factory } from "./IProxyAdmin__factory"; +export { ISystem__factory } from "./ISystem__factory"; +export { IUpgradeableBeacon__factory } from "./IUpgradeableBeacon__factory"; +export { IUpgradeableProxy__factory } from "./IUpgradeableProxy__factory"; +export { IZetaNonEthNew__factory } from "./IZetaNonEthNew__factory"; +export { Initializable__factory } from "./Initializable__factory"; +export { Math__factory } from "./Math__factory"; +export { MockERC20__factory } from "./MockERC20__factory"; +export { MockERC721__factory } from "./MockERC721__factory"; +export { Ownable__factory } from "./Ownable__factory"; +export { OwnableUpgradeable__factory } from "./OwnableUpgradeable__factory"; +export { Proxy__factory } from "./Proxy__factory"; +export { ProxyAdmin__factory } from "./ProxyAdmin__factory"; +export { ReceiverEVM__factory } from "./ReceiverEVM__factory"; +export { ReentrancyGuard__factory } from "./ReentrancyGuard__factory"; +export { ReentrancyGuardUpgradeable__factory } from "./ReentrancyGuardUpgradeable__factory"; +export { SafeERC20__factory } from "./SafeERC20__factory"; +export { SenderZEVM__factory } from "./SenderZEVM__factory"; +export { StdAssertions__factory } from "./StdAssertions__factory"; +export { StdInvariant__factory } from "./StdInvariant__factory"; +export { Test__factory } from "./Test__factory"; +export { TestERC20__factory } from "./TestERC20__factory"; +export { TestZContract__factory } from "./TestZContract__factory"; +export { UUPSUpgradeable__factory } from "./UUPSUpgradeable__factory"; +export { UpgradeableBeacon__factory } from "./UpgradeableBeacon__factory"; +export { ZetaConnectorNative__factory } from "./ZetaConnectorNative__factory"; +export { ZetaConnectorNewBase__factory } from "./ZetaConnectorNewBase__factory"; +export { ZetaConnectorNonNative__factory } from "./ZetaConnectorNonNative__factory"; diff --git a/v2/typechain-types/factories/interfaces/IWZeta.sol/IWETH9__factory.ts b/v2/typechain-types/factories/interfaces/IWZeta.sol/IWETH9__factory.ts new file mode 100644 index 00000000..57ec1889 --- /dev/null +++ b/v2/typechain-types/factories/interfaces/IWZeta.sol/IWETH9__factory.ts @@ -0,0 +1,263 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IWETH9, + IWETH9Interface, +} from "../../../interfaces/IWZeta.sol/IWETH9"; + +const _abi = [ + { + type: "function", + name: "allowance", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + { + name: "spender", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "approve", + inputs: [ + { + name: "spender", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "balanceOf", + inputs: [ + { + name: "owner", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "deposit", + inputs: [], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "totalSupply", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "transfer", + inputs: [ + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "transferFrom", + inputs: [ + { + name: "from", + type: "address", + internalType: "address", + }, + { + name: "to", + type: "address", + internalType: "address", + }, + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "wad", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "Approval", + inputs: [ + { + name: "owner", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "spender", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Deposit", + inputs: [ + { + name: "dst", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Transfer", + inputs: [ + { + name: "from", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "to", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "value", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Withdrawal", + inputs: [ + { + name: "src", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "wad", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, +] as const; + +export class IWETH9__factory { + static readonly abi = _abi; + static createInterface(): IWETH9Interface { + return new Interface(_abi) as IWETH9Interface; + } + static connect(address: string, runner?: ContractRunner | null): IWETH9 { + return new Contract(address, _abi, runner) as unknown as IWETH9; + } +} diff --git a/v2/typechain-types/factories/interfaces/IWZeta.sol/index.ts b/v2/typechain-types/factories/interfaces/IWZeta.sol/index.ts new file mode 100644 index 00000000..d3b0ed8d --- /dev/null +++ b/v2/typechain-types/factories/interfaces/IWZeta.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IWETH9__factory } from "./IWETH9__factory"; diff --git a/v2/typechain-types/factories/interfaces/index.ts b/v2/typechain-types/factories/interfaces/index.ts new file mode 100644 index 00000000..a5b98d0b --- /dev/null +++ b/v2/typechain-types/factories/interfaces/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as iwZetaSol from "./IWZeta.sol"; diff --git a/v2/typechain-types/factories/utils/Strings__factory.ts b/v2/typechain-types/factories/utils/Strings__factory.ts new file mode 100644 index 00000000..4c2f0040 --- /dev/null +++ b/v2/typechain-types/factories/utils/Strings__factory.ts @@ -0,0 +1,77 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Contract, + ContractFactory, + ContractTransactionResponse, + Interface, +} from "ethers"; +import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; +import type { NonPayableOverrides } from "../../common"; +import type { Strings, StringsInterface } from "../../utils/Strings"; + +const _abi = [ + { + type: "error", + name: "StringsInsufficientHexLength", + inputs: [ + { + name: "value", + type: "uint256", + internalType: "uint256", + }, + { + name: "length", + type: "uint256", + internalType: "uint256", + }, + ], + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcce55e68788eb53af38b2c11af076a07cd1e8f2cba23bcb93cbc6cafe3918ef64736f6c634300081a0033"; + +type StringsConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StringsConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Strings__factory extends ContractFactory { + constructor(...args: StringsConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override getDeployTransaction( + overrides?: NonPayableOverrides & { from?: string } + ): Promise { + return super.getDeployTransaction(overrides || {}); + } + override deploy(overrides?: NonPayableOverrides & { from?: string }) { + return super.deploy(overrides || {}) as Promise< + Strings & { + deploymentTransaction(): ContractTransactionResponse; + } + >; + } + override connect(runner: ContractRunner | null): Strings__factory { + return super.connect(runner) as Strings__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StringsInterface { + return new Interface(_abi) as StringsInterface; + } + static connect(address: string, runner?: ContractRunner | null): Strings { + return new Contract(address, _abi, runner) as unknown as Strings; + } +} diff --git a/v2/typechain-types/factories/utils/index.ts b/v2/typechain-types/factories/utils/index.ts new file mode 100644 index 00000000..ee80837b --- /dev/null +++ b/v2/typechain-types/factories/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Strings__factory } from "./Strings__factory"; diff --git a/v2/typechain-types/factories/zContract.sol/UniversalContract__factory.ts b/v2/typechain-types/factories/zContract.sol/UniversalContract__factory.ts new file mode 100644 index 00000000..48c6f7fc --- /dev/null +++ b/v2/typechain-types/factories/zContract.sol/UniversalContract__factory.ts @@ -0,0 +1,115 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + UniversalContract, + UniversalContractInterface, +} from "../../zContract.sol/UniversalContract"; + +const _abi = [ + { + type: "function", + name: "onCrossChainCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "onRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class UniversalContract__factory { + static readonly abi = _abi; + static createInterface(): UniversalContractInterface { + return new Interface(_abi) as UniversalContractInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): UniversalContract { + return new Contract(address, _abi, runner) as unknown as UniversalContract; + } +} diff --git a/v2/typechain-types/factories/zContract.sol/ZContract__factory.ts b/v2/typechain-types/factories/zContract.sol/ZContract__factory.ts new file mode 100644 index 00000000..a22e26e2 --- /dev/null +++ b/v2/typechain-types/factories/zContract.sol/ZContract__factory.ts @@ -0,0 +1,67 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ZContract, + ZContractInterface, +} from "../../zContract.sol/ZContract"; + +const _abi = [ + { + type: "function", + name: "onCrossChainCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, +] as const; + +export class ZContract__factory { + static readonly abi = _abi; + static createInterface(): ZContractInterface { + return new Interface(_abi) as ZContractInterface; + } + static connect(address: string, runner?: ContractRunner | null): ZContract { + return new Contract(address, _abi, runner) as unknown as ZContract; + } +} diff --git a/v2/typechain-types/factories/zContract.sol/index.ts b/v2/typechain-types/factories/zContract.sol/index.ts new file mode 100644 index 00000000..c297a535 --- /dev/null +++ b/v2/typechain-types/factories/zContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { UniversalContract__factory } from "./UniversalContract__factory"; +export { ZContract__factory } from "./ZContract__factory"; diff --git a/v2/typechain-types/index.ts b/v2/typechain-types/index.ts new file mode 100644 index 00000000..f04b208d --- /dev/null +++ b/v2/typechain-types/index.ts @@ -0,0 +1,227 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as erc20 from "./ERC20"; +export type { erc20 }; +import type * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; +export type { ierc20CustodyNewSol }; +import type * as ierc721Sol from "./IERC721.sol"; +export type { ierc721Sol }; +import type * as iGatewayEvmSol from "./IGatewayEVM.sol"; +export type { iGatewayEvmSol }; +import type * as iGatewayZevmSol from "./IGatewayZEVM.sol"; +export type { iGatewayZevmSol }; +import type * as iReceiverEvmSol from "./IReceiverEVM.sol"; +export type { iReceiverEvmSol }; +import type * as iwzetaSol from "./IWZETA.sol"; +export type { iwzetaSol }; +import type * as izrc20Sol from "./IZRC20.sol"; +export type { izrc20Sol }; +import type * as iZetaConnectorSol from "./IZetaConnector.sol"; +export type { iZetaConnectorSol }; +import type * as stdErrorSol from "./StdError.sol"; +export type { stdErrorSol }; +import type * as stdStorageSol from "./StdStorage.sol"; +export type { stdStorageSol }; +import type * as systemContractSol from "./SystemContract.sol"; +export type { systemContractSol }; +import type * as systemContractMockSol from "./SystemContractMock.sol"; +export type { systemContractMockSol }; +import type * as transparentUpgradeableProxySol from "./TransparentUpgradeableProxy.sol"; +export type { transparentUpgradeableProxySol }; +import type * as vmSol from "./Vm.sol"; +export type { vmSol }; +import type * as wzetaSol from "./WZETA.sol"; +export type { wzetaSol }; +import type * as zrc20NewSol from "./ZRC20New.sol"; +export type { zrc20NewSol }; +import type * as zetaNonEthSol from "./Zeta.non-eth.sol"; +export type { zetaNonEthSol }; +import type * as draftIerc1822Sol from "./draft-IERC1822.sol"; +export type { draftIerc1822Sol }; +import type * as draftIerc6093Sol from "./draft-IERC6093.sol"; +export type { draftIerc6093Sol }; +import type * as utils from "./utils"; +export type { utils }; +import type * as zContractSol from "./zContract.sol"; +export type { zContractSol }; +export type { Address } from "./Address"; +export type { BeaconProxy } from "./BeaconProxy"; +export type { ContextUpgradeable } from "./ContextUpgradeable"; +export type { ERC1967Proxy } from "./ERC1967Proxy"; +export type { ERC1967Utils } from "./ERC1967Utils"; +export type { ERC20 } from "./ERC20"; +export type { ERC20Burnable } from "./ERC20Burnable"; +export type { ERC20CustodyNew } from "./ERC20CustodyNew"; +export type { ERC20CustodyNewEchidnaTest } from "./ERC20CustodyNewEchidnaTest"; +export type { GatewayEVM } from "./GatewayEVM"; +export type { GatewayEVMEchidnaTest } from "./GatewayEVMEchidnaTest"; +export type { GatewayEVMUpgradeTest } from "./GatewayEVMUpgradeTest"; +export type { GatewayZEVM } from "./GatewayZEVM"; +export type { IBeacon } from "./IBeacon"; +export type { IERC165 } from "./IERC165"; +export type { IERC1967 } from "./IERC1967"; +export type { IERC20 } from "./IERC20"; +export type { IERC20Metadata } from "./IERC20Metadata"; +export type { IERC20Permit } from "./IERC20Permit"; +export type { IMulticall3 } from "./IMulticall3"; +export type { IProxyAdmin } from "./IProxyAdmin"; +export type { ISystem } from "./ISystem"; +export type { IUpgradeableBeacon } from "./IUpgradeableBeacon"; +export type { IUpgradeableProxy } from "./IUpgradeableProxy"; +export type { IZetaNonEthNew } from "./IZetaNonEthNew"; +export type { Initializable } from "./Initializable"; +export type { Math } from "./Math"; +export type { MockERC20 } from "./MockERC20"; +export type { MockERC721 } from "./MockERC721"; +export type { Ownable } from "./Ownable"; +export type { OwnableUpgradeable } from "./OwnableUpgradeable"; +export type { Proxy } from "./Proxy"; +export type { ProxyAdmin } from "./ProxyAdmin"; +export type { ReceiverEVM } from "./ReceiverEVM"; +export type { ReentrancyGuard } from "./ReentrancyGuard"; +export type { ReentrancyGuardUpgradeable } from "./ReentrancyGuardUpgradeable"; +export type { SafeERC20 } from "./SafeERC20"; +export type { SenderZEVM } from "./SenderZEVM"; +export type { StdAssertions } from "./StdAssertions"; +export type { StdInvariant } from "./StdInvariant"; +export type { Test } from "./Test"; +export type { TestERC20 } from "./TestERC20"; +export type { TestZContract } from "./TestZContract"; +export type { UUPSUpgradeable } from "./UUPSUpgradeable"; +export type { UpgradeableBeacon } from "./UpgradeableBeacon"; +export type { ZetaConnectorNative } from "./ZetaConnectorNative"; +export type { ZetaConnectorNewBase } from "./ZetaConnectorNewBase"; +export type { ZetaConnectorNonNative } from "./ZetaConnectorNonNative"; +export * as factories from "./factories"; +export { Address__factory } from "./factories/Address__factory"; +export { BeaconProxy__factory } from "./factories/BeaconProxy__factory"; +export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; +export type { IERC1822Proxiable } from "./draft-IERC1822.sol/IERC1822Proxiable"; +export { IERC1822Proxiable__factory } from "./factories/draft-IERC1822.sol/IERC1822Proxiable__factory"; +export type { IERC1155Errors } from "./draft-IERC6093.sol/IERC1155Errors"; +export { IERC1155Errors__factory } from "./factories/draft-IERC6093.sol/IERC1155Errors__factory"; +export type { IERC20Errors } from "./draft-IERC6093.sol/IERC20Errors"; +export { IERC20Errors__factory } from "./factories/draft-IERC6093.sol/IERC20Errors__factory"; +export type { IERC721Errors } from "./draft-IERC6093.sol/IERC721Errors"; +export { IERC721Errors__factory } from "./factories/draft-IERC6093.sol/IERC721Errors__factory"; +export { ERC1967Proxy__factory } from "./factories/ERC1967Proxy__factory"; +export { ERC1967Utils__factory } from "./factories/ERC1967Utils__factory"; +export { ERC20__factory } from "./factories/ERC20__factory"; +export type { IERC20 } from "./ERC20/IERC20"; +export { IERC20__factory } from "./factories/ERC20/IERC20__factory"; +export { ERC20Burnable__factory } from "./factories/ERC20Burnable__factory"; +export { ERC20CustodyNew__factory } from "./factories/ERC20CustodyNew__factory"; +export { ERC20CustodyNewEchidnaTest__factory } from "./factories/ERC20CustodyNewEchidnaTest__factory"; +export { GatewayEVM__factory } from "./factories/GatewayEVM__factory"; +export { GatewayEVMEchidnaTest__factory } from "./factories/GatewayEVMEchidnaTest__factory"; +export { GatewayEVMUpgradeTest__factory } from "./factories/GatewayEVMUpgradeTest__factory"; +export { GatewayZEVM__factory } from "./factories/GatewayZEVM__factory"; +export { IBeacon__factory } from "./factories/IBeacon__factory"; +export { IERC165__factory } from "./factories/IERC165__factory"; +export { IERC1967__factory } from "./factories/IERC1967__factory"; +export type { IERC20CustodyNewErrors } from "./IERC20CustodyNew.sol/IERC20CustodyNewErrors"; +export { IERC20CustodyNewErrors__factory } from "./factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory"; +export type { IERC20CustodyNewEvents } from "./IERC20CustodyNew.sol/IERC20CustodyNewEvents"; +export { IERC20CustodyNewEvents__factory } from "./factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory"; +export { IERC20Metadata__factory } from "./factories/IERC20Metadata__factory"; +export { IERC20Permit__factory } from "./factories/IERC20Permit__factory"; +export type { IERC721 } from "./IERC721.sol/IERC721"; +export { IERC721__factory } from "./factories/IERC721.sol/IERC721__factory"; +export type { IERC721Enumerable } from "./IERC721.sol/IERC721Enumerable"; +export { IERC721Enumerable__factory } from "./factories/IERC721.sol/IERC721Enumerable__factory"; +export type { IERC721Metadata } from "./IERC721.sol/IERC721Metadata"; +export { IERC721Metadata__factory } from "./factories/IERC721.sol/IERC721Metadata__factory"; +export type { IERC721TokenReceiver } from "./IERC721.sol/IERC721TokenReceiver"; +export { IERC721TokenReceiver__factory } from "./factories/IERC721.sol/IERC721TokenReceiver__factory"; +export type { IGatewayEVM } from "./IGatewayEVM.sol/IGatewayEVM"; +export { IGatewayEVM__factory } from "./factories/IGatewayEVM.sol/IGatewayEVM__factory"; +export type { IGatewayEVMErrors } from "./IGatewayEVM.sol/IGatewayEVMErrors"; +export { IGatewayEVMErrors__factory } from "./factories/IGatewayEVM.sol/IGatewayEVMErrors__factory"; +export type { IGatewayEVMEvents } from "./IGatewayEVM.sol/IGatewayEVMEvents"; +export { IGatewayEVMEvents__factory } from "./factories/IGatewayEVM.sol/IGatewayEVMEvents__factory"; +export type { Revertable } from "./IGatewayEVM.sol/Revertable"; +export { Revertable__factory } from "./factories/IGatewayEVM.sol/Revertable__factory"; +export type { IGatewayZEVM } from "./IGatewayZEVM.sol/IGatewayZEVM"; +export { IGatewayZEVM__factory } from "./factories/IGatewayZEVM.sol/IGatewayZEVM__factory"; +export type { IGatewayZEVMErrors } from "./IGatewayZEVM.sol/IGatewayZEVMErrors"; +export { IGatewayZEVMErrors__factory } from "./factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory"; +export type { IGatewayZEVMEvents } from "./IGatewayZEVM.sol/IGatewayZEVMEvents"; +export { IGatewayZEVMEvents__factory } from "./factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory"; +export { IMulticall3__factory } from "./factories/IMulticall3__factory"; +export { Initializable__factory } from "./factories/Initializable__factory"; +export { IProxyAdmin__factory } from "./factories/IProxyAdmin__factory"; +export type { IReceiverEVMEvents } from "./IReceiverEVM.sol/IReceiverEVMEvents"; +export { IReceiverEVMEvents__factory } from "./factories/IReceiverEVM.sol/IReceiverEVMEvents__factory"; +export { ISystem__factory } from "./factories/ISystem__factory"; +export { IUpgradeableBeacon__factory } from "./factories/IUpgradeableBeacon__factory"; +export { IUpgradeableProxy__factory } from "./factories/IUpgradeableProxy__factory"; +export type { IWETH9 } from "./IWZETA.sol/IWETH9"; +export { IWETH9__factory } from "./factories/IWZETA.sol/IWETH9__factory"; +export type { IZetaConnectorEvents } from "./IZetaConnector.sol/IZetaConnectorEvents"; +export { IZetaConnectorEvents__factory } from "./factories/IZetaConnector.sol/IZetaConnectorEvents__factory"; +export { IZetaNonEthNew__factory } from "./factories/IZetaNonEthNew__factory"; +export type { IZRC20 } from "./IZRC20.sol/IZRC20"; +export { IZRC20__factory } from "./factories/IZRC20.sol/IZRC20__factory"; +export type { IZRC20Metadata } from "./IZRC20.sol/IZRC20Metadata"; +export { IZRC20Metadata__factory } from "./factories/IZRC20.sol/IZRC20Metadata__factory"; +export type { ZRC20Events } from "./IZRC20.sol/ZRC20Events"; +export { ZRC20Events__factory } from "./factories/IZRC20.sol/ZRC20Events__factory"; +export { Math__factory } from "./factories/Math__factory"; +export { MockERC20__factory } from "./factories/MockERC20__factory"; +export { MockERC721__factory } from "./factories/MockERC721__factory"; +export { Ownable__factory } from "./factories/Ownable__factory"; +export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; +export { Proxy__factory } from "./factories/Proxy__factory"; +export { ProxyAdmin__factory } from "./factories/ProxyAdmin__factory"; +export { ReceiverEVM__factory } from "./factories/ReceiverEVM__factory"; +export { ReentrancyGuard__factory } from "./factories/ReentrancyGuard__factory"; +export { ReentrancyGuardUpgradeable__factory } from "./factories/ReentrancyGuardUpgradeable__factory"; +export { SafeERC20__factory } from "./factories/SafeERC20__factory"; +export { SenderZEVM__factory } from "./factories/SenderZEVM__factory"; +export { StdAssertions__factory } from "./factories/StdAssertions__factory"; +export type { StdError } from "./StdError.sol/StdError"; +export { StdError__factory } from "./factories/StdError.sol/StdError__factory"; +export { StdInvariant__factory } from "./factories/StdInvariant__factory"; +export type { StdStorageSafe } from "./StdStorage.sol/StdStorageSafe"; +export { StdStorageSafe__factory } from "./factories/StdStorage.sol/StdStorageSafe__factory"; +export type { SystemContract } from "./SystemContract.sol/SystemContract"; +export { SystemContract__factory } from "./factories/SystemContract.sol/SystemContract__factory"; +export type { SystemContractErrors } from "./SystemContract.sol/SystemContractErrors"; +export { SystemContractErrors__factory } from "./factories/SystemContract.sol/SystemContractErrors__factory"; +export type { SystemContractMock } from "./SystemContractMock.sol/SystemContractMock"; +export { SystemContractMock__factory } from "./factories/SystemContractMock.sol/SystemContractMock__factory"; +export { Test__factory } from "./factories/Test__factory"; +export { TestERC20__factory } from "./factories/TestERC20__factory"; +export { TestZContract__factory } from "./factories/TestZContract__factory"; +export type { ITransparentUpgradeableProxy } from "./TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy"; +export { ITransparentUpgradeableProxy__factory } from "./factories/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory"; +export type { TransparentUpgradeableProxy } from "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy"; +export { TransparentUpgradeableProxy__factory } from "./factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory"; +export { UpgradeableBeacon__factory } from "./factories/UpgradeableBeacon__factory"; +export type { Strings } from "./utils/Strings"; +export { Strings__factory } from "./factories/utils/Strings__factory"; +export { UUPSUpgradeable__factory } from "./factories/UUPSUpgradeable__factory"; +export type { Vm } from "./Vm.sol/Vm"; +export { Vm__factory } from "./factories/Vm.sol/Vm__factory"; +export type { VmSafe } from "./Vm.sol/VmSafe"; +export { VmSafe__factory } from "./factories/Vm.sol/VmSafe__factory"; +export type { WETH9 } from "./WZETA.sol/WETH9"; +export { WETH9__factory } from "./factories/WZETA.sol/WETH9__factory"; +export type { UniversalContract } from "./zContract.sol/UniversalContract"; +export { UniversalContract__factory } from "./factories/zContract.sol/UniversalContract__factory"; +export type { ZContract } from "./zContract.sol/ZContract"; +export { ZContract__factory } from "./factories/zContract.sol/ZContract__factory"; +export type { ZetaErrors } from "./Zeta.non-eth.sol/ZetaErrors"; +export { ZetaErrors__factory } from "./factories/Zeta.non-eth.sol/ZetaErrors__factory"; +export type { ZetaNonEth } from "./Zeta.non-eth.sol/ZetaNonEth"; +export { ZetaNonEth__factory } from "./factories/Zeta.non-eth.sol/ZetaNonEth__factory"; +export type { ZetaNonEthInterface } from "./Zeta.non-eth.sol/ZetaNonEthInterface"; +export { ZetaNonEthInterface__factory } from "./factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory"; +export { ZetaConnectorNative__factory } from "./factories/ZetaConnectorNative__factory"; +export { ZetaConnectorNewBase__factory } from "./factories/ZetaConnectorNewBase__factory"; +export { ZetaConnectorNonNative__factory } from "./factories/ZetaConnectorNonNative__factory"; +export type { ZRC20Errors } from "./ZRC20New.sol/ZRC20Errors"; +export { ZRC20Errors__factory } from "./factories/ZRC20New.sol/ZRC20Errors__factory"; +export type { ZRC20New } from "./ZRC20New.sol/ZRC20New"; +export { ZRC20New__factory } from "./factories/ZRC20New.sol/ZRC20New__factory"; diff --git a/v2/typechain-types/interfaces/IWZeta.sol/IWETH9.ts b/v2/typechain-types/interfaces/IWZeta.sol/IWETH9.ts new file mode 100644 index 00000000..a2c1608f --- /dev/null +++ b/v2/typechain-types/interfaces/IWZeta.sol/IWETH9.ts @@ -0,0 +1,345 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "../../common"; + +export interface IWETH9Interface extends Interface { + getFunction( + nameOrSignature: + | "allowance" + | "approve" + | "balanceOf" + | "deposit" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Approval" | "Deposit" | "Transfer" | "Withdrawal" + ): EventFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [AddressLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [AddressLike] + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [AddressLike, AddressLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; +} + +export namespace ApprovalEvent { + export type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [owner: string, spender: string, value: bigint]; + export interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace DepositEvent { + export type InputTuple = [dst: AddressLike, wad: BigNumberish]; + export type OutputTuple = [dst: string, wad: bigint]; + export interface OutputObject { + dst: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace TransferEvent { + export type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + export type OutputTuple = [from: string, to: string, value: bigint]; + export interface OutputObject { + from: string; + to: string; + value: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace WithdrawalEvent { + export type InputTuple = [src: AddressLike, wad: BigNumberish]; + export type OutputTuple = [src: string, wad: bigint]; + export interface OutputObject { + src: string; + wad: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IWETH9 extends BaseContract { + connect(runner?: ContractRunner | null): IWETH9; + waitForDeployment(): Promise; + + interface: IWETH9Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + allowance: TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + + approve: TypedContractMethod< + [spender: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + + deposit: TypedContractMethod<[], [void], "payable">; + + totalSupply: TypedContractMethod<[], [bigint], "view">; + + transfer: TypedContractMethod< + [to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + transferFrom: TypedContractMethod< + [from: AddressLike, to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + + withdraw: TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "allowance" + ): TypedContractMethod< + [owner: AddressLike, spender: AddressLike], + [bigint], + "view" + >; + getFunction( + nameOrSignature: "approve" + ): TypedContractMethod< + [spender: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "balanceOf" + ): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction( + nameOrSignature: "deposit" + ): TypedContractMethod<[], [void], "payable">; + getFunction( + nameOrSignature: "totalSupply" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "transfer" + ): TypedContractMethod< + [to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "transferFrom" + ): TypedContractMethod< + [from: AddressLike, to: AddressLike, wad: BigNumberish], + [boolean], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdraw" + ): TypedContractMethod<[wad: BigNumberish], [void], "nonpayable">; + + getEvent( + key: "Approval" + ): TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + getEvent( + key: "Deposit" + ): TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + getEvent( + key: "Transfer" + ): TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + getEvent( + key: "Withdrawal" + ): TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + + filters: { + "Approval(address,address,uint256)": TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + Approval: TypedContractEvent< + ApprovalEvent.InputTuple, + ApprovalEvent.OutputTuple, + ApprovalEvent.OutputObject + >; + + "Deposit(address,uint256)": TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + Deposit: TypedContractEvent< + DepositEvent.InputTuple, + DepositEvent.OutputTuple, + DepositEvent.OutputObject + >; + + "Transfer(address,address,uint256)": TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + Transfer: TypedContractEvent< + TransferEvent.InputTuple, + TransferEvent.OutputTuple, + TransferEvent.OutputObject + >; + + "Withdrawal(address,uint256)": TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + Withdrawal: TypedContractEvent< + WithdrawalEvent.InputTuple, + WithdrawalEvent.OutputTuple, + WithdrawalEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/interfaces/IWZeta.sol/index.ts b/v2/typechain-types/interfaces/IWZeta.sol/index.ts new file mode 100644 index 00000000..95069327 --- /dev/null +++ b/v2/typechain-types/interfaces/IWZeta.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IWETH9 } from "./IWETH9"; diff --git a/v2/typechain-types/interfaces/index.ts b/v2/typechain-types/interfaces/index.ts new file mode 100644 index 00000000..ced2bd72 --- /dev/null +++ b/v2/typechain-types/interfaces/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as iwZetaSol from "./IWZeta.sol"; +export type { iwZetaSol }; diff --git a/v2/typechain-types/utils/Strings.ts b/v2/typechain-types/utils/Strings.ts new file mode 100644 index 00000000..89d38f14 --- /dev/null +++ b/v2/typechain-types/utils/Strings.ts @@ -0,0 +1,69 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + FunctionFragment, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, +} from "../common"; + +export interface StringsInterface extends Interface {} + +export interface Strings extends BaseContract { + connect(runner?: ContractRunner | null): Strings; + waitForDeployment(): Promise; + + interface: StringsInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getFunction( + key: string | FunctionFragment + ): T; + + filters: {}; +} diff --git a/v2/typechain-types/utils/index.ts b/v2/typechain-types/utils/index.ts new file mode 100644 index 00000000..b124be93 --- /dev/null +++ b/v2/typechain-types/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Strings } from "./Strings"; diff --git a/v2/typechain-types/zContract.sol/UniversalContract.ts b/v2/typechain-types/zContract.sol/UniversalContract.ts new file mode 100644 index 00000000..d1bb5ea2 --- /dev/null +++ b/v2/typechain-types/zContract.sol/UniversalContract.ts @@ -0,0 +1,164 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export type RevertContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type RevertContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface UniversalContractInterface extends Interface { + getFunction( + nameOrSignature: "onCrossChainCall" | "onRevert" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "onCrossChainCall", + values: [ZContextStruct, AddressLike, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "onRevert", + values: [RevertContextStruct, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onCrossChainCall", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; +} + +export interface UniversalContract extends BaseContract { + connect(runner?: ContractRunner | null): UniversalContract; + waitForDeployment(): Promise; + + interface: UniversalContractInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onCrossChainCall: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + onRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onCrossChainCall" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "onRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/zContract.sol/ZContract.ts b/v2/typechain-types/zContract.sol/ZContract.ts new file mode 100644 index 00000000..f83ec06a --- /dev/null +++ b/v2/typechain-types/zContract.sol/ZContract.ts @@ -0,0 +1,122 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export type ZContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type ZContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + +export interface ZContractInterface extends Interface { + getFunction(nameOrSignature: "onCrossChainCall"): FunctionFragment; + + encodeFunctionData( + functionFragment: "onCrossChainCall", + values: [ZContextStruct, AddressLike, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onCrossChainCall", + data: BytesLike + ): Result; +} + +export interface ZContract extends BaseContract { + connect(runner?: ContractRunner | null): ZContract; + waitForDeployment(): Promise; + + interface: ZContractInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + onCrossChainCall: TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "onCrossChainCall" + ): TypedContractMethod< + [ + context: ZContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + message: BytesLike + ], + [void], + "nonpayable" + >; + + filters: {}; +} diff --git a/v2/typechain-types/zContract.sol/index.ts b/v2/typechain-types/zContract.sol/index.ts new file mode 100644 index 00000000..bf8e5a02 --- /dev/null +++ b/v2/typechain-types/zContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { UniversalContract } from "./UniversalContract"; +export type { ZContract } from "./ZContract"; diff --git a/v2/yarn.lock b/v2/yarn.lock index 9d3df7d8..18b3e888 100644 --- a/v2/yarn.lock +++ b/v2/yarn.lock @@ -177,6 +177,14 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@typechain/ethers-v6@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz#42fe214a19a8b687086c93189b301e2b878797ea" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + "@types/eslint@*": version "9.6.0" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" @@ -207,6 +215,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + "@typescript-eslint/eslint-plugin@7.17.0": version "7.17.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz#c8ed1af1ad2928ede5cdd207f7e3090499e1f77b" @@ -330,6 +343,13 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -347,6 +367,16 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -398,7 +428,16 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^4.0.0, chalk@^4.1.2: +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -415,6 +454,13 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -422,6 +468,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -434,6 +485,26 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -482,6 +553,11 @@ debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -521,6 +597,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -676,6 +757,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -712,6 +800,15 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -736,6 +833,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -767,11 +876,21 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -851,6 +970,11 @@ joi@^17.11.0: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -873,6 +997,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -895,12 +1026,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -935,7 +1071,7 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -954,6 +1090,11 @@ minimist@^1.2.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -1034,6 +1175,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -1049,6 +1195,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" @@ -1122,6 +1273,11 @@ spawn-command@0.0.2: resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -1143,6 +1299,13 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -1157,6 +1320,16 @@ supports-color@^8.1.1: dependencies: has-flag "^4.0.0" +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -1179,6 +1352,21 @@ ts-api-utils@^1.3.0: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + ts-node@^10.9.2: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" @@ -1220,6 +1408,22 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + typescript-eslint@^7.17.0: version "7.17.0" resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.17.0.tgz#cc5eddafd38b3c1fe8a52826469d5c78700b7aa7" @@ -1234,6 +1438,21 @@ typescript@^5.5.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -1269,6 +1488,14 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" From 6835971b70c04e666934b661af8b636c27b1b86b Mon Sep 17 00:00:00 2001 From: skosito Date: Wed, 31 Jul 2024 08:08:08 +0100 Subject: [PATCH 42/60] refactor: remove new suffix from v2 contracts (#272) --- v1/contracts/zevm/ZRC20New.sol | 298 --- .../zevm/zrc20new.sol/zrc20errors.go | 181 -- .../contracts/zevm/zrc20new.sol/zrc20new.go | 1831 ----------------- .../zevm/ZRC20New.sol/ZRC20Errors.ts | 56 - .../contracts/zevm/ZRC20New.sol/ZRC20New.ts | 854 -------- v1/typechain-types/contracts/zevm/index.ts | 2 - .../factories/contracts/zevm/index.ts | 1 - v1/typechain-types/hardhat.d.ts | 18 - v1/typechain-types/index.ts | 2 - v2/package.json | 2 +- .../erc20custody.go} | 334 +-- .../erc20custodyechidnatest.go} | 374 ++-- v2/pkg/gatewayevm.sol/gatewayevm.go | 2 +- .../gatewayevm.t.sol/gatewayevminboundtest.go | 2 +- v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 2 +- .../gatewayevmechidnatest.go | 2 +- .../gatewayevmuupsupgradetest.go | 2 +- .../gatewayevmupgradetest.go | 2 +- .../gatewayevmzevmtest.go | 2 +- .../gatewayzevminboundtest.go | 2 +- .../gatewayzevmoutboundtest.go | 2 +- .../ierc20custody.sol/ierc20custodyerrors.go | 181 ++ .../ierc20custodyevents.go} | 260 +-- .../ierc20custodynewerrors.go | 181 -- .../zetaconnectorbase.go} | 344 ++-- .../zetaconnectornative.go | 2 +- .../zetaconnectornativetest.go | 2 +- .../zetaconnectornonnative.go | 2 +- .../zetaconnectornonnativetest.go | 172 +- .../zrc20new.go => zrc20.sol/zrc20.go} | 710 +++---- .../zrc20errors.go | 2 +- v2/scripts/localnet/ZevmWithdrawAndCall.s.sol | 4 +- v2/scripts/localnet/worker.ts | 6 +- .../{ERC20CustodyNew.sol => ERC20Custody.sol} | 6 +- v2/src/evm/GatewayEVM.sol | 6 +- ...ectorNewBase.sol => ZetaConnectorBase.sol} | 4 +- v2/src/evm/ZetaConnectorNative.sol | 8 +- v2/src/evm/ZetaConnectorNonNative.sol | 8 +- ...IERC20CustodyNew.sol => IERC20Custody.sol} | 8 +- v2/test/GatewayEVM.t.sol | 14 +- v2/test/GatewayEVMUpgrade.t.sol | 6 +- v2/test/GatewayEVMZEVM.t.sol | 12 +- v2/test/GatewayZEVM.t.sol | 10 +- v2/test/ZetaConnectorNative.t.sol | 6 +- v2/test/ZetaConnectorNonNative.t.sol | 426 ++-- ...naTest.sol => ERC20CustodyEchidnaTest.sol} | 6 +- v2/test/fuzz/GatewayEVMEchidnaTest.sol | 4 +- v2/test/fuzz/readme.md | 2 +- v2/test/utils/GatewayEVMUpgradeTest.sol | 6 +- v2/test/utils/{ZRC20New.sol => ZRC20.sol} | 2 +- .../{ERC20CustodyNew.ts => ERC20Custody.ts} | 8 +- ...idnaTest.ts => ERC20CustodyEchidnaTest.ts} | 8 +- .../IERC20CustodyErrors.ts} | 8 +- .../IERC20CustodyEvents.ts} | 8 +- v2/typechain-types/IERC20Custody.sol/index.ts | 5 + .../IERC20CustodyNew.sol/index.ts | 5 - .../ZRC20New.ts => ZRC20.sol/ZRC20.ts} | 8 +- .../ZRC20Errors.ts | 0 .../typechain-types/ZRC20.sol}/index.ts | 2 +- v2/typechain-types/ZRC20New.sol/index.ts | 5 - ...nnectorNewBase.ts => ZetaConnectorBase.ts} | 8 +- ...ts => ERC20CustodyEchidnaTest__factory.ts} | 30 +- ...w__factory.ts => ERC20Custody__factory.ts} | 29 +- .../GatewayEVMEchidnaTest__factory.ts | 2 +- .../GatewayEVMUpgradeTest__factory.ts | 2 +- .../factories/GatewayEVM__factory.ts | 2 +- .../IERC20CustodyErrors__factory.ts} | 16 +- .../IERC20CustodyEvents__factory.ts} | 16 +- .../factories/IERC20Custody.sol/index.ts | 5 + .../factories/IERC20CustodyNew.sol/index.ts | 5 - .../ZRC20Errors__factory.ts | 2 +- .../ZRC20__factory.ts} | 26 +- .../{ZRC20New.sol => ZRC20.sol}/index.ts | 2 +- ...ctory.ts => ZetaConnectorBase__factory.ts} | 20 +- .../factories/ZetaConnectorNative__factory.ts | 2 +- .../ZetaConnectorNonNative__factory.ts | 2 +- v2/typechain-types/factories/index.ts | 10 +- v2/typechain-types/index.ts | 36 +- 78 files changed, 1778 insertions(+), 4865 deletions(-) delete mode 100644 v1/contracts/zevm/ZRC20New.sol delete mode 100644 v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go delete mode 100644 v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go delete mode 100644 v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts delete mode 100644 v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts rename v2/pkg/{erc20custodynew.sol/erc20custodynew.go => erc20custody.sol/erc20custody.go} (62%) rename v2/pkg/{erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go => erc20custodyechidnatest.sol/erc20custodyechidnatest.go} (77%) create mode 100644 v2/pkg/ierc20custody.sol/ierc20custodyerrors.go rename v2/pkg/{ierc20custodynew.sol/ierc20custodynewevents.go => ierc20custody.sol/ierc20custodyevents.go} (52%) delete mode 100644 v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go rename v2/pkg/{zetaconnectornewbase.sol/zetaconnectornewbase.go => zetaconnectorbase.sol/zetaconnectorbase.go} (53%) rename v2/pkg/{zrc20new.sol/zrc20new.go => zrc20.sol/zrc20.go} (68%) rename v2/pkg/{zrc20new.sol => zrc20.sol}/zrc20errors.go (99%) rename v2/src/evm/{ERC20CustodyNew.sol => ERC20Custody.sol} (95%) rename v2/src/evm/{ZetaConnectorNewBase.sol => ZetaConnectorBase.sol} (96%) rename v2/src/evm/interfaces/{IERC20CustodyNew.sol => IERC20Custody.sol} (91%) rename v2/test/fuzz/{ERC20CustodyNewEchidnaTest.sol => ERC20CustodyEchidnaTest.sol} (88%) rename v2/test/utils/{ZRC20New.sol => ZRC20.sol} (99%) rename v2/typechain-types/{ERC20CustodyNew.ts => ERC20Custody.ts} (97%) rename v2/typechain-types/{ERC20CustodyNewEchidnaTest.ts => ERC20CustodyEchidnaTest.ts} (97%) rename v2/typechain-types/{IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts => IERC20Custody.sol/IERC20CustodyErrors.ts} (87%) rename v2/typechain-types/{IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts => IERC20Custody.sol/IERC20CustodyEvents.ts} (95%) create mode 100644 v2/typechain-types/IERC20Custody.sol/index.ts delete mode 100644 v2/typechain-types/IERC20CustodyNew.sol/index.ts rename v2/typechain-types/{ZRC20New.sol/ZRC20New.ts => ZRC20.sol/ZRC20.ts} (99%) rename v2/typechain-types/{ZRC20New.sol => ZRC20.sol}/ZRC20Errors.ts (100%) rename {v1/typechain-types/contracts/zevm/ZRC20New.sol => v2/typechain-types/ZRC20.sol}/index.ts (76%) delete mode 100644 v2/typechain-types/ZRC20New.sol/index.ts rename v2/typechain-types/{ZetaConnectorNewBase.ts => ZetaConnectorBase.ts} (97%) rename v2/typechain-types/factories/{ERC20CustodyNewEchidnaTest__factory.ts => ERC20CustodyEchidnaTest__factory.ts} (98%) rename v2/typechain-types/factories/{ERC20CustodyNew__factory.ts => ERC20Custody__factory.ts} (94%) rename v2/typechain-types/factories/{IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts => IERC20Custody.sol/IERC20CustodyErrors__factory.ts} (58%) rename v2/typechain-types/factories/{IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts => IERC20Custody.sol/IERC20CustodyEvents__factory.ts} (84%) create mode 100644 v2/typechain-types/factories/IERC20Custody.sol/index.ts delete mode 100644 v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts rename v2/typechain-types/factories/{ZRC20New.sol => ZRC20.sol}/ZRC20Errors__factory.ts (96%) rename v2/typechain-types/factories/{ZRC20New.sol/ZRC20New__factory.ts => ZRC20.sol/ZRC20__factory.ts} (97%) rename v2/typechain-types/factories/{ZRC20New.sol => ZRC20.sol}/index.ts (72%) rename v2/typechain-types/factories/{ZetaConnectorNewBase__factory.ts => ZetaConnectorBase__factory.ts} (91%) diff --git a/v1/contracts/zevm/ZRC20New.sol b/v1/contracts/zevm/ZRC20New.sol deleted file mode 100644 index 116661ef..00000000 --- a/v1/contracts/zevm/ZRC20New.sol +++ /dev/null @@ -1,298 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; -import "./interfaces/IZRC20.sol"; -import "./interfaces/ISystem.sol"; - -/** - * @dev Custom errors for ZRC20 - */ -interface ZRC20Errors { - // @dev: Error thrown when caller is not the fungible module - error CallerIsNotFungibleModule(); - error InvalidSender(); - error GasFeeTransferFailed(); - error ZeroGasCoin(); - error ZeroGasPrice(); - error LowAllowance(); - error LowBalance(); - error ZeroAddress(); -} - -// NOTE: this is exactly the same as ZRC20, except gateway contract address is set at deployment -// and used to allow deposit. This is first version, it might change in the future. -contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { - /// @notice Fungible address is always the same, maintained at the protocol level - address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; - /// @notice Chain id.abi - uint256 public immutable CHAIN_ID; - /// @notice Coin type, checkout Interfaces.sol. - CoinType public immutable COIN_TYPE; - /// @notice System contract address. - address public SYSTEM_CONTRACT_ADDRESS; - /// @notice Gateway contract address. - address public GATEWAY_CONTRACT_ADDRESS; - /// @notice Gas limit. - uint256 public GAS_LIMIT; - /// @notice Protocol flat fee. - uint256 public override PROTOCOL_FLAT_FEE; - - mapping(address => uint256) private _balances; - mapping(address => mapping(address => uint256)) private _allowances; - uint256 private _totalSupply; - string private _name; - string private _symbol; - uint8 private _decimals; - - function _msgSender() internal view virtual returns (address) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes calldata) { - return msg.data; - } - - /** - * @dev Only fungible module modifier. - */ - modifier onlyFungible() { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); - _; - } - - /** - * @dev The only one allowed to deploy new ZRC20 is fungible address. - */ - constructor( - string memory name_, - string memory symbol_, - uint8 decimals_, - uint256 chainid_, - CoinType coinType_, - uint256 gasLimit_, - address systemContractAddress_, - address gatewayContractAddress_ - ) { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); - _name = name_; - _symbol = symbol_; - _decimals = decimals_; - CHAIN_ID = chainid_; - COIN_TYPE = coinType_; - GAS_LIMIT = gasLimit_; - SYSTEM_CONTRACT_ADDRESS = systemContractAddress_; - GATEWAY_CONTRACT_ADDRESS = gatewayContractAddress_; - } - - /** - * @dev ZRC20 name - * @return name as string - */ - function name() public view virtual override returns (string memory) { - return _name; - } - - /** - * @dev ZRC20 symbol. - * @return symbol as string. - */ - function symbol() public view virtual override returns (string memory) { - return _symbol; - } - - /** - * @dev ZRC20 decimals. - * @return returns uint8 decimals. - */ - function decimals() public view virtual override returns (uint8) { - return _decimals; - } - - /** - * @dev ZRC20 total supply. - * @return returns uint256 total supply. - */ - function totalSupply() public view virtual override returns (uint256) { - return _totalSupply; - } - - /** - * @dev Returns ZRC20 balance of an account. - * @param account, account address for which balance is requested. - * @return uint256 account balance. - */ - function balanceOf(address account) public view virtual override returns (uint256) { - return _balances[account]; - } - - /** - * @dev Returns ZRC20 balance of an account. - * @param recipient, recipiuent address to which transfer is done. - * @return true/false if transfer succeeded/failed. - */ - function transfer(address recipient, uint256 amount) public virtual override returns (bool) { - _transfer(_msgSender(), recipient, amount); - return true; - } - - /** - * @dev Returns token allowance from owner to spender. - * @param owner, owner address. - * @return uint256 allowance. - */ - function allowance(address owner, address spender) public view virtual override returns (uint256) { - return _allowances[owner][spender]; - } - - /** - * @dev Approves amount transferFrom for spender. - * @param spender, spender address. - * @param amount, amount to approve. - * @return true/false if succeeded/failed. - */ - function approve(address spender, uint256 amount) public virtual override returns (bool) { - _approve(_msgSender(), spender, amount); - return true; - } - - /** - * @dev Transfers tokens from sender to recipient. - * @param sender, sender address. - * @param recipient, recipient address. - * @param amount, amount to transfer. - * @return true/false if succeeded/failed. - */ - function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { - _transfer(sender, recipient, amount); - - uint256 currentAllowance = _allowances[sender][_msgSender()]; - if (currentAllowance < amount) revert LowAllowance(); - - _approve(sender, _msgSender(), currentAllowance - amount); - - return true; - } - - /** - * @dev Burns an amount of tokens. - * @param amount, amount to burn. - * @return true/false if succeeded/failed. - */ - function burn(uint256 amount) external override returns (bool) { - _burn(msg.sender, amount); - return true; - } - - function _transfer(address sender, address recipient, uint256 amount) internal virtual { - if (sender == address(0)) revert ZeroAddress(); - if (recipient == address(0)) revert ZeroAddress(); - - uint256 senderBalance = _balances[sender]; - if (senderBalance < amount) revert LowBalance(); - - _balances[sender] = senderBalance - amount; - _balances[recipient] += amount; - - emit Transfer(sender, recipient, amount); - } - - function _mint(address account, uint256 amount) internal virtual { - if (account == address(0)) revert ZeroAddress(); - - _totalSupply += amount; - _balances[account] += amount; - emit Transfer(address(0), account, amount); - } - - function _burn(address account, uint256 amount) internal virtual { - if (account == address(0)) revert ZeroAddress(); - - uint256 accountBalance = _balances[account]; - if (accountBalance < amount) revert LowBalance(); - - _balances[account] = accountBalance - amount; - _totalSupply -= amount; - - emit Transfer(account, address(0), amount); - } - - function _approve(address owner, address spender, uint256 amount) internal virtual { - if (owner == address(0)) revert ZeroAddress(); - if (spender == address(0)) revert ZeroAddress(); - - _allowances[owner][spender] = amount; - emit Approval(owner, spender, amount); - } - - /** - * @dev Deposits corresponding tokens from external chain, only callable by Fungible module. - * @param to, recipient address. - * @param amount, amount to deposit. - * @return true/false if succeeded/failed. - */ - function deposit(address to, uint256 amount) external override returns (bool) { - if (msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS && msg.sender != GATEWAY_CONTRACT_ADDRESS) revert InvalidSender(); - _mint(to, amount); - emit Deposit(abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), to, amount); - return true; - } - - /** - * @dev Withdraws gas fees. - * @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw() - */ - function withdrawGasFee() public view override returns (address, uint256) { - address gasZRC20 = ISystem(SYSTEM_CONTRACT_ADDRESS).gasCoinZRC20ByChainId(CHAIN_ID); - if (gasZRC20 == address(0)) revert ZeroGasCoin(); - - uint256 gasPrice = ISystem(SYSTEM_CONTRACT_ADDRESS).gasPriceByChainId(CHAIN_ID); - if (gasPrice == 0) { - revert ZeroGasPrice(); - } - uint256 gasFee = gasPrice * GAS_LIMIT + PROTOCOL_FLAT_FEE; - return (gasZRC20, gasFee); - } - - /** - * @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the outbound chain - * this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee. - * @param to, recipient address. - * @param amount, amount to deposit. - * @return true/false if succeeded/failed. - */ - function withdraw(bytes memory to, uint256 amount) external override returns (bool) { - (address gasZRC20, uint256 gasFee) = withdrawGasFee(); - if (!IZRC20(gasZRC20).transferFrom(msg.sender, FUNGIBLE_MODULE_ADDRESS, gasFee)) { - revert GasFeeTransferFailed(); - } - _burn(msg.sender, amount); - emit Withdrawal(msg.sender, to, amount, gasFee, PROTOCOL_FLAT_FEE); - return true; - } - - /** - * @dev Updates system contract address. Can only be updated by the fungible module. - * @param addr, new system contract address. - */ - function updateSystemContractAddress(address addr) external onlyFungible { - SYSTEM_CONTRACT_ADDRESS = addr; - emit UpdatedSystemContract(addr); - } - - /** - * @dev Updates gas limit. Can only be updated by the fungible module. - * @param gasLimit, new gas limit. - */ - function updateGasLimit(uint256 gasLimit) external onlyFungible { - GAS_LIMIT = gasLimit; - emit UpdatedGasLimit(gasLimit); - } - - /** - * @dev Updates protocol flat fee. Can only be updated by the fungible module. - * @param protocolFlatFee, new protocol flat fee. - */ - function updateProtocolFlatFee(uint256 protocolFlatFee) external onlyFungible { - PROTOCOL_FLAT_FEE = protocolFlatFee; - emit UpdatedProtocolFlatFee(protocolFlatFee); - } -} diff --git a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go deleted file mode 100644 index 6939b531..00000000 --- a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20errors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20new - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20ErrorsMetaData contains all meta data concerning the ZRC20Errors contract. -var ZRC20ErrorsMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}]", -} - -// ZRC20ErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20ErrorsMetaData.ABI instead. -var ZRC20ErrorsABI = ZRC20ErrorsMetaData.ABI - -// ZRC20Errors is an auto generated Go binding around an Ethereum contract. -type ZRC20Errors struct { - ZRC20ErrorsCaller // Read-only binding to the contract - ZRC20ErrorsTransactor // Write-only binding to the contract - ZRC20ErrorsFilterer // Log filterer for contract events -} - -// ZRC20ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20ErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20ErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20ErrorsSession struct { - Contract *ZRC20Errors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20ErrorsCallerSession struct { - Contract *ZRC20ErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20ErrorsTransactorSession struct { - Contract *ZRC20ErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20ErrorsRaw struct { - Contract *ZRC20Errors // Generic contract binding to access the raw methods on -} - -// ZRC20ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20ErrorsCallerRaw struct { - Contract *ZRC20ErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20ErrorsTransactorRaw struct { - Contract *ZRC20ErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20Errors creates a new instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20Errors(address common.Address, backend bind.ContractBackend) (*ZRC20Errors, error) { - contract, err := bindZRC20Errors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20Errors{ZRC20ErrorsCaller: ZRC20ErrorsCaller{contract: contract}, ZRC20ErrorsTransactor: ZRC20ErrorsTransactor{contract: contract}, ZRC20ErrorsFilterer: ZRC20ErrorsFilterer{contract: contract}}, nil -} - -// NewZRC20ErrorsCaller creates a new read-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZRC20ErrorsCaller, error) { - contract, err := bindZRC20Errors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsCaller{contract: contract}, nil -} - -// NewZRC20ErrorsTransactor creates a new write-only instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20ErrorsTransactor, error) { - contract, err := bindZRC20Errors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20ErrorsTransactor{contract: contract}, nil -} - -// NewZRC20ErrorsFilterer creates a new log filterer instance of ZRC20Errors, bound to a specific deployed contract. -func NewZRC20ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20ErrorsFilterer, error) { - contract, err := bindZRC20Errors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20ErrorsFilterer{contract: contract}, nil -} - -// bindZRC20Errors binds a generic wrapper to an already deployed contract. -func bindZRC20Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20ErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.ZRC20ErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.ZRC20ErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20Errors *ZRC20ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20Errors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20Errors *ZRC20ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20Errors.Contract.contract.Transact(opts, method, params...) -} diff --git a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go b/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go deleted file mode 100644 index 16e077b9..00000000 --- a/v1/pkg/contracts/zevm/zrc20new.sol/zrc20new.go +++ /dev/null @@ -1,1831 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package zrc20new - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. -var ZRC20NewMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200282d3803806200282d83398181016040528101906200003791906200035b565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760079080519060200190620000c9929190620001d1565b508660089080519060200190620000e2929190620001d1565b5085600960006101000a81548160ff021916908360ff16021790555084608081815250508360028111156200011c576200011b620005ae565b5b60a0816002811115620001345762000133620005ae565b5b60f81b8152505082600281905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620006bf565b828054620001df9062000542565b90600052602060002090601f0160209004810192826200020357600085556200024f565b82601f106200021e57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024e57825182559160200191906001019062000231565b5b5090506200025e919062000262565b5090565b5b808211156200027d57600081600090555060010162000263565b5090565b60006200029862000292846200048b565b62000462565b905082815260208101848484011115620002b757620002b662000640565b5b620002c48482856200050c565b509392505050565b600081519050620002dd8162000660565b92915050565b600081519050620002f4816200067a565b92915050565b600082601f8301126200031257620003116200063b565b5b81516200032484826020860162000281565b91505092915050565b6000815190506200033e816200068b565b92915050565b6000815190506200035581620006a5565b92915050565b600080600080600080600080610100898b0312156200037f576200037e6200064a565b5b600089015167ffffffffffffffff811115620003a0576200039f62000645565b5b620003ae8b828c01620002fa565b985050602089015167ffffffffffffffff811115620003d257620003d162000645565b5b620003e08b828c01620002fa565b9750506040620003f38b828c0162000344565b9650506060620004068b828c016200032d565b9550506080620004198b828c01620002e3565b94505060a06200042c8b828c016200032d565b93505060c06200043f8b828c01620002cc565b92505060e0620004528b828c01620002cc565b9150509295985092959890939650565b60006200046e62000481565b90506200047c828262000578565b919050565b6000604051905090565b600067ffffffffffffffff821115620004a957620004a86200060c565b5b620004b4826200064f565b9050602081019050919050565b6000620004ce82620004d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200052c5780820151818401526020810190506200050f565b838111156200053c576000848401525b50505050565b600060028204905060018216806200055b57607f821691505b60208210811415620005725762000571620005dd565b5b50919050565b62000583826200064f565b810181811067ffffffffffffffff82111715620005a557620005a46200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b81620004c1565b81146200067757600080fd5b50565b600381106200068857600080fd5b50565b6200069681620004f5565b8114620006a257600080fd5b50565b620006b081620004ff565b8114620006bc57600080fd5b50565b60805160a05160f81c612137620006f660003960006109580152600081816108a201528181610c250152610d5a01526121376000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806385e1f4d0116100c3578063d9eeebed1161007c578063d9eeebed146103cc578063dd62ed3e146103eb578063e2f535b81461041b578063eddeb12314610439578063f2441b3214610455578063f687d12a146104735761014d565b806385e1f4d0146102f657806395d89b4114610314578063a3413d0314610332578063a9059cbb14610350578063c701262614610380578063c835d7cc146103b05761014d565b8063313ce56711610115578063313ce5671461020c5780633ce4a5bc1461022a57806342966c681461024857806347e7ef24146102785780634d8943bb146102a857806370a08231146102c65761014d565b806306fdde0314610152578063091d278814610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a61048f565b6040516101679190611cad565b60405180910390f35b610178610521565b6040516101859190611ccf565b60405180910390f35b6101a860048036038101906101a3919061196e565b610527565b6040516101b59190611bfb565b60405180910390f35b6101c6610545565b6040516101d39190611ccf565b60405180910390f35b6101f660048036038101906101f1919061191b565b61054f565b6040516102039190611bfb565b60405180910390f35b610214610647565b6040516102219190611cea565b60405180910390f35b61023261065e565b60405161023f9190611b80565b60405180910390f35b610262600480360381019061025d9190611a37565b610676565b60405161026f9190611bfb565b60405180910390f35b610292600480360381019061028d919061196e565b61068b565b60405161029f9190611bfb565b60405180910390f35b6102b0610851565b6040516102bd9190611ccf565b60405180910390f35b6102e060048036038101906102db9190611881565b610857565b6040516102ed9190611ccf565b60405180910390f35b6102fe6108a0565b60405161030b9190611ccf565b60405180910390f35b61031c6108c4565b6040516103299190611cad565b60405180910390f35b61033a610956565b6040516103479190611c92565b60405180910390f35b61036a6004803603810190610365919061196e565b61097a565b6040516103779190611bfb565b60405180910390f35b61039a600480360381019061039591906119db565b610998565b6040516103a79190611bfb565b60405180910390f35b6103ca60048036038101906103c59190611881565b610aee565b005b6103d4610be1565b6040516103e2929190611bd2565b60405180910390f35b610405600480360381019061040091906118db565b610e4e565b6040516104129190611ccf565b60405180910390f35b610423610ed5565b6040516104309190611b80565b60405180910390f35b610453600480360381019061044e9190611a37565b610efb565b005b61045d610fb5565b60405161046a9190611b80565b60405180910390f35b61048d60048036038101906104889190611a37565b610fd9565b005b60606007805461049e90611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca90611f33565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b60025481565b600061053b610534611093565b848461109b565b6001905092915050565b6000600654905090565b600061055c848484611254565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a7611093565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063b8561062a611093565b85846106369190611e43565b61109b565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b600061068233836114b0565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610729575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156107835750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107ba576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c48383611668565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108219190611b65565b6040516020818303038152906040528460405161083f929190611c16565b60405180910390a26001905092915050565b60035481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600880546108d390611f33565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90611f33565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061098e610987611093565b8484611254565b6001905092915050565b60008060006109a5610be1565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b81526004016109fa93929190611b9b565b602060405180830381600087803b158015610a1457600080fd5b505af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906119ae565b610a82576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c33856114b0565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600354604051610ada9493929190611c46565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610bd69190611b80565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610c609190611ccf565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906118ae565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d19576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d959190611ccf565b60206040518083038186803b158015610dad57600080fd5b505afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190611a64565b90506000811415610e22576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610e359190611de9565b610e3f9190611d93565b90508281945094505050509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610faa9190611ccf565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611052576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a816040516110889190611ccf565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611102576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611169576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112479190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112bb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611322576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113a0576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113ac9190611e43565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143e9190611d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114a29190611ccf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611595576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115a19190611e43565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546115f69190611e43565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165b9190611ccf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546116e19190611d93565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117379190611d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161179c9190611ccf565b60405180910390a35050565b60006117bb6117b684611d2a565b611d05565b9050828152602081018484840111156117d7576117d661207b565b5b6117e2848285611ef1565b509392505050565b6000813590506117f9816120bc565b92915050565b60008151905061180e816120bc565b92915050565b600081519050611823816120d3565b92915050565b600082601f83011261183e5761183d612076565b5b813561184e8482602086016117a8565b91505092915050565b600081359050611866816120ea565b92915050565b60008151905061187b816120ea565b92915050565b60006020828403121561189757611896612085565b5b60006118a5848285016117ea565b91505092915050565b6000602082840312156118c4576118c3612085565b5b60006118d2848285016117ff565b91505092915050565b600080604083850312156118f2576118f1612085565b5b6000611900858286016117ea565b9250506020611911858286016117ea565b9150509250929050565b60008060006060848603121561193457611933612085565b5b6000611942868287016117ea565b9350506020611953868287016117ea565b925050604061196486828701611857565b9150509250925092565b6000806040838503121561198557611984612085565b5b6000611993858286016117ea565b92505060206119a485828601611857565b9150509250929050565b6000602082840312156119c4576119c3612085565b5b60006119d284828501611814565b91505092915050565b600080604083850312156119f2576119f1612085565b5b600083013567ffffffffffffffff811115611a1057611a0f612080565b5b611a1c85828601611829565b9250506020611a2d85828601611857565b9150509250929050565b600060208284031215611a4d57611a4c612085565b5b6000611a5b84828501611857565b91505092915050565b600060208284031215611a7a57611a79612085565b5b6000611a888482850161186c565b91505092915050565b611a9a81611e77565b82525050565b611ab1611aac82611e77565b611f96565b82525050565b611ac081611e89565b82525050565b6000611ad182611d5b565b611adb8185611d71565b9350611aeb818560208601611f00565b611af48161208a565b840191505092915050565b611b0881611edf565b82525050565b6000611b1982611d66565b611b238185611d82565b9350611b33818560208601611f00565b611b3c8161208a565b840191505092915050565b611b5081611ec8565b82525050565b611b5f81611ed2565b82525050565b6000611b718284611aa0565b60148201915081905092915050565b6000602082019050611b956000830184611a91565b92915050565b6000606082019050611bb06000830186611a91565b611bbd6020830185611a91565b611bca6040830184611b47565b949350505050565b6000604082019050611be76000830185611a91565b611bf46020830184611b47565b9392505050565b6000602082019050611c106000830184611ab7565b92915050565b60006040820190508181036000830152611c308185611ac6565b9050611c3f6020830184611b47565b9392505050565b60006080820190508181036000830152611c608187611ac6565b9050611c6f6020830186611b47565b611c7c6040830185611b47565b611c896060830184611b47565b95945050505050565b6000602082019050611ca76000830184611aff565b92915050565b60006020820190508181036000830152611cc78184611b0e565b905092915050565b6000602082019050611ce46000830184611b47565b92915050565b6000602082019050611cff6000830184611b56565b92915050565b6000611d0f611d20565b9050611d1b8282611f65565b919050565b6000604051905090565b600067ffffffffffffffff821115611d4557611d44612047565b5b611d4e8261208a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d9e82611ec8565b9150611da983611ec8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dde57611ddd611fba565b5b828201905092915050565b6000611df482611ec8565b9150611dff83611ec8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e3857611e37611fba565b5b828202905092915050565b6000611e4e82611ec8565b9150611e5983611ec8565b925082821015611e6c57611e6b611fba565b5b828203905092915050565b6000611e8282611ea8565b9050919050565b60008115159050919050565b6000819050611ea3826120a8565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611eea82611e95565b9050919050565b82818337600083830152505050565b60005b83811015611f1e578082015181840152602081019050611f03565b83811115611f2d576000848401525b50505050565b60006002820490506001821680611f4b57607f821691505b60208210811415611f5f57611f5e612018565b5b50919050565b611f6e8261208a565b810181811067ffffffffffffffff82111715611f8d57611f8c612047565b5b80604052505050565b6000611fa182611fa8565b9050919050565b6000611fb38261209b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120b9576120b8611fe9565b5b50565b6120c581611e77565b81146120d057600080fd5b50565b6120dc81611e89565b81146120e757600080fd5b50565b6120f381611ec8565b81146120fe57600080fd5b5056fea264697066735822122088cc6797a637e9f7f0d8220bcf745a632c2a8fcb9c479e8f3633f88f9d369ecc64736f6c63430008070033", -} - -// ZRC20NewABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20NewMetaData.ABI instead. -var ZRC20NewABI = ZRC20NewMetaData.ABI - -// ZRC20NewBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZRC20NewMetaData.Bin instead. -var ZRC20NewBin = ZRC20NewMetaData.Bin - -// DeployZRC20New deploys a new Ethereum contract, binding an instance of ZRC20New to it. -func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20New, error) { - parsed, err := ZRC20NewMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20NewBin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil -} - -// ZRC20New is an auto generated Go binding around an Ethereum contract. -type ZRC20New struct { - ZRC20NewCaller // Read-only binding to the contract - ZRC20NewTransactor // Write-only binding to the contract - ZRC20NewFilterer // Log filterer for contract events -} - -// ZRC20NewCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20NewCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20NewTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20NewFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// ZRC20NewSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type ZRC20NewSession struct { - Contract *ZRC20New // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20NewCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type ZRC20NewCallerSession struct { - Contract *ZRC20NewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// ZRC20NewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type ZRC20NewTransactorSession struct { - Contract *ZRC20NewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// ZRC20NewRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20NewRaw struct { - Contract *ZRC20New // Generic contract binding to access the raw methods on -} - -// ZRC20NewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20NewCallerRaw struct { - Contract *ZRC20NewCaller // Generic read-only contract binding to access the raw methods on -} - -// ZRC20NewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20NewTransactorRaw struct { - Contract *ZRC20NewTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewZRC20New creates a new instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20New(address common.Address, backend bind.ContractBackend) (*ZRC20New, error) { - contract, err := bindZRC20New(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil -} - -// NewZRC20NewCaller creates a new read-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewCaller(address common.Address, caller bind.ContractCaller) (*ZRC20NewCaller, error) { - contract, err := bindZRC20New(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &ZRC20NewCaller{contract: contract}, nil -} - -// NewZRC20NewTransactor creates a new write-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20NewTransactor, error) { - contract, err := bindZRC20New(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &ZRC20NewTransactor{contract: contract}, nil -} - -// NewZRC20NewFilterer creates a new log filterer instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20NewFilterer, error) { - contract, err := bindZRC20New(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &ZRC20NewFilterer{contract: contract}, nil -} - -// bindZRC20New binds a generic wrapper to an already deployed contract. -func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20NewMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20New *ZRC20NewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.ZRC20NewCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20New *ZRC20NewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_ZRC20New *ZRC20NewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_ZRC20New *ZRC20NewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transact(opts, method, params...) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "CHAIN_ID") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) -} - -// CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. -// -// Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "COIN_TYPE") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) -} - -// COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. -// -// Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) -} - -// FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. -// -// Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GAS_LIMIT") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) -} - -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. -// -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. -// -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. -// -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "allowance", owner, spender) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) -} - -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. -// -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "balanceOf", account) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) -} - -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. -// -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "decimals") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) -} - -// Decimals is a free data retrieval call binding the contract method 0x313ce567. -// -// Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "name") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) -} - -// Name is a free data retrieval call binding the contract method 0x06fdde03. -// -// Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "symbol") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) -} - -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. -// -// Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "totalSupply") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) -} - -// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. -// -// Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { - var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "withdrawGasFee") - - if err != nil { - return *new(common.Address), *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) - - return out0, out1, err - -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) -} - -// WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. -// -// Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "approve", spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) -} - -// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. -// -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "deposit", to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) -} - -// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. -// -// Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transfer", recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transferFrom", sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) -} - -// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. -// -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateGasLimit", gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) -} - -// UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. -// -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) -} - -// UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. -// -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateSystemContractAddress", addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) -} - -// UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. -// -// Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "withdraw", to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) -} - -// Withdraw is a paid mutator transaction binding the contract method 0xc7012626. -// -// Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) -} - -// ZRC20NewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20New contract. -type ZRC20NewApprovalIterator struct { - Event *ZRC20NewApproval // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewApprovalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewApproval) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewApprovalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewApprovalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewApproval represents a Approval event raised by the ZRC20New contract. -type ZRC20NewApproval struct { - Owner common.Address - Spender common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20NewApprovalIterator, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return &ZRC20NewApprovalIterator{contract: _ZRC20New.contract, event: "Approval", logs: logs, sub: sub}, nil -} - -// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20NewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { - - var ownerRule []interface{} - for _, ownerItem := range owner { - ownerRule = append(ownerRule, ownerItem) - } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. -// -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseApproval(log types.Log) (*ZRC20NewApproval, error) { - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20New contract. -type ZRC20NewDepositIterator struct { - Event *ZRC20NewDeposit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewDepositIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewDepositIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewDepositIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewDeposit represents a Deposit event raised by the ZRC20New contract. -type ZRC20NewDeposit struct { - From []byte - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20NewDepositIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return &ZRC20NewDepositIterator{contract: _ZRC20New.contract, event: "Deposit", logs: logs, sub: sub}, nil -} - -// WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20NewDeposit, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Deposit", toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. -// -// Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseDeposit(log types.Log) (*ZRC20NewDeposit, error) { - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20New contract. -type ZRC20NewTransferIterator struct { - Event *ZRC20NewTransfer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewTransferIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewTransferIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewTransferIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewTransfer represents a Transfer event raised by the ZRC20New contract. -type ZRC20NewTransfer struct { - From common.Address - To common.Address - Value *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20NewTransferIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return &ZRC20NewTransferIterator{contract: _ZRC20New.contract, event: "Transfer", logs: logs, sub: sub}, nil -} - -// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20NewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Transfer", fromRule, toRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. -// -// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseTransfer(log types.Log) (*ZRC20NewTransfer, error) { - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimitIterator struct { - Event *ZRC20NewUpdatedGasLimit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedGasLimitIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedGasLimitIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimit struct { - GasLimit *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20NewUpdatedGasLimitIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedGasLimitIterator{contract: _ZRC20New.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil -} - -// WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedGasLimit) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedGasLimit") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. -// -// Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20NewUpdatedGasLimit, error) { - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFeeIterator struct { - Event *ZRC20NewUpdatedProtocolFlatFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFee struct { - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20NewUpdatedProtocolFlatFeeIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedProtocolFlatFeeIterator{contract: _ZRC20New.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil -} - -// WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedProtocolFlatFee) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. -// -// Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20NewUpdatedProtocolFlatFee, error) { - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContractIterator struct { - Event *ZRC20NewUpdatedSystemContract // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedSystemContractIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewUpdatedSystemContractIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContract struct { - SystemContract common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20NewUpdatedSystemContractIterator, error) { - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return &ZRC20NewUpdatedSystemContractIterator{contract: _ZRC20New.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil -} - -// WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedSystemContract) (event.Subscription, error) { - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedSystemContract") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. -// -// Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20NewUpdatedSystemContract, error) { - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ZRC20NewWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20New contract. -type ZRC20NewWithdrawalIterator struct { - Event *ZRC20NewWithdrawal // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ZRC20NewWithdrawalIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewWithdrawalIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ZRC20NewWithdrawalIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ZRC20NewWithdrawal represents a Withdrawal event raised by the ZRC20New contract. -type ZRC20NewWithdrawal struct { - From common.Address - To []byte - Value *big.Int - GasFee *big.Int - ProtocolFlatFee *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20NewWithdrawalIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return &ZRC20NewWithdrawalIterator{contract: _ZRC20New.contract, event: "Withdrawal", logs: logs, sub: sub}, nil -} - -// WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20NewWithdrawal, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } - - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Withdrawal", fromRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. -// -// Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseWithdrawal(log types.Log) (*ZRC20NewWithdrawal, error) { - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts b/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts deleted file mode 100644 index fd71e53f..00000000 --- a/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20Errors.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { BaseContract, Signer, utils } from "ethers"; - -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZRC20ErrorsInterface extends utils.Interface { - functions: {}; - - events: {}; -} - -export interface ZRC20Errors extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZRC20ErrorsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: {}; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts b/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts deleted file mode 100644 index 926c4c54..00000000 --- a/v1/typechain-types/contracts/zevm/ZRC20New.sol/ZRC20New.ts +++ /dev/null @@ -1,854 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface ZRC20NewInterface extends utils.Interface { - functions: { - "CHAIN_ID()": FunctionFragment; - "COIN_TYPE()": FunctionFragment; - "FUNGIBLE_MODULE_ADDRESS()": FunctionFragment; - "GAS_LIMIT()": FunctionFragment; - "GATEWAY_CONTRACT_ADDRESS()": FunctionFragment; - "PROTOCOL_FLAT_FEE()": FunctionFragment; - "SYSTEM_CONTRACT_ADDRESS()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "burn(uint256)": FunctionFragment; - "decimals()": FunctionFragment; - "deposit(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "updateGasLimit(uint256)": FunctionFragment; - "updateProtocolFlatFee(uint256)": FunctionFragment; - "updateSystemContractAddress(address)": FunctionFragment; - "withdraw(bytes,uint256)": FunctionFragment; - "withdrawGasFee()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "CHAIN_ID" - | "COIN_TYPE" - | "FUNGIBLE_MODULE_ADDRESS" - | "GAS_LIMIT" - | "GATEWAY_CONTRACT_ADDRESS" - | "PROTOCOL_FLAT_FEE" - | "SYSTEM_CONTRACT_ADDRESS" - | "allowance" - | "approve" - | "balanceOf" - | "burn" - | "decimals" - | "deposit" - | "name" - | "symbol" - | "totalSupply" - | "transfer" - | "transferFrom" - | "updateGasLimit" - | "updateProtocolFlatFee" - | "updateSystemContractAddress" - | "withdraw" - | "withdrawGasFee" - ): FunctionFragment; - - encodeFunctionData(functionFragment: "CHAIN_ID", values?: undefined): string; - encodeFunctionData(functionFragment: "COIN_TYPE", values?: undefined): string; - encodeFunctionData( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; - encodeFunctionData( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "PROTOCOL_FLAT_FEE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "burn", - values: [PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "deposit", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "updateGasLimit", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "updateProtocolFlatFee", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "updateSystemContractAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdraw", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "withdrawGasFee", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "CHAIN_ID", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "COIN_TYPE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "FUNGIBLE_MODULE_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "PROTOCOL_FLAT_FEE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateGasLimit", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateProtocolFlatFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateSystemContractAddress", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "withdrawGasFee", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Deposit(bytes,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - "UpdatedGasLimit(uint256)": EventFragment; - "UpdatedProtocolFlatFee(uint256)": EventFragment; - "UpdatedSystemContract(address)": EventFragment; - "Withdrawal(address,bytes,uint256,uint256,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedGasLimit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedProtocolFlatFee"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedSystemContract"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - ApprovalEventObject ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface DepositEventObject { - from: string; - to: string; - value: BigNumber; -} -export type DepositEvent = TypedEvent< - [string, string, BigNumber], - DepositEventObject ->; - -export type DepositEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - TransferEventObject ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface UpdatedGasLimitEventObject { - gasLimit: BigNumber; -} -export type UpdatedGasLimitEvent = TypedEvent< - [BigNumber], - UpdatedGasLimitEventObject ->; - -export type UpdatedGasLimitEventFilter = TypedEventFilter; - -export interface UpdatedProtocolFlatFeeEventObject { - protocolFlatFee: BigNumber; -} -export type UpdatedProtocolFlatFeeEvent = TypedEvent< - [BigNumber], - UpdatedProtocolFlatFeeEventObject ->; - -export type UpdatedProtocolFlatFeeEventFilter = - TypedEventFilter; - -export interface UpdatedSystemContractEventObject { - systemContract: string; -} -export type UpdatedSystemContractEvent = TypedEvent< - [string], - UpdatedSystemContractEventObject ->; - -export type UpdatedSystemContractEventFilter = - TypedEventFilter; - -export interface WithdrawalEventObject { - from: string; - to: string; - value: BigNumber; - gasFee: BigNumber; - protocolFlatFee: BigNumber; -} -export type WithdrawalEvent = TypedEvent< - [string, string, BigNumber, BigNumber, BigNumber], - WithdrawalEventObject ->; - -export type WithdrawalEventFilter = TypedEventFilter; - -export interface ZRC20New extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZRC20NewInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - CHAIN_ID(overrides?: CallOverrides): Promise<[BigNumber]>; - - COIN_TYPE(overrides?: CallOverrides): Promise<[number]>; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - GAS_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise<[string]>; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - }; - - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - - callStatic: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: PromiseOrValue | null, - spender?: PromiseOrValue | null, - value?: null - ): ApprovalEventFilter; - - "Deposit(bytes,address,uint256)"( - from?: null, - to?: PromiseOrValue | null, - value?: null - ): DepositEventFilter; - Deposit( - from?: null, - to?: PromiseOrValue | null, - value?: null - ): DepositEventFilter; - - "Transfer(address,address,uint256)"( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: PromiseOrValue | null, - to?: PromiseOrValue | null, - value?: null - ): TransferEventFilter; - - "UpdatedGasLimit(uint256)"(gasLimit?: null): UpdatedGasLimitEventFilter; - UpdatedGasLimit(gasLimit?: null): UpdatedGasLimitEventFilter; - - "UpdatedProtocolFlatFee(uint256)"( - protocolFlatFee?: null - ): UpdatedProtocolFlatFeeEventFilter; - UpdatedProtocolFlatFee( - protocolFlatFee?: null - ): UpdatedProtocolFlatFeeEventFilter; - - "UpdatedSystemContract(address)"( - systemContract?: null - ): UpdatedSystemContractEventFilter; - UpdatedSystemContract( - systemContract?: null - ): UpdatedSystemContractEventFilter; - - "Withdrawal(address,bytes,uint256,uint256,uint256)"( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasFee?: null, - protocolFlatFee?: null - ): WithdrawalEventFilter; - Withdrawal( - from?: PromiseOrValue | null, - to?: null, - value?: null, - gasFee?: null, - protocolFlatFee?: null - ): WithdrawalEventFilter; - }; - - estimateGas: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS(overrides?: CallOverrides): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS(overrides?: CallOverrides): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - CHAIN_ID(overrides?: CallOverrides): Promise; - - COIN_TYPE(overrides?: CallOverrides): Promise; - - FUNGIBLE_MODULE_ADDRESS( - overrides?: CallOverrides - ): Promise; - - GAS_LIMIT(overrides?: CallOverrides): Promise; - - GATEWAY_CONTRACT_ADDRESS( - overrides?: CallOverrides - ): Promise; - - PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; - - SYSTEM_CONTRACT_ADDRESS( - overrides?: CallOverrides - ): Promise; - - allowance( - owner: PromiseOrValue, - spender: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - approve( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - balanceOf( - account: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - burn( - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - deposit( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - transferFrom( - sender: PromiseOrValue, - recipient: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateGasLimit( - gasLimit: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateProtocolFlatFee( - protocolFlatFee: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - updateSystemContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdraw( - to: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - withdrawGasFee(overrides?: CallOverrides): Promise; - }; -} diff --git a/v1/typechain-types/contracts/zevm/index.ts b/v1/typechain-types/contracts/zevm/index.ts index 7bead7ac..ce645d9d 100644 --- a/v1/typechain-types/contracts/zevm/index.ts +++ b/v1/typechain-types/contracts/zevm/index.ts @@ -7,8 +7,6 @@ import type * as wzetaSol from "./WZETA.sol"; export type { wzetaSol }; import type * as zrc20Sol from "./ZRC20.sol"; export type { zrc20Sol }; -import type * as zrc20NewSol from "./ZRC20New.sol"; -export type { zrc20NewSol }; import type * as zetaConnectorZevmSol from "./ZetaConnectorZEVM.sol"; export type { zetaConnectorZevmSol }; import type * as interfaces from "./interfaces"; diff --git a/v1/typechain-types/factories/contracts/zevm/index.ts b/v1/typechain-types/factories/contracts/zevm/index.ts index 0d3bcbac..89dc4157 100644 --- a/v1/typechain-types/factories/contracts/zevm/index.ts +++ b/v1/typechain-types/factories/contracts/zevm/index.ts @@ -4,7 +4,6 @@ export * as systemContractSol from "./SystemContract.sol"; export * as wzetaSol from "./WZETA.sol"; export * as zrc20Sol from "./ZRC20.sol"; -export * as zrc20NewSol from "./ZRC20New.sol"; export * as zetaConnectorZevmSol from "./ZetaConnectorZEVM.sol"; export * as interfaces from "./interfaces"; export * as testing from "./testing"; diff --git a/v1/typechain-types/hardhat.d.ts b/v1/typechain-types/hardhat.d.ts index ddb1792a..0ade9469 100644 --- a/v1/typechain-types/hardhat.d.ts +++ b/v1/typechain-types/hardhat.d.ts @@ -372,14 +372,6 @@ declare module "hardhat/types/runtime" { name: "ZRC20Errors", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ZRC20Errors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZRC20New", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractAt( name: "Ownable", @@ -831,16 +823,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ZRC20Errors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZRC20New", - address: string, - signer?: ethers.Signer - ): Promise; // default types getContractFactory( diff --git a/v1/typechain-types/index.ts b/v1/typechain-types/index.ts index 01624e90..de4aab45 100644 --- a/v1/typechain-types/index.ts +++ b/v1/typechain-types/index.ts @@ -166,5 +166,3 @@ export type { ZRC20 } from "./contracts/zevm/ZRC20.sol/ZRC20"; export { ZRC20__factory } from "./factories/contracts/zevm/ZRC20.sol/ZRC20__factory"; export type { ZRC20Errors } from "./contracts/zevm/ZRC20.sol/ZRC20Errors"; export { ZRC20Errors__factory } from "./factories/contracts/zevm/ZRC20.sol/ZRC20Errors__factory"; -export type { ZRC20New } from "./contracts/zevm/ZRC20New.sol/ZRC20New"; -export { ZRC20New__factory } from "./factories/contracts/zevm/ZRC20New.sol/ZRC20New__factory"; diff --git a/v2/package.json b/v2/package.json index f6d9feff..98f97b5c 100644 --- a/v2/package.json +++ b/v2/package.json @@ -12,7 +12,7 @@ "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"anvil --auto-impersonate\" \"wait-on tcp:8545 && npx ts-node scripts/localnet/worker.ts\"", "test": "forge clean && forge test -vv", "coverage": "forge clean && forge coverage --report lcov", - "typechain": "typechain --target ethers-v6 \"out/**/!(*.t|test).sol/!(*.abi).json\" --out-dir typechain-types", + "typechain": "npx typechain --target ethers-v6 \"out/**/!(*.t|test).sol/!(*.abi).json\" --out-dir typechain-types", "generate": "forge clean && forge build && ./scripts/generate_go.sh || true && yarn lint:fix && forge fmt && yarn typechain" }, "devDependencies": { diff --git a/v2/pkg/erc20custodynew.sol/erc20custodynew.go b/v2/pkg/erc20custody.sol/erc20custody.go similarity index 62% rename from v2/pkg/erc20custodynew.sol/erc20custodynew.go rename to v2/pkg/erc20custody.sol/erc20custody.go index bbd8cdd6..d502e7ac 100644 --- a/v2/pkg/erc20custodynew.sol/erc20custodynew.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package erc20custodynew +package erc20custody import ( "errors" @@ -29,23 +29,23 @@ var ( _ = abi.ConvertType ) -// ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. -var ERC20CustodyNewMetaData = &bind.MetaData{ +// ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. +var ERC20CustodyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033", } -// ERC20CustodyNewABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20CustodyNewMetaData.ABI instead. -var ERC20CustodyNewABI = ERC20CustodyNewMetaData.ABI +// ERC20CustodyABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyMetaData.ABI instead. +var ERC20CustodyABI = ERC20CustodyMetaData.ABI -// ERC20CustodyNewBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20CustodyNewMetaData.Bin instead. -var ERC20CustodyNewBin = ERC20CustodyNewMetaData.Bin +// ERC20CustodyBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyMetaData.Bin instead. +var ERC20CustodyBin = ERC20CustodyMetaData.Bin -// DeployERC20CustodyNew deploys a new Ethereum contract, binding an instance of ERC20CustodyNew to it. -func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20CustodyNew, error) { - parsed, err := ERC20CustodyNewMetaData.GetAbi() +// DeployERC20Custody deploys a new Ethereum contract, binding an instance of ERC20Custody to it. +func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { + parsed, err := ERC20CustodyMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -53,111 +53,111 @@ func DeployERC20CustodyNew(auth *bind.TransactOpts, backend bind.ContractBackend return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewBin), backend, _gateway, _tssAddress) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, _gateway, _tssAddress) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil + return address, tx, &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil } -// ERC20CustodyNew is an auto generated Go binding around an Ethereum contract. -type ERC20CustodyNew struct { - ERC20CustodyNewCaller // Read-only binding to the contract - ERC20CustodyNewTransactor // Write-only binding to the contract - ERC20CustodyNewFilterer // Log filterer for contract events +// ERC20Custody is an auto generated Go binding around an Ethereum contract. +type ERC20Custody struct { + ERC20CustodyCaller // Read-only binding to the contract + ERC20CustodyTransactor // Write-only binding to the contract + ERC20CustodyFilterer // Log filterer for contract events } -// ERC20CustodyNewCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20CustodyNewCaller struct { +// ERC20CustodyCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20CustodyNewTransactor struct { +// ERC20CustodyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20CustodyNewFilterer struct { +// ERC20CustodyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewSession is an auto generated Go binding around an Ethereum contract, +// ERC20CustodySession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ERC20CustodyNewSession struct { - Contract *ERC20CustodyNew // Generic contract binding to set the session for +type ERC20CustodySession struct { + Contract *ERC20Custody // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20CustodyNewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ERC20CustodyCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ERC20CustodyNewCallerSession struct { - Contract *ERC20CustodyNewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20CustodyCallerSession struct { + Contract *ERC20CustodyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC20CustodyNewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ERC20CustodyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ERC20CustodyNewTransactorSession struct { - Contract *ERC20CustodyNewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20CustodyTransactorSession struct { + Contract *ERC20CustodyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20CustodyNewRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20CustodyNewRaw struct { - Contract *ERC20CustodyNew // Generic contract binding to access the raw methods on +// ERC20CustodyRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyRaw struct { + Contract *ERC20Custody // Generic contract binding to access the raw methods on } -// ERC20CustodyNewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CustodyNewCallerRaw struct { - Contract *ERC20CustodyNewCaller // Generic read-only contract binding to access the raw methods on +// ERC20CustodyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyCallerRaw struct { + Contract *ERC20CustodyCaller // Generic read-only contract binding to access the raw methods on } -// ERC20CustodyNewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20CustodyNewTransactorRaw struct { - Contract *ERC20CustodyNewTransactor // Generic write-only contract binding to access the raw methods on +// ERC20CustodyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyTransactorRaw struct { + Contract *ERC20CustodyTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC20CustodyNew creates a new instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNew(address common.Address, backend bind.ContractBackend) (*ERC20CustodyNew, error) { - contract, err := bindERC20CustodyNew(address, backend, backend, backend) +// NewERC20Custody creates a new instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20Custody(address common.Address, backend bind.ContractBackend) (*ERC20Custody, error) { + contract, err := bindERC20Custody(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC20CustodyNew{ERC20CustodyNewCaller: ERC20CustodyNewCaller{contract: contract}, ERC20CustodyNewTransactor: ERC20CustodyNewTransactor{contract: contract}, ERC20CustodyNewFilterer: ERC20CustodyNewFilterer{contract: contract}}, nil + return &ERC20Custody{ERC20CustodyCaller: ERC20CustodyCaller{contract: contract}, ERC20CustodyTransactor: ERC20CustodyTransactor{contract: contract}, ERC20CustodyFilterer: ERC20CustodyFilterer{contract: contract}}, nil } -// NewERC20CustodyNewCaller creates a new read-only instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyNewCaller, error) { - contract, err := bindERC20CustodyNew(address, caller, nil, nil) +// NewERC20CustodyCaller creates a new read-only instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyCaller, error) { + contract, err := bindERC20Custody(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC20CustodyNewCaller{contract: contract}, nil + return &ERC20CustodyCaller{contract: contract}, nil } -// NewERC20CustodyNewTransactor creates a new write-only instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyNewTransactor, error) { - contract, err := bindERC20CustodyNew(address, nil, transactor, nil) +// NewERC20CustodyTransactor creates a new write-only instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyTransactor, error) { + contract, err := bindERC20Custody(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC20CustodyNewTransactor{contract: contract}, nil + return &ERC20CustodyTransactor{contract: contract}, nil } -// NewERC20CustodyNewFilterer creates a new log filterer instance of ERC20CustodyNew, bound to a specific deployed contract. -func NewERC20CustodyNewFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyNewFilterer, error) { - contract, err := bindERC20CustodyNew(address, nil, nil, filterer) +// NewERC20CustodyFilterer creates a new log filterer instance of ERC20Custody, bound to a specific deployed contract. +func NewERC20CustodyFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyFilterer, error) { + contract, err := bindERC20Custody(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC20CustodyNewFilterer{contract: contract}, nil + return &ERC20CustodyFilterer{contract: contract}, nil } -// bindERC20CustodyNew binds a generic wrapper to an already deployed contract. -func bindERC20CustodyNew(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20CustodyNewMetaData.GetAbi() +// bindERC20Custody binds a generic wrapper to an already deployed contract. +func bindERC20Custody(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyMetaData.GetAbi() if err != nil { return nil, err } @@ -168,46 +168,46 @@ func bindERC20CustodyNew(address common.Address, caller bind.ContractCaller, tra // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNew.Contract.ERC20CustodyNewCaller.contract.Call(opts, result, method, params...) +func (_ERC20Custody *ERC20CustodyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Custody.Contract.ERC20CustodyCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transfer(opts) +func (_ERC20Custody *ERC20CustodyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNew *ERC20CustodyNewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.ERC20CustodyNewTransactor.contract.Transact(opts, method, params...) +func (_ERC20Custody *ERC20CustodyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Custody.Contract.ERC20CustodyTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20CustodyNew *ERC20CustodyNewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNew.Contract.contract.Call(opts, result, method, params...) +func (_ERC20Custody *ERC20CustodyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Custody.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.contract.Transfer(opts) +func (_ERC20Custody *ERC20CustodyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNew *ERC20CustodyNewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.contract.Transact(opts, method, params...) +func (_ERC20Custody *ERC20CustodyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Custody.Contract.contract.Transact(opts, method, params...) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20Custody *ERC20CustodyCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNew.contract.Call(opts, &out, "gateway") + err := _ERC20Custody.contract.Call(opts, &out, "gateway") if err != nil { return *new(common.Address), err @@ -222,23 +222,23 @@ func (_ERC20CustodyNew *ERC20CustodyNewCaller) Gateway(opts *bind.CallOpts) (com // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewSession) Gateway() (common.Address, error) { - return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) +func (_ERC20Custody *ERC20CustodySession) Gateway() (common.Address, error) { + return _ERC20Custody.Contract.Gateway(&_ERC20Custody.CallOpts) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) Gateway() (common.Address, error) { - return _ERC20CustodyNew.Contract.Gateway(&_ERC20CustodyNew.CallOpts) +func (_ERC20Custody *ERC20CustodyCallerSession) Gateway() (common.Address, error) { + return _ERC20Custody.Contract.Gateway(&_ERC20Custody.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20Custody *ERC20CustodyCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNew.contract.Call(opts, &out, "tssAddress") + err := _ERC20Custody.contract.Call(opts, &out, "tssAddress") if err != nil { return *new(common.Address), err @@ -253,83 +253,83 @@ func (_ERC20CustodyNew *ERC20CustodyNewCaller) TssAddress(opts *bind.CallOpts) ( // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +func (_ERC20Custody *ERC20CustodySession) TssAddress() (common.Address, error) { + return _ERC20Custody.Contract.TssAddress(&_ERC20Custody.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNew *ERC20CustodyNewCallerSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNew.Contract.TssAddress(&_ERC20CustodyNew.CallOpts) +func (_ERC20Custody *ERC20CustodyCallerSession) TssAddress() (common.Address, error) { + return _ERC20Custody.Contract.TssAddress(&_ERC20Custody.CallOpts) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdraw", token, to, amount) +func (_ERC20Custody *ERC20CustodyTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "withdraw", token, to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) +func (_ERC20Custody *ERC20CustodySession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, token, to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.Withdraw(&_ERC20CustodyNew.TransactOpts, token, to, amount) +func (_ERC20Custody *ERC20CustodyTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Custody.Contract.Withdraw(&_ERC20Custody.TransactOpts, token, to, amount) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) +func (_ERC20Custody *ERC20CustodyTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +func (_ERC20Custody *ERC20CustodySession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.WithdrawAndCall(&_ERC20Custody.TransactOpts, token, to, amount, data) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndCall(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +func (_ERC20Custody *ERC20CustodyTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.WithdrawAndCall(&_ERC20Custody.TransactOpts, token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) +func (_ERC20Custody *ERC20CustodyTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +func (_ERC20Custody *ERC20CustodySession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.WithdrawAndRevert(&_ERC20Custody.TransactOpts, token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNew *ERC20CustodyNewTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNew.Contract.WithdrawAndRevert(&_ERC20CustodyNew.TransactOpts, token, to, amount, data) +func (_ERC20Custody *ERC20CustodyTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20Custody.Contract.WithdrawAndRevert(&_ERC20Custody.TransactOpts, token, to, amount, data) } -// ERC20CustodyNewWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawIterator struct { - Event *ERC20CustodyNewWithdraw // Event containing the contract specifics and raw log +// ERC20CustodyWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20Custody contract. +type ERC20CustodyWithdrawIterator struct { + Event *ERC20CustodyWithdraw // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -343,7 +343,7 @@ type ERC20CustodyNewWithdrawIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawIterator) Next() bool { +func (it *ERC20CustodyWithdrawIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -352,7 +352,7 @@ func (it *ERC20CustodyNewWithdrawIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdraw) + it.Event = new(ERC20CustodyWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -367,7 +367,7 @@ func (it *ERC20CustodyNewWithdrawIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdraw) + it.Event = new(ERC20CustodyWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -383,19 +383,19 @@ func (it *ERC20CustodyNewWithdrawIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawIterator) Error() error { +func (it *ERC20CustodyWithdrawIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewWithdrawIterator) Close() error { +func (it *ERC20CustodyWithdrawIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewWithdraw represents a Withdraw event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdraw struct { +// ERC20CustodyWithdraw represents a Withdraw event raised by the ERC20Custody contract. +type ERC20CustodyWithdraw struct { Token common.Address To common.Address Amount *big.Int @@ -405,7 +405,7 @@ type ERC20CustodyNewWithdraw struct { // FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawIterator, error) { +func (_ERC20Custody *ERC20CustodyFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyWithdrawIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -416,17 +416,17 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdraw(opts *bind.Filte toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewWithdrawIterator{contract: _ERC20CustodyNew.contract, event: "Withdraw", logs: logs, sub: sub}, nil + return &ERC20CustodyWithdrawIterator{contract: _ERC20Custody.contract, event: "Withdraw", logs: logs, sub: sub}, nil } // WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20Custody *ERC20CustodyFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -437,7 +437,7 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchO toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } @@ -447,8 +447,8 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchO select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdraw) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { + event := new(ERC20CustodyWithdraw) + if err := _ERC20Custody.contract.UnpackLog(event, "Withdraw", log); err != nil { return err } event.Raw = log @@ -472,18 +472,18 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdraw(opts *bind.WatchO // ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyNewWithdraw, error) { - event := new(ERC20CustodyNewWithdraw) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "Withdraw", log); err != nil { +func (_ERC20Custody *ERC20CustodyFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyWithdraw, error) { + event := new(ERC20CustodyWithdraw) + if err := _ERC20Custody.contract.UnpackLog(event, "Withdraw", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20CustodyNewWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndCallIterator struct { - Event *ERC20CustodyNewWithdrawAndCall // Event containing the contract specifics and raw log +// ERC20CustodyWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20Custody contract. +type ERC20CustodyWithdrawAndCallIterator struct { + Event *ERC20CustodyWithdrawAndCall // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -497,7 +497,7 @@ type ERC20CustodyNewWithdrawAndCallIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { +func (it *ERC20CustodyWithdrawAndCallIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -506,7 +506,7 @@ func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndCall) + it.Event = new(ERC20CustodyWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -521,7 +521,7 @@ func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndCall) + it.Event = new(ERC20CustodyWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -537,19 +537,19 @@ func (it *ERC20CustodyNewWithdrawAndCallIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Error() error { +func (it *ERC20CustodyWithdrawAndCallIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewWithdrawAndCallIterator) Close() error { +func (it *ERC20CustodyWithdrawAndCallIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndCall struct { +// ERC20CustodyWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20Custody contract. +type ERC20CustodyWithdrawAndCall struct { Token common.Address To common.Address Amount *big.Int @@ -560,7 +560,7 @@ type ERC20CustodyNewWithdrawAndCall struct { // FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndCallIterator, error) { +func (_ERC20Custody *ERC20CustodyFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyWithdrawAndCallIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -571,17 +571,17 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndCall(opts *bin toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewWithdrawAndCallIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil + return &ERC20CustodyWithdrawAndCallIterator{contract: _ERC20Custody.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil } // WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20Custody *ERC20CustodyFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -592,7 +592,7 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } @@ -602,8 +602,8 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdrawAndCall) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + event := new(ERC20CustodyWithdrawAndCall) + if err := _ERC20Custody.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return err } event.Raw = log @@ -627,18 +627,18 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndCall(opts *bind // ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyNewWithdrawAndCall, error) { - event := new(ERC20CustodyNewWithdrawAndCall) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { +func (_ERC20Custody *ERC20CustodyFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyWithdrawAndCall, error) { + event := new(ERC20CustodyWithdrawAndCall) + if err := _ERC20Custody.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20CustodyNewWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndRevertIterator struct { - Event *ERC20CustodyNewWithdrawAndRevert // Event containing the contract specifics and raw log +// ERC20CustodyWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20Custody contract. +type ERC20CustodyWithdrawAndRevertIterator struct { + Event *ERC20CustodyWithdrawAndRevert // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -652,7 +652,7 @@ type ERC20CustodyNewWithdrawAndRevertIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { +func (it *ERC20CustodyWithdrawAndRevertIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -661,7 +661,7 @@ func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndRevert) + it.Event = new(ERC20CustodyWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -676,7 +676,7 @@ func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewWithdrawAndRevert) + it.Event = new(ERC20CustodyWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -692,19 +692,19 @@ func (it *ERC20CustodyNewWithdrawAndRevertIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Error() error { +func (it *ERC20CustodyWithdrawAndRevertIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewWithdrawAndRevertIterator) Close() error { +func (it *ERC20CustodyWithdrawAndRevertIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyNew contract. -type ERC20CustodyNewWithdrawAndRevert struct { +// ERC20CustodyWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20Custody contract. +type ERC20CustodyWithdrawAndRevert struct { Token common.Address To common.Address Amount *big.Int @@ -715,7 +715,7 @@ type ERC20CustodyNewWithdrawAndRevert struct { // FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewWithdrawAndRevertIterator, error) { +func (_ERC20Custody *ERC20CustodyFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyWithdrawAndRevertIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -726,17 +726,17 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) FilterWithdrawAndRevert(opts *b toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewWithdrawAndRevertIterator{contract: _ERC20CustodyNew.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil + return &ERC20CustodyWithdrawAndRevertIterator{contract: _ERC20Custody.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil } // WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20Custody *ERC20CustodyFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -747,7 +747,7 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bi toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNew.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } @@ -757,8 +757,8 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bi select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewWithdrawAndRevert) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + event := new(ERC20CustodyWithdrawAndRevert) + if err := _ERC20Custody.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return err } event.Raw = log @@ -782,9 +782,9 @@ func (_ERC20CustodyNew *ERC20CustodyNewFilterer) WatchWithdrawAndRevert(opts *bi // ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNew *ERC20CustodyNewFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyNewWithdrawAndRevert, error) { - event := new(ERC20CustodyNewWithdrawAndRevert) - if err := _ERC20CustodyNew.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { +func (_ERC20Custody *ERC20CustodyFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyWithdrawAndRevert, error) { + event := new(ERC20CustodyWithdrawAndRevert) + if err := _ERC20Custody.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return nil, err } event.Raw = log diff --git a/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go similarity index 77% rename from v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go rename to v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go index bad0ccec..3fcabace 100644 --- a/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go +++ b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package erc20custodynewechidnatest +package erc20custodyechidnatest import ( "errors" @@ -29,23 +29,23 @@ var ( _ = abi.ConvertType ) -// ERC20CustodyNewEchidnaTestMetaData contains all meta data concerning the ERC20CustodyNewEchidnaTest contract. -var ERC20CustodyNewEchidnaTestMetaData = &bind.MetaData{ +// ERC20CustodyEchidnaTestMetaData contains all meta data concerning the ERC20CustodyEchidnaTest contract. +var ERC20CustodyEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", + Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220d7214dc766e4e33e30af0ee72b7ff719d6cf4397d65eb7d070aaed8a4867b91664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", } -// ERC20CustodyNewEchidnaTestABI is the input ABI used to generate the binding from. -// Deprecated: Use ERC20CustodyNewEchidnaTestMetaData.ABI instead. -var ERC20CustodyNewEchidnaTestABI = ERC20CustodyNewEchidnaTestMetaData.ABI +// ERC20CustodyEchidnaTestABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyEchidnaTestMetaData.ABI instead. +var ERC20CustodyEchidnaTestABI = ERC20CustodyEchidnaTestMetaData.ABI -// ERC20CustodyNewEchidnaTestBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ERC20CustodyNewEchidnaTestMetaData.Bin instead. -var ERC20CustodyNewEchidnaTestBin = ERC20CustodyNewEchidnaTestMetaData.Bin +// ERC20CustodyEchidnaTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyEchidnaTestMetaData.Bin instead. +var ERC20CustodyEchidnaTestBin = ERC20CustodyEchidnaTestMetaData.Bin -// DeployERC20CustodyNewEchidnaTest deploys a new Ethereum contract, binding an instance of ERC20CustodyNewEchidnaTest to it. -func DeployERC20CustodyNewEchidnaTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20CustodyNewEchidnaTest, error) { - parsed, err := ERC20CustodyNewEchidnaTestMetaData.GetAbi() +// DeployERC20CustodyEchidnaTest deploys a new Ethereum contract, binding an instance of ERC20CustodyEchidnaTest to it. +func DeployERC20CustodyEchidnaTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20CustodyEchidnaTest, error) { + parsed, err := ERC20CustodyEchidnaTestMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -53,111 +53,111 @@ func DeployERC20CustodyNewEchidnaTest(auth *bind.TransactOpts, backend bind.Cont return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyNewEchidnaTestBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyEchidnaTestBin), backend) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ERC20CustodyNewEchidnaTest{ERC20CustodyNewEchidnaTestCaller: ERC20CustodyNewEchidnaTestCaller{contract: contract}, ERC20CustodyNewEchidnaTestTransactor: ERC20CustodyNewEchidnaTestTransactor{contract: contract}, ERC20CustodyNewEchidnaTestFilterer: ERC20CustodyNewEchidnaTestFilterer{contract: contract}}, nil + return address, tx, &ERC20CustodyEchidnaTest{ERC20CustodyEchidnaTestCaller: ERC20CustodyEchidnaTestCaller{contract: contract}, ERC20CustodyEchidnaTestTransactor: ERC20CustodyEchidnaTestTransactor{contract: contract}, ERC20CustodyEchidnaTestFilterer: ERC20CustodyEchidnaTestFilterer{contract: contract}}, nil } -// ERC20CustodyNewEchidnaTest is an auto generated Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTest struct { - ERC20CustodyNewEchidnaTestCaller // Read-only binding to the contract - ERC20CustodyNewEchidnaTestTransactor // Write-only binding to the contract - ERC20CustodyNewEchidnaTestFilterer // Log filterer for contract events +// ERC20CustodyEchidnaTest is an auto generated Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTest struct { + ERC20CustodyEchidnaTestCaller // Read-only binding to the contract + ERC20CustodyEchidnaTestTransactor // Write-only binding to the contract + ERC20CustodyEchidnaTestFilterer // Log filterer for contract events } -// ERC20CustodyNewEchidnaTestCaller is an auto generated read-only Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTestCaller struct { +// ERC20CustodyEchidnaTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTestCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewEchidnaTestTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTestTransactor struct { +// ERC20CustodyEchidnaTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTestTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewEchidnaTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ERC20CustodyNewEchidnaTestFilterer struct { +// ERC20CustodyEchidnaTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyEchidnaTestFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ERC20CustodyNewEchidnaTestSession is an auto generated Go binding around an Ethereum contract, +// ERC20CustodyEchidnaTestSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ERC20CustodyNewEchidnaTestSession struct { - Contract *ERC20CustodyNewEchidnaTest // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20CustodyEchidnaTestSession struct { + Contract *ERC20CustodyEchidnaTest // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20CustodyNewEchidnaTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ERC20CustodyEchidnaTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ERC20CustodyNewEchidnaTestCallerSession struct { - Contract *ERC20CustodyNewEchidnaTestCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ERC20CustodyEchidnaTestCallerSession struct { + Contract *ERC20CustodyEchidnaTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ERC20CustodyNewEchidnaTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ERC20CustodyEchidnaTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ERC20CustodyNewEchidnaTestTransactorSession struct { - Contract *ERC20CustodyNewEchidnaTestTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ERC20CustodyEchidnaTestTransactorSession struct { + Contract *ERC20CustodyEchidnaTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ERC20CustodyNewEchidnaTestRaw is an auto generated low-level Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTestRaw struct { - Contract *ERC20CustodyNewEchidnaTest // Generic contract binding to access the raw methods on +// ERC20CustodyEchidnaTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTestRaw struct { + Contract *ERC20CustodyEchidnaTest // Generic contract binding to access the raw methods on } -// ERC20CustodyNewEchidnaTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTestCallerRaw struct { - Contract *ERC20CustodyNewEchidnaTestCaller // Generic read-only contract binding to access the raw methods on +// ERC20CustodyEchidnaTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTestCallerRaw struct { + Contract *ERC20CustodyEchidnaTestCaller // Generic read-only contract binding to access the raw methods on } -// ERC20CustodyNewEchidnaTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ERC20CustodyNewEchidnaTestTransactorRaw struct { - Contract *ERC20CustodyNewEchidnaTestTransactor // Generic write-only contract binding to access the raw methods on +// ERC20CustodyEchidnaTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyEchidnaTestTransactorRaw struct { + Contract *ERC20CustodyEchidnaTestTransactor // Generic write-only contract binding to access the raw methods on } -// NewERC20CustodyNewEchidnaTest creates a new instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. -func NewERC20CustodyNewEchidnaTest(address common.Address, backend bind.ContractBackend) (*ERC20CustodyNewEchidnaTest, error) { - contract, err := bindERC20CustodyNewEchidnaTest(address, backend, backend, backend) +// NewERC20CustodyEchidnaTest creates a new instance of ERC20CustodyEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyEchidnaTest(address common.Address, backend bind.ContractBackend) (*ERC20CustodyEchidnaTest, error) { + contract, err := bindERC20CustodyEchidnaTest(address, backend, backend, backend) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTest{ERC20CustodyNewEchidnaTestCaller: ERC20CustodyNewEchidnaTestCaller{contract: contract}, ERC20CustodyNewEchidnaTestTransactor: ERC20CustodyNewEchidnaTestTransactor{contract: contract}, ERC20CustodyNewEchidnaTestFilterer: ERC20CustodyNewEchidnaTestFilterer{contract: contract}}, nil + return &ERC20CustodyEchidnaTest{ERC20CustodyEchidnaTestCaller: ERC20CustodyEchidnaTestCaller{contract: contract}, ERC20CustodyEchidnaTestTransactor: ERC20CustodyEchidnaTestTransactor{contract: contract}, ERC20CustodyEchidnaTestFilterer: ERC20CustodyEchidnaTestFilterer{contract: contract}}, nil } -// NewERC20CustodyNewEchidnaTestCaller creates a new read-only instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. -func NewERC20CustodyNewEchidnaTestCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyNewEchidnaTestCaller, error) { - contract, err := bindERC20CustodyNewEchidnaTest(address, caller, nil, nil) +// NewERC20CustodyEchidnaTestCaller creates a new read-only instance of ERC20CustodyEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyEchidnaTestCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyEchidnaTestCaller, error) { + contract, err := bindERC20CustodyEchidnaTest(address, caller, nil, nil) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestCaller{contract: contract}, nil + return &ERC20CustodyEchidnaTestCaller{contract: contract}, nil } -// NewERC20CustodyNewEchidnaTestTransactor creates a new write-only instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. -func NewERC20CustodyNewEchidnaTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyNewEchidnaTestTransactor, error) { - contract, err := bindERC20CustodyNewEchidnaTest(address, nil, transactor, nil) +// NewERC20CustodyEchidnaTestTransactor creates a new write-only instance of ERC20CustodyEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyEchidnaTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyEchidnaTestTransactor, error) { + contract, err := bindERC20CustodyEchidnaTest(address, nil, transactor, nil) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestTransactor{contract: contract}, nil + return &ERC20CustodyEchidnaTestTransactor{contract: contract}, nil } -// NewERC20CustodyNewEchidnaTestFilterer creates a new log filterer instance of ERC20CustodyNewEchidnaTest, bound to a specific deployed contract. -func NewERC20CustodyNewEchidnaTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyNewEchidnaTestFilterer, error) { - contract, err := bindERC20CustodyNewEchidnaTest(address, nil, nil, filterer) +// NewERC20CustodyEchidnaTestFilterer creates a new log filterer instance of ERC20CustodyEchidnaTest, bound to a specific deployed contract. +func NewERC20CustodyEchidnaTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyEchidnaTestFilterer, error) { + contract, err := bindERC20CustodyEchidnaTest(address, nil, nil, filterer) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestFilterer{contract: contract}, nil + return &ERC20CustodyEchidnaTestFilterer{contract: contract}, nil } -// bindERC20CustodyNewEchidnaTest binds a generic wrapper to an already deployed contract. -func bindERC20CustodyNewEchidnaTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ERC20CustodyNewEchidnaTestMetaData.GetAbi() +// bindERC20CustodyEchidnaTest binds a generic wrapper to an already deployed contract. +func bindERC20CustodyEchidnaTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyEchidnaTestMetaData.GetAbi() if err != nil { return nil, err } @@ -168,46 +168,46 @@ func bindERC20CustodyNewEchidnaTest(address common.Address, caller bind.Contract // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestCaller.contract.Call(opts, result, method, params...) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyEchidnaTest.Contract.ERC20CustodyEchidnaTestCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestTransactor.contract.Transfer(opts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.ERC20CustodyEchidnaTestTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.ERC20CustodyNewEchidnaTestTransactor.contract.Transact(opts, method, params...) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.ERC20CustodyEchidnaTestTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ERC20CustodyNewEchidnaTest.Contract.contract.Call(opts, result, method, params...) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyEchidnaTest.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.contract.Transfer(opts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.contract.Transact(opts, method, params...) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.contract.Transact(opts, method, params...) } // EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. // // Solidity: function echidnaCaller() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) EchidnaCaller(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) EchidnaCaller(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "echidnaCaller") + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "echidnaCaller") if err != nil { return *new(common.Address), err @@ -222,23 +222,23 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) EchidnaCall // EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. // // Solidity: function echidnaCaller() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) EchidnaCaller() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) EchidnaCaller() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyEchidnaTest.CallOpts) } // EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. // // Solidity: function echidnaCaller() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) EchidnaCaller() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) EchidnaCaller() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.EchidnaCaller(&_ERC20CustodyEchidnaTest.CallOpts) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "gateway") + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "gateway") if err != nil { return *new(common.Address), err @@ -253,23 +253,23 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) Gateway(opt // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) Gateway() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.Gateway(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) Gateway() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.Gateway(&_ERC20CustodyEchidnaTest.CallOpts) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) Gateway() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.Gateway(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) Gateway() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.Gateway(&_ERC20CustodyEchidnaTest.CallOpts) } // TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. // // Solidity: function testERC20() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TestERC20(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) TestERC20(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "testERC20") + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "testERC20") if err != nil { return *new(common.Address), err @@ -284,23 +284,23 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TestERC20(o // TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. // // Solidity: function testERC20() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TestERC20() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TestERC20(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) TestERC20() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.TestERC20(&_ERC20CustodyEchidnaTest.CallOpts) } // TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. // // Solidity: function testERC20() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) TestERC20() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TestERC20(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) TestERC20() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.TestERC20(&_ERC20CustodyEchidnaTest.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ERC20CustodyNewEchidnaTest.contract.Call(opts, &out, "tssAddress") + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "tssAddress") if err != nil { return *new(common.Address), err @@ -315,104 +315,104 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCaller) TssAddress( // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TssAddress(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) TssAddress() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.TssAddress(&_ERC20CustodyEchidnaTest.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestCallerSession) TssAddress() (common.Address, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TssAddress(&_ERC20CustodyNewEchidnaTest.CallOpts) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) TssAddress() (common.Address, error) { + return _ERC20CustodyEchidnaTest.Contract.TssAddress(&_ERC20CustodyEchidnaTest.CallOpts) } // TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. // // Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) TestWithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "testWithdrawAndCall", to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) TestWithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "testWithdrawAndCall", to, amount, data) } // TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. // // Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyEchidnaTest.TransactOpts, to, amount, data) } // TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. // // Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) TestWithdrawAndCall(to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyEchidnaTest.TransactOpts, to, amount, data) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdraw", token, to, amount) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) Withdraw(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "withdraw", token, to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.Withdraw(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Withdraw(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.Withdraw(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) Withdraw(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Withdraw(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) WithdrawAndCall(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "withdrawAndCall", token, to, amount, data) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount, data) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x21fc65f2. // // Solidity: function withdrawAndCall(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) WithdrawAndCall(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.WithdrawAndCall(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) WithdrawAndRevert(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "withdrawAndRevert", token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount, data) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0xc8a02362. // // Solidity: function withdrawAndRevert(address token, address to, uint256 amount, bytes data) returns() -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { - return _ERC20CustodyNewEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyNewEchidnaTest.TransactOpts, token, to, amount, data) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) WithdrawAndRevert(token common.Address, to common.Address, amount *big.Int, data []byte) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount, data) } -// ERC20CustodyNewEchidnaTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdrawIterator struct { - Event *ERC20CustodyNewEchidnaTestWithdraw // Event containing the contract specifics and raw log +// ERC20CustodyEchidnaTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdrawIterator struct { + Event *ERC20CustodyEchidnaTestWithdraw // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -426,7 +426,7 @@ type ERC20CustodyNewEchidnaTestWithdrawIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Next() bool { +func (it *ERC20CustodyEchidnaTestWithdrawIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -435,7 +435,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdraw) + it.Event = new(ERC20CustodyEchidnaTestWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -450,7 +450,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdraw) + it.Event = new(ERC20CustodyEchidnaTestWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -466,19 +466,19 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Error() error { +func (it *ERC20CustodyEchidnaTestWithdrawIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewEchidnaTestWithdrawIterator) Close() error { +func (it *ERC20CustodyEchidnaTestWithdrawIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewEchidnaTestWithdraw represents a Withdraw event raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdraw struct { +// ERC20CustodyEchidnaTestWithdraw represents a Withdraw event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdraw struct { Token common.Address To common.Address Amount *big.Int @@ -488,7 +488,7 @@ type ERC20CustodyNewEchidnaTestWithdraw struct { // FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawIterator, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyEchidnaTestWithdrawIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -499,17 +499,17 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWit toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestWithdrawIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil + return &ERC20CustodyEchidnaTestWithdrawIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "Withdraw", logs: logs, sub: sub}, nil } // WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -520,7 +520,7 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } @@ -530,8 +530,8 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewEchidnaTestWithdraw) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { + event := new(ERC20CustodyEchidnaTestWithdraw) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { return err } event.Raw = log @@ -555,18 +555,18 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith // ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyNewEchidnaTestWithdraw, error) { - event := new(ERC20CustodyNewEchidnaTestWithdraw) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseWithdraw(log types.Log) (*ERC20CustodyEchidnaTestWithdraw, error) { + event := new(ERC20CustodyEchidnaTestWithdraw) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Withdraw", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20CustodyNewEchidnaTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdrawAndCallIterator struct { - Event *ERC20CustodyNewEchidnaTestWithdrawAndCall // Event containing the contract specifics and raw log +// ERC20CustodyEchidnaTestWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdrawAndCallIterator struct { + Event *ERC20CustodyEchidnaTestWithdrawAndCall // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -580,7 +580,7 @@ type ERC20CustodyNewEchidnaTestWithdrawAndCallIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Next() bool { +func (it *ERC20CustodyEchidnaTestWithdrawAndCallIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -589,7 +589,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + it.Event = new(ERC20CustodyEchidnaTestWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -604,7 +604,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndCall) + it.Event = new(ERC20CustodyEchidnaTestWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -620,19 +620,19 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Error() error { +func (it *ERC20CustodyEchidnaTestWithdrawAndCallIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndCallIterator) Close() error { +func (it *ERC20CustodyEchidnaTestWithdrawAndCallIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewEchidnaTestWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdrawAndCall struct { +// ERC20CustodyEchidnaTestWithdrawAndCall represents a WithdrawAndCall event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdrawAndCall struct { Token common.Address To common.Address Amount *big.Int @@ -643,7 +643,7 @@ type ERC20CustodyNewEchidnaTestWithdrawAndCall struct { // FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawAndCallIterator, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyEchidnaTestWithdrawAndCallIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -654,17 +654,17 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWit toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestWithdrawAndCallIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil + return &ERC20CustodyEchidnaTestWithdrawAndCallIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil } // WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -675,7 +675,7 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } @@ -685,8 +685,8 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewEchidnaTestWithdrawAndCall) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + event := new(ERC20CustodyEchidnaTestWithdrawAndCall) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return err } event.Raw = log @@ -710,18 +710,18 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith // ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyNewEchidnaTestWithdrawAndCall, error) { - event := new(ERC20CustodyNewEchidnaTestWithdrawAndCall) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseWithdrawAndCall(log types.Log) (*ERC20CustodyEchidnaTestWithdrawAndCall, error) { + event := new(ERC20CustodyEchidnaTestWithdrawAndCall) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator struct { - Event *ERC20CustodyNewEchidnaTestWithdrawAndRevert // Event containing the contract specifics and raw log +// ERC20CustodyEchidnaTestWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdrawAndRevertIterator struct { + Event *ERC20CustodyEchidnaTestWithdrawAndRevert // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -735,7 +735,7 @@ type ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Next() bool { +func (it *ERC20CustodyEchidnaTestWithdrawAndRevertIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -744,7 +744,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + it.Event = new(ERC20CustodyEchidnaTestWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -759,7 +759,7 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) + it.Event = new(ERC20CustodyEchidnaTestWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -775,19 +775,19 @@ func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Error() error { +func (it *ERC20CustodyEchidnaTestWithdrawAndRevertIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator) Close() error { +func (it *ERC20CustodyEchidnaTestWithdrawAndRevertIterator) Close() error { it.sub.Unsubscribe() return nil } -// ERC20CustodyNewEchidnaTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyNewEchidnaTest contract. -type ERC20CustodyNewEchidnaTestWithdrawAndRevert struct { +// ERC20CustodyEchidnaTestWithdrawAndRevert represents a WithdrawAndRevert event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestWithdrawAndRevert struct { Token common.Address To common.Address Amount *big.Int @@ -798,7 +798,7 @@ type ERC20CustodyNewEchidnaTestWithdrawAndRevert struct { // FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*ERC20CustodyEchidnaTestWithdrawAndRevertIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -809,17 +809,17 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) FilterWit toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } - return &ERC20CustodyNewEchidnaTestWithdrawAndRevertIterator{contract: _ERC20CustodyNewEchidnaTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil + return &ERC20CustodyEchidnaTestWithdrawAndRevertIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil } // WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyNewEchidnaTestWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -830,7 +830,7 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith toRule = append(toRule, toItem) } - logs, sub, err := _ERC20CustodyNewEchidnaTest.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } @@ -840,8 +840,8 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + event := new(ERC20CustodyEchidnaTestWithdrawAndRevert) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return err } event.Raw = log @@ -865,9 +865,9 @@ func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) WatchWith // ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_ERC20CustodyNewEchidnaTest *ERC20CustodyNewEchidnaTestFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyNewEchidnaTestWithdrawAndRevert, error) { - event := new(ERC20CustodyNewEchidnaTestWithdrawAndRevert) - if err := _ERC20CustodyNewEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseWithdrawAndRevert(log types.Log) (*ERC20CustodyEchidnaTestWithdrawAndRevert, error) { + event := new(ERC20CustodyEchidnaTestWithdrawAndRevert) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return nil, err } event.Raw = log diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go index 8b0ea580..387da9aa 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -32,7 +32,7 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220abbff2739a31446b484d2eb9c0ffb41515c9145c3574c0a292938cdb16afc8b464736f6c634300081a0033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go index fb1c8309..815a279c 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. var GatewayEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061a674806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610c87565b6040516101b6919061687e565b60405180910390f35b6101c7610ce9565b6040516101b6919061691a565b61018f610e2b565b6101a9611298565b6101a96112f8565b61018f611358565b6101fc611755565b6040516101b69190616a80565b6102116118d7565b6040516101b69190616b1e565b6102266119a7565b6040516101b69190616b95565b61018f611aa2565b61018f611cbe565b610226611ea3565b610211611f9e565b61025b61206e565b60405190151581526020016101b6565b61018f612142565b61018f6122dc565b6101a961248b565b61018f6124eb565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c5b565b8261268d565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce9061679e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516106989061679e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754915191909416928101929092526044820152610800919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261270c565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690610884906167ab565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156108b7573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061090c906167b8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610948573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc1575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e2257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e0b578382906000526020600020018054610d7e90616c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610daa90616c6e565b8015610df75780601f10610dcc57610100808354040283529160200191610df7565b820191906000526020600020905b815481529060010190602001808311610dda57829003601f168201915b505050505081526020019060010190610d5f565b505050508152505081526020019060010190610d0d565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190616cbb565b9050610ec860008261268d565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561105e57600080fd5b505af1158015611072573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110c5928992909116908790616cf6565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361112693908216928992909116908790600401616d1e565b600060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190616cbb565b90506111f0848261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e9190616cbb565b9050611291856028546105719190616d55565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190616cbb565b90506113f560008261268d565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190616cbb565b90506116b4838261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190616cbb565b9050610c81846028546105719190616d55565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002090600202016040518060400160405290816000820180546117ac90616c6e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890616c6e565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161186c5790505b50505050508152505081526020019060010190611779565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002001805461191a90616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461194690616c6e565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050815260200190600101906118fb565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a8a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a375790505b505050505081525050815260200190600101906119cb565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bb357600080fd5b505af1158015611bc7573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c159087906000908790616cf6565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c6f92909116908690600401616d68565b6000604051808303818588803b158015611c8857600080fd5b505af1158015611c9c573d6000803e3d6000fd5b50506027546001600160a01b0316319250610c81915061057190508585616c5b565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dc157600080fd5b505af1158015611dd5573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e1e908590616d8a565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611e75929116908590600401616d68565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611291573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f335790505b50505050508152505081526020019060010190611ec7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e22578382906000526020600020018054611fe190616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90616c6e565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081526020019060010190611fc2565b60085460009060ff1615612086575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190616cbb565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122399060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122c29392831692889216908790600401616d1e565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123d39060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b1580156123ed57600080fd5b505af1158015612401573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124559216908690600401616d68565b6000604051808303818588803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190616cd4565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611e75565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156126f857600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127166167c5565b61272184848361272b565b9150505b92915050565b60008061273885846127a6565b905061279b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001612786929190616d68565b604051602081830303815290604052856127b2565b9150505b9392505050565b600061279f83836127e0565b60c081015151600090156127d6576127cf84848460c001516127fb565b905061279f565b6127cf84846129a1565b60006127ec8383612a8c565b61279f838360200151846127b2565b600080612806612a9c565b905060006128148683612b6f565b9050600061282b8260600151836020015185613015565b9050600061283b83838989613227565b90506000612848826140a4565b602081015181519192509060030b156128bb57898260400151604051602001612872929190616d9d565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128b291600401616d8a565b60405180910390fd5b60006128fe6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614273565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90612951908490600401616d8a565b602060405180830381865afa15801561296e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129929190616e1e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906129f6908790600401616d8a565b600060405180830381865afa158015612a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3b9190810190616f2f565b90506000612a698285604051602001612a55929190616f64565b604051602081830303815290604052614473565b90506001600160a01b038116612721578484604051602001612872929190616f93565b612a9882826000614486565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b2390849060040161703e565b600060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b689190810190617085565b9250505090565b612ba16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612bec6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612bf585614589565b60208201526000612c058661496e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c6f9190810190617085565b86838560200151604051602001612c8994939291906170ce565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612ce1908590600401616d8a565b600060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d269190810190617085565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d6e9084906004016171d2565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190616cd4565b612dc457816040516020016128729190617224565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e099084906004016172b6565b600060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e4e9190810190617085565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612e95908490600401617308565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190616cd4565b15612f6b576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f20908490600401617308565b600060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f659190810190617085565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612f90919061735a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fbc9291906173c6565b600060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130019190810190617085565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816130315790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613091576130916173eb565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106130e5576130e56173eb565b602002602001018190525084604051602001613101919061741a565b60405160208183030381529060405281600281518110613123576131236173eb565b60200260200101819052508260405160200161313f9190617486565b60405160208183030381529060405281600381518110613161576131616173eb565b60200260200101819052506000613177826140a4565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132089060408051808201825260008082526020918201528151808301909252845182528085019082015290614bf1565b61321d578560405160200161287291906174c7565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613277565b511590565b6133eb57826020015115613333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128b2565b8260c00151156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128b2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161340457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061345f90617558565b935060ff1681518110613474576134746173eb565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134c59190617577565b6040516020818303038152906040528282806134e090617558565b935060ff16815181106134f5576134f56173eb565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061354290617558565b935060ff1681518110613557576135576173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135a490617558565b935060ff16815181106135b9576135b96173eb565b602002602001018190525087602001518282806135d590617558565b935060ff16815181106135ea576135ea6173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061363790617558565b935060ff168151811061364c5761364c6173eb565b60209081029190910101528751828261366481617558565b935060ff1681518110613679576136796173eb565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136c690617558565b935060ff16815181106136db576136db6173eb565b60200260200101819052506136ef46614c52565b82826136fa81617558565b935060ff168151811061370f5761370f6173eb565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061375c90617558565b935060ff1681518110613771576137716173eb565b60200260200101819052508682828061378990617558565b935060ff168151811061379e5761379e6173eb565b60209081029190910101528551156138c55760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826137ef81617558565b935060ff1681518110613804576138046173eb565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613854908990600401616d8a565b600060405180830381865afa158015613871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138999190810190617085565b82826138a481617558565b935060ff16815181106138b9576138b96173eb565b60200260200101819052505b8460200151156139955760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261390e81617558565b935060ff1681518110613923576139236173eb565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061397090617558565b935060ff1681518110613985576139856173eb565b6020026020010181905250613b5c565b6139cd6132728660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a605760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a1081617558565b935060ff1681518110613a2557613a256173eb565b60200260200101819052508460a00151604051602001613a45919061741a565b60405160208183030381529060405282828061397090617558565b8460c00151158015613aa3575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613aa190511590565b155b15613b5c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613ae781617558565b935060ff1681518110613afc57613afc6173eb565b6020026020010181905250613b1088614cf2565b604051602001613b20919061741a565b604051602081830303815290604052828280613b3b90617558565b935060ff1681518110613b5057613b506173eb565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613b9090511590565b613c255760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bd381617558565b935060ff1681518110613be857613be86173eb565b60200260200101819052508460400151828280613c0490617558565b935060ff1681518110613c1957613c196173eb565b60200260200101819052505b606085015115613d465760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c6e81617558565b935060ff1681518110613c8357613c836173eb565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613cf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1a9190810190617085565b8282613d2581617558565b935060ff1681518110613d3a57613d3a6173eb565b60200260200101819052505b60e08501515115613ded5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613d9081617558565b935060ff1681518110613da557613da56173eb565b6020026020010181905250613dc18560e0015160000151614c52565b8282613dcc81617558565b935060ff1681518110613de157613de16173eb565b60200260200101819052505b60e08501516020015115613e975760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e3a81617558565b935060ff1681518110613e4f57613e4f6173eb565b6020026020010181905250613e6b8560e0015160200151614c52565b8282613e7681617558565b935060ff1681518110613e8b57613e8b6173eb565b60200260200101819052505b60e08501516040015115613f415760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613ee481617558565b935060ff1681518110613ef957613ef96173eb565b6020026020010181905250613f158560e0015160400151614c52565b8282613f2081617558565b935060ff1681518110613f3557613f356173eb565b60200260200101819052505b60e08501516060015115613feb5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613f8e81617558565b935060ff1681518110613fa357613fa36173eb565b6020026020010181905250613fbf8560e0015160600151614c52565b8282613fca81617558565b935060ff1681518110613fdf57613fdf6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561400957614009616e47565b60405190808252806020026020018201604052801561403c57816020015b60608152602001906001900390816140275790505b50905060005b8260ff168160ff16101561409557838160ff1681518110614065576140656173eb565b6020026020010151828260ff1681518110614082576140826173eb565b6020908102919091010152600101614042565b5093505050505b949350505050565b6140cb6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614151918691016175e2565b600060405180830381865afa15801561416e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141969190810190617085565b905060006141a486836157e1565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016141d49190616b1e565b6000604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261421b9190810190617629565b805190915060030b158015906142345750602081015151155b80156142435750604081015151155b1561321d578160008151811061425b5761425b6173eb565b602002602001015160405160200161287291906176df565b606060006142a88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506142df9082905b90615936565b1561443c57600061435c82614356846143506143228a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061595d565b906159bf565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143c0908290615936565b1561442a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614427905b8290615a44565b90505b61443381615a6a565b9250505061279f565b82156144555784846040516020016128729291906178cb565b505060408051602081019091526000815261279f565b509392505050565b6000808251602084016000f09392505050565b8160a001511561449557505050565b60006144a2848484615ad3565b905060006144af826140a4565b602081015181519192509060030b15801561454b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261454b906040805180820182526000808252602091820152815180830190925284518252808501908201526142d9565b1561455857505050505050565b604082015151156145785781604001516040516020016128729190617972565b8060405160200161287291906179d0565b606060006145be8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614623905b8290614bf1565b1561469257604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d90839061606e565b615a6a565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146f4905b82906160f8565b6001036147c157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261475a90614420565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d905b8390615a44565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148209061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614888908390616192565b90506000816001835161489b9190616d55565b815181106148ab576148ab6173eb565b6020026020010151905061494e61468d6149216040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061606e565b95945050505050565b826040516020016128729190617a3b565b50919050565b606060006149a38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a059061461c565b15614a135761279f81615a6a565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a72906146ed565b600103614adc57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d906147ba565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b3b9061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614ba3908390616192565b9050600181511115614bdf578060028251614bbe9190616d55565b81518110614bce57614bce6173eb565b602002602001015192505050919050565b50826040516020016128729190617a3b565b805182516000911115614c0657506000612725565b81518351602085015160009291614c1c91616c5b565b614c269190616d55565b905082602001518103614c3d576001915050612725565b82516020840151819020912014905092915050565b60606000614c5f83616237565b600101905060008167ffffffffffffffff811115614c7f57614c7f616e47565b6040519080825280601f01601f191660200182016040528015614ca9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cb357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614d7e905b8290616319565b15614dbe57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e1d90614d77565b15614e5d57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ebc90614d77565b15614efc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f5b90614d77565b80614fc05750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fc090614d77565b1561500057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261505f90614d77565b806150c45750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150c490614d77565b1561510457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261516390614d77565b806151c85750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151c890614d77565b1561520857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261526790614d77565b806152cc5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152cc90614d77565b1561530c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261536b90614d77565b156153ab57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261540a90614d77565b1561544a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154a990614d77565b156154e957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261554890614d77565b1561558857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e790614d77565b1561562757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261568690614d77565b806156eb5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156eb90614d77565b1561572b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578a90614d77565b156157ca57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516128729290602001617b19565b60608060005b845181101561586c5781858281518110615803576158036173eb565b602002602001015160405160200161581c929190616f64565b60405160208183030381529060405291506001855161583b9190616d55565b811461586457816040516020016158529190617c82565b60405160208183030381529060405291505b6001016157e7565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161588557905050905083816000815181106158b0576158b06173eb565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110615904576159046173eb565b60200260200101819052508181600281518110615923576159236173eb565b6020908102919091010152949350505050565b6020808301518351835192840151600093615954929184919061632d565b14159392505050565b6040805180820190915260008082526020820152600061598f846000015185602001518560000151866020015161643e565b90508360200151816159a19190616d55565b845185906159b0908390616d55565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156159e4575081612725565b6020808301519084015160019114615a0b5750815160208481015190840151829020919020145b8015615a3c57825184518590615a22908390616d55565b9052508251602085018051615a38908390616c5b565b9052505b509192915050565b6040805180820190915260008082526020820152615a6383838361655e565b5092915050565b60606000826000015167ffffffffffffffff811115615a8b57615a8b616e47565b6040519080825280601f01601f191660200182016040528015615ab5576020820181803683370190505b5090506000602082019050615a638185602001518660000151616609565b60606000615adf612a9c565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615afc57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b5790617558565b935060ff1681518110615b6c57615b6c6173eb565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615bbd9190617cc3565b604051602081830303815290604052828280615bd890617558565b935060ff1681518110615bed57615bed6173eb565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c3a90617558565b935060ff1681518110615c4f57615c4f6173eb565b602002602001018190525082604051602001615c6b9190617486565b604051602081830303815290604052828280615c8690617558565b935060ff1681518110615c9b57615c9b6173eb565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615ce890617558565b935060ff1681518110615cfd57615cfd6173eb565b6020026020010181905250615d128784616683565b8282615d1d81617558565b935060ff1681518110615d3257615d326173eb565b602090810291909101015285515115615dde5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615d8481617558565b935060ff1681518110615d9957615d996173eb565b6020026020010181905250615db2866000015184616683565b8282615dbd81617558565b935060ff1681518110615dd257615dd26173eb565b60200260200101819052505b856080015115615e4c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e2781617558565b935060ff1681518110615e3c57615e3c6173eb565b6020026020010181905250615eb2565b8415615eb25760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615e9181617558565b935060ff1681518110615ea657615ea66173eb565b60200260200101819052505b60408601515115615f4e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615efc81617558565b935060ff1681518110615f1157615f116173eb565b60200260200101819052508560400151828280615f2d90617558565b935060ff1681518110615f4257615f426173eb565b60200260200101819052505b856060015115615fb85760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615f9781617558565b935060ff1681518110615fac57615fac6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615fd657615fd6616e47565b60405190808252806020026020018201604052801561600957816020015b6060815260200190600190039081615ff45790505b50905060005b8260ff168160ff16101561606257838160ff1681518110616032576160326173eb565b6020026020010151828260ff168151811061604f5761604f6173eb565b602090810291909101015260010161600f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616093575081612725565b815183516020850151600092916160a991616c5b565b6160b39190616d55565b602084015190915060019082146160d4575082516020840151819020908220145b80156160ef578351855186906160eb908390616d55565b9052505b50929392505050565b600080826000015161611c856000015186602001518660000151876020015161643e565b6161269190616c5b565b90505b8351602085015161613a9190616c5b565b8111615a63578161614a81617d08565b92505082600001516161818560200151836161659190616d55565b86516161719190616d55565b838660000151876020015161643e565b61618b9190616c5b565b9050616129565b606060006161a084846160f8565b6161ab906001616c5b565b67ffffffffffffffff8111156161c3576161c3616e47565b6040519080825280602002602001820160405280156161f657816020015b60608152602001906001900390816161e15790505b50905060005b815181101561446b5761621261468d8686615a44565b828281518110616224576162246173eb565b60209081029190910101526001016161fc565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616280577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162ac576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162ca57662386f26fc10000830492506010015b6305f5e10083106162e2576305f5e100830492506008015b61271083106162f657612710830492506004015b60648310616308576064830492506002015b600a83106127255760010192915050565b600061632583836166c3565b159392505050565b60008085841161643457602084116163e05760008415616378576001616354866020616d55565b61635f906008617d22565b61636a906002617e20565b6163749190616d55565b1990505b83518116856163878989616c5b565b6163919190616d55565b805190935082165b8181146163cb578784116163b3578794505050505061409c565b836163bd81617e2c565b945050828451169050616399565b6163d58785616c5b565b94505050505061409c565b8383206163ed8588616d55565b6163f79087616c5b565b91505b8582106164325784822080820361641f576164158684616c5b565b935050505061409c565b61642a600184616d55565b9250506163fa565b505b5092949350505050565b6000838186851161654957602085116164f8576000851561648a576001616466876020616d55565b616471906008617d22565b61647c906002617e20565b6164869190616d55565b1990505b8451811660008761649b8b8b616c5b565b6164a59190616d55565b855190915083165b8281146164ea578186106164d2576164c58b8b616c5b565b965050505050505061409c565b856164dc81617d08565b9650508386511690506164ad565b85965050505050505061409c565b508383206000905b61650a8689616d55565b821161654757858320808203616526578394505050505061409c565b616531600185616c5b565b935050818061653f90617d08565b925050616500565b505b6165538787616c5b565b979650505050505050565b60408051808201909152600080825260208201526000616590856000015186602001518660000151876020015161643e565b6020808701805191860191909152519091506165ac9082616d55565b8352845160208601516165bf9190616c5b565b81036165ce5760008552616600565b835183516165dc9190616c5b565b855186906165eb908390616d55565b90525083516165fa9082616c5b565b60208601525b50909392505050565b602081106166415781518352616620602084616c5b565b925061662d602083616c5b565b915061663a602082616d55565b9050616609565b6000198115616670576001616657836020616d55565b61666390610100617e20565b61666d9190616d55565b90505b9151835183169219169190911790915250565b606060006166918484612b6f565b80516020808301516040519394506166ab93909101617e43565b60405160208183030381529060405291505092915050565b81518151600091908111156166d6575081515b6020808501519084015160005b8381101561678f578251825180821461675f57600019602087101561673e57600184616710896020616d55565b61671a9190616c5b565b616725906008617d22565b616730906002617e20565b61673a9190616d55565b1990505b818116838216818103911461675c5797506127259650505050505050565b50505b61676a602086616c5b565b9450616777602085616c5b565b935050506020816167889190616c5b565b90506166e3565b508451865161321d9190617e9b565b610c9f80617ebc83390190565b610b4a80618b5b83390190565b610f9a806196a583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161680861680d565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168086040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168bf5783516001600160a01b0316835260209384019390920191600101616898565b509095945050505050565b60005b838110156168e55781810151838201526020016168cd565b50506000910152565b600081518084526169068160208601602086016168ca565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156169fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526169e68486516168ee565b60209586019590945092909201916001016169ac565b509197505050602094850194929092019150600101616942565b50929695505050505050565b600081518084526020840193506020830160005b82811015616a765781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a36565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616aec60408801826168ee565b9050602082015191508681036020880152616b078183616a22565b965050506020938401939190910190600101616aa8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616b808583516168ee565b94506020938401939190910190600101616b46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c166040870182616a22565b9550506020938401939190910190600101616bbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561272557612725616c2c565b600181811c90821680616c8257607f821691505b602082108103614968577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616ccd57600080fd5b5051919050565b600060208284031215616ce657600080fd5b8151801515811461279f57600080fd5b8381526001600160a01b038316602082015260606040820152600061494e60608301846168ee565b6001600160a01b03851681528360208201526001600160a01b038316604082015260806060820152600061321d60808301846168ee565b8181038181111561272557612725616c2c565b6001600160a01b038316815260406020820152600061409c60408301846168ee565b60208152600061279f60208301846168ee565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616dd581601a8501602088016168ca565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e1281601c8401602088016168ca565b01601c01949350505050565b600060208284031215616e3057600080fd5b81516001600160a01b038116811461279f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616e9957616e99616e47565b60405290565b60008067ffffffffffffffff841115616eba57616eba616e47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616ee957616ee9616e47565b604052838152905080828401851015616f0157600080fd5b61446b8460208301856168ca565b600082601f830112616f2057600080fd5b61279f83835160208501616e9f565b600060208284031215616f4157600080fd5b815167ffffffffffffffff811115616f5857600080fd5b61272184828501616f0f565b60008351616f768184602088016168ca565b835190830190616f8a8183602088016168ca565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616fcb81601a8501602088016168ca565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170088160338401602088016168ca565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561709757600080fd5b815167ffffffffffffffff8111156170ae57600080fd5b8201601f810184136170bf57600080fd5b61272184825160208401616e9f565b600085516170e0818460208a016168ca565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161711a816001840160208a016168ca565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171588160028401602089016168ca565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161719a8160028401602088016168ca565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006171e560408301846168ee565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161725c81601f8501602087016168ca565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172c960408301846168ee565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061731b60408301846168ee565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173928160148501602087016168ca565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006173d960408301856168ee565b828103602084015261279b81856168ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516174528160018501602087016168ca565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174988184602087016168ca565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161754b81604b8501602087016168ca565b91909101604b0192915050565b600060ff821660ff810361756e5761756e616c2c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561763b57600080fd5b815167ffffffffffffffff81111561765257600080fd5b82016060818503121561766457600080fd5b61766c616e76565b81518060030b811461767d57600080fd5b8152602082015167ffffffffffffffff81111561769957600080fd5b6176a586828501616f0f565b602083015250604082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f0f565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161773d8160218501602087016168ca565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179298160218501602088016168ca565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161796681602e8401602088016168ca565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a2e8160228501602087016168ca565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a7381600e8501602087016168ca565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b518160188501602088016168ca565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617b8e81601c8401602088016168ca565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617c948184602087016168ca565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617cfb81601c8501602087016168ca565b91909101601c0192915050565b60006000198203617d1b57617d1b616c2c565b5060010190565b808202811582820484141761272557612725616c2c565b6001815b6001841115617d7457808504811115617d5857617d58616c2c565b6001841615617d6657908102905b60019390931c928002617d3d565b935093915050565b600082617d8b57506001612725565b81617d9857506000612725565b8160018114617dae5760028114617db857617dd4565b6001915050612725565b60ff841115617dc957617dc9616c2c565b50506001821b612725565b5060208310610133831016604e8410600b8410161715617df7575081810a612725565b617e046000198484617d39565b8060001904821115617e1857617e18616c2c565b029392505050565b600061279f8383617d7c565b600081617e3b57617e3b616c2c565b506000190190565b60008351617e558184602088016168ca565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617e8f8160018401602088016168ca565b01600101949350505050565b8181036000831280158383131683831282161715615a6357615a63616c2c56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033a2646970667358221220ad698860648ef94fdea10e636864a1b938e2e94a1b9b7faa26313a8246d5453e64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061a674806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610c87565b6040516101b6919061687e565b60405180910390f35b6101c7610ce9565b6040516101b6919061691a565b61018f610e2b565b6101a9611298565b6101a96112f8565b61018f611358565b6101fc611755565b6040516101b69190616a80565b6102116118d7565b6040516101b69190616b1e565b6102266119a7565b6040516101b69190616b95565b61018f611aa2565b61018f611cbe565b610226611ea3565b610211611f9e565b61025b61206e565b60405190151581526020016101b6565b61018f612142565b61018f6122dc565b6101a961248b565b61018f6124eb565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c5b565b8261268d565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce9061679e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516106989061679e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754915191909416928101929092526044820152610800919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261270c565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690610884906167ab565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156108b7573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061090c906167b8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610948573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc1575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e2257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e0b578382906000526020600020018054610d7e90616c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610daa90616c6e565b8015610df75780601f10610dcc57610100808354040283529160200191610df7565b820191906000526020600020905b815481529060010190602001808311610dda57829003601f168201915b505050505081526020019060010190610d5f565b505050508152505081526020019060010190610d0d565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190616cbb565b9050610ec860008261268d565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561105e57600080fd5b505af1158015611072573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110c5928992909116908790616cf6565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361112693908216928992909116908790600401616d1e565b600060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190616cbb565b90506111f0848261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e9190616cbb565b9050611291856028546105719190616d55565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190616cbb565b90506113f560008261268d565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190616cbb565b90506116b4838261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190616cbb565b9050610c81846028546105719190616d55565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002090600202016040518060400160405290816000820180546117ac90616c6e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890616c6e565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161186c5790505b50505050508152505081526020019060010190611779565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002001805461191a90616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461194690616c6e565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050815260200190600101906118fb565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a8a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a375790505b505050505081525050815260200190600101906119cb565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bb357600080fd5b505af1158015611bc7573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c159087906000908790616cf6565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c6f92909116908690600401616d68565b6000604051808303818588803b158015611c8857600080fd5b505af1158015611c9c573d6000803e3d6000fd5b50506027546001600160a01b0316319250610c81915061057190508585616c5b565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dc157600080fd5b505af1158015611dd5573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e1e908590616d8a565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611e75929116908590600401616d68565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611291573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f335790505b50505050508152505081526020019060010190611ec7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e22578382906000526020600020018054611fe190616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90616c6e565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081526020019060010190611fc2565b60085460009060ff1615612086575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190616cbb565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122399060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122c29392831692889216908790600401616d1e565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123d39060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b1580156123ed57600080fd5b505af1158015612401573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124559216908690600401616d68565b6000604051808303818588803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190616cd4565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611e75565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156126f857600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127166167c5565b61272184848361272b565b9150505b92915050565b60008061273885846127a6565b905061279b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001612786929190616d68565b604051602081830303815290604052856127b2565b9150505b9392505050565b600061279f83836127e0565b60c081015151600090156127d6576127cf84848460c001516127fb565b905061279f565b6127cf84846129a1565b60006127ec8383612a8c565b61279f838360200151846127b2565b600080612806612a9c565b905060006128148683612b6f565b9050600061282b8260600151836020015185613015565b9050600061283b83838989613227565b90506000612848826140a4565b602081015181519192509060030b156128bb57898260400151604051602001612872929190616d9d565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128b291600401616d8a565b60405180910390fd5b60006128fe6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614273565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90612951908490600401616d8a565b602060405180830381865afa15801561296e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129929190616e1e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906129f6908790600401616d8a565b600060405180830381865afa158015612a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3b9190810190616f2f565b90506000612a698285604051602001612a55929190616f64565b604051602081830303815290604052614473565b90506001600160a01b038116612721578484604051602001612872929190616f93565b612a9882826000614486565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b2390849060040161703e565b600060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b689190810190617085565b9250505090565b612ba16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612bec6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612bf585614589565b60208201526000612c058661496e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c6f9190810190617085565b86838560200151604051602001612c8994939291906170ce565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612ce1908590600401616d8a565b600060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d269190810190617085565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d6e9084906004016171d2565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190616cd4565b612dc457816040516020016128729190617224565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e099084906004016172b6565b600060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e4e9190810190617085565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612e95908490600401617308565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190616cd4565b15612f6b576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f20908490600401617308565b600060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f659190810190617085565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612f90919061735a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fbc9291906173c6565b600060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130019190810190617085565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816130315790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613091576130916173eb565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106130e5576130e56173eb565b602002602001018190525084604051602001613101919061741a565b60405160208183030381529060405281600281518110613123576131236173eb565b60200260200101819052508260405160200161313f9190617486565b60405160208183030381529060405281600381518110613161576131616173eb565b60200260200101819052506000613177826140a4565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132089060408051808201825260008082526020918201528151808301909252845182528085019082015290614bf1565b61321d578560405160200161287291906174c7565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613277565b511590565b6133eb57826020015115613333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128b2565b8260c00151156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128b2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161340457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061345f90617558565b935060ff1681518110613474576134746173eb565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134c59190617577565b6040516020818303038152906040528282806134e090617558565b935060ff16815181106134f5576134f56173eb565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061354290617558565b935060ff1681518110613557576135576173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135a490617558565b935060ff16815181106135b9576135b96173eb565b602002602001018190525087602001518282806135d590617558565b935060ff16815181106135ea576135ea6173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061363790617558565b935060ff168151811061364c5761364c6173eb565b60209081029190910101528751828261366481617558565b935060ff1681518110613679576136796173eb565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136c690617558565b935060ff16815181106136db576136db6173eb565b60200260200101819052506136ef46614c52565b82826136fa81617558565b935060ff168151811061370f5761370f6173eb565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061375c90617558565b935060ff1681518110613771576137716173eb565b60200260200101819052508682828061378990617558565b935060ff168151811061379e5761379e6173eb565b60209081029190910101528551156138c55760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826137ef81617558565b935060ff1681518110613804576138046173eb565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613854908990600401616d8a565b600060405180830381865afa158015613871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138999190810190617085565b82826138a481617558565b935060ff16815181106138b9576138b96173eb565b60200260200101819052505b8460200151156139955760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261390e81617558565b935060ff1681518110613923576139236173eb565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061397090617558565b935060ff1681518110613985576139856173eb565b6020026020010181905250613b5c565b6139cd6132728660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a605760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a1081617558565b935060ff1681518110613a2557613a256173eb565b60200260200101819052508460a00151604051602001613a45919061741a565b60405160208183030381529060405282828061397090617558565b8460c00151158015613aa3575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613aa190511590565b155b15613b5c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613ae781617558565b935060ff1681518110613afc57613afc6173eb565b6020026020010181905250613b1088614cf2565b604051602001613b20919061741a565b604051602081830303815290604052828280613b3b90617558565b935060ff1681518110613b5057613b506173eb565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613b9090511590565b613c255760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bd381617558565b935060ff1681518110613be857613be86173eb565b60200260200101819052508460400151828280613c0490617558565b935060ff1681518110613c1957613c196173eb565b60200260200101819052505b606085015115613d465760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c6e81617558565b935060ff1681518110613c8357613c836173eb565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613cf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1a9190810190617085565b8282613d2581617558565b935060ff1681518110613d3a57613d3a6173eb565b60200260200101819052505b60e08501515115613ded5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613d9081617558565b935060ff1681518110613da557613da56173eb565b6020026020010181905250613dc18560e0015160000151614c52565b8282613dcc81617558565b935060ff1681518110613de157613de16173eb565b60200260200101819052505b60e08501516020015115613e975760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e3a81617558565b935060ff1681518110613e4f57613e4f6173eb565b6020026020010181905250613e6b8560e0015160200151614c52565b8282613e7681617558565b935060ff1681518110613e8b57613e8b6173eb565b60200260200101819052505b60e08501516040015115613f415760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613ee481617558565b935060ff1681518110613ef957613ef96173eb565b6020026020010181905250613f158560e0015160400151614c52565b8282613f2081617558565b935060ff1681518110613f3557613f356173eb565b60200260200101819052505b60e08501516060015115613feb5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613f8e81617558565b935060ff1681518110613fa357613fa36173eb565b6020026020010181905250613fbf8560e0015160600151614c52565b8282613fca81617558565b935060ff1681518110613fdf57613fdf6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561400957614009616e47565b60405190808252806020026020018201604052801561403c57816020015b60608152602001906001900390816140275790505b50905060005b8260ff168160ff16101561409557838160ff1681518110614065576140656173eb565b6020026020010151828260ff1681518110614082576140826173eb565b6020908102919091010152600101614042565b5093505050505b949350505050565b6140cb6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614151918691016175e2565b600060405180830381865afa15801561416e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141969190810190617085565b905060006141a486836157e1565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016141d49190616b1e565b6000604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261421b9190810190617629565b805190915060030b158015906142345750602081015151155b80156142435750604081015151155b1561321d578160008151811061425b5761425b6173eb565b602002602001015160405160200161287291906176df565b606060006142a88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506142df9082905b90615936565b1561443c57600061435c82614356846143506143228a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061595d565b906159bf565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143c0908290615936565b1561442a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614427905b8290615a44565b90505b61443381615a6a565b9250505061279f565b82156144555784846040516020016128729291906178cb565b505060408051602081019091526000815261279f565b509392505050565b6000808251602084016000f09392505050565b8160a001511561449557505050565b60006144a2848484615ad3565b905060006144af826140a4565b602081015181519192509060030b15801561454b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261454b906040805180820182526000808252602091820152815180830190925284518252808501908201526142d9565b1561455857505050505050565b604082015151156145785781604001516040516020016128729190617972565b8060405160200161287291906179d0565b606060006145be8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614623905b8290614bf1565b1561469257604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d90839061606e565b615a6a565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146f4905b82906160f8565b6001036147c157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261475a90614420565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d905b8390615a44565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148209061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614888908390616192565b90506000816001835161489b9190616d55565b815181106148ab576148ab6173eb565b6020026020010151905061494e61468d6149216040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061606e565b95945050505050565b826040516020016128729190617a3b565b50919050565b606060006149a38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a059061461c565b15614a135761279f81615a6a565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a72906146ed565b600103614adc57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d906147ba565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b3b9061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614ba3908390616192565b9050600181511115614bdf578060028251614bbe9190616d55565b81518110614bce57614bce6173eb565b602002602001015192505050919050565b50826040516020016128729190617a3b565b805182516000911115614c0657506000612725565b81518351602085015160009291614c1c91616c5b565b614c269190616d55565b905082602001518103614c3d576001915050612725565b82516020840151819020912014905092915050565b60606000614c5f83616237565b600101905060008167ffffffffffffffff811115614c7f57614c7f616e47565b6040519080825280601f01601f191660200182016040528015614ca9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cb357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614d7e905b8290616319565b15614dbe57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e1d90614d77565b15614e5d57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ebc90614d77565b15614efc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f5b90614d77565b80614fc05750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fc090614d77565b1561500057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261505f90614d77565b806150c45750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150c490614d77565b1561510457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261516390614d77565b806151c85750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151c890614d77565b1561520857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261526790614d77565b806152cc5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152cc90614d77565b1561530c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261536b90614d77565b156153ab57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261540a90614d77565b1561544a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154a990614d77565b156154e957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261554890614d77565b1561558857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e790614d77565b1561562757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261568690614d77565b806156eb5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156eb90614d77565b1561572b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578a90614d77565b156157ca57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516128729290602001617b19565b60608060005b845181101561586c5781858281518110615803576158036173eb565b602002602001015160405160200161581c929190616f64565b60405160208183030381529060405291506001855161583b9190616d55565b811461586457816040516020016158529190617c82565b60405160208183030381529060405291505b6001016157e7565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161588557905050905083816000815181106158b0576158b06173eb565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110615904576159046173eb565b60200260200101819052508181600281518110615923576159236173eb565b6020908102919091010152949350505050565b6020808301518351835192840151600093615954929184919061632d565b14159392505050565b6040805180820190915260008082526020820152600061598f846000015185602001518560000151866020015161643e565b90508360200151816159a19190616d55565b845185906159b0908390616d55565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156159e4575081612725565b6020808301519084015160019114615a0b5750815160208481015190840151829020919020145b8015615a3c57825184518590615a22908390616d55565b9052508251602085018051615a38908390616c5b565b9052505b509192915050565b6040805180820190915260008082526020820152615a6383838361655e565b5092915050565b60606000826000015167ffffffffffffffff811115615a8b57615a8b616e47565b6040519080825280601f01601f191660200182016040528015615ab5576020820181803683370190505b5090506000602082019050615a638185602001518660000151616609565b60606000615adf612a9c565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615afc57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b5790617558565b935060ff1681518110615b6c57615b6c6173eb565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615bbd9190617cc3565b604051602081830303815290604052828280615bd890617558565b935060ff1681518110615bed57615bed6173eb565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c3a90617558565b935060ff1681518110615c4f57615c4f6173eb565b602002602001018190525082604051602001615c6b9190617486565b604051602081830303815290604052828280615c8690617558565b935060ff1681518110615c9b57615c9b6173eb565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615ce890617558565b935060ff1681518110615cfd57615cfd6173eb565b6020026020010181905250615d128784616683565b8282615d1d81617558565b935060ff1681518110615d3257615d326173eb565b602090810291909101015285515115615dde5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615d8481617558565b935060ff1681518110615d9957615d996173eb565b6020026020010181905250615db2866000015184616683565b8282615dbd81617558565b935060ff1681518110615dd257615dd26173eb565b60200260200101819052505b856080015115615e4c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e2781617558565b935060ff1681518110615e3c57615e3c6173eb565b6020026020010181905250615eb2565b8415615eb25760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615e9181617558565b935060ff1681518110615ea657615ea66173eb565b60200260200101819052505b60408601515115615f4e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615efc81617558565b935060ff1681518110615f1157615f116173eb565b60200260200101819052508560400151828280615f2d90617558565b935060ff1681518110615f4257615f426173eb565b60200260200101819052505b856060015115615fb85760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615f9781617558565b935060ff1681518110615fac57615fac6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615fd657615fd6616e47565b60405190808252806020026020018201604052801561600957816020015b6060815260200190600190039081615ff45790505b50905060005b8260ff168160ff16101561606257838160ff1681518110616032576160326173eb565b6020026020010151828260ff168151811061604f5761604f6173eb565b602090810291909101015260010161600f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616093575081612725565b815183516020850151600092916160a991616c5b565b6160b39190616d55565b602084015190915060019082146160d4575082516020840151819020908220145b80156160ef578351855186906160eb908390616d55565b9052505b50929392505050565b600080826000015161611c856000015186602001518660000151876020015161643e565b6161269190616c5b565b90505b8351602085015161613a9190616c5b565b8111615a63578161614a81617d08565b92505082600001516161818560200151836161659190616d55565b86516161719190616d55565b838660000151876020015161643e565b61618b9190616c5b565b9050616129565b606060006161a084846160f8565b6161ab906001616c5b565b67ffffffffffffffff8111156161c3576161c3616e47565b6040519080825280602002602001820160405280156161f657816020015b60608152602001906001900390816161e15790505b50905060005b815181101561446b5761621261468d8686615a44565b828281518110616224576162246173eb565b60209081029190910101526001016161fc565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616280577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162ac576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162ca57662386f26fc10000830492506010015b6305f5e10083106162e2576305f5e100830492506008015b61271083106162f657612710830492506004015b60648310616308576064830492506002015b600a83106127255760010192915050565b600061632583836166c3565b159392505050565b60008085841161643457602084116163e05760008415616378576001616354866020616d55565b61635f906008617d22565b61636a906002617e20565b6163749190616d55565b1990505b83518116856163878989616c5b565b6163919190616d55565b805190935082165b8181146163cb578784116163b3578794505050505061409c565b836163bd81617e2c565b945050828451169050616399565b6163d58785616c5b565b94505050505061409c565b8383206163ed8588616d55565b6163f79087616c5b565b91505b8582106164325784822080820361641f576164158684616c5b565b935050505061409c565b61642a600184616d55565b9250506163fa565b505b5092949350505050565b6000838186851161654957602085116164f8576000851561648a576001616466876020616d55565b616471906008617d22565b61647c906002617e20565b6164869190616d55565b1990505b8451811660008761649b8b8b616c5b565b6164a59190616d55565b855190915083165b8281146164ea578186106164d2576164c58b8b616c5b565b965050505050505061409c565b856164dc81617d08565b9650508386511690506164ad565b85965050505050505061409c565b508383206000905b61650a8689616d55565b821161654757858320808203616526578394505050505061409c565b616531600185616c5b565b935050818061653f90617d08565b925050616500565b505b6165538787616c5b565b979650505050505050565b60408051808201909152600080825260208201526000616590856000015186602001518660000151876020015161643e565b6020808701805191860191909152519091506165ac9082616d55565b8352845160208601516165bf9190616c5b565b81036165ce5760008552616600565b835183516165dc9190616c5b565b855186906165eb908390616d55565b90525083516165fa9082616c5b565b60208601525b50909392505050565b602081106166415781518352616620602084616c5b565b925061662d602083616c5b565b915061663a602082616d55565b9050616609565b6000198115616670576001616657836020616d55565b61666390610100617e20565b61666d9190616d55565b90505b9151835183169219169190911790915250565b606060006166918484612b6f565b80516020808301516040519394506166ab93909101617e43565b60405160208183030381529060405291505092915050565b81518151600091908111156166d6575081515b6020808501519084015160005b8381101561678f578251825180821461675f57600019602087101561673e57600184616710896020616d55565b61671a9190616c5b565b616725906008617d22565b616730906002617e20565b61673a9190616d55565b1990505b818116838216818103911461675c5797506127259650505050505050565b50505b61676a602086616c5b565b9450616777602085616c5b565b935050506020816167889190616c5b565b90506166e3565b508451865161321d9190617e9b565b610c9f80617ebc83390190565b610b4a80618b5b83390190565b610f9a806196a583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161680861680d565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168086040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168bf5783516001600160a01b0316835260209384019390920191600101616898565b509095945050505050565b60005b838110156168e55781810151838201526020016168cd565b50506000910152565b600081518084526169068160208601602086016168ca565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156169fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526169e68486516168ee565b60209586019590945092909201916001016169ac565b509197505050602094850194929092019150600101616942565b50929695505050505050565b600081518084526020840193506020830160005b82811015616a765781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a36565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616aec60408801826168ee565b9050602082015191508681036020880152616b078183616a22565b965050506020938401939190910190600101616aa8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616b808583516168ee565b94506020938401939190910190600101616b46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c166040870182616a22565b9550506020938401939190910190600101616bbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561272557612725616c2c565b600181811c90821680616c8257607f821691505b602082108103614968577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616ccd57600080fd5b5051919050565b600060208284031215616ce657600080fd5b8151801515811461279f57600080fd5b8381526001600160a01b038316602082015260606040820152600061494e60608301846168ee565b6001600160a01b03851681528360208201526001600160a01b038316604082015260806060820152600061321d60808301846168ee565b8181038181111561272557612725616c2c565b6001600160a01b038316815260406020820152600061409c60408301846168ee565b60208152600061279f60208301846168ee565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616dd581601a8501602088016168ca565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e1281601c8401602088016168ca565b01601c01949350505050565b600060208284031215616e3057600080fd5b81516001600160a01b038116811461279f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616e9957616e99616e47565b60405290565b60008067ffffffffffffffff841115616eba57616eba616e47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616ee957616ee9616e47565b604052838152905080828401851015616f0157600080fd5b61446b8460208301856168ca565b600082601f830112616f2057600080fd5b61279f83835160208501616e9f565b600060208284031215616f4157600080fd5b815167ffffffffffffffff811115616f5857600080fd5b61272184828501616f0f565b60008351616f768184602088016168ca565b835190830190616f8a8183602088016168ca565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616fcb81601a8501602088016168ca565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170088160338401602088016168ca565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561709757600080fd5b815167ffffffffffffffff8111156170ae57600080fd5b8201601f810184136170bf57600080fd5b61272184825160208401616e9f565b600085516170e0818460208a016168ca565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161711a816001840160208a016168ca565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171588160028401602089016168ca565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161719a8160028401602088016168ca565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006171e560408301846168ee565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161725c81601f8501602087016168ca565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172c960408301846168ee565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061731b60408301846168ee565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173928160148501602087016168ca565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006173d960408301856168ee565b828103602084015261279b81856168ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516174528160018501602087016168ca565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174988184602087016168ca565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161754b81604b8501602087016168ca565b91909101604b0192915050565b600060ff821660ff810361756e5761756e616c2c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561763b57600080fd5b815167ffffffffffffffff81111561765257600080fd5b82016060818503121561766457600080fd5b61766c616e76565b81518060030b811461767d57600080fd5b8152602082015167ffffffffffffffff81111561769957600080fd5b6176a586828501616f0f565b602083015250604082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f0f565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161773d8160218501602087016168ca565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179298160218501602088016168ca565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161796681602e8401602088016168ca565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a2e8160228501602087016168ca565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a7381600e8501602087016168ca565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b518160188501602088016168ca565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617b8e81601c8401602088016168ca565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617c948184602087016168ca565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617cfb81601c8501602087016168ca565b91909101601c0192915050565b60006000198203617d1b57617d1b616c2c565b5060010190565b808202811582820484141761272557612725616c2c565b6001815b6001841115617d7457808504811115617d5857617d58616c2c565b6001841615617d6657908102905b60019390931c928002617d3d565b935093915050565b600082617d8b57506001612725565b81617d9857506000612725565b8160018114617dae5760028114617db857617dd4565b6001915050612725565b60ff841115617dc957617dc9616c2c565b50506001821b612725565b5060208310610133831016604e8410600b8410161715617df7575081810a612725565b617e046000198484617d39565b8060001904821115617e1857617e18616c2c565b029392505050565b600061279f8383617d7c565b600081617e3b57617e3b616c2c565b506000190190565b60008351617e558184602088016168ca565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617e8f8160018401602088016168ca565b01600101949350505050565b8181036000831280158383131683831282161715615a6357615a63616c2c56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033a264697066735822122040a1efa42a3837c9b173ffb63955d54fe1b885f54abbabcdd7eb46d5df60c44964736f6c634300081a0033", } // GatewayEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go index 3440119b..b8006298 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. var GatewayEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e40e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639620d7ed1161012a578063cebad2a6116100bd578063f68bd1c01161008c578063fa7626d411610071578063fa7626d41461035c578063fb176c1214610369578063fe7bdbb21461037157600080fd5b8063f68bd1c01461034c578063fa18c09b1461035457600080fd5b8063cebad2a61461032c578063d46e9b5714610334578063e20c9f711461033c578063eb1ce7f91461034457600080fd5b8063ba414fa6116100f9578063ba414fa6146102fc578063bcd9925e14610314578063c9350b7f1461031c578063cbd57e2f1461032457600080fd5b80639620d7ed146102dc578063a3f9d0e0146102e4578063b0464fdc146102ec578063b5508aa9146102f457600080fd5b806344671b94116101a2578063766d0ded11610171578063766d0ded146102a25780637d7f772a146102aa57806385226c81146102b2578063916a17c6146102c757600080fd5b806344671b941461027557806366d9a9a01461027d5780636a6218541461029257806371149c941461029a57600080fd5b80632ade3880116101de5780632ade3880146102485780633e5e3c231461025d5780633e73ecb4146102655780633f7286f41461026d57600080fd5b80630a9254e4146102105780631779672f1461021a5780631ed7831c146102225780632206eb6514610240575b600080fd5b610218610379565b005b610218610c16565b61022a610e3d565b6040516102379190619751565b60405180910390f35b610218610e9f565b610250611091565b60405161023791906197ed565b61022a6111d3565b610218611233565b61022a6117a9565b610218611809565b610285611ba1565b6040516102379190619953565b610218611d23565b610218611def565b6102186125fa565b6102186127a0565b6102ba612a81565b6040516102379190619a4d565b6102cf612b51565b6040516102379190619a60565b610218612c4c565b610218612db9565b6102cf6133c1565b6102ba6134bc565b61030461358c565b6040519015158152602001610237565b610218613660565b61021861380a565b6102186139fc565b610218613f87565b610218614159565b61022a614228565b610218614288565b6102186143ad565b610218614770565b601f546103049060ff1681565b610218614a96565b610218615114565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516103cb90619664565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610450573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161049590619664565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610519573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526105ff919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615557565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061068390619671565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156106b6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061070b9061967e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610747573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161078c9061968b565b604051809103906000f0801580156107a8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190619af7565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610e0793928316929091169087908790600401619b19565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610e0793928316929091169087908790600401619b19565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156111ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156111b357838290600052602060002001805461112690619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461115290619b50565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b505050505081526020019060010190611107565b5050505081525050815260200190600101906110b5565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190619b9d565b90506112b9816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d9190619b9d565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611410916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190619b9d565b90506116968186615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190619b9d565b905061171f8161171a8887619c0d565b615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190619b9d565b90506117a0816000615576565b50505050505050565b60606017805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926118bf926001600160a01b031691600091879101619bb6565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a8d906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611b5692909116908590600401619c39565b6000604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9d9190810190619d43565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000209060020201604051806040016040529081600082018054611bf890619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2490619b50565b8015611c715780601f10611c4657610100808354040283529160200191611c71565b820191906000526020600020905b815481529060010190602001808311611c5457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611cb85790505b50505050508152505081526020019060010190611bc5565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610cde565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190619b9d565b9050611eb3816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161200a916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061210892506001600160a01b03909116908790619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561218557600080fd5b505af1158015612199573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906121e49089908990619c20565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8906122c09089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561232157600080fd5b505af1158015612335573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a0236294506123929392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190619b9d565b90506124438187615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b79190619b9d565b90506124c78161171a8987619c0d565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190619b9d565b905061256e816000615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190619b9d565b90506125ef816000615576565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816127b75790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061281757612817619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061285b5761285b619d78565b602090810291909101015260405160019060009061288190859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293457600080fd5b505af1158015612948573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156129d257600080fd5b505af11580156129e6573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612a3a92909116908590600401619c39565b6000604051808303816000875af1158015612a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127999190810190619d43565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111ca578382906000526020600020018054612ac490619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054612af090619b50565b8015612b3d5780601f10612b1257610100808354040283529160200191612b3d565b820191906000526020600020905b815481529060010190602001808311612b2057829003601f168201915b505050505081526020019060010190612aa5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c3457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612be15790505b50505050508152505081526020019060010190612b75565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612d3157600080fd5b505af1158015612d45573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610d7c565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e879190619b9d565b9050612e94816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612feb916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906131be9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561321f57600080fd5b505af1158015613233573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506132909392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156132aa57600080fd5b505af11580156132be573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190619b9d565b9050613341816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b59190619b9d565b90506124c78185615576565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134515790505b505050505081525050815260200190600101906133e5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000200180546134ff90619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461352b90619b50565b80156135785780601f1061354d57610100808354040283529160200191613578565b820191906000526020600020905b81548152906001019060200180831161355b57829003601f168201915b5050505050815260200190600101906134e0565b60085460009060ff16156135a4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190619b9d565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561379957600080fd5b505af11580156137ad573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561398b57600080fd5b505af115801561399f573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af99190619b9d565b9050613b06816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7a9190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613c5d916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613d0457600080fd5b505af1158015613d18573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613dee57600080fd5b505af1158015613e02573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613e4d9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450613f1f9392831692909116908a908a90600401619b19565b600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016123f6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140c457600080fd5b505af11580156140d8573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350869261412c9216908690600401619c39565b6000604051808303818588803b15801561414557600080fd5b505af11580156117a0573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612d17565b60606015805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6000806040516020016142be907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432557600080fd5b505af1158015614339573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161377f565b604080516001808252818301909252600091816020015b60608152602001906001900390816143c45790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061442457614424619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061446857614468619d78565b602090810291909101015260405160019060009061448e90859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161454b916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561456557600080fd5b505af1158015614579573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145f257600080fd5b505af1158015614606573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146935061464d92506001600160a01b0390911690879087908790619e11565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614724906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016129b8565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b0316316147cf816000615576565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561484457600080fd5b505af1158015614858573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061489b92506001600160a01b03909116908590619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561491857600080fd5b505af115801561492c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915061497990670de0b6b3a7640000908690619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149da57600080fd5b505af11580156149ee573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792614a429216908790600401619c39565b6000604051808303818588803b158015614a5b57600080fd5b505af1158015614a6f573d6000803e3d6000fd5b50506021546001600160a01b0316319250610c109150829050670de0b6b3a7640000615576565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015614b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b939190619b9d565b9050614ba0816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015614bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c149190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614cf7916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015614d1157600080fd5b505af1158015614d25573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614d9e57600080fd5b505af1158015614db2573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050614df0600288619e59565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614e9f57600080fd5b505af1158015614eb3573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90614efe9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f5f57600080fd5b505af1158015614f73573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614fd09392831692909116908a908a90600401619b19565b600060405180830381600087803b158015614fea57600080fd5b505af1158015614ffe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150749190619b9d565b90506150858161171a600289619e59565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156150d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150f99190619b9d565b90506124c78161510a60028a619e59565b61171a9087619c0d565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615171906000906001600160a01b031631615576565b600084848460405160240161518893929190619e94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161524c916001600160a01b039190911690670de0b6b3a7640000908690600401619bb6565b600060405180830381600087803b15801561526657600080fd5b505af115801561527a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156152f357600080fd5b505af1158015615307573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061535092506001600160a01b03909116908590899089908990619ebe565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156153cd57600080fd5b505af11580156153e1573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061542e90670de0b6b3a7640000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561548f57600080fd5b505af11580156154a3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926154f79216908690600401619c39565b60006040518083038185885af1158015615515573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261553e9190810190619d43565b506021546127999083906001600160a01b031631615576565b6000615561619698565b61556c8484836155f5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156155e157600080fd5b505afa158015610e35573d6000803e3d6000fd5b6000806156028584615670565b90506156656040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615650929190619c39565b6040516020818303038152906040528561567c565b9150505b9392505050565b600061566983836156aa565b60c081015151600090156156a05761569984848460c001516156c5565b9050615669565b615699848461586b565b60006156b68383615956565b6156698383602001518461567c565b6000806156d0615962565b905060006156de8683615a35565b905060006156f58260600151836020015185615edb565b90506000615705838389896160ed565b9050600061571282616f6a565b602081015181519192509060030b156157855789826040015160405160200161573c929190619eff565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261577c91600401619f80565b60405180910390fd5b60006157c86040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617139565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061581b908490600401619f80565b602060405180830381865afa158015615838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061585c9190619f93565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158c0908790600401619f80565b600060405180830381865afa1580156158dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159059190810190619d43565b90506000615933828560405160200161591f929190619fbc565b604051602081830303815290604052617339565b90506001600160a01b03811661556c57848460405160200161573c929190619feb565b611b9d8282600061734c565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159e990849060040161a096565b600060405180830381865afa158015615a06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a2e919081019061a0dd565b9250505090565b615a676040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615ab26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615abb8561744f565b60208201526000615acb86617834565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b35919081019061a0dd565b86838560200151604051602001615b4f949392919061a126565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615ba7908590600401619f80565b600060405180830381865afa158015615bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bec919081019061a0dd565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c3490849060040161a22a565b602060405180830381865afa158015615c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c759190619af7565b615c8a578160405160200161573c919061a27c565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615ccf90849060040161a30e565b600060405180830381865afa158015615cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d14919081019061a0dd565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d5b90849060040161a360565b602060405180830381865afa158015615d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d9c9190619af7565b15615e31576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615de690849060040161a360565b600060405180830381865afa158015615e03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e2b919081019061a0dd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e56919061a3b2565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e8292919061a41e565b600060405180830381865afa158015615e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ec7919081019061a0dd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615ef75790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f5757615f57619d78565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fab57615fab619d78565b602002602001018190525084604051602001615fc7919061a443565b60405160208183030381529060405281600281518110615fe957615fe9619d78565b602002602001018190525082604051602001616005919061a4af565b6040516020818303038152906040528160038151811061602757616027619d78565b6020026020010181905250600061603d82616f6a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160ce9060408051808201825260008082526020918201528151808301909252845182528085019082015290617ab7565b6160e3578560405160200161573c919061a4f0565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561613d565b511590565b6162b1578260200151156161f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161577c565b8260c00151156162b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161577c565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162ca57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163259061a581565b935060ff168151811061633a5761633a619d78565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161638b919061a5a0565b6040516020818303038152906040528282806163a69061a581565b935060ff16815181106163bb576163bb619d78565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164089061a581565b935060ff168151811061641d5761641d619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061646a9061a581565b935060ff168151811061647f5761647f619d78565b6020026020010181905250876020015182828061649b9061a581565b935060ff16815181106164b0576164b0619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164fd9061a581565b935060ff168151811061651257616512619d78565b60209081029190910101528751828261652a8161a581565b935060ff168151811061653f5761653f619d78565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061658c9061a581565b935060ff16815181106165a1576165a1619d78565b60200260200101819052506165b546617b18565b82826165c08161a581565b935060ff16815181106165d5576165d5619d78565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166229061a581565b935060ff168151811061663757616637619d78565b60200260200101819052508682828061664f9061a581565b935060ff168151811061666457616664619d78565b602090810291909101015285511561678b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166b58161a581565b935060ff16815181106166ca576166ca619d78565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061671a908990600401619f80565b600060405180830381865afa158015616737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261675f919081019061a0dd565b828261676a8161a581565b935060ff168151811061677f5761677f619d78565b60200260200101819052505b84602001511561685b5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167d48161a581565b935060ff16815181106167e9576167e9619d78565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168369061a581565b935060ff168151811061684b5761684b619d78565b6020026020010181905250616a22565b6168936161388660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169265760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168d68161a581565b935060ff16815181106168eb576168eb619d78565b60200260200101819052508460a0015160405160200161690b919061a443565b6040516020818303038152906040528282806168369061a581565b8460c0015115801561696957506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261696790511590565b155b15616a225760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169ad8161a581565b935060ff16815181106169c2576169c2619d78565b60200260200101819052506169d688617bb8565b6040516020016169e6919061a443565b604051602081830303815290604052828280616a019061a581565b935060ff1681518110616a1657616a16619d78565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a5690511590565b616aeb5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a998161a581565b935060ff1681518110616aae57616aae619d78565b60200260200101819052508460400151828280616aca9061a581565b935060ff1681518110616adf57616adf619d78565b60200260200101819052505b606085015115616c0c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b348161a581565b935060ff1681518110616b4957616b49619d78565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616be0919081019061a0dd565b8282616beb8161a581565b935060ff1681518110616c0057616c00619d78565b60200260200101819052505b60e08501515115616cb35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c568161a581565b935060ff1681518110616c6b57616c6b619d78565b6020026020010181905250616c878560e0015160000151617b18565b8282616c928161a581565b935060ff1681518110616ca757616ca7619d78565b60200260200101819052505b60e08501516020015115616d5d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d008161a581565b935060ff1681518110616d1557616d15619d78565b6020026020010181905250616d318560e0015160200151617b18565b8282616d3c8161a581565b935060ff1681518110616d5157616d51619d78565b60200260200101819052505b60e08501516040015115616e075760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616daa8161a581565b935060ff1681518110616dbf57616dbf619d78565b6020026020010181905250616ddb8560e0015160400151617b18565b8282616de68161a581565b935060ff1681518110616dfb57616dfb619d78565b60200260200101819052505b60e08501516060015115616eb15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e548161a581565b935060ff1681518110616e6957616e69619d78565b6020026020010181905250616e858560e0015160600151617b18565b8282616e908161a581565b935060ff1681518110616ea557616ea5619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ecf57616ecf619c5b565b604051908082528060200260200182016040528015616f0257816020015b6060815260200190600190039081616eed5790505b50905060005b8260ff168160ff161015616f5b57838160ff1681518110616f2b57616f2b619d78565b6020026020010151828260ff1681518110616f4857616f48619d78565b6020908102919091010152600101616f08565b5093505050505b949350505050565b616f916040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170179186910161a60b565b600060405180830381865afa158015617034573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261705c919081019061a0dd565b9050600061706a86836186a7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161709a9190619a4d565b6000604051808303816000875af11580156170b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170e1919081019061a652565b805190915060030b158015906170fa5750602081015151155b80156171095750604081015151155b156160e3578160008151811061712157617121619d78565b602002602001015160405160200161573c919061a708565b6060600061716e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171a59082905b906187fc565b156173025760006172228261721c846172166171e88a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618823565b90618885565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172869082906187fc565b156172f057604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172ed905b829061890a565b90505b6172f981618930565b92505050615669565b821561731b57848460405160200161573c92919061a8f4565b5050604080516020810190915260008152615669565b509392505050565b6000808251602084016000f09392505050565b8160a001511561735b57505050565b6000617368848484618999565b9050600061737582616f6a565b602081015181519192509060030b1580156174115750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174119060408051808201825260008082526020918201528151808301909252845182528085019082015261719f565b1561741e57505050505050565b6040820151511561743e57816040015160405160200161573c919061a99b565b8060405160200161573c919061a9f9565b606060006174848360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174e9905b8290617ab7565b1561755857604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553908390618f34565b618930565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ba905b8290618fbe565b60010361768757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617620906172e6565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553905b839061890a565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176e6906174e2565b1561781d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774e908390619058565b9050600081600183516177619190619c0d565b8151811061777157617771619d78565b602002602001015190506178146175536177e76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f34565b95945050505050565b8260405160200161573c919061aa64565b50919050565b606060006178698360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178cb906174e2565b156178d95761566981618930565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617938906175b3565b6001036179a257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156699061755390617680565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a01906174e2565b1561781d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a69908390619058565b9050600181511115617aa5578060028251617a849190619c0d565b81518110617a9457617a94619d78565b602002602001015192505050919050565b508260405160200161573c919061aa64565b805182516000911115617acc57506000615570565b81518351602085015160009291617ae29161ab42565b617aec9190619c0d565b905082602001518103617b03576001915050615570565b82516020840151819020912014905092915050565b60606000617b25836190fd565b600101905060008167ffffffffffffffff811115617b4557617b45619c5b565b6040519080825280601f01601f191660200182016040528015617b6f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b7957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c44905b82906191df565b15617c8457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ce390617c3d565b15617d2357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8290617c3d565b15617dc257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2190617c3d565b80617e865750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e8690617c3d565b15617ec657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f2590617c3d565b80617f8a5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f8a90617c3d565b15617fca57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261802990617c3d565b8061808e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808e90617c3d565b156180ce57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812d90617c3d565b806181925750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819290617c3d565b156181d257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261823190617c3d565b1561827157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182d090617c3d565b1561831057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836f90617c3d565b156183af57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840e90617c3d565b1561844e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184ad90617c3d565b156184ed57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261854c90617c3d565b806185b15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185b190617c3d565b156185f157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261865090617c3d565b1561869057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161573c929060200161ab55565b60608060005b845181101561873257818582815181106186c9576186c9619d78565b60200260200101516040516020016186e2929190619fbc565b6040516020818303038152906040529150600185516187019190619c0d565b811461872a5781604051602001618718919061acbe565b60405160208183030381529060405291505b6001016186ad565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161874b579050509050838160008151811061877657618776619d78565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187ca576187ca619d78565b602002602001018190525081816002815181106187e9576187e9619d78565b6020908102919091010152949350505050565b602080830151835183519284015160009361881a92918491906191f3565b14159392505050565b604080518082019091526000808252602082015260006188558460000151856020015185600001518660200151619304565b90508360200151816188679190619c0d565b84518590618876908390619c0d565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188aa575081615570565b60208083015190840151600191146188d15750815160208481015190840151829020919020145b8015618902578251845185906188e8908390619c0d565b90525082516020850180516188fe90839061ab42565b9052505b509192915050565b6040805180820190915260008082526020820152618929838383619424565b5092915050565b60606000826000015167ffffffffffffffff81111561895157618951619c5b565b6040519080825280601f01601f19166020018201604052801561897b576020820181803683370190505b509050600060208201905061892981856020015186600001516194cf565b606060006189a5615962565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189c257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a1d9061a581565b935060ff1681518110618a3257618a32619d78565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a83919061acff565b604051602081830303815290604052828280618a9e9061a581565b935060ff1681518110618ab357618ab3619d78565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b009061a581565b935060ff1681518110618b1557618b15619d78565b602002602001018190525082604051602001618b31919061a4af565b604051602081830303815290604052828280618b4c9061a581565b935060ff1681518110618b6157618b61619d78565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618bae9061a581565b935060ff1681518110618bc357618bc3619d78565b6020026020010181905250618bd88784619549565b8282618be38161a581565b935060ff1681518110618bf857618bf8619d78565b602090810291909101015285515115618ca45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c4a8161a581565b935060ff1681518110618c5f57618c5f619d78565b6020026020010181905250618c78866000015184619549565b8282618c838161a581565b935060ff1681518110618c9857618c98619d78565b60200260200101819052505b856080015115618d125760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ced8161a581565b935060ff1681518110618d0257618d02619d78565b6020026020010181905250618d78565b8415618d785760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d578161a581565b935060ff1681518110618d6c57618d6c619d78565b60200260200101819052505b60408601515115618e145760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dc28161a581565b935060ff1681518110618dd757618dd7619d78565b60200260200101819052508560400151828280618df39061a581565b935060ff1681518110618e0857618e08619d78565b60200260200101819052505b856060015115618e7e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e5d8161a581565b935060ff1681518110618e7257618e72619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e9c57618e9c619c5b565b604051908082528060200260200182016040528015618ecf57816020015b6060815260200190600190039081618eba5790505b50905060005b8260ff168160ff161015618f2857838160ff1681518110618ef857618ef8619d78565b6020026020010151828260ff1681518110618f1557618f15619d78565b6020908102919091010152600101618ed5565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f59575081615570565b81518351602085015160009291618f6f9161ab42565b618f799190619c0d565b60208401519091506001908214618f9a575082516020840151819020908220145b8015618fb557835185518690618fb1908390619c0d565b9052505b50929392505050565b6000808260000151618fe28560000151866020015186600001518760200151619304565b618fec919061ab42565b90505b83516020850151619000919061ab42565b811161892957816190108161ad44565b925050826000015161904785602001518361902b9190619c0d565b86516190379190619c0d565b8386600001518760200151619304565b619051919061ab42565b9050618fef565b606060006190668484618fbe565b61907190600161ab42565b67ffffffffffffffff81111561908957619089619c5b565b6040519080825280602002602001820160405280156190bc57816020015b60608152602001906001900390816190a75790505b50905060005b8151811015617331576190d8617553868661890a565b8282815181106190ea576190ea619d78565b60209081029190910101526001016190c2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619146577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619172576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061919057662386f26fc10000830492506010015b6305f5e10083106191a8576305f5e100830492506008015b61271083106191bc57612710830492506004015b606483106191ce576064830492506002015b600a83106155705760010192915050565b60006191eb8383619589565b159392505050565b6000808584116192fa57602084116192a6576000841561923e57600161921a866020619c0d565b61922590600861ad5e565b61923090600261ae5c565b61923a9190619c0d565b1990505b835181168561924d898961ab42565b6192579190619c0d565b805190935082165b818114619291578784116192795787945050505050616f62565b836192838161ae68565b94505082845116905061925f565b61929b878561ab42565b945050505050616f62565b8383206192b38588619c0d565b6192bd908761ab42565b91505b8582106192f8578482208082036192e5576192db868461ab42565b9350505050616f62565b6192f0600184619c0d565b9250506192c0565b505b5092949350505050565b6000838186851161940f57602085116193be576000851561935057600161932c876020619c0d565b61933790600861ad5e565b61934290600261ae5c565b61934c9190619c0d565b1990505b845181166000876193618b8b61ab42565b61936b9190619c0d565b855190915083165b8281146193b0578186106193985761938b8b8b61ab42565b9650505050505050616f62565b856193a28161ad44565b965050838651169050619373565b859650505050505050616f62565b508383206000905b6193d08689619c0d565b821161940d578583208082036193ec5783945050505050616f62565b6193f760018561ab42565b93505081806194059061ad44565b9250506193c6565b505b619419878761ab42565b979650505050505050565b604080518082019091526000808252602082015260006194568560000151866020015186600001518760200151619304565b6020808701805191860191909152519091506194729082619c0d565b835284516020860151619485919061ab42565b810361949457600085526194c6565b835183516194a2919061ab42565b855186906194b1908390619c0d565b90525083516194c0908261ab42565b60208601525b50909392505050565b6020811061950757815183526194e660208461ab42565b92506194f360208361ab42565b9150619500602082619c0d565b90506194cf565b600019811561953657600161951d836020619c0d565b6195299061010061ae5c565b6195339190619c0d565b90505b9151835183169219169190911790915250565b606060006195578484615a35565b80516020808301516040519394506195719390910161ae7f565b60405160208183030381529060405291505092915050565b815181516000919081111561959c575081515b6020808501519084015160005b838110156196555782518251808214619625576000196020871015619604576001846195d6896020619c0d565b6195e0919061ab42565b6195eb90600861ad5e565b6195f690600261ae5c565b6196009190619c0d565b1990505b81811683821681810391146196225797506155709650505050505050565b50505b61963060208661ab42565b945061963d60208561ab42565b9350505060208161964e919061ab42565b90506195a9565b50845186516160e3919061aed7565b610c9f8061aef883390190565b610b4a8061bb9783390190565b610f9a8061c6e183390190565b610d5e8061d67b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196db6196e0565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196db6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197925783516001600160a01b031683526020938401939092019160010161976b565b509095945050505050565b60005b838110156197b85781810151838201526020016197a0565b50506000910152565b600081518084526197d981602086016020860161979d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198b98486516197c1565b602095860195909450929092019160010161987f565b509197505050602094850194929092019150600101619815565b50929695505050505050565b600081518084526020840193506020830160005b828110156199495781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619909565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199bf60408801826197c1565b90506020820151915086810360208801526199da81836198f5565b96505050602093840193919091019060010161997b565b600082825180855260208501945060208160051b8301016020850160005b83811015619a4157601f19858403018852619a2b8383516197c1565b6020988901989093509190910190600101619a0f565b50909695505050505050565b60208152600061566960208301846199f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619ae160408701826198f5565b9550506020938401939190910190600101619a88565b600060208284031215619b0957600080fd5b8151801515811461566957600080fd5b6001600160a01b03851681526001600160a01b03841660208201528260408201526080606082015260006160e360808301846197c1565b600181811c90821680619b6457607f821691505b60208210810361782e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215619baf57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061781460608301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561557057615570619bde565b828152604060208201526000616f6260408301846197c1565b6001600160a01b0383168152604060208201526000616f6260408301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619cad57619cad619c5b565b60405290565b60008067ffffffffffffffff841115619cce57619cce619c5b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619cfd57619cfd619c5b565b604052838152905080828401851015619d1557600080fd5b61733184602083018561979d565b600082601f830112619d3457600080fd5b61566983835160208501619cb3565b600060208284031215619d5557600080fd5b815167ffffffffffffffff811115619d6c57600080fd5b61556c84828501619d23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b82811015619949578151865260209586019590910190600101619dbb565b606081526000619dec60608301866199f1565b8281036020840152619dfe8186619da7565b9150508215156040830152949350505050565b6001600160a01b0385168152608060208201526000619e3360808301866199f1565b8281036040840152619e458186619da7565b915050821515606083015295945050505050565b600082619e8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b606081526000619ea760608301866197c1565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a060408201526000619ee660a08301866197c1565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a85016020880161979d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c84016020880161979d565b01601c01949350505050565b60208152600061566960208301846197c1565b600060208284031215619fa557600080fd5b81516001600160a01b038116811461566957600080fd5b60008351619fce81846020880161979d565b835190830190619fe281836020880161979d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a02381601a85016020880161979d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a06081603384016020880161979d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a0ef57600080fd5b815167ffffffffffffffff81111561a10657600080fd5b8201601f8101841361a11757600080fd5b61556c84825160208401619cb3565b6000855161a138818460208a0161979d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a172816001840160208a0161979d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1b081600284016020890161979d565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1f281600284016020880161979d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a23d60408301846197c1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a2b481601f85016020870161979d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a32160408301846197c1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a37360408301846197c1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3ea81601485016020870161979d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a43160408301856197c1565b828103602084015261566581856197c1565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a47b81600185016020870161979d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4c181846020870161979d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a57481604b85016020870161979d565b91909101604b0192915050565b600060ff821660ff810361a5975761a597619bde565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a66457600080fd5b815167ffffffffffffffff81111561a67b57600080fd5b82016060818503121561a68d57600080fd5b61a695619c8a565b81518060030b811461a6a657600080fd5b8152602082015167ffffffffffffffff81111561a6c257600080fd5b61a6ce86828501619d23565b602083015250604082015167ffffffffffffffff81111561a6ee57600080fd5b61a6fa86828501619d23565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a76681602185016020870161979d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a95281602185016020880161979d565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a98f81602e84016020880161979d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa5781602285016020870161979d565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa9c81600e85016020870161979d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561557057615570619bde565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab8d81601885016020880161979d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161abca81601c84016020880161979d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acd081846020870161979d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad3781601c85016020870161979d565b91909101601c0192915050565b6000600019820361ad575761ad57619bde565b5060010190565b808202811582820484141761557057615570619bde565b6001815b600184111561adb05780850481111561ad945761ad94619bde565b600184161561ada257908102905b60019390931c92800261ad79565b935093915050565b60008261adc757506001615570565b8161add457506000615570565b816001811461adea576002811461adf45761ae10565b6001915050615570565b60ff84111561ae055761ae05619bde565b50506001821b615570565b5060208310610133831016604e8410600b841016171561ae33575081810a615570565b61ae40600019848461ad75565b806000190482111561ae545761ae54619bde565b029392505050565b6000615669838361adb8565b60008161ae775761ae77619bde565b506000190190565b6000835161ae9181846020880161979d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aecb81600184016020880161979d565b01600101949350505050565b818103600083128015838313168383128216171561892957618929619bde56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220486bd4f3de101e9ee6588242afd1e36e71abd1e83c261757d54bc768d6913e5164736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e40e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639620d7ed1161012a578063cebad2a6116100bd578063f68bd1c01161008c578063fa7626d411610071578063fa7626d41461035c578063fb176c1214610369578063fe7bdbb21461037157600080fd5b8063f68bd1c01461034c578063fa18c09b1461035457600080fd5b8063cebad2a61461032c578063d46e9b5714610334578063e20c9f711461033c578063eb1ce7f91461034457600080fd5b8063ba414fa6116100f9578063ba414fa6146102fc578063bcd9925e14610314578063c9350b7f1461031c578063cbd57e2f1461032457600080fd5b80639620d7ed146102dc578063a3f9d0e0146102e4578063b0464fdc146102ec578063b5508aa9146102f457600080fd5b806344671b94116101a2578063766d0ded11610171578063766d0ded146102a25780637d7f772a146102aa57806385226c81146102b2578063916a17c6146102c757600080fd5b806344671b941461027557806366d9a9a01461027d5780636a6218541461029257806371149c941461029a57600080fd5b80632ade3880116101de5780632ade3880146102485780633e5e3c231461025d5780633e73ecb4146102655780633f7286f41461026d57600080fd5b80630a9254e4146102105780631779672f1461021a5780631ed7831c146102225780632206eb6514610240575b600080fd5b610218610379565b005b610218610c16565b61022a610e3d565b6040516102379190619751565b60405180910390f35b610218610e9f565b610250611091565b60405161023791906197ed565b61022a6111d3565b610218611233565b61022a6117a9565b610218611809565b610285611ba1565b6040516102379190619953565b610218611d23565b610218611def565b6102186125fa565b6102186127a0565b6102ba612a81565b6040516102379190619a4d565b6102cf612b51565b6040516102379190619a60565b610218612c4c565b610218612db9565b6102cf6133c1565b6102ba6134bc565b61030461358c565b6040519015158152602001610237565b610218613660565b61021861380a565b6102186139fc565b610218613f87565b610218614159565b61022a614228565b610218614288565b6102186143ad565b610218614770565b601f546103049060ff1681565b610218614a96565b610218615114565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516103cb90619664565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610450573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161049590619664565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610519573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526105ff919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615557565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061068390619671565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156106b6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061070b9061967e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610747573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161078c9061968b565b604051809103906000f0801580156107a8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190619af7565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610e0793928316929091169087908790600401619b19565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610e0793928316929091169087908790600401619b19565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156111ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156111b357838290600052602060002001805461112690619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461115290619b50565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b505050505081526020019060010190611107565b5050505081525050815260200190600101906110b5565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190619b9d565b90506112b9816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d9190619b9d565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611410916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190619b9d565b90506116968186615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190619b9d565b905061171f8161171a8887619c0d565b615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190619b9d565b90506117a0816000615576565b50505050505050565b60606017805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926118bf926001600160a01b031691600091879101619bb6565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a8d906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611b5692909116908590600401619c39565b6000604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9d9190810190619d43565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000209060020201604051806040016040529081600082018054611bf890619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2490619b50565b8015611c715780601f10611c4657610100808354040283529160200191611c71565b820191906000526020600020905b815481529060010190602001808311611c5457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611cb85790505b50505050508152505081526020019060010190611bc5565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610cde565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190619b9d565b9050611eb3816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161200a916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061210892506001600160a01b03909116908790619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561218557600080fd5b505af1158015612199573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906121e49089908990619c20565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8906122c09089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561232157600080fd5b505af1158015612335573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a0236294506123929392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190619b9d565b90506124438187615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b79190619b9d565b90506124c78161171a8987619c0d565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190619b9d565b905061256e816000615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190619b9d565b90506125ef816000615576565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816127b75790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061281757612817619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061285b5761285b619d78565b602090810291909101015260405160019060009061288190859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293457600080fd5b505af1158015612948573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156129d257600080fd5b505af11580156129e6573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612a3a92909116908590600401619c39565b6000604051808303816000875af1158015612a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127999190810190619d43565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111ca578382906000526020600020018054612ac490619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054612af090619b50565b8015612b3d5780601f10612b1257610100808354040283529160200191612b3d565b820191906000526020600020905b815481529060010190602001808311612b2057829003601f168201915b505050505081526020019060010190612aa5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c3457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612be15790505b50505050508152505081526020019060010190612b75565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612d3157600080fd5b505af1158015612d45573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610d7c565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e879190619b9d565b9050612e94816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612feb916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906131be9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561321f57600080fd5b505af1158015613233573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506132909392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156132aa57600080fd5b505af11580156132be573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190619b9d565b9050613341816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b59190619b9d565b90506124c78185615576565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134515790505b505050505081525050815260200190600101906133e5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000200180546134ff90619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461352b90619b50565b80156135785780601f1061354d57610100808354040283529160200191613578565b820191906000526020600020905b81548152906001019060200180831161355b57829003601f168201915b5050505050815260200190600101906134e0565b60085460009060ff16156135a4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190619b9d565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561379957600080fd5b505af11580156137ad573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561398b57600080fd5b505af115801561399f573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af99190619b9d565b9050613b06816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7a9190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613c5d916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613d0457600080fd5b505af1158015613d18573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613dee57600080fd5b505af1158015613e02573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613e4d9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450613f1f9392831692909116908a908a90600401619b19565b600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016123f6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140c457600080fd5b505af11580156140d8573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350869261412c9216908690600401619c39565b6000604051808303818588803b15801561414557600080fd5b505af11580156117a0573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612d17565b60606015805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6000806040516020016142be907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432557600080fd5b505af1158015614339573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161377f565b604080516001808252818301909252600091816020015b60608152602001906001900390816143c45790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061442457614424619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061446857614468619d78565b602090810291909101015260405160019060009061448e90859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161454b916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561456557600080fd5b505af1158015614579573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145f257600080fd5b505af1158015614606573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146935061464d92506001600160a01b0390911690879087908790619e11565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614724906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016129b8565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b0316316147cf816000615576565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561484457600080fd5b505af1158015614858573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061489b92506001600160a01b03909116908590619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561491857600080fd5b505af115801561492c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915061497990670de0b6b3a7640000908690619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149da57600080fd5b505af11580156149ee573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792614a429216908790600401619c39565b6000604051808303818588803b158015614a5b57600080fd5b505af1158015614a6f573d6000803e3d6000fd5b50506021546001600160a01b0316319250610c109150829050670de0b6b3a7640000615576565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015614b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b939190619b9d565b9050614ba0816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015614bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c149190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614cf7916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015614d1157600080fd5b505af1158015614d25573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614d9e57600080fd5b505af1158015614db2573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050614df0600288619e59565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614e9f57600080fd5b505af1158015614eb3573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90614efe9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f5f57600080fd5b505af1158015614f73573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614fd09392831692909116908a908a90600401619b19565b600060405180830381600087803b158015614fea57600080fd5b505af1158015614ffe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150749190619b9d565b90506150858161171a600289619e59565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156150d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150f99190619b9d565b90506124c78161510a60028a619e59565b61171a9087619c0d565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615171906000906001600160a01b031631615576565b600084848460405160240161518893929190619e94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161524c916001600160a01b039190911690670de0b6b3a7640000908690600401619bb6565b600060405180830381600087803b15801561526657600080fd5b505af115801561527a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156152f357600080fd5b505af1158015615307573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061535092506001600160a01b03909116908590899089908990619ebe565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156153cd57600080fd5b505af11580156153e1573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061542e90670de0b6b3a7640000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561548f57600080fd5b505af11580156154a3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926154f79216908690600401619c39565b60006040518083038185885af1158015615515573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261553e9190810190619d43565b506021546127999083906001600160a01b031631615576565b6000615561619698565b61556c8484836155f5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156155e157600080fd5b505afa158015610e35573d6000803e3d6000fd5b6000806156028584615670565b90506156656040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615650929190619c39565b6040516020818303038152906040528561567c565b9150505b9392505050565b600061566983836156aa565b60c081015151600090156156a05761569984848460c001516156c5565b9050615669565b615699848461586b565b60006156b68383615956565b6156698383602001518461567c565b6000806156d0615962565b905060006156de8683615a35565b905060006156f58260600151836020015185615edb565b90506000615705838389896160ed565b9050600061571282616f6a565b602081015181519192509060030b156157855789826040015160405160200161573c929190619eff565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261577c91600401619f80565b60405180910390fd5b60006157c86040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617139565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061581b908490600401619f80565b602060405180830381865afa158015615838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061585c9190619f93565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158c0908790600401619f80565b600060405180830381865afa1580156158dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159059190810190619d43565b90506000615933828560405160200161591f929190619fbc565b604051602081830303815290604052617339565b90506001600160a01b03811661556c57848460405160200161573c929190619feb565b611b9d8282600061734c565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159e990849060040161a096565b600060405180830381865afa158015615a06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a2e919081019061a0dd565b9250505090565b615a676040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615ab26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615abb8561744f565b60208201526000615acb86617834565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b35919081019061a0dd565b86838560200151604051602001615b4f949392919061a126565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615ba7908590600401619f80565b600060405180830381865afa158015615bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bec919081019061a0dd565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c3490849060040161a22a565b602060405180830381865afa158015615c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c759190619af7565b615c8a578160405160200161573c919061a27c565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615ccf90849060040161a30e565b600060405180830381865afa158015615cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d14919081019061a0dd565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d5b90849060040161a360565b602060405180830381865afa158015615d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d9c9190619af7565b15615e31576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615de690849060040161a360565b600060405180830381865afa158015615e03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e2b919081019061a0dd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e56919061a3b2565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e8292919061a41e565b600060405180830381865afa158015615e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ec7919081019061a0dd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615ef75790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f5757615f57619d78565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fab57615fab619d78565b602002602001018190525084604051602001615fc7919061a443565b60405160208183030381529060405281600281518110615fe957615fe9619d78565b602002602001018190525082604051602001616005919061a4af565b6040516020818303038152906040528160038151811061602757616027619d78565b6020026020010181905250600061603d82616f6a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160ce9060408051808201825260008082526020918201528151808301909252845182528085019082015290617ab7565b6160e3578560405160200161573c919061a4f0565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561613d565b511590565b6162b1578260200151156161f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161577c565b8260c00151156162b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161577c565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162ca57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163259061a581565b935060ff168151811061633a5761633a619d78565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161638b919061a5a0565b6040516020818303038152906040528282806163a69061a581565b935060ff16815181106163bb576163bb619d78565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164089061a581565b935060ff168151811061641d5761641d619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061646a9061a581565b935060ff168151811061647f5761647f619d78565b6020026020010181905250876020015182828061649b9061a581565b935060ff16815181106164b0576164b0619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164fd9061a581565b935060ff168151811061651257616512619d78565b60209081029190910101528751828261652a8161a581565b935060ff168151811061653f5761653f619d78565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061658c9061a581565b935060ff16815181106165a1576165a1619d78565b60200260200101819052506165b546617b18565b82826165c08161a581565b935060ff16815181106165d5576165d5619d78565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166229061a581565b935060ff168151811061663757616637619d78565b60200260200101819052508682828061664f9061a581565b935060ff168151811061666457616664619d78565b602090810291909101015285511561678b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166b58161a581565b935060ff16815181106166ca576166ca619d78565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061671a908990600401619f80565b600060405180830381865afa158015616737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261675f919081019061a0dd565b828261676a8161a581565b935060ff168151811061677f5761677f619d78565b60200260200101819052505b84602001511561685b5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167d48161a581565b935060ff16815181106167e9576167e9619d78565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168369061a581565b935060ff168151811061684b5761684b619d78565b6020026020010181905250616a22565b6168936161388660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169265760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168d68161a581565b935060ff16815181106168eb576168eb619d78565b60200260200101819052508460a0015160405160200161690b919061a443565b6040516020818303038152906040528282806168369061a581565b8460c0015115801561696957506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261696790511590565b155b15616a225760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169ad8161a581565b935060ff16815181106169c2576169c2619d78565b60200260200101819052506169d688617bb8565b6040516020016169e6919061a443565b604051602081830303815290604052828280616a019061a581565b935060ff1681518110616a1657616a16619d78565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a5690511590565b616aeb5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a998161a581565b935060ff1681518110616aae57616aae619d78565b60200260200101819052508460400151828280616aca9061a581565b935060ff1681518110616adf57616adf619d78565b60200260200101819052505b606085015115616c0c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b348161a581565b935060ff1681518110616b4957616b49619d78565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616be0919081019061a0dd565b8282616beb8161a581565b935060ff1681518110616c0057616c00619d78565b60200260200101819052505b60e08501515115616cb35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c568161a581565b935060ff1681518110616c6b57616c6b619d78565b6020026020010181905250616c878560e0015160000151617b18565b8282616c928161a581565b935060ff1681518110616ca757616ca7619d78565b60200260200101819052505b60e08501516020015115616d5d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d008161a581565b935060ff1681518110616d1557616d15619d78565b6020026020010181905250616d318560e0015160200151617b18565b8282616d3c8161a581565b935060ff1681518110616d5157616d51619d78565b60200260200101819052505b60e08501516040015115616e075760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616daa8161a581565b935060ff1681518110616dbf57616dbf619d78565b6020026020010181905250616ddb8560e0015160400151617b18565b8282616de68161a581565b935060ff1681518110616dfb57616dfb619d78565b60200260200101819052505b60e08501516060015115616eb15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e548161a581565b935060ff1681518110616e6957616e69619d78565b6020026020010181905250616e858560e0015160600151617b18565b8282616e908161a581565b935060ff1681518110616ea557616ea5619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ecf57616ecf619c5b565b604051908082528060200260200182016040528015616f0257816020015b6060815260200190600190039081616eed5790505b50905060005b8260ff168160ff161015616f5b57838160ff1681518110616f2b57616f2b619d78565b6020026020010151828260ff1681518110616f4857616f48619d78565b6020908102919091010152600101616f08565b5093505050505b949350505050565b616f916040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170179186910161a60b565b600060405180830381865afa158015617034573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261705c919081019061a0dd565b9050600061706a86836186a7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161709a9190619a4d565b6000604051808303816000875af11580156170b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170e1919081019061a652565b805190915060030b158015906170fa5750602081015151155b80156171095750604081015151155b156160e3578160008151811061712157617121619d78565b602002602001015160405160200161573c919061a708565b6060600061716e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171a59082905b906187fc565b156173025760006172228261721c846172166171e88a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618823565b90618885565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172869082906187fc565b156172f057604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172ed905b829061890a565b90505b6172f981618930565b92505050615669565b821561731b57848460405160200161573c92919061a8f4565b5050604080516020810190915260008152615669565b509392505050565b6000808251602084016000f09392505050565b8160a001511561735b57505050565b6000617368848484618999565b9050600061737582616f6a565b602081015181519192509060030b1580156174115750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174119060408051808201825260008082526020918201528151808301909252845182528085019082015261719f565b1561741e57505050505050565b6040820151511561743e57816040015160405160200161573c919061a99b565b8060405160200161573c919061a9f9565b606060006174848360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174e9905b8290617ab7565b1561755857604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553908390618f34565b618930565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ba905b8290618fbe565b60010361768757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617620906172e6565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553905b839061890a565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176e6906174e2565b1561781d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774e908390619058565b9050600081600183516177619190619c0d565b8151811061777157617771619d78565b602002602001015190506178146175536177e76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f34565b95945050505050565b8260405160200161573c919061aa64565b50919050565b606060006178698360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178cb906174e2565b156178d95761566981618930565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617938906175b3565b6001036179a257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156699061755390617680565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a01906174e2565b1561781d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a69908390619058565b9050600181511115617aa5578060028251617a849190619c0d565b81518110617a9457617a94619d78565b602002602001015192505050919050565b508260405160200161573c919061aa64565b805182516000911115617acc57506000615570565b81518351602085015160009291617ae29161ab42565b617aec9190619c0d565b905082602001518103617b03576001915050615570565b82516020840151819020912014905092915050565b60606000617b25836190fd565b600101905060008167ffffffffffffffff811115617b4557617b45619c5b565b6040519080825280601f01601f191660200182016040528015617b6f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b7957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c44905b82906191df565b15617c8457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ce390617c3d565b15617d2357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8290617c3d565b15617dc257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2190617c3d565b80617e865750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e8690617c3d565b15617ec657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f2590617c3d565b80617f8a5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f8a90617c3d565b15617fca57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261802990617c3d565b8061808e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808e90617c3d565b156180ce57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812d90617c3d565b806181925750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819290617c3d565b156181d257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261823190617c3d565b1561827157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182d090617c3d565b1561831057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836f90617c3d565b156183af57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840e90617c3d565b1561844e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184ad90617c3d565b156184ed57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261854c90617c3d565b806185b15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185b190617c3d565b156185f157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261865090617c3d565b1561869057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161573c929060200161ab55565b60608060005b845181101561873257818582815181106186c9576186c9619d78565b60200260200101516040516020016186e2929190619fbc565b6040516020818303038152906040529150600185516187019190619c0d565b811461872a5781604051602001618718919061acbe565b60405160208183030381529060405291505b6001016186ad565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161874b579050509050838160008151811061877657618776619d78565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187ca576187ca619d78565b602002602001018190525081816002815181106187e9576187e9619d78565b6020908102919091010152949350505050565b602080830151835183519284015160009361881a92918491906191f3565b14159392505050565b604080518082019091526000808252602082015260006188558460000151856020015185600001518660200151619304565b90508360200151816188679190619c0d565b84518590618876908390619c0d565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188aa575081615570565b60208083015190840151600191146188d15750815160208481015190840151829020919020145b8015618902578251845185906188e8908390619c0d565b90525082516020850180516188fe90839061ab42565b9052505b509192915050565b6040805180820190915260008082526020820152618929838383619424565b5092915050565b60606000826000015167ffffffffffffffff81111561895157618951619c5b565b6040519080825280601f01601f19166020018201604052801561897b576020820181803683370190505b509050600060208201905061892981856020015186600001516194cf565b606060006189a5615962565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189c257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a1d9061a581565b935060ff1681518110618a3257618a32619d78565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a83919061acff565b604051602081830303815290604052828280618a9e9061a581565b935060ff1681518110618ab357618ab3619d78565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b009061a581565b935060ff1681518110618b1557618b15619d78565b602002602001018190525082604051602001618b31919061a4af565b604051602081830303815290604052828280618b4c9061a581565b935060ff1681518110618b6157618b61619d78565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618bae9061a581565b935060ff1681518110618bc357618bc3619d78565b6020026020010181905250618bd88784619549565b8282618be38161a581565b935060ff1681518110618bf857618bf8619d78565b602090810291909101015285515115618ca45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c4a8161a581565b935060ff1681518110618c5f57618c5f619d78565b6020026020010181905250618c78866000015184619549565b8282618c838161a581565b935060ff1681518110618c9857618c98619d78565b60200260200101819052505b856080015115618d125760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ced8161a581565b935060ff1681518110618d0257618d02619d78565b6020026020010181905250618d78565b8415618d785760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d578161a581565b935060ff1681518110618d6c57618d6c619d78565b60200260200101819052505b60408601515115618e145760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dc28161a581565b935060ff1681518110618dd757618dd7619d78565b60200260200101819052508560400151828280618df39061a581565b935060ff1681518110618e0857618e08619d78565b60200260200101819052505b856060015115618e7e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e5d8161a581565b935060ff1681518110618e7257618e72619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e9c57618e9c619c5b565b604051908082528060200260200182016040528015618ecf57816020015b6060815260200190600190039081618eba5790505b50905060005b8260ff168160ff161015618f2857838160ff1681518110618ef857618ef8619d78565b6020026020010151828260ff1681518110618f1557618f15619d78565b6020908102919091010152600101618ed5565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f59575081615570565b81518351602085015160009291618f6f9161ab42565b618f799190619c0d565b60208401519091506001908214618f9a575082516020840151819020908220145b8015618fb557835185518690618fb1908390619c0d565b9052505b50929392505050565b6000808260000151618fe28560000151866020015186600001518760200151619304565b618fec919061ab42565b90505b83516020850151619000919061ab42565b811161892957816190108161ad44565b925050826000015161904785602001518361902b9190619c0d565b86516190379190619c0d565b8386600001518760200151619304565b619051919061ab42565b9050618fef565b606060006190668484618fbe565b61907190600161ab42565b67ffffffffffffffff81111561908957619089619c5b565b6040519080825280602002602001820160405280156190bc57816020015b60608152602001906001900390816190a75790505b50905060005b8151811015617331576190d8617553868661890a565b8282815181106190ea576190ea619d78565b60209081029190910101526001016190c2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619146577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619172576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061919057662386f26fc10000830492506010015b6305f5e10083106191a8576305f5e100830492506008015b61271083106191bc57612710830492506004015b606483106191ce576064830492506002015b600a83106155705760010192915050565b60006191eb8383619589565b159392505050565b6000808584116192fa57602084116192a6576000841561923e57600161921a866020619c0d565b61922590600861ad5e565b61923090600261ae5c565b61923a9190619c0d565b1990505b835181168561924d898961ab42565b6192579190619c0d565b805190935082165b818114619291578784116192795787945050505050616f62565b836192838161ae68565b94505082845116905061925f565b61929b878561ab42565b945050505050616f62565b8383206192b38588619c0d565b6192bd908761ab42565b91505b8582106192f8578482208082036192e5576192db868461ab42565b9350505050616f62565b6192f0600184619c0d565b9250506192c0565b505b5092949350505050565b6000838186851161940f57602085116193be576000851561935057600161932c876020619c0d565b61933790600861ad5e565b61934290600261ae5c565b61934c9190619c0d565b1990505b845181166000876193618b8b61ab42565b61936b9190619c0d565b855190915083165b8281146193b0578186106193985761938b8b8b61ab42565b9650505050505050616f62565b856193a28161ad44565b965050838651169050619373565b859650505050505050616f62565b508383206000905b6193d08689619c0d565b821161940d578583208082036193ec5783945050505050616f62565b6193f760018561ab42565b93505081806194059061ad44565b9250506193c6565b505b619419878761ab42565b979650505050505050565b604080518082019091526000808252602082015260006194568560000151866020015186600001518760200151619304565b6020808701805191860191909152519091506194729082619c0d565b835284516020860151619485919061ab42565b810361949457600085526194c6565b835183516194a2919061ab42565b855186906194b1908390619c0d565b90525083516194c0908261ab42565b60208601525b50909392505050565b6020811061950757815183526194e660208461ab42565b92506194f360208361ab42565b9150619500602082619c0d565b90506194cf565b600019811561953657600161951d836020619c0d565b6195299061010061ae5c565b6195339190619c0d565b90505b9151835183169219169190911790915250565b606060006195578484615a35565b80516020808301516040519394506195719390910161ae7f565b60405160208183030381529060405291505092915050565b815181516000919081111561959c575081515b6020808501519084015160005b838110156196555782518251808214619625576000196020871015619604576001846195d6896020619c0d565b6195e0919061ab42565b6195eb90600861ad5e565b6195f690600261ae5c565b6196009190619c0d565b1990505b81811683821681810391146196225797506155709650505050505050565b50505b61963060208661ab42565b945061963d60208561ab42565b9350505060208161964e919061ab42565b90506195a9565b50845186516160e3919061aed7565b610c9f8061aef883390190565b610b4a8061bb9783390190565b610f9a8061c6e183390190565b610d5e8061d67b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196db6196e0565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196db6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197925783516001600160a01b031683526020938401939092019160010161976b565b509095945050505050565b60005b838110156197b85781810151838201526020016197a0565b50506000910152565b600081518084526197d981602086016020860161979d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198b98486516197c1565b602095860195909450929092019160010161987f565b509197505050602094850194929092019150600101619815565b50929695505050505050565b600081518084526020840193506020830160005b828110156199495781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619909565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199bf60408801826197c1565b90506020820151915086810360208801526199da81836198f5565b96505050602093840193919091019060010161997b565b600082825180855260208501945060208160051b8301016020850160005b83811015619a4157601f19858403018852619a2b8383516197c1565b6020988901989093509190910190600101619a0f565b50909695505050505050565b60208152600061566960208301846199f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619ae160408701826198f5565b9550506020938401939190910190600101619a88565b600060208284031215619b0957600080fd5b8151801515811461566957600080fd5b6001600160a01b03851681526001600160a01b03841660208201528260408201526080606082015260006160e360808301846197c1565b600181811c90821680619b6457607f821691505b60208210810361782e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215619baf57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061781460608301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561557057615570619bde565b828152604060208201526000616f6260408301846197c1565b6001600160a01b0383168152604060208201526000616f6260408301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619cad57619cad619c5b565b60405290565b60008067ffffffffffffffff841115619cce57619cce619c5b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619cfd57619cfd619c5b565b604052838152905080828401851015619d1557600080fd5b61733184602083018561979d565b600082601f830112619d3457600080fd5b61566983835160208501619cb3565b600060208284031215619d5557600080fd5b815167ffffffffffffffff811115619d6c57600080fd5b61556c84828501619d23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b82811015619949578151865260209586019590910190600101619dbb565b606081526000619dec60608301866199f1565b8281036020840152619dfe8186619da7565b9150508215156040830152949350505050565b6001600160a01b0385168152608060208201526000619e3360808301866199f1565b8281036040840152619e458186619da7565b915050821515606083015295945050505050565b600082619e8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b606081526000619ea760608301866197c1565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a060408201526000619ee660a08301866197c1565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a85016020880161979d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c84016020880161979d565b01601c01949350505050565b60208152600061566960208301846197c1565b600060208284031215619fa557600080fd5b81516001600160a01b038116811461566957600080fd5b60008351619fce81846020880161979d565b835190830190619fe281836020880161979d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a02381601a85016020880161979d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a06081603384016020880161979d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a0ef57600080fd5b815167ffffffffffffffff81111561a10657600080fd5b8201601f8101841361a11757600080fd5b61556c84825160208401619cb3565b6000855161a138818460208a0161979d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a172816001840160208a0161979d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1b081600284016020890161979d565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1f281600284016020880161979d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a23d60408301846197c1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a2b481601f85016020870161979d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a32160408301846197c1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a37360408301846197c1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3ea81601485016020870161979d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a43160408301856197c1565b828103602084015261566581856197c1565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a47b81600185016020870161979d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4c181846020870161979d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a57481604b85016020870161979d565b91909101604b0192915050565b600060ff821660ff810361a5975761a597619bde565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a66457600080fd5b815167ffffffffffffffff81111561a67b57600080fd5b82016060818503121561a68d57600080fd5b61a695619c8a565b81518060030b811461a6a657600080fd5b8152602082015167ffffffffffffffff81111561a6c257600080fd5b61a6ce86828501619d23565b602083015250604082015167ffffffffffffffff81111561a6ee57600080fd5b61a6fa86828501619d23565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a76681602185016020870161979d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a95281602185016020880161979d565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a98f81602e84016020880161979d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa5781602285016020870161979d565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa9c81600e85016020870161979d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561557057615570619bde565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab8d81601885016020880161979d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161abca81601c84016020880161979d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acd081846020870161979d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad3781601c85016020870161979d565b91909101601c0192915050565b6000600019820361ad575761ad57619bde565b5060010190565b808202811582820484141761557057615570619bde565b6001815b600184111561adb05780850481111561ad945761ad94619bde565b600184161561ada257908102905b60019390931c92800261ad79565b935093915050565b60008261adc757506001615570565b8161add457506000615570565b816001811461adea576002811461adf45761ae10565b6001915050615570565b60ff84111561ae055761ae05619bde565b50506001821b615570565b5060208310610133831016604e8410600b841016171561ae33575081810a615570565b61ae40600019848461ad75565b806000190482111561ae545761ae54619bde565b029392505050565b6000615669838361adb8565b60008161ae775761ae77619bde565b506000190190565b6000835161ae9181846020880161979d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aecb81600184016020880161979d565b01600101949350505050565b818103600083128015838313168383128216171561892957618929619bde56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122009ca5625d116c2c00e3f204494885cc15e67a2ddde6c5c7fc00d465fe53e1cb664736f6c634300081a0033", } // GatewayEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go index d919fd17..e708d1ac 100644 --- a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea2646970667358221220b5cf128d245bfd684061b748e4a87779c3ff73a03bfe1b652838b47b6abf465b64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033", } // GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go index 995d2916..b28a89e2 100644 --- a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061add18061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a5d565b60405161010e91906161e3565b60405180910390f35b61011f610abf565b60405161010e919061627f565b610101610c01565b610101610c61565b610144610cc1565b60405161010e91906163e5565b6100f7610e43565b610161611505565b60405161010e9190616483565b6101766115d5565b60405161010e91906164fa565b6101766116d0565b6101616117cb565b61019b61189b565b604051901515815260200161010e565b61010161196f565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051610212906160f6565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc906160f6565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260285491519190931660248201526044810191909152610446919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526119cf565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906104ca90616103565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104fd573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061055290616110565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561058e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105d39061611d565b604051809103906000f0801580156105ef573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190616591565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ab557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a97575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bf857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382906000526020600020018054610b54906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b80906165b3565b8015610bcd5780601f10610ba257610100808354040283529160200191610bcd565b820191906000526020600020905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b35565b505050508152505081526020019060010190610ae3565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bf85783829060005260206000209060020201604051806040016040529081600082018054610d18906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d44906165b3565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610dd85790505b50505050508152505081526020019060010190610ce5565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190616600565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190616600565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093610ffb936001600160a01b0361010090930483169392166119ee565b600084848460405160240161101293929190616629565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926110d89291169087908790600401616653565b600060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506111f592506001600160a01b039091169086908a908a908a9061667b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506112e490869086906166bc565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113c49291169087906004016166d5565b60006040518083038185885af11580156113e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261140b91908101906167df565b5060208054604080517fdda79b750000000000000000000000000000000000000000000000000000000081529051611498938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114939190616600565b611a0a565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290516114fb938b936001600160a01b031692635b11259192600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bf8578382906000526020600020018054611548906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611574906165b3565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b505050505081526020019060010190611529565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116b857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116116655790505b505050505081525050815260200190600101906115f9565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117b357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117605790505b505050505081525050815260200190600101906116f4565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bf857838290600052602060002001805461180e906165b3565b80601f016020809104026020016040519081016040528092919081815260200182805461183a906165b3565b80156118875780601f1061185c57610100808354040283529160200191611887565b820191906000526020600020905b81548152906001019060200180831161186a57829003601f168201915b5050505050815260200190600101906117ef565b60085460009060ff16156118b3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190616814565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60006119d961612a565b6119e4848483611a9a565b9150505b92915050565b6119f661612a565b611a038585858486611b15565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050505050565b600080611aa78584611c16565b9050611b0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611af59291906166d5565b60405160208183030381529060405285611c22565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611b8757600080fd5b505af1925050508015611b98575060015b611bad57611ba887878787611c50565b611c0d565b611bb987878787611c50565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050505b50505050505050565b6000611b0e8383611c69565b60c08101515160009015611c4657611c3f84848460c00151611c84565b9050611b0e565b611c3f8484611e2a565b6000611c5c8483611f15565b9050611a03858285611f21565b6000611c7583836122eb565b611b0e83836020015184611c22565b600080611c8f6122fb565b90506000611c9d86836123ce565b90506000611cb48260600151836020015185612874565b90506000611cc483838989612a86565b90506000611cd182613903565b602081015181519192509060030b15611d4457898260400151604051602001611cfb92919061682d565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d3b916004016168ae565b60405180910390fd5b6000611d876040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613ad2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611dda9084906004016168ae565b602060405180830381865afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190616600565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611e7f9087906004016168ae565b600060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ec491908101906167df565b90506000611ef28285604051602001611ede9291906168c1565b604051602081830303815290604052613cd2565b90506001600160a01b0381166119e4578484604051602001611cfb9291906168f0565b6000611c758383613ce5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190616814565b905080612188576000611ff386613cf1565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061207e905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613dde565b8061208a575060008451115b1561210d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120d690889088906004016166d5565b600060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b50505050612182565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050505b50611a03565b80600061219482613cf1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506121f690612051565b80612202575060008551115b15612287576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612250908a908a908a9060040161699b565b600060405180830381600087803b15801561226a57600080fd5b505af115801561227e573d6000803e3d6000fd5b50505050611c0d565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611bf457600080fd5b6122f782826000613df2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123829084906004016169cc565b600060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c79190810190616a13565b9250505090565b6124006040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061244b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61245485613ef5565b60208201526000612464866142da565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ce9190810190616a13565b868385602001516040516020016124e89493929190616a5c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125409085906004016168ae565b600060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125859190810190616a13565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125cd908490600401616b60565b602060405180830381865afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616591565b6126235781604051602001611cfb9190616bb2565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612668908490600401616c44565b600060405180830381865afa158015612685573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126ad9190810190616a13565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906126f4908490600401616c96565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190616591565b156127ca576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061277f908490600401616c96565b600060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c49190810190616a13565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016127ef9190616ce8565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161281b929190616d54565b600060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128609190810190616a13565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128905790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106128f0576128f0616d79565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061294457612944616d79565b6020026020010181905250846040516020016129609190616da8565b6040516020818303038152906040528160028151811061298257612982616d79565b60200260200101819052508260405160200161299e9190616e14565b604051602081830303815290604052816003815181106129c0576129c0616d79565b602002602001018190525060006129d682613903565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a67906040805180820182526000808252602091820152815180830190925284518252808501908201529061455d565b612a7c5785604051602001611cfb9190616e55565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612ad6565b511590565b612c4a57826020015115612b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d3b565b8260c0015115612c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d3b565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c6357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612cbe90616f15565b935060ff1681518110612cd357612cd3616d79565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d249190616f34565b604051602081830303815290604052828280612d3f90616f15565b935060ff1681518110612d5457612d54616d79565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612da190616f15565b935060ff1681518110612db657612db6616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e0390616f15565b935060ff1681518110612e1857612e18616d79565b60200260200101819052508760200151828280612e3490616f15565b935060ff1681518110612e4957612e49616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612e9690616f15565b935060ff1681518110612eab57612eab616d79565b602090810291909101015287518282612ec381616f15565b935060ff1681518110612ed857612ed8616d79565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f2590616f15565b935060ff1681518110612f3a57612f3a616d79565b6020026020010181905250612f4e466145be565b8282612f5981616f15565b935060ff1681518110612f6e57612f6e616d79565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fbb90616f15565b935060ff1681518110612fd057612fd0616d79565b602002602001018190525086828280612fe890616f15565b935060ff1681518110612ffd57612ffd616d79565b60209081029190910101528551156131245760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261304e81616f15565b935060ff168151811061306357613063616d79565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130b39089906004016168ae565b600060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f89190810190616a13565b828261310381616f15565b935060ff168151811061311857613118616d79565b60200260200101819052505b8460200151156131f45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261316d81616f15565b935060ff168151811061318257613182616d79565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131cf90616f15565b935060ff16815181106131e4576131e4616d79565b60200260200101819052506133bb565b61322c612ad18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132bf5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261326f81616f15565b935060ff168151811061328457613284616d79565b60200260200101819052508460a001516040516020016132a49190616da8565b6040516020818303038152906040528282806131cf90616f15565b8460c0015115801561330257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261330090511590565b155b156133bb5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261334681616f15565b935060ff168151811061335b5761335b616d79565b602002602001018190525061336f8861465e565b60405160200161337f9190616da8565b60405160208183030381529060405282828061339a90616f15565b935060ff16815181106133af576133af616d79565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526133ef90511590565b6134845760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261343281616f15565b935060ff168151811061344757613447616d79565b6020026020010181905250846040015182828061346390616f15565b935060ff168151811061347857613478616d79565b60200260200101819052505b6060850151156135a55760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134cd81616f15565b935060ff16815181106134e2576134e2616d79565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135799190810190616a13565b828261358481616f15565b935060ff168151811061359957613599616d79565b60200260200101819052505b60e0850151511561364c5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826135ef81616f15565b935060ff168151811061360457613604616d79565b60200260200101819052506136208560e00151600001516145be565b828261362b81616f15565b935060ff168151811061364057613640616d79565b60200260200101819052505b60e085015160200151156136f65760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261369981616f15565b935060ff16815181106136ae576136ae616d79565b60200260200101819052506136ca8560e00151602001516145be565b82826136d581616f15565b935060ff16815181106136ea576136ea616d79565b60200260200101819052505b60e085015160400151156137a05760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261374381616f15565b935060ff168151811061375857613758616d79565b60200260200101819052506137748560e00151604001516145be565b828261377f81616f15565b935060ff168151811061379457613794616d79565b60200260200101819052505b60e0850151606001511561384a5760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826137ed81616f15565b935060ff168151811061380257613802616d79565b602002602001018190525061381e8560e00151606001516145be565b828261382981616f15565b935060ff168151811061383e5761383e616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115613868576138686166f7565b60405190808252806020026020018201604052801561389b57816020015b60608152602001906001900390816138865790505b50905060005b8260ff168160ff1610156138f457838160ff16815181106138c4576138c4616d79565b6020026020010151828260ff16815181106138e1576138e1616d79565b60209081029190910101526001016138a1565b5093505050505b949350505050565b61392a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139b091869101616f9f565b600060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139f59190810190616a13565b90506000613a03868361514d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a339190616483565b6000604051808303816000875af1158015613a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7a9190810190616fe6565b805190915060030b15801590613a935750602081015151155b8015613aa25750604081015151155b15612a7c5781600081518110613aba57613aba616d79565b6020026020010151604051602001611cfb919061709c565b60606000613b078560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b3e9082905b906152a2565b15613c9b576000613bbb82613bb584613baf613b818a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152c9565b9061532b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c1f9082906152a2565b15613c8957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613c86905b82906153b0565b90505b613c92816153d6565b92505050611b0e565b8215613cb4578484604051602001611cfb929190617288565b5050604080516020810190915260008152611b0e565b509392505050565b6000808251602084016000f09392505050565b6122f782826001613df2565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d66919061732f565b6000604051808303816000865af19150503d8060008114613da3576040519150601f19603f3d011682016040523d82523d6000602084013e613da8565b606091505b50915091508115613dc757808060200190518101906138fb9190616a13565b505060408051602081019091526000815292915050565b6000613dea838361543f565b159392505050565b8160a0015115613e0157505050565b6000613e0e84848461551a565b90506000613e1b82613903565b602081015181519192509060030b158015613eb75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613eb790604080518082018252600080825260209182015281518083019092528451825280850190820152613b38565b15613ec457505050505050565b60408201515115613ee4578160400151604051602001611cfb919061734b565b80604051602001611cfb91906173a9565b60606000613f2a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613f8f905b829061455d565b15613ffe57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9908390615ab5565b6153d6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614060905b8290615b3f565b60010361412d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140c690613c7f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9905b83906153b0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261418c90613f88565b156142c357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906141f4908390615bd9565b9050600081600183516142079190617414565b8151811061421757614217616d79565b602002602001015190506142ba613ff961428d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615ab5565b95945050505050565b82604051602001611cfb9190617427565b50919050565b6060600061430f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061437190613f88565b1561437f57611b0e816153d6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526143de90614059565b60010361444857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff990614126565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144a790613f88565b156142c357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061450f908390615bd9565b905060018151111561454b57806002825161452a9190617414565b8151811061453a5761453a616d79565b602002602001015192505050919050565b5082604051602001611cfb9190617427565b805182516000911115614572575060006119e8565b8151835160208501516000929161458891617505565b6145929190617414565b9050826020015181036145a95760019150506119e8565b82516020840151819020912014905092915050565b606060006145cb83615c7e565b600101905060008167ffffffffffffffff8111156145eb576145eb6166f7565b6040519080825280601f01601f191660200182016040528015614615576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461461f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916146ea905b8290613dde565b1561472a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614789906146e3565b156147c957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614828906146e3565b1561486857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148c7906146e3565b8061492c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261492c906146e3565b1561496c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149cb906146e3565b80614a305750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a30906146e3565b15614a7057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614acf906146e3565b80614b345750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b34906146e3565b15614b7457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bd3906146e3565b80614c385750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c38906146e3565b15614c7857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cd7906146e3565b15614d1757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d76906146e3565b15614db657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e15906146e3565b15614e5557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614eb4906146e3565b15614ef457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f53906146e3565b15614f9357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ff2906146e3565b806150575750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615057906146e3565b1561509757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f6906146e3565b1561513657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611cfb9290602001617518565b60608060005b84518110156151d8578185828151811061516f5761516f616d79565b60200260200101516040516020016151889291906168c1565b6040516020818303038152906040529150600185516151a79190617414565b81146151d057816040516020016151be9190617681565b60405160208183030381529060405291505b600101615153565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816151f1579050509050838160008151811061521c5761521c616d79565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061527057615270616d79565b6020026020010181905250818160028151811061528f5761528f616d79565b6020908102919091010152949350505050565b60208083015183518351928401516000936152c09291849190615d60565b14159392505050565b604080518082019091526000808252602082015260006152fb8460000151856020015185600001518660200151615e71565b905083602001518161530d9190617414565b8451859061531c908390617414565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156153505750816119e8565b60208083015190840151600191146153775750815160208481015190840151829020919020145b80156153a85782518451859061538e908390617414565b90525082516020850180516153a4908390617505565b9052505b509192915050565b60408051808201909152600080825260208201526153cf838383615f91565b5092915050565b60606000826000015167ffffffffffffffff8111156153f7576153f76166f7565b6040519080825280601f01601f191660200182016040528015615421576020820181803683370190505b50905060006020820190506153cf818560200151866000015161603c565b8151815160009190811115615452575081515b6020808501519084015160005b8381101561550b57825182518082146154db5760001960208710156154ba5760018461548c896020617414565b6154969190617505565b6154a19060086176c2565b6154ac9060026177c0565b6154b69190617414565b1990505b81811683821681810391146154d85797506119e89650505050505050565b50505b6154e6602086617505565b94506154f3602085617505565b935050506020816155049190617505565b905061545f565b5084518651612a7c91906177cc565b606060006155266122fb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161554357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061559e90616f15565b935060ff16815181106155b3576155b3616d79565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161560491906177ec565b60405160208183030381529060405282828061561f90616f15565b935060ff168151811061563457615634616d79565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061568190616f15565b935060ff168151811061569657615696616d79565b6020026020010181905250826040516020016156b29190616e14565b6040516020818303038152906040528282806156cd90616f15565b935060ff16815181106156e2576156e2616d79565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061572f90616f15565b935060ff168151811061574457615744616d79565b602002602001018190525061575987846160b6565b828261576481616f15565b935060ff168151811061577957615779616d79565b6020908102919091010152855151156158255760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157cb81616f15565b935060ff16815181106157e0576157e0616d79565b60200260200101819052506157f98660000151846160b6565b828261580481616f15565b935060ff168151811061581957615819616d79565b60200260200101819052505b8560800151156158935760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261586e81616f15565b935060ff168151811061588357615883616d79565b60200260200101819052506158f9565b84156158f95760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826158d881616f15565b935060ff16815181106158ed576158ed616d79565b60200260200101819052505b604086015151156159955760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261594381616f15565b935060ff168151811061595857615958616d79565b6020026020010181905250856040015182828061597490616f15565b935060ff168151811061598957615989616d79565b60200260200101819052505b8560600151156159ff5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826159de81616f15565b935060ff16815181106159f3576159f3616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a1d57615a1d6166f7565b604051908082528060200260200182016040528015615a5057816020015b6060815260200190600190039081615a3b5790505b50905060005b8260ff168160ff161015615aa957838160ff1681518110615a7957615a79616d79565b6020026020010151828260ff1681518110615a9657615a96616d79565b6020908102919091010152600101615a56565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615ada5750816119e8565b81518351602085015160009291615af091617505565b615afa9190617414565b60208401519091506001908214615b1b575082516020840151819020908220145b8015615b3657835185518690615b32908390617414565b9052505b50929392505050565b6000808260000151615b638560000151866020015186600001518760200151615e71565b615b6d9190617505565b90505b83516020850151615b819190617505565b81116153cf5781615b9181617831565b9250508260000151615bc8856020015183615bac9190617414565b8651615bb89190617414565b8386600001518760200151615e71565b615bd29190617505565b9050615b70565b60606000615be78484615b3f565b615bf2906001617505565b67ffffffffffffffff811115615c0a57615c0a6166f7565b604051908082528060200260200182016040528015615c3d57816020015b6060815260200190600190039081615c285790505b50905060005b8151811015613cca57615c59613ff986866153b0565b828281518110615c6b57615c6b616d79565b6020908102919091010152600101615c43565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cc7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615cf3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d1157662386f26fc10000830492506010015b6305f5e1008310615d29576305f5e100830492506008015b6127108310615d3d57612710830492506004015b60648310615d4f576064830492506002015b600a83106119e85760010192915050565b600080858411615e675760208411615e135760008415615dab576001615d87866020617414565b615d929060086176c2565b615d9d9060026177c0565b615da79190617414565b1990505b8351811685615dba8989617505565b615dc49190617414565b805190935082165b818114615dfe57878411615de657879450505050506138fb565b83615df08161784b565b945050828451169050615dcc565b615e088785617505565b9450505050506138fb565b838320615e208588617414565b615e2a9087617505565b91505b858210615e6557848220808203615e5257615e488684617505565b93505050506138fb565b615e5d600184617414565b925050615e2d565b505b5092949350505050565b60008381868511615f7c5760208511615f2b5760008515615ebd576001615e99876020617414565b615ea49060086176c2565b615eaf9060026177c0565b615eb99190617414565b1990505b84518116600087615ece8b8b617505565b615ed89190617414565b855190915083165b828114615f1d57818610615f0557615ef88b8b617505565b96505050505050506138fb565b85615f0f81617831565b965050838651169050615ee0565b8596505050505050506138fb565b508383206000905b615f3d8689617414565b8211615f7a57858320808203615f5957839450505050506138fb565b615f64600185617505565b9350508180615f7290617831565b925050615f33565b505b615f868787617505565b979650505050505050565b60408051808201909152600080825260208201526000615fc38560000151866020015186600001518760200151615e71565b602080870180519186019190915251909150615fdf9082617414565b835284516020860151615ff29190617505565b81036160015760008552616033565b8351835161600f9190617505565b8551869061601e908390617414565b905250835161602d9082617505565b60208601525b50909392505050565b602081106160745781518352616053602084617505565b9250616060602083617505565b915061606d602082617414565b905061603c565b60001981156160a357600161608a836020617414565b616096906101006177c0565b6160a09190617414565b90505b9151835183169219169190911790915250565b606060006160c484846123ce565b80516020808301516040519394506160de93909101617862565b60405160208183030381529060405291505092915050565b610c9f806178bb83390190565b610b4a8061855a83390190565b610f9a806190a483390190565b610d5e8061a03e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161616d616172565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161616d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156162245783516001600160a01b03168352602093840193909201916001016161fd565b509095945050505050565b60005b8381101561624a578181015183820152602001616232565b50506000910152565b6000815180845261626b81602086016020860161622f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616361577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261634b848651616253565b6020958601959094509290920191600101616311565b5091975050506020948501949290920191506001016162a7565b50929695505050505050565b600081518084526020840193506020830160005b828110156163db5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161639b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526164516040880182616253565b905060208201519150868103602088015261646c8183616387565b96505050602093840193919091019060010161640d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526164e5858351616253565b945060209384019391909101906001016164ab565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261657b6040870182616387565b9550506020938401939190910190600101616522565b6000602082840312156165a357600080fd5b81518015158114611b0e57600080fd5b600181811c908216806165c757607f821691505b6020821081036142d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561661257600080fd5b81516001600160a01b0381168114611b0e57600080fd5b60608152600061663c6060830186616253565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142ba6060830184616253565b6001600160a01b038616815284602082015260a0604082015260006166a360a0830186616253565b6060830194909452509015156080909101529392505050565b8281526040602082015260006138fb6040830184616253565b6001600160a01b03831681526040602082015260006138fb6040830184616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616749576167496166f7565b60405290565b60008067ffffffffffffffff84111561676a5761676a6166f7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616799576167996166f7565b6040528381529050808284018510156167b157600080fd5b613cca84602083018561622f565b600082601f8301126167d057600080fd5b611b0e8383516020850161674f565b6000602082840312156167f157600080fd5b815167ffffffffffffffff81111561680857600080fd5b6119e4848285016167bf565b60006020828403121561682657600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161686581601a85016020880161622f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168a281601c84016020880161622f565b01601c01949350505050565b602081526000611b0e6020830184616253565b600083516168d381846020880161622f565b8351908301906168e781836020880161622f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161692881601a85016020880161622f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161696581603384016020880161622f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142ba6060830184616253565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616a2557600080fd5b815167ffffffffffffffff811115616a3c57600080fd5b8201601f81018413616a4d57600080fd5b6119e48482516020840161674f565b60008551616a6e818460208a0161622f565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616aa8816001840160208a0161622f565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616ae681600284016020890161622f565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b2881600284016020880161622f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b736040830184616253565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616bea81601f85016020870161622f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c576040830184616253565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616ca96040830184616253565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d2081601485016020870161622f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d676040830185616253565b8281036020840152611b0a8185616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616de081600185016020870161622f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e2681846020870161622f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616ed981604b85016020870161622f565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f2b57616f2b616ee6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616ff857600080fd5b815167ffffffffffffffff81111561700f57600080fd5b82016060818503121561702157600080fd5b617029616726565b81518060030b811461703a57600080fd5b8152602082015167ffffffffffffffff81111561705657600080fd5b617062868285016167bf565b602083015250604082015167ffffffffffffffff81111561708257600080fd5b61708e868285016167bf565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516170fa81602185016020870161622f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516172e681602185016020880161622f565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161732381602e84016020880161622f565b01602e01949350505050565b6000825161734181846020870161622f565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161740781602285016020870161622f565b9190910160220192915050565b818103818111156119e8576119e8616ee6565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161745f81600e85016020870161622f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156119e8576119e8616ee6565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161755081601885016020880161622f565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161758d81601c84016020880161622f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161769381846020870161622f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176119e8576119e8616ee6565b6001815b6001841115617714578085048111156176f8576176f8616ee6565b600184161561770657908102905b60019390931c9280026176dd565b935093915050565b60008261772b575060016119e8565b81617738575060006119e8565b816001811461774e576002811461775857617774565b60019150506119e8565b60ff84111561776957617769616ee6565b50506001821b6119e8565b5060208310610133831016604e8410600b8410161715617797575081810a6119e8565b6177a460001984846176d9565b80600019048211156177b8576177b8616ee6565b029392505050565b6000611b0e838361771c565b81810360008312801583831316838312821617156153cf576153cf616ee6565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161782481601c85016020870161622f565b91909101601c0192915050565b6000600019820361784457617844616ee6565b5060010190565b60008161785a5761785a616ee6565b506000190190565b6000835161787481846020880161622f565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178ae81600184016020880161622f565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220fb91357315243cd58b4984ef515d932060b4bcfe79bbfd334e009bce2403ecce64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061add18061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a5d565b60405161010e91906161e3565b60405180910390f35b61011f610abf565b60405161010e919061627f565b610101610c01565b610101610c61565b610144610cc1565b60405161010e91906163e5565b6100f7610e43565b610161611505565b60405161010e9190616483565b6101766115d5565b60405161010e91906164fa565b6101766116d0565b6101616117cb565b61019b61189b565b604051901515815260200161010e565b61010161196f565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051610212906160f6565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc906160f6565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260285491519190931660248201526044810191909152610446919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526119cf565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906104ca90616103565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104fd573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061055290616110565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561058e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105d39061611d565b604051809103906000f0801580156105ef573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190616591565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ab557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a97575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bf857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382906000526020600020018054610b54906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b80906165b3565b8015610bcd5780601f10610ba257610100808354040283529160200191610bcd565b820191906000526020600020905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b35565b505050508152505081526020019060010190610ae3565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bf85783829060005260206000209060020201604051806040016040529081600082018054610d18906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d44906165b3565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610dd85790505b50505050508152505081526020019060010190610ce5565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190616600565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190616600565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093610ffb936001600160a01b0361010090930483169392166119ee565b600084848460405160240161101293929190616629565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926110d89291169087908790600401616653565b600060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506111f592506001600160a01b039091169086908a908a908a9061667b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506112e490869086906166bc565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113c49291169087906004016166d5565b60006040518083038185885af11580156113e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261140b91908101906167df565b5060208054604080517fdda79b750000000000000000000000000000000000000000000000000000000081529051611498938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114939190616600565b611a0a565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290516114fb938b936001600160a01b031692635b11259192600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bf8578382906000526020600020018054611548906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611574906165b3565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b505050505081526020019060010190611529565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116b857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116116655790505b505050505081525050815260200190600101906115f9565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117b357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117605790505b505050505081525050815260200190600101906116f4565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bf857838290600052602060002001805461180e906165b3565b80601f016020809104026020016040519081016040528092919081815260200182805461183a906165b3565b80156118875780601f1061185c57610100808354040283529160200191611887565b820191906000526020600020905b81548152906001019060200180831161186a57829003601f168201915b5050505050815260200190600101906117ef565b60085460009060ff16156118b3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190616814565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60006119d961612a565b6119e4848483611a9a565b9150505b92915050565b6119f661612a565b611a038585858486611b15565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050505050565b600080611aa78584611c16565b9050611b0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611af59291906166d5565b60405160208183030381529060405285611c22565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611b8757600080fd5b505af1925050508015611b98575060015b611bad57611ba887878787611c50565b611c0d565b611bb987878787611c50565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050505b50505050505050565b6000611b0e8383611c69565b60c08101515160009015611c4657611c3f84848460c00151611c84565b9050611b0e565b611c3f8484611e2a565b6000611c5c8483611f15565b9050611a03858285611f21565b6000611c7583836122eb565b611b0e83836020015184611c22565b600080611c8f6122fb565b90506000611c9d86836123ce565b90506000611cb48260600151836020015185612874565b90506000611cc483838989612a86565b90506000611cd182613903565b602081015181519192509060030b15611d4457898260400151604051602001611cfb92919061682d565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d3b916004016168ae565b60405180910390fd5b6000611d876040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613ad2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611dda9084906004016168ae565b602060405180830381865afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190616600565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611e7f9087906004016168ae565b600060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ec491908101906167df565b90506000611ef28285604051602001611ede9291906168c1565b604051602081830303815290604052613cd2565b90506001600160a01b0381166119e4578484604051602001611cfb9291906168f0565b6000611c758383613ce5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190616814565b905080612188576000611ff386613cf1565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061207e905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613dde565b8061208a575060008451115b1561210d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120d690889088906004016166d5565b600060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b50505050612182565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050505b50611a03565b80600061219482613cf1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506121f690612051565b80612202575060008551115b15612287576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612250908a908a908a9060040161699b565b600060405180830381600087803b15801561226a57600080fd5b505af115801561227e573d6000803e3d6000fd5b50505050611c0d565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611bf457600080fd5b6122f782826000613df2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123829084906004016169cc565b600060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c79190810190616a13565b9250505090565b6124006040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061244b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61245485613ef5565b60208201526000612464866142da565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ce9190810190616a13565b868385602001516040516020016124e89493929190616a5c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125409085906004016168ae565b600060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125859190810190616a13565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125cd908490600401616b60565b602060405180830381865afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616591565b6126235781604051602001611cfb9190616bb2565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612668908490600401616c44565b600060405180830381865afa158015612685573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126ad9190810190616a13565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906126f4908490600401616c96565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190616591565b156127ca576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061277f908490600401616c96565b600060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c49190810190616a13565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016127ef9190616ce8565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161281b929190616d54565b600060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128609190810190616a13565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128905790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106128f0576128f0616d79565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061294457612944616d79565b6020026020010181905250846040516020016129609190616da8565b6040516020818303038152906040528160028151811061298257612982616d79565b60200260200101819052508260405160200161299e9190616e14565b604051602081830303815290604052816003815181106129c0576129c0616d79565b602002602001018190525060006129d682613903565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a67906040805180820182526000808252602091820152815180830190925284518252808501908201529061455d565b612a7c5785604051602001611cfb9190616e55565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612ad6565b511590565b612c4a57826020015115612b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d3b565b8260c0015115612c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d3b565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c6357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612cbe90616f15565b935060ff1681518110612cd357612cd3616d79565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d249190616f34565b604051602081830303815290604052828280612d3f90616f15565b935060ff1681518110612d5457612d54616d79565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612da190616f15565b935060ff1681518110612db657612db6616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e0390616f15565b935060ff1681518110612e1857612e18616d79565b60200260200101819052508760200151828280612e3490616f15565b935060ff1681518110612e4957612e49616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612e9690616f15565b935060ff1681518110612eab57612eab616d79565b602090810291909101015287518282612ec381616f15565b935060ff1681518110612ed857612ed8616d79565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f2590616f15565b935060ff1681518110612f3a57612f3a616d79565b6020026020010181905250612f4e466145be565b8282612f5981616f15565b935060ff1681518110612f6e57612f6e616d79565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fbb90616f15565b935060ff1681518110612fd057612fd0616d79565b602002602001018190525086828280612fe890616f15565b935060ff1681518110612ffd57612ffd616d79565b60209081029190910101528551156131245760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261304e81616f15565b935060ff168151811061306357613063616d79565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130b39089906004016168ae565b600060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f89190810190616a13565b828261310381616f15565b935060ff168151811061311857613118616d79565b60200260200101819052505b8460200151156131f45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261316d81616f15565b935060ff168151811061318257613182616d79565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131cf90616f15565b935060ff16815181106131e4576131e4616d79565b60200260200101819052506133bb565b61322c612ad18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132bf5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261326f81616f15565b935060ff168151811061328457613284616d79565b60200260200101819052508460a001516040516020016132a49190616da8565b6040516020818303038152906040528282806131cf90616f15565b8460c0015115801561330257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261330090511590565b155b156133bb5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261334681616f15565b935060ff168151811061335b5761335b616d79565b602002602001018190525061336f8861465e565b60405160200161337f9190616da8565b60405160208183030381529060405282828061339a90616f15565b935060ff16815181106133af576133af616d79565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526133ef90511590565b6134845760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261343281616f15565b935060ff168151811061344757613447616d79565b6020026020010181905250846040015182828061346390616f15565b935060ff168151811061347857613478616d79565b60200260200101819052505b6060850151156135a55760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134cd81616f15565b935060ff16815181106134e2576134e2616d79565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135799190810190616a13565b828261358481616f15565b935060ff168151811061359957613599616d79565b60200260200101819052505b60e0850151511561364c5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826135ef81616f15565b935060ff168151811061360457613604616d79565b60200260200101819052506136208560e00151600001516145be565b828261362b81616f15565b935060ff168151811061364057613640616d79565b60200260200101819052505b60e085015160200151156136f65760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261369981616f15565b935060ff16815181106136ae576136ae616d79565b60200260200101819052506136ca8560e00151602001516145be565b82826136d581616f15565b935060ff16815181106136ea576136ea616d79565b60200260200101819052505b60e085015160400151156137a05760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261374381616f15565b935060ff168151811061375857613758616d79565b60200260200101819052506137748560e00151604001516145be565b828261377f81616f15565b935060ff168151811061379457613794616d79565b60200260200101819052505b60e0850151606001511561384a5760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826137ed81616f15565b935060ff168151811061380257613802616d79565b602002602001018190525061381e8560e00151606001516145be565b828261382981616f15565b935060ff168151811061383e5761383e616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115613868576138686166f7565b60405190808252806020026020018201604052801561389b57816020015b60608152602001906001900390816138865790505b50905060005b8260ff168160ff1610156138f457838160ff16815181106138c4576138c4616d79565b6020026020010151828260ff16815181106138e1576138e1616d79565b60209081029190910101526001016138a1565b5093505050505b949350505050565b61392a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139b091869101616f9f565b600060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139f59190810190616a13565b90506000613a03868361514d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a339190616483565b6000604051808303816000875af1158015613a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7a9190810190616fe6565b805190915060030b15801590613a935750602081015151155b8015613aa25750604081015151155b15612a7c5781600081518110613aba57613aba616d79565b6020026020010151604051602001611cfb919061709c565b60606000613b078560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b3e9082905b906152a2565b15613c9b576000613bbb82613bb584613baf613b818a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152c9565b9061532b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c1f9082906152a2565b15613c8957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613c86905b82906153b0565b90505b613c92816153d6565b92505050611b0e565b8215613cb4578484604051602001611cfb929190617288565b5050604080516020810190915260008152611b0e565b509392505050565b6000808251602084016000f09392505050565b6122f782826001613df2565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d66919061732f565b6000604051808303816000865af19150503d8060008114613da3576040519150601f19603f3d011682016040523d82523d6000602084013e613da8565b606091505b50915091508115613dc757808060200190518101906138fb9190616a13565b505060408051602081019091526000815292915050565b6000613dea838361543f565b159392505050565b8160a0015115613e0157505050565b6000613e0e84848461551a565b90506000613e1b82613903565b602081015181519192509060030b158015613eb75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613eb790604080518082018252600080825260209182015281518083019092528451825280850190820152613b38565b15613ec457505050505050565b60408201515115613ee4578160400151604051602001611cfb919061734b565b80604051602001611cfb91906173a9565b60606000613f2a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613f8f905b829061455d565b15613ffe57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9908390615ab5565b6153d6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614060905b8290615b3f565b60010361412d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140c690613c7f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9905b83906153b0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261418c90613f88565b156142c357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906141f4908390615bd9565b9050600081600183516142079190617414565b8151811061421757614217616d79565b602002602001015190506142ba613ff961428d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615ab5565b95945050505050565b82604051602001611cfb9190617427565b50919050565b6060600061430f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061437190613f88565b1561437f57611b0e816153d6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526143de90614059565b60010361444857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff990614126565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144a790613f88565b156142c357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061450f908390615bd9565b905060018151111561454b57806002825161452a9190617414565b8151811061453a5761453a616d79565b602002602001015192505050919050565b5082604051602001611cfb9190617427565b805182516000911115614572575060006119e8565b8151835160208501516000929161458891617505565b6145929190617414565b9050826020015181036145a95760019150506119e8565b82516020840151819020912014905092915050565b606060006145cb83615c7e565b600101905060008167ffffffffffffffff8111156145eb576145eb6166f7565b6040519080825280601f01601f191660200182016040528015614615576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461461f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916146ea905b8290613dde565b1561472a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614789906146e3565b156147c957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614828906146e3565b1561486857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148c7906146e3565b8061492c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261492c906146e3565b1561496c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149cb906146e3565b80614a305750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a30906146e3565b15614a7057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614acf906146e3565b80614b345750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b34906146e3565b15614b7457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bd3906146e3565b80614c385750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c38906146e3565b15614c7857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cd7906146e3565b15614d1757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d76906146e3565b15614db657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e15906146e3565b15614e5557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614eb4906146e3565b15614ef457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f53906146e3565b15614f9357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ff2906146e3565b806150575750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615057906146e3565b1561509757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f6906146e3565b1561513657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611cfb9290602001617518565b60608060005b84518110156151d8578185828151811061516f5761516f616d79565b60200260200101516040516020016151889291906168c1565b6040516020818303038152906040529150600185516151a79190617414565b81146151d057816040516020016151be9190617681565b60405160208183030381529060405291505b600101615153565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816151f1579050509050838160008151811061521c5761521c616d79565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061527057615270616d79565b6020026020010181905250818160028151811061528f5761528f616d79565b6020908102919091010152949350505050565b60208083015183518351928401516000936152c09291849190615d60565b14159392505050565b604080518082019091526000808252602082015260006152fb8460000151856020015185600001518660200151615e71565b905083602001518161530d9190617414565b8451859061531c908390617414565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156153505750816119e8565b60208083015190840151600191146153775750815160208481015190840151829020919020145b80156153a85782518451859061538e908390617414565b90525082516020850180516153a4908390617505565b9052505b509192915050565b60408051808201909152600080825260208201526153cf838383615f91565b5092915050565b60606000826000015167ffffffffffffffff8111156153f7576153f76166f7565b6040519080825280601f01601f191660200182016040528015615421576020820181803683370190505b50905060006020820190506153cf818560200151866000015161603c565b8151815160009190811115615452575081515b6020808501519084015160005b8381101561550b57825182518082146154db5760001960208710156154ba5760018461548c896020617414565b6154969190617505565b6154a19060086176c2565b6154ac9060026177c0565b6154b69190617414565b1990505b81811683821681810391146154d85797506119e89650505050505050565b50505b6154e6602086617505565b94506154f3602085617505565b935050506020816155049190617505565b905061545f565b5084518651612a7c91906177cc565b606060006155266122fb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161554357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061559e90616f15565b935060ff16815181106155b3576155b3616d79565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161560491906177ec565b60405160208183030381529060405282828061561f90616f15565b935060ff168151811061563457615634616d79565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061568190616f15565b935060ff168151811061569657615696616d79565b6020026020010181905250826040516020016156b29190616e14565b6040516020818303038152906040528282806156cd90616f15565b935060ff16815181106156e2576156e2616d79565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061572f90616f15565b935060ff168151811061574457615744616d79565b602002602001018190525061575987846160b6565b828261576481616f15565b935060ff168151811061577957615779616d79565b6020908102919091010152855151156158255760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157cb81616f15565b935060ff16815181106157e0576157e0616d79565b60200260200101819052506157f98660000151846160b6565b828261580481616f15565b935060ff168151811061581957615819616d79565b60200260200101819052505b8560800151156158935760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261586e81616f15565b935060ff168151811061588357615883616d79565b60200260200101819052506158f9565b84156158f95760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826158d881616f15565b935060ff16815181106158ed576158ed616d79565b60200260200101819052505b604086015151156159955760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261594381616f15565b935060ff168151811061595857615958616d79565b6020026020010181905250856040015182828061597490616f15565b935060ff168151811061598957615989616d79565b60200260200101819052505b8560600151156159ff5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826159de81616f15565b935060ff16815181106159f3576159f3616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a1d57615a1d6166f7565b604051908082528060200260200182016040528015615a5057816020015b6060815260200190600190039081615a3b5790505b50905060005b8260ff168160ff161015615aa957838160ff1681518110615a7957615a79616d79565b6020026020010151828260ff1681518110615a9657615a96616d79565b6020908102919091010152600101615a56565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615ada5750816119e8565b81518351602085015160009291615af091617505565b615afa9190617414565b60208401519091506001908214615b1b575082516020840151819020908220145b8015615b3657835185518690615b32908390617414565b9052505b50929392505050565b6000808260000151615b638560000151866020015186600001518760200151615e71565b615b6d9190617505565b90505b83516020850151615b819190617505565b81116153cf5781615b9181617831565b9250508260000151615bc8856020015183615bac9190617414565b8651615bb89190617414565b8386600001518760200151615e71565b615bd29190617505565b9050615b70565b60606000615be78484615b3f565b615bf2906001617505565b67ffffffffffffffff811115615c0a57615c0a6166f7565b604051908082528060200260200182016040528015615c3d57816020015b6060815260200190600190039081615c285790505b50905060005b8151811015613cca57615c59613ff986866153b0565b828281518110615c6b57615c6b616d79565b6020908102919091010152600101615c43565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cc7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615cf3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d1157662386f26fc10000830492506010015b6305f5e1008310615d29576305f5e100830492506008015b6127108310615d3d57612710830492506004015b60648310615d4f576064830492506002015b600a83106119e85760010192915050565b600080858411615e675760208411615e135760008415615dab576001615d87866020617414565b615d929060086176c2565b615d9d9060026177c0565b615da79190617414565b1990505b8351811685615dba8989617505565b615dc49190617414565b805190935082165b818114615dfe57878411615de657879450505050506138fb565b83615df08161784b565b945050828451169050615dcc565b615e088785617505565b9450505050506138fb565b838320615e208588617414565b615e2a9087617505565b91505b858210615e6557848220808203615e5257615e488684617505565b93505050506138fb565b615e5d600184617414565b925050615e2d565b505b5092949350505050565b60008381868511615f7c5760208511615f2b5760008515615ebd576001615e99876020617414565b615ea49060086176c2565b615eaf9060026177c0565b615eb99190617414565b1990505b84518116600087615ece8b8b617505565b615ed89190617414565b855190915083165b828114615f1d57818610615f0557615ef88b8b617505565b96505050505050506138fb565b85615f0f81617831565b965050838651169050615ee0565b8596505050505050506138fb565b508383206000905b615f3d8689617414565b8211615f7a57858320808203615f5957839450505050506138fb565b615f64600185617505565b9350508180615f7290617831565b925050615f33565b505b615f868787617505565b979650505050505050565b60408051808201909152600080825260208201526000615fc38560000151866020015186600001518760200151615e71565b602080870180519186019190915251909150615fdf9082617414565b835284516020860151615ff29190617505565b81036160015760008552616033565b8351835161600f9190617505565b8551869061601e908390617414565b905250835161602d9082617505565b60208601525b50909392505050565b602081106160745781518352616053602084617505565b9250616060602083617505565b915061606d602082617414565b905061603c565b60001981156160a357600161608a836020617414565b616096906101006177c0565b6160a09190617414565b90505b9151835183169219169190911790915250565b606060006160c484846123ce565b80516020808301516040519394506160de93909101617862565b60405160208183030381529060405291505092915050565b610c9f806178bb83390190565b610b4a8061855a83390190565b610f9a806190a483390190565b610d5e8061a03e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161616d616172565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161616d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156162245783516001600160a01b03168352602093840193909201916001016161fd565b509095945050505050565b60005b8381101561624a578181015183820152602001616232565b50506000910152565b6000815180845261626b81602086016020860161622f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616361577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261634b848651616253565b6020958601959094509290920191600101616311565b5091975050506020948501949290920191506001016162a7565b50929695505050505050565b600081518084526020840193506020830160005b828110156163db5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161639b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526164516040880182616253565b905060208201519150868103602088015261646c8183616387565b96505050602093840193919091019060010161640d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526164e5858351616253565b945060209384019391909101906001016164ab565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261657b6040870182616387565b9550506020938401939190910190600101616522565b6000602082840312156165a357600080fd5b81518015158114611b0e57600080fd5b600181811c908216806165c757607f821691505b6020821081036142d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561661257600080fd5b81516001600160a01b0381168114611b0e57600080fd5b60608152600061663c6060830186616253565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142ba6060830184616253565b6001600160a01b038616815284602082015260a0604082015260006166a360a0830186616253565b6060830194909452509015156080909101529392505050565b8281526040602082015260006138fb6040830184616253565b6001600160a01b03831681526040602082015260006138fb6040830184616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616749576167496166f7565b60405290565b60008067ffffffffffffffff84111561676a5761676a6166f7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616799576167996166f7565b6040528381529050808284018510156167b157600080fd5b613cca84602083018561622f565b600082601f8301126167d057600080fd5b611b0e8383516020850161674f565b6000602082840312156167f157600080fd5b815167ffffffffffffffff81111561680857600080fd5b6119e4848285016167bf565b60006020828403121561682657600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161686581601a85016020880161622f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168a281601c84016020880161622f565b01601c01949350505050565b602081526000611b0e6020830184616253565b600083516168d381846020880161622f565b8351908301906168e781836020880161622f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161692881601a85016020880161622f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161696581603384016020880161622f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142ba6060830184616253565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616a2557600080fd5b815167ffffffffffffffff811115616a3c57600080fd5b8201601f81018413616a4d57600080fd5b6119e48482516020840161674f565b60008551616a6e818460208a0161622f565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616aa8816001840160208a0161622f565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616ae681600284016020890161622f565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b2881600284016020880161622f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b736040830184616253565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616bea81601f85016020870161622f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c576040830184616253565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616ca96040830184616253565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d2081601485016020870161622f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d676040830185616253565b8281036020840152611b0a8185616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616de081600185016020870161622f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e2681846020870161622f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616ed981604b85016020870161622f565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f2b57616f2b616ee6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616ff857600080fd5b815167ffffffffffffffff81111561700f57600080fd5b82016060818503121561702157600080fd5b617029616726565b81518060030b811461703a57600080fd5b8152602082015167ffffffffffffffff81111561705657600080fd5b617062868285016167bf565b602083015250604082015167ffffffffffffffff81111561708257600080fd5b61708e868285016167bf565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516170fa81602185016020870161622f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516172e681602185016020880161622f565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161732381602e84016020880161622f565b01602e01949350505050565b6000825161734181846020870161622f565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161740781602285016020870161622f565b9190910160220192915050565b818103818111156119e8576119e8616ee6565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161745f81600e85016020870161622f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156119e8576119e8616ee6565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161755081601885016020880161622f565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161758d81601c84016020880161622f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161769381846020870161622f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176119e8576119e8616ee6565b6001815b6001841115617714578085048111156176f8576176f8616ee6565b600184161561770657908102905b60019390931c9280026176dd565b935093915050565b60008261772b575060016119e8565b81617738575060006119e8565b816001811461774e576002811461775857617774565b60019150506119e8565b60ff84111561776957617769616ee6565b50506001821b6119e8565b5060208310610133831016604e8410600b8410161715617797575081810a6119e8565b6177a460001984846176d9565b80600019048211156177b8576177b8616ee6565b029392505050565b6000611b0e838361771c565b81810360008312801583831316838312821617156153cf576153cf616ee6565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161782481601c85016020870161622f565b91909101601c0192915050565b6000600019820361784457617844616ee6565b5060010190565b60008161785a5761785a616ee6565b506000190190565b6000835161787481846020880161622f565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178ae81600184016020880161622f565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220cbad1414583bb5eed6bd91ae2cec07a279afe0cc017c8c893657484636f5d89664736f6c634300081a0033", } // GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index 61308e06..0bffb795 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea264697066735822122080ca52360500cb8c1ff37c01ce754e149b0bf2525ac575c45d2f6db66011666364736f6c634300081a0033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index 9779a4fa..f67a50bb 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f1148061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b610132611156565b60405161013f9190617602565b60405180910390f35b6101506111b8565b60405161013f919061769e565b6101326112fa565b61013261135a565b6101286113ba565b61017d611c17565b60405161013f9190617804565b610128611d99565b61019a6125a2565b60405161013f91906178a2565b6101af612672565b60405161013f9190617919565b61012861276d565b6101af612d32565b61019a612e2d565b6101dc612efd565b604051901515815260200161013f565b610128612fd1565b61013261337d565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051610267906174ee565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610331906174ee565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152610499919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526133dd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061051d906174fb565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610550573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460405192841693918216929116906105a590617508565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156105e1573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906179b0565b506040516109bd90617515565b604051809103906000f0801580156109d9573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519290931692820192909252610ab7919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526133dd565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b0890617522565b6001600160a01b039091168152602001604051809103906000f080158015610b34573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506000806000604051610c129061752f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c4e573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610ca49061753c565b610cb3969594939291906179d2565b604051809103906000f080158015610ccf573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9091906179b0565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906179b0565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af1158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906179b0565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156112f157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112da57838290600052602060002001805461124d90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461127990617ac7565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b50505050508152602001906001019061122e565b5050505081525050815260200190600101906111dc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190617b14565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114c790889088908890602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611560926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d5461159192620f4240916001600160a01b0316908690602401617b57565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161164e916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b15801561166857600080fd5b505af115801561167c573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117a092620f4240916001600160a01b0316908d908d908d90600401617bbe565b600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561184b57600080fd5b505af115801561185f573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061194e92506001600160a01b039091169087908b908b908b90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a3d9087908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b1f9216908790600401617c6d565b60006040518083038185885af1158015611b3d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b669190810190617d77565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf59190617b14565b9050611c0d81611c08620f424087617ddb565b6133fc565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000209060020201604051806040016040529081600082018054611c6e90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9a90617ac7565b8015611ce75780601f10611cbc57610100808354040283529160200191611ce7565b820191906000526020600020905b815481529060010190602001808311611cca57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d8157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d2e5790505b50505050508152505081526020019060010190611c3b565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e1590879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190617b14565b8760405161201596959493929190617dee565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261213992620f4240916001600160a01b0316908790600401617e41565b600060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190617b14565b90506122048160006133fc565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061238192506001600160a01b039091169086908a908a908a90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124709086908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125529216908790600401617c6d565b60006040518083038185885af1158015612570573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125999190810190617d77565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000200180546125e590617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461261190617ac7565b801561265e5780601f106126335761010080835404028352916020019161265e565b820191906000526020600020905b81548152906001019060200180831161264157829003601f168201915b5050505050815260200190600101906125c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127025790505b50505050508152505081526020019060010190612696565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906127e990879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129ea918590617e7b565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a57929190617e7b565b600060405180830381600087803b158015612a7157600080fd5b505af1158015612a85573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612ba857600080fd5b505af1158015612bbc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c019085908590617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c7b57600080fd5b505af1158015612c8f573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692612ce39216908690600401617c6d565b60006040518083038185885af1158015612d01573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d2a9190810190617d77565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dc25790505b50505050508152505081526020019060010190612d56565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112f1578382906000526020600020018054612e7090617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9c90617ac7565b8015612ee95780601f10612ebe57610100808354040283529160200191612ee9565b820191906000526020600020905b815481529060010190602001808311612ecc57829003601f168201915b505050505081526020019060010190612e51565b60085460009060ff1615612f15575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fca9190617b14565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304d90879087908790602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e6926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052613105918490602401617e7b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c2916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016132e79493929190617ea0565b600060405180830381600087803b15801561330157600080fd5b505af1158015613315573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401612264565b606060158054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b60006133e7617549565b6133f284848361347b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561346757600080fd5b505afa158015612d2a573d6000803e3d6000fd5b60008061348885846134f6565b90506134eb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016134d6929190617c6d565b60405160208183030381529060405285613502565b9150505b9392505050565b60006134ef8383613530565b60c081015151600090156135265761351f84848460c0015161354b565b90506134ef565b61351f84846136f1565b600061353c83836137dc565b6134ef83836020015184613502565b6000806135566137ec565b9050600061356486836138bf565b9050600061357b8260600151836020015185613d65565b9050600061358b83838989613f77565b9050600061359882614df4565b602081015181519192509060030b1561360b578982604001516040516020016135c2929190617ede565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261360291600401617f5f565b60405180910390fd5b600061364e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614fc3565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906136a1908490600401617f5f565b602060405180830381865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e29190617f72565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613746908790600401617f5f565b600060405180830381865afa158015613763573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261378b9190810190617d77565b905060006137b982856040516020016137a5929190617f9b565b6040516020818303038152906040526151c3565b90506001600160a01b0381166133f25784846040516020016135c2929190617fca565b6137e8828260006151d6565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613873908490600401618075565b600060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138b891908101906180bc565b9250505090565b6138f16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061393c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613945856152d9565b60208201526000613955866156be565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139bf91908101906180bc565b868385602001516040516020016139d99493929190618105565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613a31908590600401617f5f565b600060405180830381865afa158015613a4e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7691908101906180bc565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613abe908490600401618209565b602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aff91906179b0565b613b1457816040516020016135c2919061825b565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613b599084906004016182ed565b600060405180830381865afa158015613b76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b9e91908101906180bc565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613be590849060040161833f565b602060405180830381865afa158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906179b0565b15613cbb576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613c7090849060040161833f565b600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906180bc565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613ce09190618391565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613d0c929190617e7b565b600060405180830381865afa158015613d29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5191908101906180bc565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081613d815790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613de157613de16183fd565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110613e3557613e356183fd565b602002602001018190525084604051602001613e51919061842c565b60405160208183030381529060405281600281518110613e7357613e736183fd565b602002602001018190525082604051602001613e8f9190618498565b60405160208183030381529060405281600381518110613eb157613eb16183fd565b60200260200101819052506000613ec782614df4565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250613f589060408051808201825260008082526020918201528151808301909252845182528085019082015290615941565b613f6d57856040516020016135c291906184d9565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613fc7565b511590565b61413b57826020015115614083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613602565b8260c001511561413b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613602565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161415457905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806141af9061856a565b935060ff16815181106141c4576141c46183fd565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016142159190618589565b6040516020818303038152906040528282806142309061856a565b935060ff1681518110614245576142456183fd565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806142929061856a565b935060ff16815181106142a7576142a76183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806142f49061856a565b935060ff1681518110614309576143096183fd565b602002602001018190525087602001518282806143259061856a565b935060ff168151811061433a5761433a6183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806143879061856a565b935060ff168151811061439c5761439c6183fd565b6020908102919091010152875182826143b48161856a565b935060ff16815181106143c9576143c96183fd565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806144169061856a565b935060ff168151811061442b5761442b6183fd565b602002602001018190525061443f466159a2565b828261444a8161856a565b935060ff168151811061445f5761445f6183fd565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806144ac9061856a565b935060ff16815181106144c1576144c16183fd565b6020026020010181905250868282806144d99061856a565b935060ff16815181106144ee576144ee6183fd565b60209081029190910101528551156146155760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261453f8161856a565b935060ff1681518110614554576145546183fd565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906145a4908990600401617f5f565b600060405180830381865afa1580156145c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145e991908101906180bc565b82826145f48161856a565b935060ff1681518110614609576146096183fd565b60200260200101819052505b8460200151156146e55760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261465e8161856a565b935060ff1681518110614673576146736183fd565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806146c09061856a565b935060ff16815181106146d5576146d56183fd565b60200260200101819052506148ac565b61471d613fc28660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6147b05760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826147608161856a565b935060ff1681518110614775576147756183fd565b60200260200101819052508460a00151604051602001614795919061842c565b6040516020818303038152906040528282806146c09061856a565b8460c001511580156147f35750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526147f190511590565b155b156148ac5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826148378161856a565b935060ff168151811061484c5761484c6183fd565b602002602001018190525061486088615a42565b604051602001614870919061842c565b60405160208183030381529060405282828061488b9061856a565b935060ff16815181106148a0576148a06183fd565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526148e090511590565b6149755760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826149238161856a565b935060ff1681518110614938576149386183fd565b602002602001018190525084604001518282806149549061856a565b935060ff1681518110614969576149696183fd565b60200260200101819052505b606085015115614a965760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826149be8161856a565b935060ff16815181106149d3576149d36183fd565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a6a91908101906180bc565b8282614a758161856a565b935060ff1681518110614a8a57614a8a6183fd565b60200260200101819052505b60e08501515115614b3d5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614ae08161856a565b935060ff1681518110614af557614af56183fd565b6020026020010181905250614b118560e00151600001516159a2565b8282614b1c8161856a565b935060ff1681518110614b3157614b316183fd565b60200260200101819052505b60e08501516020015115614be75760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614b8a8161856a565b935060ff1681518110614b9f57614b9f6183fd565b6020026020010181905250614bbb8560e00151602001516159a2565b8282614bc68161856a565b935060ff1681518110614bdb57614bdb6183fd565b60200260200101819052505b60e08501516040015115614c915760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614c348161856a565b935060ff1681518110614c4957614c496183fd565b6020026020010181905250614c658560e00151604001516159a2565b8282614c708161856a565b935060ff1681518110614c8557614c856183fd565b60200260200101819052505b60e08501516060015115614d3b5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614cde8161856a565b935060ff1681518110614cf357614cf36183fd565b6020026020010181905250614d0f8560e00151606001516159a2565b8282614d1a8161856a565b935060ff1681518110614d2f57614d2f6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115614d5957614d59617c8f565b604051908082528060200260200182016040528015614d8c57816020015b6060815260200190600190039081614d775790505b50905060005b8260ff168160ff161015614de557838160ff1681518110614db557614db56183fd565b6020026020010151828260ff1681518110614dd257614dd26183fd565b6020908102919091010152600101614d92565b5093505050505b949350505050565b614e1b6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614ea1918691016185f4565b600060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ee691908101906180bc565b90506000614ef48683616531565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401614f2491906178a2565b6000604051808303816000875af1158015614f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f6b919081019061863b565b805190915060030b15801590614f845750602081015151155b8015614f935750604081015151155b15613f6d5781600081518110614fab57614fab6183fd565b60200260200101516040516020016135c291906186f1565b60606000614ff88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061502f9082905b90616686565b1561518c5760006150ac826150a6846150a06150728a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906166ad565b9061670f565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615110908290616686565b1561517a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615177905b8290616794565b90505b615183816167ba565b925050506134ef565b82156151a55784846040516020016135c29291906188dd565b50506040805160208101909152600081526134ef565b509392505050565b6000808251602084016000f09392505050565b8160a00151156151e557505050565b60006151f2848484616823565b905060006151ff82614df4565b602081015181519192509060030b15801561529b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529b90604080518082018252600080825260209182015281518083019092528451825280850190820152615029565b156152a857505050505050565b604082015151156152c85781604001516040516020016135c29190618984565b806040516020016135c291906189e2565b6060600061530e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615373905b8290615941565b156153e257604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd908390616dbe565b6167ba565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615444905b8290616e48565b60010361551157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154aa90615170565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd905b8390616794565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155709061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906155d8908390616ee2565b9050600081600183516155eb9190617ddb565b815181106155fb576155fb6183fd565b6020026020010151905061569e6153dd6156716040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290616dbe565b95945050505050565b826040516020016135c29190618a4d565b50919050565b606060006156f38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506157559061536c565b15615763576134ef816167ba565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c29061543d565b60010361582c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd9061550a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261588b9061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158f3908390616ee2565b905060018151111561592f57806002825161590e9190617ddb565b8151811061591e5761591e6183fd565b602002602001015192505050919050565b50826040516020016135c29190618a4d565b805182516000911115615956575060006133f6565b8151835160208501516000929161596c91618b2b565b6159769190617ddb565b90508260200151810361598d5760019150506133f6565b82516020840151819020912014905092915050565b606060006159af83616f87565b600101905060008167ffffffffffffffff8111156159cf576159cf617c8f565b6040519080825280601f01601f1916602001820160405280156159f9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615a0357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ace905b8290617069565b15615b0e57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6d90615ac7565b15615bad57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c0c90615ac7565b15615c4c57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cab90615ac7565b80615d105750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d1090615ac7565b15615d5057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615daf90615ac7565b80615e145750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1490615ac7565b15615e5457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb390615ac7565b80615f185750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f1890615ac7565b15615f5857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fb790615ac7565b8061601c5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261601c90615ac7565b1561605c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bb90615ac7565b156160fb57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615a90615ac7565b1561619a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161f990615ac7565b1561623957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261629890615ac7565b156162d857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633790615ac7565b1561637757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d690615ac7565b8061643b5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261643b90615ac7565b1561647b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164da90615ac7565b1561651a57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516135c29290602001618b3e565b60608060005b84518110156165bc5781858281518110616553576165536183fd565b602002602001015160405160200161656c929190617f9b565b60405160208183030381529060405291506001855161658b9190617ddb565b81146165b457816040516020016165a29190618ca7565b60405160208183030381529060405291505b600101616537565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816165d55790505090508381600081518110616600576166006183fd565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616654576166546183fd565b60200260200101819052508181600281518110616673576166736183fd565b6020908102919091010152949350505050565b60208083015183518351928401516000936166a4929184919061707d565b14159392505050565b604080518082019091526000808252602082015260006166df846000015185602001518560000151866020015161718e565b90508360200151816166f19190617ddb565b84518590616700908390617ddb565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156167345750816133f6565b602080830151908401516001911461675b5750815160208481015190840151829020919020145b801561678c57825184518590616772908390617ddb565b9052508251602085018051616788908390618b2b565b9052505b509192915050565b60408051808201909152600080825260208201526167b38383836172ae565b5092915050565b60606000826000015167ffffffffffffffff8111156167db576167db617c8f565b6040519080825280601f01601f191660200182016040528015616805576020820181803683370190505b50905060006020820190506167b38185602001518660000151617359565b6060600061682f6137ec565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161684c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806168a79061856a565b935060ff16815181106168bc576168bc6183fd565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161690d9190618ce8565b6040516020818303038152906040528282806169289061856a565b935060ff168151811061693d5761693d6183fd565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061698a9061856a565b935060ff168151811061699f5761699f6183fd565b6020026020010181905250826040516020016169bb9190618498565b6040516020818303038152906040528282806169d69061856a565b935060ff16815181106169eb576169eb6183fd565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616a389061856a565b935060ff1681518110616a4d57616a4d6183fd565b6020026020010181905250616a6287846173d3565b8282616a6d8161856a565b935060ff1681518110616a8257616a826183fd565b602090810291909101015285515115616b2e5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ad48161856a565b935060ff1681518110616ae957616ae96183fd565b6020026020010181905250616b028660000151846173d3565b8282616b0d8161856a565b935060ff1681518110616b2257616b226183fd565b60200260200101819052505b856080015115616b9c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616b778161856a565b935060ff1681518110616b8c57616b8c6183fd565b6020026020010181905250616c02565b8415616c025760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616be18161856a565b935060ff1681518110616bf657616bf66183fd565b60200260200101819052505b60408601515115616c9e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616c4c8161856a565b935060ff1681518110616c6157616c616183fd565b60200260200101819052508560400151828280616c7d9061856a565b935060ff1681518110616c9257616c926183fd565b60200260200101819052505b856060015115616d085760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616ce78161856a565b935060ff1681518110616cfc57616cfc6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616d2657616d26617c8f565b604051908082528060200260200182016040528015616d5957816020015b6060815260200190600190039081616d445790505b50905060005b8260ff168160ff161015616db257838160ff1681518110616d8257616d826183fd565b6020026020010151828260ff1681518110616d9f57616d9f6183fd565b6020908102919091010152600101616d5f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616de35750816133f6565b81518351602085015160009291616df991618b2b565b616e039190617ddb565b60208401519091506001908214616e24575082516020840151819020908220145b8015616e3f57835185518690616e3b908390617ddb565b9052505b50929392505050565b6000808260000151616e6c856000015186602001518660000151876020015161718e565b616e769190618b2b565b90505b83516020850151616e8a9190618b2b565b81116167b35781616e9a81618d2d565b9250508260000151616ed1856020015183616eb59190617ddb565b8651616ec19190617ddb565b838660000151876020015161718e565b616edb9190618b2b565b9050616e79565b60606000616ef08484616e48565b616efb906001618b2b565b67ffffffffffffffff811115616f1357616f13617c8f565b604051908082528060200260200182016040528015616f4657816020015b6060815260200190600190039081616f315790505b50905060005b81518110156151bb57616f626153dd8686616794565b828281518110616f7457616f746183fd565b6020908102919091010152600101616f4c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616fd0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310616ffc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061701a57662386f26fc10000830492506010015b6305f5e1008310617032576305f5e100830492506008015b612710831061704657612710830492506004015b60648310617058576064830492506002015b600a83106133f65760010192915050565b60006170758383617413565b159392505050565b600080858411617184576020841161713057600084156170c85760016170a4866020617ddb565b6170af906008618d47565b6170ba906002618e45565b6170c49190617ddb565b1990505b83518116856170d78989618b2b565b6170e19190617ddb565b805190935082165b81811461711b578784116171035787945050505050614dec565b8361710d81618e51565b9450508284511690506170e9565b6171258785618b2b565b945050505050614dec565b83832061713d8588617ddb565b6171479087618b2b565b91505b8582106171825784822080820361716f576171658684618b2b565b9350505050614dec565b61717a600184617ddb565b92505061714a565b505b5092949350505050565b60008381868511617299576020851161724857600085156171da5760016171b6876020617ddb565b6171c1906008618d47565b6171cc906002618e45565b6171d69190617ddb565b1990505b845181166000876171eb8b8b618b2b565b6171f59190617ddb565b855190915083165b82811461723a57818610617222576172158b8b618b2b565b9650505050505050614dec565b8561722c81618d2d565b9650508386511690506171fd565b859650505050505050614dec565b508383206000905b61725a8689617ddb565b8211617297578583208082036172765783945050505050614dec565b617281600185618b2b565b935050818061728f90618d2d565b925050617250565b505b6172a38787618b2b565b979650505050505050565b604080518082019091526000808252602082015260006172e0856000015186602001518660000151876020015161718e565b6020808701805191860191909152519091506172fc9082617ddb565b83528451602086015161730f9190618b2b565b810361731e5760008552617350565b8351835161732c9190618b2b565b8551869061733b908390617ddb565b905250835161734a9082618b2b565b60208601525b50909392505050565b602081106173915781518352617370602084618b2b565b925061737d602083618b2b565b915061738a602082617ddb565b9050617359565b60001981156173c05760016173a7836020617ddb565b6173b390610100618e45565b6173bd9190617ddb565b90505b9151835183169219169190911790915250565b606060006173e184846138bf565b80516020808301516040519394506173fb93909101618e68565b60405160208183030381529060405291505092915050565b8151815160009190811115617426575081515b6020808501519084015160005b838110156174df57825182518082146174af57600019602087101561748e57600184617460896020617ddb565b61746a9190618b2b565b617475906008618d47565b617480906002618e45565b61748a9190617ddb565b1990505b81811683821681810391146174ac5797506133f69650505050505050565b50505b6174ba602086618b2b565b94506174c7602085618b2b565b935050506020816174d89190618b2b565b9050617433565b5084518651613f6d9190618ec0565b610c9f80618ee183390190565b610b4a80619b8083390190565b610f9a8061a6ca83390190565b610d5e8061b66483390190565b6107f68061c3c283390190565b610b3f8061cbb883390190565b6119e88061d6f783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161758c617591565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161758c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156176435783516001600160a01b031683526020938401939092019160010161761c565b509095945050505050565b60005b83811015617669578181015183820152602001617651565b50506000910152565b6000815180845261768a81602086016020860161764e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617780577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261776a848651617672565b6020958601959094509290920191600101617730565b5091975050506020948501949290920191506001016176c6565b50929695505050505050565b600081518084526020840193506020830160005b828110156177fa5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016177ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526178706040880182617672565b905060208201519150868103602088015261788b81836177a6565b96505050602093840193919091019060010161782c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617904858351617672565b945060209384019391909101906001016178ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261799a60408701826177a6565b9550506020938401939190910190600101617941565b6000602082840312156179c257600080fd5b815180151581146134ef57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617aad60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617adb57607f821691505b6020821081036156b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617b2657600080fd5b5051919050565b606081526000617b406060830186617672565b602083019490945250901515604090910152919050565b608081526000617b6a6080830187617672565b62ffffff861660208401526001600160a01b038516604084015282810360608401526172a38185617672565b6001600160a01b038416815282602082015260606040820152600061569e6060830184617672565b60c081526000617bd160c0830189617672565b8760208401526001600160a01b03871660408401528281036060840152617bf88187617672565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617c3b60a0830186617672565b6060830194909452509015156080909101529392505050565b828152604060208201526000614dec6040830184617672565b6001600160a01b0383168152604060208201526000614dec6040830184617672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617ce157617ce1617c8f565b60405290565b60008067ffffffffffffffff841115617d0257617d02617c8f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617d3157617d31617c8f565b604052838152905080828401851015617d4957600080fd5b6151bb84602083018561764e565b600082601f830112617d6857600080fd5b6134ef83835160208501617ce7565b600060208284031215617d8957600080fd5b815167ffffffffffffffff811115617da057600080fd5b6133f284828501617d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156133f6576133f6617dac565b6001600160a01b038716815260c060208201526000617e1060c0830188617672565b86604084015285606084015284608084015282810360a0840152617e348185617672565b9998505050505050505050565b608081526000617e546080830187617672565b8560208401526001600160a01b038516604084015282810360608401526172a38185617672565b604081526000617e8e6040830185617672565b82810360208401526134eb8185617672565b608081526000617eb36080830187617672565b8281036020840152617ec58187617672565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617f1681601a85016020880161764e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f5381601c84016020880161764e565b01601c01949350505050565b6020815260006134ef6020830184617672565b600060208284031215617f8457600080fd5b81516001600160a01b03811681146134ef57600080fd5b60008351617fad81846020880161764e565b835190830190617fc181836020880161764e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161800281601a85016020880161764e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161803f81603384016020880161764e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006134ef6080830184617672565b6000602082840312156180ce57600080fd5b815167ffffffffffffffff8111156180e557600080fd5b8201601f810184136180f657600080fd5b6133f284825160208401617ce7565b60008551618117818460208a0161764e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618151816001840160208a0161764e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161818f81600284016020890161764e565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516181d181600284016020880161764e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061821c6040830184617672565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161829381601f85016020870161764e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006183006040830184617672565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183526040830184617672565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516183c981601485016020870161764e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161846481600185016020870161764e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516184aa81846020870161764e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161855d81604b85016020870161764e565b91909101604b0192915050565b600060ff821660ff810361858057618580617dac565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006134ef6080830184617672565b60006020828403121561864d57600080fd5b815167ffffffffffffffff81111561866457600080fd5b82016060818503121561867657600080fd5b61867e617cbe565b81518060030b811461868f57600080fd5b8152602082015167ffffffffffffffff8111156186ab57600080fd5b6186b786828501617d57565b602083015250604082015167ffffffffffffffff8111156186d757600080fd5b6186e386828501617d57565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161874f81602185016020870161764e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161893b81602185016020880161764e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161897881602e84016020880161764e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618a4081602285016020870161764e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618a8581600e85016020870161764e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156133f6576133f6617dac565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618b7681601885016020880161764e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618bb381601c84016020880161764e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618cb981846020870161764e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618d2081601c85016020870161764e565b91909101601c0192915050565b60006000198203618d4057618d40617dac565b5060010190565b80820281158282048414176133f6576133f6617dac565b6001815b6001841115618d9957808504811115618d7d57618d7d617dac565b6001841615618d8b57908102905b60019390931c928002618d62565b935093915050565b600082618db0575060016133f6565b81618dbd575060006133f6565b8160018114618dd35760028114618ddd57618df9565b60019150506133f6565b60ff841115618dee57618dee617dac565b50506001821b6133f6565b5060208310610133831016604e8410600b8410161715618e1c575081810a6133f6565b618e296000198484618d5e565b8060001904821115618e3d57618e3d617dac565b029392505050565b60006134ef8383618da1565b600081618e6057618e60617dac565b506000190190565b60008351618e7a81846020880161764e565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618eb481600184016020880161764e565b01600101949350505050565b81810360008312801583831316838312821617156167b3576167b3617dac56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a2646970667358221220dbf12c2832ab74df8ec1292715e3c69624daafc9af9fa95864fbcca6c9f90d3e64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f1148061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b610132611156565b60405161013f9190617602565b60405180910390f35b6101506111b8565b60405161013f919061769e565b6101326112fa565b61013261135a565b6101286113ba565b61017d611c17565b60405161013f9190617804565b610128611d99565b61019a6125a2565b60405161013f91906178a2565b6101af612672565b60405161013f9190617919565b61012861276d565b6101af612d32565b61019a612e2d565b6101dc612efd565b604051901515815260200161013f565b610128612fd1565b61013261337d565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051610267906174ee565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610331906174ee565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152610499919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526133dd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061051d906174fb565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610550573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460405192841693918216929116906105a590617508565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156105e1573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906179b0565b506040516109bd90617515565b604051809103906000f0801580156109d9573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519290931692820192909252610ab7919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526133dd565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b0890617522565b6001600160a01b039091168152602001604051809103906000f080158015610b34573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506000806000604051610c129061752f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c4e573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610ca49061753c565b610cb3969594939291906179d2565b604051809103906000f080158015610ccf573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9091906179b0565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906179b0565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af1158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906179b0565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156112f157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112da57838290600052602060002001805461124d90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461127990617ac7565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b50505050508152602001906001019061122e565b5050505081525050815260200190600101906111dc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190617b14565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114c790889088908890602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611560926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d5461159192620f4240916001600160a01b0316908690602401617b57565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161164e916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b15801561166857600080fd5b505af115801561167c573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117a092620f4240916001600160a01b0316908d908d908d90600401617bbe565b600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561184b57600080fd5b505af115801561185f573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061194e92506001600160a01b039091169087908b908b908b90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a3d9087908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b1f9216908790600401617c6d565b60006040518083038185885af1158015611b3d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b669190810190617d77565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf59190617b14565b9050611c0d81611c08620f424087617ddb565b6133fc565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000209060020201604051806040016040529081600082018054611c6e90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9a90617ac7565b8015611ce75780601f10611cbc57610100808354040283529160200191611ce7565b820191906000526020600020905b815481529060010190602001808311611cca57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d8157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d2e5790505b50505050508152505081526020019060010190611c3b565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e1590879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190617b14565b8760405161201596959493929190617dee565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261213992620f4240916001600160a01b0316908790600401617e41565b600060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190617b14565b90506122048160006133fc565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061238192506001600160a01b039091169086908a908a908a90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124709086908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125529216908790600401617c6d565b60006040518083038185885af1158015612570573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125999190810190617d77565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000200180546125e590617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461261190617ac7565b801561265e5780601f106126335761010080835404028352916020019161265e565b820191906000526020600020905b81548152906001019060200180831161264157829003601f168201915b5050505050815260200190600101906125c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127025790505b50505050508152505081526020019060010190612696565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906127e990879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129ea918590617e7b565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a57929190617e7b565b600060405180830381600087803b158015612a7157600080fd5b505af1158015612a85573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612ba857600080fd5b505af1158015612bbc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c019085908590617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c7b57600080fd5b505af1158015612c8f573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692612ce39216908690600401617c6d565b60006040518083038185885af1158015612d01573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d2a9190810190617d77565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dc25790505b50505050508152505081526020019060010190612d56565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112f1578382906000526020600020018054612e7090617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9c90617ac7565b8015612ee95780601f10612ebe57610100808354040283529160200191612ee9565b820191906000526020600020905b815481529060010190602001808311612ecc57829003601f168201915b505050505081526020019060010190612e51565b60085460009060ff1615612f15575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fca9190617b14565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304d90879087908790602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e6926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052613105918490602401617e7b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c2916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016132e79493929190617ea0565b600060405180830381600087803b15801561330157600080fd5b505af1158015613315573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401612264565b606060158054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b60006133e7617549565b6133f284848361347b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561346757600080fd5b505afa158015612d2a573d6000803e3d6000fd5b60008061348885846134f6565b90506134eb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016134d6929190617c6d565b60405160208183030381529060405285613502565b9150505b9392505050565b60006134ef8383613530565b60c081015151600090156135265761351f84848460c0015161354b565b90506134ef565b61351f84846136f1565b600061353c83836137dc565b6134ef83836020015184613502565b6000806135566137ec565b9050600061356486836138bf565b9050600061357b8260600151836020015185613d65565b9050600061358b83838989613f77565b9050600061359882614df4565b602081015181519192509060030b1561360b578982604001516040516020016135c2929190617ede565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261360291600401617f5f565b60405180910390fd5b600061364e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614fc3565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906136a1908490600401617f5f565b602060405180830381865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e29190617f72565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613746908790600401617f5f565b600060405180830381865afa158015613763573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261378b9190810190617d77565b905060006137b982856040516020016137a5929190617f9b565b6040516020818303038152906040526151c3565b90506001600160a01b0381166133f25784846040516020016135c2929190617fca565b6137e8828260006151d6565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613873908490600401618075565b600060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138b891908101906180bc565b9250505090565b6138f16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061393c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613945856152d9565b60208201526000613955866156be565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139bf91908101906180bc565b868385602001516040516020016139d99493929190618105565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613a31908590600401617f5f565b600060405180830381865afa158015613a4e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7691908101906180bc565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613abe908490600401618209565b602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aff91906179b0565b613b1457816040516020016135c2919061825b565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613b599084906004016182ed565b600060405180830381865afa158015613b76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b9e91908101906180bc565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613be590849060040161833f565b602060405180830381865afa158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906179b0565b15613cbb576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613c7090849060040161833f565b600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906180bc565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613ce09190618391565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613d0c929190617e7b565b600060405180830381865afa158015613d29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5191908101906180bc565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081613d815790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613de157613de16183fd565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110613e3557613e356183fd565b602002602001018190525084604051602001613e51919061842c565b60405160208183030381529060405281600281518110613e7357613e736183fd565b602002602001018190525082604051602001613e8f9190618498565b60405160208183030381529060405281600381518110613eb157613eb16183fd565b60200260200101819052506000613ec782614df4565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250613f589060408051808201825260008082526020918201528151808301909252845182528085019082015290615941565b613f6d57856040516020016135c291906184d9565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613fc7565b511590565b61413b57826020015115614083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613602565b8260c001511561413b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613602565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161415457905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806141af9061856a565b935060ff16815181106141c4576141c46183fd565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016142159190618589565b6040516020818303038152906040528282806142309061856a565b935060ff1681518110614245576142456183fd565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806142929061856a565b935060ff16815181106142a7576142a76183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806142f49061856a565b935060ff1681518110614309576143096183fd565b602002602001018190525087602001518282806143259061856a565b935060ff168151811061433a5761433a6183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806143879061856a565b935060ff168151811061439c5761439c6183fd565b6020908102919091010152875182826143b48161856a565b935060ff16815181106143c9576143c96183fd565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806144169061856a565b935060ff168151811061442b5761442b6183fd565b602002602001018190525061443f466159a2565b828261444a8161856a565b935060ff168151811061445f5761445f6183fd565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806144ac9061856a565b935060ff16815181106144c1576144c16183fd565b6020026020010181905250868282806144d99061856a565b935060ff16815181106144ee576144ee6183fd565b60209081029190910101528551156146155760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261453f8161856a565b935060ff1681518110614554576145546183fd565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906145a4908990600401617f5f565b600060405180830381865afa1580156145c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145e991908101906180bc565b82826145f48161856a565b935060ff1681518110614609576146096183fd565b60200260200101819052505b8460200151156146e55760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261465e8161856a565b935060ff1681518110614673576146736183fd565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806146c09061856a565b935060ff16815181106146d5576146d56183fd565b60200260200101819052506148ac565b61471d613fc28660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6147b05760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826147608161856a565b935060ff1681518110614775576147756183fd565b60200260200101819052508460a00151604051602001614795919061842c565b6040516020818303038152906040528282806146c09061856a565b8460c001511580156147f35750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526147f190511590565b155b156148ac5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826148378161856a565b935060ff168151811061484c5761484c6183fd565b602002602001018190525061486088615a42565b604051602001614870919061842c565b60405160208183030381529060405282828061488b9061856a565b935060ff16815181106148a0576148a06183fd565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526148e090511590565b6149755760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826149238161856a565b935060ff1681518110614938576149386183fd565b602002602001018190525084604001518282806149549061856a565b935060ff1681518110614969576149696183fd565b60200260200101819052505b606085015115614a965760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826149be8161856a565b935060ff16815181106149d3576149d36183fd565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a6a91908101906180bc565b8282614a758161856a565b935060ff1681518110614a8a57614a8a6183fd565b60200260200101819052505b60e08501515115614b3d5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614ae08161856a565b935060ff1681518110614af557614af56183fd565b6020026020010181905250614b118560e00151600001516159a2565b8282614b1c8161856a565b935060ff1681518110614b3157614b316183fd565b60200260200101819052505b60e08501516020015115614be75760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614b8a8161856a565b935060ff1681518110614b9f57614b9f6183fd565b6020026020010181905250614bbb8560e00151602001516159a2565b8282614bc68161856a565b935060ff1681518110614bdb57614bdb6183fd565b60200260200101819052505b60e08501516040015115614c915760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614c348161856a565b935060ff1681518110614c4957614c496183fd565b6020026020010181905250614c658560e00151604001516159a2565b8282614c708161856a565b935060ff1681518110614c8557614c856183fd565b60200260200101819052505b60e08501516060015115614d3b5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614cde8161856a565b935060ff1681518110614cf357614cf36183fd565b6020026020010181905250614d0f8560e00151606001516159a2565b8282614d1a8161856a565b935060ff1681518110614d2f57614d2f6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115614d5957614d59617c8f565b604051908082528060200260200182016040528015614d8c57816020015b6060815260200190600190039081614d775790505b50905060005b8260ff168160ff161015614de557838160ff1681518110614db557614db56183fd565b6020026020010151828260ff1681518110614dd257614dd26183fd565b6020908102919091010152600101614d92565b5093505050505b949350505050565b614e1b6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614ea1918691016185f4565b600060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ee691908101906180bc565b90506000614ef48683616531565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401614f2491906178a2565b6000604051808303816000875af1158015614f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f6b919081019061863b565b805190915060030b15801590614f845750602081015151155b8015614f935750604081015151155b15613f6d5781600081518110614fab57614fab6183fd565b60200260200101516040516020016135c291906186f1565b60606000614ff88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061502f9082905b90616686565b1561518c5760006150ac826150a6846150a06150728a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906166ad565b9061670f565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615110908290616686565b1561517a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615177905b8290616794565b90505b615183816167ba565b925050506134ef565b82156151a55784846040516020016135c29291906188dd565b50506040805160208101909152600081526134ef565b509392505050565b6000808251602084016000f09392505050565b8160a00151156151e557505050565b60006151f2848484616823565b905060006151ff82614df4565b602081015181519192509060030b15801561529b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529b90604080518082018252600080825260209182015281518083019092528451825280850190820152615029565b156152a857505050505050565b604082015151156152c85781604001516040516020016135c29190618984565b806040516020016135c291906189e2565b6060600061530e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615373905b8290615941565b156153e257604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd908390616dbe565b6167ba565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615444905b8290616e48565b60010361551157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154aa90615170565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd905b8390616794565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155709061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906155d8908390616ee2565b9050600081600183516155eb9190617ddb565b815181106155fb576155fb6183fd565b6020026020010151905061569e6153dd6156716040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290616dbe565b95945050505050565b826040516020016135c29190618a4d565b50919050565b606060006156f38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506157559061536c565b15615763576134ef816167ba565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c29061543d565b60010361582c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd9061550a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261588b9061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158f3908390616ee2565b905060018151111561592f57806002825161590e9190617ddb565b8151811061591e5761591e6183fd565b602002602001015192505050919050565b50826040516020016135c29190618a4d565b805182516000911115615956575060006133f6565b8151835160208501516000929161596c91618b2b565b6159769190617ddb565b90508260200151810361598d5760019150506133f6565b82516020840151819020912014905092915050565b606060006159af83616f87565b600101905060008167ffffffffffffffff8111156159cf576159cf617c8f565b6040519080825280601f01601f1916602001820160405280156159f9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615a0357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ace905b8290617069565b15615b0e57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6d90615ac7565b15615bad57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c0c90615ac7565b15615c4c57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cab90615ac7565b80615d105750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d1090615ac7565b15615d5057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615daf90615ac7565b80615e145750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1490615ac7565b15615e5457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb390615ac7565b80615f185750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f1890615ac7565b15615f5857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fb790615ac7565b8061601c5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261601c90615ac7565b1561605c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bb90615ac7565b156160fb57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615a90615ac7565b1561619a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161f990615ac7565b1561623957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261629890615ac7565b156162d857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633790615ac7565b1561637757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d690615ac7565b8061643b5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261643b90615ac7565b1561647b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164da90615ac7565b1561651a57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516135c29290602001618b3e565b60608060005b84518110156165bc5781858281518110616553576165536183fd565b602002602001015160405160200161656c929190617f9b565b60405160208183030381529060405291506001855161658b9190617ddb565b81146165b457816040516020016165a29190618ca7565b60405160208183030381529060405291505b600101616537565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816165d55790505090508381600081518110616600576166006183fd565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616654576166546183fd565b60200260200101819052508181600281518110616673576166736183fd565b6020908102919091010152949350505050565b60208083015183518351928401516000936166a4929184919061707d565b14159392505050565b604080518082019091526000808252602082015260006166df846000015185602001518560000151866020015161718e565b90508360200151816166f19190617ddb565b84518590616700908390617ddb565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156167345750816133f6565b602080830151908401516001911461675b5750815160208481015190840151829020919020145b801561678c57825184518590616772908390617ddb565b9052508251602085018051616788908390618b2b565b9052505b509192915050565b60408051808201909152600080825260208201526167b38383836172ae565b5092915050565b60606000826000015167ffffffffffffffff8111156167db576167db617c8f565b6040519080825280601f01601f191660200182016040528015616805576020820181803683370190505b50905060006020820190506167b38185602001518660000151617359565b6060600061682f6137ec565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161684c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806168a79061856a565b935060ff16815181106168bc576168bc6183fd565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161690d9190618ce8565b6040516020818303038152906040528282806169289061856a565b935060ff168151811061693d5761693d6183fd565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061698a9061856a565b935060ff168151811061699f5761699f6183fd565b6020026020010181905250826040516020016169bb9190618498565b6040516020818303038152906040528282806169d69061856a565b935060ff16815181106169eb576169eb6183fd565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616a389061856a565b935060ff1681518110616a4d57616a4d6183fd565b6020026020010181905250616a6287846173d3565b8282616a6d8161856a565b935060ff1681518110616a8257616a826183fd565b602090810291909101015285515115616b2e5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ad48161856a565b935060ff1681518110616ae957616ae96183fd565b6020026020010181905250616b028660000151846173d3565b8282616b0d8161856a565b935060ff1681518110616b2257616b226183fd565b60200260200101819052505b856080015115616b9c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616b778161856a565b935060ff1681518110616b8c57616b8c6183fd565b6020026020010181905250616c02565b8415616c025760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616be18161856a565b935060ff1681518110616bf657616bf66183fd565b60200260200101819052505b60408601515115616c9e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616c4c8161856a565b935060ff1681518110616c6157616c616183fd565b60200260200101819052508560400151828280616c7d9061856a565b935060ff1681518110616c9257616c926183fd565b60200260200101819052505b856060015115616d085760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616ce78161856a565b935060ff1681518110616cfc57616cfc6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616d2657616d26617c8f565b604051908082528060200260200182016040528015616d5957816020015b6060815260200190600190039081616d445790505b50905060005b8260ff168160ff161015616db257838160ff1681518110616d8257616d826183fd565b6020026020010151828260ff1681518110616d9f57616d9f6183fd565b6020908102919091010152600101616d5f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616de35750816133f6565b81518351602085015160009291616df991618b2b565b616e039190617ddb565b60208401519091506001908214616e24575082516020840151819020908220145b8015616e3f57835185518690616e3b908390617ddb565b9052505b50929392505050565b6000808260000151616e6c856000015186602001518660000151876020015161718e565b616e769190618b2b565b90505b83516020850151616e8a9190618b2b565b81116167b35781616e9a81618d2d565b9250508260000151616ed1856020015183616eb59190617ddb565b8651616ec19190617ddb565b838660000151876020015161718e565b616edb9190618b2b565b9050616e79565b60606000616ef08484616e48565b616efb906001618b2b565b67ffffffffffffffff811115616f1357616f13617c8f565b604051908082528060200260200182016040528015616f4657816020015b6060815260200190600190039081616f315790505b50905060005b81518110156151bb57616f626153dd8686616794565b828281518110616f7457616f746183fd565b6020908102919091010152600101616f4c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616fd0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310616ffc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061701a57662386f26fc10000830492506010015b6305f5e1008310617032576305f5e100830492506008015b612710831061704657612710830492506004015b60648310617058576064830492506002015b600a83106133f65760010192915050565b60006170758383617413565b159392505050565b600080858411617184576020841161713057600084156170c85760016170a4866020617ddb565b6170af906008618d47565b6170ba906002618e45565b6170c49190617ddb565b1990505b83518116856170d78989618b2b565b6170e19190617ddb565b805190935082165b81811461711b578784116171035787945050505050614dec565b8361710d81618e51565b9450508284511690506170e9565b6171258785618b2b565b945050505050614dec565b83832061713d8588617ddb565b6171479087618b2b565b91505b8582106171825784822080820361716f576171658684618b2b565b9350505050614dec565b61717a600184617ddb565b92505061714a565b505b5092949350505050565b60008381868511617299576020851161724857600085156171da5760016171b6876020617ddb565b6171c1906008618d47565b6171cc906002618e45565b6171d69190617ddb565b1990505b845181166000876171eb8b8b618b2b565b6171f59190617ddb565b855190915083165b82811461723a57818610617222576172158b8b618b2b565b9650505050505050614dec565b8561722c81618d2d565b9650508386511690506171fd565b859650505050505050614dec565b508383206000905b61725a8689617ddb565b8211617297578583208082036172765783945050505050614dec565b617281600185618b2b565b935050818061728f90618d2d565b925050617250565b505b6172a38787618b2b565b979650505050505050565b604080518082019091526000808252602082015260006172e0856000015186602001518660000151876020015161718e565b6020808701805191860191909152519091506172fc9082617ddb565b83528451602086015161730f9190618b2b565b810361731e5760008552617350565b8351835161732c9190618b2b565b8551869061733b908390617ddb565b905250835161734a9082618b2b565b60208601525b50909392505050565b602081106173915781518352617370602084618b2b565b925061737d602083618b2b565b915061738a602082617ddb565b9050617359565b60001981156173c05760016173a7836020617ddb565b6173b390610100618e45565b6173bd9190617ddb565b90505b9151835183169219169190911790915250565b606060006173e184846138bf565b80516020808301516040519394506173fb93909101618e68565b60405160208183030381529060405291505092915050565b8151815160009190811115617426575081515b6020808501519084015160005b838110156174df57825182518082146174af57600019602087101561748e57600184617460896020617ddb565b61746a9190618b2b565b617475906008618d47565b617480906002618e45565b61748a9190617ddb565b1990505b81811683821681810391146174ac5797506133f69650505050505050565b50505b6174ba602086618b2b565b94506174c7602085618b2b565b935050506020816174d89190618b2b565b9050617433565b5084518651613f6d9190618ec0565b610c9f80618ee183390190565b610b4a80619b8083390190565b610f9a8061a6ca83390190565b610d5e8061b66483390190565b6107f68061c3c283390190565b610b3f8061cbb883390190565b6119e88061d6f783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161758c617591565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161758c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156176435783516001600160a01b031683526020938401939092019160010161761c565b509095945050505050565b60005b83811015617669578181015183820152602001617651565b50506000910152565b6000815180845261768a81602086016020860161764e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617780577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261776a848651617672565b6020958601959094509290920191600101617730565b5091975050506020948501949290920191506001016176c6565b50929695505050505050565b600081518084526020840193506020830160005b828110156177fa5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016177ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526178706040880182617672565b905060208201519150868103602088015261788b81836177a6565b96505050602093840193919091019060010161782c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617904858351617672565b945060209384019391909101906001016178ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261799a60408701826177a6565b9550506020938401939190910190600101617941565b6000602082840312156179c257600080fd5b815180151581146134ef57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617aad60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617adb57607f821691505b6020821081036156b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617b2657600080fd5b5051919050565b606081526000617b406060830186617672565b602083019490945250901515604090910152919050565b608081526000617b6a6080830187617672565b62ffffff861660208401526001600160a01b038516604084015282810360608401526172a38185617672565b6001600160a01b038416815282602082015260606040820152600061569e6060830184617672565b60c081526000617bd160c0830189617672565b8760208401526001600160a01b03871660408401528281036060840152617bf88187617672565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617c3b60a0830186617672565b6060830194909452509015156080909101529392505050565b828152604060208201526000614dec6040830184617672565b6001600160a01b0383168152604060208201526000614dec6040830184617672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617ce157617ce1617c8f565b60405290565b60008067ffffffffffffffff841115617d0257617d02617c8f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617d3157617d31617c8f565b604052838152905080828401851015617d4957600080fd5b6151bb84602083018561764e565b600082601f830112617d6857600080fd5b6134ef83835160208501617ce7565b600060208284031215617d8957600080fd5b815167ffffffffffffffff811115617da057600080fd5b6133f284828501617d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156133f6576133f6617dac565b6001600160a01b038716815260c060208201526000617e1060c0830188617672565b86604084015285606084015284608084015282810360a0840152617e348185617672565b9998505050505050505050565b608081526000617e546080830187617672565b8560208401526001600160a01b038516604084015282810360608401526172a38185617672565b604081526000617e8e6040830185617672565b82810360208401526134eb8185617672565b608081526000617eb36080830187617672565b8281036020840152617ec58187617672565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617f1681601a85016020880161764e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f5381601c84016020880161764e565b01601c01949350505050565b6020815260006134ef6020830184617672565b600060208284031215617f8457600080fd5b81516001600160a01b03811681146134ef57600080fd5b60008351617fad81846020880161764e565b835190830190617fc181836020880161764e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161800281601a85016020880161764e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161803f81603384016020880161764e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006134ef6080830184617672565b6000602082840312156180ce57600080fd5b815167ffffffffffffffff8111156180e557600080fd5b8201601f810184136180f657600080fd5b6133f284825160208401617ce7565b60008551618117818460208a0161764e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618151816001840160208a0161764e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161818f81600284016020890161764e565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516181d181600284016020880161764e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061821c6040830184617672565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161829381601f85016020870161764e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006183006040830184617672565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183526040830184617672565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516183c981601485016020870161764e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161846481600185016020870161764e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516184aa81846020870161764e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161855d81604b85016020870161764e565b91909101604b0192915050565b600060ff821660ff810361858057618580617dac565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006134ef6080830184617672565b60006020828403121561864d57600080fd5b815167ffffffffffffffff81111561866457600080fd5b82016060818503121561867657600080fd5b61867e617cbe565b81518060030b811461868f57600080fd5b8152602082015167ffffffffffffffff8111156186ab57600080fd5b6186b786828501617d57565b602083015250604082015167ffffffffffffffff8111156186d757600080fd5b6186e386828501617d57565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161874f81602185016020870161764e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161893b81602185016020880161764e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161897881602e84016020880161764e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618a4081602285016020870161764e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618a8581600e85016020870161764e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156133f6576133f6617dac565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618b7681601885016020880161764e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618bb381601c84016020880161764e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618cb981846020870161764e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618d2081601c85016020870161764e565b91909101601c0192915050565b60006000198203618d4057618d40617dac565b5060010190565b80820281158282048414176133f6576133f6617dac565b6001815b6001841115618d9957808504811115618d7d57618d7d617dac565b6001841615618d8b57908102905b60019390931c928002618d62565b935093915050565b600082618db0575060016133f6565b81618dbd575060006133f6565b8160018114618dd35760028114618ddd57618df9565b60019150506133f6565b60ff841115618dee57618dee617dac565b50506001821b6133f6565b5060208310610133831016604e8410600b8410161715618e1c575081810a6133f6565b618e296000198484618d5e565b8060001904821115618e3d57618e3d617dac565b029392505050565b60006134ef8383618da1565b600081618e6057618e60617dac565b506000190190565b60008351618e7a81846020880161764e565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618eb481600184016020880161764e565b01600101949350505050565b81810360008312801583831316838312821617156167b3576167b3617dac56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220327f36098800887e9eabd41aef9d7538d5aff68569774be273b40337a62c3c2864736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index 860cd68a..bf61276d 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cbfd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610cfa565b61018f6110c3565b61018f611508565b6101b16118e4565b6040516101be91906178d1565b60405180910390f35b6101cf611946565b6040516101be919061796d565b6101b1611a88565b6101b1611ae8565b61018f611b48565b61018f611fda565b610204612329565b6040516101be9190617ad3565b6102196124ab565b6040516101be9190617b71565b61022e61257b565b6040516101be9190617be8565b61022e612676565b610219612771565b61018f612841565b61025b612a76565b60405190151581526020016101be565b61018f612b4a565b6101b1612f68565b61018f612fc8565b601f5461025b9060ff1681565b61018f61336f565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de906177e4565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526103d39160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526136d3565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015610495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190617c7f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516104fd906177f1565b604051809103906000f080158015610519573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b5050505060008060006040516105de906177fe565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561061a573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906106709061780b565b61067f96959493929190617ca8565b604051809103906000f08015801561069b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084457600080fd5b505af1158015610858573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190617d9d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ad757600080fd5b505af1158015610aeb573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190617d9d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af1158015610cf4573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190617d9d565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526110129288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190617dbf565b9050610cf483826136f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905261135092918a9060009081908990617e12565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a0906113a39088908590600401617e65565b600060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114489190617dbf565b905061145e611458600187617ead565b826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190617dbf565b90506114df85826136f2565b6114ff6114ed856001617ec0565b6027546001600160a01b0316316136f2565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190617dbf565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190617dbf565b8760405161179196959493929190617e12565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936117d99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526118309288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190617dbf565b9050610cf46114588585617ead565b6060601680548060200260200160405190810160405280929190818152602001828054801561193c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db90617ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0790617ed3565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c339190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a09150611e909088908590600401617e65565b600060405180830381600087803b158015611eaa57600080fd5b505af1158015611ebe573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f359190617dbf565b9050611f4185826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190617dbf565b9050611fc285826136f2565b6027546114ff9085906001600160a01b0316316136f2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120c457600080fd5b505af11580156120d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b031690600401617f20565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123189190617dbf565b905061232482826136f2565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020906002020160405180604001604052908160008201805461238090617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546123ac90617ed3565b80156123f95780601f106123ce576101008083540402835291602001916123f9565b820191906000526020600020905b8154815290600101906020018083116123dc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561249357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124405790505b5050505050815250508152602001906001019061234d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546124ee90617ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461251a90617ed3565b80156125675780601f1061253c57610100808354040283529160200191612567565b820191906000526020600020905b81548152906001019060200180831161254a57829003601f168201915b5050505050815260200190600101906124cf565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561265e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161260b5790505b5050505050815250508152602001906001019061259f565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127065790505b5050505050815250508152602001906001019061269a565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546127b490617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546127e090617ed3565b801561282d5780601f106128025761010080835404028352916020019161282d565b820191906000526020600020905b81548152906001019060200180831161281057829003601f168201915b505050505081526020019060010190612795565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129cc918590617f52565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c93612a149316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a41929190617f52565b600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b5050505050565b60085460009060ff1615612a8e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190617dbf565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c359190617dbf565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190617dbf565b9050612ec784826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3c9190617dbf565b9050612f4884826136f2565b602754612f609084906001600160a01b0316316136f2565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303d9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b39190617dbf565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f19818403018152908290526131de929189906000908190617f77565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156132ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d09190617dbf565b90506132e0611458600186617ead565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133559190617dbf565b905061336184826136f2565b612f606114ed846001617ec0565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190617dbf565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135709190617dbf565b604051613581959493929190617f77565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936135c99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261361f926001916001600160a01b031690600401617f20565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190617dbf565b90506123246114588484617ead565b60006136dd617818565b6136e8848483613771565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561375d57600080fd5b505afa158015612f60573d6000803e3d6000fd5b60008061377e85846137ec565b90506137e16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016137cc929190617fc5565b604051602081830303815290604052856137f8565b9150505b9392505050565b60006137e58383613826565b60c0810151516000901561381c5761381584848460c00151613841565b90506137e5565b61381584846139e7565b60006138328383613ad2565b6137e5838360200151846137f8565b60008061384c613ae2565b9050600061385a8683613bb5565b90506000613871826060015183602001518561405b565b905060006138818383898961426d565b9050600061388e826150ea565b602081015181519192509060030b15613901578982604001516040516020016138b8929190617fe7565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526138f891600401618068565b60405180910390fd5b60006139446040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152b9565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613997908490600401618068565b602060405180830381865afa1580156139b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d89190617c7f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a3c908790600401618068565b600060405180830381865afa158015613a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a819190810190618163565b90506000613aaf8285604051602001613a9b929190618198565b6040516020818303038152906040526154b9565b90506001600160a01b0381166136e85784846040516020016138b89291906181c7565b613ade828260006154cc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613b69908490600401618272565b600060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae91908101906182b9565b9250505090565b613be76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c326040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c3b856155cf565b60208201526000613c4b866159b4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906182b9565b86838560200151604051602001613ccf9493929190618302565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d27908590600401618068565b600060405180830381865afa158015613d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d6c91908101906182b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613db4908490600401618406565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190617d9d565b613e0a57816040516020016138b89190618458565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e4f9084906004016184ea565b600060405180830381865afa158015613e6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e9491908101906182b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613edb90849060040161853c565b602060405180830381865afa158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c9190617d9d565b15613fb1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f6690849060040161853c565b600060405180830381865afa158015613f83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fab91908101906182b9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613fd6919061858e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614002929190617f52565b600060405180830381865afa15801561401f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261404791908101906182b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140775790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106140d7576140d76185fa565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061412b5761412b6185fa565b6020026020010181905250846040516020016141479190618629565b60405160208183030381529060405281600281518110614169576141696185fa565b6020026020010181905250826040516020016141859190618695565b604051602081830303815290604052816003815181106141a7576141a76185fa565b602002602001018190525060006141bd826150ea565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061424e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615c37565b61426357856040516020016138b891906186d6565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156142bd565b511590565b61443157826020015115614379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016138f8565b8260c0015115614431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016138f8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161444a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144a590618767565b935060ff16815181106144ba576144ba6185fa565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161450b9190618786565b60405160208183030381529060405282828061452690618767565b935060ff168151811061453b5761453b6185fa565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061458890618767565b935060ff168151811061459d5761459d6185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806145ea90618767565b935060ff16815181106145ff576145ff6185fa565b6020026020010181905250876020015182828061461b90618767565b935060ff1681518110614630576146306185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061467d90618767565b935060ff1681518110614692576146926185fa565b6020908102919091010152875182826146aa81618767565b935060ff16815181106146bf576146bf6185fa565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061470c90618767565b935060ff1681518110614721576147216185fa565b602002602001018190525061473546615c98565b828261474081618767565b935060ff1681518110614755576147556185fa565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147a290618767565b935060ff16815181106147b7576147b76185fa565b6020026020010181905250868282806147cf90618767565b935060ff16815181106147e4576147e46185fa565b602090810291909101015285511561490b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261483581618767565b935060ff168151811061484a5761484a6185fa565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061489a908990600401618068565b600060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148df91908101906182b9565b82826148ea81618767565b935060ff16815181106148ff576148ff6185fa565b60200260200101819052505b8460200151156149db5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261495481618767565b935060ff1681518110614969576149696185fa565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149b690618767565b935060ff16815181106149cb576149cb6185fa565b6020026020010181905250614ba2565b614a136142b88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aa65760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a5681618767565b935060ff1681518110614a6b57614a6b6185fa565b60200260200101819052508460a00151604051602001614a8b9190618629565b6040516020818303038152906040528282806149b690618767565b8460c00151158015614ae9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ae790511590565b155b15614ba25760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b2d81618767565b935060ff1681518110614b4257614b426185fa565b6020026020010181905250614b5688615d38565b604051602001614b669190618629565b604051602081830303815290604052828280614b8190618767565b935060ff1681518110614b9657614b966185fa565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614bd690511590565b614c6b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c1981618767565b935060ff1681518110614c2e57614c2e6185fa565b60200260200101819052508460400151828280614c4a90618767565b935060ff1681518110614c5f57614c5f6185fa565b60200260200101819052505b606085015115614d8c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cb481618767565b935060ff1681518110614cc957614cc96185fa565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d6091908101906182b9565b8282614d6b81618767565b935060ff1681518110614d8057614d806185fa565b60200260200101819052505b60e08501515115614e335760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614dd681618767565b935060ff1681518110614deb57614deb6185fa565b6020026020010181905250614e078560e0015160000151615c98565b8282614e1281618767565b935060ff1681518110614e2757614e276185fa565b60200260200101819052505b60e08501516020015115614edd5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614e8081618767565b935060ff1681518110614e9557614e956185fa565b6020026020010181905250614eb18560e0015160200151615c98565b8282614ebc81618767565b935060ff1681518110614ed157614ed16185fa565b60200260200101819052505b60e08501516040015115614f875760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f2a81618767565b935060ff1681518110614f3f57614f3f6185fa565b6020026020010181905250614f5b8560e0015160400151615c98565b8282614f6681618767565b935060ff1681518110614f7b57614f7b6185fa565b60200260200101819052505b60e085015160600151156150315760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614fd481618767565b935060ff1681518110614fe957614fe96185fa565b60200260200101819052506150058560e0015160600151615c98565b828261501081618767565b935060ff1681518110615025576150256185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561504f5761504f61807b565b60405190808252806020026020018201604052801561508257816020015b606081526020019060019003908161506d5790505b50905060005b8260ff168160ff1610156150db57838160ff16815181106150ab576150ab6185fa565b6020026020010151828260ff16815181106150c8576150c86185fa565b6020908102919091010152600101615088565b5093505050505b949350505050565b6151116040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615197918691016187f1565b600060405180830381865afa1580156151b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151dc91908101906182b9565b905060006151ea8683616827565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161521a9190617b71565b6000604051808303816000875af1158015615239573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152619190810190618838565b805190915060030b1580159061527a5750602081015151155b80156152895750604081015151155b1561426357816000815181106152a1576152a16185fa565b60200260200101516040516020016138b891906188ee565b606060006152ee8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153259082905b9061697c565b156154825760006153a28261539c846153966153688a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169a3565b90616a05565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061540690829061697c565b1561547057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261546d905b8290616a8a565b90505b61547981616ab0565b925050506137e5565b821561549b5784846040516020016138b8929190618ada565b50506040805160208101909152600081526137e5565b509392505050565b6000808251602084016000f09392505050565b8160a00151156154db57505050565b60006154e8848484616b19565b905060006154f5826150ea565b602081015181519192509060030b1580156155915750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155919060408051808201825260008082526020918201528151808301909252845182528085019082015261531f565b1561559e57505050505050565b604082015151156155be5781604001516040516020016138b89190618b81565b806040516020016138b89190618bdf565b606060006156048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615669905b8290615c37565b156156d857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d39083906170b4565b616ab0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261573a905b829061713e565b60010361580757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a090615466565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d3905b8390616a8a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586690615662565b1561599d57604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158ce9083906171d8565b9050600081600183516158e19190617ead565b815181106158f1576158f16185fa565b602002602001015190506159946156d36159676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170b4565b95945050505050565b826040516020016138b89190618c4a565b50919050565b606060006159e98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a4b90615662565b15615a59576137e581616ab0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ab890615733565b600103615b2257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d390615800565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b8190615662565b1561599d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615be99083906171d8565b9050600181511115615c25578060028251615c049190617ead565b81518110615c1457615c146185fa565b602002602001015192505050919050565b50826040516020016138b89190618c4a565b805182516000911115615c4c575060006136ec565b81518351602085015160009291615c6291617ec0565b615c6c9190617ead565b905082602001518103615c835760019150506136ec565b82516020840151819020912014905092915050565b60606000615ca58361727d565b600101905060008167ffffffffffffffff811115615cc557615cc561807b565b6040519080825280601f01601f191660200182016040528015615cef576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615cf957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615dc4905b829061735f565b15615e0457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e6390615dbd565b15615ea357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f0290615dbd565b15615f4257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fa190615dbd565b806160065750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600690615dbd565b1561604657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160a590615dbd565b8061610a5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610a90615dbd565b1561614a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a990615dbd565b8061620e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261620e90615dbd565b1561624e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ad90615dbd565b806163125750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631290615dbd565b1561635257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b190615dbd565b156163f157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645090615dbd565b1561649057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ef90615dbd565b1561652f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261658e90615dbd565b156165ce57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261662d90615dbd565b1561666d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166cc90615dbd565b806167315750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673190615dbd565b1561677157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167d090615dbd565b1561681057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138b89290602001618d28565b60608060005b84518110156168b25781858281518110616849576168496185fa565b6020026020010151604051602001616862929190618198565b6040516020818303038152906040529150600185516168819190617ead565b81146168aa57816040516020016168989190618e91565b60405160208183030381529060405291505b60010161682d565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816168cb57905050905083816000815181106168f6576168f66185fa565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061694a5761694a6185fa565b60200260200101819052508181600281518110616969576169696185fa565b6020908102919091010152949350505050565b602080830151835183519284015160009361699a9291849190617373565b14159392505050565b604080518082019091526000808252602082015260006169d58460000151856020015185600001518660200151617484565b90508360200151816169e79190617ead565b845185906169f6908390617ead565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a2a5750816136ec565b6020808301519084015160019114616a515750815160208481015190840151829020919020145b8015616a8257825184518590616a68908390617ead565b9052508251602085018051616a7e908390617ec0565b9052505b509192915050565b6040805180820190915260008082526020820152616aa98383836175a4565b5092915050565b60606000826000015167ffffffffffffffff811115616ad157616ad161807b565b6040519080825280601f01601f191660200182016040528015616afb576020820181803683370190505b5090506000602082019050616aa9818560200151866000015161764f565b60606000616b25613ae2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b4257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616b9d90618767565b935060ff1681518110616bb257616bb26185fa565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c039190618ed2565b604051602081830303815290604052828280616c1e90618767565b935060ff1681518110616c3357616c336185fa565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616c8090618767565b935060ff1681518110616c9557616c956185fa565b602002602001018190525082604051602001616cb19190618695565b604051602081830303815290604052828280616ccc90618767565b935060ff1681518110616ce157616ce16185fa565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d2e90618767565b935060ff1681518110616d4357616d436185fa565b6020026020010181905250616d5887846176c9565b8282616d6381618767565b935060ff1681518110616d7857616d786185fa565b602090810291909101015285515115616e245760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616dca81618767565b935060ff1681518110616ddf57616ddf6185fa565b6020026020010181905250616df88660000151846176c9565b8282616e0381618767565b935060ff1681518110616e1857616e186185fa565b60200260200101819052505b856080015115616e925760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616e6d81618767565b935060ff1681518110616e8257616e826185fa565b6020026020010181905250616ef8565b8415616ef85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616ed781618767565b935060ff1681518110616eec57616eec6185fa565b60200260200101819052505b60408601515115616f945760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f4281618767565b935060ff1681518110616f5757616f576185fa565b60200260200101819052508560400151828280616f7390618767565b935060ff1681518110616f8857616f886185fa565b60200260200101819052505b856060015115616ffe5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616fdd81618767565b935060ff1681518110616ff257616ff26185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561701c5761701c61807b565b60405190808252806020026020018201604052801561704f57816020015b606081526020019060019003908161703a5790505b50905060005b8260ff168160ff1610156170a857838160ff1681518110617078576170786185fa565b6020026020010151828260ff1681518110617095576170956185fa565b6020908102919091010152600101617055565b50979650505050505050565b60408051808201909152600080825260208201528151835110156170d95750816136ec565b815183516020850151600092916170ef91617ec0565b6170f99190617ead565b6020840151909150600190821461711a575082516020840151819020908220145b801561713557835185518690617131908390617ead565b9052505b50929392505050565b60008082600001516171628560000151866020015186600001518760200151617484565b61716c9190617ec0565b90505b835160208501516171809190617ec0565b8111616aa9578161719081618f17565b92505082600001516171c78560200151836171ab9190617ead565b86516171b79190617ead565b8386600001518760200151617484565b6171d19190617ec0565b905061716f565b606060006171e6848461713e565b6171f1906001617ec0565b67ffffffffffffffff8111156172095761720961807b565b60405190808252806020026020018201604052801561723c57816020015b60608152602001906001900390816172275790505b50905060005b81518110156154b1576172586156d38686616a8a565b82828151811061726a5761726a6185fa565b6020908102919091010152600101617242565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106172c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106172f2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061731057662386f26fc10000830492506010015b6305f5e1008310617328576305f5e100830492506008015b612710831061733c57612710830492506004015b6064831061734e576064830492506002015b600a83106136ec5760010192915050565b600061736b8383617709565b159392505050565b60008085841161747a576020841161742657600084156173be57600161739a866020617ead565b6173a5906008618f31565b6173b090600261902f565b6173ba9190617ead565b1990505b83518116856173cd8989617ec0565b6173d79190617ead565b805190935082165b818114617411578784116173f957879450505050506150e2565b836174038161903b565b9450508284511690506173df565b61741b8785617ec0565b9450505050506150e2565b8383206174338588617ead565b61743d9087617ec0565b91505b858210617478578482208082036174655761745b8684617ec0565b93505050506150e2565b617470600184617ead565b925050617440565b505b5092949350505050565b6000838186851161758f576020851161753e57600085156174d05760016174ac876020617ead565b6174b7906008618f31565b6174c290600261902f565b6174cc9190617ead565b1990505b845181166000876174e18b8b617ec0565b6174eb9190617ead565b855190915083165b828114617530578186106175185761750b8b8b617ec0565b96505050505050506150e2565b8561752281618f17565b9650508386511690506174f3565b8596505050505050506150e2565b508383206000905b6175508689617ead565b821161758d5785832080820361756c57839450505050506150e2565b617577600185617ec0565b935050818061758590618f17565b925050617546565b505b6175998787617ec0565b979650505050505050565b604080518082019091526000808252602082015260006175d68560000151866020015186600001518760200151617484565b6020808701805191860191909152519091506175f29082617ead565b8352845160208601516176059190617ec0565b81036176145760008552617646565b835183516176229190617ec0565b85518690617631908390617ead565b90525083516176409082617ec0565b60208601525b50909392505050565b602081106176875781518352617666602084617ec0565b9250617673602083617ec0565b9150617680602082617ead565b905061764f565b60001981156176b657600161769d836020617ead565b6176a99061010061902f565b6176b39190617ead565b90505b9151835183169219169190911790915250565b606060006176d78484613bb5565b80516020808301516040519394506176f193909101619052565b60405160208183030381529060405291505092915050565b815181516000919081111561771c575081515b6020808501519084015160005b838110156177d557825182518082146177a557600019602087101561778457600184617756896020617ead565b6177609190617ec0565b61776b906008618f31565b61777690600261902f565b6177809190617ead565b1990505b81811683821681810391146177a25797506136ec9650505050505050565b50505b6177b0602086617ec0565b94506177bd602085617ec0565b935050506020816177ce9190617ec0565b9050617729565b508451865161426391906190aa565b610b67806190cb83390190565b61053f80619c3283390190565b61106f8061a17183390190565b6119e88061b1e083390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161785b617860565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161785b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179125783516001600160a01b03168352602093840193909201916001016178eb565b509095945050505050565b60005b83811015617938578181015183820152602001617920565b50506000910152565b6000815180845261795981602086016020860161791d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617a4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a39848651617941565b60209586019590945092909201916001016179ff565b509197505050602094850194929092019150600101617995565b50929695505050505050565b600081518084526020840193506020830160005b82811015617ac95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617a89565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b3f6040880182617941565b9050602082015191508681036020880152617b5a8183617a75565b965050506020938401939190910190600101617afb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617bd3858351617941565b94506020938401939190910190600101617b99565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617c696040870182617a75565b9550506020938401939190910190600101617c10565b600060208284031215617c9157600080fd5b81516001600160a01b03811681146137e557600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617d8360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617daf57600080fd5b815180151581146137e557600080fd5b600060208284031215617dd157600080fd5b5051919050565b608081526000617deb6080830187617941565b8560208401526001600160a01b038516604084015282810360608401526175998185617941565b6001600160a01b038716815260c060208201526000617e3460c0830188617941565b86604084015285606084015284608084015282810360a0840152617e588185617941565b9998505050505050505050565b8281526040602082015260006150e26040830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156136ec576136ec617e7e565b808201808211156136ec576136ec617e7e565b600181811c90821680617ee757607f821691505b6020821081036159ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617f336060830186617941565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617f656040830185617941565b82810360208401526137e18185617941565b6001600160a01b038616815260c060208201526000617f9960c0830187617941565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b03831681526040602082015260006150e26040830184617941565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161801f81601a85016020880161791d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161805c81601c84016020880161791d565b01601c01949350505050565b6020815260006137e56020830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156180cd576180cd61807b565b60405290565b60008067ffffffffffffffff8411156180ee576180ee61807b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561811d5761811d61807b565b60405283815290508082840185101561813557600080fd5b6154b184602083018561791d565b600082601f83011261815457600080fd5b6137e5838351602085016180d3565b60006020828403121561817557600080fd5b815167ffffffffffffffff81111561818c57600080fd5b6136e884828501618143565b600083516181aa81846020880161791d565b8351908301906181be81836020880161791d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516181ff81601a85016020880161791d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161823c81603384016020880161791d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006137e56080830184617941565b6000602082840312156182cb57600080fd5b815167ffffffffffffffff8111156182e257600080fd5b8201601f810184136182f357600080fd5b6136e8848251602084016180d3565b60008551618314818460208a0161791d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161834e816001840160208a0161791d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161838c81600284016020890161791d565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516183ce81600284016020880161791d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184196040830184617941565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161849081601f85016020870161791d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006184fd6040830184617941565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061854f6040830184617941565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516185c681601485016020870161791d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161866181600185016020870161791d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516186a781846020870161791d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161875a81604b85016020870161791d565b91909101604b0192915050565b600060ff821660ff810361877d5761877d617e7e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006137e56080830184617941565b60006020828403121561884a57600080fd5b815167ffffffffffffffff81111561886157600080fd5b82016060818503121561887357600080fd5b61887b6180aa565b81518060030b811461888c57600080fd5b8152602082015167ffffffffffffffff8111156188a857600080fd5b6188b486828501618143565b602083015250604082015167ffffffffffffffff8111156188d457600080fd5b6188e086828501618143565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161894c81602185016020870161791d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618b3881602185016020880161791d565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618b7581602e84016020880161791d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618c3d81602285016020870161791d565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618c8281600e85016020870161791d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618d6081601885016020880161791d565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618d9d81601c84016020880161791d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618ea381846020870161791d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618f0a81601c85016020870161791d565b91909101601c0192915050565b60006000198203618f2a57618f2a617e7e565b5060010190565b80820281158282048414176136ec576136ec617e7e565b6001815b6001841115618f8357808504811115618f6757618f67617e7e565b6001841615618f7557908102905b60019390931c928002618f4c565b935093915050565b600082618f9a575060016136ec565b81618fa7575060006136ec565b8160018114618fbd5760028114618fc757618fe3565b60019150506136ec565b60ff841115618fd857618fd8617e7e565b50506001821b6136ec565b5060208310610133831016604e8410600b8410161715619006575081810a6136ec565b6190136000198484618f48565b806000190482111561902757619027617e7e565b029392505050565b60006137e58383618f8b565b60008161904a5761904a617e7e565b506000190190565b6000835161906481846020880161791d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161909e81600184016020880161791d565b01600101949350505050565b8181036000831280158383131683831282161715616aa957616aa9617e7e56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201be2823b07dd7c102eb08dd27f77c5908207f97a4d01ac542bd7e9bcece1192464736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cbfd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610cfa565b61018f6110c3565b61018f611508565b6101b16118e4565b6040516101be91906178d1565b60405180910390f35b6101cf611946565b6040516101be919061796d565b6101b1611a88565b6101b1611ae8565b61018f611b48565b61018f611fda565b610204612329565b6040516101be9190617ad3565b6102196124ab565b6040516101be9190617b71565b61022e61257b565b6040516101be9190617be8565b61022e612676565b610219612771565b61018f612841565b61025b612a76565b60405190151581526020016101be565b61018f612b4a565b6101b1612f68565b61018f612fc8565b601f5461025b9060ff1681565b61018f61336f565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de906177e4565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526103d39160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526136d3565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015610495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190617c7f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516104fd906177f1565b604051809103906000f080158015610519573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b5050505060008060006040516105de906177fe565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561061a573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906106709061780b565b61067f96959493929190617ca8565b604051809103906000f08015801561069b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084457600080fd5b505af1158015610858573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190617d9d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ad757600080fd5b505af1158015610aeb573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190617d9d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af1158015610cf4573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190617d9d565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526110129288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190617dbf565b9050610cf483826136f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905261135092918a9060009081908990617e12565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a0906113a39088908590600401617e65565b600060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114489190617dbf565b905061145e611458600187617ead565b826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190617dbf565b90506114df85826136f2565b6114ff6114ed856001617ec0565b6027546001600160a01b0316316136f2565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190617dbf565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190617dbf565b8760405161179196959493929190617e12565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936117d99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526118309288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190617dbf565b9050610cf46114588585617ead565b6060601680548060200260200160405190810160405280929190818152602001828054801561193c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db90617ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0790617ed3565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c339190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a09150611e909088908590600401617e65565b600060405180830381600087803b158015611eaa57600080fd5b505af1158015611ebe573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f359190617dbf565b9050611f4185826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190617dbf565b9050611fc285826136f2565b6027546114ff9085906001600160a01b0316316136f2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120c457600080fd5b505af11580156120d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b031690600401617f20565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123189190617dbf565b905061232482826136f2565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020906002020160405180604001604052908160008201805461238090617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546123ac90617ed3565b80156123f95780601f106123ce576101008083540402835291602001916123f9565b820191906000526020600020905b8154815290600101906020018083116123dc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561249357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124405790505b5050505050815250508152602001906001019061234d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546124ee90617ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461251a90617ed3565b80156125675780601f1061253c57610100808354040283529160200191612567565b820191906000526020600020905b81548152906001019060200180831161254a57829003601f168201915b5050505050815260200190600101906124cf565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561265e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161260b5790505b5050505050815250508152602001906001019061259f565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127065790505b5050505050815250508152602001906001019061269a565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546127b490617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546127e090617ed3565b801561282d5780601f106128025761010080835404028352916020019161282d565b820191906000526020600020905b81548152906001019060200180831161281057829003601f168201915b505050505081526020019060010190612795565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129cc918590617f52565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c93612a149316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a41929190617f52565b600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b5050505050565b60085460009060ff1615612a8e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190617dbf565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c359190617dbf565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190617dbf565b9050612ec784826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3c9190617dbf565b9050612f4884826136f2565b602754612f609084906001600160a01b0316316136f2565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303d9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b39190617dbf565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f19818403018152908290526131de929189906000908190617f77565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156132ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d09190617dbf565b90506132e0611458600186617ead565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133559190617dbf565b905061336184826136f2565b612f606114ed846001617ec0565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190617dbf565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135709190617dbf565b604051613581959493929190617f77565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936135c99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261361f926001916001600160a01b031690600401617f20565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190617dbf565b90506123246114588484617ead565b60006136dd617818565b6136e8848483613771565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561375d57600080fd5b505afa158015612f60573d6000803e3d6000fd5b60008061377e85846137ec565b90506137e16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016137cc929190617fc5565b604051602081830303815290604052856137f8565b9150505b9392505050565b60006137e58383613826565b60c0810151516000901561381c5761381584848460c00151613841565b90506137e5565b61381584846139e7565b60006138328383613ad2565b6137e5838360200151846137f8565b60008061384c613ae2565b9050600061385a8683613bb5565b90506000613871826060015183602001518561405b565b905060006138818383898961426d565b9050600061388e826150ea565b602081015181519192509060030b15613901578982604001516040516020016138b8929190617fe7565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526138f891600401618068565b60405180910390fd5b60006139446040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152b9565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613997908490600401618068565b602060405180830381865afa1580156139b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d89190617c7f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a3c908790600401618068565b600060405180830381865afa158015613a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a819190810190618163565b90506000613aaf8285604051602001613a9b929190618198565b6040516020818303038152906040526154b9565b90506001600160a01b0381166136e85784846040516020016138b89291906181c7565b613ade828260006154cc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613b69908490600401618272565b600060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae91908101906182b9565b9250505090565b613be76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c326040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c3b856155cf565b60208201526000613c4b866159b4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906182b9565b86838560200151604051602001613ccf9493929190618302565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d27908590600401618068565b600060405180830381865afa158015613d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d6c91908101906182b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613db4908490600401618406565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190617d9d565b613e0a57816040516020016138b89190618458565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e4f9084906004016184ea565b600060405180830381865afa158015613e6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e9491908101906182b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613edb90849060040161853c565b602060405180830381865afa158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c9190617d9d565b15613fb1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f6690849060040161853c565b600060405180830381865afa158015613f83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fab91908101906182b9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613fd6919061858e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614002929190617f52565b600060405180830381865afa15801561401f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261404791908101906182b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140775790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106140d7576140d76185fa565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061412b5761412b6185fa565b6020026020010181905250846040516020016141479190618629565b60405160208183030381529060405281600281518110614169576141696185fa565b6020026020010181905250826040516020016141859190618695565b604051602081830303815290604052816003815181106141a7576141a76185fa565b602002602001018190525060006141bd826150ea565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061424e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615c37565b61426357856040516020016138b891906186d6565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156142bd565b511590565b61443157826020015115614379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016138f8565b8260c0015115614431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016138f8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161444a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144a590618767565b935060ff16815181106144ba576144ba6185fa565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161450b9190618786565b60405160208183030381529060405282828061452690618767565b935060ff168151811061453b5761453b6185fa565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061458890618767565b935060ff168151811061459d5761459d6185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806145ea90618767565b935060ff16815181106145ff576145ff6185fa565b6020026020010181905250876020015182828061461b90618767565b935060ff1681518110614630576146306185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061467d90618767565b935060ff1681518110614692576146926185fa565b6020908102919091010152875182826146aa81618767565b935060ff16815181106146bf576146bf6185fa565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061470c90618767565b935060ff1681518110614721576147216185fa565b602002602001018190525061473546615c98565b828261474081618767565b935060ff1681518110614755576147556185fa565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147a290618767565b935060ff16815181106147b7576147b76185fa565b6020026020010181905250868282806147cf90618767565b935060ff16815181106147e4576147e46185fa565b602090810291909101015285511561490b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261483581618767565b935060ff168151811061484a5761484a6185fa565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061489a908990600401618068565b600060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148df91908101906182b9565b82826148ea81618767565b935060ff16815181106148ff576148ff6185fa565b60200260200101819052505b8460200151156149db5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261495481618767565b935060ff1681518110614969576149696185fa565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149b690618767565b935060ff16815181106149cb576149cb6185fa565b6020026020010181905250614ba2565b614a136142b88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aa65760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a5681618767565b935060ff1681518110614a6b57614a6b6185fa565b60200260200101819052508460a00151604051602001614a8b9190618629565b6040516020818303038152906040528282806149b690618767565b8460c00151158015614ae9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ae790511590565b155b15614ba25760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b2d81618767565b935060ff1681518110614b4257614b426185fa565b6020026020010181905250614b5688615d38565b604051602001614b669190618629565b604051602081830303815290604052828280614b8190618767565b935060ff1681518110614b9657614b966185fa565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614bd690511590565b614c6b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c1981618767565b935060ff1681518110614c2e57614c2e6185fa565b60200260200101819052508460400151828280614c4a90618767565b935060ff1681518110614c5f57614c5f6185fa565b60200260200101819052505b606085015115614d8c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cb481618767565b935060ff1681518110614cc957614cc96185fa565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d6091908101906182b9565b8282614d6b81618767565b935060ff1681518110614d8057614d806185fa565b60200260200101819052505b60e08501515115614e335760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614dd681618767565b935060ff1681518110614deb57614deb6185fa565b6020026020010181905250614e078560e0015160000151615c98565b8282614e1281618767565b935060ff1681518110614e2757614e276185fa565b60200260200101819052505b60e08501516020015115614edd5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614e8081618767565b935060ff1681518110614e9557614e956185fa565b6020026020010181905250614eb18560e0015160200151615c98565b8282614ebc81618767565b935060ff1681518110614ed157614ed16185fa565b60200260200101819052505b60e08501516040015115614f875760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f2a81618767565b935060ff1681518110614f3f57614f3f6185fa565b6020026020010181905250614f5b8560e0015160400151615c98565b8282614f6681618767565b935060ff1681518110614f7b57614f7b6185fa565b60200260200101819052505b60e085015160600151156150315760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614fd481618767565b935060ff1681518110614fe957614fe96185fa565b60200260200101819052506150058560e0015160600151615c98565b828261501081618767565b935060ff1681518110615025576150256185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561504f5761504f61807b565b60405190808252806020026020018201604052801561508257816020015b606081526020019060019003908161506d5790505b50905060005b8260ff168160ff1610156150db57838160ff16815181106150ab576150ab6185fa565b6020026020010151828260ff16815181106150c8576150c86185fa565b6020908102919091010152600101615088565b5093505050505b949350505050565b6151116040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615197918691016187f1565b600060405180830381865afa1580156151b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151dc91908101906182b9565b905060006151ea8683616827565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161521a9190617b71565b6000604051808303816000875af1158015615239573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152619190810190618838565b805190915060030b1580159061527a5750602081015151155b80156152895750604081015151155b1561426357816000815181106152a1576152a16185fa565b60200260200101516040516020016138b891906188ee565b606060006152ee8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153259082905b9061697c565b156154825760006153a28261539c846153966153688a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169a3565b90616a05565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061540690829061697c565b1561547057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261546d905b8290616a8a565b90505b61547981616ab0565b925050506137e5565b821561549b5784846040516020016138b8929190618ada565b50506040805160208101909152600081526137e5565b509392505050565b6000808251602084016000f09392505050565b8160a00151156154db57505050565b60006154e8848484616b19565b905060006154f5826150ea565b602081015181519192509060030b1580156155915750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155919060408051808201825260008082526020918201528151808301909252845182528085019082015261531f565b1561559e57505050505050565b604082015151156155be5781604001516040516020016138b89190618b81565b806040516020016138b89190618bdf565b606060006156048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615669905b8290615c37565b156156d857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d39083906170b4565b616ab0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261573a905b829061713e565b60010361580757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a090615466565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d3905b8390616a8a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586690615662565b1561599d57604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158ce9083906171d8565b9050600081600183516158e19190617ead565b815181106158f1576158f16185fa565b602002602001015190506159946156d36159676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170b4565b95945050505050565b826040516020016138b89190618c4a565b50919050565b606060006159e98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a4b90615662565b15615a59576137e581616ab0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ab890615733565b600103615b2257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d390615800565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b8190615662565b1561599d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615be99083906171d8565b9050600181511115615c25578060028251615c049190617ead565b81518110615c1457615c146185fa565b602002602001015192505050919050565b50826040516020016138b89190618c4a565b805182516000911115615c4c575060006136ec565b81518351602085015160009291615c6291617ec0565b615c6c9190617ead565b905082602001518103615c835760019150506136ec565b82516020840151819020912014905092915050565b60606000615ca58361727d565b600101905060008167ffffffffffffffff811115615cc557615cc561807b565b6040519080825280601f01601f191660200182016040528015615cef576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615cf957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615dc4905b829061735f565b15615e0457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e6390615dbd565b15615ea357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f0290615dbd565b15615f4257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fa190615dbd565b806160065750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600690615dbd565b1561604657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160a590615dbd565b8061610a5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610a90615dbd565b1561614a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a990615dbd565b8061620e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261620e90615dbd565b1561624e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ad90615dbd565b806163125750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631290615dbd565b1561635257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b190615dbd565b156163f157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645090615dbd565b1561649057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ef90615dbd565b1561652f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261658e90615dbd565b156165ce57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261662d90615dbd565b1561666d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166cc90615dbd565b806167315750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673190615dbd565b1561677157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167d090615dbd565b1561681057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138b89290602001618d28565b60608060005b84518110156168b25781858281518110616849576168496185fa565b6020026020010151604051602001616862929190618198565b6040516020818303038152906040529150600185516168819190617ead565b81146168aa57816040516020016168989190618e91565b60405160208183030381529060405291505b60010161682d565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816168cb57905050905083816000815181106168f6576168f66185fa565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061694a5761694a6185fa565b60200260200101819052508181600281518110616969576169696185fa565b6020908102919091010152949350505050565b602080830151835183519284015160009361699a9291849190617373565b14159392505050565b604080518082019091526000808252602082015260006169d58460000151856020015185600001518660200151617484565b90508360200151816169e79190617ead565b845185906169f6908390617ead565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a2a5750816136ec565b6020808301519084015160019114616a515750815160208481015190840151829020919020145b8015616a8257825184518590616a68908390617ead565b9052508251602085018051616a7e908390617ec0565b9052505b509192915050565b6040805180820190915260008082526020820152616aa98383836175a4565b5092915050565b60606000826000015167ffffffffffffffff811115616ad157616ad161807b565b6040519080825280601f01601f191660200182016040528015616afb576020820181803683370190505b5090506000602082019050616aa9818560200151866000015161764f565b60606000616b25613ae2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b4257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616b9d90618767565b935060ff1681518110616bb257616bb26185fa565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c039190618ed2565b604051602081830303815290604052828280616c1e90618767565b935060ff1681518110616c3357616c336185fa565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616c8090618767565b935060ff1681518110616c9557616c956185fa565b602002602001018190525082604051602001616cb19190618695565b604051602081830303815290604052828280616ccc90618767565b935060ff1681518110616ce157616ce16185fa565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d2e90618767565b935060ff1681518110616d4357616d436185fa565b6020026020010181905250616d5887846176c9565b8282616d6381618767565b935060ff1681518110616d7857616d786185fa565b602090810291909101015285515115616e245760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616dca81618767565b935060ff1681518110616ddf57616ddf6185fa565b6020026020010181905250616df88660000151846176c9565b8282616e0381618767565b935060ff1681518110616e1857616e186185fa565b60200260200101819052505b856080015115616e925760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616e6d81618767565b935060ff1681518110616e8257616e826185fa565b6020026020010181905250616ef8565b8415616ef85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616ed781618767565b935060ff1681518110616eec57616eec6185fa565b60200260200101819052505b60408601515115616f945760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f4281618767565b935060ff1681518110616f5757616f576185fa565b60200260200101819052508560400151828280616f7390618767565b935060ff1681518110616f8857616f886185fa565b60200260200101819052505b856060015115616ffe5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616fdd81618767565b935060ff1681518110616ff257616ff26185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561701c5761701c61807b565b60405190808252806020026020018201604052801561704f57816020015b606081526020019060019003908161703a5790505b50905060005b8260ff168160ff1610156170a857838160ff1681518110617078576170786185fa565b6020026020010151828260ff1681518110617095576170956185fa565b6020908102919091010152600101617055565b50979650505050505050565b60408051808201909152600080825260208201528151835110156170d95750816136ec565b815183516020850151600092916170ef91617ec0565b6170f99190617ead565b6020840151909150600190821461711a575082516020840151819020908220145b801561713557835185518690617131908390617ead565b9052505b50929392505050565b60008082600001516171628560000151866020015186600001518760200151617484565b61716c9190617ec0565b90505b835160208501516171809190617ec0565b8111616aa9578161719081618f17565b92505082600001516171c78560200151836171ab9190617ead565b86516171b79190617ead565b8386600001518760200151617484565b6171d19190617ec0565b905061716f565b606060006171e6848461713e565b6171f1906001617ec0565b67ffffffffffffffff8111156172095761720961807b565b60405190808252806020026020018201604052801561723c57816020015b60608152602001906001900390816172275790505b50905060005b81518110156154b1576172586156d38686616a8a565b82828151811061726a5761726a6185fa565b6020908102919091010152600101617242565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106172c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106172f2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061731057662386f26fc10000830492506010015b6305f5e1008310617328576305f5e100830492506008015b612710831061733c57612710830492506004015b6064831061734e576064830492506002015b600a83106136ec5760010192915050565b600061736b8383617709565b159392505050565b60008085841161747a576020841161742657600084156173be57600161739a866020617ead565b6173a5906008618f31565b6173b090600261902f565b6173ba9190617ead565b1990505b83518116856173cd8989617ec0565b6173d79190617ead565b805190935082165b818114617411578784116173f957879450505050506150e2565b836174038161903b565b9450508284511690506173df565b61741b8785617ec0565b9450505050506150e2565b8383206174338588617ead565b61743d9087617ec0565b91505b858210617478578482208082036174655761745b8684617ec0565b93505050506150e2565b617470600184617ead565b925050617440565b505b5092949350505050565b6000838186851161758f576020851161753e57600085156174d05760016174ac876020617ead565b6174b7906008618f31565b6174c290600261902f565b6174cc9190617ead565b1990505b845181166000876174e18b8b617ec0565b6174eb9190617ead565b855190915083165b828114617530578186106175185761750b8b8b617ec0565b96505050505050506150e2565b8561752281618f17565b9650508386511690506174f3565b8596505050505050506150e2565b508383206000905b6175508689617ead565b821161758d5785832080820361756c57839450505050506150e2565b617577600185617ec0565b935050818061758590618f17565b925050617546565b505b6175998787617ec0565b979650505050505050565b604080518082019091526000808252602082015260006175d68560000151866020015186600001518760200151617484565b6020808701805191860191909152519091506175f29082617ead565b8352845160208601516176059190617ec0565b81036176145760008552617646565b835183516176229190617ec0565b85518690617631908390617ead565b90525083516176409082617ec0565b60208601525b50909392505050565b602081106176875781518352617666602084617ec0565b9250617673602083617ec0565b9150617680602082617ead565b905061764f565b60001981156176b657600161769d836020617ead565b6176a99061010061902f565b6176b39190617ead565b90505b9151835183169219169190911790915250565b606060006176d78484613bb5565b80516020808301516040519394506176f193909101619052565b60405160208183030381529060405291505092915050565b815181516000919081111561771c575081515b6020808501519084015160005b838110156177d557825182518082146177a557600019602087101561778457600184617756896020617ead565b6177609190617ec0565b61776b906008618f31565b61777690600261902f565b6177809190617ead565b1990505b81811683821681810391146177a25797506136ec9650505050505050565b50505b6177b0602086617ec0565b94506177bd602085617ec0565b935050506020816177ce9190617ec0565b9050617729565b508451865161426391906190aa565b610b67806190cb83390190565b61053f80619c3283390190565b61106f8061a17183390190565b6119e88061b1e083390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161785b617860565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161785b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179125783516001600160a01b03168352602093840193909201916001016178eb565b509095945050505050565b60005b83811015617938578181015183820152602001617920565b50506000910152565b6000815180845261795981602086016020860161791d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617a4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a39848651617941565b60209586019590945092909201916001016179ff565b509197505050602094850194929092019150600101617995565b50929695505050505050565b600081518084526020840193506020830160005b82811015617ac95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617a89565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b3f6040880182617941565b9050602082015191508681036020880152617b5a8183617a75565b965050506020938401939190910190600101617afb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617bd3858351617941565b94506020938401939190910190600101617b99565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617c696040870182617a75565b9550506020938401939190910190600101617c10565b600060208284031215617c9157600080fd5b81516001600160a01b03811681146137e557600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617d8360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617daf57600080fd5b815180151581146137e557600080fd5b600060208284031215617dd157600080fd5b5051919050565b608081526000617deb6080830187617941565b8560208401526001600160a01b038516604084015282810360608401526175998185617941565b6001600160a01b038716815260c060208201526000617e3460c0830188617941565b86604084015285606084015284608084015282810360a0840152617e588185617941565b9998505050505050505050565b8281526040602082015260006150e26040830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156136ec576136ec617e7e565b808201808211156136ec576136ec617e7e565b600181811c90821680617ee757607f821691505b6020821081036159ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617f336060830186617941565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617f656040830185617941565b82810360208401526137e18185617941565b6001600160a01b038616815260c060208201526000617f9960c0830187617941565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b03831681526040602082015260006150e26040830184617941565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161801f81601a85016020880161791d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161805c81601c84016020880161791d565b01601c01949350505050565b6020815260006137e56020830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156180cd576180cd61807b565b60405290565b60008067ffffffffffffffff8411156180ee576180ee61807b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561811d5761811d61807b565b60405283815290508082840185101561813557600080fd5b6154b184602083018561791d565b600082601f83011261815457600080fd5b6137e5838351602085016180d3565b60006020828403121561817557600080fd5b815167ffffffffffffffff81111561818c57600080fd5b6136e884828501618143565b600083516181aa81846020880161791d565b8351908301906181be81836020880161791d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516181ff81601a85016020880161791d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161823c81603384016020880161791d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006137e56080830184617941565b6000602082840312156182cb57600080fd5b815167ffffffffffffffff8111156182e257600080fd5b8201601f810184136182f357600080fd5b6136e8848251602084016180d3565b60008551618314818460208a0161791d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161834e816001840160208a0161791d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161838c81600284016020890161791d565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516183ce81600284016020880161791d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184196040830184617941565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161849081601f85016020870161791d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006184fd6040830184617941565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061854f6040830184617941565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516185c681601485016020870161791d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161866181600185016020870161791d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516186a781846020870161791d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161875a81604b85016020870161791d565b91909101604b0192915050565b600060ff821660ff810361877d5761877d617e7e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006137e56080830184617941565b60006020828403121561884a57600080fd5b815167ffffffffffffffff81111561886157600080fd5b82016060818503121561887357600080fd5b61887b6180aa565b81518060030b811461888c57600080fd5b8152602082015167ffffffffffffffff8111156188a857600080fd5b6188b486828501618143565b602083015250604082015167ffffffffffffffff8111156188d457600080fd5b6188e086828501618143565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161894c81602185016020870161791d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618b3881602185016020880161791d565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618b7581602e84016020880161791d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618c3d81602285016020870161791d565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618c8281600e85016020870161791d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618d6081601885016020880161791d565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618d9d81601c84016020880161791d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618ea381846020870161791d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618f0a81601c85016020870161791d565b91909101601c0192915050565b60006000198203618f2a57618f2a617e7e565b5060010190565b80820281158282048414176136ec576136ec617e7e565b6001815b6001841115618f8357808504811115618f6757618f67617e7e565b6001841615618f7557908102905b60019390931c928002618f4c565b935093915050565b600082618f9a575060016136ec565b81618fa7575060006136ec565b8160018114618fbd5760028114618fc757618fe3565b60019150506136ec565b60ff841115618fd857618fd8617e7e565b50506001821b6136ec565b5060208310610133831016604e8410600b8410161715619006575081810a6136ec565b6190136000198484618f48565b806000190482111561902757619027617e7e565b029392505050565b60006137e58383618f8b565b60008161904a5761904a617e7e565b506000190190565b6000835161906481846020880161791d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161909e81600184016020880161791d565b01600101949350505050565b8181036000831280158383131683831282161715616aa957616aa9617e7e56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a26469706673582212206601a00434c306141cf3382fc0a5b19f095b322077347bc4ebb2562b6117d62664736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index ea11383c..12a41407 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d73a8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637f924c4e1161012a578063c2725318116100bd578063e20c9f711161008c578063f5a3573311610071578063f5a357331461035c578063fa7626d414610364578063fc79171b1461037157600080fd5b8063e20c9f711461034c578063eba3c49c1461035457600080fd5b8063c27253181461032c578063c324827214610334578063cced12c71461033c578063df690b9a1461034457600080fd5b8063aed71d97116100f9578063aed71d97146102fc578063b0464fdc14610304578063b5508aa91461030c578063ba414fa61461031457600080fd5b80637f924c4e146102c257806385226c81146102ca578063916a17c6146102df57806396d9d876146102f457600080fd5b80633a25c460116101a2578063461fc5af11610171578063461fc5af14610295578063597cfeb01461029d57806366d9a9a0146102a5578063720b9aa9146102ba57600080fd5b80633a25c460146102755780633e5e3c231461027d5780633f7286f41461028557806344b2a40b1461028d57600080fd5b80631ed7831c116101de5780631ed7831c146102325780631fe68797146102505780632ade38801461025857806331d099561461026d57600080fd5b806309f080da146102105780630a9254e41461021a578063104b352214610222578063198d5ca41461022a575b600080fd5b610218610379565b005b61021861056d565b610218610fcf565b6102186111c1565b61023a61147b565b60405161024791906183b7565b60405180910390f35b6102186114dd565b610260611a0c565b6040516102479190618453565b610218611b4e565b610218611d0d565b61023a611ec8565b61023a611f28565b610218611f88565b610218612110565b6102186122ce565b6102ad6126a4565b60405161024791906185b9565b610218612826565b610218612a99565b6102d2612cc9565b6040516102479190618657565b6102e7612d99565b60405161024791906186ce565b610218612e94565b610218612fe7565b6102e76132f3565b6102d26133ee565b61031c6134be565b6040519015158152602001610247565b610218613592565b61021861374b565b610218613904565b610218613aef565b61023a613cad565b610218613d0d565b610218613ecb565b601f5461031c9060ff1681565b610218614082565b600060405160200161038a90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b600060405180830381600087803b15801561055157600080fd5b505af1158015610565573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105b3906182ca565b604051809103906000f0801580156105cf573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526106a89160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526141b9565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190618835565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107d2906182d7565b604051809103906000f0801580156107ee573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050505060008060006040516108b3906182e4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108ef573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610945906182f1565b6109549695949392919061885e565b604051809103906000f080158015610970573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190618953565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190618953565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b50505050565b604051600190600090610fe490602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906189af565b905061125c6000826141d8565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146991906189af565b90506114766000826141d8565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156114d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114b5575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b91906189af565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906189af565b6024546040519192506001600160a01b0316319060009061161d90602001618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061177a93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546117aa936001600160a01b03928316928c9216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506118769286928c929116908890600401618975565b600060405180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193491906189af565b90506119496119438888618a6a565b826141d8565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906189af565b90506119e386826141d8565b611a026119f08987618a7d565b6024546001600160a01b0316316141d8565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611b4557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b2e578382906000526020600020018054611aa190618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054611acd90618a90565b8015611b1a5780601f10611aef57610100808354040283529160200191611b1a565b820191906000526020600020905b815481529060010190602001808311611afd57829003601f168201915b505050505081526020019060010190611a82565b505050508152505081526020019060010190611a30565b50505050905090565b6000604051602001611b5f90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015611c9b57600080fd5b505af1158015611caf573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f5004945061053793879381169260019291169089906004016187e0565b604051600190600090611d2290602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611dec57600080fd5b505af1158015611e00573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b606060188054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505050565b600060405160200161212190618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b91906189af565b90506123686000826141d8565b600060405160200161237990618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506124d693506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612507936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506125da93879381169260019291169089906004016187e0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269791906189af565b9050610fc96001826141d8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002090600202016040518060400160405290816000820180546126fb90618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461272790618a90565b80156127745780601f1061274957610100808354040283529160200191612774565b820191906000526020600020905b81548152906001019060200180831161275757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561280e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127bb5790505b505050505081525050815260200190600101906126c8565b600060405160200161283790618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061299493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546129c5936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612a2757600080fd5b505af1158015612a3b573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b945061053793879381169260019291169089906004016187e0565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2791906189af565b9050612b346000826141d8565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b8d57600080fd5b505af1158015612ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd91906189af565b905061147683826141d8565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611b45578382906000526020600020018054612d0c90618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3890618a90565b8015612d855780601f10612d5a57610100808354040283529160200191612d85565b820191906000526020600020905b815481529060010190602001808311612d6857829003601f168201915b505050505081526020019060010190612ced565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e7c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612e295790505b50505050508152505081526020019060010190612dbd565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc91506064016120db565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307491906189af565b90506130816000826141d8565b600060405160200161309290618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506131ef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613220936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561328157600080fd5b505af1158015613295573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506125da93879381169260019291169089906004016187e0565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156133d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116133835790505b50505050508152505081526020019060010190613317565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002001805461343190618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461345d90618a90565b80156134aa5780601f1061347f576101008083540402835291602001916134aa565b820191906000526020600020905b81548152906001019060200180831161348d57829003601f168201915b505050505081526020019060010190613412565b60085460009060ff16156134d6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358b91906189af565b1415905090565b60006040516020016135a390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561366d57600080fd5b505af1158015613681573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136de57600080fd5b505af11580156136f2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105379286921690600190869089906004016187e0565b600060405160200161375c90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105379286921690600190869089906004016187e0565b600060405160200161391590618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a0357600080fd5b505af1158015613a17573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999489450613a7293506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613aa3936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611c81565b6000604051602001613b0090618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613bca57600080fd5b505af1158015613bde573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b606060158054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b6000604051602001613d1e90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613de857600080fd5b505af1158015613dfc573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613e5957600080fd5b505af1158015613e6d573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b604051600190600090613ee090602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613faa57600080fd5b505af1158015613fbe573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561401b57600080fd5b505af115801561402f573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061118a908490879085908890600401618975565b600060405160200161409390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561415d57600080fd5b505af1158015614171573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401612a0d565b60006141c36182fe565b6141ce848483614257565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561424357600080fd5b505afa158015610565573d6000803e3d6000fd5b60008061426485846142d2565b90506142c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016142b2929190618add565b604051602081830303815290604052856142de565b9150505b9392505050565b60006142cb838361430c565b60c08101515160009015614302576142fb84848460c00151614327565b90506142cb565b6142fb84846144cd565b600061431883836145b8565b6142cb838360200151846142de565b6000806143326145c8565b90506000614340868361469b565b905060006143578260600151836020015185614b41565b9050600061436783838989614d53565b9050600061437482615bd0565b602081015181519192509060030b156143e75789826040015160405160200161439e929190618aff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526143de91600401618b80565b60405180910390fd5b600061442a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615d9f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061447d908490600401618b80565b602060405180830381865afa15801561449a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144be9190618835565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614522908790600401618b80565b600060405180830381865afa15801561453f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145679190810190618c7b565b905060006145958285604051602001614581929190618cb0565b604051602081830303815290604052615f9f565b90506001600160a01b0381166141ce57848460405160200161439e929190618cdf565b6145c482826000615fb2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061464f908490600401618d8a565b600060405180830381865afa15801561466c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146949190810190618dd1565b9250505090565b6146cd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506147186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614721856160b5565b602082015260006147318661649a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261479b9190810190618dd1565b868385602001516040516020016147b59493929190618e1a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061480d908590600401618b80565b600060405180830381865afa15801561482a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148529190810190618dd1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061489a908490600401618f1e565b602060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148db9190618953565b6148f0578160405160200161439e9190618f70565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614935908490600401619002565b600060405180830381865afa158015614952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261497a9190810190618dd1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906149c1908490600401619054565b602060405180830381865afa1580156149de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a029190618953565b15614a97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614a4c908490600401619054565b600060405180830381865afa158015614a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a919190810190618dd1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614abc91906190a6565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614ae8929190619112565b600060405180830381865afa158015614b05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b2d9190810190618dd1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614b5d5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614bbd57614bbd619137565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614c1157614c11619137565b602002602001018190525084604051602001614c2d9190619166565b60405160208183030381529060405281600281518110614c4f57614c4f619137565b602002602001018190525082604051602001614c6b91906191d2565b60405160208183030381529060405281600381518110614c8d57614c8d619137565b60200260200101819052506000614ca382615bd0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614d34906040805180820182526000808252602091820152815180830190925284518252808501908201529061671d565b614d49578560405160200161439e9190619213565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614da3565b511590565b614f1757826020015115614e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016143de565b8260c0015115614f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016143de565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614f3057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614f8b906192a4565b935060ff1681518110614fa057614fa0619137565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614ff191906192c3565b60405160208183030381529060405282828061500c906192a4565b935060ff168151811061502157615021619137565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061506e906192a4565b935060ff168151811061508357615083619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806150d0906192a4565b935060ff16815181106150e5576150e5619137565b60200260200101819052508760200151828280615101906192a4565b935060ff168151811061511657615116619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280615163906192a4565b935060ff168151811061517857615178619137565b602090810291909101015287518282615190816192a4565b935060ff16815181106151a5576151a5619137565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806151f2906192a4565b935060ff168151811061520757615207619137565b602002602001018190525061521b4661677e565b8282615226816192a4565b935060ff168151811061523b5761523b619137565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615288906192a4565b935060ff168151811061529d5761529d619137565b6020026020010181905250868282806152b5906192a4565b935060ff16815181106152ca576152ca619137565b60209081029190910101528551156153f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261531b816192a4565b935060ff168151811061533057615330619137565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615380908990600401618b80565b600060405180830381865afa15801561539d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526153c59190810190618dd1565b82826153d0816192a4565b935060ff16815181106153e5576153e5619137565b60200260200101819052505b8460200151156154c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261543a816192a4565b935060ff168151811061544f5761544f619137565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061549c906192a4565b935060ff16815181106154b1576154b1619137565b6020026020010181905250615688565b6154f9614d9e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61558c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261553c816192a4565b935060ff168151811061555157615551619137565b60200260200101819052508460a001516040516020016155719190619166565b60405160208183030381529060405282828061549c906192a4565b8460c001511580156155cf5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526155cd90511590565b155b156156885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615613816192a4565b935060ff168151811061562857615628619137565b602002602001018190525061563c8861681e565b60405160200161564c9190619166565b604051602081830303815290604052828280615667906192a4565b935060ff168151811061567c5761567c619137565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526156bc90511590565b6157515760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826156ff816192a4565b935060ff168151811061571457615714619137565b60200260200101819052508460400151828280615730906192a4565b935060ff168151811061574557615745619137565b60200260200101819052505b6060850151156158725760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261579a816192a4565b935060ff16815181106157af576157af619137565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561581e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158469190810190618dd1565b8282615851816192a4565b935060ff168151811061586657615866619137565b60200260200101819052505b60e085015151156159195760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826158bc816192a4565b935060ff16815181106158d1576158d1619137565b60200260200101819052506158ed8560e001516000015161677e565b82826158f8816192a4565b935060ff168151811061590d5761590d619137565b60200260200101819052505b60e085015160200151156159c35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615966816192a4565b935060ff168151811061597b5761597b619137565b60200260200101819052506159978560e001516020015161677e565b82826159a2816192a4565b935060ff16815181106159b7576159b7619137565b60200260200101819052505b60e08501516040015115615a6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615a10816192a4565b935060ff1681518110615a2557615a25619137565b6020026020010181905250615a418560e001516040015161677e565b8282615a4c816192a4565b935060ff1681518110615a6157615a61619137565b60200260200101819052505b60e08501516060015115615b175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615aba816192a4565b935060ff1681518110615acf57615acf619137565b6020026020010181905250615aeb8560e001516060015161677e565b8282615af6816192a4565b935060ff1681518110615b0b57615b0b619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615b3557615b35618b93565b604051908082528060200260200182016040528015615b6857816020015b6060815260200190600190039081615b535790505b50905060005b8260ff168160ff161015615bc157838160ff1681518110615b9157615b91619137565b6020026020010151828260ff1681518110615bae57615bae619137565b6020908102919091010152600101615b6e565b5093505050505b949350505050565b615bf76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615c7d9186910161932e565b600060405180830381865afa158015615c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615cc29190810190618dd1565b90506000615cd0868361730d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615d009190618657565b6000604051808303816000875af1158015615d1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d479190810190619375565b805190915060030b15801590615d605750602081015151155b8015615d6f5750604081015151155b15614d495781600081518110615d8757615d87619137565b602002602001015160405160200161439e919061942b565b60606000615dd48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615e0b9082905b90617462565b15615f68576000615e8882615e8284615e7c615e4e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617489565b906174eb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615eec908290617462565b15615f5657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f53905b8290617570565b90505b615f5f81617596565b925050506142cb565b8215615f8157848460405160200161439e929190619617565b50506040805160208101909152600081526142cb565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615fc157505050565b6000615fce8484846175ff565b90506000615fdb82615bd0565b602081015181519192509060030b1580156160775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261607790604080518082018252600080825260209182015281518083019092528451825280850190820152615e05565b1561608457505050505050565b604082015151156160a457816040015160405160200161439e91906196be565b8060405160200161439e919061971c565b606060006160ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061614f905b829061671d565b156161be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9908390617b9a565b617596565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616220905b8290617c24565b6001036162ed57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261628690615f4c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9905b8390617570565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634c90616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906163b4908390617cbe565b9050600081600183516163c79190618a6a565b815181106163d7576163d7619137565b6020026020010151905061647a6161b961644d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617b9a565b95945050505050565b8260405160200161439e9190619787565b50919050565b606060006164cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061653190616148565b1561653f576142cb81617596565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261659e90616219565b60010361660857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9906162e6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261666790616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906166cf908390617cbe565b905060018151111561670b5780600282516166ea9190618a6a565b815181106166fa576166fa619137565b602002602001015192505050919050565b508260405160200161439e9190619787565b805182516000911115616732575060006141d2565b8151835160208501516000929161674891618a7d565b6167529190618a6a565b9050826020015181036167695760019150506141d2565b82516020840151819020912014905092915050565b6060600061678b83617d63565b600101905060008167ffffffffffffffff8111156167ab576167ab618b93565b6040519080825280601f01601f1916602001820160405280156167d5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846167df57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916168aa905b8290617e45565b156168ea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616949906168a3565b1561698957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169e8906168a3565b15616a2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a87906168a3565b80616aec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616aec906168a3565b15616b2c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b8b906168a3565b80616bf05750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf0906168a3565b15616c3057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c8f906168a3565b80616cf45750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cf4906168a3565b15616d3457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d93906168a3565b80616df85750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616df8906168a3565b15616e3857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e97906168a3565b15616ed757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f36906168a3565b15616f7657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fd5906168a3565b1561701557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617074906168a3565b156170b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617113906168a3565b1561715357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171b2906168a3565b806172175750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617217906168a3565b1561725757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172b6906168a3565b156172f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161439e9290602001619865565b60608060005b8451811015617398578185828151811061732f5761732f619137565b6020026020010151604051602001617348929190618cb0565b6040516020818303038152906040529150600185516173679190618a6a565b8114617390578160405160200161737e91906199ce565b60405160208183030381529060405291505b600101617313565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816173b157905050905083816000815181106173dc576173dc619137565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061743057617430619137565b6020026020010181905250818160028151811061744f5761744f619137565b6020908102919091010152949350505050565b60208083015183518351928401516000936174809291849190617e59565b14159392505050565b604080518082019091526000808252602082015260006174bb8460000151856020015185600001518660200151617f6a565b90508360200151816174cd9190618a6a565b845185906174dc908390618a6a565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156175105750816141d2565b60208083015190840151600191146175375750815160208481015190840151829020919020145b80156175685782518451859061754e908390618a6a565b9052508251602085018051617564908390618a7d565b9052505b509192915050565b604080518082019091526000808252602082015261758f83838361808a565b5092915050565b60606000826000015167ffffffffffffffff8111156175b7576175b7618b93565b6040519080825280601f01601f1916602001820160405280156175e1576020820181803683370190505b509050600060208201905061758f8185602001518660000151618135565b6060600061760b6145c8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161762857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617683906192a4565b935060ff168151811061769857617698619137565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016176e99190619a0f565b604051602081830303815290604052828280617704906192a4565b935060ff168151811061771957617719619137565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617766906192a4565b935060ff168151811061777b5761777b619137565b60200260200101819052508260405160200161779791906191d2565b6040516020818303038152906040528282806177b2906192a4565b935060ff16815181106177c7576177c7619137565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617814906192a4565b935060ff168151811061782957617829619137565b602002602001018190525061783e87846181af565b8282617849816192a4565b935060ff168151811061785e5761785e619137565b60209081029190910101528551511561790a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826178b0816192a4565b935060ff16815181106178c5576178c5619137565b60200260200101819052506178de8660000151846181af565b82826178e9816192a4565b935060ff16815181106178fe576178fe619137565b60200260200101819052505b8560800151156179785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617953816192a4565b935060ff168151811061796857617968619137565b60200260200101819052506179de565b84156179de5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826179bd816192a4565b935060ff16815181106179d2576179d2619137565b60200260200101819052505b60408601515115617a7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617a28816192a4565b935060ff1681518110617a3d57617a3d619137565b60200260200101819052508560400151828280617a59906192a4565b935060ff1681518110617a6e57617a6e619137565b60200260200101819052505b856060015115617ae45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617ac3816192a4565b935060ff1681518110617ad857617ad8619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617b0257617b02618b93565b604051908082528060200260200182016040528015617b3557816020015b6060815260200190600190039081617b205790505b50905060005b8260ff168160ff161015617b8e57838160ff1681518110617b5e57617b5e619137565b6020026020010151828260ff1681518110617b7b57617b7b619137565b6020908102919091010152600101617b3b565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617bbf5750816141d2565b81518351602085015160009291617bd591618a7d565b617bdf9190618a6a565b60208401519091506001908214617c00575082516020840151819020908220145b8015617c1b57835185518690617c17908390618a6a565b9052505b50929392505050565b6000808260000151617c488560000151866020015186600001518760200151617f6a565b617c529190618a7d565b90505b83516020850151617c669190618a7d565b811161758f5781617c7681619a54565b9250508260000151617cad856020015183617c919190618a6a565b8651617c9d9190618a6a565b8386600001518760200151617f6a565b617cb79190618a7d565b9050617c55565b60606000617ccc8484617c24565b617cd7906001618a7d565b67ffffffffffffffff811115617cef57617cef618b93565b604051908082528060200260200182016040528015617d2257816020015b6060815260200190600190039081617d0d5790505b50905060005b8151811015615f9757617d3e6161b98686617570565b828281518110617d5057617d50619137565b6020908102919091010152600101617d28565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617dac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617dd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617df657662386f26fc10000830492506010015b6305f5e1008310617e0e576305f5e100830492506008015b6127108310617e2257612710830492506004015b60648310617e34576064830492506002015b600a83106141d25760010192915050565b6000617e5183836181ef565b159392505050565b600080858411617f605760208411617f0c5760008415617ea4576001617e80866020618a6a565b617e8b906008619a6e565b617e96906002619b6c565b617ea09190618a6a565b1990505b8351811685617eb38989618a7d565b617ebd9190618a6a565b805190935082165b818114617ef757878411617edf5787945050505050615bc8565b83617ee981619b78565b945050828451169050617ec5565b617f018785618a7d565b945050505050615bc8565b838320617f198588618a6a565b617f239087618a7d565b91505b858210617f5e57848220808203617f4b57617f418684618a7d565b9350505050615bc8565b617f56600184618a6a565b925050617f26565b505b5092949350505050565b6000838186851161807557602085116180245760008515617fb6576001617f92876020618a6a565b617f9d906008619a6e565b617fa8906002619b6c565b617fb29190618a6a565b1990505b84518116600087617fc78b8b618a7d565b617fd19190618a6a565b855190915083165b82811461801657818610617ffe57617ff18b8b618a7d565b9650505050505050615bc8565b8561800881619a54565b965050838651169050617fd9565b859650505050505050615bc8565b508383206000905b6180368689618a6a565b8211618073578583208082036180525783945050505050615bc8565b61805d600185618a7d565b935050818061806b90619a54565b92505061802c565b505b61807f8787618a7d565b979650505050505050565b604080518082019091526000808252602082015260006180bc8560000151866020015186600001518760200151617f6a565b6020808701805191860191909152519091506180d89082618a6a565b8352845160208601516180eb9190618a7d565b81036180fa576000855261812c565b835183516181089190618a7d565b85518690618117908390618a6a565b90525083516181269082618a7d565b60208601525b50909392505050565b6020811061816d578151835261814c602084618a7d565b9250618159602083618a7d565b9150618166602082618a6a565b9050618135565b600019811561819c576001618183836020618a6a565b61818f90610100619b6c565b6181999190618a6a565b90505b9151835183169219169190911790915250565b606060006181bd848461469b565b80516020808301516040519394506181d793909101619b8f565b60405160208183030381529060405291505092915050565b8151815160009190811115618202575081515b6020808501519084015160005b838110156182bb578251825180821461828b57600019602087101561826a5760018461823c896020618a6a565b6182469190618a7d565b618251906008619a6e565b61825c906002619b6c565b6182669190618a6a565b1990505b81811683821681810391146182885797506141d29650505050505050565b50505b618296602086618a7d565b94506182a3602085618a7d565b935050506020816182b49190618a7d565b905061820f565b5084518651614d499190619be7565b610b6780619c0883390190565b61053f8061a76f83390190565b61106f8061acae83390190565b6119e88061bd1d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618341618346565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016183416040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156183f85783516001600160a01b03168352602093840193909201916001016183d1565b509095945050505050565b60005b8381101561841e578181015183820152602001618406565b50506000910152565b6000815180845261843f816020860160208601618403565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618535577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261851f848651618427565b60209586019590945092909201916001016184e5565b50919750505060209485019492909201915060010161847b565b50929695505050505050565b600081518084526020840193506020830160005b828110156185af5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161856f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526186256040880182618427565b9050602082015191508681036020880152618640818361855b565b9650505060209384019391909101906001016185e1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526186b9858351618427565b9450602093840193919091019060010161867f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261874f604087018261855b565b95505060209384019391909101906001016186f6565b6020815260006141d260208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60008151606084526187b76060850182618427565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a0815260006187f360a08301886187a2565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526188298185618427565b98975050505050505050565b60006020828403121561884757600080fd5b81516001600160a01b03811681146142cb57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618918577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261893960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561896557600080fd5b815180151581146142cb57600080fd5b60808152600061898860808301876187a2565b8560208401526001600160a01b0385166040840152828103606084015261807f8185618427565b6000602082840312156189c157600080fd5b5051919050565b60a0815260006189db60a0830187618427565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261807f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156141d2576141d2618a3b565b808201808211156141d2576141d2618a3b565b600181811c90821680618aa457607f821691505b602082108103616494577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0383168152604060208201526000615bc86040830184618427565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618b3781601a850160208801618403565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618b7481601c840160208801618403565b01601c01949350505050565b6020815260006142cb6020830184618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715618be557618be5618b93565b60405290565b60008067ffffffffffffffff841115618c0657618c06618b93565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618c3557618c35618b93565b604052838152905080828401851015618c4d57600080fd5b615f97846020830185618403565b600082601f830112618c6c57600080fd5b6142cb83835160208501618beb565b600060208284031215618c8d57600080fd5b815167ffffffffffffffff811115618ca457600080fd5b6141ce84828501618c5b565b60008351618cc2818460208801618403565b835190830190618cd6818360208801618403565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618d1781601a850160208801618403565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618d54816033840160208801618403565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006142cb6080830184618427565b600060208284031215618de357600080fd5b815167ffffffffffffffff811115618dfa57600080fd5b8201601f81018413618e0b57600080fd5b6141ce84825160208401618beb565b60008551618e2c818460208a01618403565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618e66816001840160208a01618403565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618ea4816002840160208901618403565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618ee6816002840160208801618403565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618f316040830184618427565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618fa881601f850160208701618403565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006190156040830184618427565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006190676040830184618427565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516190de816014850160208701618403565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006191256040830185618427565b82810360208401526142c78185618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161919e816001850160208701618403565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516191e4818460208701618403565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161929781604b850160208701618403565b91909101604b0192915050565b600060ff821660ff81036192ba576192ba618a3b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006142cb6080830184618427565b60006020828403121561938757600080fd5b815167ffffffffffffffff81111561939e57600080fd5b8201606081850312156193b057600080fd5b6193b8618bc2565b81518060030b81146193c957600080fd5b8152602082015167ffffffffffffffff8111156193e557600080fd5b6193f186828501618c5b565b602083015250604082015167ffffffffffffffff81111561941157600080fd5b61941d86828501618c5b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619489816021850160208701618403565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619675816021850160208801618403565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516196b281602e840160208801618403565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161977a816022850160208701618403565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516197bf81600e850160208701618403565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161989d816018850160208801618403565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516198da81601c840160208801618403565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516199e0818460208701618403565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619a4781601c850160208701618403565b91909101601c0192915050565b60006000198203619a6757619a67618a3b565b5060010190565b80820281158282048414176141d2576141d2618a3b565b6001815b6001841115619ac057808504811115619aa457619aa4618a3b565b6001841615619ab257908102905b60019390931c928002619a89565b935093915050565b600082619ad7575060016141d2565b81619ae4575060006141d2565b8160018114619afa5760028114619b0457619b20565b60019150506141d2565b60ff841115619b1557619b15618a3b565b50506001821b6141d2565b5060208310610133831016604e8410600b8410161715619b43575081810a6141d2565b619b506000198484619a85565b8060001904821115619b6457619b64618a3b565b029392505050565b60006142cb8383619ac8565b600081619b8757619b87618a3b565b506000190190565b60008351619ba1818460208801618403565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619bdb816001840160208801618403565b01600101949350505050565b818103600083128015838313168383128216171561758f5761758f618a3b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201f318efc07065bafb88449047967a7fed5949a025e75f877444d77805cbd1f3964736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d73a8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637f924c4e1161012a578063c2725318116100bd578063e20c9f711161008c578063f5a3573311610071578063f5a357331461035c578063fa7626d414610364578063fc79171b1461037157600080fd5b8063e20c9f711461034c578063eba3c49c1461035457600080fd5b8063c27253181461032c578063c324827214610334578063cced12c71461033c578063df690b9a1461034457600080fd5b8063aed71d97116100f9578063aed71d97146102fc578063b0464fdc14610304578063b5508aa91461030c578063ba414fa61461031457600080fd5b80637f924c4e146102c257806385226c81146102ca578063916a17c6146102df57806396d9d876146102f457600080fd5b80633a25c460116101a2578063461fc5af11610171578063461fc5af14610295578063597cfeb01461029d57806366d9a9a0146102a5578063720b9aa9146102ba57600080fd5b80633a25c460146102755780633e5e3c231461027d5780633f7286f41461028557806344b2a40b1461028d57600080fd5b80631ed7831c116101de5780631ed7831c146102325780631fe68797146102505780632ade38801461025857806331d099561461026d57600080fd5b806309f080da146102105780630a9254e41461021a578063104b352214610222578063198d5ca41461022a575b600080fd5b610218610379565b005b61021861056d565b610218610fcf565b6102186111c1565b61023a61147b565b60405161024791906183b7565b60405180910390f35b6102186114dd565b610260611a0c565b6040516102479190618453565b610218611b4e565b610218611d0d565b61023a611ec8565b61023a611f28565b610218611f88565b610218612110565b6102186122ce565b6102ad6126a4565b60405161024791906185b9565b610218612826565b610218612a99565b6102d2612cc9565b6040516102479190618657565b6102e7612d99565b60405161024791906186ce565b610218612e94565b610218612fe7565b6102e76132f3565b6102d26133ee565b61031c6134be565b6040519015158152602001610247565b610218613592565b61021861374b565b610218613904565b610218613aef565b61023a613cad565b610218613d0d565b610218613ecb565b601f5461031c9060ff1681565b610218614082565b600060405160200161038a90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b600060405180830381600087803b15801561055157600080fd5b505af1158015610565573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105b3906182ca565b604051809103906000f0801580156105cf573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526106a89160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526141b9565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190618835565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107d2906182d7565b604051809103906000f0801580156107ee573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050505060008060006040516108b3906182e4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108ef573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610945906182f1565b6109549695949392919061885e565b604051809103906000f080158015610970573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190618953565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190618953565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b50505050565b604051600190600090610fe490602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906189af565b905061125c6000826141d8565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146991906189af565b90506114766000826141d8565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156114d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114b5575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b91906189af565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906189af565b6024546040519192506001600160a01b0316319060009061161d90602001618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061177a93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546117aa936001600160a01b03928316928c9216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506118769286928c929116908890600401618975565b600060405180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193491906189af565b90506119496119438888618a6a565b826141d8565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906189af565b90506119e386826141d8565b611a026119f08987618a7d565b6024546001600160a01b0316316141d8565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611b4557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b2e578382906000526020600020018054611aa190618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054611acd90618a90565b8015611b1a5780601f10611aef57610100808354040283529160200191611b1a565b820191906000526020600020905b815481529060010190602001808311611afd57829003601f168201915b505050505081526020019060010190611a82565b505050508152505081526020019060010190611a30565b50505050905090565b6000604051602001611b5f90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015611c9b57600080fd5b505af1158015611caf573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f5004945061053793879381169260019291169089906004016187e0565b604051600190600090611d2290602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611dec57600080fd5b505af1158015611e00573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b606060188054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505050565b600060405160200161212190618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b91906189af565b90506123686000826141d8565b600060405160200161237990618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506124d693506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612507936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506125da93879381169260019291169089906004016187e0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269791906189af565b9050610fc96001826141d8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002090600202016040518060400160405290816000820180546126fb90618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461272790618a90565b80156127745780601f1061274957610100808354040283529160200191612774565b820191906000526020600020905b81548152906001019060200180831161275757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561280e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127bb5790505b505050505081525050815260200190600101906126c8565b600060405160200161283790618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061299493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546129c5936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612a2757600080fd5b505af1158015612a3b573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b945061053793879381169260019291169089906004016187e0565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2791906189af565b9050612b346000826141d8565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b8d57600080fd5b505af1158015612ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd91906189af565b905061147683826141d8565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611b45578382906000526020600020018054612d0c90618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3890618a90565b8015612d855780601f10612d5a57610100808354040283529160200191612d85565b820191906000526020600020905b815481529060010190602001808311612d6857829003601f168201915b505050505081526020019060010190612ced565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e7c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612e295790505b50505050508152505081526020019060010190612dbd565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc91506064016120db565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307491906189af565b90506130816000826141d8565b600060405160200161309290618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506131ef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613220936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561328157600080fd5b505af1158015613295573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506125da93879381169260019291169089906004016187e0565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156133d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116133835790505b50505050508152505081526020019060010190613317565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002001805461343190618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461345d90618a90565b80156134aa5780601f1061347f576101008083540402835291602001916134aa565b820191906000526020600020905b81548152906001019060200180831161348d57829003601f168201915b505050505081526020019060010190613412565b60085460009060ff16156134d6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358b91906189af565b1415905090565b60006040516020016135a390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561366d57600080fd5b505af1158015613681573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136de57600080fd5b505af11580156136f2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105379286921690600190869089906004016187e0565b600060405160200161375c90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105379286921690600190869089906004016187e0565b600060405160200161391590618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a0357600080fd5b505af1158015613a17573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999489450613a7293506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613aa3936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611c81565b6000604051602001613b0090618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613bca57600080fd5b505af1158015613bde573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b606060158054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b6000604051602001613d1e90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613de857600080fd5b505af1158015613dfc573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613e5957600080fd5b505af1158015613e6d573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b604051600190600090613ee090602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613faa57600080fd5b505af1158015613fbe573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561401b57600080fd5b505af115801561402f573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061118a908490879085908890600401618975565b600060405160200161409390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561415d57600080fd5b505af1158015614171573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401612a0d565b60006141c36182fe565b6141ce848483614257565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561424357600080fd5b505afa158015610565573d6000803e3d6000fd5b60008061426485846142d2565b90506142c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016142b2929190618add565b604051602081830303815290604052856142de565b9150505b9392505050565b60006142cb838361430c565b60c08101515160009015614302576142fb84848460c00151614327565b90506142cb565b6142fb84846144cd565b600061431883836145b8565b6142cb838360200151846142de565b6000806143326145c8565b90506000614340868361469b565b905060006143578260600151836020015185614b41565b9050600061436783838989614d53565b9050600061437482615bd0565b602081015181519192509060030b156143e75789826040015160405160200161439e929190618aff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526143de91600401618b80565b60405180910390fd5b600061442a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615d9f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061447d908490600401618b80565b602060405180830381865afa15801561449a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144be9190618835565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614522908790600401618b80565b600060405180830381865afa15801561453f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145679190810190618c7b565b905060006145958285604051602001614581929190618cb0565b604051602081830303815290604052615f9f565b90506001600160a01b0381166141ce57848460405160200161439e929190618cdf565b6145c482826000615fb2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061464f908490600401618d8a565b600060405180830381865afa15801561466c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146949190810190618dd1565b9250505090565b6146cd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506147186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614721856160b5565b602082015260006147318661649a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261479b9190810190618dd1565b868385602001516040516020016147b59493929190618e1a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061480d908590600401618b80565b600060405180830381865afa15801561482a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148529190810190618dd1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061489a908490600401618f1e565b602060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148db9190618953565b6148f0578160405160200161439e9190618f70565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614935908490600401619002565b600060405180830381865afa158015614952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261497a9190810190618dd1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906149c1908490600401619054565b602060405180830381865afa1580156149de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a029190618953565b15614a97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614a4c908490600401619054565b600060405180830381865afa158015614a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a919190810190618dd1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614abc91906190a6565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614ae8929190619112565b600060405180830381865afa158015614b05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b2d9190810190618dd1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614b5d5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614bbd57614bbd619137565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614c1157614c11619137565b602002602001018190525084604051602001614c2d9190619166565b60405160208183030381529060405281600281518110614c4f57614c4f619137565b602002602001018190525082604051602001614c6b91906191d2565b60405160208183030381529060405281600381518110614c8d57614c8d619137565b60200260200101819052506000614ca382615bd0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614d34906040805180820182526000808252602091820152815180830190925284518252808501908201529061671d565b614d49578560405160200161439e9190619213565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614da3565b511590565b614f1757826020015115614e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016143de565b8260c0015115614f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016143de565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614f3057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614f8b906192a4565b935060ff1681518110614fa057614fa0619137565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614ff191906192c3565b60405160208183030381529060405282828061500c906192a4565b935060ff168151811061502157615021619137565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061506e906192a4565b935060ff168151811061508357615083619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806150d0906192a4565b935060ff16815181106150e5576150e5619137565b60200260200101819052508760200151828280615101906192a4565b935060ff168151811061511657615116619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280615163906192a4565b935060ff168151811061517857615178619137565b602090810291909101015287518282615190816192a4565b935060ff16815181106151a5576151a5619137565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806151f2906192a4565b935060ff168151811061520757615207619137565b602002602001018190525061521b4661677e565b8282615226816192a4565b935060ff168151811061523b5761523b619137565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615288906192a4565b935060ff168151811061529d5761529d619137565b6020026020010181905250868282806152b5906192a4565b935060ff16815181106152ca576152ca619137565b60209081029190910101528551156153f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261531b816192a4565b935060ff168151811061533057615330619137565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615380908990600401618b80565b600060405180830381865afa15801561539d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526153c59190810190618dd1565b82826153d0816192a4565b935060ff16815181106153e5576153e5619137565b60200260200101819052505b8460200151156154c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261543a816192a4565b935060ff168151811061544f5761544f619137565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061549c906192a4565b935060ff16815181106154b1576154b1619137565b6020026020010181905250615688565b6154f9614d9e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61558c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261553c816192a4565b935060ff168151811061555157615551619137565b60200260200101819052508460a001516040516020016155719190619166565b60405160208183030381529060405282828061549c906192a4565b8460c001511580156155cf5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526155cd90511590565b155b156156885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615613816192a4565b935060ff168151811061562857615628619137565b602002602001018190525061563c8861681e565b60405160200161564c9190619166565b604051602081830303815290604052828280615667906192a4565b935060ff168151811061567c5761567c619137565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526156bc90511590565b6157515760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826156ff816192a4565b935060ff168151811061571457615714619137565b60200260200101819052508460400151828280615730906192a4565b935060ff168151811061574557615745619137565b60200260200101819052505b6060850151156158725760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261579a816192a4565b935060ff16815181106157af576157af619137565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561581e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158469190810190618dd1565b8282615851816192a4565b935060ff168151811061586657615866619137565b60200260200101819052505b60e085015151156159195760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826158bc816192a4565b935060ff16815181106158d1576158d1619137565b60200260200101819052506158ed8560e001516000015161677e565b82826158f8816192a4565b935060ff168151811061590d5761590d619137565b60200260200101819052505b60e085015160200151156159c35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615966816192a4565b935060ff168151811061597b5761597b619137565b60200260200101819052506159978560e001516020015161677e565b82826159a2816192a4565b935060ff16815181106159b7576159b7619137565b60200260200101819052505b60e08501516040015115615a6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615a10816192a4565b935060ff1681518110615a2557615a25619137565b6020026020010181905250615a418560e001516040015161677e565b8282615a4c816192a4565b935060ff1681518110615a6157615a61619137565b60200260200101819052505b60e08501516060015115615b175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615aba816192a4565b935060ff1681518110615acf57615acf619137565b6020026020010181905250615aeb8560e001516060015161677e565b8282615af6816192a4565b935060ff1681518110615b0b57615b0b619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615b3557615b35618b93565b604051908082528060200260200182016040528015615b6857816020015b6060815260200190600190039081615b535790505b50905060005b8260ff168160ff161015615bc157838160ff1681518110615b9157615b91619137565b6020026020010151828260ff1681518110615bae57615bae619137565b6020908102919091010152600101615b6e565b5093505050505b949350505050565b615bf76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615c7d9186910161932e565b600060405180830381865afa158015615c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615cc29190810190618dd1565b90506000615cd0868361730d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615d009190618657565b6000604051808303816000875af1158015615d1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d479190810190619375565b805190915060030b15801590615d605750602081015151155b8015615d6f5750604081015151155b15614d495781600081518110615d8757615d87619137565b602002602001015160405160200161439e919061942b565b60606000615dd48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615e0b9082905b90617462565b15615f68576000615e8882615e8284615e7c615e4e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617489565b906174eb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615eec908290617462565b15615f5657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f53905b8290617570565b90505b615f5f81617596565b925050506142cb565b8215615f8157848460405160200161439e929190619617565b50506040805160208101909152600081526142cb565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615fc157505050565b6000615fce8484846175ff565b90506000615fdb82615bd0565b602081015181519192509060030b1580156160775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261607790604080518082018252600080825260209182015281518083019092528451825280850190820152615e05565b1561608457505050505050565b604082015151156160a457816040015160405160200161439e91906196be565b8060405160200161439e919061971c565b606060006160ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061614f905b829061671d565b156161be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9908390617b9a565b617596565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616220905b8290617c24565b6001036162ed57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261628690615f4c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9905b8390617570565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634c90616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906163b4908390617cbe565b9050600081600183516163c79190618a6a565b815181106163d7576163d7619137565b6020026020010151905061647a6161b961644d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617b9a565b95945050505050565b8260405160200161439e9190619787565b50919050565b606060006164cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061653190616148565b1561653f576142cb81617596565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261659e90616219565b60010361660857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9906162e6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261666790616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906166cf908390617cbe565b905060018151111561670b5780600282516166ea9190618a6a565b815181106166fa576166fa619137565b602002602001015192505050919050565b508260405160200161439e9190619787565b805182516000911115616732575060006141d2565b8151835160208501516000929161674891618a7d565b6167529190618a6a565b9050826020015181036167695760019150506141d2565b82516020840151819020912014905092915050565b6060600061678b83617d63565b600101905060008167ffffffffffffffff8111156167ab576167ab618b93565b6040519080825280601f01601f1916602001820160405280156167d5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846167df57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916168aa905b8290617e45565b156168ea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616949906168a3565b1561698957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169e8906168a3565b15616a2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a87906168a3565b80616aec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616aec906168a3565b15616b2c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b8b906168a3565b80616bf05750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf0906168a3565b15616c3057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c8f906168a3565b80616cf45750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cf4906168a3565b15616d3457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d93906168a3565b80616df85750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616df8906168a3565b15616e3857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e97906168a3565b15616ed757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f36906168a3565b15616f7657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fd5906168a3565b1561701557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617074906168a3565b156170b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617113906168a3565b1561715357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171b2906168a3565b806172175750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617217906168a3565b1561725757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172b6906168a3565b156172f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161439e9290602001619865565b60608060005b8451811015617398578185828151811061732f5761732f619137565b6020026020010151604051602001617348929190618cb0565b6040516020818303038152906040529150600185516173679190618a6a565b8114617390578160405160200161737e91906199ce565b60405160208183030381529060405291505b600101617313565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816173b157905050905083816000815181106173dc576173dc619137565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061743057617430619137565b6020026020010181905250818160028151811061744f5761744f619137565b6020908102919091010152949350505050565b60208083015183518351928401516000936174809291849190617e59565b14159392505050565b604080518082019091526000808252602082015260006174bb8460000151856020015185600001518660200151617f6a565b90508360200151816174cd9190618a6a565b845185906174dc908390618a6a565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156175105750816141d2565b60208083015190840151600191146175375750815160208481015190840151829020919020145b80156175685782518451859061754e908390618a6a565b9052508251602085018051617564908390618a7d565b9052505b509192915050565b604080518082019091526000808252602082015261758f83838361808a565b5092915050565b60606000826000015167ffffffffffffffff8111156175b7576175b7618b93565b6040519080825280601f01601f1916602001820160405280156175e1576020820181803683370190505b509050600060208201905061758f8185602001518660000151618135565b6060600061760b6145c8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161762857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617683906192a4565b935060ff168151811061769857617698619137565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016176e99190619a0f565b604051602081830303815290604052828280617704906192a4565b935060ff168151811061771957617719619137565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617766906192a4565b935060ff168151811061777b5761777b619137565b60200260200101819052508260405160200161779791906191d2565b6040516020818303038152906040528282806177b2906192a4565b935060ff16815181106177c7576177c7619137565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617814906192a4565b935060ff168151811061782957617829619137565b602002602001018190525061783e87846181af565b8282617849816192a4565b935060ff168151811061785e5761785e619137565b60209081029190910101528551511561790a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826178b0816192a4565b935060ff16815181106178c5576178c5619137565b60200260200101819052506178de8660000151846181af565b82826178e9816192a4565b935060ff16815181106178fe576178fe619137565b60200260200101819052505b8560800151156179785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617953816192a4565b935060ff168151811061796857617968619137565b60200260200101819052506179de565b84156179de5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826179bd816192a4565b935060ff16815181106179d2576179d2619137565b60200260200101819052505b60408601515115617a7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617a28816192a4565b935060ff1681518110617a3d57617a3d619137565b60200260200101819052508560400151828280617a59906192a4565b935060ff1681518110617a6e57617a6e619137565b60200260200101819052505b856060015115617ae45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617ac3816192a4565b935060ff1681518110617ad857617ad8619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617b0257617b02618b93565b604051908082528060200260200182016040528015617b3557816020015b6060815260200190600190039081617b205790505b50905060005b8260ff168160ff161015617b8e57838160ff1681518110617b5e57617b5e619137565b6020026020010151828260ff1681518110617b7b57617b7b619137565b6020908102919091010152600101617b3b565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617bbf5750816141d2565b81518351602085015160009291617bd591618a7d565b617bdf9190618a6a565b60208401519091506001908214617c00575082516020840151819020908220145b8015617c1b57835185518690617c17908390618a6a565b9052505b50929392505050565b6000808260000151617c488560000151866020015186600001518760200151617f6a565b617c529190618a7d565b90505b83516020850151617c669190618a7d565b811161758f5781617c7681619a54565b9250508260000151617cad856020015183617c919190618a6a565b8651617c9d9190618a6a565b8386600001518760200151617f6a565b617cb79190618a7d565b9050617c55565b60606000617ccc8484617c24565b617cd7906001618a7d565b67ffffffffffffffff811115617cef57617cef618b93565b604051908082528060200260200182016040528015617d2257816020015b6060815260200190600190039081617d0d5790505b50905060005b8151811015615f9757617d3e6161b98686617570565b828281518110617d5057617d50619137565b6020908102919091010152600101617d28565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617dac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617dd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617df657662386f26fc10000830492506010015b6305f5e1008310617e0e576305f5e100830492506008015b6127108310617e2257612710830492506004015b60648310617e34576064830492506002015b600a83106141d25760010192915050565b6000617e5183836181ef565b159392505050565b600080858411617f605760208411617f0c5760008415617ea4576001617e80866020618a6a565b617e8b906008619a6e565b617e96906002619b6c565b617ea09190618a6a565b1990505b8351811685617eb38989618a7d565b617ebd9190618a6a565b805190935082165b818114617ef757878411617edf5787945050505050615bc8565b83617ee981619b78565b945050828451169050617ec5565b617f018785618a7d565b945050505050615bc8565b838320617f198588618a6a565b617f239087618a7d565b91505b858210617f5e57848220808203617f4b57617f418684618a7d565b9350505050615bc8565b617f56600184618a6a565b925050617f26565b505b5092949350505050565b6000838186851161807557602085116180245760008515617fb6576001617f92876020618a6a565b617f9d906008619a6e565b617fa8906002619b6c565b617fb29190618a6a565b1990505b84518116600087617fc78b8b618a7d565b617fd19190618a6a565b855190915083165b82811461801657818610617ffe57617ff18b8b618a7d565b9650505050505050615bc8565b8561800881619a54565b965050838651169050617fd9565b859650505050505050615bc8565b508383206000905b6180368689618a6a565b8211618073578583208082036180525783945050505050615bc8565b61805d600185618a7d565b935050818061806b90619a54565b92505061802c565b505b61807f8787618a7d565b979650505050505050565b604080518082019091526000808252602082015260006180bc8560000151866020015186600001518760200151617f6a565b6020808701805191860191909152519091506180d89082618a6a565b8352845160208601516180eb9190618a7d565b81036180fa576000855261812c565b835183516181089190618a7d565b85518690618117908390618a6a565b90525083516181269082618a7d565b60208601525b50909392505050565b6020811061816d578151835261814c602084618a7d565b9250618159602083618a7d565b9150618166602082618a6a565b9050618135565b600019811561819c576001618183836020618a6a565b61818f90610100619b6c565b6181999190618a6a565b90505b9151835183169219169190911790915250565b606060006181bd848461469b565b80516020808301516040519394506181d793909101619b8f565b60405160208183030381529060405291505092915050565b8151815160009190811115618202575081515b6020808501519084015160005b838110156182bb578251825180821461828b57600019602087101561826a5760018461823c896020618a6a565b6182469190618a7d565b618251906008619a6e565b61825c906002619b6c565b6182669190618a6a565b1990505b81811683821681810391146182885797506141d29650505050505050565b50505b618296602086618a7d565b94506182a3602085618a7d565b935050506020816182b49190618a7d565b905061820f565b5084518651614d499190619be7565b610b6780619c0883390190565b61053f8061a76f83390190565b61106f8061acae83390190565b6119e88061bd1d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618341618346565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016183416040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156183f85783516001600160a01b03168352602093840193909201916001016183d1565b509095945050505050565b60005b8381101561841e578181015183820152602001618406565b50506000910152565b6000815180845261843f816020860160208601618403565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618535577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261851f848651618427565b60209586019590945092909201916001016184e5565b50919750505060209485019492909201915060010161847b565b50929695505050505050565b600081518084526020840193506020830160005b828110156185af5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161856f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526186256040880182618427565b9050602082015191508681036020880152618640818361855b565b9650505060209384019391909101906001016185e1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526186b9858351618427565b9450602093840193919091019060010161867f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261874f604087018261855b565b95505060209384019391909101906001016186f6565b6020815260006141d260208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60008151606084526187b76060850182618427565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a0815260006187f360a08301886187a2565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526188298185618427565b98975050505050505050565b60006020828403121561884757600080fd5b81516001600160a01b03811681146142cb57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618918577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261893960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561896557600080fd5b815180151581146142cb57600080fd5b60808152600061898860808301876187a2565b8560208401526001600160a01b0385166040840152828103606084015261807f8185618427565b6000602082840312156189c157600080fd5b5051919050565b60a0815260006189db60a0830187618427565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261807f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156141d2576141d2618a3b565b808201808211156141d2576141d2618a3b565b600181811c90821680618aa457607f821691505b602082108103616494577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0383168152604060208201526000615bc86040830184618427565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618b3781601a850160208801618403565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618b7481601c840160208801618403565b01601c01949350505050565b6020815260006142cb6020830184618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715618be557618be5618b93565b60405290565b60008067ffffffffffffffff841115618c0657618c06618b93565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618c3557618c35618b93565b604052838152905080828401851015618c4d57600080fd5b615f97846020830185618403565b600082601f830112618c6c57600080fd5b6142cb83835160208501618beb565b600060208284031215618c8d57600080fd5b815167ffffffffffffffff811115618ca457600080fd5b6141ce84828501618c5b565b60008351618cc2818460208801618403565b835190830190618cd6818360208801618403565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618d1781601a850160208801618403565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618d54816033840160208801618403565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006142cb6080830184618427565b600060208284031215618de357600080fd5b815167ffffffffffffffff811115618dfa57600080fd5b8201601f81018413618e0b57600080fd5b6141ce84825160208401618beb565b60008551618e2c818460208a01618403565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618e66816001840160208a01618403565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618ea4816002840160208901618403565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618ee6816002840160208801618403565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618f316040830184618427565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618fa881601f850160208701618403565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006190156040830184618427565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006190676040830184618427565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516190de816014850160208701618403565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006191256040830185618427565b82810360208401526142c78185618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161919e816001850160208701618403565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516191e4818460208701618403565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161929781604b850160208701618403565b91909101604b0192915050565b600060ff821660ff81036192ba576192ba618a3b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006142cb6080830184618427565b60006020828403121561938757600080fd5b815167ffffffffffffffff81111561939e57600080fd5b8201606081850312156193b057600080fd5b6193b8618bc2565b81518060030b81146193c957600080fd5b8152602082015167ffffffffffffffff8111156193e557600080fd5b6193f186828501618c5b565b602083015250604082015167ffffffffffffffff81111561941157600080fd5b61941d86828501618c5b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619489816021850160208701618403565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619675816021850160208801618403565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516196b281602e840160208801618403565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161977a816022850160208701618403565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516197bf81600e850160208701618403565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161989d816018850160208801618403565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516198da81601c840160208801618403565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516199e0818460208701618403565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619a4781601c850160208701618403565b91909101601c0192915050565b60006000198203619a6757619a67618a3b565b5060010190565b80820281158282048414176141d2576141d2618a3b565b6001815b6001841115619ac057808504811115619aa457619aa4618a3b565b6001841615619ab257908102905b60019390931c928002619a89565b935093915050565b600082619ad7575060016141d2565b81619ae4575060006141d2565b8160018114619afa5760028114619b0457619b20565b60019150506141d2565b60ff841115619b1557619b15618a3b565b50506001821b6141d2565b5060208310610133831016604e8410600b8410161715619b43575081810a6141d2565b619b506000198484619a85565b8060001904821115619b6457619b64618a3b565b029392505050565b60006142cb8383619ac8565b600081619b8757619b87618a3b565b506000190190565b60008351619ba1818460208801618403565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619bdb816001840160208801618403565b01600101949350505050565b818103600083128015838313168383128216171561758f5761758f618a3b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220fe0e1aad663753d177c98b23f407f3d8a0e1bf3d0c057496e10356b6051fae2464736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go b/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go new file mode 100644 index 00000000..877a3427 --- /dev/null +++ b/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc20custody + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC20CustodyErrorsMetaData contains all meta data concerning the IERC20CustodyErrors contract. +var IERC20CustodyErrorsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", +} + +// IERC20CustodyErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyErrorsMetaData.ABI instead. +var IERC20CustodyErrorsABI = IERC20CustodyErrorsMetaData.ABI + +// IERC20CustodyErrors is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyErrors struct { + IERC20CustodyErrorsCaller // Read-only binding to the contract + IERC20CustodyErrorsTransactor // Write-only binding to the contract + IERC20CustodyErrorsFilterer // Log filterer for contract events +} + +// IERC20CustodyErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC20CustodyErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC20CustodyErrorsSession struct { + Contract *IERC20CustodyErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC20CustodyErrorsCallerSession struct { + Contract *IERC20CustodyErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC20CustodyErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC20CustodyErrorsTransactorSession struct { + Contract *IERC20CustodyErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC20CustodyErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyErrorsRaw struct { + Contract *IERC20CustodyErrors // Generic contract binding to access the raw methods on +} + +// IERC20CustodyErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyErrorsCallerRaw struct { + Contract *IERC20CustodyErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// IERC20CustodyErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyErrorsTransactorRaw struct { + Contract *IERC20CustodyErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC20CustodyErrors creates a new instance of IERC20CustodyErrors, bound to a specific deployed contract. +func NewIERC20CustodyErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyErrors, error) { + contract, err := bindIERC20CustodyErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC20CustodyErrors{IERC20CustodyErrorsCaller: IERC20CustodyErrorsCaller{contract: contract}, IERC20CustodyErrorsTransactor: IERC20CustodyErrorsTransactor{contract: contract}, IERC20CustodyErrorsFilterer: IERC20CustodyErrorsFilterer{contract: contract}}, nil +} + +// NewIERC20CustodyErrorsCaller creates a new read-only instance of IERC20CustodyErrors, bound to a specific deployed contract. +func NewIERC20CustodyErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyErrorsCaller, error) { + contract, err := bindIERC20CustodyErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyErrorsCaller{contract: contract}, nil +} + +// NewIERC20CustodyErrorsTransactor creates a new write-only instance of IERC20CustodyErrors, bound to a specific deployed contract. +func NewIERC20CustodyErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyErrorsTransactor, error) { + contract, err := bindIERC20CustodyErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC20CustodyErrorsTransactor{contract: contract}, nil +} + +// NewIERC20CustodyErrorsFilterer creates a new log filterer instance of IERC20CustodyErrors, bound to a specific deployed contract. +func NewIERC20CustodyErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyErrorsFilterer, error) { + contract, err := bindIERC20CustodyErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC20CustodyErrorsFilterer{contract: contract}, nil +} + +// bindIERC20CustodyErrors binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyErrors *IERC20CustodyErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyErrors.Contract.IERC20CustodyErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyErrors *IERC20CustodyErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyErrors.Contract.IERC20CustodyErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyErrors *IERC20CustodyErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyErrors.Contract.IERC20CustodyErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC20CustodyErrors *IERC20CustodyErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC20CustodyErrors *IERC20CustodyErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC20CustodyErrors *IERC20CustodyErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go b/v2/pkg/ierc20custody.sol/ierc20custodyevents.go similarity index 52% rename from v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go rename to v2/pkg/ierc20custody.sol/ierc20custodyevents.go index 752ed7ea..5777242e 100644 --- a/v2/pkg/ierc20custodynew.sol/ierc20custodynewevents.go +++ b/v2/pkg/ierc20custody.sol/ierc20custodyevents.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package ierc20custodynew +package ierc20custody import ( "errors" @@ -29,113 +29,113 @@ var ( _ = abi.ConvertType ) -// IERC20CustodyNewEventsMetaData contains all meta data concerning the IERC20CustodyNewEvents contract. -var IERC20CustodyNewEventsMetaData = &bind.MetaData{ +// IERC20CustodyEventsMetaData contains all meta data concerning the IERC20CustodyEvents contract. +var IERC20CustodyEventsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", } -// IERC20CustodyNewEventsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewEventsMetaData.ABI instead. -var IERC20CustodyNewEventsABI = IERC20CustodyNewEventsMetaData.ABI +// IERC20CustodyEventsABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC20CustodyEventsMetaData.ABI instead. +var IERC20CustodyEventsABI = IERC20CustodyEventsMetaData.ABI -// IERC20CustodyNewEvents is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewEvents struct { - IERC20CustodyNewEventsCaller // Read-only binding to the contract - IERC20CustodyNewEventsTransactor // Write-only binding to the contract - IERC20CustodyNewEventsFilterer // Log filterer for contract events +// IERC20CustodyEvents is an auto generated Go binding around an Ethereum contract. +type IERC20CustodyEvents struct { + IERC20CustodyEventsCaller // Read-only binding to the contract + IERC20CustodyEventsTransactor // Write-only binding to the contract + IERC20CustodyEventsFilterer // Log filterer for contract events } -// IERC20CustodyNewEventsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCaller struct { +// IERC20CustodyEventsCaller is an auto generated read-only Go binding around an Ethereum contract. +type IERC20CustodyEventsCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IERC20CustodyNewEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactor struct { +// IERC20CustodyEventsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC20CustodyEventsTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IERC20CustodyNewEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewEventsFilterer struct { +// IERC20CustodyEventsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC20CustodyEventsFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// IERC20CustodyNewEventsSession is an auto generated Go binding around an Ethereum contract, +// IERC20CustodyEventsSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type IERC20CustodyNewEventsSession struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type IERC20CustodyEventsSession struct { + Contract *IERC20CustodyEvents // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// IERC20CustodyNewEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// IERC20CustodyEventsCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type IERC20CustodyNewEventsCallerSession struct { - Contract *IERC20CustodyNewEventsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type IERC20CustodyEventsCallerSession struct { + Contract *IERC20CustodyEventsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// IERC20CustodyNewEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// IERC20CustodyEventsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type IERC20CustodyNewEventsTransactorSession struct { - Contract *IERC20CustodyNewEventsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type IERC20CustodyEventsTransactorSession struct { + Contract *IERC20CustodyEventsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// IERC20CustodyNewEventsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewEventsRaw struct { - Contract *IERC20CustodyNewEvents // Generic contract binding to access the raw methods on +// IERC20CustodyEventsRaw is an auto generated low-level Go binding around an Ethereum contract. +type IERC20CustodyEventsRaw struct { + Contract *IERC20CustodyEvents // Generic contract binding to access the raw methods on } -// IERC20CustodyNewEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsCallerRaw struct { - Contract *IERC20CustodyNewEventsCaller // Generic read-only contract binding to access the raw methods on +// IERC20CustodyEventsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC20CustodyEventsCallerRaw struct { + Contract *IERC20CustodyEventsCaller // Generic read-only contract binding to access the raw methods on } -// IERC20CustodyNewEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewEventsTransactorRaw struct { - Contract *IERC20CustodyNewEventsTransactor // Generic write-only contract binding to access the raw methods on +// IERC20CustodyEventsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC20CustodyEventsTransactorRaw struct { + Contract *IERC20CustodyEventsTransactor // Generic write-only contract binding to access the raw methods on } -// NewIERC20CustodyNewEvents creates a new instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewEvents, error) { - contract, err := bindIERC20CustodyNewEvents(address, backend, backend, backend) +// NewIERC20CustodyEvents creates a new instance of IERC20CustodyEvents, bound to a specific deployed contract. +func NewIERC20CustodyEvents(address common.Address, backend bind.ContractBackend) (*IERC20CustodyEvents, error) { + contract, err := bindIERC20CustodyEvents(address, backend, backend, backend) if err != nil { return nil, err } - return &IERC20CustodyNewEvents{IERC20CustodyNewEventsCaller: IERC20CustodyNewEventsCaller{contract: contract}, IERC20CustodyNewEventsTransactor: IERC20CustodyNewEventsTransactor{contract: contract}, IERC20CustodyNewEventsFilterer: IERC20CustodyNewEventsFilterer{contract: contract}}, nil + return &IERC20CustodyEvents{IERC20CustodyEventsCaller: IERC20CustodyEventsCaller{contract: contract}, IERC20CustodyEventsTransactor: IERC20CustodyEventsTransactor{contract: contract}, IERC20CustodyEventsFilterer: IERC20CustodyEventsFilterer{contract: contract}}, nil } -// NewIERC20CustodyNewEventsCaller creates a new read-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewEventsCaller, error) { - contract, err := bindIERC20CustodyNewEvents(address, caller, nil, nil) +// NewIERC20CustodyEventsCaller creates a new read-only instance of IERC20CustodyEvents, bound to a specific deployed contract. +func NewIERC20CustodyEventsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyEventsCaller, error) { + contract, err := bindIERC20CustodyEvents(address, caller, nil, nil) if err != nil { return nil, err } - return &IERC20CustodyNewEventsCaller{contract: contract}, nil + return &IERC20CustodyEventsCaller{contract: contract}, nil } -// NewIERC20CustodyNewEventsTransactor creates a new write-only instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewEventsTransactor, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, transactor, nil) +// NewIERC20CustodyEventsTransactor creates a new write-only instance of IERC20CustodyEvents, bound to a specific deployed contract. +func NewIERC20CustodyEventsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyEventsTransactor, error) { + contract, err := bindIERC20CustodyEvents(address, nil, transactor, nil) if err != nil { return nil, err } - return &IERC20CustodyNewEventsTransactor{contract: contract}, nil + return &IERC20CustodyEventsTransactor{contract: contract}, nil } -// NewIERC20CustodyNewEventsFilterer creates a new log filterer instance of IERC20CustodyNewEvents, bound to a specific deployed contract. -func NewIERC20CustodyNewEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewEventsFilterer, error) { - contract, err := bindIERC20CustodyNewEvents(address, nil, nil, filterer) +// NewIERC20CustodyEventsFilterer creates a new log filterer instance of IERC20CustodyEvents, bound to a specific deployed contract. +func NewIERC20CustodyEventsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyEventsFilterer, error) { + contract, err := bindIERC20CustodyEvents(address, nil, nil, filterer) if err != nil { return nil, err } - return &IERC20CustodyNewEventsFilterer{contract: contract}, nil + return &IERC20CustodyEventsFilterer{contract: contract}, nil } -// bindIERC20CustodyNewEvents binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewEventsMetaData.GetAbi() +// bindIERC20CustodyEvents binds a generic wrapper to an already deployed contract. +func bindIERC20CustodyEvents(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC20CustodyEventsMetaData.GetAbi() if err != nil { return nil, err } @@ -146,43 +146,43 @@ func bindIERC20CustodyNewEvents(address common.Address, caller bind.ContractCall // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsCaller.contract.Call(opts, result, method, params...) +func (_IERC20CustodyEvents *IERC20CustodyEventsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyEvents.Contract.IERC20CustodyEventsCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transfer(opts) +func (_IERC20CustodyEvents *IERC20CustodyEventsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyEvents.Contract.IERC20CustodyEventsTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.IERC20CustodyNewEventsTransactor.contract.Transact(opts, method, params...) +func (_IERC20CustodyEvents *IERC20CustodyEventsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyEvents.Contract.IERC20CustodyEventsTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewEvents.Contract.contract.Call(opts, result, method, params...) +func (_IERC20CustodyEvents *IERC20CustodyEventsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC20CustodyEvents.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transfer(opts) +func (_IERC20CustodyEvents *IERC20CustodyEventsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC20CustodyEvents.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewEvents.Contract.contract.Transact(opts, method, params...) +func (_IERC20CustodyEvents *IERC20CustodyEventsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC20CustodyEvents.Contract.contract.Transact(opts, method, params...) } -// IERC20CustodyNewEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawIterator struct { - Event *IERC20CustodyNewEventsWithdraw // Event containing the contract specifics and raw log +// IERC20CustodyEventsWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdrawIterator struct { + Event *IERC20CustodyEventsWithdraw // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -196,7 +196,7 @@ type IERC20CustodyNewEventsWithdrawIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { +func (it *IERC20CustodyEventsWithdrawIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -205,7 +205,7 @@ func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) + it.Event = new(IERC20CustodyEventsWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -220,7 +220,7 @@ func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdraw) + it.Event = new(IERC20CustodyEventsWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -236,19 +236,19 @@ func (it *IERC20CustodyNewEventsWithdrawIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawIterator) Error() error { +func (it *IERC20CustodyEventsWithdrawIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IERC20CustodyNewEventsWithdrawIterator) Close() error { +func (it *IERC20CustodyEventsWithdrawIterator) Close() error { it.sub.Unsubscribe() return nil } -// IERC20CustodyNewEventsWithdraw represents a Withdraw event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdraw struct { +// IERC20CustodyEventsWithdraw represents a Withdraw event raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdraw struct { Token common.Address To common.Address Amount *big.Int @@ -258,7 +258,7 @@ type IERC20CustodyNewEventsWithdraw struct { // FilterWithdraw is a free log retrieval operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawIterator, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyEventsWithdrawIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -269,17 +269,17 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdraw(op toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.FilterLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } - return &IERC20CustodyNewEventsWithdrawIterator{contract: _IERC20CustodyNewEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil + return &IERC20CustodyEventsWithdrawIterator{contract: _IERC20CustodyEvents.contract, event: "Withdraw", logs: logs, sub: sub}, nil } // WatchWithdraw is a free log subscription operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IERC20CustodyEventsWithdraw, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -290,7 +290,7 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opt toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.WatchLogs(opts, "Withdraw", tokenRule, toRule) if err != nil { return nil, err } @@ -300,8 +300,8 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { + event := new(IERC20CustodyEventsWithdraw) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { return err } event.Raw = log @@ -325,18 +325,18 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdraw(opt // ParseWithdraw is a log parse operation binding the contract event 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb. // // Solidity: event Withdraw(address indexed token, address indexed to, uint256 amount) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyNewEventsWithdraw, error) { - event := new(IERC20CustodyNewEventsWithdraw) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) ParseWithdraw(log types.Log) (*IERC20CustodyEventsWithdraw, error) { + event := new(IERC20CustodyEventsWithdraw) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "Withdraw", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IERC20CustodyNewEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCallIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndCall // Event containing the contract specifics and raw log +// IERC20CustodyEventsWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdrawAndCallIterator struct { + Event *IERC20CustodyEventsWithdrawAndCall // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -350,7 +350,7 @@ type IERC20CustodyNewEventsWithdrawAndCallIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { +func (it *IERC20CustodyEventsWithdrawAndCallIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -359,7 +359,7 @@ func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + it.Event = new(IERC20CustodyEventsWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -374,7 +374,7 @@ func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndCall) + it.Event = new(IERC20CustodyEventsWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -390,19 +390,19 @@ func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Error() error { +func (it *IERC20CustodyEventsWithdrawAndCallIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IERC20CustodyNewEventsWithdrawAndCallIterator) Close() error { +func (it *IERC20CustodyEventsWithdrawAndCallIterator) Close() error { it.sub.Unsubscribe() return nil } -// IERC20CustodyNewEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndCall struct { +// IERC20CustodyEventsWithdrawAndCall represents a WithdrawAndCall event raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdrawAndCall struct { Token common.Address To common.Address Amount *big.Int @@ -413,7 +413,7 @@ type IERC20CustodyNewEventsWithdrawAndCall struct { // FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndCallIterator, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyEventsWithdrawAndCallIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -424,17 +424,17 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAnd toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.FilterLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } - return &IERC20CustodyNewEventsWithdrawAndCallIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil + return &IERC20CustodyEventsWithdrawAndCallIterator{contract: _IERC20CustodyEvents.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil } // WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *IERC20CustodyEventsWithdrawAndCall, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -445,7 +445,7 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndC toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.WatchLogs(opts, "WithdrawAndCall", tokenRule, toRule) if err != nil { return nil, err } @@ -455,8 +455,8 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndC select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + event := new(IERC20CustodyEventsWithdrawAndCall) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return err } event.Raw = log @@ -480,18 +480,18 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndC // ParseWithdrawAndCall is a log parse operation binding the contract event 0x85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e. // // Solidity: event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyNewEventsWithdrawAndCall, error) { - event := new(IERC20CustodyNewEventsWithdrawAndCall) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) ParseWithdrawAndCall(log types.Log) (*IERC20CustodyEventsWithdrawAndCall, error) { + event := new(IERC20CustodyEventsWithdrawAndCall) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return nil, err } event.Raw = log return event, nil } -// IERC20CustodyNewEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { - Event *IERC20CustodyNewEventsWithdrawAndRevert // Event containing the contract specifics and raw log +// IERC20CustodyEventsWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdrawAndRevertIterator struct { + Event *IERC20CustodyEventsWithdrawAndRevert // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -505,7 +505,7 @@ type IERC20CustodyNewEventsWithdrawAndRevertIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { +func (it *IERC20CustodyEventsWithdrawAndRevertIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -514,7 +514,7 @@ func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + it.Event = new(IERC20CustodyEventsWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -529,7 +529,7 @@ func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IERC20CustodyNewEventsWithdrawAndRevert) + it.Event = new(IERC20CustodyEventsWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -545,19 +545,19 @@ func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Error() error { +func (it *IERC20CustodyEventsWithdrawAndRevertIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IERC20CustodyNewEventsWithdrawAndRevertIterator) Close() error { +func (it *IERC20CustodyEventsWithdrawAndRevertIterator) Close() error { it.sub.Unsubscribe() return nil } -// IERC20CustodyNewEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyNewEvents contract. -type IERC20CustodyNewEventsWithdrawAndRevert struct { +// IERC20CustodyEventsWithdrawAndRevert represents a WithdrawAndRevert event raised by the IERC20CustodyEvents contract. +type IERC20CustodyEventsWithdrawAndRevert struct { Token common.Address To common.Address Amount *big.Int @@ -568,7 +568,7 @@ type IERC20CustodyNewEventsWithdrawAndRevert struct { // FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyNewEventsWithdrawAndRevertIterator, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, token []common.Address, to []common.Address) (*IERC20CustodyEventsWithdrawAndRevertIterator, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -579,17 +579,17 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) FilterWithdrawAnd toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.FilterLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } - return &IERC20CustodyNewEventsWithdrawAndRevertIterator{contract: _IERC20CustodyNewEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil + return &IERC20CustodyEventsWithdrawAndRevertIterator{contract: _IERC20CustodyEvents.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil } // WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyNewEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *IERC20CustodyEventsWithdrawAndRevert, token []common.Address, to []common.Address) (event.Subscription, error) { var tokenRule []interface{} for _, tokenItem := range token { @@ -600,7 +600,7 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndR toRule = append(toRule, toItem) } - logs, sub, err := _IERC20CustodyNewEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) + logs, sub, err := _IERC20CustodyEvents.contract.WatchLogs(opts, "WithdrawAndRevert", tokenRule, toRule) if err != nil { return nil, err } @@ -610,8 +610,8 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndR select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + event := new(IERC20CustodyEventsWithdrawAndRevert) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return err } event.Raw = log @@ -635,9 +635,9 @@ func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) WatchWithdrawAndR // ParseWithdrawAndRevert is a log parse operation binding the contract event 0xb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8. // // Solidity: event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data) -func (_IERC20CustodyNewEvents *IERC20CustodyNewEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyNewEventsWithdrawAndRevert, error) { - event := new(IERC20CustodyNewEventsWithdrawAndRevert) - if err := _IERC20CustodyNewEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { +func (_IERC20CustodyEvents *IERC20CustodyEventsFilterer) ParseWithdrawAndRevert(log types.Log) (*IERC20CustodyEventsWithdrawAndRevert, error) { + event := new(IERC20CustodyEventsWithdrawAndRevert) + if err := _IERC20CustodyEvents.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return nil, err } event.Raw = log diff --git a/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go b/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go deleted file mode 100644 index 2d0991e1..00000000 --- a/v2/pkg/ierc20custodynew.sol/ierc20custodynewerrors.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ierc20custodynew - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// IERC20CustodyNewErrorsMetaData contains all meta data concerning the IERC20CustodyNewErrors contract. -var IERC20CustodyNewErrorsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", -} - -// IERC20CustodyNewErrorsABI is the input ABI used to generate the binding from. -// Deprecated: Use IERC20CustodyNewErrorsMetaData.ABI instead. -var IERC20CustodyNewErrorsABI = IERC20CustodyNewErrorsMetaData.ABI - -// IERC20CustodyNewErrors is an auto generated Go binding around an Ethereum contract. -type IERC20CustodyNewErrors struct { - IERC20CustodyNewErrorsCaller // Read-only binding to the contract - IERC20CustodyNewErrorsTransactor // Write-only binding to the contract - IERC20CustodyNewErrorsFilterer // Log filterer for contract events -} - -// IERC20CustodyNewErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type IERC20CustodyNewErrorsFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// IERC20CustodyNewErrorsSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type IERC20CustodyNewErrorsSession struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type IERC20CustodyNewErrorsCallerSession struct { - Contract *IERC20CustodyNewErrorsCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// IERC20CustodyNewErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type IERC20CustodyNewErrorsTransactorSession struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// IERC20CustodyNewErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsRaw struct { - Contract *IERC20CustodyNewErrors // Generic contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsCallerRaw struct { - Contract *IERC20CustodyNewErrorsCaller // Generic read-only contract binding to access the raw methods on -} - -// IERC20CustodyNewErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type IERC20CustodyNewErrorsTransactorRaw struct { - Contract *IERC20CustodyNewErrorsTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewIERC20CustodyNewErrors creates a new instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrors(address common.Address, backend bind.ContractBackend) (*IERC20CustodyNewErrors, error) { - contract, err := bindIERC20CustodyNewErrors(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrors{IERC20CustodyNewErrorsCaller: IERC20CustodyNewErrorsCaller{contract: contract}, IERC20CustodyNewErrorsTransactor: IERC20CustodyNewErrorsTransactor{contract: contract}, IERC20CustodyNewErrorsFilterer: IERC20CustodyNewErrorsFilterer{contract: contract}}, nil -} - -// NewIERC20CustodyNewErrorsCaller creates a new read-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsCaller(address common.Address, caller bind.ContractCaller) (*IERC20CustodyNewErrorsCaller, error) { - contract, err := bindIERC20CustodyNewErrors(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsCaller{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsTransactor creates a new write-only instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20CustodyNewErrorsTransactor, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsTransactor{contract: contract}, nil -} - -// NewIERC20CustodyNewErrorsFilterer creates a new log filterer instance of IERC20CustodyNewErrors, bound to a specific deployed contract. -func NewIERC20CustodyNewErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20CustodyNewErrorsFilterer, error) { - contract, err := bindIERC20CustodyNewErrors(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &IERC20CustodyNewErrorsFilterer{contract: contract}, nil -} - -// bindIERC20CustodyNewErrors binds a generic wrapper to an already deployed contract. -func bindIERC20CustodyNewErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := IERC20CustodyNewErrorsMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.IERC20CustodyNewErrorsTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _IERC20CustodyNewErrors.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_IERC20CustodyNewErrors *IERC20CustodyNewErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _IERC20CustodyNewErrors.Contract.contract.Transact(opts, method, params...) -} diff --git a/v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go similarity index 53% rename from v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go rename to v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go index 526da37d..8ad817f8 100644 --- a/v2/pkg/zetaconnectornewbase.sol/zetaconnectornewbase.go +++ b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package zetaconnectornewbase +package zetaconnectorbase import ( "errors" @@ -29,113 +29,113 @@ var ( _ = abi.ConvertType ) -// ZetaConnectorNewBaseMetaData contains all meta data concerning the ZetaConnectorNewBase contract. -var ZetaConnectorNewBaseMetaData = &bind.MetaData{ +// ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. +var ZetaConnectorBaseMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", } -// ZetaConnectorNewBaseABI is the input ABI used to generate the binding from. -// Deprecated: Use ZetaConnectorNewBaseMetaData.ABI instead. -var ZetaConnectorNewBaseABI = ZetaConnectorNewBaseMetaData.ABI +// ZetaConnectorBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaConnectorBaseMetaData.ABI instead. +var ZetaConnectorBaseABI = ZetaConnectorBaseMetaData.ABI -// ZetaConnectorNewBase is an auto generated Go binding around an Ethereum contract. -type ZetaConnectorNewBase struct { - ZetaConnectorNewBaseCaller // Read-only binding to the contract - ZetaConnectorNewBaseTransactor // Write-only binding to the contract - ZetaConnectorNewBaseFilterer // Log filterer for contract events +// ZetaConnectorBase is an auto generated Go binding around an Ethereum contract. +type ZetaConnectorBase struct { + ZetaConnectorBaseCaller // Read-only binding to the contract + ZetaConnectorBaseTransactor // Write-only binding to the contract + ZetaConnectorBaseFilterer // Log filterer for contract events } -// ZetaConnectorNewBaseCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseCaller struct { +// ZetaConnectorBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaConnectorBaseCaller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZetaConnectorNewBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseTransactor struct { +// ZetaConnectorBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaConnectorBaseTransactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZetaConnectorNewBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZetaConnectorNewBaseFilterer struct { +// ZetaConnectorBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaConnectorBaseFilterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZetaConnectorNewBaseSession is an auto generated Go binding around an Ethereum contract, +// ZetaConnectorBaseSession is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ZetaConnectorNewBaseSession struct { - Contract *ZetaConnectorNewBase // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ZetaConnectorBaseSession struct { + Contract *ZetaConnectorBase // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ZetaConnectorNewBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ZetaConnectorBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ZetaConnectorNewBaseCallerSession struct { - Contract *ZetaConnectorNewBaseCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ZetaConnectorBaseCallerSession struct { + Contract *ZetaConnectorBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ZetaConnectorNewBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ZetaConnectorBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ZetaConnectorNewBaseTransactorSession struct { - Contract *ZetaConnectorNewBaseTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ZetaConnectorBaseTransactorSession struct { + Contract *ZetaConnectorBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ZetaConnectorNewBaseRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZetaConnectorNewBaseRaw struct { - Contract *ZetaConnectorNewBase // Generic contract binding to access the raw methods on +// ZetaConnectorBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaConnectorBaseRaw struct { + Contract *ZetaConnectorBase // Generic contract binding to access the raw methods on } -// ZetaConnectorNewBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseCallerRaw struct { - Contract *ZetaConnectorNewBaseCaller // Generic read-only contract binding to access the raw methods on +// ZetaConnectorBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaConnectorBaseCallerRaw struct { + Contract *ZetaConnectorBaseCaller // Generic read-only contract binding to access the raw methods on } -// ZetaConnectorNewBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZetaConnectorNewBaseTransactorRaw struct { - Contract *ZetaConnectorNewBaseTransactor // Generic write-only contract binding to access the raw methods on +// ZetaConnectorBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaConnectorBaseTransactorRaw struct { + Contract *ZetaConnectorBaseTransactor // Generic write-only contract binding to access the raw methods on } -// NewZetaConnectorNewBase creates a new instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorNewBase, error) { - contract, err := bindZetaConnectorNewBase(address, backend, backend, backend) +// NewZetaConnectorBase creates a new instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBase(address common.Address, backend bind.ContractBackend) (*ZetaConnectorBase, error) { + contract, err := bindZetaConnectorBase(address, backend, backend, backend) if err != nil { return nil, err } - return &ZetaConnectorNewBase{ZetaConnectorNewBaseCaller: ZetaConnectorNewBaseCaller{contract: contract}, ZetaConnectorNewBaseTransactor: ZetaConnectorNewBaseTransactor{contract: contract}, ZetaConnectorNewBaseFilterer: ZetaConnectorNewBaseFilterer{contract: contract}}, nil + return &ZetaConnectorBase{ZetaConnectorBaseCaller: ZetaConnectorBaseCaller{contract: contract}, ZetaConnectorBaseTransactor: ZetaConnectorBaseTransactor{contract: contract}, ZetaConnectorBaseFilterer: ZetaConnectorBaseFilterer{contract: contract}}, nil } -// NewZetaConnectorNewBaseCaller creates a new read-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorNewBaseCaller, error) { - contract, err := bindZetaConnectorNewBase(address, caller, nil, nil) +// NewZetaConnectorBaseCaller creates a new read-only instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseCaller(address common.Address, caller bind.ContractCaller) (*ZetaConnectorBaseCaller, error) { + contract, err := bindZetaConnectorBase(address, caller, nil, nil) if err != nil { return nil, err } - return &ZetaConnectorNewBaseCaller{contract: contract}, nil + return &ZetaConnectorBaseCaller{contract: contract}, nil } -// NewZetaConnectorNewBaseTransactor creates a new write-only instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorNewBaseTransactor, error) { - contract, err := bindZetaConnectorNewBase(address, nil, transactor, nil) +// NewZetaConnectorBaseTransactor creates a new write-only instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaConnectorBaseTransactor, error) { + contract, err := bindZetaConnectorBase(address, nil, transactor, nil) if err != nil { return nil, err } - return &ZetaConnectorNewBaseTransactor{contract: contract}, nil + return &ZetaConnectorBaseTransactor{contract: contract}, nil } -// NewZetaConnectorNewBaseFilterer creates a new log filterer instance of ZetaConnectorNewBase, bound to a specific deployed contract. -func NewZetaConnectorNewBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorNewBaseFilterer, error) { - contract, err := bindZetaConnectorNewBase(address, nil, nil, filterer) +// NewZetaConnectorBaseFilterer creates a new log filterer instance of ZetaConnectorBase, bound to a specific deployed contract. +func NewZetaConnectorBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaConnectorBaseFilterer, error) { + contract, err := bindZetaConnectorBase(address, nil, nil, filterer) if err != nil { return nil, err } - return &ZetaConnectorNewBaseFilterer{contract: contract}, nil + return &ZetaConnectorBaseFilterer{contract: contract}, nil } -// bindZetaConnectorNewBase binds a generic wrapper to an already deployed contract. -func bindZetaConnectorNewBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZetaConnectorNewBaseMetaData.GetAbi() +// bindZetaConnectorBase binds a generic wrapper to an already deployed contract. +func bindZetaConnectorBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaConnectorBaseMetaData.GetAbi() if err != nil { return nil, err } @@ -146,46 +146,46 @@ func bindZetaConnectorNewBase(address common.Address, caller bind.ContractCaller // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseCaller.contract.Call(opts, result, method, params...) +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseCaller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transfer(opts) +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ZetaConnectorNewBaseTransactor.contract.Transact(opts, method, params...) +func (_ZetaConnectorBase *ZetaConnectorBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ZetaConnectorBaseTransactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZetaConnectorNewBase.Contract.contract.Call(opts, result, method, params...) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaConnectorBase.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.contract.Transfer(opts) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.contract.Transact(opts, method, params...) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.contract.Transact(opts, method, params...) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) Gateway(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "gateway") + err := _ZetaConnectorBase.contract.Call(opts, &out, "gateway") if err != nil { return *new(common.Address), err @@ -200,23 +200,23 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) Gateway(opts *bind.Call // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Gateway() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Gateway() (common.Address, error) { + return _ZetaConnectorBase.Contract.Gateway(&_ZetaConnectorBase.CallOpts) } // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) Gateway() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.Gateway(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) Gateway() (common.Address, error) { + return _ZetaConnectorBase.Contract.Gateway(&_ZetaConnectorBase.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "tssAddress") + err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddress") if err != nil { return *new(common.Address), err @@ -231,23 +231,23 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) TssAddress(opts *bind.C // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) } // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.TssAddress(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddress() (common.Address, error) { + return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) } // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZetaConnectorNewBase.contract.Call(opts, &out, "zetaToken") + err := _ZetaConnectorBase.contract.Call(opts, &out, "zetaToken") if err != nil { return *new(common.Address), err @@ -262,104 +262,104 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCaller) ZetaToken(opts *bind.Ca // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) } // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseCallerSession) ZetaToken() (common.Address, error) { - return _ZetaConnectorNewBase.Contract.ZetaToken(&_ZetaConnectorNewBase.CallOpts) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) ZetaToken() (common.Address, error) { + return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) } // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "receiveTokens", amount) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) ReceiveTokens(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "receiveTokens", amount) } // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ReceiveTokens(&_ZetaConnectorBase.TransactOpts, amount) } // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.ReceiveTokens(&_ZetaConnectorNewBase.TransactOpts, amount) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) ReceiveTokens(amount *big.Int) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.ReceiveTokens(&_ZetaConnectorBase.TransactOpts, amount) } // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdraw", to, amount, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "withdraw", to, amount, internalSendHash) } // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Withdraw(&_ZetaConnectorBase.TransactOpts, to, amount, internalSendHash) } // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.Withdraw(&_ZetaConnectorNewBase.TransactOpts, to, amount, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Withdraw(&_ZetaConnectorBase.TransactOpts, to, amount, internalSendHash) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // // Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // // Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.WithdrawAndCall(&_ZetaConnectorBase.TransactOpts, to, amount, data, internalSendHash) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // // Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndCall(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.WithdrawAndCall(&_ZetaConnectorBase.TransactOpts, to, amount, data, internalSendHash) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. // // Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. // // Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.WithdrawAndRevert(&_ZetaConnectorBase.TransactOpts, to, amount, data, internalSendHash) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x02d5c899. // // Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNewBase.Contract.WithdrawAndRevert(&_ZetaConnectorNewBase.TransactOpts, to, amount, data, internalSendHash) +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.WithdrawAndRevert(&_ZetaConnectorBase.TransactOpts, to, amount, data, internalSendHash) } -// ZetaConnectorNewBaseWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawIterator struct { - Event *ZetaConnectorNewBaseWithdraw // Event containing the contract specifics and raw log +// ZetaConnectorBaseWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdrawIterator struct { + Event *ZetaConnectorBaseWithdraw // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -373,7 +373,7 @@ type ZetaConnectorNewBaseWithdrawIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { +func (it *ZetaConnectorBaseWithdrawIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -382,7 +382,7 @@ func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdraw) + it.Event = new(ZetaConnectorBaseWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -397,7 +397,7 @@ func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdraw) + it.Event = new(ZetaConnectorBaseWithdraw) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -413,19 +413,19 @@ func (it *ZetaConnectorNewBaseWithdrawIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawIterator) Error() error { +func (it *ZetaConnectorBaseWithdrawIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZetaConnectorNewBaseWithdrawIterator) Close() error { +func (it *ZetaConnectorBaseWithdrawIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZetaConnectorNewBaseWithdraw represents a Withdraw event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdraw struct { +// ZetaConnectorBaseWithdraw represents a Withdraw event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdraw struct { To common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos @@ -434,31 +434,31 @@ type ZetaConnectorNewBaseWithdraw struct { // FilterWithdraw is a free log retrieval operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. // // Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawIterator, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterWithdraw(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorBaseWithdrawIterator, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "Withdraw", toRule) + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Withdraw", toRule) if err != nil { return nil, err } - return &ZetaConnectorNewBaseWithdrawIterator{contract: _ZetaConnectorNewBase.contract, event: "Withdraw", logs: logs, sub: sub}, nil + return &ZetaConnectorBaseWithdrawIterator{contract: _ZetaConnectorBase.contract, event: "Withdraw", logs: logs, sub: sub}, nil } // WatchWithdraw is a free log subscription operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. // // Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdraw, to []common.Address) (event.Subscription, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseWithdraw, to []common.Address) (event.Subscription, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "Withdraw", toRule) + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Withdraw", toRule) if err != nil { return nil, err } @@ -468,8 +468,8 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdraw(opts *b select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdraw) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { + event := new(ZetaConnectorBaseWithdraw) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Withdraw", log); err != nil { return err } event.Raw = log @@ -493,18 +493,18 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdraw(opts *b // ParseWithdraw is a log parse operation binding the contract event 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364. // // Solidity: event Withdraw(address indexed to, uint256 amount) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorNewBaseWithdraw, error) { - event := new(ZetaConnectorNewBaseWithdraw) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "Withdraw", log); err != nil { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseWithdraw(log types.Log) (*ZetaConnectorBaseWithdraw, error) { + event := new(ZetaConnectorBaseWithdraw) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Withdraw", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZetaConnectorNewBaseWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndCallIterator struct { - Event *ZetaConnectorNewBaseWithdrawAndCall // Event containing the contract specifics and raw log +// ZetaConnectorBaseWithdrawAndCallIterator is returned from FilterWithdrawAndCall and is used to iterate over the raw logs and unpacked data for WithdrawAndCall events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdrawAndCallIterator struct { + Event *ZetaConnectorBaseWithdrawAndCall // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -518,7 +518,7 @@ type ZetaConnectorNewBaseWithdrawAndCallIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { +func (it *ZetaConnectorBaseWithdrawAndCallIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -527,7 +527,7 @@ func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) + it.Event = new(ZetaConnectorBaseWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -542,7 +542,7 @@ func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndCall) + it.Event = new(ZetaConnectorBaseWithdrawAndCall) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -558,19 +558,19 @@ func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Error() error { +func (it *ZetaConnectorBaseWithdrawAndCallIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZetaConnectorNewBaseWithdrawAndCallIterator) Close() error { +func (it *ZetaConnectorBaseWithdrawAndCallIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZetaConnectorNewBaseWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndCall struct { +// ZetaConnectorBaseWithdrawAndCall represents a WithdrawAndCall event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdrawAndCall struct { To common.Address Amount *big.Int Data []byte @@ -580,31 +580,31 @@ type ZetaConnectorNewBaseWithdrawAndCall struct { // FilterWithdrawAndCall is a free log retrieval operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. // // Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndCallIterator, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterWithdrawAndCall(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorBaseWithdrawAndCallIterator, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndCall", toRule) + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "WithdrawAndCall", toRule) if err != nil { return nil, err } - return &ZetaConnectorNewBaseWithdrawAndCallIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil + return &ZetaConnectorBaseWithdrawAndCallIterator{contract: _ZetaConnectorBase.contract, event: "WithdrawAndCall", logs: logs, sub: sub}, nil } // WatchWithdrawAndCall is a free log subscription operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. // // Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndCall, to []common.Address) (event.Subscription, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchWithdrawAndCall(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseWithdrawAndCall, to []common.Address) (event.Subscription, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndCall", toRule) + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "WithdrawAndCall", toRule) if err != nil { return nil, err } @@ -614,8 +614,8 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndCall( select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdrawAndCall) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { + event := new(ZetaConnectorBaseWithdrawAndCall) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return err } event.Raw = log @@ -639,18 +639,18 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndCall( // ParseWithdrawAndCall is a log parse operation binding the contract event 0x7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced. // // Solidity: event WithdrawAndCall(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorNewBaseWithdrawAndCall, error) { - event := new(ZetaConnectorNewBaseWithdrawAndCall) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseWithdrawAndCall(log types.Log) (*ZetaConnectorBaseWithdrawAndCall, error) { + event := new(ZetaConnectorBaseWithdrawAndCall) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "WithdrawAndCall", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZetaConnectorNewBaseWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndRevertIterator struct { - Event *ZetaConnectorNewBaseWithdrawAndRevert // Event containing the contract specifics and raw log +// ZetaConnectorBaseWithdrawAndRevertIterator is returned from FilterWithdrawAndRevert and is used to iterate over the raw logs and unpacked data for WithdrawAndRevert events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdrawAndRevertIterator struct { + Event *ZetaConnectorBaseWithdrawAndRevert // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -664,7 +664,7 @@ type ZetaConnectorNewBaseWithdrawAndRevertIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { +func (it *ZetaConnectorBaseWithdrawAndRevertIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -673,7 +673,7 @@ func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) + it.Event = new(ZetaConnectorBaseWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -688,7 +688,7 @@ func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZetaConnectorNewBaseWithdrawAndRevert) + it.Event = new(ZetaConnectorBaseWithdrawAndRevert) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -704,19 +704,19 @@ func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Error() error { +func (it *ZetaConnectorBaseWithdrawAndRevertIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZetaConnectorNewBaseWithdrawAndRevertIterator) Close() error { +func (it *ZetaConnectorBaseWithdrawAndRevertIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZetaConnectorNewBaseWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorNewBase contract. -type ZetaConnectorNewBaseWithdrawAndRevert struct { +// ZetaConnectorBaseWithdrawAndRevert represents a WithdrawAndRevert event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseWithdrawAndRevert struct { To common.Address Amount *big.Int Data []byte @@ -726,31 +726,31 @@ type ZetaConnectorNewBaseWithdrawAndRevert struct { // FilterWithdrawAndRevert is a free log retrieval operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. // // Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorNewBaseWithdrawAndRevertIterator, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterWithdrawAndRevert(opts *bind.FilterOpts, to []common.Address) (*ZetaConnectorBaseWithdrawAndRevertIterator, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "WithdrawAndRevert", toRule) if err != nil { return nil, err } - return &ZetaConnectorNewBaseWithdrawAndRevertIterator{contract: _ZetaConnectorNewBase.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil + return &ZetaConnectorBaseWithdrawAndRevertIterator{contract: _ZetaConnectorBase.contract, event: "WithdrawAndRevert", logs: logs, sub: sub}, nil } // WatchWithdrawAndRevert is a free log subscription operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. // // Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNewBaseWithdrawAndRevert, to []common.Address) (event.Subscription, error) { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchWithdrawAndRevert(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseWithdrawAndRevert, to []common.Address) (event.Subscription, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZetaConnectorNewBase.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "WithdrawAndRevert", toRule) if err != nil { return nil, err } @@ -760,8 +760,8 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndRever select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { + event := new(ZetaConnectorBaseWithdrawAndRevert) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return err } event.Raw = log @@ -785,9 +785,9 @@ func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) WatchWithdrawAndRever // ParseWithdrawAndRevert is a log parse operation binding the contract event 0xba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe. // // Solidity: event WithdrawAndRevert(address indexed to, uint256 amount, bytes data) -func (_ZetaConnectorNewBase *ZetaConnectorNewBaseFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorNewBaseWithdrawAndRevert, error) { - event := new(ZetaConnectorNewBaseWithdrawAndRevert) - if err := _ZetaConnectorNewBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseWithdrawAndRevert(log types.Log) (*ZetaConnectorBaseWithdrawAndRevert, error) { + event := new(ZetaConnectorBaseWithdrawAndRevert) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "WithdrawAndRevert", log); err != nil { return nil, err } event.Raw = log diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go index ac4fff8e..da2d29c8 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index 24ee01fd..a0695527 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061c3288061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e6109bf565b60405161019b9190617991565b60405180910390f35b6101ac610a21565b60405161019b9190617a2d565b610184610b63565b61018e611336565b61018e611396565b6101846113f6565b610184611a52565b6101e9611c48565b60405161019b9190617b93565b6101fe611dca565b60405161019b9190617c31565b610184611e9a565b61021b612055565b60405161019b9190617ca8565b610184612150565b61021b612358565b6101fe612453565b610248612523565b604051901515815260200161019b565b6101846125f7565b610184612a0d565b6101846130cd565b61018e613733565b601f546102489060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516102d7906178a4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561035b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015261043f919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613793565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906104c3906178b1565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104f6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061054b906178be565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610587573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105cc906178cb565b604051809103906000f0801580156105e8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f9575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b43578382906000526020600020018054610ab690617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae290617d3f565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b505050508152505081526020019060010190610a45565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c629190617d8c565b9050610c6f8160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce39190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610dc6916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610fe29089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110c892909116908a9089908b90600401617de6565b600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190617d8c565b905061117981886137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190617d8c565b9050611202816111fd8a87617e4e565b6137b2565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190617d8c565b90506112a98160006137b2565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190617d8c565b905061132a8160006137b2565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361149793921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190617d8c565b90506114e58160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161163c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061183b9089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061192192909116908a9089908b90600401617de6565b600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190617d8c565b90506119d28160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190617d8c565b905061120281856137b2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611c119290911690879086908890600401617de6565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5783829060005260206000209060020201604051806040016040529081600082018054611c9f90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ccb90617d3f565b8015611d185780601f10611ced57610100808354040283529160200191611d18565b820191906000526020600020905b815481529060010190602001808311611cfb57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d5f5790505b50505050508152505081526020019060010190611c6c565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5a578382906000526020600020018054611e0d90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990617d3f565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b505050505081526020019060010190611dee565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561213857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120e55790505b50505050508152505081526020019060010190612079565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611c119290911690879086908890600401617de6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561243b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123e85790505b5050505050815250508152602001906001019061237c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57838290600052602060002001805461249690617d3f565b80601f01602080910402602001604051908101604052809291908181526020018280546124c290617d3f565b801561250f5780601f106124e45761010080835404028352916020019161250f565b820191906000526020600020905b8154815290600101906020018083116124f257829003601f168201915b505050505081526020019060010190612477565b60085460009060ff161561253b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f09190617d8c565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa15801561264b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266f9190617d8c565b905061267c8160006137b2565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161275c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561297057600080fd5b505af1158015612984573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190617d8c565b9050612a0681866137b2565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190617d8c565b9050612b198160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c70916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d82600289617e61565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612ea39089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f8992909116908a9089908b90600401617de6565b600060405180830381600087803b158015612fa357600080fd5b505af1158015612fb7573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190617d8c565b905061303e816111fd60028a617e61565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b29190617d8c565b9050611202816130c360028b617e61565b6111fd9087617e4e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190617d8c565b90506131938160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916132ea916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061340192506001600160a01b03909116908790617e9c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561349757600080fd5b505af11580156134ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906134f6908a908990617dcd565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561358c57600080fd5b505af11580156135a0573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506135e59089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506136cb92909116908a9089908b90600401617de6565b600060405180830381600087803b1580156136e557600080fd5b505af11580156136f9573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161112c565b60606015805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b600061379d6178d8565b6137a8848483613831565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561381d57600080fd5b505afa15801561204d573d6000803e3d6000fd5b60008061383e85846138ac565b90506138a16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161388c929190617e9c565b604051602081830303815290604052856138b8565b9150505b9392505050565b60006138a583836138e6565b60c081015151600090156138dc576138d584848460c00151613901565b90506138a5565b6138d58484613aa7565b60006138f28383613b92565b6138a5838360200151846138b8565b60008061390c613ba2565b9050600061391a8683613c75565b90506000613931826060015183602001518561411b565b905060006139418383898961432d565b9050600061394e826151aa565b602081015181519192509060030b156139c157898260400151604051602001613978929190617ebe565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526139b891600401617f3f565b60405180910390fd5b6000613a046040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615379565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613a57908490600401617f3f565b602060405180830381865afa158015613a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a989190617f52565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613afc908790600401617f3f565b600060405180830381865afa158015613b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b419190810190618063565b90506000613b6f8285604051602001613b5b929190618098565b604051602081830303815290604052615579565b90506001600160a01b0381166137a85784846040516020016139789291906180c7565b613b9e8282600061558c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613c29908490600401618172565b600060405180830381865afa158015613c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6e91908101906181b9565b9250505090565b613ca76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613cf26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613cfb8561568f565b60208201526000613d0b86615a74565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d7591908101906181b9565b86838560200151604051602001613d8f9493929190618202565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613de7908590600401617f3f565b600060405180830381865afa158015613e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e2c91908101906181b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e74908490600401618306565b602060405180830381865afa158015613e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb59190618358565b613eca5781604051602001613978919061837a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f0f90849060040161840c565b600060405180830381865afa158015613f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f5491908101906181b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f9b90849060040161845e565b602060405180830381865afa158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190618358565b15614071576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061402690849060040161845e565b600060405180830381865afa158015614043573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406b91908101906181b9565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161409691906184b0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140c292919061851c565b600060405180830381865afa1580156140df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261410791908101906181b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816141375790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061419757614197618541565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106141eb576141eb618541565b6020026020010181905250846040516020016142079190618570565b6040516020818303038152906040528160028151811061422957614229618541565b60200260200101819052508260405160200161424591906185dc565b6040516020818303038152906040528160038151811061426757614267618541565b6020026020010181905250600061427d826151aa565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061430e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615cf7565b6143235785604051602001613978919061861d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561437d565b511590565b6144f157826020015115614439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016139b8565b8260c00151156144f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016139b8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161450a57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614565906186ae565b935060ff168151811061457a5761457a618541565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145cb91906186cd565b6040516020818303038152906040528282806145e6906186ae565b935060ff16815181106145fb576145fb618541565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614648906186ae565b935060ff168151811061465d5761465d618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806146aa906186ae565b935060ff16815181106146bf576146bf618541565b602002602001018190525087602001518282806146db906186ae565b935060ff16815181106146f0576146f0618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061473d906186ae565b935060ff168151811061475257614752618541565b60209081029190910101528751828261476a816186ae565b935060ff168151811061477f5761477f618541565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806147cc906186ae565b935060ff16815181106147e1576147e1618541565b60200260200101819052506147f546615d58565b8282614800816186ae565b935060ff168151811061481557614815618541565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614862906186ae565b935060ff168151811061487757614877618541565b60200260200101819052508682828061488f906186ae565b935060ff16815181106148a4576148a4618541565b60209081029190910101528551156149cb5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148f5816186ae565b935060ff168151811061490a5761490a618541565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061495a908990600401617f3f565b600060405180830381865afa158015614977573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261499f91908101906181b9565b82826149aa816186ae565b935060ff16815181106149bf576149bf618541565b60200260200101819052505b846020015115614a9b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614a14816186ae565b935060ff1681518110614a2957614a29618541565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a76906186ae565b935060ff1681518110614a8b57614a8b618541565b6020026020010181905250614c62565b614ad36143788660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b665760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b16816186ae565b935060ff1681518110614b2b57614b2b618541565b60200260200101819052508460a00151604051602001614b4b9190618570565b604051602081830303815290604052828280614a76906186ae565b8460c00151158015614ba9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ba790511590565b155b15614c625760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614bed816186ae565b935060ff1681518110614c0257614c02618541565b6020026020010181905250614c1688615df8565b604051602001614c269190618570565b604051602081830303815290604052828280614c41906186ae565b935060ff1681518110614c5657614c56618541565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c9690511590565b614d2b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614cd9816186ae565b935060ff1681518110614cee57614cee618541565b60200260200101819052508460400151828280614d0a906186ae565b935060ff1681518110614d1f57614d1f618541565b60200260200101819052505b606085015115614e4c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d74816186ae565b935060ff1681518110614d8957614d89618541565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614df8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e2091908101906181b9565b8282614e2b816186ae565b935060ff1681518110614e4057614e40618541565b60200260200101819052505b60e08501515115614ef35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e96816186ae565b935060ff1681518110614eab57614eab618541565b6020026020010181905250614ec78560e0015160000151615d58565b8282614ed2816186ae565b935060ff1681518110614ee757614ee7618541565b60200260200101819052505b60e08501516020015115614f9d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614f40816186ae565b935060ff1681518110614f5557614f55618541565b6020026020010181905250614f718560e0015160200151615d58565b8282614f7c816186ae565b935060ff1681518110614f9157614f91618541565b60200260200101819052505b60e085015160400151156150475760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614fea816186ae565b935060ff1681518110614fff57614fff618541565b602002602001018190525061501b8560e0015160400151615d58565b8282615026816186ae565b935060ff168151811061503b5761503b618541565b60200260200101819052505b60e085015160600151156150f15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615094816186ae565b935060ff16815181106150a9576150a9618541565b60200260200101819052506150c58560e0015160600151615d58565b82826150d0816186ae565b935060ff16815181106150e5576150e5618541565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561510f5761510f617f7b565b60405190808252806020026020018201604052801561514257816020015b606081526020019060019003908161512d5790505b50905060005b8260ff168160ff16101561519b57838160ff168151811061516b5761516b618541565b6020026020010151828260ff168151811061518857615188618541565b6020908102919091010152600101615148565b5093505050505b949350505050565b6151d16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161525791869101618738565b600060405180830381865afa158015615274573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261529c91908101906181b9565b905060006152aa86836168e7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152da9190617c31565b6000604051808303816000875af11580156152f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615321919081019061877f565b805190915060030b1580159061533a5750602081015151155b80156153495750604081015151155b15614323578160008151811061536157615361618541565b60200260200101516040516020016139789190618835565b606060006153ae8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153e59082905b90616a3c565b156155425760006154628261545c846154566154288a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a63565b90616ac5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154c6908290616a3c565b1561553057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261552d905b8290616b4a565b90505b61553981616b70565b925050506138a5565b821561555b578484604051602001613978929190618a21565b50506040805160208101909152600081526138a5565b509392505050565b6000808251602084016000f09392505050565b8160a001511561559b57505050565b60006155a8848484616bd9565b905060006155b5826151aa565b602081015181519192509060030b1580156156515750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615651906040805180820182526000808252602091820152815180830190925284518252808501908201526153df565b1561565e57505050505050565b6040820151511561567e5781604001516040516020016139789190618ac8565b806040516020016139789190618b26565b606060006156c48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615729905b8290615cf7565b1561579857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793908390617174565b616b70565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157fa905b82906171fe565b6001036158c757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586090615526565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793905b8390616b4a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261592690615722565b15615a5d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061598e908390617298565b9050600081600183516159a19190617e4e565b815181106159b1576159b1618541565b60200260200101519050615a54615793615a276040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617174565b95945050505050565b826040516020016139789190618b91565b50919050565b60606000615aa98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b0b90615722565b15615b19576138a581616b70565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b78906157f3565b600103615be257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793906158c0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c4190615722565b15615a5d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615ca9908390617298565b9050600181511115615ce5578060028251615cc49190617e4e565b81518110615cd457615cd4618541565b602002602001015192505050919050565b50826040516020016139789190618b91565b805182516000911115615d0c575060006137ac565b81518351602085015160009291615d2291618c6f565b615d2c9190617e4e565b905082602001518103615d435760019150506137ac565b82516020840151819020912014905092915050565b60606000615d658361733d565b600101905060008167ffffffffffffffff811115615d8557615d85617f7b565b6040519080825280601f01601f191660200182016040528015615daf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615db957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e84905b829061741f565b15615ec457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f2390615e7d565b15615f6357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc290615e7d565b1561600257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606190615e7d565b806160c65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160c690615e7d565b1561610657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261616590615e7d565b806161ca5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ca90615e7d565b1561620a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626990615e7d565b806162ce5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ce90615e7d565b1561630e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636d90615e7d565b806163d25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d290615e7d565b1561641257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261647190615e7d565b156164b157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261651090615e7d565b1561655057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165af90615e7d565b156165ef57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261664e90615e7d565b1561668e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ed90615e7d565b1561672d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678c90615e7d565b806167f15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f190615e7d565b1561683157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261689090615e7d565b156168d057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516139789290602001618c82565b60608060005b8451811015616972578185828151811061690957616909618541565b6020026020010151604051602001616922929190618098565b6040516020818303038152906040529150600185516169419190617e4e565b811461696a57816040516020016169589190618deb565b60405160208183030381529060405291505b6001016168ed565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161698b57905050905083816000815181106169b6576169b6618541565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616a0a57616a0a618541565b60200260200101819052508181600281518110616a2957616a29618541565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a5a9291849190617433565b14159392505050565b60408051808201909152600080825260208201526000616a958460000151856020015185600001518660200151617544565b9050836020015181616aa79190617e4e565b84518590616ab6908390617e4e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616aea5750816137ac565b6020808301519084015160019114616b115750815160208481015190840151829020919020145b8015616b4257825184518590616b28908390617e4e565b9052508251602085018051616b3e908390618c6f565b9052505b509192915050565b6040805180820190915260008082526020820152616b69838383617664565b5092915050565b60606000826000015167ffffffffffffffff811115616b9157616b91617f7b565b6040519080825280601f01601f191660200182016040528015616bbb576020820181803683370190505b5090506000602082019050616b69818560200151866000015161770f565b60606000616be5613ba2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616c0257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c5d906186ae565b935060ff1681518110616c7257616c72618541565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616cc39190618e2c565b604051602081830303815290604052828280616cde906186ae565b935060ff1681518110616cf357616cf3618541565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616d40906186ae565b935060ff1681518110616d5557616d55618541565b602002602001018190525082604051602001616d7191906185dc565b604051602081830303815290604052828280616d8c906186ae565b935060ff1681518110616da157616da1618541565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616dee906186ae565b935060ff1681518110616e0357616e03618541565b6020026020010181905250616e188784617789565b8282616e23816186ae565b935060ff1681518110616e3857616e38618541565b602090810291909101015285515115616ee45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e8a816186ae565b935060ff1681518110616e9f57616e9f618541565b6020026020010181905250616eb8866000015184617789565b8282616ec3816186ae565b935060ff1681518110616ed857616ed8618541565b60200260200101819052505b856080015115616f525760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616f2d816186ae565b935060ff1681518110616f4257616f42618541565b6020026020010181905250616fb8565b8415616fb85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f97816186ae565b935060ff1681518110616fac57616fac618541565b60200260200101819052505b604086015151156170545760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617002816186ae565b935060ff168151811061701757617017618541565b60200260200101819052508560400151828280617033906186ae565b935060ff168151811061704857617048618541565b60200260200101819052505b8560600151156170be5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261709d816186ae565b935060ff16815181106170b2576170b2618541565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156170dc576170dc617f7b565b60405190808252806020026020018201604052801561710f57816020015b60608152602001906001900390816170fa5790505b50905060005b8260ff168160ff16101561716857838160ff168151811061713857617138618541565b6020026020010151828260ff168151811061715557617155618541565b6020908102919091010152600101617115565b50979650505050505050565b60408051808201909152600080825260208201528151835110156171995750816137ac565b815183516020850151600092916171af91618c6f565b6171b99190617e4e565b602084015190915060019082146171da575082516020840151819020908220145b80156171f5578351855186906171f1908390617e4e565b9052505b50929392505050565b60008082600001516172228560000151866020015186600001518760200151617544565b61722c9190618c6f565b90505b835160208501516172409190618c6f565b8111616b69578161725081618e71565b925050826000015161728785602001518361726b9190617e4e565b86516172779190617e4e565b8386600001518760200151617544565b6172919190618c6f565b905061722f565b606060006172a684846171fe565b6172b1906001618c6f565b67ffffffffffffffff8111156172c9576172c9617f7b565b6040519080825280602002602001820160405280156172fc57816020015b60608152602001906001900390816172e75790505b50905060005b8151811015615571576173186157938686616b4a565b82828151811061732a5761732a618541565b6020908102919091010152600101617302565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617386577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106173b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106173d057662386f26fc10000830492506010015b6305f5e10083106173e8576305f5e100830492506008015b61271083106173fc57612710830492506004015b6064831061740e576064830492506002015b600a83106137ac5760010192915050565b600061742b83836177c9565b159392505050565b60008085841161753a57602084116174e6576000841561747e57600161745a866020617e4e565b617465906008618e8b565b617470906002618f89565b61747a9190617e4e565b1990505b835181168561748d8989618c6f565b6174979190617e4e565b805190935082165b8181146174d1578784116174b957879450505050506151a2565b836174c381618f95565b94505082845116905061749f565b6174db8785618c6f565b9450505050506151a2565b8383206174f38588617e4e565b6174fd9087618c6f565b91505b858210617538578482208082036175255761751b8684618c6f565b93505050506151a2565b617530600184617e4e565b925050617500565b505b5092949350505050565b6000838186851161764f57602085116175fe576000851561759057600161756c876020617e4e565b617577906008618e8b565b617582906002618f89565b61758c9190617e4e565b1990505b845181166000876175a18b8b618c6f565b6175ab9190617e4e565b855190915083165b8281146175f0578186106175d8576175cb8b8b618c6f565b96505050505050506151a2565b856175e281618e71565b9650508386511690506175b3565b8596505050505050506151a2565b508383206000905b6176108689617e4e565b821161764d5785832080820361762c57839450505050506151a2565b617637600185618c6f565b935050818061764590618e71565b925050617606565b505b6176598787618c6f565b979650505050505050565b604080518082019091526000808252602082015260006176968560000151866020015186600001518760200151617544565b6020808701805191860191909152519091506176b29082617e4e565b8352845160208601516176c59190618c6f565b81036176d45760008552617706565b835183516176e29190618c6f565b855186906176f1908390617e4e565b90525083516177009082618c6f565b60208601525b50909392505050565b602081106177475781518352617726602084618c6f565b9250617733602083618c6f565b9150617740602082617e4e565b905061770f565b600019811561777657600161775d836020617e4e565b61776990610100618f89565b6177739190617e4e565b90505b9151835183169219169190911790915250565b606060006177978484613c75565b80516020808301516040519394506177b193909101618fac565b60405160208183030381529060405291505092915050565b81518151600091908111156177dc575081515b6020808501519084015160005b83811015617895578251825180821461786557600019602087101561784457600184617816896020617e4e565b6178209190618c6f565b61782b906008618e8b565b617836906002618f89565b6178409190617e4e565b1990505b81811683821681810391146178625797506137ac9650505050505050565b50505b617870602086618c6f565b945061787d602085618c6f565b9350505060208161788e9190618c6f565b90506177e9565b50845186516143239190619004565b610c9f8061902583390190565b610b4a80619cc483390190565b610d878061a80e83390190565b610d5e8061b59583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161791b617920565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161791b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179d25783516001600160a01b03168352602093840193909201916001016179ab565b509095945050505050565b60005b838110156179f85781810151838201526020016179e0565b50506000910152565b60008151808452617a198160208601602086016179dd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617b0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617af9848651617a01565b6020958601959094509290920191600101617abf565b509197505050602094850194929092019150600101617a55565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b895781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617b49565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bff6040880182617a01565b9050602082015191508681036020880152617c1a8183617b35565b965050506020938401939190910190600101617bbb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c93858351617a01565b94506020938401939190910190600101617c59565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617d296040870182617b35565b9550506020938401939190910190600101617cd0565b600181811c90821680617d5357607f821691505b602082108103615a6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d9e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615a546060830184617a01565b8281526040602082015260006151a26040830184617a01565b6001600160a01b0385168152836020820152608060408201526000617e0e6080830185617a01565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156137ac576137ac617e1f565b600082617e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151a26040830184617a01565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617ef681601a8501602088016179dd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f3381601c8401602088016179dd565b01601c01949350505050565b6020815260006138a56020830184617a01565b600060208284031215617f6457600080fd5b81516001600160a01b03811681146138a557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617fcd57617fcd617f7b565b60405290565b60008067ffffffffffffffff841115617fee57617fee617f7b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561801d5761801d617f7b565b60405283815290508082840185101561803557600080fd5b6155718460208301856179dd565b600082601f83011261805457600080fd5b6138a583835160208501617fd3565b60006020828403121561807557600080fd5b815167ffffffffffffffff81111561808c57600080fd5b6137a884828501618043565b600083516180aa8184602088016179dd565b8351908301906180be8183602088016179dd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ff81601a8501602088016179dd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161813c8160338401602088016179dd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138a56080830184617a01565b6000602082840312156181cb57600080fd5b815167ffffffffffffffff8111156181e257600080fd5b8201601f810184136181f357600080fd5b6137a884825160208401617fd3565b60008551618214818460208a016179dd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161824e816001840160208a016179dd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161828c8160028401602089016179dd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516182ce8160028401602088016179dd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006183196040830184617a01565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561836a57600080fd5b815180151581146138a557600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516183b281601f8501602087016179dd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061841f6040830184617a01565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006184716040830184617a01565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516184e88160148501602087016179dd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061852f6040830185617a01565b82810360208401526138a18185617a01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516185a88160018501602087016179dd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516185ee8184602087016179dd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516186a181604b8501602087016179dd565b91909101604b0192915050565b600060ff821660ff81036186c4576186c4617e1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138a56080830184617a01565b60006020828403121561879157600080fd5b815167ffffffffffffffff8111156187a857600080fd5b8201606081850312156187ba57600080fd5b6187c2617faa565b81518060030b81146187d357600080fd5b8152602082015167ffffffffffffffff8111156187ef57600080fd5b6187fb86828501618043565b602083015250604082015167ffffffffffffffff81111561881b57600080fd5b61882786828501618043565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516188938160218501602087016179dd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618a7f8160218501602088016179dd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618abc81602e8401602088016179dd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b848160228501602087016179dd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618bc981600e8501602087016179dd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156137ac576137ac617e1f565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618cba8160188501602088016179dd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618cf781601c8401602088016179dd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618dfd8184602087016179dd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618e6481601c8501602087016179dd565b91909101601c0192915050565b60006000198203618e8457618e84617e1f565b5060010190565b80820281158282048414176137ac576137ac617e1f565b6001815b6001841115618edd57808504811115618ec157618ec1617e1f565b6001841615618ecf57908102905b60019390931c928002618ea6565b935093915050565b600082618ef4575060016137ac565b81618f01575060006137ac565b8160018114618f175760028114618f2157618f3d565b60019150506137ac565b60ff841115618f3257618f32617e1f565b50506001821b6137ac565b5060208310610133831016604e8410600b8410161715618f60575081810a6137ac565b618f6d6000198484618ea2565b8060001904821115618f8157618f81617e1f565b029392505050565b60006138a58383618ee5565b600081618fa457618fa4617e1f565b506000190190565b60008351618fbe8184602088016179dd565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618ff88160018401602088016179dd565b01600101949350505050565b8181036000831280158383131683831282161715616b6957616b69617e1f56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212206c7d17709d0b69a2ea55c6d800efcb900d2422dfe8e6cff6f73e98d3c88267f464736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061c3288061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e6109bf565b60405161019b9190617991565b60405180910390f35b6101ac610a21565b60405161019b9190617a2d565b610184610b63565b61018e611336565b61018e611396565b6101846113f6565b610184611a52565b6101e9611c48565b60405161019b9190617b93565b6101fe611dca565b60405161019b9190617c31565b610184611e9a565b61021b612055565b60405161019b9190617ca8565b610184612150565b61021b612358565b6101fe612453565b610248612523565b604051901515815260200161019b565b6101846125f7565b610184612a0d565b6101846130cd565b61018e613733565b601f546102489060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516102d7906178a4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561035b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015261043f919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613793565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906104c3906178b1565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104f6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061054b906178be565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610587573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105cc906178cb565b604051809103906000f0801580156105e8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f9575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b43578382906000526020600020018054610ab690617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae290617d3f565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b505050508152505081526020019060010190610a45565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c629190617d8c565b9050610c6f8160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce39190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610dc6916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610fe29089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110c892909116908a9089908b90600401617de6565b600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190617d8c565b905061117981886137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190617d8c565b9050611202816111fd8a87617e4e565b6137b2565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190617d8c565b90506112a98160006137b2565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190617d8c565b905061132a8160006137b2565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361149793921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190617d8c565b90506114e58160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161163c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061183b9089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061192192909116908a9089908b90600401617de6565b600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190617d8c565b90506119d28160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190617d8c565b905061120281856137b2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611c119290911690879086908890600401617de6565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5783829060005260206000209060020201604051806040016040529081600082018054611c9f90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ccb90617d3f565b8015611d185780601f10611ced57610100808354040283529160200191611d18565b820191906000526020600020905b815481529060010190602001808311611cfb57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d5f5790505b50505050508152505081526020019060010190611c6c565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5a578382906000526020600020018054611e0d90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990617d3f565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b505050505081526020019060010190611dee565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561213857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120e55790505b50505050508152505081526020019060010190612079565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611c119290911690879086908890600401617de6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561243b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123e85790505b5050505050815250508152602001906001019061237c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57838290600052602060002001805461249690617d3f565b80601f01602080910402602001604051908101604052809291908181526020018280546124c290617d3f565b801561250f5780601f106124e45761010080835404028352916020019161250f565b820191906000526020600020905b8154815290600101906020018083116124f257829003601f168201915b505050505081526020019060010190612477565b60085460009060ff161561253b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f09190617d8c565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa15801561264b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266f9190617d8c565b905061267c8160006137b2565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161275c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561297057600080fd5b505af1158015612984573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190617d8c565b9050612a0681866137b2565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190617d8c565b9050612b198160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c70916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d82600289617e61565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612ea39089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f8992909116908a9089908b90600401617de6565b600060405180830381600087803b158015612fa357600080fd5b505af1158015612fb7573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190617d8c565b905061303e816111fd60028a617e61565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b29190617d8c565b9050611202816130c360028b617e61565b6111fd9087617e4e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190617d8c565b90506131938160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916132ea916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061340192506001600160a01b03909116908790617e9c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561349757600080fd5b505af11580156134ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906134f6908a908990617dcd565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561358c57600080fd5b505af11580156135a0573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506135e59089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506136cb92909116908a9089908b90600401617de6565b600060405180830381600087803b1580156136e557600080fd5b505af11580156136f9573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161112c565b60606015805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b600061379d6178d8565b6137a8848483613831565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561381d57600080fd5b505afa15801561204d573d6000803e3d6000fd5b60008061383e85846138ac565b90506138a16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161388c929190617e9c565b604051602081830303815290604052856138b8565b9150505b9392505050565b60006138a583836138e6565b60c081015151600090156138dc576138d584848460c00151613901565b90506138a5565b6138d58484613aa7565b60006138f28383613b92565b6138a5838360200151846138b8565b60008061390c613ba2565b9050600061391a8683613c75565b90506000613931826060015183602001518561411b565b905060006139418383898961432d565b9050600061394e826151aa565b602081015181519192509060030b156139c157898260400151604051602001613978929190617ebe565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526139b891600401617f3f565b60405180910390fd5b6000613a046040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615379565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613a57908490600401617f3f565b602060405180830381865afa158015613a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a989190617f52565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613afc908790600401617f3f565b600060405180830381865afa158015613b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b419190810190618063565b90506000613b6f8285604051602001613b5b929190618098565b604051602081830303815290604052615579565b90506001600160a01b0381166137a85784846040516020016139789291906180c7565b613b9e8282600061558c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613c29908490600401618172565b600060405180830381865afa158015613c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6e91908101906181b9565b9250505090565b613ca76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613cf26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613cfb8561568f565b60208201526000613d0b86615a74565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d7591908101906181b9565b86838560200151604051602001613d8f9493929190618202565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613de7908590600401617f3f565b600060405180830381865afa158015613e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e2c91908101906181b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e74908490600401618306565b602060405180830381865afa158015613e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb59190618358565b613eca5781604051602001613978919061837a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f0f90849060040161840c565b600060405180830381865afa158015613f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f5491908101906181b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f9b90849060040161845e565b602060405180830381865afa158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190618358565b15614071576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061402690849060040161845e565b600060405180830381865afa158015614043573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406b91908101906181b9565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161409691906184b0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140c292919061851c565b600060405180830381865afa1580156140df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261410791908101906181b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816141375790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061419757614197618541565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106141eb576141eb618541565b6020026020010181905250846040516020016142079190618570565b6040516020818303038152906040528160028151811061422957614229618541565b60200260200101819052508260405160200161424591906185dc565b6040516020818303038152906040528160038151811061426757614267618541565b6020026020010181905250600061427d826151aa565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061430e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615cf7565b6143235785604051602001613978919061861d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561437d565b511590565b6144f157826020015115614439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016139b8565b8260c00151156144f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016139b8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161450a57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614565906186ae565b935060ff168151811061457a5761457a618541565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145cb91906186cd565b6040516020818303038152906040528282806145e6906186ae565b935060ff16815181106145fb576145fb618541565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614648906186ae565b935060ff168151811061465d5761465d618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806146aa906186ae565b935060ff16815181106146bf576146bf618541565b602002602001018190525087602001518282806146db906186ae565b935060ff16815181106146f0576146f0618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061473d906186ae565b935060ff168151811061475257614752618541565b60209081029190910101528751828261476a816186ae565b935060ff168151811061477f5761477f618541565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806147cc906186ae565b935060ff16815181106147e1576147e1618541565b60200260200101819052506147f546615d58565b8282614800816186ae565b935060ff168151811061481557614815618541565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614862906186ae565b935060ff168151811061487757614877618541565b60200260200101819052508682828061488f906186ae565b935060ff16815181106148a4576148a4618541565b60209081029190910101528551156149cb5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148f5816186ae565b935060ff168151811061490a5761490a618541565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061495a908990600401617f3f565b600060405180830381865afa158015614977573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261499f91908101906181b9565b82826149aa816186ae565b935060ff16815181106149bf576149bf618541565b60200260200101819052505b846020015115614a9b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614a14816186ae565b935060ff1681518110614a2957614a29618541565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a76906186ae565b935060ff1681518110614a8b57614a8b618541565b6020026020010181905250614c62565b614ad36143788660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b665760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b16816186ae565b935060ff1681518110614b2b57614b2b618541565b60200260200101819052508460a00151604051602001614b4b9190618570565b604051602081830303815290604052828280614a76906186ae565b8460c00151158015614ba9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ba790511590565b155b15614c625760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614bed816186ae565b935060ff1681518110614c0257614c02618541565b6020026020010181905250614c1688615df8565b604051602001614c269190618570565b604051602081830303815290604052828280614c41906186ae565b935060ff1681518110614c5657614c56618541565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c9690511590565b614d2b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614cd9816186ae565b935060ff1681518110614cee57614cee618541565b60200260200101819052508460400151828280614d0a906186ae565b935060ff1681518110614d1f57614d1f618541565b60200260200101819052505b606085015115614e4c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d74816186ae565b935060ff1681518110614d8957614d89618541565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614df8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e2091908101906181b9565b8282614e2b816186ae565b935060ff1681518110614e4057614e40618541565b60200260200101819052505b60e08501515115614ef35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e96816186ae565b935060ff1681518110614eab57614eab618541565b6020026020010181905250614ec78560e0015160000151615d58565b8282614ed2816186ae565b935060ff1681518110614ee757614ee7618541565b60200260200101819052505b60e08501516020015115614f9d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614f40816186ae565b935060ff1681518110614f5557614f55618541565b6020026020010181905250614f718560e0015160200151615d58565b8282614f7c816186ae565b935060ff1681518110614f9157614f91618541565b60200260200101819052505b60e085015160400151156150475760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614fea816186ae565b935060ff1681518110614fff57614fff618541565b602002602001018190525061501b8560e0015160400151615d58565b8282615026816186ae565b935060ff168151811061503b5761503b618541565b60200260200101819052505b60e085015160600151156150f15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615094816186ae565b935060ff16815181106150a9576150a9618541565b60200260200101819052506150c58560e0015160600151615d58565b82826150d0816186ae565b935060ff16815181106150e5576150e5618541565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561510f5761510f617f7b565b60405190808252806020026020018201604052801561514257816020015b606081526020019060019003908161512d5790505b50905060005b8260ff168160ff16101561519b57838160ff168151811061516b5761516b618541565b6020026020010151828260ff168151811061518857615188618541565b6020908102919091010152600101615148565b5093505050505b949350505050565b6151d16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161525791869101618738565b600060405180830381865afa158015615274573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261529c91908101906181b9565b905060006152aa86836168e7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152da9190617c31565b6000604051808303816000875af11580156152f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615321919081019061877f565b805190915060030b1580159061533a5750602081015151155b80156153495750604081015151155b15614323578160008151811061536157615361618541565b60200260200101516040516020016139789190618835565b606060006153ae8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153e59082905b90616a3c565b156155425760006154628261545c846154566154288a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a63565b90616ac5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154c6908290616a3c565b1561553057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261552d905b8290616b4a565b90505b61553981616b70565b925050506138a5565b821561555b578484604051602001613978929190618a21565b50506040805160208101909152600081526138a5565b509392505050565b6000808251602084016000f09392505050565b8160a001511561559b57505050565b60006155a8848484616bd9565b905060006155b5826151aa565b602081015181519192509060030b1580156156515750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615651906040805180820182526000808252602091820152815180830190925284518252808501908201526153df565b1561565e57505050505050565b6040820151511561567e5781604001516040516020016139789190618ac8565b806040516020016139789190618b26565b606060006156c48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615729905b8290615cf7565b1561579857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793908390617174565b616b70565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157fa905b82906171fe565b6001036158c757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586090615526565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793905b8390616b4a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261592690615722565b15615a5d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061598e908390617298565b9050600081600183516159a19190617e4e565b815181106159b1576159b1618541565b60200260200101519050615a54615793615a276040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617174565b95945050505050565b826040516020016139789190618b91565b50919050565b60606000615aa98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b0b90615722565b15615b19576138a581616b70565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b78906157f3565b600103615be257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793906158c0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c4190615722565b15615a5d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615ca9908390617298565b9050600181511115615ce5578060028251615cc49190617e4e565b81518110615cd457615cd4618541565b602002602001015192505050919050565b50826040516020016139789190618b91565b805182516000911115615d0c575060006137ac565b81518351602085015160009291615d2291618c6f565b615d2c9190617e4e565b905082602001518103615d435760019150506137ac565b82516020840151819020912014905092915050565b60606000615d658361733d565b600101905060008167ffffffffffffffff811115615d8557615d85617f7b565b6040519080825280601f01601f191660200182016040528015615daf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615db957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e84905b829061741f565b15615ec457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f2390615e7d565b15615f6357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc290615e7d565b1561600257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606190615e7d565b806160c65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160c690615e7d565b1561610657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261616590615e7d565b806161ca5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ca90615e7d565b1561620a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626990615e7d565b806162ce5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ce90615e7d565b1561630e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636d90615e7d565b806163d25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d290615e7d565b1561641257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261647190615e7d565b156164b157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261651090615e7d565b1561655057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165af90615e7d565b156165ef57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261664e90615e7d565b1561668e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ed90615e7d565b1561672d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678c90615e7d565b806167f15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f190615e7d565b1561683157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261689090615e7d565b156168d057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516139789290602001618c82565b60608060005b8451811015616972578185828151811061690957616909618541565b6020026020010151604051602001616922929190618098565b6040516020818303038152906040529150600185516169419190617e4e565b811461696a57816040516020016169589190618deb565b60405160208183030381529060405291505b6001016168ed565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161698b57905050905083816000815181106169b6576169b6618541565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616a0a57616a0a618541565b60200260200101819052508181600281518110616a2957616a29618541565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a5a9291849190617433565b14159392505050565b60408051808201909152600080825260208201526000616a958460000151856020015185600001518660200151617544565b9050836020015181616aa79190617e4e565b84518590616ab6908390617e4e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616aea5750816137ac565b6020808301519084015160019114616b115750815160208481015190840151829020919020145b8015616b4257825184518590616b28908390617e4e565b9052508251602085018051616b3e908390618c6f565b9052505b509192915050565b6040805180820190915260008082526020820152616b69838383617664565b5092915050565b60606000826000015167ffffffffffffffff811115616b9157616b91617f7b565b6040519080825280601f01601f191660200182016040528015616bbb576020820181803683370190505b5090506000602082019050616b69818560200151866000015161770f565b60606000616be5613ba2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616c0257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c5d906186ae565b935060ff1681518110616c7257616c72618541565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616cc39190618e2c565b604051602081830303815290604052828280616cde906186ae565b935060ff1681518110616cf357616cf3618541565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616d40906186ae565b935060ff1681518110616d5557616d55618541565b602002602001018190525082604051602001616d7191906185dc565b604051602081830303815290604052828280616d8c906186ae565b935060ff1681518110616da157616da1618541565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616dee906186ae565b935060ff1681518110616e0357616e03618541565b6020026020010181905250616e188784617789565b8282616e23816186ae565b935060ff1681518110616e3857616e38618541565b602090810291909101015285515115616ee45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e8a816186ae565b935060ff1681518110616e9f57616e9f618541565b6020026020010181905250616eb8866000015184617789565b8282616ec3816186ae565b935060ff1681518110616ed857616ed8618541565b60200260200101819052505b856080015115616f525760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616f2d816186ae565b935060ff1681518110616f4257616f42618541565b6020026020010181905250616fb8565b8415616fb85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f97816186ae565b935060ff1681518110616fac57616fac618541565b60200260200101819052505b604086015151156170545760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617002816186ae565b935060ff168151811061701757617017618541565b60200260200101819052508560400151828280617033906186ae565b935060ff168151811061704857617048618541565b60200260200101819052505b8560600151156170be5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261709d816186ae565b935060ff16815181106170b2576170b2618541565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156170dc576170dc617f7b565b60405190808252806020026020018201604052801561710f57816020015b60608152602001906001900390816170fa5790505b50905060005b8260ff168160ff16101561716857838160ff168151811061713857617138618541565b6020026020010151828260ff168151811061715557617155618541565b6020908102919091010152600101617115565b50979650505050505050565b60408051808201909152600080825260208201528151835110156171995750816137ac565b815183516020850151600092916171af91618c6f565b6171b99190617e4e565b602084015190915060019082146171da575082516020840151819020908220145b80156171f5578351855186906171f1908390617e4e565b9052505b50929392505050565b60008082600001516172228560000151866020015186600001518760200151617544565b61722c9190618c6f565b90505b835160208501516172409190618c6f565b8111616b69578161725081618e71565b925050826000015161728785602001518361726b9190617e4e565b86516172779190617e4e565b8386600001518760200151617544565b6172919190618c6f565b905061722f565b606060006172a684846171fe565b6172b1906001618c6f565b67ffffffffffffffff8111156172c9576172c9617f7b565b6040519080825280602002602001820160405280156172fc57816020015b60608152602001906001900390816172e75790505b50905060005b8151811015615571576173186157938686616b4a565b82828151811061732a5761732a618541565b6020908102919091010152600101617302565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617386577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106173b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106173d057662386f26fc10000830492506010015b6305f5e10083106173e8576305f5e100830492506008015b61271083106173fc57612710830492506004015b6064831061740e576064830492506002015b600a83106137ac5760010192915050565b600061742b83836177c9565b159392505050565b60008085841161753a57602084116174e6576000841561747e57600161745a866020617e4e565b617465906008618e8b565b617470906002618f89565b61747a9190617e4e565b1990505b835181168561748d8989618c6f565b6174979190617e4e565b805190935082165b8181146174d1578784116174b957879450505050506151a2565b836174c381618f95565b94505082845116905061749f565b6174db8785618c6f565b9450505050506151a2565b8383206174f38588617e4e565b6174fd9087618c6f565b91505b858210617538578482208082036175255761751b8684618c6f565b93505050506151a2565b617530600184617e4e565b925050617500565b505b5092949350505050565b6000838186851161764f57602085116175fe576000851561759057600161756c876020617e4e565b617577906008618e8b565b617582906002618f89565b61758c9190617e4e565b1990505b845181166000876175a18b8b618c6f565b6175ab9190617e4e565b855190915083165b8281146175f0578186106175d8576175cb8b8b618c6f565b96505050505050506151a2565b856175e281618e71565b9650508386511690506175b3565b8596505050505050506151a2565b508383206000905b6176108689617e4e565b821161764d5785832080820361762c57839450505050506151a2565b617637600185618c6f565b935050818061764590618e71565b925050617606565b505b6176598787618c6f565b979650505050505050565b604080518082019091526000808252602082015260006176968560000151866020015186600001518760200151617544565b6020808701805191860191909152519091506176b29082617e4e565b8352845160208601516176c59190618c6f565b81036176d45760008552617706565b835183516176e29190618c6f565b855186906176f1908390617e4e565b90525083516177009082618c6f565b60208601525b50909392505050565b602081106177475781518352617726602084618c6f565b9250617733602083618c6f565b9150617740602082617e4e565b905061770f565b600019811561777657600161775d836020617e4e565b61776990610100618f89565b6177739190617e4e565b90505b9151835183169219169190911790915250565b606060006177978484613c75565b80516020808301516040519394506177b193909101618fac565b60405160208183030381529060405291505092915050565b81518151600091908111156177dc575081515b6020808501519084015160005b83811015617895578251825180821461786557600019602087101561784457600184617816896020617e4e565b6178209190618c6f565b61782b906008618e8b565b617836906002618f89565b6178409190617e4e565b1990505b81811683821681810391146178625797506137ac9650505050505050565b50505b617870602086618c6f565b945061787d602085618c6f565b9350505060208161788e9190618c6f565b90506177e9565b50845186516143239190619004565b610c9f8061902583390190565b610b4a80619cc483390190565b610d878061a80e83390190565b610d5e8061b59583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161791b617920565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161791b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179d25783516001600160a01b03168352602093840193909201916001016179ab565b509095945050505050565b60005b838110156179f85781810151838201526020016179e0565b50506000910152565b60008151808452617a198160208601602086016179dd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617b0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617af9848651617a01565b6020958601959094509290920191600101617abf565b509197505050602094850194929092019150600101617a55565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b895781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617b49565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bff6040880182617a01565b9050602082015191508681036020880152617c1a8183617b35565b965050506020938401939190910190600101617bbb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c93858351617a01565b94506020938401939190910190600101617c59565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617d296040870182617b35565b9550506020938401939190910190600101617cd0565b600181811c90821680617d5357607f821691505b602082108103615a6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d9e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615a546060830184617a01565b8281526040602082015260006151a26040830184617a01565b6001600160a01b0385168152836020820152608060408201526000617e0e6080830185617a01565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156137ac576137ac617e1f565b600082617e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151a26040830184617a01565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617ef681601a8501602088016179dd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f3381601c8401602088016179dd565b01601c01949350505050565b6020815260006138a56020830184617a01565b600060208284031215617f6457600080fd5b81516001600160a01b03811681146138a557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617fcd57617fcd617f7b565b60405290565b60008067ffffffffffffffff841115617fee57617fee617f7b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561801d5761801d617f7b565b60405283815290508082840185101561803557600080fd5b6155718460208301856179dd565b600082601f83011261805457600080fd5b6138a583835160208501617fd3565b60006020828403121561807557600080fd5b815167ffffffffffffffff81111561808c57600080fd5b6137a884828501618043565b600083516180aa8184602088016179dd565b8351908301906180be8183602088016179dd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ff81601a8501602088016179dd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161813c8160338401602088016179dd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138a56080830184617a01565b6000602082840312156181cb57600080fd5b815167ffffffffffffffff8111156181e257600080fd5b8201601f810184136181f357600080fd5b6137a884825160208401617fd3565b60008551618214818460208a016179dd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161824e816001840160208a016179dd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161828c8160028401602089016179dd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516182ce8160028401602088016179dd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006183196040830184617a01565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561836a57600080fd5b815180151581146138a557600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516183b281601f8501602087016179dd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061841f6040830184617a01565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006184716040830184617a01565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516184e88160148501602087016179dd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061852f6040830185617a01565b82810360208401526138a18185617a01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516185a88160018501602087016179dd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516185ee8184602087016179dd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516186a181604b8501602087016179dd565b91909101604b0192915050565b600060ff821660ff81036186c4576186c4617e1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138a56080830184617a01565b60006020828403121561879157600080fd5b815167ffffffffffffffff8111156187a857600080fd5b8201606081850312156187ba57600080fd5b6187c2617faa565b81518060030b81146187d357600080fd5b8152602082015167ffffffffffffffff8111156187ef57600080fd5b6187fb86828501618043565b602083015250604082015167ffffffffffffffff81111561881b57600080fd5b61882786828501618043565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516188938160218501602087016179dd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618a7f8160218501602088016179dd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618abc81602e8401602088016179dd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b848160228501602087016179dd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618bc981600e8501602087016179dd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156137ac576137ac617e1f565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618cba8160188501602088016179dd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618cf781601c8401602088016179dd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618dfd8184602087016179dd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618e6481601c8501602087016179dd565b91909101601c0192915050565b60006000198203618e8457618e84617e1f565b5060010190565b80820281158282048414176137ac576137ac617e1f565b6001815b6001841115618edd57808504811115618ec157618ec1617e1f565b6001841615618ecf57908102905b60019390931c928002618ea6565b935093915050565b600082618ef4575060016137ac565b81618f01575060006137ac565b8160018114618f175760028114618f2157618f3d565b60019150506137ac565b60ff841115618f3257618f32617e1f565b50506001821b6137ac565b5060208310610133831016604e8410600b8410161715618f60575081810a6137ac565b618f6d6000198484618ea2565b8060001904821115618f8157618f81617e1f565b029392505050565b60006138a58383618ee5565b600081618fa457618fa4617e1f565b506000190190565b60008351618fbe8184602088016179dd565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618ff88160018401602088016179dd565b01600101949350505050565b8181036000831280158383131683831282161715616b6957616b69617e1f56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220253a981bc55dea3d94e3622fe66233e23c29a85c4bca6f00149cf5cc68a0247d64736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index e605370e..04a79ff4 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033", + Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go index 39cc897c..edc0afe1 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50610f868061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101bb578063ba414fa6146101c3578063e20c9f71146101db578063fa7626d4146101e357600080fd5b806385226c8114610189578063916a17c61461019e578063b0464fdc146101b357600080fd5b80633e5e3c23116100bd5780633e5e3c23146101645780633f7286f41461016c57806366d9a9a01461017457600080fd5b80630a9254e4146100e45780631ed7831c146101315780632ade38801461014f575b600080fd5b61012f602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560258054821661123417905560268054909116615678179055565b005b6101396101f0565b6040516101469190610afb565b60405180910390f35b61015761025f565b6040516101469190610bb8565b6101396103ae565b61013961041b565b61017c610488565b6040516101469190610d2b565b61019161060a565b6040516101469190610dc9565b6101a66106da565b6040516101469190610e40565b6101a66107e2565b6101916108ea565b6101cb6109ba565b6040519015158152602001610146565b610139610a8e565b601f546101cb9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561025557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103a5576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561038e57838290600052602060002001805461030190610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461032d90610ee4565b801561037a5780601f1061034f5761010080835404028352916020019161037a565b820191906000526020600020905b81548152906001019060200180831161035d57829003601f168201915b5050505050815260200190600101906102e2565b505050508152505081526020019060010190610283565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002090600202016040518060400160405290816000820180546104df90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610ee4565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059f5790505b505050505081525050815260200190600101906104ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461064d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461067990610ee4565b80156106c65780601f1061069b576101008083540402835291602001916106c6565b820191906000526020600020905b8154815290600101906020018083116106a957829003601f168201915b50505050508152602001906001019061062e565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107ca57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107775790505b505050505081525050815260200190600101906106fe565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161087f5790505b50505050508152505081526020019060010190610806565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461092d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461095990610ee4565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b50505050508152602001906001019061090e565b60085460009060ff16156109d2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190610f37565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b602080825282518282018190526000918401906040840190835b81811015610b4957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610b15565b509095945050505050565b6000815180845260005b81811015610b7a57602081850181015186830182015201610b5e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610ca7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352610c91848651610b54565b6020958601959094509290920191600101610c57565b509197505050602094850194929092019150600101610be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015610d215781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101610ce1565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752610d976040880182610b54565b9050602082015191508681036020880152610db28183610ccd565b965050506020938401939190910190600101610d53565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452610e2b858351610b54565b94506020938401939190910190600101610df1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152610ece6040870182610ccd565b9550506020938401939190910190600101610e68565b600181811c90821680610ef857607f821691505b602082108103610f31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f4957600080fd5b505191905056fea2646970667358221220e6ce98b1e4db0be37c7d41156129bf2894aeb3fbfccc1ebf666e905caf87609e64736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cad48061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e610958565b60405161019b9190617923565b60405180910390f35b6101ac6109ba565b60405161019b91906179bf565b610184610afc565b61018e6112d7565b61018e611337565b610184611397565b610184611984565b6101e9611b7a565b60405161019b9190617b25565b6101fe611cfc565b60405161019b9190617bc3565b610184611dcc565b61021b611f87565b60405161019b9190617c3a565b610184612082565b61021b61228a565b6101fe612385565b610248612455565b604051901515815260200161019b565b610184612529565b610184612949565b610184612f90565b61018e6136c5565b601f546102489060ff1681565b60258054307fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602680546112349083161790556027805461567892168217905560405181906102da90617836565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561030d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027549151919094169281019290925260448201526103f1919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613725565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546040519192169061047590617843565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104a8573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460405192841693918216929116906104fd90617850565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610539573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050506040516106829061785d565b604051809103906000f08015801561069e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561074a57600080fd5b505af115801561075e573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093e57600080fd5b505af1158015610952573d6000803e3d6000fd5b50505050565b606060168054806020026020016040519081016040528092919081815260200182805480156109b057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610992575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610af357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610adc578382906000526020600020018054610a4f90617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90617cd1565b8015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b505050505081526020019060010190610a30565b5050505081525050815260200190600101906109de565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190617d1e565b9050610c08816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190617d1e565b9050610c89816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610d70916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f3357600080fd5b505af1158015610f47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610f8c9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061107292909116908a9089908b90600401617d78565b600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190617d1e565b90506111228188613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111969190617d1e565b90506111a3816000613744565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190617d1e565b905061124a816000613744565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190617d1e565b90506112cb816000613744565b50505050505050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361143893921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114799190617d1e565b9050611486816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190617d1e565b9050611507816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916115ee916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b15801561160857600080fd5b505af115801561161c573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506117ed9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561186757600080fd5b505af115801561187b573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506118d392909116908a9089908b90600401617d78565b600060405180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190617d1e565b9050611122816000613744565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ad757600080fd5b505af1158015611aeb573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611b439290911690879086908890600401617d78565b600060405180830381600087803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610af35783829060005260206000209060020201604051806040016040529081600082018054611bd190617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611bfd90617cd1565b8015611c4a5780601f10611c1f57610100808354040283529160200191611c4a565b820191906000526020600020905b815481529060010190602001808311611c2d57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611ce457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611b9e565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610af3578382906000526020600020018054611d3f90617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6b90617cd1565b8015611db85780601f10611d8d57610100808354040283529160200191611db8565b820191906000526020600020905b815481529060010190602001808311611d9b57829003601f168201915b505050505081526020019060010190611d20565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611e5a573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015611f6b57600080fd5b505af1158015611f7f573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610af35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120175790505b50505050508152505081526020019060010190611fab565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561221e57600080fd5b505af1158015612232573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611b439290911690879086908890600401617d78565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610af35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561236d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161231a5790505b505050505081525050815260200190600101906122ae565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610af35783829060005260206000200180546123c890617cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546123f490617cd1565b80156124415780601f1061241657610100808354040283529160200191612441565b820191906000526020600020905b81548152906001019060200180831161242457829003601f168201915b5050505050815260200190600101906123a9565b60085460009060ff161561246d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190617d1e565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa15801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a29190617d1e565b90506125af816000613744565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612698916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129369190617d1e565b90506129428186613744565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a489190617d1e565b9050612a55816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac99190617d1e565b9050612ad6816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612bbd916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b158015612bd757600080fd5b505af1158015612beb573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c7d57600080fd5b505af1158015612c91573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612ccf600289617de0565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d9757600080fd5b505af1158015612dab573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612df09089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e6a57600080fd5b505af1158015612e7e573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612ed692909116908a9089908b90600401617d78565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7a9190617d1e565b905061112281612f8b60028a617de0565b613744565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130499190617d1e565b9050613056816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156130a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ca9190617d1e565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131b4916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b1580156131ce57600080fd5b505af11580156131e2573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561327457600080fd5b505af1158015613288573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506132cb92506001600160a01b03909116908790617e1b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561336157600080fd5b505af1158015613375573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906133c0908a908990617d5f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134af9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561352957600080fd5b505af115801561353d573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061359592909116908a9089908b90600401617d78565b600060405180830381600087803b1580156135af57600080fd5b505af11580156135c3573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136399190617d1e565b90506136458188613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b99190617d1e565b90506111a38185613744565b606060158054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b600061372f61786a565b61373a8484836137c3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137af57600080fd5b505afa158015611f7f573d6000803e3d6000fd5b6000806137d0858461383e565b90506138336040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161381e929190617e1b565b6040516020818303038152906040528561384a565b9150505b9392505050565b60006138378383613878565b60c0810151516000901561386e5761386784848460c00151613893565b9050613837565b6138678484613a39565b60006138848383613b24565b6138378383602001518461384a565b60008061389e613b34565b905060006138ac8683613c07565b905060006138c382606001518360200151856140ad565b905060006138d3838389896142bf565b905060006138e08261513c565b602081015181519192509060030b156139535789826040015160405160200161390a929190617e3d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261394a91600401617ebe565b60405180910390fd5b60006139966040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161530b565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139e9908490600401617ebe565b602060405180830381865afa158015613a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2a9190617ed1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a8e908790600401617ebe565b600060405180830381865afa158015613aab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ad39190810190617fe2565b90506000613b018285604051602001613aed929190618017565b60405160208183030381529060405261550b565b90506001600160a01b03811661373a57848460405160200161390a929190618046565b613b308282600061551e565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bbb9084906004016180f1565b600060405180830381865afa158015613bd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c009190810190618138565b9250505090565b613c396040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c846040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8d85615621565b60208201526000613c9d86615a06565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d079190810190618138565b86838560200151604051602001613d219493929190618181565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d79908590600401617ebe565b600060405180830381865afa158015613d96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dbe9190810190618138565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e06908490600401618285565b602060405180830381865afa158015613e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4791906182d7565b613e5c578160405160200161390a91906182f9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613ea190849060040161838b565b600060405180830381865afa158015613ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee69190810190618138565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f2d9084906004016183dd565b602060405180830381865afa158015613f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6e91906182d7565b15614003576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fb89084906004016183dd565b600060405180830381865afa158015613fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ffd9190810190618138565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614028919061842f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161405492919061849b565b600060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140999190810190618138565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140c95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614129576141296184c0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417d5761417d6184c0565b60200260200101819052508460405160200161419991906184ef565b604051602081830303815290604052816002815181106141bb576141bb6184c0565b6020026020010181905250826040516020016141d7919061855b565b604051602081830303815290604052816003815181106141f9576141f96184c0565b6020026020010181905250600061420f8261513c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142a09060408051808201825260008082526020918201528151808301909252845182528085019082015290615c89565b6142b5578560405160200161390a919061859c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561430f565b511590565b614483578260200151156143cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161394a565b8260c0015115614483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161394a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161449c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144f79061862d565b935060ff168151811061450c5761450c6184c0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455d919061864c565b6040516020818303038152906040528282806145789061862d565b935060ff168151811061458d5761458d6184c0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145da9061862d565b935060ff16815181106145ef576145ef6184c0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061463c9061862d565b935060ff1681518110614651576146516184c0565b6020026020010181905250876020015182828061466d9061862d565b935060ff1681518110614682576146826184c0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146cf9061862d565b935060ff16815181106146e4576146e46184c0565b6020908102919091010152875182826146fc8161862d565b935060ff1681518110614711576147116184c0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061475e9061862d565b935060ff1681518110614773576147736184c0565b602002602001018190525061478746615cea565b82826147928161862d565b935060ff16815181106147a7576147a76184c0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147f49061862d565b935060ff1681518110614809576148096184c0565b6020026020010181905250868282806148219061862d565b935060ff1681518110614836576148366184c0565b602090810291909101015285511561495d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148878161862d565b935060ff168151811061489c5761489c6184c0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148ec908990600401617ebe565b600060405180830381865afa158015614909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149319190810190618138565b828261493c8161862d565b935060ff1681518110614951576149516184c0565b60200260200101819052505b846020015115614a2d5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149a68161862d565b935060ff16815181106149bb576149bb6184c0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a089061862d565b935060ff1681518110614a1d57614a1d6184c0565b6020026020010181905250614bf4565b614a6561430a8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614af85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614aa88161862d565b935060ff1681518110614abd57614abd6184c0565b60200260200101819052508460a00151604051602001614add91906184ef565b604051602081830303815290604052828280614a089061862d565b8460c00151158015614b3b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b3990511590565b155b15614bf45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b7f8161862d565b935060ff1681518110614b9457614b946184c0565b6020026020010181905250614ba888615d8a565b604051602001614bb891906184ef565b604051602081830303815290604052828280614bd39061862d565b935060ff1681518110614be857614be86184c0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c2890511590565b614cbd5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c6b8161862d565b935060ff1681518110614c8057614c806184c0565b60200260200101819052508460400151828280614c9c9061862d565b935060ff1681518110614cb157614cb16184c0565b60200260200101819052505b606085015115614dde5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d068161862d565b935060ff1681518110614d1b57614d1b6184c0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614db29190810190618138565b8282614dbd8161862d565b935060ff1681518110614dd257614dd26184c0565b60200260200101819052505b60e08501515115614e855760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e288161862d565b935060ff1681518110614e3d57614e3d6184c0565b6020026020010181905250614e598560e0015160000151615cea565b8282614e648161862d565b935060ff1681518110614e7957614e796184c0565b60200260200101819052505b60e08501516020015115614f2f5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ed28161862d565b935060ff1681518110614ee757614ee76184c0565b6020026020010181905250614f038560e0015160200151615cea565b8282614f0e8161862d565b935060ff1681518110614f2357614f236184c0565b60200260200101819052505b60e08501516040015115614fd95760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f7c8161862d565b935060ff1681518110614f9157614f916184c0565b6020026020010181905250614fad8560e0015160400151615cea565b8282614fb88161862d565b935060ff1681518110614fcd57614fcd6184c0565b60200260200101819052505b60e085015160600151156150835760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826150268161862d565b935060ff168151811061503b5761503b6184c0565b60200260200101819052506150578560e0015160600151615cea565b82826150628161862d565b935060ff1681518110615077576150776184c0565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150a1576150a1617efa565b6040519080825280602002602001820160405280156150d457816020015b60608152602001906001900390816150bf5790505b50905060005b8260ff168160ff16101561512d57838160ff16815181106150fd576150fd6184c0565b6020026020010151828260ff168151811061511a5761511a6184c0565b60209081029190910101526001016150da565b5093505050505b949350505050565b6151636040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151e9918691016186b7565b600060405180830381865afa158015615206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261522e9190810190618138565b9050600061523c8683616879565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161526c9190617bc3565b6000604051808303816000875af115801561528b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152b391908101906186fe565b805190915060030b158015906152cc5750602081015151155b80156152db5750604081015151155b156142b557816000815181106152f3576152f36184c0565b602002602001015160405160200161390a91906187b4565b606060006153408560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153779082905b906169ce565b156154d45760006153f4826153ee846153e86153ba8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169f5565b90616a57565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154589082906169ce565b156154c257604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154bf905b8290616adc565b90505b6154cb81616b02565b92505050613837565b82156154ed57848460405160200161390a9291906189a0565b5050604080516020810190915260008152613837565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552d57505050565b600061553a848484616b6b565b905060006155478261513c565b602081015181519192509060030b1580156155e35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e390604080518082018252600080825260209182015281518083019092528451825280850190820152615371565b156155f057505050505050565b6040820151511561561057816040015160405160200161390a9190618a47565b8060405160200161390a9190618aa5565b606060006156568360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156bb905b8290615c89565b1561572a57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261383790615725908390617106565b616b02565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578c905b8290617190565b60010361585957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157f2906154b8565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261383790615725905b8390616adc565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158b8906156b4565b156159ef57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061592090839061722a565b9050600081600183516159339190618b10565b81518110615943576159436184c0565b602002602001015190506159e66157256159b96040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617106565b95945050505050565b8260405160200161390a9190618b23565b50919050565b60606000615a3b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a9d906156b4565b15615aab5761383781616b02565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0a90615785565b600103615b7457604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138379061572590615852565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bd3906156b4565b156159ef57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c3b90839061722a565b9050600181511115615c77578060028251615c569190618b10565b81518110615c6657615c666184c0565b602002602001015192505050919050565b508260405160200161390a9190618b23565b805182516000911115615c9e5750600061373e565b81518351602085015160009291615cb491618c01565b615cbe9190618b10565b905082602001518103615cd557600191505061373e565b82516020840151819020912014905092915050565b60606000615cf7836172cf565b600101905060008167ffffffffffffffff811115615d1757615d17617efa565b6040519080825280601f01601f191660200182016040528015615d41576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d4b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e16905b82906173b1565b15615e5657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb590615e0f565b15615ef557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f5490615e0f565b15615f9457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff390615e0f565b806160585750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261605890615e0f565b1561609857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160f790615e0f565b8061615c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615c90615e0f565b1561619c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161fb90615e0f565b806162605750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626090615e0f565b156162a057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ff90615e0f565b806163645750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636490615e0f565b156163a457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640390615e0f565b1561644357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164a290615e0f565b156164e257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654190615e0f565b1561658157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e090615e0f565b1561662057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667f90615e0f565b156166bf57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671e90615e0f565b806167835750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678390615e0f565b156167c357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682290615e0f565b1561686257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161390a9290602001618c14565b60608060005b8451811015616904578185828151811061689b5761689b6184c0565b60200260200101516040516020016168b4929190618017565b6040516020818303038152906040529150600185516168d39190618b10565b81146168fc57816040516020016168ea9190618d7d565b60405160208183030381529060405291505b60010161687f565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161691d5790505090508381600081518110616948576169486184c0565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061699c5761699c6184c0565b602002602001018190525081816002815181106169bb576169bb6184c0565b6020908102919091010152949350505050565b60208083015183518351928401516000936169ec92918491906173c5565b14159392505050565b60408051808201909152600080825260208201526000616a2784600001518560200151856000015186602001516174d6565b9050836020015181616a399190618b10565b84518590616a48908390618b10565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a7c57508161373e565b6020808301519084015160019114616aa35750815160208481015190840151829020919020145b8015616ad457825184518590616aba908390618b10565b9052508251602085018051616ad0908390618c01565b9052505b509192915050565b6040805180820190915260008082526020820152616afb8383836175f6565b5092915050565b60606000826000015167ffffffffffffffff811115616b2357616b23617efa565b6040519080825280601f01601f191660200182016040528015616b4d576020820181803683370190505b5090506000602082019050616afb81856020015186600001516176a1565b60606000616b77613b34565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b9457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616bef9061862d565b935060ff1681518110616c0457616c046184c0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c559190618dbe565b604051602081830303815290604052828280616c709061862d565b935060ff1681518110616c8557616c856184c0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cd29061862d565b935060ff1681518110616ce757616ce76184c0565b602002602001018190525082604051602001616d03919061855b565b604051602081830303815290604052828280616d1e9061862d565b935060ff1681518110616d3357616d336184c0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d809061862d565b935060ff1681518110616d9557616d956184c0565b6020026020010181905250616daa878461771b565b8282616db58161862d565b935060ff1681518110616dca57616dca6184c0565b602090810291909101015285515115616e765760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e1c8161862d565b935060ff1681518110616e3157616e316184c0565b6020026020010181905250616e4a86600001518461771b565b8282616e558161862d565b935060ff1681518110616e6a57616e6a6184c0565b60200260200101819052505b856080015115616ee45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ebf8161862d565b935060ff1681518110616ed457616ed46184c0565b6020026020010181905250616f4a565b8415616f4a5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f298161862d565b935060ff1681518110616f3e57616f3e6184c0565b60200260200101819052505b60408601515115616fe65760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f948161862d565b935060ff1681518110616fa957616fa96184c0565b60200260200101819052508560400151828280616fc59061862d565b935060ff1681518110616fda57616fda6184c0565b60200260200101819052505b8560600151156170505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261702f8161862d565b935060ff1681518110617044576170446184c0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706e5761706e617efa565b6040519080825280602002602001820160405280156170a157816020015b606081526020019060019003908161708c5790505b50905060005b8260ff168160ff1610156170fa57838160ff16815181106170ca576170ca6184c0565b6020026020010151828260ff16815181106170e7576170e76184c0565b60209081029190910101526001016170a7565b50979650505050505050565b604080518082019091526000808252602082015281518351101561712b57508161373e565b8151835160208501516000929161714191618c01565b61714b9190618b10565b6020840151909150600190821461716c575082516020840151819020908220145b801561718757835185518690617183908390618b10565b9052505b50929392505050565b60008082600001516171b485600001518660200151866000015187602001516174d6565b6171be9190618c01565b90505b835160208501516171d29190618c01565b8111616afb57816171e281618e03565b92505082600001516172198560200151836171fd9190618b10565b86516172099190618b10565b83866000015187602001516174d6565b6172239190618c01565b90506171c1565b606060006172388484617190565b617243906001618c01565b67ffffffffffffffff81111561725b5761725b617efa565b60405190808252806020026020018201604052801561728e57816020015b60608152602001906001900390816172795790505b50905060005b8151811015615503576172aa6157258686616adc565b8282815181106172bc576172bc6184c0565b6020908102919091010152600101617294565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617318577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617344576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061736257662386f26fc10000830492506010015b6305f5e100831061737a576305f5e100830492506008015b612710831061738e57612710830492506004015b606483106173a0576064830492506002015b600a831061373e5760010192915050565b60006173bd838361775b565b159392505050565b6000808584116174cc576020841161747857600084156174105760016173ec866020618b10565b6173f7906008618e1d565b617402906002618f1b565b61740c9190618b10565b1990505b835181168561741f8989618c01565b6174299190618b10565b805190935082165b8181146174635787841161744b5787945050505050615134565b8361745581618f27565b945050828451169050617431565b61746d8785618c01565b945050505050615134565b8383206174858588618b10565b61748f9087618c01565b91505b8582106174ca578482208082036174b7576174ad8684618c01565b9350505050615134565b6174c2600184618b10565b925050617492565b505b5092949350505050565b600083818685116175e1576020851161759057600085156175225760016174fe876020618b10565b617509906008618e1d565b617514906002618f1b565b61751e9190618b10565b1990505b845181166000876175338b8b618c01565b61753d9190618b10565b855190915083165b8281146175825781861061756a5761755d8b8b618c01565b9650505050505050615134565b8561757481618e03565b965050838651169050617545565b859650505050505050615134565b508383206000905b6175a28689618b10565b82116175df578583208082036175be5783945050505050615134565b6175c9600185618c01565b93505081806175d790618e03565b925050617598565b505b6175eb8787618c01565b979650505050505050565b6040805180820190915260008082526020820152600061762885600001518660200151866000015187602001516174d6565b6020808701805191860191909152519091506176449082618b10565b8352845160208601516176579190618c01565b81036176665760008552617698565b835183516176749190618c01565b85518690617683908390618b10565b90525083516176929082618c01565b60208601525b50909392505050565b602081106176d957815183526176b8602084618c01565b92506176c5602083618c01565b91506176d2602082618b10565b90506176a1565b60001981156177085760016176ef836020618b10565b6176fb90610100618f1b565b6177059190618b10565b90505b9151835183169219169190911790915250565b606060006177298484613c07565b805160208083015160405193945061774393909101618f3e565b60405160208183030381529060405291505092915050565b815181516000919081111561776e575081515b6020808501519084015160005b8381101561782757825182518082146177f75760001960208710156177d6576001846177a8896020618b10565b6177b29190618c01565b6177bd906008618e1d565b6177c8906002618f1b565b6177d29190618b10565b1990505b81811683821681810391146177f457975061373e9650505050505050565b50505b617802602086618c01565b945061780f602085618c01565b935050506020816178209190618c01565b905061777b565b50845186516142b59190618f96565b6112a680618fb783390190565b610b4a8061a25d83390190565b610f9a8061ada783390190565b610d5e8061bd4183390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ad6178b2565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ad6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179645783516001600160a01b031683526020938401939092019160010161793d565b509095945050505050565b60005b8381101561798a578181015183820152602001617972565b50506000910152565b600081518084526179ab81602086016020860161796f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617aa1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a8b848651617993565b6020958601959094509290920191600101617a51565b5091975050506020948501949290920191506001016179e7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b1b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617adb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b916040880182617993565b9050602082015191508681036020880152617bac8183617ac7565b965050506020938401939190910190600101617b4d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c25858351617993565b94506020938401939190910190600101617beb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cbb6040870182617ac7565b9550506020938401939190910190600101617c62565b600181811c90821680617ce557607f821691505b602082108103615a00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d3057600080fd5b5051919050565b6001600160a01b03841681528260208201526060604082015260006159e66060830184617993565b8281526040602082015260006151346040830184617993565b6001600160a01b0385168152836020820152608060408201526000617da06080830185617993565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082617e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151346040830184617993565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617e7581601a85016020880161796f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617eb281601c84016020880161796f565b01601c01949350505050565b6020815260006138376020830184617993565b600060208284031215617ee357600080fd5b81516001600160a01b038116811461383757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617f4c57617f4c617efa565b60405290565b60008067ffffffffffffffff841115617f6d57617f6d617efa565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617f9c57617f9c617efa565b604052838152905080828401851015617fb457600080fd5b61550384602083018561796f565b600082601f830112617fd357600080fd5b61383783835160208501617f52565b600060208284031215617ff457600080fd5b815167ffffffffffffffff81111561800b57600080fd5b61373a84828501617fc2565b6000835161802981846020880161796f565b83519083019061803d81836020880161796f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161807e81601a85016020880161796f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516180bb81603384016020880161796f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138376080830184617993565b60006020828403121561814a57600080fd5b815167ffffffffffffffff81111561816157600080fd5b8201601f8101841361817257600080fd5b61373a84825160208401617f52565b60008551618193818460208a0161796f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516181cd816001840160208a0161796f565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161820b81600284016020890161796f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161824d81600284016020880161796f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006182986040830184617993565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156182e957600080fd5b8151801515811461383757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161833181601f85016020870161796f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061839e6040830184617993565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183f06040830184617993565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161846781601485016020870161796f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006184ae6040830185617993565b82810360208401526138338185617993565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161852781600185016020870161796f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161856d81846020870161796f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161862081604b85016020870161796f565b91909101604b0192915050565b600060ff821660ff810361864357618643617db1565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516186aa81602985016020870161796f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138376080830184617993565b60006020828403121561871057600080fd5b815167ffffffffffffffff81111561872757600080fd5b82016060818503121561873957600080fd5b618741617f29565b81518060030b811461875257600080fd5b8152602082015167ffffffffffffffff81111561876e57600080fd5b61877a86828501617fc2565b602083015250604082015167ffffffffffffffff81111561879a57600080fd5b6187a686828501617fc2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161881281602185016020870161796f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516189fe81602185016020880161796f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618a3b81602e84016020880161796f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516186aa81602985016020870161796f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b0381602285016020870161796f565b9190910160220192915050565b8181038181111561373e5761373e617db1565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618b5b81600e85016020870161796f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561373e5761373e617db1565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618c4c81601885016020880161796f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618c8981601c84016020880161796f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618d8f81846020870161796f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618df681601c85016020870161796f565b91909101601c0192915050565b60006000198203618e1657618e16617db1565b5060010190565b808202811582820484141761373e5761373e617db1565b6001815b6001841115618e6f57808504811115618e5357618e53617db1565b6001841615618e6157908102905b60019390931c928002618e38565b935093915050565b600082618e865750600161373e565b81618e935750600061373e565b8160018114618ea95760028114618eb357618ecf565b600191505061373e565b60ff841115618ec457618ec4617db1565b50506001821b61373e565b5060208310610133831016604e8410600b8410161715618ef2575081810a61373e565b618eff6000198484618e34565b8060001904821115618f1357618f13617db1565b029392505050565b60006138378383618e77565b600081618f3657618f36617db1565b506000190190565b60008351618f5081846020880161796f565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618f8a81600184016020880161796f565b01600101949350505050565b8181036000831280158383131683831282161715616afb57616afb617db156fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212205ed18aa6301ce507ba64c0f5d616915505a70a7641c6d1bbe1b3e0d13badf2f064736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. @@ -613,6 +613,174 @@ func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) return _ZetaConnectorNonNativeTest.Contract.SetUp(&_ZetaConnectorNonNativeTest.TransactOpts) } +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdraw(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdraw") +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdraw() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdraw(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdraw() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdraw(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveERC20(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20") +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveERC20() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20 is a paid mutator transaction binding the contract method 0x3cba0107. +// +// Solidity: function testWithdrawAndCallReceiveERC20() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS") +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveERC20Partial(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20Partial") +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveERC20Partial() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20Partial(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. +// +// Solidity: function testWithdrawAndCallReceiveERC20Partial() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20Partial() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20Partial(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveNoParams(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveNoParams") +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveNoParams() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveNoParams(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndCallReceiveNoParams is a paid mutator transaction binding the contract method 0x49346558. +// +// Solidity: function testWithdrawAndCallReceiveNoParams() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveNoParams() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveNoParams(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndRevert(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndRevert") +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndRevert() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndRevert is a paid mutator transaction binding the contract method 0xde1cb76c. +// +// Solidity: function testWithdrawAndRevert() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndRevert() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotTSS") +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotTSS") +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + +// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// +// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +} + // ZetaConnectorNonNativeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the ZetaConnectorNonNativeTest contract. type ZetaConnectorNonNativeTestCallIterator struct { Event *ZetaConnectorNonNativeTestCall // Event containing the contract specifics and raw log diff --git a/v2/pkg/zrc20new.sol/zrc20new.go b/v2/pkg/zrc20.sol/zrc20.go similarity index 68% rename from v2/pkg/zrc20new.sol/zrc20new.go rename to v2/pkg/zrc20.sol/zrc20.go index aceb41d1..f0b38baa 100644 --- a/v2/pkg/zrc20new.sol/zrc20new.go +++ b/v2/pkg/zrc20.sol/zrc20.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package zrc20new +package zrc20 import ( "errors" @@ -29,23 +29,23 @@ var ( _ = abi.ConvertType ) -// ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. -var ZRC20NewMetaData = &bind.MetaData{ +// ZRC20MetaData contains all meta data concerning the ZRC20 contract. +var ZRC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033", } -// ZRC20NewABI is the input ABI used to generate the binding from. -// Deprecated: Use ZRC20NewMetaData.ABI instead. -var ZRC20NewABI = ZRC20NewMetaData.ABI +// ZRC20ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20MetaData.ABI instead. +var ZRC20ABI = ZRC20MetaData.ABI -// ZRC20NewBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use ZRC20NewMetaData.Bin instead. -var ZRC20NewBin = ZRC20NewMetaData.Bin +// ZRC20Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZRC20MetaData.Bin instead. +var ZRC20Bin = ZRC20MetaData.Bin -// DeployZRC20New deploys a new Ethereum contract, binding an instance of ZRC20New to it. -func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20New, error) { - parsed, err := ZRC20NewMetaData.GetAbi() +// DeployZRC20 deploys a new Ethereum contract, binding an instance of ZRC20 to it. +func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20, error) { + parsed, err := ZRC20MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err } @@ -53,111 +53,111 @@ func DeployZRC20New(auth *bind.TransactOpts, backend bind.ContractBackend, name_ return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20NewBin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20Bin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) if err != nil { return common.Address{}, nil, nil, err } - return address, tx, &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil + return address, tx, &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil } -// ZRC20New is an auto generated Go binding around an Ethereum contract. -type ZRC20New struct { - ZRC20NewCaller // Read-only binding to the contract - ZRC20NewTransactor // Write-only binding to the contract - ZRC20NewFilterer // Log filterer for contract events +// ZRC20 is an auto generated Go binding around an Ethereum contract. +type ZRC20 struct { + ZRC20Caller // Read-only binding to the contract + ZRC20Transactor // Write-only binding to the contract + ZRC20Filterer // Log filterer for contract events } -// ZRC20NewCaller is an auto generated read-only Go binding around an Ethereum contract. -type ZRC20NewCaller struct { +// ZRC20Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20Caller struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZRC20NewTransactor is an auto generated write-only Go binding around an Ethereum contract. -type ZRC20NewTransactor struct { +// ZRC20Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20Transactor struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZRC20NewFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type ZRC20NewFilterer struct { +// ZRC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20Filterer struct { contract *bind.BoundContract // Generic contract wrapper for the low level calls } -// ZRC20NewSession is an auto generated Go binding around an Ethereum contract, +// ZRC20Session is an auto generated Go binding around an Ethereum contract, // with pre-set call and transact options. -type ZRC20NewSession struct { - Contract *ZRC20New // Generic contract binding to set the session for +type ZRC20Session struct { + Contract *ZRC20 // Generic contract binding to set the session for CallOpts bind.CallOpts // Call options to use throughout this session TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ZRC20NewCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// ZRC20CallerSession is an auto generated read-only Go binding around an Ethereum contract, // with pre-set call options. -type ZRC20NewCallerSession struct { - Contract *ZRC20NewCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session +type ZRC20CallerSession struct { + Contract *ZRC20Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session } -// ZRC20NewTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// ZRC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract, // with pre-set transact options. -type ZRC20NewTransactorSession struct { - Contract *ZRC20NewTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +type ZRC20TransactorSession struct { + Contract *ZRC20Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session } -// ZRC20NewRaw is an auto generated low-level Go binding around an Ethereum contract. -type ZRC20NewRaw struct { - Contract *ZRC20New // Generic contract binding to access the raw methods on +// ZRC20Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20Raw struct { + Contract *ZRC20 // Generic contract binding to access the raw methods on } -// ZRC20NewCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type ZRC20NewCallerRaw struct { - Contract *ZRC20NewCaller // Generic read-only contract binding to access the raw methods on +// ZRC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20CallerRaw struct { + Contract *ZRC20Caller // Generic read-only contract binding to access the raw methods on } -// ZRC20NewTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type ZRC20NewTransactorRaw struct { - Contract *ZRC20NewTransactor // Generic write-only contract binding to access the raw methods on +// ZRC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20TransactorRaw struct { + Contract *ZRC20Transactor // Generic write-only contract binding to access the raw methods on } -// NewZRC20New creates a new instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20New(address common.Address, backend bind.ContractBackend) (*ZRC20New, error) { - contract, err := bindZRC20New(address, backend, backend, backend) +// NewZRC20 creates a new instance of ZRC20, bound to a specific deployed contract. +func NewZRC20(address common.Address, backend bind.ContractBackend) (*ZRC20, error) { + contract, err := bindZRC20(address, backend, backend, backend) if err != nil { return nil, err } - return &ZRC20New{ZRC20NewCaller: ZRC20NewCaller{contract: contract}, ZRC20NewTransactor: ZRC20NewTransactor{contract: contract}, ZRC20NewFilterer: ZRC20NewFilterer{contract: contract}}, nil + return &ZRC20{ZRC20Caller: ZRC20Caller{contract: contract}, ZRC20Transactor: ZRC20Transactor{contract: contract}, ZRC20Filterer: ZRC20Filterer{contract: contract}}, nil } -// NewZRC20NewCaller creates a new read-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewCaller(address common.Address, caller bind.ContractCaller) (*ZRC20NewCaller, error) { - contract, err := bindZRC20New(address, caller, nil, nil) +// NewZRC20Caller creates a new read-only instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Caller(address common.Address, caller bind.ContractCaller) (*ZRC20Caller, error) { + contract, err := bindZRC20(address, caller, nil, nil) if err != nil { return nil, err } - return &ZRC20NewCaller{contract: contract}, nil + return &ZRC20Caller{contract: contract}, nil } -// NewZRC20NewTransactor creates a new write-only instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20NewTransactor, error) { - contract, err := bindZRC20New(address, nil, transactor, nil) +// NewZRC20Transactor creates a new write-only instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20Transactor, error) { + contract, err := bindZRC20(address, nil, transactor, nil) if err != nil { return nil, err } - return &ZRC20NewTransactor{contract: contract}, nil + return &ZRC20Transactor{contract: contract}, nil } -// NewZRC20NewFilterer creates a new log filterer instance of ZRC20New, bound to a specific deployed contract. -func NewZRC20NewFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20NewFilterer, error) { - contract, err := bindZRC20New(address, nil, nil, filterer) +// NewZRC20Filterer creates a new log filterer instance of ZRC20, bound to a specific deployed contract. +func NewZRC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20Filterer, error) { + contract, err := bindZRC20(address, nil, nil, filterer) if err != nil { return nil, err } - return &ZRC20NewFilterer{contract: contract}, nil + return &ZRC20Filterer{contract: contract}, nil } -// bindZRC20New binds a generic wrapper to an already deployed contract. -func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := ZRC20NewMetaData.GetAbi() +// bindZRC20 binds a generic wrapper to an already deployed contract. +func bindZRC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20MetaData.GetAbi() if err != nil { return nil, err } @@ -168,46 +168,46 @@ func bindZRC20New(address common.Address, caller bind.ContractCaller, transactor // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ZRC20New *ZRC20NewRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.ZRC20NewCaller.contract.Call(opts, result, method, params...) +func (_ZRC20 *ZRC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20.Contract.ZRC20Caller.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ZRC20New *ZRC20NewRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transfer(opts) +func (_ZRC20 *ZRC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20.Contract.ZRC20Transactor.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.ZRC20NewTransactor.contract.Transact(opts, method, params...) +func (_ZRC20 *ZRC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20.Contract.ZRC20Transactor.contract.Transact(opts, method, params...) } // Call invokes the (constant) contract method with params as input values and // sets the output to result. The result type might be a single field for simple // returns, a slice of interfaces for anonymous returns and a struct for named // returns. -func (_ZRC20New *ZRC20NewCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _ZRC20New.Contract.contract.Call(opts, result, method, params...) +func (_ZRC20 *ZRC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20.Contract.contract.Call(opts, result, method, params...) } // Transfer initiates a plain transaction to move funds to the contract, calling // its default method if one is available. -func (_ZRC20New *ZRC20NewTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transfer(opts) +func (_ZRC20 *ZRC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20.Contract.contract.Transfer(opts) } // Transact invokes the (paid) contract method with params as input values. -func (_ZRC20New *ZRC20NewTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _ZRC20New.Contract.contract.Transact(opts, method, params...) +func (_ZRC20 *ZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20.Contract.contract.Transact(opts, method, params...) } // CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. // // Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) CHAINID(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "CHAIN_ID") + err := _ZRC20.contract.Call(opts, &out, "CHAIN_ID") if err != nil { return *new(*big.Int), err @@ -222,23 +222,23 @@ func (_ZRC20New *ZRC20NewCaller) CHAINID(opts *bind.CallOpts) (*big.Int, error) // CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. // // Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) CHAINID() (*big.Int, error) { + return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) } // CHAINID is a free data retrieval call binding the contract method 0x85e1f4d0. // // Solidity: function CHAIN_ID() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) CHAINID() (*big.Int, error) { - return _ZRC20New.Contract.CHAINID(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) CHAINID() (*big.Int, error) { + return _ZRC20.Contract.CHAINID(&_ZRC20.CallOpts) } // COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. // // Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { +func (_ZRC20 *ZRC20Caller) COINTYPE(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "COIN_TYPE") + err := _ZRC20.contract.Call(opts, &out, "COIN_TYPE") if err != nil { return *new(uint8), err @@ -253,23 +253,23 @@ func (_ZRC20New *ZRC20NewCaller) COINTYPE(opts *bind.CallOpts) (uint8, error) { // COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. // // Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) COINTYPE() (uint8, error) { + return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) } // COINTYPE is a free data retrieval call binding the contract method 0xa3413d03. // // Solidity: function COIN_TYPE() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) COINTYPE() (uint8, error) { - return _ZRC20New.Contract.COINTYPE(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) COINTYPE() (uint8, error) { + return _ZRC20.Contract.COINTYPE(&_ZRC20.CallOpts) } // FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. // // Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { +func (_ZRC20 *ZRC20Caller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") + err := _ZRC20.contract.Call(opts, &out, "FUNGIBLE_MODULE_ADDRESS") if err != nil { return *new(common.Address), err @@ -284,23 +284,23 @@ func (_ZRC20New *ZRC20NewCaller) FUNGIBLEMODULEADDRESS(opts *bind.CallOpts) (com // FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. // // Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) } // FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. // // Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { - return _ZRC20New.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error) { + return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) } // GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. // // Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GAS_LIMIT") + err := _ZRC20.contract.Call(opts, &out, "GAS_LIMIT") if err != nil { return *new(*big.Int), err @@ -315,23 +315,23 @@ func (_ZRC20New *ZRC20NewCaller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) // GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. // // Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) GASLIMIT() (*big.Int, error) { + return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) } // GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. // // Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) GASLIMIT() (*big.Int, error) { - return _ZRC20New.Contract.GASLIMIT(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) GASLIMIT() (*big.Int, error) { + return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) } // GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. // // Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { +func (_ZRC20 *ZRC20Caller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") + err := _ZRC20.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") if err != nil { return *new(common.Address), err @@ -346,23 +346,23 @@ func (_ZRC20New *ZRC20NewCaller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (co // GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. // // Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20.CallOpts) } // GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. // // Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20.CallOpts) } // PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. // // Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + err := _ZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") if err != nil { return *new(*big.Int), err @@ -377,23 +377,23 @@ func (_ZRC20New *ZRC20NewCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, // PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. // // Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) } // PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. // // Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20New.Contract.PROTOCOLFLATFEE(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { + return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) } // SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. // // Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { +func (_ZRC20 *ZRC20Caller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") + err := _ZRC20.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") if err != nil { return *new(common.Address), err @@ -408,23 +408,23 @@ func (_ZRC20New *ZRC20NewCaller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (com // SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. // // Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) } // SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. // // Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20New *ZRC20NewCallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20New.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { + return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "allowance", owner, spender) + err := _ZRC20.contract.Call(opts, &out, "allowance", owner, spender) if err != nil { return *new(*big.Int), err @@ -439,23 +439,23 @@ func (_ZRC20New *ZRC20NewCaller) Allowance(opts *bind.CallOpts, owner common.Add // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +func (_ZRC20 *ZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) } // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20New.Contract.Allowance(&_ZRC20New.CallOpts, owner, spender) +func (_ZRC20 *ZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "balanceOf", account) + err := _ZRC20.contract.Call(opts, &out, "balanceOf", account) if err != nil { return *new(*big.Int), err @@ -470,23 +470,23 @@ func (_ZRC20New *ZRC20NewCaller) BalanceOf(opts *bind.CallOpts, account common.A // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +func (_ZRC20 *ZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) } // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20New.Contract.BalanceOf(&_ZRC20New.CallOpts, account) +func (_ZRC20 *ZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { +func (_ZRC20 *ZRC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "decimals") + err := _ZRC20.contract.Call(opts, &out, "decimals") if err != nil { return *new(uint8), err @@ -501,23 +501,23 @@ func (_ZRC20New *ZRC20NewCaller) Decimals(opts *bind.CallOpts) (uint8, error) { // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) } // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) -func (_ZRC20New *ZRC20NewCallerSession) Decimals() (uint8, error) { - return _ZRC20New.Contract.Decimals(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) } // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { +func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "name") + err := _ZRC20.contract.Call(opts, &out, "name") if err != nil { return *new(string), err @@ -532,23 +532,23 @@ func (_ZRC20New *ZRC20NewCaller) Name(opts *bind.CallOpts) (string, error) { // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) } // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Name() (string, error) { - return _ZRC20New.Contract.Name(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. // // Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { +func (_ZRC20 *ZRC20Caller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "symbol") + err := _ZRC20.contract.Call(opts, &out, "symbol") if err != nil { return *new(string), err @@ -563,23 +563,23 @@ func (_ZRC20New *ZRC20NewCaller) Symbol(opts *bind.CallOpts) (string, error) { // Symbol is a free data retrieval call binding the contract method 0x95d89b41. // // Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. // // Solidity: function symbol() view returns(string) -func (_ZRC20New *ZRC20NewCallerSession) Symbol() (string, error) { - return _ZRC20New.Contract.Symbol(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { +func (_ZRC20 *ZRC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "totalSupply") + err := _ZRC20.contract.Call(opts, &out, "totalSupply") if err != nil { return *new(*big.Int), err @@ -594,23 +594,23 @@ func (_ZRC20New *ZRC20NewCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, err // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) TotalSupply() (*big.Int, error) { + return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) -func (_ZRC20New *ZRC20NewCallerSession) TotalSupply() (*big.Int, error) { - return _ZRC20New.Contract.TotalSupply(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) TotalSupply() (*big.Int, error) { + return _ZRC20.Contract.TotalSupply(&_ZRC20.CallOpts) } // WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. // // Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { +func (_ZRC20 *ZRC20Caller) WithdrawGasFee(opts *bind.CallOpts) (common.Address, *big.Int, error) { var out []interface{} - err := _ZRC20New.contract.Call(opts, &out, "withdrawGasFee") + err := _ZRC20.contract.Call(opts, &out, "withdrawGasFee") if err != nil { return *new(common.Address), *new(*big.Int), err @@ -626,209 +626,209 @@ func (_ZRC20New *ZRC20NewCaller) WithdrawGasFee(opts *bind.CallOpts) (common.Add // WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. // // Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20Session) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) } // WithdrawGasFee is a free data retrieval call binding the contract method 0xd9eeebed. // // Solidity: function withdrawGasFee() view returns(address, uint256) -func (_ZRC20New *ZRC20NewCallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { - return _ZRC20New.Contract.WithdrawGasFee(&_ZRC20New.CallOpts) +func (_ZRC20 *ZRC20CallerSession) WithdrawGasFee() (common.Address, *big.Int, error) { + return _ZRC20.Contract.WithdrawGasFee(&_ZRC20.CallOpts) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "approve", spender, amount) +func (_ZRC20 *ZRC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "approve", spender, amount) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +func (_ZRC20 *ZRC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Approve(&_ZRC20New.TransactOpts, spender, amount) +func (_ZRC20 *ZRC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Approve(&_ZRC20.TransactOpts, spender, amount) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // // Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "burn", amount) +func (_ZRC20 *ZRC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "burn", amount) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // // Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +func (_ZRC20 *ZRC20Session) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // // Solidity: function burn(uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Burn(&_ZRC20New.TransactOpts, amount) +func (_ZRC20 *ZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) } // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. // // Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "deposit", to, amount) +func (_ZRC20 *ZRC20Transactor) Deposit(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "deposit", to, amount) } // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. // // Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +func (_ZRC20 *ZRC20Session) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) } // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. // // Solidity: function deposit(address to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Deposit(&_ZRC20New.TransactOpts, to, amount) +func (_ZRC20 *ZRC20TransactorSession) Deposit(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transfer", recipient, amount) +func (_ZRC20 *ZRC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "transfer", recipient, amount) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +func (_ZRC20 *ZRC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Transfer(&_ZRC20New.TransactOpts, recipient, amount) +func (_ZRC20 *ZRC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Transfer(&_ZRC20.TransactOpts, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "transferFrom", sender, recipient, amount) +func (_ZRC20 *ZRC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +func (_ZRC20 *ZRC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.TransferFrom(&_ZRC20New.TransactOpts, sender, recipient, amount) +func (_ZRC20 *ZRC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.TransferFrom(&_ZRC20.TransactOpts, sender, recipient, amount) } // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // // Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateGasLimit", gasLimit) +func (_ZRC20 *ZRC20Transactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateGasLimit", gasLimit) } // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // // Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +func (_ZRC20 *ZRC20Session) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) } // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // // Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateGasLimit(&_ZRC20New.TransactOpts, gasLimit) +func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) } // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // // Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) +func (_ZRC20 *ZRC20Transactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) } // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // // Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +func (_ZRC20 *ZRC20Session) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) } // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // // Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateProtocolFlatFee(&_ZRC20New.TransactOpts, protocolFlatFee) +func (_ZRC20 *ZRC20TransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) } // UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. // // Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "updateSystemContractAddress", addr) +func (_ZRC20 *ZRC20Transactor) UpdateSystemContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateSystemContractAddress", addr) } // UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. // // Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +func (_ZRC20 *ZRC20Session) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) } // UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. // // Solidity: function updateSystemContractAddress(address addr) returns() -func (_ZRC20New *ZRC20NewTransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { - return _ZRC20New.Contract.UpdateSystemContractAddress(&_ZRC20New.TransactOpts, addr) +func (_ZRC20 *ZRC20TransactorSession) UpdateSystemContractAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateSystemContractAddress(&_ZRC20.TransactOpts, addr) } // Withdraw is a paid mutator transaction binding the contract method 0xc7012626. // // Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.contract.Transact(opts, "withdraw", to, amount) +func (_ZRC20 *ZRC20Transactor) Withdraw(opts *bind.TransactOpts, to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "withdraw", to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xc7012626. // // Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +func (_ZRC20 *ZRC20Session) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) } // Withdraw is a paid mutator transaction binding the contract method 0xc7012626. // // Solidity: function withdraw(bytes to, uint256 amount) returns(bool) -func (_ZRC20New *ZRC20NewTransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { - return _ZRC20New.Contract.Withdraw(&_ZRC20New.TransactOpts, to, amount) +func (_ZRC20 *ZRC20TransactorSession) Withdraw(to []byte, amount *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.Withdraw(&_ZRC20.TransactOpts, to, amount) } -// ZRC20NewApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20New contract. -type ZRC20NewApprovalIterator struct { - Event *ZRC20NewApproval // Event containing the contract specifics and raw log +// ZRC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ZRC20 contract. +type ZRC20ApprovalIterator struct { + Event *ZRC20Approval // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -842,7 +842,7 @@ type ZRC20NewApprovalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewApprovalIterator) Next() bool { +func (it *ZRC20ApprovalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -851,7 +851,7 @@ func (it *ZRC20NewApprovalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewApproval) + it.Event = new(ZRC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -866,7 +866,7 @@ func (it *ZRC20NewApprovalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewApproval) + it.Event = new(ZRC20Approval) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -882,19 +882,19 @@ func (it *ZRC20NewApprovalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewApprovalIterator) Error() error { +func (it *ZRC20ApprovalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewApprovalIterator) Close() error { +func (it *ZRC20ApprovalIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewApproval represents a Approval event raised by the ZRC20New contract. -type ZRC20NewApproval struct { +// ZRC20Approval represents a Approval event raised by the ZRC20 contract. +type ZRC20Approval struct { Owner common.Address Spender common.Address Value *big.Int @@ -904,7 +904,7 @@ type ZRC20NewApproval struct { // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20NewApprovalIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ZRC20ApprovalIterator, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -915,17 +915,17 @@ func (_ZRC20New *ZRC20NewFilterer) FilterApproval(opts *bind.FilterOpts, owner [ spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } - return &ZRC20NewApprovalIterator{contract: _ZRC20New.contract, event: "Approval", logs: logs, sub: sub}, nil + return &ZRC20ApprovalIterator{contract: _ZRC20.contract, event: "Approval", logs: logs, sub: sub}, nil } // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20NewApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ZRC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { var ownerRule []interface{} for _, ownerItem := range owner { @@ -936,7 +936,7 @@ func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan spenderRule = append(spenderRule, spenderItem) } - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) if err != nil { return nil, err } @@ -946,8 +946,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { + event := new(ZRC20Approval) + if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { return err } event.Raw = log @@ -971,18 +971,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchApproval(opts *bind.WatchOpts, sink chan // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseApproval(log types.Log) (*ZRC20NewApproval, error) { - event := new(ZRC20NewApproval) - if err := _ZRC20New.contract.UnpackLog(event, "Approval", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseApproval(log types.Log) (*ZRC20Approval, error) { + event := new(ZRC20Approval) + if err := _ZRC20.contract.UnpackLog(event, "Approval", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20New contract. -type ZRC20NewDepositIterator struct { - Event *ZRC20NewDeposit // Event containing the contract specifics and raw log +// ZRC20DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the ZRC20 contract. +type ZRC20DepositIterator struct { + Event *ZRC20Deposit // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -996,7 +996,7 @@ type ZRC20NewDepositIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewDepositIterator) Next() bool { +func (it *ZRC20DepositIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1005,7 +1005,7 @@ func (it *ZRC20NewDepositIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) + it.Event = new(ZRC20Deposit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1020,7 +1020,7 @@ func (it *ZRC20NewDepositIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewDeposit) + it.Event = new(ZRC20Deposit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1036,19 +1036,19 @@ func (it *ZRC20NewDepositIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewDepositIterator) Error() error { +func (it *ZRC20DepositIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewDepositIterator) Close() error { +func (it *ZRC20DepositIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewDeposit represents a Deposit event raised by the ZRC20New contract. -type ZRC20NewDeposit struct { +// ZRC20Deposit represents a Deposit event raised by the ZRC20 contract. +type ZRC20Deposit struct { From []byte To common.Address Value *big.Int @@ -1058,31 +1058,31 @@ type ZRC20NewDeposit struct { // FilterDeposit is a free log retrieval operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. // // Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20NewDepositIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterDeposit(opts *bind.FilterOpts, to []common.Address) (*ZRC20DepositIterator, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Deposit", toRule) + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Deposit", toRule) if err != nil { return nil, err } - return &ZRC20NewDepositIterator{contract: _ZRC20New.contract, event: "Deposit", logs: logs, sub: sub}, nil + return &ZRC20DepositIterator{contract: _ZRC20.contract, event: "Deposit", logs: logs, sub: sub}, nil } // WatchDeposit is a free log subscription operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. // // Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20NewDeposit, to []common.Address) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *ZRC20Deposit, to []common.Address) (event.Subscription, error) { var toRule []interface{} for _, toItem := range to { toRule = append(toRule, toItem) } - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Deposit", toRule) + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Deposit", toRule) if err != nil { return nil, err } @@ -1092,8 +1092,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan< select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { + event := new(ZRC20Deposit) + if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { return err } event.Raw = log @@ -1117,18 +1117,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan< // ParseDeposit is a log parse operation binding the contract event 0x67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab3. // // Solidity: event Deposit(bytes from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseDeposit(log types.Log) (*ZRC20NewDeposit, error) { - event := new(ZRC20NewDeposit) - if err := _ZRC20New.contract.UnpackLog(event, "Deposit", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseDeposit(log types.Log) (*ZRC20Deposit, error) { + event := new(ZRC20Deposit) + if err := _ZRC20.contract.UnpackLog(event, "Deposit", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20New contract. -type ZRC20NewTransferIterator struct { - Event *ZRC20NewTransfer // Event containing the contract specifics and raw log +// ZRC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZRC20 contract. +type ZRC20TransferIterator struct { + Event *ZRC20Transfer // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1142,7 +1142,7 @@ type ZRC20NewTransferIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewTransferIterator) Next() bool { +func (it *ZRC20TransferIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1151,7 +1151,7 @@ func (it *ZRC20NewTransferIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) + it.Event = new(ZRC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1166,7 +1166,7 @@ func (it *ZRC20NewTransferIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewTransfer) + it.Event = new(ZRC20Transfer) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1182,19 +1182,19 @@ func (it *ZRC20NewTransferIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewTransferIterator) Error() error { +func (it *ZRC20TransferIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewTransferIterator) Close() error { +func (it *ZRC20TransferIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewTransfer represents a Transfer event raised by the ZRC20New contract. -type ZRC20NewTransfer struct { +// ZRC20Transfer represents a Transfer event raised by the ZRC20 contract. +type ZRC20Transfer struct { From common.Address To common.Address Value *big.Int @@ -1204,7 +1204,7 @@ type ZRC20NewTransfer struct { // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20NewTransferIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ZRC20TransferIterator, error) { var fromRule []interface{} for _, fromItem := range from { @@ -1215,17 +1215,17 @@ func (_ZRC20New *ZRC20NewFilterer) FilterTransfer(opts *bind.FilterOpts, from [] toRule = append(toRule, toItem) } - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } - return &ZRC20NewTransferIterator{contract: _ZRC20New.contract, event: "Transfer", logs: logs, sub: sub}, nil + return &ZRC20TransferIterator{contract: _ZRC20.contract, event: "Transfer", logs: logs, sub: sub}, nil } // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20NewTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ZRC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { var fromRule []interface{} for _, fromItem := range from { @@ -1236,7 +1236,7 @@ func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan toRule = append(toRule, toItem) } - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule) if err != nil { return nil, err } @@ -1246,8 +1246,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { + event := new(ZRC20Transfer) + if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { return err } event.Raw = log @@ -1271,18 +1271,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // // Solidity: event Transfer(address indexed from, address indexed to, uint256 value) -func (_ZRC20New *ZRC20NewFilterer) ParseTransfer(log types.Log) (*ZRC20NewTransfer, error) { - event := new(ZRC20NewTransfer) - if err := _ZRC20New.contract.UnpackLog(event, "Transfer", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseTransfer(log types.Log) (*ZRC20Transfer, error) { + event := new(ZRC20Transfer) + if err := _ZRC20.contract.UnpackLog(event, "Transfer", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewUpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimitIterator struct { - Event *ZRC20NewUpdatedGasLimit // Event containing the contract specifics and raw log +// ZRC20UpdatedGasLimitIterator is returned from FilterUpdatedGasLimit and is used to iterate over the raw logs and unpacked data for UpdatedGasLimit events raised by the ZRC20 contract. +type ZRC20UpdatedGasLimitIterator struct { + Event *ZRC20UpdatedGasLimit // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1296,7 +1296,7 @@ type ZRC20NewUpdatedGasLimitIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { +func (it *ZRC20UpdatedGasLimitIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1305,7 +1305,7 @@ func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) + it.Event = new(ZRC20UpdatedGasLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1320,7 +1320,7 @@ func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedGasLimit) + it.Event = new(ZRC20UpdatedGasLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1336,19 +1336,19 @@ func (it *ZRC20NewUpdatedGasLimitIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedGasLimitIterator) Error() error { +func (it *ZRC20UpdatedGasLimitIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewUpdatedGasLimitIterator) Close() error { +func (it *ZRC20UpdatedGasLimitIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewUpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20New contract. -type ZRC20NewUpdatedGasLimit struct { +// ZRC20UpdatedGasLimit represents a UpdatedGasLimit event raised by the ZRC20 contract. +type ZRC20UpdatedGasLimit struct { GasLimit *big.Int Raw types.Log // Blockchain specific contextual infos } @@ -1356,21 +1356,21 @@ type ZRC20NewUpdatedGasLimit struct { // FilterUpdatedGasLimit is a free log retrieval operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. // // Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20NewUpdatedGasLimitIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterUpdatedGasLimit(opts *bind.FilterOpts) (*ZRC20UpdatedGasLimitIterator, error) { - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedGasLimit") + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedGasLimit") if err != nil { return nil, err } - return &ZRC20NewUpdatedGasLimitIterator{contract: _ZRC20New.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil + return &ZRC20UpdatedGasLimitIterator{contract: _ZRC20.contract, event: "UpdatedGasLimit", logs: logs, sub: sub}, nil } // WatchUpdatedGasLimit is a free log subscription operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. // // Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedGasLimit) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedGasLimit) (event.Subscription, error) { - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedGasLimit") + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedGasLimit") if err != nil { return nil, err } @@ -1380,8 +1380,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { + event := new(ZRC20UpdatedGasLimit) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { return err } event.Raw = log @@ -1405,18 +1405,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedGasLimit(opts *bind.WatchOpts, si // ParseUpdatedGasLimit is a log parse operation binding the contract event 0xff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a. // // Solidity: event UpdatedGasLimit(uint256 gasLimit) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20NewUpdatedGasLimit, error) { - event := new(ZRC20NewUpdatedGasLimit) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20UpdatedGasLimit, error) { + event := new(ZRC20UpdatedGasLimit) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGasLimit", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFeeIterator struct { - Event *ZRC20NewUpdatedProtocolFlatFee // Event containing the contract specifics and raw log +// ZRC20UpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20 contract. +type ZRC20UpdatedProtocolFlatFeeIterator struct { + Event *ZRC20UpdatedProtocolFlatFee // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1430,7 +1430,7 @@ type ZRC20NewUpdatedProtocolFlatFeeIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1439,7 +1439,7 @@ func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + it.Event = new(ZRC20UpdatedProtocolFlatFee) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1454,7 +1454,7 @@ func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedProtocolFlatFee) + it.Event = new(ZRC20UpdatedProtocolFlatFee) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1470,19 +1470,19 @@ func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Error() error { +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewUpdatedProtocolFlatFeeIterator) Close() error { +func (it *ZRC20UpdatedProtocolFlatFeeIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewUpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20New contract. -type ZRC20NewUpdatedProtocolFlatFee struct { +// ZRC20UpdatedProtocolFlatFee represents a UpdatedProtocolFlatFee event raised by the ZRC20 contract. +type ZRC20UpdatedProtocolFlatFee struct { ProtocolFlatFee *big.Int Raw types.Log // Blockchain specific contextual infos } @@ -1490,21 +1490,21 @@ type ZRC20NewUpdatedProtocolFlatFee struct { // FilterUpdatedProtocolFlatFee is a free log retrieval operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. // // Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20NewUpdatedProtocolFlatFeeIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterUpdatedProtocolFlatFee(opts *bind.FilterOpts) (*ZRC20UpdatedProtocolFlatFeeIterator, error) { - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedProtocolFlatFee") if err != nil { return nil, err } - return &ZRC20NewUpdatedProtocolFlatFeeIterator{contract: _ZRC20New.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil + return &ZRC20UpdatedProtocolFlatFeeIterator{contract: _ZRC20.contract, event: "UpdatedProtocolFlatFee", logs: logs, sub: sub}, nil } // WatchUpdatedProtocolFlatFee is a free log subscription operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. // // Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedProtocolFlatFee) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedProtocolFlatFee) (event.Subscription, error) { - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedProtocolFlatFee") if err != nil { return nil, err } @@ -1514,8 +1514,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchO select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { + event := new(ZRC20UpdatedProtocolFlatFee) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { return err } event.Raw = log @@ -1539,18 +1539,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedProtocolFlatFee(opts *bind.WatchO // ParseUpdatedProtocolFlatFee is a log parse operation binding the contract event 0xef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f. // // Solidity: event UpdatedProtocolFlatFee(uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20NewUpdatedProtocolFlatFee, error) { - event := new(ZRC20NewUpdatedProtocolFlatFee) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseUpdatedProtocolFlatFee(log types.Log) (*ZRC20UpdatedProtocolFlatFee, error) { + event := new(ZRC20UpdatedProtocolFlatFee) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedProtocolFlatFee", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewUpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContractIterator struct { - Event *ZRC20NewUpdatedSystemContract // Event containing the contract specifics and raw log +// ZRC20UpdatedSystemContractIterator is returned from FilterUpdatedSystemContract and is used to iterate over the raw logs and unpacked data for UpdatedSystemContract events raised by the ZRC20 contract. +type ZRC20UpdatedSystemContractIterator struct { + Event *ZRC20UpdatedSystemContract // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1564,7 +1564,7 @@ type ZRC20NewUpdatedSystemContractIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { +func (it *ZRC20UpdatedSystemContractIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1573,7 +1573,7 @@ func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) + it.Event = new(ZRC20UpdatedSystemContract) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1588,7 +1588,7 @@ func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewUpdatedSystemContract) + it.Event = new(ZRC20UpdatedSystemContract) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1604,19 +1604,19 @@ func (it *ZRC20NewUpdatedSystemContractIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewUpdatedSystemContractIterator) Error() error { +func (it *ZRC20UpdatedSystemContractIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewUpdatedSystemContractIterator) Close() error { +func (it *ZRC20UpdatedSystemContractIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewUpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20New contract. -type ZRC20NewUpdatedSystemContract struct { +// ZRC20UpdatedSystemContract represents a UpdatedSystemContract event raised by the ZRC20 contract. +type ZRC20UpdatedSystemContract struct { SystemContract common.Address Raw types.Log // Blockchain specific contextual infos } @@ -1624,21 +1624,21 @@ type ZRC20NewUpdatedSystemContract struct { // FilterUpdatedSystemContract is a free log retrieval operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. // // Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20NewUpdatedSystemContractIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterUpdatedSystemContract(opts *bind.FilterOpts) (*ZRC20UpdatedSystemContractIterator, error) { - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "UpdatedSystemContract") + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedSystemContract") if err != nil { return nil, err } - return &ZRC20NewUpdatedSystemContractIterator{contract: _ZRC20New.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil + return &ZRC20UpdatedSystemContractIterator{contract: _ZRC20.contract, event: "UpdatedSystemContract", logs: logs, sub: sub}, nil } // WatchUpdatedSystemContract is a free log subscription operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. // // Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20NewUpdatedSystemContract) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchUpdatedSystemContract(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedSystemContract) (event.Subscription, error) { - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "UpdatedSystemContract") + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedSystemContract") if err != nil { return nil, err } @@ -1648,8 +1648,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { + event := new(ZRC20UpdatedSystemContract) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { return err } event.Raw = log @@ -1673,18 +1673,18 @@ func (_ZRC20New *ZRC20NewFilterer) WatchUpdatedSystemContract(opts *bind.WatchOp // ParseUpdatedSystemContract is a log parse operation binding the contract event 0xd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae. // // Solidity: event UpdatedSystemContract(address systemContract) -func (_ZRC20New *ZRC20NewFilterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20NewUpdatedSystemContract, error) { - event := new(ZRC20NewUpdatedSystemContract) - if err := _ZRC20New.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseUpdatedSystemContract(log types.Log) (*ZRC20UpdatedSystemContract, error) { + event := new(ZRC20UpdatedSystemContract) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedSystemContract", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ZRC20NewWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20New contract. -type ZRC20NewWithdrawalIterator struct { - Event *ZRC20NewWithdrawal // Event containing the contract specifics and raw log +// ZRC20WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the ZRC20 contract. +type ZRC20WithdrawalIterator struct { + Event *ZRC20Withdrawal // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1698,7 +1698,7 @@ type ZRC20NewWithdrawalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ZRC20NewWithdrawalIterator) Next() bool { +func (it *ZRC20WithdrawalIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1707,7 +1707,7 @@ func (it *ZRC20NewWithdrawalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) + it.Event = new(ZRC20Withdrawal) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1722,7 +1722,7 @@ func (it *ZRC20NewWithdrawalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ZRC20NewWithdrawal) + it.Event = new(ZRC20Withdrawal) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1738,19 +1738,19 @@ func (it *ZRC20NewWithdrawalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ZRC20NewWithdrawalIterator) Error() error { +func (it *ZRC20WithdrawalIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ZRC20NewWithdrawalIterator) Close() error { +func (it *ZRC20WithdrawalIterator) Close() error { it.sub.Unsubscribe() return nil } -// ZRC20NewWithdrawal represents a Withdrawal event raised by the ZRC20New contract. -type ZRC20NewWithdrawal struct { +// ZRC20Withdrawal represents a Withdrawal event raised by the ZRC20 contract. +type ZRC20Withdrawal struct { From common.Address To []byte Value *big.Int @@ -1762,31 +1762,31 @@ type ZRC20NewWithdrawal struct { // FilterWithdrawal is a free log retrieval operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. // // Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20NewWithdrawalIterator, error) { +func (_ZRC20 *ZRC20Filterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*ZRC20WithdrawalIterator, error) { var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) } - logs, sub, err := _ZRC20New.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "Withdrawal", fromRule) if err != nil { return nil, err } - return &ZRC20NewWithdrawalIterator{contract: _ZRC20New.contract, event: "Withdrawal", logs: logs, sub: sub}, nil + return &ZRC20WithdrawalIterator{contract: _ZRC20.contract, event: "Withdrawal", logs: logs, sub: sub}, nil } // WatchWithdrawal is a free log subscription operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. // // Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20NewWithdrawal, from []common.Address) (event.Subscription, error) { +func (_ZRC20 *ZRC20Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *ZRC20Withdrawal, from []common.Address) (event.Subscription, error) { var fromRule []interface{} for _, fromItem := range from { fromRule = append(fromRule, fromItem) } - logs, sub, err := _ZRC20New.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "Withdrawal", fromRule) if err != nil { return nil, err } @@ -1796,8 +1796,8 @@ func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { + event := new(ZRC20Withdrawal) + if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { return err } event.Raw = log @@ -1821,9 +1821,9 @@ func (_ZRC20New *ZRC20NewFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink ch // ParseWithdrawal is a log parse operation binding the contract event 0x9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955. // // Solidity: event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee) -func (_ZRC20New *ZRC20NewFilterer) ParseWithdrawal(log types.Log) (*ZRC20NewWithdrawal, error) { - event := new(ZRC20NewWithdrawal) - if err := _ZRC20New.contract.UnpackLog(event, "Withdrawal", log); err != nil { +func (_ZRC20 *ZRC20Filterer) ParseWithdrawal(log types.Log) (*ZRC20Withdrawal, error) { + event := new(ZRC20Withdrawal) + if err := _ZRC20.contract.UnpackLog(event, "Withdrawal", log); err != nil { return nil, err } event.Raw = log diff --git a/v2/pkg/zrc20new.sol/zrc20errors.go b/v2/pkg/zrc20.sol/zrc20errors.go similarity index 99% rename from v2/pkg/zrc20new.sol/zrc20errors.go rename to v2/pkg/zrc20.sol/zrc20errors.go index 0e2f5b87..5a845463 100644 --- a/v2/pkg/zrc20new.sol/zrc20errors.go +++ b/v2/pkg/zrc20.sol/zrc20errors.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package zrc20new +package zrc20 import ( "errors" diff --git a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol index 2db54f6d..29adb9ab 100644 --- a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol +++ b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.26; import "forge-std/Script.sol"; import "src/zevm/GatewayZEVM.sol"; import "test/utils/ReceiverEVM.sol"; -import "test/utils/ZRC20New.sol"; +import "test/utils/ZRC20.sol"; // ZevmWithdrawAndCallScript executes withdrawAndCall method on GatewayZEVM and it should be used on localnet. // It uses anvil private key, and sets default contract addresses deployed on fresh localnet, that can be overriden with env vars. @@ -22,7 +22,7 @@ contract ZevmWithdrawAndCallScript is Script { GatewayZEVM gatewayZEVM = GatewayZEVM(gatewayZEVMAddress); ReceiverEVM receiverEVM = ReceiverEVM(receiverEVMAddress); - ZRC20New zrc20 = ZRC20New(zrc20Address); + ZRC20 zrc20 = ZRC20(zrc20Address); string memory str = "Hello!"; uint256 num = 42; diff --git a/v2/scripts/localnet/worker.ts b/v2/scripts/localnet/worker.ts index b5706cfd..a59f44c0 100644 --- a/v2/scripts/localnet/worker.ts +++ b/v2/scripts/localnet/worker.ts @@ -1,6 +1,6 @@ import { ethers, NonceManager, Signer } from "ethers"; import * as GatewayEVM from "../../out/GatewayEVM.sol/GatewayEVM.json"; -import * as Custody from "../../out/ERC20CustodyNew.sol/ERC20CustodyNew.json"; +import * as Custody from "../../out/ERC20Custody.sol/ERC20Custody.json"; import * as ReceiverEVM from "../../out/ReceiverEVM.sol/ReceiverEVM.json"; import * as SenderZEVM from "../../out/SenderZEVM.sol/SenderZEVM.json"; import * as ERC1967Proxy from "../../out/ERC1967Proxy.sol/ERC1967Proxy.json"; @@ -8,7 +8,7 @@ import * as TestERC20 from "../../out/TestERC20.sol/TestERC20.json"; import * as SystemContract from "../../out/SystemContractMock.sol/SystemContractMock.json"; import * as GatewayZEVM from "../../out/GatewayZEVM.sol/GatewayZEVM.json"; import * as TestZContract from "../../out/TestZContract.sol/TestZContract.json"; -import * as ZRC20New from "../../out/ZRC20New.sol/ZRC20New.json"; +import * as ZRC20 from "../../out/ZRC20.sol/ZRC20.json"; import * as ZetaConnectorNonNative from "../../out/ZetaConnectorNonNative.sol/ZetaConnectorNonNative.json"; import * as WETH9 from "../../out/WZETA.sol/WETH9.json"; /* eslint-disable @typescript-eslint/no-explicit-any */ @@ -140,7 +140,7 @@ const deployTestContracts = async (protocolContracts: any, deployer: Signer, fun const testZContract = await testZContractFactory.deploy(deployOpts); console.log("TestZContract:", testZContract.target); - const zrc20Factory = new ethers.ContractFactory(ZRC20New.abi, ZRC20New.bytecode, deployer); + const zrc20Factory = new ethers.ContractFactory(ZRC20.abi, ZRC20.bytecode, deployer); const zrc20 = await zrc20Factory .connect(fungibleModuleSigner) .deploy( diff --git a/v2/src/evm/ERC20CustodyNew.sol b/v2/src/evm/ERC20Custody.sol similarity index 95% rename from v2/src/evm/ERC20CustodyNew.sol rename to v2/src/evm/ERC20Custody.sol index 66580925..2516f65f 100644 --- a/v2/src/evm/ERC20CustodyNew.sol +++ b/v2/src/evm/ERC20Custody.sol @@ -2,15 +2,15 @@ pragma solidity 0.8.26; import "./interfaces//IGatewayEVM.sol"; -import "./interfaces/IERC20CustodyNew.sol"; +import "./interfaces/IERC20Custody.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -/// @title ERC20CustodyNew +/// @title ERC20Custody /// @notice Holds the ERC20 tokens deposited on ZetaChain and includes functionality to call a contract. /// @dev This contract does not call smart contracts directly, it passes through the Gateway contract. -contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, ReentrancyGuard { +contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGuard { using SafeERC20 for IERC20; /// @notice Gateway contract. diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index b064154f..3227e1d2 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; -import "./ZetaConnectorNewBase.sol"; +import "./ZetaConnectorBase.sol"; import "./interfaces/IGatewayEVM.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; @@ -263,7 +263,7 @@ contract GatewayEVM is // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { // transfer to custody IERC20(token).safeTransferFrom(from, custody, amount); @@ -281,7 +281,7 @@ contract GatewayEVM is // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { // transfer to custody IERC20(token).safeTransfer(custody, amount); diff --git a/v2/src/evm/ZetaConnectorNewBase.sol b/v2/src/evm/ZetaConnectorBase.sol similarity index 96% rename from v2/src/evm/ZetaConnectorNewBase.sol rename to v2/src/evm/ZetaConnectorBase.sol index 62be9d83..c200a1ea 100644 --- a/v2/src/evm/ZetaConnectorNewBase.sol +++ b/v2/src/evm/ZetaConnectorBase.sol @@ -8,10 +8,10 @@ import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; import "src/evm/interfaces/IZetaConnector.sol"; -/// @title ZetaConnectorNewBase +/// @title ZetaConnectorBase /// @notice Abstract base contract for ZetaConnector. /// @dev This contract implements basic functionality for handling tokens and interacting with the Gateway contract. -abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { +abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard { using SafeERC20 for IERC20; /// @notice Error indicating that a zero address was provided. diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index 38291ba1..0a06b064 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; -import "./ZetaConnectorNewBase.sol"; +import "./ZetaConnectorBase.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; /// @title ZetaConnectorNative -/// @notice Implementation of ZetaConnectorNewBase for native token handling. +/// @notice Implementation of ZetaConnectorBase for native token handling. /// @dev This contract directly transfers Zeta tokens and interacts with the Gateway contract. -contract ZetaConnectorNative is ZetaConnectorNewBase { +contract ZetaConnectorNative is ZetaConnectorBase { using SafeERC20 for IERC20; constructor( @@ -16,7 +16,7 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { address _zetaToken, address _tssAddress ) - ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) + ZetaConnectorBase(_gateway, _zetaToken, _tssAddress) { } /// @notice Withdraw tokens to a specified address. diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index b16544d1..5cfbfe7e 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; -import "./ZetaConnectorNewBase.sol"; +import "./ZetaConnectorBase.sol"; import "./interfaces/IZetaNonEthNew.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; /// @title ZetaConnectorNonNative -/// @notice Implementation of ZetaConnectorNewBase for non-native token handling. +/// @notice Implementation of ZetaConnectorBase for non-native token handling. /// @dev This contract mints and burns Zeta tokens and interacts with the Gateway contract. -contract ZetaConnectorNonNative is ZetaConnectorNewBase { +contract ZetaConnectorNonNative is ZetaConnectorBase { /// @notice Max supply for minting. uint256 public maxSupply = type(uint256).max; @@ -23,7 +23,7 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { address _zetaToken, address _tssAddress ) - ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) + ZetaConnectorBase(_gateway, _zetaToken, _tssAddress) { } /// @notice Set max supply for minting. diff --git a/v2/src/evm/interfaces/IERC20CustodyNew.sol b/v2/src/evm/interfaces/IERC20Custody.sol similarity index 91% rename from v2/src/evm/interfaces/IERC20CustodyNew.sol rename to v2/src/evm/interfaces/IERC20Custody.sol index 27978071..37b24306 100644 --- a/v2/src/evm/interfaces/IERC20CustodyNew.sol +++ b/v2/src/evm/interfaces/IERC20Custody.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; -/// @title IERC20CustodyNewEvents +/// @title IERC20CustodyEvents /// @notice Interface for the events emitted by the ERC20 custody contract. -interface IERC20CustodyNewEvents { +interface IERC20CustodyEvents { /// @notice Emitted when tokens are withdrawn. /// @param token The address of the ERC20 token. /// @param to The address receiving the tokens. @@ -25,9 +25,9 @@ interface IERC20CustodyNewEvents { event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); } -/// @title IERC20CustodyNewErrors +/// @title IERC20CustodyErrors /// @notice Interface for the errors used in the ERC20 custody contract. -interface IERC20CustodyNewErrors { +interface IERC20CustodyErrors { /// @notice Error for zero address input. error ZeroAddress(); diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index b18bc34a..758217ba 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -14,19 +14,19 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "./utils/IReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; -import "src/evm/interfaces/IERC20CustodyNew.sol"; +import "src/evm/interfaces/IERC20Custody.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; -contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyNewEvents { +contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents, IERC20CustodyEvents { using SafeERC20 for IERC20; address proxy; GatewayEVM gateway; ReceiverEVM receiver; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNonNative zetaConnector; TestERC20 token; TestERC20 zeta; @@ -46,7 +46,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); @@ -409,7 +409,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR address proxy; GatewayEVM gateway; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNonNative zetaConnector; TestERC20 token; TestERC20 zeta; @@ -431,7 +431,7 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); vm.deal(tssAddress, 1 ether); diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index bc447638..524efee9 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -18,7 +18,7 @@ import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "./utils/IReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; @@ -31,7 +31,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents address proxy; GatewayEVM gateway; ReceiverEVM receiver; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNonNative zetaConnector; TestERC20 token; TestERC20 zeta; @@ -52,7 +52,7 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents ); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); receiver = new ReceiverEVM(); diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index 4a9b84c6..baae27b8 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -7,14 +7,14 @@ import "forge-std/Vm.sol"; import "./utils/ReceiverEVM.sol"; import "./utils/TestERC20.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; import "./utils/SenderZEVM.sol"; import "./utils/SystemContractMock.sol"; -import "./utils/ZRC20New.sol"; +import "./utils/ZRC20.sol"; import "src/zevm/GatewayZEVM.sol"; import "./utils/IReceiverEVM.sol"; @@ -38,7 +38,7 @@ contract GatewayEVMZEVMTest is address proxyEVM; GatewayEVM gatewayEVM; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNonNative zetaConnector; TestERC20 token; TestERC20 zeta; @@ -52,7 +52,7 @@ contract GatewayEVMZEVMTest is GatewayZEVM gatewayZEVM; SenderZEVM senderZEVM; SystemContractMock systemContract; - ZRC20New zrc20; + ZRC20 zrc20; address ownerZEVM; function setUp() public { @@ -69,7 +69,7 @@ contract GatewayEVMZEVMTest is "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) ); gatewayEVM = GatewayEVM(proxyEVM); - custody = new ERC20CustodyNew(address(gatewayEVM), tssAddress); + custody = new ERC20Custody(address(gatewayEVM), tssAddress); zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); vm.deal(tssAddress, 1 ether); @@ -94,7 +94,7 @@ contract GatewayEVMZEVMTest is address fungibleModuleAddress = address(0x735b14BB79463307AAcBED86DAf3322B1e6226aB); vm.startPrank(fungibleModuleAddress); systemContract = new SystemContractMock(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Zeta, 0, address(systemContract), address(gatewayZEVM)); + zrc20 = new ZRC20("TOKEN", "TKN", 18, 1, CoinType.Zeta, 0, address(systemContract), address(gatewayZEVM)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); zrc20.deposit(ownerZEVM, 1_000_000); diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index f6132b90..8d6d898b 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -9,7 +9,7 @@ import "./utils/SystemContract.sol"; import "./utils/TestZContract.sol"; import "./utils/WZETA.sol"; -import "./utils/ZRC20New.sol"; +import "./utils/ZRC20.sol"; import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "src/zevm/GatewayZEVM.sol"; import "src/zevm/interfaces/IGatewayZEVM.sol"; @@ -18,7 +18,7 @@ import "src/zevm/interfaces/IZRC20.sol"; contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { address payable proxy; GatewayZEVM gateway; - ZRC20New zrc20; + ZRC20 zrc20; WETH9 zetaToken; SystemContract systemContract; TestZContract testZContract; @@ -42,7 +42,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors vm.startPrank(fungibleModule); systemContract = new SystemContract(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); + zrc20 = new ZRC20("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); vm.deal(fungibleModule, 1_000_000_000); @@ -211,7 +211,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors { address payable proxy; GatewayZEVM gateway; - ZRC20New zrc20; + ZRC20 zrc20; WETH9 zetaToken; SystemContract systemContract; TestZContract testZContract; @@ -239,7 +239,7 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors vm.startPrank(fungibleModule); systemContract = new SystemContract(address(0), address(0), address(0)); - zrc20 = new ZRC20New("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); + zrc20 = new ZRC20("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); systemContract.setGasCoinZRC20(1, address(zrc20)); systemContract.setGasPrice(1, 1); vm.deal(fungibleModule, 1_000_000_000); diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index f03e4a81..54837aeb 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -15,7 +15,7 @@ import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "./utils/IReceiverEVM.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNative.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; @@ -33,7 +33,7 @@ contract ZetaConnectorNativeTest is address proxy; GatewayEVM gateway; ReceiverEVM receiver; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNative zetaConnector; TestERC20 zetaToken; address owner; @@ -51,7 +51,7 @@ contract ZetaConnectorNativeTest is "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) ); gateway = GatewayEVM(proxy); - custody = new ERC20CustodyNew(address(gateway), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress); zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress); receiver = new ReceiverEVM(); diff --git a/v2/test/ZetaConnectorNonNative.t.sol b/v2/test/ZetaConnectorNonNative.t.sol index bc993b2d..b1546da1 100644 --- a/v2/test/ZetaConnectorNonNative.t.sol +++ b/v2/test/ZetaConnectorNonNative.t.sol @@ -12,7 +12,7 @@ import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "src/evm/ZetaConnectorNonNative.sol"; @@ -33,9 +33,9 @@ contract ZetaConnectorNonNativeTest is address proxy; GatewayEVM gateway; ReceiverEVM receiver; - ERC20CustodyNew custody; + ERC20Custody custody; ZetaConnectorNonNative zetaConnector; - // ZetaNonEth zetaToken; + ZetaNonEth zetaToken; address owner; address destination; address tssAddress; @@ -45,222 +45,222 @@ contract ZetaConnectorNonNativeTest is destination = address(0x1234); tssAddress = address(0x5678); - // zetaToken = new ZetaNonEth(tssAddress, tssAddress); + zetaToken = new ZetaNonEth(tssAddress, tssAddress); - // proxy = Upgrades.deployUUPSProxy( - // "GatewayEVM.sol", - // abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) - // ); - // gateway = GatewayEVM(proxy); + proxy = Upgrades.deployUUPSProxy( + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) + ); + gateway = GatewayEVM(proxy); - // custody = new ERC20CustodyNew(address(gateway), tssAddress); - // zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); - // vm.prank(tssAddress); - // zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); + vm.prank(tssAddress); + zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); - // receiver = new ReceiverEVM(); + receiver = new ReceiverEVM(); - // vm.deal(tssAddress, 1 ether); + vm.deal(tssAddress, 1 ether); - // vm.startPrank(tssAddress); - // gateway.setCustody(address(custody)); - // gateway.setConnector(address(zetaConnector)); - // vm.stopPrank(); + vm.startPrank(tssAddress); + gateway.setCustody(address(custody)); + gateway.setConnector(address(zetaConnector)); + vm.stopPrank(); } - // function testWithdraw() public { - // uint256 amount = 100000; - // uint256 balanceBefore = zetaToken.balanceOf(destination); - // assertEq(balanceBefore, 0); - // bytes32 internalSendHash = ""; - - // bytes memory data = abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, - // internalSendHash); - // vm.expectCall(address(zetaToken), 0, data); - // vm.expectEmit(true, true, true, true, address(zetaConnector)); - // emit Withdraw(destination, amount); - // vm.prank(tssAddress); - // zetaConnector.withdraw(destination, amount, internalSendHash); - // uint256 balanceAfter = zetaToken.balanceOf(destination); - // assertEq(balanceAfter, amount); - // } - - // function testWithdrawFailsIfSenderIsNotTSS() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - - // vm.prank(owner); - // vm.expectRevert(InvalidSender.selector); - // zetaConnector.withdraw(destination, amount, internalSendHash); - // } - - // function testWithdrawAndCallReceiveERC20() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, - // address(zetaToken), destination); - // uint256 balanceBefore = zetaToken.balanceOf(destination); - // assertEq(balanceBefore, 0); - // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceBeforeZetaConnector, 0); - - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, - // internalSendHash); - // vm.expectCall(address(zetaToken), 0, mintData); - // vm.expectEmit(true, true, true, true, address(receiver)); - // emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); - // vm.expectEmit(true, true, true, true, address(zetaConnector)); - // emit WithdrawAndCall(address(receiver), amount, data); - // vm.prank(tssAddress); - // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // // Verify that the tokens were transferred to the destination address - // uint256 balanceAfter = zetaToken.balanceOf(destination); - // assertEq(balanceAfter, amount); - - // // Verify that zeta connector doesn't hold any tokens - // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceAfterZetaConnector, 0); - - // // Verify that the approval was reset - // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - // assertEq(allowance, 0); - - // // Verify that gateway doesn't hold any tokens - // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - // assertEq(balanceGateway, 0); - // } - - // function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, - // address(zetaToken), destination); - - // vm.prank(owner); - // vm.expectRevert(InvalidSender.selector); - // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - // } - - // function testWithdrawAndCallReceiveNoParams() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveNoParams()"); - // uint256 balanceBefore = zetaToken.balanceOf(destination); - // assertEq(balanceBefore, 0); - // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceBeforeZetaConnector, 0); - - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, - // internalSendHash); - // vm.expectCall(address(zetaToken), 0, mintData); - // vm.expectEmit(true, true, true, true, address(receiver)); - // emit ReceivedNoParams(address(gateway)); - // vm.expectEmit(true, true, true, true, address(zetaConnector)); - // emit WithdrawAndCall(address(receiver), amount, data); - // vm.prank(tssAddress); - // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // // Verify that the no tokens were transferred to the destination address - // uint256 balanceAfter = zetaToken.balanceOf(destination); - // assertEq(balanceAfter, 0); - - // // Verify that zeta connector doesn't hold any tokens - // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceAfterZetaConnector, 0); - - // // Verify that the approval was reset - // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - // assertEq(allowance, 0); - - // // Verify that gateway doesn't hold any tokens - // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - // assertEq(balanceGateway, 0); - // } - - // function testWithdrawAndCallReceiveERC20Partial() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, - // address(zetaToken), destination); - // uint256 balanceBefore = zetaToken.balanceOf(destination); - // assertEq(balanceBefore, 0); - // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceBeforeZetaConnector, 0); - - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, - // internalSendHash); - // vm.expectCall(address(zetaToken), 0, mintData); - // vm.expectEmit(true, true, true, true, address(receiver)); - // emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); - // vm.expectEmit(true, true, true, true, address(zetaConnector)); - // emit WithdrawAndCall(address(receiver), amount, data); - // vm.prank(tssAddress); - // zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - - // // Verify that the tokens were transferred to the destination address - // uint256 balanceAfter = zetaToken.balanceOf(destination); - // assertEq(balanceAfter, amount / 2); - - // // Verify that zeta connector doesn't hold any tokens - // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceAfterZetaConnector, 0); - - // // Verify that the approval was reset - // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - // assertEq(allowance, 0); - - // // Verify that gateway doesn't hold any tokens - // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - // assertEq(balanceGateway, 0); - // } - - // function testWithdrawAndRevert() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodePacked("hello"); - // uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); - // assertEq(balanceBefore, 0); - // uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - - // bytes memory mintData = abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, - // internalSendHash); - // vm.expectCall(address(zetaToken), 0, mintData); - // // Verify that onRevert callback was called - // vm.expectEmit(true, true, true, true, address(receiver)); - // emit ReceivedRevert(address(gateway), data); - // vm.expectEmit(true, true, true, true, address(gateway)); - // emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); - // vm.expectEmit(true, true, true, true, address(zetaConnector)); - // emit WithdrawAndRevert(address(receiver), amount, data); - // vm.prank(tssAddress); - // zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - - // // Verify that the tokens were transferred to the receiver address - // uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); - // assertEq(balanceAfter, amount); - - // // Verify that zeta connector doesn't get more tokens - // uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); - // assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); - - // // Verify that the approval was reset - // uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); - // assertEq(allowance, 0); - - // // Verify that gateway doesn't hold any tokens - // uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); - // assertEq(balanceGateway, 0); - // } - - // function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { - // uint256 amount = 100000; - // bytes32 internalSendHash = ""; - // bytes memory data = abi.encodePacked("hello"); - - // vm.prank(owner); - // vm.expectRevert(InvalidSender.selector); - // zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - // } + function testWithdraw() public { + uint256 amount = 100_000; + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + bytes32 internalSendHash = ""; + + bytes memory data = + abi.encodeWithSignature("mint(address,uint256,bytes32)", destination, amount, internalSendHash); + vm.expectCall(address(zetaToken), 0, data); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit Withdraw(destination, amount); + vm.prank(tssAddress); + zetaConnector.withdraw(destination, amount, internalSendHash); + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount); + } + + function testWithdrawFailsIfSenderIsNotTSS() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdraw(destination, amount, internalSendHash); + } + + function testWithdrawAndCallReceiveERC20() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceBeforeZetaConnector, 0); + + bytes memory mintData = + abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + vm.expectCall(address(zetaToken), 0, mintData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount, address(zetaToken), destination); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount); + + // Verify that zeta connector doesn't hold any tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, 0); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = + abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + } + + function testWithdrawAndCallReceiveNoParams() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceBeforeZetaConnector, 0); + + bytes memory mintData = + abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + vm.expectCall(address(zetaToken), 0, mintData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNoParams(address(gateway)); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the no tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, 0); + + // Verify that zeta connector doesn't hold any tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, 0); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndCallReceiveERC20Partial() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodeWithSignature( + "receiveERC20Partial(uint256,address,address)", amount, address(zetaToken), destination + ); + uint256 balanceBefore = zetaToken.balanceOf(destination); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceBeforeZetaConnector, 0); + + bytes memory mintData = + abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + vm.expectCall(address(zetaToken), 0, mintData); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedERC20(address(gateway), amount / 2, address(zetaToken), destination); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndCall(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the destination address + uint256 balanceAfter = zetaToken.balanceOf(destination); + assertEq(balanceAfter, amount / 2); + + // Verify that zeta connector doesn't hold any tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, 0); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndRevert() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + uint256 balanceBefore = zetaToken.balanceOf(address(receiver)); + assertEq(balanceBefore, 0); + uint256 balanceBeforeZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + + bytes memory mintData = + abi.encodeWithSignature("mint(address,uint256,bytes32)", address(gateway), amount, internalSendHash); + vm.expectCall(address(zetaToken), 0, mintData); + // Verify that onRevert callback was called + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedRevert(address(gateway), data); + vm.expectEmit(true, true, true, true, address(gateway)); + emit RevertedWithERC20(address(zetaToken), address(receiver), amount, data); + vm.expectEmit(true, true, true, true, address(zetaConnector)); + emit WithdrawAndRevert(address(receiver), amount, data); + vm.prank(tssAddress); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + + // Verify that the tokens were transferred to the receiver address + uint256 balanceAfter = zetaToken.balanceOf(address(receiver)); + assertEq(balanceAfter, amount); + + // Verify that zeta connector doesn't get more tokens + uint256 balanceAfterZetaConnector = zetaToken.balanceOf(address(zetaConnector)); + assertEq(balanceAfterZetaConnector, balanceBeforeZetaConnector); + + // Verify that the approval was reset + uint256 allowance = zetaToken.allowance(address(gateway), address(receiver)); + assertEq(allowance, 0); + + // Verify that gateway doesn't hold any tokens + uint256 balanceGateway = zetaToken.balanceOf(address(gateway)); + assertEq(balanceGateway, 0); + } + + function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + uint256 amount = 100_000; + bytes32 internalSendHash = ""; + bytes memory data = abi.encodePacked("hello"); + + vm.prank(owner); + vm.expectRevert(InvalidSender.selector); + zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); + } } diff --git a/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol similarity index 88% rename from v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol rename to v2/test/fuzz/ERC20CustodyEchidnaTest.sol index f44728ee..0021e238 100644 --- a/v2/test/fuzz/ERC20CustodyNewEchidnaTest.sol +++ b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol @@ -4,11 +4,11 @@ pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "test/utils/TestERC20.sol"; -contract ERC20CustodyNewEchidnaTest is ERC20CustodyNew { +contract ERC20CustodyEchidnaTest is ERC20Custody { using SafeERC20 for IERC20; TestERC20 public testERC20; @@ -19,7 +19,7 @@ contract ERC20CustodyNewEchidnaTest is ERC20CustodyNew { ); GatewayEVM testGateway = GatewayEVM(proxy); - constructor() ERC20CustodyNew(address(testGateway), echidnaCaller) { + constructor() ERC20Custody(address(testGateway), echidnaCaller) { testERC20 = new TestERC20("test", "TEST"); testGateway.setCustody(address(this)); } diff --git a/v2/test/fuzz/GatewayEVMEchidnaTest.sol b/v2/test/fuzz/GatewayEVMEchidnaTest.sol index 3cc8e56b..48cdf359 100644 --- a/v2/test/fuzz/GatewayEVMEchidnaTest.sol +++ b/v2/test/fuzz/GatewayEVMEchidnaTest.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.26; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "src/evm/ERC20CustodyNew.sol"; +import "src/evm/ERC20Custody.sol"; import "src/evm/GatewayEVM.sol"; import "test/utils/TestERC20.sol"; @@ -17,7 +17,7 @@ contract GatewayEVMEchidnaTest is GatewayEVM { tssAddress = echidnaCaller; zetaConnector = address(0x123); testERC20 = new TestERC20("test", "TEST"); - custody = address(new ERC20CustodyNew(address(this), tssAddress)); + custody = address(new ERC20Custody(address(this), tssAddress)); } function testExecuteWithERC20(address to, uint256 amount, bytes calldata data) public { diff --git a/v2/test/fuzz/readme.md b/v2/test/fuzz/readme.md index c2904af3..c69e0587 100644 --- a/v2/test/fuzz/readme.md +++ b/v2/test/fuzz/readme.md @@ -8,6 +8,6 @@ solc-select use 0.8.20 ## Execute contract tests ``` -echidna test/fuzz/ERC20CustodyNewEchidnaTest.sol --contract ERC20CustodyNewEchidnaTest --config echidna.yaml +echidna test/fuzz/ERC20CustodyEchidnaTest.sol --contract ERC20CustodyEchidnaTest --config echidna.yaml echidna test/fuzz/GatewayEVMEchidnaTest.sol --contract GatewayEVMEchidnaTest --config echidna.yaml ``` \ No newline at end of file diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index a56b941a..f1905116 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -8,7 +8,7 @@ import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "src/evm/ZetaConnectorNewBase.sol"; +import "src/evm/ZetaConnectorBase.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; /// @title GatewayEVMUpgradeTest @@ -264,7 +264,7 @@ contract GatewayEVMUpgradeTest is // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { // transfer to custody IERC20(token).safeTransferFrom(from, custody, amount); @@ -282,7 +282,7 @@ contract GatewayEVMUpgradeTest is // approve connector to handle tokens depending on connector version (eg. lock or burn) IERC20(token).approve(zetaConnector, amount); // send tokens to connector - ZetaConnectorNewBase(zetaConnector).receiveTokens(amount); + ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { // transfer to custody IERC20(token).safeTransfer(custody, amount); diff --git a/v2/test/utils/ZRC20New.sol b/v2/test/utils/ZRC20.sol similarity index 99% rename from v2/test/utils/ZRC20New.sol rename to v2/test/utils/ZRC20.sol index f720db56..8d69f45a 100644 --- a/v2/test/utils/ZRC20New.sol +++ b/v2/test/utils/ZRC20.sol @@ -21,7 +21,7 @@ interface ZRC20Errors { // NOTE: this is exactly the same as ZRC20, except gateway contract address is set at deployment // and used to allow deposit. This is first version, it might change in the future. -contract ZRC20New is IZRC20Metadata, ZRC20Errors, ZRC20Events { +contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { /// @notice Fungible address is always the same, maintained at the protocol level address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; /// @notice Chain id.abi diff --git a/v2/typechain-types/ERC20CustodyNew.ts b/v2/typechain-types/ERC20Custody.ts similarity index 97% rename from v2/typechain-types/ERC20CustodyNew.ts rename to v2/typechain-types/ERC20Custody.ts index 1edff18a..4c18287d 100644 --- a/v2/typechain-types/ERC20CustodyNew.ts +++ b/v2/typechain-types/ERC20Custody.ts @@ -23,7 +23,7 @@ import type { TypedContractMethod, } from "./common"; -export interface ERC20CustodyNewInterface extends Interface { +export interface ERC20CustodyInterface extends Interface { getFunction( nameOrSignature: | "gateway" @@ -136,11 +136,11 @@ export namespace WithdrawAndRevertEvent { export type LogDescription = TypedLogDescription; } -export interface ERC20CustodyNew extends BaseContract { - connect(runner?: ContractRunner | null): ERC20CustodyNew; +export interface ERC20Custody extends BaseContract { + connect(runner?: ContractRunner | null): ERC20Custody; waitForDeployment(): Promise; - interface: ERC20CustodyNewInterface; + interface: ERC20CustodyInterface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/ERC20CustodyNewEchidnaTest.ts b/v2/typechain-types/ERC20CustodyEchidnaTest.ts similarity index 97% rename from v2/typechain-types/ERC20CustodyNewEchidnaTest.ts rename to v2/typechain-types/ERC20CustodyEchidnaTest.ts index 57327a20..add7f335 100644 --- a/v2/typechain-types/ERC20CustodyNewEchidnaTest.ts +++ b/v2/typechain-types/ERC20CustodyEchidnaTest.ts @@ -23,7 +23,7 @@ import type { TypedContractMethod, } from "./common"; -export interface ERC20CustodyNewEchidnaTestInterface extends Interface { +export interface ERC20CustodyEchidnaTestInterface extends Interface { getFunction( nameOrSignature: | "echidnaCaller" @@ -157,11 +157,11 @@ export namespace WithdrawAndRevertEvent { export type LogDescription = TypedLogDescription; } -export interface ERC20CustodyNewEchidnaTest extends BaseContract { - connect(runner?: ContractRunner | null): ERC20CustodyNewEchidnaTest; +export interface ERC20CustodyEchidnaTest extends BaseContract { + connect(runner?: ContractRunner | null): ERC20CustodyEchidnaTest; waitForDeployment(): Promise; - interface: ERC20CustodyNewEchidnaTestInterface; + interface: ERC20CustodyEchidnaTestInterface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts b/v2/typechain-types/IERC20Custody.sol/IERC20CustodyErrors.ts similarity index 87% rename from v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts rename to v2/typechain-types/IERC20Custody.sol/IERC20CustodyErrors.ts index 3abacff5..94bfbc59 100644 --- a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewErrors.ts +++ b/v2/typechain-types/IERC20Custody.sol/IERC20CustodyErrors.ts @@ -16,13 +16,13 @@ import type { TypedListener, } from "../common"; -export interface IERC20CustodyNewErrorsInterface extends Interface {} +export interface IERC20CustodyErrorsInterface extends Interface {} -export interface IERC20CustodyNewErrors extends BaseContract { - connect(runner?: ContractRunner | null): IERC20CustodyNewErrors; +export interface IERC20CustodyErrors extends BaseContract { + connect(runner?: ContractRunner | null): IERC20CustodyErrors; waitForDeployment(): Promise; - interface: IERC20CustodyNewErrorsInterface; + interface: IERC20CustodyErrorsInterface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts b/v2/typechain-types/IERC20Custody.sol/IERC20CustodyEvents.ts similarity index 95% rename from v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts rename to v2/typechain-types/IERC20Custody.sol/IERC20CustodyEvents.ts index 60ffe056..af645748 100644 --- a/v2/typechain-types/IERC20CustodyNew.sol/IERC20CustodyNewEvents.ts +++ b/v2/typechain-types/IERC20Custody.sol/IERC20CustodyEvents.ts @@ -21,7 +21,7 @@ import type { TypedListener, } from "../common"; -export interface IERC20CustodyNewEventsInterface extends Interface { +export interface IERC20CustodyEventsInterface extends Interface { getEvent( nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" ): EventFragment; @@ -95,11 +95,11 @@ export namespace WithdrawAndRevertEvent { export type LogDescription = TypedLogDescription; } -export interface IERC20CustodyNewEvents extends BaseContract { - connect(runner?: ContractRunner | null): IERC20CustodyNewEvents; +export interface IERC20CustodyEvents extends BaseContract { + connect(runner?: ContractRunner | null): IERC20CustodyEvents; waitForDeployment(): Promise; - interface: IERC20CustodyNewEventsInterface; + interface: IERC20CustodyEventsInterface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/IERC20Custody.sol/index.ts b/v2/typechain-types/IERC20Custody.sol/index.ts new file mode 100644 index 00000000..fa390d55 --- /dev/null +++ b/v2/typechain-types/IERC20Custody.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC20CustodyErrors } from "./IERC20CustodyErrors"; +export type { IERC20CustodyEvents } from "./IERC20CustodyEvents"; diff --git a/v2/typechain-types/IERC20CustodyNew.sol/index.ts b/v2/typechain-types/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 8106a206..00000000 --- a/v2/typechain-types/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { IERC20CustodyNewErrors } from "./IERC20CustodyNewErrors"; -export type { IERC20CustodyNewEvents } from "./IERC20CustodyNewEvents"; diff --git a/v2/typechain-types/ZRC20New.sol/ZRC20New.ts b/v2/typechain-types/ZRC20.sol/ZRC20.ts similarity index 99% rename from v2/typechain-types/ZRC20New.sol/ZRC20New.ts rename to v2/typechain-types/ZRC20.sol/ZRC20.ts index b81ffd19..4c02b922 100644 --- a/v2/typechain-types/ZRC20New.sol/ZRC20New.ts +++ b/v2/typechain-types/ZRC20.sol/ZRC20.ts @@ -23,7 +23,7 @@ import type { TypedContractMethod, } from "../common"; -export interface ZRC20NewInterface extends Interface { +export interface ZRC20Interface extends Interface { getFunction( nameOrSignature: | "CHAIN_ID" @@ -307,11 +307,11 @@ export namespace WithdrawalEvent { export type LogDescription = TypedLogDescription; } -export interface ZRC20New extends BaseContract { - connect(runner?: ContractRunner | null): ZRC20New; +export interface ZRC20 extends BaseContract { + connect(runner?: ContractRunner | null): ZRC20; waitForDeployment(): Promise; - interface: ZRC20NewInterface; + interface: ZRC20Interface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts b/v2/typechain-types/ZRC20.sol/ZRC20Errors.ts similarity index 100% rename from v2/typechain-types/ZRC20New.sol/ZRC20Errors.ts rename to v2/typechain-types/ZRC20.sol/ZRC20Errors.ts diff --git a/v1/typechain-types/contracts/zevm/ZRC20New.sol/index.ts b/v2/typechain-types/ZRC20.sol/index.ts similarity index 76% rename from v1/typechain-types/contracts/zevm/ZRC20New.sol/index.ts rename to v2/typechain-types/ZRC20.sol/index.ts index ea6138df..0a005122 100644 --- a/v1/typechain-types/contracts/zevm/ZRC20New.sol/index.ts +++ b/v2/typechain-types/ZRC20.sol/index.ts @@ -1,5 +1,5 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export type { ZRC20 } from "./ZRC20"; export type { ZRC20Errors } from "./ZRC20Errors"; -export type { ZRC20New } from "./ZRC20New"; diff --git a/v2/typechain-types/ZRC20New.sol/index.ts b/v2/typechain-types/ZRC20New.sol/index.ts deleted file mode 100644 index ea6138df..00000000 --- a/v2/typechain-types/ZRC20New.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ZRC20Errors } from "./ZRC20Errors"; -export type { ZRC20New } from "./ZRC20New"; diff --git a/v2/typechain-types/ZetaConnectorNewBase.ts b/v2/typechain-types/ZetaConnectorBase.ts similarity index 97% rename from v2/typechain-types/ZetaConnectorNewBase.ts rename to v2/typechain-types/ZetaConnectorBase.ts index 12672d35..0baaf870 100644 --- a/v2/typechain-types/ZetaConnectorNewBase.ts +++ b/v2/typechain-types/ZetaConnectorBase.ts @@ -23,7 +23,7 @@ import type { TypedContractMethod, } from "./common"; -export interface ZetaConnectorNewBaseInterface extends Interface { +export interface ZetaConnectorBaseInterface extends Interface { getFunction( nameOrSignature: | "gateway" @@ -129,11 +129,11 @@ export namespace WithdrawAndRevertEvent { export type LogDescription = TypedLogDescription; } -export interface ZetaConnectorNewBase extends BaseContract { - connect(runner?: ContractRunner | null): ZetaConnectorNewBase; +export interface ZetaConnectorBase extends BaseContract { + connect(runner?: ContractRunner | null): ZetaConnectorBase; waitForDeployment(): Promise; - interface: ZetaConnectorNewBaseInterface; + interface: ZetaConnectorBaseInterface; queryFilter( event: TCEvent, diff --git a/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts similarity index 98% rename from v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts rename to v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts index 5f358801..4d108fe0 100644 --- a/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts @@ -10,9 +10,9 @@ import { import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; import type { NonPayableOverrides } from "../common"; import type { - ERC20CustodyNewEchidnaTest, - ERC20CustodyNewEchidnaTestInterface, -} from "../ERC20CustodyNewEchidnaTest"; + ERC20CustodyEchidnaTest, + ERC20CustodyEchidnaTestInterface, +} from "../ERC20CustodyEchidnaTest"; const _abi = [ { @@ -317,18 +317,18 @@ const _abi = [ ] as const; const _bytecode = - "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220d7214dc766e4e33e30af0ee72b7ff719d6cf4397d65eb7d070aaed8a4867b91664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; -type ERC20CustodyNewEchidnaTestConstructorParams = +type ERC20CustodyEchidnaTestConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( - xs: ERC20CustodyNewEchidnaTestConstructorParams + xs: ERC20CustodyEchidnaTestConstructorParams ): xs is ConstructorParameters => xs.length > 1; -export class ERC20CustodyNewEchidnaTest__factory extends ContractFactory { - constructor(...args: ERC20CustodyNewEchidnaTestConstructorParams) { +export class ERC20CustodyEchidnaTest__factory extends ContractFactory { + constructor(...args: ERC20CustodyEchidnaTestConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { @@ -343,30 +343,30 @@ export class ERC20CustodyNewEchidnaTest__factory extends ContractFactory { } override deploy(overrides?: NonPayableOverrides & { from?: string }) { return super.deploy(overrides || {}) as Promise< - ERC20CustodyNewEchidnaTest & { + ERC20CustodyEchidnaTest & { deploymentTransaction(): ContractTransactionResponse; } >; } override connect( runner: ContractRunner | null - ): ERC20CustodyNewEchidnaTest__factory { - return super.connect(runner) as ERC20CustodyNewEchidnaTest__factory; + ): ERC20CustodyEchidnaTest__factory { + return super.connect(runner) as ERC20CustodyEchidnaTest__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; - static createInterface(): ERC20CustodyNewEchidnaTestInterface { - return new Interface(_abi) as ERC20CustodyNewEchidnaTestInterface; + static createInterface(): ERC20CustodyEchidnaTestInterface { + return new Interface(_abi) as ERC20CustodyEchidnaTestInterface; } static connect( address: string, runner?: ContractRunner | null - ): ERC20CustodyNewEchidnaTest { + ): ERC20CustodyEchidnaTest { return new Contract( address, _abi, runner - ) as unknown as ERC20CustodyNewEchidnaTest; + ) as unknown as ERC20CustodyEchidnaTest; } } diff --git a/v2/typechain-types/factories/ERC20CustodyNew__factory.ts b/v2/typechain-types/factories/ERC20Custody__factory.ts similarity index 94% rename from v2/typechain-types/factories/ERC20CustodyNew__factory.ts rename to v2/typechain-types/factories/ERC20Custody__factory.ts index 14d94ff9..6390b7bb 100644 --- a/v2/typechain-types/factories/ERC20CustodyNew__factory.ts +++ b/v2/typechain-types/factories/ERC20Custody__factory.ts @@ -14,10 +14,7 @@ import type { ContractRunner, } from "ethers"; import type { NonPayableOverrides } from "../common"; -import type { - ERC20CustodyNew, - ERC20CustodyNewInterface, -} from "../ERC20CustodyNew"; +import type { ERC20Custody, ERC20CustodyInterface } from "../ERC20Custody"; const _abi = [ { @@ -284,18 +281,18 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033"; -type ERC20CustodyNewConstructorParams = +type ERC20CustodyConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( - xs: ERC20CustodyNewConstructorParams + xs: ERC20CustodyConstructorParams ): xs is ConstructorParameters => xs.length > 1; -export class ERC20CustodyNew__factory extends ContractFactory { - constructor(...args: ERC20CustodyNewConstructorParams) { +export class ERC20Custody__factory extends ContractFactory { + constructor(...args: ERC20CustodyConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { @@ -316,24 +313,24 @@ export class ERC20CustodyNew__factory extends ContractFactory { overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy(_gateway, _tssAddress, overrides || {}) as Promise< - ERC20CustodyNew & { + ERC20Custody & { deploymentTransaction(): ContractTransactionResponse; } >; } - override connect(runner: ContractRunner | null): ERC20CustodyNew__factory { - return super.connect(runner) as ERC20CustodyNew__factory; + override connect(runner: ContractRunner | null): ERC20Custody__factory { + return super.connect(runner) as ERC20Custody__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; - static createInterface(): ERC20CustodyNewInterface { - return new Interface(_abi) as ERC20CustodyNewInterface; + static createInterface(): ERC20CustodyInterface { + return new Interface(_abi) as ERC20CustodyInterface; } static connect( address: string, runner?: ContractRunner | null - ): ERC20CustodyNew { - return new Contract(address, _abi, runner) as unknown as ERC20CustodyNew; + ): ERC20Custody { + return new Contract(address, _abi, runner) as unknown as ERC20Custody; } } diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts index 91c6d73a..8c47b27d 100644 --- a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -809,7 +809,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea2646970667358221220b5cf128d245bfd684061b748e4a87779c3ff73a03bfe1b652838b47b6abf465b64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033"; type GatewayEVMEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts index 041b83fc..224c8da4 100644 --- a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -785,7 +785,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea264697066735822122080ca52360500cb8c1ff37c01ce754e149b0bf2525ac575c45d2f6db66011666364736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts index 59f29d9f..9ce7bb1c 100644 --- a/v2/typechain-types/factories/GatewayEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -757,7 +757,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220abbff2739a31446b484d2eb9c0ffb41515c9145c3574c0a292938cdb16afc8b464736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts similarity index 58% rename from v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts rename to v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts index de0b1108..c2e70710 100644 --- a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory.ts +++ b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts @@ -4,9 +4,9 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { - IERC20CustodyNewErrors, - IERC20CustodyNewErrorsInterface, -} from "../../IERC20CustodyNew.sol/IERC20CustodyNewErrors"; + IERC20CustodyErrors, + IERC20CustodyErrorsInterface, +} from "../../IERC20Custody.sol/IERC20CustodyErrors"; const _abi = [ { @@ -21,19 +21,19 @@ const _abi = [ }, ] as const; -export class IERC20CustodyNewErrors__factory { +export class IERC20CustodyErrors__factory { static readonly abi = _abi; - static createInterface(): IERC20CustodyNewErrorsInterface { - return new Interface(_abi) as IERC20CustodyNewErrorsInterface; + static createInterface(): IERC20CustodyErrorsInterface { + return new Interface(_abi) as IERC20CustodyErrorsInterface; } static connect( address: string, runner?: ContractRunner | null - ): IERC20CustodyNewErrors { + ): IERC20CustodyErrors { return new Contract( address, _abi, runner - ) as unknown as IERC20CustodyNewErrors; + ) as unknown as IERC20CustodyErrors; } } diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyEvents__factory.ts similarity index 84% rename from v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts rename to v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyEvents__factory.ts index ab4aec0c..08163fdb 100644 --- a/v2/typechain-types/factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory.ts +++ b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyEvents__factory.ts @@ -4,9 +4,9 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { - IERC20CustodyNewEvents, - IERC20CustodyNewEventsInterface, -} from "../../IERC20CustodyNew.sol/IERC20CustodyNewEvents"; + IERC20CustodyEvents, + IERC20CustodyEventsInterface, +} from "../../IERC20Custody.sol/IERC20CustodyEvents"; const _abi = [ { @@ -98,19 +98,19 @@ const _abi = [ }, ] as const; -export class IERC20CustodyNewEvents__factory { +export class IERC20CustodyEvents__factory { static readonly abi = _abi; - static createInterface(): IERC20CustodyNewEventsInterface { - return new Interface(_abi) as IERC20CustodyNewEventsInterface; + static createInterface(): IERC20CustodyEventsInterface { + return new Interface(_abi) as IERC20CustodyEventsInterface; } static connect( address: string, runner?: ContractRunner | null - ): IERC20CustodyNewEvents { + ): IERC20CustodyEvents { return new Contract( address, _abi, runner - ) as unknown as IERC20CustodyNewEvents; + ) as unknown as IERC20CustodyEvents; } } diff --git a/v2/typechain-types/factories/IERC20Custody.sol/index.ts b/v2/typechain-types/factories/IERC20Custody.sol/index.ts new file mode 100644 index 00000000..9ad68318 --- /dev/null +++ b/v2/typechain-types/factories/IERC20Custody.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC20CustodyErrors__factory } from "./IERC20CustodyErrors__factory"; +export { IERC20CustodyEvents__factory } from "./IERC20CustodyEvents__factory"; diff --git a/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts b/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts deleted file mode 100644 index 9f3d2112..00000000 --- a/v2/typechain-types/factories/IERC20CustodyNew.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { IERC20CustodyNewErrors__factory } from "./IERC20CustodyNewErrors__factory"; -export { IERC20CustodyNewEvents__factory } from "./IERC20CustodyNewEvents__factory"; diff --git a/v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts b/v2/typechain-types/factories/ZRC20.sol/ZRC20Errors__factory.ts similarity index 96% rename from v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts rename to v2/typechain-types/factories/ZRC20.sol/ZRC20Errors__factory.ts index 35134d33..22f60b1c 100644 --- a/v2/typechain-types/factories/ZRC20New.sol/ZRC20Errors__factory.ts +++ b/v2/typechain-types/factories/ZRC20.sol/ZRC20Errors__factory.ts @@ -6,7 +6,7 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { ZRC20Errors, ZRC20ErrorsInterface, -} from "../../ZRC20New.sol/ZRC20Errors"; +} from "../../ZRC20.sol/ZRC20Errors"; const _abi = [ { diff --git a/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts similarity index 97% rename from v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts rename to v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts index 26fd96a6..918daaa0 100644 --- a/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts +++ b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts @@ -15,7 +15,7 @@ import type { ContractRunner, } from "ethers"; import type { NonPayableOverrides } from "../../common"; -import type { ZRC20New, ZRC20NewInterface } from "../../ZRC20New.sol/ZRC20New"; +import type { ZRC20, ZRC20Interface } from "../../ZRC20.sol/ZRC20"; const _abi = [ { @@ -645,18 +645,18 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033"; -type ZRC20NewConstructorParams = +type ZRC20ConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( - xs: ZRC20NewConstructorParams + xs: ZRC20ConstructorParams ): xs is ConstructorParameters => xs.length > 1; -export class ZRC20New__factory extends ContractFactory { - constructor(...args: ZRC20NewConstructorParams) { +export class ZRC20__factory extends ContractFactory { + constructor(...args: ZRC20ConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { @@ -709,21 +709,21 @@ export class ZRC20New__factory extends ContractFactory { gatewayContractAddress_, overrides || {} ) as Promise< - ZRC20New & { + ZRC20 & { deploymentTransaction(): ContractTransactionResponse; } >; } - override connect(runner: ContractRunner | null): ZRC20New__factory { - return super.connect(runner) as ZRC20New__factory; + override connect(runner: ContractRunner | null): ZRC20__factory { + return super.connect(runner) as ZRC20__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; - static createInterface(): ZRC20NewInterface { - return new Interface(_abi) as ZRC20NewInterface; + static createInterface(): ZRC20Interface { + return new Interface(_abi) as ZRC20Interface; } - static connect(address: string, runner?: ContractRunner | null): ZRC20New { - return new Contract(address, _abi, runner) as unknown as ZRC20New; + static connect(address: string, runner?: ContractRunner | null): ZRC20 { + return new Contract(address, _abi, runner) as unknown as ZRC20; } } diff --git a/v2/typechain-types/factories/ZRC20New.sol/index.ts b/v2/typechain-types/factories/ZRC20.sol/index.ts similarity index 72% rename from v2/typechain-types/factories/ZRC20New.sol/index.ts rename to v2/typechain-types/factories/ZRC20.sol/index.ts index 7e4b987c..7022ef80 100644 --- a/v2/typechain-types/factories/ZRC20New.sol/index.ts +++ b/v2/typechain-types/factories/ZRC20.sol/index.ts @@ -1,5 +1,5 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export { ZRC20__factory } from "./ZRC20__factory"; export { ZRC20Errors__factory } from "./ZRC20Errors__factory"; -export { ZRC20New__factory } from "./ZRC20New__factory"; diff --git a/v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts similarity index 91% rename from v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts rename to v2/typechain-types/factories/ZetaConnectorBase__factory.ts index 3756d6aa..7fcc1bfe 100644 --- a/v2/typechain-types/factories/ZetaConnectorNewBase__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts @@ -4,9 +4,9 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { - ZetaConnectorNewBase, - ZetaConnectorNewBaseInterface, -} from "../ZetaConnectorNewBase"; + ZetaConnectorBase, + ZetaConnectorBaseInterface, +} from "../ZetaConnectorBase"; const _abi = [ { @@ -226,19 +226,15 @@ const _abi = [ }, ] as const; -export class ZetaConnectorNewBase__factory { +export class ZetaConnectorBase__factory { static readonly abi = _abi; - static createInterface(): ZetaConnectorNewBaseInterface { - return new Interface(_abi) as ZetaConnectorNewBaseInterface; + static createInterface(): ZetaConnectorBaseInterface { + return new Interface(_abi) as ZetaConnectorBaseInterface; } static connect( address: string, runner?: ContractRunner | null - ): ZetaConnectorNewBase { - return new Contract( - address, - _abi, - runner - ) as unknown as ZetaConnectorNewBase; + ): ZetaConnectorBase { + return new Contract(address, _abi, runner) as unknown as ZetaConnectorBase; } } diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts index e5f4dfce..84035832 100644 --- a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -297,7 +297,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts index 42566148..858d7796 100644 --- a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -303,7 +303,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033"; + "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/index.ts b/v2/typechain-types/factories/index.ts index 4878e50d..97c2d215 100644 --- a/v2/typechain-types/factories/index.ts +++ b/v2/typechain-types/factories/index.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ export * as erc20 from "./ERC20"; -export * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; +export * as ierc20CustodySol from "./IERC20Custody.sol"; export * as ierc721Sol from "./IERC721.sol"; export * as iGatewayEvmSol from "./IGatewayEVM.sol"; export * as iGatewayZevmSol from "./IGatewayZEVM.sol"; @@ -17,7 +17,7 @@ export * as systemContractMockSol from "./SystemContractMock.sol"; export * as transparentUpgradeableProxySol from "./TransparentUpgradeableProxy.sol"; export * as vmSol from "./Vm.sol"; export * as wzetaSol from "./WZETA.sol"; -export * as zrc20NewSol from "./ZRC20New.sol"; +export * as zrc20Sol from "./ZRC20.sol"; export * as zetaNonEthSol from "./Zeta.non-eth.sol"; export * as draftIerc1822Sol from "./draft-IERC1822.sol"; export * as draftIerc6093Sol from "./draft-IERC6093.sol"; @@ -30,8 +30,8 @@ export { ERC1967Proxy__factory } from "./ERC1967Proxy__factory"; export { ERC1967Utils__factory } from "./ERC1967Utils__factory"; export { ERC20__factory } from "./ERC20__factory"; export { ERC20Burnable__factory } from "./ERC20Burnable__factory"; -export { ERC20CustodyNew__factory } from "./ERC20CustodyNew__factory"; -export { ERC20CustodyNewEchidnaTest__factory } from "./ERC20CustodyNewEchidnaTest__factory"; +export { ERC20Custody__factory } from "./ERC20Custody__factory"; +export { ERC20CustodyEchidnaTest__factory } from "./ERC20CustodyEchidnaTest__factory"; export { GatewayEVM__factory } from "./GatewayEVM__factory"; export { GatewayEVMEchidnaTest__factory } from "./GatewayEVMEchidnaTest__factory"; export { GatewayEVMUpgradeTest__factory } from "./GatewayEVMUpgradeTest__factory"; @@ -68,6 +68,6 @@ export { TestERC20__factory } from "./TestERC20__factory"; export { TestZContract__factory } from "./TestZContract__factory"; export { UUPSUpgradeable__factory } from "./UUPSUpgradeable__factory"; export { UpgradeableBeacon__factory } from "./UpgradeableBeacon__factory"; +export { ZetaConnectorBase__factory } from "./ZetaConnectorBase__factory"; export { ZetaConnectorNative__factory } from "./ZetaConnectorNative__factory"; -export { ZetaConnectorNewBase__factory } from "./ZetaConnectorNewBase__factory"; export { ZetaConnectorNonNative__factory } from "./ZetaConnectorNonNative__factory"; diff --git a/v2/typechain-types/index.ts b/v2/typechain-types/index.ts index f04b208d..eb289aa9 100644 --- a/v2/typechain-types/index.ts +++ b/v2/typechain-types/index.ts @@ -3,8 +3,8 @@ /* eslint-disable */ import type * as erc20 from "./ERC20"; export type { erc20 }; -import type * as ierc20CustodyNewSol from "./IERC20CustodyNew.sol"; -export type { ierc20CustodyNewSol }; +import type * as ierc20CustodySol from "./IERC20Custody.sol"; +export type { ierc20CustodySol }; import type * as ierc721Sol from "./IERC721.sol"; export type { ierc721Sol }; import type * as iGatewayEvmSol from "./IGatewayEVM.sol"; @@ -33,8 +33,8 @@ import type * as vmSol from "./Vm.sol"; export type { vmSol }; import type * as wzetaSol from "./WZETA.sol"; export type { wzetaSol }; -import type * as zrc20NewSol from "./ZRC20New.sol"; -export type { zrc20NewSol }; +import type * as zrc20Sol from "./ZRC20.sol"; +export type { zrc20Sol }; import type * as zetaNonEthSol from "./Zeta.non-eth.sol"; export type { zetaNonEthSol }; import type * as draftIerc1822Sol from "./draft-IERC1822.sol"; @@ -52,8 +52,8 @@ export type { ERC1967Proxy } from "./ERC1967Proxy"; export type { ERC1967Utils } from "./ERC1967Utils"; export type { ERC20 } from "./ERC20"; export type { ERC20Burnable } from "./ERC20Burnable"; -export type { ERC20CustodyNew } from "./ERC20CustodyNew"; -export type { ERC20CustodyNewEchidnaTest } from "./ERC20CustodyNewEchidnaTest"; +export type { ERC20Custody } from "./ERC20Custody"; +export type { ERC20CustodyEchidnaTest } from "./ERC20CustodyEchidnaTest"; export type { GatewayEVM } from "./GatewayEVM"; export type { GatewayEVMEchidnaTest } from "./GatewayEVMEchidnaTest"; export type { GatewayEVMUpgradeTest } from "./GatewayEVMUpgradeTest"; @@ -90,8 +90,8 @@ export type { TestERC20 } from "./TestERC20"; export type { TestZContract } from "./TestZContract"; export type { UUPSUpgradeable } from "./UUPSUpgradeable"; export type { UpgradeableBeacon } from "./UpgradeableBeacon"; +export type { ZetaConnectorBase } from "./ZetaConnectorBase"; export type { ZetaConnectorNative } from "./ZetaConnectorNative"; -export type { ZetaConnectorNewBase } from "./ZetaConnectorNewBase"; export type { ZetaConnectorNonNative } from "./ZetaConnectorNonNative"; export * as factories from "./factories"; export { Address__factory } from "./factories/Address__factory"; @@ -111,8 +111,8 @@ export { ERC20__factory } from "./factories/ERC20__factory"; export type { IERC20 } from "./ERC20/IERC20"; export { IERC20__factory } from "./factories/ERC20/IERC20__factory"; export { ERC20Burnable__factory } from "./factories/ERC20Burnable__factory"; -export { ERC20CustodyNew__factory } from "./factories/ERC20CustodyNew__factory"; -export { ERC20CustodyNewEchidnaTest__factory } from "./factories/ERC20CustodyNewEchidnaTest__factory"; +export { ERC20Custody__factory } from "./factories/ERC20Custody__factory"; +export { ERC20CustodyEchidnaTest__factory } from "./factories/ERC20CustodyEchidnaTest__factory"; export { GatewayEVM__factory } from "./factories/GatewayEVM__factory"; export { GatewayEVMEchidnaTest__factory } from "./factories/GatewayEVMEchidnaTest__factory"; export { GatewayEVMUpgradeTest__factory } from "./factories/GatewayEVMUpgradeTest__factory"; @@ -120,10 +120,10 @@ export { GatewayZEVM__factory } from "./factories/GatewayZEVM__factory"; export { IBeacon__factory } from "./factories/IBeacon__factory"; export { IERC165__factory } from "./factories/IERC165__factory"; export { IERC1967__factory } from "./factories/IERC1967__factory"; -export type { IERC20CustodyNewErrors } from "./IERC20CustodyNew.sol/IERC20CustodyNewErrors"; -export { IERC20CustodyNewErrors__factory } from "./factories/IERC20CustodyNew.sol/IERC20CustodyNewErrors__factory"; -export type { IERC20CustodyNewEvents } from "./IERC20CustodyNew.sol/IERC20CustodyNewEvents"; -export { IERC20CustodyNewEvents__factory } from "./factories/IERC20CustodyNew.sol/IERC20CustodyNewEvents__factory"; +export type { IERC20CustodyErrors } from "./IERC20Custody.sol/IERC20CustodyErrors"; +export { IERC20CustodyErrors__factory } from "./factories/IERC20Custody.sol/IERC20CustodyErrors__factory"; +export type { IERC20CustodyEvents } from "./IERC20Custody.sol/IERC20CustodyEvents"; +export { IERC20CustodyEvents__factory } from "./factories/IERC20Custody.sol/IERC20CustodyEvents__factory"; export { IERC20Metadata__factory } from "./factories/IERC20Metadata__factory"; export { IERC20Permit__factory } from "./factories/IERC20Permit__factory"; export type { IERC721 } from "./IERC721.sol/IERC721"; @@ -218,10 +218,10 @@ export type { ZetaNonEth } from "./Zeta.non-eth.sol/ZetaNonEth"; export { ZetaNonEth__factory } from "./factories/Zeta.non-eth.sol/ZetaNonEth__factory"; export type { ZetaNonEthInterface } from "./Zeta.non-eth.sol/ZetaNonEthInterface"; export { ZetaNonEthInterface__factory } from "./factories/Zeta.non-eth.sol/ZetaNonEthInterface__factory"; +export { ZetaConnectorBase__factory } from "./factories/ZetaConnectorBase__factory"; export { ZetaConnectorNative__factory } from "./factories/ZetaConnectorNative__factory"; -export { ZetaConnectorNewBase__factory } from "./factories/ZetaConnectorNewBase__factory"; export { ZetaConnectorNonNative__factory } from "./factories/ZetaConnectorNonNative__factory"; -export type { ZRC20Errors } from "./ZRC20New.sol/ZRC20Errors"; -export { ZRC20Errors__factory } from "./factories/ZRC20New.sol/ZRC20Errors__factory"; -export type { ZRC20New } from "./ZRC20New.sol/ZRC20New"; -export { ZRC20New__factory } from "./factories/ZRC20New.sol/ZRC20New__factory"; +export type { ZRC20 } from "./ZRC20.sol/ZRC20"; +export { ZRC20__factory } from "./factories/ZRC20.sol/ZRC20__factory"; +export type { ZRC20Errors } from "./ZRC20.sol/ZRC20Errors"; +export { ZRC20Errors__factory } from "./factories/ZRC20.sol/ZRC20Errors__factory"; From 5f2ea3c26d28495a136e7e607a1102e529b69655 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 17:01:14 +0100 Subject: [PATCH 43/60] feat: add missing access control (#277) --- .github/workflows/generated-files_v1.yaml | 2 + .github/workflows/generated-files_v2.yaml | 2 + .github/workflows/lint_v1.yaml | 2 + .github/workflows/lint_v2.yaml | 2 + .github/workflows/slither_v2.yaml | 2 + .github/workflows/test_v1.yaml | 2 + .github/workflows/test_v2.yaml | 2 + v2/package.json | 4 +- v2/pkg/accesscontrol.sol/accesscontrol.go | 854 +++++++++++ .../accesscontrolupgradeable.go | 988 +++++++++++++ v2/pkg/erc165.sol/erc165.go | 212 +++ .../erc165upgradeable.go | 346 +++++ v2/pkg/erc20custody.sol/erc20custody.go | 1084 +++++++++++++- .../erc20custodyechidnatest.go | 1080 +++++++++++++- v2/pkg/gatewayevm.sol/gatewayevm.go | 1079 ++++++++++++-- .../gatewayevm.t.sol/gatewayevminboundtest.go | 4 +- v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 245 +++- .../gatewayevmechidnatest.go | 1079 ++++++++++++-- .../gatewayevmuupsupgradetest.go | 4 +- .../gatewayevmupgradetest.go | 1079 ++++++++++++-- .../gatewayevmzevmtest.go | 78 +- v2/pkg/gatewayzevm.sol/gatewayzevm.go | 1289 ++++++++++++++--- .../gatewayzevminboundtest.go | 78 +- .../gatewayzevmoutboundtest.go | 130 +- v2/pkg/iaccesscontrol.sol/iaccesscontrol.go | 792 ++++++++++ .../ierc20custody.sol/ierc20custodyerrors.go | 2 +- v2/pkg/igatewayevm.sol/igatewayevmerrors.go | 2 +- v2/pkg/igatewayzevm.sol/igatewayzevm.go | 68 +- v2/pkg/igatewayzevm.sol/igatewayzevmevents.go | 76 +- v2/pkg/introspection/ierc165.sol/ierc165.go | 212 +++ .../ownableupgradeable.go | 541 ------- v2/pkg/pausable.sol/pausable.go | 480 ++++++ .../pausableupgradeable.go | 614 ++++++++ v2/pkg/senderzevm.sol/senderzevm.go | 28 +- .../zetaconnectorbase.go | 1078 +++++++++++++- .../zetaconnectornative.go | 1084 +++++++++++++- .../zetaconnectornativetest.go | 107 +- .../zetaconnectornonnative.go | 1084 +++++++++++++- .../zetaconnectornonnativetest.go | 107 +- v2/scripts/localnet/ZevmCall.s.sol | 3 +- v2/scripts/localnet/ZevmWithdrawAndCall.s.sol | 2 +- v2/scripts/localnet/worker.ts | 32 +- v2/src/evm/ERC20Custody.sol | 50 +- v2/src/evm/GatewayEVM.sol | 96 +- v2/src/evm/ZetaConnectorBase.sol | 35 +- v2/src/evm/ZetaConnectorNative.sol | 25 +- v2/src/evm/ZetaConnectorNonNative.sol | 27 +- v2/src/evm/interfaces/IERC20Custody.sol | 3 - v2/src/evm/interfaces/IGatewayEVM.sol | 3 - v2/src/zevm/GatewayZEVM.sol | 74 +- v2/src/zevm/interfaces/IGatewayZEVM.sol | 26 +- v2/test/GatewayEVM.t.sol | 78 +- v2/test/GatewayEVMUpgrade.t.sol | 8 +- v2/test/GatewayEVMZEVM.t.sol | 32 +- v2/test/GatewayZEVM.t.sol | 78 +- v2/test/ZetaConnectorNative.t.sol | 24 +- v2/test/ZetaConnectorNonNative.t.sol | 24 +- v2/test/fuzz/ERC20CustodyEchidnaTest.sol | 4 +- v2/test/fuzz/GatewayEVMEchidnaTest.sol | 2 +- v2/test/utils/GatewayEVMUpgradeTest.sol | 84 +- v2/test/utils/SenderZEVM.sol | 5 +- v2/{ts.config.json => tsconfig.json} | 0 v2/typechain-types/AccessControl.ts | 324 +++++ .../AccessControlUpgradeable.ts | 359 +++++ v2/typechain-types/ERC165.ts | 94 ++ v2/typechain-types/ERC165Upgradeable.ts | 130 ++ v2/typechain-types/ERC20Custody.ts | 359 ++++- v2/typechain-types/ERC20CustodyEchidnaTest.ts | 359 ++++- v2/typechain-types/GatewayEVM.ts | 378 ++++- v2/typechain-types/GatewayEVMEchidnaTest.ts | 392 ++++- v2/typechain-types/GatewayEVMUpgradeTest.ts | 378 ++++- v2/typechain-types/GatewayZEVM.ts | 442 +++++- v2/typechain-types/IAccessControl.ts | 292 ++++ .../IGatewayZEVM.sol/IGatewayZEVM.ts | 73 +- .../IGatewayZEVM.sol/IGatewayZEVMEvents.ts | 28 +- v2/typechain-types/Pausable.ts | 150 ++ v2/typechain-types/PausableUpgradeable.ts | 183 +++ v2/typechain-types/SenderZEVM.ts | 18 +- v2/typechain-types/ZetaConnectorBase.ts | 359 ++++- v2/typechain-types/ZetaConnectorNative.ts | 359 ++++- v2/typechain-types/ZetaConnectorNonNative.ts | 354 +++++ .../AccessControlUpgradeable__factory.ts | 277 ++++ .../factories/AccessControl__factory.ts | 247 ++++ .../factories/ERC165Upgradeable__factory.ts | 67 + .../factories/ERC165__factory.ts | 38 + .../ERC20CustodyEchidnaTest__factory.ts | 315 +++- .../factories/ERC20Custody__factory.ts | 336 ++++- .../GatewayEVMEchidnaTest__factory.ts | 361 ++++- .../GatewayEVMUpgradeTest__factory.ts | 347 ++++- .../factories/GatewayEVM__factory.ts | 347 ++++- .../factories/GatewayZEVM__factory.ts | 353 ++++- .../factories/IAccessControl__factory.ts | 218 +++ .../IERC20CustodyErrors__factory.ts | 5 - .../IGatewayEVMErrors__factory.ts | 5 - .../IGatewayZEVMEvents__factory.ts | 24 +- .../IGatewayZEVM.sol/IGatewayZEVM__factory.ts | 46 + .../factories/PausableUpgradeable__factory.ts | 101 ++ .../factories/Pausable__factory.ts | 68 + .../factories/SenderZEVM__factory.ts | 7 +- .../factories/ZetaConnectorBase__factory.ts | 311 +++- .../factories/ZetaConnectorNative__factory.ts | 324 ++++- .../ZetaConnectorNonNative__factory.ts | 322 +++- v2/typechain-types/factories/index.ts | 9 +- .../introspection/IERC165__factory.ts | 38 + .../factories/introspection/index.ts | 4 + v2/typechain-types/index.ts | 18 +- v2/typechain-types/introspection/IERC165.ts | 94 ++ v2/typechain-types/introspection/index.ts | 4 + v2/yarn.lock | 118 +- 109 files changed, 23954 insertions(+), 2118 deletions(-) create mode 100644 v2/pkg/accesscontrol.sol/accesscontrol.go create mode 100644 v2/pkg/accesscontrolupgradeable.sol/accesscontrolupgradeable.go create mode 100644 v2/pkg/erc165.sol/erc165.go create mode 100644 v2/pkg/erc165upgradeable.sol/erc165upgradeable.go create mode 100644 v2/pkg/iaccesscontrol.sol/iaccesscontrol.go create mode 100644 v2/pkg/introspection/ierc165.sol/ierc165.go delete mode 100644 v2/pkg/ownableupgradeable.sol/ownableupgradeable.go create mode 100644 v2/pkg/pausable.sol/pausable.go create mode 100644 v2/pkg/pausableupgradeable.sol/pausableupgradeable.go rename v2/{ts.config.json => tsconfig.json} (100%) create mode 100644 v2/typechain-types/AccessControl.ts create mode 100644 v2/typechain-types/AccessControlUpgradeable.ts create mode 100644 v2/typechain-types/ERC165.ts create mode 100644 v2/typechain-types/ERC165Upgradeable.ts create mode 100644 v2/typechain-types/IAccessControl.ts create mode 100644 v2/typechain-types/Pausable.ts create mode 100644 v2/typechain-types/PausableUpgradeable.ts create mode 100644 v2/typechain-types/factories/AccessControlUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/AccessControl__factory.ts create mode 100644 v2/typechain-types/factories/ERC165Upgradeable__factory.ts create mode 100644 v2/typechain-types/factories/ERC165__factory.ts create mode 100644 v2/typechain-types/factories/IAccessControl__factory.ts create mode 100644 v2/typechain-types/factories/PausableUpgradeable__factory.ts create mode 100644 v2/typechain-types/factories/Pausable__factory.ts create mode 100644 v2/typechain-types/factories/introspection/IERC165__factory.ts create mode 100644 v2/typechain-types/factories/introspection/index.ts create mode 100644 v2/typechain-types/introspection/IERC165.ts create mode 100644 v2/typechain-types/introspection/index.ts diff --git a/.github/workflows/generated-files_v1.yaml b/.github/workflows/generated-files_v1.yaml index d02aa7f5..28dbe5d2 100644 --- a/.github/workflows/generated-files_v1.yaml +++ b/.github/workflows/generated-files_v1.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v1/**' types: - synchronize - opened diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml index f7affe1b..05617e8b 100644 --- a/.github/workflows/generated-files_v2.yaml +++ b/.github/workflows/generated-files_v2.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v2/**' types: - synchronize - opened diff --git a/.github/workflows/lint_v1.yaml b/.github/workflows/lint_v1.yaml index d0f46c07..6ce55145 100644 --- a/.github/workflows/lint_v1.yaml +++ b/.github/workflows/lint_v1.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v1/**' types: - synchronize - opened diff --git a/.github/workflows/lint_v2.yaml b/.github/workflows/lint_v2.yaml index d8f478d3..71ea161d 100644 --- a/.github/workflows/lint_v2.yaml +++ b/.github/workflows/lint_v2.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v2/**' types: - synchronize - opened diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml index 83967f31..1b855a03 100644 --- a/.github/workflows/slither_v2.yaml +++ b/.github/workflows/slither_v2.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v2/**' types: - synchronize - opened diff --git a/.github/workflows/test_v1.yaml b/.github/workflows/test_v1.yaml index 05698a5c..04fa5d53 100644 --- a/.github/workflows/test_v1.yaml +++ b/.github/workflows/test_v1.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v1/**' types: - synchronize - opened diff --git a/.github/workflows/test_v2.yaml b/.github/workflows/test_v2.yaml index 32709121..4136f6a6 100644 --- a/.github/workflows/test_v2.yaml +++ b/.github/workflows/test_v2.yaml @@ -9,6 +9,8 @@ on: pull_request: branches: - "*" + paths: + - 'v2/**' types: - synchronize - opened diff --git a/v2/package.json b/v2/package.json index 98f97b5c..4dd997d6 100644 --- a/v2/package.json +++ b/v2/package.json @@ -10,10 +10,10 @@ "lint": "npx eslint . --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "lint:fix": "npx eslint . --fix --ignore-pattern coverage/ --ignore-pattern coverage.json --ignore-pattern lib/ --ignore-pattern out --ignore-pattern cache_forge/", "localnet": "concurrently --names \"NODE,WORKER\" --prefix-colors \"blue.bold,green.bold\" \"anvil --auto-impersonate\" \"wait-on tcp:8545 && npx ts-node scripts/localnet/worker.ts\"", - "test": "forge clean && forge test -vv", + "test": "forge clean && forge test -vvv", "coverage": "forge clean && forge coverage --report lcov", "typechain": "npx typechain --target ethers-v6 \"out/**/!(*.t|test).sol/!(*.abi).json\" --out-dir typechain-types", - "generate": "forge clean && forge build && ./scripts/generate_go.sh || true && yarn lint:fix && forge fmt && yarn typechain" + "generate": "forge clean && forge build && forge fmt && ./scripts/generate_go.sh || true && yarn lint:fix && yarn typechain" }, "devDependencies": { "@eslint/js": "^9.7.0", diff --git a/v2/pkg/accesscontrol.sol/accesscontrol.go b/v2/pkg/accesscontrol.sol/accesscontrol.go new file mode 100644 index 00000000..9e7c48d6 --- /dev/null +++ b/v2/pkg/accesscontrol.sol/accesscontrol.go @@ -0,0 +1,854 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package accesscontrol + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AccessControlMetaData contains all meta data concerning the AccessControl contract. +var AccessControlMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", +} + +// AccessControlABI is the input ABI used to generate the binding from. +// Deprecated: Use AccessControlMetaData.ABI instead. +var AccessControlABI = AccessControlMetaData.ABI + +// AccessControl is an auto generated Go binding around an Ethereum contract. +type AccessControl struct { + AccessControlCaller // Read-only binding to the contract + AccessControlTransactor // Write-only binding to the contract + AccessControlFilterer // Log filterer for contract events +} + +// AccessControlCaller is an auto generated read-only Go binding around an Ethereum contract. +type AccessControlCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AccessControlTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AccessControlFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AccessControlSession struct { + Contract *AccessControl // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AccessControlCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AccessControlCallerSession struct { + Contract *AccessControlCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AccessControlTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AccessControlTransactorSession struct { + Contract *AccessControlTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AccessControlRaw is an auto generated low-level Go binding around an Ethereum contract. +type AccessControlRaw struct { + Contract *AccessControl // Generic contract binding to access the raw methods on +} + +// AccessControlCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AccessControlCallerRaw struct { + Contract *AccessControlCaller // Generic read-only contract binding to access the raw methods on +} + +// AccessControlTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AccessControlTransactorRaw struct { + Contract *AccessControlTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAccessControl creates a new instance of AccessControl, bound to a specific deployed contract. +func NewAccessControl(address common.Address, backend bind.ContractBackend) (*AccessControl, error) { + contract, err := bindAccessControl(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AccessControl{AccessControlCaller: AccessControlCaller{contract: contract}, AccessControlTransactor: AccessControlTransactor{contract: contract}, AccessControlFilterer: AccessControlFilterer{contract: contract}}, nil +} + +// NewAccessControlCaller creates a new read-only instance of AccessControl, bound to a specific deployed contract. +func NewAccessControlCaller(address common.Address, caller bind.ContractCaller) (*AccessControlCaller, error) { + contract, err := bindAccessControl(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AccessControlCaller{contract: contract}, nil +} + +// NewAccessControlTransactor creates a new write-only instance of AccessControl, bound to a specific deployed contract. +func NewAccessControlTransactor(address common.Address, transactor bind.ContractTransactor) (*AccessControlTransactor, error) { + contract, err := bindAccessControl(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AccessControlTransactor{contract: contract}, nil +} + +// NewAccessControlFilterer creates a new log filterer instance of AccessControl, bound to a specific deployed contract. +func NewAccessControlFilterer(address common.Address, filterer bind.ContractFilterer) (*AccessControlFilterer, error) { + contract, err := bindAccessControl(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AccessControlFilterer{contract: contract}, nil +} + +// bindAccessControl binds a generic wrapper to an already deployed contract. +func bindAccessControl(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AccessControlMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AccessControl *AccessControlRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AccessControl.Contract.AccessControlCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AccessControl *AccessControlRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AccessControl.Contract.AccessControlTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AccessControl *AccessControlRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AccessControl.Contract.AccessControlTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AccessControl *AccessControlCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AccessControl.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AccessControl *AccessControlTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AccessControl.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AccessControl *AccessControlTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AccessControl.Contract.contract.Transact(opts, method, params...) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControl *AccessControlCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AccessControl.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControl *AccessControlSession) DEFAULTADMINROLE() ([32]byte, error) { + return _AccessControl.Contract.DEFAULTADMINROLE(&_AccessControl.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControl *AccessControlCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _AccessControl.Contract.DEFAULTADMINROLE(&_AccessControl.CallOpts) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControl *AccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _AccessControl.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControl *AccessControlSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _AccessControl.Contract.GetRoleAdmin(&_AccessControl.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControl *AccessControlCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _AccessControl.Contract.GetRoleAdmin(&_AccessControl.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControl *AccessControlCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _AccessControl.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControl *AccessControlSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _AccessControl.Contract.HasRole(&_AccessControl.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControl *AccessControlCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _AccessControl.Contract.HasRole(&_AccessControl.CallOpts, role, account) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControl *AccessControlCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _AccessControl.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControl *AccessControlSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _AccessControl.Contract.SupportsInterface(&_AccessControl.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControl *AccessControlCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _AccessControl.Contract.SupportsInterface(&_AccessControl.CallOpts, interfaceId) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.GrantRole(&_AccessControl.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.GrantRole(&_AccessControl.TransactOpts, role, account) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControl *AccessControlTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControl.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControl *AccessControlSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.RenounceRole(&_AccessControl.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControl *AccessControlTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.RenounceRole(&_AccessControl.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.RevokeRole(&_AccessControl.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControl *AccessControlTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControl.Contract.RevokeRole(&_AccessControl.TransactOpts, role, account) +} + +// AccessControlRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the AccessControl contract. +type AccessControlRoleAdminChangedIterator struct { + Event *AccessControlRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlRoleAdminChanged represents a RoleAdminChanged event raised by the AccessControl contract. +type AccessControlRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControl *AccessControlFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*AccessControlRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _AccessControl.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &AccessControlRoleAdminChangedIterator{contract: _AccessControl.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControl *AccessControlFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *AccessControlRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _AccessControl.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlRoleAdminChanged) + if err := _AccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControl *AccessControlFilterer) ParseRoleAdminChanged(log types.Log) (*AccessControlRoleAdminChanged, error) { + event := new(AccessControlRoleAdminChanged) + if err := _AccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AccessControlRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the AccessControl contract. +type AccessControlRoleGrantedIterator struct { + Event *AccessControlRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlRoleGranted represents a RoleGranted event raised by the AccessControl contract. +type AccessControlRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControl.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &AccessControlRoleGrantedIterator{contract: _AccessControl.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *AccessControlRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControl.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlRoleGranted) + if err := _AccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) ParseRoleGranted(log types.Log) (*AccessControlRoleGranted, error) { + event := new(AccessControlRoleGranted) + if err := _AccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AccessControlRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the AccessControl contract. +type AccessControlRoleRevokedIterator struct { + Event *AccessControlRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlRoleRevoked represents a RoleRevoked event raised by the AccessControl contract. +type AccessControlRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControl.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &AccessControlRoleRevokedIterator{contract: _AccessControl.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *AccessControlRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControl.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlRoleRevoked) + if err := _AccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControl *AccessControlFilterer) ParseRoleRevoked(log types.Log) (*AccessControlRoleRevoked, error) { + event := new(AccessControlRoleRevoked) + if err := _AccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/accesscontrolupgradeable.sol/accesscontrolupgradeable.go b/v2/pkg/accesscontrolupgradeable.sol/accesscontrolupgradeable.go new file mode 100644 index 00000000..5f0434b6 --- /dev/null +++ b/v2/pkg/accesscontrolupgradeable.sol/accesscontrolupgradeable.go @@ -0,0 +1,988 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package accesscontrolupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AccessControlUpgradeableMetaData contains all meta data concerning the AccessControlUpgradeable contract. +var AccessControlUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]}]", +} + +// AccessControlUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use AccessControlUpgradeableMetaData.ABI instead. +var AccessControlUpgradeableABI = AccessControlUpgradeableMetaData.ABI + +// AccessControlUpgradeable is an auto generated Go binding around an Ethereum contract. +type AccessControlUpgradeable struct { + AccessControlUpgradeableCaller // Read-only binding to the contract + AccessControlUpgradeableTransactor // Write-only binding to the contract + AccessControlUpgradeableFilterer // Log filterer for contract events +} + +// AccessControlUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type AccessControlUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AccessControlUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AccessControlUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AccessControlUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AccessControlUpgradeableSession struct { + Contract *AccessControlUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AccessControlUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AccessControlUpgradeableCallerSession struct { + Contract *AccessControlUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AccessControlUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AccessControlUpgradeableTransactorSession struct { + Contract *AccessControlUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AccessControlUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type AccessControlUpgradeableRaw struct { + Contract *AccessControlUpgradeable // Generic contract binding to access the raw methods on +} + +// AccessControlUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AccessControlUpgradeableCallerRaw struct { + Contract *AccessControlUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// AccessControlUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AccessControlUpgradeableTransactorRaw struct { + Contract *AccessControlUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAccessControlUpgradeable creates a new instance of AccessControlUpgradeable, bound to a specific deployed contract. +func NewAccessControlUpgradeable(address common.Address, backend bind.ContractBackend) (*AccessControlUpgradeable, error) { + contract, err := bindAccessControlUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AccessControlUpgradeable{AccessControlUpgradeableCaller: AccessControlUpgradeableCaller{contract: contract}, AccessControlUpgradeableTransactor: AccessControlUpgradeableTransactor{contract: contract}, AccessControlUpgradeableFilterer: AccessControlUpgradeableFilterer{contract: contract}}, nil +} + +// NewAccessControlUpgradeableCaller creates a new read-only instance of AccessControlUpgradeable, bound to a specific deployed contract. +func NewAccessControlUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*AccessControlUpgradeableCaller, error) { + contract, err := bindAccessControlUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableCaller{contract: contract}, nil +} + +// NewAccessControlUpgradeableTransactor creates a new write-only instance of AccessControlUpgradeable, bound to a specific deployed contract. +func NewAccessControlUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*AccessControlUpgradeableTransactor, error) { + contract, err := bindAccessControlUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableTransactor{contract: contract}, nil +} + +// NewAccessControlUpgradeableFilterer creates a new log filterer instance of AccessControlUpgradeable, bound to a specific deployed contract. +func NewAccessControlUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*AccessControlUpgradeableFilterer, error) { + contract, err := bindAccessControlUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableFilterer{contract: contract}, nil +} + +// bindAccessControlUpgradeable binds a generic wrapper to an already deployed contract. +func bindAccessControlUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AccessControlUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AccessControlUpgradeable *AccessControlUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AccessControlUpgradeable.Contract.AccessControlUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AccessControlUpgradeable *AccessControlUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.AccessControlUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AccessControlUpgradeable *AccessControlUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.AccessControlUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AccessControlUpgradeable *AccessControlUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AccessControlUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AccessControlUpgradeable.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) DEFAULTADMINROLE() ([32]byte, error) { + return _AccessControlUpgradeable.Contract.DEFAULTADMINROLE(&_AccessControlUpgradeable.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _AccessControlUpgradeable.Contract.DEFAULTADMINROLE(&_AccessControlUpgradeable.CallOpts) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _AccessControlUpgradeable.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _AccessControlUpgradeable.Contract.GetRoleAdmin(&_AccessControlUpgradeable.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_AccessControlUpgradeable *AccessControlUpgradeableCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _AccessControlUpgradeable.Contract.GetRoleAdmin(&_AccessControlUpgradeable.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _AccessControlUpgradeable.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _AccessControlUpgradeable.Contract.HasRole(&_AccessControlUpgradeable.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _AccessControlUpgradeable.Contract.HasRole(&_AccessControlUpgradeable.CallOpts, role, account) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _AccessControlUpgradeable.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _AccessControlUpgradeable.Contract.SupportsInterface(&_AccessControlUpgradeable.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_AccessControlUpgradeable *AccessControlUpgradeableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _AccessControlUpgradeable.Contract.SupportsInterface(&_AccessControlUpgradeable.CallOpts, interfaceId) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.GrantRole(&_AccessControlUpgradeable.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.GrantRole(&_AccessControlUpgradeable.TransactOpts, role, account) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.RenounceRole(&_AccessControlUpgradeable.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.RenounceRole(&_AccessControlUpgradeable.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.RevokeRole(&_AccessControlUpgradeable.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_AccessControlUpgradeable *AccessControlUpgradeableTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _AccessControlUpgradeable.Contract.RevokeRole(&_AccessControlUpgradeable.TransactOpts, role, account) +} + +// AccessControlUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableInitializedIterator struct { + Event *AccessControlUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlUpgradeableInitialized represents a Initialized event raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*AccessControlUpgradeableInitializedIterator, error) { + + logs, sub, err := _AccessControlUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &AccessControlUpgradeableInitializedIterator{contract: _AccessControlUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *AccessControlUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _AccessControlUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlUpgradeableInitialized) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) ParseInitialized(log types.Log) (*AccessControlUpgradeableInitialized, error) { + event := new(AccessControlUpgradeableInitialized) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AccessControlUpgradeableRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleAdminChangedIterator struct { + Event *AccessControlUpgradeableRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlUpgradeableRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlUpgradeableRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlUpgradeableRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlUpgradeableRoleAdminChanged represents a RoleAdminChanged event raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*AccessControlUpgradeableRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableRoleAdminChangedIterator{contract: _AccessControlUpgradeable.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *AccessControlUpgradeableRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlUpgradeableRoleAdminChanged) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) ParseRoleAdminChanged(log types.Log) (*AccessControlUpgradeableRoleAdminChanged, error) { + event := new(AccessControlUpgradeableRoleAdminChanged) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AccessControlUpgradeableRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleGrantedIterator struct { + Event *AccessControlUpgradeableRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlUpgradeableRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlUpgradeableRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlUpgradeableRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlUpgradeableRoleGranted represents a RoleGranted event raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlUpgradeableRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableRoleGrantedIterator{contract: _AccessControlUpgradeable.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *AccessControlUpgradeableRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlUpgradeableRoleGranted) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) ParseRoleGranted(log types.Log) (*AccessControlUpgradeableRoleGranted, error) { + event := new(AccessControlUpgradeableRoleGranted) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AccessControlUpgradeableRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleRevokedIterator struct { + Event *AccessControlUpgradeableRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AccessControlUpgradeableRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AccessControlUpgradeableRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AccessControlUpgradeableRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AccessControlUpgradeableRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AccessControlUpgradeableRoleRevoked represents a RoleRevoked event raised by the AccessControlUpgradeable contract. +type AccessControlUpgradeableRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlUpgradeableRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &AccessControlUpgradeableRoleRevokedIterator{contract: _AccessControlUpgradeable.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *AccessControlUpgradeableRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _AccessControlUpgradeable.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AccessControlUpgradeableRoleRevoked) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_AccessControlUpgradeable *AccessControlUpgradeableFilterer) ParseRoleRevoked(log types.Log) (*AccessControlUpgradeableRoleRevoked, error) { + event := new(AccessControlUpgradeableRoleRevoked) + if err := _AccessControlUpgradeable.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc165.sol/erc165.go b/v2/pkg/erc165.sol/erc165.go new file mode 100644 index 00000000..425bf6e0 --- /dev/null +++ b/v2/pkg/erc165.sol/erc165.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc165 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC165MetaData contains all meta data concerning the ERC165 contract. +var ERC165MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"}]", +} + +// ERC165ABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC165MetaData.ABI instead. +var ERC165ABI = ERC165MetaData.ABI + +// ERC165 is an auto generated Go binding around an Ethereum contract. +type ERC165 struct { + ERC165Caller // Read-only binding to the contract + ERC165Transactor // Write-only binding to the contract + ERC165Filterer // Log filterer for contract events +} + +// ERC165Caller is an auto generated read-only Go binding around an Ethereum contract. +type ERC165Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC165Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC165Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC165Session struct { + Contract *ERC165 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC165CallerSession struct { + Contract *ERC165Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC165TransactorSession struct { + Contract *ERC165Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC165Raw is an auto generated low-level Go binding around an Ethereum contract. +type ERC165Raw struct { + Contract *ERC165 // Generic contract binding to access the raw methods on +} + +// ERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC165CallerRaw struct { + Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on +} + +// ERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC165TransactorRaw struct { + Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC165 creates a new instance of ERC165, bound to a specific deployed contract. +func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) { + contract, err := bindERC165(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil +} + +// NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract. +func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) { + contract, err := bindERC165(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC165Caller{contract: contract}, nil +} + +// NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract. +func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) { + contract, err := bindERC165(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC165Transactor{contract: contract}, nil +} + +// NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract. +func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) { + contract, err := bindERC165(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC165Filterer{contract: contract}, nil +} + +// bindERC165 binds a generic wrapper to an already deployed contract. +func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC165MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165.Contract.contract.Transact(opts, method, params...) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId) +} diff --git a/v2/pkg/erc165upgradeable.sol/erc165upgradeable.go b/v2/pkg/erc165upgradeable.sol/erc165upgradeable.go new file mode 100644 index 00000000..6a205039 --- /dev/null +++ b/v2/pkg/erc165upgradeable.sol/erc165upgradeable.go @@ -0,0 +1,346 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc165upgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC165UpgradeableMetaData contains all meta data concerning the ERC165Upgradeable contract. +var ERC165UpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]}]", +} + +// ERC165UpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC165UpgradeableMetaData.ABI instead. +var ERC165UpgradeableABI = ERC165UpgradeableMetaData.ABI + +// ERC165Upgradeable is an auto generated Go binding around an Ethereum contract. +type ERC165Upgradeable struct { + ERC165UpgradeableCaller // Read-only binding to the contract + ERC165UpgradeableTransactor // Write-only binding to the contract + ERC165UpgradeableFilterer // Log filterer for contract events +} + +// ERC165UpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC165UpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165UpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC165UpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165UpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC165UpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC165UpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC165UpgradeableSession struct { + Contract *ERC165Upgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC165UpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC165UpgradeableCallerSession struct { + Contract *ERC165UpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC165UpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC165UpgradeableTransactorSession struct { + Contract *ERC165UpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC165UpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC165UpgradeableRaw struct { + Contract *ERC165Upgradeable // Generic contract binding to access the raw methods on +} + +// ERC165UpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC165UpgradeableCallerRaw struct { + Contract *ERC165UpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC165UpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC165UpgradeableTransactorRaw struct { + Contract *ERC165UpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC165Upgradeable creates a new instance of ERC165Upgradeable, bound to a specific deployed contract. +func NewERC165Upgradeable(address common.Address, backend bind.ContractBackend) (*ERC165Upgradeable, error) { + contract, err := bindERC165Upgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC165Upgradeable{ERC165UpgradeableCaller: ERC165UpgradeableCaller{contract: contract}, ERC165UpgradeableTransactor: ERC165UpgradeableTransactor{contract: contract}, ERC165UpgradeableFilterer: ERC165UpgradeableFilterer{contract: contract}}, nil +} + +// NewERC165UpgradeableCaller creates a new read-only instance of ERC165Upgradeable, bound to a specific deployed contract. +func NewERC165UpgradeableCaller(address common.Address, caller bind.ContractCaller) (*ERC165UpgradeableCaller, error) { + contract, err := bindERC165Upgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC165UpgradeableCaller{contract: contract}, nil +} + +// NewERC165UpgradeableTransactor creates a new write-only instance of ERC165Upgradeable, bound to a specific deployed contract. +func NewERC165UpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC165UpgradeableTransactor, error) { + contract, err := bindERC165Upgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC165UpgradeableTransactor{contract: contract}, nil +} + +// NewERC165UpgradeableFilterer creates a new log filterer instance of ERC165Upgradeable, bound to a specific deployed contract. +func NewERC165UpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC165UpgradeableFilterer, error) { + contract, err := bindERC165Upgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC165UpgradeableFilterer{contract: contract}, nil +} + +// bindERC165Upgradeable binds a generic wrapper to an already deployed contract. +func bindERC165Upgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC165UpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165Upgradeable *ERC165UpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165Upgradeable.Contract.ERC165UpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165Upgradeable *ERC165UpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165Upgradeable.Contract.ERC165UpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165Upgradeable *ERC165UpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165Upgradeable.Contract.ERC165UpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC165Upgradeable *ERC165UpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC165Upgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC165Upgradeable *ERC165UpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC165Upgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC165Upgradeable *ERC165UpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC165Upgradeable.Contract.contract.Transact(opts, method, params...) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165Upgradeable *ERC165UpgradeableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC165Upgradeable.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165Upgradeable *ERC165UpgradeableSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165Upgradeable.Contract.SupportsInterface(&_ERC165Upgradeable.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC165Upgradeable *ERC165UpgradeableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC165Upgradeable.Contract.SupportsInterface(&_ERC165Upgradeable.CallOpts, interfaceId) +} + +// ERC165UpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC165Upgradeable contract. +type ERC165UpgradeableInitializedIterator struct { + Event *ERC165UpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC165UpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC165UpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC165UpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC165UpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC165UpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC165UpgradeableInitialized represents a Initialized event raised by the ERC165Upgradeable contract. +type ERC165UpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC165Upgradeable *ERC165UpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC165UpgradeableInitializedIterator, error) { + + logs, sub, err := _ERC165Upgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ERC165UpgradeableInitializedIterator{contract: _ERC165Upgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC165Upgradeable *ERC165UpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC165UpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _ERC165Upgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC165UpgradeableInitialized) + if err := _ERC165Upgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ERC165Upgradeable *ERC165UpgradeableFilterer) ParseInitialized(log types.Log) (*ERC165UpgradeableInitialized, error) { + event := new(ERC165UpgradeableInitialized) + if err := _ERC165Upgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/erc20custody.sol/erc20custody.go b/v2/pkg/erc20custody.sol/erc20custody.go index d502e7ac..16bd9024 100644 --- a/v2/pkg/erc20custody.sol/erc20custody.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -31,8 +31,8 @@ var ( // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033", } // ERC20CustodyABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ERC20CustodyABI = ERC20CustodyMetaData.ABI var ERC20CustodyBin = ERC20CustodyMetaData.Bin // DeployERC20Custody deploys a new Ethereum contract, binding an instance of ERC20Custody to it. -func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { +func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { parsed, err := ERC20CustodyMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _ return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, _gateway, _tssAddress) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, _gateway, _tssAddress, _admin) if err != nil { return common.Address{}, nil, nil, err } @@ -202,6 +202,99 @@ func (_ERC20Custody *ERC20CustodyTransactorRaw) Transact(opts *bind.TransactOpts return _ERC20Custody.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodySession) DEFAULTADMINROLE() ([32]byte, error) { + return _ERC20Custody.Contract.DEFAULTADMINROLE(&_ERC20Custody.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ERC20Custody.Contract.DEFAULTADMINROLE(&_ERC20Custody.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodySession) PAUSERROLE() ([32]byte, error) { + return _ERC20Custody.Contract.PAUSERROLE(&_ERC20Custody.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCallerSession) PAUSERROLE() ([32]byte, error) { + return _ERC20Custody.Contract.PAUSERROLE(&_ERC20Custody.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodySession) WITHDRAWERROLE() ([32]byte, error) { + return _ERC20Custody.Contract.WITHDRAWERROLE(&_ERC20Custody.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ERC20Custody.Contract.WITHDRAWERROLE(&_ERC20Custody.CallOpts) +} + // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) @@ -233,6 +326,130 @@ func (_ERC20Custody *ERC20CustodyCallerSession) Gateway() (common.Address, error return _ERC20Custody.Contract.Gateway(&_ERC20Custody.CallOpts) } +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20Custody *ERC20CustodySession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ERC20Custody.Contract.GetRoleAdmin(&_ERC20Custody.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20Custody *ERC20CustodyCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ERC20Custody.Contract.GetRoleAdmin(&_ERC20Custody.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20Custody *ERC20CustodyCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20Custody *ERC20CustodySession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ERC20Custody.Contract.HasRole(&_ERC20Custody.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20Custody *ERC20CustodyCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ERC20Custody.Contract.HasRole(&_ERC20Custody.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodyCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodySession) Paused() (bool, error) { + return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Custody *ERC20CustodyCallerSession) Paused() (bool, error) { + return _ERC20Custody.Contract.Paused(&_ERC20Custody.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20Custody *ERC20CustodyCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC20Custody.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20Custody *ERC20CustodySession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC20Custody.Contract.SupportsInterface(&_ERC20Custody.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20Custody *ERC20CustodyCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC20Custody.Contract.SupportsInterface(&_ERC20Custody.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -264,6 +481,111 @@ func (_ERC20Custody *ERC20CustodyCallerSession) TssAddress() (common.Address, er return _ERC20Custody.Contract.TssAddress(&_ERC20Custody.CallOpts) } +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodyTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodySession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.GrantRole(&_ERC20Custody.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.GrantRole(&_ERC20Custody.TransactOpts, role, account) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodyTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodySession) Pause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Pause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Pause(&_ERC20Custody.TransactOpts) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20Custody *ERC20CustodyTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20Custody *ERC20CustodySession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.RenounceRole(&_ERC20Custody.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.RenounceRole(&_ERC20Custody.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodyTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodySession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.RevokeRole(&_ERC20Custody.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20Custody.Contract.RevokeRole(&_ERC20Custody.TransactOpts, role, account) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodyTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Custody.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodySession) Unpause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Custody *ERC20CustodyTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC20Custody.Contract.Unpause(&_ERC20Custody.TransactOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() @@ -327,6 +649,760 @@ func (_ERC20Custody *ERC20CustodyTransactorSession) WithdrawAndRevert(token comm return _ERC20Custody.Contract.WithdrawAndRevert(&_ERC20Custody.TransactOpts, token, to, amount, data) } +// ERC20CustodyPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC20Custody contract. +type ERC20CustodyPausedIterator struct { + Event *ERC20CustodyPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyPaused represents a Paused event raised by the ERC20Custody contract. +type ERC20CustodyPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC20CustodyPausedIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC20CustodyPausedIterator{contract: _ERC20Custody.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyPaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyPaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) ParsePaused(log types.Log) (*ERC20CustodyPaused, error) { + event := new(ERC20CustodyPaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ERC20Custody contract. +type ERC20CustodyRoleAdminChangedIterator struct { + Event *ERC20CustodyRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyRoleAdminChanged represents a RoleAdminChanged event raised by the ERC20Custody contract. +type ERC20CustodyRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20Custody *ERC20CustodyFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ERC20CustodyRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ERC20CustodyRoleAdminChangedIterator{contract: _ERC20Custody.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20Custody *ERC20CustodyFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC20CustodyRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyRoleAdminChanged) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20Custody *ERC20CustodyFilterer) ParseRoleAdminChanged(log types.Log) (*ERC20CustodyRoleAdminChanged, error) { + event := new(ERC20CustodyRoleAdminChanged) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the ERC20Custody contract. +type ERC20CustodyRoleGrantedIterator struct { + Event *ERC20CustodyRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyRoleGranted represents a RoleGranted event raised by the ERC20Custody contract. +type ERC20CustodyRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ERC20CustodyRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ERC20CustodyRoleGrantedIterator{contract: _ERC20Custody.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyRoleGranted) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) ParseRoleGranted(log types.Log) (*ERC20CustodyRoleGranted, error) { + event := new(ERC20CustodyRoleGranted) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the ERC20Custody contract. +type ERC20CustodyRoleRevokedIterator struct { + Event *ERC20CustodyRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyRoleRevoked represents a RoleRevoked event raised by the ERC20Custody contract. +type ERC20CustodyRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ERC20CustodyRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ERC20CustodyRoleRevokedIterator{contract: _ERC20Custody.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ERC20CustodyRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyRoleRevoked) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20Custody *ERC20CustodyFilterer) ParseRoleRevoked(log types.Log) (*ERC20CustodyRoleRevoked, error) { + event := new(ERC20CustodyRoleRevoked) + if err := _ERC20Custody.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC20Custody contract. +type ERC20CustodyUnpausedIterator struct { + Event *ERC20CustodyUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyUnpaused represents a Unpaused event raised by the ERC20Custody contract. +type ERC20CustodyUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC20CustodyUnpausedIterator, error) { + + logs, sub, err := _ERC20Custody.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC20CustodyUnpausedIterator{contract: _ERC20Custody.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Custody.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyUnpaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Custody *ERC20CustodyFilterer) ParseUnpaused(log types.Log) (*ERC20CustodyUnpaused, error) { + event := new(ERC20CustodyUnpaused) + if err := _ERC20Custody.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC20CustodyWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20Custody contract. type ERC20CustodyWithdrawIterator struct { Event *ERC20CustodyWithdraw // Event containing the contract specifics and raw log diff --git a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go index 3fcabace..4e6fce27 100644 --- a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go +++ b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go @@ -31,8 +31,8 @@ var ( // ERC20CustodyEchidnaTestMetaData contains all meta data concerning the ERC20CustodyEchidnaTest contract. var ERC20CustodyEchidnaTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220d7214dc766e4e33e30af0ee72b7ff719d6cf4397d65eb7d070aaed8a4867b91664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x600580546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010481905261012452606460c090815261014460405260e080516001600160e01b0390811663c0c53b8b60e01b1790915261007792919061027f16565b600680546001600160a01b03929092166001600160a01b03199283168117909155600780549092161790553480156100ae57600080fd5b5060075460055460016000556002805460ff191690556001600160a01b039182169116808215806100e657506001600160a01b038216155b156101045760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b03191691841691909117905561014e60008261029e565b506101797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261029e565b506101a47f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361029e565b505050506040516101b49061382a565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015610206573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617815560075460405163ae7a3a6f60e01b815230928101929092529091169063ae7a3a6f90602401600060405180830381600087803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b505050506148ab565b6000610289613837565b610294848483610331565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166103295760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610298565b506000610298565b60008061033e85846103ad565b90506103a26040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161038c929190613940565b60408051601f19818403018152919052856103b9565b9150505b9392505050565b60006103a683836103ed565b60c081015151600090156103e3576103dc84848460c0015161040e60201b60201c565b90506103a6565b6103dc8484610587565b60006103f98383610654565b6103a6838360200151846103b960201b60201c565b600080610419610664565b9050600061042786836106fe565b905060006104448260600151836020015185610b2160201b60201c565b9050600061045483838989610cd6565b9050600061046182611952565b602081015181519192509060030b156104ba5789826040015160405160200161048b929190613964565b60408051601f198184030181529082905262461bcd60e51b82526104b1916004016139ca565b60405180910390fd5b60006105036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611ae960201b60201c565b60405163c6ce059d60e01b8152909150600080516020616ad08339815191529063c6ce059d906105379084906004016139ca565b602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057891906139dd565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616ad083398151915290638d1cc925906105bd9087906004016139ca565b600060405180830381865afa1580156105da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106029190810190613ad2565b90506000610631828560405160200161061c929190613b06565b60408051601f19818403018152919052611c89565b90506001600160a01b03811661029457848460405160200161048b929190613b35565b61066082826000611c9c565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616ad083398151915291829063d145736c906106b2908490600401613bc4565b600060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f79190810190613bf9565b9250505090565b6107306040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616ad083398151915290506107756040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61077e85611d76565b6020820152600061078e86611fcb565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f89190810190613bf9565b868385602001516040516020016108129493929190613c41565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108519085906004016139ca565b600060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108969190810190613bf9565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108c5908490600401613cd9565b602060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190613d12565b61091b578160405160200161048b9190613d34565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610947908490600401613dab565b600060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098c9190810190613bf9565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f6906109ba908490600401613df1565b602060405180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613d12565b15610a77576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a2c908490600401613df1565b600060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a719190810190613bf9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a9c9190613e32565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610ac8929190613e8d565b600060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b0d9190810190613bf9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b3d579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b8457610b84613eb2565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610bbe57610bbe613eb2565b602002602001018190525084604051602001610bda9190613ec8565b60405160208183030381529060405281600281518110610bfc57610bfc613eb2565b602002602001018190525082604051602001610c189190613efd565b60405160208183030381529060405281600381518110610c3a57610c3a613eb2565b60209081029190910101526000610c5082611952565b9050600081602001519050610cb7610c8a60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061217b565b610ccc578560405160200161048b9190613f2c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616ad08339815191529015610d20565b511590565b610e3c57826020015115610db05760405162461bcd60e51b81526020600482015260586024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016104b1565b8260c0015115610e3c5760405162461bcd60e51b81526020600482015260536024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016104b1565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e555790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e9690613fc1565b935060ff1681518110610eab57610eab613eb2565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610eec9190613fe0565b604051602081830303815290604052828280610f0790613fc1565b935060ff1681518110610f1c57610f1c613eb2565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f5290613fc1565b935060ff1681518110610f6757610f67613eb2565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610fa590613fc1565b935060ff1681518110610fba57610fba613eb2565b60200260200101819052508760200151828280610fd690613fc1565b935060ff1681518110610feb57610feb613eb2565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061102990613fc1565b935060ff168151811061103e5761103e613eb2565b60209081029190910101528751828261105681613fc1565b935060ff168151811061106b5761106b613eb2565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806110a490613fc1565b935060ff16815181106110b9576110b9613eb2565b60209081029190910101526110cd466121dc565b82826110d881613fc1565b935060ff16815181106110ed576110ed613eb2565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061112c90613fc1565b935060ff168151811061114157611141613eb2565b60200260200101819052508682828061115990613fc1565b935060ff168151811061116e5761116e613eb2565b602090810291909101015285511561127c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111bf81613fc1565b935060ff16815181106111d4576111d4613eb2565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d9061120b9089906004016139ca565b600060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190613bf9565b828261125b81613fc1565b935060ff168151811061127057611270613eb2565b60200260200101819052505b846020015115611329576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826112ba81613fc1565b935060ff16815181106112cf576112cf613eb2565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b81525082828061130490613fc1565b935060ff168151811061131957611319613eb2565b6020026020010181905250611490565b61133f610d1b8660a0015161214e60201b60201c565b6113c25760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261137281613fc1565b935060ff168151811061138757611387613eb2565b60200260200101819052508460a001516040516020016113a79190613ec8565b60405160208183030381529060405282828061130490613fc1565b8460c001511580156113e757506113e5610d1b896040015161214e60201b60201c565b155b156114905760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261141b81613fc1565b935060ff168151811061143057611430613eb2565b60209081029190910101526114448861226e565b6040516020016114549190613ec8565b60405160208183030381529060405282828061146f90613fc1565b935060ff168151811061148457611484613eb2565b60200260200101819052505b6114a6610d1b866040015161214e60201b60201c565b6115295760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114d781613fc1565b935060ff16815181106114ec576114ec613eb2565b6020026020010181905250846040015182828061150890613fc1565b935060ff168151811061151d5761151d613eb2565b60200260200101819052505b60608501511561161a576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261155b81613fc1565b935060ff168151811061157057611570613eb2565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ee9190810190613bf9565b82826115f981613fc1565b935060ff168151811061160e5761160e613eb2565b60200260200101819052505b60e085015151156116ac5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261165181613fc1565b935060ff168151811061166657611666613eb2565b602090810291909101015260e085015151611680906121dc565b828261168b81613fc1565b935060ff16815181106116a0576116a0613eb2565b60200260200101819052505b60e085015160200151156117495760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116e681613fc1565b935060ff16815181106116fb576116fb613eb2565b602002602001018190525061171d8560e00151602001516121dc60201b60201c565b828261172881613fc1565b935060ff168151811061173d5761173d613eb2565b60200260200101819052505b60e085015160400151156117ea5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261178781613fc1565b935060ff168151811061179c5761179c613eb2565b60200260200101819052506117be8560e00151604001516121dc60201b60201c565b82826117c981613fc1565b935060ff16815181106117de576117de613eb2565b60200260200101819052505b60e0850151606001511561189a5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261183781613fc1565b935060ff168151811061184c5761184c613eb2565b602002602001018190525061186e8560e00151606001516121dc60201b60201c565b828261187981613fc1565b935060ff168151811061188e5761188e613eb2565b60200260200101819052505b60008160ff166001600160401b038111156118b7576118b7613a06565b6040519080825280602002602001820160405280156118ea57816020015b60608152602001906001900390816118d55790505b50905060005b8260ff168160ff16101561194357838160ff168151811061191357611913613eb2565b6020026020010151828260ff168151811061193057611930613eb2565b60209081029190910101526001016118f0565b5093505050505b949350505050565b6119796040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616ad083398151915292600091849163d145736c916119c791869101614037565b600060405180830381865afa1580156119e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a0c9190810190613bf9565b90506000611a1a8683612924565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a4a919061407e565b6000604051808303816000875af1158015611a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a9191908101906140e3565b805190915060030b15801590611aaa5750602081015151155b8015611ab95750604081015151155b15610ccc5781600081518110611ad157611ad1613eb2565b602002602001015160405160200161048b9190614196565b60606000611b1e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b559082905b90612a5e565b15611c52576000611bd282611bcc81611bc6611b988a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a85565b90612ae2565b9050611c06611bff604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612a5e565b15611c4057611c3d611c36604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612b67565b90505b611c4981612b8d565b925050506103a6565b8215611c6b57848460405160200161048b929190614366565b50506040805160208101909152600081526103a6565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611cab57505050565b6000611cb8848484612bf2565b90506000611cc582611952565b602081015181519192509060030b158015611d385750611d38611d0c604051806040016040528060078152602001665355434345535360c81b81525061214e60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b4f565b15611d4557505050505050565b60408201515115611d6557816040015160405160200161048b91906143e1565b8060405160200161048b919061442b565b60606000611dab8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611de2611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b829061217b565b15611e24576103a6611e1f611e18604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b8390613105565b612b8d565b611e56611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b829061318f565b600103611ebe57611e88611c36604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b506103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b8390612b67565b611eed611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba576000611f2582611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b613224565b905060008160018351611f38919061447b565b81518110611f4857611f48613eb2565b60200260200101519050611fb1611e1f611f8460405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290613105565b95945050505050565b8260405160200161048b919061448e565b606060006120008360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612030611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b1561203e576103a681612b8d565b612069611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b60010361209e576103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b6120cd611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba57600061210082611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b905060018151111561213c57806002825161211b919061447b565b8151811061212b5761212b613eb2565b602002602001015192505050919050565b508260405160200161048b919061448e565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111561219057506000610298565b815183516020850151600092916121a691614548565b6121b0919061447b565b9050826020015181036121c7576001915050610298565b82516020840151819020912014905092915050565b606060006121e9836132c8565b60010190506000816001600160401b0381111561220857612208613a06565b6040519080825280601f01601f191660200182016040528015612232576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461223c57509392505050565b60606000612285836040015161214e60201b60201c565b90506122c26122bb6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061214e60201b60201c565b82906133aa565b156122e95750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61231c6122bb60405180604001604052806009815260200168556e6c6963656e736560b81b81525061214e60201b60201c565b15612348575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b6123756122bb6040518060400160405280600381526020016213525560ea1b81525061214e60201b60201c565b1561239b57505060408051808201909152600381526213525560ea1b6020820152919050565b6123d16122bb6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061214e60201b60201c565b8061241157506124116122bb6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061214e60201b60201c565b1561243d57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b6124736122bb6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061214e60201b60201c565b806124b357506124b36122bb6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061214e60201b60201c565b156124df575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6125166122bb6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061214e60201b60201c565b8061255757506125576122bb604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061214e60201b60201c565b1561258657505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125bd6122bb6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b806125fe57506125fe6122bb604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b1561262b57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b6126616122bb6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061214e60201b60201c565b1561269057505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126c66122bb6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061214e60201b60201c565b156126f557505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b6127266122bb6040518060400160405280600781526020016604d504c2d322e360cc1b81525061214e60201b60201c565b1561275057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b6127816122bb6040518060400160405280600781526020016604f534c2d332e360cc1b81525061214e60201b60201c565b156127ab57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127df6122bb6040518060400160405280600a81526020016904170616368652d322e360b41b81525061214e60201b60201c565b1561280c57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6128436122bb6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b8061288457506128846122bb6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b156128b157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128e36122bb604051806040016040528060088152602001674255534c2d312e3160c01b81525061214e60201b60201c565b1561290d57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161048b929060200161455b565b60608060005b84518110156129af578185828151811061294657612946613eb2565b602002602001015160405160200161295f929190613b06565b60405160208183030381529060405291506001855161297e919061447b565b81146129a7578160405160200161299591906146ab565b60405160208183030381529060405291505b60010161292a565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129c857905050905083816000815181106129f3576129f3613eb2565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a2c57612a2c613eb2565b60200260200101819052508181600281518110612a4b57612a4b613eb2565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a7c92918491906133be565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612ab293906134cf565b9050836020015181612ac4919061447b565b84518590612ad390839061447b565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612b07575081610298565b6020808301519084015160019114612b2e5750815160208481015190840151829020919020145b8015612b5f57825184518590612b4590839061447b565b9052508251602085018051612b5b908390614548565b9052505b509192915050565b6040805180820190915260008082526020820152612b868383836135ef565b5092915050565b6060600082600001516001600160401b03811115612bad57612bad613a06565b6040519080825280601f01601f191660200182016040528015612bd7576020820181803683370190505b50602084810151855192935090830191612b86918391613695565b60606000612bfe610664565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612c1b5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c5c90613fc1565b935060ff1681518110612c7157612c71613eb2565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612cac91906146d0565b604051602081830303815290604052828280612cc790613fc1565b935060ff1681518110612cdc57612cdc613eb2565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612d1490613fc1565b935060ff1681518110612d2957612d29613eb2565b602002602001018190525082604051602001612d459190613efd565b604051602081830303815290604052828280612d6090613fc1565b935060ff1681518110612d7557612d75613eb2565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612daf90613fc1565b935060ff1681518110612dc457612dc4613eb2565b6020908102919091010152612dd9878461370f565b8282612de481613fc1565b935060ff1681518110612df957612df9613eb2565b602090810291909101015285515115612e915760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e3981613fc1565b935060ff1681518110612e4e57612e4e613eb2565b60209081029190910101528551612e65908461370f565b8282612e7081613fc1565b935060ff1681518110612e8557612e85613eb2565b60200260200101819052505b856080015115612eff5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612eda81613fc1565b935060ff1681518110612eef57612eef613eb2565b6020026020010181905250612f5a565b8415612f5a576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f3981613fc1565b935060ff1681518110612f4e57612f4e613eb2565b60200260200101819052505b60408601515115612fe65760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f9481613fc1565b935060ff1681518110612fa957612fa9613eb2565b60200260200101819052508560400151828280612fc590613fc1565b935060ff1681518110612fda57612fda613eb2565b60200260200101819052505b8560600151156130505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261302f81613fc1565b935060ff168151811061304457613044613eb2565b60200260200101819052505b60008160ff166001600160401b0381111561306d5761306d613a06565b6040519080825280602002602001820160405280156130a057816020015b606081526020019060019003908161308b5790505b50905060005b8260ff168160ff1610156130f957838160ff16815181106130c9576130c9613eb2565b6020026020010151828260ff16815181106130e6576130e6613eb2565b60209081029190910101526001016130a6565b50979650505050505050565b604080518082019091526000808252602082015281518351101561312a575081610298565b8151835160208501516000929161314091614548565b61314a919061447b565b6020840151909150600190821461316b575082516020840151819020908220145b80156131865783518551869061318290839061447b565b9052505b50929392505050565b8051825160208085015190840151600093849390926131af9284906134cf565b6131b99190614548565b90505b835160208501516131cd9190614548565b8111612b8657816131dd81614715565b92505082600001516132138560200151836131f8919061447b565b8651613204919061447b565b855160208701518591906134cf565b61321d9190614548565b90506131bc565b60606000613232848461318f565b61323d906001614548565b6001600160401b0381111561325457613254613a06565b60405190808252806020026020018201604052801561328757816020015b60608152602001906001900390816132725790505b50905060005b8151811015611c81576132a3611e1f8686612b67565b8282815181106132b5576132b5613eb2565b602090810291909101015260010161328d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613311577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061333d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061335b57662386f26fc10000830492506010015b6305f5e1008310613373576305f5e100830492506008015b612710831061338757612710830492506004015b60648310613399576064830492506002015b600a83106102985760010192915050565b60006133b6838361374f565b159392505050565b6000808584116134c5576020841161347157600084156134095760016133e586602061447b565b6133f090600861472e565b6133fb90600261482c565b613405919061447b565b1990505b83518116856134188989614548565b613422919061447b565b805190935082165b81811461345c57878411613444578794505050505061194a565b8361344e81614838565b94505082845116905061342a565b6134668785614548565b94505050505061194a565b83832061347e858861447b565b6134889087614548565b91505b8582106134c3578482208082036134b0576134a68684614548565b935050505061194a565b6134bb60018461447b565b92505061348b565b505b5092949350505050565b600083818685116135da5760208511613589576000851561351b5760016134f787602061447b565b61350290600861472e565b61350d90600261482c565b613517919061447b565b1990505b8451811660008761352c8b8b614548565b613536919061447b565b855190915083165b82811461357b57818610613563576135568b8b614548565b965050505050505061194a565b8561356d81614715565b96505083865116905061353e565b85965050505050505061194a565b508383206000905b61359b868961447b565b82116135d8578583208082036135b7578394505050505061194a565b6135c2600185614548565b93505081806135d090614715565b925050613591565b505b6135e48787614548565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161361c93906134cf565b602080870180519186019190915251909150613638908261447b565b83528451602086015161364b9190614548565b810361365a576000855261368c565b835183516136689190614548565b8551869061367790839061447b565b90525083516136869082614548565b60208601525b50909392505050565b602081106136cd57815183526136ac602084614548565b92506136b9602083614548565b91506136c660208261447b565b9050613695565b60001981156136fc5760016136e383602061447b565b6136ef9061010061482c565b6136f9919061447b565b90505b9151835183169219169190911790915250565b6060600061371d84846106fe565b80516020808301516040519394506137379390910161484f565b60405160208183030381529060405291505092915050565b8151815160009190811115613762575081515b6020808501519084015160005b8381101561381b57825182518082146137eb5760001960208710156137ca5760018461379c89602061447b565b6137a69190614548565b6137b190600861472e565b6137bc90600261482c565b6137c6919061447b565b1990505b81811683821681810391146137e85797506102989650505050505050565b50505b6137f6602086614548565b9450613803602085614548565b935050506020816138149190614548565b905061376f565b5084518651610ccc919061488b565b610c9f80615e3183390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161387a61387f565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161387a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101561390b5781810151838201526020016138f3565b50506000910152565b6000815180845261392c8160208601602086016138f0565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061194a90830184613914565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161399c81601a8501602088016138f0565b6101d160f51b601a9184019182015283516139be81601c8401602088016138f0565b01601c01949350505050565b6020815260006103a66020830184613914565b6000602082840312156139ef57600080fd5b81516001600160a01b03811681146103a657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a3e57613a3e613a06565b60405290565b6000806001600160401b03841115613a5e57613a5e613a06565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a8c57613a8c613a06565b604052838152905080828401851015613aa457600080fd5b611c818460208301856138f0565b600082601f830112613ac357600080fd5b6103a683835160208501613a44565b600060208284031215613ae457600080fd5b81516001600160401b03811115613afa57600080fd5b61029484828501613ab2565b60008351613b188184602088016138f0565b835190830190613b2c8183602088016138f0565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b6d81601a8501602088016138f0565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613baa8160338401602088016138f0565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006103a66080830184613914565b600060208284031215613c0b57600080fd5b81516001600160401b03811115613c2157600080fd5b8201601f81018413613c3257600080fd5b61029484825160208401613a44565b60008551613c53818460208a016138f0565b602f60f81b9083019081528551613c71816001840160208a016138f0565b602f60f81b600192909101918201528451613c938160028401602089016138f0565b600181830101915050602f60f81b60018201528351613cb98160028401602088016138f0565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cec6040830184613914565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d2457600080fd5b815180151581146103a657600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d6c81601f8501602087016138f0565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613dbe6040830184613914565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613e046040830184613914565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e6a8160148501602087016138f0565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613ea06040830185613914565b82810360208401526103a28185613914565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ee58160018501602087016138f0565b601160f91b6001939091019283015250600201919050565b60008251613f0f8184602087016138f0565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f9e81604b8501602087016138f0565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fd757613fd7613fab565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161402a8160298501602087016138f0565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006103a66080830184613914565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140d757603f198786030184526140c2858351613914565b945060209384019391909101906001016140a6565b50929695505050505050565b6000602082840312156140f557600080fd5b81516001600160401b0381111561410b57600080fd5b82016060818503121561411d57600080fd5b614125613a1c565b81518060030b811461413657600080fd5b815260208201516001600160401b0381111561415157600080fd5b61415d86828501613ab2565b60208301525060408201516001600160401b0381111561417c57600080fd5b61418886828501613ab2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141d88160218501602087016138f0565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516143a88160218501602088016138f0565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143d581602e8401602088016138f0565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161402a8160298501602087016138f0565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161446e8160228501602087016138f0565b9190910160220192915050565b8181038181111561029857610298613fab565b6d021b7b73a3930b1ba103730b6b2960951b8152600082516144b781600e8501602087016138f0565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561029857610298613fab565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145938160188501602088016138f0565b6301034b7160e51b60189184019182015283516145b781601c8401602088016138f0565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146bd8184602087016138f0565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161470881601c8501602087016138f0565b91909101601c0192915050565b60006001820161472757614727613fab565b5060010190565b808202811582820484141761029857610298613fab565b6001815b60018411156147805780850481111561476457614764613fab565b600184161561477257908102905b60019390931c928002614749565b935093915050565b60008261479757506001610298565b816147a457506000610298565b81600181146147ba57600281146147c4576147e0565b6001915050610298565b60ff8411156147d5576147d5613fab565b50506001821b610298565b5060208310610133831016604e8410600b8410161715614803575081810a610298565b6148106000198484614745565b806000190482111561482457614824613fab565b029392505050565b60006103a68383614788565b60008161484757614847613fab565b506000190190565b600083516148618184602088016138f0565b601d60f91b908301908152835161487f8160018401602088016138f0565b01600101949350505050565b8181036000831280158383131683831282161715612b8657612b86613fab565b611577806148ba6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610366578063d9caed1214610379578063e63ab1e91461038c57600080fd5b8063a217fddf1461034b578063c8a023621461035357600080fd5b80638456cb59116100b25780638456cb59146102d657806385f438c1146102de57806391d148541461030557600080fd5b80636133b4bb146102a357806381100bf0146102b657600080fd5b806336568abe116101245780633f4ba83a116101095780633f4ba83a146102705780635b112591146102785780635c975abb1461029857600080fd5b806336568abe1461023d5780633c2f05a81461025057600080fd5b806321fc65f21161015557806321fc65f2146101e3578063248a9ca3146101f85780632f2ff15d1461022a57600080fd5b806301ffc9a714610171578063116191b614610199575b600080fd5b61018461017f3660046111a6565b6103b3565b60405190151581526020015b60405180910390f35b6002546101be90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101f66101f136600461125a565b61044c565b005b61021c6102063660046112c9565b6000908152600160208190526040909120015490565b604051908152602001610190565b6101f66102383660046112e2565b6105c1565b6101f661024b3660046112e2565b6105ed565b6004546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661064b565b6003546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610184565b6101f66102b136600461130e565b610680565b6005546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661089f565b61021c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103133660046112e2565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61021c600081565b6101f661036136600461125a565b6108d1565b6101f66103743660046112e2565b610a2c565b6101f6610387366004611368565b610a52565b61021c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610454610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461047e81610b62565b610486610b6c565b6002546104b29073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061051490899089908990899089906004016113ee565b600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a79392919061144b565b60405180910390a3506105ba6001600055565b5050505050565b600082815260016020819052604090912001546105dd81610b62565b6105e78383610c38565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461063c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106468282610d03565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61067581610b62565b61067d610dc2565b50565b60045473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106aa86600561146e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b5050600480546007546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216938101939093526005602484015216925063a9059cbb91506044016020604051808303816000875af11580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce91906114a8565b506004546107f59073ffffffffffffffffffffffffffffffffffffffff168585858561044c565b600480546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090920482169381019390935216906370a0823190602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089291906114ca565b156105e7576105e76114e3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108c981610b62565b61067d610e3f565b6108d9610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461090381610b62565b61090b610b6c565b6002546109379073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd49061099990899089908990899089906004016113ee565b600060405180830381600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a79392919061144b565b60008281526001602081905260409091200154610a4881610b62565b6105e78383610d03565b610a5a610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a8481610b62565b610a8c610b6c565b610aad73ffffffffffffffffffffffffffffffffffffffff85168484610bab565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b0c91815260200190565b60405180910390a3506106466001600055565b600260005403610b5b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61067d8133610e9a565b60025460ff1615610ba9576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610646908490610f2b565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610cfb57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610446565b506000610446565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610cfb57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610446565b610dca610fc1565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e47610b6c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e153390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f27576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610f4d73ffffffffffffffffffffffffffffffffffffffff841683610ffd565b90508051600014158015610f72575080806020019051810190610f7091906114a8565b155b15610646576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f1e565b60025460ff16610ba9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061100b83836000611012565b9392505050565b606081471015611050576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f1e565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110799190611512565b60006040518083038185875af1925050503d80600081146110b6576040519150601f19603f3d011682016040523d82523d6000602084013e6110bb565b606091505b50915091506110cb8683836110d5565b9695505050505050565b6060826110ea576110e582611164565b61100b565b815115801561110e575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561115d576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f1e565b508061100b565b8051156111745780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156111b857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461100b57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461120c57600080fd5b919050565b60008083601f84011261122357600080fd5b50813567ffffffffffffffff81111561123b57600080fd5b60208301915083602082850101111561125357600080fd5b9250929050565b60008060008060006080868803121561127257600080fd5b61127b866111e8565b9450611289602087016111e8565b935060408601359250606086013567ffffffffffffffff8111156112ac57600080fd5b6112b888828901611211565b969995985093965092949392505050565b6000602082840312156112db57600080fd5b5035919050565b600080604083850312156112f557600080fd5b82359150611305602084016111e8565b90509250929050565b6000806000806060858703121561132457600080fd5b61132d856111e8565b935060208501359250604085013567ffffffffffffffff81111561135057600080fd5b61135c87828801611211565b95989497509550505050565b60008060006060848603121561137d57600080fd5b611386846111e8565b9250611394602085016111e8565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114406080830184866113a5565b979650505050505050565b8381526040602082015260006114656040830184866113a5565b95945050505050565b80820180821115610446577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156114ba57600080fd5b8151801515811461100b57600080fd5b6000602082840312156114dc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156115335760208186018101518583015201611519565b50600092019182525091905056fea2646970667358221220e3eceeff6045b5584ad5b26814ad7e9728c8428c7219e4a4930ed3899cab596964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", } // ERC20CustodyEchidnaTestABI is the input ABI used to generate the binding from. @@ -202,6 +202,99 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorRaw) Transact(o return _ERC20CustodyEchidnaTest.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.DEFAULTADMINROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.DEFAULTADMINROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) PAUSERROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.PAUSERROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) PAUSERROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.PAUSERROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) WITHDRAWERROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.WITHDRAWERROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.WITHDRAWERROLE(&_ERC20CustodyEchidnaTest.CallOpts) +} + // EchidnaCaller is a free data retrieval call binding the contract method 0x81100bf0. // // Solidity: function echidnaCaller() view returns(address) @@ -264,6 +357,130 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) Gateway() return _ERC20CustodyEchidnaTest.Contract.Gateway(&_ERC20CustodyEchidnaTest.CallOpts) } +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.GetRoleAdmin(&_ERC20CustodyEchidnaTest.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ERC20CustodyEchidnaTest.Contract.GetRoleAdmin(&_ERC20CustodyEchidnaTest.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.HasRole(&_ERC20CustodyEchidnaTest.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.HasRole(&_ERC20CustodyEchidnaTest.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) Paused() (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.Paused(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) Paused() (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.Paused(&_ERC20CustodyEchidnaTest.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.SupportsInterface(&_ERC20CustodyEchidnaTest.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ERC20CustodyEchidnaTest.Contract.SupportsInterface(&_ERC20CustodyEchidnaTest.CallOpts, interfaceId) +} + // TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. // // Solidity: function testERC20() view returns(address) @@ -326,6 +543,90 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) TssAddress return _ERC20CustodyEchidnaTest.Contract.TssAddress(&_ERC20CustodyEchidnaTest.CallOpts) } +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.GrantRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.GrantRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, account) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) Pause() (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Pause(&_ERC20CustodyEchidnaTest.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) Pause() (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Pause(&_ERC20CustodyEchidnaTest.TransactOpts) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.RenounceRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.RenounceRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.RevokeRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.RevokeRole(&_ERC20CustodyEchidnaTest.TransactOpts, role, account) +} + // TestWithdrawAndCall is a paid mutator transaction binding the contract method 0x6133b4bb. // // Solidity: function testWithdrawAndCall(address to, uint256 amount, bytes data) returns() @@ -347,6 +648,27 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) TestWi return _ERC20CustodyEchidnaTest.Contract.TestWithdrawAndCall(&_ERC20CustodyEchidnaTest.TransactOpts, to, amount, data) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) Unpause() (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Unpause(&_ERC20CustodyEchidnaTest.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC20CustodyEchidnaTest.Contract.Unpause(&_ERC20CustodyEchidnaTest.TransactOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. // // Solidity: function withdraw(address token, address to, uint256 amount) returns() @@ -410,6 +732,760 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestTransactorSession) Withdr return _ERC20CustodyEchidnaTest.Contract.WithdrawAndRevert(&_ERC20CustodyEchidnaTest.TransactOpts, token, to, amount, data) } +// ERC20CustodyEchidnaTestPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestPausedIterator struct { + Event *ERC20CustodyEchidnaTestPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyEchidnaTestPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyEchidnaTestPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyEchidnaTestPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyEchidnaTestPaused represents a Paused event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC20CustodyEchidnaTestPausedIterator, error) { + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC20CustodyEchidnaTestPausedIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestPaused) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyEchidnaTestPaused) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParsePaused(log types.Log) (*ERC20CustodyEchidnaTestPaused, error) { + event := new(ERC20CustodyEchidnaTestPaused) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyEchidnaTestRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleAdminChangedIterator struct { + Event *ERC20CustodyEchidnaTestRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyEchidnaTestRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyEchidnaTestRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyEchidnaTestRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyEchidnaTestRoleAdminChanged represents a RoleAdminChanged event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ERC20CustodyEchidnaTestRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ERC20CustodyEchidnaTestRoleAdminChangedIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyEchidnaTestRoleAdminChanged) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseRoleAdminChanged(log types.Log) (*ERC20CustodyEchidnaTestRoleAdminChanged, error) { + event := new(ERC20CustodyEchidnaTestRoleAdminChanged) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyEchidnaTestRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleGrantedIterator struct { + Event *ERC20CustodyEchidnaTestRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyEchidnaTestRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyEchidnaTestRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyEchidnaTestRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyEchidnaTestRoleGranted represents a RoleGranted event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ERC20CustodyEchidnaTestRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ERC20CustodyEchidnaTestRoleGrantedIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyEchidnaTestRoleGranted) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseRoleGranted(log types.Log) (*ERC20CustodyEchidnaTestRoleGranted, error) { + event := new(ERC20CustodyEchidnaTestRoleGranted) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyEchidnaTestRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleRevokedIterator struct { + Event *ERC20CustodyEchidnaTestRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyEchidnaTestRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyEchidnaTestRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyEchidnaTestRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyEchidnaTestRoleRevoked represents a RoleRevoked event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ERC20CustodyEchidnaTestRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ERC20CustodyEchidnaTestRoleRevokedIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyEchidnaTestRoleRevoked) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseRoleRevoked(log types.Log) (*ERC20CustodyEchidnaTestRoleRevoked, error) { + event := new(ERC20CustodyEchidnaTestRoleRevoked) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyEchidnaTestUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestUnpausedIterator struct { + Event *ERC20CustodyEchidnaTestUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20CustodyEchidnaTestUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20CustodyEchidnaTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20CustodyEchidnaTestUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyEchidnaTestUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyEchidnaTestUnpaused represents a Unpaused event raised by the ERC20CustodyEchidnaTest contract. +type ERC20CustodyEchidnaTestUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC20CustodyEchidnaTestUnpausedIterator, error) { + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC20CustodyEchidnaTestUnpausedIterator{contract: _ERC20CustodyEchidnaTest.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC20CustodyEchidnaTestUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyEchidnaTest.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20CustodyEchidnaTestUnpaused) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestFilterer) ParseUnpaused(log types.Log) (*ERC20CustodyEchidnaTestUnpaused, error) { + event := new(ERC20CustodyEchidnaTestUnpaused) + if err := _ERC20CustodyEchidnaTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC20CustodyEchidnaTestWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ERC20CustodyEchidnaTest contract. type ERC20CustodyEchidnaTestWithdrawIterator struct { Event *ERC20CustodyEchidnaTestWithdraw // Event containing the contract specifics and raw log diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go index 387da9aa..32a32fa6 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -31,8 +31,8 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220abbff2739a31446b484d2eb9c0ffb41515c9145c3574c0a292938cdb16afc8b464736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d9a6100fd60003960008181611b5701528181611b800152611fc90152612d9a6000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b5061020861020336600461280d565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d61023836600461286b565b61074e565b005b34801561024b57600080fd5b5061023d61025a3660046128cf565b610842565b61027261026d3660046128cf565b61089c565b6040516102149190612990565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d23660046129a3565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d6103223660046128cf565b61092d565b34801561033357600080fd5b5061023d6103423660046129bc565b610a5a565b61023d6103553660046128cf565b610aa4565b34801561036657600080fd5b5061023d6103753660046129bc565b610c2b565b34801561038657600080fd5b5061023d610c7c565b61023d61039d366004612a17565b610cb1565b3480156103ae57600080fd5b5061023d6103bd366004612b1e565b610cd0565b3480156103ce57600080fd5b50610306610fad565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fdc565b3480156104a357600080fd5b5061023d6104b2366004612b8d565b61100e565b3480156104c357600080fd5b506102086104d23660046129bc565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c936600461286b565b6110b3565b3480156105da57600080fd5b5061023d6105e9366004612b1e565b6111a7565b3480156105fa57600080fd5b5061023d610609366004612bdf565b611321565b34801561061a57600080fd5b5061023d6106293660046129bc565b6115d6565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d61069036600461286b565b61161a565b3480156106a157600080fd5b5061023d6106b0366004612c22565b611747565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117fa565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a6118f1565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161088f929190612c9e565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c8816117fa565b6108d06118f1565b60006108dd86868661194f565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161091c93929190612cba565b60405180910390a295945050505050565b6109356118f1565b3460000361096f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109bc576040519150601f19603f3d011682016040523d82523d6000602084013e6109c1565b606091505b5090915050801515600003610a02576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a4c9493929190612cd4565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a94816117fa565b610a9e8383611804565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ace816117fa565b610ad66118f1565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b24576040519150601f19603f3d011682016040523d82523d6000602084013e610b29565b606091505b509150915081610b65576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610bac9088908890600401612c9e565b600060405180830381600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610c1b93929190612cba565b60405180910390a2505050505050565b6001600160a01b0381163314610c6d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7782826119f8565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ca6816117fa565b610cae611abc565b50565b610cb9611b4c565b610cc282611c1c565b610ccc8282611c27565b5050565b610cd8611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d02816117fa565b610d0a6118f1565b83600003610d44576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4e8686611dcc565b610d84576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612cfd565b610e46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5386858561194f565b9050610e5f8787611dcc565b610e95576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612d1f565b90508015610f2b57610f2b8882611e5c565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f7293929190612cba565b60405180910390a3505050610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610fb7611fbe565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611006816117fa565b610cae612020565b6110166118f1565b83600003611050576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105b338486612099565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110a49493929190612cd4565b60405180910390a35050505050565b60006110be816117fa565b6000546001600160a01b031615611101576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611141576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6111af611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111d9816117fa565b6111e16118f1565b8360000361121b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122f6001600160a01b03871686866121ed565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906112769086908690600401612c9e565b600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112ef93929190612cba565b60405180910390a350610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561136c5750825b905060008267ffffffffffffffff1660011480156113895750303b155b905081158015611397575080155b156113ce576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561142f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061144c57506001600160a01b038716155b15611483576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148b612261565b611493612269565b61149b612261565b6114a3612279565b6114ae600087611804565b506114d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611804565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115377f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611804565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115cc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611610816117fa565b610a9e83836119f8565b6116226118f1565b3460000361165c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146116a9576040519150601f19603f3d011682016040523d82523d6000602084013e6116ae565b606091505b50909150508015156000036116ef576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61174f6118f1565b81600003611789576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611794338284612099565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161088f9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610cae8133612289565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166118e7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561189d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561194d576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b031634868660405161196f929190612d38565b60006040518083038185875af1925050503d80600081146119ac576040519150601f19603f3d011682016040523d82523d6000602084013e6119b1565b606091505b5091509150816119ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156118e7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611ac4612316565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611be557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bd97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ccc816117fa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c9f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c9c91810190612d1f565b60015b611ce5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d41576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611cdc565b610c778383612371565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611dc6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612cfd565b6003546001600160a01b0390811690831603611f7e576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b505050505050565b600054610ccc906001600160a01b038481169116836121ed565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120286118f1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b2e565b6003546001600160a01b03908116908316036121d1576120c46001600160a01b0383168430846123c7565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156121b457600080fd5b505af11580156121c8573d6000803e3d6000fd5b50505050505050565b600054610c77906001600160a01b0384811691869116846123c7565b6040516001600160a01b03838116602483015260448201839052610c7791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612400565b61194d61247c565b61227161247c565b61194d6124e3565b61228161247c565b61194d6124eb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610ccc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611cdc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661194d576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237a8261253c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123bf57610c7782826125e4565b610ccc61265a565b6040516001600160a01b038481166024830152838116604483015260648201839052610a9e9186918216906323b872dd9060840161221a565b60006124156001600160a01b03841683612692565b9050805160001415801561243a5750808060200190518101906124389190612cfd565b155b15610c77576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611cdc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661194d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9861247c565b6124f361247c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b60000361258b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611cdc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126019190612d48565b600060405180830381855af49150503d806000811461263c576040519150601f19603f3d011682016040523d82523d6000602084013e612641565b606091505b50915091506126518583836126a0565b95945050505050565b341561194d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606119f183836000612715565b6060826126b5576126b0826127cb565b6119f1565b81511580156126cc57506001600160a01b0384163b155b1561270e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611cdc565b50806119f1565b606081471015612753576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611cdc565b600080856001600160a01b0316848660405161276f9190612d48565b60006040518083038185875af1925050503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18683836126a0565b9695505050505050565b8051156127db5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561281f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f157600080fd5b80356001600160a01b038116811461286657600080fd5b919050565b60006020828403121561287d57600080fd5b6119f18261284f565b60008083601f84011261289857600080fd5b50813567ffffffffffffffff8111156128b057600080fd5b6020830191508360208285010111156128c857600080fd5b9250929050565b6000806000604084860312156128e457600080fd5b6128ed8461284f565b9250602084013567ffffffffffffffff81111561290957600080fd5b61291586828701612886565b9497909650939450505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6000815180845261295e816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119f16020830184612946565b6000602082840312156129b557600080fd5b5035919050565b600080604083850312156129cf57600080fd5b823591506129df6020840161284f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612a2a57600080fd5b612a338361284f565b9150602083013567ffffffffffffffff811115612a4f57600080fd5b8301601f81018513612a6057600080fd5b803567ffffffffffffffff811115612a7a57612a7a6129e8565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ae657612ae66129e8565b604052818152828201602001871015612afe57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612b3657600080fd5b612b3f8661284f565b9450612b4d6020870161284f565b935060408601359250606086013567ffffffffffffffff811115612b7057600080fd5b612b7c88828901612886565b969995985093965092949392505050565b600080600080600060808688031215612ba557600080fd5b612bae8661284f565b945060208601359350612bc36040870161284f565b9250606086013567ffffffffffffffff811115612b7057600080fd5b600080600060608486031215612bf457600080fd5b612bfd8461284f565b9250612c0b6020850161284f565b9150612c196040850161284f565b90509250925092565b600080600060608486031215612c3757600080fd5b612c408461284f565b925060208401359150612c196040850161284f565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612cb2602083018486612c55565b949350505050565b838152604060208201526000612651604083018486612c55565b8481526001600160a01b03841660208201526060604082015260006127c1606083018486612c55565b600060208284031215612d0f57600080fd5b815180151581146119f157600080fd5b600060208284031215612d3157600080fd5b5051919050565b8183823760009101908152919050565b60008251612d5a818460208701612922565b919091019291505056fea26469706673582212201821442f44389baeb888640e13de33662eed4aff4f3c0ea195d55f55d8f2920864736f6c634300081a0033", } // GatewayEVMABI is the input ABI used to generate the binding from. @@ -202,6 +202,130 @@ func (_GatewayEVM *GatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, me return _GatewayEVM.Contract.contract.Transact(opts, method, params...) } +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) ASSETHANDLERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "ASSET_HANDLER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVM.Contract.ASSETHANDLERROLE(&_GatewayEVM.CallOpts) +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVM.Contract.ASSETHANDLERROLE(&_GatewayEVM.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVM.Contract.DEFAULTADMINROLE(&_GatewayEVM.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVM.Contract.DEFAULTADMINROLE(&_GatewayEVM.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVM.Contract.PAUSERROLE(&_GatewayEVM.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVM.Contract.PAUSERROLE(&_GatewayEVM.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) TSSROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "TSS_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) TSSROLE() ([32]byte, error) { + return _GatewayEVM.Contract.TSSROLE(&_GatewayEVM.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) TSSROLE() ([32]byte, error) { + return _GatewayEVM.Contract.TSSROLE(&_GatewayEVM.CallOpts) +} + // UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // // Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) @@ -264,35 +388,97 @@ func (_GatewayEVM *GatewayEVMCallerSession) Custody() (common.Address, error) { return _GatewayEVM.Contract.Custody(&_GatewayEVM.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. // -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVM *GatewayEVMCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} - err := _GatewayEVM.contract.Call(opts, &out, "owner") + err := _GatewayEVM.contract.Call(opts, &out, "getRoleAdmin", role) if err != nil { - return *new(common.Address), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVM *GatewayEVMSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVM.Contract.GetRoleAdmin(&_GatewayEVM.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVM *GatewayEVMCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVM.Contract.GetRoleAdmin(&_GatewayEVM.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVM *GatewayEVMCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVM *GatewayEVMSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVM.Contract.HasRole(&_GatewayEVM.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVM *GatewayEVMCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVM.Contract.HasRole(&_GatewayEVM.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GatewayEVM *GatewayEVMCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMSession) Owner() (common.Address, error) { - return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVM *GatewayEVMSession) Paused() (bool, error) { + return _GatewayEVM.Contract.Paused(&_GatewayEVM.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVM *GatewayEVMCallerSession) Owner() (common.Address, error) { - return _GatewayEVM.Contract.Owner(&_GatewayEVM.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVM *GatewayEVMCallerSession) Paused() (bool, error) { + return _GatewayEVM.Contract.Paused(&_GatewayEVM.CallOpts) } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -326,6 +512,37 @@ func (_GatewayEVM *GatewayEVMCallerSession) ProxiableUUID() ([32]byte, error) { return _GatewayEVM.Contract.ProxiableUUID(&_GatewayEVM.CallOpts) } +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVM *GatewayEVMCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _GatewayEVM.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVM *GatewayEVMSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVM.Contract.SupportsInterface(&_GatewayEVM.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVM *GatewayEVMCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVM.Contract.SupportsInterface(&_GatewayEVM.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -587,46 +804,88 @@ func (_GatewayEVM *GatewayEVMTransactorSession) ExecuteWithERC20(token common.Ad return _GatewayEVM.Contract.ExecuteWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.GrantRole(&_GatewayEVM.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.GrantRole(&_GatewayEVM.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "initialize", _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVM *GatewayEVMSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVM *GatewayEVMTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "pause") } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVM *GatewayEVMSession) Pause() (*types.Transaction, error) { + return _GatewayEVM.Contract.Pause(&_GatewayEVM.TransactOpts) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Pause() (*types.Transaction, error) { + return _GatewayEVM.Contract.Pause(&_GatewayEVM.TransactOpts) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "renounceOwnership") +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVM *GatewayEVMTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "renounceRole", role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVM *GatewayEVMSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.RenounceRole(&_GatewayEVM.TransactOpts, role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVM *GatewayEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVM.Contract.RenounceOwnership(&_GatewayEVM.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.RenounceRole(&_GatewayEVM.TransactOpts, role, callerConfirmation) } // RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. @@ -650,6 +909,27 @@ func (_GatewayEVM *GatewayEVMTransactorSession) RevertWithERC20(token common.Add return _GatewayEVM.Contract.RevertWithERC20(&_GatewayEVM.TransactOpts, token, to, amount, data) } +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.RevokeRole(&_GatewayEVM.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.RevokeRole(&_GatewayEVM.TransactOpts, role, account) +} + // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // // Solidity: function setConnector(address _zetaConnector) returns() @@ -692,25 +972,25 @@ func (_GatewayEVM *GatewayEVMTransactorSession) SetCustody(_custody common.Addre return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "transferOwnership", newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVM *GatewayEVMTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "unpause") } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVM *GatewayEVMSession) Unpause() (*types.Transaction, error) { + return _GatewayEVM.Contract.Unpause(&_GatewayEVM.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.TransferOwnership(&_GatewayEVM.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Unpause() (*types.Transaction, error) { + return _GatewayEVM.Contract.Unpause(&_GatewayEVM.TransactOpts) } // UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. @@ -1479,9 +1759,9 @@ func (_GatewayEVM *GatewayEVMFilterer) ParseInitialized(log types.Log) (*Gateway return event, nil } -// GatewayEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVM contract. -type GatewayEVMOwnershipTransferredIterator struct { - Event *GatewayEVMOwnershipTransferred // Event containing the contract specifics and raw log +// GatewayEVMPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GatewayEVM contract. +type GatewayEVMPausedIterator struct { + Event *GatewayEVMPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1495,7 +1775,7 @@ type GatewayEVMOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { +func (it *GatewayEVMPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1504,7 +1784,7 @@ func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayEVMOwnershipTransferred) + it.Event = new(GatewayEVMPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1519,7 +1799,7 @@ func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayEVMOwnershipTransferred) + it.Event = new(GatewayEVMPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1535,60 +1815,41 @@ func (it *GatewayEVMOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMOwnershipTransferredIterator) Error() error { +func (it *GatewayEVMPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayEVMOwnershipTransferredIterator) Close() error { +func (it *GatewayEVMPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVM contract. -type GatewayEVMOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// GatewayEVMPaused represents a Paused event raised by the GatewayEVM contract. +type GatewayEVMPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVM *GatewayEVMFilterer) FilterPaused(opts *bind.FilterOpts) (*GatewayEVMPausedIterator, error) { - logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &GatewayEVMOwnershipTransferredIterator{contract: _GatewayEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &GatewayEVMPausedIterator{contract: _GatewayEVM.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVM *GatewayEVMFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMPaused) (event.Subscription, error) { - logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -1598,8 +1859,8 @@ func (_GatewayEVM *GatewayEVMFilterer) WatchOwnershipTransferred(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GatewayEVMOwnershipTransferred) - if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(GatewayEVMPaused) + if err := _GatewayEVM.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -1620,12 +1881,12 @@ func (_GatewayEVM *GatewayEVMFilterer) WatchOwnershipTransferred(opts *bind.Watc }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVM *GatewayEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMOwnershipTransferred, error) { - event := new(GatewayEVMOwnershipTransferred) - if err := _GatewayEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Paused(address account) +func (_GatewayEVM *GatewayEVMFilterer) ParsePaused(log types.Log) (*GatewayEVMPaused, error) { + event := new(GatewayEVMPaused) + if err := _GatewayEVM.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log @@ -1933,6 +2194,626 @@ func (_GatewayEVM *GatewayEVMFilterer) ParseRevertedWithERC20(log types.Log) (*G return event, nil } +// GatewayEVMRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the GatewayEVM contract. +type GatewayEVMRoleAdminChangedIterator struct { + Event *GatewayEVMRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMRoleAdminChanged represents a RoleAdminChanged event raised by the GatewayEVM contract. +type GatewayEVMRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVM *GatewayEVMFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*GatewayEVMRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &GatewayEVMRoleAdminChangedIterator{contract: _GatewayEVM.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVM *GatewayEVMFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayEVMRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMRoleAdminChanged) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVM *GatewayEVMFilterer) ParseRoleAdminChanged(log types.Log) (*GatewayEVMRoleAdminChanged, error) { + event := new(GatewayEVMRoleAdminChanged) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the GatewayEVM contract. +type GatewayEVMRoleGrantedIterator struct { + Event *GatewayEVMRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMRoleGranted represents a RoleGranted event raised by the GatewayEVM contract. +type GatewayEVMRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMRoleGrantedIterator{contract: _GatewayEVM.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *GatewayEVMRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMRoleGranted) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) ParseRoleGranted(log types.Log) (*GatewayEVMRoleGranted, error) { + event := new(GatewayEVMRoleGranted) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the GatewayEVM contract. +type GatewayEVMRoleRevokedIterator struct { + Event *GatewayEVMRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMRoleRevoked represents a RoleRevoked event raised by the GatewayEVM contract. +type GatewayEVMRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMRoleRevokedIterator{contract: _GatewayEVM.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *GatewayEVMRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMRoleRevoked) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVM *GatewayEVMFilterer) ParseRoleRevoked(log types.Log) (*GatewayEVMRoleRevoked, error) { + event := new(GatewayEVMRoleRevoked) + if err := _GatewayEVM.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GatewayEVM contract. +type GatewayEVMUnpausedIterator struct { + Event *GatewayEVMUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUnpaused represents a Unpaused event raised by the GatewayEVM contract. +type GatewayEVMUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVM *GatewayEVMFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GatewayEVMUnpausedIterator, error) { + + logs, sub, err := _GatewayEVM.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GatewayEVMUnpausedIterator{contract: _GatewayEVM.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVM *GatewayEVMFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMUnpaused) (event.Subscription, error) { + + logs, sub, err := _GatewayEVM.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUnpaused) + if err := _GatewayEVM.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVM *GatewayEVMFilterer) ParseUnpaused(log types.Log) (*GatewayEVMUnpaused, error) { + event := new(GatewayEVMUnpaused) + if err := _GatewayEVM.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // GatewayEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVM contract. type GatewayEVMUpgradedIterator struct { Event *GatewayEVMUpgraded // Event containing the contract specifics and raw log diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go index 815a279c..af1ce1ad 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. var GatewayEVMInboundTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061a674806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610c87565b6040516101b6919061687e565b60405180910390f35b6101c7610ce9565b6040516101b6919061691a565b61018f610e2b565b6101a9611298565b6101a96112f8565b61018f611358565b6101fc611755565b6040516101b69190616a80565b6102116118d7565b6040516101b69190616b1e565b6102266119a7565b6040516101b69190616b95565b61018f611aa2565b61018f611cbe565b610226611ea3565b610211611f9e565b61025b61206e565b60405190151581526020016101b6565b61018f612142565b61018f6122dc565b6101a961248b565b61018f6124eb565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c5b565b8261268d565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce9061679e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516106989061679e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754915191909416928101929092526044820152610800919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261270c565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690610884906167ab565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156108b7573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061090c906167b8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610948573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc1575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e2257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e0b578382906000526020600020018054610d7e90616c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610daa90616c6e565b8015610df75780601f10610dcc57610100808354040283529160200191610df7565b820191906000526020600020905b815481529060010190602001808311610dda57829003601f168201915b505050505081526020019060010190610d5f565b505050508152505081526020019060010190610d0d565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190616cbb565b9050610ec860008261268d565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561105e57600080fd5b505af1158015611072573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110c5928992909116908790616cf6565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361112693908216928992909116908790600401616d1e565b600060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190616cbb565b90506111f0848261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e9190616cbb565b9050611291856028546105719190616d55565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190616cbb565b90506113f560008261268d565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190616cbb565b90506116b4838261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190616cbb565b9050610c81846028546105719190616d55565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002090600202016040518060400160405290816000820180546117ac90616c6e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890616c6e565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161186c5790505b50505050508152505081526020019060010190611779565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002001805461191a90616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461194690616c6e565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050815260200190600101906118fb565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a8a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a375790505b505050505081525050815260200190600101906119cb565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bb357600080fd5b505af1158015611bc7573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c159087906000908790616cf6565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c6f92909116908690600401616d68565b6000604051808303818588803b158015611c8857600080fd5b505af1158015611c9c573d6000803e3d6000fd5b50506027546001600160a01b0316319250610c81915061057190508585616c5b565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dc157600080fd5b505af1158015611dd5573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e1e908590616d8a565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611e75929116908590600401616d68565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611291573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f335790505b50505050508152505081526020019060010190611ec7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e22578382906000526020600020018054611fe190616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90616c6e565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081526020019060010190611fc2565b60085460009060ff1615612086575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190616cbb565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122399060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122c29392831692889216908790600401616d1e565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123d39060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b1580156123ed57600080fd5b505af1158015612401573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124559216908690600401616d68565b6000604051808303818588803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190616cd4565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611e75565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156126f857600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127166167c5565b61272184848361272b565b9150505b92915050565b60008061273885846127a6565b905061279b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001612786929190616d68565b604051602081830303815290604052856127b2565b9150505b9392505050565b600061279f83836127e0565b60c081015151600090156127d6576127cf84848460c001516127fb565b905061279f565b6127cf84846129a1565b60006127ec8383612a8c565b61279f838360200151846127b2565b600080612806612a9c565b905060006128148683612b6f565b9050600061282b8260600151836020015185613015565b9050600061283b83838989613227565b90506000612848826140a4565b602081015181519192509060030b156128bb57898260400151604051602001612872929190616d9d565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128b291600401616d8a565b60405180910390fd5b60006128fe6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614273565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90612951908490600401616d8a565b602060405180830381865afa15801561296e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129929190616e1e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906129f6908790600401616d8a565b600060405180830381865afa158015612a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3b9190810190616f2f565b90506000612a698285604051602001612a55929190616f64565b604051602081830303815290604052614473565b90506001600160a01b038116612721578484604051602001612872929190616f93565b612a9882826000614486565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b2390849060040161703e565b600060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b689190810190617085565b9250505090565b612ba16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612bec6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612bf585614589565b60208201526000612c058661496e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c6f9190810190617085565b86838560200151604051602001612c8994939291906170ce565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612ce1908590600401616d8a565b600060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d269190810190617085565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d6e9084906004016171d2565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190616cd4565b612dc457816040516020016128729190617224565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e099084906004016172b6565b600060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e4e9190810190617085565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612e95908490600401617308565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190616cd4565b15612f6b576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f20908490600401617308565b600060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f659190810190617085565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612f90919061735a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fbc9291906173c6565b600060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130019190810190617085565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816130315790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613091576130916173eb565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106130e5576130e56173eb565b602002602001018190525084604051602001613101919061741a565b60405160208183030381529060405281600281518110613123576131236173eb565b60200260200101819052508260405160200161313f9190617486565b60405160208183030381529060405281600381518110613161576131616173eb565b60200260200101819052506000613177826140a4565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132089060408051808201825260008082526020918201528151808301909252845182528085019082015290614bf1565b61321d578560405160200161287291906174c7565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613277565b511590565b6133eb57826020015115613333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128b2565b8260c00151156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128b2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161340457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061345f90617558565b935060ff1681518110613474576134746173eb565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134c59190617577565b6040516020818303038152906040528282806134e090617558565b935060ff16815181106134f5576134f56173eb565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061354290617558565b935060ff1681518110613557576135576173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135a490617558565b935060ff16815181106135b9576135b96173eb565b602002602001018190525087602001518282806135d590617558565b935060ff16815181106135ea576135ea6173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061363790617558565b935060ff168151811061364c5761364c6173eb565b60209081029190910101528751828261366481617558565b935060ff1681518110613679576136796173eb565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136c690617558565b935060ff16815181106136db576136db6173eb565b60200260200101819052506136ef46614c52565b82826136fa81617558565b935060ff168151811061370f5761370f6173eb565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061375c90617558565b935060ff1681518110613771576137716173eb565b60200260200101819052508682828061378990617558565b935060ff168151811061379e5761379e6173eb565b60209081029190910101528551156138c55760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826137ef81617558565b935060ff1681518110613804576138046173eb565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613854908990600401616d8a565b600060405180830381865afa158015613871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138999190810190617085565b82826138a481617558565b935060ff16815181106138b9576138b96173eb565b60200260200101819052505b8460200151156139955760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261390e81617558565b935060ff1681518110613923576139236173eb565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061397090617558565b935060ff1681518110613985576139856173eb565b6020026020010181905250613b5c565b6139cd6132728660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a605760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a1081617558565b935060ff1681518110613a2557613a256173eb565b60200260200101819052508460a00151604051602001613a45919061741a565b60405160208183030381529060405282828061397090617558565b8460c00151158015613aa3575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613aa190511590565b155b15613b5c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613ae781617558565b935060ff1681518110613afc57613afc6173eb565b6020026020010181905250613b1088614cf2565b604051602001613b20919061741a565b604051602081830303815290604052828280613b3b90617558565b935060ff1681518110613b5057613b506173eb565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613b9090511590565b613c255760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bd381617558565b935060ff1681518110613be857613be86173eb565b60200260200101819052508460400151828280613c0490617558565b935060ff1681518110613c1957613c196173eb565b60200260200101819052505b606085015115613d465760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c6e81617558565b935060ff1681518110613c8357613c836173eb565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613cf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1a9190810190617085565b8282613d2581617558565b935060ff1681518110613d3a57613d3a6173eb565b60200260200101819052505b60e08501515115613ded5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613d9081617558565b935060ff1681518110613da557613da56173eb565b6020026020010181905250613dc18560e0015160000151614c52565b8282613dcc81617558565b935060ff1681518110613de157613de16173eb565b60200260200101819052505b60e08501516020015115613e975760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e3a81617558565b935060ff1681518110613e4f57613e4f6173eb565b6020026020010181905250613e6b8560e0015160200151614c52565b8282613e7681617558565b935060ff1681518110613e8b57613e8b6173eb565b60200260200101819052505b60e08501516040015115613f415760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613ee481617558565b935060ff1681518110613ef957613ef96173eb565b6020026020010181905250613f158560e0015160400151614c52565b8282613f2081617558565b935060ff1681518110613f3557613f356173eb565b60200260200101819052505b60e08501516060015115613feb5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613f8e81617558565b935060ff1681518110613fa357613fa36173eb565b6020026020010181905250613fbf8560e0015160600151614c52565b8282613fca81617558565b935060ff1681518110613fdf57613fdf6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561400957614009616e47565b60405190808252806020026020018201604052801561403c57816020015b60608152602001906001900390816140275790505b50905060005b8260ff168160ff16101561409557838160ff1681518110614065576140656173eb565b6020026020010151828260ff1681518110614082576140826173eb565b6020908102919091010152600101614042565b5093505050505b949350505050565b6140cb6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614151918691016175e2565b600060405180830381865afa15801561416e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141969190810190617085565b905060006141a486836157e1565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016141d49190616b1e565b6000604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261421b9190810190617629565b805190915060030b158015906142345750602081015151155b80156142435750604081015151155b1561321d578160008151811061425b5761425b6173eb565b602002602001015160405160200161287291906176df565b606060006142a88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506142df9082905b90615936565b1561443c57600061435c82614356846143506143228a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061595d565b906159bf565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143c0908290615936565b1561442a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614427905b8290615a44565b90505b61443381615a6a565b9250505061279f565b82156144555784846040516020016128729291906178cb565b505060408051602081019091526000815261279f565b509392505050565b6000808251602084016000f09392505050565b8160a001511561449557505050565b60006144a2848484615ad3565b905060006144af826140a4565b602081015181519192509060030b15801561454b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261454b906040805180820182526000808252602091820152815180830190925284518252808501908201526142d9565b1561455857505050505050565b604082015151156145785781604001516040516020016128729190617972565b8060405160200161287291906179d0565b606060006145be8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614623905b8290614bf1565b1561469257604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d90839061606e565b615a6a565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146f4905b82906160f8565b6001036147c157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261475a90614420565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d905b8390615a44565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148209061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614888908390616192565b90506000816001835161489b9190616d55565b815181106148ab576148ab6173eb565b6020026020010151905061494e61468d6149216040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061606e565b95945050505050565b826040516020016128729190617a3b565b50919050565b606060006149a38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a059061461c565b15614a135761279f81615a6a565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a72906146ed565b600103614adc57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d906147ba565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b3b9061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614ba3908390616192565b9050600181511115614bdf578060028251614bbe9190616d55565b81518110614bce57614bce6173eb565b602002602001015192505050919050565b50826040516020016128729190617a3b565b805182516000911115614c0657506000612725565b81518351602085015160009291614c1c91616c5b565b614c269190616d55565b905082602001518103614c3d576001915050612725565b82516020840151819020912014905092915050565b60606000614c5f83616237565b600101905060008167ffffffffffffffff811115614c7f57614c7f616e47565b6040519080825280601f01601f191660200182016040528015614ca9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cb357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614d7e905b8290616319565b15614dbe57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e1d90614d77565b15614e5d57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ebc90614d77565b15614efc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f5b90614d77565b80614fc05750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fc090614d77565b1561500057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261505f90614d77565b806150c45750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150c490614d77565b1561510457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261516390614d77565b806151c85750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151c890614d77565b1561520857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261526790614d77565b806152cc5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152cc90614d77565b1561530c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261536b90614d77565b156153ab57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261540a90614d77565b1561544a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154a990614d77565b156154e957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261554890614d77565b1561558857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e790614d77565b1561562757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261568690614d77565b806156eb5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156eb90614d77565b1561572b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578a90614d77565b156157ca57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516128729290602001617b19565b60608060005b845181101561586c5781858281518110615803576158036173eb565b602002602001015160405160200161581c929190616f64565b60405160208183030381529060405291506001855161583b9190616d55565b811461586457816040516020016158529190617c82565b60405160208183030381529060405291505b6001016157e7565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161588557905050905083816000815181106158b0576158b06173eb565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110615904576159046173eb565b60200260200101819052508181600281518110615923576159236173eb565b6020908102919091010152949350505050565b6020808301518351835192840151600093615954929184919061632d565b14159392505050565b6040805180820190915260008082526020820152600061598f846000015185602001518560000151866020015161643e565b90508360200151816159a19190616d55565b845185906159b0908390616d55565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156159e4575081612725565b6020808301519084015160019114615a0b5750815160208481015190840151829020919020145b8015615a3c57825184518590615a22908390616d55565b9052508251602085018051615a38908390616c5b565b9052505b509192915050565b6040805180820190915260008082526020820152615a6383838361655e565b5092915050565b60606000826000015167ffffffffffffffff811115615a8b57615a8b616e47565b6040519080825280601f01601f191660200182016040528015615ab5576020820181803683370190505b5090506000602082019050615a638185602001518660000151616609565b60606000615adf612a9c565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615afc57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b5790617558565b935060ff1681518110615b6c57615b6c6173eb565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615bbd9190617cc3565b604051602081830303815290604052828280615bd890617558565b935060ff1681518110615bed57615bed6173eb565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c3a90617558565b935060ff1681518110615c4f57615c4f6173eb565b602002602001018190525082604051602001615c6b9190617486565b604051602081830303815290604052828280615c8690617558565b935060ff1681518110615c9b57615c9b6173eb565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615ce890617558565b935060ff1681518110615cfd57615cfd6173eb565b6020026020010181905250615d128784616683565b8282615d1d81617558565b935060ff1681518110615d3257615d326173eb565b602090810291909101015285515115615dde5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615d8481617558565b935060ff1681518110615d9957615d996173eb565b6020026020010181905250615db2866000015184616683565b8282615dbd81617558565b935060ff1681518110615dd257615dd26173eb565b60200260200101819052505b856080015115615e4c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e2781617558565b935060ff1681518110615e3c57615e3c6173eb565b6020026020010181905250615eb2565b8415615eb25760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615e9181617558565b935060ff1681518110615ea657615ea66173eb565b60200260200101819052505b60408601515115615f4e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615efc81617558565b935060ff1681518110615f1157615f116173eb565b60200260200101819052508560400151828280615f2d90617558565b935060ff1681518110615f4257615f426173eb565b60200260200101819052505b856060015115615fb85760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615f9781617558565b935060ff1681518110615fac57615fac6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615fd657615fd6616e47565b60405190808252806020026020018201604052801561600957816020015b6060815260200190600190039081615ff45790505b50905060005b8260ff168160ff16101561606257838160ff1681518110616032576160326173eb565b6020026020010151828260ff168151811061604f5761604f6173eb565b602090810291909101015260010161600f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616093575081612725565b815183516020850151600092916160a991616c5b565b6160b39190616d55565b602084015190915060019082146160d4575082516020840151819020908220145b80156160ef578351855186906160eb908390616d55565b9052505b50929392505050565b600080826000015161611c856000015186602001518660000151876020015161643e565b6161269190616c5b565b90505b8351602085015161613a9190616c5b565b8111615a63578161614a81617d08565b92505082600001516161818560200151836161659190616d55565b86516161719190616d55565b838660000151876020015161643e565b61618b9190616c5b565b9050616129565b606060006161a084846160f8565b6161ab906001616c5b565b67ffffffffffffffff8111156161c3576161c3616e47565b6040519080825280602002602001820160405280156161f657816020015b60608152602001906001900390816161e15790505b50905060005b815181101561446b5761621261468d8686615a44565b828281518110616224576162246173eb565b60209081029190910101526001016161fc565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616280577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162ac576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162ca57662386f26fc10000830492506010015b6305f5e10083106162e2576305f5e100830492506008015b61271083106162f657612710830492506004015b60648310616308576064830492506002015b600a83106127255760010192915050565b600061632583836166c3565b159392505050565b60008085841161643457602084116163e05760008415616378576001616354866020616d55565b61635f906008617d22565b61636a906002617e20565b6163749190616d55565b1990505b83518116856163878989616c5b565b6163919190616d55565b805190935082165b8181146163cb578784116163b3578794505050505061409c565b836163bd81617e2c565b945050828451169050616399565b6163d58785616c5b565b94505050505061409c565b8383206163ed8588616d55565b6163f79087616c5b565b91505b8582106164325784822080820361641f576164158684616c5b565b935050505061409c565b61642a600184616d55565b9250506163fa565b505b5092949350505050565b6000838186851161654957602085116164f8576000851561648a576001616466876020616d55565b616471906008617d22565b61647c906002617e20565b6164869190616d55565b1990505b8451811660008761649b8b8b616c5b565b6164a59190616d55565b855190915083165b8281146164ea578186106164d2576164c58b8b616c5b565b965050505050505061409c565b856164dc81617d08565b9650508386511690506164ad565b85965050505050505061409c565b508383206000905b61650a8689616d55565b821161654757858320808203616526578394505050505061409c565b616531600185616c5b565b935050818061653f90617d08565b925050616500565b505b6165538787616c5b565b979650505050505050565b60408051808201909152600080825260208201526000616590856000015186602001518660000151876020015161643e565b6020808701805191860191909152519091506165ac9082616d55565b8352845160208601516165bf9190616c5b565b81036165ce5760008552616600565b835183516165dc9190616c5b565b855186906165eb908390616d55565b90525083516165fa9082616c5b565b60208601525b50909392505050565b602081106166415781518352616620602084616c5b565b925061662d602083616c5b565b915061663a602082616d55565b9050616609565b6000198115616670576001616657836020616d55565b61666390610100617e20565b61666d9190616d55565b90505b9151835183169219169190911790915250565b606060006166918484612b6f565b80516020808301516040519394506166ab93909101617e43565b60405160208183030381529060405291505092915050565b81518151600091908111156166d6575081515b6020808501519084015160005b8381101561678f578251825180821461675f57600019602087101561673e57600184616710896020616d55565b61671a9190616c5b565b616725906008617d22565b616730906002617e20565b61673a9190616d55565b1990505b818116838216818103911461675c5797506127259650505050505050565b50505b61676a602086616c5b565b9450616777602085616c5b565b935050506020816167889190616c5b565b90506166e3565b508451865161321d9190617e9b565b610c9f80617ebc83390190565b610b4a80618b5b83390190565b610f9a806196a583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161680861680d565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168086040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168bf5783516001600160a01b0316835260209384019390920191600101616898565b509095945050505050565b60005b838110156168e55781810151838201526020016168cd565b50506000910152565b600081518084526169068160208601602086016168ca565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156169fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526169e68486516168ee565b60209586019590945092909201916001016169ac565b509197505050602094850194929092019150600101616942565b50929695505050505050565b600081518084526020840193506020830160005b82811015616a765781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a36565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616aec60408801826168ee565b9050602082015191508681036020880152616b078183616a22565b965050506020938401939190910190600101616aa8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616b808583516168ee565b94506020938401939190910190600101616b46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c166040870182616a22565b9550506020938401939190910190600101616bbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561272557612725616c2c565b600181811c90821680616c8257607f821691505b602082108103614968577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616ccd57600080fd5b5051919050565b600060208284031215616ce657600080fd5b8151801515811461279f57600080fd5b8381526001600160a01b038316602082015260606040820152600061494e60608301846168ee565b6001600160a01b03851681528360208201526001600160a01b038316604082015260806060820152600061321d60808301846168ee565b8181038181111561272557612725616c2c565b6001600160a01b038316815260406020820152600061409c60408301846168ee565b60208152600061279f60208301846168ee565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616dd581601a8501602088016168ca565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e1281601c8401602088016168ca565b01601c01949350505050565b600060208284031215616e3057600080fd5b81516001600160a01b038116811461279f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616e9957616e99616e47565b60405290565b60008067ffffffffffffffff841115616eba57616eba616e47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616ee957616ee9616e47565b604052838152905080828401851015616f0157600080fd5b61446b8460208301856168ca565b600082601f830112616f2057600080fd5b61279f83835160208501616e9f565b600060208284031215616f4157600080fd5b815167ffffffffffffffff811115616f5857600080fd5b61272184828501616f0f565b60008351616f768184602088016168ca565b835190830190616f8a8183602088016168ca565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616fcb81601a8501602088016168ca565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170088160338401602088016168ca565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561709757600080fd5b815167ffffffffffffffff8111156170ae57600080fd5b8201601f810184136170bf57600080fd5b61272184825160208401616e9f565b600085516170e0818460208a016168ca565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161711a816001840160208a016168ca565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171588160028401602089016168ca565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161719a8160028401602088016168ca565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006171e560408301846168ee565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161725c81601f8501602087016168ca565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172c960408301846168ee565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061731b60408301846168ee565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173928160148501602087016168ca565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006173d960408301856168ee565b828103602084015261279b81856168ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516174528160018501602087016168ca565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174988184602087016168ca565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161754b81604b8501602087016168ca565b91909101604b0192915050565b600060ff821660ff810361756e5761756e616c2c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561763b57600080fd5b815167ffffffffffffffff81111561765257600080fd5b82016060818503121561766457600080fd5b61766c616e76565b81518060030b811461767d57600080fd5b8152602082015167ffffffffffffffff81111561769957600080fd5b6176a586828501616f0f565b602083015250604082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f0f565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161773d8160218501602087016168ca565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179298160218501602088016168ca565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161796681602e8401602088016168ca565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a2e8160228501602087016168ca565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a7381600e8501602087016168ca565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b518160188501602088016168ca565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617b8e81601c8401602088016168ca565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617c948184602087016168ca565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617cfb81601c8501602087016168ca565b91909101601c0192915050565b60006000198203617d1b57617d1b616c2c565b5060010190565b808202811582820484141761272557612725616c2c565b6001815b6001841115617d7457808504811115617d5857617d58616c2c565b6001841615617d6657908102905b60019390931c928002617d3d565b935093915050565b600082617d8b57506001612725565b81617d9857506000612725565b8160018114617dae5760028114617db857617dd4565b6001915050612725565b60ff841115617dc957617dc9616c2c565b50506001821b612725565b5060208310610133831016604e8410600b8410161715617df7575081810a612725565b617e046000198484617d39565b8060001904821115617e1857617e18616c2c565b029392505050565b600061279f8383617d7c565b600081617e3b57617e3b616c2c565b506000190190565b60008351617e558184602088016168ca565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617e8f8160018401602088016168ca565b01600101949350505050565b8181036000831280158383131683831282161715615a6357615a63616c2c56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033a264697066735822122040a1efa42a3837c9b173ffb63955d54fe1b885f54abbabcdd7eb46d5df60c44964736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061b7c8806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610cb3565b6040516101b691906168aa565b60405180910390f35b6101c7610d15565b6040516101b69190616946565b61018f610e57565b6101a96112c4565b6101a9611324565b61018f611384565b6101fc611781565b6040516101b69190616aac565b610211611903565b6040516101b69190616b4a565b6102266119d3565b6040516101b69190616bc1565b61018f611ace565b61018f611cea565b610226611ecf565b610211611fca565b61025b61209a565b60405190151581526020016101b6565b61018f61216e565b61018f612308565b6101a96124b7565b61018f612517565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c87565b826126b9565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce906167ca565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610698906167ca565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261080d919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052612738565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754602554604051929391821692911690610899906167d7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108d5573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546025546040519385169492831693918316921690610930906167e4565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610974573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610d0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ced575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e37578382906000526020600020018054610daa90616c9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd690616c9a565b8015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b505050505081526020019060010190610d8b565b505050508152505081526020019060010190610d39565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190616ce7565b9050610ef46000826126b9565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110f1928992909116908790616d22565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361115293908216928992909116908790600401616d4a565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190616ce7565b905061121c84826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190616ce7565b90506112bd856028546105719190616d81565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190616ce7565b90506114216000826126b9565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190616ce7565b90506116e083826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190616ce7565b9050610cad846028546105719190616d81565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002090600202016040518060400160405290816000820180546117d890616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461180490616c9a565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118985790505b505050505081525050815260200190600101906117a5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461194690616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461197290616c9a565b80156119bf5780601f10611994576101008083540402835291602001916119bf565b820191906000526020600020905b8154815290600101906020018083116119a257829003601f168201915b505050505081526020019060010190611927565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ab657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a635790505b505050505081525050815260200190600101906119f7565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c419087906000908790616d22565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c9b92909116908690600401616d94565b6000604051808303818588803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b50506027546001600160a01b0316319250610cad915061057190508585616c87565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e4a908590616db6565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611ea1929116908590600401616d94565b600060405180830381600087803b158015611ebb57600080fd5b505af11580156112bd573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fb257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f5f5790505b50505050508152505081526020019060010190611ef3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461200d90616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461203990616c9a565b80156120865780601f1061205b57610100808354040283529160200191612086565b820191906000526020600020905b81548152906001019060200180831161206957829003601f168201915b505050505081526020019060010190611fee565b60085460009060ff16156120b2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190616ce7565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122659060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561227f57600080fd5b505af1158015612293573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122ee9392831692889216908790600401616d4a565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123ff9060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124819216908690600401616d94565b6000604051808303818588803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561258a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ae9190616d00565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611ea1565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561272457600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127426167f1565b61274d848483612757565b9150505b92915050565b60008061276485846127d2565b90506127c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016127b2929190616d94565b604051602081830303815290604052856127de565b9150505b9392505050565b60006127cb838361280c565b60c08101515160009015612802576127fb84848460c00151612827565b90506127cb565b6127fb84846129cd565b60006128188383612ab8565b6127cb838360200151846127de565b600080612832612ac8565b905060006128408683612b9b565b905060006128578260600151836020015185613041565b9050600061286783838989613253565b90506000612874826140d0565b602081015181519192509060030b156128e75789826040015160405160200161289e929190616dc9565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128de91600401616db6565b60405180910390fd5b600061292a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161429f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061297d908490600401616db6565b602060405180830381865afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190616e4a565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590612a22908790600401616db6565b600060405180830381865afa158015612a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a679190810190616f5b565b90506000612a958285604051602001612a81929190616f90565b60405160208183030381529060405261449f565b90506001600160a01b03811661274d57848460405160200161289e929190616fbf565b612ac4828260006144b2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b4f90849060040161706a565b600060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9491908101906170b1565b9250505090565b612bcd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612c186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612c21856145b5565b60208201526000612c318661499a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9b91908101906170b1565b86838560200151604051602001612cb594939291906170fa565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612d0d908590600401616db6565b600060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906170b1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d9a9084906004016171fe565b602060405180830381865afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190616d00565b612df0578160405160200161289e9190617250565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e359084906004016172e2565b600060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7a91908101906170b1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612ec1908490600401617334565b602060405180830381865afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190616d00565b15612f97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f4c908490600401617334565b600060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9191908101906170b1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612fbc9190617386565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fe89291906173f2565b600060405180830381865afa158015613005573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302d91908101906170b1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161305d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106130bd576130bd617417565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061311157613111617417565b60200260200101819052508460405160200161312d9190617446565b6040516020818303038152906040528160028151811061314f5761314f617417565b60200260200101819052508260405160200161316b91906174b2565b6040516020818303038152906040528160038151811061318d5761318d617417565b602002602001018190525060006131a3826140d0565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132349060408051808201825260008082526020918201528151808301909252845182528085019082015290614c1d565b613249578560405160200161289e91906174f3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156132a3565b511590565b6134175782602001511561335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128de565b8260c0015115613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128de565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161343057905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061348b90617584565b935060ff16815181106134a0576134a0617417565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134f191906175a3565b60405160208183030381529060405282828061350c90617584565b935060ff168151811061352157613521617417565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061356e90617584565b935060ff168151811061358357613583617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135d090617584565b935060ff16815181106135e5576135e5617417565b6020026020010181905250876020015182828061360190617584565b935060ff168151811061361657613616617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061366390617584565b935060ff168151811061367857613678617417565b60209081029190910101528751828261369081617584565b935060ff16815181106136a5576136a5617417565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136f290617584565b935060ff168151811061370757613707617417565b602002602001018190525061371b46614c7e565b828261372681617584565b935060ff168151811061373b5761373b617417565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061378890617584565b935060ff168151811061379d5761379d617417565b6020026020010181905250868282806137b590617584565b935060ff16815181106137ca576137ca617417565b60209081029190910101528551156138f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261381b81617584565b935060ff168151811061383057613830617417565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613880908990600401616db6565b600060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138c591908101906170b1565b82826138d081617584565b935060ff16815181106138e5576138e5617417565b60200260200101819052505b8460200151156139c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261393a81617584565b935060ff168151811061394f5761394f617417565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061399c90617584565b935060ff16815181106139b1576139b1617417565b6020026020010181905250613b88565b6139f961329e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a8c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a3c81617584565b935060ff1681518110613a5157613a51617417565b60200260200101819052508460a00151604051602001613a719190617446565b60405160208183030381529060405282828061399c90617584565b8460c00151158015613acf575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613acd90511590565b155b15613b885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613b1381617584565b935060ff1681518110613b2857613b28617417565b6020026020010181905250613b3c88614d1e565b604051602001613b4c9190617446565b604051602081830303815290604052828280613b6790617584565b935060ff1681518110613b7c57613b7c617417565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613bbc90511590565b613c515760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bff81617584565b935060ff1681518110613c1457613c14617417565b60200260200101819052508460400151828280613c3090617584565b935060ff1681518110613c4557613c45617417565b60200260200101819052505b606085015115613d725760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c9a81617584565b935060ff1681518110613caf57613caf617417565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d4691908101906170b1565b8282613d5181617584565b935060ff1681518110613d6657613d66617417565b60200260200101819052505b60e08501515115613e195760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613dbc81617584565b935060ff1681518110613dd157613dd1617417565b6020026020010181905250613ded8560e0015160000151614c7e565b8282613df881617584565b935060ff1681518110613e0d57613e0d617417565b60200260200101819052505b60e08501516020015115613ec35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e6681617584565b935060ff1681518110613e7b57613e7b617417565b6020026020010181905250613e978560e0015160200151614c7e565b8282613ea281617584565b935060ff1681518110613eb757613eb7617417565b60200260200101819052505b60e08501516040015115613f6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613f1081617584565b935060ff1681518110613f2557613f25617417565b6020026020010181905250613f418560e0015160400151614c7e565b8282613f4c81617584565b935060ff1681518110613f6157613f61617417565b60200260200101819052505b60e085015160600151156140175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613fba81617584565b935060ff1681518110613fcf57613fcf617417565b6020026020010181905250613feb8560e0015160600151614c7e565b8282613ff681617584565b935060ff168151811061400b5761400b617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561403557614035616e73565b60405190808252806020026020018201604052801561406857816020015b60608152602001906001900390816140535790505b50905060005b8260ff168160ff1610156140c157838160ff168151811061409157614091617417565b6020026020010151828260ff16815181106140ae576140ae617417565b602090810291909101015260010161406e565b5093505050505b949350505050565b6140f76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161417d9186910161760e565b600060405180830381865afa15801561419a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141c291908101906170b1565b905060006141d0868361580d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016142009190616b4a565b6000604051808303816000875af115801561421f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142479190810190617655565b805190915060030b158015906142605750602081015151155b801561426f5750604081015151155b15613249578160008151811061428757614287617417565b602002602001015160405160200161289e919061770b565b606060006142d48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061430b9082905b90615962565b15614468576000614388826143828461437c61434e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90615989565b906159eb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143ec908290615962565b1561445657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614453905b8290615a70565b90505b61445f81615a96565b925050506127cb565b821561448157848460405160200161289e9291906178f7565b50506040805160208101909152600081526127cb565b509392505050565b6000808251602084016000f09392505050565b8160a00151156144c157505050565b60006144ce848484615aff565b905060006144db826140d0565b602081015181519192509060030b1580156145775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790604080518082018252600080825260209182015281518083019092528451825280850190820152614305565b1561458457505050505050565b604082015151156145a457816040015160405160200161289e919061799e565b8060405160200161289e91906179fc565b606060006145ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061464f905b8290614c1d565b156146be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b990839061609a565b615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614720905b8290616124565b6001036147ed57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147869061444c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9905b8390615a70565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261484c90614648565b1561498357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906148b49083906161be565b9050600081600183516148c79190616d81565b815181106148d7576148d7617417565b6020026020010151905061497a6146b961494d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061609a565b95945050505050565b8260405160200161289e9190617a67565b50919050565b606060006149cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a3190614648565b15614a3f576127cb81615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a9e90614719565b600103614b0857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9906147e6565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b6790614648565b1561498357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614bcf9083906161be565b9050600181511115614c0b578060028251614bea9190616d81565b81518110614bfa57614bfa617417565b602002602001015192505050919050565b508260405160200161289e9190617a67565b805182516000911115614c3257506000612751565b81518351602085015160009291614c4891616c87565b614c529190616d81565b905082602001518103614c69576001915050612751565b82516020840151819020912014905092915050565b60606000614c8b83616263565b600101905060008167ffffffffffffffff811115614cab57614cab616e73565b6040519080825280601f01601f191660200182016040528015614cd5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cdf57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614daa905b8290616345565b15614dea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e4990614da3565b15614e8957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ee890614da3565b15614f2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f8790614da3565b80614fec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fec90614da3565b1561502c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261508b90614da3565b806150f05750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f090614da3565b1561513057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261518f90614da3565b806151f45750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151f490614da3565b1561523457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529390614da3565b806152f85750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152f890614da3565b1561533857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261539790614da3565b156153d757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261543690614da3565b1561547657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d590614da3565b1561551557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261557490614da3565b156155b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261561390614da3565b1561565357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156b290614da3565b806157175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261571790614da3565b1561575757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157b690614da3565b156157f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161289e9290602001617b45565b60608060005b8451811015615898578185828151811061582f5761582f617417565b6020026020010151604051602001615848929190616f90565b6040516020818303038152906040529150600185516158679190616d81565b8114615890578160405160200161587e9190617cae565b60405160208183030381529060405291505b600101615813565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816158b157905050905083816000815181106158dc576158dc617417565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061593057615930617417565b6020026020010181905250818160028151811061594f5761594f617417565b6020908102919091010152949350505050565b60208083015183518351928401516000936159809291849190616359565b14159392505050565b604080518082019091526000808252602082015260006159bb846000015185602001518560000151866020015161646a565b90508360200151816159cd9190616d81565b845185906159dc908390616d81565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615a10575081612751565b6020808301519084015160019114615a375750815160208481015190840151829020919020145b8015615a6857825184518590615a4e908390616d81565b9052508251602085018051615a64908390616c87565b9052505b509192915050565b6040805180820190915260008082526020820152615a8f83838361658a565b5092915050565b60606000826000015167ffffffffffffffff811115615ab757615ab7616e73565b6040519080825280601f01601f191660200182016040528015615ae1576020820181803683370190505b5090506000602082019050615a8f8185602001518660000151616635565b60606000615b0b612ac8565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615b2857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b8390617584565b935060ff1681518110615b9857615b98617417565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615be99190617cef565b604051602081830303815290604052828280615c0490617584565b935060ff1681518110615c1957615c19617417565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c6690617584565b935060ff1681518110615c7b57615c7b617417565b602002602001018190525082604051602001615c9791906174b2565b604051602081830303815290604052828280615cb290617584565b935060ff1681518110615cc757615cc7617417565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615d1490617584565b935060ff1681518110615d2957615d29617417565b6020026020010181905250615d3e87846166af565b8282615d4981617584565b935060ff1681518110615d5e57615d5e617417565b602090810291909101015285515115615e0a5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615db081617584565b935060ff1681518110615dc557615dc5617417565b6020026020010181905250615dde8660000151846166af565b8282615de981617584565b935060ff1681518110615dfe57615dfe617417565b60200260200101819052505b856080015115615e785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e5381617584565b935060ff1681518110615e6857615e68617417565b6020026020010181905250615ede565b8415615ede5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615ebd81617584565b935060ff1681518110615ed257615ed2617417565b60200260200101819052505b60408601515115615f7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615f2881617584565b935060ff1681518110615f3d57615f3d617417565b60200260200101819052508560400151828280615f5990617584565b935060ff1681518110615f6e57615f6e617417565b60200260200101819052505b856060015115615fe45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615fc381617584565b935060ff1681518110615fd857615fd8617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561600257616002616e73565b60405190808252806020026020018201604052801561603557816020015b60608152602001906001900390816160205790505b50905060005b8260ff168160ff16101561608e57838160ff168151811061605e5761605e617417565b6020026020010151828260ff168151811061607b5761607b617417565b602090810291909101015260010161603b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156160bf575081612751565b815183516020850151600092916160d591616c87565b6160df9190616d81565b60208401519091506001908214616100575082516020840151819020908220145b801561611b57835185518690616117908390616d81565b9052505b50929392505050565b6000808260000151616148856000015186602001518660000151876020015161646a565b6161529190616c87565b90505b835160208501516161669190616c87565b8111615a8f578161617681617d34565b92505082600001516161ad8560200151836161919190616d81565b865161619d9190616d81565b838660000151876020015161646a565b6161b79190616c87565b9050616155565b606060006161cc8484616124565b6161d7906001616c87565b67ffffffffffffffff8111156161ef576161ef616e73565b60405190808252806020026020018201604052801561622257816020015b606081526020019060019003908161620d5790505b50905060005b81518110156144975761623e6146b98686615a70565b82828151811061625057616250617417565b6020908102919091010152600101616228565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106162ac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162d8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162f657662386f26fc10000830492506010015b6305f5e100831061630e576305f5e100830492506008015b612710831061632257612710830492506004015b60648310616334576064830492506002015b600a83106127515760010192915050565b600061635183836166ef565b159392505050565b600080858411616460576020841161640c57600084156163a4576001616380866020616d81565b61638b906008617d4e565b616396906002617e4c565b6163a09190616d81565b1990505b83518116856163b38989616c87565b6163bd9190616d81565b805190935082165b8181146163f7578784116163df57879450505050506140c8565b836163e981617e58565b9450508284511690506163c5565b6164018785616c87565b9450505050506140c8565b8383206164198588616d81565b6164239087616c87565b91505b85821061645e5784822080820361644b576164418684616c87565b93505050506140c8565b616456600184616d81565b925050616426565b505b5092949350505050565b60008381868511616575576020851161652457600085156164b6576001616492876020616d81565b61649d906008617d4e565b6164a8906002617e4c565b6164b29190616d81565b1990505b845181166000876164c78b8b616c87565b6164d19190616d81565b855190915083165b828114616516578186106164fe576164f18b8b616c87565b96505050505050506140c8565b8561650881617d34565b9650508386511690506164d9565b8596505050505050506140c8565b508383206000905b6165368689616d81565b82116165735785832080820361655257839450505050506140c8565b61655d600185616c87565b935050818061656b90617d34565b92505061652c565b505b61657f8787616c87565b979650505050505050565b604080518082019091526000808252602082015260006165bc856000015186602001518660000151876020015161646a565b6020808701805191860191909152519091506165d89082616d81565b8352845160208601516165eb9190616c87565b81036165fa576000855261662c565b835183516166089190616c87565b85518690616617908390616d81565b90525083516166269082616c87565b60208601525b50909392505050565b6020811061666d578151835261664c602084616c87565b9250616659602083616c87565b9150616666602082616d81565b9050616635565b600019811561669c576001616683836020616d81565b61668f90610100617e4c565b6166999190616d81565b90505b9151835183169219169190911790915250565b606060006166bd8484612b9b565b80516020808301516040519394506166d793909101617e6f565b60405160208183030381529060405291505092915050565b8151815160009190811115616702575081515b6020808501519084015160005b838110156167bb578251825180821461678b57600019602087101561676a5760018461673c896020616d81565b6167469190616c87565b616751906008617d4e565b61675c906002617e4c565b6167669190616d81565b1990505b81811683821681810391146167885797506127519650505050505050565b50505b616796602086616c87565b94506167a3602085616c87565b935050506020816167b49190616c87565b905061670f565b50845186516132499190617ec7565b610c9f80617ee883390190565b6113e280618b8783390190565b61182a80619f6983390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001616834616839565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168346040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168eb5783516001600160a01b03168352602093840193909201916001016168c4565b509095945050505050565b60005b838110156169115781810151838201526020016168f9565b50506000910152565b600081518084526169328160208601602086016168f6565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352616a1284865161691a565b60209586019590945092909201916001016169d8565b50919750505060209485019492909201915060010161696e565b50929695505050505050565b600081518084526020840193506020830160005b82811015616aa25781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a62565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616b18604088018261691a565b9050602082015191508681036020880152616b338183616a4e565b965050506020938401939190910190600101616ad4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616bac85835161691a565b94506020938401939190910190600101616b72565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c426040870182616a4e565b9550506020938401939190910190600101616be9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561275157612751616c58565b600181811c90821680616cae57607f821691505b602082108103614994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616cf957600080fd5b5051919050565b600060208284031215616d1257600080fd5b815180151581146127cb57600080fd5b8381526001600160a01b038316602082015260606040820152600061497a606083018461691a565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000613249608083018461691a565b8181038181111561275157612751616c58565b6001600160a01b03831681526040602082015260006140c8604083018461691a565b6020815260006127cb602083018461691a565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616e0181601a8501602088016168f6565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e3e81601c8401602088016168f6565b01601c01949350505050565b600060208284031215616e5c57600080fd5b81516001600160a01b03811681146127cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616ec557616ec5616e73565b60405290565b60008067ffffffffffffffff841115616ee657616ee6616e73565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616f1557616f15616e73565b604052838152905080828401851015616f2d57600080fd5b6144978460208301856168f6565b600082601f830112616f4c57600080fd5b6127cb83835160208501616ecb565b600060208284031215616f6d57600080fd5b815167ffffffffffffffff811115616f8457600080fd5b61274d84828501616f3b565b60008351616fa28184602088016168f6565b835190830190616fb68183602088016168f6565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616ff781601a8501602088016168f6565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170348160338401602088016168f6565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006127cb608083018461691a565b6000602082840312156170c357600080fd5b815167ffffffffffffffff8111156170da57600080fd5b8201601f810184136170eb57600080fd5b61274d84825160208401616ecb565b6000855161710c818460208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551617146816001840160208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171848160028401602089016168f6565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516171c68160028401602088016168f6565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000617211604083018461691a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161728881601f8501602087016168f6565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172f5604083018461691a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000617347604083018461691a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173be8160148501602087016168f6565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000617405604083018561691a565b82810360208401526127c7818561691a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161747e8160018501602087016168f6565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174c48184602087016168f6565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161757781604b8501602087016168f6565b91909101604b0192915050565b600060ff821660ff810361759a5761759a616c58565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006127cb608083018461691a565b60006020828403121561766757600080fd5b815167ffffffffffffffff81111561767e57600080fd5b82016060818503121561769057600080fd5b617698616ea2565b81518060030b81146176a957600080fd5b8152602082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f3b565b602083015250604082015167ffffffffffffffff8111156176f157600080fd5b6176fd86828501616f3b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516177698160218501602087016168f6565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179558160218501602088016168f6565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161799281602e8401602088016168f6565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a5a8160228501602087016168f6565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a9f81600e8501602087016168f6565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b7d8160188501602088016168f6565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617bba81601c8401602088016168f6565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617cc08184602087016168f6565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617d2781601c8501602087016168f6565b91909101601c0192915050565b60006000198203617d4757617d47616c58565b5060010190565b808202811582820484141761275157612751616c58565b6001815b6001841115617da057808504811115617d8457617d84616c58565b6001841615617d9257908102905b60019390931c928002617d69565b935093915050565b600082617db757506001612751565b81617dc457506000612751565b8160018114617dda5760028114617de457617e00565b6001915050612751565b60ff841115617df557617df5616c58565b50506001821b612751565b5060208310610133831016604e8410600b8410161715617e23575081810a612751565b617e306000198484617d65565b8060001904821115617e4457617e44616c58565b029392505050565b60006127cb8383617da8565b600081617e6757617e67616c58565b506000190190565b60008351617e818184602088016168f6565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617ebb8160018401602088016168f6565b01600101949350505050565b8181036000831280158383131683831282161715615a8f57615a8f616c5856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033a2646970667358221220b68ef6a2e59ebd6ec07004817f94d2e8ad26c5b98e5fa2bbd022b8eb674f554764736f6c634300081a0033", } // GatewayEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go index b8006298..0fb8f15e 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. var GatewayEVMTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e40e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639620d7ed1161012a578063cebad2a6116100bd578063f68bd1c01161008c578063fa7626d411610071578063fa7626d41461035c578063fb176c1214610369578063fe7bdbb21461037157600080fd5b8063f68bd1c01461034c578063fa18c09b1461035457600080fd5b8063cebad2a61461032c578063d46e9b5714610334578063e20c9f711461033c578063eb1ce7f91461034457600080fd5b8063ba414fa6116100f9578063ba414fa6146102fc578063bcd9925e14610314578063c9350b7f1461031c578063cbd57e2f1461032457600080fd5b80639620d7ed146102dc578063a3f9d0e0146102e4578063b0464fdc146102ec578063b5508aa9146102f457600080fd5b806344671b94116101a2578063766d0ded11610171578063766d0ded146102a25780637d7f772a146102aa57806385226c81146102b2578063916a17c6146102c757600080fd5b806344671b941461027557806366d9a9a01461027d5780636a6218541461029257806371149c941461029a57600080fd5b80632ade3880116101de5780632ade3880146102485780633e5e3c231461025d5780633e73ecb4146102655780633f7286f41461026d57600080fd5b80630a9254e4146102105780631779672f1461021a5780631ed7831c146102225780632206eb6514610240575b600080fd5b610218610379565b005b610218610c16565b61022a610e3d565b6040516102379190619751565b60405180910390f35b610218610e9f565b610250611091565b60405161023791906197ed565b61022a6111d3565b610218611233565b61022a6117a9565b610218611809565b610285611ba1565b6040516102379190619953565b610218611d23565b610218611def565b6102186125fa565b6102186127a0565b6102ba612a81565b6040516102379190619a4d565b6102cf612b51565b6040516102379190619a60565b610218612c4c565b610218612db9565b6102cf6133c1565b6102ba6134bc565b61030461358c565b6040519015158152602001610237565b610218613660565b61021861380a565b6102186139fc565b610218613f87565b610218614159565b61022a614228565b610218614288565b6102186143ad565b610218614770565b601f546103049060ff1681565b610218614a96565b610218615114565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516103cb90619664565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610450573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161049590619664565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610519573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526105ff919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615557565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061068390619671565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156106b6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061070b9061967e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610747573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161078c9061968b565b604051809103906000f0801580156107a8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190619af7565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610e0793928316929091169087908790600401619b19565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610e0793928316929091169087908790600401619b19565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156111ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156111b357838290600052602060002001805461112690619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461115290619b50565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b505050505081526020019060010190611107565b5050505081525050815260200190600101906110b5565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190619b9d565b90506112b9816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d9190619b9d565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611410916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190619b9d565b90506116968186615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190619b9d565b905061171f8161171a8887619c0d565b615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190619b9d565b90506117a0816000615576565b50505050505050565b60606017805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926118bf926001600160a01b031691600091879101619bb6565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a8d906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611b5692909116908590600401619c39565b6000604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9d9190810190619d43565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000209060020201604051806040016040529081600082018054611bf890619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2490619b50565b8015611c715780601f10611c4657610100808354040283529160200191611c71565b820191906000526020600020905b815481529060010190602001808311611c5457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611cb85790505b50505050508152505081526020019060010190611bc5565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610cde565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190619b9d565b9050611eb3816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161200a916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061210892506001600160a01b03909116908790619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561218557600080fd5b505af1158015612199573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906121e49089908990619c20565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8906122c09089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561232157600080fd5b505af1158015612335573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a0236294506123929392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190619b9d565b90506124438187615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b79190619b9d565b90506124c78161171a8987619c0d565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190619b9d565b905061256e816000615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190619b9d565b90506125ef816000615576565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816127b75790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061281757612817619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061285b5761285b619d78565b602090810291909101015260405160019060009061288190859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293457600080fd5b505af1158015612948573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156129d257600080fd5b505af11580156129e6573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612a3a92909116908590600401619c39565b6000604051808303816000875af1158015612a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127999190810190619d43565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111ca578382906000526020600020018054612ac490619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054612af090619b50565b8015612b3d5780601f10612b1257610100808354040283529160200191612b3d565b820191906000526020600020905b815481529060010190602001808311612b2057829003601f168201915b505050505081526020019060010190612aa5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c3457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612be15790505b50505050508152505081526020019060010190612b75565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612d3157600080fd5b505af1158015612d45573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610d7c565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e879190619b9d565b9050612e94816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612feb916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906131be9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561321f57600080fd5b505af1158015613233573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506132909392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156132aa57600080fd5b505af11580156132be573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190619b9d565b9050613341816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b59190619b9d565b90506124c78185615576565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134515790505b505050505081525050815260200190600101906133e5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000200180546134ff90619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461352b90619b50565b80156135785780601f1061354d57610100808354040283529160200191613578565b820191906000526020600020905b81548152906001019060200180831161355b57829003601f168201915b5050505050815260200190600101906134e0565b60085460009060ff16156135a4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190619b9d565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561379957600080fd5b505af11580156137ad573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561398b57600080fd5b505af115801561399f573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af99190619b9d565b9050613b06816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7a9190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613c5d916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613d0457600080fd5b505af1158015613d18573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613dee57600080fd5b505af1158015613e02573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613e4d9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450613f1f9392831692909116908a908a90600401619b19565b600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016123f6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140c457600080fd5b505af11580156140d8573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350869261412c9216908690600401619c39565b6000604051808303818588803b15801561414557600080fd5b505af11580156117a0573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612d17565b60606015805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6000806040516020016142be907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432557600080fd5b505af1158015614339573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161377f565b604080516001808252818301909252600091816020015b60608152602001906001900390816143c45790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061442457614424619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061446857614468619d78565b602090810291909101015260405160019060009061448e90859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161454b916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561456557600080fd5b505af1158015614579573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145f257600080fd5b505af1158015614606573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146935061464d92506001600160a01b0390911690879087908790619e11565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614724906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016129b8565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b0316316147cf816000615576565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561484457600080fd5b505af1158015614858573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061489b92506001600160a01b03909116908590619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561491857600080fd5b505af115801561492c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915061497990670de0b6b3a7640000908690619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149da57600080fd5b505af11580156149ee573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792614a429216908790600401619c39565b6000604051808303818588803b158015614a5b57600080fd5b505af1158015614a6f573d6000803e3d6000fd5b50506021546001600160a01b0316319250610c109150829050670de0b6b3a7640000615576565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015614b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b939190619b9d565b9050614ba0816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015614bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c149190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614cf7916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015614d1157600080fd5b505af1158015614d25573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614d9e57600080fd5b505af1158015614db2573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050614df0600288619e59565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614e9f57600080fd5b505af1158015614eb3573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90614efe9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f5f57600080fd5b505af1158015614f73573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614fd09392831692909116908a908a90600401619b19565b600060405180830381600087803b158015614fea57600080fd5b505af1158015614ffe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150749190619b9d565b90506150858161171a600289619e59565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156150d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150f99190619b9d565b90506124c78161510a60028a619e59565b61171a9087619c0d565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615171906000906001600160a01b031631615576565b600084848460405160240161518893929190619e94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161524c916001600160a01b039190911690670de0b6b3a7640000908690600401619bb6565b600060405180830381600087803b15801561526657600080fd5b505af115801561527a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156152f357600080fd5b505af1158015615307573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061535092506001600160a01b03909116908590899089908990619ebe565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156153cd57600080fd5b505af11580156153e1573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061542e90670de0b6b3a7640000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561548f57600080fd5b505af11580156154a3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926154f79216908690600401619c39565b60006040518083038185885af1158015615515573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261553e9190810190619d43565b506021546127999083906001600160a01b031631615576565b6000615561619698565b61556c8484836155f5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156155e157600080fd5b505afa158015610e35573d6000803e3d6000fd5b6000806156028584615670565b90506156656040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615650929190619c39565b6040516020818303038152906040528561567c565b9150505b9392505050565b600061566983836156aa565b60c081015151600090156156a05761569984848460c001516156c5565b9050615669565b615699848461586b565b60006156b68383615956565b6156698383602001518461567c565b6000806156d0615962565b905060006156de8683615a35565b905060006156f58260600151836020015185615edb565b90506000615705838389896160ed565b9050600061571282616f6a565b602081015181519192509060030b156157855789826040015160405160200161573c929190619eff565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261577c91600401619f80565b60405180910390fd5b60006157c86040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617139565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061581b908490600401619f80565b602060405180830381865afa158015615838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061585c9190619f93565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158c0908790600401619f80565b600060405180830381865afa1580156158dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159059190810190619d43565b90506000615933828560405160200161591f929190619fbc565b604051602081830303815290604052617339565b90506001600160a01b03811661556c57848460405160200161573c929190619feb565b611b9d8282600061734c565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159e990849060040161a096565b600060405180830381865afa158015615a06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a2e919081019061a0dd565b9250505090565b615a676040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615ab26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615abb8561744f565b60208201526000615acb86617834565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b35919081019061a0dd565b86838560200151604051602001615b4f949392919061a126565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615ba7908590600401619f80565b600060405180830381865afa158015615bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bec919081019061a0dd565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c3490849060040161a22a565b602060405180830381865afa158015615c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c759190619af7565b615c8a578160405160200161573c919061a27c565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615ccf90849060040161a30e565b600060405180830381865afa158015615cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d14919081019061a0dd565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d5b90849060040161a360565b602060405180830381865afa158015615d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d9c9190619af7565b15615e31576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615de690849060040161a360565b600060405180830381865afa158015615e03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e2b919081019061a0dd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e56919061a3b2565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e8292919061a41e565b600060405180830381865afa158015615e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ec7919081019061a0dd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615ef75790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f5757615f57619d78565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fab57615fab619d78565b602002602001018190525084604051602001615fc7919061a443565b60405160208183030381529060405281600281518110615fe957615fe9619d78565b602002602001018190525082604051602001616005919061a4af565b6040516020818303038152906040528160038151811061602757616027619d78565b6020026020010181905250600061603d82616f6a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160ce9060408051808201825260008082526020918201528151808301909252845182528085019082015290617ab7565b6160e3578560405160200161573c919061a4f0565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561613d565b511590565b6162b1578260200151156161f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161577c565b8260c00151156162b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161577c565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162ca57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163259061a581565b935060ff168151811061633a5761633a619d78565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161638b919061a5a0565b6040516020818303038152906040528282806163a69061a581565b935060ff16815181106163bb576163bb619d78565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164089061a581565b935060ff168151811061641d5761641d619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061646a9061a581565b935060ff168151811061647f5761647f619d78565b6020026020010181905250876020015182828061649b9061a581565b935060ff16815181106164b0576164b0619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164fd9061a581565b935060ff168151811061651257616512619d78565b60209081029190910101528751828261652a8161a581565b935060ff168151811061653f5761653f619d78565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061658c9061a581565b935060ff16815181106165a1576165a1619d78565b60200260200101819052506165b546617b18565b82826165c08161a581565b935060ff16815181106165d5576165d5619d78565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166229061a581565b935060ff168151811061663757616637619d78565b60200260200101819052508682828061664f9061a581565b935060ff168151811061666457616664619d78565b602090810291909101015285511561678b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166b58161a581565b935060ff16815181106166ca576166ca619d78565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061671a908990600401619f80565b600060405180830381865afa158015616737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261675f919081019061a0dd565b828261676a8161a581565b935060ff168151811061677f5761677f619d78565b60200260200101819052505b84602001511561685b5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167d48161a581565b935060ff16815181106167e9576167e9619d78565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168369061a581565b935060ff168151811061684b5761684b619d78565b6020026020010181905250616a22565b6168936161388660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169265760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168d68161a581565b935060ff16815181106168eb576168eb619d78565b60200260200101819052508460a0015160405160200161690b919061a443565b6040516020818303038152906040528282806168369061a581565b8460c0015115801561696957506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261696790511590565b155b15616a225760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169ad8161a581565b935060ff16815181106169c2576169c2619d78565b60200260200101819052506169d688617bb8565b6040516020016169e6919061a443565b604051602081830303815290604052828280616a019061a581565b935060ff1681518110616a1657616a16619d78565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a5690511590565b616aeb5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a998161a581565b935060ff1681518110616aae57616aae619d78565b60200260200101819052508460400151828280616aca9061a581565b935060ff1681518110616adf57616adf619d78565b60200260200101819052505b606085015115616c0c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b348161a581565b935060ff1681518110616b4957616b49619d78565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616be0919081019061a0dd565b8282616beb8161a581565b935060ff1681518110616c0057616c00619d78565b60200260200101819052505b60e08501515115616cb35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c568161a581565b935060ff1681518110616c6b57616c6b619d78565b6020026020010181905250616c878560e0015160000151617b18565b8282616c928161a581565b935060ff1681518110616ca757616ca7619d78565b60200260200101819052505b60e08501516020015115616d5d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d008161a581565b935060ff1681518110616d1557616d15619d78565b6020026020010181905250616d318560e0015160200151617b18565b8282616d3c8161a581565b935060ff1681518110616d5157616d51619d78565b60200260200101819052505b60e08501516040015115616e075760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616daa8161a581565b935060ff1681518110616dbf57616dbf619d78565b6020026020010181905250616ddb8560e0015160400151617b18565b8282616de68161a581565b935060ff1681518110616dfb57616dfb619d78565b60200260200101819052505b60e08501516060015115616eb15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e548161a581565b935060ff1681518110616e6957616e69619d78565b6020026020010181905250616e858560e0015160600151617b18565b8282616e908161a581565b935060ff1681518110616ea557616ea5619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ecf57616ecf619c5b565b604051908082528060200260200182016040528015616f0257816020015b6060815260200190600190039081616eed5790505b50905060005b8260ff168160ff161015616f5b57838160ff1681518110616f2b57616f2b619d78565b6020026020010151828260ff1681518110616f4857616f48619d78565b6020908102919091010152600101616f08565b5093505050505b949350505050565b616f916040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170179186910161a60b565b600060405180830381865afa158015617034573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261705c919081019061a0dd565b9050600061706a86836186a7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161709a9190619a4d565b6000604051808303816000875af11580156170b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170e1919081019061a652565b805190915060030b158015906170fa5750602081015151155b80156171095750604081015151155b156160e3578160008151811061712157617121619d78565b602002602001015160405160200161573c919061a708565b6060600061716e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171a59082905b906187fc565b156173025760006172228261721c846172166171e88a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618823565b90618885565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172869082906187fc565b156172f057604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172ed905b829061890a565b90505b6172f981618930565b92505050615669565b821561731b57848460405160200161573c92919061a8f4565b5050604080516020810190915260008152615669565b509392505050565b6000808251602084016000f09392505050565b8160a001511561735b57505050565b6000617368848484618999565b9050600061737582616f6a565b602081015181519192509060030b1580156174115750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174119060408051808201825260008082526020918201528151808301909252845182528085019082015261719f565b1561741e57505050505050565b6040820151511561743e57816040015160405160200161573c919061a99b565b8060405160200161573c919061a9f9565b606060006174848360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174e9905b8290617ab7565b1561755857604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553908390618f34565b618930565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ba905b8290618fbe565b60010361768757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617620906172e6565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553905b839061890a565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176e6906174e2565b1561781d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774e908390619058565b9050600081600183516177619190619c0d565b8151811061777157617771619d78565b602002602001015190506178146175536177e76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f34565b95945050505050565b8260405160200161573c919061aa64565b50919050565b606060006178698360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178cb906174e2565b156178d95761566981618930565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617938906175b3565b6001036179a257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156699061755390617680565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a01906174e2565b1561781d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a69908390619058565b9050600181511115617aa5578060028251617a849190619c0d565b81518110617a9457617a94619d78565b602002602001015192505050919050565b508260405160200161573c919061aa64565b805182516000911115617acc57506000615570565b81518351602085015160009291617ae29161ab42565b617aec9190619c0d565b905082602001518103617b03576001915050615570565b82516020840151819020912014905092915050565b60606000617b25836190fd565b600101905060008167ffffffffffffffff811115617b4557617b45619c5b565b6040519080825280601f01601f191660200182016040528015617b6f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b7957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c44905b82906191df565b15617c8457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ce390617c3d565b15617d2357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8290617c3d565b15617dc257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2190617c3d565b80617e865750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e8690617c3d565b15617ec657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f2590617c3d565b80617f8a5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f8a90617c3d565b15617fca57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261802990617c3d565b8061808e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808e90617c3d565b156180ce57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812d90617c3d565b806181925750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819290617c3d565b156181d257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261823190617c3d565b1561827157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182d090617c3d565b1561831057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836f90617c3d565b156183af57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840e90617c3d565b1561844e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184ad90617c3d565b156184ed57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261854c90617c3d565b806185b15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185b190617c3d565b156185f157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261865090617c3d565b1561869057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161573c929060200161ab55565b60608060005b845181101561873257818582815181106186c9576186c9619d78565b60200260200101516040516020016186e2929190619fbc565b6040516020818303038152906040529150600185516187019190619c0d565b811461872a5781604051602001618718919061acbe565b60405160208183030381529060405291505b6001016186ad565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161874b579050509050838160008151811061877657618776619d78565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187ca576187ca619d78565b602002602001018190525081816002815181106187e9576187e9619d78565b6020908102919091010152949350505050565b602080830151835183519284015160009361881a92918491906191f3565b14159392505050565b604080518082019091526000808252602082015260006188558460000151856020015185600001518660200151619304565b90508360200151816188679190619c0d565b84518590618876908390619c0d565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188aa575081615570565b60208083015190840151600191146188d15750815160208481015190840151829020919020145b8015618902578251845185906188e8908390619c0d565b90525082516020850180516188fe90839061ab42565b9052505b509192915050565b6040805180820190915260008082526020820152618929838383619424565b5092915050565b60606000826000015167ffffffffffffffff81111561895157618951619c5b565b6040519080825280601f01601f19166020018201604052801561897b576020820181803683370190505b509050600060208201905061892981856020015186600001516194cf565b606060006189a5615962565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189c257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a1d9061a581565b935060ff1681518110618a3257618a32619d78565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a83919061acff565b604051602081830303815290604052828280618a9e9061a581565b935060ff1681518110618ab357618ab3619d78565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b009061a581565b935060ff1681518110618b1557618b15619d78565b602002602001018190525082604051602001618b31919061a4af565b604051602081830303815290604052828280618b4c9061a581565b935060ff1681518110618b6157618b61619d78565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618bae9061a581565b935060ff1681518110618bc357618bc3619d78565b6020026020010181905250618bd88784619549565b8282618be38161a581565b935060ff1681518110618bf857618bf8619d78565b602090810291909101015285515115618ca45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c4a8161a581565b935060ff1681518110618c5f57618c5f619d78565b6020026020010181905250618c78866000015184619549565b8282618c838161a581565b935060ff1681518110618c9857618c98619d78565b60200260200101819052505b856080015115618d125760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ced8161a581565b935060ff1681518110618d0257618d02619d78565b6020026020010181905250618d78565b8415618d785760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d578161a581565b935060ff1681518110618d6c57618d6c619d78565b60200260200101819052505b60408601515115618e145760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dc28161a581565b935060ff1681518110618dd757618dd7619d78565b60200260200101819052508560400151828280618df39061a581565b935060ff1681518110618e0857618e08619d78565b60200260200101819052505b856060015115618e7e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e5d8161a581565b935060ff1681518110618e7257618e72619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e9c57618e9c619c5b565b604051908082528060200260200182016040528015618ecf57816020015b6060815260200190600190039081618eba5790505b50905060005b8260ff168160ff161015618f2857838160ff1681518110618ef857618ef8619d78565b6020026020010151828260ff1681518110618f1557618f15619d78565b6020908102919091010152600101618ed5565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f59575081615570565b81518351602085015160009291618f6f9161ab42565b618f799190619c0d565b60208401519091506001908214618f9a575082516020840151819020908220145b8015618fb557835185518690618fb1908390619c0d565b9052505b50929392505050565b6000808260000151618fe28560000151866020015186600001518760200151619304565b618fec919061ab42565b90505b83516020850151619000919061ab42565b811161892957816190108161ad44565b925050826000015161904785602001518361902b9190619c0d565b86516190379190619c0d565b8386600001518760200151619304565b619051919061ab42565b9050618fef565b606060006190668484618fbe565b61907190600161ab42565b67ffffffffffffffff81111561908957619089619c5b565b6040519080825280602002602001820160405280156190bc57816020015b60608152602001906001900390816190a75790505b50905060005b8151811015617331576190d8617553868661890a565b8282815181106190ea576190ea619d78565b60209081029190910101526001016190c2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619146577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619172576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061919057662386f26fc10000830492506010015b6305f5e10083106191a8576305f5e100830492506008015b61271083106191bc57612710830492506004015b606483106191ce576064830492506002015b600a83106155705760010192915050565b60006191eb8383619589565b159392505050565b6000808584116192fa57602084116192a6576000841561923e57600161921a866020619c0d565b61922590600861ad5e565b61923090600261ae5c565b61923a9190619c0d565b1990505b835181168561924d898961ab42565b6192579190619c0d565b805190935082165b818114619291578784116192795787945050505050616f62565b836192838161ae68565b94505082845116905061925f565b61929b878561ab42565b945050505050616f62565b8383206192b38588619c0d565b6192bd908761ab42565b91505b8582106192f8578482208082036192e5576192db868461ab42565b9350505050616f62565b6192f0600184619c0d565b9250506192c0565b505b5092949350505050565b6000838186851161940f57602085116193be576000851561935057600161932c876020619c0d565b61933790600861ad5e565b61934290600261ae5c565b61934c9190619c0d565b1990505b845181166000876193618b8b61ab42565b61936b9190619c0d565b855190915083165b8281146193b0578186106193985761938b8b8b61ab42565b9650505050505050616f62565b856193a28161ad44565b965050838651169050619373565b859650505050505050616f62565b508383206000905b6193d08689619c0d565b821161940d578583208082036193ec5783945050505050616f62565b6193f760018561ab42565b93505081806194059061ad44565b9250506193c6565b505b619419878761ab42565b979650505050505050565b604080518082019091526000808252602082015260006194568560000151866020015186600001518760200151619304565b6020808701805191860191909152519091506194729082619c0d565b835284516020860151619485919061ab42565b810361949457600085526194c6565b835183516194a2919061ab42565b855186906194b1908390619c0d565b90525083516194c0908261ab42565b60208601525b50909392505050565b6020811061950757815183526194e660208461ab42565b92506194f360208361ab42565b9150619500602082619c0d565b90506194cf565b600019811561953657600161951d836020619c0d565b6195299061010061ae5c565b6195339190619c0d565b90505b9151835183169219169190911790915250565b606060006195578484615a35565b80516020808301516040519394506195719390910161ae7f565b60405160208183030381529060405291505092915050565b815181516000919081111561959c575081515b6020808501519084015160005b838110156196555782518251808214619625576000196020871015619604576001846195d6896020619c0d565b6195e0919061ab42565b6195eb90600861ad5e565b6195f690600261ae5c565b6196009190619c0d565b1990505b81811683821681810391146196225797506155709650505050505050565b50505b61963060208661ab42565b945061963d60208561ab42565b9350505060208161964e919061ab42565b90506195a9565b50845186516160e3919061aed7565b610c9f8061aef883390190565b610b4a8061bb9783390190565b610f9a8061c6e183390190565b610d5e8061d67b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196db6196e0565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196db6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197925783516001600160a01b031683526020938401939092019160010161976b565b509095945050505050565b60005b838110156197b85781810151838201526020016197a0565b50506000910152565b600081518084526197d981602086016020860161979d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198b98486516197c1565b602095860195909450929092019160010161987f565b509197505050602094850194929092019150600101619815565b50929695505050505050565b600081518084526020840193506020830160005b828110156199495781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619909565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199bf60408801826197c1565b90506020820151915086810360208801526199da81836198f5565b96505050602093840193919091019060010161997b565b600082825180855260208501945060208160051b8301016020850160005b83811015619a4157601f19858403018852619a2b8383516197c1565b6020988901989093509190910190600101619a0f565b50909695505050505050565b60208152600061566960208301846199f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619ae160408701826198f5565b9550506020938401939190910190600101619a88565b600060208284031215619b0957600080fd5b8151801515811461566957600080fd5b6001600160a01b03851681526001600160a01b03841660208201528260408201526080606082015260006160e360808301846197c1565b600181811c90821680619b6457607f821691505b60208210810361782e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215619baf57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061781460608301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561557057615570619bde565b828152604060208201526000616f6260408301846197c1565b6001600160a01b0383168152604060208201526000616f6260408301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619cad57619cad619c5b565b60405290565b60008067ffffffffffffffff841115619cce57619cce619c5b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619cfd57619cfd619c5b565b604052838152905080828401851015619d1557600080fd5b61733184602083018561979d565b600082601f830112619d3457600080fd5b61566983835160208501619cb3565b600060208284031215619d5557600080fd5b815167ffffffffffffffff811115619d6c57600080fd5b61556c84828501619d23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b82811015619949578151865260209586019590910190600101619dbb565b606081526000619dec60608301866199f1565b8281036020840152619dfe8186619da7565b9150508215156040830152949350505050565b6001600160a01b0385168152608060208201526000619e3360808301866199f1565b8281036040840152619e458186619da7565b915050821515606083015295945050505050565b600082619e8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b606081526000619ea760608301866197c1565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a060408201526000619ee660a08301866197c1565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a85016020880161979d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c84016020880161979d565b01601c01949350505050565b60208152600061566960208301846197c1565b600060208284031215619fa557600080fd5b81516001600160a01b038116811461566957600080fd5b60008351619fce81846020880161979d565b835190830190619fe281836020880161979d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a02381601a85016020880161979d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a06081603384016020880161979d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a0ef57600080fd5b815167ffffffffffffffff81111561a10657600080fd5b8201601f8101841361a11757600080fd5b61556c84825160208401619cb3565b6000855161a138818460208a0161979d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a172816001840160208a0161979d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1b081600284016020890161979d565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1f281600284016020880161979d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a23d60408301846197c1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a2b481601f85016020870161979d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a32160408301846197c1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a37360408301846197c1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3ea81601485016020870161979d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a43160408301856197c1565b828103602084015261566581856197c1565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a47b81600185016020870161979d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4c181846020870161979d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a57481604b85016020870161979d565b91909101604b0192915050565b600060ff821660ff810361a5975761a597619bde565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a66457600080fd5b815167ffffffffffffffff81111561a67b57600080fd5b82016060818503121561a68d57600080fd5b61a695619c8a565b81518060030b811461a6a657600080fd5b8152602082015167ffffffffffffffff81111561a6c257600080fd5b61a6ce86828501619d23565b602083015250604082015167ffffffffffffffff81111561a6ee57600080fd5b61a6fa86828501619d23565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a76681602185016020870161979d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a95281602185016020880161979d565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a98f81602e84016020880161979d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa5781602285016020870161979d565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa9c81600e85016020870161979d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561557057615570619bde565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab8d81601885016020880161979d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161abca81601c84016020880161979d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acd081846020870161979d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad3781601c85016020870161979d565b91909101601c0192915050565b6000600019820361ad575761ad57619bde565b5060010190565b808202811582820484141761557057615570619bde565b6001815b600184111561adb05780850481111561ad945761ad94619bde565b600184161561ada257908102905b60019390931c92800261ad79565b935093915050565b60008261adc757506001615570565b8161add457506000615570565b816001811461adea576002811461adf45761ae10565b6001915050615570565b60ff84111561ae055761ae05619bde565b50506001821b615570565b5060208310610133831016604e8410600b841016171561ae33575081810a615570565b61ae40600019848461ad75565b806000190482111561ae545761ae54619bde565b029392505050565b6000615669838361adb8565b60008161ae775761ae77619bde565b506000190190565b6000835161ae9181846020880161979d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aecb81600184016020880161979d565b01600101949350505050565b818103600083128015838313168383128216171561892957618929619bde56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122009ca5625d116c2c00e3f204494885cc15e67a2ddde6c5c7fc00d465fe53e1cb664736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ff4d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c8063a3f9d0e011610160578063dd51e82f116100d8578063fa18c09b1161008c578063fb176c1211610071578063fb176c121461049a578063fe7bdbb2146104a2578063fe8e5f1b146104aa57600080fd5b8063fa18c09b14610485578063fa7626d41461048d57600080fd5b8063e63ab1e9116100bd578063e63ab1e91461044e578063eb1ce7f914610475578063f68bd1c01461047d57600080fd5b8063dd51e82f1461043e578063e20c9f711461044657600080fd5b8063b5508aa91161012f578063c9350b7f11610114578063c9350b7f14610426578063cbd57e2f1461042e578063cebad2a61461043657600080fd5b8063b5508aa914610406578063ba414fa61461040e57600080fd5b8063a3f9d0e0146103c7578063a4943deb146103cf578063a783c789146103d7578063b0464fdc146103fe57600080fd5b80633f7286f41161020e57806371149c94116101c257806385226c81116101a757806385226c811461037657806385f438c11461038b578063916a17c6146103b257600080fd5b806371149c94146103665780637d7f772a1461036e57600080fd5b80635d62c860116101f35780635d62c8601461031457806366d9a9a0146103495780636a6218541461035e57600080fd5b80633f7286f41461030457806344671b941461030c57600080fd5b80632206eb65116102655780633e5e3c231161024a5780633e5e3c23146102ec5780633e73ecb4146102f45780633ee92923146102fc57600080fd5b80632206eb65146102cf5780632ade3880146102d757600080fd5b80630a9254e4146102975780630eee72a9146102a15780631779672f146102a95780631ed7831c146102b1575b600080fd5b61029f6104b2565b005b61029f610d62565b61029f610fdd565b6102b9611132565b6040516102c6919061a168565b60405180910390f35b61029f611194565b6102df6113d8565b6040516102c6919061a204565b6102b961151a565b61029f61157a565b61029f611adb565b6102b9611b95565b61029f611bf5565b61033b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6040519081526020016102c6565b610351611f78565b6040516102c6919061a36a565b61029f6120e5565b61029f61219c565b61029f612992565b61037e612ccb565b6040516102c6919061a464565b61033b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6103ba612d9b565b6040516102c6919061a477565b61029f612e81565b61029f61345f565b61033b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6103ba61366f565b61037e613755565b610416613825565b60405190151581526020016102c6565b61029f6138f9565b61029f613b3d565b61029f61409e565b61029f6142d7565b6102b9614a8d565b61033b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61029f614aed565b61029f614c12565b61029f614fc0565b601f546104169060ff1681565b61029f6152e6565b61029f61593a565b61029f615d68565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516105049061a07b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610589573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105ce9061a07b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610652573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261072c919060840160408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615f6e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906107b89061a088565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107f4573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061084f9061a095565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610893573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108d89061a0a2565b604051809103906000f0801580156108f4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc7919061a50e565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b50505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610f1c919060040161a530565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610fa79392831692909116908790879060040161a543565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610f1c565b6060601680548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116c575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061134d919060040161a530565b600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610fa79392831692909116908790879060040161a543565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561151157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114fa57838290600052602060002001805461146d9061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546114999061a57a565b80156114e65780601f106114bb576101008083540402835291602001916114e6565b820191906000526020600020905b8154815290600101906020018083116114c957829003601f168201915b50505050508152602001906001019061144e565b5050505081525050815260200190600101906113fc565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa1580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f3919061a5c7565b9050611600816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611674919061a5c7565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611742916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061a5c7565b90506119c88186615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c919061a5c7565b9050611a5181611a4c888761a637565b615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061a5c7565b9050611ad2816000615f8d565b50505050505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610e18565b6060601780548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b6040805160048082526024820183526020820180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611c96926001600160a01b03169160009187910161a5e0565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611e6490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611f2d9290911690859060040161a663565b6000604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f74919081019061a76d565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000209060020201604051806040016040529081600082018054611fcf9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb9061a57a565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156120cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161208f5790505b50505050508152505081526020019060010190611f9c565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612253919061a5c7565b9050612260816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d4919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916123a2916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506124a092506001600160a01b0390911690879061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561251d57600080fd5b505af1158015612531573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061257c908990899061a64a565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125f957600080fd5b505af115801561260d573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890612658908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945061272a9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf919061a5c7565b90506127db8187615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f919061a5c7565b905061285f81611a4c898761a637565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f9919061a5c7565b9050612906816000615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297a919061a5c7565b9050612987816000615f8d565b505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816129a95790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110612a0957612a0961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110612a4d57612a4d61a7a2565b6020908102919091010152604051600190600090612a739085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612bfb919060040161a530565b600060405180830381600087803b158015612c1557600080fd5b505af1158015612c29573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612c7d9290911690859060040161a663565b6000604051808303816000875af1158015612c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc4919081019061a76d565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611511578382906000526020600020018054612d0e9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3a9061a57a565b8015612d875780601f10612d5c57610100808354040283529160200191612d87565b820191906000526020600020905b815481529060010190602001808311612d6a57829003601f168201915b505050505081526020019060010190612cef565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e6957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612e2b5790505b50505050508152505081526020019060010190612dbf565b604080516004808252602480830184526020830180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3a919061a5c7565b9050612f47816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbb919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613089916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561313057600080fd5b505af1158015613144573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9061325c908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061332e9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561334857600080fd5b505af115801561335c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061a5c7565b90506133df816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613453919061a5c7565b905061285f8185615f8d565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134fa57600080fd5b505af115801561350e573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135e4919060040161a530565b600060405180830381600087803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610fa79392831692909116908790879060040161a543565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116136ff5790505b50505050508152505081526020019060010190613693565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000200180546137989061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546137c49061a57a565b80156138115780601f106137e657610100808354040283529160200191613811565b820191906000526020600020905b8154815290600101906020018083116137f457829003601f168201915b505050505081526020019060010190613779565b60085460009060ff161561383d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061a5c7565b1415905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156139c857600080fd5b505af11580156139dc573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613ab2919060040161a530565b600060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610fa79392831692909116908790879060040161a543565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c25919061a5c7565b9050613c32816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca6919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613d74916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613e1b57600080fd5b505af1158015613e2f573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f0557600080fd5b505af1158015613f19573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613f64908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fc557600080fd5b505af1158015613fd9573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506140369392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561405057600080fd5b505af1158015614064573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161278e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614228919060040161a530565b600060405180830381600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db935086926142aa921690869060040161a663565b6000604051808303818588803b1580156142c357600080fd5b505af1158015611ad2573d6000803e3d6000fd5b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561433057600080fd5b505af1158015614344573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061441a919060040161a530565b600060405180830381600087803b15801561443457600080fd5b505af1158015614448573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561450d57600080fd5b505af1158015614521573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506145f7919060040161a530565b600060405180830381600087803b15801561461157600080fd5b505af1158015614625573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561467957600080fd5b505af115801561468d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156146ea57600080fd5b505af11580156146fe573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b15801561483357600080fd5b505af1158015614847573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156148a457600080fd5b505af11580156148b8573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935061490c9290911690859060040161a663565b6000604051808303816000875af115801561492b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614953919081019061a76d565b5060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149ad57600080fd5b505af11580156149c1573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a1557600080fd5b505af1158015614a29573d6000803e3d6000fd5b50506021546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611c96916001600160a01b031690600090869060040161a5e0565b6060601580548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b600080604051602001614b23907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614b8a57600080fd5b505af1158015614b9e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016135e4565b604080516001808252818301909252600091816020015b6060815260200190600190039081614c295790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110614c8957614c8961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110614ccd57614ccd61a7a2565b6020908102919091010152604051600190600090614cf39085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614d9b916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015614db557600080fd5b505af1158015614dc9573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614e4257600080fd5b505af1158015614e56573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b1469350614e9d92506001600160a01b039091169087908790879061a83b565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614f1a57600080fd5b505af1158015614f2e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614f7490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612bfb565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b03163161501f816000615f8d565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561509457600080fd5b505af11580156150a8573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506150eb92506001600160a01b0390911690859061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561516857600080fd5b505af115801561517c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c91506151c990670de0b6b3a764000090869061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561522a57600080fd5b505af115801561523e573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792615292921690879060040161a663565b6000604051808303818588803b1580156152ab57600080fd5b505af11580156152bf573d6000803e3d6000fd5b50506021546001600160a01b0316319250610d5c9150829050670de0b6b3a7640000615f8d565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156153aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ce919061a5c7565b90506153db816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561542b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061544f919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161551d916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561553757600080fd5b505af115801561554b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905061561660028861a883565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156156c557600080fd5b505af11580156156d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90615724908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561578557600080fd5b505af1158015615799573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506157f69392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561581057600080fd5b505af1158015615824573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061589a919061a5c7565b90506158ab81611a4c60028961a883565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156158fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061591f919061a5c7565b905061285f8161593060028a61a883565b611a4c908761a637565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615997906000906001600160a01b031631615f8d565b60008484846040516024016159ae9392919061a8be565b60408051601f198184030181529181526020820180516001600160e01b03167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a5d916001600160a01b039190911690670de0b6b3a764000090869060040161a5e0565b600060405180830381600087803b158015615a7757600080fd5b505af1158015615a8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b0457600080fd5b505af1158015615b18573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350615b6192506001600160a01b0390911690859089908990899061a8e8565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615bde57600080fd5b505af1158015615bf2573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c3f90670de0b6b3a764000090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ca057600080fd5b505af1158015615cb4573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692615d08921690869060040161a663565b60006040518083038185885af1158015615d26573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d4f919081019061a76d565b50602154612cc49083906001600160a01b031631615f8d565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dc657600080fd5b505af1158015615dda573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615eb0919060040161a530565b600060405180830381600087803b158015615eca57600080fd5b505af1158015615ede573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015615f5a57600080fd5b505af1158015612cc4573d6000803e3d6000fd5b6000615f7861a0af565b615f8384848361600c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615ff857600080fd5b505afa158015610fd5573d6000803e3d6000fd5b6000806160198584616087565b905061607c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161606792919061a663565b60405160208183030381529060405285616093565b9150505b9392505050565b600061608083836160c1565b60c081015151600090156160b7576160b084848460c001516160dc565b9050616080565b6160b08484616282565b60006160cd838361636d565b61608083836020015184616093565b6000806160e7616379565b905060006160f5868361644c565b9050600061610c82606001518360200151856168f2565b9050600061611c83838989616b04565b9050600061612982617981565b602081015181519192509060030b1561619c5789826040015160405160200161615392919061a929565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526161939160040161a530565b60405180910390fd5b60006161df6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617b50565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061623290849060040161a530565b602060405180830381865afa15801561624f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616273919061a9aa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906162d790879060040161a530565b600060405180830381865afa1580156162f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261631c919081019061a76d565b9050600061634a828560405160200161633692919061a9d3565b604051602081830303815290604052617d50565b90506001600160a01b038116615f8357848460405160200161615392919061aa02565b611f7482826000617d63565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061640090849060040161aaad565b600060405180830381865afa15801561641d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616445919081019061aaf4565b9250505090565b61647e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164c96040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6164d285617e66565b602082015260006164e28661824b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616524573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261654c919081019061aaf4565b86838560200151604051602001616566949392919061ab3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906165be90859060040161a530565b600060405180830381865afa1580156165db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616603919081019061aaf4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061664b90849060040161ac41565b602060405180830381865afa158015616668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061668c919061a50e565b6166a15781604051602001616153919061ac93565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906166e690849060040161ad25565b600060405180830381865afa158015616703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261672b919081019061aaf4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061677290849060040161ad77565b602060405180830381865afa15801561678f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167b3919061a50e565b15616848576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906167fd90849060040161ad77565b600060405180830381865afa15801561681a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616842919081019061aaf4565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161686d919061adc9565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161689992919061ae35565b600060405180830381865afa1580156168b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168de919081019061aaf4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161690e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061696e5761696e61a7a2565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169c2576169c261a7a2565b6020026020010181905250846040516020016169de919061ae5a565b60405160208183030381529060405281600281518110616a0057616a0061a7a2565b602002602001018190525082604051602001616a1c919061aec6565b60405160208183030381529060405281600381518110616a3e57616a3e61a7a2565b60200260200101819052506000616a5482617981565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616ae590604080518082018252600080825260209182015281518083019092528451825280850190820152906184ce565b616afa5785604051602001616153919061af07565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616b54565b511590565b616cc857826020015115616c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616193565b8260c0015115616cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616193565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616ce157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616d3c9061af98565b935060ff1681518110616d5157616d5161a7a2565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616da2919061afb7565b604051602081830303815290604052828280616dbd9061af98565b935060ff1681518110616dd257616dd261a7a2565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616e1f9061af98565b935060ff1681518110616e3457616e3461a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616e819061af98565b935060ff1681518110616e9657616e9661a7a2565b60200260200101819052508760200151828280616eb29061af98565b935060ff1681518110616ec757616ec761a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616f149061af98565b935060ff1681518110616f2957616f2961a7a2565b602090810291909101015287518282616f418161af98565b935060ff1681518110616f5657616f5661a7a2565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616fa39061af98565b935060ff1681518110616fb857616fb861a7a2565b6020026020010181905250616fcc4661852f565b8282616fd78161af98565b935060ff1681518110616fec57616fec61a7a2565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806170399061af98565b935060ff168151811061704e5761704e61a7a2565b6020026020010181905250868282806170669061af98565b935060ff168151811061707b5761707b61a7a2565b60209081029190910101528551156171a25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826170cc8161af98565b935060ff16815181106170e1576170e161a7a2565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061713190899060040161a530565b600060405180830381865afa15801561714e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617176919081019061aaf4565b82826171818161af98565b935060ff16815181106171965761719661a7a2565b60200260200101819052505b8460200151156172725760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826171eb8161af98565b935060ff16815181106172005761720061a7a2565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061724d9061af98565b935060ff16815181106172625761726261a7a2565b6020026020010181905250617439565b6172aa616b4f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61733d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826172ed8161af98565b935060ff16815181106173025761730261a7a2565b60200260200101819052508460a00151604051602001617322919061ae5a565b60405160208183030381529060405282828061724d9061af98565b8460c0015115801561738057506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261737e90511590565b155b156174395760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173c48161af98565b935060ff16815181106173d9576173d961a7a2565b60200260200101819052506173ed886185cf565b6040516020016173fd919061ae5a565b6040516020818303038152906040528282806174189061af98565b935060ff168151811061742d5761742d61a7a2565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261746d90511590565b6175025760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826174b08161af98565b935060ff16815181106174c5576174c561a7a2565b602002602001018190525084604001518282806174e19061af98565b935060ff16815181106174f6576174f661a7a2565b60200260200101819052505b6060850151156176235760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261754b8161af98565b935060ff16815181106175605761756061a7a2565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156175cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175f7919081019061aaf4565b82826176028161af98565b935060ff16815181106176175761761761a7a2565b60200260200101819052505b60e085015151156176ca5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261766d8161af98565b935060ff16815181106176825761768261a7a2565b602002602001018190525061769e8560e001516000015161852f565b82826176a98161af98565b935060ff16815181106176be576176be61a7a2565b60200260200101819052505b60e085015160200151156177745760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826177178161af98565b935060ff168151811061772c5761772c61a7a2565b60200260200101819052506177488560e001516020015161852f565b82826177538161af98565b935060ff16815181106177685761776861a7a2565b60200260200101819052505b60e0850151604001511561781e5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177c18161af98565b935060ff16815181106177d6576177d661a7a2565b60200260200101819052506177f28560e001516040015161852f565b82826177fd8161af98565b935060ff16815181106178125761781261a7a2565b60200260200101819052505b60e085015160600151156178c85760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261786b8161af98565b935060ff16815181106178805761788061a7a2565b602002602001018190525061789c8560e001516060015161852f565b82826178a78161af98565b935060ff16815181106178bc576178bc61a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178e6576178e661a685565b60405190808252806020026020018201604052801561791957816020015b60608152602001906001900390816179045790505b50905060005b8260ff168160ff16101561797257838160ff16815181106179425761794261a7a2565b6020026020010151828260ff168151811061795f5761795f61a7a2565b602090810291909101015260010161791f565b5093505050505b949350505050565b6179a86040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617a2e9186910161b022565b600060405180830381865afa158015617a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a73919081019061aaf4565b90506000617a8186836190be565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617ab1919061a464565b6000604051808303816000875af1158015617ad0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617af8919081019061b069565b805190915060030b15801590617b115750602081015151155b8015617b205750604081015151155b15616afa5781600081518110617b3857617b3861a7a2565b6020026020010151604051602001616153919061b11f565b60606000617b858560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617bbc9082905b90619213565b15617d19576000617c3982617c3384617c2d617bff8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061923a565b9061929c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9d908290619213565b15617d0757604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d04905b8290619321565b90505b617d1081619347565b92505050616080565b8215617d3257848460405160200161615392919061b30b565b5050604080516020810190915260008152616080565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617d7257505050565b6000617d7f8484846193b0565b90506000617d8c82617981565b602081015181519192509060030b158015617e285750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2890604080518082018252600080825260209182015281518083019092528451825280850190820152617bb6565b15617e3557505050505050565b60408201515115617e55578160400151604051602001616153919061b3b2565b80604051602001616153919061b410565b60606000617e9b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f00905b82906184ce565b15617f6f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90839061994b565b619347565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fd1905b82906199d5565b60010361809e57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261803790617cfd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a905b8390619321565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180fd90617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618165908390619a6f565b905060008160018351618178919061a637565b815181106181885761818861a7a2565b6020026020010151905061822b617f6a6181fe6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061994b565b95945050505050565b82604051602001616153919061b47b565b50919050565b606060006182808360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182e290617ef9565b156182f05761608081619347565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261834f90617fca565b6001036183b957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90618097565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261841890617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618480908390619a6f565b90506001815111156184bc57806002825161849b919061a637565b815181106184ab576184ab61a7a2565b602002602001015192505050919050565b5082604051602001616153919061b47b565b8051825160009111156184e357506000615f87565b815183516020850151600092916184f99161b559565b618503919061a637565b90508260200151810361851a576001915050615f87565b82516020840151819020912014905092915050565b6060600061853c83619b14565b600101905060008167ffffffffffffffff81111561855c5761855c61a685565b6040519080825280601f01601f191660200182016040528015618586576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461859057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161865b905b8290619bf6565b1561869b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186fa90618654565b1561873a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261879990618654565b156187d957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883890618654565b8061889d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889d90618654565b156188dd57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261893c90618654565b806189a15750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189a190618654565b156189e157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4090618654565b80618aa55750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa590618654565b15618ae557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b4490618654565b80618ba95750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba990618654565b15618be957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c4890618654565b15618c8857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce790618654565b15618d2757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d8690618654565b15618dc657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e2590618654565b15618e6557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec490618654565b15618f0457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f6390618654565b80618fc85750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc890618654565b1561900857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261906790618654565b156190a757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616153929060200161b56c565b60608060005b845181101561914957818582815181106190e0576190e061a7a2565b60200260200101516040516020016190f992919061a9d3565b604051602081830303815290604052915060018551619118919061a637565b8114619141578160405160200161912f919061b6d5565b60405160208183030381529060405291505b6001016190c4565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619162579050509050838160008151811061918d5761918d61a7a2565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191e1576191e161a7a2565b602002602001018190525081816002815181106192005761920061a7a2565b6020908102919091010152949350505050565b60208083015183518351928401516000936192319291849190619c0a565b14159392505050565b6040805180820190915260008082526020820152600061926c8460000151856020015185600001518660200151619d1b565b905083602001518161927e919061a637565b8451859061928d90839061a637565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156192c1575081615f87565b60208083015190840151600191146192e85750815160208481015190840151829020919020145b8015619319578251845185906192ff90839061a637565b905250825160208501805161931590839061b559565b9052505b509192915050565b6040805180820190915260008082526020820152619340838383619e3b565b5092915050565b60606000826000015167ffffffffffffffff8111156193685761936861a685565b6040519080825280601f01601f191660200182016040528015619392576020820181803683370190505b50905060006020820190506193408185602001518660000151619ee6565b606060006193bc616379565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816193d957905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806194349061af98565b935060ff16815181106194495761944961a7a2565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161949a919061b716565b6040516020818303038152906040528282806194b59061af98565b935060ff16815181106194ca576194ca61a7a2565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806195179061af98565b935060ff168151811061952c5761952c61a7a2565b602002602001018190525082604051602001619548919061aec6565b6040516020818303038152906040528282806195639061af98565b935060ff16815181106195785761957861a7a2565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195c59061af98565b935060ff16815181106195da576195da61a7a2565b60200260200101819052506195ef8784619f60565b82826195fa8161af98565b935060ff168151811061960f5761960f61a7a2565b6020908102919091010152855151156196bb5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826196618161af98565b935060ff16815181106196765761967661a7a2565b602002602001018190525061968f866000015184619f60565b828261969a8161af98565b935060ff16815181106196af576196af61a7a2565b60200260200101819052505b8560800151156197295760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826197048161af98565b935060ff16815181106197195761971961a7a2565b602002602001018190525061978f565b841561978f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261976e8161af98565b935060ff16815181106197835761978361a7a2565b60200260200101819052505b6040860151511561982b5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197d98161af98565b935060ff16815181106197ee576197ee61a7a2565b6020026020010181905250856040015182828061980a9061af98565b935060ff168151811061981f5761981f61a7a2565b60200260200101819052505b8560600151156198955760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826198748161af98565b935060ff16815181106198895761988961a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198b3576198b361a685565b6040519080825280602002602001820160405280156198e657816020015b60608152602001906001900390816198d15790505b50905060005b8260ff168160ff16101561993f57838160ff168151811061990f5761990f61a7a2565b6020026020010151828260ff168151811061992c5761992c61a7a2565b60209081029190910101526001016198ec565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619970575081615f87565b815183516020850151600092916199869161b559565b619990919061a637565b602084015190915060019082146199b1575082516020840151819020908220145b80156199cc578351855186906199c890839061a637565b9052505b50929392505050565b60008082600001516199f98560000151866020015186600001518760200151619d1b565b619a03919061b559565b90505b83516020850151619a17919061b559565b81116193405781619a278161b75b565b9250508260000151619a5e856020015183619a42919061a637565b8651619a4e919061a637565b8386600001518760200151619d1b565b619a68919061b559565b9050619a06565b60606000619a7d84846199d5565b619a8890600161b559565b67ffffffffffffffff811115619aa057619aa061a685565b604051908082528060200260200182016040528015619ad357816020015b6060815260200190600190039081619abe5790505b50905060005b8151811015617d4857619aef617f6a8686619321565b828281518110619b0157619b0161a7a2565b6020908102919091010152600101619ad9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619b5d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619b89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619ba757662386f26fc10000830492506010015b6305f5e1008310619bbf576305f5e100830492506008015b6127108310619bd357612710830492506004015b60648310619be5576064830492506002015b600a8310615f875760010192915050565b6000619c028383619fa0565b159392505050565b600080858411619d115760208411619cbd5760008415619c55576001619c3186602061a637565b619c3c90600861b775565b619c4790600261b873565b619c51919061a637565b1990505b8351811685619c64898961b559565b619c6e919061a637565b805190935082165b818114619ca857878411619c905787945050505050617979565b83619c9a8161b87f565b945050828451169050619c76565b619cb2878561b559565b945050505050617979565b838320619cca858861a637565b619cd4908761b559565b91505b858210619d0f57848220808203619cfc57619cf2868461b559565b9350505050617979565b619d0760018461a637565b925050619cd7565b505b5092949350505050565b60008381868511619e265760208511619dd55760008515619d67576001619d4387602061a637565b619d4e90600861b775565b619d5990600261b873565b619d63919061a637565b1990505b84518116600087619d788b8b61b559565b619d82919061a637565b855190915083165b828114619dc757818610619daf57619da28b8b61b559565b9650505050505050617979565b85619db98161b75b565b965050838651169050619d8a565b859650505050505050617979565b508383206000905b619de7868961a637565b8211619e2457858320808203619e035783945050505050617979565b619e0e60018561b559565b9350508180619e1c9061b75b565b925050619ddd565b505b619e30878761b559565b979650505050505050565b60408051808201909152600080825260208201526000619e6d8560000151866020015186600001518760200151619d1b565b602080870180519186019190915251909150619e89908261a637565b835284516020860151619e9c919061b559565b8103619eab5760008552619edd565b83518351619eb9919061b559565b85518690619ec890839061a637565b9052508351619ed7908261b559565b60208601525b50909392505050565b60208110619f1e5781518352619efd60208461b559565b9250619f0a60208361b559565b9150619f1760208261a637565b9050619ee6565b6000198115619f4d576001619f3483602061a637565b619f409061010061b873565b619f4a919061a637565b90505b9151835183169219169190911790915250565b60606000619f6e848461644c565b8051602080830151604051939450619f889390910161b896565b60405160208183030381529060405291505092915050565b8151815160009190811115619fb3575081515b6020808501519084015160005b8381101561a06c578251825180821461a03c57600019602087101561a01b57600184619fed89602061a637565b619ff7919061b559565b61a00290600861b775565b61a00d90600261b873565b61a017919061a637565b1990505b818116838216818103911461a039579750615f879650505050505050565b50505b61a04760208661b559565b945061a05460208561b559565b9350505060208161a065919061b559565b9050619fc0565b5084518651616afa919061b8ee565b610c9f8061b90f83390190565b6113e28061c5ae83390190565b61182a8061d99083390190565b610d5e8061f1ba83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a0f261a0f7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0f26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1a95783516001600160a01b031683526020938401939092019160010161a182565b509095945050505050565b60005b8381101561a1cf57818101518382015260200161a1b7565b50506000910152565b6000815180845261a1f081602086016020860161a1b4565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a2e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a2d084865161a1d8565b602095860195909450929092019160010161a296565b50919750505060209485019492909201915060010161a22c565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a3605781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a320565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a3d6604088018261a1d8565b905060208201519150868103602088015261a3f1818361a30c565b96505050602093840193919091019060010161a392565b600082825180855260208501945060208160051b8301016020850160005b8381101561a45857601f1985840301885261a44283835161a1d8565b602098890198909350919091019060010161a426565b50909695505050505050565b602081526000616080602083018461a408565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a4f8604087018261a30c565b955050602093840193919091019060010161a49f565b60006020828403121561a52057600080fd5b8151801515811461608057600080fd5b602081526000616080602083018461a1d8565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616afa608083018461a1d8565b600181811c9082168061a58e57607f821691505b602082108103618245577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561a5d957600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061822b606083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615f8757615f8761a608565b828152604060208201526000617979604083018461a1d8565b6001600160a01b0383168152604060208201526000617979604083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561a6d75761a6d761a685565b60405290565b60008067ffffffffffffffff84111561a6f85761a6f861a685565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a7275761a72761a685565b60405283815290508082840185101561a73f57600080fd5b617d4884602083018561a1b4565b600082601f83011261a75e57600080fd5b6160808383516020850161a6dd565b60006020828403121561a77f57600080fd5b815167ffffffffffffffff81111561a79657600080fd5b615f838482850161a74d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a36057815186526020958601959091019060010161a7e5565b60608152600061a816606083018661a408565b828103602084015261a828818661a7d1565b9150508215156040830152949350505050565b6001600160a01b038516815260806020820152600061a85d608083018661a408565b828103604084015261a86f818661a7d1565b915050821515606083015295945050505050565b60008261a8b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60608152600061a8d1606083018661a1d8565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061a91060a083018661a1d8565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a96181601a85016020880161a1b4565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a99e81601c84016020880161a1b4565b01601c01949350505050565b60006020828403121561a9bc57600080fd5b81516001600160a01b038116811461608057600080fd5b6000835161a9e581846020880161a1b4565b83519083019061a9f981836020880161a1b4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aa3a81601a85016020880161a1b4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aa7781603384016020880161a1b4565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561ab0657600080fd5b815167ffffffffffffffff81111561ab1d57600080fd5b8201601f8101841361ab2e57600080fd5b615f838482516020840161a6dd565b6000855161ab4f818460208a0161a1b4565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ab89816001840160208a0161a1b4565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161abc781600284016020890161a1b4565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac0981600284016020880161a1b4565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ac54604083018461a1d8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161accb81601f85016020870161a1b4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061ad38604083018461a1d8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ad8a604083018461a1d8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae0181601485016020870161a1b4565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061ae48604083018561a1d8565b828103602084015261607c818561a1d8565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161ae9281600185016020870161a1b4565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aed881846020870161a1b4565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161af8b81604b85016020870161a1b4565b91909101604b0192915050565b600060ff821660ff810361afae5761afae61a608565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561b07b57600080fd5b815167ffffffffffffffff81111561b09257600080fd5b82016060818503121561b0a457600080fd5b61b0ac61a6b4565b81518060030b811461b0bd57600080fd5b8152602082015167ffffffffffffffff81111561b0d957600080fd5b61b0e58682850161a74d565b602083015250604082015167ffffffffffffffff81111561b10557600080fd5b61b1118682850161a74d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b17d81602185016020870161a1b4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b36981602185016020880161a1b4565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b3a681602e84016020880161a1b4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b46e81602285016020870161a1b4565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b4b381600e85016020870161a1b4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615f8757615f8761a608565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b5a481601885016020880161a1b4565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b5e181601c84016020880161a1b4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b6e781846020870161a1b4565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b74e81601c85016020870161a1b4565b91909101601c0192915050565b6000600019820361b76e5761b76e61a608565b5060010190565b8082028115828204841417615f8757615f8761a608565b6001815b600184111561b7c75780850481111561b7ab5761b7ab61a608565b600184161561b7b957908102905b60019390931c92800261b790565b935093915050565b60008261b7de57506001615f87565b8161b7eb57506000615f87565b816001811461b801576002811461b80b5761b827565b6001915050615f87565b60ff84111561b81c5761b81c61a608565b50506001821b615f87565b5060208310610133831016604e8410600b841016171561b84a575081810a615f87565b61b857600019848461b78c565b806000190482111561b86b5761b86b61a608565b029392505050565b6000616080838361b7cf565b60008161b88e5761b88e61a608565b506000190190565b6000835161b8a881846020880161a1b4565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b8e281600184016020880161a1b4565b01600101949350505050565b81810360008312801583831316838312821617156193405761934061a60856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212203c84eed415f53c6b73679bdd3c1ebe23a4c98cf0abb3f4090db80e6ae1ff633164736f6c634300081a0033", } // GatewayEVMTestABI is the input ABI used to generate the binding from. @@ -220,6 +220,37 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorRaw) Transact(opts *bind.Transact return _GatewayEVMTest.Contract.contract.Transact(opts, method, params...) } +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCaller) ASSETHANDLERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "ASSET_HANDLER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.ASSETHANDLERROLE(&_GatewayEVMTest.CallOpts) +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.ASSETHANDLERROLE(&_GatewayEVMTest.CallOpts) +} + // ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. // // Solidity: function IS_TEST() view returns(bool) @@ -251,6 +282,99 @@ func (_GatewayEVMTest *GatewayEVMTestCallerSession) ISTEST() (bool, error) { return _GatewayEVMTest.Contract.ISTEST(&_GatewayEVMTest.CallOpts) } +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.PAUSERROLE(&_GatewayEVMTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.PAUSERROLE(&_GatewayEVMTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCaller) TSSROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "TSS_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.TSSROLE(&_GatewayEVMTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.TSSROLE(&_GatewayEVMTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMTest.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestSession) WITHDRAWERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.WITHDRAWERROLE(&_GatewayEVMTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_GatewayEVMTest *GatewayEVMTestCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _GatewayEVMTest.Contract.WITHDRAWERROLE(&_GatewayEVMTest.CallOpts) +} + // ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. // // Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) @@ -718,25 +842,25 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceive return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) } -// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x0eee72a9. // -// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS") +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer") } -// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x0eee72a9. // -// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } -// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x9620d7ed. +// TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x0eee72a9. // -// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } // TestForwardCallToReceiveERC20ThroughCustody is a paid mutator transaction binding the contract method 0xcbd57e2f. @@ -781,25 +905,25 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceive return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) } -// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x3ee92923. // -// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS") +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer") } -// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x3ee92923. // -// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } -// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xd46e9b57. +// TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x3ee92923. // -// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } // TestForwardCallToReceiveNoParams is a paid mutator transaction binding the contract method 0x44671b94. @@ -844,6 +968,27 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceive return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParamsThroughCustody(&_GatewayEVMTest.TransactOpts) } +// TestForwardCallToReceiveNoParamsTogglePause is a paid mutator transaction binding the contract method 0xdd51e82f. +// +// Solidity: function testForwardCallToReceiveNoParamsTogglePause() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestForwardCallToReceiveNoParamsTogglePause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testForwardCallToReceiveNoParamsTogglePause") +} + +// TestForwardCallToReceiveNoParamsTogglePause is a paid mutator transaction binding the contract method 0xdd51e82f. +// +// Solidity: function testForwardCallToReceiveNoParamsTogglePause() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestForwardCallToReceiveNoParamsTogglePause() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParamsTogglePause(&_GatewayEVMTest.TransactOpts) +} + +// TestForwardCallToReceiveNoParamsTogglePause is a paid mutator transaction binding the contract method 0xdd51e82f. +// +// Solidity: function testForwardCallToReceiveNoParamsTogglePause() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestForwardCallToReceiveNoParamsTogglePause() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestForwardCallToReceiveNoParamsTogglePause(&_GatewayEVMTest.TransactOpts) +} + // TestForwardCallToReceiveNonPayable is a paid mutator transaction binding the contract method 0xf68bd1c0. // // Solidity: function testForwardCallToReceiveNonPayable() returns() @@ -970,25 +1115,25 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThr return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfAmountIs0(&_GatewayEVMTest.TransactOpts) } -// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xa4943deb. // -// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMTest.contract.Transact(opts, "testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer") } -// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xa4943deb. // -// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } -// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0xbcd9925e. +// TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xa4943deb. // -// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } // TestWithdrawThroughCustody is a paid mutator transaction binding the contract method 0x3e73ecb4. @@ -1012,25 +1157,25 @@ func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawThroughCusto return _GatewayEVMTest.Contract.TestWithdrawThroughCustody(&_GatewayEVMTest.TransactOpts) } -// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe8e5f1b. // -// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMTest.contract.Transact(opts, "testWithdrawThroughCustodyFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactor) TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMTest.contract.Transact(opts, "testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer") } -// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe8e5f1b. // -// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestSession) TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } -// TestWithdrawThroughCustodyFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x766d0ded. +// TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe8e5f1b. // -// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() returns() -func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawThroughCustodyFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotTSS(&_GatewayEVMTest.TransactOpts) +// Solidity: function testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() returns() +func (_GatewayEVMTest *GatewayEVMTestTransactorSession) TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _GatewayEVMTest.Contract.TestWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer(&_GatewayEVMTest.TransactOpts) } // GatewayEVMTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the GatewayEVMTest contract. diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go index e708d1ac..13ef7da5 100644 --- a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -31,8 +31,8 @@ var ( // GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea2646970667358221220b5cf128d245bfd684061b748e4a87779c3ff73a03bfe1b652838b47b6abf465b64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f8061324883390190565b6113e280613ee783390190565b608051612fff61024960003960008181611d3301528181611d5c01526121a50152612fff6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b506102596102543660046129e9565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612a47565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612aab565b6108f3565b6102c36102be366004612aab565b61094d565b6040516102659190612b6c565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612b7f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612aab565b6109de565b34801561038457600080fd5b5061028e610393366004612b98565b610b0b565b61028e6103a6366004612aab565b610b55565b3480156103b757600080fd5b5061028e6103c6366004612b98565b610cdc565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610d2d565b61028e61040e366004612bf3565b610d62565b34801561041f57600080fd5b5061028e61042e366004612cfa565b610d81565b34801561043f57600080fd5b5061035761105e565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612d69565b61108d565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6111b8565b34801561055457600080fd5b5061028e610563366004612dc3565b6111ea565b34801561057457600080fd5b50610259610583366004612b98565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612a47565b61128f565b34801561068b57600080fd5b5061028e61069a366004612cfa565b611383565b3480156106ab57600080fd5b5061028e6106ba366004612e15565b6114fd565b3480156106cb57600080fd5b5061028e6106da366004612b98565b6117b2565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612a47565b6117f6565b34801561075257600080fd5b5061028e610761366004612e58565b611923565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a816119d6565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611acd565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610940929190612ed4565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610979816119d6565b610981611acd565b600061098e868686611b2b565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3487876040516109cd93929190612ef0565b60405180910390a295945050505050565b6109e6611acd565b34600003610a20576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a6d576040519150601f19603f3d011682016040523d82523d6000602084013e610a72565b606091505b5090915050801515600003610ab3576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610afd9493929190612f0a565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b45816119d6565b610b4f83836119e0565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b7f816119d6565b610b87611acd565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c16576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610c5d9088908890600401612ed4565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610ccc93929190612ef0565b60405180910390a2505050505050565b6001600160a01b0381163314610d1e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d288282611bd4565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d57816119d6565b610d5f611c98565b50565b610d6a611d28565b610d7382611df8565b610d7d8282611e03565b5050565b610d89611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610db3816119d6565b610dbb611acd565b83600003610df5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8686611fa8565b610e35576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec19190612f33565b610ef7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f04868585611b2b565b9050610f108787611fa8565b610f46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190612f55565b90508015610fdc57610fdc8882612038565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161102393929190612ef0565b60405180910390a350505061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b600061106861219a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b505060045461112592506001600160a01b0316905085858585610d81565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612f55565b15610b4f57610b4f612f6e565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111e2816119d6565b610d5f6121fc565b6111f2611acd565b8360000361122c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611237338486612275565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516112809493929190612f0a565b60405180910390a35050505050565b600061129a816119d6565b6000546001600160a01b0316156112dd576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661131d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113477f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61138b611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96113b5816119d6565b6113bd611acd565b836000036113f7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6001600160a01b03871686866123c9565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906114529086908690600401612ed4565b600060405180830381600087803b15801561146c57600080fd5b505af1158015611480573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516114cb93929190612ef0565b60405180910390a35061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115485750825b905060008267ffffffffffffffff1660011480156115655750303b155b905081158015611573575080155b156115aa576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561160b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061162857506001600160a01b038716155b1561165f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166761243d565b61166f612445565b61167761243d565b61167f612455565b61168a6000876119e0565b506116b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876119e0565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556117137f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896119e0565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117a85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546117ec816119d6565b610b4f8383611bd4565b6117fe611acd565b34600003611838576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611885576040519150601f19603f3d011682016040523d82523d6000602084013e61188a565b606091505b50909150508015156000036118cb576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61192b611acd565b81600003611965576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611970338284612275565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109409291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d5f8133612465565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ac3576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611a793390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b29576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b0316348686604051611b4b929190612f9d565b60006040518083038185875af1925050503d8060008114611b88576040519150601f19603f3d011682016040523d82523d6000602084013e611b8d565b606091505b509150915081611bc9576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ac3576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611ca06124f2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dc157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611db57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d7d816119d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e7b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7891810190612f55565b60015b611ec1576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f1d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611eb8565b610d28838361254d565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611fa2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612f33565b6003546001600160a01b039081169083160361215a576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de9190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561213e57600080fd5b505af1158015612152573d6000803e3d6000fd5b505050505050565b600054610d7d906001600160a01b038481169116836123c9565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612204611acd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d0a565b6003546001600160a01b03908116908316036123ad576122a06001600160a01b0383168430846125a3565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561230c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123309190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b50505050505050565b600054610d28906001600160a01b0384811691869116846125a3565b6040516001600160a01b03838116602483015260448201839052610d2891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125dc565b611b29612658565b61244d612658565b611b296126bf565b61245d612658565b611b296126c7565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d7d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611eb8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b29576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255682612718565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561259b57610d2882826127c0565b610d7d612836565b6040516001600160a01b038481166024830152838116604483015260648201839052610b4f9186918216906323b872dd906084016123f6565b60006125f16001600160a01b0384168361286e565b905080516000141580156126165750808060200190518101906126149190612f33565b155b15610d28576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611eb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b29576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612174612658565b6126cf612658565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612767576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127dd9190612fad565b600060405180830381855af49150503d8060008114612818576040519150601f19603f3d011682016040523d82523d6000602084013e61281d565b606091505b509150915061282d85838361287c565b95945050505050565b3415611b29576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611bcd838360006128f1565b6060826128915761288c826129a7565b611bcd565b81511580156128a857506001600160a01b0384163b155b156128ea576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611eb8565b5080611bcd565b60608147101561292f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611eb8565b600080856001600160a01b0316848660405161294b9190612fad565b60006040518083038185875af1925050503d8060008114612988576040519150601f19603f3d011682016040523d82523d6000602084013e61298d565b606091505b509150915061299d86838361287c565b9695505050505050565b8051156129b75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129fb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bcd57600080fd5b80356001600160a01b0381168114612a4257600080fd5b919050565b600060208284031215612a5957600080fd5b611bcd82612a2b565b60008083601f840112612a7457600080fd5b50813567ffffffffffffffff811115612a8c57600080fd5b602083019150836020828501011115612aa457600080fd5b9250929050565b600080600060408486031215612ac057600080fd5b612ac984612a2b565b9250602084013567ffffffffffffffff811115612ae557600080fd5b612af186828701612a62565b9497909650939450505050565b60005b83811015612b19578181015183820152602001612b01565b50506000910152565b60008151808452612b3a816020860160208601612afe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bcd6020830184612b22565b600060208284031215612b9157600080fd5b5035919050565b60008060408385031215612bab57600080fd5b82359150612bbb60208401612a2b565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612c0657600080fd5b612c0f83612a2b565b9150602083013567ffffffffffffffff811115612c2b57600080fd5b8301601f81018513612c3c57600080fd5b803567ffffffffffffffff811115612c5657612c56612bc4565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612cc257612cc2612bc4565b604052818152828201602001871015612cda57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612d1257600080fd5b612d1b86612a2b565b9450612d2960208701612a2b565b935060408601359250606086013567ffffffffffffffff811115612d4c57600080fd5b612d5888828901612a62565b969995985093965092949392505050565b60008060008060608587031215612d7f57600080fd5b612d8885612a2b565b935060208501359250604085013567ffffffffffffffff811115612dab57600080fd5b612db787828801612a62565b95989497509550505050565b600080600080600060808688031215612ddb57600080fd5b612de486612a2b565b945060208601359350612df960408701612a2b565b9250606086013567ffffffffffffffff811115612d4c57600080fd5b600080600060608486031215612e2a57600080fd5b612e3384612a2b565b9250612e4160208501612a2b565b9150612e4f60408501612a2b565b90509250925092565b600080600060608486031215612e6d57600080fd5b612e7684612a2b565b925060208401359150612e4f60408501612a2b565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ee8602083018486612e8b565b949350505050565b83815260406020820152600061282d604083018486612e8b565b8481526001600160a01b038416602082015260606040820152600061299d606083018486612e8b565b600060208284031215612f4557600080fd5b81518015158114611bcd57600080fd5b600060208284031215612f6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b60008251612fbf818460208701612afe565b919091019291505056fea2646970667358221220e575ea5a18b9462f7a8e597ab970f6a09ecc09fd51c56fa3c6c1397f89f20af164736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033", } // GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. @@ -202,6 +202,130 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorRaw) Transact(opts return _GatewayEVMEchidnaTest.Contract.contract.Transact(opts, method, params...) } +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) ASSETHANDLERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "ASSET_HANDLER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.ASSETHANDLERROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.ASSETHANDLERROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.DEFAULTADMINROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.DEFAULTADMINROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.PAUSERROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.PAUSERROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) TSSROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "TSS_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.TSSROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.TSSROLE(&_GatewayEVMEchidnaTest.CallOpts) +} + // UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // // Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) @@ -295,35 +419,97 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) EchidnaCaller( return _GatewayEVMEchidnaTest.Contract.EchidnaCaller(&_GatewayEVMEchidnaTest.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} - err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "owner") + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "getRoleAdmin", role) if err != nil { - return *new(common.Address), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.GetRoleAdmin(&_GatewayEVMEchidnaTest.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVMEchidnaTest.Contract.GetRoleAdmin(&_GatewayEVMEchidnaTest.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVMEchidnaTest.Contract.HasRole(&_GatewayEVMEchidnaTest.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVMEchidnaTest.Contract.HasRole(&_GatewayEVMEchidnaTest.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Owner() (common.Address, error) { - return _GatewayEVMEchidnaTest.Contract.Owner(&_GatewayEVMEchidnaTest.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Paused() (bool, error) { + return _GatewayEVMEchidnaTest.Contract.Paused(&_GatewayEVMEchidnaTest.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) Owner() (common.Address, error) { - return _GatewayEVMEchidnaTest.Contract.Owner(&_GatewayEVMEchidnaTest.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) Paused() (bool, error) { + return _GatewayEVMEchidnaTest.Contract.Paused(&_GatewayEVMEchidnaTest.CallOpts) } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -357,6 +543,37 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) ProxiableUUID( return _GatewayEVMEchidnaTest.Contract.ProxiableUUID(&_GatewayEVMEchidnaTest.CallOpts) } +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _GatewayEVMEchidnaTest.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVMEchidnaTest.Contract.SupportsInterface(&_GatewayEVMEchidnaTest.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVMEchidnaTest.Contract.SupportsInterface(&_GatewayEVMEchidnaTest.CallOpts, interfaceId) +} + // TestERC20 is a free data retrieval call binding the contract method 0x3c2f05a8. // // Solidity: function testERC20() view returns(address) @@ -649,46 +866,88 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) ExecuteWit return _GatewayEVMEchidnaTest.Contract.ExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.GrantRole(&_GatewayEVMEchidnaTest.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.GrantRole(&_GatewayEVMEchidnaTest.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "pause") } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Pause() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Pause(&_GatewayEVMEchidnaTest.TransactOpts) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Pause() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Pause(&_GatewayEVMEchidnaTest.TransactOpts) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "renounceOwnership") +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "renounceRole", role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.RenounceOwnership(&_GatewayEVMEchidnaTest.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RenounceRole(&_GatewayEVMEchidnaTest.TransactOpts, role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.RenounceOwnership(&_GatewayEVMEchidnaTest.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RenounceRole(&_GatewayEVMEchidnaTest.TransactOpts, role, callerConfirmation) } // RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. @@ -712,6 +971,27 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RevertWith return _GatewayEVMEchidnaTest.Contract.RevertWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, token, to, amount, data) } +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RevokeRole(&_GatewayEVMEchidnaTest.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.RevokeRole(&_GatewayEVMEchidnaTest.TransactOpts, role, account) +} + // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // // Solidity: function setConnector(address _zetaConnector) returns() @@ -775,25 +1055,25 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) TestExecut return _GatewayEVMEchidnaTest.Contract.TestExecuteWithERC20(&_GatewayEVMEchidnaTest.TransactOpts, to, amount, data) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "transferOwnership", newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "unpause") } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.TransferOwnership(&_GatewayEVMEchidnaTest.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Unpause() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Unpause(&_GatewayEVMEchidnaTest.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.TransferOwnership(&_GatewayEVMEchidnaTest.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Unpause() (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Unpause(&_GatewayEVMEchidnaTest.TransactOpts) } // UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. @@ -1562,9 +1842,9 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseInitialized(lo return event, nil } -// GatewayEVMEchidnaTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVMEchidnaTest contract. -type GatewayEVMEchidnaTestOwnershipTransferredIterator struct { - Event *GatewayEVMEchidnaTestOwnershipTransferred // Event containing the contract specifics and raw log +// GatewayEVMEchidnaTestPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestPausedIterator struct { + Event *GatewayEVMEchidnaTestPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1578,7 +1858,7 @@ type GatewayEVMEchidnaTestOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Next() bool { +func (it *GatewayEVMEchidnaTestPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1587,7 +1867,7 @@ func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayEVMEchidnaTestOwnershipTransferred) + it.Event = new(GatewayEVMEchidnaTestPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1602,7 +1882,7 @@ func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayEVMEchidnaTestOwnershipTransferred) + it.Event = new(GatewayEVMEchidnaTestPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1618,60 +1898,41 @@ func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Error() error { +func (it *GatewayEVMEchidnaTestPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayEVMEchidnaTestOwnershipTransferredIterator) Close() error { +func (it *GatewayEVMEchidnaTestPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayEVMEchidnaTestOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVMEchidnaTest contract. -type GatewayEVMEchidnaTestOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// GatewayEVMEchidnaTestPaused represents a Paused event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMEchidnaTestOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterPaused(opts *bind.FilterOpts) (*GatewayEVMEchidnaTestPausedIterator, error) { - logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &GatewayEVMEchidnaTestOwnershipTransferredIterator{contract: _GatewayEVMEchidnaTest.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &GatewayEVMEchidnaTestPausedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestPaused) (event.Subscription, error) { - logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -1681,8 +1942,8 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchOwnershipTrans select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GatewayEVMEchidnaTestOwnershipTransferred) - if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(GatewayEVMEchidnaTestPaused) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -1703,12 +1964,12 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchOwnershipTrans }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMEchidnaTestOwnershipTransferred, error) { - event := new(GatewayEVMEchidnaTestOwnershipTransferred) - if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Paused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParsePaused(log types.Log) (*GatewayEVMEchidnaTestPaused, error) { + event := new(GatewayEVMEchidnaTestPaused) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log @@ -2016,6 +2277,626 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseRevertedWithER return event, nil } +// GatewayEVMEchidnaTestRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleAdminChangedIterator struct { + Event *GatewayEVMEchidnaTestRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestRoleAdminChanged represents a RoleAdminChanged event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*GatewayEVMEchidnaTestRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestRoleAdminChangedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestRoleAdminChanged) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseRoleAdminChanged(log types.Log) (*GatewayEVMEchidnaTestRoleAdminChanged, error) { + event := new(GatewayEVMEchidnaTestRoleAdminChanged) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleGrantedIterator struct { + Event *GatewayEVMEchidnaTestRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestRoleGranted represents a RoleGranted event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMEchidnaTestRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestRoleGrantedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestRoleGranted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseRoleGranted(log types.Log) (*GatewayEVMEchidnaTestRoleGranted, error) { + event := new(GatewayEVMEchidnaTestRoleGranted) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleRevokedIterator struct { + Event *GatewayEVMEchidnaTestRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestRoleRevoked represents a RoleRevoked event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMEchidnaTestRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestRoleRevokedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestRoleRevoked) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseRoleRevoked(log types.Log) (*GatewayEVMEchidnaTestRoleRevoked, error) { + event := new(GatewayEVMEchidnaTestRoleRevoked) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMEchidnaTestUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestUnpausedIterator struct { + Event *GatewayEVMEchidnaTestUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMEchidnaTestUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMEchidnaTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMEchidnaTestUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMEchidnaTestUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMEchidnaTestUnpaused represents a Unpaused event raised by the GatewayEVMEchidnaTest contract. +type GatewayEVMEchidnaTestUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GatewayEVMEchidnaTestUnpausedIterator, error) { + + logs, sub, err := _GatewayEVMEchidnaTest.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GatewayEVMEchidnaTestUnpausedIterator{contract: _GatewayEVMEchidnaTest.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMEchidnaTestUnpaused) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMEchidnaTest.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMEchidnaTestUnpaused) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestFilterer) ParseUnpaused(log types.Log) (*GatewayEVMEchidnaTestUnpaused, error) { + event := new(GatewayEVMEchidnaTestUnpaused) + if err := _GatewayEVMEchidnaTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // GatewayEVMEchidnaTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVMEchidnaTest contract. type GatewayEVMEchidnaTestUpgradedIterator struct { Event *GatewayEVMEchidnaTestUpgraded // Event containing the contract specifics and raw log diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go index b28a89e2..94f0e9a1 100644 --- a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061add18061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a5d565b60405161010e91906161e3565b60405180910390f35b61011f610abf565b60405161010e919061627f565b610101610c01565b610101610c61565b610144610cc1565b60405161010e91906163e5565b6100f7610e43565b610161611505565b60405161010e9190616483565b6101766115d5565b60405161010e91906164fa565b6101766116d0565b6101616117cb565b61019b61189b565b604051901515815260200161010e565b61010161196f565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051610212906160f6565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc906160f6565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260285491519190931660248201526044810191909152610446919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526119cf565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906104ca90616103565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104fd573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061055290616110565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561058e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105d39061611d565b604051809103906000f0801580156105ef573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190616591565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ab557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a97575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bf857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382906000526020600020018054610b54906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b80906165b3565b8015610bcd5780601f10610ba257610100808354040283529160200191610bcd565b820191906000526020600020905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b35565b505050508152505081526020019060010190610ae3565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bf85783829060005260206000209060020201604051806040016040529081600082018054610d18906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d44906165b3565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610dd85790505b50505050508152505081526020019060010190610ce5565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190616600565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190616600565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093610ffb936001600160a01b0361010090930483169392166119ee565b600084848460405160240161101293929190616629565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926110d89291169087908790600401616653565b600060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506111f592506001600160a01b039091169086908a908a908a9061667b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506112e490869086906166bc565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113c49291169087906004016166d5565b60006040518083038185885af11580156113e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261140b91908101906167df565b5060208054604080517fdda79b750000000000000000000000000000000000000000000000000000000081529051611498938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114939190616600565b611a0a565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290516114fb938b936001600160a01b031692635b11259192600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bf8578382906000526020600020018054611548906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611574906165b3565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b505050505081526020019060010190611529565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116b857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116116655790505b505050505081525050815260200190600101906115f9565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117b357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117605790505b505050505081525050815260200190600101906116f4565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bf857838290600052602060002001805461180e906165b3565b80601f016020809104026020016040519081016040528092919081815260200182805461183a906165b3565b80156118875780601f1061185c57610100808354040283529160200191611887565b820191906000526020600020905b81548152906001019060200180831161186a57829003601f168201915b5050505050815260200190600101906117ef565b60085460009060ff16156118b3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190616814565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60006119d961612a565b6119e4848483611a9a565b9150505b92915050565b6119f661612a565b611a038585858486611b15565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050505050565b600080611aa78584611c16565b9050611b0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611af59291906166d5565b60405160208183030381529060405285611c22565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611b8757600080fd5b505af1925050508015611b98575060015b611bad57611ba887878787611c50565b611c0d565b611bb987878787611c50565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050505b50505050505050565b6000611b0e8383611c69565b60c08101515160009015611c4657611c3f84848460c00151611c84565b9050611b0e565b611c3f8484611e2a565b6000611c5c8483611f15565b9050611a03858285611f21565b6000611c7583836122eb565b611b0e83836020015184611c22565b600080611c8f6122fb565b90506000611c9d86836123ce565b90506000611cb48260600151836020015185612874565b90506000611cc483838989612a86565b90506000611cd182613903565b602081015181519192509060030b15611d4457898260400151604051602001611cfb92919061682d565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d3b916004016168ae565b60405180910390fd5b6000611d876040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613ad2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611dda9084906004016168ae565b602060405180830381865afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190616600565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611e7f9087906004016168ae565b600060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ec491908101906167df565b90506000611ef28285604051602001611ede9291906168c1565b604051602081830303815290604052613cd2565b90506001600160a01b0381166119e4578484604051602001611cfb9291906168f0565b6000611c758383613ce5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190616814565b905080612188576000611ff386613cf1565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061207e905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613dde565b8061208a575060008451115b1561210d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120d690889088906004016166d5565b600060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b50505050612182565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050505b50611a03565b80600061219482613cf1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506121f690612051565b80612202575060008551115b15612287576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612250908a908a908a9060040161699b565b600060405180830381600087803b15801561226a57600080fd5b505af115801561227e573d6000803e3d6000fd5b50505050611c0d565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611bf457600080fd5b6122f782826000613df2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123829084906004016169cc565b600060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c79190810190616a13565b9250505090565b6124006040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061244b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61245485613ef5565b60208201526000612464866142da565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ce9190810190616a13565b868385602001516040516020016124e89493929190616a5c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125409085906004016168ae565b600060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125859190810190616a13565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125cd908490600401616b60565b602060405180830381865afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616591565b6126235781604051602001611cfb9190616bb2565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612668908490600401616c44565b600060405180830381865afa158015612685573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126ad9190810190616a13565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906126f4908490600401616c96565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190616591565b156127ca576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061277f908490600401616c96565b600060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c49190810190616a13565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016127ef9190616ce8565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161281b929190616d54565b600060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128609190810190616a13565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128905790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106128f0576128f0616d79565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061294457612944616d79565b6020026020010181905250846040516020016129609190616da8565b6040516020818303038152906040528160028151811061298257612982616d79565b60200260200101819052508260405160200161299e9190616e14565b604051602081830303815290604052816003815181106129c0576129c0616d79565b602002602001018190525060006129d682613903565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a67906040805180820182526000808252602091820152815180830190925284518252808501908201529061455d565b612a7c5785604051602001611cfb9190616e55565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612ad6565b511590565b612c4a57826020015115612b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d3b565b8260c0015115612c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d3b565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c6357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612cbe90616f15565b935060ff1681518110612cd357612cd3616d79565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d249190616f34565b604051602081830303815290604052828280612d3f90616f15565b935060ff1681518110612d5457612d54616d79565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612da190616f15565b935060ff1681518110612db657612db6616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e0390616f15565b935060ff1681518110612e1857612e18616d79565b60200260200101819052508760200151828280612e3490616f15565b935060ff1681518110612e4957612e49616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612e9690616f15565b935060ff1681518110612eab57612eab616d79565b602090810291909101015287518282612ec381616f15565b935060ff1681518110612ed857612ed8616d79565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f2590616f15565b935060ff1681518110612f3a57612f3a616d79565b6020026020010181905250612f4e466145be565b8282612f5981616f15565b935060ff1681518110612f6e57612f6e616d79565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fbb90616f15565b935060ff1681518110612fd057612fd0616d79565b602002602001018190525086828280612fe890616f15565b935060ff1681518110612ffd57612ffd616d79565b60209081029190910101528551156131245760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261304e81616f15565b935060ff168151811061306357613063616d79565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130b39089906004016168ae565b600060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f89190810190616a13565b828261310381616f15565b935060ff168151811061311857613118616d79565b60200260200101819052505b8460200151156131f45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261316d81616f15565b935060ff168151811061318257613182616d79565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131cf90616f15565b935060ff16815181106131e4576131e4616d79565b60200260200101819052506133bb565b61322c612ad18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132bf5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261326f81616f15565b935060ff168151811061328457613284616d79565b60200260200101819052508460a001516040516020016132a49190616da8565b6040516020818303038152906040528282806131cf90616f15565b8460c0015115801561330257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261330090511590565b155b156133bb5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261334681616f15565b935060ff168151811061335b5761335b616d79565b602002602001018190525061336f8861465e565b60405160200161337f9190616da8565b60405160208183030381529060405282828061339a90616f15565b935060ff16815181106133af576133af616d79565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526133ef90511590565b6134845760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261343281616f15565b935060ff168151811061344757613447616d79565b6020026020010181905250846040015182828061346390616f15565b935060ff168151811061347857613478616d79565b60200260200101819052505b6060850151156135a55760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134cd81616f15565b935060ff16815181106134e2576134e2616d79565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135799190810190616a13565b828261358481616f15565b935060ff168151811061359957613599616d79565b60200260200101819052505b60e0850151511561364c5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826135ef81616f15565b935060ff168151811061360457613604616d79565b60200260200101819052506136208560e00151600001516145be565b828261362b81616f15565b935060ff168151811061364057613640616d79565b60200260200101819052505b60e085015160200151156136f65760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261369981616f15565b935060ff16815181106136ae576136ae616d79565b60200260200101819052506136ca8560e00151602001516145be565b82826136d581616f15565b935060ff16815181106136ea576136ea616d79565b60200260200101819052505b60e085015160400151156137a05760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261374381616f15565b935060ff168151811061375857613758616d79565b60200260200101819052506137748560e00151604001516145be565b828261377f81616f15565b935060ff168151811061379457613794616d79565b60200260200101819052505b60e0850151606001511561384a5760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826137ed81616f15565b935060ff168151811061380257613802616d79565b602002602001018190525061381e8560e00151606001516145be565b828261382981616f15565b935060ff168151811061383e5761383e616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115613868576138686166f7565b60405190808252806020026020018201604052801561389b57816020015b60608152602001906001900390816138865790505b50905060005b8260ff168160ff1610156138f457838160ff16815181106138c4576138c4616d79565b6020026020010151828260ff16815181106138e1576138e1616d79565b60209081029190910101526001016138a1565b5093505050505b949350505050565b61392a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139b091869101616f9f565b600060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139f59190810190616a13565b90506000613a03868361514d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a339190616483565b6000604051808303816000875af1158015613a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7a9190810190616fe6565b805190915060030b15801590613a935750602081015151155b8015613aa25750604081015151155b15612a7c5781600081518110613aba57613aba616d79565b6020026020010151604051602001611cfb919061709c565b60606000613b078560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b3e9082905b906152a2565b15613c9b576000613bbb82613bb584613baf613b818a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152c9565b9061532b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c1f9082906152a2565b15613c8957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613c86905b82906153b0565b90505b613c92816153d6565b92505050611b0e565b8215613cb4578484604051602001611cfb929190617288565b5050604080516020810190915260008152611b0e565b509392505050565b6000808251602084016000f09392505050565b6122f782826001613df2565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d66919061732f565b6000604051808303816000865af19150503d8060008114613da3576040519150601f19603f3d011682016040523d82523d6000602084013e613da8565b606091505b50915091508115613dc757808060200190518101906138fb9190616a13565b505060408051602081019091526000815292915050565b6000613dea838361543f565b159392505050565b8160a0015115613e0157505050565b6000613e0e84848461551a565b90506000613e1b82613903565b602081015181519192509060030b158015613eb75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613eb790604080518082018252600080825260209182015281518083019092528451825280850190820152613b38565b15613ec457505050505050565b60408201515115613ee4578160400151604051602001611cfb919061734b565b80604051602001611cfb91906173a9565b60606000613f2a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613f8f905b829061455d565b15613ffe57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9908390615ab5565b6153d6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614060905b8290615b3f565b60010361412d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140c690613c7f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9905b83906153b0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261418c90613f88565b156142c357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906141f4908390615bd9565b9050600081600183516142079190617414565b8151811061421757614217616d79565b602002602001015190506142ba613ff961428d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615ab5565b95945050505050565b82604051602001611cfb9190617427565b50919050565b6060600061430f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061437190613f88565b1561437f57611b0e816153d6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526143de90614059565b60010361444857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff990614126565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144a790613f88565b156142c357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061450f908390615bd9565b905060018151111561454b57806002825161452a9190617414565b8151811061453a5761453a616d79565b602002602001015192505050919050565b5082604051602001611cfb9190617427565b805182516000911115614572575060006119e8565b8151835160208501516000929161458891617505565b6145929190617414565b9050826020015181036145a95760019150506119e8565b82516020840151819020912014905092915050565b606060006145cb83615c7e565b600101905060008167ffffffffffffffff8111156145eb576145eb6166f7565b6040519080825280601f01601f191660200182016040528015614615576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461461f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916146ea905b8290613dde565b1561472a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614789906146e3565b156147c957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614828906146e3565b1561486857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148c7906146e3565b8061492c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261492c906146e3565b1561496c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149cb906146e3565b80614a305750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a30906146e3565b15614a7057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614acf906146e3565b80614b345750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b34906146e3565b15614b7457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bd3906146e3565b80614c385750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c38906146e3565b15614c7857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cd7906146e3565b15614d1757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d76906146e3565b15614db657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e15906146e3565b15614e5557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614eb4906146e3565b15614ef457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f53906146e3565b15614f9357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ff2906146e3565b806150575750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615057906146e3565b1561509757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f6906146e3565b1561513657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611cfb9290602001617518565b60608060005b84518110156151d8578185828151811061516f5761516f616d79565b60200260200101516040516020016151889291906168c1565b6040516020818303038152906040529150600185516151a79190617414565b81146151d057816040516020016151be9190617681565b60405160208183030381529060405291505b600101615153565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816151f1579050509050838160008151811061521c5761521c616d79565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061527057615270616d79565b6020026020010181905250818160028151811061528f5761528f616d79565b6020908102919091010152949350505050565b60208083015183518351928401516000936152c09291849190615d60565b14159392505050565b604080518082019091526000808252602082015260006152fb8460000151856020015185600001518660200151615e71565b905083602001518161530d9190617414565b8451859061531c908390617414565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156153505750816119e8565b60208083015190840151600191146153775750815160208481015190840151829020919020145b80156153a85782518451859061538e908390617414565b90525082516020850180516153a4908390617505565b9052505b509192915050565b60408051808201909152600080825260208201526153cf838383615f91565b5092915050565b60606000826000015167ffffffffffffffff8111156153f7576153f76166f7565b6040519080825280601f01601f191660200182016040528015615421576020820181803683370190505b50905060006020820190506153cf818560200151866000015161603c565b8151815160009190811115615452575081515b6020808501519084015160005b8381101561550b57825182518082146154db5760001960208710156154ba5760018461548c896020617414565b6154969190617505565b6154a19060086176c2565b6154ac9060026177c0565b6154b69190617414565b1990505b81811683821681810391146154d85797506119e89650505050505050565b50505b6154e6602086617505565b94506154f3602085617505565b935050506020816155049190617505565b905061545f565b5084518651612a7c91906177cc565b606060006155266122fb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161554357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061559e90616f15565b935060ff16815181106155b3576155b3616d79565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161560491906177ec565b60405160208183030381529060405282828061561f90616f15565b935060ff168151811061563457615634616d79565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061568190616f15565b935060ff168151811061569657615696616d79565b6020026020010181905250826040516020016156b29190616e14565b6040516020818303038152906040528282806156cd90616f15565b935060ff16815181106156e2576156e2616d79565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061572f90616f15565b935060ff168151811061574457615744616d79565b602002602001018190525061575987846160b6565b828261576481616f15565b935060ff168151811061577957615779616d79565b6020908102919091010152855151156158255760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157cb81616f15565b935060ff16815181106157e0576157e0616d79565b60200260200101819052506157f98660000151846160b6565b828261580481616f15565b935060ff168151811061581957615819616d79565b60200260200101819052505b8560800151156158935760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261586e81616f15565b935060ff168151811061588357615883616d79565b60200260200101819052506158f9565b84156158f95760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826158d881616f15565b935060ff16815181106158ed576158ed616d79565b60200260200101819052505b604086015151156159955760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261594381616f15565b935060ff168151811061595857615958616d79565b6020026020010181905250856040015182828061597490616f15565b935060ff168151811061598957615989616d79565b60200260200101819052505b8560600151156159ff5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826159de81616f15565b935060ff16815181106159f3576159f3616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a1d57615a1d6166f7565b604051908082528060200260200182016040528015615a5057816020015b6060815260200190600190039081615a3b5790505b50905060005b8260ff168160ff161015615aa957838160ff1681518110615a7957615a79616d79565b6020026020010151828260ff1681518110615a9657615a96616d79565b6020908102919091010152600101615a56565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615ada5750816119e8565b81518351602085015160009291615af091617505565b615afa9190617414565b60208401519091506001908214615b1b575082516020840151819020908220145b8015615b3657835185518690615b32908390617414565b9052505b50929392505050565b6000808260000151615b638560000151866020015186600001518760200151615e71565b615b6d9190617505565b90505b83516020850151615b819190617505565b81116153cf5781615b9181617831565b9250508260000151615bc8856020015183615bac9190617414565b8651615bb89190617414565b8386600001518760200151615e71565b615bd29190617505565b9050615b70565b60606000615be78484615b3f565b615bf2906001617505565b67ffffffffffffffff811115615c0a57615c0a6166f7565b604051908082528060200260200182016040528015615c3d57816020015b6060815260200190600190039081615c285790505b50905060005b8151811015613cca57615c59613ff986866153b0565b828281518110615c6b57615c6b616d79565b6020908102919091010152600101615c43565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cc7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615cf3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d1157662386f26fc10000830492506010015b6305f5e1008310615d29576305f5e100830492506008015b6127108310615d3d57612710830492506004015b60648310615d4f576064830492506002015b600a83106119e85760010192915050565b600080858411615e675760208411615e135760008415615dab576001615d87866020617414565b615d929060086176c2565b615d9d9060026177c0565b615da79190617414565b1990505b8351811685615dba8989617505565b615dc49190617414565b805190935082165b818114615dfe57878411615de657879450505050506138fb565b83615df08161784b565b945050828451169050615dcc565b615e088785617505565b9450505050506138fb565b838320615e208588617414565b615e2a9087617505565b91505b858210615e6557848220808203615e5257615e488684617505565b93505050506138fb565b615e5d600184617414565b925050615e2d565b505b5092949350505050565b60008381868511615f7c5760208511615f2b5760008515615ebd576001615e99876020617414565b615ea49060086176c2565b615eaf9060026177c0565b615eb99190617414565b1990505b84518116600087615ece8b8b617505565b615ed89190617414565b855190915083165b828114615f1d57818610615f0557615ef88b8b617505565b96505050505050506138fb565b85615f0f81617831565b965050838651169050615ee0565b8596505050505050506138fb565b508383206000905b615f3d8689617414565b8211615f7a57858320808203615f5957839450505050506138fb565b615f64600185617505565b9350508180615f7290617831565b925050615f33565b505b615f868787617505565b979650505050505050565b60408051808201909152600080825260208201526000615fc38560000151866020015186600001518760200151615e71565b602080870180519186019190915251909150615fdf9082617414565b835284516020860151615ff29190617505565b81036160015760008552616033565b8351835161600f9190617505565b8551869061601e908390617414565b905250835161602d9082617505565b60208601525b50909392505050565b602081106160745781518352616053602084617505565b9250616060602083617505565b915061606d602082617414565b905061603c565b60001981156160a357600161608a836020617414565b616096906101006177c0565b6160a09190617414565b90505b9151835183169219169190911790915250565b606060006160c484846123ce565b80516020808301516040519394506160de93909101617862565b60405160208183030381529060405291505092915050565b610c9f806178bb83390190565b610b4a8061855a83390190565b610f9a806190a483390190565b610d5e8061a03e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161616d616172565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161616d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156162245783516001600160a01b03168352602093840193909201916001016161fd565b509095945050505050565b60005b8381101561624a578181015183820152602001616232565b50506000910152565b6000815180845261626b81602086016020860161622f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616361577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261634b848651616253565b6020958601959094509290920191600101616311565b5091975050506020948501949290920191506001016162a7565b50929695505050505050565b600081518084526020840193506020830160005b828110156163db5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161639b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526164516040880182616253565b905060208201519150868103602088015261646c8183616387565b96505050602093840193919091019060010161640d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526164e5858351616253565b945060209384019391909101906001016164ab565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261657b6040870182616387565b9550506020938401939190910190600101616522565b6000602082840312156165a357600080fd5b81518015158114611b0e57600080fd5b600181811c908216806165c757607f821691505b6020821081036142d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561661257600080fd5b81516001600160a01b0381168114611b0e57600080fd5b60608152600061663c6060830186616253565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142ba6060830184616253565b6001600160a01b038616815284602082015260a0604082015260006166a360a0830186616253565b6060830194909452509015156080909101529392505050565b8281526040602082015260006138fb6040830184616253565b6001600160a01b03831681526040602082015260006138fb6040830184616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616749576167496166f7565b60405290565b60008067ffffffffffffffff84111561676a5761676a6166f7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616799576167996166f7565b6040528381529050808284018510156167b157600080fd5b613cca84602083018561622f565b600082601f8301126167d057600080fd5b611b0e8383516020850161674f565b6000602082840312156167f157600080fd5b815167ffffffffffffffff81111561680857600080fd5b6119e4848285016167bf565b60006020828403121561682657600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161686581601a85016020880161622f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168a281601c84016020880161622f565b01601c01949350505050565b602081526000611b0e6020830184616253565b600083516168d381846020880161622f565b8351908301906168e781836020880161622f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161692881601a85016020880161622f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161696581603384016020880161622f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142ba6060830184616253565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616a2557600080fd5b815167ffffffffffffffff811115616a3c57600080fd5b8201601f81018413616a4d57600080fd5b6119e48482516020840161674f565b60008551616a6e818460208a0161622f565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616aa8816001840160208a0161622f565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616ae681600284016020890161622f565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b2881600284016020880161622f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b736040830184616253565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616bea81601f85016020870161622f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c576040830184616253565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616ca96040830184616253565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d2081601485016020870161622f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d676040830185616253565b8281036020840152611b0a8185616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616de081600185016020870161622f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e2681846020870161622f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616ed981604b85016020870161622f565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f2b57616f2b616ee6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616ff857600080fd5b815167ffffffffffffffff81111561700f57600080fd5b82016060818503121561702157600080fd5b617029616726565b81518060030b811461703a57600080fd5b8152602082015167ffffffffffffffff81111561705657600080fd5b617062868285016167bf565b602083015250604082015167ffffffffffffffff81111561708257600080fd5b61708e868285016167bf565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516170fa81602185016020870161622f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516172e681602185016020880161622f565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161732381602e84016020880161622f565b01602e01949350505050565b6000825161734181846020870161622f565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161740781602285016020870161622f565b9190910160220192915050565b818103818111156119e8576119e8616ee6565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161745f81600e85016020870161622f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156119e8576119e8616ee6565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161755081601885016020880161622f565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161758d81601c84016020880161622f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161769381846020870161622f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176119e8576119e8616ee6565b6001815b6001841115617714578085048111156176f8576176f8616ee6565b600184161561770657908102905b60019390931c9280026176dd565b935093915050565b60008261772b575060016119e8565b81617738575060006119e8565b816001811461774e576002811461775857617774565b60019150506119e8565b60ff84111561776957617769616ee6565b50506001821b6119e8565b5060208310610133831016604e8410600b8410161715617797575081810a6119e8565b6177a460001984846176d9565b80600019048211156177b8576177b8616ee6565b029392505050565b6000611b0e838361771c565b81810360008312801583831316838312821617156153cf576153cf616ee6565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161782481601c85016020870161622f565b91909101601c0192915050565b6000600019820361784457617844616ee6565b5060010190565b60008161785a5761785a616ee6565b506000190190565b6000835161787481846020880161622f565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178ae81600184016020880161622f565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220cbad1414583bb5eed6bd91ae2cec07a279afe0cc017c8c893657484636f5d89664736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061bf218061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a85565b60405161010e919061620b565b60405180910390f35b61011f610ae7565b60405161010e91906162a7565b610101610c29565b610101610c89565b610144610ce9565b60405161010e919061640d565b6100f7610e6b565b61016161152d565b60405161010e91906164ab565b6101766115fd565b60405161010e9190616522565b6101766116f8565b6101616117f3565b61019b6118c3565b604051901515815260200161010e565b610101611997565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516102129061611e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc9061611e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261044f919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526119f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906104db9061612b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610517573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061057290616138565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105b6573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105fb90616145565b604051809103906000f080158015610617573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107c757600080fd5b505af11580156107db573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af11580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906165b9565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610add57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610abf575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610c2057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c09578382906000526020600020018054610b7c906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906165db565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081526020019060010190610b5d565b505050508152505081526020019060010190610b0b565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610c205783829060005260206000209060020201604051806040016040529081600082018054610d40906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c906165db565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e005790505b50505050508152505081526020019060010190610d0d565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190616628565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190616628565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093611023936001600160a01b036101009093048316939216611a16565b600084848460405160240161103a93929190616651565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611100929116908790879060040161667b565b600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061121d92506001600160a01b039091169086908a908a908a906166a3565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915061130c90869086906166e4565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561138657600080fd5b505af115801561139a573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113ec9291169087906004016166fd565b60006040518083038185885af115801561140a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526114339190810190616807565b5060208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516114c0938c936001600160a01b03169263dda79b7592600480830193928290030181865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190616628565b611a32565b60208054604080517f5b1125910000000000000000000000000000000000000000000000000000000081529051611523938b936001600160a01b031692635b11259192600480830193928290030181865afa158015611497573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611570906165db565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906165db565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b505050505081526020019060010190611551565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161168d5790505b50505050508152505081526020019060010190611621565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117885790505b5050505050815250508152602001906001019061171c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611836906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054611862906165db565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081526020019060010190611817565b60085460009060ff16156118db575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061683c565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6000611a01616152565b611a0c848483611ac2565b9150505b92915050565b611a1e616152565b611a2b8585858486611b3d565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050505050565b600080611acf8584611c3e565b9050611b326040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611b1d9291906166fd565b60405160208183030381529060405285611c4a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611baf57600080fd5b505af1925050508015611bc0575060015b611bd557611bd087878787611c78565b611c35565b611be187878787611c78565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505b50505050505050565b6000611b368383611c91565b60c08101515160009015611c6e57611c6784848460c00151611cac565b9050611b36565b611c678484611e52565b6000611c848483611f3d565b9050611a2b858285611f49565b6000611c9d8383612313565b611b3683836020015184611c4a565b600080611cb7612323565b90506000611cc586836123f6565b90506000611cdc826060015183602001518561289c565b90506000611cec83838989612aae565b90506000611cf98261392b565b602081015181519192509060030b15611d6c57898260400151604051602001611d23929190616855565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d63916004016168d6565b60405180910390fd5b6000611daf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613afa565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611e029084906004016168d6565b602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190616628565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611ea79087906004016168d6565b600060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eec9190810190616807565b90506000611f1a8285604051602001611f069291906168e9565b604051602081830303815290604052613cfa565b90506001600160a01b038116611a0c578484604051602001611d23929190616918565b6000611c9d8383613d0d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061683c565b9050806121b057600061201b86613d19565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506120a6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613e06565b806120b2575060008451115b15612135576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120fe90889088906004016166fd565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b505050506121aa565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050505b50611a2b565b8060006121bc82613d19565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061221e90612079565b8061222a575060008551115b156122af576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612278908a908a908a906004016169c3565b600060405180830381600087803b15801561229257600080fd5b505af11580156122a6573d6000803e3d6000fd5b50505050611c35565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611c1c57600080fd5b61231f82826000613e1a565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123aa9084906004016169f4565b600060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123ef9190810190616a3b565b9250505090565b6124286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506124736040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61247c85613f1d565b6020820152600061248c86614302565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f69190810190616a3b565b868385602001516040516020016125109493929190616a84565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125689085906004016168d6565b600060405180830381865afa158015612585573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ad9190810190616a3b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125f5908490600401616b88565b602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906165b9565b61264b5781604051602001611d239190616bda565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612690908490600401616c6c565b600060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126d59190810190616a3b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061271c908490600401616cbe565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906165b9565b156127f2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906127a7908490600401616cbe565b600060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ec9190810190616a3b565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016128179190616d10565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612843929190616d7c565b600060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128889190810190616a3b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128b85790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061291857612918616da1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061296c5761296c616da1565b6020026020010181905250846040516020016129889190616dd0565b604051602081830303815290604052816002815181106129aa576129aa616da1565b6020026020010181905250826040516020016129c69190616e3c565b604051602081830303815290604052816003815181106129e8576129e8616da1565b602002602001018190525060006129fe8261392b565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a8f9060408051808201825260008082526020918201528151808301909252845182528085019082015290614585565b612aa45785604051602001611d239190616e7d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612afe565b511590565b612c7257826020015115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d63565b8260c0015115612c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d63565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c8b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612ce690616f3d565b935060ff1681518110612cfb57612cfb616da1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d4c9190616f5c565b604051602081830303815290604052828280612d6790616f3d565b935060ff1681518110612d7c57612d7c616da1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612dc990616f3d565b935060ff1681518110612dde57612dde616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e2b90616f3d565b935060ff1681518110612e4057612e40616da1565b60200260200101819052508760200151828280612e5c90616f3d565b935060ff1681518110612e7157612e71616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612ebe90616f3d565b935060ff1681518110612ed357612ed3616da1565b602090810291909101015287518282612eeb81616f3d565b935060ff1681518110612f0057612f00616da1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f4d90616f3d565b935060ff1681518110612f6257612f62616da1565b6020026020010181905250612f76466145e6565b8282612f8181616f3d565b935060ff1681518110612f9657612f96616da1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fe390616f3d565b935060ff1681518110612ff857612ff8616da1565b60200260200101819052508682828061301090616f3d565b935060ff168151811061302557613025616da1565b602090810291909101015285511561314c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261307681616f3d565b935060ff168151811061308b5761308b616da1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130db9089906004016168d6565b600060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131209190810190616a3b565b828261312b81616f3d565b935060ff168151811061314057613140616da1565b60200260200101819052505b84602001511561321c5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261319581616f3d565b935060ff16815181106131aa576131aa616da1565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131f790616f3d565b935060ff168151811061320c5761320c616da1565b60200260200101819052506133e3565b613254612af98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132e75760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261329781616f3d565b935060ff16815181106132ac576132ac616da1565b60200260200101819052508460a001516040516020016132cc9190616dd0565b6040516020818303038152906040528282806131f790616f3d565b8460c0015115801561332a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261332890511590565b155b156133e35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261336e81616f3d565b935060ff168151811061338357613383616da1565b602002602001018190525061339788614686565b6040516020016133a79190616dd0565b6040516020818303038152906040528282806133c290616f3d565b935060ff16815181106133d7576133d7616da1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261341790511590565b6134ac5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261345a81616f3d565b935060ff168151811061346f5761346f616da1565b6020026020010181905250846040015182828061348b90616f3d565b935060ff16815181106134a0576134a0616da1565b60200260200101819052505b6060850151156135cd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134f581616f3d565b935060ff168151811061350a5761350a616da1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190616a3b565b82826135ac81616f3d565b935060ff16815181106135c1576135c1616da1565b60200260200101819052505b60e085015151156136745760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261361781616f3d565b935060ff168151811061362c5761362c616da1565b60200260200101819052506136488560e00151600001516145e6565b828261365381616f3d565b935060ff168151811061366857613668616da1565b60200260200101819052505b60e0850151602001511561371e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826136c181616f3d565b935060ff16815181106136d6576136d6616da1565b60200260200101819052506136f28560e00151602001516145e6565b82826136fd81616f3d565b935060ff168151811061371257613712616da1565b60200260200101819052505b60e085015160400151156137c85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261376b81616f3d565b935060ff168151811061378057613780616da1565b602002602001018190525061379c8560e00151604001516145e6565b82826137a781616f3d565b935060ff16815181106137bc576137bc616da1565b60200260200101819052505b60e085015160600151156138725760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261381581616f3d565b935060ff168151811061382a5761382a616da1565b60200260200101819052506138468560e00151606001516145e6565b828261385181616f3d565b935060ff168151811061386657613866616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156138905761389061671f565b6040519080825280602002602001820160405280156138c357816020015b60608152602001906001900390816138ae5790505b50905060005b8260ff168160ff16101561391c57838160ff16815181106138ec576138ec616da1565b6020026020010151828260ff168151811061390957613909616da1565b60209081029190910101526001016138c9565b5093505050505b949350505050565b6139526040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139d891869101616fc7565b600060405180830381865afa1580156139f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a1d9190810190616a3b565b90506000613a2b8683615175565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a5b91906164ab565b6000604051808303816000875af1158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa2919081019061700e565b805190915060030b15801590613abb5750602081015151155b8015613aca5750604081015151155b15612aa45781600081518110613ae257613ae2616da1565b6020026020010151604051602001611d2391906170c4565b60606000613b2f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b669082905b906152ca565b15613cc3576000613be382613bdd84613bd7613ba98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152f1565b90615353565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c479082906152ca565b15613cb157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613cae905b82906153d8565b90505b613cba816153fe565b92505050611b36565b8215613cdc578484604051602001611d239291906172b0565b5050604080516020810190915260008152611b36565b509392505050565b6000808251602084016000f09392505050565b61231f82826001613e1a565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d8e9190617357565b6000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b50915091508115613def57808060200190518101906139239190616a3b565b505060408051602081019091526000815292915050565b6000613e128383615467565b159392505050565b8160a0015115613e2957505050565b6000613e36848484615542565b90506000613e438261392b565b602081015181519192509060030b158015613edf5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613edf90604080518082018252600080825260209182015281518083019092528451825280850190820152613b60565b15613eec57505050505050565b60408201515115613f0c578160400151604051602001611d239190617373565b80604051602001611d2391906173d1565b60606000613f528360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613fb7905b8290614585565b1561402657604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021908390615add565b6153fe565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614088905b8290615b67565b60010361415557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140ee90613ca7565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021905b83906153d8565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526141b490613fb0565b156142eb57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061421c908390615c01565b90506000816001835161422f919061743c565b8151811061423f5761423f616da1565b602002602001015190506142e26140216142b56040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615add565b95945050505050565b82604051602001611d23919061744f565b50919050565b606060006143378360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061439990613fb0565b156143a757611b36816153fe565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261440690614081565b60010361447057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b36906140219061414e565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144cf90613fb0565b156142eb57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614537908390615c01565b9050600181511115614573578060028251614552919061743c565b8151811061456257614562616da1565b602002602001015192505050919050565b5082604051602001611d23919061744f565b80518251600091111561459a57506000611a10565b815183516020850151600092916145b09161752d565b6145ba919061743c565b9050826020015181036145d1576001915050611a10565b82516020840151819020912014905092915050565b606060006145f383615ca6565b600101905060008167ffffffffffffffff8111156146135761461361671f565b6040519080825280601f01601f19166020018201604052801561463d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461464757509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614712905b8290613e06565b1561475257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147b19061470b565b156147f157505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148509061470b565b1561489057505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148ef9061470b565b806149545750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149549061470b565b1561499457505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149f39061470b565b80614a585750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a589061470b565b15614a9857505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614af79061470b565b80614b5c5750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b5c9061470b565b15614b9c57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bfb9061470b565b80614c605750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c609061470b565b15614ca057505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cff9061470b565b15614d3f57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d9e9061470b565b15614dde57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e3d9061470b565b15614e7d57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614edc9061470b565b15614f1c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f7b9061470b565b15614fbb57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261501a9061470b565b8061507f5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261507f9061470b565b156150bf57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261511e9061470b565b1561515e57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611d239290602001617540565b60608060005b8451811015615200578185828151811061519757615197616da1565b60200260200101516040516020016151b09291906168e9565b6040516020818303038152906040529150600185516151cf919061743c565b81146151f857816040516020016151e691906176a9565b60405160208183030381529060405291505b60010161517b565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081615219579050509050838160008151811061524457615244616da1565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061529857615298616da1565b602002602001018190525081816002815181106152b7576152b7616da1565b6020908102919091010152949350505050565b60208083015183518351928401516000936152e89291849190615d88565b14159392505050565b604080518082019091526000808252602082015260006153238460000151856020015185600001518660200151615e99565b9050836020015181615335919061743c565b8451859061534490839061743c565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615378575081611a10565b602080830151908401516001911461539f5750815160208481015190840151829020919020145b80156153d0578251845185906153b690839061743c565b90525082516020850180516153cc90839061752d565b9052505b509192915050565b60408051808201909152600080825260208201526153f7838383615fb9565b5092915050565b60606000826000015167ffffffffffffffff81111561541f5761541f61671f565b6040519080825280601f01601f191660200182016040528015615449576020820181803683370190505b50905060006020820190506153f78185602001518660000151616064565b815181516000919081111561547a575081515b6020808501519084015160005b8381101561553357825182518082146155035760001960208710156154e2576001846154b489602061743c565b6154be919061752d565b6154c99060086176ea565b6154d49060026177e8565b6154de919061743c565b1990505b8181168382168181039114615500579750611a109650505050505050565b50505b61550e60208661752d565b945061551b60208561752d565b9350505060208161552c919061752d565b9050615487565b5084518651612aa491906177f4565b6060600061554e612323565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161556b57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806155c690616f3d565b935060ff16815181106155db576155db616da1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161562c9190617814565b60405160208183030381529060405282828061564790616f3d565b935060ff168151811061565c5761565c616da1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806156a990616f3d565b935060ff16815181106156be576156be616da1565b6020026020010181905250826040516020016156da9190616e3c565b6040516020818303038152906040528282806156f590616f3d565b935060ff168151811061570a5761570a616da1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061575790616f3d565b935060ff168151811061576c5761576c616da1565b602002602001018190525061578187846160de565b828261578c81616f3d565b935060ff16815181106157a1576157a1616da1565b60209081029190910101528551511561584d5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157f381616f3d565b935060ff168151811061580857615808616da1565b60200260200101819052506158218660000151846160de565b828261582c81616f3d565b935060ff168151811061584157615841616da1565b60200260200101819052505b8560800151156158bb5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261589681616f3d565b935060ff16815181106158ab576158ab616da1565b6020026020010181905250615921565b84156159215760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261590081616f3d565b935060ff168151811061591557615915616da1565b60200260200101819052505b604086015151156159bd5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261596b81616f3d565b935060ff168151811061598057615980616da1565b6020026020010181905250856040015182828061599c90616f3d565b935060ff16815181106159b1576159b1616da1565b60200260200101819052505b856060015115615a275760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615a0681616f3d565b935060ff1681518110615a1b57615a1b616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a4557615a4561671f565b604051908082528060200260200182016040528015615a7857816020015b6060815260200190600190039081615a635790505b50905060005b8260ff168160ff161015615ad157838160ff1681518110615aa157615aa1616da1565b6020026020010151828260ff1681518110615abe57615abe616da1565b6020908102919091010152600101615a7e565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615b02575081611a10565b81518351602085015160009291615b189161752d565b615b22919061743c565b60208401519091506001908214615b43575082516020840151819020908220145b8015615b5e57835185518690615b5a90839061743c565b9052505b50929392505050565b6000808260000151615b8b8560000151866020015186600001518760200151615e99565b615b95919061752d565b90505b83516020850151615ba9919061752d565b81116153f75781615bb981617859565b9250508260000151615bf0856020015183615bd4919061743c565b8651615be0919061743c565b8386600001518760200151615e99565b615bfa919061752d565b9050615b98565b60606000615c0f8484615b67565b615c1a90600161752d565b67ffffffffffffffff811115615c3257615c3261671f565b604051908082528060200260200182016040528015615c6557816020015b6060815260200190600190039081615c505790505b50905060005b8151811015613cf257615c8161402186866153d8565b828281518110615c9357615c93616da1565b6020908102919091010152600101615c6b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615d1b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d3957662386f26fc10000830492506010015b6305f5e1008310615d51576305f5e100830492506008015b6127108310615d6557612710830492506004015b60648310615d77576064830492506002015b600a8310611a105760010192915050565b600080858411615e8f5760208411615e3b5760008415615dd3576001615daf86602061743c565b615dba9060086176ea565b615dc59060026177e8565b615dcf919061743c565b1990505b8351811685615de2898961752d565b615dec919061743c565b805190935082165b818114615e2657878411615e0e5787945050505050613923565b83615e1881617873565b945050828451169050615df4565b615e30878561752d565b945050505050613923565b838320615e48858861743c565b615e52908761752d565b91505b858210615e8d57848220808203615e7a57615e70868461752d565b9350505050613923565b615e8560018461743c565b925050615e55565b505b5092949350505050565b60008381868511615fa45760208511615f535760008515615ee5576001615ec187602061743c565b615ecc9060086176ea565b615ed79060026177e8565b615ee1919061743c565b1990505b84518116600087615ef68b8b61752d565b615f00919061743c565b855190915083165b828114615f4557818610615f2d57615f208b8b61752d565b9650505050505050613923565b85615f3781617859565b965050838651169050615f08565b859650505050505050613923565b508383206000905b615f65868961743c565b8211615fa257858320808203615f815783945050505050613923565b615f8c60018561752d565b9350508180615f9a90617859565b925050615f5b565b505b615fae878761752d565b979650505050505050565b60408051808201909152600080825260208201526000615feb8560000151866020015186600001518760200151615e99565b602080870180519186019190915251909150616007908261743c565b83528451602086015161601a919061752d565b8103616029576000855261605b565b83518351616037919061752d565b8551869061604690839061743c565b9052508351616055908261752d565b60208601525b50909392505050565b6020811061609c578151835261607b60208461752d565b925061608860208361752d565b915061609560208261743c565b9050616064565b60001981156160cb5760016160b283602061743c565b6160be906101006177e8565b6160c8919061743c565b90505b9151835183169219169190911790915250565b606060006160ec84846123f6565b80516020808301516040519394506161069390910161788a565b60405160208183030381529060405291505092915050565b610c9f806178e383390190565b6113e28061858283390190565b61182a8061996483390190565b610d5e8061b18e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161619561619a565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016161956040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561624c5783516001600160a01b0316835260209384019390920191600101616225565b509095945050505050565b60005b8381101561627257818101518382015260200161625a565b50506000910152565b60008151808452616293816020860160208601616257565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616389577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261637384865161627b565b6020958601959094509290920191600101616339565b5091975050506020948501949290920191506001016162cf565b50929695505050505050565b600081518084526020840193506020830160005b828110156164035781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016163c3565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616479604088018261627b565b905060208201519150868103602088015261649481836163af565b965050506020938401939190910190600101616435565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261650d85835161627b565b945060209384019391909101906001016164d3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526165a360408701826163af565b955050602093840193919091019060010161654a565b6000602082840312156165cb57600080fd5b81518015158114611b3657600080fd5b600181811c908216806165ef57607f821691505b6020821081036142fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561663a57600080fd5b81516001600160a01b0381168114611b3657600080fd5b606081526000616664606083018661627b565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142e2606083018461627b565b6001600160a01b038616815284602082015260a0604082015260006166cb60a083018661627b565b6060830194909452509015156080909101529392505050565b828152604060208201526000613923604083018461627b565b6001600160a01b0383168152604060208201526000613923604083018461627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156167715761677161671f565b60405290565b60008067ffffffffffffffff8411156167925761679261671f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156167c1576167c161671f565b6040528381529050808284018510156167d957600080fd5b613cf2846020830185616257565b600082601f8301126167f857600080fd5b611b3683835160208501616777565b60006020828403121561681957600080fd5b815167ffffffffffffffff81111561683057600080fd5b611a0c848285016167e7565b60006020828403121561684e57600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161688d81601a850160208801616257565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168ca81601c840160208801616257565b01601c01949350505050565b602081526000611b36602083018461627b565b600083516168fb818460208801616257565b83519083019061690f818360208801616257565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161695081601a850160208801616257565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161698d816033840160208801616257565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142e2606083018461627b565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b36608083018461627b565b600060208284031215616a4d57600080fd5b815167ffffffffffffffff811115616a6457600080fd5b8201601f81018413616a7557600080fd5b611a0c84825160208401616777565b60008551616a96818460208a01616257565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616ad0816001840160208a01616257565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616b0e816002840160208901616257565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b50816002840160208801616257565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b9b604083018461627b565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616c1281601f850160208701616257565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c7f604083018461627b565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616cd1604083018461627b565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d48816014850160208701616257565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d8f604083018561627b565b8281036020840152611b32818561627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616e08816001850160208701616257565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e4e818460208701616257565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616f0181604b850160208701616257565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f5357616f53616f0e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b36608083018461627b565b60006020828403121561702057600080fd5b815167ffffffffffffffff81111561703757600080fd5b82016060818503121561704957600080fd5b61705161674e565b81518060030b811461706257600080fd5b8152602082015167ffffffffffffffff81111561707e57600080fd5b61708a868285016167e7565b602083015250604082015167ffffffffffffffff8111156170aa57600080fd5b6170b6868285016167e7565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251617122816021850160208701616257565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161730e816021850160208801616257565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161734b81602e840160208801616257565b01602e01949350505050565b60008251617369818460208701616257565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161742f816022850160208701616257565b9190910160220192915050565b81810381811115611a1057611a10616f0e565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161748781600e850160208701616257565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115611a1057611a10616f0e565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617578816018850160208801616257565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516175b581601c840160208801616257565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516176bb818460208701616257565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417611a1057611a10616f0e565b6001815b600184111561773c5780850481111561772057617720616f0e565b600184161561772e57908102905b60019390931c928002617705565b935093915050565b60008261775357506001611a10565b8161776057506000611a10565b816001811461777657600281146177805761779c565b6001915050611a10565b60ff84111561779157617791616f0e565b50506001821b611a10565b5060208310610133831016604e8410600b84101617156177bf575081810a611a10565b6177cc6000198484617701565b80600019048211156177e0576177e0616f0e565b029392505050565b6000611b368383617744565b81810360008312801583831316838312821617156153f7576153f7616f0e565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161784c81601c850160208701616257565b91909101601c0192915050565b6000600019820361786c5761786c616f0e565b5060010190565b60008161788257617882616f0e565b506000190190565b6000835161789c818460208801616257565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178d6816001840160208801616257565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220ab47a8df273b8e4c91a38c4269035bd99a4d4c25cf8bd7f63c607b59dcb202b964736f6c634300081a0033", } // GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index 0bffb795..cf426760 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -31,8 +31,8 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea264697066735822122080ca52360500cb8c1ff37c01ce754e149b0bf2525ac575c45d2f6db66011666364736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220e0d221e2700a741409740f6a05e6ac8e799e50b3e2a6e75b5173b33a31fa502464736f6c634300081a0033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. @@ -202,6 +202,130 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorRaw) Transact(opts return _GatewayEVMUpgradeTest.Contract.contract.Transact(opts, method, params...) } +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) ASSETHANDLERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "ASSET_HANDLER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.ASSETHANDLERROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// ASSETHANDLERROLE is a free data retrieval call binding the contract method 0x5d62c860. +// +// Solidity: function ASSET_HANDLER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ASSETHANDLERROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.ASSETHANDLERROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.DEFAULTADMINROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.DEFAULTADMINROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.PAUSERROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.PAUSERROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) TSSROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "TSS_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.TSSROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + +// TSSROLE is a free data retrieval call binding the contract method 0xa783c789. +// +// Solidity: function TSS_ROLE() view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) TSSROLE() ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.TSSROLE(&_GatewayEVMUpgradeTest.CallOpts) +} + // UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // // Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) @@ -264,35 +388,97 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Custody() (com return _GatewayEVMUpgradeTest.Contract.Custody(&_GatewayEVMUpgradeTest.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} - err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "owner") + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "getRoleAdmin", role) if err != nil { - return *new(common.Address), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.GetRoleAdmin(&_GatewayEVMUpgradeTest.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayEVMUpgradeTest.Contract.GetRoleAdmin(&_GatewayEVMUpgradeTest.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVMUpgradeTest.Contract.HasRole(&_GatewayEVMUpgradeTest.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayEVMUpgradeTest.Contract.HasRole(&_GatewayEVMUpgradeTest.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Owner() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Paused() (bool, error) { + return _GatewayEVMUpgradeTest.Contract.Paused(&_GatewayEVMUpgradeTest.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Owner() (common.Address, error) { - return _GatewayEVMUpgradeTest.Contract.Owner(&_GatewayEVMUpgradeTest.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) Paused() (bool, error) { + return _GatewayEVMUpgradeTest.Contract.Paused(&_GatewayEVMUpgradeTest.CallOpts) } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -326,6 +512,37 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) ProxiableUUID( return _GatewayEVMUpgradeTest.Contract.ProxiableUUID(&_GatewayEVMUpgradeTest.CallOpts) } +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _GatewayEVMUpgradeTest.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVMUpgradeTest.Contract.SupportsInterface(&_GatewayEVMUpgradeTest.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayEVMUpgradeTest.Contract.SupportsInterface(&_GatewayEVMUpgradeTest.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -587,46 +804,88 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) ExecuteWit return _GatewayEVMUpgradeTest.Contract.ExecuteWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.GrantRole(&_GatewayEVMUpgradeTest.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.GrantRole(&_GatewayEVMUpgradeTest.TransactOpts, role, account) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken, _admin) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "pause") } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Pause() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Pause(&_GatewayEVMUpgradeTest.TransactOpts) } -// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function initialize(address _tssAddress, address _zetaToken) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.Initialize(&_GatewayEVMUpgradeTest.TransactOpts, _tssAddress, _zetaToken) +// Solidity: function pause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Pause() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Pause(&_GatewayEVMUpgradeTest.TransactOpts) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "renounceOwnership") +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "renounceRole", role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RenounceRole(&_GatewayEVMUpgradeTest.TransactOpts, role, callerConfirmation) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceOwnership() returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.RenounceOwnership(&_GatewayEVMUpgradeTest.TransactOpts) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RenounceRole(&_GatewayEVMUpgradeTest.TransactOpts, role, callerConfirmation) } // RevertWithERC20 is a paid mutator transaction binding the contract method 0xb8969bd4. @@ -650,6 +909,27 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RevertWith return _GatewayEVMUpgradeTest.Contract.RevertWithERC20(&_GatewayEVMUpgradeTest.TransactOpts, token, to, amount, data) } +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RevokeRole(&_GatewayEVMUpgradeTest.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.RevokeRole(&_GatewayEVMUpgradeTest.TransactOpts, role, account) +} + // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // // Solidity: function setConnector(address _zetaConnector) returns() @@ -692,25 +972,25 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) SetCustody return _GatewayEVMUpgradeTest.Contract.SetCustody(&_GatewayEVMUpgradeTest.TransactOpts, _custody) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.contract.Transact(opts, "transferOwnership", newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.contract.Transact(opts, "unpause") } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestSession) Unpause() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Unpause(&_GatewayEVMUpgradeTest.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayEVMUpgradeTest.Contract.TransferOwnership(&_GatewayEVMUpgradeTest.TransactOpts, newOwner) +// Solidity: function unpause() returns() +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestTransactorSession) Unpause() (*types.Transaction, error) { + return _GatewayEVMUpgradeTest.Contract.Unpause(&_GatewayEVMUpgradeTest.TransactOpts) } // UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. @@ -1625,9 +1905,9 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseInitialized(lo return event, nil } -// GatewayEVMUpgradeTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestOwnershipTransferredIterator struct { - Event *GatewayEVMUpgradeTestOwnershipTransferred // Event containing the contract specifics and raw log +// GatewayEVMUpgradeTestPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestPausedIterator struct { + Event *GatewayEVMUpgradeTestPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1641,7 +1921,7 @@ type GatewayEVMUpgradeTestOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { +func (it *GatewayEVMUpgradeTestPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1650,7 +1930,7 @@ func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) + it.Event = new(GatewayEVMUpgradeTestPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1665,7 +1945,7 @@ func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayEVMUpgradeTestOwnershipTransferred) + it.Event = new(GatewayEVMUpgradeTestPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1681,60 +1961,41 @@ func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Error() error { +func (it *GatewayEVMUpgradeTestPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayEVMUpgradeTestOwnershipTransferredIterator) Close() error { +func (it *GatewayEVMUpgradeTestPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayEVMUpgradeTestOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayEVMUpgradeTest contract. -type GatewayEVMUpgradeTestOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// GatewayEVMUpgradeTestPaused represents a Paused event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayEVMUpgradeTestOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterPaused(opts *bind.FilterOpts) (*GatewayEVMUpgradeTestPausedIterator, error) { - logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &GatewayEVMUpgradeTestOwnershipTransferredIterator{contract: _GatewayEVMUpgradeTest.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &GatewayEVMUpgradeTestPausedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestPaused) (event.Subscription, error) { - logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -1744,8 +2005,8 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchOwnershipTrans select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(GatewayEVMUpgradeTestPaused) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -1766,12 +2027,12 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchOwnershipTrans }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayEVMUpgradeTestOwnershipTransferred, error) { - event := new(GatewayEVMUpgradeTestOwnershipTransferred) - if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Paused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParsePaused(log types.Log) (*GatewayEVMUpgradeTestPaused, error) { + event := new(GatewayEVMUpgradeTestPaused) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log @@ -2079,6 +2340,626 @@ func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRevertedWithER return event, nil } +// GatewayEVMUpgradeTestRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleAdminChangedIterator struct { + Event *GatewayEVMUpgradeTestRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestRoleAdminChanged represents a RoleAdminChanged event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*GatewayEVMUpgradeTestRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestRoleAdminChangedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestRoleAdminChanged) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRoleAdminChanged(log types.Log) (*GatewayEVMUpgradeTestRoleAdminChanged, error) { + event := new(GatewayEVMUpgradeTestRoleAdminChanged) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleGrantedIterator struct { + Event *GatewayEVMUpgradeTestRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestRoleGranted represents a RoleGranted event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMUpgradeTestRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestRoleGrantedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestRoleGranted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRoleGranted(log types.Log) (*GatewayEVMUpgradeTestRoleGranted, error) { + event := new(GatewayEVMUpgradeTestRoleGranted) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleRevokedIterator struct { + Event *GatewayEVMUpgradeTestRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestRoleRevoked represents a RoleRevoked event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayEVMUpgradeTestRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestRoleRevokedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestRoleRevoked) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseRoleRevoked(log types.Log) (*GatewayEVMUpgradeTestRoleRevoked, error) { + event := new(GatewayEVMUpgradeTestRoleRevoked) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMUpgradeTestUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestUnpausedIterator struct { + Event *GatewayEVMUpgradeTestUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayEVMUpgradeTestUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayEVMUpgradeTestUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayEVMUpgradeTestUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMUpgradeTestUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMUpgradeTestUnpaused represents a Unpaused event raised by the GatewayEVMUpgradeTest contract. +type GatewayEVMUpgradeTestUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GatewayEVMUpgradeTestUnpausedIterator, error) { + + logs, sub, err := _GatewayEVMUpgradeTest.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GatewayEVMUpgradeTestUnpausedIterator{contract: _GatewayEVMUpgradeTest.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GatewayEVMUpgradeTestUnpaused) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMUpgradeTest.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayEVMUpgradeTestUnpaused) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayEVMUpgradeTest *GatewayEVMUpgradeTestFilterer) ParseUnpaused(log types.Log) (*GatewayEVMUpgradeTestUnpaused, error) { + event := new(GatewayEVMUpgradeTestUnpaused) + if err := _GatewayEVMUpgradeTest.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // GatewayEVMUpgradeTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayEVMUpgradeTest contract. type GatewayEVMUpgradeTestUpgradedIterator struct { Event *GatewayEVMUpgradeTestUpgraded // Event containing the contract specifics and raw log diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index f67a50bb..50ea2350 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f1148061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b610132611156565b60405161013f9190617602565b60405180910390f35b6101506111b8565b60405161013f919061769e565b6101326112fa565b61013261135a565b6101286113ba565b61017d611c17565b60405161013f9190617804565b610128611d99565b61019a6125a2565b60405161013f91906178a2565b6101af612672565b60405161013f9190617919565b61012861276d565b6101af612d32565b61019a612e2d565b6101dc612efd565b604051901515815260200161013f565b610128612fd1565b61013261337d565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051610267906174ee565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610331906174ee565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152610499919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526133dd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061051d906174fb565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610550573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460405192841693918216929116906105a590617508565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156105e1573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906179b0565b506040516109bd90617515565b604051809103906000f0801580156109d9573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519290931692820192909252610ab7919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526133dd565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b0890617522565b6001600160a01b039091168152602001604051809103906000f080158015610b34573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506000806000604051610c129061752f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c4e573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610ca49061753c565b610cb3969594939291906179d2565b604051809103906000f080158015610ccf573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9091906179b0565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906179b0565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af1158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906179b0565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156112f157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112da57838290600052602060002001805461124d90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461127990617ac7565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b50505050508152602001906001019061122e565b5050505081525050815260200190600101906111dc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190617b14565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114c790889088908890602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611560926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d5461159192620f4240916001600160a01b0316908690602401617b57565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161164e916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b15801561166857600080fd5b505af115801561167c573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117a092620f4240916001600160a01b0316908d908d908d90600401617bbe565b600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561184b57600080fd5b505af115801561185f573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061194e92506001600160a01b039091169087908b908b908b90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a3d9087908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b1f9216908790600401617c6d565b60006040518083038185885af1158015611b3d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b669190810190617d77565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf59190617b14565b9050611c0d81611c08620f424087617ddb565b6133fc565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000209060020201604051806040016040529081600082018054611c6e90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9a90617ac7565b8015611ce75780601f10611cbc57610100808354040283529160200191611ce7565b820191906000526020600020905b815481529060010190602001808311611cca57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d8157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d2e5790505b50505050508152505081526020019060010190611c3b565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e1590879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190617b14565b8760405161201596959493929190617dee565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261213992620f4240916001600160a01b0316908790600401617e41565b600060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190617b14565b90506122048160006133fc565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061238192506001600160a01b039091169086908a908a908a90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124709086908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125529216908790600401617c6d565b60006040518083038185885af1158015612570573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125999190810190617d77565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000200180546125e590617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461261190617ac7565b801561265e5780601f106126335761010080835404028352916020019161265e565b820191906000526020600020905b81548152906001019060200180831161264157829003601f168201915b5050505050815260200190600101906125c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127025790505b50505050508152505081526020019060010190612696565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906127e990879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129ea918590617e7b565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a57929190617e7b565b600060405180830381600087803b158015612a7157600080fd5b505af1158015612a85573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612ba857600080fd5b505af1158015612bbc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c019085908590617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c7b57600080fd5b505af1158015612c8f573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692612ce39216908690600401617c6d565b60006040518083038185885af1158015612d01573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d2a9190810190617d77565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dc25790505b50505050508152505081526020019060010190612d56565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112f1578382906000526020600020018054612e7090617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9c90617ac7565b8015612ee95780601f10612ebe57610100808354040283529160200191612ee9565b820191906000526020600020905b815481529060010190602001808311612ecc57829003601f168201915b505050505081526020019060010190612e51565b60085460009060ff1615612f15575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fca9190617b14565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304d90879087908790602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e6926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052613105918490602401617e7b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c2916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016132e79493929190617ea0565b600060405180830381600087803b15801561330157600080fd5b505af1158015613315573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401612264565b606060158054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b60006133e7617549565b6133f284848361347b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561346757600080fd5b505afa158015612d2a573d6000803e3d6000fd5b60008061348885846134f6565b90506134eb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016134d6929190617c6d565b60405160208183030381529060405285613502565b9150505b9392505050565b60006134ef8383613530565b60c081015151600090156135265761351f84848460c0015161354b565b90506134ef565b61351f84846136f1565b600061353c83836137dc565b6134ef83836020015184613502565b6000806135566137ec565b9050600061356486836138bf565b9050600061357b8260600151836020015185613d65565b9050600061358b83838989613f77565b9050600061359882614df4565b602081015181519192509060030b1561360b578982604001516040516020016135c2929190617ede565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261360291600401617f5f565b60405180910390fd5b600061364e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614fc3565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906136a1908490600401617f5f565b602060405180830381865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e29190617f72565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613746908790600401617f5f565b600060405180830381865afa158015613763573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261378b9190810190617d77565b905060006137b982856040516020016137a5929190617f9b565b6040516020818303038152906040526151c3565b90506001600160a01b0381166133f25784846040516020016135c2929190617fca565b6137e8828260006151d6565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613873908490600401618075565b600060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138b891908101906180bc565b9250505090565b6138f16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061393c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613945856152d9565b60208201526000613955866156be565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139bf91908101906180bc565b868385602001516040516020016139d99493929190618105565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613a31908590600401617f5f565b600060405180830381865afa158015613a4e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7691908101906180bc565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613abe908490600401618209565b602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aff91906179b0565b613b1457816040516020016135c2919061825b565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613b599084906004016182ed565b600060405180830381865afa158015613b76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b9e91908101906180bc565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613be590849060040161833f565b602060405180830381865afa158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906179b0565b15613cbb576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613c7090849060040161833f565b600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906180bc565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613ce09190618391565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613d0c929190617e7b565b600060405180830381865afa158015613d29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5191908101906180bc565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081613d815790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613de157613de16183fd565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110613e3557613e356183fd565b602002602001018190525084604051602001613e51919061842c565b60405160208183030381529060405281600281518110613e7357613e736183fd565b602002602001018190525082604051602001613e8f9190618498565b60405160208183030381529060405281600381518110613eb157613eb16183fd565b60200260200101819052506000613ec782614df4565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250613f589060408051808201825260008082526020918201528151808301909252845182528085019082015290615941565b613f6d57856040516020016135c291906184d9565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613fc7565b511590565b61413b57826020015115614083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613602565b8260c001511561413b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613602565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161415457905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806141af9061856a565b935060ff16815181106141c4576141c46183fd565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016142159190618589565b6040516020818303038152906040528282806142309061856a565b935060ff1681518110614245576142456183fd565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806142929061856a565b935060ff16815181106142a7576142a76183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806142f49061856a565b935060ff1681518110614309576143096183fd565b602002602001018190525087602001518282806143259061856a565b935060ff168151811061433a5761433a6183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806143879061856a565b935060ff168151811061439c5761439c6183fd565b6020908102919091010152875182826143b48161856a565b935060ff16815181106143c9576143c96183fd565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806144169061856a565b935060ff168151811061442b5761442b6183fd565b602002602001018190525061443f466159a2565b828261444a8161856a565b935060ff168151811061445f5761445f6183fd565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806144ac9061856a565b935060ff16815181106144c1576144c16183fd565b6020026020010181905250868282806144d99061856a565b935060ff16815181106144ee576144ee6183fd565b60209081029190910101528551156146155760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261453f8161856a565b935060ff1681518110614554576145546183fd565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906145a4908990600401617f5f565b600060405180830381865afa1580156145c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145e991908101906180bc565b82826145f48161856a565b935060ff1681518110614609576146096183fd565b60200260200101819052505b8460200151156146e55760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261465e8161856a565b935060ff1681518110614673576146736183fd565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806146c09061856a565b935060ff16815181106146d5576146d56183fd565b60200260200101819052506148ac565b61471d613fc28660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6147b05760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826147608161856a565b935060ff1681518110614775576147756183fd565b60200260200101819052508460a00151604051602001614795919061842c565b6040516020818303038152906040528282806146c09061856a565b8460c001511580156147f35750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526147f190511590565b155b156148ac5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826148378161856a565b935060ff168151811061484c5761484c6183fd565b602002602001018190525061486088615a42565b604051602001614870919061842c565b60405160208183030381529060405282828061488b9061856a565b935060ff16815181106148a0576148a06183fd565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526148e090511590565b6149755760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826149238161856a565b935060ff1681518110614938576149386183fd565b602002602001018190525084604001518282806149549061856a565b935060ff1681518110614969576149696183fd565b60200260200101819052505b606085015115614a965760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826149be8161856a565b935060ff16815181106149d3576149d36183fd565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a6a91908101906180bc565b8282614a758161856a565b935060ff1681518110614a8a57614a8a6183fd565b60200260200101819052505b60e08501515115614b3d5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614ae08161856a565b935060ff1681518110614af557614af56183fd565b6020026020010181905250614b118560e00151600001516159a2565b8282614b1c8161856a565b935060ff1681518110614b3157614b316183fd565b60200260200101819052505b60e08501516020015115614be75760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614b8a8161856a565b935060ff1681518110614b9f57614b9f6183fd565b6020026020010181905250614bbb8560e00151602001516159a2565b8282614bc68161856a565b935060ff1681518110614bdb57614bdb6183fd565b60200260200101819052505b60e08501516040015115614c915760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614c348161856a565b935060ff1681518110614c4957614c496183fd565b6020026020010181905250614c658560e00151604001516159a2565b8282614c708161856a565b935060ff1681518110614c8557614c856183fd565b60200260200101819052505b60e08501516060015115614d3b5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614cde8161856a565b935060ff1681518110614cf357614cf36183fd565b6020026020010181905250614d0f8560e00151606001516159a2565b8282614d1a8161856a565b935060ff1681518110614d2f57614d2f6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115614d5957614d59617c8f565b604051908082528060200260200182016040528015614d8c57816020015b6060815260200190600190039081614d775790505b50905060005b8260ff168160ff161015614de557838160ff1681518110614db557614db56183fd565b6020026020010151828260ff1681518110614dd257614dd26183fd565b6020908102919091010152600101614d92565b5093505050505b949350505050565b614e1b6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614ea1918691016185f4565b600060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ee691908101906180bc565b90506000614ef48683616531565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401614f2491906178a2565b6000604051808303816000875af1158015614f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f6b919081019061863b565b805190915060030b15801590614f845750602081015151155b8015614f935750604081015151155b15613f6d5781600081518110614fab57614fab6183fd565b60200260200101516040516020016135c291906186f1565b60606000614ff88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061502f9082905b90616686565b1561518c5760006150ac826150a6846150a06150728a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906166ad565b9061670f565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615110908290616686565b1561517a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615177905b8290616794565b90505b615183816167ba565b925050506134ef565b82156151a55784846040516020016135c29291906188dd565b50506040805160208101909152600081526134ef565b509392505050565b6000808251602084016000f09392505050565b8160a00151156151e557505050565b60006151f2848484616823565b905060006151ff82614df4565b602081015181519192509060030b15801561529b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529b90604080518082018252600080825260209182015281518083019092528451825280850190820152615029565b156152a857505050505050565b604082015151156152c85781604001516040516020016135c29190618984565b806040516020016135c291906189e2565b6060600061530e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615373905b8290615941565b156153e257604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd908390616dbe565b6167ba565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615444905b8290616e48565b60010361551157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154aa90615170565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd905b8390616794565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155709061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906155d8908390616ee2565b9050600081600183516155eb9190617ddb565b815181106155fb576155fb6183fd565b6020026020010151905061569e6153dd6156716040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290616dbe565b95945050505050565b826040516020016135c29190618a4d565b50919050565b606060006156f38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506157559061536c565b15615763576134ef816167ba565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c29061543d565b60010361582c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd9061550a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261588b9061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158f3908390616ee2565b905060018151111561592f57806002825161590e9190617ddb565b8151811061591e5761591e6183fd565b602002602001015192505050919050565b50826040516020016135c29190618a4d565b805182516000911115615956575060006133f6565b8151835160208501516000929161596c91618b2b565b6159769190617ddb565b90508260200151810361598d5760019150506133f6565b82516020840151819020912014905092915050565b606060006159af83616f87565b600101905060008167ffffffffffffffff8111156159cf576159cf617c8f565b6040519080825280601f01601f1916602001820160405280156159f9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615a0357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ace905b8290617069565b15615b0e57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6d90615ac7565b15615bad57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c0c90615ac7565b15615c4c57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cab90615ac7565b80615d105750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d1090615ac7565b15615d5057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615daf90615ac7565b80615e145750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1490615ac7565b15615e5457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb390615ac7565b80615f185750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f1890615ac7565b15615f5857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fb790615ac7565b8061601c5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261601c90615ac7565b1561605c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bb90615ac7565b156160fb57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615a90615ac7565b1561619a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161f990615ac7565b1561623957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261629890615ac7565b156162d857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633790615ac7565b1561637757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d690615ac7565b8061643b5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261643b90615ac7565b1561647b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164da90615ac7565b1561651a57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516135c29290602001618b3e565b60608060005b84518110156165bc5781858281518110616553576165536183fd565b602002602001015160405160200161656c929190617f9b565b60405160208183030381529060405291506001855161658b9190617ddb565b81146165b457816040516020016165a29190618ca7565b60405160208183030381529060405291505b600101616537565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816165d55790505090508381600081518110616600576166006183fd565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616654576166546183fd565b60200260200101819052508181600281518110616673576166736183fd565b6020908102919091010152949350505050565b60208083015183518351928401516000936166a4929184919061707d565b14159392505050565b604080518082019091526000808252602082015260006166df846000015185602001518560000151866020015161718e565b90508360200151816166f19190617ddb565b84518590616700908390617ddb565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156167345750816133f6565b602080830151908401516001911461675b5750815160208481015190840151829020919020145b801561678c57825184518590616772908390617ddb565b9052508251602085018051616788908390618b2b565b9052505b509192915050565b60408051808201909152600080825260208201526167b38383836172ae565b5092915050565b60606000826000015167ffffffffffffffff8111156167db576167db617c8f565b6040519080825280601f01601f191660200182016040528015616805576020820181803683370190505b50905060006020820190506167b38185602001518660000151617359565b6060600061682f6137ec565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161684c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806168a79061856a565b935060ff16815181106168bc576168bc6183fd565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161690d9190618ce8565b6040516020818303038152906040528282806169289061856a565b935060ff168151811061693d5761693d6183fd565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061698a9061856a565b935060ff168151811061699f5761699f6183fd565b6020026020010181905250826040516020016169bb9190618498565b6040516020818303038152906040528282806169d69061856a565b935060ff16815181106169eb576169eb6183fd565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616a389061856a565b935060ff1681518110616a4d57616a4d6183fd565b6020026020010181905250616a6287846173d3565b8282616a6d8161856a565b935060ff1681518110616a8257616a826183fd565b602090810291909101015285515115616b2e5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ad48161856a565b935060ff1681518110616ae957616ae96183fd565b6020026020010181905250616b028660000151846173d3565b8282616b0d8161856a565b935060ff1681518110616b2257616b226183fd565b60200260200101819052505b856080015115616b9c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616b778161856a565b935060ff1681518110616b8c57616b8c6183fd565b6020026020010181905250616c02565b8415616c025760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616be18161856a565b935060ff1681518110616bf657616bf66183fd565b60200260200101819052505b60408601515115616c9e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616c4c8161856a565b935060ff1681518110616c6157616c616183fd565b60200260200101819052508560400151828280616c7d9061856a565b935060ff1681518110616c9257616c926183fd565b60200260200101819052505b856060015115616d085760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616ce78161856a565b935060ff1681518110616cfc57616cfc6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616d2657616d26617c8f565b604051908082528060200260200182016040528015616d5957816020015b6060815260200190600190039081616d445790505b50905060005b8260ff168160ff161015616db257838160ff1681518110616d8257616d826183fd565b6020026020010151828260ff1681518110616d9f57616d9f6183fd565b6020908102919091010152600101616d5f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616de35750816133f6565b81518351602085015160009291616df991618b2b565b616e039190617ddb565b60208401519091506001908214616e24575082516020840151819020908220145b8015616e3f57835185518690616e3b908390617ddb565b9052505b50929392505050565b6000808260000151616e6c856000015186602001518660000151876020015161718e565b616e769190618b2b565b90505b83516020850151616e8a9190618b2b565b81116167b35781616e9a81618d2d565b9250508260000151616ed1856020015183616eb59190617ddb565b8651616ec19190617ddb565b838660000151876020015161718e565b616edb9190618b2b565b9050616e79565b60606000616ef08484616e48565b616efb906001618b2b565b67ffffffffffffffff811115616f1357616f13617c8f565b604051908082528060200260200182016040528015616f4657816020015b6060815260200190600190039081616f315790505b50905060005b81518110156151bb57616f626153dd8686616794565b828281518110616f7457616f746183fd565b6020908102919091010152600101616f4c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616fd0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310616ffc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061701a57662386f26fc10000830492506010015b6305f5e1008310617032576305f5e100830492506008015b612710831061704657612710830492506004015b60648310617058576064830492506002015b600a83106133f65760010192915050565b60006170758383617413565b159392505050565b600080858411617184576020841161713057600084156170c85760016170a4866020617ddb565b6170af906008618d47565b6170ba906002618e45565b6170c49190617ddb565b1990505b83518116856170d78989618b2b565b6170e19190617ddb565b805190935082165b81811461711b578784116171035787945050505050614dec565b8361710d81618e51565b9450508284511690506170e9565b6171258785618b2b565b945050505050614dec565b83832061713d8588617ddb565b6171479087618b2b565b91505b8582106171825784822080820361716f576171658684618b2b565b9350505050614dec565b61717a600184617ddb565b92505061714a565b505b5092949350505050565b60008381868511617299576020851161724857600085156171da5760016171b6876020617ddb565b6171c1906008618d47565b6171cc906002618e45565b6171d69190617ddb565b1990505b845181166000876171eb8b8b618b2b565b6171f59190617ddb565b855190915083165b82811461723a57818610617222576172158b8b618b2b565b9650505050505050614dec565b8561722c81618d2d565b9650508386511690506171fd565b859650505050505050614dec565b508383206000905b61725a8689617ddb565b8211617297578583208082036172765783945050505050614dec565b617281600185618b2b565b935050818061728f90618d2d565b925050617250565b505b6172a38787618b2b565b979650505050505050565b604080518082019091526000808252602082015260006172e0856000015186602001518660000151876020015161718e565b6020808701805191860191909152519091506172fc9082617ddb565b83528451602086015161730f9190618b2b565b810361731e5760008552617350565b8351835161732c9190618b2b565b8551869061733b908390617ddb565b905250835161734a9082618b2b565b60208601525b50909392505050565b602081106173915781518352617370602084618b2b565b925061737d602083618b2b565b915061738a602082617ddb565b9050617359565b60001981156173c05760016173a7836020617ddb565b6173b390610100618e45565b6173bd9190617ddb565b90505b9151835183169219169190911790915250565b606060006173e184846138bf565b80516020808301516040519394506173fb93909101618e68565b60405160208183030381529060405291505092915050565b8151815160009190811115617426575081515b6020808501519084015160005b838110156174df57825182518082146174af57600019602087101561748e57600184617460896020617ddb565b61746a9190618b2b565b617475906008618d47565b617480906002618e45565b61748a9190617ddb565b1990505b81811683821681810391146174ac5797506133f69650505050505050565b50505b6174ba602086618b2b565b94506174c7602085618b2b565b935050506020816174d89190618b2b565b9050617433565b5084518651613f6d9190618ec0565b610c9f80618ee183390190565b610b4a80619b8083390190565b610f9a8061a6ca83390190565b610d5e8061b66483390190565b6107f68061c3c283390190565b610b3f8061cbb883390190565b6119e88061d6f783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161758c617591565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161758c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156176435783516001600160a01b031683526020938401939092019160010161761c565b509095945050505050565b60005b83811015617669578181015183820152602001617651565b50506000910152565b6000815180845261768a81602086016020860161764e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617780577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261776a848651617672565b6020958601959094509290920191600101617730565b5091975050506020948501949290920191506001016176c6565b50929695505050505050565b600081518084526020840193506020830160005b828110156177fa5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016177ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526178706040880182617672565b905060208201519150868103602088015261788b81836177a6565b96505050602093840193919091019060010161782c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617904858351617672565b945060209384019391909101906001016178ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261799a60408701826177a6565b9550506020938401939190910190600101617941565b6000602082840312156179c257600080fd5b815180151581146134ef57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617aad60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617adb57607f821691505b6020821081036156b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617b2657600080fd5b5051919050565b606081526000617b406060830186617672565b602083019490945250901515604090910152919050565b608081526000617b6a6080830187617672565b62ffffff861660208401526001600160a01b038516604084015282810360608401526172a38185617672565b6001600160a01b038416815282602082015260606040820152600061569e6060830184617672565b60c081526000617bd160c0830189617672565b8760208401526001600160a01b03871660408401528281036060840152617bf88187617672565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617c3b60a0830186617672565b6060830194909452509015156080909101529392505050565b828152604060208201526000614dec6040830184617672565b6001600160a01b0383168152604060208201526000614dec6040830184617672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617ce157617ce1617c8f565b60405290565b60008067ffffffffffffffff841115617d0257617d02617c8f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617d3157617d31617c8f565b604052838152905080828401851015617d4957600080fd5b6151bb84602083018561764e565b600082601f830112617d6857600080fd5b6134ef83835160208501617ce7565b600060208284031215617d8957600080fd5b815167ffffffffffffffff811115617da057600080fd5b6133f284828501617d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156133f6576133f6617dac565b6001600160a01b038716815260c060208201526000617e1060c0830188617672565b86604084015285606084015284608084015282810360a0840152617e348185617672565b9998505050505050505050565b608081526000617e546080830187617672565b8560208401526001600160a01b038516604084015282810360608401526172a38185617672565b604081526000617e8e6040830185617672565b82810360208401526134eb8185617672565b608081526000617eb36080830187617672565b8281036020840152617ec58187617672565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617f1681601a85016020880161764e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f5381601c84016020880161764e565b01601c01949350505050565b6020815260006134ef6020830184617672565b600060208284031215617f8457600080fd5b81516001600160a01b03811681146134ef57600080fd5b60008351617fad81846020880161764e565b835190830190617fc181836020880161764e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161800281601a85016020880161764e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161803f81603384016020880161764e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006134ef6080830184617672565b6000602082840312156180ce57600080fd5b815167ffffffffffffffff8111156180e557600080fd5b8201601f810184136180f657600080fd5b6133f284825160208401617ce7565b60008551618117818460208a0161764e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618151816001840160208a0161764e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161818f81600284016020890161764e565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516181d181600284016020880161764e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061821c6040830184617672565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161829381601f85016020870161764e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006183006040830184617672565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183526040830184617672565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516183c981601485016020870161764e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161846481600185016020870161764e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516184aa81846020870161764e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161855d81604b85016020870161764e565b91909101604b0192915050565b600060ff821660ff810361858057618580617dac565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006134ef6080830184617672565b60006020828403121561864d57600080fd5b815167ffffffffffffffff81111561866457600080fd5b82016060818503121561867657600080fd5b61867e617cbe565b81518060030b811461868f57600080fd5b8152602082015167ffffffffffffffff8111156186ab57600080fd5b6186b786828501617d57565b602083015250604082015167ffffffffffffffff8111156186d757600080fd5b6186e386828501617d57565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161874f81602185016020870161764e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161893b81602185016020880161764e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161897881602e84016020880161764e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618a4081602285016020870161764e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618a8581600e85016020870161764e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156133f6576133f6617dac565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618b7681601885016020880161764e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618bb381601c84016020880161764e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618cb981846020870161764e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618d2081601c85016020870161764e565b91909101601c0192915050565b60006000198203618d4057618d40617dac565b5060010190565b80820281158282048414176133f6576133f6617dac565b6001815b6001841115618d9957808504811115618d7d57618d7d617dac565b6001841615618d8b57908102905b60019390931c928002618d62565b935093915050565b600082618db0575060016133f6565b81618dbd575060006133f6565b8160018114618dd35760028114618ddd57618df9565b60019150506133f6565b60ff841115618dee57618dee617dac565b50506001821b6133f6565b5060208310610133831016604e8410600b8410161715618e1c575081810a6133f6565b618e296000198484618d5e565b8060001904821115618e3d57618e3d617dac565b029392505050565b60006134ef8383618da1565b600081618e6057618e60617dac565b506000190190565b60008351618e7a81846020880161764e565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618eb481600184016020880161764e565b01600101949350505050565b81810360008312801583831316838312821617156167b3576167b3617dac56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220327f36098800887e9eabd41aef9d7538d5aff68569774be273b40337a62c3c2864736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50620105c6806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f4240916000918491634d8943bb916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b6119e8806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220d49d6a6accb8bf72157d03d327cb4f98b0346f2cd9283cb572dde3ee0071dc7364736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. @@ -921,39 +921,48 @@ func (it *GatewayEVMZEVMTestCall0Iterator) Close() error { // GatewayEVMZEVMTestCall0 represents a Call0 event raised by the GatewayEVMZEVMTest contract. type GatewayEVMZEVMTestCall0 struct { Sender common.Address + ChainId *big.Int Receiver []byte Message []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCall0 is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// FilterCall0 is a free log retrieval operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterCall0(opts *bind.FilterOpts, sender []common.Address) (*GatewayEVMZEVMTestCall0Iterator, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterCall0(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayEVMZEVMTestCall0Iterator, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Call0", senderRule) + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Call0", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayEVMZEVMTestCall0Iterator{contract: _GatewayEVMZEVMTest.contract, event: "Call0", logs: logs, sub: sub}, nil } -// WatchCall0 is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// WatchCall0 is a free log subscription operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchCall0(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestCall0, sender []common.Address) (event.Subscription, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchCall0(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestCall0, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Call0", senderRule) + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Call0", senderRule, chainIdRule) if err != nil { return nil, err } @@ -985,9 +994,9 @@ func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchCall0(opts *bind.Wat }), nil } -// ParseCall0 is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// ParseCall0 is a log parse operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseCall0(log types.Log) (*GatewayEVMZEVMTestCall0, error) { event := new(GatewayEVMZEVMTestCall0) if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Call0", log); err != nil { @@ -2505,9 +2514,10 @@ func (it *GatewayEVMZEVMTestWithdrawalIterator) Close() error { // GatewayEVMZEVMTestWithdrawal represents a Withdrawal event raised by the GatewayEVMZEVMTest contract. type GatewayEVMZEVMTestWithdrawal struct { - From common.Address + Sender common.Address + ChainId *big.Int + Receiver []byte Zrc20 common.Address - To []byte Value *big.Int Gasfee *big.Int ProtocolFlatFee *big.Int @@ -2515,34 +2525,42 @@ type GatewayEVMZEVMTestWithdrawal struct { Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// FilterWithdrawal is a free log retrieval operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayEVMZEVMTestWithdrawalIterator, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayEVMZEVMTestWithdrawalIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayEVMZEVMTest.contract.FilterLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayEVMZEVMTestWithdrawalIterator{contract: _GatewayEVMZEVMTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil } -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// WatchWithdrawal is a free log subscription operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestWithdrawal, from []common.Address) (event.Subscription, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayEVMZEVMTestWithdrawal, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayEVMZEVMTest.contract.WatchLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } @@ -2574,9 +2592,9 @@ func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) WatchWithdrawal(opts *bin }), nil } -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseWithdrawal is a log parse operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) func (_GatewayEVMZEVMTest *GatewayEVMZEVMTestFilterer) ParseWithdrawal(log types.Log) (*GatewayEVMZEVMTestWithdrawal, error) { event := new(GatewayEVMZEVMTestWithdrawal) if err := _GatewayEVMZEVMTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { diff --git a/v2/pkg/gatewayzevm.sol/gatewayzevm.go b/v2/pkg/gatewayzevm.sol/gatewayzevm.go index 18a63fc8..299c694c 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -45,8 +45,8 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220d3c04e4efcbf4c2321bdb921767d68b27240d29d07d2982f0f334bad40c04c5664736f6c634300081a0033", } // GatewayZEVMABI is the input ABI used to generate the binding from. @@ -216,6 +216,37 @@ func (_GatewayZEVM *GatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts, return _GatewayZEVM.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayZEVM.Contract.DEFAULTADMINROLE(&_GatewayZEVM.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _GatewayZEVM.Contract.DEFAULTADMINROLE(&_GatewayZEVM.CallOpts) +} + // FUNGIBLEMODULEADDRESS is a free data retrieval call binding the contract method 0x3ce4a5bc. // // Solidity: function FUNGIBLE_MODULE_ADDRESS() view returns(address) @@ -247,6 +278,37 @@ func (_GatewayZEVM *GatewayZEVMCallerSession) FUNGIBLEMODULEADDRESS() (common.Ad return _GatewayZEVM.Contract.FUNGIBLEMODULEADDRESS(&_GatewayZEVM.CallOpts) } +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMSession) PAUSERROLE() ([32]byte, error) { + return _GatewayZEVM.Contract.PAUSERROLE(&_GatewayZEVM.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayZEVM.Contract.PAUSERROLE(&_GatewayZEVM.CallOpts) +} + // UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. // // Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) @@ -278,35 +340,97 @@ func (_GatewayZEVM *GatewayZEVMCallerSession) UPGRADEINTERFACEVERSION() (string, return _GatewayZEVM.Contract.UPGRADEINTERFACEVERSION(&_GatewayZEVM.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. // -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { var out []interface{} - err := _GatewayZEVM.contract.Call(opts, &out, "owner") + err := _GatewayZEVM.contract.Call(opts, &out, "getRoleAdmin", role) if err != nil { - return *new(common.Address), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayZEVM.Contract.GetRoleAdmin(&_GatewayZEVM.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_GatewayZEVM *GatewayZEVMCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _GatewayZEVM.Contract.GetRoleAdmin(&_GatewayZEVM.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayZEVM *GatewayZEVMCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayZEVM *GatewayZEVMSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayZEVM.Contract.HasRole(&_GatewayZEVM.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_GatewayZEVM *GatewayZEVMCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _GatewayZEVM.Contract.HasRole(&_GatewayZEVM.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GatewayZEVM *GatewayZEVMCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMSession) Owner() (common.Address, error) { - return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayZEVM *GatewayZEVMSession) Paused() (bool, error) { + return _GatewayZEVM.Contract.Paused(&_GatewayZEVM.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function owner() view returns(address) -func (_GatewayZEVM *GatewayZEVMCallerSession) Owner() (common.Address, error) { - return _GatewayZEVM.Contract.Owner(&_GatewayZEVM.CallOpts) +// Solidity: function paused() view returns(bool) +func (_GatewayZEVM *GatewayZEVMCallerSession) Paused() (bool, error) { + return _GatewayZEVM.Contract.Paused(&_GatewayZEVM.CallOpts) } // ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. @@ -340,6 +464,37 @@ func (_GatewayZEVM *GatewayZEVMCallerSession) ProxiableUUID() ([32]byte, error) return _GatewayZEVM.Contract.ProxiableUUID(&_GatewayZEVM.CallOpts) } +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayZEVM *GatewayZEVMCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _GatewayZEVM.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayZEVM *GatewayZEVMSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayZEVM.Contract.SupportsInterface(&_GatewayZEVM.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_GatewayZEVM *GatewayZEVMCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _GatewayZEVM.Contract.SupportsInterface(&_GatewayZEVM.CallOpts, interfaceId) +} + // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) @@ -371,25 +526,25 @@ func (_GatewayZEVM *GatewayZEVMCallerSession) ZetaToken() (common.Address, error return _GatewayZEVM.Contract.ZetaToken(&_GatewayZEVM.CallOpts) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "call", receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "call", receiver, chainId, message) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) Call(receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, chainId, message) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Call(receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Call(&_GatewayZEVM.TransactOpts, receiver, chainId, message) } // Deposit is a paid mutator transaction binding the contract method 0xf45346dc. @@ -518,67 +673,130 @@ func (_GatewayZEVM *GatewayZEVMTransactorSession) ExecuteRevert(context RevertCo return _GatewayZEVM.Contract.ExecuteRevert(&_GatewayZEVM.TransactOpts, context, zrc20, amount, target, message) } -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. // -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, _zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "initialize", _zetaToken) +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.GrantRole(&_GatewayZEVM.TransactOpts, role, account) } -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. // -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.GrantRole(&_GatewayZEVM.TransactOpts, role, account) } -// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize(address _zetaToken) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(_zetaToken common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken) +// Solidity: function initialize(address _zetaToken, address _admin) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "initialize", _zetaToken, _admin) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "renounceOwnership") +// Solidity: function initialize(address _zetaToken, address _admin) returns() +func (_GatewayZEVM *GatewayZEVMSession) Initialize(_zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken, _admin) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) +// Solidity: function initialize(address _zetaToken, address _admin) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(_zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken, _admin) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function renounceOwnership() returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GatewayZEVM.Contract.RenounceOwnership(&_GatewayZEVM.TransactOpts) +// Solidity: function pause() returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "pause") } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "transferOwnership", newOwner) +// Solidity: function pause() returns() +func (_GatewayZEVM *GatewayZEVMSession) Pause() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Pause(&_GatewayZEVM.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) +// Solidity: function pause() returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Pause() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Pause(&_GatewayZEVM.TransactOpts) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function transferOwnership(address newOwner) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.TransferOwnership(&_GatewayZEVM.TransactOpts, newOwner) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayZEVM *GatewayZEVMSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.RenounceRole(&_GatewayZEVM.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.RenounceRole(&_GatewayZEVM.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.RevokeRole(&_GatewayZEVM.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.RevokeRole(&_GatewayZEVM.TransactOpts, role, account) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GatewayZEVM *GatewayZEVMSession) Unpause() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Unpause(&_GatewayZEVM.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Unpause() (*types.Transaction, error) { + return _GatewayZEVM.Contract.Unpause(&_GatewayZEVM.TransactOpts) } // UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. @@ -623,67 +841,67 @@ func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw(receiver []byte, amou return _GatewayZEVM.Contract.Withdraw(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20) } -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. // -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw0(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdraw0", amount) +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Withdraw0(opts *bind.TransactOpts, amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdraw0", amount, chainId) } -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. // -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_GatewayZEVM *GatewayZEVMSession) Withdraw0(amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount, chainId) } -// Withdraw0 is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. // -// Solidity: function withdraw(uint256 amount) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw0(amount *big.Int) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount) +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Withdraw0(amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Withdraw0(&_GatewayZEVM.TransactOpts, amount, chainId) } -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. // -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall", amount, message) +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall", receiver, amount, zrc20, message) } -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. // -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) } -// WithdrawAndCall is a paid mutator transaction binding the contract method 0x267e75a0. +// WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. // -// Solidity: function withdrawAndCall(uint256 amount, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall(amount *big.Int, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, amount, message) +// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) } -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. // -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall0(opts *bind.TransactOpts, receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall0", receiver, amount, zrc20, message) +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) WithdrawAndCall0(opts *bind.TransactOpts, amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "withdrawAndCall0", amount, chainId, message) } -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. // -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMSession) WithdrawAndCall0(amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, amount, chainId, message) } -// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x7993c1e0. +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. // -// Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall0(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { - return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, receiver, amount, zrc20, message) +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) WithdrawAndCall0(amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _GatewayZEVM.Contract.WithdrawAndCall0(&_GatewayZEVM.TransactOpts, amount, chainId, message) } // Receive is a paid mutator transaction binding the contract receive function. @@ -777,39 +995,48 @@ func (it *GatewayZEVMCallIterator) Close() error { // GatewayZEVMCall represents a Call event raised by the GatewayZEVM contract. type GatewayZEVMCall struct { Sender common.Address + ChainId *big.Int Receiver []byte Message []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// FilterCall is a free log retrieval operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMCallIterator, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMCallIterator, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayZEVMCallIterator{contract: _GatewayZEVM.contract, event: "Call", logs: logs, sub: sub}, nil } -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// WatchCall is a free log subscription operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMCall, sender []common.Address) (event.Subscription, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMCall, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } @@ -841,9 +1068,9 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchCall(opts *bind.WatchOpts, sink ch }), nil } -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// ParseCall is a log parse operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) func (_GatewayZEVM *GatewayZEVMFilterer) ParseCall(log types.Log) (*GatewayZEVMCall, error) { event := new(GatewayZEVMCall) if err := _GatewayZEVM.contract.UnpackLog(event, "Call", log); err != nil { @@ -987,9 +1214,9 @@ func (_GatewayZEVM *GatewayZEVMFilterer) ParseInitialized(log types.Log) (*Gatew return event, nil } -// GatewayZEVMOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GatewayZEVM contract. -type GatewayZEVMOwnershipTransferredIterator struct { - Event *GatewayZEVMOwnershipTransferred // Event containing the contract specifics and raw log +// GatewayZEVMPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GatewayZEVM contract. +type GatewayZEVMPausedIterator struct { + Event *GatewayZEVMPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1003,7 +1230,7 @@ type GatewayZEVMOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { +func (it *GatewayZEVMPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1012,7 +1239,7 @@ func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayZEVMOwnershipTransferred) + it.Event = new(GatewayZEVMPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1027,7 +1254,7 @@ func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayZEVMOwnershipTransferred) + it.Event = new(GatewayZEVMPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1043,60 +1270,41 @@ func (it *GatewayZEVMOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMOwnershipTransferredIterator) Error() error { +func (it *GatewayZEVMPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayZEVMOwnershipTransferredIterator) Close() error { +func (it *GatewayZEVMPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayZEVMOwnershipTransferred represents a OwnershipTransferred event raised by the GatewayZEVM contract. -type GatewayZEVMOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// GatewayZEVMPaused represents a Paused event raised by the GatewayZEVM contract. +type GatewayZEVMPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GatewayZEVMOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event Paused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterPaused(opts *bind.FilterOpts) (*GatewayZEVMPausedIterator, error) { - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &GatewayZEVMOwnershipTransferredIterator{contract: _GatewayZEVM.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &GatewayZEVMPausedIterator{contract: _GatewayZEVM.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event Paused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GatewayZEVMPaused) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -1106,8 +1314,8 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchOwnershipTransferred(opts *bind.Wa select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMOwnershipTransferred) - if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(GatewayZEVMPaused) + if err := _GatewayZEVM.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -1128,21 +1336,21 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchOwnershipTransferred(opts *bind.Wa }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseOwnershipTransferred(log types.Log) (*GatewayZEVMOwnershipTransferred, error) { - event := new(GatewayZEVMOwnershipTransferred) - if err := _GatewayZEVM.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Paused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) ParsePaused(log types.Log) (*GatewayZEVMPaused, error) { + event := new(GatewayZEVMPaused) + if err := _GatewayZEVM.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log return event, nil } -// GatewayZEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayZEVM contract. -type GatewayZEVMUpgradedIterator struct { - Event *GatewayZEVMUpgraded // Event containing the contract specifics and raw log +// GatewayZEVMRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the GatewayZEVM contract. +type GatewayZEVMRoleAdminChangedIterator struct { + Event *GatewayZEVMRoleAdminChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1156,7 +1364,7 @@ type GatewayZEVMUpgradedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMUpgradedIterator) Next() bool { +func (it *GatewayZEVMRoleAdminChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1165,7 +1373,7 @@ func (it *GatewayZEVMUpgradedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayZEVMUpgraded) + it.Event = new(GatewayZEVMRoleAdminChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1180,7 +1388,7 @@ func (it *GatewayZEVMUpgradedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayZEVMUpgraded) + it.Event = new(GatewayZEVMRoleAdminChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1196,51 +1404,69 @@ func (it *GatewayZEVMUpgradedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMUpgradedIterator) Error() error { +func (it *GatewayZEVMRoleAdminChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayZEVMUpgradedIterator) Close() error { +func (it *GatewayZEVMRoleAdminChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayZEVMUpgraded represents a Upgraded event raised by the GatewayZEVM contract. -type GatewayZEVMUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos +// GatewayZEVMRoleAdminChanged represents a RoleAdminChanged event raised by the GatewayZEVM contract. +type GatewayZEVMRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. // -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayZEVMUpgradedIterator, error) { +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*GatewayZEVMRoleAdminChangedIterator, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) } - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) if err != nil { return nil, err } - return &GatewayZEVMUpgradedIterator{contract: _GatewayZEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil + return &GatewayZEVMRoleAdminChangedIterator{contract: _GatewayZEVM.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil } -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. // -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayZEVMUpgraded, implementation []common.Address) (event.Subscription, error) { +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *GatewayZEVMRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) } - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) if err != nil { return nil, err } @@ -1250,8 +1476,8 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GatewayZEVMUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + event := new(GatewayZEVMRoleAdminChanged) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return err } event.Raw = log @@ -1272,21 +1498,21 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sin }), nil } -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. // -// Solidity: event Upgraded(address indexed implementation) -func (_GatewayZEVM *GatewayZEVMFilterer) ParseUpgraded(log types.Log) (*GatewayZEVMUpgraded, error) { - event := new(GatewayZEVMUpgraded) - if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseRoleAdminChanged(log types.Log) (*GatewayZEVMRoleAdminChanged, error) { + event := new(GatewayZEVMRoleAdminChanged) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { return nil, err } event.Raw = log return event, nil } -// GatewayZEVMWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVM contract. -type GatewayZEVMWithdrawalIterator struct { - Event *GatewayZEVMWithdrawal // Event containing the contract specifics and raw log +// GatewayZEVMRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the GatewayZEVM contract. +type GatewayZEVMRoleGrantedIterator struct { + Event *GatewayZEVMRoleGranted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1300,7 +1526,7 @@ type GatewayZEVMWithdrawalIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GatewayZEVMWithdrawalIterator) Next() bool { +func (it *GatewayZEVMRoleGrantedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1309,7 +1535,7 @@ func (it *GatewayZEVMWithdrawalIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GatewayZEVMWithdrawal) + it.Event = new(GatewayZEVMRoleGranted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1324,7 +1550,7 @@ func (it *GatewayZEVMWithdrawalIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GatewayZEVMWithdrawal) + it.Event = new(GatewayZEVMRoleGranted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1340,57 +1566,668 @@ func (it *GatewayZEVMWithdrawalIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GatewayZEVMWithdrawalIterator) Error() error { +func (it *GatewayZEVMRoleGrantedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GatewayZEVMWithdrawalIterator) Close() error { +func (it *GatewayZEVMRoleGrantedIterator) Close() error { it.sub.Unsubscribe() return nil } -// GatewayZEVMWithdrawal represents a Withdrawal event raised by the GatewayZEVM contract. -type GatewayZEVMWithdrawal struct { - From common.Address - Zrc20 common.Address - To []byte - Value *big.Int - Gasfee *big.Int - ProtocolFlatFee *big.Int - Message []byte - Raw types.Log // Blockchain specific contextual infos +// GatewayZEVMRoleGranted represents a RoleGranted event raised by the GatewayZEVM contract. +type GatewayZEVMRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayZEVMRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayZEVMRoleGrantedIterator{contract: _GatewayZEVM.contract, event: "RoleGranted", logs: logs, sub: sub}, nil } -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMWithdrawalIterator, error) { +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *GatewayZEVMRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) } - logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) if err != nil { return nil, err } - return &GatewayZEVMWithdrawalIterator{contract: _GatewayZEVM.contract, event: "Withdrawal", logs: logs, sub: sub}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMRoleGranted) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVM *GatewayZEVMFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMWithdrawal, from []common.Address) (event.Subscription, error) { +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseRoleGranted(log types.Log) (*GatewayZEVMRoleGranted, error) { + event := new(GatewayZEVMRoleGranted) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) +// GatewayZEVMRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the GatewayZEVM contract. +type GatewayZEVMRoleRevokedIterator struct { + Event *GatewayZEVMRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMRoleRevoked represents a RoleRevoked event raised by the GatewayZEVM contract. +type GatewayZEVMRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*GatewayZEVMRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &GatewayZEVMRoleRevokedIterator{contract: _GatewayZEVM.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *GatewayZEVMRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMRoleRevoked) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseRoleRevoked(log types.Log) (*GatewayZEVMRoleRevoked, error) { + event := new(GatewayZEVMRoleRevoked) + if err := _GatewayZEVM.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GatewayZEVM contract. +type GatewayZEVMUnpausedIterator struct { + Event *GatewayZEVMUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMUnpaused represents a Unpaused event raised by the GatewayZEVM contract. +type GatewayZEVMUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GatewayZEVMUnpausedIterator, error) { + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GatewayZEVMUnpausedIterator{contract: _GatewayZEVM.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GatewayZEVMUnpaused) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMUnpaused) + if err := _GatewayZEVM.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseUnpaused(log types.Log) (*GatewayZEVMUnpaused, error) { + event := new(GatewayZEVMUnpaused) + if err := _GatewayZEVM.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GatewayZEVM contract. +type GatewayZEVMUpgradedIterator struct { + Event *GatewayZEVMUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMUpgraded represents a Upgraded event raised by the GatewayZEVM contract. +type GatewayZEVMUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GatewayZEVMUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GatewayZEVMUpgradedIterator{contract: _GatewayZEVM.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GatewayZEVMUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GatewayZEVMUpgraded) + if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GatewayZEVM *GatewayZEVMFilterer) ParseUpgraded(log types.Log) (*GatewayZEVMUpgraded, error) { + event := new(GatewayZEVMUpgraded) + if err := _GatewayZEVM.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMWithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the GatewayZEVM contract. +type GatewayZEVMWithdrawalIterator struct { + Event *GatewayZEVMWithdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GatewayZEVMWithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GatewayZEVMWithdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GatewayZEVMWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMWithdrawal represents a Withdrawal event raised by the GatewayZEVM contract. +type GatewayZEVMWithdrawal struct { + Sender common.Address + ChainId *big.Int + Receiver []byte + Zrc20 common.Address + Value *big.Int + Gasfee *big.Int + ProtocolFlatFee *big.Int + Message []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. +// +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) FilterWithdrawal(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMWithdrawalIterator, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } + + logs, sub, err := _GatewayZEVM.contract.FilterLogs(opts, "Withdrawal", senderRule, chainIdRule) + if err != nil { + return nil, err + } + return &GatewayZEVMWithdrawalIterator{contract: _GatewayZEVM.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. +// +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVM *GatewayZEVMFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMWithdrawal, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { + + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVM.contract.WatchLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } @@ -1422,9 +2259,9 @@ func (_GatewayZEVM *GatewayZEVMFilterer) WatchWithdrawal(opts *bind.WatchOpts, s }), nil } -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseWithdrawal is a log parse operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) func (_GatewayZEVM *GatewayZEVMFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMWithdrawal, error) { event := new(GatewayZEVMWithdrawal) if err := _GatewayZEVM.contract.UnpackLog(event, "Withdrawal", log); err != nil { diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index bf61276d..47caa611 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cbfd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610cfa565b61018f6110c3565b61018f611508565b6101b16118e4565b6040516101be91906178d1565b60405180910390f35b6101cf611946565b6040516101be919061796d565b6101b1611a88565b6101b1611ae8565b61018f611b48565b61018f611fda565b610204612329565b6040516101be9190617ad3565b6102196124ab565b6040516101be9190617b71565b61022e61257b565b6040516101be9190617be8565b61022e612676565b610219612771565b61018f612841565b61025b612a76565b60405190151581526020016101be565b61018f612b4a565b6101b1612f68565b61018f612fc8565b601f5461025b9060ff1681565b61018f61336f565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de906177e4565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526103d39160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526136d3565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015610495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190617c7f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516104fd906177f1565b604051809103906000f080158015610519573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b5050505060008060006040516105de906177fe565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561061a573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906106709061780b565b61067f96959493929190617ca8565b604051809103906000f08015801561069b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084457600080fd5b505af1158015610858573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190617d9d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ad757600080fd5b505af1158015610aeb573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190617d9d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af1158015610cf4573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190617d9d565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526110129288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190617dbf565b9050610cf483826136f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905261135092918a9060009081908990617e12565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a0906113a39088908590600401617e65565b600060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114489190617dbf565b905061145e611458600187617ead565b826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190617dbf565b90506114df85826136f2565b6114ff6114ed856001617ec0565b6027546001600160a01b0316316136f2565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190617dbf565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190617dbf565b8760405161179196959493929190617e12565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936117d99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526118309288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190617dbf565b9050610cf46114588585617ead565b6060601680548060200260200160405190810160405280929190818152602001828054801561193c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db90617ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0790617ed3565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c339190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a09150611e909088908590600401617e65565b600060405180830381600087803b158015611eaa57600080fd5b505af1158015611ebe573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f359190617dbf565b9050611f4185826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190617dbf565b9050611fc285826136f2565b6027546114ff9085906001600160a01b0316316136f2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120c457600080fd5b505af11580156120d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b031690600401617f20565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123189190617dbf565b905061232482826136f2565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020906002020160405180604001604052908160008201805461238090617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546123ac90617ed3565b80156123f95780601f106123ce576101008083540402835291602001916123f9565b820191906000526020600020905b8154815290600101906020018083116123dc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561249357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124405790505b5050505050815250508152602001906001019061234d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546124ee90617ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461251a90617ed3565b80156125675780601f1061253c57610100808354040283529160200191612567565b820191906000526020600020905b81548152906001019060200180831161254a57829003601f168201915b5050505050815260200190600101906124cf565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561265e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161260b5790505b5050505050815250508152602001906001019061259f565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127065790505b5050505050815250508152602001906001019061269a565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546127b490617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546127e090617ed3565b801561282d5780601f106128025761010080835404028352916020019161282d565b820191906000526020600020905b81548152906001019060200180831161281057829003601f168201915b505050505081526020019060010190612795565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129cc918590617f52565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c93612a149316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a41929190617f52565b600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b5050505050565b60085460009060ff1615612a8e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190617dbf565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c359190617dbf565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190617dbf565b9050612ec784826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3c9190617dbf565b9050612f4884826136f2565b602754612f609084906001600160a01b0316316136f2565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303d9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b39190617dbf565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f19818403018152908290526131de929189906000908190617f77565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156132ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d09190617dbf565b90506132e0611458600186617ead565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133559190617dbf565b905061336184826136f2565b612f606114ed846001617ec0565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190617dbf565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135709190617dbf565b604051613581959493929190617f77565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936135c99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261361f926001916001600160a01b031690600401617f20565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190617dbf565b90506123246114588484617ead565b60006136dd617818565b6136e8848483613771565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561375d57600080fd5b505afa158015612f60573d6000803e3d6000fd5b60008061377e85846137ec565b90506137e16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016137cc929190617fc5565b604051602081830303815290604052856137f8565b9150505b9392505050565b60006137e58383613826565b60c0810151516000901561381c5761381584848460c00151613841565b90506137e5565b61381584846139e7565b60006138328383613ad2565b6137e5838360200151846137f8565b60008061384c613ae2565b9050600061385a8683613bb5565b90506000613871826060015183602001518561405b565b905060006138818383898961426d565b9050600061388e826150ea565b602081015181519192509060030b15613901578982604001516040516020016138b8929190617fe7565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526138f891600401618068565b60405180910390fd5b60006139446040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152b9565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613997908490600401618068565b602060405180830381865afa1580156139b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d89190617c7f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a3c908790600401618068565b600060405180830381865afa158015613a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a819190810190618163565b90506000613aaf8285604051602001613a9b929190618198565b6040516020818303038152906040526154b9565b90506001600160a01b0381166136e85784846040516020016138b89291906181c7565b613ade828260006154cc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613b69908490600401618272565b600060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae91908101906182b9565b9250505090565b613be76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c326040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c3b856155cf565b60208201526000613c4b866159b4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906182b9565b86838560200151604051602001613ccf9493929190618302565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d27908590600401618068565b600060405180830381865afa158015613d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d6c91908101906182b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613db4908490600401618406565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190617d9d565b613e0a57816040516020016138b89190618458565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e4f9084906004016184ea565b600060405180830381865afa158015613e6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e9491908101906182b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613edb90849060040161853c565b602060405180830381865afa158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c9190617d9d565b15613fb1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f6690849060040161853c565b600060405180830381865afa158015613f83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fab91908101906182b9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613fd6919061858e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614002929190617f52565b600060405180830381865afa15801561401f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261404791908101906182b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140775790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106140d7576140d76185fa565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061412b5761412b6185fa565b6020026020010181905250846040516020016141479190618629565b60405160208183030381529060405281600281518110614169576141696185fa565b6020026020010181905250826040516020016141859190618695565b604051602081830303815290604052816003815181106141a7576141a76185fa565b602002602001018190525060006141bd826150ea565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061424e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615c37565b61426357856040516020016138b891906186d6565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156142bd565b511590565b61443157826020015115614379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016138f8565b8260c0015115614431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016138f8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161444a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144a590618767565b935060ff16815181106144ba576144ba6185fa565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161450b9190618786565b60405160208183030381529060405282828061452690618767565b935060ff168151811061453b5761453b6185fa565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061458890618767565b935060ff168151811061459d5761459d6185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806145ea90618767565b935060ff16815181106145ff576145ff6185fa565b6020026020010181905250876020015182828061461b90618767565b935060ff1681518110614630576146306185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061467d90618767565b935060ff1681518110614692576146926185fa565b6020908102919091010152875182826146aa81618767565b935060ff16815181106146bf576146bf6185fa565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061470c90618767565b935060ff1681518110614721576147216185fa565b602002602001018190525061473546615c98565b828261474081618767565b935060ff1681518110614755576147556185fa565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147a290618767565b935060ff16815181106147b7576147b76185fa565b6020026020010181905250868282806147cf90618767565b935060ff16815181106147e4576147e46185fa565b602090810291909101015285511561490b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261483581618767565b935060ff168151811061484a5761484a6185fa565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061489a908990600401618068565b600060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148df91908101906182b9565b82826148ea81618767565b935060ff16815181106148ff576148ff6185fa565b60200260200101819052505b8460200151156149db5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261495481618767565b935060ff1681518110614969576149696185fa565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149b690618767565b935060ff16815181106149cb576149cb6185fa565b6020026020010181905250614ba2565b614a136142b88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aa65760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a5681618767565b935060ff1681518110614a6b57614a6b6185fa565b60200260200101819052508460a00151604051602001614a8b9190618629565b6040516020818303038152906040528282806149b690618767565b8460c00151158015614ae9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ae790511590565b155b15614ba25760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b2d81618767565b935060ff1681518110614b4257614b426185fa565b6020026020010181905250614b5688615d38565b604051602001614b669190618629565b604051602081830303815290604052828280614b8190618767565b935060ff1681518110614b9657614b966185fa565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614bd690511590565b614c6b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c1981618767565b935060ff1681518110614c2e57614c2e6185fa565b60200260200101819052508460400151828280614c4a90618767565b935060ff1681518110614c5f57614c5f6185fa565b60200260200101819052505b606085015115614d8c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cb481618767565b935060ff1681518110614cc957614cc96185fa565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d6091908101906182b9565b8282614d6b81618767565b935060ff1681518110614d8057614d806185fa565b60200260200101819052505b60e08501515115614e335760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614dd681618767565b935060ff1681518110614deb57614deb6185fa565b6020026020010181905250614e078560e0015160000151615c98565b8282614e1281618767565b935060ff1681518110614e2757614e276185fa565b60200260200101819052505b60e08501516020015115614edd5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614e8081618767565b935060ff1681518110614e9557614e956185fa565b6020026020010181905250614eb18560e0015160200151615c98565b8282614ebc81618767565b935060ff1681518110614ed157614ed16185fa565b60200260200101819052505b60e08501516040015115614f875760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f2a81618767565b935060ff1681518110614f3f57614f3f6185fa565b6020026020010181905250614f5b8560e0015160400151615c98565b8282614f6681618767565b935060ff1681518110614f7b57614f7b6185fa565b60200260200101819052505b60e085015160600151156150315760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614fd481618767565b935060ff1681518110614fe957614fe96185fa565b60200260200101819052506150058560e0015160600151615c98565b828261501081618767565b935060ff1681518110615025576150256185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561504f5761504f61807b565b60405190808252806020026020018201604052801561508257816020015b606081526020019060019003908161506d5790505b50905060005b8260ff168160ff1610156150db57838160ff16815181106150ab576150ab6185fa565b6020026020010151828260ff16815181106150c8576150c86185fa565b6020908102919091010152600101615088565b5093505050505b949350505050565b6151116040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615197918691016187f1565b600060405180830381865afa1580156151b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151dc91908101906182b9565b905060006151ea8683616827565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161521a9190617b71565b6000604051808303816000875af1158015615239573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152619190810190618838565b805190915060030b1580159061527a5750602081015151155b80156152895750604081015151155b1561426357816000815181106152a1576152a16185fa565b60200260200101516040516020016138b891906188ee565b606060006152ee8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153259082905b9061697c565b156154825760006153a28261539c846153966153688a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169a3565b90616a05565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061540690829061697c565b1561547057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261546d905b8290616a8a565b90505b61547981616ab0565b925050506137e5565b821561549b5784846040516020016138b8929190618ada565b50506040805160208101909152600081526137e5565b509392505050565b6000808251602084016000f09392505050565b8160a00151156154db57505050565b60006154e8848484616b19565b905060006154f5826150ea565b602081015181519192509060030b1580156155915750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155919060408051808201825260008082526020918201528151808301909252845182528085019082015261531f565b1561559e57505050505050565b604082015151156155be5781604001516040516020016138b89190618b81565b806040516020016138b89190618bdf565b606060006156048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615669905b8290615c37565b156156d857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d39083906170b4565b616ab0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261573a905b829061713e565b60010361580757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a090615466565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d3905b8390616a8a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586690615662565b1561599d57604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158ce9083906171d8565b9050600081600183516158e19190617ead565b815181106158f1576158f16185fa565b602002602001015190506159946156d36159676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170b4565b95945050505050565b826040516020016138b89190618c4a565b50919050565b606060006159e98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a4b90615662565b15615a59576137e581616ab0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ab890615733565b600103615b2257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d390615800565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b8190615662565b1561599d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615be99083906171d8565b9050600181511115615c25578060028251615c049190617ead565b81518110615c1457615c146185fa565b602002602001015192505050919050565b50826040516020016138b89190618c4a565b805182516000911115615c4c575060006136ec565b81518351602085015160009291615c6291617ec0565b615c6c9190617ead565b905082602001518103615c835760019150506136ec565b82516020840151819020912014905092915050565b60606000615ca58361727d565b600101905060008167ffffffffffffffff811115615cc557615cc561807b565b6040519080825280601f01601f191660200182016040528015615cef576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615cf957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615dc4905b829061735f565b15615e0457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e6390615dbd565b15615ea357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f0290615dbd565b15615f4257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fa190615dbd565b806160065750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600690615dbd565b1561604657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160a590615dbd565b8061610a5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610a90615dbd565b1561614a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a990615dbd565b8061620e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261620e90615dbd565b1561624e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ad90615dbd565b806163125750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631290615dbd565b1561635257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b190615dbd565b156163f157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645090615dbd565b1561649057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ef90615dbd565b1561652f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261658e90615dbd565b156165ce57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261662d90615dbd565b1561666d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166cc90615dbd565b806167315750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673190615dbd565b1561677157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167d090615dbd565b1561681057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138b89290602001618d28565b60608060005b84518110156168b25781858281518110616849576168496185fa565b6020026020010151604051602001616862929190618198565b6040516020818303038152906040529150600185516168819190617ead565b81146168aa57816040516020016168989190618e91565b60405160208183030381529060405291505b60010161682d565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816168cb57905050905083816000815181106168f6576168f66185fa565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061694a5761694a6185fa565b60200260200101819052508181600281518110616969576169696185fa565b6020908102919091010152949350505050565b602080830151835183519284015160009361699a9291849190617373565b14159392505050565b604080518082019091526000808252602082015260006169d58460000151856020015185600001518660200151617484565b90508360200151816169e79190617ead565b845185906169f6908390617ead565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a2a5750816136ec565b6020808301519084015160019114616a515750815160208481015190840151829020919020145b8015616a8257825184518590616a68908390617ead565b9052508251602085018051616a7e908390617ec0565b9052505b509192915050565b6040805180820190915260008082526020820152616aa98383836175a4565b5092915050565b60606000826000015167ffffffffffffffff811115616ad157616ad161807b565b6040519080825280601f01601f191660200182016040528015616afb576020820181803683370190505b5090506000602082019050616aa9818560200151866000015161764f565b60606000616b25613ae2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b4257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616b9d90618767565b935060ff1681518110616bb257616bb26185fa565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c039190618ed2565b604051602081830303815290604052828280616c1e90618767565b935060ff1681518110616c3357616c336185fa565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616c8090618767565b935060ff1681518110616c9557616c956185fa565b602002602001018190525082604051602001616cb19190618695565b604051602081830303815290604052828280616ccc90618767565b935060ff1681518110616ce157616ce16185fa565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d2e90618767565b935060ff1681518110616d4357616d436185fa565b6020026020010181905250616d5887846176c9565b8282616d6381618767565b935060ff1681518110616d7857616d786185fa565b602090810291909101015285515115616e245760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616dca81618767565b935060ff1681518110616ddf57616ddf6185fa565b6020026020010181905250616df88660000151846176c9565b8282616e0381618767565b935060ff1681518110616e1857616e186185fa565b60200260200101819052505b856080015115616e925760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616e6d81618767565b935060ff1681518110616e8257616e826185fa565b6020026020010181905250616ef8565b8415616ef85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616ed781618767565b935060ff1681518110616eec57616eec6185fa565b60200260200101819052505b60408601515115616f945760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f4281618767565b935060ff1681518110616f5757616f576185fa565b60200260200101819052508560400151828280616f7390618767565b935060ff1681518110616f8857616f886185fa565b60200260200101819052505b856060015115616ffe5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616fdd81618767565b935060ff1681518110616ff257616ff26185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561701c5761701c61807b565b60405190808252806020026020018201604052801561704f57816020015b606081526020019060019003908161703a5790505b50905060005b8260ff168160ff1610156170a857838160ff1681518110617078576170786185fa565b6020026020010151828260ff1681518110617095576170956185fa565b6020908102919091010152600101617055565b50979650505050505050565b60408051808201909152600080825260208201528151835110156170d95750816136ec565b815183516020850151600092916170ef91617ec0565b6170f99190617ead565b6020840151909150600190821461711a575082516020840151819020908220145b801561713557835185518690617131908390617ead565b9052505b50929392505050565b60008082600001516171628560000151866020015186600001518760200151617484565b61716c9190617ec0565b90505b835160208501516171809190617ec0565b8111616aa9578161719081618f17565b92505082600001516171c78560200151836171ab9190617ead565b86516171b79190617ead565b8386600001518760200151617484565b6171d19190617ec0565b905061716f565b606060006171e6848461713e565b6171f1906001617ec0565b67ffffffffffffffff8111156172095761720961807b565b60405190808252806020026020018201604052801561723c57816020015b60608152602001906001900390816172275790505b50905060005b81518110156154b1576172586156d38686616a8a565b82828151811061726a5761726a6185fa565b6020908102919091010152600101617242565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106172c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106172f2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061731057662386f26fc10000830492506010015b6305f5e1008310617328576305f5e100830492506008015b612710831061733c57612710830492506004015b6064831061734e576064830492506002015b600a83106136ec5760010192915050565b600061736b8383617709565b159392505050565b60008085841161747a576020841161742657600084156173be57600161739a866020617ead565b6173a5906008618f31565b6173b090600261902f565b6173ba9190617ead565b1990505b83518116856173cd8989617ec0565b6173d79190617ead565b805190935082165b818114617411578784116173f957879450505050506150e2565b836174038161903b565b9450508284511690506173df565b61741b8785617ec0565b9450505050506150e2565b8383206174338588617ead565b61743d9087617ec0565b91505b858210617478578482208082036174655761745b8684617ec0565b93505050506150e2565b617470600184617ead565b925050617440565b505b5092949350505050565b6000838186851161758f576020851161753e57600085156174d05760016174ac876020617ead565b6174b7906008618f31565b6174c290600261902f565b6174cc9190617ead565b1990505b845181166000876174e18b8b617ec0565b6174eb9190617ead565b855190915083165b828114617530578186106175185761750b8b8b617ec0565b96505050505050506150e2565b8561752281618f17565b9650508386511690506174f3565b8596505050505050506150e2565b508383206000905b6175508689617ead565b821161758d5785832080820361756c57839450505050506150e2565b617577600185617ec0565b935050818061758590618f17565b925050617546565b505b6175998787617ec0565b979650505050505050565b604080518082019091526000808252602082015260006175d68560000151866020015186600001518760200151617484565b6020808701805191860191909152519091506175f29082617ead565b8352845160208601516176059190617ec0565b81036176145760008552617646565b835183516176229190617ec0565b85518690617631908390617ead565b90525083516176409082617ec0565b60208601525b50909392505050565b602081106176875781518352617666602084617ec0565b9250617673602083617ec0565b9150617680602082617ead565b905061764f565b60001981156176b657600161769d836020617ead565b6176a99061010061902f565b6176b39190617ead565b90505b9151835183169219169190911790915250565b606060006176d78484613bb5565b80516020808301516040519394506176f193909101619052565b60405160208183030381529060405291505092915050565b815181516000919081111561771c575081515b6020808501519084015160005b838110156177d557825182518082146177a557600019602087101561778457600184617756896020617ead565b6177609190617ec0565b61776b906008618f31565b61777690600261902f565b6177809190617ead565b1990505b81811683821681810391146177a25797506136ec9650505050505050565b50505b6177b0602086617ec0565b94506177bd602085617ec0565b935050506020816177ce9190617ec0565b9050617729565b508451865161426391906190aa565b610b67806190cb83390190565b61053f80619c3283390190565b61106f8061a17183390190565b6119e88061b1e083390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161785b617860565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161785b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179125783516001600160a01b03168352602093840193909201916001016178eb565b509095945050505050565b60005b83811015617938578181015183820152602001617920565b50506000910152565b6000815180845261795981602086016020860161791d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617a4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a39848651617941565b60209586019590945092909201916001016179ff565b509197505050602094850194929092019150600101617995565b50929695505050505050565b600081518084526020840193506020830160005b82811015617ac95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617a89565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b3f6040880182617941565b9050602082015191508681036020880152617b5a8183617a75565b965050506020938401939190910190600101617afb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617bd3858351617941565b94506020938401939190910190600101617b99565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617c696040870182617a75565b9550506020938401939190910190600101617c10565b600060208284031215617c9157600080fd5b81516001600160a01b03811681146137e557600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617d8360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617daf57600080fd5b815180151581146137e557600080fd5b600060208284031215617dd157600080fd5b5051919050565b608081526000617deb6080830187617941565b8560208401526001600160a01b038516604084015282810360608401526175998185617941565b6001600160a01b038716815260c060208201526000617e3460c0830188617941565b86604084015285606084015284608084015282810360a0840152617e588185617941565b9998505050505050505050565b8281526040602082015260006150e26040830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156136ec576136ec617e7e565b808201808211156136ec576136ec617e7e565b600181811c90821680617ee757607f821691505b6020821081036159ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617f336060830186617941565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617f656040830185617941565b82810360208401526137e18185617941565b6001600160a01b038616815260c060208201526000617f9960c0830187617941565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b03831681526040602082015260006150e26040830184617941565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161801f81601a85016020880161791d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161805c81601c84016020880161791d565b01601c01949350505050565b6020815260006137e56020830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156180cd576180cd61807b565b60405290565b60008067ffffffffffffffff8411156180ee576180ee61807b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561811d5761811d61807b565b60405283815290508082840185101561813557600080fd5b6154b184602083018561791d565b600082601f83011261815457600080fd5b6137e5838351602085016180d3565b60006020828403121561817557600080fd5b815167ffffffffffffffff81111561818c57600080fd5b6136e884828501618143565b600083516181aa81846020880161791d565b8351908301906181be81836020880161791d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516181ff81601a85016020880161791d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161823c81603384016020880161791d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006137e56080830184617941565b6000602082840312156182cb57600080fd5b815167ffffffffffffffff8111156182e257600080fd5b8201601f810184136182f357600080fd5b6136e8848251602084016180d3565b60008551618314818460208a0161791d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161834e816001840160208a0161791d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161838c81600284016020890161791d565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516183ce81600284016020880161791d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184196040830184617941565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161849081601f85016020870161791d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006184fd6040830184617941565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061854f6040830184617941565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516185c681601485016020870161791d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161866181600185016020870161791d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516186a781846020870161791d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161875a81604b85016020870161791d565b91909101604b0192915050565b600060ff821660ff810361877d5761877d617e7e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006137e56080830184617941565b60006020828403121561884a57600080fd5b815167ffffffffffffffff81111561886157600080fd5b82016060818503121561887357600080fd5b61887b6180aa565b81518060030b811461888c57600080fd5b8152602082015167ffffffffffffffff8111156188a857600080fd5b6188b486828501618143565b602083015250604082015167ffffffffffffffff8111156188d457600080fd5b6188e086828501618143565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161894c81602185016020870161791d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618b3881602185016020880161791d565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618b7581602e84016020880161791d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618c3d81602285016020870161791d565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618c8281600e85016020870161791d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618d6081601885016020880161791d565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618d9d81601c84016020880161791d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618ea381846020870161791d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618f0a81601c85016020870161791d565b91909101601c0192915050565b60006000198203618f2a57618f2a617e7e565b5060010190565b80820281158282048414176136ec576136ec617e7e565b6001815b6001841115618f8357808504811115618f6757618f67617e7e565b6001841615618f7557908102905b60019390931c928002618f4c565b935093915050565b600082618f9a575060016136ec565b81618fa7575060006136ec565b8160018114618fbd5760028114618fc757618fe3565b60019150506136ec565b60ff841115618fd857618fd8617e7e565b50506001821b6136ec565b5060208310610133831016604e8410600b8410161715619006575081810a6136ec565b6190136000198484618f48565b806000190482111561902757619027617e7e565b029392505050565b60006137e58383618f8b565b60008161904a5761904a617e7e565b506000190190565b6000835161906481846020880161791d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161909e81600184016020880161791d565b01600101949350505050565b8181036000831280158383131683831282161715616aa957616aa9617e7e56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a26469706673582212206601a00434c306141cf3382fc0a5b19f095b322077347bc4ebb2562b6117d62664736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cc988061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169189916000918491634d8943bb916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b6119e88061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220af8f49670b75519cf2a646a68c6ac25f69644a7a8517dc20436fe53c85c66d7564736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. @@ -872,39 +872,48 @@ func (it *GatewayZEVMInboundTestCallIterator) Close() error { // GatewayZEVMInboundTestCall represents a Call event raised by the GatewayZEVMInboundTest contract. type GatewayZEVMInboundTestCall struct { Sender common.Address + ChainId *big.Int Receiver []byte Message []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// FilterCall is a free log retrieval operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMInboundTestCallIterator, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMInboundTestCallIterator, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayZEVMInboundTestCallIterator{contract: _GatewayZEVMInboundTest.contract, event: "Call", logs: logs, sub: sub}, nil } -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// WatchCall is a free log subscription operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestCall, sender []common.Address) (event.Subscription, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestCall, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } @@ -936,9 +945,9 @@ func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchCall(opts *b }), nil } -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// ParseCall is a log parse operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseCall(log types.Log) (*GatewayZEVMInboundTestCall, error) { event := new(GatewayZEVMInboundTestCall) if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Call", log); err != nil { @@ -1017,9 +1026,10 @@ func (it *GatewayZEVMInboundTestWithdrawalIterator) Close() error { // GatewayZEVMInboundTestWithdrawal represents a Withdrawal event raised by the GatewayZEVMInboundTest contract. type GatewayZEVMInboundTestWithdrawal struct { - From common.Address + Sender common.Address + ChainId *big.Int + Receiver []byte Zrc20 common.Address - To []byte Value *big.Int Gasfee *big.Int ProtocolFlatFee *big.Int @@ -1027,34 +1037,42 @@ type GatewayZEVMInboundTestWithdrawal struct { Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// FilterWithdrawal is a free log retrieval operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMInboundTestWithdrawalIterator, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMInboundTestWithdrawalIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVMInboundTest.contract.FilterLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayZEVMInboundTestWithdrawalIterator{contract: _GatewayZEVMInboundTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil } -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// WatchWithdrawal is a free log subscription operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestWithdrawal, from []common.Address) (event.Subscription, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMInboundTestWithdrawal, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVMInboundTest.contract.WatchLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } @@ -1086,9 +1104,9 @@ func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) WatchWithdrawal(o }), nil } -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseWithdrawal is a log parse operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) func (_GatewayZEVMInboundTest *GatewayZEVMInboundTestFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMInboundTestWithdrawal, error) { event := new(GatewayZEVMInboundTestWithdrawal) if err := _GatewayZEVMInboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index 12a41407..a0582622 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d73a8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637f924c4e1161012a578063c2725318116100bd578063e20c9f711161008c578063f5a3573311610071578063f5a357331461035c578063fa7626d414610364578063fc79171b1461037157600080fd5b8063e20c9f711461034c578063eba3c49c1461035457600080fd5b8063c27253181461032c578063c324827214610334578063cced12c71461033c578063df690b9a1461034457600080fd5b8063aed71d97116100f9578063aed71d97146102fc578063b0464fdc14610304578063b5508aa91461030c578063ba414fa61461031457600080fd5b80637f924c4e146102c257806385226c81146102ca578063916a17c6146102df57806396d9d876146102f457600080fd5b80633a25c460116101a2578063461fc5af11610171578063461fc5af14610295578063597cfeb01461029d57806366d9a9a0146102a5578063720b9aa9146102ba57600080fd5b80633a25c460146102755780633e5e3c231461027d5780633f7286f41461028557806344b2a40b1461028d57600080fd5b80631ed7831c116101de5780631ed7831c146102325780631fe68797146102505780632ade38801461025857806331d099561461026d57600080fd5b806309f080da146102105780630a9254e41461021a578063104b352214610222578063198d5ca41461022a575b600080fd5b610218610379565b005b61021861056d565b610218610fcf565b6102186111c1565b61023a61147b565b60405161024791906183b7565b60405180910390f35b6102186114dd565b610260611a0c565b6040516102479190618453565b610218611b4e565b610218611d0d565b61023a611ec8565b61023a611f28565b610218611f88565b610218612110565b6102186122ce565b6102ad6126a4565b60405161024791906185b9565b610218612826565b610218612a99565b6102d2612cc9565b6040516102479190618657565b6102e7612d99565b60405161024791906186ce565b610218612e94565b610218612fe7565b6102e76132f3565b6102d26133ee565b61031c6134be565b6040519015158152602001610247565b610218613592565b61021861374b565b610218613904565b610218613aef565b61023a613cad565b610218613d0d565b610218613ecb565b601f5461031c9060ff1681565b610218614082565b600060405160200161038a90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b600060405180830381600087803b15801561055157600080fd5b505af1158015610565573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105b3906182ca565b604051809103906000f0801580156105cf573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526106a89160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526141b9565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190618835565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107d2906182d7565b604051809103906000f0801580156107ee573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050505060008060006040516108b3906182e4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108ef573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610945906182f1565b6109549695949392919061885e565b604051809103906000f080158015610970573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190618953565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190618953565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b50505050565b604051600190600090610fe490602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906189af565b905061125c6000826141d8565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146991906189af565b90506114766000826141d8565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156114d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114b5575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b91906189af565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906189af565b6024546040519192506001600160a01b0316319060009061161d90602001618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061177a93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546117aa936001600160a01b03928316928c9216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506118769286928c929116908890600401618975565b600060405180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193491906189af565b90506119496119438888618a6a565b826141d8565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906189af565b90506119e386826141d8565b611a026119f08987618a7d565b6024546001600160a01b0316316141d8565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611b4557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b2e578382906000526020600020018054611aa190618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054611acd90618a90565b8015611b1a5780601f10611aef57610100808354040283529160200191611b1a565b820191906000526020600020905b815481529060010190602001808311611afd57829003601f168201915b505050505081526020019060010190611a82565b505050508152505081526020019060010190611a30565b50505050905090565b6000604051602001611b5f90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015611c9b57600080fd5b505af1158015611caf573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f5004945061053793879381169260019291169089906004016187e0565b604051600190600090611d2290602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611dec57600080fd5b505af1158015611e00573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b606060188054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505050565b600060405160200161212190618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b91906189af565b90506123686000826141d8565b600060405160200161237990618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506124d693506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612507936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506125da93879381169260019291169089906004016187e0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269791906189af565b9050610fc96001826141d8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002090600202016040518060400160405290816000820180546126fb90618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461272790618a90565b80156127745780601f1061274957610100808354040283529160200191612774565b820191906000526020600020905b81548152906001019060200180831161275757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561280e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127bb5790505b505050505081525050815260200190600101906126c8565b600060405160200161283790618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061299493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546129c5936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612a2757600080fd5b505af1158015612a3b573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b945061053793879381169260019291169089906004016187e0565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2791906189af565b9050612b346000826141d8565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b8d57600080fd5b505af1158015612ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd91906189af565b905061147683826141d8565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611b45578382906000526020600020018054612d0c90618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3890618a90565b8015612d855780601f10612d5a57610100808354040283529160200191612d85565b820191906000526020600020905b815481529060010190602001808311612d6857829003601f168201915b505050505081526020019060010190612ced565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e7c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612e295790505b50505050508152505081526020019060010190612dbd565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc91506064016120db565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307491906189af565b90506130816000826141d8565b600060405160200161309290618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506131ef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613220936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561328157600080fd5b505af1158015613295573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506125da93879381169260019291169089906004016187e0565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156133d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116133835790505b50505050508152505081526020019060010190613317565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002001805461343190618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461345d90618a90565b80156134aa5780601f1061347f576101008083540402835291602001916134aa565b820191906000526020600020905b81548152906001019060200180831161348d57829003601f168201915b505050505081526020019060010190613412565b60085460009060ff16156134d6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358b91906189af565b1415905090565b60006040516020016135a390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561366d57600080fd5b505af1158015613681573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136de57600080fd5b505af11580156136f2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105379286921690600190869089906004016187e0565b600060405160200161375c90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105379286921690600190869089906004016187e0565b600060405160200161391590618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a0357600080fd5b505af1158015613a17573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999489450613a7293506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613aa3936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611c81565b6000604051602001613b0090618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613bca57600080fd5b505af1158015613bde573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b606060158054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b6000604051602001613d1e90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613de857600080fd5b505af1158015613dfc573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613e5957600080fd5b505af1158015613e6d573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b604051600190600090613ee090602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613faa57600080fd5b505af1158015613fbe573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561401b57600080fd5b505af115801561402f573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061118a908490879085908890600401618975565b600060405160200161409390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561415d57600080fd5b505af1158015614171573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401612a0d565b60006141c36182fe565b6141ce848483614257565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561424357600080fd5b505afa158015610565573d6000803e3d6000fd5b60008061426485846142d2565b90506142c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016142b2929190618add565b604051602081830303815290604052856142de565b9150505b9392505050565b60006142cb838361430c565b60c08101515160009015614302576142fb84848460c00151614327565b90506142cb565b6142fb84846144cd565b600061431883836145b8565b6142cb838360200151846142de565b6000806143326145c8565b90506000614340868361469b565b905060006143578260600151836020015185614b41565b9050600061436783838989614d53565b9050600061437482615bd0565b602081015181519192509060030b156143e75789826040015160405160200161439e929190618aff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526143de91600401618b80565b60405180910390fd5b600061442a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615d9f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061447d908490600401618b80565b602060405180830381865afa15801561449a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144be9190618835565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614522908790600401618b80565b600060405180830381865afa15801561453f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145679190810190618c7b565b905060006145958285604051602001614581929190618cb0565b604051602081830303815290604052615f9f565b90506001600160a01b0381166141ce57848460405160200161439e929190618cdf565b6145c482826000615fb2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061464f908490600401618d8a565b600060405180830381865afa15801561466c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146949190810190618dd1565b9250505090565b6146cd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506147186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614721856160b5565b602082015260006147318661649a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261479b9190810190618dd1565b868385602001516040516020016147b59493929190618e1a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061480d908590600401618b80565b600060405180830381865afa15801561482a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148529190810190618dd1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061489a908490600401618f1e565b602060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148db9190618953565b6148f0578160405160200161439e9190618f70565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614935908490600401619002565b600060405180830381865afa158015614952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261497a9190810190618dd1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906149c1908490600401619054565b602060405180830381865afa1580156149de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a029190618953565b15614a97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614a4c908490600401619054565b600060405180830381865afa158015614a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a919190810190618dd1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614abc91906190a6565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614ae8929190619112565b600060405180830381865afa158015614b05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b2d9190810190618dd1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614b5d5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614bbd57614bbd619137565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614c1157614c11619137565b602002602001018190525084604051602001614c2d9190619166565b60405160208183030381529060405281600281518110614c4f57614c4f619137565b602002602001018190525082604051602001614c6b91906191d2565b60405160208183030381529060405281600381518110614c8d57614c8d619137565b60200260200101819052506000614ca382615bd0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614d34906040805180820182526000808252602091820152815180830190925284518252808501908201529061671d565b614d49578560405160200161439e9190619213565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614da3565b511590565b614f1757826020015115614e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016143de565b8260c0015115614f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016143de565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614f3057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614f8b906192a4565b935060ff1681518110614fa057614fa0619137565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614ff191906192c3565b60405160208183030381529060405282828061500c906192a4565b935060ff168151811061502157615021619137565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061506e906192a4565b935060ff168151811061508357615083619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806150d0906192a4565b935060ff16815181106150e5576150e5619137565b60200260200101819052508760200151828280615101906192a4565b935060ff168151811061511657615116619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280615163906192a4565b935060ff168151811061517857615178619137565b602090810291909101015287518282615190816192a4565b935060ff16815181106151a5576151a5619137565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806151f2906192a4565b935060ff168151811061520757615207619137565b602002602001018190525061521b4661677e565b8282615226816192a4565b935060ff168151811061523b5761523b619137565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615288906192a4565b935060ff168151811061529d5761529d619137565b6020026020010181905250868282806152b5906192a4565b935060ff16815181106152ca576152ca619137565b60209081029190910101528551156153f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261531b816192a4565b935060ff168151811061533057615330619137565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615380908990600401618b80565b600060405180830381865afa15801561539d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526153c59190810190618dd1565b82826153d0816192a4565b935060ff16815181106153e5576153e5619137565b60200260200101819052505b8460200151156154c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261543a816192a4565b935060ff168151811061544f5761544f619137565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061549c906192a4565b935060ff16815181106154b1576154b1619137565b6020026020010181905250615688565b6154f9614d9e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61558c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261553c816192a4565b935060ff168151811061555157615551619137565b60200260200101819052508460a001516040516020016155719190619166565b60405160208183030381529060405282828061549c906192a4565b8460c001511580156155cf5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526155cd90511590565b155b156156885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615613816192a4565b935060ff168151811061562857615628619137565b602002602001018190525061563c8861681e565b60405160200161564c9190619166565b604051602081830303815290604052828280615667906192a4565b935060ff168151811061567c5761567c619137565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526156bc90511590565b6157515760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826156ff816192a4565b935060ff168151811061571457615714619137565b60200260200101819052508460400151828280615730906192a4565b935060ff168151811061574557615745619137565b60200260200101819052505b6060850151156158725760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261579a816192a4565b935060ff16815181106157af576157af619137565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561581e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158469190810190618dd1565b8282615851816192a4565b935060ff168151811061586657615866619137565b60200260200101819052505b60e085015151156159195760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826158bc816192a4565b935060ff16815181106158d1576158d1619137565b60200260200101819052506158ed8560e001516000015161677e565b82826158f8816192a4565b935060ff168151811061590d5761590d619137565b60200260200101819052505b60e085015160200151156159c35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615966816192a4565b935060ff168151811061597b5761597b619137565b60200260200101819052506159978560e001516020015161677e565b82826159a2816192a4565b935060ff16815181106159b7576159b7619137565b60200260200101819052505b60e08501516040015115615a6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615a10816192a4565b935060ff1681518110615a2557615a25619137565b6020026020010181905250615a418560e001516040015161677e565b8282615a4c816192a4565b935060ff1681518110615a6157615a61619137565b60200260200101819052505b60e08501516060015115615b175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615aba816192a4565b935060ff1681518110615acf57615acf619137565b6020026020010181905250615aeb8560e001516060015161677e565b8282615af6816192a4565b935060ff1681518110615b0b57615b0b619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615b3557615b35618b93565b604051908082528060200260200182016040528015615b6857816020015b6060815260200190600190039081615b535790505b50905060005b8260ff168160ff161015615bc157838160ff1681518110615b9157615b91619137565b6020026020010151828260ff1681518110615bae57615bae619137565b6020908102919091010152600101615b6e565b5093505050505b949350505050565b615bf76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615c7d9186910161932e565b600060405180830381865afa158015615c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615cc29190810190618dd1565b90506000615cd0868361730d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615d009190618657565b6000604051808303816000875af1158015615d1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d479190810190619375565b805190915060030b15801590615d605750602081015151155b8015615d6f5750604081015151155b15614d495781600081518110615d8757615d87619137565b602002602001015160405160200161439e919061942b565b60606000615dd48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615e0b9082905b90617462565b15615f68576000615e8882615e8284615e7c615e4e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617489565b906174eb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615eec908290617462565b15615f5657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f53905b8290617570565b90505b615f5f81617596565b925050506142cb565b8215615f8157848460405160200161439e929190619617565b50506040805160208101909152600081526142cb565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615fc157505050565b6000615fce8484846175ff565b90506000615fdb82615bd0565b602081015181519192509060030b1580156160775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261607790604080518082018252600080825260209182015281518083019092528451825280850190820152615e05565b1561608457505050505050565b604082015151156160a457816040015160405160200161439e91906196be565b8060405160200161439e919061971c565b606060006160ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061614f905b829061671d565b156161be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9908390617b9a565b617596565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616220905b8290617c24565b6001036162ed57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261628690615f4c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9905b8390617570565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634c90616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906163b4908390617cbe565b9050600081600183516163c79190618a6a565b815181106163d7576163d7619137565b6020026020010151905061647a6161b961644d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617b9a565b95945050505050565b8260405160200161439e9190619787565b50919050565b606060006164cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061653190616148565b1561653f576142cb81617596565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261659e90616219565b60010361660857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9906162e6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261666790616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906166cf908390617cbe565b905060018151111561670b5780600282516166ea9190618a6a565b815181106166fa576166fa619137565b602002602001015192505050919050565b508260405160200161439e9190619787565b805182516000911115616732575060006141d2565b8151835160208501516000929161674891618a7d565b6167529190618a6a565b9050826020015181036167695760019150506141d2565b82516020840151819020912014905092915050565b6060600061678b83617d63565b600101905060008167ffffffffffffffff8111156167ab576167ab618b93565b6040519080825280601f01601f1916602001820160405280156167d5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846167df57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916168aa905b8290617e45565b156168ea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616949906168a3565b1561698957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169e8906168a3565b15616a2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a87906168a3565b80616aec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616aec906168a3565b15616b2c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b8b906168a3565b80616bf05750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf0906168a3565b15616c3057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c8f906168a3565b80616cf45750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cf4906168a3565b15616d3457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d93906168a3565b80616df85750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616df8906168a3565b15616e3857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e97906168a3565b15616ed757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f36906168a3565b15616f7657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fd5906168a3565b1561701557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617074906168a3565b156170b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617113906168a3565b1561715357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171b2906168a3565b806172175750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617217906168a3565b1561725757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172b6906168a3565b156172f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161439e9290602001619865565b60608060005b8451811015617398578185828151811061732f5761732f619137565b6020026020010151604051602001617348929190618cb0565b6040516020818303038152906040529150600185516173679190618a6a565b8114617390578160405160200161737e91906199ce565b60405160208183030381529060405291505b600101617313565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816173b157905050905083816000815181106173dc576173dc619137565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061743057617430619137565b6020026020010181905250818160028151811061744f5761744f619137565b6020908102919091010152949350505050565b60208083015183518351928401516000936174809291849190617e59565b14159392505050565b604080518082019091526000808252602082015260006174bb8460000151856020015185600001518660200151617f6a565b90508360200151816174cd9190618a6a565b845185906174dc908390618a6a565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156175105750816141d2565b60208083015190840151600191146175375750815160208481015190840151829020919020145b80156175685782518451859061754e908390618a6a565b9052508251602085018051617564908390618a7d565b9052505b509192915050565b604080518082019091526000808252602082015261758f83838361808a565b5092915050565b60606000826000015167ffffffffffffffff8111156175b7576175b7618b93565b6040519080825280601f01601f1916602001820160405280156175e1576020820181803683370190505b509050600060208201905061758f8185602001518660000151618135565b6060600061760b6145c8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161762857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617683906192a4565b935060ff168151811061769857617698619137565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016176e99190619a0f565b604051602081830303815290604052828280617704906192a4565b935060ff168151811061771957617719619137565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617766906192a4565b935060ff168151811061777b5761777b619137565b60200260200101819052508260405160200161779791906191d2565b6040516020818303038152906040528282806177b2906192a4565b935060ff16815181106177c7576177c7619137565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617814906192a4565b935060ff168151811061782957617829619137565b602002602001018190525061783e87846181af565b8282617849816192a4565b935060ff168151811061785e5761785e619137565b60209081029190910101528551511561790a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826178b0816192a4565b935060ff16815181106178c5576178c5619137565b60200260200101819052506178de8660000151846181af565b82826178e9816192a4565b935060ff16815181106178fe576178fe619137565b60200260200101819052505b8560800151156179785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617953816192a4565b935060ff168151811061796857617968619137565b60200260200101819052506179de565b84156179de5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826179bd816192a4565b935060ff16815181106179d2576179d2619137565b60200260200101819052505b60408601515115617a7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617a28816192a4565b935060ff1681518110617a3d57617a3d619137565b60200260200101819052508560400151828280617a59906192a4565b935060ff1681518110617a6e57617a6e619137565b60200260200101819052505b856060015115617ae45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617ac3816192a4565b935060ff1681518110617ad857617ad8619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617b0257617b02618b93565b604051908082528060200260200182016040528015617b3557816020015b6060815260200190600190039081617b205790505b50905060005b8260ff168160ff161015617b8e57838160ff1681518110617b5e57617b5e619137565b6020026020010151828260ff1681518110617b7b57617b7b619137565b6020908102919091010152600101617b3b565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617bbf5750816141d2565b81518351602085015160009291617bd591618a7d565b617bdf9190618a6a565b60208401519091506001908214617c00575082516020840151819020908220145b8015617c1b57835185518690617c17908390618a6a565b9052505b50929392505050565b6000808260000151617c488560000151866020015186600001518760200151617f6a565b617c529190618a7d565b90505b83516020850151617c669190618a7d565b811161758f5781617c7681619a54565b9250508260000151617cad856020015183617c919190618a6a565b8651617c9d9190618a6a565b8386600001518760200151617f6a565b617cb79190618a7d565b9050617c55565b60606000617ccc8484617c24565b617cd7906001618a7d565b67ffffffffffffffff811115617cef57617cef618b93565b604051908082528060200260200182016040528015617d2257816020015b6060815260200190600190039081617d0d5790505b50905060005b8151811015615f9757617d3e6161b98686617570565b828281518110617d5057617d50619137565b6020908102919091010152600101617d28565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617dac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617dd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617df657662386f26fc10000830492506010015b6305f5e1008310617e0e576305f5e100830492506008015b6127108310617e2257612710830492506004015b60648310617e34576064830492506002015b600a83106141d25760010192915050565b6000617e5183836181ef565b159392505050565b600080858411617f605760208411617f0c5760008415617ea4576001617e80866020618a6a565b617e8b906008619a6e565b617e96906002619b6c565b617ea09190618a6a565b1990505b8351811685617eb38989618a7d565b617ebd9190618a6a565b805190935082165b818114617ef757878411617edf5787945050505050615bc8565b83617ee981619b78565b945050828451169050617ec5565b617f018785618a7d565b945050505050615bc8565b838320617f198588618a6a565b617f239087618a7d565b91505b858210617f5e57848220808203617f4b57617f418684618a7d565b9350505050615bc8565b617f56600184618a6a565b925050617f26565b505b5092949350505050565b6000838186851161807557602085116180245760008515617fb6576001617f92876020618a6a565b617f9d906008619a6e565b617fa8906002619b6c565b617fb29190618a6a565b1990505b84518116600087617fc78b8b618a7d565b617fd19190618a6a565b855190915083165b82811461801657818610617ffe57617ff18b8b618a7d565b9650505050505050615bc8565b8561800881619a54565b965050838651169050617fd9565b859650505050505050615bc8565b508383206000905b6180368689618a6a565b8211618073578583208082036180525783945050505050615bc8565b61805d600185618a7d565b935050818061806b90619a54565b92505061802c565b505b61807f8787618a7d565b979650505050505050565b604080518082019091526000808252602082015260006180bc8560000151866020015186600001518760200151617f6a565b6020808701805191860191909152519091506180d89082618a6a565b8352845160208601516180eb9190618a7d565b81036180fa576000855261812c565b835183516181089190618a7d565b85518690618117908390618a6a565b90525083516181269082618a7d565b60208601525b50909392505050565b6020811061816d578151835261814c602084618a7d565b9250618159602083618a7d565b9150618166602082618a6a565b9050618135565b600019811561819c576001618183836020618a6a565b61818f90610100619b6c565b6181999190618a6a565b90505b9151835183169219169190911790915250565b606060006181bd848461469b565b80516020808301516040519394506181d793909101619b8f565b60405160208183030381529060405291505092915050565b8151815160009190811115618202575081515b6020808501519084015160005b838110156182bb578251825180821461828b57600019602087101561826a5760018461823c896020618a6a565b6182469190618a7d565b618251906008619a6e565b61825c906002619b6c565b6182669190618a6a565b1990505b81811683821681810391146182885797506141d29650505050505050565b50505b618296602086618a7d565b94506182a3602085618a7d565b935050506020816182b49190618a7d565b905061820f565b5084518651614d499190619be7565b610b6780619c0883390190565b61053f8061a76f83390190565b61106f8061acae83390190565b6119e88061bd1d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618341618346565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016183416040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156183f85783516001600160a01b03168352602093840193909201916001016183d1565b509095945050505050565b60005b8381101561841e578181015183820152602001618406565b50506000910152565b6000815180845261843f816020860160208601618403565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618535577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261851f848651618427565b60209586019590945092909201916001016184e5565b50919750505060209485019492909201915060010161847b565b50929695505050505050565b600081518084526020840193506020830160005b828110156185af5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161856f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526186256040880182618427565b9050602082015191508681036020880152618640818361855b565b9650505060209384019391909101906001016185e1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526186b9858351618427565b9450602093840193919091019060010161867f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261874f604087018261855b565b95505060209384019391909101906001016186f6565b6020815260006141d260208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60008151606084526187b76060850182618427565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a0815260006187f360a08301886187a2565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526188298185618427565b98975050505050505050565b60006020828403121561884757600080fd5b81516001600160a01b03811681146142cb57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618918577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261893960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561896557600080fd5b815180151581146142cb57600080fd5b60808152600061898860808301876187a2565b8560208401526001600160a01b0385166040840152828103606084015261807f8185618427565b6000602082840312156189c157600080fd5b5051919050565b60a0815260006189db60a0830187618427565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261807f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156141d2576141d2618a3b565b808201808211156141d2576141d2618a3b565b600181811c90821680618aa457607f821691505b602082108103616494577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0383168152604060208201526000615bc86040830184618427565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618b3781601a850160208801618403565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618b7481601c840160208801618403565b01601c01949350505050565b6020815260006142cb6020830184618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715618be557618be5618b93565b60405290565b60008067ffffffffffffffff841115618c0657618c06618b93565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618c3557618c35618b93565b604052838152905080828401851015618c4d57600080fd5b615f97846020830185618403565b600082601f830112618c6c57600080fd5b6142cb83835160208501618beb565b600060208284031215618c8d57600080fd5b815167ffffffffffffffff811115618ca457600080fd5b6141ce84828501618c5b565b60008351618cc2818460208801618403565b835190830190618cd6818360208801618403565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618d1781601a850160208801618403565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618d54816033840160208801618403565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006142cb6080830184618427565b600060208284031215618de357600080fd5b815167ffffffffffffffff811115618dfa57600080fd5b8201601f81018413618e0b57600080fd5b6141ce84825160208401618beb565b60008551618e2c818460208a01618403565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618e66816001840160208a01618403565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618ea4816002840160208901618403565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618ee6816002840160208801618403565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618f316040830184618427565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618fa881601f850160208701618403565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006190156040830184618427565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006190676040830184618427565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516190de816014850160208701618403565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006191256040830185618427565b82810360208401526142c78185618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161919e816001850160208701618403565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516191e4818460208701618403565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161929781604b850160208701618403565b91909101604b0192915050565b600060ff821660ff81036192ba576192ba618a3b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006142cb6080830184618427565b60006020828403121561938757600080fd5b815167ffffffffffffffff81111561939e57600080fd5b8201606081850312156193b057600080fd5b6193b8618bc2565b81518060030b81146193c957600080fd5b8152602082015167ffffffffffffffff8111156193e557600080fd5b6193f186828501618c5b565b602083015250604082015167ffffffffffffffff81111561941157600080fd5b61941d86828501618c5b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619489816021850160208701618403565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619675816021850160208801618403565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516196b281602e840160208801618403565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161977a816022850160208701618403565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516197bf81600e850160208701618403565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161989d816018850160208801618403565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516198da81601c840160208801618403565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516199e0818460208701618403565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619a4781601c850160208701618403565b91909101601c0192915050565b60006000198203619a6757619a67618a3b565b5060010190565b80820281158282048414176141d2576141d2618a3b565b6001815b6001841115619ac057808504811115619aa457619aa4618a3b565b6001841615619ab257908102905b60019390931c928002619a89565b935093915050565b600082619ad7575060016141d2565b81619ae4575060006141d2565b8160018114619afa5760028114619b0457619b20565b60019150506141d2565b60ff841115619b1557619b15618a3b565b50506001821b6141d2565b5060208310610133831016604e8410600b8410161715619b43575081810a6141d2565b619b506000198484619a85565b8060001904821115619b6457619b64618a3b565b029392505050565b60006142cb8383619ac8565b600081619b8757619b87618a3b565b506000190190565b60008351619ba1818460208801618403565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619bdb816001840160208801618403565b01600101949350505050565b818103600083128015838313168383128216171561758f5761758f618a3b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220fe0e1aad663753d177c98b23f407f3d8a0e1bf3d0c057496e10356b6051fae2464736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061df238061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b6119e88061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220670d3b300bb5831c5bb424295505189dc316cf58f69dbc6904fbb6cb7e3475d964736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. @@ -251,6 +251,37 @@ func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) ISTEST() ( return _GatewayZEVMOutboundTest.Contract.ISTEST(&_GatewayZEVMOutboundTest.CallOpts) } +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GatewayZEVMOutboundTest.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) PAUSERROLE() ([32]byte, error) { + return _GatewayZEVMOutboundTest.Contract.PAUSERROLE(&_GatewayZEVMOutboundTest.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestCallerSession) PAUSERROLE() ([32]byte, error) { + return _GatewayZEVMOutboundTest.Contract.PAUSERROLE(&_GatewayZEVMOutboundTest.CallOpts) +} + // ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. // // Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) @@ -781,6 +812,27 @@ func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDe return _GatewayZEVMOutboundTest.Contract.TestDepositFailsIfTargetIsGateway(&_GatewayZEVMOutboundTest.TransactOpts) } +// TestDepositTogglePause is a paid mutator transaction binding the contract method 0x1c785a14. +// +// Solidity: function testDepositTogglePause() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactor) TestDepositTogglePause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.contract.Transact(opts, "testDepositTogglePause") +} + +// TestDepositTogglePause is a paid mutator transaction binding the contract method 0x1c785a14. +// +// Solidity: function testDepositTogglePause() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestSession) TestDepositTogglePause() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositTogglePause(&_GatewayZEVMOutboundTest.TransactOpts) +} + +// TestDepositTogglePause is a paid mutator transaction binding the contract method 0x1c785a14. +// +// Solidity: function testDepositTogglePause() returns() +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestTransactorSession) TestDepositTogglePause() (*types.Transaction, error) { + return _GatewayZEVMOutboundTest.Contract.TestDepositTogglePause(&_GatewayZEVMOutboundTest.TransactOpts) +} + // TestDepositZETAAndCallZContract is a paid mutator transaction binding the contract method 0x1fe68797. // // Solidity: function testDepositZETAAndCallZContract() returns() @@ -1103,39 +1155,48 @@ func (it *GatewayZEVMOutboundTestCallIterator) Close() error { // GatewayZEVMOutboundTestCall represents a Call event raised by the GatewayZEVMOutboundTest contract. type GatewayZEVMOutboundTestCall struct { Sender common.Address + ChainId *big.Int Receiver []byte Message []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// FilterCall is a free log retrieval operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*GatewayZEVMOutboundTestCallIterator, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMOutboundTestCallIterator, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayZEVMOutboundTestCallIterator{contract: _GatewayZEVMOutboundTest.contract, event: "Call", logs: logs, sub: sub}, nil } -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// WatchCall is a free log subscription operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestCall, sender []common.Address) (event.Subscription, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestCall, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Call", senderRule) + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } @@ -1167,9 +1228,9 @@ func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchCall(opts }), nil } -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// ParseCall is a log parse operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseCall(log types.Log) (*GatewayZEVMOutboundTestCall, error) { event := new(GatewayZEVMOutboundTestCall) if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Call", log); err != nil { @@ -1524,9 +1585,10 @@ func (it *GatewayZEVMOutboundTestWithdrawalIterator) Close() error { // GatewayZEVMOutboundTestWithdrawal represents a Withdrawal event raised by the GatewayZEVMOutboundTest contract. type GatewayZEVMOutboundTestWithdrawal struct { - From common.Address + Sender common.Address + ChainId *big.Int + Receiver []byte Zrc20 common.Address - To []byte Value *big.Int Gasfee *big.Int ProtocolFlatFee *big.Int @@ -1534,34 +1596,42 @@ type GatewayZEVMOutboundTestWithdrawal struct { Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// FilterWithdrawal is a free log retrieval operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*GatewayZEVMOutboundTestWithdrawalIterator, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) FilterWithdrawal(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*GatewayZEVMOutboundTestWithdrawalIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVMOutboundTest.contract.FilterLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } return &GatewayZEVMOutboundTestWithdrawalIterator{contract: _GatewayZEVMOutboundTest.contract, event: "Withdrawal", logs: logs, sub: sub}, nil } -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// WatchWithdrawal is a free log subscription operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestWithdrawal, from []common.Address) (event.Subscription, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *GatewayZEVMOutboundTestWithdrawal, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _GatewayZEVMOutboundTest.contract.WatchLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } @@ -1593,9 +1663,9 @@ func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) WatchWithdrawal }), nil } -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseWithdrawal is a log parse operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) func (_GatewayZEVMOutboundTest *GatewayZEVMOutboundTestFilterer) ParseWithdrawal(log types.Log) (*GatewayZEVMOutboundTestWithdrawal, error) { event := new(GatewayZEVMOutboundTestWithdrawal) if err := _GatewayZEVMOutboundTest.contract.UnpackLog(event, "Withdrawal", log); err != nil { diff --git a/v2/pkg/iaccesscontrol.sol/iaccesscontrol.go b/v2/pkg/iaccesscontrol.sol/iaccesscontrol.go new file mode 100644 index 00000000..556bc52d --- /dev/null +++ b/v2/pkg/iaccesscontrol.sol/iaccesscontrol.go @@ -0,0 +1,792 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iaccesscontrol + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IAccessControlMetaData contains all meta data concerning the IAccessControl contract. +var IAccessControlMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", +} + +// IAccessControlABI is the input ABI used to generate the binding from. +// Deprecated: Use IAccessControlMetaData.ABI instead. +var IAccessControlABI = IAccessControlMetaData.ABI + +// IAccessControl is an auto generated Go binding around an Ethereum contract. +type IAccessControl struct { + IAccessControlCaller // Read-only binding to the contract + IAccessControlTransactor // Write-only binding to the contract + IAccessControlFilterer // Log filterer for contract events +} + +// IAccessControlCaller is an auto generated read-only Go binding around an Ethereum contract. +type IAccessControlCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAccessControlTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IAccessControlTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAccessControlFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IAccessControlFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAccessControlSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IAccessControlSession struct { + Contract *IAccessControl // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IAccessControlCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IAccessControlCallerSession struct { + Contract *IAccessControlCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IAccessControlTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IAccessControlTransactorSession struct { + Contract *IAccessControlTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IAccessControlRaw is an auto generated low-level Go binding around an Ethereum contract. +type IAccessControlRaw struct { + Contract *IAccessControl // Generic contract binding to access the raw methods on +} + +// IAccessControlCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IAccessControlCallerRaw struct { + Contract *IAccessControlCaller // Generic read-only contract binding to access the raw methods on +} + +// IAccessControlTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IAccessControlTransactorRaw struct { + Contract *IAccessControlTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIAccessControl creates a new instance of IAccessControl, bound to a specific deployed contract. +func NewIAccessControl(address common.Address, backend bind.ContractBackend) (*IAccessControl, error) { + contract, err := bindIAccessControl(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IAccessControl{IAccessControlCaller: IAccessControlCaller{contract: contract}, IAccessControlTransactor: IAccessControlTransactor{contract: contract}, IAccessControlFilterer: IAccessControlFilterer{contract: contract}}, nil +} + +// NewIAccessControlCaller creates a new read-only instance of IAccessControl, bound to a specific deployed contract. +func NewIAccessControlCaller(address common.Address, caller bind.ContractCaller) (*IAccessControlCaller, error) { + contract, err := bindIAccessControl(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IAccessControlCaller{contract: contract}, nil +} + +// NewIAccessControlTransactor creates a new write-only instance of IAccessControl, bound to a specific deployed contract. +func NewIAccessControlTransactor(address common.Address, transactor bind.ContractTransactor) (*IAccessControlTransactor, error) { + contract, err := bindIAccessControl(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IAccessControlTransactor{contract: contract}, nil +} + +// NewIAccessControlFilterer creates a new log filterer instance of IAccessControl, bound to a specific deployed contract. +func NewIAccessControlFilterer(address common.Address, filterer bind.ContractFilterer) (*IAccessControlFilterer, error) { + contract, err := bindIAccessControl(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IAccessControlFilterer{contract: contract}, nil +} + +// bindIAccessControl binds a generic wrapper to an already deployed contract. +func bindIAccessControl(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IAccessControlMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAccessControl *IAccessControlRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAccessControl.Contract.IAccessControlCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAccessControl *IAccessControlRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAccessControl.Contract.IAccessControlTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAccessControl *IAccessControlRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAccessControl.Contract.IAccessControlTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IAccessControl *IAccessControlCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAccessControl.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IAccessControl *IAccessControlTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAccessControl.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAccessControl *IAccessControlTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAccessControl.Contract.contract.Transact(opts, method, params...) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_IAccessControl *IAccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _IAccessControl.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_IAccessControl *IAccessControlSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _IAccessControl.Contract.GetRoleAdmin(&_IAccessControl.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_IAccessControl *IAccessControlCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _IAccessControl.Contract.GetRoleAdmin(&_IAccessControl.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_IAccessControl *IAccessControlCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _IAccessControl.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_IAccessControl *IAccessControlSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _IAccessControl.Contract.HasRole(&_IAccessControl.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_IAccessControl *IAccessControlCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _IAccessControl.Contract.HasRole(&_IAccessControl.CallOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.GrantRole(&_IAccessControl.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.GrantRole(&_IAccessControl.TransactOpts, role, account) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_IAccessControl *IAccessControlTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _IAccessControl.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_IAccessControl *IAccessControlSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.RenounceRole(&_IAccessControl.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_IAccessControl *IAccessControlTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.RenounceRole(&_IAccessControl.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.RevokeRole(&_IAccessControl.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_IAccessControl *IAccessControlTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _IAccessControl.Contract.RevokeRole(&_IAccessControl.TransactOpts, role, account) +} + +// IAccessControlRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the IAccessControl contract. +type IAccessControlRoleAdminChangedIterator struct { + Event *IAccessControlRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IAccessControlRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IAccessControlRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAccessControlRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAccessControlRoleAdminChanged represents a RoleAdminChanged event raised by the IAccessControl contract. +type IAccessControlRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_IAccessControl *IAccessControlFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*IAccessControlRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _IAccessControl.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &IAccessControlRoleAdminChangedIterator{contract: _IAccessControl.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_IAccessControl *IAccessControlFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _IAccessControl.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAccessControlRoleAdminChanged) + if err := _IAccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_IAccessControl *IAccessControlFilterer) ParseRoleAdminChanged(log types.Log) (*IAccessControlRoleAdminChanged, error) { + event := new(IAccessControlRoleAdminChanged) + if err := _IAccessControl.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IAccessControlRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the IAccessControl contract. +type IAccessControlRoleGrantedIterator struct { + Event *IAccessControlRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IAccessControlRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IAccessControlRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAccessControlRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAccessControlRoleGranted represents a RoleGranted event raised by the IAccessControl contract. +type IAccessControlRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAccessControl.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &IAccessControlRoleGrantedIterator{contract: _IAccessControl.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAccessControl.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAccessControlRoleGranted) + if err := _IAccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) ParseRoleGranted(log types.Log) (*IAccessControlRoleGranted, error) { + event := new(IAccessControlRoleGranted) + if err := _IAccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IAccessControlRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the IAccessControl contract. +type IAccessControlRoleRevokedIterator struct { + Event *IAccessControlRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IAccessControlRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IAccessControlRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IAccessControlRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAccessControlRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAccessControlRoleRevoked represents a RoleRevoked event raised by the IAccessControl contract. +type IAccessControlRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*IAccessControlRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAccessControl.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &IAccessControlRoleRevokedIterator{contract: _IAccessControl.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *IAccessControlRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _IAccessControl.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAccessControlRoleRevoked) + if err := _IAccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_IAccessControl *IAccessControlFilterer) ParseRoleRevoked(log types.Log) (*IAccessControlRoleRevoked, error) { + event := new(IAccessControlRoleRevoked) + if err := _IAccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go b/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go index 877a3427..5ff40f4f 100644 --- a/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go +++ b/v2/pkg/ierc20custody.sol/ierc20custodyerrors.go @@ -31,7 +31,7 @@ var ( // IERC20CustodyErrorsMetaData contains all meta data concerning the IERC20CustodyErrors contract. var IERC20CustodyErrorsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + ABI: "[{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", } // IERC20CustodyErrorsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/igatewayevm.sol/igatewayevmerrors.go b/v2/pkg/igatewayevm.sol/igatewayevmerrors.go index 640eed08..0b2dca75 100644 --- a/v2/pkg/igatewayevm.sol/igatewayevmerrors.go +++ b/v2/pkg/igatewayevm.sol/igatewayevmerrors.go @@ -31,7 +31,7 @@ var ( // IGatewayEVMErrorsMetaData contains all meta data concerning the IGatewayEVMErrors contract. var IGatewayEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + ABI: "[{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", } // IGatewayEVMErrorsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevm.go b/v2/pkg/igatewayzevm.sol/igatewayzevm.go index 9dbc628a..c49c8d3c 100644 --- a/v2/pkg/igatewayzevm.sol/igatewayzevm.go +++ b/v2/pkg/igatewayzevm.sol/igatewayzevm.go @@ -38,7 +38,7 @@ type ZContext struct { // IGatewayZEVMMetaData contains all meta data concerning the IGatewayZEVM contract. var IGatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", } // IGatewayZEVMABI is the input ABI used to generate the binding from. @@ -187,25 +187,25 @@ func (_IGatewayZEVM *IGatewayZEVMTransactorRaw) Transact(opts *bind.TransactOpts return _IGatewayZEVM.Contract.contract.Transact(opts, method, params...) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "call", receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Call(opts *bind.TransactOpts, receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "call", receiver, chainId, message) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Call(receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, chainId, message) } -// Call is a paid mutator transaction binding the contract method 0x0ac7c44c. +// Call is a paid mutator transaction binding the contract method 0x5d40e178. // -// Solidity: function call(bytes receiver, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Call(receiver []byte, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, message) +// Solidity: function call(bytes receiver, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Call(receiver []byte, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Call(&_IGatewayZEVM.TransactOpts, receiver, chainId, message) } // Deposit is a paid mutator transaction binding the contract method 0xf45346dc. @@ -292,6 +292,27 @@ func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Withdraw(receiver []byte, am return _IGatewayZEVM.Contract.Withdraw(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20) } +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. +// +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) Withdraw0(opts *bind.TransactOpts, amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "withdraw0", amount, chainId) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. +// +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) Withdraw0(amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Withdraw0(&_IGatewayZEVM.TransactOpts, amount, chainId) +} + +// Withdraw0 is a paid mutator transaction binding the contract method 0x441a3e70. +// +// Solidity: function withdraw(uint256 amount, uint256 chainId) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Withdraw0(amount *big.Int, chainId *big.Int) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.Withdraw0(&_IGatewayZEVM.TransactOpts, amount, chainId) +} + // WithdrawAndCall is a paid mutator transaction binding the contract method 0x7993c1e0. // // Solidity: function withdrawAndCall(bytes receiver, uint256 amount, address zrc20, bytes message) returns() @@ -312,3 +333,24 @@ func (_IGatewayZEVM *IGatewayZEVMSession) WithdrawAndCall(receiver []byte, amoun func (_IGatewayZEVM *IGatewayZEVMTransactorSession) WithdrawAndCall(receiver []byte, amount *big.Int, zrc20 common.Address, message []byte) (*types.Transaction, error) { return _IGatewayZEVM.Contract.WithdrawAndCall(&_IGatewayZEVM.TransactOpts, receiver, amount, zrc20, message) } + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. +// +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) WithdrawAndCall0(opts *bind.TransactOpts, amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "withdrawAndCall0", amount, chainId, message) +} + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. +// +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) WithdrawAndCall0(amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.WithdrawAndCall0(&_IGatewayZEVM.TransactOpts, amount, chainId, message) +} + +// WithdrawAndCall0 is a paid mutator transaction binding the contract method 0x80bd3d03. +// +// Solidity: function withdrawAndCall(uint256 amount, uint256 chainId, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) WithdrawAndCall0(amount *big.Int, chainId *big.Int, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.WithdrawAndCall0(&_IGatewayZEVM.TransactOpts, amount, chainId, message) +} diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go b/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go index 5c6112f7..cfa3a10f 100644 --- a/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go +++ b/v2/pkg/igatewayzevm.sol/igatewayzevmevents.go @@ -31,7 +31,7 @@ var ( // IGatewayZEVMEventsMetaData contains all meta data concerning the IGatewayZEVMEvents contract. var IGatewayZEVMEventsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", } // IGatewayZEVMEventsABI is the input ABI used to generate the binding from. @@ -250,39 +250,48 @@ func (it *IGatewayZEVMEventsCallIterator) Close() error { // IGatewayZEVMEventsCall represents a Call event raised by the IGatewayZEVMEvents contract. type IGatewayZEVMEventsCall struct { Sender common.Address + ChainId *big.Int Receiver []byte Message []byte Raw types.Log // Blockchain specific contextual infos } -// FilterCall is a free log retrieval operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// FilterCall is a free log retrieval operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address) (*IGatewayZEVMEventsCallIterator, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterCall(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*IGatewayZEVMEventsCallIterator, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Call", senderRule) + logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } return &IGatewayZEVMEventsCallIterator{contract: _IGatewayZEVMEvents.contract, event: "Call", logs: logs, sub: sub}, nil } -// WatchCall is a free log subscription operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// WatchCall is a free log subscription operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsCall, sender []common.Address) (event.Subscription, error) { +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchCall(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsCall, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { var senderRule []interface{} for _, senderItem := range sender { senderRule = append(senderRule, senderItem) } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } - logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Call", senderRule) + logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Call", senderRule, chainIdRule) if err != nil { return nil, err } @@ -314,9 +323,9 @@ func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchCall(opts *bind.Watc }), nil } -// ParseCall is a log parse operation binding the contract event 0x2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f. +// ParseCall is a log parse operation binding the contract event 0x5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d3. // -// Solidity: event Call(address indexed sender, bytes receiver, bytes message) +// Solidity: event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message) func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseCall(log types.Log) (*IGatewayZEVMEventsCall, error) { event := new(IGatewayZEVMEventsCall) if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Call", log); err != nil { @@ -395,9 +404,10 @@ func (it *IGatewayZEVMEventsWithdrawalIterator) Close() error { // IGatewayZEVMEventsWithdrawal represents a Withdrawal event raised by the IGatewayZEVMEvents contract. type IGatewayZEVMEventsWithdrawal struct { - From common.Address + Sender common.Address + ChainId *big.Int + Receiver []byte Zrc20 common.Address - To []byte Value *big.Int Gasfee *big.Int ProtocolFlatFee *big.Int @@ -405,34 +415,42 @@ type IGatewayZEVMEventsWithdrawal struct { Raw types.Log // Blockchain specific contextual infos } -// FilterWithdrawal is a free log retrieval operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// FilterWithdrawal is a free log retrieval operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, from []common.Address) (*IGatewayZEVMEventsWithdrawalIterator, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) FilterWithdrawal(opts *bind.FilterOpts, sender []common.Address, chainId []*big.Int) (*IGatewayZEVMEventsWithdrawalIterator, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _IGatewayZEVMEvents.contract.FilterLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } return &IGatewayZEVMEventsWithdrawalIterator{contract: _IGatewayZEVMEvents.contract, event: "Withdrawal", logs: logs, sub: sub}, nil } -// WatchWithdrawal is a free log subscription operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// WatchWithdrawal is a free log subscription operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) -func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsWithdrawal, from []common.Address) (event.Subscription, error) { +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IGatewayZEVMEventsWithdrawal, sender []common.Address, chainId []*big.Int) (event.Subscription, error) { - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Withdrawal", fromRule) + logs, sub, err := _IGatewayZEVMEvents.contract.WatchLogs(opts, "Withdrawal", senderRule, chainIdRule) if err != nil { return nil, err } @@ -464,9 +482,9 @@ func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) WatchWithdrawal(opts *bin }), nil } -// ParseWithdrawal is a log parse operation binding the contract event 0x2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716. +// ParseWithdrawal is a log parse operation binding the contract event 0xde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5. // -// Solidity: event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) +// Solidity: event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message) func (_IGatewayZEVMEvents *IGatewayZEVMEventsFilterer) ParseWithdrawal(log types.Log) (*IGatewayZEVMEventsWithdrawal, error) { event := new(IGatewayZEVMEventsWithdrawal) if err := _IGatewayZEVMEvents.contract.UnpackLog(event, "Withdrawal", log); err != nil { diff --git a/v2/pkg/introspection/ierc165.sol/ierc165.go b/v2/pkg/introspection/ierc165.sol/ierc165.go new file mode 100644 index 00000000..3a215627 --- /dev/null +++ b/v2/pkg/introspection/ierc165.sol/ierc165.go @@ -0,0 +1,212 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ierc165 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IERC165MetaData contains all meta data concerning the IERC165 contract. +var IERC165MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"}]", +} + +// IERC165ABI is the input ABI used to generate the binding from. +// Deprecated: Use IERC165MetaData.ABI instead. +var IERC165ABI = IERC165MetaData.ABI + +// IERC165 is an auto generated Go binding around an Ethereum contract. +type IERC165 struct { + IERC165Caller // Read-only binding to the contract + IERC165Transactor // Write-only binding to the contract + IERC165Filterer // Log filterer for contract events +} + +// IERC165Caller is an auto generated read-only Go binding around an Ethereum contract. +type IERC165Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IERC165Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IERC165Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IERC165Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IERC165Session struct { + Contract *IERC165 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IERC165CallerSession struct { + Contract *IERC165Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IERC165TransactorSession struct { + Contract *IERC165Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IERC165Raw is an auto generated low-level Go binding around an Ethereum contract. +type IERC165Raw struct { + Contract *IERC165 // Generic contract binding to access the raw methods on +} + +// IERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IERC165CallerRaw struct { + Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on +} + +// IERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IERC165TransactorRaw struct { + Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract. +func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) { + contract, err := bindIERC165(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil +} + +// NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract. +func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) { + contract, err := bindIERC165(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IERC165Caller{contract: contract}, nil +} + +// NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract. +func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) { + contract, err := bindIERC165(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IERC165Transactor{contract: contract}, nil +} + +// NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract. +func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) { + contract, err := bindIERC165(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IERC165Filterer{contract: contract}, nil +} + +// bindIERC165 binds a generic wrapper to an already deployed contract. +func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IERC165MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IERC165.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IERC165.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IERC165.Contract.contract.Transact(opts, method, params...) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId) +} diff --git a/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go b/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go deleted file mode 100644 index 0d32f37f..00000000 --- a/v2/pkg/ownableupgradeable.sol/ownableupgradeable.go +++ /dev/null @@ -1,541 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package ownableupgradeable - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// OwnableUpgradeableMetaData contains all meta data concerning the OwnableUpgradeable contract. -var OwnableUpgradeableMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", -} - -// OwnableUpgradeableABI is the input ABI used to generate the binding from. -// Deprecated: Use OwnableUpgradeableMetaData.ABI instead. -var OwnableUpgradeableABI = OwnableUpgradeableMetaData.ABI - -// OwnableUpgradeable is an auto generated Go binding around an Ethereum contract. -type OwnableUpgradeable struct { - OwnableUpgradeableCaller // Read-only binding to the contract - OwnableUpgradeableTransactor // Write-only binding to the contract - OwnableUpgradeableFilterer // Log filterer for contract events -} - -// OwnableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type OwnableUpgradeableFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// OwnableUpgradeableSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type OwnableUpgradeableSession struct { - Contract *OwnableUpgradeable // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type OwnableUpgradeableCallerSession struct { - Contract *OwnableUpgradeableCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// OwnableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type OwnableUpgradeableTransactorSession struct { - Contract *OwnableUpgradeableTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// OwnableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. -type OwnableUpgradeableRaw struct { - Contract *OwnableUpgradeable // Generic contract binding to access the raw methods on -} - -// OwnableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type OwnableUpgradeableCallerRaw struct { - Contract *OwnableUpgradeableCaller // Generic read-only contract binding to access the raw methods on -} - -// OwnableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type OwnableUpgradeableTransactorRaw struct { - Contract *OwnableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewOwnableUpgradeable creates a new instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeable(address common.Address, backend bind.ContractBackend) (*OwnableUpgradeable, error) { - contract, err := bindOwnableUpgradeable(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &OwnableUpgradeable{OwnableUpgradeableCaller: OwnableUpgradeableCaller{contract: contract}, OwnableUpgradeableTransactor: OwnableUpgradeableTransactor{contract: contract}, OwnableUpgradeableFilterer: OwnableUpgradeableFilterer{contract: contract}}, nil -} - -// NewOwnableUpgradeableCaller creates a new read-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*OwnableUpgradeableCaller, error) { - contract, err := bindOwnableUpgradeable(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableCaller{contract: contract}, nil -} - -// NewOwnableUpgradeableTransactor creates a new write-only instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableUpgradeableTransactor, error) { - contract, err := bindOwnableUpgradeable(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &OwnableUpgradeableTransactor{contract: contract}, nil -} - -// NewOwnableUpgradeableFilterer creates a new log filterer instance of OwnableUpgradeable, bound to a specific deployed contract. -func NewOwnableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableUpgradeableFilterer, error) { - contract, err := bindOwnableUpgradeable(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &OwnableUpgradeableFilterer{contract: contract}, nil -} - -// bindOwnableUpgradeable binds a generic wrapper to an already deployed contract. -func bindOwnableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := OwnableUpgradeableMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.OwnableUpgradeableCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.OwnableUpgradeableTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_OwnableUpgradeable *OwnableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _OwnableUpgradeable.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_OwnableUpgradeable *OwnableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.contract.Transact(opts, method, params...) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _OwnableUpgradeable.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_OwnableUpgradeable *OwnableUpgradeableCallerSession) Owner() (common.Address, error) { - return _OwnableUpgradeable.Contract.Owner(&_OwnableUpgradeable.CallOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.RenounceOwnership(&_OwnableUpgradeable.TransactOpts) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_OwnableUpgradeable *OwnableUpgradeableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _OwnableUpgradeable.Contract.TransferOwnership(&_OwnableUpgradeable.TransactOpts, newOwner) -} - -// OwnableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitializedIterator struct { - Event *OwnableUpgradeableInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableInitialized represents a Initialized event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableInitialized struct { - Version uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*OwnableUpgradeableInitializedIterator, error) { - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &OwnableUpgradeableInitializedIterator{contract: _OwnableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableInitialized) (event.Subscription, error) { - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. -// -// Solidity: event Initialized(uint64 version) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseInitialized(log types.Log) (*OwnableUpgradeableInitialized, error) { - event := new(OwnableUpgradeableInitialized) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// OwnableUpgradeableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferredIterator struct { - Event *OwnableUpgradeableOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(OwnableUpgradeableOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *OwnableUpgradeableOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// OwnableUpgradeableOwnershipTransferred represents a OwnershipTransferred event raised by the OwnableUpgradeable contract. -type OwnableUpgradeableOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableUpgradeableOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &OwnableUpgradeableOwnershipTransferredIterator{contract: _OwnableUpgradeable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableUpgradeableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _OwnableUpgradeable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_OwnableUpgradeable *OwnableUpgradeableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableUpgradeableOwnershipTransferred, error) { - event := new(OwnableUpgradeableOwnershipTransferred) - if err := _OwnableUpgradeable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/v2/pkg/pausable.sol/pausable.go b/v2/pkg/pausable.sol/pausable.go new file mode 100644 index 00000000..f1a32b35 --- /dev/null +++ b/v2/pkg/pausable.sol/pausable.go @@ -0,0 +1,480 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package pausable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PausableMetaData contains all meta data concerning the Pausable contract. +var PausableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]}]", +} + +// PausableABI is the input ABI used to generate the binding from. +// Deprecated: Use PausableMetaData.ABI instead. +var PausableABI = PausableMetaData.ABI + +// Pausable is an auto generated Go binding around an Ethereum contract. +type Pausable struct { + PausableCaller // Read-only binding to the contract + PausableTransactor // Write-only binding to the contract + PausableFilterer // Log filterer for contract events +} + +// PausableCaller is an auto generated read-only Go binding around an Ethereum contract. +type PausableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PausableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PausableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PausableSession struct { + Contract *Pausable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PausableCallerSession struct { + Contract *PausableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PausableTransactorSession struct { + Contract *PausableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableRaw is an auto generated low-level Go binding around an Ethereum contract. +type PausableRaw struct { + Contract *Pausable // Generic contract binding to access the raw methods on +} + +// PausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PausableCallerRaw struct { + Contract *PausableCaller // Generic read-only contract binding to access the raw methods on +} + +// PausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PausableTransactorRaw struct { + Contract *PausableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPausable creates a new instance of Pausable, bound to a specific deployed contract. +func NewPausable(address common.Address, backend bind.ContractBackend) (*Pausable, error) { + contract, err := bindPausable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil +} + +// NewPausableCaller creates a new read-only instance of Pausable, bound to a specific deployed contract. +func NewPausableCaller(address common.Address, caller bind.ContractCaller) (*PausableCaller, error) { + contract, err := bindPausable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PausableCaller{contract: contract}, nil +} + +// NewPausableTransactor creates a new write-only instance of Pausable, bound to a specific deployed contract. +func NewPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableTransactor, error) { + contract, err := bindPausable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PausableTransactor{contract: contract}, nil +} + +// NewPausableFilterer creates a new log filterer instance of Pausable, bound to a specific deployed contract. +func NewPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableFilterer, error) { + contract, err := bindPausable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PausableFilterer{contract: contract}, nil +} + +// bindPausable binds a generic wrapper to an already deployed contract. +func bindPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PausableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Pausable *PausableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.Contract.PausableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Pausable *PausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Pausable *PausableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Pausable *PausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Pausable.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableSession) Paused() (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Pausable *PausableCallerSession) Paused() (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts) +} + +// PausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Pausable contract. +type PausablePausedIterator struct { + Event *PausablePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausablePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausablePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausablePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausablePaused represents a Paused event raised by the Pausable contract. +type PausablePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) FilterPaused(opts *bind.FilterOpts) (*PausablePausedIterator, error) { + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &PausablePausedIterator{contract: _Pausable.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausablePaused) (event.Subscription, error) { + + logs, sub, err := _Pausable.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausablePaused) + if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused, error) { + event := new(PausablePaused) + if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Pausable contract. +type PausableUnpausedIterator struct { + Event *PausableUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausableUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausableUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUnpaused represents a Unpaused event raised by the Pausable contract. +type PausableUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PausableUnpausedIterator, error) { + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &PausableUnpausedIterator{contract: _Pausable.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUnpaused) (event.Subscription, error) { + + logs, sub, err := _Pausable.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausableUnpaused) + if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Pausable *PausableFilterer) ParseUnpaused(log types.Log) (*PausableUnpaused, error) { + event := new(PausableUnpaused) + if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/pausableupgradeable.sol/pausableupgradeable.go b/v2/pkg/pausableupgradeable.sol/pausableupgradeable.go new file mode 100644 index 00000000..bafbc717 --- /dev/null +++ b/v2/pkg/pausableupgradeable.sol/pausableupgradeable.go @@ -0,0 +1,614 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package pausableupgradeable + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PausableUpgradeableMetaData contains all meta data concerning the PausableUpgradeable contract. +var PausableUpgradeableMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]}]", +} + +// PausableUpgradeableABI is the input ABI used to generate the binding from. +// Deprecated: Use PausableUpgradeableMetaData.ABI instead. +var PausableUpgradeableABI = PausableUpgradeableMetaData.ABI + +// PausableUpgradeable is an auto generated Go binding around an Ethereum contract. +type PausableUpgradeable struct { + PausableUpgradeableCaller // Read-only binding to the contract + PausableUpgradeableTransactor // Write-only binding to the contract + PausableUpgradeableFilterer // Log filterer for contract events +} + +// PausableUpgradeableCaller is an auto generated read-only Go binding around an Ethereum contract. +type PausableUpgradeableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableUpgradeableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PausableUpgradeableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableUpgradeableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PausableUpgradeableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableUpgradeableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PausableUpgradeableSession struct { + Contract *PausableUpgradeable // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableUpgradeableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PausableUpgradeableCallerSession struct { + Contract *PausableUpgradeableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PausableUpgradeableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PausableUpgradeableTransactorSession struct { + Contract *PausableUpgradeableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableUpgradeableRaw is an auto generated low-level Go binding around an Ethereum contract. +type PausableUpgradeableRaw struct { + Contract *PausableUpgradeable // Generic contract binding to access the raw methods on +} + +// PausableUpgradeableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PausableUpgradeableCallerRaw struct { + Contract *PausableUpgradeableCaller // Generic read-only contract binding to access the raw methods on +} + +// PausableUpgradeableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PausableUpgradeableTransactorRaw struct { + Contract *PausableUpgradeableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPausableUpgradeable creates a new instance of PausableUpgradeable, bound to a specific deployed contract. +func NewPausableUpgradeable(address common.Address, backend bind.ContractBackend) (*PausableUpgradeable, error) { + contract, err := bindPausableUpgradeable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &PausableUpgradeable{PausableUpgradeableCaller: PausableUpgradeableCaller{contract: contract}, PausableUpgradeableTransactor: PausableUpgradeableTransactor{contract: contract}, PausableUpgradeableFilterer: PausableUpgradeableFilterer{contract: contract}}, nil +} + +// NewPausableUpgradeableCaller creates a new read-only instance of PausableUpgradeable, bound to a specific deployed contract. +func NewPausableUpgradeableCaller(address common.Address, caller bind.ContractCaller) (*PausableUpgradeableCaller, error) { + contract, err := bindPausableUpgradeable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PausableUpgradeableCaller{contract: contract}, nil +} + +// NewPausableUpgradeableTransactor creates a new write-only instance of PausableUpgradeable, bound to a specific deployed contract. +func NewPausableUpgradeableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableUpgradeableTransactor, error) { + contract, err := bindPausableUpgradeable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PausableUpgradeableTransactor{contract: contract}, nil +} + +// NewPausableUpgradeableFilterer creates a new log filterer instance of PausableUpgradeable, bound to a specific deployed contract. +func NewPausableUpgradeableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableUpgradeableFilterer, error) { + contract, err := bindPausableUpgradeable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PausableUpgradeableFilterer{contract: contract}, nil +} + +// bindPausableUpgradeable binds a generic wrapper to an already deployed contract. +func bindPausableUpgradeable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PausableUpgradeableMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PausableUpgradeable *PausableUpgradeableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PausableUpgradeable.Contract.PausableUpgradeableCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PausableUpgradeable *PausableUpgradeableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PausableUpgradeable.Contract.PausableUpgradeableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PausableUpgradeable *PausableUpgradeableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PausableUpgradeable.Contract.PausableUpgradeableTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_PausableUpgradeable *PausableUpgradeableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PausableUpgradeable.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_PausableUpgradeable *PausableUpgradeableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PausableUpgradeable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PausableUpgradeable *PausableUpgradeableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PausableUpgradeable.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_PausableUpgradeable *PausableUpgradeableCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _PausableUpgradeable.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_PausableUpgradeable *PausableUpgradeableSession) Paused() (bool, error) { + return _PausableUpgradeable.Contract.Paused(&_PausableUpgradeable.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_PausableUpgradeable *PausableUpgradeableCallerSession) Paused() (bool, error) { + return _PausableUpgradeable.Contract.Paused(&_PausableUpgradeable.CallOpts) +} + +// PausableUpgradeableInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PausableUpgradeable contract. +type PausableUpgradeableInitializedIterator struct { + Event *PausableUpgradeableInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausableUpgradeableInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeableInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausableUpgradeableInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUpgradeableInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUpgradeableInitialized represents a Initialized event raised by the PausableUpgradeable contract. +type PausableUpgradeableInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PausableUpgradeable *PausableUpgradeableFilterer) FilterInitialized(opts *bind.FilterOpts) (*PausableUpgradeableInitializedIterator, error) { + + logs, sub, err := _PausableUpgradeable.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PausableUpgradeableInitializedIterator{contract: _PausableUpgradeable.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PausableUpgradeable *PausableUpgradeableFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PausableUpgradeableInitialized) (event.Subscription, error) { + + logs, sub, err := _PausableUpgradeable.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausableUpgradeableInitialized) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_PausableUpgradeable *PausableUpgradeableFilterer) ParseInitialized(log types.Log) (*PausableUpgradeableInitialized, error) { + event := new(PausableUpgradeableInitialized) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PausableUpgradeablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the PausableUpgradeable contract. +type PausableUpgradeablePausedIterator struct { + Event *PausableUpgradeablePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausableUpgradeablePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeablePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausableUpgradeablePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUpgradeablePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUpgradeablePaused represents a Paused event raised by the PausableUpgradeable contract. +type PausableUpgradeablePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) FilterPaused(opts *bind.FilterOpts) (*PausableUpgradeablePausedIterator, error) { + + logs, sub, err := _PausableUpgradeable.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &PausableUpgradeablePausedIterator{contract: _PausableUpgradeable.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausableUpgradeablePaused) (event.Subscription, error) { + + logs, sub, err := _PausableUpgradeable.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausableUpgradeablePaused) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) ParsePaused(log types.Log) (*PausableUpgradeablePaused, error) { + event := new(PausableUpgradeablePaused) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PausableUpgradeableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the PausableUpgradeable contract. +type PausableUpgradeableUnpausedIterator struct { + Event *PausableUpgradeableUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PausableUpgradeableUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PausableUpgradeableUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PausableUpgradeableUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUpgradeableUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUpgradeableUnpaused represents a Unpaused event raised by the PausableUpgradeable contract. +type PausableUpgradeableUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PausableUpgradeableUnpausedIterator, error) { + + logs, sub, err := _PausableUpgradeable.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &PausableUpgradeableUnpausedIterator{contract: _PausableUpgradeable.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUpgradeableUnpaused) (event.Subscription, error) { + + logs, sub, err := _PausableUpgradeable.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PausableUpgradeableUnpaused) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_PausableUpgradeable *PausableUpgradeableFilterer) ParseUnpaused(log types.Log) (*PausableUpgradeableUnpaused, error) { + event := new(PausableUpgradeableUnpaused) + if err := _PausableUpgradeable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/pkg/senderzevm.sol/senderzevm.go b/v2/pkg/senderzevm.sol/senderzevm.go index 90617bb0..ce210984 100644 --- a/v2/pkg/senderzevm.sol/senderzevm.go +++ b/v2/pkg/senderzevm.sol/senderzevm.go @@ -31,8 +31,8 @@ var ( // SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. var SenderZEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", - Bin: "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", + Bin: "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. @@ -233,25 +233,25 @@ func (_SenderZEVM *SenderZEVMCallerSession) Gateway() (common.Address, error) { return _SenderZEVM.Contract.Gateway(&_SenderZEVM.CallOpts) } -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// CallReceiver is a paid mutator transaction binding the contract method 0x865b36f6. // -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactor) CallReceiver(opts *bind.TransactOpts, receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.contract.Transact(opts, "callReceiver", receiver, str, num, flag) +// Solidity: function callReceiver(bytes receiver, uint256 chainId, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactor) CallReceiver(opts *bind.TransactOpts, receiver []byte, chainId *big.Int, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.contract.Transact(opts, "callReceiver", receiver, chainId, str, num, flag) } -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// CallReceiver is a paid mutator transaction binding the contract method 0x865b36f6. // -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) +// Solidity: function callReceiver(bytes receiver, uint256 chainId, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMSession) CallReceiver(receiver []byte, chainId *big.Int, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, chainId, str, num, flag) } -// CallReceiver is a paid mutator transaction binding the contract method 0xa0a1730b. +// CallReceiver is a paid mutator transaction binding the contract method 0x865b36f6. // -// Solidity: function callReceiver(bytes receiver, string str, uint256 num, bool flag) returns() -func (_SenderZEVM *SenderZEVMTransactorSession) CallReceiver(receiver []byte, str string, num *big.Int, flag bool) (*types.Transaction, error) { - return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, str, num, flag) +// Solidity: function callReceiver(bytes receiver, uint256 chainId, string str, uint256 num, bool flag) returns() +func (_SenderZEVM *SenderZEVMTransactorSession) CallReceiver(receiver []byte, chainId *big.Int, str string, num *big.Int, flag bool) (*types.Transaction, error) { + return _SenderZEVM.Contract.CallReceiver(&_SenderZEVM.TransactOpts, receiver, chainId, str, num, flag) } // WithdrawAndCallReceiver is a paid mutator transaction binding the contract method 0x0abd8905. diff --git a/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go index 8ad817f8..67c61efa 100644 --- a/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go +++ b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go @@ -31,7 +31,7 @@ var ( // ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. var ZetaConnectorBaseMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", } // ZetaConnectorBaseABI is the input ABI used to generate the binding from. @@ -180,6 +180,99 @@ func (_ZetaConnectorBase *ZetaConnectorBaseTransactorRaw) Transact(opts *bind.Tr return _ZetaConnectorBase.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.DEFAULTADMINROLE(&_ZetaConnectorBase.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.DEFAULTADMINROLE(&_ZetaConnectorBase.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.PAUSERROLE(&_ZetaConnectorBase.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.PAUSERROLE(&_ZetaConnectorBase.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.WITHDRAWERROLE(&_ZetaConnectorBase.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorBase.Contract.WITHDRAWERROLE(&_ZetaConnectorBase.CallOpts) +} + // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) @@ -211,6 +304,130 @@ func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) Gateway() (common.Addr return _ZetaConnectorBase.Contract.Gateway(&_ZetaConnectorBase.CallOpts) } +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorBase.Contract.GetRoleAdmin(&_ZetaConnectorBase.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorBase.Contract.GetRoleAdmin(&_ZetaConnectorBase.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorBase.Contract.HasRole(&_ZetaConnectorBase.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorBase.Contract.HasRole(&_ZetaConnectorBase.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Paused() (bool, error) { + return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) Paused() (bool, error) { + return _ZetaConnectorBase.Contract.Paused(&_ZetaConnectorBase.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ZetaConnectorBase.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorBase.Contract.SupportsInterface(&_ZetaConnectorBase.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorBase.Contract.SupportsInterface(&_ZetaConnectorBase.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -273,6 +490,48 @@ func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) ZetaToken() (common.Ad return _ZetaConnectorBase.Contract.ZetaToken(&_ZetaConnectorBase.CallOpts) } +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.GrantRole(&_ZetaConnectorBase.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.GrantRole(&_ZetaConnectorBase.TransactOpts, role, account) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Pause(&_ZetaConnectorBase.TransactOpts) +} + // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() @@ -294,6 +553,69 @@ func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) ReceiveTokens(amou return _ZetaConnectorBase.Contract.ReceiveTokens(&_ZetaConnectorBase.TransactOpts, amount) } +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RenounceRole(&_ZetaConnectorBase.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RenounceRole(&_ZetaConnectorBase.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RevokeRole(&_ZetaConnectorBase.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.RevokeRole(&_ZetaConnectorBase.TransactOpts, role, account) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorBase.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorBase.Contract.Unpause(&_ZetaConnectorBase.TransactOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() @@ -357,6 +679,760 @@ func (_ZetaConnectorBase *ZetaConnectorBaseTransactorSession) WithdrawAndRevert( return _ZetaConnectorBase.Contract.WithdrawAndRevert(&_ZetaConnectorBase.TransactOpts, to, amount, data, internalSendHash) } +// ZetaConnectorBasePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePausedIterator struct { + Event *ZetaConnectorBasePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBasePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBasePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBasePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBasePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBasePaused represents a Paused event raised by the ZetaConnectorBase contract. +type ZetaConnectorBasePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorBasePausedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorBasePausedIterator{contract: _ZetaConnectorBase.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBasePaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePaused(log types.Log) (*ZetaConnectorBasePaused, error) { + event := new(ZetaConnectorBasePaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleAdminChangedIterator struct { + Event *ZetaConnectorBaseRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseRoleAdminChanged represents a RoleAdminChanged event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ZetaConnectorBaseRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseRoleAdminChangedIterator{contract: _ZetaConnectorBase.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseRoleAdminChanged) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseRoleAdminChanged(log types.Log) (*ZetaConnectorBaseRoleAdminChanged, error) { + event := new(ZetaConnectorBaseRoleAdminChanged) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleGrantedIterator struct { + Event *ZetaConnectorBaseRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseRoleGranted represents a RoleGranted event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorBaseRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseRoleGrantedIterator{contract: _ZetaConnectorBase.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseRoleGranted) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseRoleGranted(log types.Log) (*ZetaConnectorBaseRoleGranted, error) { + event := new(ZetaConnectorBaseRoleGranted) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleRevokedIterator struct { + Event *ZetaConnectorBaseRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseRoleRevoked represents a RoleRevoked event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorBaseRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorBaseRoleRevokedIterator{contract: _ZetaConnectorBase.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseRoleRevoked) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseRoleRevoked(log types.Log) (*ZetaConnectorBaseRoleRevoked, error) { + event := new(ZetaConnectorBaseRoleRevoked) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorBaseUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseUnpausedIterator struct { + Event *ZetaConnectorBaseUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseUnpaused represents a Unpaused event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorBaseUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorBaseUnpausedIterator{contract: _ZetaConnectorBase.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseUnpaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorBaseUnpaused, error) { + event := new(ZetaConnectorBaseUnpaused) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorBaseWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorBase contract. type ZetaConnectorBaseWithdrawIterator struct { Event *ZetaConnectorBaseWithdraw // Event containing the contract specifics and raw log diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go index da2d29c8..88856e77 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNativeABI = ZetaConnectorNativeMetaData.ABI var ZetaConnectorNativeBin = ZetaConnectorNativeMetaData.Bin // DeployZetaConnectorNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNative to it. -func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { +func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { parsed, err := ZetaConnectorNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress, _admin) if err != nil { return common.Address{}, nil, nil, err } @@ -202,6 +202,99 @@ func (_ZetaConnectorNative *ZetaConnectorNativeTransactorRaw) Transact(opts *bin return _ZetaConnectorNative.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.DEFAULTADMINROLE(&_ZetaConnectorNative.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.DEFAULTADMINROLE(&_ZetaConnectorNative.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.PAUSERROLE(&_ZetaConnectorNative.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.PAUSERROLE(&_ZetaConnectorNative.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.WITHDRAWERROLE(&_ZetaConnectorNative.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNative.Contract.WITHDRAWERROLE(&_ZetaConnectorNative.CallOpts) +} + // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) @@ -233,6 +326,130 @@ func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) Gateway() (common. return _ZetaConnectorNative.Contract.Gateway(&_ZetaConnectorNative.CallOpts) } +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorNative.Contract.GetRoleAdmin(&_ZetaConnectorNative.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorNative.Contract.GetRoleAdmin(&_ZetaConnectorNative.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorNative.Contract.HasRole(&_ZetaConnectorNative.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorNative.Contract.HasRole(&_ZetaConnectorNative.CallOpts, role, account) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Paused() (bool, error) { + return _ZetaConnectorNative.Contract.Paused(&_ZetaConnectorNative.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) Paused() (bool, error) { + return _ZetaConnectorNative.Contract.Paused(&_ZetaConnectorNative.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ZetaConnectorNative.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorNative.Contract.SupportsInterface(&_ZetaConnectorNative.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorNative.Contract.SupportsInterface(&_ZetaConnectorNative.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -295,6 +512,48 @@ func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) ZetaToken() (commo return _ZetaConnectorNative.Contract.ZetaToken(&_ZetaConnectorNative.CallOpts) } +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.GrantRole(&_ZetaConnectorNative.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.GrantRole(&_ZetaConnectorNative.TransactOpts, role, account) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Pause(&_ZetaConnectorNative.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Pause(&_ZetaConnectorNative.TransactOpts) +} + // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() @@ -316,6 +575,69 @@ func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) ReceiveTokens( return _ZetaConnectorNative.Contract.ReceiveTokens(&_ZetaConnectorNative.TransactOpts, amount) } +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.RenounceRole(&_ZetaConnectorNative.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.RenounceRole(&_ZetaConnectorNative.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.RevokeRole(&_ZetaConnectorNative.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.RevokeRole(&_ZetaConnectorNative.TransactOpts, role, account) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Unpause(&_ZetaConnectorNative.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Unpause(&_ZetaConnectorNative.TransactOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() @@ -379,6 +701,760 @@ func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndRev return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash) } +// ZetaConnectorNativePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativePausedIterator struct { + Event *ZetaConnectorNativePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativePaused represents a Paused event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorNativePausedIterator, error) { + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorNativePausedIterator{contract: _ZetaConnectorNative.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativePaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativePaused) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParsePaused(log types.Log) (*ZetaConnectorNativePaused, error) { + event := new(ZetaConnectorNativePaused) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleAdminChangedIterator struct { + Event *ZetaConnectorNativeRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeRoleAdminChanged represents a RoleAdminChanged event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ZetaConnectorNativeRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeRoleAdminChangedIterator{contract: _ZetaConnectorNative.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeRoleAdminChanged) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseRoleAdminChanged(log types.Log) (*ZetaConnectorNativeRoleAdminChanged, error) { + event := new(ZetaConnectorNativeRoleAdminChanged) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleGrantedIterator struct { + Event *ZetaConnectorNativeRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeRoleGranted represents a RoleGranted event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorNativeRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeRoleGrantedIterator{contract: _ZetaConnectorNative.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeRoleGranted) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseRoleGranted(log types.Log) (*ZetaConnectorNativeRoleGranted, error) { + event := new(ZetaConnectorNativeRoleGranted) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleRevokedIterator struct { + Event *ZetaConnectorNativeRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeRoleRevoked represents a RoleRevoked event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorNativeRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNativeRoleRevokedIterator{contract: _ZetaConnectorNative.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeRoleRevoked) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseRoleRevoked(log types.Log) (*ZetaConnectorNativeRoleRevoked, error) { + event := new(ZetaConnectorNativeRoleRevoked) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNativeUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeUnpausedIterator struct { + Event *ZetaConnectorNativeUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNativeUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNativeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNativeUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNativeUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNativeUnpaused represents a Unpaused event raised by the ZetaConnectorNative contract. +type ZetaConnectorNativeUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorNativeUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorNative.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorNativeUnpausedIterator{contract: _ZetaConnectorNative.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNativeUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNative.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNativeUnpaused) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNative *ZetaConnectorNativeFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorNativeUnpaused, error) { + event := new(ZetaConnectorNativeUnpaused) + if err := _ZetaConnectorNative.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNative contract. type ZetaConnectorNativeWithdrawIterator struct { Event *ZetaConnectorNativeWithdraw // Event containing the contract specifics and raw log diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index a0695527..88e3e12b 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061c3288061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e6109bf565b60405161019b9190617991565b60405180910390f35b6101ac610a21565b60405161019b9190617a2d565b610184610b63565b61018e611336565b61018e611396565b6101846113f6565b610184611a52565b6101e9611c48565b60405161019b9190617b93565b6101fe611dca565b60405161019b9190617c31565b610184611e9a565b61021b612055565b60405161019b9190617ca8565b610184612150565b61021b612358565b6101fe612453565b610248612523565b604051901515815260200161019b565b6101846125f7565b610184612a0d565b6101846130cd565b61018e613733565b601f546102489060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516102d7906178a4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561035b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015261043f919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613793565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906104c3906178b1565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104f6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061054b906178be565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610587573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105cc906178cb565b604051809103906000f0801580156105e8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f9575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b43578382906000526020600020018054610ab690617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae290617d3f565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b505050508152505081526020019060010190610a45565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c629190617d8c565b9050610c6f8160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce39190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610dc6916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610fe29089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110c892909116908a9089908b90600401617de6565b600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190617d8c565b905061117981886137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190617d8c565b9050611202816111fd8a87617e4e565b6137b2565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190617d8c565b90506112a98160006137b2565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190617d8c565b905061132a8160006137b2565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361149793921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190617d8c565b90506114e58160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161163c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061183b9089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061192192909116908a9089908b90600401617de6565b600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190617d8c565b90506119d28160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190617d8c565b905061120281856137b2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611c119290911690879086908890600401617de6565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5783829060005260206000209060020201604051806040016040529081600082018054611c9f90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ccb90617d3f565b8015611d185780601f10611ced57610100808354040283529160200191611d18565b820191906000526020600020905b815481529060010190602001808311611cfb57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d5f5790505b50505050508152505081526020019060010190611c6c565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5a578382906000526020600020018054611e0d90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990617d3f565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b505050505081526020019060010190611dee565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561213857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120e55790505b50505050508152505081526020019060010190612079565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611c119290911690879086908890600401617de6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561243b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123e85790505b5050505050815250508152602001906001019061237c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57838290600052602060002001805461249690617d3f565b80601f01602080910402602001604051908101604052809291908181526020018280546124c290617d3f565b801561250f5780601f106124e45761010080835404028352916020019161250f565b820191906000526020600020905b8154815290600101906020018083116124f257829003601f168201915b505050505081526020019060010190612477565b60085460009060ff161561253b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f09190617d8c565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa15801561264b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266f9190617d8c565b905061267c8160006137b2565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161275c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561297057600080fd5b505af1158015612984573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190617d8c565b9050612a0681866137b2565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190617d8c565b9050612b198160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c70916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d82600289617e61565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612ea39089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f8992909116908a9089908b90600401617de6565b600060405180830381600087803b158015612fa357600080fd5b505af1158015612fb7573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190617d8c565b905061303e816111fd60028a617e61565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b29190617d8c565b9050611202816130c360028b617e61565b6111fd9087617e4e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190617d8c565b90506131938160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916132ea916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061340192506001600160a01b03909116908790617e9c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561349757600080fd5b505af11580156134ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906134f6908a908990617dcd565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561358c57600080fd5b505af11580156135a0573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506135e59089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506136cb92909116908a9089908b90600401617de6565b600060405180830381600087803b1580156136e557600080fd5b505af11580156136f9573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161112c565b60606015805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b600061379d6178d8565b6137a8848483613831565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561381d57600080fd5b505afa15801561204d573d6000803e3d6000fd5b60008061383e85846138ac565b90506138a16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161388c929190617e9c565b604051602081830303815290604052856138b8565b9150505b9392505050565b60006138a583836138e6565b60c081015151600090156138dc576138d584848460c00151613901565b90506138a5565b6138d58484613aa7565b60006138f28383613b92565b6138a5838360200151846138b8565b60008061390c613ba2565b9050600061391a8683613c75565b90506000613931826060015183602001518561411b565b905060006139418383898961432d565b9050600061394e826151aa565b602081015181519192509060030b156139c157898260400151604051602001613978929190617ebe565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526139b891600401617f3f565b60405180910390fd5b6000613a046040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615379565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613a57908490600401617f3f565b602060405180830381865afa158015613a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a989190617f52565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613afc908790600401617f3f565b600060405180830381865afa158015613b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b419190810190618063565b90506000613b6f8285604051602001613b5b929190618098565b604051602081830303815290604052615579565b90506001600160a01b0381166137a85784846040516020016139789291906180c7565b613b9e8282600061558c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613c29908490600401618172565b600060405180830381865afa158015613c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6e91908101906181b9565b9250505090565b613ca76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613cf26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613cfb8561568f565b60208201526000613d0b86615a74565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d7591908101906181b9565b86838560200151604051602001613d8f9493929190618202565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613de7908590600401617f3f565b600060405180830381865afa158015613e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e2c91908101906181b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e74908490600401618306565b602060405180830381865afa158015613e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb59190618358565b613eca5781604051602001613978919061837a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f0f90849060040161840c565b600060405180830381865afa158015613f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f5491908101906181b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f9b90849060040161845e565b602060405180830381865afa158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190618358565b15614071576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061402690849060040161845e565b600060405180830381865afa158015614043573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406b91908101906181b9565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161409691906184b0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140c292919061851c565b600060405180830381865afa1580156140df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261410791908101906181b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816141375790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061419757614197618541565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106141eb576141eb618541565b6020026020010181905250846040516020016142079190618570565b6040516020818303038152906040528160028151811061422957614229618541565b60200260200101819052508260405160200161424591906185dc565b6040516020818303038152906040528160038151811061426757614267618541565b6020026020010181905250600061427d826151aa565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061430e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615cf7565b6143235785604051602001613978919061861d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561437d565b511590565b6144f157826020015115614439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016139b8565b8260c00151156144f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016139b8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161450a57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614565906186ae565b935060ff168151811061457a5761457a618541565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145cb91906186cd565b6040516020818303038152906040528282806145e6906186ae565b935060ff16815181106145fb576145fb618541565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614648906186ae565b935060ff168151811061465d5761465d618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806146aa906186ae565b935060ff16815181106146bf576146bf618541565b602002602001018190525087602001518282806146db906186ae565b935060ff16815181106146f0576146f0618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061473d906186ae565b935060ff168151811061475257614752618541565b60209081029190910101528751828261476a816186ae565b935060ff168151811061477f5761477f618541565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806147cc906186ae565b935060ff16815181106147e1576147e1618541565b60200260200101819052506147f546615d58565b8282614800816186ae565b935060ff168151811061481557614815618541565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614862906186ae565b935060ff168151811061487757614877618541565b60200260200101819052508682828061488f906186ae565b935060ff16815181106148a4576148a4618541565b60209081029190910101528551156149cb5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148f5816186ae565b935060ff168151811061490a5761490a618541565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061495a908990600401617f3f565b600060405180830381865afa158015614977573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261499f91908101906181b9565b82826149aa816186ae565b935060ff16815181106149bf576149bf618541565b60200260200101819052505b846020015115614a9b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614a14816186ae565b935060ff1681518110614a2957614a29618541565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a76906186ae565b935060ff1681518110614a8b57614a8b618541565b6020026020010181905250614c62565b614ad36143788660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b665760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b16816186ae565b935060ff1681518110614b2b57614b2b618541565b60200260200101819052508460a00151604051602001614b4b9190618570565b604051602081830303815290604052828280614a76906186ae565b8460c00151158015614ba9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ba790511590565b155b15614c625760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614bed816186ae565b935060ff1681518110614c0257614c02618541565b6020026020010181905250614c1688615df8565b604051602001614c269190618570565b604051602081830303815290604052828280614c41906186ae565b935060ff1681518110614c5657614c56618541565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c9690511590565b614d2b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614cd9816186ae565b935060ff1681518110614cee57614cee618541565b60200260200101819052508460400151828280614d0a906186ae565b935060ff1681518110614d1f57614d1f618541565b60200260200101819052505b606085015115614e4c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d74816186ae565b935060ff1681518110614d8957614d89618541565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614df8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e2091908101906181b9565b8282614e2b816186ae565b935060ff1681518110614e4057614e40618541565b60200260200101819052505b60e08501515115614ef35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e96816186ae565b935060ff1681518110614eab57614eab618541565b6020026020010181905250614ec78560e0015160000151615d58565b8282614ed2816186ae565b935060ff1681518110614ee757614ee7618541565b60200260200101819052505b60e08501516020015115614f9d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614f40816186ae565b935060ff1681518110614f5557614f55618541565b6020026020010181905250614f718560e0015160200151615d58565b8282614f7c816186ae565b935060ff1681518110614f9157614f91618541565b60200260200101819052505b60e085015160400151156150475760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614fea816186ae565b935060ff1681518110614fff57614fff618541565b602002602001018190525061501b8560e0015160400151615d58565b8282615026816186ae565b935060ff168151811061503b5761503b618541565b60200260200101819052505b60e085015160600151156150f15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615094816186ae565b935060ff16815181106150a9576150a9618541565b60200260200101819052506150c58560e0015160600151615d58565b82826150d0816186ae565b935060ff16815181106150e5576150e5618541565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561510f5761510f617f7b565b60405190808252806020026020018201604052801561514257816020015b606081526020019060019003908161512d5790505b50905060005b8260ff168160ff16101561519b57838160ff168151811061516b5761516b618541565b6020026020010151828260ff168151811061518857615188618541565b6020908102919091010152600101615148565b5093505050505b949350505050565b6151d16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161525791869101618738565b600060405180830381865afa158015615274573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261529c91908101906181b9565b905060006152aa86836168e7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152da9190617c31565b6000604051808303816000875af11580156152f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615321919081019061877f565b805190915060030b1580159061533a5750602081015151155b80156153495750604081015151155b15614323578160008151811061536157615361618541565b60200260200101516040516020016139789190618835565b606060006153ae8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153e59082905b90616a3c565b156155425760006154628261545c846154566154288a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a63565b90616ac5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154c6908290616a3c565b1561553057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261552d905b8290616b4a565b90505b61553981616b70565b925050506138a5565b821561555b578484604051602001613978929190618a21565b50506040805160208101909152600081526138a5565b509392505050565b6000808251602084016000f09392505050565b8160a001511561559b57505050565b60006155a8848484616bd9565b905060006155b5826151aa565b602081015181519192509060030b1580156156515750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615651906040805180820182526000808252602091820152815180830190925284518252808501908201526153df565b1561565e57505050505050565b6040820151511561567e5781604001516040516020016139789190618ac8565b806040516020016139789190618b26565b606060006156c48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615729905b8290615cf7565b1561579857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793908390617174565b616b70565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157fa905b82906171fe565b6001036158c757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586090615526565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793905b8390616b4a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261592690615722565b15615a5d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061598e908390617298565b9050600081600183516159a19190617e4e565b815181106159b1576159b1618541565b60200260200101519050615a54615793615a276040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617174565b95945050505050565b826040516020016139789190618b91565b50919050565b60606000615aa98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b0b90615722565b15615b19576138a581616b70565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b78906157f3565b600103615be257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793906158c0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c4190615722565b15615a5d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615ca9908390617298565b9050600181511115615ce5578060028251615cc49190617e4e565b81518110615cd457615cd4618541565b602002602001015192505050919050565b50826040516020016139789190618b91565b805182516000911115615d0c575060006137ac565b81518351602085015160009291615d2291618c6f565b615d2c9190617e4e565b905082602001518103615d435760019150506137ac565b82516020840151819020912014905092915050565b60606000615d658361733d565b600101905060008167ffffffffffffffff811115615d8557615d85617f7b565b6040519080825280601f01601f191660200182016040528015615daf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615db957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e84905b829061741f565b15615ec457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f2390615e7d565b15615f6357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc290615e7d565b1561600257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606190615e7d565b806160c65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160c690615e7d565b1561610657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261616590615e7d565b806161ca5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ca90615e7d565b1561620a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626990615e7d565b806162ce5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ce90615e7d565b1561630e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636d90615e7d565b806163d25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d290615e7d565b1561641257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261647190615e7d565b156164b157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261651090615e7d565b1561655057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165af90615e7d565b156165ef57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261664e90615e7d565b1561668e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ed90615e7d565b1561672d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678c90615e7d565b806167f15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f190615e7d565b1561683157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261689090615e7d565b156168d057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516139789290602001618c82565b60608060005b8451811015616972578185828151811061690957616909618541565b6020026020010151604051602001616922929190618098565b6040516020818303038152906040529150600185516169419190617e4e565b811461696a57816040516020016169589190618deb565b60405160208183030381529060405291505b6001016168ed565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161698b57905050905083816000815181106169b6576169b6618541565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616a0a57616a0a618541565b60200260200101819052508181600281518110616a2957616a29618541565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a5a9291849190617433565b14159392505050565b60408051808201909152600080825260208201526000616a958460000151856020015185600001518660200151617544565b9050836020015181616aa79190617e4e565b84518590616ab6908390617e4e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616aea5750816137ac565b6020808301519084015160019114616b115750815160208481015190840151829020919020145b8015616b4257825184518590616b28908390617e4e565b9052508251602085018051616b3e908390618c6f565b9052505b509192915050565b6040805180820190915260008082526020820152616b69838383617664565b5092915050565b60606000826000015167ffffffffffffffff811115616b9157616b91617f7b565b6040519080825280601f01601f191660200182016040528015616bbb576020820181803683370190505b5090506000602082019050616b69818560200151866000015161770f565b60606000616be5613ba2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616c0257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c5d906186ae565b935060ff1681518110616c7257616c72618541565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616cc39190618e2c565b604051602081830303815290604052828280616cde906186ae565b935060ff1681518110616cf357616cf3618541565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616d40906186ae565b935060ff1681518110616d5557616d55618541565b602002602001018190525082604051602001616d7191906185dc565b604051602081830303815290604052828280616d8c906186ae565b935060ff1681518110616da157616da1618541565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616dee906186ae565b935060ff1681518110616e0357616e03618541565b6020026020010181905250616e188784617789565b8282616e23816186ae565b935060ff1681518110616e3857616e38618541565b602090810291909101015285515115616ee45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e8a816186ae565b935060ff1681518110616e9f57616e9f618541565b6020026020010181905250616eb8866000015184617789565b8282616ec3816186ae565b935060ff1681518110616ed857616ed8618541565b60200260200101819052505b856080015115616f525760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616f2d816186ae565b935060ff1681518110616f4257616f42618541565b6020026020010181905250616fb8565b8415616fb85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f97816186ae565b935060ff1681518110616fac57616fac618541565b60200260200101819052505b604086015151156170545760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617002816186ae565b935060ff168151811061701757617017618541565b60200260200101819052508560400151828280617033906186ae565b935060ff168151811061704857617048618541565b60200260200101819052505b8560600151156170be5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261709d816186ae565b935060ff16815181106170b2576170b2618541565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156170dc576170dc617f7b565b60405190808252806020026020018201604052801561710f57816020015b60608152602001906001900390816170fa5790505b50905060005b8260ff168160ff16101561716857838160ff168151811061713857617138618541565b6020026020010151828260ff168151811061715557617155618541565b6020908102919091010152600101617115565b50979650505050505050565b60408051808201909152600080825260208201528151835110156171995750816137ac565b815183516020850151600092916171af91618c6f565b6171b99190617e4e565b602084015190915060019082146171da575082516020840151819020908220145b80156171f5578351855186906171f1908390617e4e565b9052505b50929392505050565b60008082600001516172228560000151866020015186600001518760200151617544565b61722c9190618c6f565b90505b835160208501516172409190618c6f565b8111616b69578161725081618e71565b925050826000015161728785602001518361726b9190617e4e565b86516172779190617e4e565b8386600001518760200151617544565b6172919190618c6f565b905061722f565b606060006172a684846171fe565b6172b1906001618c6f565b67ffffffffffffffff8111156172c9576172c9617f7b565b6040519080825280602002602001820160405280156172fc57816020015b60608152602001906001900390816172e75790505b50905060005b8151811015615571576173186157938686616b4a565b82828151811061732a5761732a618541565b6020908102919091010152600101617302565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617386577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106173b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106173d057662386f26fc10000830492506010015b6305f5e10083106173e8576305f5e100830492506008015b61271083106173fc57612710830492506004015b6064831061740e576064830492506002015b600a83106137ac5760010192915050565b600061742b83836177c9565b159392505050565b60008085841161753a57602084116174e6576000841561747e57600161745a866020617e4e565b617465906008618e8b565b617470906002618f89565b61747a9190617e4e565b1990505b835181168561748d8989618c6f565b6174979190617e4e565b805190935082165b8181146174d1578784116174b957879450505050506151a2565b836174c381618f95565b94505082845116905061749f565b6174db8785618c6f565b9450505050506151a2565b8383206174f38588617e4e565b6174fd9087618c6f565b91505b858210617538578482208082036175255761751b8684618c6f565b93505050506151a2565b617530600184617e4e565b925050617500565b505b5092949350505050565b6000838186851161764f57602085116175fe576000851561759057600161756c876020617e4e565b617577906008618e8b565b617582906002618f89565b61758c9190617e4e565b1990505b845181166000876175a18b8b618c6f565b6175ab9190617e4e565b855190915083165b8281146175f0578186106175d8576175cb8b8b618c6f565b96505050505050506151a2565b856175e281618e71565b9650508386511690506175b3565b8596505050505050506151a2565b508383206000905b6176108689617e4e565b821161764d5785832080820361762c57839450505050506151a2565b617637600185618c6f565b935050818061764590618e71565b925050617606565b505b6176598787618c6f565b979650505050505050565b604080518082019091526000808252602082015260006176968560000151866020015186600001518760200151617544565b6020808701805191860191909152519091506176b29082617e4e565b8352845160208601516176c59190618c6f565b81036176d45760008552617706565b835183516176e29190618c6f565b855186906176f1908390617e4e565b90525083516177009082618c6f565b60208601525b50909392505050565b602081106177475781518352617726602084618c6f565b9250617733602083618c6f565b9150617740602082617e4e565b905061770f565b600019811561777657600161775d836020617e4e565b61776990610100618f89565b6177739190617e4e565b90505b9151835183169219169190911790915250565b606060006177978484613c75565b80516020808301516040519394506177b193909101618fac565b60405160208183030381529060405291505092915050565b81518151600091908111156177dc575081515b6020808501519084015160005b83811015617895578251825180821461786557600019602087101561784457600184617816896020617e4e565b6178209190618c6f565b61782b906008618e8b565b617836906002618f89565b6178409190617e4e565b1990505b81811683821681810391146178625797506137ac9650505050505050565b50505b617870602086618c6f565b945061787d602085618c6f565b9350505060208161788e9190618c6f565b90506177e9565b50845186516143239190619004565b610c9f8061902583390190565b610b4a80619cc483390190565b610d878061a80e83390190565b610d5e8061b59583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161791b617920565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161791b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179d25783516001600160a01b03168352602093840193909201916001016179ab565b509095945050505050565b60005b838110156179f85781810151838201526020016179e0565b50506000910152565b60008151808452617a198160208601602086016179dd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617b0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617af9848651617a01565b6020958601959094509290920191600101617abf565b509197505050602094850194929092019150600101617a55565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b895781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617b49565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bff6040880182617a01565b9050602082015191508681036020880152617c1a8183617b35565b965050506020938401939190910190600101617bbb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c93858351617a01565b94506020938401939190910190600101617c59565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617d296040870182617b35565b9550506020938401939190910190600101617cd0565b600181811c90821680617d5357607f821691505b602082108103615a6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d9e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615a546060830184617a01565b8281526040602082015260006151a26040830184617a01565b6001600160a01b0385168152836020820152608060408201526000617e0e6080830185617a01565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156137ac576137ac617e1f565b600082617e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151a26040830184617a01565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617ef681601a8501602088016179dd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f3381601c8401602088016179dd565b01601c01949350505050565b6020815260006138a56020830184617a01565b600060208284031215617f6457600080fd5b81516001600160a01b03811681146138a557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617fcd57617fcd617f7b565b60405290565b60008067ffffffffffffffff841115617fee57617fee617f7b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561801d5761801d617f7b565b60405283815290508082840185101561803557600080fd5b6155718460208301856179dd565b600082601f83011261805457600080fd5b6138a583835160208501617fd3565b60006020828403121561807557600080fd5b815167ffffffffffffffff81111561808c57600080fd5b6137a884828501618043565b600083516180aa8184602088016179dd565b8351908301906180be8183602088016179dd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ff81601a8501602088016179dd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161813c8160338401602088016179dd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138a56080830184617a01565b6000602082840312156181cb57600080fd5b815167ffffffffffffffff8111156181e257600080fd5b8201601f810184136181f357600080fd5b6137a884825160208401617fd3565b60008551618214818460208a016179dd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161824e816001840160208a016179dd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161828c8160028401602089016179dd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516182ce8160028401602088016179dd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006183196040830184617a01565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561836a57600080fd5b815180151581146138a557600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516183b281601f8501602087016179dd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061841f6040830184617a01565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006184716040830184617a01565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516184e88160148501602087016179dd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061852f6040830185617a01565b82810360208401526138a18185617a01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516185a88160018501602087016179dd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516185ee8184602087016179dd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516186a181604b8501602087016179dd565b91909101604b0192915050565b600060ff821660ff81036186c4576186c4617e1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138a56080830184617a01565b60006020828403121561879157600080fd5b815167ffffffffffffffff8111156187a857600080fd5b8201606081850312156187ba57600080fd5b6187c2617faa565b81518060030b81146187d357600080fd5b8152602082015167ffffffffffffffff8111156187ef57600080fd5b6187fb86828501618043565b602083015250604082015167ffffffffffffffff81111561881b57600080fd5b61882786828501618043565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516188938160218501602087016179dd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618a7f8160218501602088016179dd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618abc81602e8401602088016179dd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b848160228501602087016179dd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618bc981600e8501602087016179dd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156137ac576137ac617e1f565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618cba8160188501602088016179dd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618cf781601c8401602088016179dd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618dfd8184602087016179dd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618e6481601c8501602087016179dd565b91909101601c0192915050565b60006000198203618e8457618e84617e1f565b5060010190565b80820281158282048414176137ac576137ac617e1f565b6001815b6001841115618edd57808504811115618ec157618ec1617e1f565b6001841615618ecf57908102905b60019390931c928002618ea6565b935093915050565b600082618ef4575060016137ac565b81618f01575060006137ac565b8160018114618f175760028114618f2157618f3d565b60019150506137ac565b60ff841115618f3257618f32617e1f565b50506001821b6137ac565b5060208310610133831016604e8410600b8410161715618f60575081810a6137ac565b618f6d6000198484618ea2565b8060001904821115618f8157618f81617e1f565b029392505050565b60006138a58383618ee5565b600081618fa457618fa4617e1f565b506000190190565b60008351618fbe8184602088016179dd565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618ff88160018401602088016179dd565b01600101949350505050565b8181036000831280158383131683831282161715616b6957616b69617e1f56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220253a981bc55dea3d94e3622fe66233e23c29a85c4bca6f00149cf5cc68a0247d64736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6508061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b610199610a2b565b6040516101a69190617b71565b60405180910390f35b6101b7610a8d565b6040516101a69190617c0d565b61018f610bcf565b6101996113a2565b610199611402565b61018f611462565b6101ec611abe565b6040516101a69190617d73565b61018f611c40565b610209611eb2565b6040516101a69190617e11565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611f82565b6040516101a69190617e88565b61025361207d565b610209612178565b610278612248565b60405190151581526020016101a6565b61018f61231c565b61018f6125a0565b61018f6129b6565b61018f613076565b6101996136dc565b601f546102789060ff1681565b61018f61373c565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161031790617a84565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561039b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261048c919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613973565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460255460405192939182169291169061051890617a91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610554573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460255460405193851694928316939183169216906105af90617a9e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105f3573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161063890617aab565b604051809103906000f080158015610654573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561080457600080fd5b505af1158015610818573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a65575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bc657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610baf578382906000526020600020018054610b2290617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90617f1f565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b505050505081526020019060010190610b03565b505050508152505081526020019060010190610ab1565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190617f6c565b9050610cdb816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610e32916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015610e4c57600080fd5b505af1158015610e60573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061104e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061113492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d99190617f6c565b90506111e58188613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190617f6c565b905061126e816112698a8761802e565b613992565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190617f6c565b9050611315816000613992565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190617f6c565b9050611396816000613992565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361150393921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190617f6c565b9050611551816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916116a8916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561176857600080fd5b505af115801561177c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118a79089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061198d92909116908a9089908b90600401617fc6565b600060405180830381600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190617f6c565b9050611a3e816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190617f6c565b905061126e8185613992565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000209060020201604051806040016040529081600082018054611b1590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4190617f1f565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c2857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611bd55790505b50505050508152505081526020019060010190611ae2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cf657600080fd5b505af1158015611d0a573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611df59190600401618041565b600060405180830381600087803b158015611e0f57600080fd5b505af1158015611e23573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611e7b9290911690879086908890600401617fc6565b600060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc6578382906000526020600020018054611ef590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190617f1f565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b505050505081526020019060010190611ed6565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120125790505b50505050508152505081526020019060010190611fa6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561216057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161210d5790505b505050505081525050815260200190600101906120a1565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000200180546121bb90617f1f565b80601f01602080910402602001604051908101604052809291908181526020018280546121e790617f1f565b80156122345780601f1061220957610100808354040283529160200191612234565b820191906000526020600020905b81548152906001019060200180831161221757829003601f168201915b50505050508152602001906001019061219c565b60085460009060ff1615612260575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190617f6c565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061251a9190600401618041565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611e7b9290911690879086908890600401617fc6565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190617f6c565b9050612625816000613992565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612705916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561289157600080fd5b505af11580156128a5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190617f6c565b90506129af8186613992565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190617f6c565b9050612ac2816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b369190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c19916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015612c3357600080fd5b505af1158015612c47573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d2b600289618054565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612df357600080fd5b505af1158015612e07573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612e4c9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f3292909116908a9089908b90600401617fc6565b600060405180830381600087803b158015612f4c57600080fd5b505af1158015612f60573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190617f6c565b9050612fe78161126960028a618054565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305b9190617f6c565b905061126e8161306c60028b618054565b611269908761802e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190617f6c565b905061313c816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b09190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613293916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156132ad57600080fd5b505af11580156132c1573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561335357600080fd5b505af1158015613367573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506133aa92506001600160a01b0390911690879061808f565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061349f908a908990617fad565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561353557600080fd5b505af1158015613549573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe915061358e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360857600080fd5b505af115801561361c573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061367492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101611198565b60606015805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137b657600080fd5b505af11580156137ca573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138b59190600401618041565b600060405180830381600087803b1580156138cf57600080fd5b505af11580156138e3573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050565b600061397d617ab8565b613988848483613a11565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156139fd57600080fd5b505afa15801561396b573d6000803e3d6000fd5b600080613a1e8584613a8c565b9050613a816040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a6c92919061808f565b60405160208183030381529060405285613a98565b9150505b9392505050565b6000613a858383613ac6565b60c08101515160009015613abc57613ab584848460c00151613ae1565b9050613a85565b613ab58484613c87565b6000613ad28383613d72565b613a8583836020015184613a98565b600080613aec613d82565b90506000613afa8683613e55565b90506000613b1182606001518360200151856142fb565b90506000613b218383898961450d565b90506000613b2e8261538a565b602081015181519192509060030b15613ba157898260400151604051602001613b589291906180b1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b9891600401618041565b60405180910390fd5b6000613be46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615559565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c37908490600401618041565b602060405180830381865afa158015613c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c789190618132565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613cdc908790600401618041565b600060405180830381865afa158015613cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d219190810190618243565b90506000613d4f8285604051602001613d3b929190618278565b604051602081830303815290604052615759565b90506001600160a01b038116613988578484604051602001613b589291906182a7565b613d7e8282600061576c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e09908490600401618352565b600060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e4e9190810190618399565b9250505090565b613e876040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613ed26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613edb8561586f565b60208201526000613eeb86615c54565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f559190810190618399565b86838560200151604051602001613f6f94939291906183e2565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fc7908590600401618041565b600060405180830381865afa158015613fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261400c9190810190618399565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140549084906004016184e6565b602060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140959190618538565b6140aa5781604051602001613b58919061855a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140ef9084906004016185ec565b600060405180830381865afa15801561410c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141349190810190618399565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061417b90849060040161863e565b602060405180830381865afa158015614198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bc9190618538565b15614251576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061420690849060040161863e565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190618399565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142769190618690565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142a29291906186fc565b600060405180830381865afa1580156142bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142e79190810190618399565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143175790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061437757614377618721565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143cb576143cb618721565b6020026020010181905250846040516020016143e79190618750565b6040516020818303038152906040528160028151811061440957614409618721565b60200260200101819052508260405160200161442591906187bc565b6040516020818303038152906040528160038151811061444757614447618721565b6020026020010181905250600061445d8261538a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144ee9060408051808201825260008082526020918201528151808301909252845182528085019082015290615ed7565b6145035785604051602001613b5891906187fd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561455d565b511590565b6146d157826020015115614619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b98565b8260c00151156146d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b98565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146ea57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147459061888e565b935060ff168151811061475a5761475a618721565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147ab91906188ad565b6040516020818303038152906040528282806147c69061888e565b935060ff16815181106147db576147db618721565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806148289061888e565b935060ff168151811061483d5761483d618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061488a9061888e565b935060ff168151811061489f5761489f618721565b602002602001018190525087602001518282806148bb9061888e565b935060ff16815181106148d0576148d0618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061491d9061888e565b935060ff168151811061493257614932618721565b60209081029190910101528751828261494a8161888e565b935060ff168151811061495f5761495f618721565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149ac9061888e565b935060ff16815181106149c1576149c1618721565b60200260200101819052506149d546615f38565b82826149e08161888e565b935060ff16815181106149f5576149f5618721565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a429061888e565b935060ff1681518110614a5757614a57618721565b602002602001018190525086828280614a6f9061888e565b935060ff1681518110614a8457614a84618721565b6020908102919091010152855115614bab5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ad58161888e565b935060ff1681518110614aea57614aea618721565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b3a908990600401618041565b600060405180830381865afa158015614b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b7f9190810190618399565b8282614b8a8161888e565b935060ff1681518110614b9f57614b9f618721565b60200260200101819052505b846020015115614c7b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bf48161888e565b935060ff1681518110614c0957614c09618721565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c569061888e565b935060ff1681518110614c6b57614c6b618721565b6020026020010181905250614e42565b614cb36145588660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d465760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614cf68161888e565b935060ff1681518110614d0b57614d0b618721565b60200260200101819052508460a00151604051602001614d2b9190618750565b604051602081830303815290604052828280614c569061888e565b8460c00151158015614d89575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d8790511590565b155b15614e425760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dcd8161888e565b935060ff1681518110614de257614de2618721565b6020026020010181905250614df688615fd8565b604051602001614e069190618750565b604051602081830303815290604052828280614e219061888e565b935060ff1681518110614e3657614e36618721565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e7690511590565b614f0b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614eb98161888e565b935060ff1681518110614ece57614ece618721565b60200260200101819052508460400151828280614eea9061888e565b935060ff1681518110614eff57614eff618721565b60200260200101819052505b60608501511561502c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f548161888e565b935060ff1681518110614f6957614f69618721565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526150009190810190618399565b828261500b8161888e565b935060ff168151811061502057615020618721565b60200260200101819052505b60e085015151156150d35760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150768161888e565b935060ff168151811061508b5761508b618721565b60200260200101819052506150a78560e0015160000151615f38565b82826150b28161888e565b935060ff16815181106150c7576150c7618721565b60200260200101819052505b60e0850151602001511561517d5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826151208161888e565b935060ff168151811061513557615135618721565b60200260200101819052506151518560e0015160200151615f38565b828261515c8161888e565b935060ff168151811061517157615171618721565b60200260200101819052505b60e085015160400151156152275760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151ca8161888e565b935060ff16815181106151df576151df618721565b60200260200101819052506151fb8560e0015160400151615f38565b82826152068161888e565b935060ff168151811061521b5761521b618721565b60200260200101819052505b60e085015160600151156152d15760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152748161888e565b935060ff168151811061528957615289618721565b60200260200101819052506152a58560e0015160600151615f38565b82826152b08161888e565b935060ff16815181106152c5576152c5618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152ef576152ef61815b565b60405190808252806020026020018201604052801561532257816020015b606081526020019060019003908161530d5790505b50905060005b8260ff168160ff16101561537b57838160ff168151811061534b5761534b618721565b6020026020010151828260ff168151811061536857615368618721565b6020908102919091010152600101615328565b5093505050505b949350505050565b6153b16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161543791869101618918565b600060405180830381865afa158015615454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261547c9190810190618399565b9050600061548a8683616ac7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154ba9190617e11565b6000604051808303816000875af11580156154d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615501919081019061895f565b805190915060030b1580159061551a5750602081015151155b80156155295750604081015151155b15614503578160008151811061554157615541618721565b6020026020010151604051602001613b589190618a15565b6060600061558e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155c59082905b90616c1c565b156157225760006156428261563c846156366156088a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c43565b90616ca5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156a6908290616c1c565b1561571057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261570d905b8290616d2a565b90505b61571981616d50565b92505050613a85565b821561573b578484604051602001613b58929190618c01565b5050604080516020810190915260008152613a85565b509392505050565b6000808251602084016000f09392505050565b8160a001511561577b57505050565b6000615788848484616db9565b905060006157958261538a565b602081015181519192509060030b1580156158315750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615831906040805180820182526000808252602091820152815180830190925284518252808501908201526155bf565b1561583e57505050505050565b6040820151511561585e578160400151604051602001613b589190618ca8565b80604051602001613b589190618d06565b606060006158a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615909905b8290615ed7565b1561597857604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973908390617354565b616d50565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159da905b82906173de565b600103615aa757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4090615706565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973905b8390616d2a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0690615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b6e908390617478565b905060008160018351615b81919061802e565b81518110615b9157615b91618721565b60200260200101519050615c34615973615c076040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617354565b95945050505050565b82604051602001613b589190618d71565b50919050565b60606000615c898360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ceb90615902565b15615cf957613a8581616d50565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d58906159d3565b600103615dc257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a859061597390615aa0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2190615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e89908390617478565b9050600181511115615ec5578060028251615ea4919061802e565b81518110615eb457615eb4618721565b602002602001015192505050919050565b5082604051602001613b589190618d71565b805182516000911115615eec5750600061398c565b81518351602085015160009291615f0291618e4f565b615f0c919061802e565b905082602001518103615f2357600191505061398c565b82516020840151819020912014905092915050565b60606000615f458361751d565b600101905060008167ffffffffffffffff811115615f6557615f6561815b565b6040519080825280601f01601f191660200182016040528015615f8f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f9957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616064905b82906175ff565b156160a457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161039061605d565b1561614357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a29061605d565b156161e257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162419061605d565b806162a65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a69061605d565b156162e657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163459061605d565b806163aa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163aa9061605d565b156163ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164499061605d565b806164ae5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ae9061605d565b156164ee57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654d9061605d565b806165b25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b29061605d565b156165f257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166519061605d565b1561669157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166f09061605d565b1561673057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678f9061605d565b156167cf57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e9061605d565b1561686e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd9061605d565b1561690d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696c9061605d565b806169d15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d19061605d565b15616a1157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a709061605d565b15616ab057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b589290602001618e62565b60608060005b8451811015616b525781858281518110616ae957616ae9618721565b6020026020010151604051602001616b02929190618278565b604051602081830303815290604052915060018551616b21919061802e565b8114616b4a5781604051602001616b389190618fcb565b60405160208183030381529060405291505b600101616acd565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b6b5790505090508381600081518110616b9657616b96618721565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bea57616bea618721565b60200260200101819052508181600281518110616c0957616c09618721565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c3a9291849190617613565b14159392505050565b60408051808201909152600080825260208201526000616c758460000151856020015185600001518660200151617724565b9050836020015181616c87919061802e565b84518590616c9690839061802e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cca57508161398c565b6020808301519084015160019114616cf15750815160208481015190840151829020919020145b8015616d2257825184518590616d0890839061802e565b9052508251602085018051616d1e908390618e4f565b9052505b509192915050565b6040805180820190915260008082526020820152616d49838383617844565b5092915050565b60606000826000015167ffffffffffffffff811115616d7157616d7161815b565b6040519080825280601f01601f191660200182016040528015616d9b576020820181803683370190505b5090506000602082019050616d4981856020015186600001516178ef565b60606000616dc5613d82565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616de257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e3d9061888e565b935060ff1681518110616e5257616e52618721565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616ea3919061900c565b604051602081830303815290604052828280616ebe9061888e565b935060ff1681518110616ed357616ed3618721565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f209061888e565b935060ff1681518110616f3557616f35618721565b602002602001018190525082604051602001616f5191906187bc565b604051602081830303815290604052828280616f6c9061888e565b935060ff1681518110616f8157616f81618721565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fce9061888e565b935060ff1681518110616fe357616fe3618721565b6020026020010181905250616ff88784617969565b82826170038161888e565b935060ff168151811061701857617018618721565b6020908102919091010152855151156170c45760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261706a8161888e565b935060ff168151811061707f5761707f618721565b6020026020010181905250617098866000015184617969565b82826170a38161888e565b935060ff16815181106170b8576170b8618721565b60200260200101819052505b8560800151156171325760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261710d8161888e565b935060ff168151811061712257617122618721565b6020026020010181905250617198565b84156171985760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171778161888e565b935060ff168151811061718c5761718c618721565b60200260200101819052505b604086015151156172345760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171e28161888e565b935060ff16815181106171f7576171f7618721565b602002602001018190525085604001518282806172139061888e565b935060ff168151811061722857617228618721565b60200260200101819052505b85606001511561729e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261727d8161888e565b935060ff168151811061729257617292618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172bc576172bc61815b565b6040519080825280602002602001820160405280156172ef57816020015b60608152602001906001900390816172da5790505b50905060005b8260ff168160ff16101561734857838160ff168151811061731857617318618721565b6020026020010151828260ff168151811061733557617335618721565b60209081029190910101526001016172f5565b50979650505050505050565b604080518082019091526000808252602082015281518351101561737957508161398c565b8151835160208501516000929161738f91618e4f565b617399919061802e565b602084015190915060019082146173ba575082516020840151819020908220145b80156173d5578351855186906173d190839061802e565b9052505b50929392505050565b60008082600001516174028560000151866020015186600001518760200151617724565b61740c9190618e4f565b90505b835160208501516174209190618e4f565b8111616d49578161743081619051565b925050826000015161746785602001518361744b919061802e565b8651617457919061802e565b8386600001518760200151617724565b6174719190618e4f565b905061740f565b6060600061748684846173de565b617491906001618e4f565b67ffffffffffffffff8111156174a9576174a961815b565b6040519080825280602002602001820160405280156174dc57816020015b60608152602001906001900390816174c75790505b50905060005b8151811015615751576174f86159738686616d2a565b82828151811061750a5761750a618721565b60209081029190910101526001016174e2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617566577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617592576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175b057662386f26fc10000830492506010015b6305f5e10083106175c8576305f5e100830492506008015b61271083106175dc57612710830492506004015b606483106175ee576064830492506002015b600a831061398c5760010192915050565b600061760b83836179a9565b159392505050565b60008085841161771a57602084116176c6576000841561765e57600161763a86602061802e565b61764590600861906b565b617650906002619169565b61765a919061802e565b1990505b835181168561766d8989618e4f565b617677919061802e565b805190935082165b8181146176b1578784116176995787945050505050615382565b836176a381619175565b94505082845116905061767f565b6176bb8785618e4f565b945050505050615382565b8383206176d3858861802e565b6176dd9087618e4f565b91505b85821061771857848220808203617705576176fb8684618e4f565b9350505050615382565b61771060018461802e565b9250506176e0565b505b5092949350505050565b6000838186851161782f57602085116177de576000851561777057600161774c87602061802e565b61775790600861906b565b617762906002619169565b61776c919061802e565b1990505b845181166000876177818b8b618e4f565b61778b919061802e565b855190915083165b8281146177d0578186106177b8576177ab8b8b618e4f565b9650505050505050615382565b856177c281619051565b965050838651169050617793565b859650505050505050615382565b508383206000905b6177f0868961802e565b821161782d5785832080820361780c5783945050505050615382565b617817600185618e4f565b935050818061782590619051565b9250506177e6565b505b6178398787618e4f565b979650505050505050565b604080518082019091526000808252602082015260006178768560000151866020015186600001518760200151617724565b602080870180519186019190915251909150617892908261802e565b8352845160208601516178a59190618e4f565b81036178b457600085526178e6565b835183516178c29190618e4f565b855186906178d190839061802e565b90525083516178e09082618e4f565b60208601525b50909392505050565b602081106179275781518352617906602084618e4f565b9250617913602083618e4f565b915061792060208261802e565b90506178ef565b600019811561795657600161793d83602061802e565b61794990610100619169565b617953919061802e565b90505b9151835183169219169190911790915250565b606060006179778484613e55565b80516020808301516040519394506179919390910161918c565b60405160208183030381529060405291505092915050565b81518151600091908111156179bc575081515b6020808501519084015160005b83811015617a755782518251808214617a45576000196020871015617a24576001846179f689602061802e565b617a009190618e4f565b617a0b90600861906b565b617a16906002619169565b617a20919061802e565b1990505b8181168382168181039114617a4257975061398c9650505050505050565b50505b617a50602086618e4f565b9450617a5d602085618e4f565b93505050602081617a6e9190618e4f565b90506179c9565b508451865161450391906191e4565b610c9f8061920583390190565b6113e280619ea483390190565b6116378061b28683390190565b610d5e8061c8bd83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617afb617b00565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617afb6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bb25783516001600160a01b0316835260209384019390920191600101617b8b565b509095945050505050565b60005b83811015617bd8578181015183820152602001617bc0565b50506000910152565b60008151808452617bf9816020860160208601617bbd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617cef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cd9848651617be1565b6020958601959094509290920191600101617c9f565b509197505050602094850194929092019150600101617c35565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d695781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d29565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ddf6040880182617be1565b9050602082015191508681036020880152617dfa8183617d15565b965050506020938401939190910190600101617d9b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e73858351617be1565b94506020938401939190910190600101617e39565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f096040870182617d15565b9550506020938401939190910190600101617eb0565b600181811c90821680617f3357607f821691505b602082108103615c4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f7e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615c346060830184617be1565b8281526040602082015260006153826040830184617be1565b6001600160a01b0385168152836020820152608060408201526000617fee6080830185617be1565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561398c5761398c617fff565b602081526000613a856020830184617be1565b60008261808a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153826040830184617be1565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180e981601a850160208801617bbd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161812681601c840160208801617bbd565b01601c01949350505050565b60006020828403121561814457600080fd5b81516001600160a01b0381168114613a8557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156181ad576181ad61815b565b60405290565b60008067ffffffffffffffff8411156181ce576181ce61815b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181fd576181fd61815b565b60405283815290508082840185101561821557600080fd5b615751846020830185617bbd565b600082601f83011261823457600080fd5b613a85838351602085016181b3565b60006020828403121561825557600080fd5b815167ffffffffffffffff81111561826c57600080fd5b61398884828501618223565b6000835161828a818460208801617bbd565b83519083019061829e818360208801617bbd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516182df81601a850160208801617bbd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161831c816033840160208801617bbd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a856080830184617be1565b6000602082840312156183ab57600080fd5b815167ffffffffffffffff8111156183c257600080fd5b8201601f810184136183d357600080fd5b613988848251602084016181b3565b600085516183f4818460208a01617bbd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161842e816001840160208a01617bbd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161846c816002840160208901617bbd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516184ae816002840160208801617bbd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184f96040830184617be1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561854a57600080fd5b81518015158114613a8557600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161859281601f850160208701617bbd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006185ff6040830184617be1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186516040830184617be1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516186c8816014850160208701617bbd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061870f6040830185617be1565b8281036020840152613a818185617be1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618788816001850160208701617bbd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516187ce818460208701617bbd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161888181604b850160208701617bbd565b91909101604b0192915050565b600060ff821660ff81036188a4576188a4617fff565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a856080830184617be1565b60006020828403121561897157600080fd5b815167ffffffffffffffff81111561898857600080fd5b82016060818503121561899a57600080fd5b6189a261818a565b81518060030b81146189b357600080fd5b8152602082015167ffffffffffffffff8111156189cf57600080fd5b6189db86828501618223565b602083015250604082015167ffffffffffffffff8111156189fb57600080fd5b618a0786828501618223565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618a73816021850160208701617bbd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618c5f816021850160208801617bbd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c9c81602e840160208801617bbd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618d64816022850160208701617bbd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618da981600e850160208701617bbd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561398c5761398c617fff565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e9a816018850160208801617bbd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618ed781601c840160208801617bbd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618fdd818460208701617bbd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161904481601c850160208701617bbd565b91909101601c0192915050565b6000600019820361906457619064617fff565b5060010190565b808202811582820484141761398c5761398c617fff565b6001815b60018411156190bd578085048111156190a1576190a1617fff565b60018416156190af57908102905b60019390931c928002619086565b935093915050565b6000826190d45750600161398c565b816190e15750600061398c565b81600181146190f757600281146191015761911d565b600191505061398c565b60ff84111561911257619112617fff565b50506001821b61398c565b5060208310610133831016604e8410600b8410161715619140575081810a61398c565b61914d6000198484619082565b806000190482111561916157619161617fff565b029392505050565b6000613a8583836190c5565b60008161918457619184617fff565b506000190190565b6000835161919e818460208801617bbd565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516191d8816001840160208801617bbd565b01600101949350505050565b8181036000831280158383131683831282161715616d4957616d49617fff56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220b4235f4edd0cbb54ab4d84250a2d0a2b9ff09b592338112c0aa13aeb1ffce1cc64736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. @@ -251,6 +251,37 @@ func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) ISTEST() ( return _ZetaConnectorNativeTest.Contract.ISTEST(&_ZetaConnectorNativeTest.CallOpts) } +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNativeTest.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNativeTest.Contract.WITHDRAWERROLE(&_ZetaConnectorNativeTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNativeTest.Contract.WITHDRAWERROLE(&_ZetaConnectorNativeTest.CallOpts) +} + // ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. // // Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) @@ -655,25 +686,25 @@ func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWi return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS") +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer") } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } // TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. @@ -739,46 +770,46 @@ func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWi return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotWithdrawer") } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactor) TestWithdrawFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotWithdrawer") } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestSession) TestWithdrawFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNativeTest.TransactOpts) +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNativeTest *ZetaConnectorNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNativeTest.Contract.TestWithdrawFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNativeTest.TransactOpts) } // ZetaConnectorNativeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the ZetaConnectorNativeTest contract. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index 04a79ff4..d002b04a 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNonNativeABI = ZetaConnectorNonNativeMetaData.ABI var ZetaConnectorNonNativeBin = ZetaConnectorNonNativeMetaData.Bin // DeployZetaConnectorNonNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNative to it. -func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { +func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.Contract return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress, _admin) if err != nil { return common.Address{}, nil, nil, err } @@ -202,6 +202,99 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorRaw) Transact(opt return _ZetaConnectorNonNative.Contract.contract.Transact(opts, method, params...) } +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.DEFAULTADMINROLE(&_ZetaConnectorNonNative.CallOpts) +} + +// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf. +// +// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) DEFAULTADMINROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.DEFAULTADMINROLE(&_ZetaConnectorNonNative.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "PAUSER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.PAUSERROLE(&_ZetaConnectorNonNative.CallOpts) +} + +// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9. +// +// Solidity: function PAUSER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) PAUSERROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.PAUSERROLE(&_ZetaConnectorNonNative.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.WITHDRAWERROLE(&_ZetaConnectorNonNative.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.WITHDRAWERROLE(&_ZetaConnectorNonNative.CallOpts) +} + // Gateway is a free data retrieval call binding the contract method 0x116191b6. // // Solidity: function gateway() view returns(address) @@ -233,6 +326,68 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) Gateway() (c return _ZetaConnectorNonNative.Contract.Gateway(&_ZetaConnectorNonNative.CallOpts) } +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "getRoleAdmin", role) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.GetRoleAdmin(&_ZetaConnectorNonNative.CallOpts, role) +} + +// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3. +// +// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) { + return _ZetaConnectorNonNative.Contract.GetRoleAdmin(&_ZetaConnectorNonNative.CallOpts, role) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "hasRole", role, account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorNonNative.Contract.HasRole(&_ZetaConnectorNonNative.CallOpts, role, account) +} + +// HasRole is a free data retrieval call binding the contract method 0x91d14854. +// +// Solidity: function hasRole(bytes32 role, address account) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) { + return _ZetaConnectorNonNative.Contract.HasRole(&_ZetaConnectorNonNative.CallOpts, role, account) +} + // MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01. // // Solidity: function maxSupply() view returns(uint256) @@ -264,6 +419,68 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) MaxSupply() return _ZetaConnectorNonNative.Contract.MaxSupply(&_ZetaConnectorNonNative.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Paused() (bool, error) { + return _ZetaConnectorNonNative.Contract.Paused(&_ZetaConnectorNonNative.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) Paused() (bool, error) { + return _ZetaConnectorNonNative.Contract.Paused(&_ZetaConnectorNonNative.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _ZetaConnectorNonNative.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorNonNative.Contract.SupportsInterface(&_ZetaConnectorNonNative.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _ZetaConnectorNonNative.Contract.SupportsInterface(&_ZetaConnectorNonNative.CallOpts, interfaceId) +} + // TssAddress is a free data retrieval call binding the contract method 0x5b112591. // // Solidity: function tssAddress() view returns(address) @@ -326,6 +543,48 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) ZetaToken() return _ZetaConnectorNonNative.Contract.ZetaToken(&_ZetaConnectorNonNative.CallOpts) } +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "grantRole", role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.GrantRole(&_ZetaConnectorNonNative.TransactOpts, role, account) +} + +// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. +// +// Solidity: function grantRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.GrantRole(&_ZetaConnectorNonNative.TransactOpts, role, account) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Pause(&_ZetaConnectorNonNative.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) Pause() (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Pause(&_ZetaConnectorNonNative.TransactOpts) +} + // ReceiveTokens is a paid mutator transaction binding the contract method 0x743e0c9b. // // Solidity: function receiveTokens(uint256 amount) returns() @@ -347,6 +606,48 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) ReceiveT return _ZetaConnectorNonNative.Contract.ReceiveTokens(&_ZetaConnectorNonNative.TransactOpts, amount) } +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "renounceRole", role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.RenounceRole(&_ZetaConnectorNonNative.TransactOpts, role, callerConfirmation) +} + +// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. +// +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.RenounceRole(&_ZetaConnectorNonNative.TransactOpts, role, callerConfirmation) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "revokeRole", role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.RevokeRole(&_ZetaConnectorNonNative.TransactOpts, role, account) +} + +// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. +// +// Solidity: function revokeRole(bytes32 role, address account) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.RevokeRole(&_ZetaConnectorNonNative.TransactOpts, role, account) +} + // SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. // // Solidity: function setMaxSupply(uint256 _maxSupply) returns() @@ -368,6 +669,27 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) SetMaxSu return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, _maxSupply) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Unpause(&_ZetaConnectorNonNative.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) Unpause() (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.Unpause(&_ZetaConnectorNonNative.TransactOpts) +} + // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // // Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() @@ -565,6 +887,760 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseMaxSupplyUpd return event, nil } +// ZetaConnectorNonNativePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativePausedIterator struct { + Event *ZetaConnectorNonNativePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativePaused represents a Paused event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterPaused(opts *bind.FilterOpts) (*ZetaConnectorNonNativePausedIterator, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativePausedIterator{contract: _ZetaConnectorNonNative.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativePaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativePaused) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParsePaused(log types.Log) (*ZetaConnectorNonNativePaused, error) { + event := new(ZetaConnectorNonNativePaused) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleAdminChangedIterator struct { + Event *ZetaConnectorNonNativeRoleAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeRoleAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeRoleAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeRoleAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeRoleAdminChanged represents a RoleAdminChanged event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleAdminChanged struct { + Role [32]byte + PreviousAdminRole [32]byte + NewAdminRole [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*ZetaConnectorNonNativeRoleAdminChangedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeRoleAdminChangedIterator{contract: _ZetaConnectorNonNative.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil +} + +// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var previousAdminRoleRule []interface{} + for _, previousAdminRoleItem := range previousAdminRole { + previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem) + } + var newAdminRoleRule []interface{} + for _, newAdminRoleItem := range newAdminRole { + newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeRoleAdminChanged) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff. +// +// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseRoleAdminChanged(log types.Log) (*ZetaConnectorNonNativeRoleAdminChanged, error) { + event := new(ZetaConnectorNonNativeRoleAdminChanged) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleGrantedIterator struct { + Event *ZetaConnectorNonNativeRoleGranted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeRoleGrantedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleGranted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeRoleGrantedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeRoleGrantedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeRoleGranted represents a RoleGranted event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleGranted struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorNonNativeRoleGrantedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeRoleGrantedIterator{contract: _ZetaConnectorNonNative.contract, event: "RoleGranted", logs: logs, sub: sub}, nil +} + +// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeRoleGranted) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d. +// +// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseRoleGranted(log types.Log) (*ZetaConnectorNonNativeRoleGranted, error) { + event := new(ZetaConnectorNonNativeRoleGranted) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleGranted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleRevokedIterator struct { + Event *ZetaConnectorNonNativeRoleRevoked // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeRoleRevokedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeRoleRevoked) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeRoleRevokedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeRoleRevokedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeRoleRevoked represents a RoleRevoked event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeRoleRevoked struct { + Role [32]byte + Account common.Address + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*ZetaConnectorNonNativeRoleRevokedIterator, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeRoleRevokedIterator{contract: _ZetaConnectorNonNative.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil +} + +// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) { + + var roleRule []interface{} + for _, roleItem := range role { + roleRule = append(roleRule, roleItem) + } + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var senderRule []interface{} + for _, senderItem := range sender { + senderRule = append(senderRule, senderItem) + } + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeRoleRevoked) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b. +// +// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseRoleRevoked(log types.Log) (*ZetaConnectorNonNativeRoleRevoked, error) { + event := new(ZetaConnectorNonNativeRoleRevoked) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "RoleRevoked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaConnectorNonNativeUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeUnpausedIterator struct { + Event *ZetaConnectorNonNativeUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonNativeUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonNativeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonNativeUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonNativeUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonNativeUnpaused represents a Unpaused event raised by the ZetaConnectorNonNative contract. +type ZetaConnectorNonNativeUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ZetaConnectorNonNativeUnpausedIterator, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ZetaConnectorNonNativeUnpausedIterator{contract: _ZetaConnectorNonNative.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonNativeUnpaused) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonNative.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonNativeUnpaused) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeFilterer) ParseUnpaused(log types.Log) (*ZetaConnectorNonNativeUnpaused, error) { + event := new(ZetaConnectorNonNativeUnpaused) + if err := _ZetaConnectorNonNative.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorNonNativeWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the ZetaConnectorNonNative contract. type ZetaConnectorNonNativeWithdrawIterator struct { Event *ZetaConnectorNonNativeWithdraw // Event containing the contract specifics and raw log diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go index edc0afe1..64f55d0e 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cad48061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e610958565b60405161019b9190617923565b60405180910390f35b6101ac6109ba565b60405161019b91906179bf565b610184610afc565b61018e6112d7565b61018e611337565b610184611397565b610184611984565b6101e9611b7a565b60405161019b9190617b25565b6101fe611cfc565b60405161019b9190617bc3565b610184611dcc565b61021b611f87565b60405161019b9190617c3a565b610184612082565b61021b61228a565b6101fe612385565b610248612455565b604051901515815260200161019b565b610184612529565b610184612949565b610184612f90565b61018e6136c5565b601f546102489060ff1681565b60258054307fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602680546112349083161790556027805461567892168217905560405181906102da90617836565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561030d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027549151919094169281019290925260448201526103f1919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613725565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546040519192169061047590617843565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104a8573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460405192841693918216929116906104fd90617850565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610539573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050506040516106829061785d565b604051809103906000f08015801561069e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561074a57600080fd5b505af115801561075e573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093e57600080fd5b505af1158015610952573d6000803e3d6000fd5b50505050565b606060168054806020026020016040519081016040528092919081815260200182805480156109b057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610992575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610af357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610adc578382906000526020600020018054610a4f90617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90617cd1565b8015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b505050505081526020019060010190610a30565b5050505081525050815260200190600101906109de565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190617d1e565b9050610c08816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190617d1e565b9050610c89816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610d70916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f3357600080fd5b505af1158015610f47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610f8c9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061107292909116908a9089908b90600401617d78565b600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190617d1e565b90506111228188613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111969190617d1e565b90506111a3816000613744565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190617d1e565b905061124a816000613744565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190617d1e565b90506112cb816000613744565b50505050505050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361143893921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114799190617d1e565b9050611486816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190617d1e565b9050611507816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916115ee916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b15801561160857600080fd5b505af115801561161c573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506117ed9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561186757600080fd5b505af115801561187b573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506118d392909116908a9089908b90600401617d78565b600060405180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190617d1e565b9050611122816000613744565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ad757600080fd5b505af1158015611aeb573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611b439290911690879086908890600401617d78565b600060405180830381600087803b158015611b5d57600080fd5b505af1158015611b71573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610af35783829060005260206000209060020201604051806040016040529081600082018054611bd190617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611bfd90617cd1565b8015611c4a5780601f10611c1f57610100808354040283529160200191611c4a565b820191906000526020600020905b815481529060010190602001808311611c2d57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611ce457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611c915790505b50505050508152505081526020019060010190611b9e565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610af3578382906000526020600020018054611d3f90617cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6b90617cd1565b8015611db85780601f10611d8d57610100808354040283529160200191611db8565b820191906000526020600020905b815481529060010190602001808311611d9b57829003601f168201915b505050505081526020019060010190611d20565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611e5a573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015611f6b57600080fd5b505af1158015611f7f573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610af35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120175790505b50505050508152505081526020019060010190611fab565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561221e57600080fd5b505af1158015612232573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611b439290911690879086908890600401617d78565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610af35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561236d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161231a5790505b505050505081525050815260200190600101906122ae565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610af35783829060005260206000200180546123c890617cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546123f490617cd1565b80156124415780601f1061241657610100808354040283529160200191612441565b820191906000526020600020905b81548152906001019060200180831161242457829003601f168201915b5050505050815260200190600101906123a9565b60085460009060ff161561246d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190617d1e565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa15801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a29190617d1e565b90506125af816000613744565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612698916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129369190617d1e565b90506129428186613744565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a489190617d1e565b9050612a55816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac99190617d1e565b9050612ad6816000613744565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612bbd916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b158015612bd757600080fd5b505af1158015612beb573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c7d57600080fd5b505af1158015612c91573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612ccf600289617de0565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d9757600080fd5b505af1158015612dab573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612df09089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e6a57600080fd5b505af1158015612e7e573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612ed692909116908a9089908b90600401617d78565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7a9190617d1e565b905061112281612f8b60028a617de0565b613744565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130499190617d1e565b9050613056816000613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156130a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ca9190617d1e565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131b4916001600160a01b0391909116906000908690600401617d37565b600060405180830381600087803b1580156131ce57600080fd5b505af11580156131e2573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561327457600080fd5b505af1158015613288573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506132cb92506001600160a01b03909116908790617e1b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561336157600080fd5b505af1158015613375573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906133c0908a908990617d5f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134af9089908890617d5f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561352957600080fd5b505af115801561353d573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061359592909116908a9089908b90600401617d78565b600060405180830381600087803b1580156135af57600080fd5b505af11580156135c3573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136399190617d1e565b90506136458188613744565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b99190617d1e565b90506111a38185613744565b606060158054806020026020016040519081016040528092919081815260200182805480156109b0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610992575050505050905090565b600061372f61786a565b61373a8484836137c3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137af57600080fd5b505afa158015611f7f573d6000803e3d6000fd5b6000806137d0858461383e565b90506138336040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161381e929190617e1b565b6040516020818303038152906040528561384a565b9150505b9392505050565b60006138378383613878565b60c0810151516000901561386e5761386784848460c00151613893565b9050613837565b6138678484613a39565b60006138848383613b24565b6138378383602001518461384a565b60008061389e613b34565b905060006138ac8683613c07565b905060006138c382606001518360200151856140ad565b905060006138d3838389896142bf565b905060006138e08261513c565b602081015181519192509060030b156139535789826040015160405160200161390a929190617e3d565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261394a91600401617ebe565b60405180910390fd5b60006139966040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161530b565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139e9908490600401617ebe565b602060405180830381865afa158015613a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2a9190617ed1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a8e908790600401617ebe565b600060405180830381865afa158015613aab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ad39190810190617fe2565b90506000613b018285604051602001613aed929190618017565b60405160208183030381529060405261550b565b90506001600160a01b03811661373a57848460405160200161390a929190618046565b613b308282600061551e565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bbb9084906004016180f1565b600060405180830381865afa158015613bd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c009190810190618138565b9250505090565b613c396040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c846040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8d85615621565b60208201526000613c9d86615a06565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d079190810190618138565b86838560200151604051602001613d219493929190618181565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d79908590600401617ebe565b600060405180830381865afa158015613d96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dbe9190810190618138565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e06908490600401618285565b602060405180830381865afa158015613e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4791906182d7565b613e5c578160405160200161390a91906182f9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613ea190849060040161838b565b600060405180830381865afa158015613ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee69190810190618138565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f2d9084906004016183dd565b602060405180830381865afa158015613f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6e91906182d7565b15614003576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fb89084906004016183dd565b600060405180830381865afa158015613fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ffd9190810190618138565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614028919061842f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161405492919061849b565b600060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140999190810190618138565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140c95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614129576141296184c0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417d5761417d6184c0565b60200260200101819052508460405160200161419991906184ef565b604051602081830303815290604052816002815181106141bb576141bb6184c0565b6020026020010181905250826040516020016141d7919061855b565b604051602081830303815290604052816003815181106141f9576141f96184c0565b6020026020010181905250600061420f8261513c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142a09060408051808201825260008082526020918201528151808301909252845182528085019082015290615c89565b6142b5578560405160200161390a919061859c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561430f565b511590565b614483578260200151156143cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161394a565b8260c0015115614483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161394a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161449c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144f79061862d565b935060ff168151811061450c5761450c6184c0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455d919061864c565b6040516020818303038152906040528282806145789061862d565b935060ff168151811061458d5761458d6184c0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145da9061862d565b935060ff16815181106145ef576145ef6184c0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061463c9061862d565b935060ff1681518110614651576146516184c0565b6020026020010181905250876020015182828061466d9061862d565b935060ff1681518110614682576146826184c0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146cf9061862d565b935060ff16815181106146e4576146e46184c0565b6020908102919091010152875182826146fc8161862d565b935060ff1681518110614711576147116184c0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061475e9061862d565b935060ff1681518110614773576147736184c0565b602002602001018190525061478746615cea565b82826147928161862d565b935060ff16815181106147a7576147a76184c0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147f49061862d565b935060ff1681518110614809576148096184c0565b6020026020010181905250868282806148219061862d565b935060ff1681518110614836576148366184c0565b602090810291909101015285511561495d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148878161862d565b935060ff168151811061489c5761489c6184c0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148ec908990600401617ebe565b600060405180830381865afa158015614909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149319190810190618138565b828261493c8161862d565b935060ff1681518110614951576149516184c0565b60200260200101819052505b846020015115614a2d5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149a68161862d565b935060ff16815181106149bb576149bb6184c0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a089061862d565b935060ff1681518110614a1d57614a1d6184c0565b6020026020010181905250614bf4565b614a6561430a8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614af85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614aa88161862d565b935060ff1681518110614abd57614abd6184c0565b60200260200101819052508460a00151604051602001614add91906184ef565b604051602081830303815290604052828280614a089061862d565b8460c00151158015614b3b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b3990511590565b155b15614bf45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b7f8161862d565b935060ff1681518110614b9457614b946184c0565b6020026020010181905250614ba888615d8a565b604051602001614bb891906184ef565b604051602081830303815290604052828280614bd39061862d565b935060ff1681518110614be857614be86184c0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c2890511590565b614cbd5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c6b8161862d565b935060ff1681518110614c8057614c806184c0565b60200260200101819052508460400151828280614c9c9061862d565b935060ff1681518110614cb157614cb16184c0565b60200260200101819052505b606085015115614dde5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d068161862d565b935060ff1681518110614d1b57614d1b6184c0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614db29190810190618138565b8282614dbd8161862d565b935060ff1681518110614dd257614dd26184c0565b60200260200101819052505b60e08501515115614e855760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e288161862d565b935060ff1681518110614e3d57614e3d6184c0565b6020026020010181905250614e598560e0015160000151615cea565b8282614e648161862d565b935060ff1681518110614e7957614e796184c0565b60200260200101819052505b60e08501516020015115614f2f5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ed28161862d565b935060ff1681518110614ee757614ee76184c0565b6020026020010181905250614f038560e0015160200151615cea565b8282614f0e8161862d565b935060ff1681518110614f2357614f236184c0565b60200260200101819052505b60e08501516040015115614fd95760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f7c8161862d565b935060ff1681518110614f9157614f916184c0565b6020026020010181905250614fad8560e0015160400151615cea565b8282614fb88161862d565b935060ff1681518110614fcd57614fcd6184c0565b60200260200101819052505b60e085015160600151156150835760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826150268161862d565b935060ff168151811061503b5761503b6184c0565b60200260200101819052506150578560e0015160600151615cea565b82826150628161862d565b935060ff1681518110615077576150776184c0565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150a1576150a1617efa565b6040519080825280602002602001820160405280156150d457816020015b60608152602001906001900390816150bf5790505b50905060005b8260ff168160ff16101561512d57838160ff16815181106150fd576150fd6184c0565b6020026020010151828260ff168151811061511a5761511a6184c0565b60209081029190910101526001016150da565b5093505050505b949350505050565b6151636040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151e9918691016186b7565b600060405180830381865afa158015615206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261522e9190810190618138565b9050600061523c8683616879565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161526c9190617bc3565b6000604051808303816000875af115801561528b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152b391908101906186fe565b805190915060030b158015906152cc5750602081015151155b80156152db5750604081015151155b156142b557816000815181106152f3576152f36184c0565b602002602001015160405160200161390a91906187b4565b606060006153408560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153779082905b906169ce565b156154d45760006153f4826153ee846153e86153ba8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169f5565b90616a57565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154589082906169ce565b156154c257604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154bf905b8290616adc565b90505b6154cb81616b02565b92505050613837565b82156154ed57848460405160200161390a9291906189a0565b5050604080516020810190915260008152613837565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552d57505050565b600061553a848484616b6b565b905060006155478261513c565b602081015181519192509060030b1580156155e35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e390604080518082018252600080825260209182015281518083019092528451825280850190820152615371565b156155f057505050505050565b6040820151511561561057816040015160405160200161390a9190618a47565b8060405160200161390a9190618aa5565b606060006156568360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156bb905b8290615c89565b1561572a57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261383790615725908390617106565b616b02565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578c905b8290617190565b60010361585957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157f2906154b8565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261383790615725905b8390616adc565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158b8906156b4565b156159ef57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061592090839061722a565b9050600081600183516159339190618b10565b81518110615943576159436184c0565b602002602001015190506159e66157256159b96040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617106565b95945050505050565b8260405160200161390a9190618b23565b50919050565b60606000615a3b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a9d906156b4565b15615aab5761383781616b02565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0a90615785565b600103615b7457604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138379061572590615852565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bd3906156b4565b156159ef57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c3b90839061722a565b9050600181511115615c77578060028251615c569190618b10565b81518110615c6657615c666184c0565b602002602001015192505050919050565b508260405160200161390a9190618b23565b805182516000911115615c9e5750600061373e565b81518351602085015160009291615cb491618c01565b615cbe9190618b10565b905082602001518103615cd557600191505061373e565b82516020840151819020912014905092915050565b60606000615cf7836172cf565b600101905060008167ffffffffffffffff811115615d1757615d17617efa565b6040519080825280601f01601f191660200182016040528015615d41576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d4b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e16905b82906173b1565b15615e5657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb590615e0f565b15615ef557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f5490615e0f565b15615f9457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff390615e0f565b806160585750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261605890615e0f565b1561609857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160f790615e0f565b8061615c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615c90615e0f565b1561619c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161fb90615e0f565b806162605750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626090615e0f565b156162a057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ff90615e0f565b806163645750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636490615e0f565b156163a457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640390615e0f565b1561644357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164a290615e0f565b156164e257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654190615e0f565b1561658157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e090615e0f565b1561662057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667f90615e0f565b156166bf57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671e90615e0f565b806167835750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678390615e0f565b156167c357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682290615e0f565b1561686257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161390a9290602001618c14565b60608060005b8451811015616904578185828151811061689b5761689b6184c0565b60200260200101516040516020016168b4929190618017565b6040516020818303038152906040529150600185516168d39190618b10565b81146168fc57816040516020016168ea9190618d7d565b60405160208183030381529060405291505b60010161687f565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161691d5790505090508381600081518110616948576169486184c0565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061699c5761699c6184c0565b602002602001018190525081816002815181106169bb576169bb6184c0565b6020908102919091010152949350505050565b60208083015183518351928401516000936169ec92918491906173c5565b14159392505050565b60408051808201909152600080825260208201526000616a2784600001518560200151856000015186602001516174d6565b9050836020015181616a399190618b10565b84518590616a48908390618b10565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a7c57508161373e565b6020808301519084015160019114616aa35750815160208481015190840151829020919020145b8015616ad457825184518590616aba908390618b10565b9052508251602085018051616ad0908390618c01565b9052505b509192915050565b6040805180820190915260008082526020820152616afb8383836175f6565b5092915050565b60606000826000015167ffffffffffffffff811115616b2357616b23617efa565b6040519080825280601f01601f191660200182016040528015616b4d576020820181803683370190505b5090506000602082019050616afb81856020015186600001516176a1565b60606000616b77613b34565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b9457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616bef9061862d565b935060ff1681518110616c0457616c046184c0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c559190618dbe565b604051602081830303815290604052828280616c709061862d565b935060ff1681518110616c8557616c856184c0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cd29061862d565b935060ff1681518110616ce757616ce76184c0565b602002602001018190525082604051602001616d03919061855b565b604051602081830303815290604052828280616d1e9061862d565b935060ff1681518110616d3357616d336184c0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d809061862d565b935060ff1681518110616d9557616d956184c0565b6020026020010181905250616daa878461771b565b8282616db58161862d565b935060ff1681518110616dca57616dca6184c0565b602090810291909101015285515115616e765760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e1c8161862d565b935060ff1681518110616e3157616e316184c0565b6020026020010181905250616e4a86600001518461771b565b8282616e558161862d565b935060ff1681518110616e6a57616e6a6184c0565b60200260200101819052505b856080015115616ee45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ebf8161862d565b935060ff1681518110616ed457616ed46184c0565b6020026020010181905250616f4a565b8415616f4a5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f298161862d565b935060ff1681518110616f3e57616f3e6184c0565b60200260200101819052505b60408601515115616fe65760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f948161862d565b935060ff1681518110616fa957616fa96184c0565b60200260200101819052508560400151828280616fc59061862d565b935060ff1681518110616fda57616fda6184c0565b60200260200101819052505b8560600151156170505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261702f8161862d565b935060ff1681518110617044576170446184c0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706e5761706e617efa565b6040519080825280602002602001820160405280156170a157816020015b606081526020019060019003908161708c5790505b50905060005b8260ff168160ff1610156170fa57838160ff16815181106170ca576170ca6184c0565b6020026020010151828260ff16815181106170e7576170e76184c0565b60209081029190910101526001016170a7565b50979650505050505050565b604080518082019091526000808252602082015281518351101561712b57508161373e565b8151835160208501516000929161714191618c01565b61714b9190618b10565b6020840151909150600190821461716c575082516020840151819020908220145b801561718757835185518690617183908390618b10565b9052505b50929392505050565b60008082600001516171b485600001518660200151866000015187602001516174d6565b6171be9190618c01565b90505b835160208501516171d29190618c01565b8111616afb57816171e281618e03565b92505082600001516172198560200151836171fd9190618b10565b86516172099190618b10565b83866000015187602001516174d6565b6172239190618c01565b90506171c1565b606060006172388484617190565b617243906001618c01565b67ffffffffffffffff81111561725b5761725b617efa565b60405190808252806020026020018201604052801561728e57816020015b60608152602001906001900390816172795790505b50905060005b8151811015615503576172aa6157258686616adc565b8282815181106172bc576172bc6184c0565b6020908102919091010152600101617294565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617318577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617344576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061736257662386f26fc10000830492506010015b6305f5e100831061737a576305f5e100830492506008015b612710831061738e57612710830492506004015b606483106173a0576064830492506002015b600a831061373e5760010192915050565b60006173bd838361775b565b159392505050565b6000808584116174cc576020841161747857600084156174105760016173ec866020618b10565b6173f7906008618e1d565b617402906002618f1b565b61740c9190618b10565b1990505b835181168561741f8989618c01565b6174299190618b10565b805190935082165b8181146174635787841161744b5787945050505050615134565b8361745581618f27565b945050828451169050617431565b61746d8785618c01565b945050505050615134565b8383206174858588618b10565b61748f9087618c01565b91505b8582106174ca578482208082036174b7576174ad8684618c01565b9350505050615134565b6174c2600184618b10565b925050617492565b505b5092949350505050565b600083818685116175e1576020851161759057600085156175225760016174fe876020618b10565b617509906008618e1d565b617514906002618f1b565b61751e9190618b10565b1990505b845181166000876175338b8b618c01565b61753d9190618b10565b855190915083165b8281146175825781861061756a5761755d8b8b618c01565b9650505050505050615134565b8561757481618e03565b965050838651169050617545565b859650505050505050615134565b508383206000905b6175a28689618b10565b82116175df578583208082036175be5783945050505050615134565b6175c9600185618c01565b93505081806175d790618e03565b925050617598565b505b6175eb8787618c01565b979650505050505050565b6040805180820190915260008082526020820152600061762885600001518660200151866000015187602001516174d6565b6020808701805191860191909152519091506176449082618b10565b8352845160208601516176579190618c01565b81036176665760008552617698565b835183516176749190618c01565b85518690617683908390618b10565b90525083516176929082618c01565b60208601525b50909392505050565b602081106176d957815183526176b8602084618c01565b92506176c5602083618c01565b91506176d2602082618b10565b90506176a1565b60001981156177085760016176ef836020618b10565b6176fb90610100618f1b565b6177059190618b10565b90505b9151835183169219169190911790915250565b606060006177298484613c07565b805160208083015160405193945061774393909101618f3e565b60405160208183030381529060405291505092915050565b815181516000919081111561776e575081515b6020808501519084015160005b8381101561782757825182518082146177f75760001960208710156177d6576001846177a8896020618b10565b6177b29190618c01565b6177bd906008618e1d565b6177c8906002618f1b565b6177d29190618b10565b1990505b81811683821681810391146177f457975061373e9650505050505050565b50505b617802602086618c01565b945061780f602085618c01565b935050506020816178209190618c01565b905061777b565b50845186516142b59190618f96565b6112a680618fb783390190565b610b4a8061a25d83390190565b610f9a8061ada783390190565b610d5e8061bd4183390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ad6178b2565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ad6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179645783516001600160a01b031683526020938401939092019160010161793d565b509095945050505050565b60005b8381101561798a578181015183820152602001617972565b50506000910152565b600081518084526179ab81602086016020860161796f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617aa1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a8b848651617993565b6020958601959094509290920191600101617a51565b5091975050506020948501949290920191506001016179e7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b1b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617adb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b916040880182617993565b9050602082015191508681036020880152617bac8183617ac7565b965050506020938401939190910190600101617b4d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c25858351617993565b94506020938401939190910190600101617beb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617abb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cbb6040870182617ac7565b9550506020938401939190910190600101617c62565b600181811c90821680617ce557607f821691505b602082108103615a00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d3057600080fd5b5051919050565b6001600160a01b03841681528260208201526060604082015260006159e66060830184617993565b8281526040602082015260006151346040830184617993565b6001600160a01b0385168152836020820152608060408201526000617da06080830185617993565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082617e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151346040830184617993565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617e7581601a85016020880161796f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617eb281601c84016020880161796f565b01601c01949350505050565b6020815260006138376020830184617993565b600060208284031215617ee357600080fd5b81516001600160a01b038116811461383757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617f4c57617f4c617efa565b60405290565b60008067ffffffffffffffff841115617f6d57617f6d617efa565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617f9c57617f9c617efa565b604052838152905080828401851015617fb457600080fd5b61550384602083018561796f565b600082601f830112617fd357600080fd5b61383783835160208501617f52565b600060208284031215617ff457600080fd5b815167ffffffffffffffff81111561800b57600080fd5b61373a84828501617fc2565b6000835161802981846020880161796f565b83519083019061803d81836020880161796f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161807e81601a85016020880161796f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516180bb81603384016020880161796f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138376080830184617993565b60006020828403121561814a57600080fd5b815167ffffffffffffffff81111561816157600080fd5b8201601f8101841361817257600080fd5b61373a84825160208401617f52565b60008551618193818460208a0161796f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516181cd816001840160208a0161796f565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161820b81600284016020890161796f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161824d81600284016020880161796f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006182986040830184617993565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156182e957600080fd5b8151801515811461383757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161833181601f85016020870161796f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061839e6040830184617993565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183f06040830184617993565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161846781601485016020870161796f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006184ae6040830185617993565b82810360208401526138338185617993565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161852781600185016020870161796f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161856d81846020870161796f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161862081604b85016020870161796f565b91909101604b0192915050565b600060ff821660ff810361864357618643617db1565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516186aa81602985016020870161796f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138376080830184617993565b60006020828403121561871057600080fd5b815167ffffffffffffffff81111561872757600080fd5b82016060818503121561873957600080fd5b618741617f29565b81518060030b811461875257600080fd5b8152602082015167ffffffffffffffff81111561876e57600080fd5b61877a86828501617fc2565b602083015250604082015167ffffffffffffffff81111561879a57600080fd5b6187a686828501617fc2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161881281602185016020870161796f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516189fe81602185016020880161796f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618a3b81602e84016020880161796f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516186aa81602985016020870161796f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b0381602285016020870161796f565b9190910160220192915050565b8181038181111561373e5761373e617db1565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618b5b81600e85016020870161796f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561373e5761373e617db1565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618c4c81601885016020880161796f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618c8981601c84016020880161796f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618d8f81846020870161796f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618df681601c85016020870161796f565b91909101601c0192915050565b60006000198203618e1657618e16617db1565b5060010190565b808202811582820484141761373e5761373e617db1565b6001815b6001841115618e6f57808504811115618e5357618e53617db1565b6001841615618e6157908102905b60019390931c928002618e38565b935093915050565b600082618e865750600161373e565b81618e935750600061373e565b8160018114618ea95760028114618eb357618ecf565b600191505061373e565b60ff841115618ec457618ec4617db1565b50506001821b61373e565b5060208310610133831016604e8410600b8410161715618ef2575081810a61373e565b618eff6000198484618e34565b8060001904821115618f1357618f13617db1565b029392505050565b60006138378383618e77565b600081618f3657618f36617db1565b506000190190565b60008351618f5081846020880161796f565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618f8a81600184016020880161796f565b01600101949350505050565b8181036000831280158383131683831282161715616afb57616afb617db156fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212205ed18aa6301ce507ba64c0f5d616915505a70a7641c6d1bbe1b3e0d13badf2f064736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dddc8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b6101996109c4565b6040516101a69190617b03565b60405180910390f35b6101b7610a26565b6040516101a69190617b9f565b61018f610b68565b610199611343565b6101996113a3565b61018f611403565b6101ec6119f0565b6040516101a69190617d05565b61018f611b72565b610209611de4565b6040516101a69190617da3565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611eb4565b6040516101a69190617e1a565b610253611faf565b6102096120aa565b61027861217a565b60405190151581526020016101a6565b61018f61224e565b61018f6124d2565b61018f6128f2565b61018f612f39565b61019961366e565b601f546102789060ff1681565b61018f6136ce565b60258054307fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556026805461123490831617905560278054615678921682179055604051819061031a90617a16565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561034d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261043e919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613905565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546025546040519293918216929116906104ca90617a23565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610506573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754602554604051938516949283169391831692169061056190617a30565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105a5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050506040516106ee90617a3d565b604051809103906000f08015801561070a573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109fe575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b48578382906000526020600020018054610abb90617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790617eb1565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081526020019060010190610a9c565b505050508152505081526020019060010190610a4a565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190617efe565b9050610c74816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190617efe565b9050610cf5816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610ddc916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610ff89089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110de92909116908a9089908b90600401617f58565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190617efe565b905061118e8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190617efe565b905061120f816000613924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190617efe565b90506112b6816000613924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a9190617efe565b9050611337816000613924565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936114a493921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e59190617efe565b90506114f2816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190617efe565b9050611573816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161165a916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118599089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061193f92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190617efe565b905061118e816000613924565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000209060020201604051806040016040529081600082018054611a4790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390617eb1565b8015611ac05780601f10611a9557610100808354040283529160200191611ac0565b820191906000526020600020905b815481529060010190602001808311611aa357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b5a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611b075790505b50505050508152505081526020019060010190611a14565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611d279190600401617f91565b600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611dad9290911690879086908890600401617f58565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5f578382906000526020600020018054611e2790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5390617eb1565b8015611ea05780601f10611e7557610100808354040283529160200191611ea0565b820191906000526020600020905b815481529060010190602001808311611e8357829003601f168201915b505050505081526020019060010190611e08565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f9757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f445790505b50505050508152505081526020019060010190611ed8565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561209257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161203f5790505b50505050508152505081526020019060010190611fd3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000200180546120ed90617eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461211990617eb1565b80156121665780601f1061213b57610100808354040283529160200191612166565b820191906000526020600020905b81548152906001019060200180831161214957829003601f168201915b5050505050815260200190600101906120ce565b60085460009060ff1615612192575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190617efe565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061244c9190600401617f91565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611dad9290911690879086908890600401617f58565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015612527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254b9190617efe565b9050612558816000613924565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612641916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561270157600080fd5b505af1158015612715573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127cd57600080fd5b505af11580156127e1573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b15801561285557600080fd5b505af1158015612869573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190617efe565b90506128eb8186613924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156129cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f19190617efe565b90506129fe816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190617efe565b9050612a7f816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612b66916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c2657600080fd5b505af1158015612c3a573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612c78600289617fd3565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612d999089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612e7f92909116908a9089908b90600401617f58565b600060405180830381600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190617efe565b905061118e81612f3460028a617fd3565b613924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff29190617efe565b9050612fff816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130739190617efe565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161315d916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561317757600080fd5b505af115801561318b573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061327492506001600160a01b0390911690879061800e565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330a57600080fd5b505af115801561331e573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790613369908a908990617f3f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134589089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061353e92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561355857600080fd5b505af115801561356c573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190617efe565b90506135ee8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190617efe565b905061120f8185613924565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561374857600080fd5b505af115801561375c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138479190600401617f91565b600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138e957600080fd5b505af11580156138fd573d6000803e3d6000fd5b505050505050565b600061390f617a4a565b61391a8484836139a3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561398f57600080fd5b505afa1580156138fd573d6000803e3d6000fd5b6000806139b08584613a1e565b9050613a136040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016139fe92919061800e565b60405160208183030381529060405285613a2a565b9150505b9392505050565b6000613a178383613a58565b60c08101515160009015613a4e57613a4784848460c00151613a73565b9050613a17565b613a478484613c19565b6000613a648383613d04565b613a1783836020015184613a2a565b600080613a7e613d14565b90506000613a8c8683613de7565b90506000613aa3826060015183602001518561428d565b90506000613ab38383898961449f565b90506000613ac08261531c565b602081015181519192509060030b15613b3357898260400151604051602001613aea929190618030565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b2a91600401617f91565b60405180910390fd5b6000613b766040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016154eb565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613bc9908490600401617f91565b602060405180830381865afa158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906180b1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613c6e908790600401617f91565b600060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb391908101906181c2565b90506000613ce18285604051602001613ccd9291906181f7565b6040516020818303038152906040526156eb565b90506001600160a01b03811661391a578484604051602001613aea929190618226565b613d10828260006156fe565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613d9b9084906004016182d1565b600060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613de09190810190618318565b9250505090565b613e196040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613e646040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613e6d85615801565b60208201526000613e7d86615be6565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee79190810190618318565b86838560200151604051602001613f019493929190618361565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613f59908590600401617f91565b600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190618318565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613fe6908490600401618465565b602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402791906184b7565b61403c5781604051602001613aea91906184d9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061408190849060040161856b565b600060405180830381865afa15801561409e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c69190810190618318565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061410d9084906004016185bd565b602060405180830381865afa15801561412a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414e91906184b7565b156141e3576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906141989084906004016185bd565b600060405180830381865afa1580156141b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141dd9190810190618318565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614208919061860f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161423492919061867b565b600060405180830381865afa158015614251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142799190810190618318565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816142a95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614309576143096186a0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061435d5761435d6186a0565b60200260200101819052508460405160200161437991906186cf565b6040516020818303038152906040528160028151811061439b5761439b6186a0565b6020026020010181905250826040516020016143b7919061873b565b604051602081830303815290604052816003815181106143d9576143d96186a0565b602002602001018190525060006143ef8261531c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144809060408051808201825260008082526020918201528151808301909252845182528085019082015290615e69565b6144955785604051602001613aea919061877c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156144ef565b511590565b614663578260200151156145ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b2a565b8260c0015115614663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b2a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161467c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806146d79061880d565b935060ff16815181106146ec576146ec6186a0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161473d919061882c565b6040516020818303038152906040528282806147589061880d565b935060ff168151811061476d5761476d6186a0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806147ba9061880d565b935060ff16815181106147cf576147cf6186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061481c9061880d565b935060ff1681518110614831576148316186a0565b6020026020010181905250876020015182828061484d9061880d565b935060ff1681518110614862576148626186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806148af9061880d565b935060ff16815181106148c4576148c46186a0565b6020908102919091010152875182826148dc8161880d565b935060ff16815181106148f1576148f16186a0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061493e9061880d565b935060ff1681518110614953576149536186a0565b602002602001018190525061496746615eca565b82826149728161880d565b935060ff1681518110614987576149876186a0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806149d49061880d565b935060ff16815181106149e9576149e96186a0565b602002602001018190525086828280614a019061880d565b935060ff1681518110614a1657614a166186a0565b6020908102919091010152855115614b3d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614a678161880d565b935060ff1681518110614a7c57614a7c6186a0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614acc908990600401617f91565b600060405180830381865afa158015614ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b119190810190618318565b8282614b1c8161880d565b935060ff1681518110614b3157614b316186a0565b60200260200101819052505b846020015115614c0d5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614b868161880d565b935060ff1681518110614b9b57614b9b6186a0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614be89061880d565b935060ff1681518110614bfd57614bfd6186a0565b6020026020010181905250614dd4565b614c456144ea8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614cd85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614c888161880d565b935060ff1681518110614c9d57614c9d6186a0565b60200260200101819052508460a00151604051602001614cbd91906186cf565b604051602081830303815290604052828280614be89061880d565b8460c00151158015614d1b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d1990511590565b155b15614dd45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5f8161880d565b935060ff1681518110614d7457614d746186a0565b6020026020010181905250614d8888615f6a565b604051602001614d9891906186cf565b604051602081830303815290604052828280614db39061880d565b935060ff1681518110614dc857614dc86186a0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e0890511590565b614e9d5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614e4b8161880d565b935060ff1681518110614e6057614e606186a0565b60200260200101819052508460400151828280614e7c9061880d565b935060ff1681518110614e9157614e916186a0565b60200260200101819052505b606085015115614fbe5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614ee68161880d565b935060ff1681518110614efb57614efb6186a0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f929190810190618318565b8282614f9d8161880d565b935060ff1681518110614fb257614fb26186a0565b60200260200101819052505b60e085015151156150655760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150088161880d565b935060ff168151811061501d5761501d6186a0565b60200260200101819052506150398560e0015160000151615eca565b82826150448161880d565b935060ff1681518110615059576150596186a0565b60200260200101819052505b60e0850151602001511561510f5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826150b28161880d565b935060ff16815181106150c7576150c76186a0565b60200260200101819052506150e38560e0015160200151615eca565b82826150ee8161880d565b935060ff1681518110615103576151036186a0565b60200260200101819052505b60e085015160400151156151b95760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261515c8161880d565b935060ff1681518110615171576151716186a0565b602002602001018190525061518d8560e0015160400151615eca565b82826151988161880d565b935060ff16815181106151ad576151ad6186a0565b60200260200101819052505b60e085015160600151156152635760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152068161880d565b935060ff168151811061521b5761521b6186a0565b60200260200101819052506152378560e0015160600151615eca565b82826152428161880d565b935060ff1681518110615257576152576186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615281576152816180da565b6040519080825280602002602001820160405280156152b457816020015b606081526020019060019003908161529f5790505b50905060005b8260ff168160ff16101561530d57838160ff16815181106152dd576152dd6186a0565b6020026020010151828260ff16815181106152fa576152fa6186a0565b60209081029190910101526001016152ba565b5093505050505b949350505050565b6153436040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916153c991869101618897565b600060405180830381865afa1580156153e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261540e9190810190618318565b9050600061541c8683616a59565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161544c9190617da3565b6000604051808303816000875af115801561546b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261549391908101906188de565b805190915060030b158015906154ac5750602081015151155b80156154bb5750604081015151155b1561449557816000815181106154d3576154d36186a0565b6020026020010151604051602001613aea9190618994565b606060006155208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155579082905b90616bae565b156156b45760006155d4826155ce846155c861559a8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616bd5565b90616c37565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615638908290616bae565b156156a257604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261569f905b8290616cbc565b90505b6156ab81616ce2565b92505050613a17565b82156156cd578484604051602001613aea929190618b80565b5050604080516020810190915260008152613a17565b509392505050565b6000808251602084016000f09392505050565b8160a001511561570d57505050565b600061571a848484616d4b565b905060006157278261531c565b602081015181519192509060030b1580156157c35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c390604080518082018252600080825260209182015281518083019092528451825280850190820152615551565b156157d057505050505050565b604082015151156157f0578160400151604051602001613aea9190618c27565b80604051602001613aea9190618c85565b606060006158368360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061589b905b8290615e69565b1561590a57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a17906159059083906172e6565b616ce2565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261596c905b8290617370565b600103615a3957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159d290615698565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a1790615905905b8390616cbc565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a9890615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b0090839061740a565b905060008160018351615b139190618cf0565b81518110615b2357615b236186a0565b60200260200101519050615bc6615905615b996040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906172e6565b95945050505050565b82604051602001613aea9190618d03565b50919050565b60606000615c1b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c7d90615894565b15615c8b57613a1781616ce2565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cea90615965565b600103615d5457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a179061590590615a32565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db390615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e1b90839061740a565b9050600181511115615e57578060028251615e369190618cf0565b81518110615e4657615e466186a0565b602002602001015192505050919050565b5082604051602001613aea9190618d03565b805182516000911115615e7e5750600061391e565b81518351602085015160009291615e9491618de1565b615e9e9190618cf0565b905082602001518103615eb557600191505061391e565b82516020840151819020912014905092915050565b60606000615ed7836174af565b600101905060008167ffffffffffffffff811115615ef757615ef76180da565b6040519080825280601f01601f191660200182016040528015615f21576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f2b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ff6905b8290617591565b1561603657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261609590615fef565b156160d557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261613490615fef565b1561617457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161d390615fef565b806162385750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261623890615fef565b1561627857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d790615fef565b8061633c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633c90615fef565b1561637c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163db90615fef565b806164405750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261644090615fef565b1561648057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164df90615fef565b806165445750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654490615fef565b1561658457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e390615fef565b1561662357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668290615fef565b156166c257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672190615fef565b1561676157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c090615fef565b1561680057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685f90615fef565b1561689f57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fe90615fef565b806169635750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696390615fef565b156169a357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a0290615fef565b15616a4257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613aea9290602001618df4565b60608060005b8451811015616ae45781858281518110616a7b57616a7b6186a0565b6020026020010151604051602001616a949291906181f7565b604051602081830303815290604052915060018551616ab39190618cf0565b8114616adc5781604051602001616aca9190618f5d565b60405160208183030381529060405291505b600101616a5f565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616afd5790505090508381600081518110616b2857616b286186a0565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616b7c57616b7c6186a0565b60200260200101819052508181600281518110616b9b57616b9b6186a0565b6020908102919091010152949350505050565b6020808301518351835192840151600093616bcc92918491906175a5565b14159392505050565b60408051808201909152600080825260208201526000616c0784600001518560200151856000015186602001516176b6565b9050836020015181616c199190618cf0565b84518590616c28908390618cf0565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616c5c57508161391e565b6020808301519084015160019114616c835750815160208481015190840151829020919020145b8015616cb457825184518590616c9a908390618cf0565b9052508251602085018051616cb0908390618de1565b9052505b509192915050565b6040805180820190915260008082526020820152616cdb8383836177d6565b5092915050565b60606000826000015167ffffffffffffffff811115616d0357616d036180da565b6040519080825280601f01601f191660200182016040528015616d2d576020820181803683370190505b5090506000602082019050616cdb8185602001518660000151617881565b60606000616d57613d14565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616d7457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616dcf9061880d565b935060ff1681518110616de457616de46186a0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616e359190618f9e565b604051602081830303815290604052828280616e509061880d565b935060ff1681518110616e6557616e656186a0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616eb29061880d565b935060ff1681518110616ec757616ec76186a0565b602002602001018190525082604051602001616ee3919061873b565b604051602081830303815290604052828280616efe9061880d565b935060ff1681518110616f1357616f136186a0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616f609061880d565b935060ff1681518110616f7557616f756186a0565b6020026020010181905250616f8a87846178fb565b8282616f958161880d565b935060ff1681518110616faa57616faa6186a0565b6020908102919091010152855151156170565760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ffc8161880d565b935060ff1681518110617011576170116186a0565b602002602001018190525061702a8660000151846178fb565b82826170358161880d565b935060ff168151811061704a5761704a6186a0565b60200260200101819052505b8560800151156170c45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261709f8161880d565b935060ff16815181106170b4576170b46186a0565b602002602001018190525061712a565b841561712a5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171098161880d565b935060ff168151811061711e5761711e6186a0565b60200260200101819052505b604086015151156171c65760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171748161880d565b935060ff1681518110617189576171896186a0565b602002602001018190525085604001518282806171a59061880d565b935060ff16815181106171ba576171ba6186a0565b60200260200101819052505b8560600151156172305760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261720f8161880d565b935060ff1681518110617224576172246186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561724e5761724e6180da565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b8260ff168160ff1610156172da57838160ff16815181106172aa576172aa6186a0565b6020026020010151828260ff16815181106172c7576172c76186a0565b6020908102919091010152600101617287565b50979650505050505050565b604080518082019091526000808252602082015281518351101561730b57508161391e565b8151835160208501516000929161732191618de1565b61732b9190618cf0565b6020840151909150600190821461734c575082516020840151819020908220145b801561736757835185518690617363908390618cf0565b9052505b50929392505050565b600080826000015161739485600001518660200151866000015187602001516176b6565b61739e9190618de1565b90505b835160208501516173b29190618de1565b8111616cdb57816173c281618fe3565b92505082600001516173f98560200151836173dd9190618cf0565b86516173e99190618cf0565b83866000015187602001516176b6565b6174039190618de1565b90506173a1565b606060006174188484617370565b617423906001618de1565b67ffffffffffffffff81111561743b5761743b6180da565b60405190808252806020026020018201604052801561746e57816020015b60608152602001906001900390816174595790505b50905060005b81518110156156e35761748a6159058686616cbc565b82828151811061749c5761749c6186a0565b6020908102919091010152600101617474565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106174f8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617524576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061754257662386f26fc10000830492506010015b6305f5e100831061755a576305f5e100830492506008015b612710831061756e57612710830492506004015b60648310617580576064830492506002015b600a831061391e5760010192915050565b600061759d838361793b565b159392505050565b6000808584116176ac576020841161765857600084156175f05760016175cc866020618cf0565b6175d7906008618ffd565b6175e29060026190fb565b6175ec9190618cf0565b1990505b83518116856175ff8989618de1565b6176099190618cf0565b805190935082165b8181146176435787841161762b5787945050505050615314565b8361763581619107565b945050828451169050617611565b61764d8785618de1565b945050505050615314565b8383206176658588618cf0565b61766f9087618de1565b91505b8582106176aa578482208082036176975761768d8684618de1565b9350505050615314565b6176a2600184618cf0565b925050617672565b505b5092949350505050565b600083818685116177c1576020851161777057600085156177025760016176de876020618cf0565b6176e9906008618ffd565b6176f49060026190fb565b6176fe9190618cf0565b1990505b845181166000876177138b8b618de1565b61771d9190618cf0565b855190915083165b8281146177625781861061774a5761773d8b8b618de1565b9650505050505050615314565b8561775481618fe3565b965050838651169050617725565b859650505050505050615314565b508383206000905b6177828689618cf0565b82116177bf5785832080820361779e5783945050505050615314565b6177a9600185618de1565b93505081806177b790618fe3565b925050617778565b505b6177cb8787618de1565b979650505050505050565b6040805180820190915260008082526020820152600061780885600001518660200151866000015187602001516176b6565b6020808701805191860191909152519091506178249082618cf0565b8352845160208601516178379190618de1565b81036178465760008552617878565b835183516178549190618de1565b85518690617863908390618cf0565b90525083516178729082618de1565b60208601525b50909392505050565b602081106178b95781518352617898602084618de1565b92506178a5602083618de1565b91506178b2602082618cf0565b9050617881565b60001981156178e85760016178cf836020618cf0565b6178db906101006190fb565b6178e59190618cf0565b90505b9151835183169219169190911790915250565b606060006179098484613de7565b80516020808301516040519394506179239390910161911e565b60405160208183030381529060405291505092915050565b815181516000919081111561794e575081515b6020808501519084015160005b83811015617a0757825182518082146179d75760001960208710156179b657600184617988896020618cf0565b6179929190618de1565b61799d906008618ffd565b6179a89060026190fb565b6179b29190618cf0565b1990505b81811683821681810391146179d457975061391e9650505050505050565b50505b6179e2602086618de1565b94506179ef602085618de1565b93505050602081617a009190618de1565b905061795b565b50845186516144959190619176565b6112a68061919783390190565b6113e28061a43d83390190565b61182a8061b81f83390190565b610d5e8061d04983390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617a8d617a92565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617a8d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617b445783516001600160a01b0316835260209384019390920191600101617b1d565b509095945050505050565b60005b83811015617b6a578181015183820152602001617b52565b50506000910152565b60008151808452617b8b816020860160208601617b4f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c6b848651617b73565b6020958601959094509290920191600101617c31565b509197505050602094850194929092019150600101617bc7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617cfb5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cbb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d716040880182617b73565b9050602082015191508681036020880152617d8c8183617ca7565b965050506020938401939190910190600101617d2d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e05858351617b73565b94506020938401939190910190600101617dcb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617e9b6040870182617ca7565b9550506020938401939190910190600101617e42565b600181811c90821680617ec557607f821691505b602082108103615be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f1057600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615bc66060830184617b73565b8281526040602082015260006153146040830184617b73565b6001600160a01b0385168152836020820152608060408201526000617f806080830185617b73565b905082606083015295945050505050565b602081526000613a176020830184617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082618009577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153146040830184617b73565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161806881601a850160208801617b4f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180a581601c840160208801617b4f565b01601c01949350505050565b6000602082840312156180c357600080fd5b81516001600160a01b0381168114613a1757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561812c5761812c6180da565b60405290565b60008067ffffffffffffffff84111561814d5761814d6180da565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561817c5761817c6180da565b60405283815290508082840185101561819457600080fd5b6156e3846020830185617b4f565b600082601f8301126181b357600080fd5b613a1783835160208501618132565b6000602082840312156181d457600080fd5b815167ffffffffffffffff8111156181eb57600080fd5b61391a848285016181a2565b60008351618209818460208801617b4f565b83519083019061821d818360208801617b4f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161825e81601a850160208801617b4f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161829b816033840160208801617b4f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a176080830184617b73565b60006020828403121561832a57600080fd5b815167ffffffffffffffff81111561834157600080fd5b8201601f8101841361835257600080fd5b61391a84825160208401618132565b60008551618373818460208a01617b4f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183ad816001840160208a01617b4f565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516183eb816002840160208901617b4f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161842d816002840160208801617b4f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184786040830184617b73565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156184c957600080fd5b81518015158114613a1757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161851181601f850160208701617b4f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061857e6040830184617b73565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185d06040830184617b73565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618647816014850160208701617b4f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061868e6040830185617b73565b8281036020840152613a138185617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618707816001850160208701617b4f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161874d818460208701617b4f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161880081604b850160208701617b4f565b91909101604b0192915050565b600060ff821660ff810361882357618823617fa4565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a176080830184617b73565b6000602082840312156188f057600080fd5b815167ffffffffffffffff81111561890757600080fd5b82016060818503121561891957600080fd5b618921618109565b81518060030b811461893257600080fd5b8152602082015167ffffffffffffffff81111561894e57600080fd5b61895a868285016181a2565b602083015250604082015167ffffffffffffffff81111561897a57600080fd5b618986868285016181a2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189f2816021850160208701617b4f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bde816021850160208801617b4f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1b81602e840160208801617b4f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618ce3816022850160208701617b4f565b9190910160220192915050565b8181038181111561391e5761391e617fa4565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d3b81600e850160208701617b4f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561391e5761391e617fa4565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e2c816018850160208801617b4f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e6981601c840160208801617b4f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f6f818460208701617b4f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fd681601c850160208701617b4f565b91909101601c0192915050565b60006000198203618ff657618ff6617fa4565b5060010190565b808202811582820484141761391e5761391e617fa4565b6001815b600184111561904f5780850481111561903357619033617fa4565b600184161561904157908102905b60019390931c928002619018565b935093915050565b6000826190665750600161391e565b816190735750600061391e565b81600181146190895760028114619093576190af565b600191505061391e565b60ff8411156190a4576190a4617fa4565b50506001821b61391e565b5060208310610133831016604e8410600b84101617156190d2575081810a61391e565b6190df6000198484619014565b80600019048211156190f3576190f3617fa4565b029392505050565b6000613a178383619057565b60008161911657619116617fa4565b506000190190565b60008351619130818460208801617b4f565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161916a816001840160208801617b4f565b01600101949350505050565b8181036000831280158383131683831282161715616cdb57616cdb617fa456fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122049bb636b102be587bd8860316de0ccc099b1bf45bf33a7d054bec099acc25c6264736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. @@ -251,6 +251,37 @@ func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) ISTE return _ZetaConnectorNonNativeTest.Contract.ISTEST(&_ZetaConnectorNonNativeTest.CallOpts) } +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCaller) WITHDRAWERROLE(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ZetaConnectorNonNativeTest.contract.Call(opts, &out, "WITHDRAWER_ROLE") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNonNativeTest.Contract.WITHDRAWERROLE(&_ZetaConnectorNonNativeTest.CallOpts) +} + +// WITHDRAWERROLE is a free data retrieval call binding the contract method 0x85f438c1. +// +// Solidity: function WITHDRAWER_ROLE() view returns(bytes32) +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestCallerSession) WITHDRAWERROLE() ([32]byte, error) { + return _ZetaConnectorNonNativeTest.Contract.WITHDRAWERROLE(&_ZetaConnectorNonNativeTest.CallOpts) +} + // ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. // // Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) @@ -655,25 +686,25 @@ func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS") +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer") } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x991a2ab5. +// TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xc1909972. // -// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } // TestWithdrawAndCallReceiveERC20Partial is a paid mutator transaction binding the contract method 0xdcf7d037. @@ -739,46 +770,46 @@ func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevert(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawAndRevertFailsIfSenderIsNotWithdrawer") } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawAndRevertFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x57bb1c8f. +// TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0x82832014. // -// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawAndRevertFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawFailsIfSenderIsNotTSS(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotTSS") +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactor) TestWithdrawFailsIfSenderIsNotWithdrawer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.contract.Transact(opts, "testWithdrawFailsIfSenderIsNotWithdrawer") } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestSession) TestWithdrawFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } -// TestWithdrawFailsIfSenderIsNotTSS is a paid mutator transaction binding the contract method 0x893f9164. +// TestWithdrawFailsIfSenderIsNotWithdrawer is a paid mutator transaction binding the contract method 0xfe574f84. // -// Solidity: function testWithdrawFailsIfSenderIsNotTSS() returns() -func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotTSS() (*types.Transaction, error) { - return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotTSS(&_ZetaConnectorNonNativeTest.TransactOpts) +// Solidity: function testWithdrawFailsIfSenderIsNotWithdrawer() returns() +func (_ZetaConnectorNonNativeTest *ZetaConnectorNonNativeTestTransactorSession) TestWithdrawFailsIfSenderIsNotWithdrawer() (*types.Transaction, error) { + return _ZetaConnectorNonNativeTest.Contract.TestWithdrawFailsIfSenderIsNotWithdrawer(&_ZetaConnectorNonNativeTest.TransactOpts) } // ZetaConnectorNonNativeTestCallIterator is returned from FilterCall and is used to iterate over the raw logs and unpacked data for Call events raised by the ZetaConnectorNonNativeTest contract. diff --git a/v2/scripts/localnet/ZevmCall.s.sol b/v2/scripts/localnet/ZevmCall.s.sol index f787f0b9..977c4646 100644 --- a/v2/scripts/localnet/ZevmCall.s.sol +++ b/v2/scripts/localnet/ZevmCall.s.sol @@ -23,6 +23,7 @@ contract ZevmCallScript is Script { string memory str = "Hello!"; uint256 num = 42; bool flag = true; + uint256 chainId = 1; // Encode the function call data bytes memory message = abi.encodeWithSelector( @@ -33,7 +34,7 @@ contract ZevmCallScript is Script { ); // Call the function on GatewayZEVM - try gatewayZEVM.call(abi.encodePacked(address(receiverEVM)), message) { + try gatewayZEVM.call(abi.encodePacked(address(receiverEVM)), chainId, message) { console.log("ReceiverEVM called from ZEVM."); } catch (bytes memory err) { console.log("Error calling ReceiverEVM:"); diff --git a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol index 29adb9ab..fed5bf3b 100644 --- a/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol +++ b/v2/scripts/localnet/ZevmWithdrawAndCall.s.sol @@ -39,7 +39,7 @@ contract ZevmWithdrawAndCallScript is Script { try gatewayZEVM.withdrawAndCall( abi.encodePacked(receiverEVMAddress), amount, - zrc20Address, + address(zrc20), message ) { console.log("ReceiverEVM called from ZEVM."); diff --git a/v2/scripts/localnet/worker.ts b/v2/scripts/localnet/worker.ts index a59f44c0..ed3f37d3 100644 --- a/v2/scripts/localnet/worker.ts +++ b/v2/scripts/localnet/worker.ts @@ -30,7 +30,6 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S // Deploy protocol contracts (gateway and custody) const testERC20Factory = new ethers.ContractFactory(TestERC20.abi, TestERC20.bytecode, deployer); const testEVMZeta = await testERC20Factory.deploy("zeta", "ZETA", deployOpts); - console.log("TestEVMZeta:", testEVMZeta.target); const gatewayEVMFactory = new ethers.ContractFactory(GatewayEVM.abi, GatewayEVM.bytecode, deployer); const gatewayEVMImpl = await gatewayEVMFactory.deploy(deployOpts); @@ -40,6 +39,7 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S const gatewayEVMInitdata = gatewayEVMInterface.encodeFunctionData(gatewayEVMInitFragment as ethers.FunctionFragment, [ await deployer.getAddress(), testEVMZeta.target, + await deployer.getAddress(), ]); const proxyEVMFactory = new ethers.ContractFactory(ERC1967Proxy.abi, ERC1967Proxy.bytecode, deployer); @@ -53,12 +53,10 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S ZetaConnectorNonNative.bytecode, deployer ); - const zetaConnector = await zetaConnectorFactory.deploy(gatewayEVM.target, testEVMZeta.target, deployer, deployOpts); - console.log("ZetaConnector:", zetaConnector.target); + const zetaConnector = await zetaConnectorFactory.deploy(gatewayEVM.target, testEVMZeta.target, await deployer.getAddress(), await deployer.getAddress(), deployOpts); const custodyFactory = new ethers.ContractFactory(Custody.abi, Custody.bytecode, deployer); - const custody = await custodyFactory.deploy(gatewayEVM.target, await deployer.getAddress(), deployOpts); - console.log("Custody:", custody.target); + const custody = await custodyFactory.deploy(gatewayEVM.target, await deployer.getAddress(), await deployer.getAddress(), deployOpts); await (gatewayEVM as any).connect(deployer).setCustody(custody.target, deployOpts); await (gatewayEVM as any).connect(deployer).setConnector(zetaConnector.target, deployOpts); @@ -67,7 +65,6 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S // Deploy protocol contracts (gateway and system) const weth9Factory = new ethers.ContractFactory(WETH9.abi, WETH9.bytecode, deployer); const wzeta = await weth9Factory.deploy(deployOpts); - console.log("WZeta:", wzeta.target); const systemContractFactory = new ethers.ContractFactory(SystemContract.abi, SystemContract.bytecode, deployer); const systemContract = await systemContractFactory.deploy( @@ -77,8 +74,6 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S deployOpts ); - console.log("SystemContract:", systemContract.target); - const gatewayZEVMFactory = new ethers.ContractFactory(GatewayZEVM.abi, GatewayZEVM.bytecode, deployer); const gatewayZEVMImpl = await gatewayZEVMFactory.deploy(deployOpts); @@ -86,7 +81,7 @@ const deployProtocolContracts = async (deployer: Signer, fungibleModuleSigner: S const gatewayZEVMInitFragment = gatewayZEVMInterface.getFunction("initialize"); const gatewayZEVMInitData = gatewayEVMInterface.encodeFunctionData( gatewayZEVMInitFragment as ethers.FunctionFragment, - [wzeta.target] + [wzeta.target, await deployer.getAddress()] ); const proxyZEVMFactory = new ethers.ContractFactory(ERC1967Proxy.abi, ERC1967Proxy.bytecode, deployer); @@ -119,15 +114,12 @@ const deployTestContracts = async (protocolContracts: any, deployer: Signer, fun gasLimit: 6721975, }; const testERC20Factory = new ethers.ContractFactory(TestERC20.abi, TestERC20.bytecode, deployer); - const testEVMZeta = await testERC20Factory.deploy("zeta", "ZETA", deployOpts); - console.log("TestEVMZeta:", testEVMZeta.target); + await testERC20Factory.deploy("zeta", "ZETA", deployOpts); const token = await testERC20Factory.deploy("Test Token", "TTK", deployOpts); - console.log("TestERC20:", token.target); const receiverEVMFactory = new ethers.ContractFactory(ReceiverEVM.abi, ReceiverEVM.bytecode, deployer); const receiverEVM = await receiverEVMFactory.deploy(deployOpts); - console.log("ReceiverEVM:", receiverEVM.target); await (token as any).connect(deployer).mint(await deployer.getAddress(), ethers.parseEther("1000"), deployOpts); await (token as any) @@ -138,7 +130,6 @@ const deployTestContracts = async (protocolContracts: any, deployer: Signer, fun // Deploy test contracts (test zContract, zrc20, sender) and mint funds to test accounts const testZContractFactory = new ethers.ContractFactory(TestZContract.abi, TestZContract.bytecode, deployer); const testZContract = await testZContractFactory.deploy(deployOpts); - console.log("TestZContract:", testZContract.target); const zrc20Factory = new ethers.ContractFactory(ZRC20.abi, ZRC20.bytecode, deployer); const zrc20 = await zrc20Factory @@ -154,7 +145,6 @@ const deployTestContracts = async (protocolContracts: any, deployer: Signer, fun protocolContracts.gatewayZEVM.target, deployOpts ); - console.log("ZRC20:", zrc20.target); await protocolContracts.systemContract.setGasCoinZRC20(1, zrc20.target, deployOpts); await protocolContracts.systemContract.setGasPrice(1, zrc20.target, deployOpts); @@ -166,7 +156,7 @@ const deployTestContracts = async (protocolContracts: any, deployer: Signer, fun .approve(protocolContracts.gatewayZEVM.target, ethers.parseEther("100"), deployOpts); // Include abi of gatewayZEVM events, so hardhat can decode them automatically - const senderABI = [...SenderZEVM.abi, ...GatewayZEVM.abi.filter((f) => f.type === "event")]; + const senderABI = [...SenderZEVM.abi, ...GatewayZEVM.abi.filter((f: any) => f.type === "event")]; const senderZEVMFactory = new ethers.ContractFactory(senderABI, SenderZEVM.bytecode, deployer); const senderZEVM = await senderZEVMFactory.deploy(protocolContracts.gatewayZEVM.target, deployOpts); @@ -196,15 +186,15 @@ const startWorker = async () => { testContracts = await deployTestContracts(protocolContracts, deployer, fungibleModuleSigner); // Listen to contracts events - // event Call(address indexed sender, bytes receiver, bytes message); + // event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message); protocolContracts.gatewayZEVM.on("Call", async (...args: Array) => { console.log("Worker: Call event on GatewayZEVM."); console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); try { (deployer as NonceManager).reset(); - const receiver = args[1]; - const message = args[2]; + const receiver = args[2]; + const message = args[3]; const executeTx = await protocolContracts.gatewayEVM.connect(deployer).execute(receiver, message, deployOpts); await executeTx.wait(); @@ -213,13 +203,13 @@ const startWorker = async () => { } }); - // event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); + // event Withdrawal(address indexed sender, uint256 indexed chainId, bytes receiver, address zrc20, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); protocolContracts.gatewayZEVM.on("Withdrawal", async (...args: Array) => { console.log("Worker: Withdrawal event on GatewayZEVM."); console.log("Worker: Calling ReceiverEVM through GatewayEVM..."); try { const receiver = args[2]; - const message = args[6]; + const message = args[7]; (deployer as NonceManager).reset(); if (message != "0x") { diff --git a/v2/src/evm/ERC20Custody.sol b/v2/src/evm/ERC20Custody.sol index 2516f65f..b7e948e2 100644 --- a/v2/src/evm/ERC20Custody.sol +++ b/v2/src/evm/ERC20Custody.sol @@ -3,14 +3,17 @@ pragma solidity 0.8.26; import "./interfaces//IGatewayEVM.sol"; import "./interfaces/IERC20Custody.sol"; + +import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; /// @title ERC20Custody /// @notice Holds the ERC20 tokens deposited on ZetaChain and includes functionality to call a contract. /// @dev This contract does not call smart contracts directly, it passes through the Gateway contract. -contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGuard { +contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGuard, AccessControl, Pausable { using SafeERC20 for IERC20; /// @notice Gateway contract. @@ -18,20 +21,32 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua /// @notice TSS address. address public tssAddress; - /// @notice Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } + /// @notice New role identifier for pauser role. + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + /// @notice New role identifier for withdrawer role. + bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); - constructor(address _gateway, address _tssAddress) { + /// @notice Constructor for ERC20Custody. + /// @dev Set admin as default admin and pauser, and tssAddress as tss role. + constructor(address _gateway, address _tssAddress, address _admin) { if (_gateway == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); tssAddress = _tssAddress; + _grantRole(DEFAULT_ADMIN_ROLE, _admin); + _grantRole(PAUSER_ROLE, _admin); + _grantRole(WITHDRAWER_ROLE, _tssAddress); + } + + /// @notice Pause contract. + function pause() external onlyRole(PAUSER_ROLE) { + _pause(); + } + + /// @notice Unpause contract. + function unpause() external onlyRole(PAUSER_ROLE) { + _unpause(); } /// @notice Withdraw directly transfers the tokens to the destination address without contract call. @@ -39,7 +54,16 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua /// @param token Address of the ERC20 token. /// @param to Destination address for the tokens. /// @param amount Amount of tokens to withdraw. - function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { + function withdraw( + address token, + address to, + uint256 amount + ) + external + nonReentrant + onlyRole(WITHDRAWER_ROLE) + whenNotPaused + { IERC20(token).safeTransfer(to, amount); emit Withdraw(token, to, amount); @@ -59,7 +83,8 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua ) public nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -85,7 +110,8 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua ) public nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index 3227e1d2..3959fae7 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -4,9 +4,10 @@ pragma solidity 0.8.26; import "./ZetaConnectorBase.sol"; import "./interfaces/IGatewayEVM.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; @@ -16,11 +17,12 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; /// @dev The contract doesn't hold any funds and should never have active allowances. contract GatewayEVM is Initializable, - OwnableUpgradeable, + AccessControlUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, - ReentrancyGuardUpgradeable + ReentrancyGuardUpgradeable, + PausableUpgradeable { using SafeERC20 for IERC20; @@ -33,43 +35,40 @@ contract GatewayEVM is /// @notice The address of the Zeta token contract. address public zetaToken; - /// @notice Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } - - /// @notice Only custody or connector address allowed modifier. - modifier onlyAssetHandler() { - if (msg.sender != custody && msg.sender != zetaConnector) { - revert InvalidSender(); - } - _; - } + /// @notice New role identifier for tss role. + bytes32 public constant TSS_ROLE = keccak256("TSS_ROLE"); + /// @notice New role identifier for asset handler role. + bytes32 public constant ASSET_HANDLER_ROLE = keccak256("ASSET_HANDLER_ROLE"); + /// @notice New role identifier for pauser role. + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); } - function initialize(address _tssAddress, address _zetaToken) public initializer { + /// @notice Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE. + /// @dev Using admin to authorize upgrades and pause, and tss for tss role. + function initialize(address _tssAddress, address _zetaToken, address _admin) public initializer { if (_tssAddress == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); } - - __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); + __AccessControl_init(); + __Pausable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, _admin); + _grantRole(PAUSER_ROLE, _admin); tssAddress = _tssAddress; + _grantRole(TSS_ROLE, _tssAddress); + zetaToken = _zetaToken; } /// @dev Authorizes the upgrade of the contract, sender must be owner. /// @param newImplementation Address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } + function _authorizeUpgrade(address newImplementation) internal override onlyRole(DEFAULT_ADMIN_ROLE) { } /// @dev Internal function to execute a call to a destination address. /// @param destination Address to call. @@ -82,11 +81,21 @@ contract GatewayEVM is return result; } + /// @notice Pause contract. + function pause() external onlyRole(PAUSER_ROLE) { + _pause(); + } + + /// @notice Unpause contract. + function unpause() external onlyRole(PAUSER_ROLE) { + _unpause(); + } + /// @notice Transfers msg.value to destination contract and executes it's onRevert function. /// @dev This function can only be called by the TSS address and it is payable. /// @param destination Address to call. /// @param data Calldata to pass to the call. - function executeRevert(address destination, bytes calldata data) public payable onlyTSS { + function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) whenNotPaused { (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -99,7 +108,16 @@ contract GatewayEVM is /// @param destination Address to call. /// @param data Calldata to pass to the call. /// @return The result of the call. - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + function execute( + address destination, + bytes calldata data + ) + external + payable + onlyRole(TSS_ROLE) + whenNotPaused + returns (bytes memory) + { bytes memory result = _execute(destination, data); emit Executed(destination, msg.value, data); @@ -122,7 +140,8 @@ contract GatewayEVM is ) public nonReentrant - onlyAssetHandler + onlyRole(ASSET_HANDLER_ROLE) + whenNotPaused { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens @@ -157,7 +176,8 @@ contract GatewayEVM is ) external nonReentrant - onlyAssetHandler + onlyRole(ASSET_HANDLER_ROLE) + whenNotPaused { if (amount == 0) revert InsufficientERC20Amount(); @@ -169,7 +189,7 @@ contract GatewayEVM is /// @notice Deposits ETH to the TSS address. /// @param receiver Address of the receiver. - function deposit(address receiver) external payable { + function deposit(address receiver) external payable whenNotPaused { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); @@ -182,7 +202,7 @@ contract GatewayEVM is /// @param receiver Address of the receiver. /// @param amount Amount of tokens to deposit. /// @param asset Address of the ERC20 token. - function deposit(address receiver, uint256 amount, address asset) external { + function deposit(address receiver, uint256 amount, address asset) external whenNotPaused { if (amount == 0) revert InsufficientERC20Amount(); transferFromToAssetHandler(msg.sender, asset, amount); @@ -193,7 +213,7 @@ contract GatewayEVM is /// @notice Deposits ETH to the TSS address and calls an omnichain smart contract. /// @param receiver Address of the receiver. /// @param payload Calldata to pass to the call. - function depositAndCall(address receiver, bytes calldata payload) external payable { + function depositAndCall(address receiver, bytes calldata payload) external payable whenNotPaused { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); @@ -207,7 +227,15 @@ contract GatewayEVM is /// @param amount Amount of tokens to deposit. /// @param asset Address of the ERC20 token. /// @param payload Calldata to pass to the call. - function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { + function depositAndCall( + address receiver, + uint256 amount, + address asset, + bytes calldata payload + ) + external + whenNotPaused + { if (amount == 0) revert InsufficientERC20Amount(); transferFromToAssetHandler(msg.sender, asset, amount); @@ -218,25 +246,27 @@ contract GatewayEVM is /// @notice Calls an omnichain smart contract without asset transfer. /// @param receiver Address of the receiver. /// @param payload Calldata to pass to the call. - function call(address receiver, bytes calldata payload) external { + function call(address receiver, bytes calldata payload) external whenNotPaused { emit Call(msg.sender, receiver, payload); } /// @notice Sets the custody contract address. /// @param _custody Address of the custody contract. - function setCustody(address _custody) external onlyTSS { + function setCustody(address _custody) external onlyRole(DEFAULT_ADMIN_ROLE) { if (custody != address(0)) revert CustodyInitialized(); if (_custody == address(0)) revert ZeroAddress(); + _grantRole(ASSET_HANDLER_ROLE, _custody); custody = _custody; } /// @notice Sets the connector contract address. /// @param _zetaConnector Address of the connector contract. - function setConnector(address _zetaConnector) external onlyTSS { + function setConnector(address _zetaConnector) external onlyRole(DEFAULT_ADMIN_ROLE) { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); + _grantRole(ASSET_HANDLER_ROLE, _zetaConnector); zetaConnector = _zetaConnector; } diff --git a/v2/src/evm/ZetaConnectorBase.sol b/v2/src/evm/ZetaConnectorBase.sol index c200a1ea..5aa31bf6 100644 --- a/v2/src/evm/ZetaConnectorBase.sol +++ b/v2/src/evm/ZetaConnectorBase.sol @@ -1,8 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; +import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; @@ -11,13 +13,11 @@ import "src/evm/interfaces/IZetaConnector.sol"; /// @title ZetaConnectorBase /// @notice Abstract base contract for ZetaConnector. /// @dev This contract implements basic functionality for handling tokens and interacting with the Gateway contract. -abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard { +abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard, Pausable, AccessControl { using SafeERC20 for IERC20; /// @notice Error indicating that a zero address was provided. error ZeroAddress(); - /// @notice Error indicating that the sender is invalid. - error InvalidSender(); /// @notice The Gateway contract used for executing cross-chain calls. IGatewayEVM public immutable gateway; @@ -26,21 +26,34 @@ abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard { /// @notice The address of the TSS (Threshold Signature Scheme) contract. address public tssAddress; - /// @dev Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } + /// @notice New role identifier for withdrawer role. + bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); + /// @notice New role identifier for pauser role. + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); - constructor(address _gateway, address _zetaToken, address _tssAddress) { + /// @notice Constructor for ZetaConnectors. + /// @dev Set admin as default admin and pauser, and tssAddress as tss role. + constructor(address _gateway, address _zetaToken, address _tssAddress, address _admin) { if (_gateway == address(0) || _zetaToken == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); zetaToken = _zetaToken; tssAddress = _tssAddress; + + _grantRole(DEFAULT_ADMIN_ROLE, _admin); + _grantRole(WITHDRAWER_ROLE, _tssAddress); + _grantRole(PAUSER_ROLE, _admin); + } + + /// @notice Pause contract. + function pause() external onlyRole(PAUSER_ROLE) { + _pause(); + } + + /// @notice Unpause contract. + function unpause() external onlyRole(PAUSER_ROLE) { + _unpause(); } /// @notice Withdraw tokens to a specified address. diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index 0a06b064..40439f84 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -14,9 +14,10 @@ contract ZetaConnectorNative is ZetaConnectorBase { constructor( address _gateway, address _zetaToken, - address _tssAddress + address _tssAddress, + address _admin ) - ZetaConnectorBase(_gateway, _zetaToken, _tssAddress) + ZetaConnectorBase(_gateway, _zetaToken, _tssAddress, _admin) { } /// @notice Withdraw tokens to a specified address. @@ -24,7 +25,17 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @param amount The amount of tokens to withdraw. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address. - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdraw( + address to, + uint256 amount, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyRole(WITHDRAWER_ROLE) + whenNotPaused + { IERC20(zetaToken).safeTransfer(to, amount); emit Withdraw(to, amount); } @@ -44,7 +55,8 @@ contract ZetaConnectorNative is ZetaConnectorBase { external override nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -70,7 +82,8 @@ contract ZetaConnectorNative is ZetaConnectorBase { external override nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -83,7 +96,7 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @notice Handle received tokens. /// @param amount The amount of tokens received. - function receiveTokens(uint256 amount) external override { + function receiveTokens(uint256 amount) external override whenNotPaused { IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), amount); } } diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index 5cfbfe7e..65605f79 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -21,15 +21,16 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { constructor( address _gateway, address _zetaToken, - address _tssAddress + address _tssAddress, + address _admin ) - ZetaConnectorBase(_gateway, _zetaToken, _tssAddress) + ZetaConnectorBase(_gateway, _zetaToken, _tssAddress, _admin) { } /// @notice Set max supply for minting. /// @param _maxSupply New max supply. /// @dev This function can only be called by the TSS address. - function setMaxSupply(uint256 _maxSupply) external onlyTSS { + function setMaxSupply(uint256 _maxSupply) external onlyRole(WITHDRAWER_ROLE) whenNotPaused { maxSupply = _maxSupply; emit MaxSupplyUpdated(_maxSupply); } @@ -39,7 +40,17 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { /// @param amount The amount of tokens to withdraw. /// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address. - function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { + function withdraw( + address to, + uint256 amount, + bytes32 internalSendHash + ) + external + override + nonReentrant + onlyRole(WITHDRAWER_ROLE) + whenNotPaused + { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); IZetaNonEthNew(zetaToken).mint(to, amount, internalSendHash); @@ -61,7 +72,8 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { external override nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); @@ -89,7 +101,8 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { external override nonReentrant - onlyTSS + onlyRole(WITHDRAWER_ROLE) + whenNotPaused { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); @@ -104,7 +117,7 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { /// @notice Handle received tokens and burn them. /// @param amount The amount of tokens received. - function receiveTokens(uint256 amount) external override { + function receiveTokens(uint256 amount) external override whenNotPaused { IZetaNonEthNew(zetaToken).burnFrom(msg.sender, amount); } } diff --git a/v2/src/evm/interfaces/IERC20Custody.sol b/v2/src/evm/interfaces/IERC20Custody.sol index 37b24306..9ef282e2 100644 --- a/v2/src/evm/interfaces/IERC20Custody.sol +++ b/v2/src/evm/interfaces/IERC20Custody.sol @@ -30,7 +30,4 @@ interface IERC20CustodyEvents { interface IERC20CustodyErrors { /// @notice Error for zero address input. error ZeroAddress(); - - /// @notice Error for invalid sender. - error InvalidSender(); } diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index 75c41562..c752d054 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -68,9 +68,6 @@ interface IGatewayEVMErrors { /// @notice Error for already initialized custody. error CustodyInitialized(); - - /// @notice Error for invalid sender. - error InvalidSender(); } /// @title IGatewayEVM diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index 834d4743..a05eb196 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -5,9 +5,11 @@ import "./interfaces/IGatewayZEVM.sol"; import "./interfaces/IWZETA.sol"; import "./interfaces/IZRC20.sol"; import "./interfaces/zContract.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; /// @title GatewayZEVM @@ -17,9 +19,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, - OwnableUpgradeable, + AccessControlUpgradeable, UUPSUpgradeable, - ReentrancyGuardUpgradeable + ReentrancyGuardUpgradeable, + PausableUpgradeable { /// @notice Error indicating a zero address was provided. error ZeroAddress(); @@ -29,6 +32,9 @@ contract GatewayZEVM is /// @notice The address of the Zeta token. address public zetaToken; + /// @notice New role identifier for pauser role. + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + /// @dev Only Fungible module address allowed modifier. modifier onlyFungible() { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) { @@ -42,26 +48,41 @@ contract GatewayZEVM is _disableInitializers(); } - function initialize(address _zetaToken) public initializer { + /// @notice Initialize with address of zeta token and admin account set as DEFAULT_ADMIN_ROLE. + /// @dev Using admin to authorize upgrades and pause. + function initialize(address _zetaToken, address _admin) public initializer { if (_zetaToken == address(0)) { revert ZeroAddress(); } - - __Ownable_init(msg.sender); __UUPSUpgradeable_init(); + __AccessControl_init(); + __Pausable_init(); __ReentrancyGuard_init(); + + _grantRole(DEFAULT_ADMIN_ROLE, _admin); + _grantRole(PAUSER_ROLE, _admin); zetaToken = _zetaToken; } /// @dev Authorizes the upgrade of the contract. /// @param newImplementation The address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } + function _authorizeUpgrade(address newImplementation) internal override onlyRole(DEFAULT_ADMIN_ROLE) { } /// @dev Receive function to receive ZETA from WETH9.withdraw(). - receive() external payable { + receive() external payable whenNotPaused { if (msg.sender != zetaToken && msg.sender != FUNGIBLE_MODULE_ADDRESS) revert OnlyWZETAOrFungible(); } + /// @notice Pause contract. + function pause() external onlyRole(PAUSER_ROLE) { + _pause(); + } + + /// @notice Unpause contract. + function unpause() external onlyRole(PAUSER_ROLE) { + _unpause(); + } + /// @dev Internal function to withdraw ZRC20 tokens. /// @param amount The amount of tokens to withdraw. /// @param zrc20 The address of the ZRC20 token. @@ -95,9 +116,9 @@ contract GatewayZEVM is /// @param receiver The receiver address on the external chain. /// @param amount The amount of tokens to withdraw. /// @param zrc20 The address of the ZRC20 token. - function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant { + function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant whenNotPaused { uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); + emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); } /// @notice Withdraw ZRC20 tokens and call a smart contract on an external chain. @@ -113,40 +134,52 @@ contract GatewayZEVM is ) external nonReentrant + whenNotPaused { uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); + emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); } /// @notice Withdraw ZETA tokens to an external chain. /// @param amount The amount of tokens to withdraw. - function withdraw(uint256 amount) external nonReentrant { + function withdraw(uint256 amount, uint256 chainId) external nonReentrant whenNotPaused { _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); - emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, ""); + emit Withdrawal( + msg.sender, chainId, abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), address(zetaToken), amount, 0, 0, "" + ); } /// @notice Withdraw ZETA tokens and call a smart contract on an external chain. /// @param amount The amount of tokens to withdraw. + /// @param chainId Chain id of the external chain. /// @param message The calldata to pass to the contract call. - function withdrawAndCall(uint256 amount, bytes calldata message) external nonReentrant { + function withdrawAndCall( + uint256 amount, + uint256 chainId, + bytes calldata message + ) + external + nonReentrant + whenNotPaused + { _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); emit Withdrawal( - msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message + msg.sender, chainId, abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), address(zetaToken), amount, 0, 0, message ); } /// @notice Call a smart contract on an external chain without asset transfer. /// @param receiver The receiver address on the external chain. /// @param message The calldata to pass to the contract call. - function call(bytes memory receiver, bytes calldata message) external nonReentrant { - emit Call(msg.sender, receiver, message); + function call(bytes memory receiver, uint256 chainId, bytes calldata message) external nonReentrant whenNotPaused { + emit Call(msg.sender, chainId, receiver, message); } /// @notice Deposit foreign coins into ZRC20. /// @param zrc20 The address of the ZRC20 token. /// @param amount The amount of tokens to deposit. /// @param target The target address to receive the deposited tokens. - function deposit(address zrc20, uint256 amount, address target) external onlyFungible { + function deposit(address zrc20, uint256 amount, address target) external onlyFungible whenNotPaused { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); IZRC20(zrc20).deposit(target, amount); @@ -167,6 +200,7 @@ contract GatewayZEVM is ) external onlyFungible + whenNotPaused { UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } @@ -186,6 +220,7 @@ contract GatewayZEVM is ) external onlyFungible + whenNotPaused { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); @@ -206,6 +241,7 @@ contract GatewayZEVM is ) external onlyFungible + whenNotPaused { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); @@ -228,6 +264,7 @@ contract GatewayZEVM is ) external onlyFungible + whenNotPaused { UniversalContract(target).onRevert(context, zrc20, amount, message); } @@ -247,6 +284,7 @@ contract GatewayZEVM is ) external onlyFungible + whenNotPaused { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol index 307c07a2..6d7c2a19 100644 --- a/v2/src/zevm/interfaces/IGatewayZEVM.sol +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -13,6 +13,10 @@ interface IGatewayZEVM { /// @param zrc20 The address of the ZRC20 token. function withdraw(bytes memory receiver, uint256 amount, address zrc20) external; + /// @notice Withdraw ZETA tokens to an external chain. + /// @param amount The amount of tokens to withdraw. + function withdraw(uint256 amount, uint256 chainId) external; + /// @notice Withdraw ZRC20 tokens and call a smart contract on an external chain. /// @param receiver The receiver address on the external chain. /// @param amount The amount of tokens to withdraw. @@ -20,10 +24,17 @@ interface IGatewayZEVM { /// @param message The calldata to pass to the contract call. function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external; + /// @notice Withdraw ZETA tokens and call a smart contract on an external chain. + /// @param amount The amount of tokens to withdraw. + /// @param chainId Chain id of the external chain. + /// @param message The calldata to pass to the contract call. + function withdrawAndCall(uint256 amount, uint256 chainId, bytes calldata message) external; + /// @notice Call a smart contract on an external chain without asset transfer. /// @param receiver The receiver address on the external chain. + /// @param chainId Chain id of the external chain. /// @param message The calldata to pass to the contract call. - function call(bytes memory receiver, bytes calldata message) external; + function call(bytes memory receiver, uint256 chainId, bytes calldata message) external; /// @notice Deposit foreign coins into ZRC20. /// @param zrc20 The address of the ZRC20 token. @@ -67,22 +78,25 @@ interface IGatewayZEVM { interface IGatewayZEVMEvents { /// @notice Emitted when a cross-chain call is made. /// @param sender The address of the sender. + /// @param chainId Chain id of external chain. /// @param receiver The receiver address on the external chain. /// @param message The calldata passed to the contract call. - event Call(address indexed sender, bytes receiver, bytes message); + event Call(address indexed sender, uint256 indexed chainId, bytes receiver, bytes message); /// @notice Emitted when a withdrawal is made. - /// @param from The address from which the tokens are withdrawn. + /// @param sender The address from which the tokens are withdrawn. + /// @param chainId Chain id of external chain. + /// @param receiver The receiver address on the external chain. /// @param zrc20 The address of the ZRC20 token. - /// @param to The receiver address on the external chain. /// @param value The amount of tokens withdrawn. /// @param gasfee The gas fee for the withdrawal. /// @param protocolFlatFee The protocol flat fee for the withdrawal. /// @param message The calldata passed to the contract call. event Withdrawal( - address indexed from, + address indexed sender, + uint256 indexed chainId, + bytes receiver, address zrc20, - bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, diff --git a/v2/test/GatewayEVM.t.sol b/v2/test/GatewayEVM.t.sol index 758217ba..002f43a6 100644 --- a/v2/test/GatewayEVM.t.sol +++ b/v2/test/GatewayEVM.t.sol @@ -34,6 +34,14 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver address destination; address tssAddress; + error EnforcedPause(); + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + bytes32 public constant TSS_ROLE = keccak256("TSS_ROLE"); + bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); + bytes32 public constant ASSET_HANDLER_ROLE = keccak256("ASSET_HANDLER_ROLE"); + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + function setUp() public { owner = address(this); destination = address(0x1234); @@ -43,16 +51,16 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta), owner)) ); gateway = GatewayEVM(proxy); - custody = new ERC20Custody(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress, owner); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress, owner); receiver = new ReceiverEVM(); vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(owner); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); vm.stopPrank(); @@ -90,7 +98,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver bytes memory data = abi.encodeWithSignature("receiveNonPayable(string[],uint256[],bool)", str, num, flag); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, TSS_ROLE)); gateway.execute(address(receiver), data); } @@ -126,13 +134,43 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver gateway.execute(address(receiver), data); } + function testForwardCallToReceiveNoParamsTogglePause() public { + vm.prank(tssAddress); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, tssAddress, PAUSER_ROLE)); + gateway.pause(); + + vm.prank(tssAddress); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, tssAddress, PAUSER_ROLE)); + gateway.unpause(); + + vm.prank(owner); + gateway.pause(); + + bytes memory data = abi.encodeWithSignature("receiveNoParams()"); + + vm.expectRevert(EnforcedPause.selector); + vm.prank(tssAddress); + gateway.execute(address(receiver), data); + + vm.prank(owner); + gateway.unpause(); + + vm.expectCall(address(receiver), 0, data); + vm.expectEmit(true, true, true, true, address(receiver)); + emit ReceivedNoParams(address(gateway)); + vm.expectEmit(true, true, true, true, address(gateway)); + emit Executed(address(receiver), 0, data); + vm.prank(tssAddress); + gateway.execute(address(receiver), data); + } + function testExecuteWithERC20FailsIfNotCustoryOrConnector() public { uint256 amount = 100_000; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, ASSET_HANDLER_ROLE)); gateway.executeWithERC20(address(token), destination, amount, data); } @@ -142,7 +180,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, ASSET_HANDLER_ROLE)); gateway.revertWithERC20(address(token), destination, amount, data); } @@ -180,13 +218,13 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } - function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS() public { + function testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(token), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); custody.withdrawAndCall(address(token), address(receiver), amount, data); } @@ -234,13 +272,13 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } - function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS() public { + function testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes memory data = abi.encodeWithSignature("receiveERC20Partial(uint256,address,address)", amount, address(token), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); custody.withdrawAndCall(address(token), address(receiver), amount, data); } @@ -313,11 +351,11 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } - function testWithdrawThroughCustodyFailsIfSenderIsNotTSS() public { + function testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); custody.withdraw(address(token), destination, amount); } @@ -357,12 +395,12 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver assertEq(balanceGateway, 0); } - function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS() public { + function testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes memory data = abi.encodePacked("hello"); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); custody.withdrawAndRevert(address(token), address(receiver), amount, data); } @@ -399,7 +437,7 @@ contract GatewayEVMTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiver bytes memory data = abi.encodePacked("hello"); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, TSS_ROLE)); gateway.executeRevert{ value: value }(address(receiver), data); } } @@ -428,15 +466,15 @@ contract GatewayEVMInboundTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IR zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta), owner)) ); gateway = GatewayEVM(proxy); - custody = new ERC20Custody(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress, owner); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress, owner); vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(owner); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); vm.stopPrank(); diff --git a/v2/test/GatewayEVMUpgrade.t.sol b/v2/test/GatewayEVMUpgrade.t.sol index 524efee9..8fcb1ac6 100644 --- a/v2/test/GatewayEVMUpgrade.t.sol +++ b/v2/test/GatewayEVMUpgrade.t.sol @@ -48,17 +48,17 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents zeta = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta), owner)) ); gateway = GatewayEVM(proxy); - custody = new ERC20Custody(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress, owner); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zeta), tssAddress, owner); receiver = new ReceiverEVM(); vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(owner); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); vm.stopPrank(); diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index baae27b8..322cc0e9 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -66,15 +66,15 @@ contract GatewayEVMZEVMTest is zeta = new TestERC20("zeta", "ZETA"); proxyEVM = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zeta), ownerEVM)) ); gatewayEVM = GatewayEVM(proxyEVM); - custody = new ERC20Custody(address(gatewayEVM), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress); + custody = new ERC20Custody(address(gatewayEVM), tssAddress, ownerEVM); + zetaConnector = new ZetaConnectorNonNative(address(gatewayEVM), address(zeta), tssAddress, ownerEVM); vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(ownerEVM); gatewayEVM.setCustody(address(custody)); gatewayEVM.setConnector(address(zetaConnector)); vm.stopPrank(); @@ -86,7 +86,9 @@ contract GatewayEVMZEVMTest is // zevm proxyZEVM = payable( - Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zeta)))) + Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zeta), ownerZEVM)) + ) ); gatewayZEVM = GatewayZEVM(proxyZEVM); @@ -112,13 +114,14 @@ contract GatewayEVMZEVMTest is uint256 num = 42; bool flag = true; uint256 value = 1 ether; + uint256 chainId = 1; // Encode the function call data and call on zevm bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); vm.prank(ownerZEVM); vm.expectEmit(true, true, true, true, address(gatewayZEVM)); - emit Call(address(ownerZEVM), abi.encodePacked(receiverEVM), message); - gatewayZEVM.call(abi.encodePacked(receiverEVM), message); + emit Call(address(ownerZEVM), chainId, abi.encodePacked(receiverEVM), message); + gatewayZEVM.call(abi.encodePacked(receiverEVM), chainId, message); // Call execute on evm vm.deal(address(gatewayEVM), value); @@ -133,13 +136,15 @@ contract GatewayEVMZEVMTest is uint256 num = 42; bool flag = true; uint256 value = 1 ether; + uint256 chainId = 1; // Encode the function call data and call on zevm bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); - bytes memory data = abi.encodeWithSignature("call(bytes,bytes)", abi.encodePacked(receiverEVM), message); + bytes memory data = + abi.encodeWithSignature("call(bytes,uint256,bytes)", abi.encodePacked(receiverEVM), chainId, message); vm.expectCall(address(gatewayZEVM), 0, data); vm.prank(ownerZEVM); - senderZEVM.callReceiver(abi.encodePacked(receiverEVM), str, num, flag); + senderZEVM.callReceiver(abi.encodePacked(receiverEVM), chainId, str, num, flag); // Call execute on evm vm.deal(address(gatewayEVM), value); @@ -161,7 +166,14 @@ contract GatewayEVMZEVMTest is bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayZEVM)); emit Withdrawal( - ownerZEVM, address(zrc20), abi.encodePacked(receiverEVM), 1_000_000, 0, zrc20.PROTOCOL_FLAT_FEE(), message + ownerZEVM, + 0, + abi.encodePacked(receiverEVM), + address(zrc20), + 1_000_000, + 0, + zrc20.PROTOCOL_FLAT_FEE(), + message ); vm.prank(ownerZEVM); gatewayZEVM.withdrawAndCall(abi.encodePacked(receiverEVM), 1_000_000, address(zrc20), message); diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index 8d6d898b..3cd5c7df 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -33,7 +33,9 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zetaToken = new WETH9(); proxy = payable( - Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken)))) + Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken), owner)) + ) ); gateway = GatewayZEVM(proxy); @@ -63,8 +65,8 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 ownerBalanceBefore = zrc20.balanceOf(owner); vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), ""); - gateway.withdraw(abi.encodePacked(addr1), 1, address(zrc20)); + emit Withdrawal(owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), ""); + gateway.withdraw(abi.encodePacked(addr1), amount, address(zrc20)); uint256 ownerBalanceAfter = zrc20.balanceOf(owner); assertEq(ownerBalanceBefore - amount, ownerBalanceAfter); @@ -73,6 +75,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZRC20FailsIfNoAllowance() public { uint256 amount = 1; uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + // Remove allowance for gateway vm.prank(owner); zrc20.approve(address(gateway), 0); @@ -88,6 +91,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZRC20WithMessageFailsIfNoAllowance() public { uint256 amount = 1; uint256 ownerBalanceBefore = zrc20.balanceOf(owner); + // Remove allowance for gateway vm.prank(owner); zrc20.approve(address(gateway), 0); @@ -107,7 +111,9 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors bytes memory message = abi.encodeWithSignature("hello(address)", addr1); vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zrc20), abi.encodePacked(addr1), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), message); + emit Withdrawal( + owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), message + ); gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); uint256 ownerBalanceAfter = zrc20.balanceOf(owner); @@ -119,10 +125,11 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + uint256 chainId = 1; vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, ""); - gateway.withdraw(amount); + emit Withdrawal(owner, chainId, abi.encodePacked(fungibleModule), address(zetaToken), amount, 0, 0, ""); + gateway.withdraw(amount, chainId); uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); @@ -139,12 +146,14 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); uint256 fungibleModuleBalanceBefore = fungibleModule.balance; + uint256 chainId = 1; + // Remove allowance for gateway vm.prank(owner); zetaToken.approve(address(gateway), 0); vm.expectRevert(); - gateway.withdraw(amount); + gateway.withdraw(amount, chainId); // Verify balances not changed uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); @@ -162,10 +171,11 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); uint256 fungibleModuleBalanceBefore = fungibleModule.balance; bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + uint256 chainId = 1; vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, address(zetaToken), abi.encodePacked(fungibleModule), amount, 0, 0, message); - gateway.withdrawAndCall(amount, message); + emit Withdrawal(owner, chainId, abi.encodePacked(fungibleModule), address(zetaToken), amount, 0, 0, message); + gateway.withdrawAndCall(amount, chainId, message); uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); assertEq(ownerBalanceBefore - 1, ownerBalanceAfter); @@ -183,12 +193,14 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); uint256 fungibleModuleBalanceBefore = fungibleModule.balance; bytes memory message = abi.encodeWithSignature("hello(address)", addr1); + uint256 chainId = 1; + // Remove allowance for gateway vm.prank(owner); zetaToken.approve(address(gateway), 0); vm.expectRevert(); - gateway.withdrawAndCall(amount, message); + gateway.withdrawAndCall(amount, chainId, message); // Verify balances not changed uint256 ownerBalanceAfter = zetaToken.balanceOf(owner); @@ -203,8 +215,10 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testCall() public { bytes memory message = abi.encodeWithSignature("hello(address)", addr1); vm.expectEmit(true, true, true, true, address(gateway)); - emit Call(owner, abi.encodePacked(addr1), message); - gateway.call(abi.encodePacked(addr1), message); + uint256 chainId = 1; + + emit Call(owner, chainId, abi.encodePacked(addr1), message); + gateway.call(abi.encodePacked(addr1), chainId, message); } } @@ -222,6 +236,11 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); + error EnforcedPause(); + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + function setUp() public { owner = address(this); addr1 = address(0x1234); @@ -229,7 +248,9 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors zetaToken = new WETH9(); proxy = payable( - Upgrades.deployUUPSProxy("GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken)))) + Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken), owner)) + ) ); gateway = GatewayZEVM(proxy); @@ -267,6 +288,37 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors assertEq(amount, balanceAfter); } + function testDepositTogglePause() public { + vm.prank(fungibleModule); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, fungibleModule, PAUSER_ROLE)); + gateway.pause(); + + vm.prank(fungibleModule); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, fungibleModule, PAUSER_ROLE)); + gateway.unpause(); + + vm.prank(owner); + gateway.pause(); + + uint256 amount = 1; + + vm.expectRevert(EnforcedPause.selector); + vm.prank(fungibleModule); + gateway.deposit(address(zrc20), amount, addr1); + + vm.prank(owner); + gateway.unpause(); + + uint256 balanceBefore = zrc20.balanceOf(addr1); + assertEq(0, balanceBefore); + + vm.prank(fungibleModule); + gateway.deposit(address(zrc20), amount, addr1); + + uint256 balanceAfter = zrc20.balanceOf(addr1); + assertEq(amount, balanceAfter); + } + function testDepositFailsIfSenderNotFungibleModule() public { uint256 amount = 1; uint256 balanceBefore = zrc20.balanceOf(addr1); diff --git a/v2/test/ZetaConnectorNative.t.sol b/v2/test/ZetaConnectorNative.t.sol index 54837aeb..87c0c1d6 100644 --- a/v2/test/ZetaConnectorNative.t.sol +++ b/v2/test/ZetaConnectorNative.t.sol @@ -40,6 +40,10 @@ contract ZetaConnectorNativeTest is address destination; address tssAddress; + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); + function setUp() public { owner = address(this); destination = address(0x1234); @@ -48,17 +52,17 @@ contract ZetaConnectorNativeTest is zetaToken = new TestERC20("zeta", "ZETA"); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken), owner)) ); gateway = GatewayEVM(proxy); - custody = new ERC20Custody(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress, owner); + zetaConnector = new ZetaConnectorNative(address(gateway), address(zetaToken), tssAddress, owner); receiver = new ReceiverEVM(); vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(owner); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); vm.stopPrank(); @@ -84,12 +88,12 @@ contract ZetaConnectorNativeTest is assertEq(balanceAfter, amount); } - function testWithdrawFailsIfSenderIsNotTSS() public { + function testWithdrawFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdraw(destination, amount, internalSendHash); } @@ -128,14 +132,14 @@ contract ZetaConnectorNativeTest is assertEq(balanceGateway, 0); } - function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); } @@ -246,13 +250,13 @@ contract ZetaConnectorNativeTest is assertEq(balanceGateway, 0); } - function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); } } diff --git a/v2/test/ZetaConnectorNonNative.t.sol b/v2/test/ZetaConnectorNonNative.t.sol index b1546da1..01739e69 100644 --- a/v2/test/ZetaConnectorNonNative.t.sol +++ b/v2/test/ZetaConnectorNonNative.t.sol @@ -40,6 +40,10 @@ contract ZetaConnectorNonNativeTest is address destination; address tssAddress; + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); + function setUp() public { owner = address(this); destination = address(0x1234); @@ -48,12 +52,12 @@ contract ZetaConnectorNonNativeTest is zetaToken = new ZetaNonEth(tssAddress, tssAddress); proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (tssAddress, address(zetaToken), owner)) ); gateway = GatewayEVM(proxy); - custody = new ERC20Custody(address(gateway), tssAddress); - zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress); + custody = new ERC20Custody(address(gateway), tssAddress, owner); + zetaConnector = new ZetaConnectorNonNative(address(gateway), address(zetaToken), tssAddress, owner); vm.prank(tssAddress); zetaToken.updateTssAndConnectorAddresses(tssAddress, address(zetaConnector)); @@ -62,7 +66,7 @@ contract ZetaConnectorNonNativeTest is vm.deal(tssAddress, 1 ether); - vm.startPrank(tssAddress); + vm.startPrank(owner); gateway.setCustody(address(custody)); gateway.setConnector(address(zetaConnector)); vm.stopPrank(); @@ -85,12 +89,12 @@ contract ZetaConnectorNonNativeTest is assertEq(balanceAfter, amount); } - function testWithdrawFailsIfSenderIsNotTSS() public { + function testWithdrawFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdraw(destination, amount, internalSendHash); } @@ -131,14 +135,14 @@ contract ZetaConnectorNonNativeTest is assertEq(balanceGateway, 0); } - function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS() public { + function testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); } @@ -254,13 +258,13 @@ contract ZetaConnectorNonNativeTest is assertEq(balanceGateway, 0); } - function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + function testWithdrawAndRevertFailsIfSenderIsNotWithdrawer() public { uint256 amount = 100_000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); vm.prank(owner); - vm.expectRevert(InvalidSender.selector); + vm.expectRevert(abi.encodeWithSelector(AccessControlUnauthorizedAccount.selector, owner, WITHDRAWER_ROLE)); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); } } diff --git a/v2/test/fuzz/ERC20CustodyEchidnaTest.sol b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol index 0021e238..adbcbe03 100644 --- a/v2/test/fuzz/ERC20CustodyEchidnaTest.sol +++ b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol @@ -15,11 +15,11 @@ contract ERC20CustodyEchidnaTest is ERC20Custody { address public echidnaCaller = msg.sender; address proxy = Upgrades.deployUUPSProxy( - "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (echidnaCaller, address(0x123))) + "GatewayEVM.sol", abi.encodeCall(GatewayEVM.initialize, (echidnaCaller, address(0x123), address(0x123))) ); GatewayEVM testGateway = GatewayEVM(proxy); - constructor() ERC20Custody(address(testGateway), echidnaCaller) { + constructor() ERC20Custody(address(testGateway), echidnaCaller, echidnaCaller) { testERC20 = new TestERC20("test", "TEST"); testGateway.setCustody(address(this)); } diff --git a/v2/test/fuzz/GatewayEVMEchidnaTest.sol b/v2/test/fuzz/GatewayEVMEchidnaTest.sol index 48cdf359..ff740136 100644 --- a/v2/test/fuzz/GatewayEVMEchidnaTest.sol +++ b/v2/test/fuzz/GatewayEVMEchidnaTest.sol @@ -17,7 +17,7 @@ contract GatewayEVMEchidnaTest is GatewayEVM { tssAddress = echidnaCaller; zetaConnector = address(0x123); testERC20 = new TestERC20("test", "TEST"); - custody = address(new ERC20Custody(address(this), tssAddress)); + custody = address(new ERC20Custody(address(this), tssAddress, address(this))); } function testExecuteWithERC20(address to, uint256 amount, bytes calldata data) public { diff --git a/v2/test/utils/GatewayEVMUpgradeTest.sol b/v2/test/utils/GatewayEVMUpgradeTest.sol index f1905116..931bb542 100644 --- a/v2/test/utils/GatewayEVMUpgradeTest.sol +++ b/v2/test/utils/GatewayEVMUpgradeTest.sol @@ -1,27 +1,29 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "src/evm/ZetaConnectorBase.sol"; +import "src/evm/interfaces/IGatewayEVM.sol"; + +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "src/evm/ZetaConnectorBase.sol"; -import "src/evm/interfaces/IGatewayEVM.sol"; - /// @title GatewayEVMUpgradeTest /// @notice Modified GatewayEVM contract for testing upgrades /// @dev The only difference is in event naming /// @custom:oz-upgrades-from GatewayEVM contract GatewayEVMUpgradeTest is Initializable, - OwnableUpgradeable, + AccessControlUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, - ReentrancyGuardUpgradeable + ReentrancyGuardUpgradeable, + PausableUpgradeable { using SafeERC20 for IERC20; @@ -37,40 +39,40 @@ contract GatewayEVMUpgradeTest is /// @dev Modified event for testing upgrade. event ExecutedV2(address indexed destination, uint256 value, bytes data); - /// @notice Only TSS address allowed modifier. - modifier onlyTSS() { - if (msg.sender != tssAddress) { - revert InvalidSender(); - } - _; - } + /// @notice New role identifier for tss role. + bytes32 public constant TSS_ROLE = keccak256("TSS_ROLE"); + /// @notice New role identifier for asset handler role. + bytes32 public constant ASSET_HANDLER_ROLE = keccak256("ASSET_HANDLER_ROLE"); + /// @notice New role identifier for pauser role. + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); - /// @notice Only custody or connector address allowed modifier. - modifier onlyCustodyOrConnector() { - if (msg.sender != custody && msg.sender != zetaConnector) { - revert InvalidSender(); - } - _; + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); } - constructor() { } - - function initialize(address _tssAddress, address _zetaToken) public initializer { + /// @notice Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE. + /// @dev Using admin to authorize upgrades and pause, and tss for tss role. + function initialize(address _tssAddress, address _zetaToken, address _admin) public initializer { if (_tssAddress == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); } - - __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); + __AccessControl_init(); + __Pausable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, _admin); + _grantRole(PAUSER_ROLE, _admin); tssAddress = _tssAddress; + _grantRole(TSS_ROLE, _tssAddress); + zetaToken = _zetaToken; } /// @dev Authorizes the upgrade of the contract, sender must be owner. /// @param newImplementation Address of the new implementation. - function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } + function _authorizeUpgrade(address newImplementation) internal override onlyRole(DEFAULT_ADMIN_ROLE) { } /// @dev Internal function to execute a call to a destination address. /// @param destination Address to call. @@ -83,11 +85,21 @@ contract GatewayEVMUpgradeTest is return result; } + /// @notice Pause contract. + function pause() external onlyRole(PAUSER_ROLE) { + _pause(); + } + + /// @notice Unpause contract. + function unpause() external onlyRole(PAUSER_ROLE) { + _unpause(); + } + /// @notice Transfers msg.value to destination contract and executes it's onRevert function. /// @dev This function can only be called by the TSS address and it is payable. /// @param destination Address to call. /// @param data Calldata to pass to the call. - function executeRevert(address destination, bytes calldata data) public payable onlyTSS { + function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) { (bool success, bytes memory result) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -100,7 +112,15 @@ contract GatewayEVMUpgradeTest is /// @param destination Address to call. /// @param data Calldata to pass to the call. /// @return The result of the call. - function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { + function execute( + address destination, + bytes calldata data + ) + external + payable + onlyRole(TSS_ROLE) + returns (bytes memory) + { bytes memory result = _execute(destination, data); emit ExecutedV2(destination, msg.value, data); @@ -123,7 +143,7 @@ contract GatewayEVMUpgradeTest is ) public nonReentrant - onlyCustodyOrConnector + onlyRole(ASSET_HANDLER_ROLE) { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens @@ -158,7 +178,7 @@ contract GatewayEVMUpgradeTest is ) external nonReentrant - onlyCustodyOrConnector + onlyRole(ASSET_HANDLER_ROLE) { if (amount == 0) revert InsufficientERC20Amount(); @@ -225,19 +245,21 @@ contract GatewayEVMUpgradeTest is /// @notice Sets the custody contract address. /// @param _custody Address of the custody contract. - function setCustody(address _custody) external { + function setCustody(address _custody) external onlyRole(DEFAULT_ADMIN_ROLE) { if (custody != address(0)) revert CustodyInitialized(); if (_custody == address(0)) revert ZeroAddress(); + _grantRole(ASSET_HANDLER_ROLE, _custody); custody = _custody; } /// @notice Sets the connector contract address. /// @param _zetaConnector Address of the connector contract. - function setConnector(address _zetaConnector) external { + function setConnector(address _zetaConnector) external onlyRole(DEFAULT_ADMIN_ROLE) { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); + _grantRole(ASSET_HANDLER_ROLE, _zetaConnector); zetaConnector = _zetaConnector; } diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index 4af26ed1..cd1f2703 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -21,16 +21,17 @@ contract SenderZEVM { /// @notice Call a receiver on EVM. /// @param receiver The address of the receiver on the external chain. + /// @param chainId Chain id of the external chain. /// @param str A string parameter to pass to the receiver's function. /// @param num A numeric parameter to pass to the receiver's function. /// @param flag A boolean parameter to pass to the receiver's function. /// @dev Encodes the function call and passes it to the gateway. - function callReceiver(bytes memory receiver, string memory str, uint256 num, bool flag) external { + function callReceiver(bytes memory receiver, uint256 chainId, string memory str, uint256 num, bool flag) external { // Encode the function call to the receiver's receivePayable method bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); // Pass encoded call to gateway - IGatewayZEVM(gateway).call(receiver, message); + IGatewayZEVM(gateway).call(receiver, chainId, message); } /// @notice Withdraw and call a receiver on EVM. diff --git a/v2/ts.config.json b/v2/tsconfig.json similarity index 100% rename from v2/ts.config.json rename to v2/tsconfig.json diff --git a/v2/typechain-types/AccessControl.ts b/v2/typechain-types/AccessControl.ts new file mode 100644 index 00000000..9506ad31 --- /dev/null +++ b/v2/typechain-types/AccessControl.ts @@ -0,0 +1,324 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface AccessControlInterface extends Interface { + getFunction( + nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface AccessControl extends BaseContract { + connect(runner?: ContractRunner | null): AccessControl; + waitForDeployment(): Promise; + + interface: AccessControlInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/AccessControlUpgradeable.ts b/v2/typechain-types/AccessControlUpgradeable.ts new file mode 100644 index 00000000..f4d50e5a --- /dev/null +++ b/v2/typechain-types/AccessControlUpgradeable.ts @@ -0,0 +1,359 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface AccessControlUpgradeableInterface extends Interface { + getFunction( + nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + | "supportsInterface" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "Initialized" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface AccessControlUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): AccessControlUpgradeable; + waitForDeployment(): Promise; + + interface: AccessControlUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC165.ts b/v2/typechain-types/ERC165.ts new file mode 100644 index 00000000..09a46c63 --- /dev/null +++ b/v2/typechain-types/ERC165.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC165Interface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export interface ERC165 extends BaseContract { + connect(runner?: ContractRunner | null): ERC165; + waitForDeployment(): Promise; + + interface: ERC165Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/ERC165Upgradeable.ts b/v2/typechain-types/ERC165Upgradeable.ts new file mode 100644 index 00000000..3d6f2836 --- /dev/null +++ b/v2/typechain-types/ERC165Upgradeable.ts @@ -0,0 +1,130 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface ERC165UpgradeableInterface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface ERC165Upgradeable extends BaseContract { + connect(runner?: ContractRunner | null): ERC165Upgradeable; + waitForDeployment(): Promise; + + interface: ERC165UpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/ERC20Custody.ts b/v2/typechain-types/ERC20Custody.ts index 4c18287d..f4bfcc0a 100644 --- a/v2/typechain-types/ERC20Custody.ts +++ b/v2/typechain-types/ERC20Custody.ts @@ -26,22 +26,81 @@ import type { export interface ERC20CustodyInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "WITHDRAWER_ROLE" | "gateway" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "pause" + | "paused" + | "renounceRole" + | "revokeRole" + | "supportsInterface" | "tssAddress" + | "unpause" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" ): FunctionFragment; getEvent( - nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + nameOrSignatureOrTopic: + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" + | "Withdraw" + | "WithdrawAndCall" + | "WithdrawAndRevert" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "WITHDRAWER_ROLE", + values?: undefined + ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", values: [AddressLike, AddressLike, BigNumberish] @@ -55,8 +114,38 @@ export interface ERC20CustodyInterface extends Interface { values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "WITHDRAWER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -68,6 +157,88 @@ export interface ERC20CustodyInterface extends Interface { ): Result; } +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace WithdrawEvent { export type InputTuple = [ token: AddressLike, @@ -179,10 +350,54 @@ export interface ERC20Custody extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + WITHDRAWER_ROLE: TypedContractMethod<[], [string], "view">; + gateway: TypedContractMethod<[], [string], "view">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + withdraw: TypedContractMethod< [token: AddressLike, to: AddressLike, amount: BigNumberish], [void], @@ -215,12 +430,64 @@ export interface ERC20Custody extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "WITHDRAWER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "gateway" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< @@ -253,6 +520,41 @@ export interface ERC20Custody extends BaseContract { "nonpayable" >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Withdraw" ): TypedContractEvent< @@ -276,6 +578,61 @@ export interface ERC20Custody extends BaseContract { >; filters: { + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Withdraw(address,address,uint256)": TypedContractEvent< WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, diff --git a/v2/typechain-types/ERC20CustodyEchidnaTest.ts b/v2/typechain-types/ERC20CustodyEchidnaTest.ts index add7f335..f9701fff 100644 --- a/v2/typechain-types/ERC20CustodyEchidnaTest.ts +++ b/v2/typechain-types/ERC20CustodyEchidnaTest.ts @@ -26,25 +26,83 @@ import type { export interface ERC20CustodyEchidnaTestInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "WITHDRAWER_ROLE" | "echidnaCaller" | "gateway" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "pause" + | "paused" + | "renounceRole" + | "revokeRole" + | "supportsInterface" | "testERC20" | "testWithdrawAndCall" | "tssAddress" + | "unpause" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" ): FunctionFragment; getEvent( - nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + nameOrSignatureOrTopic: + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" + | "Withdraw" + | "WithdrawAndCall" + | "WithdrawAndRevert" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "WITHDRAWER_ROLE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "echidnaCaller", values?: undefined ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; encodeFunctionData( functionFragment: "testWithdrawAndCall", @@ -54,6 +112,7 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", values: [AddressLike, AddressLike, BigNumberish] @@ -67,17 +126,47 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "WITHDRAWER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "echidnaCaller", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; decodeFunctionResult( functionFragment: "testWithdrawAndCall", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -89,6 +178,88 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { ): Result; } +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace WithdrawEvent { export type InputTuple = [ token: AddressLike, @@ -200,10 +371,52 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + WITHDRAWER_ROLE: TypedContractMethod<[], [string], "view">; + echidnaCaller: TypedContractMethod<[], [string], "view">; gateway: TypedContractMethod<[], [string], "view">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + testERC20: TypedContractMethod<[], [string], "view">; testWithdrawAndCall: TypedContractMethod< @@ -214,6 +427,8 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + withdraw: TypedContractMethod< [token: AddressLike, to: AddressLike, amount: BigNumberish], [void], @@ -246,12 +461,61 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "WITHDRAWER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "echidnaCaller" ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "gateway" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "testERC20" ): TypedContractMethod<[], [string], "view">; @@ -265,6 +529,9 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< @@ -297,6 +564,41 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { "nonpayable" >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Withdraw" ): TypedContractEvent< @@ -320,6 +622,61 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { >; filters: { + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Withdraw(address,address,uint256)": TypedContractEvent< WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, diff --git a/v2/typechain-types/GatewayEVM.ts b/v2/typechain-types/GatewayEVM.ts index 7ab5fc9d..0c74f929 100644 --- a/v2/typechain-types/GatewayEVM.ts +++ b/v2/typechain-types/GatewayEVM.ts @@ -26,6 +26,10 @@ import type { export interface GatewayEVMInterface extends Interface { getFunction( nameOrSignature: + | "ASSET_HANDLER_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "TSS_ROLE" | "UPGRADE_INTERFACE_VERSION" | "call" | "custody" @@ -36,15 +40,21 @@ export interface GatewayEVMInterface extends Interface { | "execute" | "executeRevert" | "executeWithERC20" + | "getRoleAdmin" + | "grantRole" + | "hasRole" | "initialize" - | "owner" + | "pause" + | "paused" | "proxiableUUID" - | "renounceOwnership" + | "renounceRole" | "revertWithERC20" + | "revokeRole" | "setConnector" | "setCustody" - | "transferOwnership" + | "supportsInterface" | "tssAddress" + | "unpause" | "upgradeToAndCall" | "zetaConnector" | "zetaToken" @@ -57,12 +67,29 @@ export interface GatewayEVMInterface extends Interface { | "Executed" | "ExecutedWithERC20" | "Initialized" - | "OwnershipTransferred" + | "Paused" | "Reverted" | "RevertedWithERC20" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" | "Upgraded" ): EventFragment; + encodeFunctionData( + functionFragment: "ASSET_HANDLER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "TSS_ROLE", values?: undefined): string; encodeFunctionData( functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined @@ -100,23 +127,40 @@ export interface GatewayEVMInterface extends Interface { functionFragment: "executeWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "initialize", - values: [AddressLike, AddressLike] + values: [AddressLike, AddressLike, AddressLike] ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "proxiableUUID", values?: undefined ): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] ): string; encodeFunctionData( functionFragment: "revertWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "setConnector", values: [AddressLike] @@ -126,13 +170,14 @@ export interface GatewayEVMInterface extends Interface { values: [AddressLike] ): string; encodeFunctionData( - functionFragment: "transferOwnership", - values: [AddressLike] + functionFragment: "supportsInterface", + values: [BytesLike] ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "upgradeToAndCall", values: [AddressLike, BytesLike] @@ -143,6 +188,19 @@ export interface GatewayEVMInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "ASSET_HANDLER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "TSS_ROLE", data: BytesLike): Result; decodeFunctionResult( functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike @@ -174,30 +232,39 @@ export interface GatewayEVMInterface extends Interface { functionFragment: "executeWithERC20", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "proxiableUUID", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "renounceOwnership", + functionFragment: "renounceRole", data: BytesLike ): Result; decodeFunctionResult( functionFragment: "revertWithERC20", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setConnector", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "transferOwnership", + functionFragment: "supportsInterface", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult( functionFragment: "upgradeToAndCall", data: BytesLike @@ -310,12 +377,11 @@ export namespace InitializedEvent { export type LogDescription = TypedLogDescription; } -export namespace OwnershipTransferredEvent { - export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; - export type OutputTuple = [previousOwner: string, newOwner: string]; +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; export interface OutputObject { - previousOwner: string; - newOwner: string; + account: string; } export type Event = TypedContractEvent; export type Filter = TypedDeferredTopicFilter; @@ -366,6 +432,76 @@ export namespace RevertedWithERC20Event { export type LogDescription = TypedLogDescription; } +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace UpgradedEvent { export type InputTuple = [implementation: AddressLike]; export type OutputTuple = [implementation: string]; @@ -421,6 +557,14 @@ export interface GatewayEVM extends BaseContract { event?: TCEvent ): Promise; + ASSET_HANDLER_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + TSS_ROLE: TypedContractMethod<[], [string], "view">; + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; call: TypedContractMethod< @@ -483,17 +627,37 @@ export interface GatewayEVM extends BaseContract { "nonpayable" >; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + initialize: TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; - owner: TypedContractMethod<[], [string], "view">; + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; proxiableUUID: TypedContractMethod<[], [string], "view">; - renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; revertWithERC20: TypedContractMethod< [ @@ -506,6 +670,12 @@ export interface GatewayEVM extends BaseContract { "nonpayable" >; + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + setConnector: TypedContractMethod< [_zetaConnector: AddressLike], [void], @@ -518,14 +688,16 @@ export interface GatewayEVM extends BaseContract { "nonpayable" >; - transferOwnership: TypedContractMethod< - [newOwner: AddressLike], - [void], - "nonpayable" + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" >; tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + upgradeToAndCall: TypedContractMethod< [newImplementation: AddressLike, data: BytesLike], [void], @@ -540,6 +712,18 @@ export interface GatewayEVM extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "ASSET_HANDLER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "TSS_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "UPGRADE_INTERFACE_VERSION" ): TypedContractMethod<[], [string], "view">; @@ -608,22 +792,46 @@ export interface GatewayEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; getFunction( - nameOrSignature: "owner" - ): TypedContractMethod<[], [string], "view">; + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "proxiableUUID" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "renounceOwnership" - ): TypedContractMethod<[], [void], "nonpayable">; + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "revertWithERC20" ): TypedContractMethod< @@ -636,6 +844,13 @@ export interface GatewayEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "setConnector" ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; @@ -643,11 +858,14 @@ export interface GatewayEVM extends BaseContract { nameOrSignature: "setCustody" ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; getFunction( - nameOrSignature: "transferOwnership" - ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "upgradeToAndCall" ): TypedContractMethod< @@ -698,11 +916,11 @@ export interface GatewayEVM extends BaseContract { InitializedEvent.OutputObject >; getEvent( - key: "OwnershipTransferred" + key: "Paused" ): TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; getEvent( key: "Reverted" @@ -718,6 +936,34 @@ export interface GatewayEVM extends BaseContract { RevertedWithERC20Event.OutputTuple, RevertedWithERC20Event.OutputObject >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Upgraded" ): TypedContractEvent< @@ -782,15 +1028,15 @@ export interface GatewayEVM extends BaseContract { InitializedEvent.OutputObject >; - "OwnershipTransferred(address,address)": TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; - OwnershipTransferred: TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; "Reverted(address,uint256,bytes)": TypedContractEvent< @@ -815,6 +1061,50 @@ export interface GatewayEVM extends BaseContract { RevertedWithERC20Event.OutputObject >; + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Upgraded(address)": TypedContractEvent< UpgradedEvent.InputTuple, UpgradedEvent.OutputTuple, diff --git a/v2/typechain-types/GatewayEVMEchidnaTest.ts b/v2/typechain-types/GatewayEVMEchidnaTest.ts index a79f5e1b..63ae6ddc 100644 --- a/v2/typechain-types/GatewayEVMEchidnaTest.ts +++ b/v2/typechain-types/GatewayEVMEchidnaTest.ts @@ -26,6 +26,10 @@ import type { export interface GatewayEVMEchidnaTestInterface extends Interface { getFunction( nameOrSignature: + | "ASSET_HANDLER_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "TSS_ROLE" | "UPGRADE_INTERFACE_VERSION" | "call" | "custody" @@ -37,17 +41,23 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { | "execute" | "executeRevert" | "executeWithERC20" + | "getRoleAdmin" + | "grantRole" + | "hasRole" | "initialize" - | "owner" + | "pause" + | "paused" | "proxiableUUID" - | "renounceOwnership" + | "renounceRole" | "revertWithERC20" + | "revokeRole" | "setConnector" | "setCustody" + | "supportsInterface" | "testERC20" | "testExecuteWithERC20" - | "transferOwnership" | "tssAddress" + | "unpause" | "upgradeToAndCall" | "zetaConnector" | "zetaToken" @@ -60,12 +70,29 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { | "Executed" | "ExecutedWithERC20" | "Initialized" - | "OwnershipTransferred" + | "Paused" | "Reverted" | "RevertedWithERC20" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" | "Upgraded" ): EventFragment; + encodeFunctionData( + functionFragment: "ASSET_HANDLER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "TSS_ROLE", values?: undefined): string; encodeFunctionData( functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined @@ -107,23 +134,40 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { functionFragment: "executeWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "initialize", - values: [AddressLike, AddressLike] + values: [AddressLike, AddressLike, AddressLike] ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "proxiableUUID", values?: undefined ): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] ): string; encodeFunctionData( functionFragment: "revertWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "setConnector", values: [AddressLike] @@ -132,19 +176,20 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { functionFragment: "setCustody", values: [AddressLike] ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData(functionFragment: "testERC20", values?: undefined): string; encodeFunctionData( functionFragment: "testExecuteWithERC20", values: [AddressLike, BigNumberish, BytesLike] ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [AddressLike] - ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "upgradeToAndCall", values: [AddressLike, BytesLike] @@ -155,6 +200,19 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "ASSET_HANDLER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "TSS_ROLE", data: BytesLike): Result; decodeFunctionResult( functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike @@ -190,35 +248,44 @@ export interface GatewayEVMEchidnaTestInterface extends Interface { functionFragment: "executeWithERC20", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "proxiableUUID", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "renounceOwnership", + functionFragment: "renounceRole", data: BytesLike ): Result; decodeFunctionResult( functionFragment: "revertWithERC20", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setConnector", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "testExecuteWithERC20", + functionFragment: "supportsInterface", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "testERC20", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "transferOwnership", + functionFragment: "testExecuteWithERC20", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult( functionFragment: "upgradeToAndCall", data: BytesLike @@ -331,12 +398,11 @@ export namespace InitializedEvent { export type LogDescription = TypedLogDescription; } -export namespace OwnershipTransferredEvent { - export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; - export type OutputTuple = [previousOwner: string, newOwner: string]; +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; export interface OutputObject { - previousOwner: string; - newOwner: string; + account: string; } export type Event = TypedContractEvent; export type Filter = TypedDeferredTopicFilter; @@ -387,6 +453,76 @@ export namespace RevertedWithERC20Event { export type LogDescription = TypedLogDescription; } +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace UpgradedEvent { export type InputTuple = [implementation: AddressLike]; export type OutputTuple = [implementation: string]; @@ -442,6 +578,14 @@ export interface GatewayEVMEchidnaTest extends BaseContract { event?: TCEvent ): Promise; + ASSET_HANDLER_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + TSS_ROLE: TypedContractMethod<[], [string], "view">; + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; call: TypedContractMethod< @@ -506,17 +650,37 @@ export interface GatewayEVMEchidnaTest extends BaseContract { "nonpayable" >; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + initialize: TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; - owner: TypedContractMethod<[], [string], "view">; + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; proxiableUUID: TypedContractMethod<[], [string], "view">; - renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; revertWithERC20: TypedContractMethod< [ @@ -529,6 +693,12 @@ export interface GatewayEVMEchidnaTest extends BaseContract { "nonpayable" >; + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + setConnector: TypedContractMethod< [_zetaConnector: AddressLike], [void], @@ -541,6 +711,12 @@ export interface GatewayEVMEchidnaTest extends BaseContract { "nonpayable" >; + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + testERC20: TypedContractMethod<[], [string], "view">; testExecuteWithERC20: TypedContractMethod< @@ -549,14 +725,10 @@ export interface GatewayEVMEchidnaTest extends BaseContract { "nonpayable" >; - transferOwnership: TypedContractMethod< - [newOwner: AddressLike], - [void], - "nonpayable" - >; - tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + upgradeToAndCall: TypedContractMethod< [newImplementation: AddressLike, data: BytesLike], [void], @@ -571,6 +743,18 @@ export interface GatewayEVMEchidnaTest extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "ASSET_HANDLER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "TSS_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "UPGRADE_INTERFACE_VERSION" ): TypedContractMethod<[], [string], "view">; @@ -642,22 +826,46 @@ export interface GatewayEVMEchidnaTest extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; getFunction( - nameOrSignature: "owner" - ): TypedContractMethod<[], [string], "view">; + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "proxiableUUID" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "renounceOwnership" - ): TypedContractMethod<[], [void], "nonpayable">; + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "revertWithERC20" ): TypedContractMethod< @@ -670,12 +878,22 @@ export interface GatewayEVMEchidnaTest extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "setConnector" ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "setCustody" ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "testERC20" ): TypedContractMethod<[], [string], "view">; @@ -686,12 +904,12 @@ export interface GatewayEVMEchidnaTest extends BaseContract { [void], "nonpayable" >; - getFunction( - nameOrSignature: "transferOwnership" - ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "upgradeToAndCall" ): TypedContractMethod< @@ -742,11 +960,11 @@ export interface GatewayEVMEchidnaTest extends BaseContract { InitializedEvent.OutputObject >; getEvent( - key: "OwnershipTransferred" + key: "Paused" ): TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; getEvent( key: "Reverted" @@ -762,6 +980,34 @@ export interface GatewayEVMEchidnaTest extends BaseContract { RevertedWithERC20Event.OutputTuple, RevertedWithERC20Event.OutputObject >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Upgraded" ): TypedContractEvent< @@ -826,15 +1072,15 @@ export interface GatewayEVMEchidnaTest extends BaseContract { InitializedEvent.OutputObject >; - "OwnershipTransferred(address,address)": TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; - OwnershipTransferred: TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; "Reverted(address,uint256,bytes)": TypedContractEvent< @@ -859,6 +1105,50 @@ export interface GatewayEVMEchidnaTest extends BaseContract { RevertedWithERC20Event.OutputObject >; + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Upgraded(address)": TypedContractEvent< UpgradedEvent.InputTuple, UpgradedEvent.OutputTuple, diff --git a/v2/typechain-types/GatewayEVMUpgradeTest.ts b/v2/typechain-types/GatewayEVMUpgradeTest.ts index 2f62b00b..c1bb34cb 100644 --- a/v2/typechain-types/GatewayEVMUpgradeTest.ts +++ b/v2/typechain-types/GatewayEVMUpgradeTest.ts @@ -26,6 +26,10 @@ import type { export interface GatewayEVMUpgradeTestInterface extends Interface { getFunction( nameOrSignature: + | "ASSET_HANDLER_ROLE" + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "TSS_ROLE" | "UPGRADE_INTERFACE_VERSION" | "call" | "custody" @@ -36,15 +40,21 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { | "execute" | "executeRevert" | "executeWithERC20" + | "getRoleAdmin" + | "grantRole" + | "hasRole" | "initialize" - | "owner" + | "pause" + | "paused" | "proxiableUUID" - | "renounceOwnership" + | "renounceRole" | "revertWithERC20" + | "revokeRole" | "setConnector" | "setCustody" - | "transferOwnership" + | "supportsInterface" | "tssAddress" + | "unpause" | "upgradeToAndCall" | "zetaConnector" | "zetaToken" @@ -58,12 +68,29 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { | "ExecutedV2" | "ExecutedWithERC20" | "Initialized" - | "OwnershipTransferred" + | "Paused" | "Reverted" | "RevertedWithERC20" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" | "Upgraded" ): EventFragment; + encodeFunctionData( + functionFragment: "ASSET_HANDLER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "TSS_ROLE", values?: undefined): string; encodeFunctionData( functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined @@ -101,23 +128,40 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { functionFragment: "executeWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "initialize", - values: [AddressLike, AddressLike] + values: [AddressLike, AddressLike, AddressLike] ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "proxiableUUID", values?: undefined ): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] ): string; encodeFunctionData( functionFragment: "revertWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "setConnector", values: [AddressLike] @@ -127,13 +171,14 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { values: [AddressLike] ): string; encodeFunctionData( - functionFragment: "transferOwnership", - values: [AddressLike] + functionFragment: "supportsInterface", + values: [BytesLike] ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "upgradeToAndCall", values: [AddressLike, BytesLike] @@ -144,6 +189,19 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "ASSET_HANDLER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "TSS_ROLE", data: BytesLike): Result; decodeFunctionResult( functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike @@ -175,30 +233,39 @@ export interface GatewayEVMUpgradeTestInterface extends Interface { functionFragment: "executeWithERC20", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "proxiableUUID", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "renounceOwnership", + functionFragment: "renounceRole", data: BytesLike ): Result; decodeFunctionResult( functionFragment: "revertWithERC20", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setConnector", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "setCustody", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "transferOwnership", + functionFragment: "supportsInterface", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult( functionFragment: "upgradeToAndCall", data: BytesLike @@ -329,12 +396,11 @@ export namespace InitializedEvent { export type LogDescription = TypedLogDescription; } -export namespace OwnershipTransferredEvent { - export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; - export type OutputTuple = [previousOwner: string, newOwner: string]; +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; export interface OutputObject { - previousOwner: string; - newOwner: string; + account: string; } export type Event = TypedContractEvent; export type Filter = TypedDeferredTopicFilter; @@ -385,6 +451,76 @@ export namespace RevertedWithERC20Event { export type LogDescription = TypedLogDescription; } +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace UpgradedEvent { export type InputTuple = [implementation: AddressLike]; export type OutputTuple = [implementation: string]; @@ -440,6 +576,14 @@ export interface GatewayEVMUpgradeTest extends BaseContract { event?: TCEvent ): Promise; + ASSET_HANDLER_ROLE: TypedContractMethod<[], [string], "view">; + + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + TSS_ROLE: TypedContractMethod<[], [string], "view">; + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; call: TypedContractMethod< @@ -502,17 +646,37 @@ export interface GatewayEVMUpgradeTest extends BaseContract { "nonpayable" >; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + initialize: TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; - owner: TypedContractMethod<[], [string], "view">; + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; proxiableUUID: TypedContractMethod<[], [string], "view">; - renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; revertWithERC20: TypedContractMethod< [ @@ -525,6 +689,12 @@ export interface GatewayEVMUpgradeTest extends BaseContract { "nonpayable" >; + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + setConnector: TypedContractMethod< [_zetaConnector: AddressLike], [void], @@ -537,14 +707,16 @@ export interface GatewayEVMUpgradeTest extends BaseContract { "nonpayable" >; - transferOwnership: TypedContractMethod< - [newOwner: AddressLike], - [void], - "nonpayable" + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" >; tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + upgradeToAndCall: TypedContractMethod< [newImplementation: AddressLike, data: BytesLike], [void], @@ -559,6 +731,18 @@ export interface GatewayEVMUpgradeTest extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "ASSET_HANDLER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "TSS_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "UPGRADE_INTERFACE_VERSION" ): TypedContractMethod<[], [string], "view">; @@ -627,22 +811,46 @@ export interface GatewayEVMUpgradeTest extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike], + [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; getFunction( - nameOrSignature: "owner" - ): TypedContractMethod<[], [string], "view">; + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "proxiableUUID" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "renounceOwnership" - ): TypedContractMethod<[], [void], "nonpayable">; + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "revertWithERC20" ): TypedContractMethod< @@ -655,6 +863,13 @@ export interface GatewayEVMUpgradeTest extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "setConnector" ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; @@ -662,11 +877,14 @@ export interface GatewayEVMUpgradeTest extends BaseContract { nameOrSignature: "setCustody" ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; getFunction( - nameOrSignature: "transferOwnership" - ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "upgradeToAndCall" ): TypedContractMethod< @@ -724,11 +942,11 @@ export interface GatewayEVMUpgradeTest extends BaseContract { InitializedEvent.OutputObject >; getEvent( - key: "OwnershipTransferred" + key: "Paused" ): TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; getEvent( key: "Reverted" @@ -744,6 +962,34 @@ export interface GatewayEVMUpgradeTest extends BaseContract { RevertedWithERC20Event.OutputTuple, RevertedWithERC20Event.OutputObject >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Upgraded" ): TypedContractEvent< @@ -819,15 +1065,15 @@ export interface GatewayEVMUpgradeTest extends BaseContract { InitializedEvent.OutputObject >; - "OwnershipTransferred(address,address)": TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; - OwnershipTransferred: TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject >; "Reverted(address,uint256,bytes)": TypedContractEvent< @@ -852,6 +1098,50 @@ export interface GatewayEVMUpgradeTest extends BaseContract { RevertedWithERC20Event.OutputObject >; + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Upgraded(address)": TypedContractEvent< UpgradedEvent.InputTuple, UpgradedEvent.OutputTuple, diff --git a/v2/typechain-types/GatewayZEVM.ts b/v2/typechain-types/GatewayZEVM.ts index 80069cc1..8a35b172 100644 --- a/v2/typechain-types/GatewayZEVM.ts +++ b/v2/typechain-types/GatewayZEVM.ts @@ -50,7 +50,9 @@ export type RevertContextStructOutput = [ export interface GatewayZEVMInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" | "FUNGIBLE_MODULE_ADDRESS" + | "PAUSER_ROLE" | "UPGRADE_INTERFACE_VERSION" | "call" | "deposit" @@ -59,16 +61,22 @@ export interface GatewayZEVMInterface extends Interface { | "depositAndRevert" | "execute" | "executeRevert" + | "getRoleAdmin" + | "grantRole" + | "hasRole" | "initialize" - | "owner" + | "pause" + | "paused" | "proxiableUUID" - | "renounceOwnership" - | "transferOwnership" + | "renounceRole" + | "revokeRole" + | "supportsInterface" + | "unpause" | "upgradeToAndCall" | "withdraw(bytes,uint256,address)" - | "withdraw(uint256)" - | "withdrawAndCall(uint256,bytes)" + | "withdraw(uint256,uint256)" | "withdrawAndCall(bytes,uint256,address,bytes)" + | "withdrawAndCall(uint256,uint256,bytes)" | "zetaToken" ): FunctionFragment; @@ -76,22 +84,34 @@ export interface GatewayZEVMInterface extends Interface { nameOrSignatureOrTopic: | "Call" | "Initialized" - | "OwnershipTransferred" + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" | "Upgraded" | "Withdrawal" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "FUNGIBLE_MODULE_ADDRESS", values?: undefined ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "UPGRADE_INTERFACE_VERSION", values?: undefined ): string; encodeFunctionData( functionFragment: "call", - values: [BytesLike, BytesLike] + values: [BytesLike, BigNumberish, BytesLike] ): string; encodeFunctionData( functionFragment: "deposit", @@ -129,23 +149,41 @@ export interface GatewayZEVMInterface extends Interface { BytesLike ] ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "initialize", - values: [AddressLike] + values: [AddressLike, AddressLike] ): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "proxiableUUID", values?: undefined ): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] ): string; encodeFunctionData( - functionFragment: "transferOwnership", - values: [AddressLike] + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "upgradeToAndCall", values: [AddressLike, BytesLike] @@ -155,23 +193,31 @@ export interface GatewayZEVMInterface extends Interface { values: [BytesLike, BigNumberish, AddressLike] ): string; encodeFunctionData( - functionFragment: "withdraw(uint256)", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "withdrawAndCall(uint256,bytes)", - values: [BigNumberish, BytesLike] + functionFragment: "withdraw(uint256,uint256)", + values: [BigNumberish, BigNumberish] ): string; encodeFunctionData( functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", values: [BytesLike, BigNumberish, AddressLike, BytesLike] ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall(uint256,uint256,bytes)", + values: [BigNumberish, BigNumberish, BytesLike] + ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "FUNGIBLE_MODULE_ADDRESS", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "UPGRADE_INTERFACE_VERSION", data: BytesLike @@ -195,20 +241,29 @@ export interface GatewayZEVMInterface extends Interface { functionFragment: "executeRevert", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "proxiableUUID", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "renounceOwnership", + functionFragment: "renounceRole", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "transferOwnership", + functionFragment: "supportsInterface", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult( functionFragment: "upgradeToAndCall", data: BytesLike @@ -218,15 +273,15 @@ export interface GatewayZEVMInterface extends Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "withdraw(uint256)", + functionFragment: "withdraw(uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "withdrawAndCall(uint256,bytes)", + functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", + functionFragment: "withdrawAndCall(uint256,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; @@ -235,12 +290,19 @@ export interface GatewayZEVMInterface extends Interface { export namespace CallEvent { export type InputTuple = [ sender: AddressLike, + chainId: BigNumberish, receiver: BytesLike, message: BytesLike ]; - export type OutputTuple = [sender: string, receiver: string, message: string]; + export type OutputTuple = [ + sender: string, + chainId: bigint, + receiver: string, + message: string + ]; export interface OutputObject { sender: string; + chainId: bigint; receiver: string; message: string; } @@ -262,12 +324,81 @@ export namespace InitializedEvent { export type LogDescription = TypedLogDescription; } -export namespace OwnershipTransferredEvent { - export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike]; - export type OutputTuple = [previousOwner: string, newOwner: string]; +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; export interface OutputObject { - previousOwner: string; - newOwner: string; + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; } export type Event = TypedContractEvent; export type Filter = TypedDeferredTopicFilter; @@ -289,27 +420,30 @@ export namespace UpgradedEvent { export namespace WithdrawalEvent { export type InputTuple = [ - from: AddressLike, + sender: AddressLike, + chainId: BigNumberish, + receiver: BytesLike, zrc20: AddressLike, - to: BytesLike, value: BigNumberish, gasfee: BigNumberish, protocolFlatFee: BigNumberish, message: BytesLike ]; export type OutputTuple = [ - from: string, + sender: string, + chainId: bigint, + receiver: string, zrc20: string, - to: string, value: bigint, gasfee: bigint, protocolFlatFee: bigint, message: string ]; export interface OutputObject { - from: string; + sender: string; + chainId: bigint; + receiver: string; zrc20: string; - to: string; value: bigint; gasfee: bigint; protocolFlatFee: bigint; @@ -364,12 +498,16 @@ export interface GatewayZEVM extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + UPGRADE_INTERFACE_VERSION: TypedContractMethod<[], [string], "view">; call: TypedContractMethod< - [receiver: BytesLike, message: BytesLike], + [receiver: BytesLike, chainId: BigNumberish, message: BytesLike], [void], "nonpayable" >; @@ -439,24 +577,52 @@ export interface GatewayZEVM extends BaseContract { "nonpayable" >; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + initialize: TypedContractMethod< - [_zetaToken: AddressLike], + [_zetaToken: AddressLike, _admin: AddressLike], [void], "nonpayable" >; - owner: TypedContractMethod<[], [string], "view">; + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; proxiableUUID: TypedContractMethod<[], [string], "view">; - renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; - transferOwnership: TypedContractMethod< - [newOwner: AddressLike], + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], [void], "nonpayable" >; + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + unpause: TypedContractMethod<[], [void], "nonpayable">; + upgradeToAndCall: TypedContractMethod< [newImplementation: AddressLike, data: BytesLike], [void], @@ -469,14 +635,8 @@ export interface GatewayZEVM extends BaseContract { "nonpayable" >; - "withdraw(uint256)": TypedContractMethod< - [amount: BigNumberish], - [void], - "nonpayable" - >; - - "withdrawAndCall(uint256,bytes)": TypedContractMethod< - [amount: BigNumberish, message: BytesLike], + "withdraw(uint256,uint256)": TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish], [void], "nonpayable" >; @@ -492,22 +652,34 @@ export interface GatewayZEVM extends BaseContract { "nonpayable" >; + "withdrawAndCall(uint256,uint256,bytes)": TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; + zetaToken: TypedContractMethod<[], [string], "view">; getFunction( key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "UPGRADE_INTERFACE_VERSION" ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "call" ): TypedContractMethod< - [receiver: BytesLike, message: BytesLike], + [receiver: BytesLike, chainId: BigNumberish, message: BytesLike], [void], "nonpayable" >; @@ -582,21 +754,59 @@ export interface GatewayZEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; getFunction( nameOrSignature: "initialize" - ): TypedContractMethod<[_zetaToken: AddressLike], [void], "nonpayable">; + ): TypedContractMethod< + [_zetaToken: AddressLike, _admin: AddressLike], + [void], + "nonpayable" + >; getFunction( - nameOrSignature: "owner" - ): TypedContractMethod<[], [string], "view">; + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "proxiableUUID" ): TypedContractMethod<[], [string], "view">; getFunction( - nameOrSignature: "renounceOwnership" - ): TypedContractMethod<[], [void], "nonpayable">; + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; getFunction( - nameOrSignature: "transferOwnership" - ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "upgradeToAndCall" ): TypedContractMethod< @@ -612,12 +822,9 @@ export interface GatewayZEVM extends BaseContract { "nonpayable" >; getFunction( - nameOrSignature: "withdraw(uint256)" - ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; - getFunction( - nameOrSignature: "withdrawAndCall(uint256,bytes)" + nameOrSignature: "withdraw(uint256,uint256)" ): TypedContractMethod< - [amount: BigNumberish, message: BytesLike], + [amount: BigNumberish, chainId: BigNumberish], [void], "nonpayable" >; @@ -633,6 +840,13 @@ export interface GatewayZEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "withdrawAndCall(uint256,uint256,bytes)" + ): TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "zetaToken" ): TypedContractMethod<[], [string], "view">; @@ -652,11 +866,39 @@ export interface GatewayZEVM extends BaseContract { InitializedEvent.OutputObject >; getEvent( - key: "OwnershipTransferred" + key: "Paused" ): TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject >; getEvent( key: "Upgraded" @@ -674,7 +916,7 @@ export interface GatewayZEVM extends BaseContract { >; filters: { - "Call(address,bytes,bytes)": TypedContractEvent< + "Call(address,uint256,bytes,bytes)": TypedContractEvent< CallEvent.InputTuple, CallEvent.OutputTuple, CallEvent.OutputObject @@ -696,15 +938,59 @@ export interface GatewayZEVM extends BaseContract { InitializedEvent.OutputObject >; - "OwnershipTransferred(address,address)": TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject >; - OwnershipTransferred: TypedContractEvent< - OwnershipTransferredEvent.InputTuple, - OwnershipTransferredEvent.OutputTuple, - OwnershipTransferredEvent.OutputObject + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject >; "Upgraded(address)": TypedContractEvent< @@ -718,7 +1004,7 @@ export interface GatewayZEVM extends BaseContract { UpgradedEvent.OutputObject >; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": TypedContractEvent< + "Withdrawal(address,uint256,bytes,address,uint256,uint256,uint256,bytes)": TypedContractEvent< WithdrawalEvent.InputTuple, WithdrawalEvent.OutputTuple, WithdrawalEvent.OutputObject diff --git a/v2/typechain-types/IAccessControl.ts b/v2/typechain-types/IAccessControl.ts new file mode 100644 index 00000000..bb6fd58d --- /dev/null +++ b/v2/typechain-types/IAccessControl.ts @@ -0,0 +1,292 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface IAccessControlInterface extends Interface { + getFunction( + nameOrSignature: + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" + ): EventFragment; + + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface IAccessControl extends BaseContract { + connect(runner?: ContractRunner | null): IAccessControl; + waitForDeployment(): Promise; + + interface: IAccessControlInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts index da6ceb42..1c7f0d9a 100644 --- a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts @@ -40,13 +40,15 @@ export interface IGatewayZEVMInterface extends Interface { | "deposit" | "depositAndCall" | "execute" - | "withdraw" - | "withdrawAndCall" + | "withdraw(bytes,uint256,address)" + | "withdraw(uint256,uint256)" + | "withdrawAndCall(bytes,uint256,address,bytes)" + | "withdrawAndCall(uint256,uint256,bytes)" ): FunctionFragment; encodeFunctionData( functionFragment: "call", - values: [BytesLike, BytesLike] + values: [BytesLike, BigNumberish, BytesLike] ): string; encodeFunctionData( functionFragment: "deposit", @@ -61,13 +63,21 @@ export interface IGatewayZEVMInterface extends Interface { values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] ): string; encodeFunctionData( - functionFragment: "withdraw", + functionFragment: "withdraw(bytes,uint256,address)", values: [BytesLike, BigNumberish, AddressLike] ): string; encodeFunctionData( - functionFragment: "withdrawAndCall", + functionFragment: "withdraw(uint256,uint256)", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", values: [BytesLike, BigNumberish, AddressLike, BytesLike] ): string; + encodeFunctionData( + functionFragment: "withdrawAndCall(uint256,uint256,bytes)", + values: [BigNumberish, BigNumberish, BytesLike] + ): string; decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; @@ -76,9 +86,20 @@ export interface IGatewayZEVMInterface extends Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "withdrawAndCall", + functionFragment: "withdraw(bytes,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdraw(uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall(bytes,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawAndCall(uint256,uint256,bytes)", data: BytesLike ): Result; } @@ -127,7 +148,7 @@ export interface IGatewayZEVM extends BaseContract { ): Promise; call: TypedContractMethod< - [receiver: BytesLike, message: BytesLike], + [receiver: BytesLike, chainId: BigNumberish, message: BytesLike], [void], "nonpayable" >; @@ -162,13 +183,19 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; - withdraw: TypedContractMethod< + "withdraw(bytes,uint256,address)": TypedContractMethod< [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], [void], "nonpayable" >; - withdrawAndCall: TypedContractMethod< + "withdraw(uint256,uint256)": TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish], + [void], + "nonpayable" + >; + + "withdrawAndCall(bytes,uint256,address,bytes)": TypedContractMethod< [ receiver: BytesLike, amount: BigNumberish, @@ -179,6 +206,12 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; + "withdrawAndCall(uint256,uint256,bytes)": TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; + getFunction( key: string | FunctionFragment ): T; @@ -186,7 +219,7 @@ export interface IGatewayZEVM extends BaseContract { getFunction( nameOrSignature: "call" ): TypedContractMethod< - [receiver: BytesLike, message: BytesLike], + [receiver: BytesLike, chainId: BigNumberish, message: BytesLike], [void], "nonpayable" >; @@ -224,14 +257,21 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; getFunction( - nameOrSignature: "withdraw" + nameOrSignature: "withdraw(bytes,uint256,address)" ): TypedContractMethod< [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], [void], "nonpayable" >; getFunction( - nameOrSignature: "withdrawAndCall" + nameOrSignature: "withdraw(uint256,uint256)" + ): TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "withdrawAndCall(bytes,uint256,address,bytes)" ): TypedContractMethod< [ receiver: BytesLike, @@ -242,6 +282,13 @@ export interface IGatewayZEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "withdrawAndCall(uint256,uint256,bytes)" + ): TypedContractMethod< + [amount: BigNumberish, chainId: BigNumberish, message: BytesLike], + [void], + "nonpayable" + >; filters: {}; } diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts index 6379cc14..00517fd5 100644 --- a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVMEvents.ts @@ -28,12 +28,19 @@ export interface IGatewayZEVMEventsInterface extends Interface { export namespace CallEvent { export type InputTuple = [ sender: AddressLike, + chainId: BigNumberish, receiver: BytesLike, message: BytesLike ]; - export type OutputTuple = [sender: string, receiver: string, message: string]; + export type OutputTuple = [ + sender: string, + chainId: bigint, + receiver: string, + message: string + ]; export interface OutputObject { sender: string; + chainId: bigint; receiver: string; message: string; } @@ -45,27 +52,30 @@ export namespace CallEvent { export namespace WithdrawalEvent { export type InputTuple = [ - from: AddressLike, + sender: AddressLike, + chainId: BigNumberish, + receiver: BytesLike, zrc20: AddressLike, - to: BytesLike, value: BigNumberish, gasfee: BigNumberish, protocolFlatFee: BigNumberish, message: BytesLike ]; export type OutputTuple = [ - from: string, + sender: string, + chainId: bigint, + receiver: string, zrc20: string, - to: string, value: bigint, gasfee: bigint, protocolFlatFee: bigint, message: string ]; export interface OutputObject { - from: string; + sender: string; + chainId: bigint; + receiver: string; zrc20: string; - to: string; value: bigint; gasfee: bigint; protocolFlatFee: bigint; @@ -140,7 +150,7 @@ export interface IGatewayZEVMEvents extends BaseContract { >; filters: { - "Call(address,bytes,bytes)": TypedContractEvent< + "Call(address,uint256,bytes,bytes)": TypedContractEvent< CallEvent.InputTuple, CallEvent.OutputTuple, CallEvent.OutputObject @@ -151,7 +161,7 @@ export interface IGatewayZEVMEvents extends BaseContract { CallEvent.OutputObject >; - "Withdrawal(address,address,bytes,uint256,uint256,uint256,bytes)": TypedContractEvent< + "Withdrawal(address,uint256,bytes,address,uint256,uint256,uint256,bytes)": TypedContractEvent< WithdrawalEvent.InputTuple, WithdrawalEvent.OutputTuple, WithdrawalEvent.OutputObject diff --git a/v2/typechain-types/Pausable.ts b/v2/typechain-types/Pausable.ts new file mode 100644 index 00000000..1db68441 --- /dev/null +++ b/v2/typechain-types/Pausable.ts @@ -0,0 +1,150 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface PausableInterface extends Interface { + getFunction(nameOrSignature: "paused"): FunctionFragment; + + getEvent(nameOrSignatureOrTopic: "Paused" | "Unpaused"): EventFragment; + + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; +} + +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface Pausable extends BaseContract { + connect(runner?: ContractRunner | null): Pausable; + waitForDeployment(): Promise; + + interface: PausableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + paused: TypedContractMethod<[], [boolean], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; + + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + + filters: { + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/PausableUpgradeable.ts b/v2/typechain-types/PausableUpgradeable.ts new file mode 100644 index 00000000..75a71602 --- /dev/null +++ b/v2/typechain-types/PausableUpgradeable.ts @@ -0,0 +1,183 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export interface PausableUpgradeableInterface extends Interface { + getFunction(nameOrSignature: "paused"): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: "Initialized" | "Paused" | "Unpaused" + ): EventFragment; + + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; +} + +export namespace InitializedEvent { + export type InputTuple = [version: BigNumberish]; + export type OutputTuple = [version: bigint]; + export interface OutputObject { + version: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface PausableUpgradeable extends BaseContract { + connect(runner?: ContractRunner | null): PausableUpgradeable; + waitForDeployment(): Promise; + + interface: PausableUpgradeableInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + paused: TypedContractMethod<[], [boolean], "view">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; + + getEvent( + key: "Initialized" + ): TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + + filters: { + "Initialized(uint64)": TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + Initialized: TypedContractEvent< + InitializedEvent.InputTuple, + InitializedEvent.OutputTuple, + InitializedEvent.OutputObject + >; + + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + }; +} diff --git a/v2/typechain-types/SenderZEVM.ts b/v2/typechain-types/SenderZEVM.ts index 02bc0828..90ae1c4d 100644 --- a/v2/typechain-types/SenderZEVM.ts +++ b/v2/typechain-types/SenderZEVM.ts @@ -28,7 +28,7 @@ export interface SenderZEVMInterface extends Interface { encodeFunctionData( functionFragment: "callReceiver", - values: [BytesLike, string, BigNumberish, boolean] + values: [BytesLike, BigNumberish, string, BigNumberish, boolean] ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; encodeFunctionData( @@ -98,7 +98,13 @@ export interface SenderZEVM extends BaseContract { ): Promise; callReceiver: TypedContractMethod< - [receiver: BytesLike, str: string, num: BigNumberish, flag: boolean], + [ + receiver: BytesLike, + chainId: BigNumberish, + str: string, + num: BigNumberish, + flag: boolean + ], [void], "nonpayable" >; @@ -125,7 +131,13 @@ export interface SenderZEVM extends BaseContract { getFunction( nameOrSignature: "callReceiver" ): TypedContractMethod< - [receiver: BytesLike, str: string, num: BigNumberish, flag: boolean], + [ + receiver: BytesLike, + chainId: BigNumberish, + str: string, + num: BigNumberish, + flag: boolean + ], [void], "nonpayable" >; diff --git a/v2/typechain-types/ZetaConnectorBase.ts b/v2/typechain-types/ZetaConnectorBase.ts index 0baaf870..f8abb37a 100644 --- a/v2/typechain-types/ZetaConnectorBase.ts +++ b/v2/typechain-types/ZetaConnectorBase.ts @@ -26,9 +26,21 @@ import type { export interface ZetaConnectorBaseInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "WITHDRAWER_ROLE" | "gateway" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "pause" + | "paused" | "receiveTokens" + | "renounceRole" + | "revokeRole" + | "supportsInterface" | "tssAddress" + | "unpause" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -36,18 +48,65 @@ export interface ZetaConnectorBaseInterface extends Interface { ): FunctionFragment; getEvent( - nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + nameOrSignatureOrTopic: + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" + | "Withdraw" + | "WithdrawAndCall" + | "WithdrawAndRevert" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "WITHDRAWER_ROLE", + values?: undefined + ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "receiveTokens", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", values: [AddressLike, BigNumberish, BytesLike] @@ -62,12 +121,42 @@ export interface ZetaConnectorBaseInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "WITHDRAWER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -80,6 +169,88 @@ export interface ZetaConnectorBaseInterface extends Interface { decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; } +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace WithdrawEvent { export type InputTuple = [to: AddressLike, amount: BigNumberish]; export type OutputTuple = [to: string, amount: bigint]; @@ -172,16 +343,60 @@ export interface ZetaConnectorBase extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + WITHDRAWER_ROLE: TypedContractMethod<[], [string], "view">; + gateway: TypedContractMethod<[], [string], "view">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; + receiveTokens: TypedContractMethod< [amount: BigNumberish], [void], "nonpayable" >; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + withdraw: TypedContractMethod< [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], [void], @@ -216,15 +431,67 @@ export interface ZetaConnectorBase extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "WITHDRAWER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "gateway" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "receiveTokens" ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< @@ -260,6 +527,41 @@ export interface ZetaConnectorBase extends BaseContract { nameOrSignature: "zetaToken" ): TypedContractMethod<[], [string], "view">; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Withdraw" ): TypedContractEvent< @@ -283,6 +585,61 @@ export interface ZetaConnectorBase extends BaseContract { >; filters: { + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Withdraw(address,uint256)": TypedContractEvent< WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, diff --git a/v2/typechain-types/ZetaConnectorNative.ts b/v2/typechain-types/ZetaConnectorNative.ts index 157f1f57..2e795f63 100644 --- a/v2/typechain-types/ZetaConnectorNative.ts +++ b/v2/typechain-types/ZetaConnectorNative.ts @@ -26,9 +26,21 @@ import type { export interface ZetaConnectorNativeInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "WITHDRAWER_ROLE" | "gateway" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "pause" + | "paused" | "receiveTokens" + | "renounceRole" + | "revokeRole" + | "supportsInterface" | "tssAddress" + | "unpause" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -36,18 +48,65 @@ export interface ZetaConnectorNativeInterface extends Interface { ): FunctionFragment; getEvent( - nameOrSignatureOrTopic: "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" + nameOrSignatureOrTopic: + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" + | "Withdraw" + | "WithdrawAndCall" + | "WithdrawAndRevert" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "WITHDRAWER_ROLE", + values?: undefined + ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "receiveTokens", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", values: [AddressLike, BigNumberish, BytesLike] @@ -62,12 +121,42 @@ export interface ZetaConnectorNativeInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "WITHDRAWER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -80,6 +169,88 @@ export interface ZetaConnectorNativeInterface extends Interface { decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; } +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace WithdrawEvent { export type InputTuple = [to: AddressLike, amount: BigNumberish]; export type OutputTuple = [to: string, amount: bigint]; @@ -172,16 +343,60 @@ export interface ZetaConnectorNative extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + WITHDRAWER_ROLE: TypedContractMethod<[], [string], "view">; + gateway: TypedContractMethod<[], [string], "view">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; + receiveTokens: TypedContractMethod< [amount: BigNumberish], [void], "nonpayable" >; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + withdraw: TypedContractMethod< [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], [void], @@ -216,15 +431,67 @@ export interface ZetaConnectorNative extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "WITHDRAWER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "gateway" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "receiveTokens" ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< @@ -260,6 +527,41 @@ export interface ZetaConnectorNative extends BaseContract { nameOrSignature: "zetaToken" ): TypedContractMethod<[], [string], "view">; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Withdraw" ): TypedContractEvent< @@ -283,6 +585,61 @@ export interface ZetaConnectorNative extends BaseContract { >; filters: { + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Withdraw(address,uint256)": TypedContractEvent< WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, diff --git a/v2/typechain-types/ZetaConnectorNonNative.ts b/v2/typechain-types/ZetaConnectorNonNative.ts index 6182ceb9..e38595f5 100644 --- a/v2/typechain-types/ZetaConnectorNonNative.ts +++ b/v2/typechain-types/ZetaConnectorNonNative.ts @@ -26,11 +26,23 @@ import type { export interface ZetaConnectorNonNativeInterface extends Interface { getFunction( nameOrSignature: + | "DEFAULT_ADMIN_ROLE" + | "PAUSER_ROLE" + | "WITHDRAWER_ROLE" | "gateway" + | "getRoleAdmin" + | "grantRole" + | "hasRole" | "maxSupply" + | "pause" + | "paused" | "receiveTokens" + | "renounceRole" + | "revokeRole" | "setMaxSupply" + | "supportsInterface" | "tssAddress" + | "unpause" | "withdraw" | "withdrawAndCall" | "withdrawAndRevert" @@ -40,25 +52,69 @@ export interface ZetaConnectorNonNativeInterface extends Interface { getEvent( nameOrSignatureOrTopic: | "MaxSupplyUpdated" + | "Paused" + | "RoleAdminChanged" + | "RoleGranted" + | "RoleRevoked" + | "Unpaused" | "Withdraw" | "WithdrawAndCall" | "WithdrawAndRevert" ): EventFragment; + encodeFunctionData( + functionFragment: "DEFAULT_ADMIN_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "PAUSER_ROLE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "WITHDRAWER_ROLE", + values?: undefined + ): string; encodeFunctionData(functionFragment: "gateway", values?: undefined): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData(functionFragment: "maxSupply", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; encodeFunctionData( functionFragment: "receiveTokens", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [BytesLike, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [BytesLike, AddressLike] + ): string; encodeFunctionData( functionFragment: "setMaxSupply", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData( functionFragment: "tssAddress", values?: undefined ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", values: [AddressLike, BigNumberish, BytesLike] @@ -73,17 +129,47 @@ export interface ZetaConnectorNonNativeInterface extends Interface { ): string; encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + decodeFunctionResult( + functionFragment: "DEFAULT_ADMIN_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "PAUSER_ROLE", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "WITHDRAWER_ROLE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "gateway", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "maxSupply", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; decodeFunctionResult( functionFragment: "receiveTokens", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult( functionFragment: "setMaxSupply", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "withdrawAndCall", @@ -108,6 +194,88 @@ export namespace MaxSupplyUpdatedEvent { export type LogDescription = TypedLogDescription; } +export namespace PausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleAdminChangedEvent { + export type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + export type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + export interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleGrantedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace RoleRevokedEvent { + export type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + export type OutputTuple = [role: string, account: string, sender: string]; + export interface OutputObject { + role: string; + account: string; + sender: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace UnpausedEvent { + export type InputTuple = [account: AddressLike]; + export type OutputTuple = [account: string]; + export interface OutputObject { + account: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace WithdrawEvent { export type InputTuple = [to: AddressLike, amount: BigNumberish]; export type OutputTuple = [to: string, amount: bigint]; @@ -200,24 +368,68 @@ export interface ZetaConnectorNonNative extends BaseContract { event?: TCEvent ): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + + PAUSER_ROLE: TypedContractMethod<[], [string], "view">; + + WITHDRAWER_ROLE: TypedContractMethod<[], [string], "view">; + gateway: TypedContractMethod<[], [string], "view">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + + grantRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + + hasRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; + maxSupply: TypedContractMethod<[], [bigint], "view">; + pause: TypedContractMethod<[], [void], "nonpayable">; + + paused: TypedContractMethod<[], [boolean], "view">; + receiveTokens: TypedContractMethod< [amount: BigNumberish], [void], "nonpayable" >; + renounceRole: TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + + revokeRole: TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + setMaxSupply: TypedContractMethod< [_maxSupply: BigNumberish], [void], "nonpayable" >; + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + tssAddress: TypedContractMethod<[], [string], "view">; + unpause: TypedContractMethod<[], [void], "nonpayable">; + withdraw: TypedContractMethod< [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], [void], @@ -252,21 +464,73 @@ export interface ZetaConnectorNonNative extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "DEFAULT_ADMIN_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "PAUSER_ROLE" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "WITHDRAWER_ROLE" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "gateway" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "getRoleAdmin" + ): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction( + nameOrSignature: "grantRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "hasRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [boolean], + "view" + >; getFunction( nameOrSignature: "maxSupply" ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "pause" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "paused" + ): TypedContractMethod<[], [boolean], "view">; getFunction( nameOrSignature: "receiveTokens" ): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "renounceRole" + ): TypedContractMethod< + [role: BytesLike, callerConfirmation: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "revokeRole" + ): TypedContractMethod< + [role: BytesLike, account: AddressLike], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "setMaxSupply" ): TypedContractMethod<[_maxSupply: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; getFunction( nameOrSignature: "tssAddress" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "unpause" + ): TypedContractMethod<[], [void], "nonpayable">; getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< @@ -309,6 +573,41 @@ export interface ZetaConnectorNonNative extends BaseContract { MaxSupplyUpdatedEvent.OutputTuple, MaxSupplyUpdatedEvent.OutputObject >; + getEvent( + key: "Paused" + ): TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + getEvent( + key: "RoleAdminChanged" + ): TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + getEvent( + key: "RoleGranted" + ): TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + getEvent( + key: "RoleRevoked" + ): TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + getEvent( + key: "Unpaused" + ): TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; getEvent( key: "Withdraw" ): TypedContractEvent< @@ -343,6 +642,61 @@ export interface ZetaConnectorNonNative extends BaseContract { MaxSupplyUpdatedEvent.OutputObject >; + "Paused(address)": TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + Paused: TypedContractEvent< + PausedEvent.InputTuple, + PausedEvent.OutputTuple, + PausedEvent.OutputObject + >; + + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + RoleAdminChanged: TypedContractEvent< + RoleAdminChangedEvent.InputTuple, + RoleAdminChangedEvent.OutputTuple, + RoleAdminChangedEvent.OutputObject + >; + + "RoleGranted(bytes32,address,address)": TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + RoleGranted: TypedContractEvent< + RoleGrantedEvent.InputTuple, + RoleGrantedEvent.OutputTuple, + RoleGrantedEvent.OutputObject + >; + + "RoleRevoked(bytes32,address,address)": TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + RoleRevoked: TypedContractEvent< + RoleRevokedEvent.InputTuple, + RoleRevokedEvent.OutputTuple, + RoleRevokedEvent.OutputObject + >; + + "Unpaused(address)": TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + Unpaused: TypedContractEvent< + UnpausedEvent.InputTuple, + UnpausedEvent.OutputTuple, + UnpausedEvent.OutputObject + >; + "Withdraw(address,uint256)": TypedContractEvent< WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, diff --git a/v2/typechain-types/factories/AccessControlUpgradeable__factory.ts b/v2/typechain-types/factories/AccessControlUpgradeable__factory.ts new file mode 100644 index 00000000..bd2120b9 --- /dev/null +++ b/v2/typechain-types/factories/AccessControlUpgradeable__factory.ts @@ -0,0 +1,277 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + AccessControlUpgradeable, + AccessControlUpgradeableInterface, +} from "../AccessControlUpgradeable"; + +const _abi = [ + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, +] as const; + +export class AccessControlUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): AccessControlUpgradeableInterface { + return new Interface(_abi) as AccessControlUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): AccessControlUpgradeable { + return new Contract( + address, + _abi, + runner + ) as unknown as AccessControlUpgradeable; + } +} diff --git a/v2/typechain-types/factories/AccessControl__factory.ts b/v2/typechain-types/factories/AccessControl__factory.ts new file mode 100644 index 00000000..d30a4ac1 --- /dev/null +++ b/v2/typechain-types/factories/AccessControl__factory.ts @@ -0,0 +1,247 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { AccessControl, AccessControlInterface } from "../AccessControl"; + +const _abi = [ + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +export class AccessControl__factory { + static readonly abi = _abi; + static createInterface(): AccessControlInterface { + return new Interface(_abi) as AccessControlInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): AccessControl { + return new Contract(address, _abi, runner) as unknown as AccessControl; + } +} diff --git a/v2/typechain-types/factories/ERC165Upgradeable__factory.ts b/v2/typechain-types/factories/ERC165Upgradeable__factory.ts new file mode 100644 index 00000000..2bb47590 --- /dev/null +++ b/v2/typechain-types/factories/ERC165Upgradeable__factory.ts @@ -0,0 +1,67 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + ERC165Upgradeable, + ERC165UpgradeableInterface, +} from "../ERC165Upgradeable"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, +] as const; + +export class ERC165Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): ERC165UpgradeableInterface { + return new Interface(_abi) as ERC165UpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): ERC165Upgradeable { + return new Contract(address, _abi, runner) as unknown as ERC165Upgradeable; + } +} diff --git a/v2/typechain-types/factories/ERC165__factory.ts b/v2/typechain-types/factories/ERC165__factory.ts new file mode 100644 index 00000000..ca655955 --- /dev/null +++ b/v2/typechain-types/factories/ERC165__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { ERC165, ERC165Interface } from "../ERC165"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class ERC165__factory { + static readonly abi = _abi; + static createInterface(): ERC165Interface { + return new Interface(_abi) as ERC165Interface; + } + static connect(address: string, runner?: ContractRunner | null): ERC165 { + return new Contract(address, _abi, runner) as unknown as ERC165; + } +} diff --git a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts index 4d108fe0..48bd1e82 100644 --- a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts @@ -20,6 +20,45 @@ const _abi = [ inputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "WITHDRAWER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "echidnaCaller", @@ -46,6 +85,142 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "testERC20", @@ -95,6 +270,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", @@ -174,6 +356,107 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Withdraw", @@ -261,6 +544,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -285,12 +589,17 @@ const _abi = [ }, { type: "error", - name: "FailedInnerCall", + name: "EnforcedPause", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "ExpectedPause", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", inputs: [], }, { @@ -317,7 +626,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220d7214dc766e4e33e30af0ee72b7ff719d6cf4397d65eb7d070aaed8a4867b91664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + "0x600580546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010481905261012452606460c090815261014460405260e080516001600160e01b0390811663c0c53b8b60e01b1790915261007792919061027f16565b600680546001600160a01b03929092166001600160a01b03199283168117909155600780549092161790553480156100ae57600080fd5b5060075460055460016000556002805460ff191690556001600160a01b039182169116808215806100e657506001600160a01b038216155b156101045760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b03191691841691909117905561014e60008261029e565b506101797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261029e565b506101a47f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361029e565b505050506040516101b49061382a565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015610206573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617815560075460405163ae7a3a6f60e01b815230928101929092529091169063ae7a3a6f90602401600060405180830381600087803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b505050506148ab565b6000610289613837565b610294848483610331565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166103295760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610298565b506000610298565b60008061033e85846103ad565b90506103a26040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161038c929190613940565b60408051601f19818403018152919052856103b9565b9150505b9392505050565b60006103a683836103ed565b60c081015151600090156103e3576103dc84848460c0015161040e60201b60201c565b90506103a6565b6103dc8484610587565b60006103f98383610654565b6103a6838360200151846103b960201b60201c565b600080610419610664565b9050600061042786836106fe565b905060006104448260600151836020015185610b2160201b60201c565b9050600061045483838989610cd6565b9050600061046182611952565b602081015181519192509060030b156104ba5789826040015160405160200161048b929190613964565b60408051601f198184030181529082905262461bcd60e51b82526104b1916004016139ca565b60405180910390fd5b60006105036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611ae960201b60201c565b60405163c6ce059d60e01b8152909150600080516020616ad08339815191529063c6ce059d906105379084906004016139ca565b602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057891906139dd565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616ad083398151915290638d1cc925906105bd9087906004016139ca565b600060405180830381865afa1580156105da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106029190810190613ad2565b90506000610631828560405160200161061c929190613b06565b60408051601f19818403018152919052611c89565b90506001600160a01b03811661029457848460405160200161048b929190613b35565b61066082826000611c9c565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616ad083398151915291829063d145736c906106b2908490600401613bc4565b600060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f79190810190613bf9565b9250505090565b6107306040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616ad083398151915290506107756040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61077e85611d76565b6020820152600061078e86611fcb565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f89190810190613bf9565b868385602001516040516020016108129493929190613c41565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108519085906004016139ca565b600060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108969190810190613bf9565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108c5908490600401613cd9565b602060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190613d12565b61091b578160405160200161048b9190613d34565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610947908490600401613dab565b600060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098c9190810190613bf9565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f6906109ba908490600401613df1565b602060405180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613d12565b15610a77576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a2c908490600401613df1565b600060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a719190810190613bf9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a9c9190613e32565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610ac8929190613e8d565b600060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b0d9190810190613bf9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b3d579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b8457610b84613eb2565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610bbe57610bbe613eb2565b602002602001018190525084604051602001610bda9190613ec8565b60405160208183030381529060405281600281518110610bfc57610bfc613eb2565b602002602001018190525082604051602001610c189190613efd565b60405160208183030381529060405281600381518110610c3a57610c3a613eb2565b60209081029190910101526000610c5082611952565b9050600081602001519050610cb7610c8a60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061217b565b610ccc578560405160200161048b9190613f2c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616ad08339815191529015610d20565b511590565b610e3c57826020015115610db05760405162461bcd60e51b81526020600482015260586024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016104b1565b8260c0015115610e3c5760405162461bcd60e51b81526020600482015260536024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016104b1565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e555790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e9690613fc1565b935060ff1681518110610eab57610eab613eb2565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610eec9190613fe0565b604051602081830303815290604052828280610f0790613fc1565b935060ff1681518110610f1c57610f1c613eb2565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f5290613fc1565b935060ff1681518110610f6757610f67613eb2565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610fa590613fc1565b935060ff1681518110610fba57610fba613eb2565b60200260200101819052508760200151828280610fd690613fc1565b935060ff1681518110610feb57610feb613eb2565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061102990613fc1565b935060ff168151811061103e5761103e613eb2565b60209081029190910101528751828261105681613fc1565b935060ff168151811061106b5761106b613eb2565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806110a490613fc1565b935060ff16815181106110b9576110b9613eb2565b60209081029190910101526110cd466121dc565b82826110d881613fc1565b935060ff16815181106110ed576110ed613eb2565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061112c90613fc1565b935060ff168151811061114157611141613eb2565b60200260200101819052508682828061115990613fc1565b935060ff168151811061116e5761116e613eb2565b602090810291909101015285511561127c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111bf81613fc1565b935060ff16815181106111d4576111d4613eb2565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d9061120b9089906004016139ca565b600060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190613bf9565b828261125b81613fc1565b935060ff168151811061127057611270613eb2565b60200260200101819052505b846020015115611329576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826112ba81613fc1565b935060ff16815181106112cf576112cf613eb2565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b81525082828061130490613fc1565b935060ff168151811061131957611319613eb2565b6020026020010181905250611490565b61133f610d1b8660a0015161214e60201b60201c565b6113c25760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261137281613fc1565b935060ff168151811061138757611387613eb2565b60200260200101819052508460a001516040516020016113a79190613ec8565b60405160208183030381529060405282828061130490613fc1565b8460c001511580156113e757506113e5610d1b896040015161214e60201b60201c565b155b156114905760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261141b81613fc1565b935060ff168151811061143057611430613eb2565b60209081029190910101526114448861226e565b6040516020016114549190613ec8565b60405160208183030381529060405282828061146f90613fc1565b935060ff168151811061148457611484613eb2565b60200260200101819052505b6114a6610d1b866040015161214e60201b60201c565b6115295760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114d781613fc1565b935060ff16815181106114ec576114ec613eb2565b6020026020010181905250846040015182828061150890613fc1565b935060ff168151811061151d5761151d613eb2565b60200260200101819052505b60608501511561161a576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261155b81613fc1565b935060ff168151811061157057611570613eb2565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ee9190810190613bf9565b82826115f981613fc1565b935060ff168151811061160e5761160e613eb2565b60200260200101819052505b60e085015151156116ac5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261165181613fc1565b935060ff168151811061166657611666613eb2565b602090810291909101015260e085015151611680906121dc565b828261168b81613fc1565b935060ff16815181106116a0576116a0613eb2565b60200260200101819052505b60e085015160200151156117495760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116e681613fc1565b935060ff16815181106116fb576116fb613eb2565b602002602001018190525061171d8560e00151602001516121dc60201b60201c565b828261172881613fc1565b935060ff168151811061173d5761173d613eb2565b60200260200101819052505b60e085015160400151156117ea5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261178781613fc1565b935060ff168151811061179c5761179c613eb2565b60200260200101819052506117be8560e00151604001516121dc60201b60201c565b82826117c981613fc1565b935060ff16815181106117de576117de613eb2565b60200260200101819052505b60e0850151606001511561189a5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261183781613fc1565b935060ff168151811061184c5761184c613eb2565b602002602001018190525061186e8560e00151606001516121dc60201b60201c565b828261187981613fc1565b935060ff168151811061188e5761188e613eb2565b60200260200101819052505b60008160ff166001600160401b038111156118b7576118b7613a06565b6040519080825280602002602001820160405280156118ea57816020015b60608152602001906001900390816118d55790505b50905060005b8260ff168160ff16101561194357838160ff168151811061191357611913613eb2565b6020026020010151828260ff168151811061193057611930613eb2565b60209081029190910101526001016118f0565b5093505050505b949350505050565b6119796040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616ad083398151915292600091849163d145736c916119c791869101614037565b600060405180830381865afa1580156119e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a0c9190810190613bf9565b90506000611a1a8683612924565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a4a919061407e565b6000604051808303816000875af1158015611a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a9191908101906140e3565b805190915060030b15801590611aaa5750602081015151155b8015611ab95750604081015151155b15610ccc5781600081518110611ad157611ad1613eb2565b602002602001015160405160200161048b9190614196565b60606000611b1e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b559082905b90612a5e565b15611c52576000611bd282611bcc81611bc6611b988a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a85565b90612ae2565b9050611c06611bff604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612a5e565b15611c4057611c3d611c36604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612b67565b90505b611c4981612b8d565b925050506103a6565b8215611c6b57848460405160200161048b929190614366565b50506040805160208101909152600081526103a6565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611cab57505050565b6000611cb8848484612bf2565b90506000611cc582611952565b602081015181519192509060030b158015611d385750611d38611d0c604051806040016040528060078152602001665355434345535360c81b81525061214e60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b4f565b15611d4557505050505050565b60408201515115611d6557816040015160405160200161048b91906143e1565b8060405160200161048b919061442b565b60606000611dab8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611de2611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b829061217b565b15611e24576103a6611e1f611e18604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b8390613105565b612b8d565b611e56611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b829061318f565b600103611ebe57611e88611c36604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b506103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b8390612b67565b611eed611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba576000611f2582611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b613224565b905060008160018351611f38919061447b565b81518110611f4857611f48613eb2565b60200260200101519050611fb1611e1f611f8460405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290613105565b95945050505050565b8260405160200161048b919061448e565b606060006120008360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612030611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b1561203e576103a681612b8d565b612069611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b60010361209e576103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b6120cd611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba57600061210082611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b905060018151111561213c57806002825161211b919061447b565b8151811061212b5761212b613eb2565b602002602001015192505050919050565b508260405160200161048b919061448e565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111561219057506000610298565b815183516020850151600092916121a691614548565b6121b0919061447b565b9050826020015181036121c7576001915050610298565b82516020840151819020912014905092915050565b606060006121e9836132c8565b60010190506000816001600160401b0381111561220857612208613a06565b6040519080825280601f01601f191660200182016040528015612232576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461223c57509392505050565b60606000612285836040015161214e60201b60201c565b90506122c26122bb6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061214e60201b60201c565b82906133aa565b156122e95750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61231c6122bb60405180604001604052806009815260200168556e6c6963656e736560b81b81525061214e60201b60201c565b15612348575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b6123756122bb6040518060400160405280600381526020016213525560ea1b81525061214e60201b60201c565b1561239b57505060408051808201909152600381526213525560ea1b6020820152919050565b6123d16122bb6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061214e60201b60201c565b8061241157506124116122bb6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061214e60201b60201c565b1561243d57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b6124736122bb6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061214e60201b60201c565b806124b357506124b36122bb6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061214e60201b60201c565b156124df575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6125166122bb6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061214e60201b60201c565b8061255757506125576122bb604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061214e60201b60201c565b1561258657505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125bd6122bb6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b806125fe57506125fe6122bb604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b1561262b57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b6126616122bb6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061214e60201b60201c565b1561269057505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126c66122bb6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061214e60201b60201c565b156126f557505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b6127266122bb6040518060400160405280600781526020016604d504c2d322e360cc1b81525061214e60201b60201c565b1561275057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b6127816122bb6040518060400160405280600781526020016604f534c2d332e360cc1b81525061214e60201b60201c565b156127ab57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127df6122bb6040518060400160405280600a81526020016904170616368652d322e360b41b81525061214e60201b60201c565b1561280c57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6128436122bb6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b8061288457506128846122bb6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b156128b157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128e36122bb604051806040016040528060088152602001674255534c2d312e3160c01b81525061214e60201b60201c565b1561290d57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161048b929060200161455b565b60608060005b84518110156129af578185828151811061294657612946613eb2565b602002602001015160405160200161295f929190613b06565b60405160208183030381529060405291506001855161297e919061447b565b81146129a7578160405160200161299591906146ab565b60405160208183030381529060405291505b60010161292a565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129c857905050905083816000815181106129f3576129f3613eb2565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a2c57612a2c613eb2565b60200260200101819052508181600281518110612a4b57612a4b613eb2565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a7c92918491906133be565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612ab293906134cf565b9050836020015181612ac4919061447b565b84518590612ad390839061447b565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612b07575081610298565b6020808301519084015160019114612b2e5750815160208481015190840151829020919020145b8015612b5f57825184518590612b4590839061447b565b9052508251602085018051612b5b908390614548565b9052505b509192915050565b6040805180820190915260008082526020820152612b868383836135ef565b5092915050565b6060600082600001516001600160401b03811115612bad57612bad613a06565b6040519080825280601f01601f191660200182016040528015612bd7576020820181803683370190505b50602084810151855192935090830191612b86918391613695565b60606000612bfe610664565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612c1b5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c5c90613fc1565b935060ff1681518110612c7157612c71613eb2565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612cac91906146d0565b604051602081830303815290604052828280612cc790613fc1565b935060ff1681518110612cdc57612cdc613eb2565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612d1490613fc1565b935060ff1681518110612d2957612d29613eb2565b602002602001018190525082604051602001612d459190613efd565b604051602081830303815290604052828280612d6090613fc1565b935060ff1681518110612d7557612d75613eb2565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612daf90613fc1565b935060ff1681518110612dc457612dc4613eb2565b6020908102919091010152612dd9878461370f565b8282612de481613fc1565b935060ff1681518110612df957612df9613eb2565b602090810291909101015285515115612e915760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e3981613fc1565b935060ff1681518110612e4e57612e4e613eb2565b60209081029190910101528551612e65908461370f565b8282612e7081613fc1565b935060ff1681518110612e8557612e85613eb2565b60200260200101819052505b856080015115612eff5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612eda81613fc1565b935060ff1681518110612eef57612eef613eb2565b6020026020010181905250612f5a565b8415612f5a576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f3981613fc1565b935060ff1681518110612f4e57612f4e613eb2565b60200260200101819052505b60408601515115612fe65760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f9481613fc1565b935060ff1681518110612fa957612fa9613eb2565b60200260200101819052508560400151828280612fc590613fc1565b935060ff1681518110612fda57612fda613eb2565b60200260200101819052505b8560600151156130505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261302f81613fc1565b935060ff168151811061304457613044613eb2565b60200260200101819052505b60008160ff166001600160401b0381111561306d5761306d613a06565b6040519080825280602002602001820160405280156130a057816020015b606081526020019060019003908161308b5790505b50905060005b8260ff168160ff1610156130f957838160ff16815181106130c9576130c9613eb2565b6020026020010151828260ff16815181106130e6576130e6613eb2565b60209081029190910101526001016130a6565b50979650505050505050565b604080518082019091526000808252602082015281518351101561312a575081610298565b8151835160208501516000929161314091614548565b61314a919061447b565b6020840151909150600190821461316b575082516020840151819020908220145b80156131865783518551869061318290839061447b565b9052505b50929392505050565b8051825160208085015190840151600093849390926131af9284906134cf565b6131b99190614548565b90505b835160208501516131cd9190614548565b8111612b8657816131dd81614715565b92505082600001516132138560200151836131f8919061447b565b8651613204919061447b565b855160208701518591906134cf565b61321d9190614548565b90506131bc565b60606000613232848461318f565b61323d906001614548565b6001600160401b0381111561325457613254613a06565b60405190808252806020026020018201604052801561328757816020015b60608152602001906001900390816132725790505b50905060005b8151811015611c81576132a3611e1f8686612b67565b8282815181106132b5576132b5613eb2565b602090810291909101015260010161328d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613311577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061333d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061335b57662386f26fc10000830492506010015b6305f5e1008310613373576305f5e100830492506008015b612710831061338757612710830492506004015b60648310613399576064830492506002015b600a83106102985760010192915050565b60006133b6838361374f565b159392505050565b6000808584116134c5576020841161347157600084156134095760016133e586602061447b565b6133f090600861472e565b6133fb90600261482c565b613405919061447b565b1990505b83518116856134188989614548565b613422919061447b565b805190935082165b81811461345c57878411613444578794505050505061194a565b8361344e81614838565b94505082845116905061342a565b6134668785614548565b94505050505061194a565b83832061347e858861447b565b6134889087614548565b91505b8582106134c3578482208082036134b0576134a68684614548565b935050505061194a565b6134bb60018461447b565b92505061348b565b505b5092949350505050565b600083818685116135da5760208511613589576000851561351b5760016134f787602061447b565b61350290600861472e565b61350d90600261482c565b613517919061447b565b1990505b8451811660008761352c8b8b614548565b613536919061447b565b855190915083165b82811461357b57818610613563576135568b8b614548565b965050505050505061194a565b8561356d81614715565b96505083865116905061353e565b85965050505050505061194a565b508383206000905b61359b868961447b565b82116135d8578583208082036135b7578394505050505061194a565b6135c2600185614548565b93505081806135d090614715565b925050613591565b505b6135e48787614548565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161361c93906134cf565b602080870180519186019190915251909150613638908261447b565b83528451602086015161364b9190614548565b810361365a576000855261368c565b835183516136689190614548565b8551869061367790839061447b565b90525083516136869082614548565b60208601525b50909392505050565b602081106136cd57815183526136ac602084614548565b92506136b9602083614548565b91506136c660208261447b565b9050613695565b60001981156136fc5760016136e383602061447b565b6136ef9061010061482c565b6136f9919061447b565b90505b9151835183169219169190911790915250565b6060600061371d84846106fe565b80516020808301516040519394506137379390910161484f565b60405160208183030381529060405291505092915050565b8151815160009190811115613762575081515b6020808501519084015160005b8381101561381b57825182518082146137eb5760001960208710156137ca5760018461379c89602061447b565b6137a69190614548565b6137b190600861472e565b6137bc90600261482c565b6137c6919061447b565b1990505b81811683821681810391146137e85797506102989650505050505050565b50505b6137f6602086614548565b9450613803602085614548565b935050506020816138149190614548565b905061376f565b5084518651610ccc919061488b565b610c9f80615e3183390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161387a61387f565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161387a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101561390b5781810151838201526020016138f3565b50506000910152565b6000815180845261392c8160208601602086016138f0565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061194a90830184613914565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161399c81601a8501602088016138f0565b6101d160f51b601a9184019182015283516139be81601c8401602088016138f0565b01601c01949350505050565b6020815260006103a66020830184613914565b6000602082840312156139ef57600080fd5b81516001600160a01b03811681146103a657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a3e57613a3e613a06565b60405290565b6000806001600160401b03841115613a5e57613a5e613a06565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a8c57613a8c613a06565b604052838152905080828401851015613aa457600080fd5b611c818460208301856138f0565b600082601f830112613ac357600080fd5b6103a683835160208501613a44565b600060208284031215613ae457600080fd5b81516001600160401b03811115613afa57600080fd5b61029484828501613ab2565b60008351613b188184602088016138f0565b835190830190613b2c8183602088016138f0565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b6d81601a8501602088016138f0565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613baa8160338401602088016138f0565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006103a66080830184613914565b600060208284031215613c0b57600080fd5b81516001600160401b03811115613c2157600080fd5b8201601f81018413613c3257600080fd5b61029484825160208401613a44565b60008551613c53818460208a016138f0565b602f60f81b9083019081528551613c71816001840160208a016138f0565b602f60f81b600192909101918201528451613c938160028401602089016138f0565b600181830101915050602f60f81b60018201528351613cb98160028401602088016138f0565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cec6040830184613914565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d2457600080fd5b815180151581146103a657600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d6c81601f8501602087016138f0565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613dbe6040830184613914565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613e046040830184613914565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e6a8160148501602087016138f0565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613ea06040830185613914565b82810360208401526103a28185613914565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ee58160018501602087016138f0565b601160f91b6001939091019283015250600201919050565b60008251613f0f8184602087016138f0565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f9e81604b8501602087016138f0565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fd757613fd7613fab565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161402a8160298501602087016138f0565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006103a66080830184613914565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140d757603f198786030184526140c2858351613914565b945060209384019391909101906001016140a6565b50929695505050505050565b6000602082840312156140f557600080fd5b81516001600160401b0381111561410b57600080fd5b82016060818503121561411d57600080fd5b614125613a1c565b81518060030b811461413657600080fd5b815260208201516001600160401b0381111561415157600080fd5b61415d86828501613ab2565b60208301525060408201516001600160401b0381111561417c57600080fd5b61418886828501613ab2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141d88160218501602087016138f0565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516143a88160218501602088016138f0565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143d581602e8401602088016138f0565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161402a8160298501602087016138f0565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161446e8160228501602087016138f0565b9190910160220192915050565b8181038181111561029857610298613fab565b6d021b7b73a3930b1ba103730b6b2960951b8152600082516144b781600e8501602087016138f0565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561029857610298613fab565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145938160188501602088016138f0565b6301034b7160e51b60189184019182015283516145b781601c8401602088016138f0565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146bd8184602087016138f0565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161470881601c8501602087016138f0565b91909101601c0192915050565b60006001820161472757614727613fab565b5060010190565b808202811582820484141761029857610298613fab565b6001815b60018411156147805780850481111561476457614764613fab565b600184161561477257908102905b60019390931c928002614749565b935093915050565b60008261479757506001610298565b816147a457506000610298565b81600181146147ba57600281146147c4576147e0565b6001915050610298565b60ff8411156147d5576147d5613fab565b50506001821b610298565b5060208310610133831016604e8410600b8410161715614803575081810a610298565b6148106000198484614745565b806000190482111561482457614824613fab565b029392505050565b60006103a68383614788565b60008161484757614847613fab565b506000190190565b600083516148618184602088016138f0565b601d60f91b908301908152835161487f8160018401602088016138f0565b01600101949350505050565b8181036000831280158383131683831282161715612b8657612b86613fab565b611577806148ba6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610366578063d9caed1214610379578063e63ab1e91461038c57600080fd5b8063a217fddf1461034b578063c8a023621461035357600080fd5b80638456cb59116100b25780638456cb59146102d657806385f438c1146102de57806391d148541461030557600080fd5b80636133b4bb146102a357806381100bf0146102b657600080fd5b806336568abe116101245780633f4ba83a116101095780633f4ba83a146102705780635b112591146102785780635c975abb1461029857600080fd5b806336568abe1461023d5780633c2f05a81461025057600080fd5b806321fc65f21161015557806321fc65f2146101e3578063248a9ca3146101f85780632f2ff15d1461022a57600080fd5b806301ffc9a714610171578063116191b614610199575b600080fd5b61018461017f3660046111a6565b6103b3565b60405190151581526020015b60405180910390f35b6002546101be90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101f66101f136600461125a565b61044c565b005b61021c6102063660046112c9565b6000908152600160208190526040909120015490565b604051908152602001610190565b6101f66102383660046112e2565b6105c1565b6101f661024b3660046112e2565b6105ed565b6004546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661064b565b6003546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610184565b6101f66102b136600461130e565b610680565b6005546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661089f565b61021c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103133660046112e2565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61021c600081565b6101f661036136600461125a565b6108d1565b6101f66103743660046112e2565b610a2c565b6101f6610387366004611368565b610a52565b61021c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610454610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461047e81610b62565b610486610b6c565b6002546104b29073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061051490899089908990899089906004016113ee565b600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a79392919061144b565b60405180910390a3506105ba6001600055565b5050505050565b600082815260016020819052604090912001546105dd81610b62565b6105e78383610c38565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461063c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106468282610d03565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61067581610b62565b61067d610dc2565b50565b60045473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106aa86600561146e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b5050600480546007546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216938101939093526005602484015216925063a9059cbb91506044016020604051808303816000875af11580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce91906114a8565b506004546107f59073ffffffffffffffffffffffffffffffffffffffff168585858561044c565b600480546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090920482169381019390935216906370a0823190602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089291906114ca565b156105e7576105e76114e3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108c981610b62565b61067d610e3f565b6108d9610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461090381610b62565b61090b610b6c565b6002546109379073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd49061099990899089908990899089906004016113ee565b600060405180830381600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a79392919061144b565b60008281526001602081905260409091200154610a4881610b62565b6105e78383610d03565b610a5a610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a8481610b62565b610a8c610b6c565b610aad73ffffffffffffffffffffffffffffffffffffffff85168484610bab565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b0c91815260200190565b60405180910390a3506106466001600055565b600260005403610b5b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61067d8133610e9a565b60025460ff1615610ba9576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610646908490610f2b565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610cfb57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610446565b506000610446565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610cfb57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610446565b610dca610fc1565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e47610b6c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e153390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f27576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610f4d73ffffffffffffffffffffffffffffffffffffffff841683610ffd565b90508051600014158015610f72575080806020019051810190610f7091906114a8565b155b15610646576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f1e565b60025460ff16610ba9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061100b83836000611012565b9392505050565b606081471015611050576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f1e565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110799190611512565b60006040518083038185875af1925050503d80600081146110b6576040519150601f19603f3d011682016040523d82523d6000602084013e6110bb565b606091505b50915091506110cb8683836110d5565b9695505050505050565b6060826110ea576110e582611164565b61100b565b815115801561110e575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561115d576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f1e565b508061100b565b8051156111745780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156111b857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461100b57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461120c57600080fd5b919050565b60008083601f84011261122357600080fd5b50813567ffffffffffffffff81111561123b57600080fd5b60208301915083602082850101111561125357600080fd5b9250929050565b60008060008060006080868803121561127257600080fd5b61127b866111e8565b9450611289602087016111e8565b935060408601359250606086013567ffffffffffffffff8111156112ac57600080fd5b6112b888828901611211565b969995985093965092949392505050565b6000602082840312156112db57600080fd5b5035919050565b600080604083850312156112f557600080fd5b82359150611305602084016111e8565b90509250929050565b6000806000806060858703121561132457600080fd5b61132d856111e8565b935060208501359250604085013567ffffffffffffffff81111561135057600080fd5b61135c87828801611211565b95989497509550505050565b60008060006060848603121561137d57600080fd5b611386846111e8565b9250611394602085016111e8565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114406080830184866113a5565b979650505050505050565b8381526040602082015260006114656040830184866113a5565b95945050505050565b80820180821115610446577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156114ba57600080fd5b8151801515811461100b57600080fd5b6000602082840312156114dc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156115335760208186018101518583015201611519565b50600092019182525091905056fea2646970667358221220e3eceeff6045b5584ad5b26814ad7e9728c8428c7219e4a4930ed3899cab596964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; type ERC20CustodyEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC20Custody__factory.ts b/v2/typechain-types/factories/ERC20Custody__factory.ts index 6390b7bb..d2602a55 100644 --- a/v2/typechain-types/factories/ERC20Custody__factory.ts +++ b/v2/typechain-types/factories/ERC20Custody__factory.ts @@ -30,9 +30,53 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], stateMutability: "nonpayable", }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "WITHDRAWER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "gateway", @@ -46,6 +90,142 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -59,6 +239,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", @@ -138,6 +325,107 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Withdraw", @@ -225,6 +513,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -249,12 +558,17 @@ const _abi = [ }, { type: "error", - name: "FailedInnerCall", + name: "EnforcedPause", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "ExpectedPause", + inputs: [], + }, + { + type: "error", + name: "FailedInnerCall", inputs: [], }, { @@ -281,7 +595,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033"; type ERC20CustodyConstructorParams = | [signer?: Signer] @@ -303,16 +617,28 @@ export class ERC20Custody__factory extends ContractFactory { override getDeployTransaction( _gateway: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { - return super.getDeployTransaction(_gateway, _tssAddress, overrides || {}); + return super.getDeployTransaction( + _gateway, + _tssAddress, + _admin, + overrides || {} + ); } override deploy( _gateway: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { - return super.deploy(_gateway, _tssAddress, overrides || {}) as Promise< + return super.deploy( + _gateway, + _tssAddress, + _admin, + overrides || {} + ) as Promise< ERC20Custody & { deploymentTransaction(): ContractTransactionResponse; } diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts index 8c47b27d..8825fb05 100644 --- a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -20,6 +20,58 @@ const _abi = [ inputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "ASSET_HANDLER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "TSS_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", @@ -229,6 +281,67 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "initialize", @@ -243,19 +356,31 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", - name: "owner", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", inputs: [], outputs: [ { name: "", - type: "address", - internalType: "address", + type: "bool", + internalType: "bool", }, ], stateMutability: "view", @@ -275,8 +400,19 @@ const _abi = [ }, { type: "function", - name: "renounceOwnership", - inputs: [], + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], outputs: [], stateMutability: "nonpayable", }, @@ -308,6 +444,24 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "setConnector", @@ -334,6 +488,25 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "testERC20", @@ -370,19 +543,6 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, - { - type: "function", - name: "transferOwnership", - inputs: [ - { - name: "newOwner", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, { type: "function", name: "tssAddress", @@ -396,6 +556,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "upgradeToAndCall", @@ -573,18 +740,12 @@ const _abi = [ }, { type: "event", - name: "OwnershipTransferred", + name: "Paused", inputs: [ { - name: "previousOwner", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "newOwner", + name: "account", type: "address", - indexed: true, + indexed: false, internalType: "address", }, ], @@ -646,6 +807,94 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Upgraded", @@ -659,6 +908,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -714,60 +984,43 @@ const _abi = [ }, { type: "error", - name: "ExecutionFailed", + name: "EnforcedPause", inputs: [], }, { type: "error", - name: "FailedInnerCall", + name: "ExecutionFailed", inputs: [], }, { type: "error", - name: "InsufficientERC20Amount", + name: "ExpectedPause", inputs: [], }, { type: "error", - name: "InsufficientETHAmount", + name: "FailedInnerCall", inputs: [], }, { type: "error", - name: "InvalidInitialization", + name: "InsufficientERC20Amount", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "InsufficientETHAmount", inputs: [], }, { type: "error", - name: "NotInitializing", + name: "InvalidInitialization", inputs: [], }, { type: "error", - name: "OwnableInvalidOwner", - inputs: [ - { - name: "owner", - type: "address", - internalType: "address", - }, - ], - }, - { - type: "error", - name: "OwnableUnauthorizedAccount", - inputs: [ - { - name: "account", - type: "address", - internalType: "address", - }, - ], + name: "NotInitializing", + inputs: [], }, { type: "error", @@ -809,7 +1062,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea2646970667358221220b5cf128d245bfd684061b748e4a87779c3ff73a03bfe1b652838b47b6abf465b64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea26469706673582212202f21d05fe30e748e81e7382022feca818b55bb0f7d450a8576e257d9488d776564736f6c634300081a0033"; + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f8061324883390190565b6113e280613ee783390190565b608051612fff61024960003960008181611d3301528181611d5c01526121a50152612fff6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b506102596102543660046129e9565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612a47565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612aab565b6108f3565b6102c36102be366004612aab565b61094d565b6040516102659190612b6c565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612b7f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612aab565b6109de565b34801561038457600080fd5b5061028e610393366004612b98565b610b0b565b61028e6103a6366004612aab565b610b55565b3480156103b757600080fd5b5061028e6103c6366004612b98565b610cdc565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610d2d565b61028e61040e366004612bf3565b610d62565b34801561041f57600080fd5b5061028e61042e366004612cfa565b610d81565b34801561043f57600080fd5b5061035761105e565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612d69565b61108d565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6111b8565b34801561055457600080fd5b5061028e610563366004612dc3565b6111ea565b34801561057457600080fd5b50610259610583366004612b98565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612a47565b61128f565b34801561068b57600080fd5b5061028e61069a366004612cfa565b611383565b3480156106ab57600080fd5b5061028e6106ba366004612e15565b6114fd565b3480156106cb57600080fd5b5061028e6106da366004612b98565b6117b2565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612a47565b6117f6565b34801561075257600080fd5b5061028e610761366004612e58565b611923565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a816119d6565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611acd565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610940929190612ed4565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610979816119d6565b610981611acd565b600061098e868686611b2b565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3487876040516109cd93929190612ef0565b60405180910390a295945050505050565b6109e6611acd565b34600003610a20576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a6d576040519150601f19603f3d011682016040523d82523d6000602084013e610a72565b606091505b5090915050801515600003610ab3576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610afd9493929190612f0a565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b45816119d6565b610b4f83836119e0565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b7f816119d6565b610b87611acd565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c16576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610c5d9088908890600401612ed4565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610ccc93929190612ef0565b60405180910390a2505050505050565b6001600160a01b0381163314610d1e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d288282611bd4565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d57816119d6565b610d5f611c98565b50565b610d6a611d28565b610d7382611df8565b610d7d8282611e03565b5050565b610d89611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610db3816119d6565b610dbb611acd565b83600003610df5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8686611fa8565b610e35576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec19190612f33565b610ef7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f04868585611b2b565b9050610f108787611fa8565b610f46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190612f55565b90508015610fdc57610fdc8882612038565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161102393929190612ef0565b60405180910390a350505061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b600061106861219a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b505060045461112592506001600160a01b0316905085858585610d81565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612f55565b15610b4f57610b4f612f6e565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111e2816119d6565b610d5f6121fc565b6111f2611acd565b8360000361122c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611237338486612275565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516112809493929190612f0a565b60405180910390a35050505050565b600061129a816119d6565b6000546001600160a01b0316156112dd576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661131d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113477f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61138b611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96113b5816119d6565b6113bd611acd565b836000036113f7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6001600160a01b03871686866123c9565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906114529086908690600401612ed4565b600060405180830381600087803b15801561146c57600080fd5b505af1158015611480573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516114cb93929190612ef0565b60405180910390a35061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115485750825b905060008267ffffffffffffffff1660011480156115655750303b155b905081158015611573575080155b156115aa576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561160b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061162857506001600160a01b038716155b1561165f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166761243d565b61166f612445565b61167761243d565b61167f612455565b61168a6000876119e0565b506116b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876119e0565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556117137f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896119e0565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117a85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546117ec816119d6565b610b4f8383611bd4565b6117fe611acd565b34600003611838576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611885576040519150601f19603f3d011682016040523d82523d6000602084013e61188a565b606091505b50909150508015156000036118cb576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61192b611acd565b81600003611965576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611970338284612275565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109409291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d5f8133612465565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ac3576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611a793390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b29576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b0316348686604051611b4b929190612f9d565b60006040518083038185875af1925050503d8060008114611b88576040519150601f19603f3d011682016040523d82523d6000602084013e611b8d565b606091505b509150915081611bc9576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ac3576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611ca06124f2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dc157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611db57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d7d816119d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e7b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7891810190612f55565b60015b611ec1576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f1d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611eb8565b610d28838361254d565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611fa2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612f33565b6003546001600160a01b039081169083160361215a576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de9190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561213e57600080fd5b505af1158015612152573d6000803e3d6000fd5b505050505050565b600054610d7d906001600160a01b038481169116836123c9565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612204611acd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d0a565b6003546001600160a01b03908116908316036123ad576122a06001600160a01b0383168430846125a3565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561230c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123309190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b50505050505050565b600054610d28906001600160a01b0384811691869116846125a3565b6040516001600160a01b03838116602483015260448201839052610d2891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125dc565b611b29612658565b61244d612658565b611b296126bf565b61245d612658565b611b296126c7565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d7d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611eb8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b29576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255682612718565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561259b57610d2882826127c0565b610d7d612836565b6040516001600160a01b038481166024830152838116604483015260648201839052610b4f9186918216906323b872dd906084016123f6565b60006125f16001600160a01b0384168361286e565b905080516000141580156126165750808060200190518101906126149190612f33565b155b15610d28576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611eb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b29576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612174612658565b6126cf612658565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612767576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127dd9190612fad565b600060405180830381855af49150503d8060008114612818576040519150601f19603f3d011682016040523d82523d6000602084013e61281d565b606091505b509150915061282d85838361287c565b95945050505050565b3415611b29576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611bcd838360006128f1565b6060826128915761288c826129a7565b611bcd565b81511580156128a857506001600160a01b0384163b155b156128ea576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611eb8565b5080611bcd565b60608147101561292f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611eb8565b600080856001600160a01b0316848660405161294b9190612fad565b60006040518083038185875af1925050503d8060008114612988576040519150601f19603f3d011682016040523d82523d6000602084013e61298d565b606091505b509150915061299d86838361287c565b9695505050505050565b8051156129b75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129fb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bcd57600080fd5b80356001600160a01b0381168114612a4257600080fd5b919050565b600060208284031215612a5957600080fd5b611bcd82612a2b565b60008083601f840112612a7457600080fd5b50813567ffffffffffffffff811115612a8c57600080fd5b602083019150836020828501011115612aa457600080fd5b9250929050565b600080600060408486031215612ac057600080fd5b612ac984612a2b565b9250602084013567ffffffffffffffff811115612ae557600080fd5b612af186828701612a62565b9497909650939450505050565b60005b83811015612b19578181015183820152602001612b01565b50506000910152565b60008151808452612b3a816020860160208601612afe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bcd6020830184612b22565b600060208284031215612b9157600080fd5b5035919050565b60008060408385031215612bab57600080fd5b82359150612bbb60208401612a2b565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612c0657600080fd5b612c0f83612a2b565b9150602083013567ffffffffffffffff811115612c2b57600080fd5b8301601f81018513612c3c57600080fd5b803567ffffffffffffffff811115612c5657612c56612bc4565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612cc257612cc2612bc4565b604052818152828201602001871015612cda57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612d1257600080fd5b612d1b86612a2b565b9450612d2960208701612a2b565b935060408601359250606086013567ffffffffffffffff811115612d4c57600080fd5b612d5888828901612a62565b969995985093965092949392505050565b60008060008060608587031215612d7f57600080fd5b612d8885612a2b565b935060208501359250604085013567ffffffffffffffff811115612dab57600080fd5b612db787828801612a62565b95989497509550505050565b600080600080600060808688031215612ddb57600080fd5b612de486612a2b565b945060208601359350612df960408701612a2b565b9250606086013567ffffffffffffffff811115612d4c57600080fd5b600080600060608486031215612e2a57600080fd5b612e3384612a2b565b9250612e4160208501612a2b565b9150612e4f60408501612a2b565b90509250925092565b600080600060608486031215612e6d57600080fd5b612e7684612a2b565b925060208401359150612e4f60408501612a2b565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ee8602083018486612e8b565b949350505050565b83815260406020820152600061282d604083018486612e8b565b8481526001600160a01b038416602082015260606040820152600061299d606083018486612e8b565b600060208284031215612f4557600080fd5b81518015158114611bcd57600080fd5b600060208284031215612f6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b60008251612fbf818460208701612afe565b919091019291505056fea2646970667358221220e575ea5a18b9462f7a8e597ab970f6a09ecc09fd51c56fa3c6c1397f89f20af164736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033"; type GatewayEVMEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts index 224c8da4..b6699ea5 100644 --- a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -20,6 +20,58 @@ const _abi = [ inputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "ASSET_HANDLER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "TSS_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", @@ -216,6 +268,67 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "initialize", @@ -230,19 +343,31 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", - name: "owner", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", inputs: [], outputs: [ { name: "", - type: "address", - internalType: "address", + type: "bool", + internalType: "bool", }, ], stateMutability: "view", @@ -262,8 +387,19 @@ const _abi = [ }, { type: "function", - name: "renounceOwnership", - inputs: [], + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], outputs: [], stateMutability: "nonpayable", }, @@ -297,10 +433,15 @@ const _abi = [ }, { type: "function", - name: "setConnector", + name: "revokeRole", inputs: [ { - name: "_zetaConnector", + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", type: "address", internalType: "address", }, @@ -310,10 +451,10 @@ const _abi = [ }, { type: "function", - name: "setCustody", + name: "setConnector", inputs: [ { - name: "_custody", + name: "_zetaConnector", type: "address", internalType: "address", }, @@ -323,10 +464,10 @@ const _abi = [ }, { type: "function", - name: "transferOwnership", + name: "setCustody", inputs: [ { - name: "newOwner", + name: "_custody", type: "address", internalType: "address", }, @@ -334,6 +475,25 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -347,6 +507,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "upgradeToAndCall", @@ -549,18 +716,12 @@ const _abi = [ }, { type: "event", - name: "OwnershipTransferred", + name: "Paused", inputs: [ { - name: "previousOwner", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "newOwner", + name: "account", type: "address", - indexed: true, + indexed: false, internalType: "address", }, ], @@ -622,6 +783,94 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Upgraded", @@ -635,6 +884,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -690,60 +960,43 @@ const _abi = [ }, { type: "error", - name: "ExecutionFailed", + name: "EnforcedPause", inputs: [], }, { type: "error", - name: "FailedInnerCall", + name: "ExecutionFailed", inputs: [], }, { type: "error", - name: "InsufficientERC20Amount", + name: "ExpectedPause", inputs: [], }, { type: "error", - name: "InsufficientETHAmount", + name: "FailedInnerCall", inputs: [], }, { type: "error", - name: "InvalidInitialization", + name: "InsufficientERC20Amount", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "InsufficientETHAmount", inputs: [], }, { type: "error", - name: "NotInitializing", + name: "InvalidInitialization", inputs: [], }, { type: "error", - name: "OwnableInvalidOwner", - inputs: [ - { - name: "owner", - type: "address", - internalType: "address", - }, - ], - }, - { - type: "error", - name: "OwnableUnauthorizedAccount", - inputs: [ - { - name: "account", - type: "address", - internalType: "address", - }, - ], + name: "NotInitializing", + inputs: [], }, { type: "error", @@ -785,7 +1038,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea264697066735822122080ca52360500cb8c1ff37c01ce754e149b0bf2525ac575c45d2f6db66011666364736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220e0d221e2700a741409740f6a05e6ac8e799e50b3e2a6e75b5173b33a31fa502464736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts index 9ce7bb1c..c47fde35 100644 --- a/v2/typechain-types/factories/GatewayEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -17,6 +17,58 @@ const _abi = [ inputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "ASSET_HANDLER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "TSS_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", @@ -213,6 +265,67 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "initialize", @@ -227,19 +340,31 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", - name: "owner", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", inputs: [], outputs: [ { name: "", - type: "address", - internalType: "address", + type: "bool", + internalType: "bool", }, ], stateMutability: "view", @@ -259,8 +384,19 @@ const _abi = [ }, { type: "function", - name: "renounceOwnership", - inputs: [], + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], outputs: [], stateMutability: "nonpayable", }, @@ -294,10 +430,15 @@ const _abi = [ }, { type: "function", - name: "setConnector", + name: "revokeRole", inputs: [ { - name: "_zetaConnector", + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", type: "address", internalType: "address", }, @@ -307,10 +448,10 @@ const _abi = [ }, { type: "function", - name: "setCustody", + name: "setConnector", inputs: [ { - name: "_custody", + name: "_zetaConnector", type: "address", internalType: "address", }, @@ -320,10 +461,10 @@ const _abi = [ }, { type: "function", - name: "transferOwnership", + name: "setCustody", inputs: [ { - name: "newOwner", + name: "_custody", type: "address", internalType: "address", }, @@ -331,6 +472,25 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -344,6 +504,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "upgradeToAndCall", @@ -521,18 +688,12 @@ const _abi = [ }, { type: "event", - name: "OwnershipTransferred", + name: "Paused", inputs: [ { - name: "previousOwner", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "newOwner", + name: "account", type: "address", - indexed: true, + indexed: false, internalType: "address", }, ], @@ -594,6 +755,94 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Upgraded", @@ -607,6 +856,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -662,60 +932,43 @@ const _abi = [ }, { type: "error", - name: "ExecutionFailed", + name: "EnforcedPause", inputs: [], }, { type: "error", - name: "FailedInnerCall", + name: "ExecutionFailed", inputs: [], }, { type: "error", - name: "InsufficientERC20Amount", + name: "ExpectedPause", inputs: [], }, { type: "error", - name: "InsufficientETHAmount", + name: "FailedInnerCall", inputs: [], }, { type: "error", - name: "InvalidInitialization", + name: "InsufficientERC20Amount", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "InsufficientETHAmount", inputs: [], }, { type: "error", - name: "NotInitializing", + name: "InvalidInitialization", inputs: [], }, { type: "error", - name: "OwnableInvalidOwner", - inputs: [ - { - name: "owner", - type: "address", - internalType: "address", - }, - ], - }, - { - type: "error", - name: "OwnableUnauthorizedAccount", - inputs: [ - { - name: "account", - type: "address", - internalType: "address", - }, - ], + name: "NotInitializing", + inputs: [], }, { type: "error", @@ -757,7 +1010,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220abbff2739a31446b484d2eb9c0ffb41515c9145c3574c0a292938cdb16afc8b464736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d9a6100fd60003960008181611b5701528181611b800152611fc90152612d9a6000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b5061020861020336600461280d565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d61023836600461286b565b61074e565b005b34801561024b57600080fd5b5061023d61025a3660046128cf565b610842565b61027261026d3660046128cf565b61089c565b6040516102149190612990565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d23660046129a3565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d6103223660046128cf565b61092d565b34801561033357600080fd5b5061023d6103423660046129bc565b610a5a565b61023d6103553660046128cf565b610aa4565b34801561036657600080fd5b5061023d6103753660046129bc565b610c2b565b34801561038657600080fd5b5061023d610c7c565b61023d61039d366004612a17565b610cb1565b3480156103ae57600080fd5b5061023d6103bd366004612b1e565b610cd0565b3480156103ce57600080fd5b50610306610fad565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fdc565b3480156104a357600080fd5b5061023d6104b2366004612b8d565b61100e565b3480156104c357600080fd5b506102086104d23660046129bc565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c936600461286b565b6110b3565b3480156105da57600080fd5b5061023d6105e9366004612b1e565b6111a7565b3480156105fa57600080fd5b5061023d610609366004612bdf565b611321565b34801561061a57600080fd5b5061023d6106293660046129bc565b6115d6565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d61069036600461286b565b61161a565b3480156106a157600080fd5b5061023d6106b0366004612c22565b611747565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117fa565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a6118f1565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161088f929190612c9e565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c8816117fa565b6108d06118f1565b60006108dd86868661194f565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161091c93929190612cba565b60405180910390a295945050505050565b6109356118f1565b3460000361096f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109bc576040519150601f19603f3d011682016040523d82523d6000602084013e6109c1565b606091505b5090915050801515600003610a02576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a4c9493929190612cd4565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a94816117fa565b610a9e8383611804565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ace816117fa565b610ad66118f1565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b24576040519150601f19603f3d011682016040523d82523d6000602084013e610b29565b606091505b509150915081610b65576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610bac9088908890600401612c9e565b600060405180830381600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610c1b93929190612cba565b60405180910390a2505050505050565b6001600160a01b0381163314610c6d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7782826119f8565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ca6816117fa565b610cae611abc565b50565b610cb9611b4c565b610cc282611c1c565b610ccc8282611c27565b5050565b610cd8611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d02816117fa565b610d0a6118f1565b83600003610d44576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4e8686611dcc565b610d84576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612cfd565b610e46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5386858561194f565b9050610e5f8787611dcc565b610e95576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612d1f565b90508015610f2b57610f2b8882611e5c565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f7293929190612cba565b60405180910390a3505050610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610fb7611fbe565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611006816117fa565b610cae612020565b6110166118f1565b83600003611050576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105b338486612099565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110a49493929190612cd4565b60405180910390a35050505050565b60006110be816117fa565b6000546001600160a01b031615611101576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611141576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6111af611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111d9816117fa565b6111e16118f1565b8360000361121b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122f6001600160a01b03871686866121ed565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906112769086908690600401612c9e565b600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112ef93929190612cba565b60405180910390a350610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561136c5750825b905060008267ffffffffffffffff1660011480156113895750303b155b905081158015611397575080155b156113ce576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561142f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061144c57506001600160a01b038716155b15611483576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148b612261565b611493612269565b61149b612261565b6114a3612279565b6114ae600087611804565b506114d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611804565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115377f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611804565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115cc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611610816117fa565b610a9e83836119f8565b6116226118f1565b3460000361165c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146116a9576040519150601f19603f3d011682016040523d82523d6000602084013e6116ae565b606091505b50909150508015156000036116ef576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61174f6118f1565b81600003611789576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611794338284612099565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161088f9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610cae8133612289565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166118e7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561189d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561194d576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b031634868660405161196f929190612d38565b60006040518083038185875af1925050503d80600081146119ac576040519150601f19603f3d011682016040523d82523d6000602084013e6119b1565b606091505b5091509150816119ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156118e7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611ac4612316565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611be557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bd97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ccc816117fa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c9f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c9c91810190612d1f565b60015b611ce5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d41576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611cdc565b610c778383612371565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611dc6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612cfd565b6003546001600160a01b0390811690831603611f7e576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b505050505050565b600054610ccc906001600160a01b038481169116836121ed565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120286118f1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b2e565b6003546001600160a01b03908116908316036121d1576120c46001600160a01b0383168430846123c7565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156121b457600080fd5b505af11580156121c8573d6000803e3d6000fd5b50505050505050565b600054610c77906001600160a01b0384811691869116846123c7565b6040516001600160a01b03838116602483015260448201839052610c7791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612400565b61194d61247c565b61227161247c565b61194d6124e3565b61228161247c565b61194d6124eb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610ccc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611cdc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661194d576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237a8261253c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123bf57610c7782826125e4565b610ccc61265a565b6040516001600160a01b038481166024830152838116604483015260648201839052610a9e9186918216906323b872dd9060840161221a565b60006124156001600160a01b03841683612692565b9050805160001415801561243a5750808060200190518101906124389190612cfd565b155b15610c77576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611cdc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661194d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9861247c565b6124f361247c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b60000361258b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611cdc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126019190612d48565b600060405180830381855af49150503d806000811461263c576040519150601f19603f3d011682016040523d82523d6000602084013e612641565b606091505b50915091506126518583836126a0565b95945050505050565b341561194d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606119f183836000612715565b6060826126b5576126b0826127cb565b6119f1565b81511580156126cc57506001600160a01b0384163b155b1561270e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611cdc565b50806119f1565b606081471015612753576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611cdc565b600080856001600160a01b0316848660405161276f9190612d48565b60006040518083038185875af1925050503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18683836126a0565b9695505050505050565b8051156127db5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561281f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f157600080fd5b80356001600160a01b038116811461286657600080fd5b919050565b60006020828403121561287d57600080fd5b6119f18261284f565b60008083601f84011261289857600080fd5b50813567ffffffffffffffff8111156128b057600080fd5b6020830191508360208285010111156128c857600080fd5b9250929050565b6000806000604084860312156128e457600080fd5b6128ed8461284f565b9250602084013567ffffffffffffffff81111561290957600080fd5b61291586828701612886565b9497909650939450505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6000815180845261295e816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119f16020830184612946565b6000602082840312156129b557600080fd5b5035919050565b600080604083850312156129cf57600080fd5b823591506129df6020840161284f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612a2a57600080fd5b612a338361284f565b9150602083013567ffffffffffffffff811115612a4f57600080fd5b8301601f81018513612a6057600080fd5b803567ffffffffffffffff811115612a7a57612a7a6129e8565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ae657612ae66129e8565b604052818152828201602001871015612afe57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612b3657600080fd5b612b3f8661284f565b9450612b4d6020870161284f565b935060408601359250606086013567ffffffffffffffff811115612b7057600080fd5b612b7c88828901612886565b969995985093965092949392505050565b600080600080600060808688031215612ba557600080fd5b612bae8661284f565b945060208601359350612bc36040870161284f565b9250606086013567ffffffffffffffff811115612b7057600080fd5b600080600060608486031215612bf457600080fd5b612bfd8461284f565b9250612c0b6020850161284f565b9150612c196040850161284f565b90509250925092565b600080600060608486031215612c3757600080fd5b612c408461284f565b925060208401359150612c196040850161284f565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612cb2602083018486612c55565b949350505050565b838152604060208201526000612651604083018486612c55565b8481526001600160a01b03841660208201526060604082015260006127c1606083018486612c55565b600060208284031215612d0f57600080fd5b815180151581146119f157600080fd5b600060208284031215612d3157600080fd5b5051919050565b8183823760009101908152919050565b60008251612d5a818460208701612922565b919091019291505056fea26469706673582212201821442f44389baeb888640e13de33662eed4aff4f3c0ea195d55f55d8f2920864736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayZEVM__factory.ts b/v2/typechain-types/factories/GatewayZEVM__factory.ts index d1a8225b..441efc47 100644 --- a/v2/typechain-types/factories/GatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayZEVM__factory.ts @@ -21,6 +21,19 @@ const _abi = [ type: "receive", stateMutability: "payable", }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "FUNGIBLE_MODULE_ADDRESS", @@ -34,6 +47,19 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", @@ -56,6 +82,11 @@ const _abi = [ type: "bytes", internalType: "bytes", }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, { name: "message", type: "bytes", @@ -333,6 +364,67 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "initialize", @@ -342,19 +434,31 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", - name: "owner", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", inputs: [], outputs: [ { name: "", - type: "address", - internalType: "address", + type: "bool", + internalType: "bool", }, ], stateMutability: "view", @@ -374,17 +478,33 @@ const _abi = [ }, { type: "function", - name: "renounceOwnership", - inputs: [], + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], outputs: [], stateMutability: "nonpayable", }, { type: "function", - name: "transferOwnership", + name: "revokeRole", inputs: [ { - name: "newOwner", + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", type: "address", internalType: "address", }, @@ -392,6 +512,32 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "upgradeToAndCall", @@ -442,6 +588,11 @@ const _abi = [ type: "uint256", internalType: "uint256", }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, ], outputs: [], stateMutability: "nonpayable", @@ -450,11 +601,21 @@ const _abi = [ type: "function", name: "withdrawAndCall", inputs: [ + { + name: "receiver", + type: "bytes", + internalType: "bytes", + }, { name: "amount", type: "uint256", internalType: "uint256", }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, { name: "message", type: "bytes", @@ -468,20 +629,15 @@ const _abi = [ type: "function", name: "withdrawAndCall", inputs: [ - { - name: "receiver", - type: "bytes", - internalType: "bytes", - }, { name: "amount", type: "uint256", internalType: "uint256", }, { - name: "zrc20", - type: "address", - internalType: "address", + name: "chainId", + type: "uint256", + internalType: "uint256", }, { name: "message", @@ -515,6 +671,12 @@ const _abi = [ indexed: true, internalType: "address", }, + { + name: "chainId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, { name: "receiver", type: "bytes", @@ -545,16 +707,85 @@ const _abi = [ }, { type: "event", - name: "OwnershipTransferred", + name: "Paused", inputs: [ { - name: "previousOwner", + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", type: "address", indexed: true, internalType: "address", }, { - name: "newOwner", + name: "sender", type: "address", indexed: true, internalType: "address", @@ -562,6 +793,19 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Upgraded", @@ -580,23 +824,29 @@ const _abi = [ name: "Withdrawal", inputs: [ { - name: "from", + name: "sender", type: "address", indexed: true, internalType: "address", }, { - name: "zrc20", - type: "address", - indexed: false, - internalType: "address", + name: "chainId", + type: "uint256", + indexed: true, + internalType: "uint256", }, { - name: "to", + name: "receiver", type: "bytes", indexed: false, internalType: "bytes", }, + { + name: "zrc20", + type: "address", + indexed: false, + internalType: "address", + }, { name: "value", type: "uint256", @@ -624,6 +874,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -656,6 +927,16 @@ const _abi = [ name: "ERC1967NonPayable", inputs: [], }, + { + type: "error", + name: "EnforcedPause", + inputs: [], + }, + { + type: "error", + name: "ExpectedPause", + inputs: [], + }, { type: "error", name: "FailedInnerCall", @@ -696,28 +977,6 @@ const _abi = [ name: "OnlyWZETAOrFungible", inputs: [], }, - { - type: "error", - name: "OwnableInvalidOwner", - inputs: [ - { - name: "owner", - type: "address", - internalType: "address", - }, - ], - }, - { - type: "error", - name: "OwnableUnauthorizedAccount", - inputs: [ - { - name: "account", - type: "address", - internalType: "address", - }, - ], - }, { type: "error", name: "ReentrancyGuardReentrantCall", @@ -762,7 +1021,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220d3c04e4efcbf4c2321bdb921767d68b27240d29d07d2982f0f334bad40c04c5664736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/IAccessControl__factory.ts b/v2/typechain-types/factories/IAccessControl__factory.ts new file mode 100644 index 00000000..89a5cdbb --- /dev/null +++ b/v2/typechain-types/factories/IAccessControl__factory.ts @@ -0,0 +1,218 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + IAccessControl, + IAccessControlInterface, +} from "../IAccessControl"; + +const _abi = [ + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, +] as const; + +export class IAccessControl__factory { + static readonly abi = _abi; + static createInterface(): IAccessControlInterface { + return new Interface(_abi) as IAccessControlInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): IAccessControl { + return new Contract(address, _abi, runner) as unknown as IAccessControl; + } +} diff --git a/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts index c2e70710..f30ec9ca 100644 --- a/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts +++ b/v2/typechain-types/factories/IERC20Custody.sol/IERC20CustodyErrors__factory.ts @@ -9,11 +9,6 @@ import type { } from "../../IERC20Custody.sol/IERC20CustodyErrors"; const _abi = [ - { - type: "error", - name: "InvalidSender", - inputs: [], - }, { type: "error", name: "ZeroAddress", diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts index be6c8b1a..39b14449 100644 --- a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts +++ b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVMErrors__factory.ts @@ -39,11 +39,6 @@ const _abi = [ name: "InsufficientETHAmount", inputs: [], }, - { - type: "error", - name: "InvalidSender", - inputs: [], - }, { type: "error", name: "ZeroAddress", diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts index c9d953f6..10a0d89a 100644 --- a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMEvents__factory.ts @@ -19,6 +19,12 @@ const _abi = [ indexed: true, internalType: "address", }, + { + name: "chainId", + type: "uint256", + indexed: true, + internalType: "uint256", + }, { name: "receiver", type: "bytes", @@ -39,23 +45,29 @@ const _abi = [ name: "Withdrawal", inputs: [ { - name: "from", + name: "sender", type: "address", indexed: true, internalType: "address", }, { - name: "zrc20", - type: "address", - indexed: false, - internalType: "address", + name: "chainId", + type: "uint256", + indexed: true, + internalType: "uint256", }, { - name: "to", + name: "receiver", type: "bytes", indexed: false, internalType: "bytes", }, + { + name: "zrc20", + type: "address", + indexed: false, + internalType: "address", + }, { name: "value", type: "uint256", diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts index 149b91e6..a335659a 100644 --- a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts @@ -18,6 +18,11 @@ const _abi = [ type: "bytes", internalType: "bytes", }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, { name: "message", type: "bytes", @@ -173,6 +178,24 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "withdraw", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdrawAndCall", @@ -201,6 +224,29 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "withdrawAndCall", + inputs: [ + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, ] as const; export class IGatewayZEVM__factory { diff --git a/v2/typechain-types/factories/PausableUpgradeable__factory.ts b/v2/typechain-types/factories/PausableUpgradeable__factory.ts new file mode 100644 index 00000000..6c2b0b37 --- /dev/null +++ b/v2/typechain-types/factories/PausableUpgradeable__factory.ts @@ -0,0 +1,101 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { + PausableUpgradeable, + PausableUpgradeableInterface, +} from "../PausableUpgradeable"; + +const _abi = [ + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Initialized", + inputs: [ + { + name: "version", + type: "uint64", + indexed: false, + internalType: "uint64", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "EnforcedPause", + inputs: [], + }, + { + type: "error", + name: "ExpectedPause", + inputs: [], + }, + { + type: "error", + name: "InvalidInitialization", + inputs: [], + }, + { + type: "error", + name: "NotInitializing", + inputs: [], + }, +] as const; + +export class PausableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): PausableUpgradeableInterface { + return new Interface(_abi) as PausableUpgradeableInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): PausableUpgradeable { + return new Contract( + address, + _abi, + runner + ) as unknown as PausableUpgradeable; + } +} diff --git a/v2/typechain-types/factories/Pausable__factory.ts b/v2/typechain-types/factories/Pausable__factory.ts new file mode 100644 index 00000000..2043adf9 --- /dev/null +++ b/v2/typechain-types/factories/Pausable__factory.ts @@ -0,0 +1,68 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { Pausable, PausableInterface } from "../Pausable"; + +const _abi = [ + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "error", + name: "EnforcedPause", + inputs: [], + }, + { + type: "error", + name: "ExpectedPause", + inputs: [], + }, +] as const; + +export class Pausable__factory { + static readonly abi = _abi; + static createInterface(): PausableInterface { + return new Interface(_abi) as PausableInterface; + } + static connect(address: string, runner?: ContractRunner | null): Pausable { + return new Contract(address, _abi, runner) as unknown as Pausable; + } +} diff --git a/v2/typechain-types/factories/SenderZEVM__factory.ts b/v2/typechain-types/factories/SenderZEVM__factory.ts index 4a7c1876..0a3629b6 100644 --- a/v2/typechain-types/factories/SenderZEVM__factory.ts +++ b/v2/typechain-types/factories/SenderZEVM__factory.ts @@ -37,6 +37,11 @@ const _abi = [ type: "bytes", internalType: "bytes", }, + { + name: "chainId", + type: "uint256", + internalType: "uint256", + }, { name: "str", type: "string", @@ -115,7 +120,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorBase__factory.ts b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts index 7fcc1bfe..addcb7b2 100644 --- a/v2/typechain-types/factories/ZetaConnectorBase__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts @@ -9,6 +9,45 @@ import type { } from "../ZetaConnectorBase"; const _abi = [ + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "WITHDRAWER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "gateway", @@ -22,6 +61,87 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "receiveTokens", @@ -35,6 +155,61 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -48,6 +223,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", @@ -140,6 +322,107 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Withdraw", @@ -211,7 +494,33 @@ const _abi = [ }, { type: "error", - name: "InvalidSender", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "EnforcedPause", + inputs: [], + }, + { + type: "error", + name: "ExpectedPause", inputs: [], }, { diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts index 84035832..ce7b5485 100644 --- a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -38,9 +38,53 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], stateMutability: "nonpayable", }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "WITHDRAWER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "gateway", @@ -54,6 +98,87 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "receiveTokens", @@ -67,6 +192,61 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -80,6 +260,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", @@ -172,6 +359,107 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Withdraw", @@ -241,6 +529,27 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, { type: "error", name: "AddressEmptyCode", @@ -265,12 +574,17 @@ const _abi = [ }, { type: "error", - name: "FailedInnerCall", + name: "EnforcedPause", + inputs: [], + }, + { + type: "error", + name: "ExpectedPause", inputs: [], }, { type: "error", - name: "InvalidSender", + name: "FailedInnerCall", inputs: [], }, { @@ -297,7 +611,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea26469706673582212208cbe0eb147c1a63ed2ea2940f23632983fb1d478381547adfcd658a3b912319864736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] @@ -320,12 +634,14 @@ export class ZetaConnectorNative__factory extends ContractFactory { _gateway: AddressLike, _zetaToken: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( _gateway, _zetaToken, _tssAddress, + _admin, overrides || {} ); } @@ -333,12 +649,14 @@ export class ZetaConnectorNative__factory extends ContractFactory { _gateway: AddressLike, _zetaToken: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( _gateway, _zetaToken, _tssAddress, + _admin, overrides || {} ) as Promise< ZetaConnectorNative & { diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts index 858d7796..b37e3908 100644 --- a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -38,9 +38,53 @@ const _abi = [ type: "address", internalType: "address", }, + { + name: "_admin", + type: "address", + internalType: "address", + }, ], stateMutability: "nonpayable", }, + { + type: "function", + name: "DEFAULT_ADMIN_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "PAUSER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "WITHDRAWER_ROLE", + inputs: [], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, { type: "function", name: "gateway", @@ -54,6 +98,67 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "getRoleAdmin", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + ], + outputs: [ + { + name: "", + type: "bytes32", + internalType: "bytes32", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "grantRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "hasRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "maxSupply", @@ -67,6 +172,26 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "pause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "paused", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "receiveTokens", @@ -80,6 +205,42 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "renounceRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "callerConfirmation", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "revokeRole", + inputs: [ + { + name: "role", + type: "bytes32", + internalType: "bytes32", + }, + { + name: "account", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "setMaxSupply", @@ -93,6 +254,25 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, { type: "function", name: "tssAddress", @@ -106,6 +286,13 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "unpause", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", @@ -211,6 +398,107 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "Paused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleAdminChanged", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "previousAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "newAdminRole", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleGranted", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "RoleRevoked", + inputs: [ + { + name: "role", + type: "bytes32", + indexed: true, + internalType: "bytes32", + }, + { + name: "account", + type: "address", + indexed: true, + internalType: "address", + }, + { + name: "sender", + type: "address", + indexed: true, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "Unpaused", + inputs: [ + { + name: "account", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "Withdraw", @@ -280,6 +568,32 @@ const _abi = [ ], anonymous: false, }, + { + type: "error", + name: "AccessControlBadConfirmation", + inputs: [], + }, + { + type: "error", + name: "AccessControlUnauthorizedAccount", + inputs: [ + { + name: "account", + type: "address", + internalType: "address", + }, + { + name: "neededRole", + type: "bytes32", + internalType: "bytes32", + }, + ], + }, + { + type: "error", + name: "EnforcedPause", + inputs: [], + }, { type: "error", name: "ExceedsMaxSupply", @@ -287,7 +601,7 @@ const _abi = [ }, { type: "error", - name: "InvalidSender", + name: "ExpectedPause", inputs: [], }, { @@ -303,7 +617,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea26469706673582212207294529615b69bd2ce4e9d517320e094cf2d7f9a371d82bd9de7961118a2979b64736f6c634300081a0033"; + "0x60c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] @@ -326,12 +640,14 @@ export class ZetaConnectorNonNative__factory extends ContractFactory { _gateway: AddressLike, _zetaToken: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( _gateway, _zetaToken, _tssAddress, + _admin, overrides || {} ); } @@ -339,12 +655,14 @@ export class ZetaConnectorNonNative__factory extends ContractFactory { _gateway: AddressLike, _zetaToken: AddressLike, _tssAddress: AddressLike, + _admin: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( _gateway, _zetaToken, _tssAddress, + _admin, overrides || {} ) as Promise< ZetaConnectorNonNative & { diff --git a/v2/typechain-types/factories/index.ts b/v2/typechain-types/factories/index.ts index 97c2d215..51ee61f2 100644 --- a/v2/typechain-types/factories/index.ts +++ b/v2/typechain-types/factories/index.ts @@ -21,11 +21,16 @@ export * as zrc20Sol from "./ZRC20.sol"; export * as zetaNonEthSol from "./Zeta.non-eth.sol"; export * as draftIerc1822Sol from "./draft-IERC1822.sol"; export * as draftIerc6093Sol from "./draft-IERC6093.sol"; +export * as introspection from "./introspection"; export * as utils from "./utils"; export * as zContractSol from "./zContract.sol"; +export { AccessControl__factory } from "./AccessControl__factory"; +export { AccessControlUpgradeable__factory } from "./AccessControlUpgradeable__factory"; export { Address__factory } from "./Address__factory"; export { BeaconProxy__factory } from "./BeaconProxy__factory"; export { ContextUpgradeable__factory } from "./ContextUpgradeable__factory"; +export { ERC165__factory } from "./ERC165__factory"; +export { ERC165Upgradeable__factory } from "./ERC165Upgradeable__factory"; export { ERC1967Proxy__factory } from "./ERC1967Proxy__factory"; export { ERC1967Utils__factory } from "./ERC1967Utils__factory"; export { ERC20__factory } from "./ERC20__factory"; @@ -36,6 +41,7 @@ export { GatewayEVM__factory } from "./GatewayEVM__factory"; export { GatewayEVMEchidnaTest__factory } from "./GatewayEVMEchidnaTest__factory"; export { GatewayEVMUpgradeTest__factory } from "./GatewayEVMUpgradeTest__factory"; export { GatewayZEVM__factory } from "./GatewayZEVM__factory"; +export { IAccessControl__factory } from "./IAccessControl__factory"; export { IBeacon__factory } from "./IBeacon__factory"; export { IERC165__factory } from "./IERC165__factory"; export { IERC1967__factory } from "./IERC1967__factory"; @@ -53,7 +59,8 @@ export { Math__factory } from "./Math__factory"; export { MockERC20__factory } from "./MockERC20__factory"; export { MockERC721__factory } from "./MockERC721__factory"; export { Ownable__factory } from "./Ownable__factory"; -export { OwnableUpgradeable__factory } from "./OwnableUpgradeable__factory"; +export { Pausable__factory } from "./Pausable__factory"; +export { PausableUpgradeable__factory } from "./PausableUpgradeable__factory"; export { Proxy__factory } from "./Proxy__factory"; export { ProxyAdmin__factory } from "./ProxyAdmin__factory"; export { ReceiverEVM__factory } from "./ReceiverEVM__factory"; diff --git a/v2/typechain-types/factories/introspection/IERC165__factory.ts b/v2/typechain-types/factories/introspection/IERC165__factory.ts new file mode 100644 index 00000000..d36d72a9 --- /dev/null +++ b/v2/typechain-types/factories/introspection/IERC165__factory.ts @@ -0,0 +1,38 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { IERC165, IERC165Interface } from "../../introspection/IERC165"; + +const _abi = [ + { + type: "function", + name: "supportsInterface", + inputs: [ + { + name: "interfaceId", + type: "bytes4", + internalType: "bytes4", + }, + ], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, +] as const; + +export class IERC165__factory { + static readonly abi = _abi; + static createInterface(): IERC165Interface { + return new Interface(_abi) as IERC165Interface; + } + static connect(address: string, runner?: ContractRunner | null): IERC165 { + return new Contract(address, _abi, runner) as unknown as IERC165; + } +} diff --git a/v2/typechain-types/factories/introspection/index.ts b/v2/typechain-types/factories/introspection/index.ts new file mode 100644 index 00000000..85d37333 --- /dev/null +++ b/v2/typechain-types/factories/introspection/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC165__factory } from "./IERC165__factory"; diff --git a/v2/typechain-types/index.ts b/v2/typechain-types/index.ts index eb289aa9..c3d0734e 100644 --- a/v2/typechain-types/index.ts +++ b/v2/typechain-types/index.ts @@ -41,13 +41,19 @@ import type * as draftIerc1822Sol from "./draft-IERC1822.sol"; export type { draftIerc1822Sol }; import type * as draftIerc6093Sol from "./draft-IERC6093.sol"; export type { draftIerc6093Sol }; +import type * as introspection from "./introspection"; +export type { introspection }; import type * as utils from "./utils"; export type { utils }; import type * as zContractSol from "./zContract.sol"; export type { zContractSol }; +export type { AccessControl } from "./AccessControl"; +export type { AccessControlUpgradeable } from "./AccessControlUpgradeable"; export type { Address } from "./Address"; export type { BeaconProxy } from "./BeaconProxy"; export type { ContextUpgradeable } from "./ContextUpgradeable"; +export type { ERC165 } from "./ERC165"; +export type { ERC165Upgradeable } from "./ERC165Upgradeable"; export type { ERC1967Proxy } from "./ERC1967Proxy"; export type { ERC1967Utils } from "./ERC1967Utils"; export type { ERC20 } from "./ERC20"; @@ -58,6 +64,7 @@ export type { GatewayEVM } from "./GatewayEVM"; export type { GatewayEVMEchidnaTest } from "./GatewayEVMEchidnaTest"; export type { GatewayEVMUpgradeTest } from "./GatewayEVMUpgradeTest"; export type { GatewayZEVM } from "./GatewayZEVM"; +export type { IAccessControl } from "./IAccessControl"; export type { IBeacon } from "./IBeacon"; export type { IERC165 } from "./IERC165"; export type { IERC1967 } from "./IERC1967"; @@ -75,7 +82,8 @@ export type { Math } from "./Math"; export type { MockERC20 } from "./MockERC20"; export type { MockERC721 } from "./MockERC721"; export type { Ownable } from "./Ownable"; -export type { OwnableUpgradeable } from "./OwnableUpgradeable"; +export type { Pausable } from "./Pausable"; +export type { PausableUpgradeable } from "./PausableUpgradeable"; export type { Proxy } from "./Proxy"; export type { ProxyAdmin } from "./ProxyAdmin"; export type { ReceiverEVM } from "./ReceiverEVM"; @@ -94,6 +102,8 @@ export type { ZetaConnectorBase } from "./ZetaConnectorBase"; export type { ZetaConnectorNative } from "./ZetaConnectorNative"; export type { ZetaConnectorNonNative } from "./ZetaConnectorNonNative"; export * as factories from "./factories"; +export { AccessControl__factory } from "./factories/AccessControl__factory"; +export { AccessControlUpgradeable__factory } from "./factories/AccessControlUpgradeable__factory"; export { Address__factory } from "./factories/Address__factory"; export { BeaconProxy__factory } from "./factories/BeaconProxy__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; @@ -105,6 +115,8 @@ export type { IERC20Errors } from "./draft-IERC6093.sol/IERC20Errors"; export { IERC20Errors__factory } from "./factories/draft-IERC6093.sol/IERC20Errors__factory"; export type { IERC721Errors } from "./draft-IERC6093.sol/IERC721Errors"; export { IERC721Errors__factory } from "./factories/draft-IERC6093.sol/IERC721Errors__factory"; +export { ERC165__factory } from "./factories/ERC165__factory"; +export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; export { ERC1967Proxy__factory } from "./factories/ERC1967Proxy__factory"; export { ERC1967Utils__factory } from "./factories/ERC1967Utils__factory"; export { ERC20__factory } from "./factories/ERC20__factory"; @@ -117,6 +129,7 @@ export { GatewayEVM__factory } from "./factories/GatewayEVM__factory"; export { GatewayEVMEchidnaTest__factory } from "./factories/GatewayEVMEchidnaTest__factory"; export { GatewayEVMUpgradeTest__factory } from "./factories/GatewayEVMUpgradeTest__factory"; export { GatewayZEVM__factory } from "./factories/GatewayZEVM__factory"; +export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { IBeacon__factory } from "./factories/IBeacon__factory"; export { IERC165__factory } from "./factories/IERC165__factory"; export { IERC1967__factory } from "./factories/IERC1967__factory"; @@ -171,7 +184,8 @@ export { Math__factory } from "./factories/Math__factory"; export { MockERC20__factory } from "./factories/MockERC20__factory"; export { MockERC721__factory } from "./factories/MockERC721__factory"; export { Ownable__factory } from "./factories/Ownable__factory"; -export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; +export { Pausable__factory } from "./factories/Pausable__factory"; +export { PausableUpgradeable__factory } from "./factories/PausableUpgradeable__factory"; export { Proxy__factory } from "./factories/Proxy__factory"; export { ProxyAdmin__factory } from "./factories/ProxyAdmin__factory"; export { ReceiverEVM__factory } from "./factories/ReceiverEVM__factory"; diff --git a/v2/typechain-types/introspection/IERC165.ts b/v2/typechain-types/introspection/IERC165.ts new file mode 100644 index 00000000..66b9d29e --- /dev/null +++ b/v2/typechain-types/introspection/IERC165.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BytesLike, + FunctionFragment, + Result, + Interface, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedListener, + TypedContractMethod, +} from "../common"; + +export interface IERC165Interface extends Interface { + getFunction(nameOrSignature: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; +} + +export interface IERC165 extends BaseContract { + connect(runner?: ContractRunner | null): IERC165; + waitForDeployment(): Promise; + + interface: IERC165Interface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + supportsInterface: TypedContractMethod< + [interfaceId: BytesLike], + [boolean], + "view" + >; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "supportsInterface" + ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + + filters: {}; +} diff --git a/v2/typechain-types/introspection/index.ts b/v2/typechain-types/introspection/index.ts new file mode 100644 index 00000000..3fcca5c2 --- /dev/null +++ b/v2/typechain-types/introspection/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC165 } from "./IERC165"; diff --git a/v2/yarn.lock b/v2/yarn.lock index 18b3e888..4c3bd332 100644 --- a/v2/yarn.lock +++ b/v2/yarn.lock @@ -220,62 +220,62 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== -"@typescript-eslint/eslint-plugin@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz#c8ed1af1ad2928ede5cdd207f7e3090499e1f77b" - integrity sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A== +"@typescript-eslint/eslint-plugin@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.17.0" - "@typescript-eslint/type-utils" "7.17.0" - "@typescript-eslint/utils" "7.17.0" - "@typescript-eslint/visitor-keys" "7.17.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.17.0.tgz#be8e32c159190cd40a305a2121220eadea5a88e7" - integrity sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A== +"@typescript-eslint/parser@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== dependencies: - "@typescript-eslint/scope-manager" "7.17.0" - "@typescript-eslint/types" "7.17.0" - "@typescript-eslint/typescript-estree" "7.17.0" - "@typescript-eslint/visitor-keys" "7.17.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz#e072d0f914662a7bfd6c058165e3c2b35ea26b9d" - integrity sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA== +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== dependencies: - "@typescript-eslint/types" "7.17.0" - "@typescript-eslint/visitor-keys" "7.17.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/type-utils@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz#c5da78feb134c9c9978cbe89e2b1a589ed22091a" - integrity sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA== +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: - "@typescript-eslint/typescript-estree" "7.17.0" - "@typescript-eslint/utils" "7.17.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.17.0.tgz#7ce8185bdf06bc3494e73d143dbf3293111b9cff" - integrity sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A== +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/typescript-estree@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz#dcab3fea4c07482329dd6107d3c6480e228e4130" - integrity sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw== +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: - "@typescript-eslint/types" "7.17.0" - "@typescript-eslint/visitor-keys" "7.17.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -283,22 +283,22 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.17.0.tgz#815cd85b9001845d41b699b0ce4f92d6dfb84902" - integrity sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw== +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.17.0" - "@typescript-eslint/types" "7.17.0" - "@typescript-eslint/typescript-estree" "7.17.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" -"@typescript-eslint/visitor-keys@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz#680465c734be30969e564b4647f38d6cdf49bfb0" - integrity sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A== +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: - "@typescript-eslint/types" "7.17.0" + "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -547,9 +547,9 @@ date-fns@^2.30.0: "@babel/runtime" "^7.21.0" debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== dependencies: ms "2.1.2" @@ -1425,13 +1425,13 @@ typechain@^8.3.2: ts-essentials "^7.0.1" typescript-eslint@^7.17.0: - version "7.17.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.17.0.tgz#cc5eddafd38b3c1fe8a52826469d5c78700b7aa7" - integrity sha512-spQxsQvPguduCUfyUvLItvKqK3l8KJ/kqs5Pb/URtzQ5AC53Z6us32St37rpmlt2uESG23lOFpV4UErrmy4dZQ== + version "7.18.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.18.0.tgz#e90d57649b2ad37a7475875fa3e834a6d9f61eb2" + integrity sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA== dependencies: - "@typescript-eslint/eslint-plugin" "7.17.0" - "@typescript-eslint/parser" "7.17.0" - "@typescript-eslint/utils" "7.17.0" + "@typescript-eslint/eslint-plugin" "7.18.0" + "@typescript-eslint/parser" "7.18.0" + "@typescript-eslint/utils" "7.18.0" typescript@^5.5.4: version "5.5.4" From ad2f4d96c11f2560f8d848ae1a553b825e01ae04 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 19:59:00 +0200 Subject: [PATCH 44/60] modify zrc20 --- v2/src/zevm/GatewayZEVM.sol | 4 +-- v2/{test/utils => src/zevm}/ZRC20.sol | 43 ++++++++++++++++----------- v2/src/zevm/interfaces/IZRC20.sol | 3 +- v2/test/GatewayEVMZEVM.t.sol | 4 +-- v2/test/GatewayZEVM.t.sol | 6 ++-- 5 files changed, 35 insertions(+), 25 deletions(-) rename v2/{test/utils => src/zevm}/ZRC20.sol (89%) diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index a05eb196..61ecec1a 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -118,7 +118,7 @@ contract GatewayZEVM is /// @param zrc20 The address of the ZRC20 token. function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant whenNotPaused { uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); + emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).protocolFlatFee(), ""); } /// @notice Withdraw ZRC20 tokens and call a smart contract on an external chain. @@ -137,7 +137,7 @@ contract GatewayZEVM is whenNotPaused { uint256 gasFee = _withdrawZRC20(amount, zrc20); - emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); + emit Withdrawal(msg.sender, 0, receiver, zrc20, amount, gasFee, IZRC20(zrc20).protocolFlatFee(), message); } /// @notice Withdraw ZETA tokens to an external chain. diff --git a/v2/test/utils/ZRC20.sol b/v2/src/zevm/ZRC20.sol similarity index 89% rename from v2/test/utils/ZRC20.sol rename to v2/src/zevm/ZRC20.sol index 8d69f45a..551fe477 100644 --- a/v2/test/utils/ZRC20.sol +++ b/v2/src/zevm/ZRC20.sol @@ -29,13 +29,13 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { /// @notice Coin type, checkout Interfaces.sol. CoinType public immutable COIN_TYPE; /// @notice System contract address. - address public SYSTEM_CONTRACT_ADDRESS; + address public systemContractAddress; /// @notice Gateway contract address. - address public GATEWAY_CONTRACT_ADDRESS; + address public gatewayAddress; /// @notice Gas limit. - uint256 public GAS_LIMIT; + uint256 public gasLimit; /// @notice Protocol flat fee. - uint256 public override PROTOCOL_FLAT_FEE; + uint256 public override protocolFlatFee; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; @@ -71,7 +71,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { CoinType coinType_, uint256 gasLimit_, address systemContractAddress_, - address gatewayContractAddress_ + address gatewayAddress_ ) { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); _name = name_; @@ -79,9 +79,9 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { _decimals = decimals_; CHAIN_ID = chainid_; COIN_TYPE = coinType_; - GAS_LIMIT = gasLimit_; - SYSTEM_CONTRACT_ADDRESS = systemContractAddress_; - GATEWAY_CONTRACT_ADDRESS = gatewayContractAddress_; + gasLimit = gasLimit_; + systemContractAddress = systemContractAddress_; + gatewayAddress = gatewayAddress_; } /** @@ -232,8 +232,8 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { */ function deposit(address to, uint256 amount) external override returns (bool) { if ( - msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != SYSTEM_CONTRACT_ADDRESS - && msg.sender != GATEWAY_CONTRACT_ADDRESS + msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != systemContractAddress + && msg.sender != gatewayAddress ) revert InvalidSender(); _mint(to, amount); emit Deposit(abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), to, amount); @@ -246,14 +246,14 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { * withdraw() */ function withdrawGasFee() public view override returns (address, uint256) { - address gasZRC20 = ISystem(SYSTEM_CONTRACT_ADDRESS).gasCoinZRC20ByChainId(CHAIN_ID); + address gasZRC20 = ISystem(systemContractAddress).gasCoinZRC20ByChainId(CHAIN_ID); if (gasZRC20 == address(0)) revert ZeroGasCoin(); - uint256 gasPrice = ISystem(SYSTEM_CONTRACT_ADDRESS).gasPriceByChainId(CHAIN_ID); + uint256 gasPrice = ISystem(systemContractAddress).gasPriceByChainId(CHAIN_ID); if (gasPrice == 0) { revert ZeroGasPrice(); } - uint256 gasFee = gasPrice * GAS_LIMIT + PROTOCOL_FLAT_FEE; + uint256 gasFee = gasPrice * gasLimit + protocolFlatFee; return (gasZRC20, gasFee); } @@ -271,7 +271,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { revert GasFeeTransferFailed(); } _burn(msg.sender, amount); - emit Withdrawal(msg.sender, to, amount, gasFee, PROTOCOL_FLAT_FEE); + emit Withdrawal(msg.sender, to, amount, gasFee, protocolFlatFee); return true; } @@ -280,16 +280,25 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @param addr, new system contract address. */ function updateSystemContractAddress(address addr) external onlyFungible { - SYSTEM_CONTRACT_ADDRESS = addr; + systemContractAddress = addr; emit UpdatedSystemContract(addr); } + /** + * @dev Updates gateway contract address. Can only be updated by the fungible module. + * @param addr, new gateway contract address. + */ + function updateGatewayAddress(address addr) external onlyFungible { + gatewayAddress = addr; + emit UpdatedGateway(addr); + } + /** * @dev Updates gas limit. Can only be updated by the fungible module. * @param gasLimit, new gas limit. */ function updateGasLimit(uint256 gasLimit) external onlyFungible { - GAS_LIMIT = gasLimit; + gasLimit = gasLimit; emit UpdatedGasLimit(gasLimit); } @@ -298,7 +307,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @param protocolFlatFee, new protocol flat fee. */ function updateProtocolFlatFee(uint256 protocolFlatFee) external onlyFungible { - PROTOCOL_FLAT_FEE = protocolFlatFee; + protocolFlatFee = protocolFlatFee; emit UpdatedProtocolFlatFee(protocolFlatFee); } } diff --git a/v2/src/zevm/interfaces/IZRC20.sol b/v2/src/zevm/interfaces/IZRC20.sol index 8987c6ea..062d6a8f 100644 --- a/v2/src/zevm/interfaces/IZRC20.sol +++ b/v2/src/zevm/interfaces/IZRC20.sol @@ -24,7 +24,7 @@ interface IZRC20 { function withdrawGasFee() external view returns (address, uint256); - function PROTOCOL_FLAT_FEE() external view returns (uint256); + function protocolFlatFee() external view returns (uint256); } /// @title IZRC20Metadata @@ -45,6 +45,7 @@ interface ZRC20Events { event Deposit(bytes from, address indexed to, uint256 value); event Withdrawal(address indexed from, bytes to, uint256 value, uint256 gasFee, uint256 protocolFlatFee); event UpdatedSystemContract(address systemContract); + event UpdatedGateway(address gateway); event UpdatedGasLimit(uint256 gasLimit); event UpdatedProtocolFlatFee(uint256 protocolFlatFee); } diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index 322cc0e9..c1cd5087 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -14,7 +14,7 @@ import "src/evm/ZetaConnectorNonNative.sol"; import "./utils/SenderZEVM.sol"; import "./utils/SystemContractMock.sol"; -import "./utils/ZRC20.sol"; +import "src/zevm/ZRC20.sol"; import "src/zevm/GatewayZEVM.sol"; import "./utils/IReceiverEVM.sol"; @@ -172,7 +172,7 @@ contract GatewayEVMZEVMTest is address(zrc20), 1_000_000, 0, - zrc20.PROTOCOL_FLAT_FEE(), + zrc20.protocolFlatFee(), message ); vm.prank(ownerZEVM); diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index 3cd5c7df..434fcaa3 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -9,7 +9,7 @@ import "./utils/SystemContract.sol"; import "./utils/TestZContract.sol"; import "./utils/WZETA.sol"; -import "./utils/ZRC20.sol"; +import "src/zevm/ZRC20.sol"; import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "src/zevm/GatewayZEVM.sol"; import "src/zevm/interfaces/IGatewayZEVM.sol"; @@ -65,7 +65,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors uint256 ownerBalanceBefore = zrc20.balanceOf(owner); vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal(owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), ""); + emit Withdrawal(owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.protocolFlatFee(), ""); gateway.withdraw(abi.encodePacked(addr1), amount, address(zrc20)); uint256 ownerBalanceAfter = zrc20.balanceOf(owner); @@ -112,7 +112,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors bytes memory message = abi.encodeWithSignature("hello(address)", addr1); vm.expectEmit(true, true, true, true, address(gateway)); emit Withdrawal( - owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.PROTOCOL_FLAT_FEE(), message + owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.protocolFlatFee(), message ); gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); From a7897cd1a553233a17bd59be4600a36605fbec09 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 19:59:54 +0200 Subject: [PATCH 45/60] generate --- .../gatewayevmzevmtest.go | 2 +- v2/pkg/gatewayzevm.sol/gatewayzevm.go | 2 +- .../gatewayzevminboundtest.go | 2 +- .../gatewayzevmoutboundtest.go | 2 +- v2/pkg/izrc20.sol/izrc20.go | 64 +-- v2/pkg/izrc20.sol/izrc20metadata.go | 64 +-- v2/pkg/izrc20.sol/zrc20events.go | 136 +++++- v2/pkg/senderzevm.sol/senderzevm.go | 2 +- v2/pkg/systemcontract.sol/systemcontract.go | 2 +- .../systemcontractmock.go | 2 +- v2/pkg/zrc20.sol/zrc20.go | 407 ++++++++++++------ v2/src/zevm/ZRC20.sol | 3 +- v2/test/GatewayEVMZEVM.t.sol | 12 +- v2/test/GatewayZEVM.t.sol | 7 +- v2/typechain-types/IZRC20.sol/IZRC20.ts | 28 +- .../IZRC20.sol/IZRC20Metadata.ts | 28 +- v2/typechain-types/IZRC20.sol/ZRC20Events.ts | 31 ++ v2/typechain-types/ZRC20.sol/ZRC20.ts | 147 ++++--- .../factories/GatewayZEVM__factory.ts | 2 +- .../IZRC20.sol/IZRC20Metadata__factory.ts | 26 +- .../factories/IZRC20.sol/IZRC20__factory.ts | 26 +- .../IZRC20.sol/ZRC20Events__factory.ts | 13 + .../factories/SenderZEVM__factory.ts | 2 +- .../SystemContract__factory.ts | 2 +- .../SystemContractMock__factory.ts | 2 +- .../factories/ZRC20.sol/ZRC20__factory.ts | 142 +++--- 26 files changed, 778 insertions(+), 378 deletions(-) diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index 50ea2350..f4e10687 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50620105c6806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f4240916000918491634d8943bb916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b6119e8806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220d49d6a6accb8bf72157d03d327cb4f98b0346f2cd9283cb572dde3ee0071dc7364736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010696806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b611ab8806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a2646970667358221220c1f74dff2d4ee390d4d5bd1b3e6cf9f8f9478549e63896a2bd6c16722f2f0b4164736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.sol/gatewayzevm.go b/v2/pkg/gatewayzevm.sol/gatewayzevm.go index 299c694c..a882c8be 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -46,7 +46,7 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220d3c04e4efcbf4c2321bdb921767d68b27240d29d07d2982f0f334bad40c04c5664736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220a674352ad8eda2675de3e0d97b91ed3fa3da4cd5c58000ddb3dbd7fc65105db464736f6c634300081a0033", } // GatewayZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index 47caa611..b5486878 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cc988061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169189916000918491634d8943bb916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b6119e88061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220af8f49670b75519cf2a646a68c6ac25f69644a7a8517dc20436fe53c85c66d7564736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cd688061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918991600091849163fa62d57f916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918891600091849163fa62d57f916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b611ab88061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a2646970667358221220e8b2f103f42e6e27b2ded0bbdeef6c87db2299f317e13b52c915e1294ad82fb564736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index a0582622..88aa8174 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061df238061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b6119e88061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033a2646970667358221220670d3b300bb5831c5bb424295505189dc316cf58f69dbc6904fbb6cb7e3475d964736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dff38061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b611ab88061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a264697066735822122059f6a417763a6e4987843519f3b5fa5d7d4fe4db90fc011a6ff0dd639020a12f64736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/izrc20.sol/izrc20.go b/v2/pkg/izrc20.sol/izrc20.go index bac67017..a484e463 100644 --- a/v2/pkg/izrc20.sol/izrc20.go +++ b/v2/pkg/izrc20.sol/izrc20.go @@ -31,7 +31,7 @@ var ( // IZRC20MetaData contains all meta data concerning the IZRC20 contract. var IZRC20MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", } // IZRC20ABI is the input ABI used to generate the binding from. @@ -180,37 +180,6 @@ func (_IZRC20 *IZRC20TransactorRaw) Transact(opts *bind.TransactOpts, method str return _IZRC20.Contract.contract.Transact(opts, method, params...) } -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20 *IZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20.Contract.PROTOCOLFLATFEE(&_IZRC20.CallOpts) -} - // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) @@ -273,6 +242,37 @@ func (_IZRC20 *IZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, return _IZRC20.Contract.BalanceOf(&_IZRC20.CallOpts, account) } +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20 *IZRC20Caller) ProtocolFlatFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20.contract.Call(opts, &out, "protocolFlatFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20 *IZRC20Session) ProtocolFlatFee() (*big.Int, error) { + return _IZRC20.Contract.ProtocolFlatFee(&_IZRC20.CallOpts) +} + +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20 *IZRC20CallerSession) ProtocolFlatFee() (*big.Int, error) { + return _IZRC20.Contract.ProtocolFlatFee(&_IZRC20.CallOpts) +} + // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) diff --git a/v2/pkg/izrc20.sol/izrc20metadata.go b/v2/pkg/izrc20.sol/izrc20metadata.go index b153b402..bc6d1d2c 100644 --- a/v2/pkg/izrc20.sol/izrc20metadata.go +++ b/v2/pkg/izrc20.sol/izrc20metadata.go @@ -31,7 +31,7 @@ var ( // IZRC20MetadataMetaData contains all meta data concerning the IZRC20Metadata contract. var IZRC20MetadataMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", } // IZRC20MetadataABI is the input ABI used to generate the binding from. @@ -180,37 +180,6 @@ func (_IZRC20Metadata *IZRC20MetadataTransactorRaw) Transact(opts *bind.Transact return _IZRC20Metadata.Contract.contract.Transact(opts, method, params...) } -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCaller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _IZRC20Metadata.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) -} - -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. -// -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_IZRC20Metadata *IZRC20MetadataCallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _IZRC20Metadata.Contract.PROTOCOLFLATFEE(&_IZRC20Metadata.CallOpts) -} - // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) @@ -335,6 +304,37 @@ func (_IZRC20Metadata *IZRC20MetadataCallerSession) Name() (string, error) { return _IZRC20Metadata.Contract.Name(&_IZRC20Metadata.CallOpts) } +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCaller) ProtocolFlatFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IZRC20Metadata.contract.Call(opts, &out, "protocolFlatFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataSession) ProtocolFlatFee() (*big.Int, error) { + return _IZRC20Metadata.Contract.ProtocolFlatFee(&_IZRC20Metadata.CallOpts) +} + +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. +// +// Solidity: function protocolFlatFee() view returns(uint256) +func (_IZRC20Metadata *IZRC20MetadataCallerSession) ProtocolFlatFee() (*big.Int, error) { + return _IZRC20Metadata.Contract.ProtocolFlatFee(&_IZRC20Metadata.CallOpts) +} + // Symbol is a free data retrieval call binding the contract method 0x95d89b41. // // Solidity: function symbol() view returns(string) diff --git a/v2/pkg/izrc20.sol/zrc20events.go b/v2/pkg/izrc20.sol/zrc20events.go index 76f02207..4b3fd349 100644 --- a/v2/pkg/izrc20.sol/zrc20events.go +++ b/v2/pkg/izrc20.sol/zrc20events.go @@ -31,7 +31,7 @@ var ( // ZRC20EventsMetaData contains all meta data concerning the ZRC20Events contract. var ZRC20EventsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGateway\",\"inputs\":[{\"name\":\"gateway\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", } // ZRC20EventsABI is the input ABI used to generate the binding from. @@ -768,6 +768,140 @@ func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedGasLimit(log types.Log) (*Z return event, nil } +// ZRC20EventsUpdatedGatewayIterator is returned from FilterUpdatedGateway and is used to iterate over the raw logs and unpacked data for UpdatedGateway events raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGatewayIterator struct { + Event *ZRC20EventsUpdatedGateway // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20EventsUpdatedGatewayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGateway) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20EventsUpdatedGateway) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20EventsUpdatedGatewayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20EventsUpdatedGatewayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20EventsUpdatedGateway represents a UpdatedGateway event raised by the ZRC20Events contract. +type ZRC20EventsUpdatedGateway struct { + Gateway common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGateway is a free log retrieval operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20Events *ZRC20EventsFilterer) FilterUpdatedGateway(opts *bind.FilterOpts) (*ZRC20EventsUpdatedGatewayIterator, error) { + + logs, sub, err := _ZRC20Events.contract.FilterLogs(opts, "UpdatedGateway") + if err != nil { + return nil, err + } + return &ZRC20EventsUpdatedGatewayIterator{contract: _ZRC20Events.contract, event: "UpdatedGateway", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGateway is a free log subscription operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20Events *ZRC20EventsFilterer) WatchUpdatedGateway(opts *bind.WatchOpts, sink chan<- *ZRC20EventsUpdatedGateway) (event.Subscription, error) { + + logs, sub, err := _ZRC20Events.contract.WatchLogs(opts, "UpdatedGateway") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20EventsUpdatedGateway) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGateway", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGateway is a log parse operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20Events *ZRC20EventsFilterer) ParseUpdatedGateway(log types.Log) (*ZRC20EventsUpdatedGateway, error) { + event := new(ZRC20EventsUpdatedGateway) + if err := _ZRC20Events.contract.UnpackLog(event, "UpdatedGateway", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZRC20EventsUpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20Events contract. type ZRC20EventsUpdatedProtocolFlatFeeIterator struct { Event *ZRC20EventsUpdatedProtocolFlatFee // Event containing the contract specifics and raw log diff --git a/v2/pkg/senderzevm.sol/senderzevm.go b/v2/pkg/senderzevm.sol/senderzevm.go index ce210984..d4052b61 100644 --- a/v2/pkg/senderzevm.sol/senderzevm.go +++ b/v2/pkg/senderzevm.sol/senderzevm.go @@ -32,7 +32,7 @@ var ( // SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. var SenderZEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", - Bin: "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/systemcontract.sol/systemcontract.go b/v2/pkg/systemcontract.sol/systemcontract.go index 1a9415b5..cdb8ea25 100644 --- a/v2/pkg/systemcontract.sol/systemcontract.go +++ b/v2/pkg/systemcontract.sol/systemcontract.go @@ -39,7 +39,7 @@ type ZContext struct { // SystemContractMetaData contains all meta data concerning the SystemContract contract. var SystemContractMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setConnectorZEVMAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasZetaPool\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"erc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaConnectorZEVMAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetConnectorZEVM\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a0033", } // SystemContractABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/systemcontractmock.sol/systemcontractmock.go b/v2/pkg/systemcontractmock.sol/systemcontractmock.go index 4efd47d9..0d3ff027 100644 --- a/v2/pkg/systemcontractmock.sol/systemcontractmock.go +++ b/v2/pkg/systemcontractmock.sol/systemcontractmock.go @@ -32,7 +32,7 @@ var ( // SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. var SystemContractMockMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a0033", } // SystemContractMockABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20.sol/zrc20.go b/v2/pkg/zrc20.sol/zrc20.go index f0b38baa..d05f6af4 100644 --- a/v2/pkg/zrc20.sol/zrc20.go +++ b/v2/pkg/zrc20.sol/zrc20.go @@ -31,8 +31,8 @@ var ( // ZRC20MetaData contains all meta data concerning the ZRC20 contract. var ZRC20MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gatewayAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGatewayAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGateway\",\"inputs\":[{\"name\":\"gateway\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033", } // ZRC20ABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZRC20ABI = ZRC20MetaData.ABI var ZRC20Bin = ZRC20MetaData.Bin // DeployZRC20 deploys a new Ethereum contract, binding an instance of ZRC20 to it. -func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayContractAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20, error) { +func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, decimals_ uint8, chainid_ *big.Int, coinType_ uint8, gasLimit_ *big.Int, systemContractAddress_ common.Address, gatewayAddress_ common.Address) (common.Address, *types.Transaction, *ZRC20, error) { parsed, err := ZRC20MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZRC20(auth *bind.TransactOpts, backend bind.ContractBackend, name_ st return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20Bin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayContractAddress_) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20Bin), backend, name_, symbol_, decimals_, chainid_, coinType_, gasLimit_, systemContractAddress_, gatewayAddress_) if err != nil { return common.Address{}, nil, nil, err } @@ -295,12 +295,12 @@ func (_ZRC20 *ZRC20CallerSession) FUNGIBLEMODULEADDRESS() (common.Address, error return _ZRC20.Contract.FUNGIBLEMODULEADDRESS(&_ZRC20.CallOpts) } -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20Caller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "GAS_LIMIT") + err := _ZRC20.contract.Call(opts, &out, "allowance", owner, spender) if err != nil { return *new(*big.Int), err @@ -312,212 +312,212 @@ func (_ZRC20 *ZRC20Caller) GASLIMIT(opts *bind.CallOpts) (*big.Int, error) { } -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20Session) GASLIMIT() (*big.Int, error) { - return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) } -// GASLIMIT is a free data retrieval call binding the contract method 0x091d2788. +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // -// Solidity: function GAS_LIMIT() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) GASLIMIT() (*big.Int, error) { - return _ZRC20.Contract.GASLIMIT(&_ZRC20.CallOpts) +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) } -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Caller) GATEWAYCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "GATEWAY_CONTRACT_ADDRESS") + err := _ZRC20.contract.Call(opts, &out, "balanceOf", account) if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Session) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20.CallOpts) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) } -// GATEWAYCONTRACTADDRESS is a free data retrieval call binding the contract method 0xe2f535b8. +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // -// Solidity: function GATEWAY_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20CallerSession) GATEWAYCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.GATEWAYCONTRACTADDRESS(&_ZRC20.CallOpts) +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) } -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20Caller) PROTOCOLFLATFEE(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "PROTOCOL_FLAT_FEE") + err := _ZRC20.contract.Call(opts, &out, "decimals") if err != nil { - return *new(*big.Int), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20Session) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20Session) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) } -// PROTOCOLFLATFEE is a free data retrieval call binding the contract method 0x4d8943bb. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function PROTOCOL_FLAT_FEE() view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) PROTOCOLFLATFEE() (*big.Int, error) { - return _ZRC20.Contract.PROTOCOLFLATFEE(&_ZRC20.CallOpts) +// Solidity: function decimals() view returns(uint8) +func (_ZRC20 *ZRC20CallerSession) Decimals() (uint8, error) { + return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) } -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// GasLimit is a free data retrieval call binding the contract method 0xf68016b7. // -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Caller) SYSTEMCONTRACTADDRESS(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function gasLimit() view returns(uint256) +func (_ZRC20 *ZRC20Caller) GasLimit(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "SYSTEM_CONTRACT_ADDRESS") + err := _ZRC20.contract.Call(opts, &out, "gasLimit") if err != nil { - return *new(common.Address), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// GasLimit is a free data retrieval call binding the contract method 0xf68016b7. // -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20Session) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) +// Solidity: function gasLimit() view returns(uint256) +func (_ZRC20 *ZRC20Session) GasLimit() (*big.Int, error) { + return _ZRC20.Contract.GasLimit(&_ZRC20.CallOpts) } -// SYSTEMCONTRACTADDRESS is a free data retrieval call binding the contract method 0xf2441b32. +// GasLimit is a free data retrieval call binding the contract method 0xf68016b7. // -// Solidity: function SYSTEM_CONTRACT_ADDRESS() view returns(address) -func (_ZRC20 *ZRC20CallerSession) SYSTEMCONTRACTADDRESS() (common.Address, error) { - return _ZRC20.Contract.SYSTEMCONTRACTADDRESS(&_ZRC20.CallOpts) +// Solidity: function gasLimit() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) GasLimit() (*big.Int, error) { + return _ZRC20.Contract.GasLimit(&_ZRC20.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// GatewayAddress is a free data retrieval call binding the contract method 0x8b851b95. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { +// Solidity: function gatewayAddress() view returns(address) +func (_ZRC20 *ZRC20Caller) GatewayAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "allowance", owner, spender) + err := _ZRC20.contract.Call(opts, &out, "gatewayAddress") if err != nil { - return *new(*big.Int), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// GatewayAddress is a free data retrieval call binding the contract method 0x8b851b95. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) +// Solidity: function gatewayAddress() view returns(address) +func (_ZRC20 *ZRC20Session) GatewayAddress() (common.Address, error) { + return _ZRC20.Contract.GatewayAddress(&_ZRC20.CallOpts) } -// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// GatewayAddress is a free data retrieval call binding the contract method 0x8b851b95. // -// Solidity: function allowance(address owner, address spender) view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { - return _ZRC20.Contract.Allowance(&_ZRC20.CallOpts, owner, spender) +// Solidity: function gatewayAddress() view returns(address) +func (_ZRC20 *ZRC20CallerSession) GatewayAddress() (common.Address, error) { + return _ZRC20.Contract.GatewayAddress(&_ZRC20.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "balanceOf", account) + err := _ZRC20.contract.Call(opts, &out, "name") if err != nil { - return *new(*big.Int), err + return *new(string), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20Session) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20Session) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) } -// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function balanceOf(address account) view returns(uint256) -func (_ZRC20 *ZRC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) { - return _ZRC20.Contract.BalanceOf(&_ZRC20.CallOpts, account) +// Solidity: function name() view returns(string) +func (_ZRC20 *ZRC20CallerSession) Name() (string, error) { + return _ZRC20.Contract.Name(&_ZRC20.CallOpts) } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. // -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20Caller) Decimals(opts *bind.CallOpts) (uint8, error) { +// Solidity: function protocolFlatFee() view returns(uint256) +func (_ZRC20 *ZRC20Caller) ProtocolFlatFee(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "decimals") + err := _ZRC20.contract.Call(opts, &out, "protocolFlatFee") if err != nil { - return *new(uint8), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. // -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20Session) Decimals() (uint8, error) { - return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) +// Solidity: function protocolFlatFee() view returns(uint256) +func (_ZRC20 *ZRC20Session) ProtocolFlatFee() (*big.Int, error) { + return _ZRC20.Contract.ProtocolFlatFee(&_ZRC20.CallOpts) } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// ProtocolFlatFee is a free data retrieval call binding the contract method 0xfa62d57f. // -// Solidity: function decimals() view returns(uint8) -func (_ZRC20 *ZRC20CallerSession) Decimals() (uint8, error) { - return _ZRC20.Contract.Decimals(&_ZRC20.CallOpts) +// Solidity: function protocolFlatFee() view returns(uint256) +func (_ZRC20 *ZRC20CallerSession) ProtocolFlatFee() (*big.Int, error) { + return _ZRC20.Contract.ProtocolFlatFee(&_ZRC20.CallOpts) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20Caller) Symbol(opts *bind.CallOpts) (string, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "name") + err := _ZRC20.contract.Call(opts, &out, "symbol") if err != nil { return *new(string), err @@ -529,49 +529,49 @@ func (_ZRC20 *ZRC20Caller) Name(opts *bind.CallOpts) (string, error) { } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20Session) Name() (string, error) { - return _ZRC20.Contract.Name(&_ZRC20.CallOpts) +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20Session) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) } -// Name is a free data retrieval call binding the contract method 0x06fdde03. +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. // -// Solidity: function name() view returns(string) -func (_ZRC20 *ZRC20CallerSession) Name() (string, error) { - return _ZRC20.Contract.Name(&_ZRC20.CallOpts) +// Solidity: function symbol() view returns(string) +func (_ZRC20 *ZRC20CallerSession) Symbol() (string, error) { + return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// SystemContractAddress is a free data retrieval call binding the contract method 0x249f4697. // -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20Caller) Symbol(opts *bind.CallOpts) (string, error) { +// Solidity: function systemContractAddress() view returns(address) +func (_ZRC20 *ZRC20Caller) SystemContractAddress(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _ZRC20.contract.Call(opts, &out, "symbol") + err := _ZRC20.contract.Call(opts, &out, "systemContractAddress") if err != nil { - return *new(string), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(string)).(*string) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// SystemContractAddress is a free data retrieval call binding the contract method 0x249f4697. // -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20Session) Symbol() (string, error) { - return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) +// Solidity: function systemContractAddress() view returns(address) +func (_ZRC20 *ZRC20Session) SystemContractAddress() (common.Address, error) { + return _ZRC20.Contract.SystemContractAddress(&_ZRC20.CallOpts) } -// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// SystemContractAddress is a free data retrieval call binding the contract method 0x249f4697. // -// Solidity: function symbol() view returns(string) -func (_ZRC20 *ZRC20CallerSession) Symbol() (string, error) { - return _ZRC20.Contract.Symbol(&_ZRC20.CallOpts) +// Solidity: function systemContractAddress() view returns(address) +func (_ZRC20 *ZRC20CallerSession) SystemContractAddress() (common.Address, error) { + return _ZRC20.Contract.SystemContractAddress(&_ZRC20.CallOpts) } // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. @@ -763,6 +763,27 @@ func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types. return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) } +// UpdateGatewayAddress is a paid mutator transaction binding the contract method 0xccc77599. +// +// Solidity: function updateGatewayAddress(address addr) returns() +func (_ZRC20 *ZRC20Transactor) UpdateGatewayAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateGatewayAddress", addr) +} + +// UpdateGatewayAddress is a paid mutator transaction binding the contract method 0xccc77599. +// +// Solidity: function updateGatewayAddress(address addr) returns() +func (_ZRC20 *ZRC20Session) UpdateGatewayAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGatewayAddress(&_ZRC20.TransactOpts, addr) +} + +// UpdateGatewayAddress is a paid mutator transaction binding the contract method 0xccc77599. +// +// Solidity: function updateGatewayAddress(address addr) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateGatewayAddress(addr common.Address) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGatewayAddress(&_ZRC20.TransactOpts, addr) +} + // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // // Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() @@ -1414,6 +1435,140 @@ func (_ZRC20 *ZRC20Filterer) ParseUpdatedGasLimit(log types.Log) (*ZRC20UpdatedG return event, nil } +// ZRC20UpdatedGatewayIterator is returned from FilterUpdatedGateway and is used to iterate over the raw logs and unpacked data for UpdatedGateway events raised by the ZRC20 contract. +type ZRC20UpdatedGatewayIterator struct { + Event *ZRC20UpdatedGateway // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20UpdatedGatewayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedGateway) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20UpdatedGateway) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20UpdatedGatewayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20UpdatedGatewayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20UpdatedGateway represents a UpdatedGateway event raised by the ZRC20 contract. +type ZRC20UpdatedGateway struct { + Gateway common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedGateway is a free log retrieval operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20 *ZRC20Filterer) FilterUpdatedGateway(opts *bind.FilterOpts) (*ZRC20UpdatedGatewayIterator, error) { + + logs, sub, err := _ZRC20.contract.FilterLogs(opts, "UpdatedGateway") + if err != nil { + return nil, err + } + return &ZRC20UpdatedGatewayIterator{contract: _ZRC20.contract, event: "UpdatedGateway", logs: logs, sub: sub}, nil +} + +// WatchUpdatedGateway is a free log subscription operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20 *ZRC20Filterer) WatchUpdatedGateway(opts *bind.WatchOpts, sink chan<- *ZRC20UpdatedGateway) (event.Subscription, error) { + + logs, sub, err := _ZRC20.contract.WatchLogs(opts, "UpdatedGateway") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20UpdatedGateway) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGateway", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedGateway is a log parse operation binding the contract event 0x88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a387. +// +// Solidity: event UpdatedGateway(address gateway) +func (_ZRC20 *ZRC20Filterer) ParseUpdatedGateway(log types.Log) (*ZRC20UpdatedGateway, error) { + event := new(ZRC20UpdatedGateway) + if err := _ZRC20.contract.UnpackLog(event, "UpdatedGateway", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZRC20UpdatedProtocolFlatFeeIterator is returned from FilterUpdatedProtocolFlatFee and is used to iterate over the raw logs and unpacked data for UpdatedProtocolFlatFee events raised by the ZRC20 contract. type ZRC20UpdatedProtocolFlatFeeIterator struct { Event *ZRC20UpdatedProtocolFlatFee // Event containing the contract specifics and raw log diff --git a/v2/src/zevm/ZRC20.sol b/v2/src/zevm/ZRC20.sol index 551fe477..0c45b791 100644 --- a/v2/src/zevm/ZRC20.sol +++ b/v2/src/zevm/ZRC20.sol @@ -232,8 +232,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { */ function deposit(address to, uint256 amount) external override returns (bool) { if ( - msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != systemContractAddress - && msg.sender != gatewayAddress + msg.sender != FUNGIBLE_MODULE_ADDRESS && msg.sender != systemContractAddress && msg.sender != gatewayAddress ) revert InvalidSender(); _mint(to, amount); emit Deposit(abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), to, amount); diff --git a/v2/test/GatewayEVMZEVM.t.sol b/v2/test/GatewayEVMZEVM.t.sol index c1cd5087..a2a8ea4b 100644 --- a/v2/test/GatewayEVMZEVM.t.sol +++ b/v2/test/GatewayEVMZEVM.t.sol @@ -14,8 +14,9 @@ import "src/evm/ZetaConnectorNonNative.sol"; import "./utils/SenderZEVM.sol"; import "./utils/SystemContractMock.sol"; -import "src/zevm/ZRC20.sol"; + import "src/zevm/GatewayZEVM.sol"; +import "src/zevm/ZRC20.sol"; import "./utils/IReceiverEVM.sol"; import "src/evm/interfaces/IGatewayEVM.sol"; @@ -166,14 +167,7 @@ contract GatewayEVMZEVMTest is bytes memory message = abi.encodeWithSelector(receiverEVM.receivePayable.selector, str, num, flag); vm.expectEmit(true, true, true, true, address(gatewayZEVM)); emit Withdrawal( - ownerZEVM, - 0, - abi.encodePacked(receiverEVM), - address(zrc20), - 1_000_000, - 0, - zrc20.protocolFlatFee(), - message + ownerZEVM, 0, abi.encodePacked(receiverEVM), address(zrc20), 1_000_000, 0, zrc20.protocolFlatFee(), message ); vm.prank(ownerZEVM); gatewayZEVM.withdrawAndCall(abi.encodePacked(receiverEVM), 1_000_000, address(zrc20), message); diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index 434fcaa3..fa340c7c 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -9,9 +9,10 @@ import "./utils/SystemContract.sol"; import "./utils/TestZContract.sol"; import "./utils/WZETA.sol"; -import "src/zevm/ZRC20.sol"; + import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; import "src/zevm/GatewayZEVM.sol"; +import "src/zevm/ZRC20.sol"; import "src/zevm/interfaces/IGatewayZEVM.sol"; import "src/zevm/interfaces/IZRC20.sol"; @@ -111,9 +112,7 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors bytes memory message = abi.encodeWithSignature("hello(address)", addr1); vm.expectEmit(true, true, true, true, address(gateway)); - emit Withdrawal( - owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.protocolFlatFee(), message - ); + emit Withdrawal(owner, 0, abi.encodePacked(addr1), address(zrc20), amount, 0, zrc20.protocolFlatFee(), message); gateway.withdrawAndCall(abi.encodePacked(addr1), amount, address(zrc20), message); uint256 ownerBalanceAfter = zrc20.balanceOf(owner); diff --git a/v2/typechain-types/IZRC20.sol/IZRC20.ts b/v2/typechain-types/IZRC20.sol/IZRC20.ts index fdd91a64..c5b0caf0 100644 --- a/v2/typechain-types/IZRC20.sol/IZRC20.ts +++ b/v2/typechain-types/IZRC20.sol/IZRC20.ts @@ -24,12 +24,12 @@ import type { export interface IZRC20Interface extends Interface { getFunction( nameOrSignature: - | "PROTOCOL_FLAT_FEE" | "allowance" | "approve" | "balanceOf" | "burn" | "deposit" + | "protocolFlatFee" | "totalSupply" | "transfer" | "transferFrom" @@ -37,10 +37,6 @@ export interface IZRC20Interface extends Interface { | "withdrawGasFee" ): FunctionFragment; - encodeFunctionData( - functionFragment: "PROTOCOL_FLAT_FEE", - values?: undefined - ): string; encodeFunctionData( functionFragment: "allowance", values: [AddressLike, AddressLike] @@ -58,6 +54,10 @@ export interface IZRC20Interface extends Interface { functionFragment: "deposit", values: [AddressLike, BigNumberish] ): string; + encodeFunctionData( + functionFragment: "protocolFlatFee", + values?: undefined + ): string; encodeFunctionData( functionFragment: "totalSupply", values?: undefined @@ -79,15 +79,15 @@ export interface IZRC20Interface extends Interface { values?: undefined ): string; - decodeFunctionResult( - functionFragment: "PROTOCOL_FLAT_FEE", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "protocolFlatFee", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "totalSupply", data: BytesLike @@ -147,8 +147,6 @@ export interface IZRC20 extends BaseContract { event?: TCEvent ): Promise; - PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; - allowance: TypedContractMethod< [owner: AddressLike, spender: AddressLike], [bigint], @@ -171,6 +169,8 @@ export interface IZRC20 extends BaseContract { "nonpayable" >; + protocolFlatFee: TypedContractMethod<[], [bigint], "view">; + totalSupply: TypedContractMethod<[], [bigint], "view">; transfer: TypedContractMethod< @@ -197,9 +197,6 @@ export interface IZRC20 extends BaseContract { key: string | FunctionFragment ): T; - getFunction( - nameOrSignature: "PROTOCOL_FLAT_FEE" - ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "allowance" ): TypedContractMethod< @@ -227,6 +224,9 @@ export interface IZRC20 extends BaseContract { [boolean], "nonpayable" >; + getFunction( + nameOrSignature: "protocolFlatFee" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "totalSupply" ): TypedContractMethod<[], [bigint], "view">; diff --git a/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts b/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts index 38ec49b5..70bae137 100644 --- a/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts +++ b/v2/typechain-types/IZRC20.sol/IZRC20Metadata.ts @@ -24,7 +24,6 @@ import type { export interface IZRC20MetadataInterface extends Interface { getFunction( nameOrSignature: - | "PROTOCOL_FLAT_FEE" | "allowance" | "approve" | "balanceOf" @@ -32,6 +31,7 @@ export interface IZRC20MetadataInterface extends Interface { | "decimals" | "deposit" | "name" + | "protocolFlatFee" | "symbol" | "totalSupply" | "transfer" @@ -40,10 +40,6 @@ export interface IZRC20MetadataInterface extends Interface { | "withdrawGasFee" ): FunctionFragment; - encodeFunctionData( - functionFragment: "PROTOCOL_FLAT_FEE", - values?: undefined - ): string; encodeFunctionData( functionFragment: "allowance", values: [AddressLike, AddressLike] @@ -63,6 +59,10 @@ export interface IZRC20MetadataInterface extends Interface { values: [AddressLike, BigNumberish] ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "protocolFlatFee", + values?: undefined + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -85,10 +85,6 @@ export interface IZRC20MetadataInterface extends Interface { values?: undefined ): string; - decodeFunctionResult( - functionFragment: "PROTOCOL_FLAT_FEE", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; @@ -96,6 +92,10 @@ export interface IZRC20MetadataInterface extends Interface { decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "protocolFlatFee", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -156,8 +156,6 @@ export interface IZRC20Metadata extends BaseContract { event?: TCEvent ): Promise; - PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; - allowance: TypedContractMethod< [owner: AddressLike, spender: AddressLike], [bigint], @@ -184,6 +182,8 @@ export interface IZRC20Metadata extends BaseContract { name: TypedContractMethod<[], [string], "view">; + protocolFlatFee: TypedContractMethod<[], [bigint], "view">; + symbol: TypedContractMethod<[], [string], "view">; totalSupply: TypedContractMethod<[], [bigint], "view">; @@ -212,9 +212,6 @@ export interface IZRC20Metadata extends BaseContract { key: string | FunctionFragment ): T; - getFunction( - nameOrSignature: "PROTOCOL_FLAT_FEE" - ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "allowance" ): TypedContractMethod< @@ -248,6 +245,9 @@ export interface IZRC20Metadata extends BaseContract { getFunction( nameOrSignature: "name" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "protocolFlatFee" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "symbol" ): TypedContractMethod<[], [string], "view">; diff --git a/v2/typechain-types/IZRC20.sol/ZRC20Events.ts b/v2/typechain-types/IZRC20.sol/ZRC20Events.ts index 0754f144..5661c279 100644 --- a/v2/typechain-types/IZRC20.sol/ZRC20Events.ts +++ b/v2/typechain-types/IZRC20.sol/ZRC20Events.ts @@ -28,6 +28,7 @@ export interface ZRC20EventsInterface extends Interface { | "Deposit" | "Transfer" | "UpdatedGasLimit" + | "UpdatedGateway" | "UpdatedProtocolFlatFee" | "UpdatedSystemContract" | "Withdrawal" @@ -100,6 +101,18 @@ export namespace UpdatedGasLimitEvent { export type LogDescription = TypedLogDescription; } +export namespace UpdatedGatewayEvent { + export type InputTuple = [gateway: AddressLike]; + export type OutputTuple = [gateway: string]; + export interface OutputObject { + gateway: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace UpdatedProtocolFlatFeeEvent { export type InputTuple = [protocolFlatFee: BigNumberish]; export type OutputTuple = [protocolFlatFee: bigint]; @@ -227,6 +240,13 @@ export interface ZRC20Events extends BaseContract { UpdatedGasLimitEvent.OutputTuple, UpdatedGasLimitEvent.OutputObject >; + getEvent( + key: "UpdatedGateway" + ): TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; getEvent( key: "UpdatedProtocolFlatFee" ): TypedContractEvent< @@ -294,6 +314,17 @@ export interface ZRC20Events extends BaseContract { UpdatedGasLimitEvent.OutputObject >; + "UpdatedGateway(address)": TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; + UpdatedGateway: TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; + "UpdatedProtocolFlatFee(uint256)": TypedContractEvent< UpdatedProtocolFlatFeeEvent.InputTuple, UpdatedProtocolFlatFeeEvent.OutputTuple, diff --git a/v2/typechain-types/ZRC20.sol/ZRC20.ts b/v2/typechain-types/ZRC20.sol/ZRC20.ts index 4c02b922..2db96eeb 100644 --- a/v2/typechain-types/ZRC20.sol/ZRC20.ts +++ b/v2/typechain-types/ZRC20.sol/ZRC20.ts @@ -29,22 +29,23 @@ export interface ZRC20Interface extends Interface { | "CHAIN_ID" | "COIN_TYPE" | "FUNGIBLE_MODULE_ADDRESS" - | "GAS_LIMIT" - | "GATEWAY_CONTRACT_ADDRESS" - | "PROTOCOL_FLAT_FEE" - | "SYSTEM_CONTRACT_ADDRESS" | "allowance" | "approve" | "balanceOf" | "burn" | "decimals" | "deposit" + | "gasLimit" + | "gatewayAddress" | "name" + | "protocolFlatFee" | "symbol" + | "systemContractAddress" | "totalSupply" | "transfer" | "transferFrom" | "updateGasLimit" + | "updateGatewayAddress" | "updateProtocolFlatFee" | "updateSystemContractAddress" | "withdraw" @@ -57,6 +58,7 @@ export interface ZRC20Interface extends Interface { | "Deposit" | "Transfer" | "UpdatedGasLimit" + | "UpdatedGateway" | "UpdatedProtocolFlatFee" | "UpdatedSystemContract" | "Withdrawal" @@ -68,19 +70,6 @@ export interface ZRC20Interface extends Interface { functionFragment: "FUNGIBLE_MODULE_ADDRESS", values?: undefined ): string; - encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; - encodeFunctionData( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "PROTOCOL_FLAT_FEE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", - values?: undefined - ): string; encodeFunctionData( functionFragment: "allowance", values: [AddressLike, AddressLike] @@ -99,8 +88,21 @@ export interface ZRC20Interface extends Interface { functionFragment: "deposit", values: [AddressLike, BigNumberish] ): string; + encodeFunctionData(functionFragment: "gasLimit", values?: undefined): string; + encodeFunctionData( + functionFragment: "gatewayAddress", + values?: undefined + ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "protocolFlatFee", + values?: undefined + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "systemContractAddress", + values?: undefined + ): string; encodeFunctionData( functionFragment: "totalSupply", values?: undefined @@ -117,6 +119,10 @@ export interface ZRC20Interface extends Interface { functionFragment: "updateGasLimit", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "updateGatewayAddress", + values: [AddressLike] + ): string; encodeFunctionData( functionFragment: "updateProtocolFlatFee", values: [BigNumberish] @@ -140,27 +146,27 @@ export interface ZRC20Interface extends Interface { functionFragment: "FUNGIBLE_MODULE_ADDRESS", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "gasLimit", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "GATEWAY_CONTRACT_ADDRESS", + functionFragment: "gatewayAddress", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "PROTOCOL_FLAT_FEE", + functionFragment: "protocolFlatFee", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "SYSTEM_CONTRACT_ADDRESS", + functionFragment: "systemContractAddress", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", data: BytesLike @@ -174,6 +180,10 @@ export interface ZRC20Interface extends Interface { functionFragment: "updateGasLimit", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "updateGatewayAddress", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "updateProtocolFlatFee", data: BytesLike @@ -255,6 +265,18 @@ export namespace UpdatedGasLimitEvent { export type LogDescription = TypedLogDescription; } +export namespace UpdatedGatewayEvent { + export type InputTuple = [gateway: AddressLike]; + export type OutputTuple = [gateway: string]; + export interface OutputObject { + gateway: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + export namespace UpdatedProtocolFlatFeeEvent { export type InputTuple = [protocolFlatFee: BigNumberish]; export type OutputTuple = [protocolFlatFee: bigint]; @@ -356,14 +378,6 @@ export interface ZRC20 extends BaseContract { FUNGIBLE_MODULE_ADDRESS: TypedContractMethod<[], [string], "view">; - GAS_LIMIT: TypedContractMethod<[], [bigint], "view">; - - GATEWAY_CONTRACT_ADDRESS: TypedContractMethod<[], [string], "view">; - - PROTOCOL_FLAT_FEE: TypedContractMethod<[], [bigint], "view">; - - SYSTEM_CONTRACT_ADDRESS: TypedContractMethod<[], [string], "view">; - allowance: TypedContractMethod< [owner: AddressLike, spender: AddressLike], [bigint], @@ -388,10 +402,18 @@ export interface ZRC20 extends BaseContract { "nonpayable" >; + gasLimit: TypedContractMethod<[], [bigint], "view">; + + gatewayAddress: TypedContractMethod<[], [string], "view">; + name: TypedContractMethod<[], [string], "view">; + protocolFlatFee: TypedContractMethod<[], [bigint], "view">; + symbol: TypedContractMethod<[], [string], "view">; + systemContractAddress: TypedContractMethod<[], [string], "view">; + totalSupply: TypedContractMethod<[], [bigint], "view">; transfer: TypedContractMethod< @@ -412,6 +434,12 @@ export interface ZRC20 extends BaseContract { "nonpayable" >; + updateGatewayAddress: TypedContractMethod< + [addr: AddressLike], + [void], + "nonpayable" + >; + updateProtocolFlatFee: TypedContractMethod< [protocolFlatFee: BigNumberish], [void], @@ -445,18 +473,6 @@ export interface ZRC20 extends BaseContract { getFunction( nameOrSignature: "FUNGIBLE_MODULE_ADDRESS" ): TypedContractMethod<[], [string], "view">; - getFunction( - nameOrSignature: "GAS_LIMIT" - ): TypedContractMethod<[], [bigint], "view">; - getFunction( - nameOrSignature: "GATEWAY_CONTRACT_ADDRESS" - ): TypedContractMethod<[], [string], "view">; - getFunction( - nameOrSignature: "PROTOCOL_FLAT_FEE" - ): TypedContractMethod<[], [bigint], "view">; - getFunction( - nameOrSignature: "SYSTEM_CONTRACT_ADDRESS" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "allowance" ): TypedContractMethod< @@ -487,12 +503,24 @@ export interface ZRC20 extends BaseContract { [boolean], "nonpayable" >; + getFunction( + nameOrSignature: "gasLimit" + ): TypedContractMethod<[], [bigint], "view">; + getFunction( + nameOrSignature: "gatewayAddress" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "name" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "protocolFlatFee" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "symbol" ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "systemContractAddress" + ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "totalSupply" ): TypedContractMethod<[], [bigint], "view">; @@ -513,6 +541,9 @@ export interface ZRC20 extends BaseContract { getFunction( nameOrSignature: "updateGasLimit" ): TypedContractMethod<[gasLimit: BigNumberish], [void], "nonpayable">; + getFunction( + nameOrSignature: "updateGatewayAddress" + ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "updateProtocolFlatFee" ): TypedContractMethod<[protocolFlatFee: BigNumberish], [void], "nonpayable">; @@ -558,6 +589,13 @@ export interface ZRC20 extends BaseContract { UpdatedGasLimitEvent.OutputTuple, UpdatedGasLimitEvent.OutputObject >; + getEvent( + key: "UpdatedGateway" + ): TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; getEvent( key: "UpdatedProtocolFlatFee" ): TypedContractEvent< @@ -625,6 +663,17 @@ export interface ZRC20 extends BaseContract { UpdatedGasLimitEvent.OutputObject >; + "UpdatedGateway(address)": TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; + UpdatedGateway: TypedContractEvent< + UpdatedGatewayEvent.InputTuple, + UpdatedGatewayEvent.OutputTuple, + UpdatedGatewayEvent.OutputObject + >; + "UpdatedProtocolFlatFee(uint256)": TypedContractEvent< UpdatedProtocolFlatFeeEvent.InputTuple, UpdatedProtocolFlatFeeEvent.OutputTuple, diff --git a/v2/typechain-types/factories/GatewayZEVM__factory.ts b/v2/typechain-types/factories/GatewayZEVM__factory.ts index 441efc47..20b23379 100644 --- a/v2/typechain-types/factories/GatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayZEVM__factory.ts @@ -1021,7 +1021,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220d3c04e4efcbf4c2321bdb921767d68b27240d29d07d2982f0f334bad40c04c5664736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220a674352ad8eda2675de3e0d97b91ed3fa3da4cd5c58000ddb3dbd7fc65105db464736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts b/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts index 3352f12f..db2f9584 100644 --- a/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts +++ b/v2/typechain-types/factories/IZRC20.sol/IZRC20Metadata__factory.ts @@ -9,19 +9,6 @@ import type { } from "../../IZRC20.sol/IZRC20Metadata"; const _abi = [ - { - type: "function", - name: "PROTOCOL_FLAT_FEE", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, { type: "function", name: "allowance", @@ -158,6 +145,19 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "protocolFlatFee", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, { type: "function", name: "symbol", diff --git a/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts b/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts index 12c53aa6..8327ce65 100644 --- a/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts +++ b/v2/typechain-types/factories/IZRC20.sol/IZRC20__factory.ts @@ -6,19 +6,6 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { IZRC20, IZRC20Interface } from "../../IZRC20.sol/IZRC20"; const _abi = [ - { - type: "function", - name: "PROTOCOL_FLAT_FEE", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, { type: "function", name: "allowance", @@ -129,6 +116,19 @@ const _abi = [ ], stateMutability: "nonpayable", }, + { + type: "function", + name: "protocolFlatFee", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, { type: "function", name: "totalSupply", diff --git a/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts b/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts index 6cf7538f..a3176ae1 100644 --- a/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts +++ b/v2/typechain-types/factories/IZRC20.sol/ZRC20Events__factory.ts @@ -97,6 +97,19 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "UpdatedGateway", + inputs: [ + { + name: "gateway", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "UpdatedProtocolFlatFee", diff --git a/v2/typechain-types/factories/SenderZEVM__factory.ts b/v2/typechain-types/factories/SenderZEVM__factory.ts index 0a3629b6..b9792ecf 100644 --- a/v2/typechain-types/factories/SenderZEVM__factory.ts +++ b/v2/typechain-types/factories/SenderZEVM__factory.ts @@ -120,7 +120,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea2646970667358221220ddb6d6c4d104fc6d2f5c6ce9a1d66252fca95b7b25d839de654d81d453d176e464736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts index 9dcf65a1..f1bde726 100644 --- a/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts +++ b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts @@ -439,7 +439,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a0033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts index 0135ac55..d29b2e10 100644 --- a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts +++ b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts @@ -342,7 +342,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a0033"; type SystemContractMockConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts index 918daaa0..3a04e186 100644 --- a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts +++ b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts @@ -57,7 +57,7 @@ const _abi = [ internalType: "address", }, { - name: "gatewayContractAddress_", + name: "gatewayAddress_", type: "address", internalType: "address", }, @@ -103,58 +103,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "GAS_LIMIT", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "GATEWAY_CONTRACT_ADDRESS", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "PROTOCOL_FLAT_FEE", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "SYSTEM_CONTRACT_ADDRESS", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "allowance", @@ -278,6 +226,32 @@ const _abi = [ ], stateMutability: "nonpayable", }, + { + type: "function", + name: "gasLimit", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "gatewayAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, { type: "function", name: "name", @@ -291,6 +265,19 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "protocolFlatFee", + inputs: [], + outputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + stateMutability: "view", + }, { type: "function", name: "symbol", @@ -304,6 +291,19 @@ const _abi = [ ], stateMutability: "view", }, + { + type: "function", + name: "systemContractAddress", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, { type: "function", name: "totalSupply", @@ -383,6 +383,19 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "updateGatewayAddress", + inputs: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "updateProtocolFlatFee", @@ -539,6 +552,19 @@ const _abi = [ ], anonymous: false, }, + { + type: "event", + name: "UpdatedGateway", + inputs: [ + { + name: "gateway", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, { type: "event", name: "UpdatedProtocolFlatFee", @@ -645,7 +671,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea264697066735822122062e8c81bc642fb8e9a1eaabde5abdece7e58510051b4aa2bee706dc57435041764736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033"; type ZRC20ConstructorParams = | [signer?: Signer] @@ -672,7 +698,7 @@ export class ZRC20__factory extends ContractFactory { coinType_: BigNumberish, gasLimit_: BigNumberish, systemContractAddress_: AddressLike, - gatewayContractAddress_: AddressLike, + gatewayAddress_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( @@ -683,7 +709,7 @@ export class ZRC20__factory extends ContractFactory { coinType_, gasLimit_, systemContractAddress_, - gatewayContractAddress_, + gatewayAddress_, overrides || {} ); } @@ -695,7 +721,7 @@ export class ZRC20__factory extends ContractFactory { coinType_: BigNumberish, gasLimit_: BigNumberish, systemContractAddress_: AddressLike, - gatewayContractAddress_: AddressLike, + gatewayAddress_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( @@ -706,7 +732,7 @@ export class ZRC20__factory extends ContractFactory { coinType_, gasLimit_, systemContractAddress_, - gatewayContractAddress_, + gatewayAddress_, overrides || {} ) as Promise< ZRC20 & { From 48bf0de940f59c647ad1f17dc5c8f9fa7c3fd653 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 22:30:30 +0200 Subject: [PATCH 46/60] add unit tests for zrc20 --- v2/src/zevm/ZRC20.sol | 12 +- v2/test/ZRC20.t.sol | 248 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 254 insertions(+), 6 deletions(-) create mode 100644 v2/test/ZRC20.t.sol diff --git a/v2/src/zevm/ZRC20.sol b/v2/src/zevm/ZRC20.sol index 0c45b791..f12d057a 100644 --- a/v2/src/zevm/ZRC20.sol +++ b/v2/src/zevm/ZRC20.sol @@ -294,19 +294,19 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { /** * @dev Updates gas limit. Can only be updated by the fungible module. - * @param gasLimit, new gas limit. + * @param _gasLimit, new gas limit. */ - function updateGasLimit(uint256 gasLimit) external onlyFungible { - gasLimit = gasLimit; + function updateGasLimit(uint256 gasLimit_) external onlyFungible { + gasLimit = gasLimit_; emit UpdatedGasLimit(gasLimit); } /** * @dev Updates protocol flat fee. Can only be updated by the fungible module. - * @param protocolFlatFee, new protocol flat fee. + * @param _protocolFlatFee, new protocol flat fee. */ - function updateProtocolFlatFee(uint256 protocolFlatFee) external onlyFungible { - protocolFlatFee = protocolFlatFee; + function updateProtocolFlatFee(uint256 protocolFlatFee_) external onlyFungible { + protocolFlatFee = protocolFlatFee_; emit UpdatedProtocolFlatFee(protocolFlatFee); } } diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol new file mode 100644 index 00000000..5e981449 --- /dev/null +++ b/v2/test/ZRC20.t.sol @@ -0,0 +1,248 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +import "./utils/SystemContract.sol"; +import "./utils/WZETA.sol"; + +import { Upgrades } from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import "src/zevm/GatewayZEVM.sol"; +import "src/zevm/ZRC20.sol"; +import "src/zevm/interfaces/IGatewayZEVM.sol"; +import "src/zevm/interfaces/IZRC20.sol"; + +contract ZRC20Test is Test, ZRC20Errors { + ZRC20 zrc20; + SystemContract systemContract; + GatewayZEVM gateway; + address payable proxy; + WETH9 zetaToken; + + address owner; + address addr1; + address fungibleModule; + + function setUp() public { + owner = address(this); + addr1 = address(0x1234); + + zetaToken = new WETH9(); + + proxy = payable( + Upgrades.deployUUPSProxy( + "GatewayZEVM.sol", abi.encodeCall(GatewayZEVM.initialize, (address(zetaToken), owner)) + ) + ); + gateway = GatewayZEVM(proxy); + fungibleModule = gateway.FUNGIBLE_MODULE_ADDRESS(); + + vm.startPrank(fungibleModule); + systemContract = new SystemContract(address(0), address(0), address(0)); + zrc20 = new ZRC20("TOKEN", "TKN", 18, 1, CoinType.Gas, 0, address(systemContract), address(gateway)); + systemContract.setGasCoinZRC20(1, address(zrc20)); + systemContract.setGasPrice(1, 1); + vm.deal(fungibleModule, 1_000_000_000); + vm.deal(proxy, 1_000_000_000); + zrc20.deposit(owner, 100_000); + vm.stopPrank(); + } + + function testZRC20BasicInfo() public { + string memory name = zrc20.name(); + assertEq("TOKEN", name); + + string memory symbol = zrc20.symbol(); + assertEq("TKN", symbol); + + uint8 decimals = zrc20.decimals(); + assertEq(18, decimals); + + uint256 totalSupply = zrc20.totalSupply(); + assertEq(100_000, totalSupply); + } + + function testTransferFrom() public { + uint256 balanceStart = zrc20.balanceOf(addr1); + assertEq(0, balanceStart); + + uint256 amount = 50_000; + zrc20.approve(owner, amount); + zrc20.transferFrom(owner, addr1, amount); + + uint256 balanceAfter = zrc20.balanceOf(addr1); + assertEq(amount, balanceAfter); + } + + function testTransferFromFailsIfNoAllowance() public { + uint256 balanceStart = zrc20.balanceOf(addr1); + assertEq(0, balanceStart); + + uint256 amount = 50_000; + vm.expectRevert(LowAllowance.selector); + zrc20.transferFrom(owner, addr1, amount); + } + + function testTransferFromFailsIfNoBalance() public { + uint256 balanceStart = zrc20.balanceOf(addr1); + assertEq(0, balanceStart); + + uint256 amount = 500_000; + zrc20.approve(owner, amount); + vm.expectRevert(LowBalance.selector); + zrc20.transferFrom(owner, addr1, amount); + } + + function testTransferFromFailsIfSenderIsZeroAddress() public { + uint256 balanceStart = zrc20.balanceOf(addr1); + assertEq(0, balanceStart); + + uint256 amount = 500_000; + zrc20.approve(owner, amount); + vm.expectRevert(ZeroAddress.selector); + zrc20.transferFrom(address(0), addr1, amount); + } + + function testTransferFromFailsIfRecipientIsZeroAddress() public { + uint256 balanceStart = zrc20.balanceOf(addr1); + assertEq(0, balanceStart); + + uint256 amount = 500_000; + zrc20.approve(owner, amount); + vm.expectRevert(ZeroAddress.selector); + zrc20.transferFrom(owner, address(0), amount); + } + + function testBurn() public { + uint256 balanceStart = zrc20.balanceOf(owner); + assertEq(100_000, balanceStart); + uint256 totalSupplyStart = zrc20.totalSupply(); + assertEq(100_000, totalSupplyStart); + + zrc20.burn(50_000); + uint256 balanceAfter = zrc20.balanceOf(owner); + assertEq(50_000, balanceAfter); + uint256 totalSupplyAfter = zrc20.totalSupply(); + assertEq(50_000, totalSupplyAfter); + } + + function testBurnFailsIfNoBalance() public { + vm.expectRevert(LowBalance.selector); + zrc20.burn(150_000); + } + + function testDeposit() public { + uint256 totalSupplyStart = zrc20.totalSupply(); + assertEq(100_000, totalSupplyStart); + + vm.prank(proxy); + zrc20.deposit(owner, 100_000); + + uint256 totalSupplyEnd = zrc20.totalSupply(); + assertEq(200_000, totalSupplyEnd); + } + + function testWithdrawGasFee() public { + vm.prank(fungibleModule); + zrc20.updateGasLimit(10); + + vm.prank(fungibleModule); + zrc20.updateProtocolFlatFee(10); + + (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); + assertEq(address(zrc20), gasZRC20); + assertEq(20, gasFee); + } + + function testWithdrawGasFeeFailsIfGasCoinNotSetForChainId() public { + vm.prank(fungibleModule); + systemContract.setGasCoinZRC20(1, address(0)); + + vm.expectRevert(ZeroGasCoin.selector); + (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); + } + + function testWithdrawGasFeeFailsIfGasPriceNotSetForChainId() public { + vm.prank(fungibleModule); + systemContract.setGasPrice(1, 0); + + vm.expectRevert(ZeroGasPrice.selector); + (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); + } + + function testWithdraw() public { + vm.prank(fungibleModule); + zrc20.updateGasLimit(10); + + vm.prank(fungibleModule); + zrc20.updateProtocolFlatFee(10); + + uint256 balanceStart = zrc20.balanceOf(owner); + assertEq(100_000, balanceStart); + uint256 totalSupplyStart = zrc20.totalSupply(); + assertEq(100_000, totalSupplyStart); + + uint256 fungibleModuleBalanceStart = zrc20.balanceOf(fungibleModule); + + zrc20.approve(address(zrc20), 50_000); + zrc20.withdraw(abi.encodePacked(addr1), 50_000); + + uint256 fungibleModuleBalanceAfter = zrc20.balanceOf(fungibleModule); + assertEq(fungibleModuleBalanceStart + 20, fungibleModuleBalanceAfter); + + uint256 balanceAfter = zrc20.balanceOf(owner); + assertEq(50_000 - 20, balanceAfter); + uint256 totalSupplyAfter = zrc20.totalSupply(); + assertEq(50_000, totalSupplyAfter); + } + + function testDepositFailsIfSenderIsNotGateway() public { + vm.expectRevert(InvalidSender.selector); + zrc20.deposit(owner, 100_000); + } + + function testUpdateSystemContractAddress() public { + vm.prank(fungibleModule); + zrc20.updateSystemContractAddress(address(0x3211)); + assertEq(zrc20.systemContractAddress(), address(0x3211)); + } + + function testUpdateSystemContractAddressFailsIfSenderIsNotFungible() public { + vm.expectRevert(CallerIsNotFungibleModule.selector); + zrc20.updateSystemContractAddress(address(0x3211)); + } + + function testUpdateGatewayAddress() public { + vm.prank(fungibleModule); + zrc20.updateGatewayAddress(address(0x3211)); + assertEq(zrc20.gatewayAddress(), address(0x3211)); + } + + function testUpdateGatewayAddressFailsIfSenderIsNotFungible() public { + vm.expectRevert(CallerIsNotFungibleModule.selector); + zrc20.updateGatewayAddress(address(0x3211)); + } + + function testUpdateGasLimit() public { + vm.prank(fungibleModule); + zrc20.updateGasLimit(10); + assertEq(10, zrc20.gasLimit()); + } + + function testUpdateGasLimitFailsIfSenderIsNotFungible() public { + vm.expectRevert(CallerIsNotFungibleModule.selector); + zrc20.updateGasLimit(10); + } + + function testUpdateProtocolFlatFee() public { + vm.prank(fungibleModule); + zrc20.updateProtocolFlatFee(10); + assertEq(10, zrc20.protocolFlatFee()); + } + + function testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() public { + vm.expectRevert(CallerIsNotFungibleModule.selector); + zrc20.updateProtocolFlatFee(10); + } +} From b5a557618183b4f2c53b9f385b3fab2150772f93 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 22:32:33 +0200 Subject: [PATCH 47/60] generate --- .../gatewayevmzevmtest.go | 2 +- .../gatewayzevminboundtest.go | 2 +- .../gatewayzevmoutboundtest.go | 2 +- v2/pkg/zrc20.sol/zrc20.go | 40 +- v2/pkg/zrc20.t.sol/zrc20test.go | 4037 +++++++++++++++++ v2/src/zevm/ZRC20.sol | 4 +- v2/test/ZRC20.t.sol | 10 +- v2/typechain-types/ZRC20.sol/ZRC20.ts | 12 +- .../factories/ZRC20.sol/ZRC20__factory.ts | 6 +- 9 files changed, 4078 insertions(+), 37 deletions(-) create mode 100644 v2/pkg/zrc20.t.sol/zrc20test.go diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index f4e10687..f20eae6d 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010696806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b611ab8806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a2646970667358221220c1f74dff2d4ee390d4d5bd1b3e6cf9f8f9478549e63896a2bd6c16722f2f0b4164736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50620106a0806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b611ac2806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a264697066735822122051de911e0ea2d5c63b8c5f7e8eb994419a3c23fb57a480bf022f85431a3a01ec64736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index b5486878..7e9aba8b 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cd688061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918991600091849163fa62d57f916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918891600091849163fa62d57f916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b611ab88061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a2646970667358221220e8b2f103f42e6e27b2ded0bbdeef6c87db2299f317e13b52c915e1294ad82fb564736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cd728061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918991600091849163fa62d57f916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918891600091849163fa62d57f916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b611ac28061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220c83d6ed772980e15022803be1082368a1a5a0ff8bb84e8efe57e25674947619264736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index 88aa8174..cdd4bae1 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dff38061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b611ab88061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033a264697066735822122059f6a417763a6e4987843519f3b5fa5d7d4fe4db90fc011a6ff0dd639020a12f64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dffd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b611ac28061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220dcd0d99782ed797df53094330b057cc08b1511aee7778c49f359e6c10985b95664736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20.sol/zrc20.go b/v2/pkg/zrc20.sol/zrc20.go index d05f6af4..ff3e31dd 100644 --- a/v2/pkg/zrc20.sol/zrc20.go +++ b/v2/pkg/zrc20.sol/zrc20.go @@ -31,8 +31,8 @@ var ( // ZRC20MetaData contains all meta data concerning the ZRC20 contract. var ZRC20MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gatewayAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGatewayAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGateway\",\"inputs\":[{\"name\":\"gateway\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gatewayAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGatewayAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGateway\",\"inputs\":[{\"name\":\"gateway\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033", } // ZRC20ABI is the input ABI used to generate the binding from. @@ -744,23 +744,23 @@ func (_ZRC20 *ZRC20TransactorSession) TransferFrom(sender common.Address, recipi // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20Transactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "updateGasLimit", gasLimit) +// Solidity: function updateGasLimit(uint256 gasLimit_) returns() +func (_ZRC20 *ZRC20Transactor) UpdateGasLimit(opts *bind.TransactOpts, gasLimit_ *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateGasLimit", gasLimit_) } // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20Session) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) +// Solidity: function updateGasLimit(uint256 gasLimit_) returns() +func (_ZRC20 *ZRC20Session) UpdateGasLimit(gasLimit_ *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit_) } // UpdateGasLimit is a paid mutator transaction binding the contract method 0xf687d12a. // -// Solidity: function updateGasLimit(uint256 gasLimit) returns() -func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit) +// Solidity: function updateGasLimit(uint256 gasLimit_) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateGasLimit(gasLimit_ *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateGasLimit(&_ZRC20.TransactOpts, gasLimit_) } // UpdateGatewayAddress is a paid mutator transaction binding the contract method 0xccc77599. @@ -786,23 +786,23 @@ func (_ZRC20 *ZRC20TransactorSession) UpdateGatewayAddress(addr common.Address) // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20Transactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee) +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee_) returns() +func (_ZRC20 *ZRC20Transactor) UpdateProtocolFlatFee(opts *bind.TransactOpts, protocolFlatFee_ *big.Int) (*types.Transaction, error) { + return _ZRC20.contract.Transact(opts, "updateProtocolFlatFee", protocolFlatFee_) } // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20Session) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee_) returns() +func (_ZRC20 *ZRC20Session) UpdateProtocolFlatFee(protocolFlatFee_ *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee_) } // UpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xeddeb123. // -// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee) returns() -func (_ZRC20 *ZRC20TransactorSession) UpdateProtocolFlatFee(protocolFlatFee *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee) +// Solidity: function updateProtocolFlatFee(uint256 protocolFlatFee_) returns() +func (_ZRC20 *ZRC20TransactorSession) UpdateProtocolFlatFee(protocolFlatFee_ *big.Int) (*types.Transaction, error) { + return _ZRC20.Contract.UpdateProtocolFlatFee(&_ZRC20.TransactOpts, protocolFlatFee_) } // UpdateSystemContractAddress is a paid mutator transaction binding the contract method 0xc835d7cc. diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go new file mode 100644 index 00000000..95fddff8 --- /dev/null +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -0,0 +1,4037 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zrc20 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. +var ZRC20TestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf6d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061814d565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181e9565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061834f565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ed565b610325612323565b6040516102759190618464565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e6134db565b61024e613789565b61024e6138e5565b610268613bc1565b61024e613c21565b61024e613d99565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061806d565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613eac565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd9190618517565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a49061807a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618087565b61084596959493929190618532565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d9190618627565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190618627565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618649565b9050610dfc600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190618627565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618662565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190618517565b613211613f4b565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d491906186af565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618649565b613ecb565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618662565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618649565b9050611b04600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618649565b9050611d47600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de29190618627565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190618627565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618649565b9050610fd58282613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618649565b9050611fb1620186a082613ecb565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190618627565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618649565b905061216262030d4082613ecb565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618662565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618662565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b91908101906187a3565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261255991908101906187a3565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187ec565b905061262360128260ff16613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618649565b90506104d4620186a082613ecb565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618662565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618662565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618649565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190618649565b9050612e3b620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190618649565b9050612ec3620186a082613ecb565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190618649565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb9190618627565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c3509060380161880f565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c69190618627565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131599190618649565b905061316f613169836014618860565b82613ecb565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132009190618649565b905061320e61c33c82613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132879190618649565b905061329561c35082613ecb565b505050505050565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561330b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332f9190618649565b905061333c600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af11580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561373a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375e91906186af565b601f54919350915061377e9061010090046001600160a01b031683613f4b565b612162601482613ecb565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137fb57600080fd5b505af115801561380f573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139769190618649565b9050613985620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fe9190618649565b9050613a0d620186a082613ecb565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9a9190618627565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c9190618649565b9050613b3a61c35082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb39190618649565b90506104d461c35082613ecb565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c9357600080fd5b505af1158015613ca7573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2b9190618649565b9050613e38600082613ecb565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613eb6618094565b613ec1848483613ffe565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613f3757600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613f1f565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613f1f9085908590600401618873565b60008061400b8584614079565b905061406e6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614059929190618898565b60405160208183030381529060405285614085565b9150505b9392505050565b600061407283836140b3565b60c081015151600090156140a9576140a284848460c001516140ce565b9050614072565b6140a28484614274565b60006140bf838361435f565b61407283836020015184614085565b6000806140d961436b565b905060006140e7868361443e565b905060006140fe82606001518360200151856148e4565b9050600061410e83838989614af6565b9050600061411b82615973565b602081015181519192509060030b1561418e578982604001516040516020016141459291906188ba565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141859160040161893b565b60405180910390fd5b60006141d16040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b42565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061422490849060040161893b565b602060405180830381865afa158015614241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142659190618517565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142c990879060040161893b565b600060405180830381865afa1580156142e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261430e919081019061896e565b9050600061433c82856040516020016143289291906189a3565b604051602081830303815290604052615d42565b90506001600160a01b038116613ec15784846040516020016141459291906189d2565b61216282826000615d55565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143f2908490600401618a7d565b600060405180830381865afa15801561440f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261443791908101906187a3565b9250505090565b6144706040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144bb6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6144c485615e58565b602082015260006144d48661623d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614516573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261453e91908101906187a3565b868385602001516040516020016145589493929190618ac4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906145b090859060040161893b565b600060405180830381865afa1580156145cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145f591908101906187a3565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061463d908490600401618bc8565b602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190618627565b61469357816040516020016141459190618c1a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146d8908490600401618cac565b600060405180830381865afa1580156146f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261471d91908101906187a3565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614764908490600401618cfe565b602060405180830381865afa158015614781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a59190618627565b1561483a576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147ef908490600401618cfe565b600060405180830381865afa15801561480c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261483491908101906187a3565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161485f9190618d50565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161488b929190618873565b600060405180830381865afa1580156148a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148d091908101906187a3565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816149005790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061496057614960618dbc565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106149b4576149b4618dbc565b6020026020010181905250846040516020016149d09190618deb565b604051602081830303815290604052816002815181106149f2576149f2618dbc565b602002602001018190525082604051602001614a0e9190618e57565b60405160208183030381529060405281600381518110614a3057614a30618dbc565b60200260200101819052506000614a4682615973565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614ad790604080518082018252600080825260209182015281518083019092528451825280850190820152906164c0565b614aec57856040516020016141459190618e98565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b46565b511590565b614cba57826020015115614c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614185565b8260c0015115614cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614185565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614cd357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614d2e90618f29565b935060ff1681518110614d4357614d43618dbc565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d949190618f48565b604051602081830303815290604052828280614daf90618f29565b935060ff1681518110614dc457614dc4618dbc565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614e1190618f29565b935060ff1681518110614e2657614e26618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e7390618f29565b935060ff1681518110614e8857614e88618dbc565b60200260200101819052508760200151828280614ea490618f29565b935060ff1681518110614eb957614eb9618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614f0690618f29565b935060ff1681518110614f1b57614f1b618dbc565b602090810291909101015287518282614f3381618f29565b935060ff1681518110614f4857614f48618dbc565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f9590618f29565b935060ff1681518110614faa57614faa618dbc565b6020026020010181905250614fbe46616521565b8282614fc981618f29565b935060ff1681518110614fde57614fde618dbc565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061502b90618f29565b935060ff168151811061504057615040618dbc565b60200260200101819052508682828061505890618f29565b935060ff168151811061506d5761506d618dbc565b60209081029190910101528551156151945760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826150be81618f29565b935060ff16815181106150d3576150d3618dbc565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061512390899060040161893b565b600060405180830381865afa158015615140573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516891908101906187a3565b828261517381618f29565b935060ff168151811061518857615188618dbc565b60200260200101819052505b8460200151156152645760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151dd81618f29565b935060ff16815181106151f2576151f2618dbc565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061523f90618f29565b935060ff168151811061525457615254618dbc565b602002602001018190525061542b565b61529c614b418660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61532f5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152df81618f29565b935060ff16815181106152f4576152f4618dbc565b60200260200101819052508460a001516040516020016153149190618deb565b60405160208183030381529060405282828061523f90618f29565b8460c0015115801561537257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261537090511590565b155b1561542b5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826153b681618f29565b935060ff16815181106153cb576153cb618dbc565b60200260200101819052506153df886165c1565b6040516020016153ef9190618deb565b60405160208183030381529060405282828061540a90618f29565b935060ff168151811061541f5761541f618dbc565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261545f90511590565b6154f45760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826154a281618f29565b935060ff16815181106154b7576154b7618dbc565b602002602001018190525084604001518282806154d390618f29565b935060ff16815181106154e8576154e8618dbc565b60200260200101819052505b6060850151156156155760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261553d81618f29565b935060ff168151811061555257615552618dbc565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156155c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155e991908101906187a3565b82826155f481618f29565b935060ff168151811061560957615609618dbc565b60200260200101819052505b60e085015151156156bc5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261565f81618f29565b935060ff168151811061567457615674618dbc565b60200260200101819052506156908560e0015160000151616521565b828261569b81618f29565b935060ff16815181106156b0576156b0618dbc565b60200260200101819052505b60e085015160200151156157665760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261570981618f29565b935060ff168151811061571e5761571e618dbc565b602002602001018190525061573a8560e0015160200151616521565b828261574581618f29565b935060ff168151811061575a5761575a618dbc565b60200260200101819052505b60e085015160400151156158105760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826157b381618f29565b935060ff16815181106157c8576157c8618dbc565b60200260200101819052506157e48560e0015160400151616521565b82826157ef81618f29565b935060ff168151811061580457615804618dbc565b60200260200101819052505b60e085015160600151156158ba5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261585d81618f29565b935060ff168151811061587257615872618dbc565b602002602001018190525061588e8560e0015160600151616521565b828261589981618f29565b935060ff16815181106158ae576158ae618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158d8576158d86186db565b60405190808252806020026020018201604052801561590b57816020015b60608152602001906001900390816158f65790505b50905060005b8260ff168160ff16101561596457838160ff168151811061593457615934618dbc565b6020026020010151828260ff168151811061595157615951618dbc565b6020908102919091010152600101615911565b5093505050505b949350505050565b61599a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615a2091869101618fb3565b600060405180830381865afa158015615a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a6591908101906187a3565b90506000615a7386836170b0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615aa391906183ed565b6000604051808303816000875af1158015615ac2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615aea9190810190618ffa565b805190915060030b15801590615b035750602081015151155b8015615b125750604081015151155b15614aec5781600081518110615b2a57615b2a618dbc565b602002602001015160405160200161414591906190b0565b60606000615b778560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615bae9082905b90617205565b15615d0b576000615c2b82615c2584615c1f615bf18a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061722c565b9061728e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c8f908290617205565b15615cf957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cf6905b8290617313565b90505b615d0281617339565b92505050614072565b8215615d2457848460405160200161414592919061929c565b5050604080516020810190915260008152614072565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d6457505050565b6000615d718484846173a2565b90506000615d7e82615973565b602081015181519192509060030b158015615e1a5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90604080518082018252600080825260209182015281518083019092528451825280850190820152615ba8565b15615e2757505050505050565b60408201515115615e475781604001516040516020016141459190619343565b8060405160200161414591906193a1565b60606000615e8d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ef2905b82906164c0565b15615f6157604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90839061793d565b617339565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc3905b82906179c7565b60010361609057604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261602990615cef565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c905b8390617313565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ef90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616157908390617a61565b90506000816001835161616a919061940c565b8151811061617a5761617a618dbc565b6020026020010151905061621d615f5c6161f06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061793d565b95945050505050565b82604051602001614145919061941f565b50919050565b606060006162728360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162d490615eeb565b156162e25761407281617339565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634190615fbc565b6001036163ab57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90616089565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640a90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616472908390617a61565b90506001815111156164ae57806002825161648d919061940c565b8151811061649d5761649d618dbc565b602002602001015192505050919050565b5082604051602001614145919061941f565b8051825160009111156164d557506000613ec5565b815183516020850151600092916164eb91618860565b6164f5919061940c565b90508260200151810361650c576001915050613ec5565b82516020840151819020912014905092915050565b6060600061652e83617b06565b600101905060008167ffffffffffffffff81111561654e5761654e6186db565b6040519080825280601f01601f191660200182016040528015616578576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461658257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161664d905b8290617be8565b1561668d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ec90616646565b1561672c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678b90616646565b156167cb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682a90616646565b8061688f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261688f90616646565b156168cf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261692e90616646565b806169935750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261699390616646565b156169d357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a3290616646565b80616a975750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a9790616646565b15616ad757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3690616646565b80616b9b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b9b90616646565b15616bdb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c3a90616646565b15616c7a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cd990616646565b15616d1957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d7890616646565b15616db857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e1790616646565b15616e5757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616eb690616646565b15616ef657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f5590616646565b80616fba5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fba90616646565b15616ffa57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261705990616646565b1561709957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161414592906020016194fd565b60608060005b845181101561713b57818582815181106170d2576170d2618dbc565b60200260200101516040516020016170eb9291906189a3565b60405160208183030381529060405291506001855161710a919061940c565b811461713357816040516020016171219190619666565b60405160208183030381529060405291505b6001016170b6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617154579050509050838160008151811061717f5761717f618dbc565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171d3576171d3618dbc565b602002602001018190525081816002815181106171f2576171f2618dbc565b6020908102919091010152949350505050565b60208083015183518351928401516000936172239291849190617bfc565b14159392505050565b6040805180820190915260008082526020820152600061725e8460000151856020015185600001518660200151617d0d565b9050836020015181617270919061940c565b8451859061727f90839061940c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156172b3575081613ec5565b60208083015190840151600191146172da5750815160208481015190840151829020919020145b801561730b578251845185906172f190839061940c565b9052508251602085018051617307908390618860565b9052505b509192915050565b6040805180820190915260008082526020820152617332838383617e2d565b5092915050565b60606000826000015167ffffffffffffffff81111561735a5761735a6186db565b6040519080825280601f01601f191660200182016040528015617384576020820181803683370190505b50905060006020820190506173328185602001518660000151617ed8565b606060006173ae61436b565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816173cb57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061742690618f29565b935060ff168151811061743b5761743b618dbc565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161748c91906196a7565b6040516020818303038152906040528282806174a790618f29565b935060ff16815181106174bc576174bc618dbc565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061750990618f29565b935060ff168151811061751e5761751e618dbc565b60200260200101819052508260405160200161753a9190618e57565b60405160208183030381529060405282828061755590618f29565b935060ff168151811061756a5761756a618dbc565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806175b790618f29565b935060ff16815181106175cc576175cc618dbc565b60200260200101819052506175e18784617f52565b82826175ec81618f29565b935060ff168151811061760157617601618dbc565b6020908102919091010152855151156176ad5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261765381618f29565b935060ff168151811061766857617668618dbc565b6020026020010181905250617681866000015184617f52565b828261768c81618f29565b935060ff16815181106176a1576176a1618dbc565b60200260200101819052505b85608001511561771b5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176f681618f29565b935060ff168151811061770b5761770b618dbc565b6020026020010181905250617781565b84156177815760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261776081618f29565b935060ff168151811061777557617775618dbc565b60200260200101819052505b6040860151511561781d5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826177cb81618f29565b935060ff16815181106177e0576177e0618dbc565b602002602001018190525085604001518282806177fc90618f29565b935060ff168151811061781157617811618dbc565b60200260200101819052505b8560600151156178875760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261786681618f29565b935060ff168151811061787b5761787b618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178a5576178a56186db565b6040519080825280602002602001820160405280156178d857816020015b60608152602001906001900390816178c35790505b50905060005b8260ff168160ff16101561793157838160ff168151811061790157617901618dbc565b6020026020010151828260ff168151811061791e5761791e618dbc565b60209081029190910101526001016178de565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617962575081613ec5565b8151835160208501516000929161797891618860565b617982919061940c565b602084015190915060019082146179a3575082516020840151819020908220145b80156179be578351855186906179ba90839061940c565b9052505b50929392505050565b60008082600001516179eb8560000151866020015186600001518760200151617d0d565b6179f59190618860565b90505b83516020850151617a099190618860565b81116173325781617a19816196ec565b9250508260000151617a50856020015183617a34919061940c565b8651617a40919061940c565b8386600001518760200151617d0d565b617a5a9190618860565b90506179f8565b60606000617a6f84846179c7565b617a7a906001618860565b67ffffffffffffffff811115617a9257617a926186db565b604051908082528060200260200182016040528015617ac557816020015b6060815260200190600190039081617ab05790505b50905060005b8151811015615d3a57617ae1615f5c8686617313565b828281518110617af357617af3618dbc565b6020908102919091010152600101617acb565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b4f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b7b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b9957662386f26fc10000830492506010015b6305f5e1008310617bb1576305f5e100830492506008015b6127108310617bc557612710830492506004015b60648310617bd7576064830492506002015b600a8310613ec55760010192915050565b6000617bf48383617f92565b159392505050565b600080858411617d035760208411617caf5760008415617c47576001617c2386602061940c565b617c2e906008619706565b617c39906002619804565b617c43919061940c565b1990505b8351811685617c568989618860565b617c60919061940c565b805190935082165b818114617c9a57878411617c82578794505050505061596b565b83617c8c81619810565b945050828451169050617c68565b617ca48785618860565b94505050505061596b565b838320617cbc858861940c565b617cc69087618860565b91505b858210617d0157848220808203617cee57617ce48684618860565b935050505061596b565b617cf960018461940c565b925050617cc9565b505b5092949350505050565b60008381868511617e185760208511617dc75760008515617d59576001617d3587602061940c565b617d40906008619706565b617d4b906002619804565b617d55919061940c565b1990505b84518116600087617d6a8b8b618860565b617d74919061940c565b855190915083165b828114617db957818610617da157617d948b8b618860565b965050505050505061596b565b85617dab816196ec565b965050838651169050617d7c565b85965050505050505061596b565b508383206000905b617dd9868961940c565b8211617e1657858320808203617df5578394505050505061596b565b617e00600185618860565b9350508180617e0e906196ec565b925050617dcf565b505b617e228787618860565b979650505050505050565b60408051808201909152600080825260208201526000617e5f8560000151866020015186600001518760200151617d0d565b602080870180519186019190915251909150617e7b908261940c565b835284516020860151617e8e9190618860565b8103617e9d5760008552617ecf565b83518351617eab9190618860565b85518690617eba90839061940c565b9052508351617ec99082618860565b60208601525b50909392505050565b60208110617f105781518352617eef602084618860565b9250617efc602083618860565b9150617f0960208261940c565b9050617ed8565b6000198115617f3f576001617f2683602061940c565b617f3290610100619804565b617f3c919061940c565b90505b9151835183169219169190911790915250565b60606000617f60848461443e565b8051602080830151604051939450617f7a93909101619827565b60405160208183030381529060405291505092915050565b8151815160009190811115617fa5575081515b6020808501519084015160005b8381101561805e578251825180821461802e57600019602087101561800d57600184617fdf89602061940c565b617fe99190618860565b617ff4906008619706565b617fff906002619804565b618009919061940c565b1990505b818116838216818103911461802b579750613ec59650505050505050565b50505b618039602086618860565b9450618046602085618860565b935050506020816180579190618860565b9050617fb2565b5084518651614aec919061987f565b610b67806198a083390190565b61106f8061a40783390190565b611ac28061b47683390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180d76180dc565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180d76040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561818e5783516001600160a01b0316835260209384019390920191600101618167565b509095945050505050565b60005b838110156181b457818101518382015260200161819c565b50506000910152565b600081518084526181d5816020860160208601618199565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156182cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526182b58486516181bd565b602095860195909450929092019160010161827b565b509197505050602094850194929092019150600101618211565b50929695505050505050565b600081518084526020840193506020830160005b828110156183455781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618305565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526183bb60408801826181bd565b90506020820151915086810360208801526183d681836182f1565b965050506020938401939190910190600101618377565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261844f8583516181bd565b94506020938401939190910190600101618415565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184e560408701826182f1565b955050602093840193919091019060010161848c565b80516001600160a01b038116811461851257600080fd5b919050565b60006020828403121561852957600080fd5b614072826184fb565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261860d60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561863957600080fd5b8151801515811461407257600080fd5b60006020828403121561865b57600080fd5b5051919050565b600181811c9082168061867657607f821691505b602082108103616237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080604083850312156186c257600080fd5b6186cb836184fb565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561872d5761872d6186db565b60405290565b60008067ffffffffffffffff84111561874e5761874e6186db565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561877d5761877d6186db565b60405283815290508082840185101561879557600080fd5b615d3a846020830185618199565b6000602082840312156187b557600080fd5b815167ffffffffffffffff8111156187cc57600080fd5b8201601f810184136187dd57600080fd5b613ec184825160208401618733565b6000602082840312156187fe57600080fd5b815160ff8116811461407257600080fd5b60408152600061882260408301856181bd565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613ec557613ec5618831565b60408152600061888660408301856181bd565b828103602084015261406e81856181bd565b6001600160a01b038316815260406020820152600061596b60408301846181bd565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188f281601a850160208801618199565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161892f81601c840160208801618199565b01601c01949350505050565b60208152600061407260208301846181bd565b600082601f83011261895f57600080fd5b61407283835160208501618733565b60006020828403121561898057600080fd5b815167ffffffffffffffff81111561899757600080fd5b613ec18482850161894e565b600083516189b5818460208801618199565b8351908301906189c9818360208801618199565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618a0a81601a850160208801618199565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a47816033840160208801618199565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061407260808301846181bd565b60008551618ad6818460208a01618199565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618b10816001840160208a01618199565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b4e816002840160208901618199565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b90816002840160208801618199565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bdb60408301846181bd565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c5281601f850160208701618199565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618cbf60408301846181bd565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618d1160408301846181bd565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d88816014850160208701618199565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e23816001850160208701618199565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e69818460208701618199565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618f1c81604b850160208701618199565b91909101604b0192915050565b600060ff821660ff8103618f3f57618f3f618831565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061407260808301846181bd565b60006020828403121561900c57600080fd5b815167ffffffffffffffff81111561902357600080fd5b82016060818503121561903557600080fd5b61903d61870a565b81518060030b811461904e57600080fd5b8152602082015167ffffffffffffffff81111561906a57600080fd5b6190768682850161894e565b602083015250604082015167ffffffffffffffff81111561909657600080fd5b6190a28682850161894e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161910e816021850160208701618199565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192fa816021850160208801618199565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161933781602e840160208801618199565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193ff816022850160208701618199565b9190910160220192915050565b81810381811115613ec557613ec5618831565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161945781600e850160208701618199565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619535816018850160208801618199565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161957281601c840160208801618199565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619678818460208701618199565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196df81601c850160208701618199565b91909101601c0192915050565b600060001982036196ff576196ff618831565b5060010190565b8082028115828204841417613ec557613ec5618831565b6001815b60018411156197585780850481111561973c5761973c618831565b600184161561974a57908102905b60019390931c928002619721565b935093915050565b60008261976f57506001613ec5565b8161977c57506000613ec5565b8160018114619792576002811461979c576197b8565b6001915050613ec5565b60ff8411156197ad576197ad618831565b50506001821b613ec5565b5060208310610133831016604e8410600b84101617156197db575081810a613ec5565b6197e8600019848461971d565b80600019048211156197fc576197fc618831565b029392505050565b60006140728383619760565b60008161981f5761981f618831565b506000190190565b60008351619839818460208801618199565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619873816001840160208801618199565b01600101949350505050565b81810360008312801583831316838312821617156173325761733261883156fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220c48754726d81399e67d0c14c28bfd80f7bc7cfde7870a78a5197c6a55d793c9464736f6c634300081a0033", +} + +// ZRC20TestABI is the input ABI used to generate the binding from. +// Deprecated: Use ZRC20TestMetaData.ABI instead. +var ZRC20TestABI = ZRC20TestMetaData.ABI + +// ZRC20TestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZRC20TestMetaData.Bin instead. +var ZRC20TestBin = ZRC20TestMetaData.Bin + +// DeployZRC20Test deploys a new Ethereum contract, binding an instance of ZRC20Test to it. +func DeployZRC20Test(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ZRC20Test, error) { + parsed, err := ZRC20TestMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZRC20TestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZRC20Test{ZRC20TestCaller: ZRC20TestCaller{contract: contract}, ZRC20TestTransactor: ZRC20TestTransactor{contract: contract}, ZRC20TestFilterer: ZRC20TestFilterer{contract: contract}}, nil +} + +// ZRC20Test is an auto generated Go binding around an Ethereum contract. +type ZRC20Test struct { + ZRC20TestCaller // Read-only binding to the contract + ZRC20TestTransactor // Write-only binding to the contract + ZRC20TestFilterer // Log filterer for contract events +} + +// ZRC20TestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZRC20TestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20TestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZRC20TestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20TestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZRC20TestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZRC20TestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZRC20TestSession struct { + Contract *ZRC20Test // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20TestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZRC20TestCallerSession struct { + Contract *ZRC20TestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZRC20TestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZRC20TestTransactorSession struct { + Contract *ZRC20TestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZRC20TestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZRC20TestRaw struct { + Contract *ZRC20Test // Generic contract binding to access the raw methods on +} + +// ZRC20TestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZRC20TestCallerRaw struct { + Contract *ZRC20TestCaller // Generic read-only contract binding to access the raw methods on +} + +// ZRC20TestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZRC20TestTransactorRaw struct { + Contract *ZRC20TestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZRC20Test creates a new instance of ZRC20Test, bound to a specific deployed contract. +func NewZRC20Test(address common.Address, backend bind.ContractBackend) (*ZRC20Test, error) { + contract, err := bindZRC20Test(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZRC20Test{ZRC20TestCaller: ZRC20TestCaller{contract: contract}, ZRC20TestTransactor: ZRC20TestTransactor{contract: contract}, ZRC20TestFilterer: ZRC20TestFilterer{contract: contract}}, nil +} + +// NewZRC20TestCaller creates a new read-only instance of ZRC20Test, bound to a specific deployed contract. +func NewZRC20TestCaller(address common.Address, caller bind.ContractCaller) (*ZRC20TestCaller, error) { + contract, err := bindZRC20Test(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZRC20TestCaller{contract: contract}, nil +} + +// NewZRC20TestTransactor creates a new write-only instance of ZRC20Test, bound to a specific deployed contract. +func NewZRC20TestTransactor(address common.Address, transactor bind.ContractTransactor) (*ZRC20TestTransactor, error) { + contract, err := bindZRC20Test(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZRC20TestTransactor{contract: contract}, nil +} + +// NewZRC20TestFilterer creates a new log filterer instance of ZRC20Test, bound to a specific deployed contract. +func NewZRC20TestFilterer(address common.Address, filterer bind.ContractFilterer) (*ZRC20TestFilterer, error) { + contract, err := bindZRC20Test(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZRC20TestFilterer{contract: contract}, nil +} + +// bindZRC20Test binds a generic wrapper to an already deployed contract. +func bindZRC20Test(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZRC20TestMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Test *ZRC20TestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Test.Contract.ZRC20TestCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Test *ZRC20TestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.Contract.ZRC20TestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Test *ZRC20TestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Test.Contract.ZRC20TestTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZRC20Test *ZRC20TestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZRC20Test.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZRC20Test *ZRC20TestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZRC20Test *ZRC20TestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZRC20Test.Contract.contract.Transact(opts, method, params...) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZRC20Test *ZRC20TestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZRC20Test *ZRC20TestSession) ISTEST() (bool, error) { + return _ZRC20Test.Contract.ISTEST(&_ZRC20Test.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ZRC20Test *ZRC20TestCallerSession) ISTEST() (bool, error) { + return _ZRC20Test.Contract.ISTEST(&_ZRC20Test.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZRC20Test *ZRC20TestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZRC20Test *ZRC20TestSession) ExcludeArtifacts() ([]string, error) { + return _ZRC20Test.Contract.ExcludeArtifacts(&_ZRC20Test.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ZRC20Test *ZRC20TestCallerSession) ExcludeArtifacts() ([]string, error) { + return _ZRC20Test.Contract.ExcludeArtifacts(&_ZRC20Test.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZRC20Test *ZRC20TestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZRC20Test *ZRC20TestSession) ExcludeContracts() ([]common.Address, error) { + return _ZRC20Test.Contract.ExcludeContracts(&_ZRC20Test.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ZRC20Test *ZRC20TestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _ZRC20Test.Contract.ExcludeContracts(&_ZRC20Test.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZRC20Test *ZRC20TestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZRC20Test *ZRC20TestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZRC20Test.Contract.ExcludeSelectors(&_ZRC20Test.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ZRC20Test *ZRC20TestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZRC20Test.Contract.ExcludeSelectors(&_ZRC20Test.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZRC20Test *ZRC20TestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZRC20Test *ZRC20TestSession) ExcludeSenders() ([]common.Address, error) { + return _ZRC20Test.Contract.ExcludeSenders(&_ZRC20Test.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ZRC20Test *ZRC20TestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _ZRC20Test.Contract.ExcludeSenders(&_ZRC20Test.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZRC20Test *ZRC20TestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZRC20Test *ZRC20TestSession) Failed() (bool, error) { + return _ZRC20Test.Contract.Failed(&_ZRC20Test.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ZRC20Test *ZRC20TestCallerSession) Failed() (bool, error) { + return _ZRC20Test.Contract.Failed(&_ZRC20Test.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZRC20Test *ZRC20TestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZRC20Test *ZRC20TestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZRC20Test.Contract.TargetArtifactSelectors(&_ZRC20Test.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ZRC20Test.Contract.TargetArtifactSelectors(&_ZRC20Test.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZRC20Test *ZRC20TestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZRC20Test *ZRC20TestSession) TargetArtifacts() ([]string, error) { + return _ZRC20Test.Contract.TargetArtifacts(&_ZRC20Test.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetArtifacts() ([]string, error) { + return _ZRC20Test.Contract.TargetArtifacts(&_ZRC20Test.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZRC20Test *ZRC20TestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZRC20Test *ZRC20TestSession) TargetContracts() ([]common.Address, error) { + return _ZRC20Test.Contract.TargetContracts(&_ZRC20Test.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetContracts() ([]common.Address, error) { + return _ZRC20Test.Contract.TargetContracts(&_ZRC20Test.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZRC20Test *ZRC20TestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZRC20Test *ZRC20TestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZRC20Test.Contract.TargetInterfaces(&_ZRC20Test.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ZRC20Test.Contract.TargetInterfaces(&_ZRC20Test.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZRC20Test *ZRC20TestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZRC20Test *ZRC20TestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZRC20Test.Contract.TargetSelectors(&_ZRC20Test.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ZRC20Test.Contract.TargetSelectors(&_ZRC20Test.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZRC20Test *ZRC20TestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ZRC20Test.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZRC20Test *ZRC20TestSession) TargetSenders() ([]common.Address, error) { + return _ZRC20Test.Contract.TargetSenders(&_ZRC20Test.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ZRC20Test *ZRC20TestCallerSession) TargetSenders() ([]common.Address, error) { + return _ZRC20Test.Contract.TargetSenders(&_ZRC20Test.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZRC20Test *ZRC20TestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZRC20Test *ZRC20TestSession) SetUp() (*types.Transaction, error) { + return _ZRC20Test.Contract.SetUp(&_ZRC20Test.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) SetUp() (*types.Transaction, error) { + return _ZRC20Test.Contract.SetUp(&_ZRC20Test.TransactOpts) +} + +// TestBurn is a paid mutator transaction binding the contract method 0xe13aba48. +// +// Solidity: function testBurn() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestBurn(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testBurn") +} + +// TestBurn is a paid mutator transaction binding the contract method 0xe13aba48. +// +// Solidity: function testBurn() returns() +func (_ZRC20Test *ZRC20TestSession) TestBurn() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestBurn(&_ZRC20Test.TransactOpts) +} + +// TestBurn is a paid mutator transaction binding the contract method 0xe13aba48. +// +// Solidity: function testBurn() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestBurn() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestBurn(&_ZRC20Test.TransactOpts) +} + +// TestBurnFailsIfNoBalance is a paid mutator transaction binding the contract method 0x80326680. +// +// Solidity: function testBurnFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestBurnFailsIfNoBalance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testBurnFailsIfNoBalance") +} + +// TestBurnFailsIfNoBalance is a paid mutator transaction binding the contract method 0x80326680. +// +// Solidity: function testBurnFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestSession) TestBurnFailsIfNoBalance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestBurnFailsIfNoBalance(&_ZRC20Test.TransactOpts) +} + +// TestBurnFailsIfNoBalance is a paid mutator transaction binding the contract method 0x80326680. +// +// Solidity: function testBurnFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestBurnFailsIfNoBalance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestBurnFailsIfNoBalance(&_ZRC20Test.TransactOpts) +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestDeposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testDeposit") +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_ZRC20Test *ZRC20TestSession) TestDeposit() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestDeposit(&_ZRC20Test.TransactOpts) +} + +// TestDeposit is a paid mutator transaction binding the contract method 0x7f924c4e. +// +// Solidity: function testDeposit() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestDeposit() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestDeposit(&_ZRC20Test.TransactOpts) +} + +// TestDepositFailsIfSenderIsNotGateway is a paid mutator transaction binding the contract method 0x1142744e. +// +// Solidity: function testDepositFailsIfSenderIsNotGateway() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestDepositFailsIfSenderIsNotGateway(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testDepositFailsIfSenderIsNotGateway") +} + +// TestDepositFailsIfSenderIsNotGateway is a paid mutator transaction binding the contract method 0x1142744e. +// +// Solidity: function testDepositFailsIfSenderIsNotGateway() returns() +func (_ZRC20Test *ZRC20TestSession) TestDepositFailsIfSenderIsNotGateway() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestDepositFailsIfSenderIsNotGateway(&_ZRC20Test.TransactOpts) +} + +// TestDepositFailsIfSenderIsNotGateway is a paid mutator transaction binding the contract method 0x1142744e. +// +// Solidity: function testDepositFailsIfSenderIsNotGateway() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestDepositFailsIfSenderIsNotGateway() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestDepositFailsIfSenderIsNotGateway(&_ZRC20Test.TransactOpts) +} + +// TestTransferFrom is a paid mutator transaction binding the contract method 0x70557298. +// +// Solidity: function testTransferFrom() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestTransferFrom(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testTransferFrom") +} + +// TestTransferFrom is a paid mutator transaction binding the contract method 0x70557298. +// +// Solidity: function testTransferFrom() returns() +func (_ZRC20Test *ZRC20TestSession) TestTransferFrom() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFrom(&_ZRC20Test.TransactOpts) +} + +// TestTransferFrom is a paid mutator transaction binding the contract method 0x70557298. +// +// Solidity: function testTransferFrom() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestTransferFrom() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFrom(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xf2413096. +// +// Solidity: function testTransferFromFailsIfNoAllowance() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestTransferFromFailsIfNoAllowance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testTransferFromFailsIfNoAllowance") +} + +// TestTransferFromFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xf2413096. +// +// Solidity: function testTransferFromFailsIfNoAllowance() returns() +func (_ZRC20Test *ZRC20TestSession) TestTransferFromFailsIfNoAllowance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfNoAllowance(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfNoAllowance is a paid mutator transaction binding the contract method 0xf2413096. +// +// Solidity: function testTransferFromFailsIfNoAllowance() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestTransferFromFailsIfNoAllowance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfNoAllowance(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfNoBalance is a paid mutator transaction binding the contract method 0x6ff45850. +// +// Solidity: function testTransferFromFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestTransferFromFailsIfNoBalance(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testTransferFromFailsIfNoBalance") +} + +// TestTransferFromFailsIfNoBalance is a paid mutator transaction binding the contract method 0x6ff45850. +// +// Solidity: function testTransferFromFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestSession) TestTransferFromFailsIfNoBalance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfNoBalance(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfNoBalance is a paid mutator transaction binding the contract method 0x6ff45850. +// +// Solidity: function testTransferFromFailsIfNoBalance() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestTransferFromFailsIfNoBalance() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfNoBalance(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfRecipientIsZeroAddress is a paid mutator transaction binding the contract method 0xd97136a2. +// +// Solidity: function testTransferFromFailsIfRecipientIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestTransferFromFailsIfRecipientIsZeroAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testTransferFromFailsIfRecipientIsZeroAddress") +} + +// TestTransferFromFailsIfRecipientIsZeroAddress is a paid mutator transaction binding the contract method 0xd97136a2. +// +// Solidity: function testTransferFromFailsIfRecipientIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestSession) TestTransferFromFailsIfRecipientIsZeroAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfRecipientIsZeroAddress(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfRecipientIsZeroAddress is a paid mutator transaction binding the contract method 0xd97136a2. +// +// Solidity: function testTransferFromFailsIfRecipientIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestTransferFromFailsIfRecipientIsZeroAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfRecipientIsZeroAddress(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfSenderIsZeroAddress is a paid mutator transaction binding the contract method 0x28438826. +// +// Solidity: function testTransferFromFailsIfSenderIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestTransferFromFailsIfSenderIsZeroAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testTransferFromFailsIfSenderIsZeroAddress") +} + +// TestTransferFromFailsIfSenderIsZeroAddress is a paid mutator transaction binding the contract method 0x28438826. +// +// Solidity: function testTransferFromFailsIfSenderIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestSession) TestTransferFromFailsIfSenderIsZeroAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfSenderIsZeroAddress(&_ZRC20Test.TransactOpts) +} + +// TestTransferFromFailsIfSenderIsZeroAddress is a paid mutator transaction binding the contract method 0x28438826. +// +// Solidity: function testTransferFromFailsIfSenderIsZeroAddress() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestTransferFromFailsIfSenderIsZeroAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestTransferFromFailsIfSenderIsZeroAddress(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGasLimit is a paid mutator transaction binding the contract method 0x5f01db7e. +// +// Solidity: function testUpdateGasLimit() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateGasLimit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateGasLimit") +} + +// TestUpdateGasLimit is a paid mutator transaction binding the contract method 0x5f01db7e. +// +// Solidity: function testUpdateGasLimit() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateGasLimit() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGasLimit(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGasLimit is a paid mutator transaction binding the contract method 0x5f01db7e. +// +// Solidity: function testUpdateGasLimit() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateGasLimit() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGasLimit(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGasLimitFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0xb549984c. +// +// Solidity: function testUpdateGasLimitFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateGasLimitFailsIfSenderIsNotFungible(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateGasLimitFailsIfSenderIsNotFungible") +} + +// TestUpdateGasLimitFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0xb549984c. +// +// Solidity: function testUpdateGasLimitFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateGasLimitFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGasLimitFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGasLimitFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0xb549984c. +// +// Solidity: function testUpdateGasLimitFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateGasLimitFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGasLimitFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGatewayAddress is a paid mutator transaction binding the contract method 0xdfbdf600. +// +// Solidity: function testUpdateGatewayAddress() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateGatewayAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateGatewayAddress") +} + +// TestUpdateGatewayAddress is a paid mutator transaction binding the contract method 0xdfbdf600. +// +// Solidity: function testUpdateGatewayAddress() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateGatewayAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGatewayAddress(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGatewayAddress is a paid mutator transaction binding the contract method 0xdfbdf600. +// +// Solidity: function testUpdateGatewayAddress() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateGatewayAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGatewayAddress(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGatewayAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x4b629509. +// +// Solidity: function testUpdateGatewayAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateGatewayAddressFailsIfSenderIsNotFungible(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateGatewayAddressFailsIfSenderIsNotFungible") +} + +// TestUpdateGatewayAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x4b629509. +// +// Solidity: function testUpdateGatewayAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateGatewayAddressFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGatewayAddressFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateGatewayAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x4b629509. +// +// Solidity: function testUpdateGatewayAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateGatewayAddressFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateGatewayAddressFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xd04cda98. +// +// Solidity: function testUpdateProtocolFlatFee() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateProtocolFlatFee(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateProtocolFlatFee") +} + +// TestUpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xd04cda98. +// +// Solidity: function testUpdateProtocolFlatFee() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateProtocolFlatFee() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateProtocolFlatFee(&_ZRC20Test.TransactOpts) +} + +// TestUpdateProtocolFlatFee is a paid mutator transaction binding the contract method 0xd04cda98. +// +// Solidity: function testUpdateProtocolFlatFee() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateProtocolFlatFee() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateProtocolFlatFee(&_ZRC20Test.TransactOpts) +} + +// TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x0393998b. +// +// Solidity: function testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible") +} + +// TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x0393998b. +// +// Solidity: function testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x0393998b. +// +// Solidity: function testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateProtocolFlatFeeFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateSystemContractAddress is a paid mutator transaction binding the contract method 0x2f6254fc. +// +// Solidity: function testUpdateSystemContractAddress() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateSystemContractAddress(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateSystemContractAddress") +} + +// TestUpdateSystemContractAddress is a paid mutator transaction binding the contract method 0x2f6254fc. +// +// Solidity: function testUpdateSystemContractAddress() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateSystemContractAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateSystemContractAddress(&_ZRC20Test.TransactOpts) +} + +// TestUpdateSystemContractAddress is a paid mutator transaction binding the contract method 0x2f6254fc. +// +// Solidity: function testUpdateSystemContractAddress() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateSystemContractAddress() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateSystemContractAddress(&_ZRC20Test.TransactOpts) +} + +// TestUpdateSystemContractAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x58fdbbe0. +// +// Solidity: function testUpdateSystemContractAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestUpdateSystemContractAddressFailsIfSenderIsNotFungible(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testUpdateSystemContractAddressFailsIfSenderIsNotFungible") +} + +// TestUpdateSystemContractAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x58fdbbe0. +// +// Solidity: function testUpdateSystemContractAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestSession) TestUpdateSystemContractAddressFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateSystemContractAddressFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestUpdateSystemContractAddressFailsIfSenderIsNotFungible is a paid mutator transaction binding the contract method 0x58fdbbe0. +// +// Solidity: function testUpdateSystemContractAddressFailsIfSenderIsNotFungible() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestUpdateSystemContractAddressFailsIfSenderIsNotFungible() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestUpdateSystemContractAddressFailsIfSenderIsNotFungible(&_ZRC20Test.TransactOpts) +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestWithdraw(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testWithdraw") +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZRC20Test *ZRC20TestSession) TestWithdraw() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdraw(&_ZRC20Test.TransactOpts) +} + +// TestWithdraw is a paid mutator transaction binding the contract method 0xd509b16c. +// +// Solidity: function testWithdraw() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestWithdraw() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdraw(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFee is a paid mutator transaction binding the contract method 0xdcba486a. +// +// Solidity: function testWithdrawGasFee() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestWithdrawGasFee(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testWithdrawGasFee") +} + +// TestWithdrawGasFee is a paid mutator transaction binding the contract method 0xdcba486a. +// +// Solidity: function testWithdrawGasFee() returns() +func (_ZRC20Test *ZRC20TestSession) TestWithdrawGasFee() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFee(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFee is a paid mutator transaction binding the contract method 0xdcba486a. +// +// Solidity: function testWithdrawGasFee() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestWithdrawGasFee() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFee(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId is a paid mutator transaction binding the contract method 0xf1f87f40. +// +// Solidity: function testWithdrawGasFeeFailsIfGasCoinNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testWithdrawGasFeeFailsIfGasCoinNotSetForChainId") +} + +// TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId is a paid mutator transaction binding the contract method 0xf1f87f40. +// +// Solidity: function testWithdrawGasFeeFailsIfGasCoinNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestSession) TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId is a paid mutator transaction binding the contract method 0xf1f87f40. +// +// Solidity: function testWithdrawGasFeeFailsIfGasCoinNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFeeFailsIfGasCoinNotSetForChainId(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId is a paid mutator transaction binding the contract method 0x3be9ec80. +// +// Solidity: function testWithdrawGasFeeFailsIfGasPriceNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testWithdrawGasFeeFailsIfGasPriceNotSetForChainId") +} + +// TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId is a paid mutator transaction binding the contract method 0x3be9ec80. +// +// Solidity: function testWithdrawGasFeeFailsIfGasPriceNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestSession) TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId(&_ZRC20Test.TransactOpts) +} + +// TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId is a paid mutator transaction binding the contract method 0x3be9ec80. +// +// Solidity: function testWithdrawGasFeeFailsIfGasPriceNotSetForChainId() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestWithdrawGasFeeFailsIfGasPriceNotSetForChainId(&_ZRC20Test.TransactOpts) +} + +// TestZRC20BasicInfo is a paid mutator transaction binding the contract method 0xae9687dc. +// +// Solidity: function testZRC20BasicInfo() returns() +func (_ZRC20Test *ZRC20TestTransactor) TestZRC20BasicInfo(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZRC20Test.contract.Transact(opts, "testZRC20BasicInfo") +} + +// TestZRC20BasicInfo is a paid mutator transaction binding the contract method 0xae9687dc. +// +// Solidity: function testZRC20BasicInfo() returns() +func (_ZRC20Test *ZRC20TestSession) TestZRC20BasicInfo() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestZRC20BasicInfo(&_ZRC20Test.TransactOpts) +} + +// TestZRC20BasicInfo is a paid mutator transaction binding the contract method 0xae9687dc. +// +// Solidity: function testZRC20BasicInfo() returns() +func (_ZRC20Test *ZRC20TestTransactorSession) TestZRC20BasicInfo() (*types.Transaction, error) { + return _ZRC20Test.Contract.TestZRC20BasicInfo(&_ZRC20Test.TransactOpts) +} + +// ZRC20TestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the ZRC20Test contract. +type ZRC20TestLogIterator struct { + Event *ZRC20TestLog // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLog) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLog represents a Log event raised by the ZRC20Test contract. +type ZRC20TestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLog(opts *bind.FilterOpts) (*ZRC20TestLogIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &ZRC20TestLogIterator{contract: _ZRC20Test.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *ZRC20TestLog) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLog) + if err := _ZRC20Test.contract.UnpackLog(event, "log", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLog(log types.Log) (*ZRC20TestLog, error) { + event := new(ZRC20TestLog) + if err := _ZRC20Test.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the ZRC20Test contract. +type ZRC20TestLogAddressIterator struct { + Event *ZRC20TestLogAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogAddress represents a LogAddress event raised by the ZRC20Test contract. +type ZRC20TestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*ZRC20TestLogAddressIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &ZRC20TestLogAddressIterator{contract: _ZRC20Test.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogAddress) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogAddress) + if err := _ZRC20Test.contract.UnpackLog(event, "log_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogAddress(log types.Log) (*ZRC20TestLogAddress, error) { + event := new(ZRC20TestLogAddress) + if err := _ZRC20Test.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the ZRC20Test contract. +type ZRC20TestLogArrayIterator struct { + Event *ZRC20TestLogArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogArray represents a LogArray event raised by the ZRC20Test contract. +type ZRC20TestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogArray(opts *bind.FilterOpts) (*ZRC20TestLogArrayIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &ZRC20TestLogArrayIterator{contract: _ZRC20Test.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogArray) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogArray) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogArray(log types.Log) (*ZRC20TestLogArray, error) { + event := new(ZRC20TestLogArray) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the ZRC20Test contract. +type ZRC20TestLogArray0Iterator struct { + Event *ZRC20TestLogArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogArray0 represents a LogArray0 event raised by the ZRC20Test contract. +type ZRC20TestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*ZRC20TestLogArray0Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &ZRC20TestLogArray0Iterator{contract: _ZRC20Test.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogArray0) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogArray0) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogArray0(log types.Log) (*ZRC20TestLogArray0, error) { + event := new(ZRC20TestLogArray0) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the ZRC20Test contract. +type ZRC20TestLogArray1Iterator struct { + Event *ZRC20TestLogArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogArray1 represents a LogArray1 event raised by the ZRC20Test contract. +type ZRC20TestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*ZRC20TestLogArray1Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &ZRC20TestLogArray1Iterator{contract: _ZRC20Test.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogArray1) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogArray1) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogArray1(log types.Log) (*ZRC20TestLogArray1, error) { + event := new(ZRC20TestLogArray1) + if err := _ZRC20Test.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the ZRC20Test contract. +type ZRC20TestLogBytesIterator struct { + Event *ZRC20TestLogBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogBytes represents a LogBytes event raised by the ZRC20Test contract. +type ZRC20TestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*ZRC20TestLogBytesIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &ZRC20TestLogBytesIterator{contract: _ZRC20Test.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogBytes) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogBytes) + if err := _ZRC20Test.contract.UnpackLog(event, "log_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogBytes(log types.Log) (*ZRC20TestLogBytes, error) { + event := new(ZRC20TestLogBytes) + if err := _ZRC20Test.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the ZRC20Test contract. +type ZRC20TestLogBytes32Iterator struct { + Event *ZRC20TestLogBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogBytes32 represents a LogBytes32 event raised by the ZRC20Test contract. +type ZRC20TestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*ZRC20TestLogBytes32Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &ZRC20TestLogBytes32Iterator{contract: _ZRC20Test.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogBytes32) + if err := _ZRC20Test.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogBytes32(log types.Log) (*ZRC20TestLogBytes32, error) { + event := new(ZRC20TestLogBytes32) + if err := _ZRC20Test.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the ZRC20Test contract. +type ZRC20TestLogIntIterator struct { + Event *ZRC20TestLogInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogInt represents a LogInt event raised by the ZRC20Test contract. +type ZRC20TestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogInt(opts *bind.FilterOpts) (*ZRC20TestLogIntIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &ZRC20TestLogIntIterator{contract: _ZRC20Test.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogInt) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogInt(log types.Log) (*ZRC20TestLogInt, error) { + event := new(ZRC20TestLogInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the ZRC20Test contract. +type ZRC20TestLogNamedAddressIterator struct { + Event *ZRC20TestLogNamedAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedAddress represents a LogNamedAddress event raised by the ZRC20Test contract. +type ZRC20TestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*ZRC20TestLogNamedAddressIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedAddressIterator{contract: _ZRC20Test.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedAddress) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_address", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedAddress(log types.Log) (*ZRC20TestLogNamedAddress, error) { + event := new(ZRC20TestLogNamedAddress) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the ZRC20Test contract. +type ZRC20TestLogNamedArrayIterator struct { + Event *ZRC20TestLogNamedArray // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedArrayIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedArray represents a LogNamedArray event raised by the ZRC20Test contract. +type ZRC20TestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*ZRC20TestLogNamedArrayIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedArrayIterator{contract: _ZRC20Test.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedArray) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedArray(log types.Log) (*ZRC20TestLogNamedArray, error) { + event := new(ZRC20TestLogNamedArray) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the ZRC20Test contract. +type ZRC20TestLogNamedArray0Iterator struct { + Event *ZRC20TestLogNamedArray0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedArray0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedArray0 represents a LogNamedArray0 event raised by the ZRC20Test contract. +type ZRC20TestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*ZRC20TestLogNamedArray0Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedArray0Iterator{contract: _ZRC20Test.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedArray0) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedArray0(log types.Log) (*ZRC20TestLogNamedArray0, error) { + event := new(ZRC20TestLogNamedArray0) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the ZRC20Test contract. +type ZRC20TestLogNamedArray1Iterator struct { + Event *ZRC20TestLogNamedArray1 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedArray1Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedArray1) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedArray1 represents a LogNamedArray1 event raised by the ZRC20Test contract. +type ZRC20TestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*ZRC20TestLogNamedArray1Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedArray1Iterator{contract: _ZRC20Test.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedArray1) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedArray1(log types.Log) (*ZRC20TestLogNamedArray1, error) { + event := new(ZRC20TestLogNamedArray1) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the ZRC20Test contract. +type ZRC20TestLogNamedBytesIterator struct { + Event *ZRC20TestLogNamedBytes // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedBytesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedBytes) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedBytes represents a LogNamedBytes event raised by the ZRC20Test contract. +type ZRC20TestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*ZRC20TestLogNamedBytesIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedBytesIterator{contract: _ZRC20Test.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedBytes) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedBytes(log types.Log) (*ZRC20TestLogNamedBytes, error) { + event := new(ZRC20TestLogNamedBytes) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the ZRC20Test contract. +type ZRC20TestLogNamedBytes32Iterator struct { + Event *ZRC20TestLogNamedBytes32 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedBytes32Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedBytes32) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedBytes32 represents a LogNamedBytes32 event raised by the ZRC20Test contract. +type ZRC20TestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*ZRC20TestLogNamedBytes32Iterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedBytes32Iterator{contract: _ZRC20Test.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedBytes32) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedBytes32(log types.Log) (*ZRC20TestLogNamedBytes32, error) { + event := new(ZRC20TestLogNamedBytes32) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the ZRC20Test contract. +type ZRC20TestLogNamedDecimalIntIterator struct { + Event *ZRC20TestLogNamedDecimalInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedDecimalIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedDecimalInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the ZRC20Test contract. +type ZRC20TestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*ZRC20TestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedDecimalIntIterator{contract: _ZRC20Test.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedDecimalInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedDecimalInt(log types.Log) (*ZRC20TestLogNamedDecimalInt, error) { + event := new(ZRC20TestLogNamedDecimalInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the ZRC20Test contract. +type ZRC20TestLogNamedDecimalUintIterator struct { + Event *ZRC20TestLogNamedDecimalUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedDecimalUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedDecimalUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the ZRC20Test contract. +type ZRC20TestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*ZRC20TestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedDecimalUintIterator{contract: _ZRC20Test.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedDecimalUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedDecimalUint(log types.Log) (*ZRC20TestLogNamedDecimalUint, error) { + event := new(ZRC20TestLogNamedDecimalUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the ZRC20Test contract. +type ZRC20TestLogNamedIntIterator struct { + Event *ZRC20TestLogNamedInt // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedIntIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedInt) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedInt represents a LogNamedInt event raised by the ZRC20Test contract. +type ZRC20TestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*ZRC20TestLogNamedIntIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedIntIterator{contract: _ZRC20Test.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_int", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedInt(log types.Log) (*ZRC20TestLogNamedInt, error) { + event := new(ZRC20TestLogNamedInt) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the ZRC20Test contract. +type ZRC20TestLogNamedStringIterator struct { + Event *ZRC20TestLogNamedString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedString represents a LogNamedString event raised by the ZRC20Test contract. +type ZRC20TestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*ZRC20TestLogNamedStringIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedStringIterator{contract: _ZRC20Test.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedString) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedString(log types.Log) (*ZRC20TestLogNamedString, error) { + event := new(ZRC20TestLogNamedString) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the ZRC20Test contract. +type ZRC20TestLogNamedUintIterator struct { + Event *ZRC20TestLogNamedUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogNamedUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogNamedUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogNamedUint represents a LogNamedUint event raised by the ZRC20Test contract. +type ZRC20TestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*ZRC20TestLogNamedUintIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &ZRC20TestLogNamedUintIterator{contract: _ZRC20Test.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogNamedUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogNamedUint(log types.Log) (*ZRC20TestLogNamedUint, error) { + event := new(ZRC20TestLogNamedUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the ZRC20Test contract. +type ZRC20TestLogStringIterator struct { + Event *ZRC20TestLogString // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogStringIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogString) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogString represents a LogString event raised by the ZRC20Test contract. +type ZRC20TestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogString(opts *bind.FilterOpts) (*ZRC20TestLogStringIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &ZRC20TestLogStringIterator{contract: _ZRC20Test.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogString) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_string") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogString) + if err := _ZRC20Test.contract.UnpackLog(event, "log_string", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogString(log types.Log) (*ZRC20TestLogString, error) { + event := new(ZRC20TestLogString) + if err := _ZRC20Test.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the ZRC20Test contract. +type ZRC20TestLogUintIterator struct { + Event *ZRC20TestLogUint // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogUintIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogUint) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogUint represents a LogUint event raised by the ZRC20Test contract. +type ZRC20TestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogUint(opts *bind.FilterOpts) (*ZRC20TestLogUintIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &ZRC20TestLogUintIterator{contract: _ZRC20Test.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogUint) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_uint", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogUint(log types.Log) (*ZRC20TestLogUint, error) { + event := new(ZRC20TestLogUint) + if err := _ZRC20Test.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZRC20TestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the ZRC20Test contract. +type ZRC20TestLogsIterator struct { + Event *ZRC20TestLogs // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZRC20TestLogsIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZRC20TestLogs) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZRC20TestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZRC20TestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZRC20TestLogs represents a Logs event raised by the ZRC20Test contract. +type ZRC20TestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) FilterLogs(opts *bind.FilterOpts) (*ZRC20TestLogsIterator, error) { + + logs, sub, err := _ZRC20Test.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &ZRC20TestLogsIterator{contract: _ZRC20Test.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *ZRC20TestLogs) (event.Subscription, error) { + + logs, sub, err := _ZRC20Test.contract.WatchLogs(opts, "logs") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZRC20TestLogs) + if err := _ZRC20Test.contract.UnpackLog(event, "logs", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ZRC20Test *ZRC20TestFilterer) ParseLogs(log types.Log) (*ZRC20TestLogs, error) { + event := new(ZRC20TestLogs) + if err := _ZRC20Test.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/v2/src/zevm/ZRC20.sol b/v2/src/zevm/ZRC20.sol index f12d057a..bfdd67ca 100644 --- a/v2/src/zevm/ZRC20.sol +++ b/v2/src/zevm/ZRC20.sol @@ -294,7 +294,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { /** * @dev Updates gas limit. Can only be updated by the fungible module. - * @param _gasLimit, new gas limit. + * @param gasLimit_, new gas limit. */ function updateGasLimit(uint256 gasLimit_) external onlyFungible { gasLimit = gasLimit_; @@ -303,7 +303,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { /** * @dev Updates protocol flat fee. Can only be updated by the fungible module. - * @param _protocolFlatFee, new protocol flat fee. + * @param protocolFlatFee_, new protocol flat fee. */ function updateProtocolFlatFee(uint256 protocolFlatFee_) external onlyFungible { protocolFlatFee = protocolFlatFee_; diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index 5e981449..383fc704 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -135,12 +135,12 @@ contract ZRC20Test is Test, ZRC20Errors { function testDeposit() public { uint256 totalSupplyStart = zrc20.totalSupply(); assertEq(100_000, totalSupplyStart); - + vm.prank(proxy); - zrc20.deposit(owner, 100_000); + zrc20.deposit(owner, 100_000); uint256 totalSupplyEnd = zrc20.totalSupply(); - assertEq(200_000, totalSupplyEnd); + assertEq(200_000, totalSupplyEnd); } function testWithdrawGasFee() public { @@ -199,7 +199,7 @@ contract ZRC20Test is Test, ZRC20Errors { function testDepositFailsIfSenderIsNotGateway() public { vm.expectRevert(InvalidSender.selector); - zrc20.deposit(owner, 100_000); + zrc20.deposit(owner, 100_000); } function testUpdateSystemContractAddress() public { @@ -218,7 +218,7 @@ contract ZRC20Test is Test, ZRC20Errors { zrc20.updateGatewayAddress(address(0x3211)); assertEq(zrc20.gatewayAddress(), address(0x3211)); } - + function testUpdateGatewayAddressFailsIfSenderIsNotFungible() public { vm.expectRevert(CallerIsNotFungibleModule.selector); zrc20.updateGatewayAddress(address(0x3211)); diff --git a/v2/typechain-types/ZRC20.sol/ZRC20.ts b/v2/typechain-types/ZRC20.sol/ZRC20.ts index 2db96eeb..dfa9add2 100644 --- a/v2/typechain-types/ZRC20.sol/ZRC20.ts +++ b/v2/typechain-types/ZRC20.sol/ZRC20.ts @@ -429,7 +429,7 @@ export interface ZRC20 extends BaseContract { >; updateGasLimit: TypedContractMethod< - [gasLimit: BigNumberish], + [gasLimit_: BigNumberish], [void], "nonpayable" >; @@ -441,7 +441,7 @@ export interface ZRC20 extends BaseContract { >; updateProtocolFlatFee: TypedContractMethod< - [protocolFlatFee: BigNumberish], + [protocolFlatFee_: BigNumberish], [void], "nonpayable" >; @@ -540,13 +540,17 @@ export interface ZRC20 extends BaseContract { >; getFunction( nameOrSignature: "updateGasLimit" - ): TypedContractMethod<[gasLimit: BigNumberish], [void], "nonpayable">; + ): TypedContractMethod<[gasLimit_: BigNumberish], [void], "nonpayable">; getFunction( nameOrSignature: "updateGatewayAddress" ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "updateProtocolFlatFee" - ): TypedContractMethod<[protocolFlatFee: BigNumberish], [void], "nonpayable">; + ): TypedContractMethod< + [protocolFlatFee_: BigNumberish], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "updateSystemContractAddress" ): TypedContractMethod<[addr: AddressLike], [void], "nonpayable">; diff --git a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts index 3a04e186..8656717f 100644 --- a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts +++ b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts @@ -375,7 +375,7 @@ const _abi = [ name: "updateGasLimit", inputs: [ { - name: "gasLimit", + name: "gasLimit_", type: "uint256", internalType: "uint256", }, @@ -401,7 +401,7 @@ const _abi = [ name: "updateProtocolFlatFee", inputs: [ { - name: "protocolFlatFee", + name: "protocolFlatFee_", type: "uint256", internalType: "uint256", }, @@ -671,7 +671,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051611ab8380380611ab883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168461043460003960006103280152600081816102d901528181610a1d0152610b2301526116846000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b29190611263565b60405180910390f35b6101ce6101c93660046112a2565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112ce565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61028636600461130f565b610597565b6101ce6102993660046112a2565b6105ab565b6101e26102ac366004611328565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611345565b6101ce6103653660046112a2565b61070e565b6101ce6103783660046113b5565b61071b565b61039061038b366004611328565b61086a565b005b6103906103a0366004611328565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d36600461130f565b610c0f565b6101e260025481565b61039061044936600461130f565b610c8c565b6101e260035481565b606060078054610466906114e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114e6565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d09565b5060015b92915050565b600061050d848484610e12565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611568565b610d09565b506001949350505050565b60006105a33383610fcd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e838361110f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee91869061157b565b60405180910390a250600192915050565b606060088054610466906114e6565b60006104f6338484610e12565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061159d565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fcd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115bf565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115ee565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa919061160b565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf99190611624565b610c03919061163b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cd9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d56576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610da3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f0c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f168282611568565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f5990849061163b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff821661101a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561107a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110848282611568565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110bf908490611568565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e05565b73ffffffffffffffffffffffffffffffffffffffff821661115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461116e919061163b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111a890849061163b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122557602081850181015186830182015201611209565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061127660208301846111ff565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461129f57600080fd5b50565b600080604083850312156112b557600080fd5b82356112c08161127d565b946020939093013593505050565b6000806000606084860312156112e357600080fd5b83356112ee8161127d565b925060208401356112fe8161127d565b929592945050506040919091013590565b60006020828403121561132157600080fd5b5035919050565b60006020828403121561133a57600080fd5b81356112768161127d565b6020810160038310611380577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113c857600080fd5b823567ffffffffffffffff8111156113df57600080fd5b8301601f810185136113f057600080fd5b803567ffffffffffffffff81111561140a5761140a611386565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561147657611476611386565b60405281815282820160200187101561148e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114c057600080fd5b82356114cb8161127d565b915060208301356114db8161127d565b809150509250929050565b600181811c908216806114fa57607f821691505b602082108103611533577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611539565b60408152600061158e60408301856111ff565b90508260208301529392505050565b6000602082840312156115af57600080fd5b8151801515811461127657600080fd5b6080815260006115d260808301876111ff565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160057600080fd5b81516112768161127d565b60006020828403121561161d57600080fd5b5051919050565b80820281158282048414176104fa576104fa611539565b808201808211156104fa576104fa61153956fea26469706673582212201dcb1ca60d76e21bf9103b686ba5eec5b6b96f3153e3b80031dd406b7edcd78b64736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033"; type ZRC20ConstructorParams = | [signer?: Signer] From a06e946931ae97e911e601306aed4ae81f0fe734 Mon Sep 17 00:00:00 2001 From: skosito Date: Thu, 1 Aug 2024 23:00:44 +0200 Subject: [PATCH 48/60] generate --- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go index 95fddff8..468bb790 100644 --- a/v2/pkg/zrc20.t.sol/zrc20test.go +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. var ZRC20TestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf6d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061814d565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181e9565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061834f565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ed565b610325612323565b6040516102759190618464565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e6134db565b61024e613789565b61024e6138e5565b610268613bc1565b61024e613c21565b61024e613d99565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061806d565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613eac565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd9190618517565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a49061807a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618087565b61084596959493929190618532565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d9190618627565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190618627565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618649565b9050610dfc600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190618627565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618662565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190618517565b613211613f4b565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d491906186af565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618649565b613ecb565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618662565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618649565b9050611b04600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618649565b9050611d47600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de29190618627565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190618627565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618649565b9050610fd58282613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618649565b9050611fb1620186a082613ecb565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190618627565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618649565b905061216262030d4082613ecb565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618662565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618662565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b91908101906187a3565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261255991908101906187a3565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187ec565b905061262360128260ff16613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618649565b90506104d4620186a082613ecb565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618662565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618662565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618649565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190618649565b9050612e3b620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190618649565b9050612ec3620186a082613ecb565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190618649565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb9190618627565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c3509060380161880f565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c69190618627565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131599190618649565b905061316f613169836014618860565b82613ecb565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132009190618649565b905061320e61c33c82613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132879190618649565b905061329561c35082613ecb565b505050505050565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561330b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332f9190618649565b905061333c600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af11580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561373a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375e91906186af565b601f54919350915061377e9061010090046001600160a01b031683613f4b565b612162601482613ecb565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137fb57600080fd5b505af115801561380f573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139769190618649565b9050613985620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fe9190618649565b9050613a0d620186a082613ecb565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9a9190618627565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c9190618649565b9050613b3a61c35082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb39190618649565b90506104d461c35082613ecb565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c9357600080fd5b505af1158015613ca7573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2b9190618649565b9050613e38600082613ecb565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613eb6618094565b613ec1848483613ffe565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613f3757600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613f1f565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613f1f9085908590600401618873565b60008061400b8584614079565b905061406e6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614059929190618898565b60405160208183030381529060405285614085565b9150505b9392505050565b600061407283836140b3565b60c081015151600090156140a9576140a284848460c001516140ce565b9050614072565b6140a28484614274565b60006140bf838361435f565b61407283836020015184614085565b6000806140d961436b565b905060006140e7868361443e565b905060006140fe82606001518360200151856148e4565b9050600061410e83838989614af6565b9050600061411b82615973565b602081015181519192509060030b1561418e578982604001516040516020016141459291906188ba565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141859160040161893b565b60405180910390fd5b60006141d16040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b42565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061422490849060040161893b565b602060405180830381865afa158015614241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142659190618517565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142c990879060040161893b565b600060405180830381865afa1580156142e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261430e919081019061896e565b9050600061433c82856040516020016143289291906189a3565b604051602081830303815290604052615d42565b90506001600160a01b038116613ec15784846040516020016141459291906189d2565b61216282826000615d55565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143f2908490600401618a7d565b600060405180830381865afa15801561440f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261443791908101906187a3565b9250505090565b6144706040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144bb6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6144c485615e58565b602082015260006144d48661623d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614516573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261453e91908101906187a3565b868385602001516040516020016145589493929190618ac4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906145b090859060040161893b565b600060405180830381865afa1580156145cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145f591908101906187a3565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061463d908490600401618bc8565b602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190618627565b61469357816040516020016141459190618c1a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146d8908490600401618cac565b600060405180830381865afa1580156146f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261471d91908101906187a3565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614764908490600401618cfe565b602060405180830381865afa158015614781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a59190618627565b1561483a576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147ef908490600401618cfe565b600060405180830381865afa15801561480c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261483491908101906187a3565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161485f9190618d50565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161488b929190618873565b600060405180830381865afa1580156148a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148d091908101906187a3565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816149005790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061496057614960618dbc565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106149b4576149b4618dbc565b6020026020010181905250846040516020016149d09190618deb565b604051602081830303815290604052816002815181106149f2576149f2618dbc565b602002602001018190525082604051602001614a0e9190618e57565b60405160208183030381529060405281600381518110614a3057614a30618dbc565b60200260200101819052506000614a4682615973565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614ad790604080518082018252600080825260209182015281518083019092528451825280850190820152906164c0565b614aec57856040516020016141459190618e98565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b46565b511590565b614cba57826020015115614c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614185565b8260c0015115614cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614185565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614cd357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614d2e90618f29565b935060ff1681518110614d4357614d43618dbc565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d949190618f48565b604051602081830303815290604052828280614daf90618f29565b935060ff1681518110614dc457614dc4618dbc565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614e1190618f29565b935060ff1681518110614e2657614e26618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e7390618f29565b935060ff1681518110614e8857614e88618dbc565b60200260200101819052508760200151828280614ea490618f29565b935060ff1681518110614eb957614eb9618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614f0690618f29565b935060ff1681518110614f1b57614f1b618dbc565b602090810291909101015287518282614f3381618f29565b935060ff1681518110614f4857614f48618dbc565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f9590618f29565b935060ff1681518110614faa57614faa618dbc565b6020026020010181905250614fbe46616521565b8282614fc981618f29565b935060ff1681518110614fde57614fde618dbc565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061502b90618f29565b935060ff168151811061504057615040618dbc565b60200260200101819052508682828061505890618f29565b935060ff168151811061506d5761506d618dbc565b60209081029190910101528551156151945760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826150be81618f29565b935060ff16815181106150d3576150d3618dbc565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061512390899060040161893b565b600060405180830381865afa158015615140573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516891908101906187a3565b828261517381618f29565b935060ff168151811061518857615188618dbc565b60200260200101819052505b8460200151156152645760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151dd81618f29565b935060ff16815181106151f2576151f2618dbc565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061523f90618f29565b935060ff168151811061525457615254618dbc565b602002602001018190525061542b565b61529c614b418660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61532f5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152df81618f29565b935060ff16815181106152f4576152f4618dbc565b60200260200101819052508460a001516040516020016153149190618deb565b60405160208183030381529060405282828061523f90618f29565b8460c0015115801561537257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261537090511590565b155b1561542b5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826153b681618f29565b935060ff16815181106153cb576153cb618dbc565b60200260200101819052506153df886165c1565b6040516020016153ef9190618deb565b60405160208183030381529060405282828061540a90618f29565b935060ff168151811061541f5761541f618dbc565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261545f90511590565b6154f45760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826154a281618f29565b935060ff16815181106154b7576154b7618dbc565b602002602001018190525084604001518282806154d390618f29565b935060ff16815181106154e8576154e8618dbc565b60200260200101819052505b6060850151156156155760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261553d81618f29565b935060ff168151811061555257615552618dbc565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156155c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155e991908101906187a3565b82826155f481618f29565b935060ff168151811061560957615609618dbc565b60200260200101819052505b60e085015151156156bc5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261565f81618f29565b935060ff168151811061567457615674618dbc565b60200260200101819052506156908560e0015160000151616521565b828261569b81618f29565b935060ff16815181106156b0576156b0618dbc565b60200260200101819052505b60e085015160200151156157665760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261570981618f29565b935060ff168151811061571e5761571e618dbc565b602002602001018190525061573a8560e0015160200151616521565b828261574581618f29565b935060ff168151811061575a5761575a618dbc565b60200260200101819052505b60e085015160400151156158105760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826157b381618f29565b935060ff16815181106157c8576157c8618dbc565b60200260200101819052506157e48560e0015160400151616521565b82826157ef81618f29565b935060ff168151811061580457615804618dbc565b60200260200101819052505b60e085015160600151156158ba5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261585d81618f29565b935060ff168151811061587257615872618dbc565b602002602001018190525061588e8560e0015160600151616521565b828261589981618f29565b935060ff16815181106158ae576158ae618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158d8576158d86186db565b60405190808252806020026020018201604052801561590b57816020015b60608152602001906001900390816158f65790505b50905060005b8260ff168160ff16101561596457838160ff168151811061593457615934618dbc565b6020026020010151828260ff168151811061595157615951618dbc565b6020908102919091010152600101615911565b5093505050505b949350505050565b61599a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615a2091869101618fb3565b600060405180830381865afa158015615a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a6591908101906187a3565b90506000615a7386836170b0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615aa391906183ed565b6000604051808303816000875af1158015615ac2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615aea9190810190618ffa565b805190915060030b15801590615b035750602081015151155b8015615b125750604081015151155b15614aec5781600081518110615b2a57615b2a618dbc565b602002602001015160405160200161414591906190b0565b60606000615b778560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615bae9082905b90617205565b15615d0b576000615c2b82615c2584615c1f615bf18a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061722c565b9061728e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c8f908290617205565b15615cf957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cf6905b8290617313565b90505b615d0281617339565b92505050614072565b8215615d2457848460405160200161414592919061929c565b5050604080516020810190915260008152614072565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d6457505050565b6000615d718484846173a2565b90506000615d7e82615973565b602081015181519192509060030b158015615e1a5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90604080518082018252600080825260209182015281518083019092528451825280850190820152615ba8565b15615e2757505050505050565b60408201515115615e475781604001516040516020016141459190619343565b8060405160200161414591906193a1565b60606000615e8d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ef2905b82906164c0565b15615f6157604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90839061793d565b617339565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc3905b82906179c7565b60010361609057604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261602990615cef565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c905b8390617313565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ef90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616157908390617a61565b90506000816001835161616a919061940c565b8151811061617a5761617a618dbc565b6020026020010151905061621d615f5c6161f06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061793d565b95945050505050565b82604051602001614145919061941f565b50919050565b606060006162728360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162d490615eeb565b156162e25761407281617339565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634190615fbc565b6001036163ab57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90616089565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640a90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616472908390617a61565b90506001815111156164ae57806002825161648d919061940c565b8151811061649d5761649d618dbc565b602002602001015192505050919050565b5082604051602001614145919061941f565b8051825160009111156164d557506000613ec5565b815183516020850151600092916164eb91618860565b6164f5919061940c565b90508260200151810361650c576001915050613ec5565b82516020840151819020912014905092915050565b6060600061652e83617b06565b600101905060008167ffffffffffffffff81111561654e5761654e6186db565b6040519080825280601f01601f191660200182016040528015616578576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461658257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161664d905b8290617be8565b1561668d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ec90616646565b1561672c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678b90616646565b156167cb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682a90616646565b8061688f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261688f90616646565b156168cf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261692e90616646565b806169935750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261699390616646565b156169d357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a3290616646565b80616a975750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a9790616646565b15616ad757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3690616646565b80616b9b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b9b90616646565b15616bdb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c3a90616646565b15616c7a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cd990616646565b15616d1957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d7890616646565b15616db857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e1790616646565b15616e5757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616eb690616646565b15616ef657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f5590616646565b80616fba5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fba90616646565b15616ffa57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261705990616646565b1561709957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161414592906020016194fd565b60608060005b845181101561713b57818582815181106170d2576170d2618dbc565b60200260200101516040516020016170eb9291906189a3565b60405160208183030381529060405291506001855161710a919061940c565b811461713357816040516020016171219190619666565b60405160208183030381529060405291505b6001016170b6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617154579050509050838160008151811061717f5761717f618dbc565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171d3576171d3618dbc565b602002602001018190525081816002815181106171f2576171f2618dbc565b6020908102919091010152949350505050565b60208083015183518351928401516000936172239291849190617bfc565b14159392505050565b6040805180820190915260008082526020820152600061725e8460000151856020015185600001518660200151617d0d565b9050836020015181617270919061940c565b8451859061727f90839061940c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156172b3575081613ec5565b60208083015190840151600191146172da5750815160208481015190840151829020919020145b801561730b578251845185906172f190839061940c565b9052508251602085018051617307908390618860565b9052505b509192915050565b6040805180820190915260008082526020820152617332838383617e2d565b5092915050565b60606000826000015167ffffffffffffffff81111561735a5761735a6186db565b6040519080825280601f01601f191660200182016040528015617384576020820181803683370190505b50905060006020820190506173328185602001518660000151617ed8565b606060006173ae61436b565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816173cb57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061742690618f29565b935060ff168151811061743b5761743b618dbc565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161748c91906196a7565b6040516020818303038152906040528282806174a790618f29565b935060ff16815181106174bc576174bc618dbc565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061750990618f29565b935060ff168151811061751e5761751e618dbc565b60200260200101819052508260405160200161753a9190618e57565b60405160208183030381529060405282828061755590618f29565b935060ff168151811061756a5761756a618dbc565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806175b790618f29565b935060ff16815181106175cc576175cc618dbc565b60200260200101819052506175e18784617f52565b82826175ec81618f29565b935060ff168151811061760157617601618dbc565b6020908102919091010152855151156176ad5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261765381618f29565b935060ff168151811061766857617668618dbc565b6020026020010181905250617681866000015184617f52565b828261768c81618f29565b935060ff16815181106176a1576176a1618dbc565b60200260200101819052505b85608001511561771b5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176f681618f29565b935060ff168151811061770b5761770b618dbc565b6020026020010181905250617781565b84156177815760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261776081618f29565b935060ff168151811061777557617775618dbc565b60200260200101819052505b6040860151511561781d5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826177cb81618f29565b935060ff16815181106177e0576177e0618dbc565b602002602001018190525085604001518282806177fc90618f29565b935060ff168151811061781157617811618dbc565b60200260200101819052505b8560600151156178875760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261786681618f29565b935060ff168151811061787b5761787b618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178a5576178a56186db565b6040519080825280602002602001820160405280156178d857816020015b60608152602001906001900390816178c35790505b50905060005b8260ff168160ff16101561793157838160ff168151811061790157617901618dbc565b6020026020010151828260ff168151811061791e5761791e618dbc565b60209081029190910101526001016178de565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617962575081613ec5565b8151835160208501516000929161797891618860565b617982919061940c565b602084015190915060019082146179a3575082516020840151819020908220145b80156179be578351855186906179ba90839061940c565b9052505b50929392505050565b60008082600001516179eb8560000151866020015186600001518760200151617d0d565b6179f59190618860565b90505b83516020850151617a099190618860565b81116173325781617a19816196ec565b9250508260000151617a50856020015183617a34919061940c565b8651617a40919061940c565b8386600001518760200151617d0d565b617a5a9190618860565b90506179f8565b60606000617a6f84846179c7565b617a7a906001618860565b67ffffffffffffffff811115617a9257617a926186db565b604051908082528060200260200182016040528015617ac557816020015b6060815260200190600190039081617ab05790505b50905060005b8151811015615d3a57617ae1615f5c8686617313565b828281518110617af357617af3618dbc565b6020908102919091010152600101617acb565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b4f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b7b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b9957662386f26fc10000830492506010015b6305f5e1008310617bb1576305f5e100830492506008015b6127108310617bc557612710830492506004015b60648310617bd7576064830492506002015b600a8310613ec55760010192915050565b6000617bf48383617f92565b159392505050565b600080858411617d035760208411617caf5760008415617c47576001617c2386602061940c565b617c2e906008619706565b617c39906002619804565b617c43919061940c565b1990505b8351811685617c568989618860565b617c60919061940c565b805190935082165b818114617c9a57878411617c82578794505050505061596b565b83617c8c81619810565b945050828451169050617c68565b617ca48785618860565b94505050505061596b565b838320617cbc858861940c565b617cc69087618860565b91505b858210617d0157848220808203617cee57617ce48684618860565b935050505061596b565b617cf960018461940c565b925050617cc9565b505b5092949350505050565b60008381868511617e185760208511617dc75760008515617d59576001617d3587602061940c565b617d40906008619706565b617d4b906002619804565b617d55919061940c565b1990505b84518116600087617d6a8b8b618860565b617d74919061940c565b855190915083165b828114617db957818610617da157617d948b8b618860565b965050505050505061596b565b85617dab816196ec565b965050838651169050617d7c565b85965050505050505061596b565b508383206000905b617dd9868961940c565b8211617e1657858320808203617df5578394505050505061596b565b617e00600185618860565b9350508180617e0e906196ec565b925050617dcf565b505b617e228787618860565b979650505050505050565b60408051808201909152600080825260208201526000617e5f8560000151866020015186600001518760200151617d0d565b602080870180519186019190915251909150617e7b908261940c565b835284516020860151617e8e9190618860565b8103617e9d5760008552617ecf565b83518351617eab9190618860565b85518690617eba90839061940c565b9052508351617ec99082618860565b60208601525b50909392505050565b60208110617f105781518352617eef602084618860565b9250617efc602083618860565b9150617f0960208261940c565b9050617ed8565b6000198115617f3f576001617f2683602061940c565b617f3290610100619804565b617f3c919061940c565b90505b9151835183169219169190911790915250565b60606000617f60848461443e565b8051602080830151604051939450617f7a93909101619827565b60405160208183030381529060405291505092915050565b8151815160009190811115617fa5575081515b6020808501519084015160005b8381101561805e578251825180821461802e57600019602087101561800d57600184617fdf89602061940c565b617fe99190618860565b617ff4906008619706565b617fff906002619804565b618009919061940c565b1990505b818116838216818103911461802b579750613ec59650505050505050565b50505b618039602086618860565b9450618046602085618860565b935050506020816180579190618860565b9050617fb2565b5084518651614aec919061987f565b610b67806198a083390190565b61106f8061a40783390190565b611ac28061b47683390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180d76180dc565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180d76040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561818e5783516001600160a01b0316835260209384019390920191600101618167565b509095945050505050565b60005b838110156181b457818101518382015260200161819c565b50506000910152565b600081518084526181d5816020860160208601618199565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156182cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526182b58486516181bd565b602095860195909450929092019160010161827b565b509197505050602094850194929092019150600101618211565b50929695505050505050565b600081518084526020840193506020830160005b828110156183455781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618305565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526183bb60408801826181bd565b90506020820151915086810360208801526183d681836182f1565b965050506020938401939190910190600101618377565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261844f8583516181bd565b94506020938401939190910190600101618415565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184e560408701826182f1565b955050602093840193919091019060010161848c565b80516001600160a01b038116811461851257600080fd5b919050565b60006020828403121561852957600080fd5b614072826184fb565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261860d60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561863957600080fd5b8151801515811461407257600080fd5b60006020828403121561865b57600080fd5b5051919050565b600181811c9082168061867657607f821691505b602082108103616237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080604083850312156186c257600080fd5b6186cb836184fb565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561872d5761872d6186db565b60405290565b60008067ffffffffffffffff84111561874e5761874e6186db565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561877d5761877d6186db565b60405283815290508082840185101561879557600080fd5b615d3a846020830185618199565b6000602082840312156187b557600080fd5b815167ffffffffffffffff8111156187cc57600080fd5b8201601f810184136187dd57600080fd5b613ec184825160208401618733565b6000602082840312156187fe57600080fd5b815160ff8116811461407257600080fd5b60408152600061882260408301856181bd565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613ec557613ec5618831565b60408152600061888660408301856181bd565b828103602084015261406e81856181bd565b6001600160a01b038316815260406020820152600061596b60408301846181bd565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188f281601a850160208801618199565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161892f81601c840160208801618199565b01601c01949350505050565b60208152600061407260208301846181bd565b600082601f83011261895f57600080fd5b61407283835160208501618733565b60006020828403121561898057600080fd5b815167ffffffffffffffff81111561899757600080fd5b613ec18482850161894e565b600083516189b5818460208801618199565b8351908301906189c9818360208801618199565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618a0a81601a850160208801618199565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a47816033840160208801618199565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061407260808301846181bd565b60008551618ad6818460208a01618199565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618b10816001840160208a01618199565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b4e816002840160208901618199565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b90816002840160208801618199565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bdb60408301846181bd565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c5281601f850160208701618199565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618cbf60408301846181bd565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618d1160408301846181bd565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d88816014850160208701618199565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e23816001850160208701618199565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e69818460208701618199565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618f1c81604b850160208701618199565b91909101604b0192915050565b600060ff821660ff8103618f3f57618f3f618831565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061407260808301846181bd565b60006020828403121561900c57600080fd5b815167ffffffffffffffff81111561902357600080fd5b82016060818503121561903557600080fd5b61903d61870a565b81518060030b811461904e57600080fd5b8152602082015167ffffffffffffffff81111561906a57600080fd5b6190768682850161894e565b602083015250604082015167ffffffffffffffff81111561909657600080fd5b6190a28682850161894e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161910e816021850160208701618199565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192fa816021850160208801618199565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161933781602e840160208801618199565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193ff816022850160208701618199565b9190910160220192915050565b81810381811115613ec557613ec5618831565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161945781600e850160208701618199565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619535816018850160208801618199565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161957281601c840160208801618199565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619678818460208701618199565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196df81601c850160208701618199565b91909101601c0192915050565b600060001982036196ff576196ff618831565b5060010190565b8082028115828204841417613ec557613ec5618831565b6001815b60018411156197585780850481111561973c5761973c618831565b600184161561974a57908102905b60019390931c928002619721565b935093915050565b60008261976f57506001613ec5565b8161977c57506000613ec5565b8160018114619792576002811461979c576197b8565b6001915050613ec5565b60ff8411156197ad576197ad618831565b50506001821b613ec5565b5060208310610133831016604e8410600b84101617156197db575081810a613ec5565b6197e8600019848461971d565b80600019048211156197fc576197fc618831565b029392505050565b60006140728383619760565b60008161981f5761981f618831565b506000190190565b60008351619839818460208801618199565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619873816001840160208801618199565b01600101949350505050565b81810360008312801583831316838312821617156173325761733261883156fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220c48754726d81399e67d0c14c28bfd80f7bc7cfde7870a78a5197c6a55d793c9464736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf6d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061814d565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181e9565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061834f565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ed565b610325612323565b6040516102759190618464565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e6134db565b61024e613789565b61024e6138e5565b610268613bc1565b61024e613c21565b61024e613d99565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061806d565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613eac565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd9190618517565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a49061807a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618087565b61084596959493929190618532565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d9190618627565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190618627565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618649565b9050610dfc600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190618627565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618662565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190618517565b613211613f4b565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d491906186af565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618649565b613ecb565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618662565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618649565b9050611b04600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618649565b9050611d47600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de29190618627565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190618627565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618649565b9050610fd58282613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618649565b9050611fb1620186a082613ecb565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190618627565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618649565b905061216262030d4082613ecb565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618662565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618662565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b91908101906187a3565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261255991908101906187a3565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187ec565b905061262360128260ff16613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618649565b90506104d4620186a082613ecb565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618662565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618662565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618649565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190618649565b9050612e3b620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190618649565b9050612ec3620186a082613ecb565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190618649565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb9190618627565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c3509060380161880f565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c69190618627565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131599190618649565b905061316f613169836014618860565b82613ecb565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132009190618649565b905061320e61c33c82613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132879190618649565b905061329561c35082613ecb565b505050505050565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561330b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332f9190618649565b905061333c600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af11580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561373a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375e91906186af565b601f54919350915061377e9061010090046001600160a01b031683613f4b565b612162601482613ecb565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137fb57600080fd5b505af115801561380f573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139769190618649565b9050613985620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fe9190618649565b9050613a0d620186a082613ecb565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9a9190618627565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c9190618649565b9050613b3a61c35082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb39190618649565b90506104d461c35082613ecb565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c9357600080fd5b505af1158015613ca7573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2b9190618649565b9050613e38600082613ecb565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613eb6618094565b613ec1848483613ffe565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613f3757600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613f1f565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613f1f9085908590600401618873565b60008061400b8584614079565b905061406e6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614059929190618898565b60405160208183030381529060405285614085565b9150505b9392505050565b600061407283836140b3565b60c081015151600090156140a9576140a284848460c001516140ce565b9050614072565b6140a28484614274565b60006140bf838361435f565b61407283836020015184614085565b6000806140d961436b565b905060006140e7868361443e565b905060006140fe82606001518360200151856148e4565b9050600061410e83838989614af6565b9050600061411b82615973565b602081015181519192509060030b1561418e578982604001516040516020016141459291906188ba565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141859160040161893b565b60405180910390fd5b60006141d16040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b42565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061422490849060040161893b565b602060405180830381865afa158015614241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142659190618517565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142c990879060040161893b565b600060405180830381865afa1580156142e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261430e919081019061896e565b9050600061433c82856040516020016143289291906189a3565b604051602081830303815290604052615d42565b90506001600160a01b038116613ec15784846040516020016141459291906189d2565b61216282826000615d55565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143f2908490600401618a7d565b600060405180830381865afa15801561440f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261443791908101906187a3565b9250505090565b6144706040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144bb6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6144c485615e58565b602082015260006144d48661623d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614516573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261453e91908101906187a3565b868385602001516040516020016145589493929190618ac4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906145b090859060040161893b565b600060405180830381865afa1580156145cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145f591908101906187a3565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061463d908490600401618bc8565b602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190618627565b61469357816040516020016141459190618c1a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146d8908490600401618cac565b600060405180830381865afa1580156146f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261471d91908101906187a3565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614764908490600401618cfe565b602060405180830381865afa158015614781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a59190618627565b1561483a576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147ef908490600401618cfe565b600060405180830381865afa15801561480c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261483491908101906187a3565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161485f9190618d50565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161488b929190618873565b600060405180830381865afa1580156148a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148d091908101906187a3565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816149005790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061496057614960618dbc565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106149b4576149b4618dbc565b6020026020010181905250846040516020016149d09190618deb565b604051602081830303815290604052816002815181106149f2576149f2618dbc565b602002602001018190525082604051602001614a0e9190618e57565b60405160208183030381529060405281600381518110614a3057614a30618dbc565b60200260200101819052506000614a4682615973565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614ad790604080518082018252600080825260209182015281518083019092528451825280850190820152906164c0565b614aec57856040516020016141459190618e98565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b46565b511590565b614cba57826020015115614c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614185565b8260c0015115614cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614185565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614cd357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614d2e90618f29565b935060ff1681518110614d4357614d43618dbc565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d949190618f48565b604051602081830303815290604052828280614daf90618f29565b935060ff1681518110614dc457614dc4618dbc565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614e1190618f29565b935060ff1681518110614e2657614e26618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e7390618f29565b935060ff1681518110614e8857614e88618dbc565b60200260200101819052508760200151828280614ea490618f29565b935060ff1681518110614eb957614eb9618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614f0690618f29565b935060ff1681518110614f1b57614f1b618dbc565b602090810291909101015287518282614f3381618f29565b935060ff1681518110614f4857614f48618dbc565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f9590618f29565b935060ff1681518110614faa57614faa618dbc565b6020026020010181905250614fbe46616521565b8282614fc981618f29565b935060ff1681518110614fde57614fde618dbc565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061502b90618f29565b935060ff168151811061504057615040618dbc565b60200260200101819052508682828061505890618f29565b935060ff168151811061506d5761506d618dbc565b60209081029190910101528551156151945760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826150be81618f29565b935060ff16815181106150d3576150d3618dbc565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061512390899060040161893b565b600060405180830381865afa158015615140573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516891908101906187a3565b828261517381618f29565b935060ff168151811061518857615188618dbc565b60200260200101819052505b8460200151156152645760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151dd81618f29565b935060ff16815181106151f2576151f2618dbc565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061523f90618f29565b935060ff168151811061525457615254618dbc565b602002602001018190525061542b565b61529c614b418660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61532f5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152df81618f29565b935060ff16815181106152f4576152f4618dbc565b60200260200101819052508460a001516040516020016153149190618deb565b60405160208183030381529060405282828061523f90618f29565b8460c0015115801561537257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261537090511590565b155b1561542b5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826153b681618f29565b935060ff16815181106153cb576153cb618dbc565b60200260200101819052506153df886165c1565b6040516020016153ef9190618deb565b60405160208183030381529060405282828061540a90618f29565b935060ff168151811061541f5761541f618dbc565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261545f90511590565b6154f45760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826154a281618f29565b935060ff16815181106154b7576154b7618dbc565b602002602001018190525084604001518282806154d390618f29565b935060ff16815181106154e8576154e8618dbc565b60200260200101819052505b6060850151156156155760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261553d81618f29565b935060ff168151811061555257615552618dbc565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156155c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155e991908101906187a3565b82826155f481618f29565b935060ff168151811061560957615609618dbc565b60200260200101819052505b60e085015151156156bc5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261565f81618f29565b935060ff168151811061567457615674618dbc565b60200260200101819052506156908560e0015160000151616521565b828261569b81618f29565b935060ff16815181106156b0576156b0618dbc565b60200260200101819052505b60e085015160200151156157665760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261570981618f29565b935060ff168151811061571e5761571e618dbc565b602002602001018190525061573a8560e0015160200151616521565b828261574581618f29565b935060ff168151811061575a5761575a618dbc565b60200260200101819052505b60e085015160400151156158105760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826157b381618f29565b935060ff16815181106157c8576157c8618dbc565b60200260200101819052506157e48560e0015160400151616521565b82826157ef81618f29565b935060ff168151811061580457615804618dbc565b60200260200101819052505b60e085015160600151156158ba5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261585d81618f29565b935060ff168151811061587257615872618dbc565b602002602001018190525061588e8560e0015160600151616521565b828261589981618f29565b935060ff16815181106158ae576158ae618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158d8576158d86186db565b60405190808252806020026020018201604052801561590b57816020015b60608152602001906001900390816158f65790505b50905060005b8260ff168160ff16101561596457838160ff168151811061593457615934618dbc565b6020026020010151828260ff168151811061595157615951618dbc565b6020908102919091010152600101615911565b5093505050505b949350505050565b61599a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615a2091869101618fb3565b600060405180830381865afa158015615a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a6591908101906187a3565b90506000615a7386836170b0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615aa391906183ed565b6000604051808303816000875af1158015615ac2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615aea9190810190618ffa565b805190915060030b15801590615b035750602081015151155b8015615b125750604081015151155b15614aec5781600081518110615b2a57615b2a618dbc565b602002602001015160405160200161414591906190b0565b60606000615b778560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615bae9082905b90617205565b15615d0b576000615c2b82615c2584615c1f615bf18a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061722c565b9061728e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c8f908290617205565b15615cf957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cf6905b8290617313565b90505b615d0281617339565b92505050614072565b8215615d2457848460405160200161414592919061929c565b5050604080516020810190915260008152614072565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d6457505050565b6000615d718484846173a2565b90506000615d7e82615973565b602081015181519192509060030b158015615e1a5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90604080518082018252600080825260209182015281518083019092528451825280850190820152615ba8565b15615e2757505050505050565b60408201515115615e475781604001516040516020016141459190619343565b8060405160200161414591906193a1565b60606000615e8d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ef2905b82906164c0565b15615f6157604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90839061793d565b617339565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc3905b82906179c7565b60010361609057604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261602990615cef565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c905b8390617313565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ef90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616157908390617a61565b90506000816001835161616a919061940c565b8151811061617a5761617a618dbc565b6020026020010151905061621d615f5c6161f06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061793d565b95945050505050565b82604051602001614145919061941f565b50919050565b606060006162728360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162d490615eeb565b156162e25761407281617339565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634190615fbc565b6001036163ab57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90616089565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640a90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616472908390617a61565b90506001815111156164ae57806002825161648d919061940c565b8151811061649d5761649d618dbc565b602002602001015192505050919050565b5082604051602001614145919061941f565b8051825160009111156164d557506000613ec5565b815183516020850151600092916164eb91618860565b6164f5919061940c565b90508260200151810361650c576001915050613ec5565b82516020840151819020912014905092915050565b6060600061652e83617b06565b600101905060008167ffffffffffffffff81111561654e5761654e6186db565b6040519080825280601f01601f191660200182016040528015616578576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461658257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161664d905b8290617be8565b1561668d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ec90616646565b1561672c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678b90616646565b156167cb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682a90616646565b8061688f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261688f90616646565b156168cf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261692e90616646565b806169935750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261699390616646565b156169d357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a3290616646565b80616a975750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a9790616646565b15616ad757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3690616646565b80616b9b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b9b90616646565b15616bdb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c3a90616646565b15616c7a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cd990616646565b15616d1957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d7890616646565b15616db857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e1790616646565b15616e5757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616eb690616646565b15616ef657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f5590616646565b80616fba5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fba90616646565b15616ffa57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261705990616646565b1561709957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161414592906020016194fd565b60608060005b845181101561713b57818582815181106170d2576170d2618dbc565b60200260200101516040516020016170eb9291906189a3565b60405160208183030381529060405291506001855161710a919061940c565b811461713357816040516020016171219190619666565b60405160208183030381529060405291505b6001016170b6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617154579050509050838160008151811061717f5761717f618dbc565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171d3576171d3618dbc565b602002602001018190525081816002815181106171f2576171f2618dbc565b6020908102919091010152949350505050565b60208083015183518351928401516000936172239291849190617bfc565b14159392505050565b6040805180820190915260008082526020820152600061725e8460000151856020015185600001518660200151617d0d565b9050836020015181617270919061940c565b8451859061727f90839061940c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156172b3575081613ec5565b60208083015190840151600191146172da5750815160208481015190840151829020919020145b801561730b578251845185906172f190839061940c565b9052508251602085018051617307908390618860565b9052505b509192915050565b6040805180820190915260008082526020820152617332838383617e2d565b5092915050565b60606000826000015167ffffffffffffffff81111561735a5761735a6186db565b6040519080825280601f01601f191660200182016040528015617384576020820181803683370190505b50905060006020820190506173328185602001518660000151617ed8565b606060006173ae61436b565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816173cb57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061742690618f29565b935060ff168151811061743b5761743b618dbc565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161748c91906196a7565b6040516020818303038152906040528282806174a790618f29565b935060ff16815181106174bc576174bc618dbc565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061750990618f29565b935060ff168151811061751e5761751e618dbc565b60200260200101819052508260405160200161753a9190618e57565b60405160208183030381529060405282828061755590618f29565b935060ff168151811061756a5761756a618dbc565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806175b790618f29565b935060ff16815181106175cc576175cc618dbc565b60200260200101819052506175e18784617f52565b82826175ec81618f29565b935060ff168151811061760157617601618dbc565b6020908102919091010152855151156176ad5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261765381618f29565b935060ff168151811061766857617668618dbc565b6020026020010181905250617681866000015184617f52565b828261768c81618f29565b935060ff16815181106176a1576176a1618dbc565b60200260200101819052505b85608001511561771b5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176f681618f29565b935060ff168151811061770b5761770b618dbc565b6020026020010181905250617781565b84156177815760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261776081618f29565b935060ff168151811061777557617775618dbc565b60200260200101819052505b6040860151511561781d5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826177cb81618f29565b935060ff16815181106177e0576177e0618dbc565b602002602001018190525085604001518282806177fc90618f29565b935060ff168151811061781157617811618dbc565b60200260200101819052505b8560600151156178875760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261786681618f29565b935060ff168151811061787b5761787b618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178a5576178a56186db565b6040519080825280602002602001820160405280156178d857816020015b60608152602001906001900390816178c35790505b50905060005b8260ff168160ff16101561793157838160ff168151811061790157617901618dbc565b6020026020010151828260ff168151811061791e5761791e618dbc565b60209081029190910101526001016178de565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617962575081613ec5565b8151835160208501516000929161797891618860565b617982919061940c565b602084015190915060019082146179a3575082516020840151819020908220145b80156179be578351855186906179ba90839061940c565b9052505b50929392505050565b60008082600001516179eb8560000151866020015186600001518760200151617d0d565b6179f59190618860565b90505b83516020850151617a099190618860565b81116173325781617a19816196ec565b9250508260000151617a50856020015183617a34919061940c565b8651617a40919061940c565b8386600001518760200151617d0d565b617a5a9190618860565b90506179f8565b60606000617a6f84846179c7565b617a7a906001618860565b67ffffffffffffffff811115617a9257617a926186db565b604051908082528060200260200182016040528015617ac557816020015b6060815260200190600190039081617ab05790505b50905060005b8151811015615d3a57617ae1615f5c8686617313565b828281518110617af357617af3618dbc565b6020908102919091010152600101617acb565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b4f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b7b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b9957662386f26fc10000830492506010015b6305f5e1008310617bb1576305f5e100830492506008015b6127108310617bc557612710830492506004015b60648310617bd7576064830492506002015b600a8310613ec55760010192915050565b6000617bf48383617f92565b159392505050565b600080858411617d035760208411617caf5760008415617c47576001617c2386602061940c565b617c2e906008619706565b617c39906002619804565b617c43919061940c565b1990505b8351811685617c568989618860565b617c60919061940c565b805190935082165b818114617c9a57878411617c82578794505050505061596b565b83617c8c81619810565b945050828451169050617c68565b617ca48785618860565b94505050505061596b565b838320617cbc858861940c565b617cc69087618860565b91505b858210617d0157848220808203617cee57617ce48684618860565b935050505061596b565b617cf960018461940c565b925050617cc9565b505b5092949350505050565b60008381868511617e185760208511617dc75760008515617d59576001617d3587602061940c565b617d40906008619706565b617d4b906002619804565b617d55919061940c565b1990505b84518116600087617d6a8b8b618860565b617d74919061940c565b855190915083165b828114617db957818610617da157617d948b8b618860565b965050505050505061596b565b85617dab816196ec565b965050838651169050617d7c565b85965050505050505061596b565b508383206000905b617dd9868961940c565b8211617e1657858320808203617df5578394505050505061596b565b617e00600185618860565b9350508180617e0e906196ec565b925050617dcf565b505b617e228787618860565b979650505050505050565b60408051808201909152600080825260208201526000617e5f8560000151866020015186600001518760200151617d0d565b602080870180519186019190915251909150617e7b908261940c565b835284516020860151617e8e9190618860565b8103617e9d5760008552617ecf565b83518351617eab9190618860565b85518690617eba90839061940c565b9052508351617ec99082618860565b60208601525b50909392505050565b60208110617f105781518352617eef602084618860565b9250617efc602083618860565b9150617f0960208261940c565b9050617ed8565b6000198115617f3f576001617f2683602061940c565b617f3290610100619804565b617f3c919061940c565b90505b9151835183169219169190911790915250565b60606000617f60848461443e565b8051602080830151604051939450617f7a93909101619827565b60405160208183030381529060405291505092915050565b8151815160009190811115617fa5575081515b6020808501519084015160005b8381101561805e578251825180821461802e57600019602087101561800d57600184617fdf89602061940c565b617fe99190618860565b617ff4906008619706565b617fff906002619804565b618009919061940c565b1990505b818116838216818103911461802b579750613ec59650505050505050565b50505b618039602086618860565b9450618046602085618860565b935050506020816180579190618860565b9050617fb2565b5084518651614aec919061987f565b610b67806198a083390190565b61106f8061a40783390190565b611ac28061b47683390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180d76180dc565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180d76040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561818e5783516001600160a01b0316835260209384019390920191600101618167565b509095945050505050565b60005b838110156181b457818101518382015260200161819c565b50506000910152565b600081518084526181d5816020860160208601618199565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156182cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526182b58486516181bd565b602095860195909450929092019160010161827b565b509197505050602094850194929092019150600101618211565b50929695505050505050565b600081518084526020840193506020830160005b828110156183455781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618305565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526183bb60408801826181bd565b90506020820151915086810360208801526183d681836182f1565b965050506020938401939190910190600101618377565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261844f8583516181bd565b94506020938401939190910190600101618415565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184e560408701826182f1565b955050602093840193919091019060010161848c565b80516001600160a01b038116811461851257600080fd5b919050565b60006020828403121561852957600080fd5b614072826184fb565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261860d60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561863957600080fd5b8151801515811461407257600080fd5b60006020828403121561865b57600080fd5b5051919050565b600181811c9082168061867657607f821691505b602082108103616237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080604083850312156186c257600080fd5b6186cb836184fb565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561872d5761872d6186db565b60405290565b60008067ffffffffffffffff84111561874e5761874e6186db565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561877d5761877d6186db565b60405283815290508082840185101561879557600080fd5b615d3a846020830185618199565b6000602082840312156187b557600080fd5b815167ffffffffffffffff8111156187cc57600080fd5b8201601f810184136187dd57600080fd5b613ec184825160208401618733565b6000602082840312156187fe57600080fd5b815160ff8116811461407257600080fd5b60408152600061882260408301856181bd565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613ec557613ec5618831565b60408152600061888660408301856181bd565b828103602084015261406e81856181bd565b6001600160a01b038316815260406020820152600061596b60408301846181bd565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188f281601a850160208801618199565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161892f81601c840160208801618199565b01601c01949350505050565b60208152600061407260208301846181bd565b600082601f83011261895f57600080fd5b61407283835160208501618733565b60006020828403121561898057600080fd5b815167ffffffffffffffff81111561899757600080fd5b613ec18482850161894e565b600083516189b5818460208801618199565b8351908301906189c9818360208801618199565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618a0a81601a850160208801618199565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a47816033840160208801618199565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061407260808301846181bd565b60008551618ad6818460208a01618199565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618b10816001840160208a01618199565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b4e816002840160208901618199565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b90816002840160208801618199565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bdb60408301846181bd565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c5281601f850160208701618199565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618cbf60408301846181bd565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618d1160408301846181bd565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d88816014850160208701618199565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e23816001850160208701618199565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e69818460208701618199565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618f1c81604b850160208701618199565b91909101604b0192915050565b600060ff821660ff8103618f3f57618f3f618831565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061407260808301846181bd565b60006020828403121561900c57600080fd5b815167ffffffffffffffff81111561902357600080fd5b82016060818503121561903557600080fd5b61903d61870a565b81518060030b811461904e57600080fd5b8152602082015167ffffffffffffffff81111561906a57600080fd5b6190768682850161894e565b602083015250604082015167ffffffffffffffff81111561909657600080fd5b6190a28682850161894e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161910e816021850160208701618199565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192fa816021850160208801618199565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161933781602e840160208801618199565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193ff816022850160208701618199565b9190910160220192915050565b81810381811115613ec557613ec5618831565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161945781600e850160208701618199565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619535816018850160208801618199565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161957281601c840160208801618199565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619678818460208701618199565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196df81601c850160208701618199565b91909101601c0192915050565b600060001982036196ff576196ff618831565b5060010190565b8082028115828204841417613ec557613ec5618831565b6001815b60018411156197585780850481111561973c5761973c618831565b600184161561974a57908102905b60019390931c928002619721565b935093915050565b60008261976f57506001613ec5565b8161977c57506000613ec5565b8160018114619792576002811461979c576197b8565b6001915050613ec5565b60ff8411156197ad576197ad618831565b50506001821b613ec5565b5060208310610133831016604e8410600b84101617156197db575081810a613ec5565b6197e8600019848461971d565b80600019048211156197fc576197fc618831565b029392505050565b60006140728383619760565b60008161981f5761981f618831565b506000190190565b60008351619839818460208801618199565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619873816001840160208801618199565b01600101949350505050565b81810360008312801583831316838312821617156173325761733261883156fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a26469706673582212201ae1430268e9feb6f12c134ed83b1e4e61729a35b1adb3d98d576211b824336a64736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. From 5a3892ef5fa199bb86e2f2d70102e5fe6caeda45 Mon Sep 17 00:00:00 2001 From: skosito Date: Fri, 2 Aug 2024 12:38:28 +0200 Subject: [PATCH 49/60] PR comment --- v2/test/ZRC20.t.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index 383fc704..0c379dce 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -105,9 +105,6 @@ contract ZRC20Test is Test, ZRC20Errors { } function testTransferFromFailsIfRecipientIsZeroAddress() public { - uint256 balanceStart = zrc20.balanceOf(addr1); - assertEq(0, balanceStart); - uint256 amount = 500_000; zrc20.approve(owner, amount); vm.expectRevert(ZeroAddress.selector); From ca92f50bb88c74060e21ec5a5b4e5c085569fb75 Mon Sep 17 00:00:00 2001 From: skosito Date: Fri, 2 Aug 2024 15:01:33 +0200 Subject: [PATCH 50/60] generate --- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go index 468bb790..414b67cd 100644 --- a/v2/pkg/zrc20.t.sol/zrc20test.go +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. var ZRC20TestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf6d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061814d565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181e9565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061834f565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ed565b610325612323565b6040516102759190618464565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e6134db565b61024e613789565b61024e6138e5565b610268613bc1565b61024e613c21565b61024e613d99565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061806d565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613eac565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd9190618517565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a49061807a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618087565b61084596959493929190618532565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d9190618627565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190618627565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618649565b9050610dfc600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e989190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190618627565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618662565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190618517565b613211613f4b565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d491906186af565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618649565b613ecb565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618662565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618662565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618649565b9050611b04600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618649565b9050611d47600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de29190618627565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190618627565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618649565b9050610fd58282613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618649565b9050611fb1620186a082613ecb565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190618627565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618649565b905061216262030d4082613ecb565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618662565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618662565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b91908101906187a3565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261255991908101906187a3565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613fac565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187ec565b905061262360128260ff16613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618649565b90506104d4620186a082613ecb565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618662565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618662565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618649565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c9190618649565b9050612e3b620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190618649565b9050612ec3620186a082613ecb565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190618649565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb9190618627565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c3509060380161880f565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c69190618627565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131599190618649565b905061316f613169836014618860565b82613ecb565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132009190618649565b905061320e61c33c82613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132879190618649565b905061329561c35082613ecb565b505050505050565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561330b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332f9190618649565b905061333c600082613ecb565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af11580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190618627565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561373a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375e91906186af565b601f54919350915061377e9061010090046001600160a01b031683613f4b565b612162601482613ecb565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137fb57600080fd5b505af115801561380f573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139769190618649565b9050613985620186a082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fe9190618649565b9050613a0d620186a082613ecb565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9a9190618627565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c9190618649565b9050613b3a61c35082613ecb565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb39190618649565b90506104d461c35082613ecb565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c9357600080fd5b505af1158015613ca7573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2b9190618649565b9050613e38600082613ecb565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613eb6618094565b613ec1848483613ffe565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613f3757600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613f1f565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613f1f9085908590600401618873565b60008061400b8584614079565b905061406e6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614059929190618898565b60405160208183030381529060405285614085565b9150505b9392505050565b600061407283836140b3565b60c081015151600090156140a9576140a284848460c001516140ce565b9050614072565b6140a28484614274565b60006140bf838361435f565b61407283836020015184614085565b6000806140d961436b565b905060006140e7868361443e565b905060006140fe82606001518360200151856148e4565b9050600061410e83838989614af6565b9050600061411b82615973565b602081015181519192509060030b1561418e578982604001516040516020016141459291906188ba565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141859160040161893b565b60405180910390fd5b60006141d16040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b42565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061422490849060040161893b565b602060405180830381865afa158015614241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142659190618517565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142c990879060040161893b565b600060405180830381865afa1580156142e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261430e919081019061896e565b9050600061433c82856040516020016143289291906189a3565b604051602081830303815290604052615d42565b90506001600160a01b038116613ec15784846040516020016141459291906189d2565b61216282826000615d55565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143f2908490600401618a7d565b600060405180830381865afa15801561440f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261443791908101906187a3565b9250505090565b6144706040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144bb6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6144c485615e58565b602082015260006144d48661623d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614516573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261453e91908101906187a3565b868385602001516040516020016145589493929190618ac4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906145b090859060040161893b565b600060405180830381865afa1580156145cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145f591908101906187a3565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061463d908490600401618bc8565b602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190618627565b61469357816040516020016141459190618c1a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146d8908490600401618cac565b600060405180830381865afa1580156146f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261471d91908101906187a3565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614764908490600401618cfe565b602060405180830381865afa158015614781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a59190618627565b1561483a576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147ef908490600401618cfe565b600060405180830381865afa15801561480c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261483491908101906187a3565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161485f9190618d50565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161488b929190618873565b600060405180830381865afa1580156148a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148d091908101906187a3565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816149005790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061496057614960618dbc565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106149b4576149b4618dbc565b6020026020010181905250846040516020016149d09190618deb565b604051602081830303815290604052816002815181106149f2576149f2618dbc565b602002602001018190525082604051602001614a0e9190618e57565b60405160208183030381529060405281600381518110614a3057614a30618dbc565b60200260200101819052506000614a4682615973565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614ad790604080518082018252600080825260209182015281518083019092528451825280850190820152906164c0565b614aec57856040516020016141459190618e98565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b46565b511590565b614cba57826020015115614c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614185565b8260c0015115614cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614185565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614cd357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614d2e90618f29565b935060ff1681518110614d4357614d43618dbc565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d949190618f48565b604051602081830303815290604052828280614daf90618f29565b935060ff1681518110614dc457614dc4618dbc565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614e1190618f29565b935060ff1681518110614e2657614e26618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e7390618f29565b935060ff1681518110614e8857614e88618dbc565b60200260200101819052508760200151828280614ea490618f29565b935060ff1681518110614eb957614eb9618dbc565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614f0690618f29565b935060ff1681518110614f1b57614f1b618dbc565b602090810291909101015287518282614f3381618f29565b935060ff1681518110614f4857614f48618dbc565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f9590618f29565b935060ff1681518110614faa57614faa618dbc565b6020026020010181905250614fbe46616521565b8282614fc981618f29565b935060ff1681518110614fde57614fde618dbc565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061502b90618f29565b935060ff168151811061504057615040618dbc565b60200260200101819052508682828061505890618f29565b935060ff168151811061506d5761506d618dbc565b60209081029190910101528551156151945760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826150be81618f29565b935060ff16815181106150d3576150d3618dbc565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061512390899060040161893b565b600060405180830381865afa158015615140573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516891908101906187a3565b828261517381618f29565b935060ff168151811061518857615188618dbc565b60200260200101819052505b8460200151156152645760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151dd81618f29565b935060ff16815181106151f2576151f2618dbc565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061523f90618f29565b935060ff168151811061525457615254618dbc565b602002602001018190525061542b565b61529c614b418660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61532f5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152df81618f29565b935060ff16815181106152f4576152f4618dbc565b60200260200101819052508460a001516040516020016153149190618deb565b60405160208183030381529060405282828061523f90618f29565b8460c0015115801561537257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261537090511590565b155b1561542b5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826153b681618f29565b935060ff16815181106153cb576153cb618dbc565b60200260200101819052506153df886165c1565b6040516020016153ef9190618deb565b60405160208183030381529060405282828061540a90618f29565b935060ff168151811061541f5761541f618dbc565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261545f90511590565b6154f45760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826154a281618f29565b935060ff16815181106154b7576154b7618dbc565b602002602001018190525084604001518282806154d390618f29565b935060ff16815181106154e8576154e8618dbc565b60200260200101819052505b6060850151156156155760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261553d81618f29565b935060ff168151811061555257615552618dbc565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156155c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155e991908101906187a3565b82826155f481618f29565b935060ff168151811061560957615609618dbc565b60200260200101819052505b60e085015151156156bc5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261565f81618f29565b935060ff168151811061567457615674618dbc565b60200260200101819052506156908560e0015160000151616521565b828261569b81618f29565b935060ff16815181106156b0576156b0618dbc565b60200260200101819052505b60e085015160200151156157665760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261570981618f29565b935060ff168151811061571e5761571e618dbc565b602002602001018190525061573a8560e0015160200151616521565b828261574581618f29565b935060ff168151811061575a5761575a618dbc565b60200260200101819052505b60e085015160400151156158105760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826157b381618f29565b935060ff16815181106157c8576157c8618dbc565b60200260200101819052506157e48560e0015160400151616521565b82826157ef81618f29565b935060ff168151811061580457615804618dbc565b60200260200101819052505b60e085015160600151156158ba5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261585d81618f29565b935060ff168151811061587257615872618dbc565b602002602001018190525061588e8560e0015160600151616521565b828261589981618f29565b935060ff16815181106158ae576158ae618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158d8576158d86186db565b60405190808252806020026020018201604052801561590b57816020015b60608152602001906001900390816158f65790505b50905060005b8260ff168160ff16101561596457838160ff168151811061593457615934618dbc565b6020026020010151828260ff168151811061595157615951618dbc565b6020908102919091010152600101615911565b5093505050505b949350505050565b61599a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615a2091869101618fb3565b600060405180830381865afa158015615a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a6591908101906187a3565b90506000615a7386836170b0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615aa391906183ed565b6000604051808303816000875af1158015615ac2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615aea9190810190618ffa565b805190915060030b15801590615b035750602081015151155b8015615b125750604081015151155b15614aec5781600081518110615b2a57615b2a618dbc565b602002602001015160405160200161414591906190b0565b60606000615b778560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615bae9082905b90617205565b15615d0b576000615c2b82615c2584615c1f615bf18a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061722c565b9061728e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c8f908290617205565b15615cf957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cf6905b8290617313565b90505b615d0281617339565b92505050614072565b8215615d2457848460405160200161414592919061929c565b5050604080516020810190915260008152614072565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d6457505050565b6000615d718484846173a2565b90506000615d7e82615973565b602081015181519192509060030b158015615e1a5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90604080518082018252600080825260209182015281518083019092528451825280850190820152615ba8565b15615e2757505050505050565b60408201515115615e475781604001516040516020016141459190619343565b8060405160200161414591906193a1565b60606000615e8d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ef2905b82906164c0565b15615f6157604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90839061793d565b617339565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc3905b82906179c7565b60010361609057604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261602990615cef565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c905b8390617313565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ef90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616157908390617a61565b90506000816001835161616a919061940c565b8151811061617a5761617a618dbc565b6020026020010151905061621d615f5c6161f06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061793d565b95945050505050565b82604051602001614145919061941f565b50919050565b606060006162728360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162d490615eeb565b156162e25761407281617339565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634190615fbc565b6001036163ab57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261407290615f5c90616089565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640a90615eeb565b1561622657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616472908390617a61565b90506001815111156164ae57806002825161648d919061940c565b8151811061649d5761649d618dbc565b602002602001015192505050919050565b5082604051602001614145919061941f565b8051825160009111156164d557506000613ec5565b815183516020850151600092916164eb91618860565b6164f5919061940c565b90508260200151810361650c576001915050613ec5565b82516020840151819020912014905092915050565b6060600061652e83617b06565b600101905060008167ffffffffffffffff81111561654e5761654e6186db565b6040519080825280601f01601f191660200182016040528015616578576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461658257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161664d905b8290617be8565b1561668d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ec90616646565b1561672c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678b90616646565b156167cb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682a90616646565b8061688f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261688f90616646565b156168cf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261692e90616646565b806169935750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261699390616646565b156169d357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a3290616646565b80616a975750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a9790616646565b15616ad757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3690616646565b80616b9b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b9b90616646565b15616bdb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c3a90616646565b15616c7a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cd990616646565b15616d1957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d7890616646565b15616db857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e1790616646565b15616e5757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616eb690616646565b15616ef657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f5590616646565b80616fba5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fba90616646565b15616ffa57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261705990616646565b1561709957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161414592906020016194fd565b60608060005b845181101561713b57818582815181106170d2576170d2618dbc565b60200260200101516040516020016170eb9291906189a3565b60405160208183030381529060405291506001855161710a919061940c565b811461713357816040516020016171219190619666565b60405160208183030381529060405291505b6001016170b6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617154579050509050838160008151811061717f5761717f618dbc565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171d3576171d3618dbc565b602002602001018190525081816002815181106171f2576171f2618dbc565b6020908102919091010152949350505050565b60208083015183518351928401516000936172239291849190617bfc565b14159392505050565b6040805180820190915260008082526020820152600061725e8460000151856020015185600001518660200151617d0d565b9050836020015181617270919061940c565b8451859061727f90839061940c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156172b3575081613ec5565b60208083015190840151600191146172da5750815160208481015190840151829020919020145b801561730b578251845185906172f190839061940c565b9052508251602085018051617307908390618860565b9052505b509192915050565b6040805180820190915260008082526020820152617332838383617e2d565b5092915050565b60606000826000015167ffffffffffffffff81111561735a5761735a6186db565b6040519080825280601f01601f191660200182016040528015617384576020820181803683370190505b50905060006020820190506173328185602001518660000151617ed8565b606060006173ae61436b565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816173cb57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061742690618f29565b935060ff168151811061743b5761743b618dbc565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161748c91906196a7565b6040516020818303038152906040528282806174a790618f29565b935060ff16815181106174bc576174bc618dbc565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061750990618f29565b935060ff168151811061751e5761751e618dbc565b60200260200101819052508260405160200161753a9190618e57565b60405160208183030381529060405282828061755590618f29565b935060ff168151811061756a5761756a618dbc565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806175b790618f29565b935060ff16815181106175cc576175cc618dbc565b60200260200101819052506175e18784617f52565b82826175ec81618f29565b935060ff168151811061760157617601618dbc565b6020908102919091010152855151156176ad5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261765381618f29565b935060ff168151811061766857617668618dbc565b6020026020010181905250617681866000015184617f52565b828261768c81618f29565b935060ff16815181106176a1576176a1618dbc565b60200260200101819052505b85608001511561771b5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176f681618f29565b935060ff168151811061770b5761770b618dbc565b6020026020010181905250617781565b84156177815760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261776081618f29565b935060ff168151811061777557617775618dbc565b60200260200101819052505b6040860151511561781d5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826177cb81618f29565b935060ff16815181106177e0576177e0618dbc565b602002602001018190525085604001518282806177fc90618f29565b935060ff168151811061781157617811618dbc565b60200260200101819052505b8560600151156178875760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261786681618f29565b935060ff168151811061787b5761787b618dbc565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178a5576178a56186db565b6040519080825280602002602001820160405280156178d857816020015b60608152602001906001900390816178c35790505b50905060005b8260ff168160ff16101561793157838160ff168151811061790157617901618dbc565b6020026020010151828260ff168151811061791e5761791e618dbc565b60209081029190910101526001016178de565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617962575081613ec5565b8151835160208501516000929161797891618860565b617982919061940c565b602084015190915060019082146179a3575082516020840151819020908220145b80156179be578351855186906179ba90839061940c565b9052505b50929392505050565b60008082600001516179eb8560000151866020015186600001518760200151617d0d565b6179f59190618860565b90505b83516020850151617a099190618860565b81116173325781617a19816196ec565b9250508260000151617a50856020015183617a34919061940c565b8651617a40919061940c565b8386600001518760200151617d0d565b617a5a9190618860565b90506179f8565b60606000617a6f84846179c7565b617a7a906001618860565b67ffffffffffffffff811115617a9257617a926186db565b604051908082528060200260200182016040528015617ac557816020015b6060815260200190600190039081617ab05790505b50905060005b8151811015615d3a57617ae1615f5c8686617313565b828281518110617af357617af3618dbc565b6020908102919091010152600101617acb565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b4f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b7b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b9957662386f26fc10000830492506010015b6305f5e1008310617bb1576305f5e100830492506008015b6127108310617bc557612710830492506004015b60648310617bd7576064830492506002015b600a8310613ec55760010192915050565b6000617bf48383617f92565b159392505050565b600080858411617d035760208411617caf5760008415617c47576001617c2386602061940c565b617c2e906008619706565b617c39906002619804565b617c43919061940c565b1990505b8351811685617c568989618860565b617c60919061940c565b805190935082165b818114617c9a57878411617c82578794505050505061596b565b83617c8c81619810565b945050828451169050617c68565b617ca48785618860565b94505050505061596b565b838320617cbc858861940c565b617cc69087618860565b91505b858210617d0157848220808203617cee57617ce48684618860565b935050505061596b565b617cf960018461940c565b925050617cc9565b505b5092949350505050565b60008381868511617e185760208511617dc75760008515617d59576001617d3587602061940c565b617d40906008619706565b617d4b906002619804565b617d55919061940c565b1990505b84518116600087617d6a8b8b618860565b617d74919061940c565b855190915083165b828114617db957818610617da157617d948b8b618860565b965050505050505061596b565b85617dab816196ec565b965050838651169050617d7c565b85965050505050505061596b565b508383206000905b617dd9868961940c565b8211617e1657858320808203617df5578394505050505061596b565b617e00600185618860565b9350508180617e0e906196ec565b925050617dcf565b505b617e228787618860565b979650505050505050565b60408051808201909152600080825260208201526000617e5f8560000151866020015186600001518760200151617d0d565b602080870180519186019190915251909150617e7b908261940c565b835284516020860151617e8e9190618860565b8103617e9d5760008552617ecf565b83518351617eab9190618860565b85518690617eba90839061940c565b9052508351617ec99082618860565b60208601525b50909392505050565b60208110617f105781518352617eef602084618860565b9250617efc602083618860565b9150617f0960208261940c565b9050617ed8565b6000198115617f3f576001617f2683602061940c565b617f3290610100619804565b617f3c919061940c565b90505b9151835183169219169190911790915250565b60606000617f60848461443e565b8051602080830151604051939450617f7a93909101619827565b60405160208183030381529060405291505092915050565b8151815160009190811115617fa5575081515b6020808501519084015160005b8381101561805e578251825180821461802e57600019602087101561800d57600184617fdf89602061940c565b617fe99190618860565b617ff4906008619706565b617fff906002619804565b618009919061940c565b1990505b818116838216818103911461802b579750613ec59650505050505050565b50505b618039602086618860565b9450618046602085618860565b935050506020816180579190618860565b9050617fb2565b5084518651614aec919061987f565b610b67806198a083390190565b61106f8061a40783390190565b611ac28061b47683390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180d76180dc565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180d76040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561818e5783516001600160a01b0316835260209384019390920191600101618167565b509095945050505050565b60005b838110156181b457818101518382015260200161819c565b50506000910152565b600081518084526181d5816020860160208601618199565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156182cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526182b58486516181bd565b602095860195909450929092019160010161827b565b509197505050602094850194929092019150600101618211565b50929695505050505050565b600081518084526020840193506020830160005b828110156183455781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618305565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526183bb60408801826181bd565b90506020820151915086810360208801526183d681836182f1565b965050506020938401939190910190600101618377565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261844f8583516181bd565b94506020938401939190910190600101618415565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184e560408701826182f1565b955050602093840193919091019060010161848c565b80516001600160a01b038116811461851257600080fd5b919050565b60006020828403121561852957600080fd5b614072826184fb565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261860d60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561863957600080fd5b8151801515811461407257600080fd5b60006020828403121561865b57600080fd5b5051919050565b600181811c9082168061867657607f821691505b602082108103616237577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080604083850312156186c257600080fd5b6186cb836184fb565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561872d5761872d6186db565b60405290565b60008067ffffffffffffffff84111561874e5761874e6186db565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561877d5761877d6186db565b60405283815290508082840185101561879557600080fd5b615d3a846020830185618199565b6000602082840312156187b557600080fd5b815167ffffffffffffffff8111156187cc57600080fd5b8201601f810184136187dd57600080fd5b613ec184825160208401618733565b6000602082840312156187fe57600080fd5b815160ff8116811461407257600080fd5b60408152600061882260408301856181bd565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613ec557613ec5618831565b60408152600061888660408301856181bd565b828103602084015261406e81856181bd565b6001600160a01b038316815260406020820152600061596b60408301846181bd565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188f281601a850160208801618199565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161892f81601c840160208801618199565b01601c01949350505050565b60208152600061407260208301846181bd565b600082601f83011261895f57600080fd5b61407283835160208501618733565b60006020828403121561898057600080fd5b815167ffffffffffffffff81111561899757600080fd5b613ec18482850161894e565b600083516189b5818460208801618199565b8351908301906189c9818360208801618199565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618a0a81601a850160208801618199565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a47816033840160208801618199565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061407260808301846181bd565b60008551618ad6818460208a01618199565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618b10816001840160208a01618199565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b4e816002840160208901618199565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b90816002840160208801618199565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bdb60408301846181bd565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c5281601f850160208701618199565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618cbf60408301846181bd565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618d1160408301846181bd565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d88816014850160208701618199565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e23816001850160208701618199565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e69818460208701618199565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618f1c81604b850160208701618199565b91909101604b0192915050565b600060ff821660ff8103618f3f57618f3f618831565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061407260808301846181bd565b60006020828403121561900c57600080fd5b815167ffffffffffffffff81111561902357600080fd5b82016060818503121561903557600080fd5b61903d61870a565b81518060030b811461904e57600080fd5b8152602082015167ffffffffffffffff81111561906a57600080fd5b6190768682850161894e565b602083015250604082015167ffffffffffffffff81111561909657600080fd5b6190a28682850161894e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161910e816021850160208701618199565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192fa816021850160208801618199565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161933781602e840160208801618199565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618fa6816029850160208701618199565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193ff816022850160208701618199565b9190910160220192915050565b81810381811115613ec557613ec5618831565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161945781600e850160208701618199565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619535816018850160208801618199565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161957281601c840160208801618199565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619678818460208701618199565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196df81601c850160208701618199565b91909101601c0192915050565b600060001982036196ff576196ff618831565b5060010190565b8082028115828204841417613ec557613ec5618831565b6001815b60018411156197585780850481111561973c5761973c618831565b600184161561974a57908102905b60019390931c928002619721565b935093915050565b60008261976f57506001613ec5565b8161977c57506000613ec5565b8160018114619792576002811461979c576197b8565b6001915050613ec5565b60ff8411156197ad576197ad618831565b50506001821b613ec5565b5060208310610133831016604e8410600b84101617156197db575081810a613ec5565b6197e8600019848461971d565b80600019048211156197fc576197fc618831565b029392505050565b60006140728383619760565b60008161981f5761981f618831565b506000190190565b60008351619839818460208801618199565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619873816001840160208801618199565b01600101949350505050565b81810360008312801583831316838312821617156173325761733261883156fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a26469706673582212201ae1430268e9feb6f12c134ed83b1e4e61729a35b1adb3d98d576211b824336a64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf0c8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b60405161027591906180ec565b60405180910390f35b61024e610d5d565b61028e610fda565b6040516102759190618188565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b60405161027591906182ee565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b604051610275919061838c565b610325612323565b6040516102759190618403565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e61347a565b61024e613728565b61024e613884565b610268613b60565b61024e613bc0565b61024e613d38565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061800c565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e4b565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184b6565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618019565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618026565b610845969594939291906184d1565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185c6565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185c6565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def91906185e8565b9050610dfc600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185c6565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618601565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618601565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184b6565b613211613eea565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061864e565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de91906185e8565b613e6a565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618601565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618601565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906185e8565b9050611b04600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a91906185e8565b9050611d47600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185c6565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185c6565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d91906185e8565b9050610fd58282613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa291906185e8565b9050611fb1620186a082613e6a565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185c6565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215391906185e8565b905061216262030d4082613e6a565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618601565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618601565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618742565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f4b565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618742565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f4b565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612613919061878b565b905061262360128260ff16613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c91906185e8565b90506104d4620186a082613e6a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618601565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618601565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e91906185e8565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c91906185e8565b9050612e3b620186a082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb491906185e8565b9050612ec3620186a082613e6a565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5591906185e8565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb91906185c6565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c350906038016187ae565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c691906185c6565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315991906185e8565b905061316f6131698360146187ff565b82613e6a565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320091906185e8565b905061320e61c33c82613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328791906185e8565b905061329561c35082613e6a565b505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333991906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133bf57600080fd5b505af11580156133d3573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185c6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134ec57600080fd5b505af1158015613500573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561356757600080fd5b505af115801561357b573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156135f157600080fd5b505af1158015613605573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561366c57600080fd5b505af1158015613680573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fd919061864e565b601f54919350915061371d9061010090046001600160a01b031683613eea565b612162601482613e6a565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561379a57600080fd5b505af11580156137ae573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561381657600080fd5b505af115801561382a573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156138f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391591906185e8565b9050613924620186a082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399d91906185e8565b90506139ac620186a082613e6a565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3991906185c6565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acb91906185e8565b9050613ad961c35082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906185e8565b90506104d461c35082613e6a565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c3257600080fd5b505af1158015613c46573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cb057600080fd5b505af1158015613cc4573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca91906185e8565b9050613dd7600082613e6a565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e55618033565b613e60848483613f9d565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613ed657600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ebe565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ebe9085908590600401618812565b600080613faa8584614018565b905061400d6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613ff8929190618837565b60405160208183030381529060405285614024565b9150505b9392505050565b60006140118383614052565b60c081015151600090156140485761404184848460c0015161406d565b9050614011565b6140418484614213565b600061405e83836142fe565b61401183836020015184614024565b60008061407861430a565b9050600061408686836143dd565b9050600061409d8260600151836020015185614883565b905060006140ad83838989614a95565b905060006140ba82615912565b602081015181519192509060030b1561412d578982604001516040516020016140e4929190618859565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614124916004016188da565b60405180910390fd5b60006141706040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615ae1565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141c39084906004016188da565b602060405180830381865afa1580156141e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420491906184b6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142689087906004016188da565b600060405180830381865afa158015614285573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142ad919081019061890d565b905060006142db82856040516020016142c7929190618942565b604051602081830303815290604052615ce1565b90506001600160a01b038116613e605784846040516020016140e4929190618971565b61216282826000615cf4565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614391908490600401618a1c565b600060405180830381865afa1580156143ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526143d69190810190618742565b9250505090565b61440f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061445a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61446385615df7565b60208201526000614473866161dc565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144dd9190810190618742565b868385602001516040516020016144f79493929190618a63565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061454f9085906004016188da565b600060405180830381865afa15801561456c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145949190810190618742565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906145dc908490600401618b67565b602060405180830381865afa1580156145f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461d91906185c6565b61463257816040516020016140e49190618bb9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614677908490600401618c4b565b600060405180830381865afa158015614694573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146bc9190810190618742565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614703908490600401618c9d565b602060405180830381865afa158015614720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474491906185c6565b156147d9576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061478e908490600401618c9d565b600060405180830381865afa1580156147ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526147d39190810190618742565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016147fe9190618cef565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161482a929190618812565b600060405180830381865afa158015614847573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261486f9190810190618742565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161489f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106148ff576148ff618d5b565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061495357614953618d5b565b60200260200101819052508460405160200161496f9190618d8a565b6040516020818303038152906040528160028151811061499157614991618d5b565b6020026020010181905250826040516020016149ad9190618df6565b604051602081830303815290604052816003815181106149cf576149cf618d5b565b602002602001018190525060006149e582615912565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614a76906040805180820182526000808252602091820152815180830190925284518252808501908201529061645f565b614a8b57856040516020016140e49190618e37565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614ae5565b511590565b614c5957826020015115614ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614124565b8260c0015115614c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614124565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614c7257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614ccd90618ec8565b935060ff1681518110614ce257614ce2618d5b565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d339190618ee7565b604051602081830303815290604052828280614d4e90618ec8565b935060ff1681518110614d6357614d63618d5b565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614db090618ec8565b935060ff1681518110614dc557614dc5618d5b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e1290618ec8565b935060ff1681518110614e2757614e27618d5b565b60200260200101819052508760200151828280614e4390618ec8565b935060ff1681518110614e5857614e58618d5b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ea590618ec8565b935060ff1681518110614eba57614eba618d5b565b602090810291909101015287518282614ed281618ec8565b935060ff1681518110614ee757614ee7618d5b565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f3490618ec8565b935060ff1681518110614f4957614f49618d5b565b6020026020010181905250614f5d466164c0565b8282614f6881618ec8565b935060ff1681518110614f7d57614f7d618d5b565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614fca90618ec8565b935060ff1681518110614fdf57614fdf618d5b565b602002602001018190525086828280614ff790618ec8565b935060ff168151811061500c5761500c618d5b565b60209081029190910101528551156151335760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261505d81618ec8565b935060ff168151811061507257615072618d5b565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150c29089906004016188da565b600060405180830381865afa1580156150df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151079190810190618742565b828261511281618ec8565b935060ff168151811061512757615127618d5b565b60200260200101819052505b8460200151156152035760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261517c81618ec8565b935060ff168151811061519157615191618d5b565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806151de90618ec8565b935060ff16815181106151f3576151f3618d5b565b60200260200101819052506153ca565b61523b614ae08660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152ce5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261527e81618ec8565b935060ff168151811061529357615293618d5b565b60200260200101819052508460a001516040516020016152b39190618d8a565b6040516020818303038152906040528282806151de90618ec8565b8460c0015115801561531157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261530f90511590565b155b156153ca5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261535581618ec8565b935060ff168151811061536a5761536a618d5b565b602002602001018190525061537e88616560565b60405160200161538e9190618d8a565b6040516020818303038152906040528282806153a990618ec8565b935060ff16815181106153be576153be618d5b565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526153fe90511590565b6154935760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261544181618ec8565b935060ff168151811061545657615456618d5b565b6020026020010181905250846040015182828061547290618ec8565b935060ff168151811061548757615487618d5b565b60200260200101819052505b6060850151156155b45760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826154dc81618ec8565b935060ff16815181106154f1576154f1618d5b565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615560573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155889190810190618742565b828261559381618ec8565b935060ff16815181106155a8576155a8618d5b565b60200260200101819052505b60e0850151511561565b5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826155fe81618ec8565b935060ff168151811061561357615613618d5b565b602002602001018190525061562f8560e00151600001516164c0565b828261563a81618ec8565b935060ff168151811061564f5761564f618d5b565b60200260200101819052505b60e085015160200151156157055760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156a881618ec8565b935060ff16815181106156bd576156bd618d5b565b60200260200101819052506156d98560e00151602001516164c0565b82826156e481618ec8565b935060ff16815181106156f9576156f9618d5b565b60200260200101819052505b60e085015160400151156157af5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261575281618ec8565b935060ff168151811061576757615767618d5b565b60200260200101819052506157838560e00151604001516164c0565b828261578e81618ec8565b935060ff16815181106157a3576157a3618d5b565b60200260200101819052505b60e085015160600151156158595760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826157fc81618ec8565b935060ff168151811061581157615811618d5b565b602002602001018190525061582d8560e00151606001516164c0565b828261583881618ec8565b935060ff168151811061584d5761584d618d5b565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158775761587761867a565b6040519080825280602002602001820160405280156158aa57816020015b60608152602001906001900390816158955790505b50905060005b8260ff168160ff16101561590357838160ff16815181106158d3576158d3618d5b565b6020026020010151828260ff16815181106158f0576158f0618d5b565b60209081029190910101526001016158b0565b5093505050505b949350505050565b6159396040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159bf91869101618f52565b600060405180830381865afa1580156159dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a049190810190618742565b90506000615a12868361704f565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a42919061838c565b6000604051808303816000875af1158015615a61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a899190810190618f99565b805190915060030b15801590615aa25750602081015151155b8015615ab15750604081015151155b15614a8b5781600081518110615ac957615ac9618d5b565b60200260200101516040516020016140e4919061904f565b60606000615b168560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b4d9082905b906171a4565b15615caa576000615bca82615bc484615bbe615b908a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171cb565b9061722d565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c2e9082906171a4565b15615c9857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c95905b82906172b2565b90505b615ca1816172d8565b92505050614011565b8215615cc35784846040516020016140e492919061923b565b5050604080516020810190915260008152614011565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d0357505050565b6000615d10848484617341565b90506000615d1d82615912565b602081015181519192509060030b158015615db95750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db990604080518082018252600080825260209182015281518083019092528451825280850190820152615b47565b15615dc657505050505050565b60408201515115615de65781604001516040516020016140e491906192e2565b806040516020016140e49190619340565b60606000615e2c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615e91905b829061645f565b15615f0057604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb9083906178dc565b6172d8565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f62905b8290617966565b60010361602f57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc890615c8e565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb905b83906172b2565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608e90615e8a565b156161c557604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906160f6908390617a00565b90506000816001835161610991906193ab565b8151811061611957616119618d5b565b602002602001015190506161bc615efb61618f6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906178dc565b95945050505050565b826040516020016140e491906193be565b50919050565b606060006162118360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061627390615e8a565b1561628157614011816172d8565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162e090615f5b565b60010361634a57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb90616028565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163a990615e8a565b156161c557604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616411908390617a00565b905060018151111561644d57806002825161642c91906193ab565b8151811061643c5761643c618d5b565b602002602001015192505050919050565b50826040516020016140e491906193be565b80518251600091111561647457506000613e64565b8151835160208501516000929161648a916187ff565b61649491906193ab565b9050826020015181036164ab576001915050613e64565b82516020840151819020912014905092915050565b606060006164cd83617aa5565b600101905060008167ffffffffffffffff8111156164ed576164ed61867a565b6040519080825280601f01601f191660200182016040528015616517576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461652157509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916165ec905b8290617b87565b1561662c57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668b906165e5565b156166cb57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672a906165e5565b1561676a57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c9906165e5565b8061682e5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e906165e5565b1561686e57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd906165e5565b806169325750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616932906165e5565b1561697257505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d1906165e5565b80616a365750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a36906165e5565b15616a7657505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ad5906165e5565b80616b3a5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3a906165e5565b15616b7a57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bd9906165e5565b15616c1957505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c78906165e5565b15616cb857505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d17906165e5565b15616d5757505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616db6906165e5565b15616df657505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e55906165e5565b15616e9557505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ef4906165e5565b80616f595750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f59906165e5565b15616f9957505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ff8906165e5565b1561703857505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516140e4929060200161949c565b60608060005b84518110156170da578185828151811061707157617071618d5b565b602002602001015160405160200161708a929190618942565b6040516020818303038152906040529150600185516170a991906193ab565b81146170d257816040516020016170c09190619605565b60405160208183030381529060405291505b600101617055565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816170f3579050509050838160008151811061711e5761711e618d5b565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061717257617172618d5b565b6020026020010181905250818160028151811061719157617191618d5b565b6020908102919091010152949350505050565b60208083015183518351928401516000936171c29291849190617b9b565b14159392505050565b604080518082019091526000808252602082015260006171fd8460000151856020015185600001518660200151617cac565b905083602001518161720f91906193ab565b8451859061721e9083906193ab565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617252575081613e64565b60208083015190840151600191146172795750815160208481015190840151829020919020145b80156172aa578251845185906172909083906193ab565b90525082516020850180516172a69083906187ff565b9052505b509192915050565b60408051808201909152600080825260208201526172d1838383617dcc565b5092915050565b60606000826000015167ffffffffffffffff8111156172f9576172f961867a565b6040519080825280601f01601f191660200182016040528015617323576020820181803683370190505b50905060006020820190506172d18185602001518660000151617e77565b6060600061734d61430a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161736a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173c590618ec8565b935060ff16815181106173da576173da618d5b565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161742b9190619646565b60405160208183030381529060405282828061744690618ec8565b935060ff168151811061745b5761745b618d5b565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174a890618ec8565b935060ff16815181106174bd576174bd618d5b565b6020026020010181905250826040516020016174d99190618df6565b6040516020818303038152906040528282806174f490618ec8565b935060ff168151811061750957617509618d5b565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061755690618ec8565b935060ff168151811061756b5761756b618d5b565b60200260200101819052506175808784617ef1565b828261758b81618ec8565b935060ff16815181106175a0576175a0618d5b565b60209081029190910101528551511561764c5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826175f281618ec8565b935060ff168151811061760757617607618d5b565b6020026020010181905250617620866000015184617ef1565b828261762b81618ec8565b935060ff168151811061764057617640618d5b565b60200260200101819052505b8560800151156176ba5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261769581618ec8565b935060ff16815181106176aa576176aa618d5b565b6020026020010181905250617720565b84156177205760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826176ff81618ec8565b935060ff168151811061771457617714618d5b565b60200260200101819052505b604086015151156177bc5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261776a81618ec8565b935060ff168151811061777f5761777f618d5b565b6020026020010181905250856040015182828061779b90618ec8565b935060ff16815181106177b0576177b0618d5b565b60200260200101819052505b8560600151156178265760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261780581618ec8565b935060ff168151811061781a5761781a618d5b565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178445761784461867a565b60405190808252806020026020018201604052801561787757816020015b60608152602001906001900390816178625790505b50905060005b8260ff168160ff1610156178d057838160ff16815181106178a0576178a0618d5b565b6020026020010151828260ff16815181106178bd576178bd618d5b565b602090810291909101015260010161787d565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617901575081613e64565b81518351602085015160009291617917916187ff565b61792191906193ab565b60208401519091506001908214617942575082516020840151819020908220145b801561795d578351855186906179599083906193ab565b9052505b50929392505050565b600080826000015161798a8560000151866020015186600001518760200151617cac565b61799491906187ff565b90505b835160208501516179a891906187ff565b81116172d157816179b88161968b565b92505082600001516179ef8560200151836179d391906193ab565b86516179df91906193ab565b8386600001518760200151617cac565b6179f991906187ff565b9050617997565b60606000617a0e8484617966565b617a199060016187ff565b67ffffffffffffffff811115617a3157617a3161867a565b604051908082528060200260200182016040528015617a6457816020015b6060815260200190600190039081617a4f5790505b50905060005b8151811015615cd957617a80615efb86866172b2565b828281518110617a9257617a92618d5b565b6020908102919091010152600101617a6a565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617aee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b1a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b3857662386f26fc10000830492506010015b6305f5e1008310617b50576305f5e100830492506008015b6127108310617b6457612710830492506004015b60648310617b76576064830492506002015b600a8310613e645760010192915050565b6000617b938383617f31565b159392505050565b600080858411617ca25760208411617c4e5760008415617be6576001617bc28660206193ab565b617bcd9060086196a5565b617bd89060026197a3565b617be291906193ab565b1990505b8351811685617bf589896187ff565b617bff91906193ab565b805190935082165b818114617c3957878411617c21578794505050505061590a565b83617c2b816197af565b945050828451169050617c07565b617c4387856187ff565b94505050505061590a565b838320617c5b85886193ab565b617c6590876187ff565b91505b858210617ca057848220808203617c8d57617c8386846187ff565b935050505061590a565b617c986001846193ab565b925050617c68565b505b5092949350505050565b60008381868511617db75760208511617d665760008515617cf8576001617cd48760206193ab565b617cdf9060086196a5565b617cea9060026197a3565b617cf491906193ab565b1990505b84518116600087617d098b8b6187ff565b617d1391906193ab565b855190915083165b828114617d5857818610617d4057617d338b8b6187ff565b965050505050505061590a565b85617d4a8161968b565b965050838651169050617d1b565b85965050505050505061590a565b508383206000905b617d7886896193ab565b8211617db557858320808203617d94578394505050505061590a565b617d9f6001856187ff565b9350508180617dad9061968b565b925050617d6e565b505b617dc187876187ff565b979650505050505050565b60408051808201909152600080825260208201526000617dfe8560000151866020015186600001518760200151617cac565b602080870180519186019190915251909150617e1a90826193ab565b835284516020860151617e2d91906187ff565b8103617e3c5760008552617e6e565b83518351617e4a91906187ff565b85518690617e599083906193ab565b9052508351617e6890826187ff565b60208601525b50909392505050565b60208110617eaf5781518352617e8e6020846187ff565b9250617e9b6020836187ff565b9150617ea86020826193ab565b9050617e77565b6000198115617ede576001617ec58360206193ab565b617ed1906101006197a3565b617edb91906193ab565b90505b9151835183169219169190911790915250565b60606000617eff84846143dd565b8051602080830151604051939450617f19939091016197c6565b60405160208183030381529060405291505092915050565b8151815160009190811115617f44575081515b6020808501519084015160005b83811015617ffd5782518251808214617fcd576000196020871015617fac57600184617f7e8960206193ab565b617f8891906187ff565b617f939060086196a5565b617f9e9060026197a3565b617fa891906193ab565b1990505b8181168382168181039114617fca579750613e649650505050505050565b50505b617fd86020866187ff565b9450617fe56020856187ff565b93505050602081617ff691906187ff565b9050617f51565b5084518651614a8b919061981e565b610b678061983f83390190565b61106f8061a3a683390190565b611ac28061b41583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161807661807b565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180766040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561812d5783516001600160a01b0316835260209384019390920191600101618106565b509095945050505050565b60005b8381101561815357818101518382015260200161813b565b50506000910152565b60008151808452618174816020860160208601618138565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561826a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261825484865161815c565b602095860195909450929092019160010161821a565b5091975050506020948501949290920191506001016181b0565b50929695505050505050565b600081518084526020840193506020830160005b828110156182e45781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182a4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261835a604088018261815c565b90506020820151915086810360208801526183758183618290565b965050506020938401939190910190600101618316565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526183ee85835161815c565b945060209384019391909101906001016183b4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184846040870182618290565b955050602093840193919091019060010161842b565b80516001600160a01b03811681146184b157600080fd5b919050565b6000602082840312156184c857600080fd5b6140118261849a565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061858b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185ac60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b6000602082840312156185d857600080fd5b8151801515811461401157600080fd5b6000602082840312156185fa57600080fd5b5051919050565b600181811c9082168061861557607f821691505b6020821081036161d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561866157600080fd5b61866a8361849a565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186cc576186cc61867a565b60405290565b60008067ffffffffffffffff8411156186ed576186ed61867a565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561871c5761871c61867a565b60405283815290508082840185101561873457600080fd5b615cd9846020830185618138565b60006020828403121561875457600080fd5b815167ffffffffffffffff81111561876b57600080fd5b8201601f8101841361877c57600080fd5b613e60848251602084016186d2565b60006020828403121561879d57600080fd5b815160ff8116811461401157600080fd5b6040815260006187c1604083018561815c565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e6457613e646187d0565b604081526000618825604083018561815c565b828103602084015261400d818561815c565b6001600160a01b038316815260406020820152600061590a604083018461815c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161889181601a850160208801618138565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516188ce81601c840160208801618138565b01601c01949350505050565b602081526000614011602083018461815c565b600082601f8301126188fe57600080fd5b614011838351602085016186d2565b60006020828403121561891f57600080fd5b815167ffffffffffffffff81111561893657600080fd5b613e60848285016188ed565b60008351618954818460208801618138565b835190830190618968818360208801618138565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189a981601a850160208801618138565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516189e6816033840160208801618138565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614011608083018461815c565b60008551618a75818460208a01618138565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618aaf816001840160208a01618138565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618aed816002840160208901618138565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b2f816002840160208801618138565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618b7a604083018461815c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618bf181601f850160208701618138565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c5e604083018461815c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cb0604083018461815c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d27816014850160208701618138565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618dc2816001850160208701618138565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e08818460208701618138565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618ebb81604b850160208701618138565b91909101604b0192915050565b600060ff821660ff8103618ede57618ede6187d0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f45816029850160208701618138565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614011608083018461815c565b600060208284031215618fab57600080fd5b815167ffffffffffffffff811115618fc257600080fd5b820160608185031215618fd457600080fd5b618fdc6186a9565b81518060030b8114618fed57600080fd5b8152602082015167ffffffffffffffff81111561900957600080fd5b619015868285016188ed565b602083015250604082015167ffffffffffffffff81111561903557600080fd5b619041868285016188ed565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ad816021850160208701618138565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619299816021850160208801618138565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516192d681602e840160208801618138565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f45816029850160208701618138565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161939e816022850160208701618138565b9190910160220192915050565b81810381811115613e6457613e646187d0565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516193f681600e850160208701618138565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516194d4816018850160208801618138565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161951181601c840160208801618138565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619617818460208701618138565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161967e81601c850160208701618138565b91909101601c0192915050565b6000600019820361969e5761969e6187d0565b5060010190565b8082028115828204841417613e6457613e646187d0565b6001815b60018411156196f7578085048111156196db576196db6187d0565b60018416156196e957908102905b60019390931c9280026196c0565b935093915050565b60008261970e57506001613e64565b8161971b57506000613e64565b8160018114619731576002811461973b57619757565b6001915050613e64565b60ff84111561974c5761974c6187d0565b50506001821b613e64565b5060208310610133831016604e8410600b841016171561977a575081810a613e64565b61978760001984846196bc565b806000190482111561979b5761979b6187d0565b029392505050565b600061401183836196ff565b6000816197be576197be6187d0565b506000190190565b600083516197d8818460208801618138565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619812816001840160208801618138565b01600101949350505050565b81810360008312801583831316838312821617156172d1576172d16187d056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220e5109095beddf85e0dcbd2c9b6984fff8ce98d06e6207d80be32cfcb4e08373d64736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. From 364c3ef2514c68f82b5cd2b3b9890697d982a571 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 11:36:32 +0200 Subject: [PATCH 51/60] improve test a bit --- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- v2/test/ZRC20.t.sol | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go index 414b67cd..08ca1b0a 100644 --- a/v2/pkg/zrc20.t.sol/zrc20test.go +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. var ZRC20TestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf0c8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b60405161027591906180ec565b60405180910390f35b61024e610d5d565b61028e610fda565b6040516102759190618188565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b60405161027591906182ee565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b604051610275919061838c565b610325612323565b6040516102759190618403565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e61329d565b61024e61347a565b61024e613728565b61024e613884565b610268613b60565b61024e613bc0565b61024e613d38565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061800c565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e4b565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184b6565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618019565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618026565b610845969594939291906184d1565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185c6565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185c6565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def91906185e8565b9050610dfc600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185c6565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f90618601565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90618601565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184b6565b613211613eea565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061864e565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de91906185e8565b613e6a565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a90618601565b80601f016020809104026020016040519081016040528092919081815260200182805461196690618601565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906185e8565b9050611b04600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a91906185e8565b9050611d47600082613e6a565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185c6565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185c6565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d91906185e8565b9050610fd58282613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa291906185e8565b9050611fb1620186a082613e6a565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185c6565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215391906185e8565b905061216262030d4082613e6a565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561111357838290600052602060002001805461229690618601565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290618601565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618742565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f4b565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618742565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f4b565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612613919061878b565b905061262360128260ff16613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c91906185e8565b90506104d4620186a082613e6a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d490618601565b80601f016020809104026020016040519081016040528092919081815260200182805461290090618601565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e91906185e8565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c7f57600080fd5b505af1158015612c93573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c91906185e8565b9050612e3b620186a082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb491906185e8565b9050612ec3620186a082613e6a565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5591906185e8565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb91906185c6565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613083919061c350906038016187ae565b6020604051808303816000875af11580156130a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c691906185c6565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315991906185e8565b905061316f6131698360146187ff565b82613e6a565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320091906185e8565b905061320e61c33c82613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328791906185e8565b905061329561c35082613e6a565b505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333991906185c6565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133bf57600080fd5b505af11580156133d3573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185c6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134ec57600080fd5b505af1158015613500573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561356757600080fd5b505af115801561357b573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156135f157600080fd5b505af1158015613605573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561366c57600080fd5b505af1158015613680573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fd919061864e565b601f54919350915061371d9061010090046001600160a01b031683613eea565b612162601482613e6a565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561379a57600080fd5b505af11580156137ae573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561381657600080fd5b505af115801561382a573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156138f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391591906185e8565b9050613924620186a082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399d91906185e8565b90506139ac620186a082613e6a565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3991906185c6565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acb91906185e8565b9050613ad961c35082613e6a565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5291906185e8565b90506104d461c35082613e6a565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c3257600080fd5b505af1158015613c46573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cb057600080fd5b505af1158015613cc4573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca91906185e8565b9050613dd7600082613e6a565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e55618033565b613e60848483613f9d565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613ed657600080fd5b505afa158015613295573d6000803e3d6000fd5b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ebe565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ebe9085908590600401618812565b600080613faa8584614018565b905061400d6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613ff8929190618837565b60405160208183030381529060405285614024565b9150505b9392505050565b60006140118383614052565b60c081015151600090156140485761404184848460c0015161406d565b9050614011565b6140418484614213565b600061405e83836142fe565b61401183836020015184614024565b60008061407861430a565b9050600061408686836143dd565b9050600061409d8260600151836020015185614883565b905060006140ad83838989614a95565b905060006140ba82615912565b602081015181519192509060030b1561412d578982604001516040516020016140e4929190618859565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614124916004016188da565b60405180910390fd5b60006141706040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615ae1565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141c39084906004016188da565b602060405180830381865afa1580156141e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420491906184b6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906142689087906004016188da565b600060405180830381865afa158015614285573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142ad919081019061890d565b905060006142db82856040516020016142c7929190618942565b604051602081830303815290604052615ce1565b90506001600160a01b038116613e605784846040516020016140e4929190618971565b61216282826000615cf4565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614391908490600401618a1c565b600060405180830381865afa1580156143ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526143d69190810190618742565b9250505090565b61440f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061445a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61446385615df7565b60208201526000614473866161dc565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144dd9190810190618742565b868385602001516040516020016144f79493929190618a63565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061454f9085906004016188da565b600060405180830381865afa15801561456c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145949190810190618742565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906145dc908490600401618b67565b602060405180830381865afa1580156145f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461d91906185c6565b61463257816040516020016140e49190618bb9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614677908490600401618c4b565b600060405180830381865afa158015614694573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146bc9190810190618742565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614703908490600401618c9d565b602060405180830381865afa158015614720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474491906185c6565b156147d9576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061478e908490600401618c9d565b600060405180830381865afa1580156147ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526147d39190810190618742565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016147fe9190618cef565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161482a929190618812565b600060405180830381865afa158015614847573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261486f9190810190618742565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161489f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106148ff576148ff618d5b565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061495357614953618d5b565b60200260200101819052508460405160200161496f9190618d8a565b6040516020818303038152906040528160028151811061499157614991618d5b565b6020026020010181905250826040516020016149ad9190618df6565b604051602081830303815290604052816003815181106149cf576149cf618d5b565b602002602001018190525060006149e582615912565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614a76906040805180820182526000808252602091820152815180830190925284518252808501908201529061645f565b614a8b57856040516020016140e49190618e37565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614ae5565b511590565b614c5957826020015115614ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614124565b8260c0015115614c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614124565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614c7257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614ccd90618ec8565b935060ff1681518110614ce257614ce2618d5b565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d339190618ee7565b604051602081830303815290604052828280614d4e90618ec8565b935060ff1681518110614d6357614d63618d5b565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614db090618ec8565b935060ff1681518110614dc557614dc5618d5b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e1290618ec8565b935060ff1681518110614e2757614e27618d5b565b60200260200101819052508760200151828280614e4390618ec8565b935060ff1681518110614e5857614e58618d5b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ea590618ec8565b935060ff1681518110614eba57614eba618d5b565b602090810291909101015287518282614ed281618ec8565b935060ff1681518110614ee757614ee7618d5b565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f3490618ec8565b935060ff1681518110614f4957614f49618d5b565b6020026020010181905250614f5d466164c0565b8282614f6881618ec8565b935060ff1681518110614f7d57614f7d618d5b565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614fca90618ec8565b935060ff1681518110614fdf57614fdf618d5b565b602002602001018190525086828280614ff790618ec8565b935060ff168151811061500c5761500c618d5b565b60209081029190910101528551156151335760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261505d81618ec8565b935060ff168151811061507257615072618d5b565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150c29089906004016188da565b600060405180830381865afa1580156150df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151079190810190618742565b828261511281618ec8565b935060ff168151811061512757615127618d5b565b60200260200101819052505b8460200151156152035760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261517c81618ec8565b935060ff168151811061519157615191618d5b565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806151de90618ec8565b935060ff16815181106151f3576151f3618d5b565b60200260200101819052506153ca565b61523b614ae08660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152ce5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261527e81618ec8565b935060ff168151811061529357615293618d5b565b60200260200101819052508460a001516040516020016152b39190618d8a565b6040516020818303038152906040528282806151de90618ec8565b8460c0015115801561531157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261530f90511590565b155b156153ca5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261535581618ec8565b935060ff168151811061536a5761536a618d5b565b602002602001018190525061537e88616560565b60405160200161538e9190618d8a565b6040516020818303038152906040528282806153a990618ec8565b935060ff16815181106153be576153be618d5b565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526153fe90511590565b6154935760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261544181618ec8565b935060ff168151811061545657615456618d5b565b6020026020010181905250846040015182828061547290618ec8565b935060ff168151811061548757615487618d5b565b60200260200101819052505b6060850151156155b45760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826154dc81618ec8565b935060ff16815181106154f1576154f1618d5b565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615560573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155889190810190618742565b828261559381618ec8565b935060ff16815181106155a8576155a8618d5b565b60200260200101819052505b60e0850151511561565b5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826155fe81618ec8565b935060ff168151811061561357615613618d5b565b602002602001018190525061562f8560e00151600001516164c0565b828261563a81618ec8565b935060ff168151811061564f5761564f618d5b565b60200260200101819052505b60e085015160200151156157055760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156a881618ec8565b935060ff16815181106156bd576156bd618d5b565b60200260200101819052506156d98560e00151602001516164c0565b82826156e481618ec8565b935060ff16815181106156f9576156f9618d5b565b60200260200101819052505b60e085015160400151156157af5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261575281618ec8565b935060ff168151811061576757615767618d5b565b60200260200101819052506157838560e00151604001516164c0565b828261578e81618ec8565b935060ff16815181106157a3576157a3618d5b565b60200260200101819052505b60e085015160600151156158595760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826157fc81618ec8565b935060ff168151811061581157615811618d5b565b602002602001018190525061582d8560e00151606001516164c0565b828261583881618ec8565b935060ff168151811061584d5761584d618d5b565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158775761587761867a565b6040519080825280602002602001820160405280156158aa57816020015b60608152602001906001900390816158955790505b50905060005b8260ff168160ff16101561590357838160ff16815181106158d3576158d3618d5b565b6020026020010151828260ff16815181106158f0576158f0618d5b565b60209081029190910101526001016158b0565b5093505050505b949350505050565b6159396040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159bf91869101618f52565b600060405180830381865afa1580156159dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a049190810190618742565b90506000615a12868361704f565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a42919061838c565b6000604051808303816000875af1158015615a61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a899190810190618f99565b805190915060030b15801590615aa25750602081015151155b8015615ab15750604081015151155b15614a8b5781600081518110615ac957615ac9618d5b565b60200260200101516040516020016140e4919061904f565b60606000615b168560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b4d9082905b906171a4565b15615caa576000615bca82615bc484615bbe615b908a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171cb565b9061722d565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c2e9082906171a4565b15615c9857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c95905b82906172b2565b90505b615ca1816172d8565b92505050614011565b8215615cc35784846040516020016140e492919061923b565b5050604080516020810190915260008152614011565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d0357505050565b6000615d10848484617341565b90506000615d1d82615912565b602081015181519192509060030b158015615db95750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db990604080518082018252600080825260209182015281518083019092528451825280850190820152615b47565b15615dc657505050505050565b60408201515115615de65781604001516040516020016140e491906192e2565b806040516020016140e49190619340565b60606000615e2c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615e91905b829061645f565b15615f0057604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb9083906178dc565b6172d8565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f62905b8290617966565b60010361602f57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc890615c8e565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb905b83906172b2565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608e90615e8a565b156161c557604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906160f6908390617a00565b90506000816001835161610991906193ab565b8151811061611957616119618d5b565b602002602001015190506161bc615efb61618f6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906178dc565b95945050505050565b826040516020016140e491906193be565b50919050565b606060006162118360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061627390615e8a565b1561628157614011816172d8565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162e090615f5b565b60010361634a57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261401190615efb90616028565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163a990615e8a565b156161c557604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616411908390617a00565b905060018151111561644d57806002825161642c91906193ab565b8151811061643c5761643c618d5b565b602002602001015192505050919050565b50826040516020016140e491906193be565b80518251600091111561647457506000613e64565b8151835160208501516000929161648a916187ff565b61649491906193ab565b9050826020015181036164ab576001915050613e64565b82516020840151819020912014905092915050565b606060006164cd83617aa5565b600101905060008167ffffffffffffffff8111156164ed576164ed61867a565b6040519080825280601f01601f191660200182016040528015616517576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461652157509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916165ec905b8290617b87565b1561662c57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668b906165e5565b156166cb57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672a906165e5565b1561676a57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c9906165e5565b8061682e5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e906165e5565b1561686e57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd906165e5565b806169325750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616932906165e5565b1561697257505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d1906165e5565b80616a365750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a36906165e5565b15616a7657505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ad5906165e5565b80616b3a5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3a906165e5565b15616b7a57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bd9906165e5565b15616c1957505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c78906165e5565b15616cb857505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d17906165e5565b15616d5757505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616db6906165e5565b15616df657505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e55906165e5565b15616e9557505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ef4906165e5565b80616f595750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f59906165e5565b15616f9957505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ff8906165e5565b1561703857505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516140e4929060200161949c565b60608060005b84518110156170da578185828151811061707157617071618d5b565b602002602001015160405160200161708a929190618942565b6040516020818303038152906040529150600185516170a991906193ab565b81146170d257816040516020016170c09190619605565b60405160208183030381529060405291505b600101617055565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816170f3579050509050838160008151811061711e5761711e618d5b565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061717257617172618d5b565b6020026020010181905250818160028151811061719157617191618d5b565b6020908102919091010152949350505050565b60208083015183518351928401516000936171c29291849190617b9b565b14159392505050565b604080518082019091526000808252602082015260006171fd8460000151856020015185600001518660200151617cac565b905083602001518161720f91906193ab565b8451859061721e9083906193ab565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617252575081613e64565b60208083015190840151600191146172795750815160208481015190840151829020919020145b80156172aa578251845185906172909083906193ab565b90525082516020850180516172a69083906187ff565b9052505b509192915050565b60408051808201909152600080825260208201526172d1838383617dcc565b5092915050565b60606000826000015167ffffffffffffffff8111156172f9576172f961867a565b6040519080825280601f01601f191660200182016040528015617323576020820181803683370190505b50905060006020820190506172d18185602001518660000151617e77565b6060600061734d61430a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161736a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173c590618ec8565b935060ff16815181106173da576173da618d5b565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161742b9190619646565b60405160208183030381529060405282828061744690618ec8565b935060ff168151811061745b5761745b618d5b565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174a890618ec8565b935060ff16815181106174bd576174bd618d5b565b6020026020010181905250826040516020016174d99190618df6565b6040516020818303038152906040528282806174f490618ec8565b935060ff168151811061750957617509618d5b565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061755690618ec8565b935060ff168151811061756b5761756b618d5b565b60200260200101819052506175808784617ef1565b828261758b81618ec8565b935060ff16815181106175a0576175a0618d5b565b60209081029190910101528551511561764c5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826175f281618ec8565b935060ff168151811061760757617607618d5b565b6020026020010181905250617620866000015184617ef1565b828261762b81618ec8565b935060ff168151811061764057617640618d5b565b60200260200101819052505b8560800151156176ba5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261769581618ec8565b935060ff16815181106176aa576176aa618d5b565b6020026020010181905250617720565b84156177205760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826176ff81618ec8565b935060ff168151811061771457617714618d5b565b60200260200101819052505b604086015151156177bc5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261776a81618ec8565b935060ff168151811061777f5761777f618d5b565b6020026020010181905250856040015182828061779b90618ec8565b935060ff16815181106177b0576177b0618d5b565b60200260200101819052505b8560600151156178265760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261780581618ec8565b935060ff168151811061781a5761781a618d5b565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178445761784461867a565b60405190808252806020026020018201604052801561787757816020015b60608152602001906001900390816178625790505b50905060005b8260ff168160ff1610156178d057838160ff16815181106178a0576178a0618d5b565b6020026020010151828260ff16815181106178bd576178bd618d5b565b602090810291909101015260010161787d565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617901575081613e64565b81518351602085015160009291617917916187ff565b61792191906193ab565b60208401519091506001908214617942575082516020840151819020908220145b801561795d578351855186906179599083906193ab565b9052505b50929392505050565b600080826000015161798a8560000151866020015186600001518760200151617cac565b61799491906187ff565b90505b835160208501516179a891906187ff565b81116172d157816179b88161968b565b92505082600001516179ef8560200151836179d391906193ab565b86516179df91906193ab565b8386600001518760200151617cac565b6179f991906187ff565b9050617997565b60606000617a0e8484617966565b617a199060016187ff565b67ffffffffffffffff811115617a3157617a3161867a565b604051908082528060200260200182016040528015617a6457816020015b6060815260200190600190039081617a4f5790505b50905060005b8151811015615cd957617a80615efb86866172b2565b828281518110617a9257617a92618d5b565b6020908102919091010152600101617a6a565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617aee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b1a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b3857662386f26fc10000830492506010015b6305f5e1008310617b50576305f5e100830492506008015b6127108310617b6457612710830492506004015b60648310617b76576064830492506002015b600a8310613e645760010192915050565b6000617b938383617f31565b159392505050565b600080858411617ca25760208411617c4e5760008415617be6576001617bc28660206193ab565b617bcd9060086196a5565b617bd89060026197a3565b617be291906193ab565b1990505b8351811685617bf589896187ff565b617bff91906193ab565b805190935082165b818114617c3957878411617c21578794505050505061590a565b83617c2b816197af565b945050828451169050617c07565b617c4387856187ff565b94505050505061590a565b838320617c5b85886193ab565b617c6590876187ff565b91505b858210617ca057848220808203617c8d57617c8386846187ff565b935050505061590a565b617c986001846193ab565b925050617c68565b505b5092949350505050565b60008381868511617db75760208511617d665760008515617cf8576001617cd48760206193ab565b617cdf9060086196a5565b617cea9060026197a3565b617cf491906193ab565b1990505b84518116600087617d098b8b6187ff565b617d1391906193ab565b855190915083165b828114617d5857818610617d4057617d338b8b6187ff565b965050505050505061590a565b85617d4a8161968b565b965050838651169050617d1b565b85965050505050505061590a565b508383206000905b617d7886896193ab565b8211617db557858320808203617d94578394505050505061590a565b617d9f6001856187ff565b9350508180617dad9061968b565b925050617d6e565b505b617dc187876187ff565b979650505050505050565b60408051808201909152600080825260208201526000617dfe8560000151866020015186600001518760200151617cac565b602080870180519186019190915251909150617e1a90826193ab565b835284516020860151617e2d91906187ff565b8103617e3c5760008552617e6e565b83518351617e4a91906187ff565b85518690617e599083906193ab565b9052508351617e6890826187ff565b60208601525b50909392505050565b60208110617eaf5781518352617e8e6020846187ff565b9250617e9b6020836187ff565b9150617ea86020826193ab565b9050617e77565b6000198115617ede576001617ec58360206193ab565b617ed1906101006197a3565b617edb91906193ab565b90505b9151835183169219169190911790915250565b60606000617eff84846143dd565b8051602080830151604051939450617f19939091016197c6565b60405160208183030381529060405291505092915050565b8151815160009190811115617f44575081515b6020808501519084015160005b83811015617ffd5782518251808214617fcd576000196020871015617fac57600184617f7e8960206193ab565b617f8891906187ff565b617f939060086196a5565b617f9e9060026197a3565b617fa891906193ab565b1990505b8181168382168181039114617fca579750613e649650505050505050565b50505b617fd86020866187ff565b9450617fe56020856187ff565b93505050602081617ff691906187ff565b9050617f51565b5084518651614a8b919061981e565b610b678061983f83390190565b61106f8061a3a683390190565b611ac28061b41583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161807661807b565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180766040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561812d5783516001600160a01b0316835260209384019390920191600101618106565b509095945050505050565b60005b8381101561815357818101518382015260200161813b565b50506000910152565b60008151808452618174816020860160208601618138565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561826a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261825484865161815c565b602095860195909450929092019160010161821a565b5091975050506020948501949290920191506001016181b0565b50929695505050505050565b600081518084526020840193506020830160005b828110156182e45781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182a4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261835a604088018261815c565b90506020820151915086810360208801526183758183618290565b965050506020938401939190910190600101618316565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526183ee85835161815c565b945060209384019391909101906001016183b4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184846040870182618290565b955050602093840193919091019060010161842b565b80516001600160a01b03811681146184b157600080fd5b919050565b6000602082840312156184c857600080fd5b6140118261849a565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061858b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185ac60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b6000602082840312156185d857600080fd5b8151801515811461401157600080fd5b6000602082840312156185fa57600080fd5b5051919050565b600181811c9082168061861557607f821691505b6020821081036161d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561866157600080fd5b61866a8361849a565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186cc576186cc61867a565b60405290565b60008067ffffffffffffffff8411156186ed576186ed61867a565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561871c5761871c61867a565b60405283815290508082840185101561873457600080fd5b615cd9846020830185618138565b60006020828403121561875457600080fd5b815167ffffffffffffffff81111561876b57600080fd5b8201601f8101841361877c57600080fd5b613e60848251602084016186d2565b60006020828403121561879d57600080fd5b815160ff8116811461401157600080fd5b6040815260006187c1604083018561815c565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e6457613e646187d0565b604081526000618825604083018561815c565b828103602084015261400d818561815c565b6001600160a01b038316815260406020820152600061590a604083018461815c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161889181601a850160208801618138565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516188ce81601c840160208801618138565b01601c01949350505050565b602081526000614011602083018461815c565b600082601f8301126188fe57600080fd5b614011838351602085016186d2565b60006020828403121561891f57600080fd5b815167ffffffffffffffff81111561893657600080fd5b613e60848285016188ed565b60008351618954818460208801618138565b835190830190618968818360208801618138565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189a981601a850160208801618138565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516189e6816033840160208801618138565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614011608083018461815c565b60008551618a75818460208a01618138565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618aaf816001840160208a01618138565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618aed816002840160208901618138565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b2f816002840160208801618138565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618b7a604083018461815c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618bf181601f850160208701618138565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c5e604083018461815c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cb0604083018461815c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d27816014850160208701618138565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618dc2816001850160208701618138565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e08818460208701618138565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618ebb81604b850160208701618138565b91909101604b0192915050565b600060ff821660ff8103618ede57618ede6187d0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f45816029850160208701618138565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614011608083018461815c565b600060208284031215618fab57600080fd5b815167ffffffffffffffff811115618fc257600080fd5b820160608185031215618fd457600080fd5b618fdc6186a9565b81518060030b8114618fed57600080fd5b8152602082015167ffffffffffffffff81111561900957600080fd5b619015868285016188ed565b602083015250604082015167ffffffffffffffff81111561903557600080fd5b619041868285016188ed565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ad816021850160208701618138565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619299816021850160208801618138565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516192d681602e840160208801618138565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f45816029850160208701618138565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161939e816022850160208701618138565b9190910160220192915050565b81810381811115613e6457613e646187d0565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516193f681600e850160208701618138565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516194d4816018850160208801618138565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161951181601c840160208801618138565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619617818460208701618138565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161967e81601c850160208701618138565b91909101601c0192915050565b6000600019820361969e5761969e6187d0565b5060010190565b8082028115828204841417613e6457613e646187d0565b6001815b60018411156196f7578085048111156196db576196db6187d0565b60018416156196e957908102905b60019390931c9280026196c0565b935093915050565b60008261970e57506001613e64565b8161971b57506000613e64565b8160018114619731576002811461973b57619757565b6001915050613e64565b60ff84111561974c5761974c6187d0565b50506001821b613e64565b5060208310610133831016604e8410600b841016171561977a575081810a613e64565b61978760001984846196bc565b806000190482111561979b5761979b6187d0565b029392505050565b600061401183836196ff565b6000816197be576197be6187d0565b506000190190565b600083516197d8818460208801618138565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619812816001840160208801618138565b01600101949350505050565b81810360008312801583831316838312821617156172d1576172d16187d056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220e5109095beddf85e0dcbd2c9b6984fff8ce98d06e6207d80be32cfcb4e08373d64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf3a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061811a565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181b6565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061831c565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ba565b610325612323565b6040516102759190618431565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e6132bc565b61024e613499565b61024e61374e565b61024e6138aa565b610268613b86565b61024e613be6565b61024e613d5e565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061803a565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e71565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184e4565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618047565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618054565b610845969594939291906184ff565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185f4565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185f4565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618616565b9050610dfc600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185f4565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f9061862f565b80601f016020809104026020016040519081016040528092919081815260200182805461109b9061862f565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184e4565b613211613f18565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061867c565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618616565b613e90565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a9061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546119669061862f565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618616565b9050611b04600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618616565b9050611d47600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185f4565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185f4565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618616565b9050610fd58282613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618616565b9050611fb1620186a082613e90565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185f4565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618616565b905061216262030d4082613e90565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546122969061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061862f565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618770565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618770565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187b9565b905061262360128260ff16613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618616565b90506104d4620186a082613e90565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d49061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546129009061862f565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618616565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e319190618616565b9050612e40620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190618616565b9050612ec8620186a082613e90565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190618616565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906185f4565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613088919061c350906038016187dc565b6020604051808303816000875af11580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb91906185f4565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e9190618616565b905061317e8561316e888561882d565b613178919061882d565b82613e90565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f9190618616565b905061322b866132218961c350618840565b6131789190618840565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190618616565b90506132b261c35082613e90565b5050505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185f4565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b15801561358b57600080fd5b505af115801561359f573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561361557600080fd5b505af1158015613629573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613721919061867c565b601f5491935091506137419061010090046001600160a01b031683613f18565b6104d4613178848661882d565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137c057600080fd5b505af11580156137d4573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393b9190618616565b905061394a620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c39190618616565b90506139d2620186a082613e90565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906185f4565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190618616565b9050613aff61c35082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b789190618616565b90506104d461c35082613e90565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c5857600080fd5b505af1158015613c6c573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df09190618616565b9050613dfd600082613e90565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e7b618061565b613e86848483613fcb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613efc57600080fd5b505afa158015613f10573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ee4565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ee49085908590600401618853565b600080613fd88584614046565b905061403b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614026929190618878565b60405160208183030381529060405285614052565b9150505b9392505050565b600061403f8383614080565b60c081015151600090156140765761406f84848460c0015161409b565b905061403f565b61406f8484614241565b600061408c838361432c565b61403f83836020015184614052565b6000806140a6614338565b905060006140b4868361440b565b905060006140cb82606001518360200151856148b1565b905060006140db83838989614ac3565b905060006140e882615940565b602081015181519192509060030b1561415b5789826040015160405160200161411292919061889a565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141529160040161891b565b60405180910390fd5b600061419e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b0f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141f190849060040161891b565b602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423291906184e4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061429690879060040161891b565b600060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142db919081019061894e565b9050600061430982856040516020016142f5929190618983565b604051602081830303815290604052615d0f565b90506001600160a01b038116613e865784846040516020016141129291906189b2565b61216282826000615d22565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143bf908490600401618a5d565b600060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144049190810190618770565b9250505090565b61443d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144886040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61449185615e25565b602082015260006144a18661620a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450b9190810190618770565b868385602001516040516020016145259493929190618aa4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061457d90859060040161891b565b600060405180830381865afa15801561459a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145c29190810190618770565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061460a908490600401618ba8565b602060405180830381865afa158015614627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464b91906185f4565b61466057816040516020016141129190618bfa565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146a5908490600401618c8c565b600060405180830381865afa1580156146c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ea9190810190618770565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614731908490600401618cde565b602060405180830381865afa15801561474e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477291906185f4565b15614807576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147bc908490600401618cde565b600060405180830381865afa1580156147d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148019190810190618770565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161482c9190618d30565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614858929190618853565b600060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261489d9190810190618770565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816148cd5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061492d5761492d618d9c565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061498157614981618d9c565b60200260200101819052508460405160200161499d9190618dcb565b604051602081830303815290604052816002815181106149bf576149bf618d9c565b6020026020010181905250826040516020016149db9190618e37565b604051602081830303815290604052816003815181106149fd576149fd618d9c565b60200260200101819052506000614a1382615940565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614aa4906040805180820182526000808252602091820152815180830190925284518252808501908201529061648d565b614ab957856040516020016141129190618e78565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b13565b511590565b614c8757826020015115614bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614152565b8260c0015115614c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614152565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614ca057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614cfb90618f09565b935060ff1681518110614d1057614d10618d9c565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d619190618f28565b604051602081830303815290604052828280614d7c90618f09565b935060ff1681518110614d9157614d91618d9c565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614dde90618f09565b935060ff1681518110614df357614df3618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e4090618f09565b935060ff1681518110614e5557614e55618d9c565b60200260200101819052508760200151828280614e7190618f09565b935060ff1681518110614e8657614e86618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ed390618f09565b935060ff1681518110614ee857614ee8618d9c565b602090810291909101015287518282614f0081618f09565b935060ff1681518110614f1557614f15618d9c565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f6290618f09565b935060ff1681518110614f7757614f77618d9c565b6020026020010181905250614f8b466164ee565b8282614f9681618f09565b935060ff1681518110614fab57614fab618d9c565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614ff890618f09565b935060ff168151811061500d5761500d618d9c565b60200260200101819052508682828061502590618f09565b935060ff168151811061503a5761503a618d9c565b60209081029190910101528551156151615760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261508b81618f09565b935060ff16815181106150a0576150a0618d9c565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150f090899060040161891b565b600060405180830381865afa15801561510d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151359190810190618770565b828261514081618f09565b935060ff168151811061515557615155618d9c565b60200260200101819052505b8460200151156152315760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151aa81618f09565b935060ff16815181106151bf576151bf618d9c565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061520c90618f09565b935060ff168151811061522157615221618d9c565b60200260200101819052506153f8565b615269614b0e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152fc5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152ac81618f09565b935060ff16815181106152c1576152c1618d9c565b60200260200101819052508460a001516040516020016152e19190618dcb565b60405160208183030381529060405282828061520c90618f09565b8460c0015115801561533f57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261533d90511590565b155b156153f85760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261538381618f09565b935060ff168151811061539857615398618d9c565b60200260200101819052506153ac8861658e565b6040516020016153bc9190618dcb565b6040516020818303038152906040528282806153d790618f09565b935060ff16815181106153ec576153ec618d9c565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261542c90511590565b6154c15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261546f81618f09565b935060ff168151811061548457615484618d9c565b602002602001018190525084604001518282806154a090618f09565b935060ff16815181106154b5576154b5618d9c565b60200260200101819052505b6060850151156155e25760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261550a81618f09565b935060ff168151811061551f5761551f618d9c565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561558e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155b69190810190618770565b82826155c181618f09565b935060ff16815181106155d6576155d6618d9c565b60200260200101819052505b60e085015151156156895760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261562c81618f09565b935060ff168151811061564157615641618d9c565b602002602001018190525061565d8560e00151600001516164ee565b828261566881618f09565b935060ff168151811061567d5761567d618d9c565b60200260200101819052505b60e085015160200151156157335760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156d681618f09565b935060ff16815181106156eb576156eb618d9c565b60200260200101819052506157078560e00151602001516164ee565b828261571281618f09565b935060ff168151811061572757615727618d9c565b60200260200101819052505b60e085015160400151156157dd5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261578081618f09565b935060ff168151811061579557615795618d9c565b60200260200101819052506157b18560e00151604001516164ee565b82826157bc81618f09565b935060ff16815181106157d1576157d1618d9c565b60200260200101819052505b60e085015160600151156158875760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261582a81618f09565b935060ff168151811061583f5761583f618d9c565b602002602001018190525061585b8560e00151606001516164ee565b828261586681618f09565b935060ff168151811061587b5761587b618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158a5576158a56186a8565b6040519080825280602002602001820160405280156158d857816020015b60608152602001906001900390816158c35790505b50905060005b8260ff168160ff16101561593157838160ff168151811061590157615901618d9c565b6020026020010151828260ff168151811061591e5761591e618d9c565b60209081029190910101526001016158de565b5093505050505b949350505050565b6159676040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159ed91869101618f93565b600060405180830381865afa158015615a0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a329190810190618770565b90506000615a40868361707d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a7091906183ba565b6000604051808303816000875af1158015615a8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ab79190810190618fda565b805190915060030b15801590615ad05750602081015151155b8015615adf5750604081015151155b15614ab95781600081518110615af757615af7618d9c565b60200260200101516040516020016141129190619090565b60606000615b448560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b7b9082905b906171d2565b15615cd8576000615bf882615bf284615bec615bbe8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171f9565b9061725b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c5c9082906171d2565b15615cc657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cc3905b82906172e0565b90505b615ccf81617306565b9250505061403f565b8215615cf157848460405160200161411292919061927c565b505060408051602081019091526000815261403f565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d3157505050565b6000615d3e84848461736f565b90506000615d4b82615940565b602081015181519192509060030b158015615de75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615de790604080518082018252600080825260209182015281518083019092528451825280850190820152615b75565b15615df457505050505050565b60408201515115615e145781604001516040516020016141129190619323565b806040516020016141129190619381565b60606000615e5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ebf905b829061648d565b15615f2e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990839061790a565b617306565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f90905b8290617994565b60010361605d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff690615cbc565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f29905b83906172e0565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bc90615eb8565b156161f357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616124908390617a2e565b9050600081600183516161379190618840565b8151811061614757616147618d9c565b602002602001015190506161ea615f296161bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061790a565b95945050505050565b8260405160200161411291906193ec565b50919050565b6060600061623f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162a190615eb8565b156162af5761403f81617306565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261630e90615f89565b60010361637857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990616056565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d790615eb8565b156161f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061643f908390617a2e565b905060018151111561647b57806002825161645a9190618840565b8151811061646a5761646a618d9c565b602002602001015192505050919050565b508260405160200161411291906193ec565b8051825160009111156164a257506000613e8a565b815183516020850151600092916164b89161882d565b6164c29190618840565b9050826020015181036164d9576001915050613e8a565b82516020840151819020912014905092915050565b606060006164fb83617ad3565b600101905060008167ffffffffffffffff81111561651b5761651b6186a8565b6040519080825280601f01601f191660200182016040528015616545576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461654f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161661a905b8290617bb5565b1561665a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b990616613565b156166f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261675890616613565b1561679857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f790616613565b8061685c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685c90616613565b1561689c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fb90616613565b806169605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696090616613565b156169a057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ff90616613565b80616a645750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6490616613565b15616aa457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b0390616613565b80616b685750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b6890616613565b15616ba857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c0790616613565b15616c4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ca690616613565b15616ce657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d4590616613565b15616d8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616de490616613565b15616e2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e8390616613565b15616ec357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f2290616613565b80616f875750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f8790616613565b15616fc757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261702690616613565b1561706657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161411292906020016194ca565b60608060005b8451811015617108578185828151811061709f5761709f618d9c565b60200260200101516040516020016170b8929190618983565b6040516020818303038152906040529150600185516170d79190618840565b811461710057816040516020016170ee9190619633565b60405160208183030381529060405291505b600101617083565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617121579050509050838160008151811061714c5761714c618d9c565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171a0576171a0618d9c565b602002602001018190525081816002815181106171bf576171bf618d9c565b6020908102919091010152949350505050565b60208083015183518351928401516000936171f09291849190617bc9565b14159392505050565b6040805180820190915260008082526020820152600061722b8460000151856020015185600001518660200151617cda565b905083602001518161723d9190618840565b8451859061724c908390618840565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617280575081613e8a565b60208083015190840151600191146172a75750815160208481015190840151829020919020145b80156172d8578251845185906172be908390618840565b90525082516020850180516172d490839061882d565b9052505b509192915050565b60408051808201909152600080825260208201526172ff838383617dfa565b5092915050565b60606000826000015167ffffffffffffffff811115617327576173276186a8565b6040519080825280601f01601f191660200182016040528015617351576020820181803683370190505b50905060006020820190506172ff8185602001518660000151617ea5565b6060600061737b614338565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161739857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173f390618f09565b935060ff168151811061740857617408618d9c565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016174599190619674565b60405160208183030381529060405282828061747490618f09565b935060ff168151811061748957617489618d9c565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174d690618f09565b935060ff16815181106174eb576174eb618d9c565b6020026020010181905250826040516020016175079190618e37565b60405160208183030381529060405282828061752290618f09565b935060ff168151811061753757617537618d9c565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061758490618f09565b935060ff168151811061759957617599618d9c565b60200260200101819052506175ae8784617f1f565b82826175b981618f09565b935060ff16815181106175ce576175ce618d9c565b60209081029190910101528551511561767a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261762081618f09565b935060ff168151811061763557617635618d9c565b602002602001018190525061764e866000015184617f1f565b828261765981618f09565b935060ff168151811061766e5761766e618d9c565b60200260200101819052505b8560800151156176e85760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176c381618f09565b935060ff16815181106176d8576176d8618d9c565b602002602001018190525061774e565b841561774e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261772d81618f09565b935060ff168151811061774257617742618d9c565b60200260200101819052505b604086015151156177ea5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261779881618f09565b935060ff16815181106177ad576177ad618d9c565b602002602001018190525085604001518282806177c990618f09565b935060ff16815181106177de576177de618d9c565b60200260200101819052505b8560600151156178545760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261783381618f09565b935060ff168151811061784857617848618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617872576178726186a8565b6040519080825280602002602001820160405280156178a557816020015b60608152602001906001900390816178905790505b50905060005b8260ff168160ff1610156178fe57838160ff16815181106178ce576178ce618d9c565b6020026020010151828260ff16815181106178eb576178eb618d9c565b60209081029190910101526001016178ab565b50979650505050505050565b604080518082019091526000808252602082015281518351101561792f575081613e8a565b815183516020850151600092916179459161882d565b61794f9190618840565b60208401519091506001908214617970575082516020840151819020908220145b801561798b57835185518690617987908390618840565b9052505b50929392505050565b60008082600001516179b88560000151866020015186600001518760200151617cda565b6179c2919061882d565b90505b835160208501516179d6919061882d565b81116172ff57816179e6816196b9565b9250508260000151617a1d856020015183617a019190618840565b8651617a0d9190618840565b8386600001518760200151617cda565b617a27919061882d565b90506179c5565b60606000617a3c8484617994565b617a4790600161882d565b67ffffffffffffffff811115617a5f57617a5f6186a8565b604051908082528060200260200182016040528015617a9257816020015b6060815260200190600190039081617a7d5790505b50905060005b8151811015615d0757617aae615f2986866172e0565b828281518110617ac057617ac0618d9c565b6020908102919091010152600101617a98565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b48576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b6657662386f26fc10000830492506010015b6305f5e1008310617b7e576305f5e100830492506008015b6127108310617b9257612710830492506004015b60648310617ba4576064830492506002015b600a8310613e8a5760010192915050565b6000617bc18383617f5f565b159392505050565b600080858411617cd05760208411617c7c5760008415617c14576001617bf0866020618840565b617bfb9060086196d3565b617c069060026197d1565b617c109190618840565b1990505b8351811685617c23898961882d565b617c2d9190618840565b805190935082165b818114617c6757878411617c4f5787945050505050615938565b83617c59816197dd565b945050828451169050617c35565b617c71878561882d565b945050505050615938565b838320617c898588618840565b617c93908761882d565b91505b858210617cce57848220808203617cbb57617cb1868461882d565b9350505050615938565b617cc6600184618840565b925050617c96565b505b5092949350505050565b60008381868511617de55760208511617d945760008515617d26576001617d02876020618840565b617d0d9060086196d3565b617d189060026197d1565b617d229190618840565b1990505b84518116600087617d378b8b61882d565b617d419190618840565b855190915083165b828114617d8657818610617d6e57617d618b8b61882d565b9650505050505050615938565b85617d78816196b9565b965050838651169050617d49565b859650505050505050615938565b508383206000905b617da68689618840565b8211617de357858320808203617dc25783945050505050615938565b617dcd60018561882d565b9350508180617ddb906196b9565b925050617d9c565b505b617def878761882d565b979650505050505050565b60408051808201909152600080825260208201526000617e2c8560000151866020015186600001518760200151617cda565b602080870180519186019190915251909150617e489082618840565b835284516020860151617e5b919061882d565b8103617e6a5760008552617e9c565b83518351617e78919061882d565b85518690617e87908390618840565b9052508351617e96908261882d565b60208601525b50909392505050565b60208110617edd5781518352617ebc60208461882d565b9250617ec960208361882d565b9150617ed6602082618840565b9050617ea5565b6000198115617f0c576001617ef3836020618840565b617eff906101006197d1565b617f099190618840565b90505b9151835183169219169190911790915250565b60606000617f2d848461440b565b8051602080830151604051939450617f47939091016197f4565b60405160208183030381529060405291505092915050565b8151815160009190811115617f72575081515b6020808501519084015160005b8381101561802b5782518251808214617ffb576000196020871015617fda57600184617fac896020618840565b617fb6919061882d565b617fc19060086196d3565b617fcc9060026197d1565b617fd69190618840565b1990505b8181168382168181039114617ff8579750613e8a9650505050505050565b50505b61800660208661882d565b945061801360208561882d565b93505050602081618024919061882d565b9050617f7f565b5084518651614ab9919061984c565b610b678061986d83390190565b61106f8061a3d483390190565b611ac28061b44383390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180a46180a9565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180a46040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561815b5783516001600160a01b0316835260209384019390920191600101618134565b509095945050505050565b60005b83811015618181578181015183820152602001618169565b50506000910152565b600081518084526181a2816020860160208601618166565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618298577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261828284865161818a565b6020958601959094509290920191600101618248565b5091975050506020948501949290920191506001016181de565b50929695505050505050565b600081518084526020840193506020830160005b828110156183125781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182d2565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618388604088018261818a565b90506020820151915086810360208801526183a381836182be565b965050506020938401939190910190600101618344565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261841c85835161818a565b945060209384019391909101906001016183e2565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184b260408701826182be565b9550506020938401939190910190600101618459565b80516001600160a01b03811681146184df57600080fd5b919050565b6000602082840312156184f657600080fd5b61403f826184c8565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185da60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561860657600080fd5b8151801515811461403f57600080fd5b60006020828403121561862857600080fd5b5051919050565b600181811c9082168061864357607f821691505b602082108103616204577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561868f57600080fd5b618698836184c8565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186fa576186fa6186a8565b60405290565b60008067ffffffffffffffff84111561871b5761871b6186a8565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561874a5761874a6186a8565b60405283815290508082840185101561876257600080fd5b615d07846020830185618166565b60006020828403121561878257600080fd5b815167ffffffffffffffff81111561879957600080fd5b8201601f810184136187aa57600080fd5b613e8684825160208401618700565b6000602082840312156187cb57600080fd5b815160ff8116811461403f57600080fd5b6040815260006187ef604083018561818a565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e8a57613e8a6187fe565b81810381811115613e8a57613e8a6187fe565b604081526000618866604083018561818a565b828103602084015261403b818561818a565b6001600160a01b0383168152604060208201526000615938604083018461818a565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d281601a850160208801618166565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161890f81601c840160208801618166565b01601c01949350505050565b60208152600061403f602083018461818a565b600082601f83011261893f57600080fd5b61403f83835160208501618700565b60006020828403121561896057600080fd5b815167ffffffffffffffff81111561897757600080fd5b613e868482850161892e565b60008351618995818460208801618166565b8351908301906189a9818360208801618166565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189ea81601a850160208801618166565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a27816033840160208801618166565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061403f608083018461818a565b60008551618ab6818460208a01618166565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618af0816001840160208a01618166565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b2e816002840160208901618166565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b70816002840160208801618166565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bbb604083018461818a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c3281601f850160208701618166565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c9f604083018461818a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cf1604083018461818a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d68816014850160208701618166565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e03816001850160208701618166565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e49818460208701618166565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618efc81604b850160208701618166565b91909101604b0192915050565b600060ff821660ff8103618f1f57618f1f6187fe565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061403f608083018461818a565b600060208284031215618fec57600080fd5b815167ffffffffffffffff81111561900357600080fd5b82016060818503121561901557600080fd5b61901d6186d7565b81518060030b811461902e57600080fd5b8152602082015167ffffffffffffffff81111561904a57600080fd5b6190568682850161892e565b602083015250604082015167ffffffffffffffff81111561907657600080fd5b6190828682850161892e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ee816021850160208701618166565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192da816021850160208801618166565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161931781602e840160208801618166565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193df816022850160208701618166565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161942481600e850160208701618166565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619502816018850160208801618166565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161953f81601c840160208801618166565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619645818460208701618166565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196ac81601c850160208701618166565b91909101601c0192915050565b600060001982036196cc576196cc6187fe565b5060010190565b8082028115828204841417613e8a57613e8a6187fe565b6001815b600184111561972557808504811115619709576197096187fe565b600184161561971757908102905b60019390931c9280026196ee565b935093915050565b60008261973c57506001613e8a565b8161974957506000613e8a565b816001811461975f576002811461976957619785565b6001915050613e8a565b60ff84111561977a5761977a6187fe565b50506001821b613e8a565b5060208310610133831016604e8410600b84101617156197a8575081810a613e8a565b6197b560001984846196ea565b80600019048211156197c9576197c96187fe565b029392505050565b600061403f838361972d565b6000816197ec576197ec6187fe565b506000190190565b60008351619806818460208801618166565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619840816001840160208801618166565b01600101949350505050565b81810360008312801583831316838312821617156172ff576172ff6187fe56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220eef539b0ff825d0f63f40c6c8fd9d7e1adcffe002c085856a808489b922a082464736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index 0c379dce..b0ecb407 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -142,6 +142,9 @@ contract ZRC20Test is Test, ZRC20Errors { function testWithdrawGasFee() public { vm.prank(fungibleModule); + uint256 gasLimit = 10; + uint256 protocolFlatFee = 10; + zrc20.updateGasLimit(10); vm.prank(fungibleModule); @@ -149,7 +152,7 @@ contract ZRC20Test is Test, ZRC20Errors { (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); assertEq(address(zrc20), gasZRC20); - assertEq(20, gasFee); + assertEq(gasLimit + protocolFlatFee, gasFee); } function testWithdrawGasFeeFailsIfGasCoinNotSetForChainId() public { @@ -169,11 +172,14 @@ contract ZRC20Test is Test, ZRC20Errors { } function testWithdraw() public { + uint256 gasLimit = 10; + uint256 protocolFlatFee = 10; + vm.prank(fungibleModule); - zrc20.updateGasLimit(10); + zrc20.updateGasLimit(gasLimit); vm.prank(fungibleModule); - zrc20.updateProtocolFlatFee(10); + zrc20.updateProtocolFlatFee(protocolFlatFee); uint256 balanceStart = zrc20.balanceOf(owner); assertEq(100_000, balanceStart); @@ -186,10 +192,10 @@ contract ZRC20Test is Test, ZRC20Errors { zrc20.withdraw(abi.encodePacked(addr1), 50_000); uint256 fungibleModuleBalanceAfter = zrc20.balanceOf(fungibleModule); - assertEq(fungibleModuleBalanceStart + 20, fungibleModuleBalanceAfter); + assertEq(fungibleModuleBalanceStart + gasLimit + protocolFlatFee, fungibleModuleBalanceAfter); uint256 balanceAfter = zrc20.balanceOf(owner); - assertEq(50_000 - 20, balanceAfter); + assertEq(50_000 - gasLimit - protocolFlatFee, balanceAfter); uint256 totalSupplyAfter = zrc20.totalSupply(); assertEq(50_000, totalSupplyAfter); } From 74e73347c37565e0bba6071b5963510728348d25 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 15:59:10 +0200 Subject: [PATCH 52/60] try to fix slither not running in v2 folder --- .github/workflows/slither_v2.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml index 1b855a03..dda35a51 100644 --- a/.github/workflows/slither_v2.yaml +++ b/.github/workflows/slither_v2.yaml @@ -56,6 +56,7 @@ jobs: sarif: results.sarif node-version: "21.1.0" fail-on: none + target: "v2/" - name: Upload SARIF file uses: github/codeql-action/upload-sarif@v3 From 4740c65c15d6d9aca0d35f43c7054dadfa632d1d Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 16:28:38 +0200 Subject: [PATCH 53/60] add slither config --- .github/workflows/slither_v2.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml index dda35a51..bd5ec99e 100644 --- a/.github/workflows/slither_v2.yaml +++ b/.github/workflows/slither_v2.yaml @@ -55,6 +55,7 @@ jobs: with: sarif: results.sarif node-version: "21.1.0" + slither-config: "v2/slither.config.json" fail-on: none target: "v2/" From 7c6080aff92a187c36c67dd692b30dc6b344a412 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 16:35:23 +0200 Subject: [PATCH 54/60] test --- v2/test/ZRC20.t.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index b0ecb407..3f874c61 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -180,6 +180,7 @@ contract ZRC20Test is Test, ZRC20Errors { vm.prank(fungibleModule); zrc20.updateProtocolFlatFee(protocolFlatFee); + uint256 balanceStart = zrc20.balanceOf(owner); assertEq(100_000, balanceStart); From c1e759d14e99ad234cf1e6cbc785dc27b09c8e14 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 16:41:51 +0200 Subject: [PATCH 55/60] fix solc version --- .github/workflows/slither_v2.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml index bd5ec99e..ad18dd3c 100644 --- a/.github/workflows/slither_v2.yaml +++ b/.github/workflows/slither_v2.yaml @@ -56,6 +56,7 @@ jobs: sarif: results.sarif node-version: "21.1.0" slither-config: "v2/slither.config.json" + solc-version: "0.8.26" fail-on: none target: "v2/" From 03933980e07075bf97b5f41e33c53c5c89947fc8 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 17:23:59 +0200 Subject: [PATCH 56/60] fix some slither issues --- v2/src/evm/ERC20Custody.sol | 8 ++--- v2/src/evm/GatewayEVM.sol | 12 ++++--- v2/src/evm/ZetaConnectorBase.sol | 3 -- v2/src/evm/ZetaConnectorNonNative.sol | 1 - v2/src/evm/interfaces/IGatewayEVM.sol | 38 ++++++++++++++++++++ v2/src/zevm/GatewayZEVM.sol | 7 ++-- v2/src/zevm/ZRC20.sol | 9 +++-- v2/src/zevm/interfaces/IGatewayZEVM.sol | 46 +++++++++++++++++++++++++ 8 files changed, 101 insertions(+), 23 deletions(-) diff --git a/v2/src/evm/ERC20Custody.sol b/v2/src/evm/ERC20Custody.sol index b7e948e2..387754fb 100644 --- a/v2/src/evm/ERC20Custody.sol +++ b/v2/src/evm/ERC20Custody.sol @@ -17,10 +17,7 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua using SafeERC20 for IERC20; /// @notice Gateway contract. - IGatewayEVM public gateway; - /// @notice TSS address. - address public tssAddress; - + IGatewayEVM public immutable gateway; /// @notice New role identifier for pauser role. bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); /// @notice New role identifier for withdrawer role. @@ -29,11 +26,10 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua /// @notice Constructor for ERC20Custody. /// @dev Set admin as default admin and pauser, and tssAddress as tss role. constructor(address _gateway, address _tssAddress, address _admin) { - if (_gateway == address(0) || _tssAddress == address(0)) { + if (_gateway == address(0) || _tssAddress == address(0) || _admin == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); - tssAddress = _tssAddress; _grantRole(DEFAULT_ADMIN_ROLE, _admin); _grantRole(PAUSER_ROLE, _admin); _grantRole(WITHDRAWER_ROLE, _tssAddress); diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index 3959fae7..b110cd23 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -19,6 +19,7 @@ contract GatewayEVM is Initializable, AccessControlUpgradeable, UUPSUpgradeable, + IGatewayEVM, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable, @@ -96,7 +97,8 @@ contract GatewayEVM is /// @param destination Address to call. /// @param data Calldata to pass to the call. function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) whenNotPaused { - (bool success, bytes memory result) = destination.call{ value: msg.value }(""); + if (destination == address(0)) revert ZeroAddress(); + (bool success,) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -193,7 +195,7 @@ contract GatewayEVM is if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); - if (deposited == false) revert DepositFailed(); + if (!deposited) revert DepositFailed(); emit Deposit(msg.sender, receiver, msg.value, address(0), ""); } @@ -217,7 +219,7 @@ contract GatewayEVM is if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); - if (deposited == false) revert DepositFailed(); + if (!deposited) revert DepositFailed(); emit Deposit(msg.sender, receiver, msg.value, address(0), payload); } @@ -291,7 +293,7 @@ contract GatewayEVM is // transfer amount to gateway IERC20(token).safeTransferFrom(from, address(this), amount); // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); + if (!IERC20(token).approve(zetaConnector, amount)) revert ApprovalFailed(); // send tokens to connector ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { @@ -309,7 +311,7 @@ contract GatewayEVM is if (token == zetaToken) { // transfer to connector // approve connector to handle tokens depending on connector version (eg. lock or burn) - IERC20(token).approve(zetaConnector, amount); + if (!IERC20(token).approve(zetaConnector, amount)) revert ApprovalFailed(); // send tokens to connector ZetaConnectorBase(zetaConnector).receiveTokens(amount); } else { diff --git a/v2/src/evm/ZetaConnectorBase.sol b/v2/src/evm/ZetaConnectorBase.sol index 5aa31bf6..d9adeb35 100644 --- a/v2/src/evm/ZetaConnectorBase.sol +++ b/v2/src/evm/ZetaConnectorBase.sol @@ -23,8 +23,6 @@ abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard, Pa IGatewayEVM public immutable gateway; /// @notice The address of the Zeta token. address public immutable zetaToken; - /// @notice The address of the TSS (Threshold Signature Scheme) contract. - address public tssAddress; /// @notice New role identifier for withdrawer role. bytes32 public constant WITHDRAWER_ROLE = keccak256("WITHDRAWER_ROLE"); @@ -39,7 +37,6 @@ abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard, Pa } gateway = IGatewayEVM(_gateway); zetaToken = _zetaToken; - tssAddress = _tssAddress; _grantRole(DEFAULT_ADMIN_ROLE, _admin); _grantRole(WITHDRAWER_ROLE, _tssAddress); diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index 65605f79..8785667d 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -3,7 +3,6 @@ pragma solidity 0.8.26; import "./ZetaConnectorBase.sol"; import "./interfaces/IZetaNonEthNew.sol"; -import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; /// @title ZetaConnectorNonNative /// @notice Implementation of ZetaConnectorBase for non-native token handling. diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index c752d054..640584da 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -80,6 +80,12 @@ interface IGatewayEVM { /// @param data The calldata to pass to the contract call. function executeWithERC20(address token, address to, uint256 amount, bytes calldata data) external; + /// @notice Transfers msg.value to destination contract and executes it's onRevert function. + /// @dev This function can only be called by the TSS address and it is payable. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + function executeRevert(address destination, bytes calldata data) external payable; + /// @notice Executes a call to a contract. /// @param destination The address of the contract to call. /// @param data The calldata to pass to the contract call. @@ -92,6 +98,38 @@ interface IGatewayEVM { /// @param amount The amount of tokens to transfer. /// @param data The calldata to pass to the contract call. function revertWithERC20(address token, address to, uint256 amount, bytes calldata data) external; + + /// @notice Deposits ETH to the TSS address. + /// @param receiver Address of the receiver. + function deposit(address receiver) external payable; + + /// @notice Deposits ERC20 tokens to the custody or connector contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. + function deposit(address receiver, uint256 amount, address asset) external; + + /// @notice Deposits ETH to the TSS address and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. + function depositAndCall(address receiver, bytes calldata payload) external payable; + + /// @notice Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. + /// @param payload Calldata to pass to the call. + function depositAndCall( + address receiver, + uint256 amount, + address asset, + bytes calldata payload + ) external; + + /// @notice Calls an omnichain smart contract without asset transfer. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. + function call(address receiver, bytes calldata payload) external; } /// @title Revertable diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index 61ecec1a..444727cd 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -16,6 +16,7 @@ import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol /// @notice The GatewayZEVM contract is the endpoint to call smart contracts on omnichain. /// @dev The contract doesn't hold any funds and should never have active allowances. contract GatewayZEVM is + IGatewayZEVM, IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, @@ -182,7 +183,7 @@ contract GatewayZEVM is function deposit(address zrc20, uint256 amount, address target) external onlyFungible whenNotPaused { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - IZRC20(zrc20).deposit(target, amount); + if (!IZRC20(zrc20).deposit(target, amount)) revert ZRC20DepositFailed(); } /// @notice Execute a user-specified contract on ZEVM. @@ -224,7 +225,7 @@ contract GatewayZEVM is { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - IZRC20(zrc20).deposit(target, amount); + if (!IZRC20(zrc20).deposit(target, amount)) revert ZRC20DepositFailed(); UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } @@ -288,7 +289,7 @@ contract GatewayZEVM is { if (target == FUNGIBLE_MODULE_ADDRESS || target == address(this)) revert InvalidTarget(); - IZRC20(zrc20).deposit(target, amount); + if (!IZRC20(zrc20).deposit(target, amount)) revert ZRC20DepositFailed(); UniversalContract(target).onRevert(context, zrc20, amount, message); } } diff --git a/v2/src/zevm/ZRC20.sol b/v2/src/zevm/ZRC20.sol index bfdd67ca..fa0a0149 100644 --- a/v2/src/zevm/ZRC20.sol +++ b/v2/src/zevm/ZRC20.sol @@ -42,16 +42,12 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { uint256 private _totalSupply; string private _name; string private _symbol; - uint8 private _decimals; + uint8 private immutable _decimals; function _msgSender() internal view virtual returns (address) { return msg.sender; } - function _msgData() internal view virtual returns (bytes calldata) { - return msg.data; - } - /** * @dev Only fungible module modifier. */ @@ -74,6 +70,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { address gatewayAddress_ ) { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) revert CallerIsNotFungibleModule(); + if (systemContractAddress_ == address(0) || gatewayAddress_ == address(0)) revert ZeroAddress(); _name = name_; _symbol = symbol_; _decimals = decimals_; @@ -279,6 +276,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @param addr, new system contract address. */ function updateSystemContractAddress(address addr) external onlyFungible { + if (addr == address(0)) revert ZeroAddress(); systemContractAddress = addr; emit UpdatedSystemContract(addr); } @@ -288,6 +286,7 @@ contract ZRC20 is IZRC20Metadata, ZRC20Errors, ZRC20Events { * @param addr, new gateway contract address. */ function updateGatewayAddress(address addr) external onlyFungible { + if (addr == address(0)) revert ZeroAddress(); gatewayAddress = addr; emit UpdatedGateway(addr); } diff --git a/v2/src/zevm/interfaces/IGatewayZEVM.sol b/v2/src/zevm/interfaces/IGatewayZEVM.sol index 6d7c2a19..aef95977 100644 --- a/v2/src/zevm/interfaces/IGatewayZEVM.sol +++ b/v2/src/zevm/interfaces/IGatewayZEVM.sol @@ -71,6 +71,49 @@ interface IGatewayZEVM { bytes calldata message ) external; + + /// @notice Deposit ZETA and call a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. + function depositAndCall( + zContext calldata context, + uint256 amount, + address target, + bytes calldata message + ) + external; + + /// @notice Revert a user-specified contract on ZEVM. + /// @param context The context of the revert call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to revert. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. + function executeRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) + external; + + /// @notice Deposit foreign coins into ZRC20 and revert a user-specified contract on ZEVM. + /// @param context The context of the revert call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to revert. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. + function depositAndRevert( + revertContext calldata context, + address zrc20, + uint256 amount, + address target, + bytes calldata message + ) + external; } /// @title IGatewayZEVMEvents @@ -119,6 +162,9 @@ interface IGatewayZEVMErrors { /// @notice Error indicating a failure to transfer ZRC20 tokens. error ZRC20TransferFailed(); + /// @notice Error indicating a failure to deposit ZRC20 tokens. + error ZRC20DepositFailed(); + /// @notice Error indicating a failure to transfer gas fee. error GasFeeTransferFailed(); From bd903e5d9c70505d6d45df47f85667561e87f13c Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 17:50:13 +0200 Subject: [PATCH 57/60] fix more issues --- v1/contracts/evm/ZetaConnector.non-eth.sol | 6 +-- v2/src/evm/ERC20Custody.sol | 12 +++--- v2/src/evm/GatewayEVM.sol | 50 +++++++++++----------- v2/src/evm/ZetaConnectorBase.sol | 14 +++--- v2/src/evm/ZetaConnectorNative.sol | 10 ++--- v2/src/evm/ZetaConnectorNonNative.sol | 10 ++--- v2/src/zevm/GatewayZEVM.sol | 10 ++--- 7 files changed, 57 insertions(+), 55 deletions(-) diff --git a/v1/contracts/evm/ZetaConnector.non-eth.sol b/v1/contracts/evm/ZetaConnector.non-eth.sol index 2844bcd8..0673fab6 100644 --- a/v1/contracts/evm/ZetaConnector.non-eth.sol +++ b/v1/contracts/evm/ZetaConnector.non-eth.sol @@ -28,9 +28,9 @@ contract ZetaConnectorNonEth is ZetaConnectorBase { return ZetaNonEthInterface(zetaToken).balanceOf(address(this)); } - function setMaxSupply(uint256 maxSupply_) external onlyTssAddress { - maxSupply = maxSupply_; - emit MaxSupplyUpdated(msg.sender, maxSupply_); + function setMaxSupply(uint256 _maxSupply) external onlyTssAddress { + maxSupply = _maxSupply; + emit MaxSupplyUpdated(msg.sender, _maxSupply); } /** diff --git a/v2/src/evm/ERC20Custody.sol b/v2/src/evm/ERC20Custody.sol index 387754fb..c33df59a 100644 --- a/v2/src/evm/ERC20Custody.sol +++ b/v2/src/evm/ERC20Custody.sol @@ -25,14 +25,14 @@ contract ERC20Custody is IERC20CustodyEvents, IERC20CustodyErrors, ReentrancyGua /// @notice Constructor for ERC20Custody. /// @dev Set admin as default admin and pauser, and tssAddress as tss role. - constructor(address _gateway, address _tssAddress, address _admin) { - if (_gateway == address(0) || _tssAddress == address(0) || _admin == address(0)) { + constructor(address gateway_, address tssAddress_, address admin_) { + if (gateway_ == address(0) || tssAddress_ == address(0) || admin_ == address(0)) { revert ZeroAddress(); } - gateway = IGatewayEVM(_gateway); - _grantRole(DEFAULT_ADMIN_ROLE, _admin); - _grantRole(PAUSER_ROLE, _admin); - _grantRole(WITHDRAWER_ROLE, _tssAddress); + gateway = IGatewayEVM(gateway_); + _grantRole(DEFAULT_ADMIN_ROLE, admin_); + _grantRole(PAUSER_ROLE, admin_); + _grantRole(WITHDRAWER_ROLE, tssAddress_); } /// @notice Pause contract. diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index b110cd23..e53e11b1 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -50,8 +50,8 @@ contract GatewayEVM is /// @notice Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE. /// @dev Using admin to authorize upgrades and pause, and tss for tss role. - function initialize(address _tssAddress, address _zetaToken, address _admin) public initializer { - if (_tssAddress == address(0) || _zetaToken == address(0)) { + function initialize(address tssAddress_, address zetaToken_, address admin_) public initializer { + if (tssAddress_ == address(0) || zetaToken_ == address(0)) { revert ZeroAddress(); } __UUPSUpgradeable_init(); @@ -59,12 +59,12 @@ contract GatewayEVM is __AccessControl_init(); __Pausable_init(); - _grantRole(DEFAULT_ADMIN_ROLE, _admin); - _grantRole(PAUSER_ROLE, _admin); - tssAddress = _tssAddress; - _grantRole(TSS_ROLE, _tssAddress); + _grantRole(DEFAULT_ADMIN_ROLE, admin_); + _grantRole(PAUSER_ROLE, admin_); + tssAddress = tssAddress_; + _grantRole(TSS_ROLE, tssAddress_); - zetaToken = _zetaToken; + zetaToken = zetaToken_; } /// @dev Authorizes the upgrade of the contract, sender must be owner. @@ -96,7 +96,7 @@ contract GatewayEVM is /// @dev This function can only be called by the TSS address and it is payable. /// @param destination Address to call. /// @param data Calldata to pass to the call. - function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) whenNotPaused { + function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) whenNotPaused nonReentrant { if (destination == address(0)) revert ZeroAddress(); (bool success,) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); @@ -118,6 +118,7 @@ contract GatewayEVM is payable onlyRole(TSS_ROLE) whenNotPaused + nonReentrant returns (bytes memory) { bytes memory result = _execute(destination, data); @@ -141,9 +142,9 @@ contract GatewayEVM is bytes calldata data ) public - nonReentrant onlyRole(ASSET_HANDLER_ROLE) whenNotPaused + nonReentrant { if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens @@ -177,9 +178,9 @@ contract GatewayEVM is bytes calldata data ) external - nonReentrant onlyRole(ASSET_HANDLER_ROLE) whenNotPaused + nonReentrant { if (amount == 0) revert InsufficientERC20Amount(); @@ -191,7 +192,7 @@ contract GatewayEVM is /// @notice Deposits ETH to the TSS address. /// @param receiver Address of the receiver. - function deposit(address receiver) external payable whenNotPaused { + function deposit(address receiver) external payable whenNotPaused nonReentrant { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); @@ -204,7 +205,7 @@ contract GatewayEVM is /// @param receiver Address of the receiver. /// @param amount Amount of tokens to deposit. /// @param asset Address of the ERC20 token. - function deposit(address receiver, uint256 amount, address asset) external whenNotPaused { + function deposit(address receiver, uint256 amount, address asset) external whenNotPaused nonReentrant { if (amount == 0) revert InsufficientERC20Amount(); transferFromToAssetHandler(msg.sender, asset, amount); @@ -215,7 +216,7 @@ contract GatewayEVM is /// @notice Deposits ETH to the TSS address and calls an omnichain smart contract. /// @param receiver Address of the receiver. /// @param payload Calldata to pass to the call. - function depositAndCall(address receiver, bytes calldata payload) external payable whenNotPaused { + function depositAndCall(address receiver, bytes calldata payload) external payable whenNotPaused nonReentrant { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited,) = tssAddress.call{ value: msg.value }(""); @@ -237,6 +238,7 @@ contract GatewayEVM is ) external whenNotPaused + nonReentrant { if (amount == 0) revert InsufficientERC20Amount(); @@ -248,28 +250,28 @@ contract GatewayEVM is /// @notice Calls an omnichain smart contract without asset transfer. /// @param receiver Address of the receiver. /// @param payload Calldata to pass to the call. - function call(address receiver, bytes calldata payload) external whenNotPaused { + function call(address receiver, bytes calldata payload) external whenNotPaused nonReentrant { emit Call(msg.sender, receiver, payload); } /// @notice Sets the custody contract address. - /// @param _custody Address of the custody contract. - function setCustody(address _custody) external onlyRole(DEFAULT_ADMIN_ROLE) { + /// @param custody_ Address of the custody contract. + function setCustody(address custody_) external onlyRole(DEFAULT_ADMIN_ROLE) { if (custody != address(0)) revert CustodyInitialized(); - if (_custody == address(0)) revert ZeroAddress(); + if (custody_ == address(0)) revert ZeroAddress(); - _grantRole(ASSET_HANDLER_ROLE, _custody); - custody = _custody; + _grantRole(ASSET_HANDLER_ROLE, custody_); + custody = custody_; } /// @notice Sets the connector contract address. - /// @param _zetaConnector Address of the connector contract. - function setConnector(address _zetaConnector) external onlyRole(DEFAULT_ADMIN_ROLE) { + /// @param zetaConnector_ Address of the connector contract. + function setConnector(address zetaConnector_) external onlyRole(DEFAULT_ADMIN_ROLE) { if (zetaConnector != address(0)) revert CustodyInitialized(); - if (_zetaConnector == address(0)) revert ZeroAddress(); + if (zetaConnector_ == address(0)) revert ZeroAddress(); - _grantRole(ASSET_HANDLER_ROLE, _zetaConnector); - zetaConnector = _zetaConnector; + _grantRole(ASSET_HANDLER_ROLE, zetaConnector_); + zetaConnector = zetaConnector_; } /// @dev Resets the approval of a token for a specified address. diff --git a/v2/src/evm/ZetaConnectorBase.sol b/v2/src/evm/ZetaConnectorBase.sol index d9adeb35..32f397bf 100644 --- a/v2/src/evm/ZetaConnectorBase.sol +++ b/v2/src/evm/ZetaConnectorBase.sol @@ -31,16 +31,16 @@ abstract contract ZetaConnectorBase is IZetaConnectorEvents, ReentrancyGuard, Pa /// @notice Constructor for ZetaConnectors. /// @dev Set admin as default admin and pauser, and tssAddress as tss role. - constructor(address _gateway, address _zetaToken, address _tssAddress, address _admin) { - if (_gateway == address(0) || _zetaToken == address(0) || _tssAddress == address(0)) { + constructor(address gateway_, address zetaToken_, address tssAddress_, address admin_) { + if (gateway_ == address(0) || zetaToken_ == address(0) || tssAddress_ == address(0) || admin_ == address(0)) { revert ZeroAddress(); } - gateway = IGatewayEVM(_gateway); - zetaToken = _zetaToken; + gateway = IGatewayEVM(gateway_); + zetaToken = zetaToken_; - _grantRole(DEFAULT_ADMIN_ROLE, _admin); - _grantRole(WITHDRAWER_ROLE, _tssAddress); - _grantRole(PAUSER_ROLE, _admin); + _grantRole(DEFAULT_ADMIN_ROLE, admin_); + _grantRole(WITHDRAWER_ROLE, tssAddress_); + _grantRole(PAUSER_ROLE, admin_); } /// @notice Pause contract. diff --git a/v2/src/evm/ZetaConnectorNative.sol b/v2/src/evm/ZetaConnectorNative.sol index 40439f84..d842b597 100644 --- a/v2/src/evm/ZetaConnectorNative.sol +++ b/v2/src/evm/ZetaConnectorNative.sol @@ -12,12 +12,12 @@ contract ZetaConnectorNative is ZetaConnectorBase { using SafeERC20 for IERC20; constructor( - address _gateway, - address _zetaToken, - address _tssAddress, - address _admin + address gateway_, + address zetaToken_, + address tssAddress_, + address admin_ ) - ZetaConnectorBase(_gateway, _zetaToken, _tssAddress, _admin) + ZetaConnectorBase(gateway_, zetaToken_, tssAddress_, admin_) { } /// @notice Withdraw tokens to a specified address. diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index 8785667d..7186016f 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -18,12 +18,12 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { error ExceedsMaxSupply(); constructor( - address _gateway, - address _zetaToken, - address _tssAddress, - address _admin + address gateway_, + address zetaToken_, + address tssAddress_, + address admin_ ) - ZetaConnectorBase(_gateway, _zetaToken, _tssAddress, _admin) + ZetaConnectorBase(gateway_, zetaToken_, tssAddress_, admin_) { } /// @notice Set max supply for minting. diff --git a/v2/src/zevm/GatewayZEVM.sol b/v2/src/zevm/GatewayZEVM.sol index 444727cd..d9fd5eb2 100644 --- a/v2/src/zevm/GatewayZEVM.sol +++ b/v2/src/zevm/GatewayZEVM.sol @@ -51,8 +51,8 @@ contract GatewayZEVM is /// @notice Initialize with address of zeta token and admin account set as DEFAULT_ADMIN_ROLE. /// @dev Using admin to authorize upgrades and pause. - function initialize(address _zetaToken, address _admin) public initializer { - if (_zetaToken == address(0)) { + function initialize(address zetaToken_, address admin_) public initializer { + if (zetaToken_ == address(0)) { revert ZeroAddress(); } __UUPSUpgradeable_init(); @@ -60,9 +60,9 @@ contract GatewayZEVM is __Pausable_init(); __ReentrancyGuard_init(); - _grantRole(DEFAULT_ADMIN_ROLE, _admin); - _grantRole(PAUSER_ROLE, _admin); - zetaToken = _zetaToken; + _grantRole(DEFAULT_ADMIN_ROLE, admin_); + _grantRole(PAUSER_ROLE, admin_); + zetaToken = zetaToken_; } /// @dev Authorizes the upgrade of the contract. From 78977726063ef9993773f2b82e9ba84107e70c84 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 17:56:23 +0200 Subject: [PATCH 58/60] fail on medium findings --- .github/workflows/slither_v2.yaml | 2 +- v2/src/evm/ZetaConnectorNonNative.sol | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/slither_v2.yaml b/.github/workflows/slither_v2.yaml index ad18dd3c..26292f30 100644 --- a/.github/workflows/slither_v2.yaml +++ b/.github/workflows/slither_v2.yaml @@ -57,7 +57,7 @@ jobs: node-version: "21.1.0" slither-config: "v2/slither.config.json" solc-version: "0.8.26" - fail-on: none + fail-on: medium target: "v2/" - name: Upload SARIF file diff --git a/v2/src/evm/ZetaConnectorNonNative.sol b/v2/src/evm/ZetaConnectorNonNative.sol index 7186016f..470ef225 100644 --- a/v2/src/evm/ZetaConnectorNonNative.sol +++ b/v2/src/evm/ZetaConnectorNonNative.sol @@ -27,11 +27,11 @@ contract ZetaConnectorNonNative is ZetaConnectorBase { { } /// @notice Set max supply for minting. - /// @param _maxSupply New max supply. + /// @param maxSupply_ New max supply. /// @dev This function can only be called by the TSS address. - function setMaxSupply(uint256 _maxSupply) external onlyRole(WITHDRAWER_ROLE) whenNotPaused { - maxSupply = _maxSupply; - emit MaxSupplyUpdated(_maxSupply); + function setMaxSupply(uint256 maxSupply_) external onlyRole(WITHDRAWER_ROLE) whenNotPaused { + maxSupply = maxSupply_; + emit MaxSupplyUpdated(maxSupply_); } /// @notice Withdraw tokens to a specified address. From e3a81135abd83dbdde75b774a52c1975ff977efd Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 18:00:06 +0200 Subject: [PATCH 59/60] generate --- v2/pkg/erc20custody.sol/erc20custody.go | 39 +---- .../erc20custodyechidnatest.go | 35 +---- v2/pkg/gatewayevm.sol/gatewayevm.go | 58 +++---- .../gatewayevm.t.sol/gatewayevminboundtest.go | 2 +- v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 2 +- .../gatewayevmechidnatest.go | 58 +++---- .../gatewayevmuupsupgradetest.go | 2 +- .../gatewayevmupgradetest.go | 2 +- .../gatewayevmzevmtest.go | 4 +- v2/pkg/gatewayzevm.sol/gatewayzevm.go | 22 +-- .../gatewayzevminboundtest.go | 4 +- .../gatewayzevmoutboundtest.go | 4 +- v2/pkg/igatewayevm.sol/igatewayevm.go | 128 +++++++++++++++- v2/pkg/igatewayzevm.sol/igatewayzevm.go | 90 +++++++++-- v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go | 2 +- v2/pkg/senderzevm.sol/senderzevm.go | 2 +- .../zetaconnectorbase.go | 33 +--- .../zetaconnectornative.go | 39 +---- .../zetaconnectornativetest.go | 2 +- .../zetaconnectornonnative.go | 57 ++----- .../zetaconnectornonnativetest.go | 2 +- v2/pkg/zrc20.sol/zrc20.go | 2 +- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- v2/src/evm/GatewayEVM.sol | 11 +- v2/src/evm/interfaces/IGatewayEVM.sol | 7 +- v2/test/ZRC20.t.sol | 1 - v2/typechain-types/ERC20Custody.ts | 11 -- v2/typechain-types/ERC20CustodyEchidnaTest.ts | 11 -- v2/typechain-types/GatewayEVM.ts | 12 +- v2/typechain-types/GatewayEVMEchidnaTest.ts | 12 +- v2/typechain-types/GatewayZEVM.ts | 4 +- .../IGatewayEVM.sol/IGatewayEVM.ts | 140 ++++++++++++++++- .../IGatewayZEVM.sol/IGatewayZEVM.ts | 134 +++++++++++++++- v2/typechain-types/ZetaConnectorBase.ts | 11 -- v2/typechain-types/ZetaConnectorNative.ts | 11 -- v2/typechain-types/ZetaConnectorNonNative.ts | 15 +- .../ERC20CustodyEchidnaTest__factory.ts | 15 +- .../factories/ERC20Custody__factory.ts | 45 ++---- .../GatewayEVMEchidnaTest__factory.ts | 12 +- .../GatewayEVMUpgradeTest__factory.ts | 2 +- .../factories/GatewayEVM__factory.ts | 12 +- .../factories/GatewayZEVM__factory.ts | 11 +- .../IGatewayEVM.sol/IGatewayEVM__factory.ts | 118 ++++++++++++++ .../IGatewayZEVMErrors__factory.ts | 5 + .../IGatewayZEVM.sol/IGatewayZEVM__factory.ts | 145 ++++++++++++++++++ .../factories/SenderZEVM__factory.ts | 2 +- .../factories/ZRC20.sol/ZRC20__factory.ts | 2 +- .../factories/ZetaConnectorBase__factory.ts | 13 -- .../factories/ZetaConnectorNative__factory.ts | 55 +++---- .../ZetaConnectorNonNative__factory.ts | 57 +++---- 50 files changed, 962 insertions(+), 503 deletions(-) diff --git a/v2/pkg/erc20custody.sol/erc20custody.go b/v2/pkg/erc20custody.sol/erc20custody.go index 16bd9024..55c557f4 100644 --- a/v2/pkg/erc20custody.sol/erc20custody.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -31,8 +31,8 @@ var ( // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033", } // ERC20CustodyABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ERC20CustodyABI = ERC20CustodyMetaData.ABI var ERC20CustodyBin = ERC20CustodyMetaData.Bin // DeployERC20Custody deploys a new Ethereum contract, binding an instance of ERC20Custody to it. -func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { +func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, gateway_ common.Address, tssAddress_ common.Address, admin_ common.Address) (common.Address, *types.Transaction, *ERC20Custody, error) { parsed, err := ERC20CustodyMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployERC20Custody(auth *bind.TransactOpts, backend bind.ContractBackend, _ return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, _gateway, _tssAddress, _admin) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20CustodyBin), backend, gateway_, tssAddress_, admin_) if err != nil { return common.Address{}, nil, nil, err } @@ -450,37 +450,6 @@ func (_ERC20Custody *ERC20CustodyCallerSession) SupportsInterface(interfaceId [4 return _ERC20Custody.Contract.SupportsInterface(&_ERC20Custody.CallOpts, interfaceId) } -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20Custody *ERC20CustodyCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20Custody.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20Custody *ERC20CustodySession) TssAddress() (common.Address, error) { - return _ERC20Custody.Contract.TssAddress(&_ERC20Custody.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20Custody *ERC20CustodyCallerSession) TssAddress() (common.Address, error) { - return _ERC20Custody.Contract.TssAddress(&_ERC20Custody.CallOpts) -} - // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. // // Solidity: function grantRole(bytes32 role, address account) returns() diff --git a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go index 4e6fce27..74076e13 100644 --- a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go +++ b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go @@ -31,8 +31,8 @@ var ( // ERC20CustodyEchidnaTestMetaData contains all meta data concerning the ERC20CustodyEchidnaTest contract. var ERC20CustodyEchidnaTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x600580546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010481905261012452606460c090815261014460405260e080516001600160e01b0390811663c0c53b8b60e01b1790915261007792919061027f16565b600680546001600160a01b03929092166001600160a01b03199283168117909155600780549092161790553480156100ae57600080fd5b5060075460055460016000556002805460ff191690556001600160a01b039182169116808215806100e657506001600160a01b038216155b156101045760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b03191691841691909117905561014e60008261029e565b506101797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261029e565b506101a47f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361029e565b505050506040516101b49061382a565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015610206573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617815560075460405163ae7a3a6f60e01b815230928101929092529091169063ae7a3a6f90602401600060405180830381600087803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b505050506148ab565b6000610289613837565b610294848483610331565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166103295760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610298565b506000610298565b60008061033e85846103ad565b90506103a26040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161038c929190613940565b60408051601f19818403018152919052856103b9565b9150505b9392505050565b60006103a683836103ed565b60c081015151600090156103e3576103dc84848460c0015161040e60201b60201c565b90506103a6565b6103dc8484610587565b60006103f98383610654565b6103a6838360200151846103b960201b60201c565b600080610419610664565b9050600061042786836106fe565b905060006104448260600151836020015185610b2160201b60201c565b9050600061045483838989610cd6565b9050600061046182611952565b602081015181519192509060030b156104ba5789826040015160405160200161048b929190613964565b60408051601f198184030181529082905262461bcd60e51b82526104b1916004016139ca565b60405180910390fd5b60006105036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611ae960201b60201c565b60405163c6ce059d60e01b8152909150600080516020616ad08339815191529063c6ce059d906105379084906004016139ca565b602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057891906139dd565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616ad083398151915290638d1cc925906105bd9087906004016139ca565b600060405180830381865afa1580156105da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106029190810190613ad2565b90506000610631828560405160200161061c929190613b06565b60408051601f19818403018152919052611c89565b90506001600160a01b03811661029457848460405160200161048b929190613b35565b61066082826000611c9c565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616ad083398151915291829063d145736c906106b2908490600401613bc4565b600060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f79190810190613bf9565b9250505090565b6107306040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616ad083398151915290506107756040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61077e85611d76565b6020820152600061078e86611fcb565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f89190810190613bf9565b868385602001516040516020016108129493929190613c41565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108519085906004016139ca565b600060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108969190810190613bf9565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108c5908490600401613cd9565b602060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190613d12565b61091b578160405160200161048b9190613d34565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610947908490600401613dab565b600060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098c9190810190613bf9565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f6906109ba908490600401613df1565b602060405180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613d12565b15610a77576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a2c908490600401613df1565b600060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a719190810190613bf9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a9c9190613e32565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610ac8929190613e8d565b600060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b0d9190810190613bf9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b3d579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b8457610b84613eb2565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610bbe57610bbe613eb2565b602002602001018190525084604051602001610bda9190613ec8565b60405160208183030381529060405281600281518110610bfc57610bfc613eb2565b602002602001018190525082604051602001610c189190613efd565b60405160208183030381529060405281600381518110610c3a57610c3a613eb2565b60209081029190910101526000610c5082611952565b9050600081602001519050610cb7610c8a60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061217b565b610ccc578560405160200161048b9190613f2c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616ad08339815191529015610d20565b511590565b610e3c57826020015115610db05760405162461bcd60e51b81526020600482015260586024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016104b1565b8260c0015115610e3c5760405162461bcd60e51b81526020600482015260536024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016104b1565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e555790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e9690613fc1565b935060ff1681518110610eab57610eab613eb2565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610eec9190613fe0565b604051602081830303815290604052828280610f0790613fc1565b935060ff1681518110610f1c57610f1c613eb2565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f5290613fc1565b935060ff1681518110610f6757610f67613eb2565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610fa590613fc1565b935060ff1681518110610fba57610fba613eb2565b60200260200101819052508760200151828280610fd690613fc1565b935060ff1681518110610feb57610feb613eb2565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061102990613fc1565b935060ff168151811061103e5761103e613eb2565b60209081029190910101528751828261105681613fc1565b935060ff168151811061106b5761106b613eb2565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806110a490613fc1565b935060ff16815181106110b9576110b9613eb2565b60209081029190910101526110cd466121dc565b82826110d881613fc1565b935060ff16815181106110ed576110ed613eb2565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061112c90613fc1565b935060ff168151811061114157611141613eb2565b60200260200101819052508682828061115990613fc1565b935060ff168151811061116e5761116e613eb2565b602090810291909101015285511561127c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111bf81613fc1565b935060ff16815181106111d4576111d4613eb2565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d9061120b9089906004016139ca565b600060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190613bf9565b828261125b81613fc1565b935060ff168151811061127057611270613eb2565b60200260200101819052505b846020015115611329576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826112ba81613fc1565b935060ff16815181106112cf576112cf613eb2565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b81525082828061130490613fc1565b935060ff168151811061131957611319613eb2565b6020026020010181905250611490565b61133f610d1b8660a0015161214e60201b60201c565b6113c25760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261137281613fc1565b935060ff168151811061138757611387613eb2565b60200260200101819052508460a001516040516020016113a79190613ec8565b60405160208183030381529060405282828061130490613fc1565b8460c001511580156113e757506113e5610d1b896040015161214e60201b60201c565b155b156114905760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261141b81613fc1565b935060ff168151811061143057611430613eb2565b60209081029190910101526114448861226e565b6040516020016114549190613ec8565b60405160208183030381529060405282828061146f90613fc1565b935060ff168151811061148457611484613eb2565b60200260200101819052505b6114a6610d1b866040015161214e60201b60201c565b6115295760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114d781613fc1565b935060ff16815181106114ec576114ec613eb2565b6020026020010181905250846040015182828061150890613fc1565b935060ff168151811061151d5761151d613eb2565b60200260200101819052505b60608501511561161a576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261155b81613fc1565b935060ff168151811061157057611570613eb2565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ee9190810190613bf9565b82826115f981613fc1565b935060ff168151811061160e5761160e613eb2565b60200260200101819052505b60e085015151156116ac5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261165181613fc1565b935060ff168151811061166657611666613eb2565b602090810291909101015260e085015151611680906121dc565b828261168b81613fc1565b935060ff16815181106116a0576116a0613eb2565b60200260200101819052505b60e085015160200151156117495760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116e681613fc1565b935060ff16815181106116fb576116fb613eb2565b602002602001018190525061171d8560e00151602001516121dc60201b60201c565b828261172881613fc1565b935060ff168151811061173d5761173d613eb2565b60200260200101819052505b60e085015160400151156117ea5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261178781613fc1565b935060ff168151811061179c5761179c613eb2565b60200260200101819052506117be8560e00151604001516121dc60201b60201c565b82826117c981613fc1565b935060ff16815181106117de576117de613eb2565b60200260200101819052505b60e0850151606001511561189a5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261183781613fc1565b935060ff168151811061184c5761184c613eb2565b602002602001018190525061186e8560e00151606001516121dc60201b60201c565b828261187981613fc1565b935060ff168151811061188e5761188e613eb2565b60200260200101819052505b60008160ff166001600160401b038111156118b7576118b7613a06565b6040519080825280602002602001820160405280156118ea57816020015b60608152602001906001900390816118d55790505b50905060005b8260ff168160ff16101561194357838160ff168151811061191357611913613eb2565b6020026020010151828260ff168151811061193057611930613eb2565b60209081029190910101526001016118f0565b5093505050505b949350505050565b6119796040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616ad083398151915292600091849163d145736c916119c791869101614037565b600060405180830381865afa1580156119e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a0c9190810190613bf9565b90506000611a1a8683612924565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a4a919061407e565b6000604051808303816000875af1158015611a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a9191908101906140e3565b805190915060030b15801590611aaa5750602081015151155b8015611ab95750604081015151155b15610ccc5781600081518110611ad157611ad1613eb2565b602002602001015160405160200161048b9190614196565b60606000611b1e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b559082905b90612a5e565b15611c52576000611bd282611bcc81611bc6611b988a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a85565b90612ae2565b9050611c06611bff604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612a5e565b15611c4057611c3d611c36604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612b67565b90505b611c4981612b8d565b925050506103a6565b8215611c6b57848460405160200161048b929190614366565b50506040805160208101909152600081526103a6565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611cab57505050565b6000611cb8848484612bf2565b90506000611cc582611952565b602081015181519192509060030b158015611d385750611d38611d0c604051806040016040528060078152602001665355434345535360c81b81525061214e60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b4f565b15611d4557505050505050565b60408201515115611d6557816040015160405160200161048b91906143e1565b8060405160200161048b919061442b565b60606000611dab8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611de2611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b829061217b565b15611e24576103a6611e1f611e18604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b8390613105565b612b8d565b611e56611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b829061318f565b600103611ebe57611e88611c36604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b506103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b8390612b67565b611eed611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba576000611f2582611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b613224565b905060008160018351611f38919061447b565b81518110611f4857611f48613eb2565b60200260200101519050611fb1611e1f611f8460405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290613105565b95945050505050565b8260405160200161048b919061448e565b606060006120008360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612030611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b1561203e576103a681612b8d565b612069611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b60010361209e576103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b6120cd611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba57600061210082611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b905060018151111561213c57806002825161211b919061447b565b8151811061212b5761212b613eb2565b602002602001015192505050919050565b508260405160200161048b919061448e565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111561219057506000610298565b815183516020850151600092916121a691614548565b6121b0919061447b565b9050826020015181036121c7576001915050610298565b82516020840151819020912014905092915050565b606060006121e9836132c8565b60010190506000816001600160401b0381111561220857612208613a06565b6040519080825280601f01601f191660200182016040528015612232576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461223c57509392505050565b60606000612285836040015161214e60201b60201c565b90506122c26122bb6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061214e60201b60201c565b82906133aa565b156122e95750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61231c6122bb60405180604001604052806009815260200168556e6c6963656e736560b81b81525061214e60201b60201c565b15612348575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b6123756122bb6040518060400160405280600381526020016213525560ea1b81525061214e60201b60201c565b1561239b57505060408051808201909152600381526213525560ea1b6020820152919050565b6123d16122bb6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061214e60201b60201c565b8061241157506124116122bb6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061214e60201b60201c565b1561243d57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b6124736122bb6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061214e60201b60201c565b806124b357506124b36122bb6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061214e60201b60201c565b156124df575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6125166122bb6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061214e60201b60201c565b8061255757506125576122bb604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061214e60201b60201c565b1561258657505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125bd6122bb6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b806125fe57506125fe6122bb604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b1561262b57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b6126616122bb6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061214e60201b60201c565b1561269057505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126c66122bb6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061214e60201b60201c565b156126f557505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b6127266122bb6040518060400160405280600781526020016604d504c2d322e360cc1b81525061214e60201b60201c565b1561275057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b6127816122bb6040518060400160405280600781526020016604f534c2d332e360cc1b81525061214e60201b60201c565b156127ab57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127df6122bb6040518060400160405280600a81526020016904170616368652d322e360b41b81525061214e60201b60201c565b1561280c57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6128436122bb6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b8061288457506128846122bb6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b156128b157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128e36122bb604051806040016040528060088152602001674255534c2d312e3160c01b81525061214e60201b60201c565b1561290d57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161048b929060200161455b565b60608060005b84518110156129af578185828151811061294657612946613eb2565b602002602001015160405160200161295f929190613b06565b60405160208183030381529060405291506001855161297e919061447b565b81146129a7578160405160200161299591906146ab565b60405160208183030381529060405291505b60010161292a565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129c857905050905083816000815181106129f3576129f3613eb2565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a2c57612a2c613eb2565b60200260200101819052508181600281518110612a4b57612a4b613eb2565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a7c92918491906133be565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612ab293906134cf565b9050836020015181612ac4919061447b565b84518590612ad390839061447b565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612b07575081610298565b6020808301519084015160019114612b2e5750815160208481015190840151829020919020145b8015612b5f57825184518590612b4590839061447b565b9052508251602085018051612b5b908390614548565b9052505b509192915050565b6040805180820190915260008082526020820152612b868383836135ef565b5092915050565b6060600082600001516001600160401b03811115612bad57612bad613a06565b6040519080825280601f01601f191660200182016040528015612bd7576020820181803683370190505b50602084810151855192935090830191612b86918391613695565b60606000612bfe610664565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612c1b5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c5c90613fc1565b935060ff1681518110612c7157612c71613eb2565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612cac91906146d0565b604051602081830303815290604052828280612cc790613fc1565b935060ff1681518110612cdc57612cdc613eb2565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612d1490613fc1565b935060ff1681518110612d2957612d29613eb2565b602002602001018190525082604051602001612d459190613efd565b604051602081830303815290604052828280612d6090613fc1565b935060ff1681518110612d7557612d75613eb2565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612daf90613fc1565b935060ff1681518110612dc457612dc4613eb2565b6020908102919091010152612dd9878461370f565b8282612de481613fc1565b935060ff1681518110612df957612df9613eb2565b602090810291909101015285515115612e915760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e3981613fc1565b935060ff1681518110612e4e57612e4e613eb2565b60209081029190910101528551612e65908461370f565b8282612e7081613fc1565b935060ff1681518110612e8557612e85613eb2565b60200260200101819052505b856080015115612eff5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612eda81613fc1565b935060ff1681518110612eef57612eef613eb2565b6020026020010181905250612f5a565b8415612f5a576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f3981613fc1565b935060ff1681518110612f4e57612f4e613eb2565b60200260200101819052505b60408601515115612fe65760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f9481613fc1565b935060ff1681518110612fa957612fa9613eb2565b60200260200101819052508560400151828280612fc590613fc1565b935060ff1681518110612fda57612fda613eb2565b60200260200101819052505b8560600151156130505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261302f81613fc1565b935060ff168151811061304457613044613eb2565b60200260200101819052505b60008160ff166001600160401b0381111561306d5761306d613a06565b6040519080825280602002602001820160405280156130a057816020015b606081526020019060019003908161308b5790505b50905060005b8260ff168160ff1610156130f957838160ff16815181106130c9576130c9613eb2565b6020026020010151828260ff16815181106130e6576130e6613eb2565b60209081029190910101526001016130a6565b50979650505050505050565b604080518082019091526000808252602082015281518351101561312a575081610298565b8151835160208501516000929161314091614548565b61314a919061447b565b6020840151909150600190821461316b575082516020840151819020908220145b80156131865783518551869061318290839061447b565b9052505b50929392505050565b8051825160208085015190840151600093849390926131af9284906134cf565b6131b99190614548565b90505b835160208501516131cd9190614548565b8111612b8657816131dd81614715565b92505082600001516132138560200151836131f8919061447b565b8651613204919061447b565b855160208701518591906134cf565b61321d9190614548565b90506131bc565b60606000613232848461318f565b61323d906001614548565b6001600160401b0381111561325457613254613a06565b60405190808252806020026020018201604052801561328757816020015b60608152602001906001900390816132725790505b50905060005b8151811015611c81576132a3611e1f8686612b67565b8282815181106132b5576132b5613eb2565b602090810291909101015260010161328d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613311577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061333d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061335b57662386f26fc10000830492506010015b6305f5e1008310613373576305f5e100830492506008015b612710831061338757612710830492506004015b60648310613399576064830492506002015b600a83106102985760010192915050565b60006133b6838361374f565b159392505050565b6000808584116134c5576020841161347157600084156134095760016133e586602061447b565b6133f090600861472e565b6133fb90600261482c565b613405919061447b565b1990505b83518116856134188989614548565b613422919061447b565b805190935082165b81811461345c57878411613444578794505050505061194a565b8361344e81614838565b94505082845116905061342a565b6134668785614548565b94505050505061194a565b83832061347e858861447b565b6134889087614548565b91505b8582106134c3578482208082036134b0576134a68684614548565b935050505061194a565b6134bb60018461447b565b92505061348b565b505b5092949350505050565b600083818685116135da5760208511613589576000851561351b5760016134f787602061447b565b61350290600861472e565b61350d90600261482c565b613517919061447b565b1990505b8451811660008761352c8b8b614548565b613536919061447b565b855190915083165b82811461357b57818610613563576135568b8b614548565b965050505050505061194a565b8561356d81614715565b96505083865116905061353e565b85965050505050505061194a565b508383206000905b61359b868961447b565b82116135d8578583208082036135b7578394505050505061194a565b6135c2600185614548565b93505081806135d090614715565b925050613591565b505b6135e48787614548565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161361c93906134cf565b602080870180519186019190915251909150613638908261447b565b83528451602086015161364b9190614548565b810361365a576000855261368c565b835183516136689190614548565b8551869061367790839061447b565b90525083516136869082614548565b60208601525b50909392505050565b602081106136cd57815183526136ac602084614548565b92506136b9602083614548565b91506136c660208261447b565b9050613695565b60001981156136fc5760016136e383602061447b565b6136ef9061010061482c565b6136f9919061447b565b90505b9151835183169219169190911790915250565b6060600061371d84846106fe565b80516020808301516040519394506137379390910161484f565b60405160208183030381529060405291505092915050565b8151815160009190811115613762575081515b6020808501519084015160005b8381101561381b57825182518082146137eb5760001960208710156137ca5760018461379c89602061447b565b6137a69190614548565b6137b190600861472e565b6137bc90600261482c565b6137c6919061447b565b1990505b81811683821681810391146137e85797506102989650505050505050565b50505b6137f6602086614548565b9450613803602085614548565b935050506020816138149190614548565b905061376f565b5084518651610ccc919061488b565b610c9f80615e3183390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161387a61387f565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161387a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101561390b5781810151838201526020016138f3565b50506000910152565b6000815180845261392c8160208601602086016138f0565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061194a90830184613914565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161399c81601a8501602088016138f0565b6101d160f51b601a9184019182015283516139be81601c8401602088016138f0565b01601c01949350505050565b6020815260006103a66020830184613914565b6000602082840312156139ef57600080fd5b81516001600160a01b03811681146103a657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a3e57613a3e613a06565b60405290565b6000806001600160401b03841115613a5e57613a5e613a06565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a8c57613a8c613a06565b604052838152905080828401851015613aa457600080fd5b611c818460208301856138f0565b600082601f830112613ac357600080fd5b6103a683835160208501613a44565b600060208284031215613ae457600080fd5b81516001600160401b03811115613afa57600080fd5b61029484828501613ab2565b60008351613b188184602088016138f0565b835190830190613b2c8183602088016138f0565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b6d81601a8501602088016138f0565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613baa8160338401602088016138f0565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006103a66080830184613914565b600060208284031215613c0b57600080fd5b81516001600160401b03811115613c2157600080fd5b8201601f81018413613c3257600080fd5b61029484825160208401613a44565b60008551613c53818460208a016138f0565b602f60f81b9083019081528551613c71816001840160208a016138f0565b602f60f81b600192909101918201528451613c938160028401602089016138f0565b600181830101915050602f60f81b60018201528351613cb98160028401602088016138f0565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cec6040830184613914565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d2457600080fd5b815180151581146103a657600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d6c81601f8501602087016138f0565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613dbe6040830184613914565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613e046040830184613914565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e6a8160148501602087016138f0565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613ea06040830185613914565b82810360208401526103a28185613914565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ee58160018501602087016138f0565b601160f91b6001939091019283015250600201919050565b60008251613f0f8184602087016138f0565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f9e81604b8501602087016138f0565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fd757613fd7613fab565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161402a8160298501602087016138f0565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006103a66080830184613914565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140d757603f198786030184526140c2858351613914565b945060209384019391909101906001016140a6565b50929695505050505050565b6000602082840312156140f557600080fd5b81516001600160401b0381111561410b57600080fd5b82016060818503121561411d57600080fd5b614125613a1c565b81518060030b811461413657600080fd5b815260208201516001600160401b0381111561415157600080fd5b61415d86828501613ab2565b60208301525060408201516001600160401b0381111561417c57600080fd5b61418886828501613ab2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141d88160218501602087016138f0565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516143a88160218501602088016138f0565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143d581602e8401602088016138f0565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161402a8160298501602087016138f0565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161446e8160228501602087016138f0565b9190910160220192915050565b8181038181111561029857610298613fab565b6d021b7b73a3930b1ba103730b6b2960951b8152600082516144b781600e8501602087016138f0565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561029857610298613fab565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145938160188501602088016138f0565b6301034b7160e51b60189184019182015283516145b781601c8401602088016138f0565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146bd8184602087016138f0565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161470881601c8501602087016138f0565b91909101601c0192915050565b60006001820161472757614727613fab565b5060010190565b808202811582820484141761029857610298613fab565b6001815b60018411156147805780850481111561476457614764613fab565b600184161561477257908102905b60019390931c928002614749565b935093915050565b60008261479757506001610298565b816147a457506000610298565b81600181146147ba57600281146147c4576147e0565b6001915050610298565b60ff8411156147d5576147d5613fab565b50506001821b610298565b5060208310610133831016604e8410600b8410161715614803575081810a610298565b6148106000198484614745565b806000190482111561482457614824613fab565b029392505050565b60006103a68383614788565b60008161484757614847613fab565b506000190190565b600083516148618184602088016138f0565b601d60f91b908301908152835161487f8160018401602088016138f0565b01600101949350505050565b8181036000831280158383131683831282161715612b8657612b86613fab565b611577806148ba6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610366578063d9caed1214610379578063e63ab1e91461038c57600080fd5b8063a217fddf1461034b578063c8a023621461035357600080fd5b80638456cb59116100b25780638456cb59146102d657806385f438c1146102de57806391d148541461030557600080fd5b80636133b4bb146102a357806381100bf0146102b657600080fd5b806336568abe116101245780633f4ba83a116101095780633f4ba83a146102705780635b112591146102785780635c975abb1461029857600080fd5b806336568abe1461023d5780633c2f05a81461025057600080fd5b806321fc65f21161015557806321fc65f2146101e3578063248a9ca3146101f85780632f2ff15d1461022a57600080fd5b806301ffc9a714610171578063116191b614610199575b600080fd5b61018461017f3660046111a6565b6103b3565b60405190151581526020015b60405180910390f35b6002546101be90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101f66101f136600461125a565b61044c565b005b61021c6102063660046112c9565b6000908152600160208190526040909120015490565b604051908152602001610190565b6101f66102383660046112e2565b6105c1565b6101f661024b3660046112e2565b6105ed565b6004546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661064b565b6003546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610184565b6101f66102b136600461130e565b610680565b6005546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661089f565b61021c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103133660046112e2565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61021c600081565b6101f661036136600461125a565b6108d1565b6101f66103743660046112e2565b610a2c565b6101f6610387366004611368565b610a52565b61021c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610454610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461047e81610b62565b610486610b6c565b6002546104b29073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061051490899089908990899089906004016113ee565b600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a79392919061144b565b60405180910390a3506105ba6001600055565b5050505050565b600082815260016020819052604090912001546105dd81610b62565b6105e78383610c38565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461063c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106468282610d03565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61067581610b62565b61067d610dc2565b50565b60045473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106aa86600561146e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b5050600480546007546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216938101939093526005602484015216925063a9059cbb91506044016020604051808303816000875af11580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce91906114a8565b506004546107f59073ffffffffffffffffffffffffffffffffffffffff168585858561044c565b600480546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090920482169381019390935216906370a0823190602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089291906114ca565b156105e7576105e76114e3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108c981610b62565b61067d610e3f565b6108d9610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461090381610b62565b61090b610b6c565b6002546109379073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd49061099990899089908990899089906004016113ee565b600060405180830381600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a79392919061144b565b60008281526001602081905260409091200154610a4881610b62565b6105e78383610d03565b610a5a610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a8481610b62565b610a8c610b6c565b610aad73ffffffffffffffffffffffffffffffffffffffff85168484610bab565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b0c91815260200190565b60405180910390a3506106466001600055565b600260005403610b5b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61067d8133610e9a565b60025460ff1615610ba9576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610646908490610f2b565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610cfb57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610446565b506000610446565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610cfb57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610446565b610dca610fc1565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e47610b6c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e153390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f27576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610f4d73ffffffffffffffffffffffffffffffffffffffff841683610ffd565b90508051600014158015610f72575080806020019051810190610f7091906114a8565b155b15610646576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f1e565b60025460ff16610ba9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061100b83836000611012565b9392505050565b606081471015611050576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f1e565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110799190611512565b60006040518083038185875af1925050503d80600081146110b6576040519150601f19603f3d011682016040523d82523d6000602084013e6110bb565b606091505b50915091506110cb8683836110d5565b9695505050505050565b6060826110ea576110e582611164565b61100b565b815115801561110e575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561115d576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f1e565b508061100b565b8051156111745780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156111b857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461100b57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461120c57600080fd5b919050565b60008083601f84011261122357600080fd5b50813567ffffffffffffffff81111561123b57600080fd5b60208301915083602082850101111561125357600080fd5b9250929050565b60008060008060006080868803121561127257600080fd5b61127b866111e8565b9450611289602087016111e8565b935060408601359250606086013567ffffffffffffffff8111156112ac57600080fd5b6112b888828901611211565b969995985093965092949392505050565b6000602082840312156112db57600080fd5b5035919050565b600080604083850312156112f557600080fd5b82359150611305602084016111e8565b90509250929050565b6000806000806060858703121561132457600080fd5b61132d856111e8565b935060208501359250604085013567ffffffffffffffff81111561135057600080fd5b61135c87828801611211565b95989497509550505050565b60008060006060848603121561137d57600080fd5b611386846111e8565b9250611394602085016111e8565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114406080830184866113a5565b979650505050505050565b8381526040602082015260006114656040830184866113a5565b95945050505050565b80820180821115610446577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156114ba57600080fd5b8151801515811461100b57600080fd5b6000602082840312156114dc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156115335760208186018101518583015201611519565b50600092019182525091905056fea2646970667358221220e3eceeff6045b5584ad5b26814ad7e9728c8428c7219e4a4930ed3899cab596964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220d8ef89ac8396bd464c454946f52477d7c7b7dd83faf0948efc8239094b648cb764736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", } // ERC20CustodyEchidnaTestABI is the input ABI used to generate the binding from. @@ -512,37 +512,6 @@ func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) TestERC20( return _ERC20CustodyEchidnaTest.Contract.TestERC20(&_ERC20CustodyEchidnaTest.CallOpts) } -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ERC20CustodyEchidnaTest.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestSession) TssAddress() (common.Address, error) { - return _ERC20CustodyEchidnaTest.Contract.TssAddress(&_ERC20CustodyEchidnaTest.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ERC20CustodyEchidnaTest *ERC20CustodyEchidnaTestCallerSession) TssAddress() (common.Address, error) { - return _ERC20CustodyEchidnaTest.Contract.TssAddress(&_ERC20CustodyEchidnaTest.CallOpts) -} - // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. // // Solidity: function grantRole(bytes32 role, address account) returns() diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go index 32a32fa6..29644cdd 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -31,8 +31,8 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d9a6100fd60003960008181611b5701528181611b800152611fc90152612d9a6000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b5061020861020336600461280d565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d61023836600461286b565b61074e565b005b34801561024b57600080fd5b5061023d61025a3660046128cf565b610842565b61027261026d3660046128cf565b61089c565b6040516102149190612990565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d23660046129a3565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d6103223660046128cf565b61092d565b34801561033357600080fd5b5061023d6103423660046129bc565b610a5a565b61023d6103553660046128cf565b610aa4565b34801561036657600080fd5b5061023d6103753660046129bc565b610c2b565b34801561038657600080fd5b5061023d610c7c565b61023d61039d366004612a17565b610cb1565b3480156103ae57600080fd5b5061023d6103bd366004612b1e565b610cd0565b3480156103ce57600080fd5b50610306610fad565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fdc565b3480156104a357600080fd5b5061023d6104b2366004612b8d565b61100e565b3480156104c357600080fd5b506102086104d23660046129bc565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c936600461286b565b6110b3565b3480156105da57600080fd5b5061023d6105e9366004612b1e565b6111a7565b3480156105fa57600080fd5b5061023d610609366004612bdf565b611321565b34801561061a57600080fd5b5061023d6106293660046129bc565b6115d6565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d61069036600461286b565b61161a565b3480156106a157600080fd5b5061023d6106b0366004612c22565b611747565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117fa565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a6118f1565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161088f929190612c9e565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c8816117fa565b6108d06118f1565b60006108dd86868661194f565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161091c93929190612cba565b60405180910390a295945050505050565b6109356118f1565b3460000361096f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109bc576040519150601f19603f3d011682016040523d82523d6000602084013e6109c1565b606091505b5090915050801515600003610a02576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a4c9493929190612cd4565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a94816117fa565b610a9e8383611804565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ace816117fa565b610ad66118f1565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b24576040519150601f19603f3d011682016040523d82523d6000602084013e610b29565b606091505b509150915081610b65576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610bac9088908890600401612c9e565b600060405180830381600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610c1b93929190612cba565b60405180910390a2505050505050565b6001600160a01b0381163314610c6d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7782826119f8565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ca6816117fa565b610cae611abc565b50565b610cb9611b4c565b610cc282611c1c565b610ccc8282611c27565b5050565b610cd8611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d02816117fa565b610d0a6118f1565b83600003610d44576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4e8686611dcc565b610d84576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612cfd565b610e46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5386858561194f565b9050610e5f8787611dcc565b610e95576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612d1f565b90508015610f2b57610f2b8882611e5c565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f7293929190612cba565b60405180910390a3505050610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610fb7611fbe565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611006816117fa565b610cae612020565b6110166118f1565b83600003611050576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105b338486612099565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110a49493929190612cd4565b60405180910390a35050505050565b60006110be816117fa565b6000546001600160a01b031615611101576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611141576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6111af611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111d9816117fa565b6111e16118f1565b8360000361121b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122f6001600160a01b03871686866121ed565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906112769086908690600401612c9e565b600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112ef93929190612cba565b60405180910390a350610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561136c5750825b905060008267ffffffffffffffff1660011480156113895750303b155b905081158015611397575080155b156113ce576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561142f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061144c57506001600160a01b038716155b15611483576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148b612261565b611493612269565b61149b612261565b6114a3612279565b6114ae600087611804565b506114d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611804565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115377f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611804565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115cc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611610816117fa565b610a9e83836119f8565b6116226118f1565b3460000361165c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146116a9576040519150601f19603f3d011682016040523d82523d6000602084013e6116ae565b606091505b50909150508015156000036116ef576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61174f6118f1565b81600003611789576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611794338284612099565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161088f9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610cae8133612289565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166118e7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561189d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561194d576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b031634868660405161196f929190612d38565b60006040518083038185875af1925050503d80600081146119ac576040519150601f19603f3d011682016040523d82523d6000602084013e6119b1565b606091505b5091509150816119ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156118e7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611ac4612316565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611be557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bd97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ccc816117fa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c9f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c9c91810190612d1f565b60015b611ce5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d41576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611cdc565b610c778383612371565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611dc6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612cfd565b6003546001600160a01b0390811690831603611f7e576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b505050505050565b600054610ccc906001600160a01b038481169116836121ed565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120286118f1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b2e565b6003546001600160a01b03908116908316036121d1576120c46001600160a01b0383168430846123c7565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156121b457600080fd5b505af11580156121c8573d6000803e3d6000fd5b50505050505050565b600054610c77906001600160a01b0384811691869116846123c7565b6040516001600160a01b03838116602483015260448201839052610c7791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612400565b61194d61247c565b61227161247c565b61194d6124e3565b61228161247c565b61194d6124eb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610ccc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611cdc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661194d576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237a8261253c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123bf57610c7782826125e4565b610ccc61265a565b6040516001600160a01b038481166024830152838116604483015260648201839052610a9e9186918216906323b872dd9060840161221a565b60006124156001600160a01b03841683612692565b9050805160001415801561243a5750808060200190518101906124389190612cfd565b155b15610c77576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611cdc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661194d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9861247c565b6124f361247c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b60000361258b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611cdc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126019190612d48565b600060405180830381855af49150503d806000811461263c576040519150601f19603f3d011682016040523d82523d6000602084013e612641565b606091505b50915091506126518583836126a0565b95945050505050565b341561194d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606119f183836000612715565b6060826126b5576126b0826127cb565b6119f1565b81511580156126cc57506001600160a01b0384163b155b1561270e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611cdc565b50806119f1565b606081471015612753576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611cdc565b600080856001600160a01b0316848660405161276f9190612d48565b60006040518083038185875af1925050503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18683836126a0565b9695505050505050565b8051156127db5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561281f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f157600080fd5b80356001600160a01b038116811461286657600080fd5b919050565b60006020828403121561287d57600080fd5b6119f18261284f565b60008083601f84011261289857600080fd5b50813567ffffffffffffffff8111156128b057600080fd5b6020830191508360208285010111156128c857600080fd5b9250929050565b6000806000604084860312156128e457600080fd5b6128ed8461284f565b9250602084013567ffffffffffffffff81111561290957600080fd5b61291586828701612886565b9497909650939450505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6000815180845261295e816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119f16020830184612946565b6000602082840312156129b557600080fd5b5035919050565b600080604083850312156129cf57600080fd5b823591506129df6020840161284f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612a2a57600080fd5b612a338361284f565b9150602083013567ffffffffffffffff811115612a4f57600080fd5b8301601f81018513612a6057600080fd5b803567ffffffffffffffff811115612a7a57612a7a6129e8565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ae657612ae66129e8565b604052818152828201602001871015612afe57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612b3657600080fd5b612b3f8661284f565b9450612b4d6020870161284f565b935060408601359250606086013567ffffffffffffffff811115612b7057600080fd5b612b7c88828901612886565b969995985093965092949392505050565b600080600080600060808688031215612ba557600080fd5b612bae8661284f565b945060208601359350612bc36040870161284f565b9250606086013567ffffffffffffffff811115612b7057600080fd5b600080600060608486031215612bf457600080fd5b612bfd8461284f565b9250612c0b6020850161284f565b9150612c196040850161284f565b90509250925092565b600080600060608486031215612c3757600080fd5b612c408461284f565b925060208401359150612c196040850161284f565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612cb2602083018486612c55565b949350505050565b838152604060208201526000612651604083018486612c55565b8481526001600160a01b03841660208201526060604082015260006127c1606083018486612c55565b600060208284031215612d0f57600080fd5b815180151581146119f157600080fd5b600060208284031215612d3157600080fd5b5051919050565b8183823760009101908152919050565b60008251612d5a818460208701612922565b919091019291505056fea26469706673582212201821442f44389baeb888640e13de33662eed4aff4f3c0ea195d55f55d8f2920864736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"zetaConnector_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"custody_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea2646970667358221220a687edeef343516f84769d1a465816f153b29abeb9124499976e38f91c91a58864736f6c634300081a0033", } // GatewayEVMABI is the input ABI used to generate the binding from. @@ -827,23 +827,23 @@ func (_GatewayEVM *GatewayEVMTransactorSession) GrantRole(role [32]byte, account // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "initialize", _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVM *GatewayEVMTransactor) Initialize(opts *bind.TransactOpts, tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "initialize", tssAddress_, zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVM *GatewayEVMSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVM *GatewayEVMSession) Initialize(tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, tssAddress_, zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) Initialize(tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.Initialize(&_GatewayEVM.TransactOpts, tssAddress_, zetaToken_, admin_) } // Pause is a paid mutator transaction binding the contract method 0x8456cb59. @@ -932,44 +932,44 @@ func (_GatewayEVM *GatewayEVMTransactorSession) RevokeRole(role [32]byte, accoun // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "setConnector", _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVM *GatewayEVMTransactor) SetConnector(opts *bind.TransactOpts, zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "setConnector", zetaConnector_) } // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVM *GatewayEVMSession) SetConnector(zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, zetaConnector_) } // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) SetConnector(zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetConnector(&_GatewayEVM.TransactOpts, zetaConnector_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.contract.Transact(opts, "setCustody", _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVM *GatewayEVMTransactor) SetCustody(opts *bind.TransactOpts, custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.contract.Transact(opts, "setCustody", custody_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVM *GatewayEVMSession) SetCustody(custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, custody_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVM *GatewayEVMTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVM *GatewayEVMTransactorSession) SetCustody(custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVM.Contract.SetCustody(&_GatewayEVM.TransactOpts, custody_) } // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go index af1ce1ad..7ac62ad9 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. var GatewayEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061b7c8806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610cb3565b6040516101b691906168aa565b60405180910390f35b6101c7610d15565b6040516101b69190616946565b61018f610e57565b6101a96112c4565b6101a9611324565b61018f611384565b6101fc611781565b6040516101b69190616aac565b610211611903565b6040516101b69190616b4a565b6102266119d3565b6040516101b69190616bc1565b61018f611ace565b61018f611cea565b610226611ecf565b610211611fca565b61025b61209a565b60405190151581526020016101b6565b61018f61216e565b61018f612308565b6101a96124b7565b61018f612517565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c87565b826126b9565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce906167ca565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610698906167ca565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261080d919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052612738565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754602554604051929391821692911690610899906167d7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108d5573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546025546040519385169492831693918316921690610930906167e4565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610974573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610d0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ced575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e37578382906000526020600020018054610daa90616c9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd690616c9a565b8015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b505050505081526020019060010190610d8b565b505050508152505081526020019060010190610d39565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190616ce7565b9050610ef46000826126b9565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110f1928992909116908790616d22565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361115293908216928992909116908790600401616d4a565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190616ce7565b905061121c84826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190616ce7565b90506112bd856028546105719190616d81565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190616ce7565b90506114216000826126b9565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190616ce7565b90506116e083826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190616ce7565b9050610cad846028546105719190616d81565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002090600202016040518060400160405290816000820180546117d890616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461180490616c9a565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118985790505b505050505081525050815260200190600101906117a5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461194690616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461197290616c9a565b80156119bf5780601f10611994576101008083540402835291602001916119bf565b820191906000526020600020905b8154815290600101906020018083116119a257829003601f168201915b505050505081526020019060010190611927565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ab657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a635790505b505050505081525050815260200190600101906119f7565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c419087906000908790616d22565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c9b92909116908690600401616d94565b6000604051808303818588803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b50506027546001600160a01b0316319250610cad915061057190508585616c87565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e4a908590616db6565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611ea1929116908590600401616d94565b600060405180830381600087803b158015611ebb57600080fd5b505af11580156112bd573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fb257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f5f5790505b50505050508152505081526020019060010190611ef3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461200d90616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461203990616c9a565b80156120865780601f1061205b57610100808354040283529160200191612086565b820191906000526020600020905b81548152906001019060200180831161206957829003601f168201915b505050505081526020019060010190611fee565b60085460009060ff16156120b2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190616ce7565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122659060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561227f57600080fd5b505af1158015612293573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122ee9392831692889216908790600401616d4a565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123ff9060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124819216908690600401616d94565b6000604051808303818588803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561258a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ae9190616d00565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611ea1565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561272457600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127426167f1565b61274d848483612757565b9150505b92915050565b60008061276485846127d2565b90506127c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016127b2929190616d94565b604051602081830303815290604052856127de565b9150505b9392505050565b60006127cb838361280c565b60c08101515160009015612802576127fb84848460c00151612827565b90506127cb565b6127fb84846129cd565b60006128188383612ab8565b6127cb838360200151846127de565b600080612832612ac8565b905060006128408683612b9b565b905060006128578260600151836020015185613041565b9050600061286783838989613253565b90506000612874826140d0565b602081015181519192509060030b156128e75789826040015160405160200161289e929190616dc9565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128de91600401616db6565b60405180910390fd5b600061292a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161429f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061297d908490600401616db6565b602060405180830381865afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190616e4a565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590612a22908790600401616db6565b600060405180830381865afa158015612a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a679190810190616f5b565b90506000612a958285604051602001612a81929190616f90565b60405160208183030381529060405261449f565b90506001600160a01b03811661274d57848460405160200161289e929190616fbf565b612ac4828260006144b2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b4f90849060040161706a565b600060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9491908101906170b1565b9250505090565b612bcd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612c186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612c21856145b5565b60208201526000612c318661499a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9b91908101906170b1565b86838560200151604051602001612cb594939291906170fa565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612d0d908590600401616db6565b600060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906170b1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d9a9084906004016171fe565b602060405180830381865afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190616d00565b612df0578160405160200161289e9190617250565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e359084906004016172e2565b600060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7a91908101906170b1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612ec1908490600401617334565b602060405180830381865afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190616d00565b15612f97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f4c908490600401617334565b600060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9191908101906170b1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612fbc9190617386565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fe89291906173f2565b600060405180830381865afa158015613005573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302d91908101906170b1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161305d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106130bd576130bd617417565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061311157613111617417565b60200260200101819052508460405160200161312d9190617446565b6040516020818303038152906040528160028151811061314f5761314f617417565b60200260200101819052508260405160200161316b91906174b2565b6040516020818303038152906040528160038151811061318d5761318d617417565b602002602001018190525060006131a3826140d0565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132349060408051808201825260008082526020918201528151808301909252845182528085019082015290614c1d565b613249578560405160200161289e91906174f3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156132a3565b511590565b6134175782602001511561335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128de565b8260c0015115613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128de565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161343057905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061348b90617584565b935060ff16815181106134a0576134a0617417565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134f191906175a3565b60405160208183030381529060405282828061350c90617584565b935060ff168151811061352157613521617417565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061356e90617584565b935060ff168151811061358357613583617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135d090617584565b935060ff16815181106135e5576135e5617417565b6020026020010181905250876020015182828061360190617584565b935060ff168151811061361657613616617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061366390617584565b935060ff168151811061367857613678617417565b60209081029190910101528751828261369081617584565b935060ff16815181106136a5576136a5617417565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136f290617584565b935060ff168151811061370757613707617417565b602002602001018190525061371b46614c7e565b828261372681617584565b935060ff168151811061373b5761373b617417565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061378890617584565b935060ff168151811061379d5761379d617417565b6020026020010181905250868282806137b590617584565b935060ff16815181106137ca576137ca617417565b60209081029190910101528551156138f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261381b81617584565b935060ff168151811061383057613830617417565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613880908990600401616db6565b600060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138c591908101906170b1565b82826138d081617584565b935060ff16815181106138e5576138e5617417565b60200260200101819052505b8460200151156139c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261393a81617584565b935060ff168151811061394f5761394f617417565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061399c90617584565b935060ff16815181106139b1576139b1617417565b6020026020010181905250613b88565b6139f961329e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a8c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a3c81617584565b935060ff1681518110613a5157613a51617417565b60200260200101819052508460a00151604051602001613a719190617446565b60405160208183030381529060405282828061399c90617584565b8460c00151158015613acf575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613acd90511590565b155b15613b885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613b1381617584565b935060ff1681518110613b2857613b28617417565b6020026020010181905250613b3c88614d1e565b604051602001613b4c9190617446565b604051602081830303815290604052828280613b6790617584565b935060ff1681518110613b7c57613b7c617417565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613bbc90511590565b613c515760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bff81617584565b935060ff1681518110613c1457613c14617417565b60200260200101819052508460400151828280613c3090617584565b935060ff1681518110613c4557613c45617417565b60200260200101819052505b606085015115613d725760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c9a81617584565b935060ff1681518110613caf57613caf617417565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d4691908101906170b1565b8282613d5181617584565b935060ff1681518110613d6657613d66617417565b60200260200101819052505b60e08501515115613e195760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613dbc81617584565b935060ff1681518110613dd157613dd1617417565b6020026020010181905250613ded8560e0015160000151614c7e565b8282613df881617584565b935060ff1681518110613e0d57613e0d617417565b60200260200101819052505b60e08501516020015115613ec35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e6681617584565b935060ff1681518110613e7b57613e7b617417565b6020026020010181905250613e978560e0015160200151614c7e565b8282613ea281617584565b935060ff1681518110613eb757613eb7617417565b60200260200101819052505b60e08501516040015115613f6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613f1081617584565b935060ff1681518110613f2557613f25617417565b6020026020010181905250613f418560e0015160400151614c7e565b8282613f4c81617584565b935060ff1681518110613f6157613f61617417565b60200260200101819052505b60e085015160600151156140175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613fba81617584565b935060ff1681518110613fcf57613fcf617417565b6020026020010181905250613feb8560e0015160600151614c7e565b8282613ff681617584565b935060ff168151811061400b5761400b617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561403557614035616e73565b60405190808252806020026020018201604052801561406857816020015b60608152602001906001900390816140535790505b50905060005b8260ff168160ff1610156140c157838160ff168151811061409157614091617417565b6020026020010151828260ff16815181106140ae576140ae617417565b602090810291909101015260010161406e565b5093505050505b949350505050565b6140f76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161417d9186910161760e565b600060405180830381865afa15801561419a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141c291908101906170b1565b905060006141d0868361580d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016142009190616b4a565b6000604051808303816000875af115801561421f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142479190810190617655565b805190915060030b158015906142605750602081015151155b801561426f5750604081015151155b15613249578160008151811061428757614287617417565b602002602001015160405160200161289e919061770b565b606060006142d48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061430b9082905b90615962565b15614468576000614388826143828461437c61434e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90615989565b906159eb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143ec908290615962565b1561445657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614453905b8290615a70565b90505b61445f81615a96565b925050506127cb565b821561448157848460405160200161289e9291906178f7565b50506040805160208101909152600081526127cb565b509392505050565b6000808251602084016000f09392505050565b8160a00151156144c157505050565b60006144ce848484615aff565b905060006144db826140d0565b602081015181519192509060030b1580156145775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790604080518082018252600080825260209182015281518083019092528451825280850190820152614305565b1561458457505050505050565b604082015151156145a457816040015160405160200161289e919061799e565b8060405160200161289e91906179fc565b606060006145ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061464f905b8290614c1d565b156146be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b990839061609a565b615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614720905b8290616124565b6001036147ed57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147869061444c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9905b8390615a70565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261484c90614648565b1561498357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906148b49083906161be565b9050600081600183516148c79190616d81565b815181106148d7576148d7617417565b6020026020010151905061497a6146b961494d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061609a565b95945050505050565b8260405160200161289e9190617a67565b50919050565b606060006149cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a3190614648565b15614a3f576127cb81615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a9e90614719565b600103614b0857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9906147e6565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b6790614648565b1561498357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614bcf9083906161be565b9050600181511115614c0b578060028251614bea9190616d81565b81518110614bfa57614bfa617417565b602002602001015192505050919050565b508260405160200161289e9190617a67565b805182516000911115614c3257506000612751565b81518351602085015160009291614c4891616c87565b614c529190616d81565b905082602001518103614c69576001915050612751565b82516020840151819020912014905092915050565b60606000614c8b83616263565b600101905060008167ffffffffffffffff811115614cab57614cab616e73565b6040519080825280601f01601f191660200182016040528015614cd5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cdf57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614daa905b8290616345565b15614dea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e4990614da3565b15614e8957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ee890614da3565b15614f2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f8790614da3565b80614fec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fec90614da3565b1561502c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261508b90614da3565b806150f05750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f090614da3565b1561513057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261518f90614da3565b806151f45750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151f490614da3565b1561523457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529390614da3565b806152f85750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152f890614da3565b1561533857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261539790614da3565b156153d757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261543690614da3565b1561547657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d590614da3565b1561551557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261557490614da3565b156155b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261561390614da3565b1561565357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156b290614da3565b806157175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261571790614da3565b1561575757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157b690614da3565b156157f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161289e9290602001617b45565b60608060005b8451811015615898578185828151811061582f5761582f617417565b6020026020010151604051602001615848929190616f90565b6040516020818303038152906040529150600185516158679190616d81565b8114615890578160405160200161587e9190617cae565b60405160208183030381529060405291505b600101615813565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816158b157905050905083816000815181106158dc576158dc617417565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061593057615930617417565b6020026020010181905250818160028151811061594f5761594f617417565b6020908102919091010152949350505050565b60208083015183518351928401516000936159809291849190616359565b14159392505050565b604080518082019091526000808252602082015260006159bb846000015185602001518560000151866020015161646a565b90508360200151816159cd9190616d81565b845185906159dc908390616d81565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615a10575081612751565b6020808301519084015160019114615a375750815160208481015190840151829020919020145b8015615a6857825184518590615a4e908390616d81565b9052508251602085018051615a64908390616c87565b9052505b509192915050565b6040805180820190915260008082526020820152615a8f83838361658a565b5092915050565b60606000826000015167ffffffffffffffff811115615ab757615ab7616e73565b6040519080825280601f01601f191660200182016040528015615ae1576020820181803683370190505b5090506000602082019050615a8f8185602001518660000151616635565b60606000615b0b612ac8565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615b2857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b8390617584565b935060ff1681518110615b9857615b98617417565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615be99190617cef565b604051602081830303815290604052828280615c0490617584565b935060ff1681518110615c1957615c19617417565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c6690617584565b935060ff1681518110615c7b57615c7b617417565b602002602001018190525082604051602001615c9791906174b2565b604051602081830303815290604052828280615cb290617584565b935060ff1681518110615cc757615cc7617417565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615d1490617584565b935060ff1681518110615d2957615d29617417565b6020026020010181905250615d3e87846166af565b8282615d4981617584565b935060ff1681518110615d5e57615d5e617417565b602090810291909101015285515115615e0a5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615db081617584565b935060ff1681518110615dc557615dc5617417565b6020026020010181905250615dde8660000151846166af565b8282615de981617584565b935060ff1681518110615dfe57615dfe617417565b60200260200101819052505b856080015115615e785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e5381617584565b935060ff1681518110615e6857615e68617417565b6020026020010181905250615ede565b8415615ede5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615ebd81617584565b935060ff1681518110615ed257615ed2617417565b60200260200101819052505b60408601515115615f7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615f2881617584565b935060ff1681518110615f3d57615f3d617417565b60200260200101819052508560400151828280615f5990617584565b935060ff1681518110615f6e57615f6e617417565b60200260200101819052505b856060015115615fe45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615fc381617584565b935060ff1681518110615fd857615fd8617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561600257616002616e73565b60405190808252806020026020018201604052801561603557816020015b60608152602001906001900390816160205790505b50905060005b8260ff168160ff16101561608e57838160ff168151811061605e5761605e617417565b6020026020010151828260ff168151811061607b5761607b617417565b602090810291909101015260010161603b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156160bf575081612751565b815183516020850151600092916160d591616c87565b6160df9190616d81565b60208401519091506001908214616100575082516020840151819020908220145b801561611b57835185518690616117908390616d81565b9052505b50929392505050565b6000808260000151616148856000015186602001518660000151876020015161646a565b6161529190616c87565b90505b835160208501516161669190616c87565b8111615a8f578161617681617d34565b92505082600001516161ad8560200151836161919190616d81565b865161619d9190616d81565b838660000151876020015161646a565b6161b79190616c87565b9050616155565b606060006161cc8484616124565b6161d7906001616c87565b67ffffffffffffffff8111156161ef576161ef616e73565b60405190808252806020026020018201604052801561622257816020015b606081526020019060019003908161620d5790505b50905060005b81518110156144975761623e6146b98686615a70565b82828151811061625057616250617417565b6020908102919091010152600101616228565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106162ac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162d8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162f657662386f26fc10000830492506010015b6305f5e100831061630e576305f5e100830492506008015b612710831061632257612710830492506004015b60648310616334576064830492506002015b600a83106127515760010192915050565b600061635183836166ef565b159392505050565b600080858411616460576020841161640c57600084156163a4576001616380866020616d81565b61638b906008617d4e565b616396906002617e4c565b6163a09190616d81565b1990505b83518116856163b38989616c87565b6163bd9190616d81565b805190935082165b8181146163f7578784116163df57879450505050506140c8565b836163e981617e58565b9450508284511690506163c5565b6164018785616c87565b9450505050506140c8565b8383206164198588616d81565b6164239087616c87565b91505b85821061645e5784822080820361644b576164418684616c87565b93505050506140c8565b616456600184616d81565b925050616426565b505b5092949350505050565b60008381868511616575576020851161652457600085156164b6576001616492876020616d81565b61649d906008617d4e565b6164a8906002617e4c565b6164b29190616d81565b1990505b845181166000876164c78b8b616c87565b6164d19190616d81565b855190915083165b828114616516578186106164fe576164f18b8b616c87565b96505050505050506140c8565b8561650881617d34565b9650508386511690506164d9565b8596505050505050506140c8565b508383206000905b6165368689616d81565b82116165735785832080820361655257839450505050506140c8565b61655d600185616c87565b935050818061656b90617d34565b92505061652c565b505b61657f8787616c87565b979650505050505050565b604080518082019091526000808252602082015260006165bc856000015186602001518660000151876020015161646a565b6020808701805191860191909152519091506165d89082616d81565b8352845160208601516165eb9190616c87565b81036165fa576000855261662c565b835183516166089190616c87565b85518690616617908390616d81565b90525083516166269082616c87565b60208601525b50909392505050565b6020811061666d578151835261664c602084616c87565b9250616659602083616c87565b9150616666602082616d81565b9050616635565b600019811561669c576001616683836020616d81565b61668f90610100617e4c565b6166999190616d81565b90505b9151835183169219169190911790915250565b606060006166bd8484612b9b565b80516020808301516040519394506166d793909101617e6f565b60405160208183030381529060405291505092915050565b8151815160009190811115616702575081515b6020808501519084015160005b838110156167bb578251825180821461678b57600019602087101561676a5760018461673c896020616d81565b6167469190616c87565b616751906008617d4e565b61675c906002617e4c565b6167669190616d81565b1990505b81811683821681810391146167885797506127519650505050505050565b50505b616796602086616c87565b94506167a3602085616c87565b935050506020816167b49190616c87565b905061670f565b50845186516132499190617ec7565b610c9f80617ee883390190565b6113e280618b8783390190565b61182a80619f6983390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001616834616839565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168346040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168eb5783516001600160a01b03168352602093840193909201916001016168c4565b509095945050505050565b60005b838110156169115781810151838201526020016168f9565b50506000910152565b600081518084526169328160208601602086016168f6565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352616a1284865161691a565b60209586019590945092909201916001016169d8565b50919750505060209485019492909201915060010161696e565b50929695505050505050565b600081518084526020840193506020830160005b82811015616aa25781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a62565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616b18604088018261691a565b9050602082015191508681036020880152616b338183616a4e565b965050506020938401939190910190600101616ad4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616bac85835161691a565b94506020938401939190910190600101616b72565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c426040870182616a4e565b9550506020938401939190910190600101616be9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561275157612751616c58565b600181811c90821680616cae57607f821691505b602082108103614994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616cf957600080fd5b5051919050565b600060208284031215616d1257600080fd5b815180151581146127cb57600080fd5b8381526001600160a01b038316602082015260606040820152600061497a606083018461691a565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000613249608083018461691a565b8181038181111561275157612751616c58565b6001600160a01b03831681526040602082015260006140c8604083018461691a565b6020815260006127cb602083018461691a565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616e0181601a8501602088016168f6565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e3e81601c8401602088016168f6565b01601c01949350505050565b600060208284031215616e5c57600080fd5b81516001600160a01b03811681146127cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616ec557616ec5616e73565b60405290565b60008067ffffffffffffffff841115616ee657616ee6616e73565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616f1557616f15616e73565b604052838152905080828401851015616f2d57600080fd5b6144978460208301856168f6565b600082601f830112616f4c57600080fd5b6127cb83835160208501616ecb565b600060208284031215616f6d57600080fd5b815167ffffffffffffffff811115616f8457600080fd5b61274d84828501616f3b565b60008351616fa28184602088016168f6565b835190830190616fb68183602088016168f6565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616ff781601a8501602088016168f6565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170348160338401602088016168f6565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006127cb608083018461691a565b6000602082840312156170c357600080fd5b815167ffffffffffffffff8111156170da57600080fd5b8201601f810184136170eb57600080fd5b61274d84825160208401616ecb565b6000855161710c818460208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551617146816001840160208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171848160028401602089016168f6565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516171c68160028401602088016168f6565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000617211604083018461691a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161728881601f8501602087016168f6565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172f5604083018461691a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000617347604083018461691a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173be8160148501602087016168f6565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000617405604083018561691a565b82810360208401526127c7818561691a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161747e8160018501602087016168f6565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174c48184602087016168f6565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161757781604b8501602087016168f6565b91909101604b0192915050565b600060ff821660ff810361759a5761759a616c58565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006127cb608083018461691a565b60006020828403121561766757600080fd5b815167ffffffffffffffff81111561767e57600080fd5b82016060818503121561769057600080fd5b617698616ea2565b81518060030b81146176a957600080fd5b8152602082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f3b565b602083015250604082015167ffffffffffffffff8111156176f157600080fd5b6176fd86828501616f3b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516177698160218501602087016168f6565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179558160218501602088016168f6565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161799281602e8401602088016168f6565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a5a8160228501602087016168f6565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a9f81600e8501602087016168f6565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b7d8160188501602088016168f6565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617bba81601c8401602088016168f6565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617cc08184602087016168f6565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617d2781601c8501602087016168f6565b91909101601c0192915050565b60006000198203617d4757617d47616c58565b5060010190565b808202811582820484141761275157612751616c58565b6001815b6001841115617da057808504811115617d8457617d84616c58565b6001841615617d9257908102905b60019390931c928002617d69565b935093915050565b600082617db757506001612751565b81617dc457506000612751565b8160018114617dda5760028114617de457617e00565b6001915050612751565b60ff841115617df557617df5616c58565b50506001821b612751565b5060208310610133831016604e8410600b8410161715617e23575081810a612751565b617e306000198484617d65565b8060001904821115617e4457617e44616c58565b029392505050565b60006127cb8383617da8565b600081617e6757617e67616c58565b506000190190565b60008351617e818184602088016168f6565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617ebb8160018401602088016168f6565b01600101949350505050565b8181036000831280158383131683831282161715615a8f57615a8f616c5856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033a2646970667358221220b68ef6a2e59ebd6ec07004817f94d2e8ad26c5b98e5fa2bbd022b8eb674f554764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061b7c0806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610cb3565b6040516101b691906168aa565b60405180910390f35b6101c7610d15565b6040516101b69190616946565b61018f610e57565b6101a96112c4565b6101a9611324565b61018f611384565b6101fc611781565b6040516101b69190616aac565b610211611903565b6040516101b69190616b4a565b6102266119d3565b6040516101b69190616bc1565b61018f611ace565b61018f611cea565b610226611ecf565b610211611fca565b61025b61209a565b60405190151581526020016101b6565b61018f61216e565b61018f612308565b6101a96124b7565b61018f612517565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c87565b826126b9565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce906167ca565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610698906167ca565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261080d919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052612738565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754602554604051929391821692911690610899906167d7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108d5573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546025546040519385169492831693918316921690610930906167e4565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610974573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610d0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ced575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e37578382906000526020600020018054610daa90616c9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd690616c9a565b8015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b505050505081526020019060010190610d8b565b505050508152505081526020019060010190610d39565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190616ce7565b9050610ef46000826126b9565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110f1928992909116908790616d22565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361115293908216928992909116908790600401616d4a565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190616ce7565b905061121c84826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190616ce7565b90506112bd856028546105719190616d81565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190616ce7565b90506114216000826126b9565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190616ce7565b90506116e083826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190616ce7565b9050610cad846028546105719190616d81565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002090600202016040518060400160405290816000820180546117d890616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461180490616c9a565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118985790505b505050505081525050815260200190600101906117a5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461194690616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461197290616c9a565b80156119bf5780601f10611994576101008083540402835291602001916119bf565b820191906000526020600020905b8154815290600101906020018083116119a257829003601f168201915b505050505081526020019060010190611927565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ab657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a635790505b505050505081525050815260200190600101906119f7565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c419087906000908790616d22565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c9b92909116908690600401616d94565b6000604051808303818588803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b50506027546001600160a01b0316319250610cad915061057190508585616c87565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e4a908590616db6565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611ea1929116908590600401616d94565b600060405180830381600087803b158015611ebb57600080fd5b505af11580156112bd573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fb257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f5f5790505b50505050508152505081526020019060010190611ef3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461200d90616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461203990616c9a565b80156120865780601f1061205b57610100808354040283529160200191612086565b820191906000526020600020905b81548152906001019060200180831161206957829003601f168201915b505050505081526020019060010190611fee565b60085460009060ff16156120b2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190616ce7565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122659060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561227f57600080fd5b505af1158015612293573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122ee9392831692889216908790600401616d4a565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123ff9060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124819216908690600401616d94565b6000604051808303818588803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561258a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ae9190616d00565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611ea1565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561272457600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127426167f1565b61274d848483612757565b9150505b92915050565b60008061276485846127d2565b90506127c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016127b2929190616d94565b604051602081830303815290604052856127de565b9150505b9392505050565b60006127cb838361280c565b60c08101515160009015612802576127fb84848460c00151612827565b90506127cb565b6127fb84846129cd565b60006128188383612ab8565b6127cb838360200151846127de565b600080612832612ac8565b905060006128408683612b9b565b905060006128578260600151836020015185613041565b9050600061286783838989613253565b90506000612874826140d0565b602081015181519192509060030b156128e75789826040015160405160200161289e929190616dc9565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128de91600401616db6565b60405180910390fd5b600061292a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161429f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061297d908490600401616db6565b602060405180830381865afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190616e4a565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590612a22908790600401616db6565b600060405180830381865afa158015612a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a679190810190616f5b565b90506000612a958285604051602001612a81929190616f90565b60405160208183030381529060405261449f565b90506001600160a01b03811661274d57848460405160200161289e929190616fbf565b612ac4828260006144b2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b4f90849060040161706a565b600060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9491908101906170b1565b9250505090565b612bcd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612c186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612c21856145b5565b60208201526000612c318661499a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9b91908101906170b1565b86838560200151604051602001612cb594939291906170fa565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612d0d908590600401616db6565b600060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906170b1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d9a9084906004016171fe565b602060405180830381865afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190616d00565b612df0578160405160200161289e9190617250565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e359084906004016172e2565b600060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7a91908101906170b1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612ec1908490600401617334565b602060405180830381865afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190616d00565b15612f97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f4c908490600401617334565b600060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9191908101906170b1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612fbc9190617386565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fe89291906173f2565b600060405180830381865afa158015613005573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302d91908101906170b1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161305d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106130bd576130bd617417565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061311157613111617417565b60200260200101819052508460405160200161312d9190617446565b6040516020818303038152906040528160028151811061314f5761314f617417565b60200260200101819052508260405160200161316b91906174b2565b6040516020818303038152906040528160038151811061318d5761318d617417565b602002602001018190525060006131a3826140d0565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132349060408051808201825260008082526020918201528151808301909252845182528085019082015290614c1d565b613249578560405160200161289e91906174f3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156132a3565b511590565b6134175782602001511561335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128de565b8260c0015115613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128de565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161343057905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061348b90617584565b935060ff16815181106134a0576134a0617417565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134f191906175a3565b60405160208183030381529060405282828061350c90617584565b935060ff168151811061352157613521617417565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061356e90617584565b935060ff168151811061358357613583617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135d090617584565b935060ff16815181106135e5576135e5617417565b6020026020010181905250876020015182828061360190617584565b935060ff168151811061361657613616617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061366390617584565b935060ff168151811061367857613678617417565b60209081029190910101528751828261369081617584565b935060ff16815181106136a5576136a5617417565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136f290617584565b935060ff168151811061370757613707617417565b602002602001018190525061371b46614c7e565b828261372681617584565b935060ff168151811061373b5761373b617417565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061378890617584565b935060ff168151811061379d5761379d617417565b6020026020010181905250868282806137b590617584565b935060ff16815181106137ca576137ca617417565b60209081029190910101528551156138f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261381b81617584565b935060ff168151811061383057613830617417565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613880908990600401616db6565b600060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138c591908101906170b1565b82826138d081617584565b935060ff16815181106138e5576138e5617417565b60200260200101819052505b8460200151156139c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261393a81617584565b935060ff168151811061394f5761394f617417565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061399c90617584565b935060ff16815181106139b1576139b1617417565b6020026020010181905250613b88565b6139f961329e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a8c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a3c81617584565b935060ff1681518110613a5157613a51617417565b60200260200101819052508460a00151604051602001613a719190617446565b60405160208183030381529060405282828061399c90617584565b8460c00151158015613acf575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613acd90511590565b155b15613b885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613b1381617584565b935060ff1681518110613b2857613b28617417565b6020026020010181905250613b3c88614d1e565b604051602001613b4c9190617446565b604051602081830303815290604052828280613b6790617584565b935060ff1681518110613b7c57613b7c617417565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613bbc90511590565b613c515760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bff81617584565b935060ff1681518110613c1457613c14617417565b60200260200101819052508460400151828280613c3090617584565b935060ff1681518110613c4557613c45617417565b60200260200101819052505b606085015115613d725760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c9a81617584565b935060ff1681518110613caf57613caf617417565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d4691908101906170b1565b8282613d5181617584565b935060ff1681518110613d6657613d66617417565b60200260200101819052505b60e08501515115613e195760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613dbc81617584565b935060ff1681518110613dd157613dd1617417565b6020026020010181905250613ded8560e0015160000151614c7e565b8282613df881617584565b935060ff1681518110613e0d57613e0d617417565b60200260200101819052505b60e08501516020015115613ec35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e6681617584565b935060ff1681518110613e7b57613e7b617417565b6020026020010181905250613e978560e0015160200151614c7e565b8282613ea281617584565b935060ff1681518110613eb757613eb7617417565b60200260200101819052505b60e08501516040015115613f6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613f1081617584565b935060ff1681518110613f2557613f25617417565b6020026020010181905250613f418560e0015160400151614c7e565b8282613f4c81617584565b935060ff1681518110613f6157613f61617417565b60200260200101819052505b60e085015160600151156140175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613fba81617584565b935060ff1681518110613fcf57613fcf617417565b6020026020010181905250613feb8560e0015160600151614c7e565b8282613ff681617584565b935060ff168151811061400b5761400b617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561403557614035616e73565b60405190808252806020026020018201604052801561406857816020015b60608152602001906001900390816140535790505b50905060005b8260ff168160ff1610156140c157838160ff168151811061409157614091617417565b6020026020010151828260ff16815181106140ae576140ae617417565b602090810291909101015260010161406e565b5093505050505b949350505050565b6140f76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161417d9186910161760e565b600060405180830381865afa15801561419a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141c291908101906170b1565b905060006141d0868361580d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016142009190616b4a565b6000604051808303816000875af115801561421f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142479190810190617655565b805190915060030b158015906142605750602081015151155b801561426f5750604081015151155b15613249578160008151811061428757614287617417565b602002602001015160405160200161289e919061770b565b606060006142d48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061430b9082905b90615962565b15614468576000614388826143828461437c61434e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90615989565b906159eb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143ec908290615962565b1561445657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614453905b8290615a70565b90505b61445f81615a96565b925050506127cb565b821561448157848460405160200161289e9291906178f7565b50506040805160208101909152600081526127cb565b509392505050565b6000808251602084016000f09392505050565b8160a00151156144c157505050565b60006144ce848484615aff565b905060006144db826140d0565b602081015181519192509060030b1580156145775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790604080518082018252600080825260209182015281518083019092528451825280850190820152614305565b1561458457505050505050565b604082015151156145a457816040015160405160200161289e919061799e565b8060405160200161289e91906179fc565b606060006145ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061464f905b8290614c1d565b156146be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b990839061609a565b615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614720905b8290616124565b6001036147ed57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147869061444c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9905b8390615a70565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261484c90614648565b1561498357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906148b49083906161be565b9050600081600183516148c79190616d81565b815181106148d7576148d7617417565b6020026020010151905061497a6146b961494d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061609a565b95945050505050565b8260405160200161289e9190617a67565b50919050565b606060006149cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a3190614648565b15614a3f576127cb81615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a9e90614719565b600103614b0857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9906147e6565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b6790614648565b1561498357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614bcf9083906161be565b9050600181511115614c0b578060028251614bea9190616d81565b81518110614bfa57614bfa617417565b602002602001015192505050919050565b508260405160200161289e9190617a67565b805182516000911115614c3257506000612751565b81518351602085015160009291614c4891616c87565b614c529190616d81565b905082602001518103614c69576001915050612751565b82516020840151819020912014905092915050565b60606000614c8b83616263565b600101905060008167ffffffffffffffff811115614cab57614cab616e73565b6040519080825280601f01601f191660200182016040528015614cd5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cdf57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614daa905b8290616345565b15614dea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e4990614da3565b15614e8957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ee890614da3565b15614f2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f8790614da3565b80614fec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fec90614da3565b1561502c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261508b90614da3565b806150f05750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f090614da3565b1561513057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261518f90614da3565b806151f45750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151f490614da3565b1561523457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529390614da3565b806152f85750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152f890614da3565b1561533857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261539790614da3565b156153d757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261543690614da3565b1561547657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d590614da3565b1561551557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261557490614da3565b156155b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261561390614da3565b1561565357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156b290614da3565b806157175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261571790614da3565b1561575757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157b690614da3565b156157f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161289e9290602001617b45565b60608060005b8451811015615898578185828151811061582f5761582f617417565b6020026020010151604051602001615848929190616f90565b6040516020818303038152906040529150600185516158679190616d81565b8114615890578160405160200161587e9190617cae565b60405160208183030381529060405291505b600101615813565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816158b157905050905083816000815181106158dc576158dc617417565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061593057615930617417565b6020026020010181905250818160028151811061594f5761594f617417565b6020908102919091010152949350505050565b60208083015183518351928401516000936159809291849190616359565b14159392505050565b604080518082019091526000808252602082015260006159bb846000015185602001518560000151866020015161646a565b90508360200151816159cd9190616d81565b845185906159dc908390616d81565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615a10575081612751565b6020808301519084015160019114615a375750815160208481015190840151829020919020145b8015615a6857825184518590615a4e908390616d81565b9052508251602085018051615a64908390616c87565b9052505b509192915050565b6040805180820190915260008082526020820152615a8f83838361658a565b5092915050565b60606000826000015167ffffffffffffffff811115615ab757615ab7616e73565b6040519080825280601f01601f191660200182016040528015615ae1576020820181803683370190505b5090506000602082019050615a8f8185602001518660000151616635565b60606000615b0b612ac8565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615b2857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b8390617584565b935060ff1681518110615b9857615b98617417565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615be99190617cef565b604051602081830303815290604052828280615c0490617584565b935060ff1681518110615c1957615c19617417565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c6690617584565b935060ff1681518110615c7b57615c7b617417565b602002602001018190525082604051602001615c9791906174b2565b604051602081830303815290604052828280615cb290617584565b935060ff1681518110615cc757615cc7617417565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615d1490617584565b935060ff1681518110615d2957615d29617417565b6020026020010181905250615d3e87846166af565b8282615d4981617584565b935060ff1681518110615d5e57615d5e617417565b602090810291909101015285515115615e0a5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615db081617584565b935060ff1681518110615dc557615dc5617417565b6020026020010181905250615dde8660000151846166af565b8282615de981617584565b935060ff1681518110615dfe57615dfe617417565b60200260200101819052505b856080015115615e785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e5381617584565b935060ff1681518110615e6857615e68617417565b6020026020010181905250615ede565b8415615ede5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615ebd81617584565b935060ff1681518110615ed257615ed2617417565b60200260200101819052505b60408601515115615f7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615f2881617584565b935060ff1681518110615f3d57615f3d617417565b60200260200101819052508560400151828280615f5990617584565b935060ff1681518110615f6e57615f6e617417565b60200260200101819052505b856060015115615fe45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615fc381617584565b935060ff1681518110615fd857615fd8617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561600257616002616e73565b60405190808252806020026020018201604052801561603557816020015b60608152602001906001900390816160205790505b50905060005b8260ff168160ff16101561608e57838160ff168151811061605e5761605e617417565b6020026020010151828260ff168151811061607b5761607b617417565b602090810291909101015260010161603b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156160bf575081612751565b815183516020850151600092916160d591616c87565b6160df9190616d81565b60208401519091506001908214616100575082516020840151819020908220145b801561611b57835185518690616117908390616d81565b9052505b50929392505050565b6000808260000151616148856000015186602001518660000151876020015161646a565b6161529190616c87565b90505b835160208501516161669190616c87565b8111615a8f578161617681617d34565b92505082600001516161ad8560200151836161919190616d81565b865161619d9190616d81565b838660000151876020015161646a565b6161b79190616c87565b9050616155565b606060006161cc8484616124565b6161d7906001616c87565b67ffffffffffffffff8111156161ef576161ef616e73565b60405190808252806020026020018201604052801561622257816020015b606081526020019060019003908161620d5790505b50905060005b81518110156144975761623e6146b98686615a70565b82828151811061625057616250617417565b6020908102919091010152600101616228565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106162ac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162d8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162f657662386f26fc10000830492506010015b6305f5e100831061630e576305f5e100830492506008015b612710831061632257612710830492506004015b60648310616334576064830492506002015b600a83106127515760010192915050565b600061635183836166ef565b159392505050565b600080858411616460576020841161640c57600084156163a4576001616380866020616d81565b61638b906008617d4e565b616396906002617e4c565b6163a09190616d81565b1990505b83518116856163b38989616c87565b6163bd9190616d81565b805190935082165b8181146163f7578784116163df57879450505050506140c8565b836163e981617e58565b9450508284511690506163c5565b6164018785616c87565b9450505050506140c8565b8383206164198588616d81565b6164239087616c87565b91505b85821061645e5784822080820361644b576164418684616c87565b93505050506140c8565b616456600184616d81565b925050616426565b505b5092949350505050565b60008381868511616575576020851161652457600085156164b6576001616492876020616d81565b61649d906008617d4e565b6164a8906002617e4c565b6164b29190616d81565b1990505b845181166000876164c78b8b616c87565b6164d19190616d81565b855190915083165b828114616516578186106164fe576164f18b8b616c87565b96505050505050506140c8565b8561650881617d34565b9650508386511690506164d9565b8596505050505050506140c8565b508383206000905b6165368689616d81565b82116165735785832080820361655257839450505050506140c8565b61655d600185616c87565b935050818061656b90617d34565b92505061652c565b505b61657f8787616c87565b979650505050505050565b604080518082019091526000808252602082015260006165bc856000015186602001518660000151876020015161646a565b6020808701805191860191909152519091506165d89082616d81565b8352845160208601516165eb9190616c87565b81036165fa576000855261662c565b835183516166089190616c87565b85518690616617908390616d81565b90525083516166269082616c87565b60208601525b50909392505050565b6020811061666d578151835261664c602084616c87565b9250616659602083616c87565b9150616666602082616d81565b9050616635565b600019811561669c576001616683836020616d81565b61668f90610100617e4c565b6166999190616d81565b90505b9151835183169219169190911790915250565b606060006166bd8484612b9b565b80516020808301516040519394506166d793909101617e6f565b60405160208183030381529060405291505092915050565b8151815160009190811115616702575081515b6020808501519084015160005b838110156167bb578251825180821461678b57600019602087101561676a5760018461673c896020616d81565b6167469190616c87565b616751906008617d4e565b61675c906002617e4c565b6167669190616d81565b1990505b81811683821681810391146167885797506127519650505050505050565b50505b616796602086616c87565b94506167a3602085616c87565b935050506020816167b49190616c87565b905061670f565b50845186516132499190617ec7565b610c9f80617ee883390190565b61140b80618b8783390190565b6117f980619f9283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001616834616839565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168346040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168eb5783516001600160a01b03168352602093840193909201916001016168c4565b509095945050505050565b60005b838110156169115781810151838201526020016168f9565b50506000910152565b600081518084526169328160208601602086016168f6565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352616a1284865161691a565b60209586019590945092909201916001016169d8565b50919750505060209485019492909201915060010161696e565b50929695505050505050565b600081518084526020840193506020830160005b82811015616aa25781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a62565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616b18604088018261691a565b9050602082015191508681036020880152616b338183616a4e565b965050506020938401939190910190600101616ad4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616bac85835161691a565b94506020938401939190910190600101616b72565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c426040870182616a4e565b9550506020938401939190910190600101616be9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561275157612751616c58565b600181811c90821680616cae57607f821691505b602082108103614994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616cf957600080fd5b5051919050565b600060208284031215616d1257600080fd5b815180151581146127cb57600080fd5b8381526001600160a01b038316602082015260606040820152600061497a606083018461691a565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000613249608083018461691a565b8181038181111561275157612751616c58565b6001600160a01b03831681526040602082015260006140c8604083018461691a565b6020815260006127cb602083018461691a565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616e0181601a8501602088016168f6565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e3e81601c8401602088016168f6565b01601c01949350505050565b600060208284031215616e5c57600080fd5b81516001600160a01b03811681146127cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616ec557616ec5616e73565b60405290565b60008067ffffffffffffffff841115616ee657616ee6616e73565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616f1557616f15616e73565b604052838152905080828401851015616f2d57600080fd5b6144978460208301856168f6565b600082601f830112616f4c57600080fd5b6127cb83835160208501616ecb565b600060208284031215616f6d57600080fd5b815167ffffffffffffffff811115616f8457600080fd5b61274d84828501616f3b565b60008351616fa28184602088016168f6565b835190830190616fb68183602088016168f6565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616ff781601a8501602088016168f6565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170348160338401602088016168f6565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006127cb608083018461691a565b6000602082840312156170c357600080fd5b815167ffffffffffffffff8111156170da57600080fd5b8201601f810184136170eb57600080fd5b61274d84825160208401616ecb565b6000855161710c818460208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551617146816001840160208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171848160028401602089016168f6565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516171c68160028401602088016168f6565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000617211604083018461691a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161728881601f8501602087016168f6565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172f5604083018461691a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000617347604083018461691a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173be8160148501602087016168f6565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000617405604083018561691a565b82810360208401526127c7818561691a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161747e8160018501602087016168f6565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174c48184602087016168f6565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161757781604b8501602087016168f6565b91909101604b0192915050565b600060ff821660ff810361759a5761759a616c58565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006127cb608083018461691a565b60006020828403121561766757600080fd5b815167ffffffffffffffff81111561767e57600080fd5b82016060818503121561769057600080fd5b617698616ea2565b81518060030b81146176a957600080fd5b8152602082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f3b565b602083015250604082015167ffffffffffffffff8111156176f157600080fd5b6176fd86828501616f3b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516177698160218501602087016168f6565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179558160218501602088016168f6565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161799281602e8401602088016168f6565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a5a8160228501602087016168f6565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a9f81600e8501602087016168f6565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b7d8160188501602088016168f6565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617bba81601c8401602088016168f6565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617cc08184602087016168f6565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617d2781601c8501602087016168f6565b91909101601c0192915050565b60006000198203617d4757617d47616c58565b5060010190565b808202811582820484141761275157612751616c58565b6001815b6001841115617da057808504811115617d8457617d84616c58565b6001841615617d9257908102905b60019390931c928002617d69565b935093915050565b600082617db757506001612751565b81617dc457506000612751565b8160018114617dda5760028114617de457617e00565b6001915050612751565b60ff841115617df557617df5616c58565b50506001821b612751565b5060208310610133831016604e8410600b8410161715617e23575081810a612751565b617e306000198484617d65565b8060001904821115617e4457617e44616c58565b029392505050565b60006127cb8383617da8565b600081617e6757617e67616c58565b506000190190565b60008351617e818184602088016168f6565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617ebb8160018401602088016168f6565b01600101949350505050565b8181036000831280158383131683831282161715615a8f57615a8f616c5856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033a2646970667358221220c17b103ffe1176e5b14db0e4ed5f4a2d1321456c8f4ac7dca007d03fe908054364736f6c634300081a0033", } // GatewayEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go index 0fb8f15e..778a30ea 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. var GatewayEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ff4d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c8063a3f9d0e011610160578063dd51e82f116100d8578063fa18c09b1161008c578063fb176c1211610071578063fb176c121461049a578063fe7bdbb2146104a2578063fe8e5f1b146104aa57600080fd5b8063fa18c09b14610485578063fa7626d41461048d57600080fd5b8063e63ab1e9116100bd578063e63ab1e91461044e578063eb1ce7f914610475578063f68bd1c01461047d57600080fd5b8063dd51e82f1461043e578063e20c9f711461044657600080fd5b8063b5508aa91161012f578063c9350b7f11610114578063c9350b7f14610426578063cbd57e2f1461042e578063cebad2a61461043657600080fd5b8063b5508aa914610406578063ba414fa61461040e57600080fd5b8063a3f9d0e0146103c7578063a4943deb146103cf578063a783c789146103d7578063b0464fdc146103fe57600080fd5b80633f7286f41161020e57806371149c94116101c257806385226c81116101a757806385226c811461037657806385f438c11461038b578063916a17c6146103b257600080fd5b806371149c94146103665780637d7f772a1461036e57600080fd5b80635d62c860116101f35780635d62c8601461031457806366d9a9a0146103495780636a6218541461035e57600080fd5b80633f7286f41461030457806344671b941461030c57600080fd5b80632206eb65116102655780633e5e3c231161024a5780633e5e3c23146102ec5780633e73ecb4146102f45780633ee92923146102fc57600080fd5b80632206eb65146102cf5780632ade3880146102d757600080fd5b80630a9254e4146102975780630eee72a9146102a15780631779672f146102a95780631ed7831c146102b1575b600080fd5b61029f6104b2565b005b61029f610d62565b61029f610fdd565b6102b9611132565b6040516102c6919061a168565b60405180910390f35b61029f611194565b6102df6113d8565b6040516102c6919061a204565b6102b961151a565b61029f61157a565b61029f611adb565b6102b9611b95565b61029f611bf5565b61033b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6040519081526020016102c6565b610351611f78565b6040516102c6919061a36a565b61029f6120e5565b61029f61219c565b61029f612992565b61037e612ccb565b6040516102c6919061a464565b61033b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6103ba612d9b565b6040516102c6919061a477565b61029f612e81565b61029f61345f565b61033b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6103ba61366f565b61037e613755565b610416613825565b60405190151581526020016102c6565b61029f6138f9565b61029f613b3d565b61029f61409e565b61029f6142d7565b6102b9614a8d565b61033b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61029f614aed565b61029f614c12565b61029f614fc0565b601f546104169060ff1681565b61029f6152e6565b61029f61593a565b61029f615d68565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516105049061a07b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610589573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105ce9061a07b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610652573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261072c919060840160408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615f6e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906107b89061a088565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107f4573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061084f9061a095565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610893573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108d89061a0a2565b604051809103906000f0801580156108f4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc7919061a50e565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b50505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610f1c919060040161a530565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610fa79392831692909116908790879060040161a543565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610f1c565b6060601680548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116c575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061134d919060040161a530565b600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610fa79392831692909116908790879060040161a543565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561151157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114fa57838290600052602060002001805461146d9061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546114999061a57a565b80156114e65780601f106114bb576101008083540402835291602001916114e6565b820191906000526020600020905b8154815290600101906020018083116114c957829003601f168201915b50505050508152602001906001019061144e565b5050505081525050815260200190600101906113fc565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa1580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f3919061a5c7565b9050611600816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611674919061a5c7565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611742916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061a5c7565b90506119c88186615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c919061a5c7565b9050611a5181611a4c888761a637565b615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061a5c7565b9050611ad2816000615f8d565b50505050505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610e18565b6060601780548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b6040805160048082526024820183526020820180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611c96926001600160a01b03169160009187910161a5e0565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611e6490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611f2d9290911690859060040161a663565b6000604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f74919081019061a76d565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000209060020201604051806040016040529081600082018054611fcf9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb9061a57a565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156120cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161208f5790505b50505050508152505081526020019060010190611f9c565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612253919061a5c7565b9050612260816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d4919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916123a2916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506124a092506001600160a01b0390911690879061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561251d57600080fd5b505af1158015612531573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061257c908990899061a64a565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125f957600080fd5b505af115801561260d573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890612658908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945061272a9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf919061a5c7565b90506127db8187615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f919061a5c7565b905061285f81611a4c898761a637565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f9919061a5c7565b9050612906816000615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297a919061a5c7565b9050612987816000615f8d565b505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816129a95790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110612a0957612a0961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110612a4d57612a4d61a7a2565b6020908102919091010152604051600190600090612a739085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612bfb919060040161a530565b600060405180830381600087803b158015612c1557600080fd5b505af1158015612c29573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612c7d9290911690859060040161a663565b6000604051808303816000875af1158015612c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc4919081019061a76d565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611511578382906000526020600020018054612d0e9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3a9061a57a565b8015612d875780601f10612d5c57610100808354040283529160200191612d87565b820191906000526020600020905b815481529060010190602001808311612d6a57829003601f168201915b505050505081526020019060010190612cef565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e6957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612e2b5790505b50505050508152505081526020019060010190612dbf565b604080516004808252602480830184526020830180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3a919061a5c7565b9050612f47816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbb919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613089916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561313057600080fd5b505af1158015613144573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9061325c908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061332e9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561334857600080fd5b505af115801561335c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061a5c7565b90506133df816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613453919061a5c7565b905061285f8185615f8d565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134fa57600080fd5b505af115801561350e573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135e4919060040161a530565b600060405180830381600087803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610fa79392831692909116908790879060040161a543565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116136ff5790505b50505050508152505081526020019060010190613693565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000200180546137989061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546137c49061a57a565b80156138115780601f106137e657610100808354040283529160200191613811565b820191906000526020600020905b8154815290600101906020018083116137f457829003601f168201915b505050505081526020019060010190613779565b60085460009060ff161561383d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061a5c7565b1415905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156139c857600080fd5b505af11580156139dc573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613ab2919060040161a530565b600060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610fa79392831692909116908790879060040161a543565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c25919061a5c7565b9050613c32816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca6919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613d74916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613e1b57600080fd5b505af1158015613e2f573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f0557600080fd5b505af1158015613f19573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613f64908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fc557600080fd5b505af1158015613fd9573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506140369392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561405057600080fd5b505af1158015614064573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161278e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614228919060040161a530565b600060405180830381600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db935086926142aa921690869060040161a663565b6000604051808303818588803b1580156142c357600080fd5b505af1158015611ad2573d6000803e3d6000fd5b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561433057600080fd5b505af1158015614344573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061441a919060040161a530565b600060405180830381600087803b15801561443457600080fd5b505af1158015614448573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561450d57600080fd5b505af1158015614521573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506145f7919060040161a530565b600060405180830381600087803b15801561461157600080fd5b505af1158015614625573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561467957600080fd5b505af115801561468d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156146ea57600080fd5b505af11580156146fe573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b15801561483357600080fd5b505af1158015614847573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156148a457600080fd5b505af11580156148b8573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935061490c9290911690859060040161a663565b6000604051808303816000875af115801561492b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614953919081019061a76d565b5060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149ad57600080fd5b505af11580156149c1573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a1557600080fd5b505af1158015614a29573d6000803e3d6000fd5b50506021546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611c96916001600160a01b031690600090869060040161a5e0565b6060601580548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b600080604051602001614b23907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614b8a57600080fd5b505af1158015614b9e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016135e4565b604080516001808252818301909252600091816020015b6060815260200190600190039081614c295790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110614c8957614c8961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110614ccd57614ccd61a7a2565b6020908102919091010152604051600190600090614cf39085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614d9b916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015614db557600080fd5b505af1158015614dc9573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614e4257600080fd5b505af1158015614e56573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b1469350614e9d92506001600160a01b039091169087908790879061a83b565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614f1a57600080fd5b505af1158015614f2e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614f7490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612bfb565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b03163161501f816000615f8d565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561509457600080fd5b505af11580156150a8573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506150eb92506001600160a01b0390911690859061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561516857600080fd5b505af115801561517c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c91506151c990670de0b6b3a764000090869061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561522a57600080fd5b505af115801561523e573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792615292921690879060040161a663565b6000604051808303818588803b1580156152ab57600080fd5b505af11580156152bf573d6000803e3d6000fd5b50506021546001600160a01b0316319250610d5c9150829050670de0b6b3a7640000615f8d565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156153aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ce919061a5c7565b90506153db816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561542b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061544f919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161551d916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561553757600080fd5b505af115801561554b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905061561660028861a883565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156156c557600080fd5b505af11580156156d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90615724908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561578557600080fd5b505af1158015615799573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506157f69392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561581057600080fd5b505af1158015615824573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061589a919061a5c7565b90506158ab81611a4c60028961a883565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156158fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061591f919061a5c7565b905061285f8161593060028a61a883565b611a4c908761a637565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615997906000906001600160a01b031631615f8d565b60008484846040516024016159ae9392919061a8be565b60408051601f198184030181529181526020820180516001600160e01b03167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a5d916001600160a01b039190911690670de0b6b3a764000090869060040161a5e0565b600060405180830381600087803b158015615a7757600080fd5b505af1158015615a8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b0457600080fd5b505af1158015615b18573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350615b6192506001600160a01b0390911690859089908990899061a8e8565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615bde57600080fd5b505af1158015615bf2573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c3f90670de0b6b3a764000090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ca057600080fd5b505af1158015615cb4573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692615d08921690869060040161a663565b60006040518083038185885af1158015615d26573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d4f919081019061a76d565b50602154612cc49083906001600160a01b031631615f8d565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dc657600080fd5b505af1158015615dda573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615eb0919060040161a530565b600060405180830381600087803b158015615eca57600080fd5b505af1158015615ede573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015615f5a57600080fd5b505af1158015612cc4573d6000803e3d6000fd5b6000615f7861a0af565b615f8384848361600c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615ff857600080fd5b505afa158015610fd5573d6000803e3d6000fd5b6000806160198584616087565b905061607c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161606792919061a663565b60405160208183030381529060405285616093565b9150505b9392505050565b600061608083836160c1565b60c081015151600090156160b7576160b084848460c001516160dc565b9050616080565b6160b08484616282565b60006160cd838361636d565b61608083836020015184616093565b6000806160e7616379565b905060006160f5868361644c565b9050600061610c82606001518360200151856168f2565b9050600061611c83838989616b04565b9050600061612982617981565b602081015181519192509060030b1561619c5789826040015160405160200161615392919061a929565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526161939160040161a530565b60405180910390fd5b60006161df6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617b50565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061623290849060040161a530565b602060405180830381865afa15801561624f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616273919061a9aa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906162d790879060040161a530565b600060405180830381865afa1580156162f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261631c919081019061a76d565b9050600061634a828560405160200161633692919061a9d3565b604051602081830303815290604052617d50565b90506001600160a01b038116615f8357848460405160200161615392919061aa02565b611f7482826000617d63565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061640090849060040161aaad565b600060405180830381865afa15801561641d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616445919081019061aaf4565b9250505090565b61647e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164c96040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6164d285617e66565b602082015260006164e28661824b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616524573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261654c919081019061aaf4565b86838560200151604051602001616566949392919061ab3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906165be90859060040161a530565b600060405180830381865afa1580156165db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616603919081019061aaf4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061664b90849060040161ac41565b602060405180830381865afa158015616668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061668c919061a50e565b6166a15781604051602001616153919061ac93565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906166e690849060040161ad25565b600060405180830381865afa158015616703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261672b919081019061aaf4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061677290849060040161ad77565b602060405180830381865afa15801561678f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167b3919061a50e565b15616848576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906167fd90849060040161ad77565b600060405180830381865afa15801561681a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616842919081019061aaf4565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161686d919061adc9565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161689992919061ae35565b600060405180830381865afa1580156168b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168de919081019061aaf4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161690e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061696e5761696e61a7a2565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169c2576169c261a7a2565b6020026020010181905250846040516020016169de919061ae5a565b60405160208183030381529060405281600281518110616a0057616a0061a7a2565b602002602001018190525082604051602001616a1c919061aec6565b60405160208183030381529060405281600381518110616a3e57616a3e61a7a2565b60200260200101819052506000616a5482617981565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616ae590604080518082018252600080825260209182015281518083019092528451825280850190820152906184ce565b616afa5785604051602001616153919061af07565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616b54565b511590565b616cc857826020015115616c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616193565b8260c0015115616cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616193565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616ce157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616d3c9061af98565b935060ff1681518110616d5157616d5161a7a2565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616da2919061afb7565b604051602081830303815290604052828280616dbd9061af98565b935060ff1681518110616dd257616dd261a7a2565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616e1f9061af98565b935060ff1681518110616e3457616e3461a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616e819061af98565b935060ff1681518110616e9657616e9661a7a2565b60200260200101819052508760200151828280616eb29061af98565b935060ff1681518110616ec757616ec761a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616f149061af98565b935060ff1681518110616f2957616f2961a7a2565b602090810291909101015287518282616f418161af98565b935060ff1681518110616f5657616f5661a7a2565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616fa39061af98565b935060ff1681518110616fb857616fb861a7a2565b6020026020010181905250616fcc4661852f565b8282616fd78161af98565b935060ff1681518110616fec57616fec61a7a2565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806170399061af98565b935060ff168151811061704e5761704e61a7a2565b6020026020010181905250868282806170669061af98565b935060ff168151811061707b5761707b61a7a2565b60209081029190910101528551156171a25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826170cc8161af98565b935060ff16815181106170e1576170e161a7a2565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061713190899060040161a530565b600060405180830381865afa15801561714e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617176919081019061aaf4565b82826171818161af98565b935060ff16815181106171965761719661a7a2565b60200260200101819052505b8460200151156172725760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826171eb8161af98565b935060ff16815181106172005761720061a7a2565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061724d9061af98565b935060ff16815181106172625761726261a7a2565b6020026020010181905250617439565b6172aa616b4f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61733d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826172ed8161af98565b935060ff16815181106173025761730261a7a2565b60200260200101819052508460a00151604051602001617322919061ae5a565b60405160208183030381529060405282828061724d9061af98565b8460c0015115801561738057506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261737e90511590565b155b156174395760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173c48161af98565b935060ff16815181106173d9576173d961a7a2565b60200260200101819052506173ed886185cf565b6040516020016173fd919061ae5a565b6040516020818303038152906040528282806174189061af98565b935060ff168151811061742d5761742d61a7a2565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261746d90511590565b6175025760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826174b08161af98565b935060ff16815181106174c5576174c561a7a2565b602002602001018190525084604001518282806174e19061af98565b935060ff16815181106174f6576174f661a7a2565b60200260200101819052505b6060850151156176235760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261754b8161af98565b935060ff16815181106175605761756061a7a2565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156175cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175f7919081019061aaf4565b82826176028161af98565b935060ff16815181106176175761761761a7a2565b60200260200101819052505b60e085015151156176ca5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261766d8161af98565b935060ff16815181106176825761768261a7a2565b602002602001018190525061769e8560e001516000015161852f565b82826176a98161af98565b935060ff16815181106176be576176be61a7a2565b60200260200101819052505b60e085015160200151156177745760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826177178161af98565b935060ff168151811061772c5761772c61a7a2565b60200260200101819052506177488560e001516020015161852f565b82826177538161af98565b935060ff16815181106177685761776861a7a2565b60200260200101819052505b60e0850151604001511561781e5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177c18161af98565b935060ff16815181106177d6576177d661a7a2565b60200260200101819052506177f28560e001516040015161852f565b82826177fd8161af98565b935060ff16815181106178125761781261a7a2565b60200260200101819052505b60e085015160600151156178c85760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261786b8161af98565b935060ff16815181106178805761788061a7a2565b602002602001018190525061789c8560e001516060015161852f565b82826178a78161af98565b935060ff16815181106178bc576178bc61a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178e6576178e661a685565b60405190808252806020026020018201604052801561791957816020015b60608152602001906001900390816179045790505b50905060005b8260ff168160ff16101561797257838160ff16815181106179425761794261a7a2565b6020026020010151828260ff168151811061795f5761795f61a7a2565b602090810291909101015260010161791f565b5093505050505b949350505050565b6179a86040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617a2e9186910161b022565b600060405180830381865afa158015617a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a73919081019061aaf4565b90506000617a8186836190be565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617ab1919061a464565b6000604051808303816000875af1158015617ad0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617af8919081019061b069565b805190915060030b15801590617b115750602081015151155b8015617b205750604081015151155b15616afa5781600081518110617b3857617b3861a7a2565b6020026020010151604051602001616153919061b11f565b60606000617b858560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617bbc9082905b90619213565b15617d19576000617c3982617c3384617c2d617bff8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061923a565b9061929c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9d908290619213565b15617d0757604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d04905b8290619321565b90505b617d1081619347565b92505050616080565b8215617d3257848460405160200161615392919061b30b565b5050604080516020810190915260008152616080565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617d7257505050565b6000617d7f8484846193b0565b90506000617d8c82617981565b602081015181519192509060030b158015617e285750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2890604080518082018252600080825260209182015281518083019092528451825280850190820152617bb6565b15617e3557505050505050565b60408201515115617e55578160400151604051602001616153919061b3b2565b80604051602001616153919061b410565b60606000617e9b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f00905b82906184ce565b15617f6f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90839061994b565b619347565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fd1905b82906199d5565b60010361809e57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261803790617cfd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a905b8390619321565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180fd90617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618165908390619a6f565b905060008160018351618178919061a637565b815181106181885761818861a7a2565b6020026020010151905061822b617f6a6181fe6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061994b565b95945050505050565b82604051602001616153919061b47b565b50919050565b606060006182808360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182e290617ef9565b156182f05761608081619347565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261834f90617fca565b6001036183b957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90618097565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261841890617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618480908390619a6f565b90506001815111156184bc57806002825161849b919061a637565b815181106184ab576184ab61a7a2565b602002602001015192505050919050565b5082604051602001616153919061b47b565b8051825160009111156184e357506000615f87565b815183516020850151600092916184f99161b559565b618503919061a637565b90508260200151810361851a576001915050615f87565b82516020840151819020912014905092915050565b6060600061853c83619b14565b600101905060008167ffffffffffffffff81111561855c5761855c61a685565b6040519080825280601f01601f191660200182016040528015618586576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461859057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161865b905b8290619bf6565b1561869b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186fa90618654565b1561873a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261879990618654565b156187d957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883890618654565b8061889d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889d90618654565b156188dd57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261893c90618654565b806189a15750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189a190618654565b156189e157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4090618654565b80618aa55750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa590618654565b15618ae557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b4490618654565b80618ba95750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba990618654565b15618be957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c4890618654565b15618c8857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce790618654565b15618d2757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d8690618654565b15618dc657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e2590618654565b15618e6557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec490618654565b15618f0457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f6390618654565b80618fc85750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc890618654565b1561900857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261906790618654565b156190a757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616153929060200161b56c565b60608060005b845181101561914957818582815181106190e0576190e061a7a2565b60200260200101516040516020016190f992919061a9d3565b604051602081830303815290604052915060018551619118919061a637565b8114619141578160405160200161912f919061b6d5565b60405160208183030381529060405291505b6001016190c4565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619162579050509050838160008151811061918d5761918d61a7a2565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191e1576191e161a7a2565b602002602001018190525081816002815181106192005761920061a7a2565b6020908102919091010152949350505050565b60208083015183518351928401516000936192319291849190619c0a565b14159392505050565b6040805180820190915260008082526020820152600061926c8460000151856020015185600001518660200151619d1b565b905083602001518161927e919061a637565b8451859061928d90839061a637565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156192c1575081615f87565b60208083015190840151600191146192e85750815160208481015190840151829020919020145b8015619319578251845185906192ff90839061a637565b905250825160208501805161931590839061b559565b9052505b509192915050565b6040805180820190915260008082526020820152619340838383619e3b565b5092915050565b60606000826000015167ffffffffffffffff8111156193685761936861a685565b6040519080825280601f01601f191660200182016040528015619392576020820181803683370190505b50905060006020820190506193408185602001518660000151619ee6565b606060006193bc616379565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816193d957905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806194349061af98565b935060ff16815181106194495761944961a7a2565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161949a919061b716565b6040516020818303038152906040528282806194b59061af98565b935060ff16815181106194ca576194ca61a7a2565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806195179061af98565b935060ff168151811061952c5761952c61a7a2565b602002602001018190525082604051602001619548919061aec6565b6040516020818303038152906040528282806195639061af98565b935060ff16815181106195785761957861a7a2565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195c59061af98565b935060ff16815181106195da576195da61a7a2565b60200260200101819052506195ef8784619f60565b82826195fa8161af98565b935060ff168151811061960f5761960f61a7a2565b6020908102919091010152855151156196bb5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826196618161af98565b935060ff16815181106196765761967661a7a2565b602002602001018190525061968f866000015184619f60565b828261969a8161af98565b935060ff16815181106196af576196af61a7a2565b60200260200101819052505b8560800151156197295760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826197048161af98565b935060ff16815181106197195761971961a7a2565b602002602001018190525061978f565b841561978f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261976e8161af98565b935060ff16815181106197835761978361a7a2565b60200260200101819052505b6040860151511561982b5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197d98161af98565b935060ff16815181106197ee576197ee61a7a2565b6020026020010181905250856040015182828061980a9061af98565b935060ff168151811061981f5761981f61a7a2565b60200260200101819052505b8560600151156198955760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826198748161af98565b935060ff16815181106198895761988961a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198b3576198b361a685565b6040519080825280602002602001820160405280156198e657816020015b60608152602001906001900390816198d15790505b50905060005b8260ff168160ff16101561993f57838160ff168151811061990f5761990f61a7a2565b6020026020010151828260ff168151811061992c5761992c61a7a2565b60209081029190910101526001016198ec565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619970575081615f87565b815183516020850151600092916199869161b559565b619990919061a637565b602084015190915060019082146199b1575082516020840151819020908220145b80156199cc578351855186906199c890839061a637565b9052505b50929392505050565b60008082600001516199f98560000151866020015186600001518760200151619d1b565b619a03919061b559565b90505b83516020850151619a17919061b559565b81116193405781619a278161b75b565b9250508260000151619a5e856020015183619a42919061a637565b8651619a4e919061a637565b8386600001518760200151619d1b565b619a68919061b559565b9050619a06565b60606000619a7d84846199d5565b619a8890600161b559565b67ffffffffffffffff811115619aa057619aa061a685565b604051908082528060200260200182016040528015619ad357816020015b6060815260200190600190039081619abe5790505b50905060005b8151811015617d4857619aef617f6a8686619321565b828281518110619b0157619b0161a7a2565b6020908102919091010152600101619ad9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619b5d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619b89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619ba757662386f26fc10000830492506010015b6305f5e1008310619bbf576305f5e100830492506008015b6127108310619bd357612710830492506004015b60648310619be5576064830492506002015b600a8310615f875760010192915050565b6000619c028383619fa0565b159392505050565b600080858411619d115760208411619cbd5760008415619c55576001619c3186602061a637565b619c3c90600861b775565b619c4790600261b873565b619c51919061a637565b1990505b8351811685619c64898961b559565b619c6e919061a637565b805190935082165b818114619ca857878411619c905787945050505050617979565b83619c9a8161b87f565b945050828451169050619c76565b619cb2878561b559565b945050505050617979565b838320619cca858861a637565b619cd4908761b559565b91505b858210619d0f57848220808203619cfc57619cf2868461b559565b9350505050617979565b619d0760018461a637565b925050619cd7565b505b5092949350505050565b60008381868511619e265760208511619dd55760008515619d67576001619d4387602061a637565b619d4e90600861b775565b619d5990600261b873565b619d63919061a637565b1990505b84518116600087619d788b8b61b559565b619d82919061a637565b855190915083165b828114619dc757818610619daf57619da28b8b61b559565b9650505050505050617979565b85619db98161b75b565b965050838651169050619d8a565b859650505050505050617979565b508383206000905b619de7868961a637565b8211619e2457858320808203619e035783945050505050617979565b619e0e60018561b559565b9350508180619e1c9061b75b565b925050619ddd565b505b619e30878761b559565b979650505050505050565b60408051808201909152600080825260208201526000619e6d8560000151866020015186600001518760200151619d1b565b602080870180519186019190915251909150619e89908261a637565b835284516020860151619e9c919061b559565b8103619eab5760008552619edd565b83518351619eb9919061b559565b85518690619ec890839061a637565b9052508351619ed7908261b559565b60208601525b50909392505050565b60208110619f1e5781518352619efd60208461b559565b9250619f0a60208361b559565b9150619f1760208261a637565b9050619ee6565b6000198115619f4d576001619f3483602061a637565b619f409061010061b873565b619f4a919061a637565b90505b9151835183169219169190911790915250565b60606000619f6e848461644c565b8051602080830151604051939450619f889390910161b896565b60405160208183030381529060405291505092915050565b8151815160009190811115619fb3575081515b6020808501519084015160005b8381101561a06c578251825180821461a03c57600019602087101561a01b57600184619fed89602061a637565b619ff7919061b559565b61a00290600861b775565b61a00d90600261b873565b61a017919061a637565b1990505b818116838216818103911461a039579750615f879650505050505050565b50505b61a04760208661b559565b945061a05460208561b559565b9350505060208161a065919061b559565b9050619fc0565b5084518651616afa919061b8ee565b610c9f8061b90f83390190565b6113e28061c5ae83390190565b61182a8061d99083390190565b610d5e8061f1ba83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a0f261a0f7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0f26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1a95783516001600160a01b031683526020938401939092019160010161a182565b509095945050505050565b60005b8381101561a1cf57818101518382015260200161a1b7565b50506000910152565b6000815180845261a1f081602086016020860161a1b4565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a2e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a2d084865161a1d8565b602095860195909450929092019160010161a296565b50919750505060209485019492909201915060010161a22c565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a3605781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a320565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a3d6604088018261a1d8565b905060208201519150868103602088015261a3f1818361a30c565b96505050602093840193919091019060010161a392565b600082825180855260208501945060208160051b8301016020850160005b8381101561a45857601f1985840301885261a44283835161a1d8565b602098890198909350919091019060010161a426565b50909695505050505050565b602081526000616080602083018461a408565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a4f8604087018261a30c565b955050602093840193919091019060010161a49f565b60006020828403121561a52057600080fd5b8151801515811461608057600080fd5b602081526000616080602083018461a1d8565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616afa608083018461a1d8565b600181811c9082168061a58e57607f821691505b602082108103618245577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561a5d957600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061822b606083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615f8757615f8761a608565b828152604060208201526000617979604083018461a1d8565b6001600160a01b0383168152604060208201526000617979604083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561a6d75761a6d761a685565b60405290565b60008067ffffffffffffffff84111561a6f85761a6f861a685565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a7275761a72761a685565b60405283815290508082840185101561a73f57600080fd5b617d4884602083018561a1b4565b600082601f83011261a75e57600080fd5b6160808383516020850161a6dd565b60006020828403121561a77f57600080fd5b815167ffffffffffffffff81111561a79657600080fd5b615f838482850161a74d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a36057815186526020958601959091019060010161a7e5565b60608152600061a816606083018661a408565b828103602084015261a828818661a7d1565b9150508215156040830152949350505050565b6001600160a01b038516815260806020820152600061a85d608083018661a408565b828103604084015261a86f818661a7d1565b915050821515606083015295945050505050565b60008261a8b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60608152600061a8d1606083018661a1d8565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061a91060a083018661a1d8565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a96181601a85016020880161a1b4565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a99e81601c84016020880161a1b4565b01601c01949350505050565b60006020828403121561a9bc57600080fd5b81516001600160a01b038116811461608057600080fd5b6000835161a9e581846020880161a1b4565b83519083019061a9f981836020880161a1b4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aa3a81601a85016020880161a1b4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aa7781603384016020880161a1b4565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561ab0657600080fd5b815167ffffffffffffffff81111561ab1d57600080fd5b8201601f8101841361ab2e57600080fd5b615f838482516020840161a6dd565b6000855161ab4f818460208a0161a1b4565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ab89816001840160208a0161a1b4565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161abc781600284016020890161a1b4565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac0981600284016020880161a1b4565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ac54604083018461a1d8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161accb81601f85016020870161a1b4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061ad38604083018461a1d8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ad8a604083018461a1d8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae0181601485016020870161a1b4565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061ae48604083018561a1d8565b828103602084015261607c818561a1d8565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161ae9281600185016020870161a1b4565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aed881846020870161a1b4565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161af8b81604b85016020870161a1b4565b91909101604b0192915050565b600060ff821660ff810361afae5761afae61a608565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561b07b57600080fd5b815167ffffffffffffffff81111561b09257600080fd5b82016060818503121561b0a457600080fd5b61b0ac61a6b4565b81518060030b811461b0bd57600080fd5b8152602082015167ffffffffffffffff81111561b0d957600080fd5b61b0e58682850161a74d565b602083015250604082015167ffffffffffffffff81111561b10557600080fd5b61b1118682850161a74d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b17d81602185016020870161a1b4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b36981602185016020880161a1b4565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b3a681602e84016020880161a1b4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b46e81602285016020870161a1b4565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b4b381600e85016020870161a1b4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615f8757615f8761a608565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b5a481601885016020880161a1b4565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b5e181601c84016020880161a1b4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b6e781846020870161a1b4565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b74e81601c85016020870161a1b4565b91909101601c0192915050565b6000600019820361b76e5761b76e61a608565b5060010190565b8082028115828204841417615f8757615f8761a608565b6001815b600184111561b7c75780850481111561b7ab5761b7ab61a608565b600184161561b7b957908102905b60019390931c92800261b790565b935093915050565b60008261b7de57506001615f87565b8161b7eb57506000615f87565b816001811461b801576002811461b80b5761b827565b6001915050615f87565b60ff84111561b81c5761b81c61a608565b50506001821b615f87565b5060208310610133831016604e8410600b841016171561b84a575081810a615f87565b61b857600019848461b78c565b806000190482111561b86b5761b86b61a608565b029392505050565b6000616080838361b7cf565b60008161b88e5761b88e61a608565b506000190190565b6000835161b8a881846020880161a1b4565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b8e281600184016020880161a1b4565b01600101949350505050565b81810360008312801583831316838312821617156193405761934061a60856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212203c84eed415f53c6b73679bdd3c1ebe23a4c98cf0abb3f4090db80e6ae1ff633164736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ff458061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c8063a3f9d0e011610160578063dd51e82f116100d8578063fa18c09b1161008c578063fb176c1211610071578063fb176c121461049a578063fe7bdbb2146104a2578063fe8e5f1b146104aa57600080fd5b8063fa18c09b14610485578063fa7626d41461048d57600080fd5b8063e63ab1e9116100bd578063e63ab1e91461044e578063eb1ce7f914610475578063f68bd1c01461047d57600080fd5b8063dd51e82f1461043e578063e20c9f711461044657600080fd5b8063b5508aa91161012f578063c9350b7f11610114578063c9350b7f14610426578063cbd57e2f1461042e578063cebad2a61461043657600080fd5b8063b5508aa914610406578063ba414fa61461040e57600080fd5b8063a3f9d0e0146103c7578063a4943deb146103cf578063a783c789146103d7578063b0464fdc146103fe57600080fd5b80633f7286f41161020e57806371149c94116101c257806385226c81116101a757806385226c811461037657806385f438c11461038b578063916a17c6146103b257600080fd5b806371149c94146103665780637d7f772a1461036e57600080fd5b80635d62c860116101f35780635d62c8601461031457806366d9a9a0146103495780636a6218541461035e57600080fd5b80633f7286f41461030457806344671b941461030c57600080fd5b80632206eb65116102655780633e5e3c231161024a5780633e5e3c23146102ec5780633e73ecb4146102f45780633ee92923146102fc57600080fd5b80632206eb65146102cf5780632ade3880146102d757600080fd5b80630a9254e4146102975780630eee72a9146102a15780631779672f146102a95780631ed7831c146102b1575b600080fd5b61029f6104b2565b005b61029f610d62565b61029f610fdd565b6102b9611132565b6040516102c6919061a168565b60405180910390f35b61029f611194565b6102df6113d8565b6040516102c6919061a204565b6102b961151a565b61029f61157a565b61029f611adb565b6102b9611b95565b61029f611bf5565b61033b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6040519081526020016102c6565b610351611f78565b6040516102c6919061a36a565b61029f6120e5565b61029f61219c565b61029f612992565b61037e612ccb565b6040516102c6919061a464565b61033b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6103ba612d9b565b6040516102c6919061a477565b61029f612e81565b61029f61345f565b61033b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6103ba61366f565b61037e613755565b610416613825565b60405190151581526020016102c6565b61029f6138f9565b61029f613b3d565b61029f61409e565b61029f6142d7565b6102b9614a8d565b61033b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61029f614aed565b61029f614c12565b61029f614fc0565b601f546104169060ff1681565b61029f6152e6565b61029f61593a565b61029f615d68565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516105049061a07b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610589573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105ce9061a07b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610652573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261072c919060840160408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615f6e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906107b89061a088565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107f4573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061084f9061a095565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610893573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108d89061a0a2565b604051809103906000f0801580156108f4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc7919061a50e565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b50505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610f1c919060040161a530565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610fa79392831692909116908790879060040161a543565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610f1c565b6060601680548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116c575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061134d919060040161a530565b600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610fa79392831692909116908790879060040161a543565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561151157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114fa57838290600052602060002001805461146d9061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546114999061a57a565b80156114e65780601f106114bb576101008083540402835291602001916114e6565b820191906000526020600020905b8154815290600101906020018083116114c957829003601f168201915b50505050508152602001906001019061144e565b5050505081525050815260200190600101906113fc565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa1580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f3919061a5c7565b9050611600816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611674919061a5c7565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611742916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061a5c7565b90506119c88186615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c919061a5c7565b9050611a5181611a4c888761a637565b615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061a5c7565b9050611ad2816000615f8d565b50505050505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610e18565b6060601780548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b6040805160048082526024820183526020820180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611c96926001600160a01b03169160009187910161a5e0565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611e6490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611f2d9290911690859060040161a663565b6000604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f74919081019061a76d565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000209060020201604051806040016040529081600082018054611fcf9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb9061a57a565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156120cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161208f5790505b50505050508152505081526020019060010190611f9c565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612253919061a5c7565b9050612260816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d4919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916123a2916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506124a092506001600160a01b0390911690879061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561251d57600080fd5b505af1158015612531573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061257c908990899061a64a565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125f957600080fd5b505af115801561260d573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890612658908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945061272a9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf919061a5c7565b90506127db8187615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f919061a5c7565b905061285f81611a4c898761a637565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f9919061a5c7565b9050612906816000615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297a919061a5c7565b9050612987816000615f8d565b505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816129a95790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110612a0957612a0961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110612a4d57612a4d61a7a2565b6020908102919091010152604051600190600090612a739085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612bfb919060040161a530565b600060405180830381600087803b158015612c1557600080fd5b505af1158015612c29573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612c7d9290911690859060040161a663565b6000604051808303816000875af1158015612c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc4919081019061a76d565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611511578382906000526020600020018054612d0e9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3a9061a57a565b8015612d875780601f10612d5c57610100808354040283529160200191612d87565b820191906000526020600020905b815481529060010190602001808311612d6a57829003601f168201915b505050505081526020019060010190612cef565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e6957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612e2b5790505b50505050508152505081526020019060010190612dbf565b604080516004808252602480830184526020830180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3a919061a5c7565b9050612f47816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbb919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613089916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561313057600080fd5b505af1158015613144573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9061325c908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061332e9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561334857600080fd5b505af115801561335c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061a5c7565b90506133df816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613453919061a5c7565b905061285f8185615f8d565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134fa57600080fd5b505af115801561350e573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135e4919060040161a530565b600060405180830381600087803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610fa79392831692909116908790879060040161a543565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116136ff5790505b50505050508152505081526020019060010190613693565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000200180546137989061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546137c49061a57a565b80156138115780601f106137e657610100808354040283529160200191613811565b820191906000526020600020905b8154815290600101906020018083116137f457829003601f168201915b505050505081526020019060010190613779565b60085460009060ff161561383d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061a5c7565b1415905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156139c857600080fd5b505af11580156139dc573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613ab2919060040161a530565b600060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610fa79392831692909116908790879060040161a543565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c25919061a5c7565b9050613c32816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca6919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613d74916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613e1b57600080fd5b505af1158015613e2f573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f0557600080fd5b505af1158015613f19573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613f64908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fc557600080fd5b505af1158015613fd9573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506140369392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561405057600080fd5b505af1158015614064573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161278e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614228919060040161a530565b600060405180830381600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db935086926142aa921690869060040161a663565b6000604051808303818588803b1580156142c357600080fd5b505af1158015611ad2573d6000803e3d6000fd5b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561433057600080fd5b505af1158015614344573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061441a919060040161a530565b600060405180830381600087803b15801561443457600080fd5b505af1158015614448573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561450d57600080fd5b505af1158015614521573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506145f7919060040161a530565b600060405180830381600087803b15801561461157600080fd5b505af1158015614625573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561467957600080fd5b505af115801561468d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156146ea57600080fd5b505af11580156146fe573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b15801561483357600080fd5b505af1158015614847573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156148a457600080fd5b505af11580156148b8573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935061490c9290911690859060040161a663565b6000604051808303816000875af115801561492b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614953919081019061a76d565b5060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149ad57600080fd5b505af11580156149c1573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a1557600080fd5b505af1158015614a29573d6000803e3d6000fd5b50506021546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611c96916001600160a01b031690600090869060040161a5e0565b6060601580548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b600080604051602001614b23907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614b8a57600080fd5b505af1158015614b9e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016135e4565b604080516001808252818301909252600091816020015b6060815260200190600190039081614c295790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110614c8957614c8961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110614ccd57614ccd61a7a2565b6020908102919091010152604051600190600090614cf39085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614d9b916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015614db557600080fd5b505af1158015614dc9573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614e4257600080fd5b505af1158015614e56573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b1469350614e9d92506001600160a01b039091169087908790879061a83b565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614f1a57600080fd5b505af1158015614f2e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614f7490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612bfb565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b03163161501f816000615f8d565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561509457600080fd5b505af11580156150a8573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506150eb92506001600160a01b0390911690859061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561516857600080fd5b505af115801561517c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c91506151c990670de0b6b3a764000090869061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561522a57600080fd5b505af115801561523e573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792615292921690879060040161a663565b6000604051808303818588803b1580156152ab57600080fd5b505af11580156152bf573d6000803e3d6000fd5b50506021546001600160a01b0316319250610d5c9150829050670de0b6b3a7640000615f8d565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156153aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ce919061a5c7565b90506153db816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561542b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061544f919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161551d916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561553757600080fd5b505af115801561554b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905061561660028861a883565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156156c557600080fd5b505af11580156156d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90615724908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561578557600080fd5b505af1158015615799573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506157f69392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561581057600080fd5b505af1158015615824573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061589a919061a5c7565b90506158ab81611a4c60028961a883565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156158fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061591f919061a5c7565b905061285f8161593060028a61a883565b611a4c908761a637565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615997906000906001600160a01b031631615f8d565b60008484846040516024016159ae9392919061a8be565b60408051601f198184030181529181526020820180516001600160e01b03167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a5d916001600160a01b039190911690670de0b6b3a764000090869060040161a5e0565b600060405180830381600087803b158015615a7757600080fd5b505af1158015615a8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b0457600080fd5b505af1158015615b18573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350615b6192506001600160a01b0390911690859089908990899061a8e8565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615bde57600080fd5b505af1158015615bf2573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c3f90670de0b6b3a764000090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ca057600080fd5b505af1158015615cb4573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692615d08921690869060040161a663565b60006040518083038185885af1158015615d26573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d4f919081019061a76d565b50602154612cc49083906001600160a01b031631615f8d565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dc657600080fd5b505af1158015615dda573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615eb0919060040161a530565b600060405180830381600087803b158015615eca57600080fd5b505af1158015615ede573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015615f5a57600080fd5b505af1158015612cc4573d6000803e3d6000fd5b6000615f7861a0af565b615f8384848361600c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615ff857600080fd5b505afa158015610fd5573d6000803e3d6000fd5b6000806160198584616087565b905061607c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161606792919061a663565b60405160208183030381529060405285616093565b9150505b9392505050565b600061608083836160c1565b60c081015151600090156160b7576160b084848460c001516160dc565b9050616080565b6160b08484616282565b60006160cd838361636d565b61608083836020015184616093565b6000806160e7616379565b905060006160f5868361644c565b9050600061610c82606001518360200151856168f2565b9050600061611c83838989616b04565b9050600061612982617981565b602081015181519192509060030b1561619c5789826040015160405160200161615392919061a929565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526161939160040161a530565b60405180910390fd5b60006161df6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617b50565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061623290849060040161a530565b602060405180830381865afa15801561624f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616273919061a9aa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906162d790879060040161a530565b600060405180830381865afa1580156162f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261631c919081019061a76d565b9050600061634a828560405160200161633692919061a9d3565b604051602081830303815290604052617d50565b90506001600160a01b038116615f8357848460405160200161615392919061aa02565b611f7482826000617d63565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061640090849060040161aaad565b600060405180830381865afa15801561641d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616445919081019061aaf4565b9250505090565b61647e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164c96040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6164d285617e66565b602082015260006164e28661824b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616524573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261654c919081019061aaf4565b86838560200151604051602001616566949392919061ab3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906165be90859060040161a530565b600060405180830381865afa1580156165db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616603919081019061aaf4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061664b90849060040161ac41565b602060405180830381865afa158015616668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061668c919061a50e565b6166a15781604051602001616153919061ac93565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906166e690849060040161ad25565b600060405180830381865afa158015616703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261672b919081019061aaf4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061677290849060040161ad77565b602060405180830381865afa15801561678f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167b3919061a50e565b15616848576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906167fd90849060040161ad77565b600060405180830381865afa15801561681a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616842919081019061aaf4565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161686d919061adc9565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161689992919061ae35565b600060405180830381865afa1580156168b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168de919081019061aaf4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161690e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061696e5761696e61a7a2565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169c2576169c261a7a2565b6020026020010181905250846040516020016169de919061ae5a565b60405160208183030381529060405281600281518110616a0057616a0061a7a2565b602002602001018190525082604051602001616a1c919061aec6565b60405160208183030381529060405281600381518110616a3e57616a3e61a7a2565b60200260200101819052506000616a5482617981565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616ae590604080518082018252600080825260209182015281518083019092528451825280850190820152906184ce565b616afa5785604051602001616153919061af07565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616b54565b511590565b616cc857826020015115616c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616193565b8260c0015115616cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616193565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616ce157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616d3c9061af98565b935060ff1681518110616d5157616d5161a7a2565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616da2919061afb7565b604051602081830303815290604052828280616dbd9061af98565b935060ff1681518110616dd257616dd261a7a2565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616e1f9061af98565b935060ff1681518110616e3457616e3461a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616e819061af98565b935060ff1681518110616e9657616e9661a7a2565b60200260200101819052508760200151828280616eb29061af98565b935060ff1681518110616ec757616ec761a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616f149061af98565b935060ff1681518110616f2957616f2961a7a2565b602090810291909101015287518282616f418161af98565b935060ff1681518110616f5657616f5661a7a2565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616fa39061af98565b935060ff1681518110616fb857616fb861a7a2565b6020026020010181905250616fcc4661852f565b8282616fd78161af98565b935060ff1681518110616fec57616fec61a7a2565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806170399061af98565b935060ff168151811061704e5761704e61a7a2565b6020026020010181905250868282806170669061af98565b935060ff168151811061707b5761707b61a7a2565b60209081029190910101528551156171a25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826170cc8161af98565b935060ff16815181106170e1576170e161a7a2565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061713190899060040161a530565b600060405180830381865afa15801561714e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617176919081019061aaf4565b82826171818161af98565b935060ff16815181106171965761719661a7a2565b60200260200101819052505b8460200151156172725760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826171eb8161af98565b935060ff16815181106172005761720061a7a2565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061724d9061af98565b935060ff16815181106172625761726261a7a2565b6020026020010181905250617439565b6172aa616b4f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61733d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826172ed8161af98565b935060ff16815181106173025761730261a7a2565b60200260200101819052508460a00151604051602001617322919061ae5a565b60405160208183030381529060405282828061724d9061af98565b8460c0015115801561738057506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261737e90511590565b155b156174395760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173c48161af98565b935060ff16815181106173d9576173d961a7a2565b60200260200101819052506173ed886185cf565b6040516020016173fd919061ae5a565b6040516020818303038152906040528282806174189061af98565b935060ff168151811061742d5761742d61a7a2565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261746d90511590565b6175025760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826174b08161af98565b935060ff16815181106174c5576174c561a7a2565b602002602001018190525084604001518282806174e19061af98565b935060ff16815181106174f6576174f661a7a2565b60200260200101819052505b6060850151156176235760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261754b8161af98565b935060ff16815181106175605761756061a7a2565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156175cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175f7919081019061aaf4565b82826176028161af98565b935060ff16815181106176175761761761a7a2565b60200260200101819052505b60e085015151156176ca5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261766d8161af98565b935060ff16815181106176825761768261a7a2565b602002602001018190525061769e8560e001516000015161852f565b82826176a98161af98565b935060ff16815181106176be576176be61a7a2565b60200260200101819052505b60e085015160200151156177745760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826177178161af98565b935060ff168151811061772c5761772c61a7a2565b60200260200101819052506177488560e001516020015161852f565b82826177538161af98565b935060ff16815181106177685761776861a7a2565b60200260200101819052505b60e0850151604001511561781e5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177c18161af98565b935060ff16815181106177d6576177d661a7a2565b60200260200101819052506177f28560e001516040015161852f565b82826177fd8161af98565b935060ff16815181106178125761781261a7a2565b60200260200101819052505b60e085015160600151156178c85760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261786b8161af98565b935060ff16815181106178805761788061a7a2565b602002602001018190525061789c8560e001516060015161852f565b82826178a78161af98565b935060ff16815181106178bc576178bc61a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178e6576178e661a685565b60405190808252806020026020018201604052801561791957816020015b60608152602001906001900390816179045790505b50905060005b8260ff168160ff16101561797257838160ff16815181106179425761794261a7a2565b6020026020010151828260ff168151811061795f5761795f61a7a2565b602090810291909101015260010161791f565b5093505050505b949350505050565b6179a86040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617a2e9186910161b022565b600060405180830381865afa158015617a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a73919081019061aaf4565b90506000617a8186836190be565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617ab1919061a464565b6000604051808303816000875af1158015617ad0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617af8919081019061b069565b805190915060030b15801590617b115750602081015151155b8015617b205750604081015151155b15616afa5781600081518110617b3857617b3861a7a2565b6020026020010151604051602001616153919061b11f565b60606000617b858560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617bbc9082905b90619213565b15617d19576000617c3982617c3384617c2d617bff8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061923a565b9061929c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9d908290619213565b15617d0757604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d04905b8290619321565b90505b617d1081619347565b92505050616080565b8215617d3257848460405160200161615392919061b30b565b5050604080516020810190915260008152616080565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617d7257505050565b6000617d7f8484846193b0565b90506000617d8c82617981565b602081015181519192509060030b158015617e285750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2890604080518082018252600080825260209182015281518083019092528451825280850190820152617bb6565b15617e3557505050505050565b60408201515115617e55578160400151604051602001616153919061b3b2565b80604051602001616153919061b410565b60606000617e9b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f00905b82906184ce565b15617f6f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90839061994b565b619347565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fd1905b82906199d5565b60010361809e57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261803790617cfd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a905b8390619321565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180fd90617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618165908390619a6f565b905060008160018351618178919061a637565b815181106181885761818861a7a2565b6020026020010151905061822b617f6a6181fe6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061994b565b95945050505050565b82604051602001616153919061b47b565b50919050565b606060006182808360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182e290617ef9565b156182f05761608081619347565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261834f90617fca565b6001036183b957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90618097565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261841890617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618480908390619a6f565b90506001815111156184bc57806002825161849b919061a637565b815181106184ab576184ab61a7a2565b602002602001015192505050919050565b5082604051602001616153919061b47b565b8051825160009111156184e357506000615f87565b815183516020850151600092916184f99161b559565b618503919061a637565b90508260200151810361851a576001915050615f87565b82516020840151819020912014905092915050565b6060600061853c83619b14565b600101905060008167ffffffffffffffff81111561855c5761855c61a685565b6040519080825280601f01601f191660200182016040528015618586576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461859057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161865b905b8290619bf6565b1561869b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186fa90618654565b1561873a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261879990618654565b156187d957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883890618654565b8061889d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889d90618654565b156188dd57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261893c90618654565b806189a15750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189a190618654565b156189e157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4090618654565b80618aa55750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa590618654565b15618ae557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b4490618654565b80618ba95750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba990618654565b15618be957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c4890618654565b15618c8857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce790618654565b15618d2757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d8690618654565b15618dc657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e2590618654565b15618e6557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec490618654565b15618f0457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f6390618654565b80618fc85750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc890618654565b1561900857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261906790618654565b156190a757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616153929060200161b56c565b60608060005b845181101561914957818582815181106190e0576190e061a7a2565b60200260200101516040516020016190f992919061a9d3565b604051602081830303815290604052915060018551619118919061a637565b8114619141578160405160200161912f919061b6d5565b60405160208183030381529060405291505b6001016190c4565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619162579050509050838160008151811061918d5761918d61a7a2565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191e1576191e161a7a2565b602002602001018190525081816002815181106192005761920061a7a2565b6020908102919091010152949350505050565b60208083015183518351928401516000936192319291849190619c0a565b14159392505050565b6040805180820190915260008082526020820152600061926c8460000151856020015185600001518660200151619d1b565b905083602001518161927e919061a637565b8451859061928d90839061a637565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156192c1575081615f87565b60208083015190840151600191146192e85750815160208481015190840151829020919020145b8015619319578251845185906192ff90839061a637565b905250825160208501805161931590839061b559565b9052505b509192915050565b6040805180820190915260008082526020820152619340838383619e3b565b5092915050565b60606000826000015167ffffffffffffffff8111156193685761936861a685565b6040519080825280601f01601f191660200182016040528015619392576020820181803683370190505b50905060006020820190506193408185602001518660000151619ee6565b606060006193bc616379565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816193d957905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806194349061af98565b935060ff16815181106194495761944961a7a2565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161949a919061b716565b6040516020818303038152906040528282806194b59061af98565b935060ff16815181106194ca576194ca61a7a2565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806195179061af98565b935060ff168151811061952c5761952c61a7a2565b602002602001018190525082604051602001619548919061aec6565b6040516020818303038152906040528282806195639061af98565b935060ff16815181106195785761957861a7a2565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195c59061af98565b935060ff16815181106195da576195da61a7a2565b60200260200101819052506195ef8784619f60565b82826195fa8161af98565b935060ff168151811061960f5761960f61a7a2565b6020908102919091010152855151156196bb5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826196618161af98565b935060ff16815181106196765761967661a7a2565b602002602001018190525061968f866000015184619f60565b828261969a8161af98565b935060ff16815181106196af576196af61a7a2565b60200260200101819052505b8560800151156197295760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826197048161af98565b935060ff16815181106197195761971961a7a2565b602002602001018190525061978f565b841561978f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261976e8161af98565b935060ff16815181106197835761978361a7a2565b60200260200101819052505b6040860151511561982b5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197d98161af98565b935060ff16815181106197ee576197ee61a7a2565b6020026020010181905250856040015182828061980a9061af98565b935060ff168151811061981f5761981f61a7a2565b60200260200101819052505b8560600151156198955760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826198748161af98565b935060ff16815181106198895761988961a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198b3576198b361a685565b6040519080825280602002602001820160405280156198e657816020015b60608152602001906001900390816198d15790505b50905060005b8260ff168160ff16101561993f57838160ff168151811061990f5761990f61a7a2565b6020026020010151828260ff168151811061992c5761992c61a7a2565b60209081029190910101526001016198ec565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619970575081615f87565b815183516020850151600092916199869161b559565b619990919061a637565b602084015190915060019082146199b1575082516020840151819020908220145b80156199cc578351855186906199c890839061a637565b9052505b50929392505050565b60008082600001516199f98560000151866020015186600001518760200151619d1b565b619a03919061b559565b90505b83516020850151619a17919061b559565b81116193405781619a278161b75b565b9250508260000151619a5e856020015183619a42919061a637565b8651619a4e919061a637565b8386600001518760200151619d1b565b619a68919061b559565b9050619a06565b60606000619a7d84846199d5565b619a8890600161b559565b67ffffffffffffffff811115619aa057619aa061a685565b604051908082528060200260200182016040528015619ad357816020015b6060815260200190600190039081619abe5790505b50905060005b8151811015617d4857619aef617f6a8686619321565b828281518110619b0157619b0161a7a2565b6020908102919091010152600101619ad9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619b5d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619b89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619ba757662386f26fc10000830492506010015b6305f5e1008310619bbf576305f5e100830492506008015b6127108310619bd357612710830492506004015b60648310619be5576064830492506002015b600a8310615f875760010192915050565b6000619c028383619fa0565b159392505050565b600080858411619d115760208411619cbd5760008415619c55576001619c3186602061a637565b619c3c90600861b775565b619c4790600261b873565b619c51919061a637565b1990505b8351811685619c64898961b559565b619c6e919061a637565b805190935082165b818114619ca857878411619c905787945050505050617979565b83619c9a8161b87f565b945050828451169050619c76565b619cb2878561b559565b945050505050617979565b838320619cca858861a637565b619cd4908761b559565b91505b858210619d0f57848220808203619cfc57619cf2868461b559565b9350505050617979565b619d0760018461a637565b925050619cd7565b505b5092949350505050565b60008381868511619e265760208511619dd55760008515619d67576001619d4387602061a637565b619d4e90600861b775565b619d5990600261b873565b619d63919061a637565b1990505b84518116600087619d788b8b61b559565b619d82919061a637565b855190915083165b828114619dc757818610619daf57619da28b8b61b559565b9650505050505050617979565b85619db98161b75b565b965050838651169050619d8a565b859650505050505050617979565b508383206000905b619de7868961a637565b8211619e2457858320808203619e035783945050505050617979565b619e0e60018561b559565b9350508180619e1c9061b75b565b925050619ddd565b505b619e30878761b559565b979650505050505050565b60408051808201909152600080825260208201526000619e6d8560000151866020015186600001518760200151619d1b565b602080870180519186019190915251909150619e89908261a637565b835284516020860151619e9c919061b559565b8103619eab5760008552619edd565b83518351619eb9919061b559565b85518690619ec890839061a637565b9052508351619ed7908261b559565b60208601525b50909392505050565b60208110619f1e5781518352619efd60208461b559565b9250619f0a60208361b559565b9150619f1760208261a637565b9050619ee6565b6000198115619f4d576001619f3483602061a637565b619f409061010061b873565b619f4a919061a637565b90505b9151835183169219169190911790915250565b60606000619f6e848461644c565b8051602080830151604051939450619f889390910161b896565b60405160208183030381529060405291505092915050565b8151815160009190811115619fb3575081515b6020808501519084015160005b8381101561a06c578251825180821461a03c57600019602087101561a01b57600184619fed89602061a637565b619ff7919061b559565b61a00290600861b775565b61a00d90600261b873565b61a017919061a637565b1990505b818116838216818103911461a039579750615f879650505050505050565b50505b61a04760208661b559565b945061a05460208561b559565b9350505060208161a065919061b559565b9050619fc0565b5084518651616afa919061b8ee565b610c9f8061b90f83390190565b61140b8061c5ae83390190565b6117f98061d9b983390190565b610d5e8061f1b283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a0f261a0f7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0f26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1a95783516001600160a01b031683526020938401939092019160010161a182565b509095945050505050565b60005b8381101561a1cf57818101518382015260200161a1b7565b50506000910152565b6000815180845261a1f081602086016020860161a1b4565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a2e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a2d084865161a1d8565b602095860195909450929092019160010161a296565b50919750505060209485019492909201915060010161a22c565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a3605781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a320565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a3d6604088018261a1d8565b905060208201519150868103602088015261a3f1818361a30c565b96505050602093840193919091019060010161a392565b600082825180855260208501945060208160051b8301016020850160005b8381101561a45857601f1985840301885261a44283835161a1d8565b602098890198909350919091019060010161a426565b50909695505050505050565b602081526000616080602083018461a408565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a4f8604087018261a30c565b955050602093840193919091019060010161a49f565b60006020828403121561a52057600080fd5b8151801515811461608057600080fd5b602081526000616080602083018461a1d8565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616afa608083018461a1d8565b600181811c9082168061a58e57607f821691505b602082108103618245577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561a5d957600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061822b606083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615f8757615f8761a608565b828152604060208201526000617979604083018461a1d8565b6001600160a01b0383168152604060208201526000617979604083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561a6d75761a6d761a685565b60405290565b60008067ffffffffffffffff84111561a6f85761a6f861a685565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a7275761a72761a685565b60405283815290508082840185101561a73f57600080fd5b617d4884602083018561a1b4565b600082601f83011261a75e57600080fd5b6160808383516020850161a6dd565b60006020828403121561a77f57600080fd5b815167ffffffffffffffff81111561a79657600080fd5b615f838482850161a74d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a36057815186526020958601959091019060010161a7e5565b60608152600061a816606083018661a408565b828103602084015261a828818661a7d1565b9150508215156040830152949350505050565b6001600160a01b038516815260806020820152600061a85d608083018661a408565b828103604084015261a86f818661a7d1565b915050821515606083015295945050505050565b60008261a8b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60608152600061a8d1606083018661a1d8565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061a91060a083018661a1d8565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a96181601a85016020880161a1b4565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a99e81601c84016020880161a1b4565b01601c01949350505050565b60006020828403121561a9bc57600080fd5b81516001600160a01b038116811461608057600080fd5b6000835161a9e581846020880161a1b4565b83519083019061a9f981836020880161a1b4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aa3a81601a85016020880161a1b4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aa7781603384016020880161a1b4565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561ab0657600080fd5b815167ffffffffffffffff81111561ab1d57600080fd5b8201601f8101841361ab2e57600080fd5b615f838482516020840161a6dd565b6000855161ab4f818460208a0161a1b4565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ab89816001840160208a0161a1b4565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161abc781600284016020890161a1b4565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac0981600284016020880161a1b4565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ac54604083018461a1d8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161accb81601f85016020870161a1b4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061ad38604083018461a1d8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ad8a604083018461a1d8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae0181601485016020870161a1b4565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061ae48604083018561a1d8565b828103602084015261607c818561a1d8565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161ae9281600185016020870161a1b4565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aed881846020870161a1b4565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161af8b81604b85016020870161a1b4565b91909101604b0192915050565b600060ff821660ff810361afae5761afae61a608565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561b07b57600080fd5b815167ffffffffffffffff81111561b09257600080fd5b82016060818503121561b0a457600080fd5b61b0ac61a6b4565b81518060030b811461b0bd57600080fd5b8152602082015167ffffffffffffffff81111561b0d957600080fd5b61b0e58682850161a74d565b602083015250604082015167ffffffffffffffff81111561b10557600080fd5b61b1118682850161a74d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b17d81602185016020870161a1b4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b36981602185016020880161a1b4565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b3a681602e84016020880161a1b4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b46e81602285016020870161a1b4565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b4b381600e85016020870161a1b4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615f8757615f8761a608565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b5a481601885016020880161a1b4565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b5e181601c84016020880161a1b4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b6e781846020870161a1b4565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b74e81601c85016020870161a1b4565b91909101601c0192915050565b6000600019820361b76e5761b76e61a608565b5060010190565b8082028115828204841417615f8757615f8761a608565b6001815b600184111561b7c75780850481111561b7ab5761b7ab61a608565b600184161561b7b957908102905b60019390931c92800261b790565b935093915050565b60008261b7de57506001615f87565b8161b7eb57506000615f87565b816001811461b801576002811461b80b5761b827565b6001915050615f87565b60ff84111561b81c5761b81c61a608565b50506001821b615f87565b5060208310610133831016604e8410600b841016171561b84a575081810a615f87565b61b857600019848461b78c565b806000190482111561b86b5761b86b61a608565b029392505050565b6000616080838361b7cf565b60008161b88e5761b88e61a608565b506000190190565b6000835161b8a881846020880161a1b4565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b8e281600184016020880161a1b4565b01600101949350505050565b81810360008312801583831316838312821617156193405761934061a60856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122059e01a220b21abd790eb8bbfb7918643dfdcb2a99f9dfdf673f9aace356a959e64736f6c634300081a0033", } // GatewayEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go index 13ef7da5..8f7ecf36 100644 --- a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -31,8 +31,8 @@ var ( // GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f8061324883390190565b6113e280613ee783390190565b608051612fff61024960003960008181611d3301528181611d5c01526121a50152612fff6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b506102596102543660046129e9565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612a47565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612aab565b6108f3565b6102c36102be366004612aab565b61094d565b6040516102659190612b6c565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612b7f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612aab565b6109de565b34801561038457600080fd5b5061028e610393366004612b98565b610b0b565b61028e6103a6366004612aab565b610b55565b3480156103b757600080fd5b5061028e6103c6366004612b98565b610cdc565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610d2d565b61028e61040e366004612bf3565b610d62565b34801561041f57600080fd5b5061028e61042e366004612cfa565b610d81565b34801561043f57600080fd5b5061035761105e565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612d69565b61108d565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6111b8565b34801561055457600080fd5b5061028e610563366004612dc3565b6111ea565b34801561057457600080fd5b50610259610583366004612b98565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612a47565b61128f565b34801561068b57600080fd5b5061028e61069a366004612cfa565b611383565b3480156106ab57600080fd5b5061028e6106ba366004612e15565b6114fd565b3480156106cb57600080fd5b5061028e6106da366004612b98565b6117b2565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612a47565b6117f6565b34801561075257600080fd5b5061028e610761366004612e58565b611923565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a816119d6565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611acd565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610940929190612ed4565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610979816119d6565b610981611acd565b600061098e868686611b2b565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3487876040516109cd93929190612ef0565b60405180910390a295945050505050565b6109e6611acd565b34600003610a20576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a6d576040519150601f19603f3d011682016040523d82523d6000602084013e610a72565b606091505b5090915050801515600003610ab3576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610afd9493929190612f0a565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b45816119d6565b610b4f83836119e0565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b7f816119d6565b610b87611acd565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c16576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610c5d9088908890600401612ed4565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610ccc93929190612ef0565b60405180910390a2505050505050565b6001600160a01b0381163314610d1e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d288282611bd4565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d57816119d6565b610d5f611c98565b50565b610d6a611d28565b610d7382611df8565b610d7d8282611e03565b5050565b610d89611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610db3816119d6565b610dbb611acd565b83600003610df5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8686611fa8565b610e35576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec19190612f33565b610ef7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f04868585611b2b565b9050610f108787611fa8565b610f46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190612f55565b90508015610fdc57610fdc8882612038565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161102393929190612ef0565b60405180910390a350505061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b600061106861219a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b505060045461112592506001600160a01b0316905085858585610d81565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612f55565b15610b4f57610b4f612f6e565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111e2816119d6565b610d5f6121fc565b6111f2611acd565b8360000361122c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611237338486612275565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516112809493929190612f0a565b60405180910390a35050505050565b600061129a816119d6565b6000546001600160a01b0316156112dd576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661131d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113477f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61138b611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96113b5816119d6565b6113bd611acd565b836000036113f7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6001600160a01b03871686866123c9565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906114529086908690600401612ed4565b600060405180830381600087803b15801561146c57600080fd5b505af1158015611480573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516114cb93929190612ef0565b60405180910390a35061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115485750825b905060008267ffffffffffffffff1660011480156115655750303b155b905081158015611573575080155b156115aa576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561160b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061162857506001600160a01b038716155b1561165f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166761243d565b61166f612445565b61167761243d565b61167f612455565b61168a6000876119e0565b506116b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876119e0565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556117137f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896119e0565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117a85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546117ec816119d6565b610b4f8383611bd4565b6117fe611acd565b34600003611838576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611885576040519150601f19603f3d011682016040523d82523d6000602084013e61188a565b606091505b50909150508015156000036118cb576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61192b611acd565b81600003611965576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611970338284612275565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109409291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d5f8133612465565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ac3576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611a793390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b29576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b0316348686604051611b4b929190612f9d565b60006040518083038185875af1925050503d8060008114611b88576040519150601f19603f3d011682016040523d82523d6000602084013e611b8d565b606091505b509150915081611bc9576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ac3576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611ca06124f2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dc157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611db57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d7d816119d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e7b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7891810190612f55565b60015b611ec1576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f1d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611eb8565b610d28838361254d565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611fa2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612f33565b6003546001600160a01b039081169083160361215a576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de9190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561213e57600080fd5b505af1158015612152573d6000803e3d6000fd5b505050505050565b600054610d7d906001600160a01b038481169116836123c9565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612204611acd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d0a565b6003546001600160a01b03908116908316036123ad576122a06001600160a01b0383168430846125a3565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561230c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123309190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b50505050505050565b600054610d28906001600160a01b0384811691869116846125a3565b6040516001600160a01b03838116602483015260448201839052610d2891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125dc565b611b29612658565b61244d612658565b611b296126bf565b61245d612658565b611b296126c7565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d7d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611eb8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b29576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255682612718565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561259b57610d2882826127c0565b610d7d612836565b6040516001600160a01b038481166024830152838116604483015260648201839052610b4f9186918216906323b872dd906084016123f6565b60006125f16001600160a01b0384168361286e565b905080516000141580156126165750808060200190518101906126149190612f33565b155b15610d28576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611eb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b29576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612174612658565b6126cf612658565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612767576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127dd9190612fad565b600060405180830381855af49150503d8060008114612818576040519150601f19603f3d011682016040523d82523d6000602084013e61281d565b606091505b509150915061282d85838361287c565b95945050505050565b3415611b29576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611bcd838360006128f1565b6060826128915761288c826129a7565b611bcd565b81511580156128a857506001600160a01b0384163b155b156128ea576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611eb8565b5080611bcd565b60608147101561292f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611eb8565b600080856001600160a01b0316848660405161294b9190612fad565b60006040518083038185875af1925050503d8060008114612988576040519150601f19603f3d011682016040523d82523d6000602084013e61298d565b606091505b509150915061299d86838361287c565b9695505050505050565b8051156129b75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129fb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bcd57600080fd5b80356001600160a01b0381168114612a4257600080fd5b919050565b600060208284031215612a5957600080fd5b611bcd82612a2b565b60008083601f840112612a7457600080fd5b50813567ffffffffffffffff811115612a8c57600080fd5b602083019150836020828501011115612aa457600080fd5b9250929050565b600080600060408486031215612ac057600080fd5b612ac984612a2b565b9250602084013567ffffffffffffffff811115612ae557600080fd5b612af186828701612a62565b9497909650939450505050565b60005b83811015612b19578181015183820152602001612b01565b50506000910152565b60008151808452612b3a816020860160208601612afe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bcd6020830184612b22565b600060208284031215612b9157600080fd5b5035919050565b60008060408385031215612bab57600080fd5b82359150612bbb60208401612a2b565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612c0657600080fd5b612c0f83612a2b565b9150602083013567ffffffffffffffff811115612c2b57600080fd5b8301601f81018513612c3c57600080fd5b803567ffffffffffffffff811115612c5657612c56612bc4565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612cc257612cc2612bc4565b604052818152828201602001871015612cda57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612d1257600080fd5b612d1b86612a2b565b9450612d2960208701612a2b565b935060408601359250606086013567ffffffffffffffff811115612d4c57600080fd5b612d5888828901612a62565b969995985093965092949392505050565b60008060008060608587031215612d7f57600080fd5b612d8885612a2b565b935060208501359250604085013567ffffffffffffffff811115612dab57600080fd5b612db787828801612a62565b95989497509550505050565b600080600080600060808688031215612ddb57600080fd5b612de486612a2b565b945060208601359350612df960408701612a2b565b9250606086013567ffffffffffffffff811115612d4c57600080fd5b600080600060608486031215612e2a57600080fd5b612e3384612a2b565b9250612e4160208501612a2b565b9150612e4f60408501612a2b565b90509250925092565b600080600060608486031215612e6d57600080fd5b612e7684612a2b565b925060208401359150612e4f60408501612a2b565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ee8602083018486612e8b565b949350505050565b83815260406020820152600061282d604083018486612e8b565b8481526001600160a01b038416602082015260606040820152600061299d606083018486612e8b565b600060208284031215612f4557600080fd5b81518015158114611bcd57600080fd5b600060208284031215612f6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b60008251612fbf818460208701612afe565b919091019291505056fea2646970667358221220e575ea5a18b9462f7a8e597ab970f6a09ecc09fd51c56fa3c6c1397f89f20af164736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"zetaConnector_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"custody_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220dbe54b12cfd6fb8144d0b6a09a13bd9183d367931fa65bca2b5181643e10ee2f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033", } // GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. @@ -889,23 +889,23 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) GrantRole( // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Initialize(opts *bind.TransactOpts, _tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "initialize", _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) Initialize(opts *bind.TransactOpts, tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "initialize", tssAddress_, zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) Initialize(tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, tssAddress_, zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // -// Solidity: function initialize(address _tssAddress, address _zetaToken, address _admin) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Initialize(_tssAddress common.Address, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, _tssAddress, _zetaToken, _admin) +// Solidity: function initialize(address tssAddress_, address zetaToken_, address admin_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) Initialize(tssAddress_ common.Address, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.Initialize(&_GatewayEVMEchidnaTest.TransactOpts, tssAddress_, zetaToken_, admin_) } // Pause is a paid mutator transaction binding the contract method 0x8456cb59. @@ -994,44 +994,44 @@ func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) RevokeRole // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetConnector(opts *bind.TransactOpts, _zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "setConnector", _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetConnector(opts *bind.TransactOpts, zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "setConnector", zetaConnector_) } // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetConnector(zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, zetaConnector_) } // SetConnector is a paid mutator transaction binding the contract method 0x10188aef. // -// Solidity: function setConnector(address _zetaConnector) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetConnector(_zetaConnector common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, _zetaConnector) +// Solidity: function setConnector(address zetaConnector_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetConnector(zetaConnector_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetConnector(&_GatewayEVMEchidnaTest.TransactOpts, zetaConnector_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetCustody(opts *bind.TransactOpts, _custody common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.contract.Transact(opts, "setCustody", _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactor) SetCustody(opts *bind.TransactOpts, custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.contract.Transact(opts, "setCustody", custody_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestSession) SetCustody(custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, custody_) } // SetCustody is a paid mutator transaction binding the contract method 0xae7a3a6f. // -// Solidity: function setCustody(address _custody) returns() -func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetCustody(_custody common.Address) (*types.Transaction, error) { - return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, _custody) +// Solidity: function setCustody(address custody_) returns() +func (_GatewayEVMEchidnaTest *GatewayEVMEchidnaTestTransactorSession) SetCustody(custody_ common.Address) (*types.Transaction, error) { + return _GatewayEVMEchidnaTest.Contract.SetCustody(&_GatewayEVMEchidnaTest.TransactOpts, custody_) } // TestExecuteWithERC20 is a paid mutator transaction binding the contract method 0x6ab90f9b. diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go index 94f0e9a1..96e99cbb 100644 --- a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061bf218061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a85565b60405161010e919061620b565b60405180910390f35b61011f610ae7565b60405161010e91906162a7565b610101610c29565b610101610c89565b610144610ce9565b60405161010e919061640d565b6100f7610e6b565b61016161152d565b60405161010e91906164ab565b6101766115fd565b60405161010e9190616522565b6101766116f8565b6101616117f3565b61019b6118c3565b604051901515815260200161010e565b610101611997565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516102129061611e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc9061611e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261044f919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526119f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906104db9061612b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610517573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061057290616138565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105b6573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105fb90616145565b604051809103906000f080158015610617573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107c757600080fd5b505af11580156107db573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af11580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906165b9565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610add57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610abf575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610c2057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c09578382906000526020600020018054610b7c906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906165db565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081526020019060010190610b5d565b505050508152505081526020019060010190610b0b565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610c205783829060005260206000209060020201604051806040016040529081600082018054610d40906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c906165db565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e005790505b50505050508152505081526020019060010190610d0d565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190616628565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190616628565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093611023936001600160a01b036101009093048316939216611a16565b600084848460405160240161103a93929190616651565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611100929116908790879060040161667b565b600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061121d92506001600160a01b039091169086908a908a908a906166a3565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915061130c90869086906166e4565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561138657600080fd5b505af115801561139a573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113ec9291169087906004016166fd565b60006040518083038185885af115801561140a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526114339190810190616807565b5060208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516114c0938c936001600160a01b03169263dda79b7592600480830193928290030181865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190616628565b611a32565b60208054604080517f5b1125910000000000000000000000000000000000000000000000000000000081529051611523938b936001600160a01b031692635b11259192600480830193928290030181865afa158015611497573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611570906165db565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906165db565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b505050505081526020019060010190611551565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161168d5790505b50505050508152505081526020019060010190611621565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117885790505b5050505050815250508152602001906001019061171c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611836906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054611862906165db565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081526020019060010190611817565b60085460009060ff16156118db575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061683c565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6000611a01616152565b611a0c848483611ac2565b9150505b92915050565b611a1e616152565b611a2b8585858486611b3d565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050505050565b600080611acf8584611c3e565b9050611b326040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611b1d9291906166fd565b60405160208183030381529060405285611c4a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611baf57600080fd5b505af1925050508015611bc0575060015b611bd557611bd087878787611c78565b611c35565b611be187878787611c78565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505b50505050505050565b6000611b368383611c91565b60c08101515160009015611c6e57611c6784848460c00151611cac565b9050611b36565b611c678484611e52565b6000611c848483611f3d565b9050611a2b858285611f49565b6000611c9d8383612313565b611b3683836020015184611c4a565b600080611cb7612323565b90506000611cc586836123f6565b90506000611cdc826060015183602001518561289c565b90506000611cec83838989612aae565b90506000611cf98261392b565b602081015181519192509060030b15611d6c57898260400151604051602001611d23929190616855565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d63916004016168d6565b60405180910390fd5b6000611daf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613afa565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611e029084906004016168d6565b602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190616628565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611ea79087906004016168d6565b600060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eec9190810190616807565b90506000611f1a8285604051602001611f069291906168e9565b604051602081830303815290604052613cfa565b90506001600160a01b038116611a0c578484604051602001611d23929190616918565b6000611c9d8383613d0d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061683c565b9050806121b057600061201b86613d19565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506120a6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613e06565b806120b2575060008451115b15612135576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120fe90889088906004016166fd565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b505050506121aa565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050505b50611a2b565b8060006121bc82613d19565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061221e90612079565b8061222a575060008551115b156122af576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612278908a908a908a906004016169c3565b600060405180830381600087803b15801561229257600080fd5b505af11580156122a6573d6000803e3d6000fd5b50505050611c35565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611c1c57600080fd5b61231f82826000613e1a565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123aa9084906004016169f4565b600060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123ef9190810190616a3b565b9250505090565b6124286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506124736040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61247c85613f1d565b6020820152600061248c86614302565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f69190810190616a3b565b868385602001516040516020016125109493929190616a84565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125689085906004016168d6565b600060405180830381865afa158015612585573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ad9190810190616a3b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125f5908490600401616b88565b602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906165b9565b61264b5781604051602001611d239190616bda565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612690908490600401616c6c565b600060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126d59190810190616a3b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061271c908490600401616cbe565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906165b9565b156127f2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906127a7908490600401616cbe565b600060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ec9190810190616a3b565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016128179190616d10565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612843929190616d7c565b600060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128889190810190616a3b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128b85790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061291857612918616da1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061296c5761296c616da1565b6020026020010181905250846040516020016129889190616dd0565b604051602081830303815290604052816002815181106129aa576129aa616da1565b6020026020010181905250826040516020016129c69190616e3c565b604051602081830303815290604052816003815181106129e8576129e8616da1565b602002602001018190525060006129fe8261392b565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a8f9060408051808201825260008082526020918201528151808301909252845182528085019082015290614585565b612aa45785604051602001611d239190616e7d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612afe565b511590565b612c7257826020015115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d63565b8260c0015115612c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d63565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c8b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612ce690616f3d565b935060ff1681518110612cfb57612cfb616da1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d4c9190616f5c565b604051602081830303815290604052828280612d6790616f3d565b935060ff1681518110612d7c57612d7c616da1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612dc990616f3d565b935060ff1681518110612dde57612dde616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e2b90616f3d565b935060ff1681518110612e4057612e40616da1565b60200260200101819052508760200151828280612e5c90616f3d565b935060ff1681518110612e7157612e71616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612ebe90616f3d565b935060ff1681518110612ed357612ed3616da1565b602090810291909101015287518282612eeb81616f3d565b935060ff1681518110612f0057612f00616da1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f4d90616f3d565b935060ff1681518110612f6257612f62616da1565b6020026020010181905250612f76466145e6565b8282612f8181616f3d565b935060ff1681518110612f9657612f96616da1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fe390616f3d565b935060ff1681518110612ff857612ff8616da1565b60200260200101819052508682828061301090616f3d565b935060ff168151811061302557613025616da1565b602090810291909101015285511561314c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261307681616f3d565b935060ff168151811061308b5761308b616da1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130db9089906004016168d6565b600060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131209190810190616a3b565b828261312b81616f3d565b935060ff168151811061314057613140616da1565b60200260200101819052505b84602001511561321c5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261319581616f3d565b935060ff16815181106131aa576131aa616da1565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131f790616f3d565b935060ff168151811061320c5761320c616da1565b60200260200101819052506133e3565b613254612af98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132e75760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261329781616f3d565b935060ff16815181106132ac576132ac616da1565b60200260200101819052508460a001516040516020016132cc9190616dd0565b6040516020818303038152906040528282806131f790616f3d565b8460c0015115801561332a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261332890511590565b155b156133e35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261336e81616f3d565b935060ff168151811061338357613383616da1565b602002602001018190525061339788614686565b6040516020016133a79190616dd0565b6040516020818303038152906040528282806133c290616f3d565b935060ff16815181106133d7576133d7616da1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261341790511590565b6134ac5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261345a81616f3d565b935060ff168151811061346f5761346f616da1565b6020026020010181905250846040015182828061348b90616f3d565b935060ff16815181106134a0576134a0616da1565b60200260200101819052505b6060850151156135cd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134f581616f3d565b935060ff168151811061350a5761350a616da1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190616a3b565b82826135ac81616f3d565b935060ff16815181106135c1576135c1616da1565b60200260200101819052505b60e085015151156136745760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261361781616f3d565b935060ff168151811061362c5761362c616da1565b60200260200101819052506136488560e00151600001516145e6565b828261365381616f3d565b935060ff168151811061366857613668616da1565b60200260200101819052505b60e0850151602001511561371e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826136c181616f3d565b935060ff16815181106136d6576136d6616da1565b60200260200101819052506136f28560e00151602001516145e6565b82826136fd81616f3d565b935060ff168151811061371257613712616da1565b60200260200101819052505b60e085015160400151156137c85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261376b81616f3d565b935060ff168151811061378057613780616da1565b602002602001018190525061379c8560e00151604001516145e6565b82826137a781616f3d565b935060ff16815181106137bc576137bc616da1565b60200260200101819052505b60e085015160600151156138725760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261381581616f3d565b935060ff168151811061382a5761382a616da1565b60200260200101819052506138468560e00151606001516145e6565b828261385181616f3d565b935060ff168151811061386657613866616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156138905761389061671f565b6040519080825280602002602001820160405280156138c357816020015b60608152602001906001900390816138ae5790505b50905060005b8260ff168160ff16101561391c57838160ff16815181106138ec576138ec616da1565b6020026020010151828260ff168151811061390957613909616da1565b60209081029190910101526001016138c9565b5093505050505b949350505050565b6139526040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139d891869101616fc7565b600060405180830381865afa1580156139f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a1d9190810190616a3b565b90506000613a2b8683615175565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a5b91906164ab565b6000604051808303816000875af1158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa2919081019061700e565b805190915060030b15801590613abb5750602081015151155b8015613aca5750604081015151155b15612aa45781600081518110613ae257613ae2616da1565b6020026020010151604051602001611d2391906170c4565b60606000613b2f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b669082905b906152ca565b15613cc3576000613be382613bdd84613bd7613ba98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152f1565b90615353565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c479082906152ca565b15613cb157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613cae905b82906153d8565b90505b613cba816153fe565b92505050611b36565b8215613cdc578484604051602001611d239291906172b0565b5050604080516020810190915260008152611b36565b509392505050565b6000808251602084016000f09392505050565b61231f82826001613e1a565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d8e9190617357565b6000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b50915091508115613def57808060200190518101906139239190616a3b565b505060408051602081019091526000815292915050565b6000613e128383615467565b159392505050565b8160a0015115613e2957505050565b6000613e36848484615542565b90506000613e438261392b565b602081015181519192509060030b158015613edf5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613edf90604080518082018252600080825260209182015281518083019092528451825280850190820152613b60565b15613eec57505050505050565b60408201515115613f0c578160400151604051602001611d239190617373565b80604051602001611d2391906173d1565b60606000613f528360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613fb7905b8290614585565b1561402657604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021908390615add565b6153fe565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614088905b8290615b67565b60010361415557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140ee90613ca7565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021905b83906153d8565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526141b490613fb0565b156142eb57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061421c908390615c01565b90506000816001835161422f919061743c565b8151811061423f5761423f616da1565b602002602001015190506142e26140216142b56040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615add565b95945050505050565b82604051602001611d23919061744f565b50919050565b606060006143378360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061439990613fb0565b156143a757611b36816153fe565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261440690614081565b60010361447057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b36906140219061414e565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144cf90613fb0565b156142eb57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614537908390615c01565b9050600181511115614573578060028251614552919061743c565b8151811061456257614562616da1565b602002602001015192505050919050565b5082604051602001611d23919061744f565b80518251600091111561459a57506000611a10565b815183516020850151600092916145b09161752d565b6145ba919061743c565b9050826020015181036145d1576001915050611a10565b82516020840151819020912014905092915050565b606060006145f383615ca6565b600101905060008167ffffffffffffffff8111156146135761461361671f565b6040519080825280601f01601f19166020018201604052801561463d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461464757509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614712905b8290613e06565b1561475257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147b19061470b565b156147f157505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148509061470b565b1561489057505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148ef9061470b565b806149545750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149549061470b565b1561499457505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149f39061470b565b80614a585750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a589061470b565b15614a9857505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614af79061470b565b80614b5c5750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b5c9061470b565b15614b9c57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bfb9061470b565b80614c605750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c609061470b565b15614ca057505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cff9061470b565b15614d3f57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d9e9061470b565b15614dde57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e3d9061470b565b15614e7d57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614edc9061470b565b15614f1c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f7b9061470b565b15614fbb57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261501a9061470b565b8061507f5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261507f9061470b565b156150bf57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261511e9061470b565b1561515e57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611d239290602001617540565b60608060005b8451811015615200578185828151811061519757615197616da1565b60200260200101516040516020016151b09291906168e9565b6040516020818303038152906040529150600185516151cf919061743c565b81146151f857816040516020016151e691906176a9565b60405160208183030381529060405291505b60010161517b565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081615219579050509050838160008151811061524457615244616da1565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061529857615298616da1565b602002602001018190525081816002815181106152b7576152b7616da1565b6020908102919091010152949350505050565b60208083015183518351928401516000936152e89291849190615d88565b14159392505050565b604080518082019091526000808252602082015260006153238460000151856020015185600001518660200151615e99565b9050836020015181615335919061743c565b8451859061534490839061743c565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615378575081611a10565b602080830151908401516001911461539f5750815160208481015190840151829020919020145b80156153d0578251845185906153b690839061743c565b90525082516020850180516153cc90839061752d565b9052505b509192915050565b60408051808201909152600080825260208201526153f7838383615fb9565b5092915050565b60606000826000015167ffffffffffffffff81111561541f5761541f61671f565b6040519080825280601f01601f191660200182016040528015615449576020820181803683370190505b50905060006020820190506153f78185602001518660000151616064565b815181516000919081111561547a575081515b6020808501519084015160005b8381101561553357825182518082146155035760001960208710156154e2576001846154b489602061743c565b6154be919061752d565b6154c99060086176ea565b6154d49060026177e8565b6154de919061743c565b1990505b8181168382168181039114615500579750611a109650505050505050565b50505b61550e60208661752d565b945061551b60208561752d565b9350505060208161552c919061752d565b9050615487565b5084518651612aa491906177f4565b6060600061554e612323565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161556b57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806155c690616f3d565b935060ff16815181106155db576155db616da1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161562c9190617814565b60405160208183030381529060405282828061564790616f3d565b935060ff168151811061565c5761565c616da1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806156a990616f3d565b935060ff16815181106156be576156be616da1565b6020026020010181905250826040516020016156da9190616e3c565b6040516020818303038152906040528282806156f590616f3d565b935060ff168151811061570a5761570a616da1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061575790616f3d565b935060ff168151811061576c5761576c616da1565b602002602001018190525061578187846160de565b828261578c81616f3d565b935060ff16815181106157a1576157a1616da1565b60209081029190910101528551511561584d5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157f381616f3d565b935060ff168151811061580857615808616da1565b60200260200101819052506158218660000151846160de565b828261582c81616f3d565b935060ff168151811061584157615841616da1565b60200260200101819052505b8560800151156158bb5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261589681616f3d565b935060ff16815181106158ab576158ab616da1565b6020026020010181905250615921565b84156159215760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261590081616f3d565b935060ff168151811061591557615915616da1565b60200260200101819052505b604086015151156159bd5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261596b81616f3d565b935060ff168151811061598057615980616da1565b6020026020010181905250856040015182828061599c90616f3d565b935060ff16815181106159b1576159b1616da1565b60200260200101819052505b856060015115615a275760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615a0681616f3d565b935060ff1681518110615a1b57615a1b616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a4557615a4561671f565b604051908082528060200260200182016040528015615a7857816020015b6060815260200190600190039081615a635790505b50905060005b8260ff168160ff161015615ad157838160ff1681518110615aa157615aa1616da1565b6020026020010151828260ff1681518110615abe57615abe616da1565b6020908102919091010152600101615a7e565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615b02575081611a10565b81518351602085015160009291615b189161752d565b615b22919061743c565b60208401519091506001908214615b43575082516020840151819020908220145b8015615b5e57835185518690615b5a90839061743c565b9052505b50929392505050565b6000808260000151615b8b8560000151866020015186600001518760200151615e99565b615b95919061752d565b90505b83516020850151615ba9919061752d565b81116153f75781615bb981617859565b9250508260000151615bf0856020015183615bd4919061743c565b8651615be0919061743c565b8386600001518760200151615e99565b615bfa919061752d565b9050615b98565b60606000615c0f8484615b67565b615c1a90600161752d565b67ffffffffffffffff811115615c3257615c3261671f565b604051908082528060200260200182016040528015615c6557816020015b6060815260200190600190039081615c505790505b50905060005b8151811015613cf257615c8161402186866153d8565b828281518110615c9357615c93616da1565b6020908102919091010152600101615c6b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615d1b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d3957662386f26fc10000830492506010015b6305f5e1008310615d51576305f5e100830492506008015b6127108310615d6557612710830492506004015b60648310615d77576064830492506002015b600a8310611a105760010192915050565b600080858411615e8f5760208411615e3b5760008415615dd3576001615daf86602061743c565b615dba9060086176ea565b615dc59060026177e8565b615dcf919061743c565b1990505b8351811685615de2898961752d565b615dec919061743c565b805190935082165b818114615e2657878411615e0e5787945050505050613923565b83615e1881617873565b945050828451169050615df4565b615e30878561752d565b945050505050613923565b838320615e48858861743c565b615e52908761752d565b91505b858210615e8d57848220808203615e7a57615e70868461752d565b9350505050613923565b615e8560018461743c565b925050615e55565b505b5092949350505050565b60008381868511615fa45760208511615f535760008515615ee5576001615ec187602061743c565b615ecc9060086176ea565b615ed79060026177e8565b615ee1919061743c565b1990505b84518116600087615ef68b8b61752d565b615f00919061743c565b855190915083165b828114615f4557818610615f2d57615f208b8b61752d565b9650505050505050613923565b85615f3781617859565b965050838651169050615f08565b859650505050505050613923565b508383206000905b615f65868961743c565b8211615fa257858320808203615f815783945050505050613923565b615f8c60018561752d565b9350508180615f9a90617859565b925050615f5b565b505b615fae878761752d565b979650505050505050565b60408051808201909152600080825260208201526000615feb8560000151866020015186600001518760200151615e99565b602080870180519186019190915251909150616007908261743c565b83528451602086015161601a919061752d565b8103616029576000855261605b565b83518351616037919061752d565b8551869061604690839061743c565b9052508351616055908261752d565b60208601525b50909392505050565b6020811061609c578151835261607b60208461752d565b925061608860208361752d565b915061609560208261743c565b9050616064565b60001981156160cb5760016160b283602061743c565b6160be906101006177e8565b6160c8919061743c565b90505b9151835183169219169190911790915250565b606060006160ec84846123f6565b80516020808301516040519394506161069390910161788a565b60405160208183030381529060405291505092915050565b610c9f806178e383390190565b6113e28061858283390190565b61182a8061996483390190565b610d5e8061b18e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161619561619a565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016161956040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561624c5783516001600160a01b0316835260209384019390920191600101616225565b509095945050505050565b60005b8381101561627257818101518382015260200161625a565b50506000910152565b60008151808452616293816020860160208601616257565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616389577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261637384865161627b565b6020958601959094509290920191600101616339565b5091975050506020948501949290920191506001016162cf565b50929695505050505050565b600081518084526020840193506020830160005b828110156164035781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016163c3565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616479604088018261627b565b905060208201519150868103602088015261649481836163af565b965050506020938401939190910190600101616435565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261650d85835161627b565b945060209384019391909101906001016164d3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526165a360408701826163af565b955050602093840193919091019060010161654a565b6000602082840312156165cb57600080fd5b81518015158114611b3657600080fd5b600181811c908216806165ef57607f821691505b6020821081036142fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561663a57600080fd5b81516001600160a01b0381168114611b3657600080fd5b606081526000616664606083018661627b565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142e2606083018461627b565b6001600160a01b038616815284602082015260a0604082015260006166cb60a083018661627b565b6060830194909452509015156080909101529392505050565b828152604060208201526000613923604083018461627b565b6001600160a01b0383168152604060208201526000613923604083018461627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156167715761677161671f565b60405290565b60008067ffffffffffffffff8411156167925761679261671f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156167c1576167c161671f565b6040528381529050808284018510156167d957600080fd5b613cf2846020830185616257565b600082601f8301126167f857600080fd5b611b3683835160208501616777565b60006020828403121561681957600080fd5b815167ffffffffffffffff81111561683057600080fd5b611a0c848285016167e7565b60006020828403121561684e57600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161688d81601a850160208801616257565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168ca81601c840160208801616257565b01601c01949350505050565b602081526000611b36602083018461627b565b600083516168fb818460208801616257565b83519083019061690f818360208801616257565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161695081601a850160208801616257565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161698d816033840160208801616257565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142e2606083018461627b565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b36608083018461627b565b600060208284031215616a4d57600080fd5b815167ffffffffffffffff811115616a6457600080fd5b8201601f81018413616a7557600080fd5b611a0c84825160208401616777565b60008551616a96818460208a01616257565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616ad0816001840160208a01616257565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616b0e816002840160208901616257565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b50816002840160208801616257565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b9b604083018461627b565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616c1281601f850160208701616257565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c7f604083018461627b565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616cd1604083018461627b565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d48816014850160208701616257565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d8f604083018561627b565b8281036020840152611b32818561627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616e08816001850160208701616257565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e4e818460208701616257565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616f0181604b850160208701616257565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f5357616f53616f0e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b36608083018461627b565b60006020828403121561702057600080fd5b815167ffffffffffffffff81111561703757600080fd5b82016060818503121561704957600080fd5b61705161674e565b81518060030b811461706257600080fd5b8152602082015167ffffffffffffffff81111561707e57600080fd5b61708a868285016167e7565b602083015250604082015167ffffffffffffffff8111156170aa57600080fd5b6170b6868285016167e7565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251617122816021850160208701616257565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161730e816021850160208801616257565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161734b81602e840160208801616257565b01602e01949350505050565b60008251617369818460208701616257565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161742f816022850160208701616257565b9190910160220192915050565b81810381811115611a1057611a10616f0e565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161748781600e850160208701616257565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115611a1057611a10616f0e565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617578816018850160208801616257565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516175b581601c840160208801616257565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516176bb818460208701616257565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417611a1057611a10616f0e565b6001815b600184111561773c5780850481111561772057617720616f0e565b600184161561772e57908102905b60019390931c928002617705565b935093915050565b60008261775357506001611a10565b8161776057506000611a10565b816001811461777657600281146177805761779c565b6001915050611a10565b60ff84111561779157617791616f0e565b50506001821b611a10565b5060208310610133831016604e8410600b84101617156177bf575081810a611a10565b6177cc6000198484617701565b80600019048211156177e0576177e0616f0e565b029392505050565b6000611b368383617744565b81810360008312801583831316838312821617156153f7576153f7616f0e565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161784c81601c850160208701616257565b91909101601c0192915050565b6000600019820361786c5761786c616f0e565b5060010190565b60008161788257617882616f0e565b506000190190565b6000835161789c818460208801616257565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178d6816001840160208801616257565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220ab47a8df273b8e4c91a38c4269035bd99a4d4c25cf8bd7f63c607b59dcb202b964736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061bf198061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a85565b60405161010e919061620b565b60405180910390f35b61011f610ae7565b60405161010e91906162a7565b610101610c29565b610101610c89565b610144610ce9565b60405161010e919061640d565b6100f7610e6b565b61016161152d565b60405161010e91906164ab565b6101766115fd565b60405161010e9190616522565b6101766116f8565b6101616117f3565b61019b6118c3565b604051901515815260200161010e565b610101611997565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516102129061611e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc9061611e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261044f919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526119f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906104db9061612b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610517573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061057290616138565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105b6573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105fb90616145565b604051809103906000f080158015610617573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107c757600080fd5b505af11580156107db573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af11580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906165b9565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610add57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610abf575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610c2057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c09578382906000526020600020018054610b7c906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906165db565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081526020019060010190610b5d565b505050508152505081526020019060010190610b0b565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610c205783829060005260206000209060020201604051806040016040529081600082018054610d40906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c906165db565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e005790505b50505050508152505081526020019060010190610d0d565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190616628565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190616628565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093611023936001600160a01b036101009093048316939216611a16565b600084848460405160240161103a93929190616651565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611100929116908790879060040161667b565b600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061121d92506001600160a01b039091169086908a908a908a906166a3565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915061130c90869086906166e4565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561138657600080fd5b505af115801561139a573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113ec9291169087906004016166fd565b60006040518083038185885af115801561140a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526114339190810190616807565b5060208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516114c0938c936001600160a01b03169263dda79b7592600480830193928290030181865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190616628565b611a32565b60208054604080517f5b1125910000000000000000000000000000000000000000000000000000000081529051611523938b936001600160a01b031692635b11259192600480830193928290030181865afa158015611497573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611570906165db565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906165db565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b505050505081526020019060010190611551565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161168d5790505b50505050508152505081526020019060010190611621565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117885790505b5050505050815250508152602001906001019061171c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611836906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054611862906165db565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081526020019060010190611817565b60085460009060ff16156118db575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061683c565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6000611a01616152565b611a0c848483611ac2565b9150505b92915050565b611a1e616152565b611a2b8585858486611b3d565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050505050565b600080611acf8584611c3e565b9050611b326040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611b1d9291906166fd565b60405160208183030381529060405285611c4a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611baf57600080fd5b505af1925050508015611bc0575060015b611bd557611bd087878787611c78565b611c35565b611be187878787611c78565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505b50505050505050565b6000611b368383611c91565b60c08101515160009015611c6e57611c6784848460c00151611cac565b9050611b36565b611c678484611e52565b6000611c848483611f3d565b9050611a2b858285611f49565b6000611c9d8383612313565b611b3683836020015184611c4a565b600080611cb7612323565b90506000611cc586836123f6565b90506000611cdc826060015183602001518561289c565b90506000611cec83838989612aae565b90506000611cf98261392b565b602081015181519192509060030b15611d6c57898260400151604051602001611d23929190616855565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d63916004016168d6565b60405180910390fd5b6000611daf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613afa565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611e029084906004016168d6565b602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190616628565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611ea79087906004016168d6565b600060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eec9190810190616807565b90506000611f1a8285604051602001611f069291906168e9565b604051602081830303815290604052613cfa565b90506001600160a01b038116611a0c578484604051602001611d23929190616918565b6000611c9d8383613d0d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061683c565b9050806121b057600061201b86613d19565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506120a6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613e06565b806120b2575060008451115b15612135576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120fe90889088906004016166fd565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b505050506121aa565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050505b50611a2b565b8060006121bc82613d19565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061221e90612079565b8061222a575060008551115b156122af576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612278908a908a908a906004016169c3565b600060405180830381600087803b15801561229257600080fd5b505af11580156122a6573d6000803e3d6000fd5b50505050611c35565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611c1c57600080fd5b61231f82826000613e1a565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123aa9084906004016169f4565b600060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123ef9190810190616a3b565b9250505090565b6124286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506124736040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61247c85613f1d565b6020820152600061248c86614302565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f69190810190616a3b565b868385602001516040516020016125109493929190616a84565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125689085906004016168d6565b600060405180830381865afa158015612585573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ad9190810190616a3b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125f5908490600401616b88565b602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906165b9565b61264b5781604051602001611d239190616bda565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612690908490600401616c6c565b600060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126d59190810190616a3b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061271c908490600401616cbe565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906165b9565b156127f2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906127a7908490600401616cbe565b600060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ec9190810190616a3b565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016128179190616d10565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612843929190616d7c565b600060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128889190810190616a3b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128b85790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061291857612918616da1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061296c5761296c616da1565b6020026020010181905250846040516020016129889190616dd0565b604051602081830303815290604052816002815181106129aa576129aa616da1565b6020026020010181905250826040516020016129c69190616e3c565b604051602081830303815290604052816003815181106129e8576129e8616da1565b602002602001018190525060006129fe8261392b565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a8f9060408051808201825260008082526020918201528151808301909252845182528085019082015290614585565b612aa45785604051602001611d239190616e7d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612afe565b511590565b612c7257826020015115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d63565b8260c0015115612c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d63565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c8b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612ce690616f3d565b935060ff1681518110612cfb57612cfb616da1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d4c9190616f5c565b604051602081830303815290604052828280612d6790616f3d565b935060ff1681518110612d7c57612d7c616da1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612dc990616f3d565b935060ff1681518110612dde57612dde616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e2b90616f3d565b935060ff1681518110612e4057612e40616da1565b60200260200101819052508760200151828280612e5c90616f3d565b935060ff1681518110612e7157612e71616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612ebe90616f3d565b935060ff1681518110612ed357612ed3616da1565b602090810291909101015287518282612eeb81616f3d565b935060ff1681518110612f0057612f00616da1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f4d90616f3d565b935060ff1681518110612f6257612f62616da1565b6020026020010181905250612f76466145e6565b8282612f8181616f3d565b935060ff1681518110612f9657612f96616da1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fe390616f3d565b935060ff1681518110612ff857612ff8616da1565b60200260200101819052508682828061301090616f3d565b935060ff168151811061302557613025616da1565b602090810291909101015285511561314c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261307681616f3d565b935060ff168151811061308b5761308b616da1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130db9089906004016168d6565b600060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131209190810190616a3b565b828261312b81616f3d565b935060ff168151811061314057613140616da1565b60200260200101819052505b84602001511561321c5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261319581616f3d565b935060ff16815181106131aa576131aa616da1565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131f790616f3d565b935060ff168151811061320c5761320c616da1565b60200260200101819052506133e3565b613254612af98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132e75760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261329781616f3d565b935060ff16815181106132ac576132ac616da1565b60200260200101819052508460a001516040516020016132cc9190616dd0565b6040516020818303038152906040528282806131f790616f3d565b8460c0015115801561332a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261332890511590565b155b156133e35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261336e81616f3d565b935060ff168151811061338357613383616da1565b602002602001018190525061339788614686565b6040516020016133a79190616dd0565b6040516020818303038152906040528282806133c290616f3d565b935060ff16815181106133d7576133d7616da1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261341790511590565b6134ac5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261345a81616f3d565b935060ff168151811061346f5761346f616da1565b6020026020010181905250846040015182828061348b90616f3d565b935060ff16815181106134a0576134a0616da1565b60200260200101819052505b6060850151156135cd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134f581616f3d565b935060ff168151811061350a5761350a616da1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190616a3b565b82826135ac81616f3d565b935060ff16815181106135c1576135c1616da1565b60200260200101819052505b60e085015151156136745760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261361781616f3d565b935060ff168151811061362c5761362c616da1565b60200260200101819052506136488560e00151600001516145e6565b828261365381616f3d565b935060ff168151811061366857613668616da1565b60200260200101819052505b60e0850151602001511561371e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826136c181616f3d565b935060ff16815181106136d6576136d6616da1565b60200260200101819052506136f28560e00151602001516145e6565b82826136fd81616f3d565b935060ff168151811061371257613712616da1565b60200260200101819052505b60e085015160400151156137c85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261376b81616f3d565b935060ff168151811061378057613780616da1565b602002602001018190525061379c8560e00151604001516145e6565b82826137a781616f3d565b935060ff16815181106137bc576137bc616da1565b60200260200101819052505b60e085015160600151156138725760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261381581616f3d565b935060ff168151811061382a5761382a616da1565b60200260200101819052506138468560e00151606001516145e6565b828261385181616f3d565b935060ff168151811061386657613866616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156138905761389061671f565b6040519080825280602002602001820160405280156138c357816020015b60608152602001906001900390816138ae5790505b50905060005b8260ff168160ff16101561391c57838160ff16815181106138ec576138ec616da1565b6020026020010151828260ff168151811061390957613909616da1565b60209081029190910101526001016138c9565b5093505050505b949350505050565b6139526040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139d891869101616fc7565b600060405180830381865afa1580156139f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a1d9190810190616a3b565b90506000613a2b8683615175565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a5b91906164ab565b6000604051808303816000875af1158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa2919081019061700e565b805190915060030b15801590613abb5750602081015151155b8015613aca5750604081015151155b15612aa45781600081518110613ae257613ae2616da1565b6020026020010151604051602001611d2391906170c4565b60606000613b2f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b669082905b906152ca565b15613cc3576000613be382613bdd84613bd7613ba98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152f1565b90615353565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c479082906152ca565b15613cb157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613cae905b82906153d8565b90505b613cba816153fe565b92505050611b36565b8215613cdc578484604051602001611d239291906172b0565b5050604080516020810190915260008152611b36565b509392505050565b6000808251602084016000f09392505050565b61231f82826001613e1a565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d8e9190617357565b6000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b50915091508115613def57808060200190518101906139239190616a3b565b505060408051602081019091526000815292915050565b6000613e128383615467565b159392505050565b8160a0015115613e2957505050565b6000613e36848484615542565b90506000613e438261392b565b602081015181519192509060030b158015613edf5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613edf90604080518082018252600080825260209182015281518083019092528451825280850190820152613b60565b15613eec57505050505050565b60408201515115613f0c578160400151604051602001611d239190617373565b80604051602001611d2391906173d1565b60606000613f528360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613fb7905b8290614585565b1561402657604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021908390615add565b6153fe565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614088905b8290615b67565b60010361415557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140ee90613ca7565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021905b83906153d8565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526141b490613fb0565b156142eb57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061421c908390615c01565b90506000816001835161422f919061743c565b8151811061423f5761423f616da1565b602002602001015190506142e26140216142b56040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615add565b95945050505050565b82604051602001611d23919061744f565b50919050565b606060006143378360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061439990613fb0565b156143a757611b36816153fe565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261440690614081565b60010361447057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b36906140219061414e565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144cf90613fb0565b156142eb57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614537908390615c01565b9050600181511115614573578060028251614552919061743c565b8151811061456257614562616da1565b602002602001015192505050919050565b5082604051602001611d23919061744f565b80518251600091111561459a57506000611a10565b815183516020850151600092916145b09161752d565b6145ba919061743c565b9050826020015181036145d1576001915050611a10565b82516020840151819020912014905092915050565b606060006145f383615ca6565b600101905060008167ffffffffffffffff8111156146135761461361671f565b6040519080825280601f01601f19166020018201604052801561463d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461464757509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614712905b8290613e06565b1561475257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147b19061470b565b156147f157505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148509061470b565b1561489057505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148ef9061470b565b806149545750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149549061470b565b1561499457505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149f39061470b565b80614a585750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a589061470b565b15614a9857505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614af79061470b565b80614b5c5750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b5c9061470b565b15614b9c57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bfb9061470b565b80614c605750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c609061470b565b15614ca057505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cff9061470b565b15614d3f57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d9e9061470b565b15614dde57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e3d9061470b565b15614e7d57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614edc9061470b565b15614f1c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f7b9061470b565b15614fbb57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261501a9061470b565b8061507f5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261507f9061470b565b156150bf57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261511e9061470b565b1561515e57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611d239290602001617540565b60608060005b8451811015615200578185828151811061519757615197616da1565b60200260200101516040516020016151b09291906168e9565b6040516020818303038152906040529150600185516151cf919061743c565b81146151f857816040516020016151e691906176a9565b60405160208183030381529060405291505b60010161517b565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081615219579050509050838160008151811061524457615244616da1565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061529857615298616da1565b602002602001018190525081816002815181106152b7576152b7616da1565b6020908102919091010152949350505050565b60208083015183518351928401516000936152e89291849190615d88565b14159392505050565b604080518082019091526000808252602082015260006153238460000151856020015185600001518660200151615e99565b9050836020015181615335919061743c565b8451859061534490839061743c565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615378575081611a10565b602080830151908401516001911461539f5750815160208481015190840151829020919020145b80156153d0578251845185906153b690839061743c565b90525082516020850180516153cc90839061752d565b9052505b509192915050565b60408051808201909152600080825260208201526153f7838383615fb9565b5092915050565b60606000826000015167ffffffffffffffff81111561541f5761541f61671f565b6040519080825280601f01601f191660200182016040528015615449576020820181803683370190505b50905060006020820190506153f78185602001518660000151616064565b815181516000919081111561547a575081515b6020808501519084015160005b8381101561553357825182518082146155035760001960208710156154e2576001846154b489602061743c565b6154be919061752d565b6154c99060086176ea565b6154d49060026177e8565b6154de919061743c565b1990505b8181168382168181039114615500579750611a109650505050505050565b50505b61550e60208661752d565b945061551b60208561752d565b9350505060208161552c919061752d565b9050615487565b5084518651612aa491906177f4565b6060600061554e612323565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161556b57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806155c690616f3d565b935060ff16815181106155db576155db616da1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161562c9190617814565b60405160208183030381529060405282828061564790616f3d565b935060ff168151811061565c5761565c616da1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806156a990616f3d565b935060ff16815181106156be576156be616da1565b6020026020010181905250826040516020016156da9190616e3c565b6040516020818303038152906040528282806156f590616f3d565b935060ff168151811061570a5761570a616da1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061575790616f3d565b935060ff168151811061576c5761576c616da1565b602002602001018190525061578187846160de565b828261578c81616f3d565b935060ff16815181106157a1576157a1616da1565b60209081029190910101528551511561584d5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157f381616f3d565b935060ff168151811061580857615808616da1565b60200260200101819052506158218660000151846160de565b828261582c81616f3d565b935060ff168151811061584157615841616da1565b60200260200101819052505b8560800151156158bb5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261589681616f3d565b935060ff16815181106158ab576158ab616da1565b6020026020010181905250615921565b84156159215760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261590081616f3d565b935060ff168151811061591557615915616da1565b60200260200101819052505b604086015151156159bd5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261596b81616f3d565b935060ff168151811061598057615980616da1565b6020026020010181905250856040015182828061599c90616f3d565b935060ff16815181106159b1576159b1616da1565b60200260200101819052505b856060015115615a275760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615a0681616f3d565b935060ff1681518110615a1b57615a1b616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a4557615a4561671f565b604051908082528060200260200182016040528015615a7857816020015b6060815260200190600190039081615a635790505b50905060005b8260ff168160ff161015615ad157838160ff1681518110615aa157615aa1616da1565b6020026020010151828260ff1681518110615abe57615abe616da1565b6020908102919091010152600101615a7e565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615b02575081611a10565b81518351602085015160009291615b189161752d565b615b22919061743c565b60208401519091506001908214615b43575082516020840151819020908220145b8015615b5e57835185518690615b5a90839061743c565b9052505b50929392505050565b6000808260000151615b8b8560000151866020015186600001518760200151615e99565b615b95919061752d565b90505b83516020850151615ba9919061752d565b81116153f75781615bb981617859565b9250508260000151615bf0856020015183615bd4919061743c565b8651615be0919061743c565b8386600001518760200151615e99565b615bfa919061752d565b9050615b98565b60606000615c0f8484615b67565b615c1a90600161752d565b67ffffffffffffffff811115615c3257615c3261671f565b604051908082528060200260200182016040528015615c6557816020015b6060815260200190600190039081615c505790505b50905060005b8151811015613cf257615c8161402186866153d8565b828281518110615c9357615c93616da1565b6020908102919091010152600101615c6b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615d1b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d3957662386f26fc10000830492506010015b6305f5e1008310615d51576305f5e100830492506008015b6127108310615d6557612710830492506004015b60648310615d77576064830492506002015b600a8310611a105760010192915050565b600080858411615e8f5760208411615e3b5760008415615dd3576001615daf86602061743c565b615dba9060086176ea565b615dc59060026177e8565b615dcf919061743c565b1990505b8351811685615de2898961752d565b615dec919061743c565b805190935082165b818114615e2657878411615e0e5787945050505050613923565b83615e1881617873565b945050828451169050615df4565b615e30878561752d565b945050505050613923565b838320615e48858861743c565b615e52908761752d565b91505b858210615e8d57848220808203615e7a57615e70868461752d565b9350505050613923565b615e8560018461743c565b925050615e55565b505b5092949350505050565b60008381868511615fa45760208511615f535760008515615ee5576001615ec187602061743c565b615ecc9060086176ea565b615ed79060026177e8565b615ee1919061743c565b1990505b84518116600087615ef68b8b61752d565b615f00919061743c565b855190915083165b828114615f4557818610615f2d57615f208b8b61752d565b9650505050505050613923565b85615f3781617859565b965050838651169050615f08565b859650505050505050613923565b508383206000905b615f65868961743c565b8211615fa257858320808203615f815783945050505050613923565b615f8c60018561752d565b9350508180615f9a90617859565b925050615f5b565b505b615fae878761752d565b979650505050505050565b60408051808201909152600080825260208201526000615feb8560000151866020015186600001518760200151615e99565b602080870180519186019190915251909150616007908261743c565b83528451602086015161601a919061752d565b8103616029576000855261605b565b83518351616037919061752d565b8551869061604690839061743c565b9052508351616055908261752d565b60208601525b50909392505050565b6020811061609c578151835261607b60208461752d565b925061608860208361752d565b915061609560208261743c565b9050616064565b60001981156160cb5760016160b283602061743c565b6160be906101006177e8565b6160c8919061743c565b90505b9151835183169219169190911790915250565b606060006160ec84846123f6565b80516020808301516040519394506161069390910161788a565b60405160208183030381529060405291505092915050565b610c9f806178e383390190565b61140b8061858283390190565b6117f98061998d83390190565b610d5e8061b18683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161619561619a565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016161956040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561624c5783516001600160a01b0316835260209384019390920191600101616225565b509095945050505050565b60005b8381101561627257818101518382015260200161625a565b50506000910152565b60008151808452616293816020860160208601616257565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616389577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261637384865161627b565b6020958601959094509290920191600101616339565b5091975050506020948501949290920191506001016162cf565b50929695505050505050565b600081518084526020840193506020830160005b828110156164035781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016163c3565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616479604088018261627b565b905060208201519150868103602088015261649481836163af565b965050506020938401939190910190600101616435565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261650d85835161627b565b945060209384019391909101906001016164d3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526165a360408701826163af565b955050602093840193919091019060010161654a565b6000602082840312156165cb57600080fd5b81518015158114611b3657600080fd5b600181811c908216806165ef57607f821691505b6020821081036142fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561663a57600080fd5b81516001600160a01b0381168114611b3657600080fd5b606081526000616664606083018661627b565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142e2606083018461627b565b6001600160a01b038616815284602082015260a0604082015260006166cb60a083018661627b565b6060830194909452509015156080909101529392505050565b828152604060208201526000613923604083018461627b565b6001600160a01b0383168152604060208201526000613923604083018461627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156167715761677161671f565b60405290565b60008067ffffffffffffffff8411156167925761679261671f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156167c1576167c161671f565b6040528381529050808284018510156167d957600080fd5b613cf2846020830185616257565b600082601f8301126167f857600080fd5b611b3683835160208501616777565b60006020828403121561681957600080fd5b815167ffffffffffffffff81111561683057600080fd5b611a0c848285016167e7565b60006020828403121561684e57600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161688d81601a850160208801616257565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168ca81601c840160208801616257565b01601c01949350505050565b602081526000611b36602083018461627b565b600083516168fb818460208801616257565b83519083019061690f818360208801616257565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161695081601a850160208801616257565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161698d816033840160208801616257565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142e2606083018461627b565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b36608083018461627b565b600060208284031215616a4d57600080fd5b815167ffffffffffffffff811115616a6457600080fd5b8201601f81018413616a7557600080fd5b611a0c84825160208401616777565b60008551616a96818460208a01616257565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616ad0816001840160208a01616257565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616b0e816002840160208901616257565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b50816002840160208801616257565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b9b604083018461627b565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616c1281601f850160208701616257565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c7f604083018461627b565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616cd1604083018461627b565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d48816014850160208701616257565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d8f604083018561627b565b8281036020840152611b32818561627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616e08816001850160208701616257565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e4e818460208701616257565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616f0181604b850160208701616257565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f5357616f53616f0e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b36608083018461627b565b60006020828403121561702057600080fd5b815167ffffffffffffffff81111561703757600080fd5b82016060818503121561704957600080fd5b61705161674e565b81518060030b811461706257600080fd5b8152602082015167ffffffffffffffff81111561707e57600080fd5b61708a868285016167e7565b602083015250604082015167ffffffffffffffff8111156170aa57600080fd5b6170b6868285016167e7565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251617122816021850160208701616257565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161730e816021850160208801616257565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161734b81602e840160208801616257565b01602e01949350505050565b60008251617369818460208701616257565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161742f816022850160208701616257565b9190910160220192915050565b81810381811115611a1057611a10616f0e565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161748781600e850160208701616257565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115611a1057611a10616f0e565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617578816018850160208801616257565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516175b581601c840160208801616257565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516176bb818460208701616257565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417611a1057611a10616f0e565b6001815b600184111561773c5780850481111561772057617720616f0e565b600184161561772e57908102905b60019390931c928002617705565b935093915050565b60008261775357506001611a10565b8161776057506000611a10565b816001811461777657600281146177805761779c565b6001915050611a10565b60ff84111561779157617791616f0e565b50506001821b611a10565b5060208310610133831016604e8410600b84101617156177bf575081810a611a10565b6177cc6000198484617701565b80600019048211156177e0576177e0616f0e565b029392505050565b6000611b368383617744565b81810360008312801583831316838312821617156153f7576153f7616f0e565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161784c81601c850160208701616257565b91909101601c0192915050565b6000600019820361786c5761786c616f0e565b5060010190565b60008161788257617882616f0e565b506000190190565b6000835161789c818460208801616257565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178d6816001840160208801616257565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220f72dbdad3a0f5d6c5a4a91663d51a3dbf475dcd01c68e0bbb5ce99a789cf9cc764736f6c634300081a0033", } // GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index cf426760..cf3c70d5 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220e0d221e2700a741409740f6a05e6ac8e799e50b3e2a6e75b5173b33a31fa502464736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea26469706673582212207e9eea909dd03b9b991625c57d71ab317ff14c9101aa69f58639434bfe06a78f64736f6c634300081a0033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index f20eae6d..ba687693 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50620106a0806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b6113e28062009ef483390190565b61182a806200b2d683390190565b610d5e806200cb0083390190565b61080c806200d85e83390190565b610b3f806200e06a83390190565b611ac2806200eba983390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a264697066735822122051de911e0ea2d5c63b8c5f7e8eb994419a3c23fb57a480bf022f85431a3a01ec64736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b506201078b806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b61140b8062009ef483390190565b6117f9806200b2ff83390190565b610d5e806200caf883390190565b61080c806200d85683390190565b610b3f806200e06283390190565b611bb5806200eba183390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122077d23238a2e7d47c8bbeab590e5478444c1217f3c032da9d8971c2c3fc1625ce64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a2646970667358221220239f15814b6fe6437d3c2805e87f0268196cab285b44a4b63d31d8c9a556a19b64736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.sol/gatewayzevm.go b/v2/pkg/gatewayzevm.sol/gatewayzevm.go index a882c8be..a9b9db22 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -45,8 +45,8 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220a674352ad8eda2675de3e0d97b91ed3fa3da4cd5c58000ddb3dbd7fc65105db464736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d476100fd60003960008181611e7801528181611ea101526120590152612d476000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612537565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e61028536600461264d565b61078b565b34801561029657600080fd5b5061022e6102a5366004612709565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd366004612795565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127ae565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127de565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127ae565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f736600461287c565b610b7e565b34801561040857600080fd5b5061022e61041736600461289e565b610c61565b61022e61042a3660046128cc565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127de565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b636600461291c565b61106e565b3480156104c757600080fd5b5061022e6104d6366004612991565b6110ed565b3480156104e757600080fd5b5061022e6104f63660046129cc565b6111ec565b34801561050757600080fd5b5061022e61129e565b34801561051c57600080fd5b5061025561052b3660046127ae565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a57565b3480156105ec57600080fd5b5061022e6105fb3660046127de565b6112d0565b34801561060c57600080fd5b5061022e61061b3660046127de565b611372565b34801561062c57600080fd5b5061022e61063b3660046127ae565b6114f3565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a6a565b611537565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b8565b61079b610694565b60006107a78383611739565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612aa1565b60405161084d959493929190612aba565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a2c565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd9565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bfa565b610a1b8383611c04565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd9565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611cf1565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bfa565b610b7b611db5565b50565b610b866116b8565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a2c565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612aba565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e45565b610dbf611e45565b610dc7611e4d565b610dcf611e5d565b610dda600087611c04565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611c04565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e6d565b610eb482611f3d565b610c5d8282611f48565b6000610ec861204e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c20565b610a76576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110766116b8565b61107e610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110bc93929190612c42565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6110f56116b8565b6110fd610694565b60006111098585611739565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119e9190612aa1565b8a8a6040516111b39796959493929190612c72565b60405180910390a3506111e560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6111f46116b8565b6111fc610694565b61121a8473735b14bb79463307aacbed86daf3322b1e6226ab611a2c565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110bc936001600160a01b03909116918b9181908b908b90612c72565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112c881611bfa565b610b7b6120b0565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461131d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611325610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd9565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113bf576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c7610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab14806113fa57506001600160a01b03831630145b15611431576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190612c20565b611325576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461152d81611bfa565b610a1b8383611cf1565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611584576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158c610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115bf57506001600160a01b03811630145b156115f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116829190612c20565b61087f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611733576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561177b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179f9190612cc7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118489190612c20565b61187e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190e9190612c20565b611944576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af11580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c89190612c20565b6119fe576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190612c20565b611af6576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b5557600080fd5b505af1158015611b69573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bba576040519150601f19603f3d011682016040523d82523d6000602084013e611bbf565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612129565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c9d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611dbd6121b6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f0612211565b611e55612211565b6106f0612278565b611e65612211565b6106f06122c9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611efa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bfa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa2575060408051601f3d908101601f19168201909252611f9f91810190612aa1565b60015b611fe8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612044576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fdf565b61087f83836122d1565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b8610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e27565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fdf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612280612211565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a06612211565b6122da82612327565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231f5761087f82826123cf565b610c5d612445565b806001600160a01b03163b600003612376576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fdf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123ec9190612cf5565b600060405180830381855af49150503d8060008114612427576040519150601f19603f3d011682016040523d82523d6000602084013e61242c565b606091505b509150915061243c85838361247d565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826124925761248d826124f5565b6124ee565b81511580156124a957506001600160a01b0384163b155b156124eb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fdf565b50805b9392505050565b8051156125055780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124ee57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b957600080fd5b813567ffffffffffffffff8111156125d3576125d3612579565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff8211171561260357612603612579565b60405281815283820160200185101561261b57600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561266257600080fd5b833567ffffffffffffffff81111561267957600080fd5b612685868287016125a8565b93505060208401359150604084013561269d81612638565b809150509250925092565b6000606082840312156126ba57600080fd5b50919050565b60008083601f8401126126d257600080fd5b50813567ffffffffffffffff8111156126ea57600080fd5b60208301915083602082850101111561270257600080fd5b9250929050565b60008060008060006080868803121561272157600080fd5b853567ffffffffffffffff81111561273857600080fd5b612744888289016126a8565b95505060208601359350604086013561275c81612638565b9250606086013567ffffffffffffffff81111561277857600080fd5b612784888289016126c0565b969995985093965092949392505050565b6000602082840312156127a757600080fd5b5035919050565b600080604083850312156127c157600080fd5b8235915060208301356127d381612638565b809150509250929050565b60008060008060008060a087890312156127f757600080fd5b863567ffffffffffffffff81111561280e57600080fd5b61281a89828a016126a8565b965050602087013561282b81612638565b945060408701359350606087013561284281612638565b9250608087013567ffffffffffffffff81111561285e57600080fd5b61286a89828a016126c0565b979a9699509497509295939492505050565b6000806040838503121561288f57600080fd5b50508035926020909101359150565b600080604083850312156128b157600080fd5b82356128bc81612638565b915060208301356127d381612638565b600080604083850312156128df57600080fd5b82356128ea81612638565b9150602083013567ffffffffffffffff81111561290657600080fd5b612912858286016125a8565b9150509250929050565b6000806000806060858703121561293257600080fd5b843567ffffffffffffffff81111561294957600080fd5b612955878288016125a8565b94505060208501359250604085013567ffffffffffffffff81111561297957600080fd5b612985878288016126c0565b95989497509550505050565b6000806000806000608086880312156129a957600080fd5b853567ffffffffffffffff8111156129c057600080fd5b612744888289016125a8565b600080600080606085870312156129e257600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297957600080fd5b60005b83811015612a22578181015183820152602001612a0a565b50506000910152565b60008151808452612a43816020860160208601612a07565b601f01601f19169290920160200192915050565b6020815260006124ee6020830184612a2b565b600080600060608486031215612a7f57600080fd5b8335612a8a81612638565b925060208401359150604084013561269d81612638565b600060208284031215612ab357600080fd5b5051919050565b60c081526000612acd60c0830188612a2b565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6a57600080fd5b820160208101903567ffffffffffffffff811115612b8757600080fd5b803603821315612b9657600080fd5b60608552612ba8606086018284612b0b565b9150506020830135612bb981612638565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612bec6080830188612b36565b6001600160a01b03871660208401528560408401528281036060840152612c14818587612b0b565b98975050505050505050565b600060208284031215612c3257600080fd5b815180151581146124ee57600080fd5b604081526000612c556040830186612a2b565b8281036020840152612c68818587612b0b565b9695505050505050565b60c081526000612c8560c083018a612a2b565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb9818587612b0b565b9a9950505050505050505050565b60008060408385031215612cda57600080fd5b8251612ce581612638565b6020939093015192949293505050565b60008251612d07818460208701612a07565b919091019291505056fea2646970667358221220d80062e0540ac38d4b4690f67eb67f6597352e50aa6a7cdb180a197da643c76164736f6c634300081a0033", } // GatewayZEVMABI is the input ABI used to generate the binding from. @@ -696,23 +696,23 @@ func (_GatewayZEVM *GatewayZEVMTransactorSession) GrantRole(role [32]byte, accou // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize(address _zetaToken, address _admin) returns() -func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, _zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayZEVM.contract.Transact(opts, "initialize", _zetaToken, _admin) +// Solidity: function initialize(address zetaToken_, address admin_) returns() +func (_GatewayZEVM *GatewayZEVMTransactor) Initialize(opts *bind.TransactOpts, zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayZEVM.contract.Transact(opts, "initialize", zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize(address _zetaToken, address _admin) returns() -func (_GatewayZEVM *GatewayZEVMSession) Initialize(_zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken, _admin) +// Solidity: function initialize(address zetaToken_, address admin_) returns() +func (_GatewayZEVM *GatewayZEVMSession) Initialize(zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, zetaToken_, admin_) } // Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function initialize(address _zetaToken, address _admin) returns() -func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(_zetaToken common.Address, _admin common.Address) (*types.Transaction, error) { - return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, _zetaToken, _admin) +// Solidity: function initialize(address zetaToken_, address admin_) returns() +func (_GatewayZEVM *GatewayZEVMTransactorSession) Initialize(zetaToken_ common.Address, admin_ common.Address) (*types.Transaction, error) { + return _GatewayZEVM.Contract.Initialize(&_GatewayZEVM.TransactOpts, zetaToken_, admin_) } // Pause is a paid mutator transaction binding the contract method 0x8456cb59. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index 7e9aba8b..a6347ac8 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cd728061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918991600091849163fa62d57f916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918891600091849163fa62d57f916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b611ac28061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220c83d6ed772980e15022803be1082368a1a5a0ff8bb84e8efe57e25674947619264736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ce658061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610d05565b61018f6110ce565b61018f611523565b6101b161190f565b6040516101be9190617938565b60405180910390f35b6101cf611971565b6040516101be91906179d4565b6101b1611ab3565b6101b1611b13565b61018f611b73565b61018f61200a565b610204612359565b6040516101be9190617b3a565b6102196124db565b6040516101be9190617bd8565b61022e6125ab565b6040516101be9190617c4f565b61022e6126a6565b6102196127a1565b61018f612871565b61025b612aae565b60405190151581526020016101be565b61018f612b82565b6101b1612fab565b61018f61300b565b601f5461025b9060ff1681565b61018f6133c7565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de9061784b565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260255491516024810193909352921660448201526103de919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261373a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c49190617ce6565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161050890617858565b604051809103906000f080158015610524573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105c057600080fd5b505af11580156105d4573d6000803e3d6000fd5b5050505060008060006040516105e990617865565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610625573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560205460405160129360019384936000939192169061067b90617872565b61068a96959493929190617d0f565b604051809103906000f0801580156106a6573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107bb57600080fd5b505af11580156107cf573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190617e04565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190617e04565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190617e04565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261101d9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190617e26565b9050610cff8382613759565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052602254611368926001600160a01b03909116908c9060009081908b90617e79565b60405180910390a36020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906380bd3d03906113bd90899085908790600401617ecc565b600060405180830381600087803b1580156113d757600080fd5b505af11580156113eb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190617e26565b9050611478611472600188617f1a565b82613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190617e26565b90506114f98682613759565b611519611507866001617f2d565b6027546001600160a01b031631613759565b5050505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190617e26565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918991600091849163fa62d57f916004808201926020929091908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190617e26565b886040516117bc96959493929190617e79565b60405180910390a3602080546026546040516001600160a01b0392831693637993c1e0936118049316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261185b9288916001600160a01b0316908790600401617e3f565b600060405180830381600087803b15801561187557600080fd5b505af1158015611889573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190617e26565b9050610cff6114728585617f1a565b6060601680548060200260200160405190810160405280929190818152602001828054801561196757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611949575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a93578382906000526020600020018054611a0690617f40565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3290617f40565b8015611a7f5780601f10611a5457610100808354040283529160200191611a7f565b820191906000526020600020905b815481529060010190602001808311611a6257829003601f168201915b5050505050815260200190600101906119e7565b505050508152505081526020019060010190611995565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e9190617e26565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50506020546040517f80bd3d030000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506380bd3d039150611ec090899085908790600401617ecc565b600060405180830381600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190617e26565b9050611f718682613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190617e26565b9050611ff28682613759565b6027546115199086906001600160a01b031631613759565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f9190617e26565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120f457600080fd5b505af1158015612108573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561217a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219e9190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122a39287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190617e26565b90506123548282613759565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002090600202016040518060400160405290816000820180546123b090617f40565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90617f40565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156124c357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124705790505b5050505050815250508152602001906001019061237d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611aaa57838290600052602060002001805461251e90617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461254a90617f40565b80156125975780601f1061256c57610100808354040283529160200191612597565b820191906000526020600020905b81548152906001019060200180831161257a57829003601f168201915b5050505050815260200190600101906124ff565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161263b5790505b505050505081525050815260200190600101906125cf565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127365790505b505050505081525050815260200190600101906126ca565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611aaa5783829060005260206000200180546127e490617f40565b80601f016020809104026020016040519081016040528092919081815260200182805461281090617f40565b801561285d5780601f106128325761010080835404028352916020019161285d565b820191906000526020600020905b81548152906001019060200180831161284057829003601f168201915b5050505050815260200190600101906127c5565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600193508392506001600160a01b03909116907f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a01918790617fbf565b60405180910390a3602080546026546040516001600160a01b0392831693635d40e17893612a499316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405283856040518463ffffffff1660e01b8152600401612a7893929190617fe4565b600060405180830381600087803b158015612a9257600080fd5b505af1158015612aa6573d6000803e3d6000fd5b505050505050565b60085460009060ff1615612ac6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190617e26565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190617e26565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d959190617e04565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612df457600080fd5b505af1158015612e08573d6000803e3d6000fd5b50506020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101899052602481018590526001600160a01b03909116925063441a3e709150604401600060405180830381600087803b158015612e7257600080fd5b505af1158015612e86573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd9190617e26565b9050612f098582613759565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7e9190617e26565b9050612f8a8582613759565b602754612fa29085906001600160a01b031631613759565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611967576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611949575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190617e26565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156130d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f69190617e26565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505060255460275460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260225461322f926001600160a01b03909116908b90600090819061800f565b60405180910390a36020546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101879052602481018390526001600160a01b039091169063441a3e7090604401600060405180830381600087803b15801561329d57600080fd5b505af11580156132b1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133289190617e26565b9050613338611472600187617f1a565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190617e26565b90506133b98582613759565b612fa2611507856001617f2d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343c9190617e26565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156134cd57600080fd5b505af11580156134e1573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181528282526021547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918891600091849163fa62d57f916004808201926020929091908290030181865afa1580156135b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d89190617e26565b6040516135e995949392919061800f565b60405180910390a3602080546026546040516001600160a01b039283169363135390f9936136319316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526136869287916001600160a01b031690600401617f8d565b600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372b9190617e26565b90506123546114728484617f1a565b600061374461787f565b61374f8484836137d8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156137c457600080fd5b505afa158015612aa6573d6000803e3d6000fd5b6000806137e58584613853565b90506138486040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613833929190618060565b6040516020818303038152906040528561385f565b9150505b9392505050565b600061384c838361388d565b60c081015151600090156138835761387c84848460c001516138a8565b905061384c565b61387c8484613a4e565b60006138998383613b39565b61384c8383602001518461385f565b6000806138b3613b49565b905060006138c18683613c1c565b905060006138d882606001518360200151856140c2565b905060006138e8838389896142d4565b905060006138f582615151565b602081015181519192509060030b156139685789826040015160405160200161391f929190618082565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261395f91600401618103565b60405180910390fd5b60006139ab6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615320565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139fe908490600401618103565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f9190617ce6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613aa3908790600401618103565b600060405180830381865afa158015613ac0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae891908101906181fe565b90506000613b168285604051602001613b02929190618233565b604051602081830303815290604052615520565b90506001600160a01b03811661374f57848460405160200161391f929190618262565b613b4582826000615533565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bd090849060040161830d565b600060405180830381865afa158015613bed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c159190810190618354565b9250505090565b613c4e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c996040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ca285615636565b60208201526000613cb286615a1b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1c9190810190618354565b86838560200151604051602001613d36949392919061839d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d8e908590600401618103565b600060405180830381865afa158015613dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dd39190810190618354565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e1b9084906004016184a1565b602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190617e04565b613e71578160405160200161391f91906184f3565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613eb6908490600401618585565b600060405180830381865afa158015613ed3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613efb9190810190618354565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f429084906004016185d7565b602060405180830381865afa158015613f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f839190617e04565b15614018576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fcd9084906004016185d7565b600060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140129190810190618354565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161403d9190618629565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614069929190617fbf565b600060405180830381865afa158015614086573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ae9190810190618354565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140de5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061413e5761413e618695565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061419257614192618695565b6020026020010181905250846040516020016141ae91906186c4565b604051602081830303815290604052816002815181106141d0576141d0618695565b6020026020010181905250826040516020016141ec9190618730565b6040516020818303038152906040528160038151811061420e5761420e618695565b6020026020010181905250600061422482615151565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142b59060408051808201825260008082526020918201528151808301909252845182528085019082015290615c9e565b6142ca578560405160200161391f9190618771565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614324565b511590565b614498578260200151156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161395f565b8260c0015115614498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161395f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816144b157905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061450c90618802565b935060ff168151811061452157614521618695565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145729190618821565b60405160208183030381529060405282828061458d90618802565b935060ff16815181106145a2576145a2618695565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145ef90618802565b935060ff168151811061460457614604618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061465190618802565b935060ff168151811061466657614666618695565b6020026020010181905250876020015182828061468290618802565b935060ff168151811061469757614697618695565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146e490618802565b935060ff16815181106146f9576146f9618695565b60209081029190910101528751828261471181618802565b935060ff168151811061472657614726618695565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061477390618802565b935060ff168151811061478857614788618695565b602002602001018190525061479c46615cff565b82826147a781618802565b935060ff16815181106147bc576147bc618695565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061480990618802565b935060ff168151811061481e5761481e618695565b60200260200101819052508682828061483690618802565b935060ff168151811061484b5761484b618695565b60209081029190910101528551156149725760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261489c81618802565b935060ff16815181106148b1576148b1618695565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614901908990600401618103565b600060405180830381865afa15801561491e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149469190810190618354565b828261495181618802565b935060ff168151811061496657614966618695565b60200260200101819052505b846020015115614a425760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826149bb81618802565b935060ff16815181106149d0576149d0618695565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a1d90618802565b935060ff1681518110614a3257614a32618695565b6020026020010181905250614c09565b614a7a61431f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b0d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614abd81618802565b935060ff1681518110614ad257614ad2618695565b60200260200101819052508460a00151604051602001614af291906186c4565b604051602081830303815290604052828280614a1d90618802565b8460c00151158015614b50575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b4e90511590565b155b15614c095760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b9481618802565b935060ff1681518110614ba957614ba9618695565b6020026020010181905250614bbd88615d9f565b604051602001614bcd91906186c4565b604051602081830303815290604052828280614be890618802565b935060ff1681518110614bfd57614bfd618695565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c3d90511590565b614cd25760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c8081618802565b935060ff1681518110614c9557614c95618695565b60200260200101819052508460400151828280614cb190618802565b935060ff1681518110614cc657614cc6618695565b60200260200101819052505b606085015115614df35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d1b81618802565b935060ff1681518110614d3057614d30618695565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dc79190810190618354565b8282614dd281618802565b935060ff1681518110614de757614de7618695565b60200260200101819052505b60e08501515115614e9a5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e3d81618802565b935060ff1681518110614e5257614e52618695565b6020026020010181905250614e6e8560e0015160000151615cff565b8282614e7981618802565b935060ff1681518110614e8e57614e8e618695565b60200260200101819052505b60e08501516020015115614f445760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ee781618802565b935060ff1681518110614efc57614efc618695565b6020026020010181905250614f188560e0015160200151615cff565b8282614f2381618802565b935060ff1681518110614f3857614f38618695565b60200260200101819052505b60e08501516040015115614fee5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f9181618802565b935060ff1681518110614fa657614fa6618695565b6020026020010181905250614fc28560e0015160400151615cff565b8282614fcd81618802565b935060ff1681518110614fe257614fe2618695565b60200260200101819052505b60e085015160600151156150985760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261503b81618802565b935060ff168151811061505057615050618695565b602002602001018190525061506c8560e0015160600151615cff565b828261507781618802565b935060ff168151811061508c5761508c618695565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156150b6576150b6618116565b6040519080825280602002602001820160405280156150e957816020015b60608152602001906001900390816150d45790505b50905060005b8260ff168160ff16101561514257838160ff168151811061511257615112618695565b6020026020010151828260ff168151811061512f5761512f618695565b60209081029190910101526001016150ef565b5093505050505b949350505050565b6151786040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151fe9186910161888c565b600060405180830381865afa15801561521b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152439190810190618354565b90506000615251868361688e565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152819190617bd8565b6000604051808303816000875af11580156152a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152c891908101906188d3565b805190915060030b158015906152e15750602081015151155b80156152f05750604081015151155b156142ca578160008151811061530857615308618695565b602002602001015160405160200161391f9190618989565b606060006153558560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061538c9082905b906169e3565b156154e957600061540982615403846153fd6153cf8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a0a565b90616a6c565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061546d9082906169e3565b156154d757604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d4905b8290616af1565b90505b6154e081616b17565b9250505061384c565b821561550257848460405160200161391f929190618b75565b505060408051602081019091526000815261384c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561554257505050565b600061554f848484616b80565b9050600061555c82615151565b602081015181519192509060030b1580156155f85750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155f890604080518082018252600080825260209182015281518083019092528451825280850190820152615386565b1561560557505050505050565b6040820151511561562557816040015160405160200161391f9190618c1c565b8060405160200161391f9190618c7a565b6060600061566b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156d0905b8290615c9e565b1561573f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90839061711b565b616b17565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a1905b82906171a5565b60010361586e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615807906154cd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a905b8390616af1565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158cd906156c9565b15615a0457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061593590839061723f565b9050600081600183516159489190617f1a565b8151811061595857615958618695565b602002602001015190506159fb61573a6159ce6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061711b565b95945050505050565b8260405160200161391f9190618ce5565b50919050565b60606000615a508360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab2906156c9565b15615ac05761384c81616b17565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b1f9061579a565b600103615b8957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261384c9061573a90615867565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615be8906156c9565b15615a0457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c5090839061723f565b9050600181511115615c8c578060028251615c6b9190617f1a565b81518110615c7b57615c7b618695565b602002602001015192505050919050565b508260405160200161391f9190618ce5565b805182516000911115615cb357506000613753565b81518351602085015160009291615cc991617f2d565b615cd39190617f1a565b905082602001518103615cea576001915050613753565b82516020840151819020912014905092915050565b60606000615d0c836172e4565b600101905060008167ffffffffffffffff811115615d2c57615d2c618116565b6040519080825280601f01601f191660200182016040528015615d56576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d6057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e2b905b82906173c6565b15615e6b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eca90615e24565b15615f0a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f6990615e24565b15615fa957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600890615e24565b8061606d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606d90615e24565b156160ad57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610c90615e24565b806161715750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261617190615e24565b156161b157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261621090615e24565b806162755750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261627590615e24565b156162b557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631490615e24565b806163795750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261637990615e24565b156163b957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261641890615e24565b1561645857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b790615e24565b156164f757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655690615e24565b1561659657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f590615e24565b1561663557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261669490615e24565b156166d457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673390615e24565b806167985750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679890615e24565b156167d857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683790615e24565b1561687757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161391f9290602001618dc3565b60608060005b845181101561691957818582815181106168b0576168b0618695565b60200260200101516040516020016168c9929190618233565b6040516020818303038152906040529150600185516168e89190617f1a565b811461691157816040516020016168ff9190618f2c565b60405160208183030381529060405291505b600101616894565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616932579050509050838160008151811061695d5761695d618695565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106169b1576169b1618695565b602002602001018190525081816002815181106169d0576169d0618695565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a0192918491906173da565b14159392505050565b60408051808201909152600080825260208201526000616a3c84600001518560200151856000015186602001516174eb565b9050836020015181616a4e9190617f1a565b84518590616a5d908390617f1a565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a91575081613753565b6020808301519084015160019114616ab85750815160208481015190840151829020919020145b8015616ae957825184518590616acf908390617f1a565b9052508251602085018051616ae5908390617f2d565b9052505b509192915050565b6040805180820190915260008082526020820152616b1083838361760b565b5092915050565b60606000826000015167ffffffffffffffff811115616b3857616b38618116565b6040519080825280601f01601f191660200182016040528015616b62576020820181803683370190505b5090506000602082019050616b1081856020015186600001516176b6565b60606000616b8c613b49565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ba957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c0490618802565b935060ff1681518110616c1957616c19618695565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c6a9190618f6d565b604051602081830303815290604052828280616c8590618802565b935060ff1681518110616c9a57616c9a618695565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616ce790618802565b935060ff1681518110616cfc57616cfc618695565b602002602001018190525082604051602001616d189190618730565b604051602081830303815290604052828280616d3390618802565b935060ff1681518110616d4857616d48618695565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d9590618802565b935060ff1681518110616daa57616daa618695565b6020026020010181905250616dbf8784617730565b8282616dca81618802565b935060ff1681518110616ddf57616ddf618695565b602090810291909101015285515115616e8b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e3181618802565b935060ff1681518110616e4657616e46618695565b6020026020010181905250616e5f866000015184617730565b8282616e6a81618802565b935060ff1681518110616e7f57616e7f618695565b60200260200101819052505b856080015115616ef95760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616ed481618802565b935060ff1681518110616ee957616ee9618695565b6020026020010181905250616f5f565b8415616f5f5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f3e81618802565b935060ff1681518110616f5357616f53618695565b60200260200101819052505b60408601515115616ffb5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616fa981618802565b935060ff1681518110616fbe57616fbe618695565b60200260200101819052508560400151828280616fda90618802565b935060ff1681518110616fef57616fef618695565b60200260200101819052505b8560600151156170655760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261704481618802565b935060ff168151811061705957617059618695565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561708357617083618116565b6040519080825280602002602001820160405280156170b657816020015b60608152602001906001900390816170a15790505b50905060005b8260ff168160ff16101561710f57838160ff16815181106170df576170df618695565b6020026020010151828260ff16815181106170fc576170fc618695565b60209081029190910101526001016170bc565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617140575081613753565b8151835160208501516000929161715691617f2d565b6171609190617f1a565b60208401519091506001908214617181575082516020840151819020908220145b801561719c57835185518690617198908390617f1a565b9052505b50929392505050565b60008082600001516171c985600001518660200151866000015187602001516174eb565b6171d39190617f2d565b90505b835160208501516171e79190617f2d565b8111616b1057816171f781618fb2565b925050826000015161722e8560200151836172129190617f1a565b865161721e9190617f1a565b83866000015187602001516174eb565b6172389190617f2d565b90506171d6565b6060600061724d84846171a5565b617258906001617f2d565b67ffffffffffffffff81111561727057617270618116565b6040519080825280602002602001820160405280156172a357816020015b606081526020019060019003908161728e5790505b50905060005b8151811015615518576172bf61573a8686616af1565b8282815181106172d1576172d1618695565b60209081029190910101526001016172a9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061732d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617359576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061737757662386f26fc10000830492506010015b6305f5e100831061738f576305f5e100830492506008015b61271083106173a357612710830492506004015b606483106173b5576064830492506002015b600a83106137535760010192915050565b60006173d28383617770565b159392505050565b6000808584116174e1576020841161748d5760008415617425576001617401866020617f1a565b61740c906008618fcc565b6174179060026190ca565b6174219190617f1a565b1990505b83518116856174348989617f2d565b61743e9190617f1a565b805190935082165b818114617478578784116174605787945050505050615149565b8361746a816190d6565b945050828451169050617446565b6174828785617f2d565b945050505050615149565b83832061749a8588617f1a565b6174a49087617f2d565b91505b8582106174df578482208082036174cc576174c28684617f2d565b9350505050615149565b6174d7600184617f1a565b9250506174a7565b505b5092949350505050565b600083818685116175f657602085116175a55760008515617537576001617513876020617f1a565b61751e906008618fcc565b6175299060026190ca565b6175339190617f1a565b1990505b845181166000876175488b8b617f2d565b6175529190617f1a565b855190915083165b8281146175975781861061757f576175728b8b617f2d565b9650505050505050615149565b8561758981618fb2565b96505083865116905061755a565b859650505050505050615149565b508383206000905b6175b78689617f1a565b82116175f4578583208082036175d35783945050505050615149565b6175de600185617f2d565b93505081806175ec90618fb2565b9250506175ad565b505b6176008787617f2d565b979650505050505050565b6040805180820190915260008082526020820152600061763d85600001518660200151866000015187602001516174eb565b6020808701805191860191909152519091506176599082617f1a565b83528451602086015161766c9190617f2d565b810361767b57600085526176ad565b835183516176899190617f2d565b85518690617698908390617f1a565b90525083516176a79082617f2d565b60208601525b50909392505050565b602081106176ee57815183526176cd602084617f2d565b92506176da602083617f2d565b91506176e7602082617f1a565b90506176b6565b600019811561771d576001617704836020617f1a565b617710906101006190ca565b61771a9190617f1a565b90505b9151835183169219169190911790915250565b6060600061773e8484613c1c565b8051602080830151604051939450617758939091016190ed565b60405160208183030381529060405291505092915050565b8151815160009190811115617783575081515b6020808501519084015160005b8381101561783c578251825180821461780c5760001960208710156177eb576001846177bd896020617f1a565b6177c79190617f2d565b6177d2906008618fcc565b6177dd9060026190ca565b6177e79190617f1a565b1990505b81811683821681810391146178095797506137539650505050505050565b50505b617817602086617f2d565b9450617824602085617f2d565b935050506020816178359190617f2d565b9050617790565b50845186516142ca9190619145565b610b678061916683390190565b61053f80619ccd83390190565b61106f8061a20c83390190565b611bb58061b27b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178c26178c7565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178c26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179795783516001600160a01b0316835260209384019390920191600101617952565b509095945050505050565b60005b8381101561799f578181015183820152602001617987565b50506000910152565b600081518084526179c0816020860160208601617984565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ab6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aa08486516179a8565b6020958601959094509290920191600101617a66565b5091975050506020948501949290920191506001016179fc565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b305781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617af0565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ba660408801826179a8565b9050602082015191508681036020880152617bc18183617adc565b965050506020938401939190910190600101617b62565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c3a8583516179a8565b94506020938401939190910190600101617c00565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617ad0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cd06040870182617adc565b9550506020938401939190910190600101617c77565b600060208284031215617cf857600080fd5b81516001600160a01b038116811461384c57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dc9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617dea60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617e1657600080fd5b8151801515811461384c57600080fd5b600060208284031215617e3857600080fd5b5051919050565b608081526000617e5260808301876179a8565b8560208401526001600160a01b0385166040840152828103606084015261760081856179a8565b60c081526000617e8c60c08301896179a8565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a0840152617ebf81856179a8565b9998505050505050505050565b8381528260208201526060604082015260006159fb60608301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561375357613753617eeb565b8082018082111561375357613753617eeb565b600181811c90821680617f5457607f821691505b602082108103615a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617fa060608301866179a8565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617fd260408301856179a8565b828103602084015261384881856179a8565b606081526000617ff760608301866179a8565b84602084015282810360408401526142ca81856179a8565b60c08152600061802260c08301886179a8565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b6001600160a01b038316815260406020820152600061514960408301846179a8565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ba81601a850160208801617984565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180f781601c840160208801617984565b01601c01949350505050565b60208152600061384c60208301846179a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561816857618168618116565b60405290565b60008067ffffffffffffffff84111561818957618189618116565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181b8576181b8618116565b6040528381529050808284018510156181d057600080fd5b615518846020830185617984565b600082601f8301126181ef57600080fd5b61384c8383516020850161816e565b60006020828403121561821057600080fd5b815167ffffffffffffffff81111561822757600080fd5b61374f848285016181de565b60008351618245818460208801617984565b835190830190618259818360208801617984565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161829a81601a850160208801617984565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516182d7816033840160208801617984565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061384c60808301846179a8565b60006020828403121561836657600080fd5b815167ffffffffffffffff81111561837d57600080fd5b8201601f8101841361838e57600080fd5b61374f8482516020840161816e565b600085516183af818460208a01617984565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183e9816001840160208a01617984565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618427816002840160208901617984565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618469816002840160208801617984565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184b460408301846179a8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161852b81601f850160208701617984565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061859860408301846179a8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185ea60408301846179a8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618661816014850160208701617984565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516186fc816001850160208701617984565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618742818460208701617984565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516187f581604b850160208701617984565b91909101604b0192915050565b600060ff821660ff810361881857618818617eeb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061384c60808301846179a8565b6000602082840312156188e557600080fd5b815167ffffffffffffffff8111156188fc57600080fd5b82016060818503121561890e57600080fd5b618916618145565b81518060030b811461892757600080fd5b8152602082015167ffffffffffffffff81111561894357600080fd5b61894f868285016181de565b602083015250604082015167ffffffffffffffff81111561896f57600080fd5b61897b868285016181de565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189e7816021850160208701617984565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bd3816021850160208801617984565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1081602e840160208801617984565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161887f816029850160208701617984565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618cd8816022850160208701617984565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d1d81600e850160208701617984565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618dfb816018850160208801617984565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e3881601c840160208801617984565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f3e818460208701617984565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fa581601c850160208701617984565b91909101601c0192915050565b60006000198203618fc557618fc5617eeb565b5060010190565b808202811582820484141761375357613753617eeb565b6001815b600184111561901e5780850481111561900257619002617eeb565b600184161561901057908102905b60019390931c928002618fe7565b935093915050565b60008261903557506001613753565b8161904257506000613753565b816001811461905857600281146190625761907e565b6001915050613753565b60ff84111561907357619073617eeb565b50506001821b613753565b5060208310610133831016604e8410600b84101617156190a1575081810a613753565b6190ae6000198484618fe3565b80600019048211156190c2576190c2617eeb565b029392505050565b600061384c8383619026565b6000816190e5576190e5617eeb565b506000190190565b600083516190ff818460208801617984565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619139816001840160208801617984565b01600101949350505050565b8181036000831280158383131683831282161715616b1057616b10617eeb56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a2646970667358221220bbf6c41f1ca80136ab783d322a5d17070a5ee9109a981d84e000ec2f330eedd364736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index cdd4bae1..a2776242 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -49,8 +49,8 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dffd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b611ac28061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220dcd0d99782ed797df53094330b057cc08b1511aee7778c49f359e6c10985b95664736f6c634300081a0033", + ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e0f08061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80637f924c4e11610145578063c3248272116100bd578063e63ab1e91161008c578063f5a3573311610071578063f5a35733146103cf578063fa7626d4146103d7578063fc79171b146103e457600080fd5b8063e63ab1e914610392578063eba3c49c146103c757600080fd5b8063c324827214610372578063cced12c71461037a578063df690b9a14610382578063e20c9f711461038a57600080fd5b8063aed71d9711610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063c27253181461036a57600080fd5b8063aed71d971461033a578063b0464fdc1461034257600080fd5b80637f924c4e1461030057806385226c8114610308578063916a17c61461031d57806396d9d8761461033257600080fd5b806331d09956116101d857806344b2a40b116101a7578063597cfeb01161018c578063597cfeb0146102db57806366d9a9a0146102e3578063720b9aa9146102f857600080fd5b806344b2a40b146102cb578063461fc5af146102d357600080fd5b806331d09956146102ab5780633a25c460146102b35780633e5e3c23146102bb5780633f7286f4146102c357600080fd5b80631c785a14116102145780631c785a14146102685780631ed7831c146102705780631fe687971461028e5780632ade38801461029657600080fd5b806309f080da146102465780630a9254e414610250578063104b352214610258578063198d5ca414610260575b600080fd5b61024e6103ec565b005b61024e6105e0565b61024e61104d565b61024e61123f565b61024e6114f9565b610278611e42565b6040516102859190618ba0565b60405180910390f35b61024e611ea4565b61029e6123d3565b6040516102859190618c3c565b61024e612515565b61024e6126d4565b61027861288f565b6102786128ef565b61024e61294f565b61024e612ad7565b61024e612c95565b6102eb61306b565b6040516102859190618da2565b61024e6131ed565b61024e613460565b6103106134b2565b6040516102859190618e40565b610325613582565b6040516102859190618eb7565b61024e61367d565b61024e6137d0565b610325613adc565b610310613bd7565b61035a613ca7565b6040519015158152602001610285565b61024e613d7b565b61024e613f34565b61024e6140ed565b61024e6142d8565b610278614496565b6103b97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610285565b61024e6144f6565b61024e6146b4565b601f5461035a9060ff1681565b61024e61486b565b60006040516020016103fd90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161062690618ab3565b604051809103906000f080158015610642573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610726919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526149a2565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa1580156107e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080c919061901e565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161085090618ac0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561090857600080fd5b505af115801561091c573d6000803e3d6000fd5b50505050600080600060405161093190618acd565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906109c390618ada565b6109d296959493929190619047565b604051809103906000f0801580156109ee573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b9757600080fd5b505af1158015610bab573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac919061913c565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d41919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061913c565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd4919061913c565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103357600080fd5b505af1158015611047573d6000803e3d6000fd5b50505050565b60405160019060009061106290602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b600060405180830381600087803b15801561122257600080fd5b505af1158015611236573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190619198565b90506112da6000826149c1565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561133357600080fd5b505af1158015611347573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190619198565b90506114f46000826149c1565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061165191906004016191b1565b600060405180830381600087803b15801561166b57600080fd5b505af115801561167f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061184391906004016191b1565b600060405180830381600087803b15801561185d57600080fd5b505af1158015611871573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611b9357600080fd5b505af1158015611ba7573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca09190619198565b9050611cad6000826149c1565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611d9257600080fd5b505af1158015611da6573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e369190619198565b90506114f483826149c1565b60606016805480602002602001604051908101604052809291908181526020018280548015611e9a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e7c575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f329190619198565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190619198565b6024546040519192506001600160a01b03163190600090611fe490602001618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061214193506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612171936001600160a01b03928316928c9216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156121d257600080fd5b505af11580156121e6573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061223d9286928c92911690889060040161915e565b600060405180830381600087803b15801561225757600080fd5b505af115801561226b573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190619198565b905061231061230a8888619266565b826149c1565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e9190619198565b90506123aa86826149c1565b6123c96123b78987619279565b6024546001600160a01b0316316149c1565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561250c57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156124f55783829060005260206000200180546124689061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546124949061928c565b80156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b505050505081526020019060010190612449565b5050505081525050815260200190600101906123f7565b50505050905090565b600060405160200161252690618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156125f057600080fd5b505af1158015612604573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801561266257600080fd5b505af1158015612676573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f500494506105aa9387938116926001929116908990600401618fc9565b6040516001906000906126e990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561282457600080fd5b505af1158015612838573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506112089286928992911690889060040161915e565b60606018805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156129ab57600080fd5b505af11580156129bf573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b5050505050565b6000604051602001612ae890618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015612bb257600080fd5b505af1158015612bc6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190619198565b9050612d2f6000826149c1565b6000604051602001612d4090618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e2e57600080fd5b505af1158015612e42573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450612e9d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612ece936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612fa19387938116926001929116908990600401618fc9565b600060405180830381600087803b158015612fbb57600080fd5b505af1158015612fcf573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa15801561303a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305e9190619198565b90506110476001826149c1565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561250c57838290600052602060002090600202016040518060400160405290816000820180546130c29061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546130ee9061928c565b801561313b5780601f106131105761010080835404028352916020019161313b565b820191906000526020600020905b81548152906001019060200180831161311e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156131d557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131825790505b5050505050815250508152602001906001019061308f565b60006040516020016131fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061335b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461338c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b94506105aa9387938116926001929116908990600401618fc9565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401611c5f565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561250c5783829060005260206000200180546134f59061928c565b80601f01602080910402602001604051908101604052809291908181526020018280546135219061928c565b801561356e5780601f106135435761010080835404028352916020019161356e565b820191906000526020600020905b81548152906001019060200180831161355157829003601f168201915b5050505050815260200190600101906134d6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561366557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136125790505b505050505081525050815260200190600101906135a6565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136d957600080fd5b505af11580156136ed573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612aa2565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385d9190619198565b905061386a6000826149c1565b600060405160200161387b90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561396957600080fd5b505af115801561397d573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506139d893506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613a09936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a6a57600080fd5b505af1158015613a7e573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450612fa19387938116926001929116908990600401618fc9565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561250c5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613bbf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613b6c5790505b50505050508152505081526020019060010190613b00565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561250c578382906000526020600020018054613c1a9061928c565b80601f0160208091040260200160405190810160405280929190818152602001828054613c469061928c565b8015613c935780601f10613c6857610100808354040283529160200191613c93565b820191906000526020600020905b815481529060010190602001808311613c7657829003601f168201915b505050505081526020019060010190613bfb565b60085460009060ff1615613cbf575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d749190619198565b1415905090565b6000604051602001613d8c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613e5657600080fd5b505af1158015613e6a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613ec757600080fd5b505af1158015613edb573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105aa928692169060019086908990600401618fc9565b6000604051602001613f4590618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561408057600080fd5b505af1158015614094573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105aa928692169060019086908990600401618fc9565b60006040516020016140fe90618f4e565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156141ec57600080fd5b505af1158015614200573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945061425b93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205461428c936001600160a01b039283169260019216906191c4565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612648565b60006040516020016142e990618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156143b357600080fd5b505af11580156143c7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561442457600080fd5b505af1158015614438573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506105aa9387938116926001929116908990600401618fc9565b60606015805480602002602001604051908101604052809291908181526020018280548015611e9a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e7c575050505050905090565b600060405160200161450790618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156145d157600080fd5b505af11580156145e5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561464257600080fd5b505af1158015614656573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506105aa9387938116926001929116908990600401618fc9565b6040516001906000906146c990602001618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561479357600080fd5b505af11580156147a7573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561480457600080fd5b505af1158015614818573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061120890849087908590889060040161915e565b600060405160200161487c90618f4e565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561494657600080fd5b505af115801561495a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024016133d4565b60006149ac618ae7565b6149b7848483614a40565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015614a2c57600080fd5b505afa1580156105d8573d6000803e3d6000fd5b600080614a4d8584614abb565b9050614ab06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614a9b9291906192d9565b60405160208183030381529060405285614ac7565b9150505b9392505050565b6000614ab48383614af5565b60c08101515160009015614aeb57614ae484848460c00151614b10565b9050614ab4565b614ae48484614cb6565b6000614b018383614da1565b614ab483836020015184614ac7565b600080614b1b614db1565b90506000614b298683614e84565b90506000614b40826060015183602001518561532a565b90506000614b508383898961553c565b90506000614b5d826163b9565b602081015181519192509060030b15614bd057898260400151604051602001614b879291906192fb565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252614bc7916004016191b1565b60405180910390fd5b6000614c136040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616588565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614c669084906004016191b1565b602060405180830381865afa158015614c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca7919061901e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614d0b9087906004016191b1565b600060405180830381865afa158015614d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d509190810190619464565b90506000614d7e8285604051602001614d6a929190619499565b604051602081830303815290604052616788565b90506001600160a01b0381166149b7578484604051602001614b879291906194c8565b614dad8282600061679b565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90614e38908490600401619573565b600060405180830381865afa158015614e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e7d91908101906195ba565b9250505090565b614eb66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614f016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614f0a8561689e565b60208201526000614f1a86616c83565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f8491908101906195ba565b86838560200151604051602001614f9e9493929190619603565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ff69085906004016191b1565b600060405180830381865afa158015615013573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261503b91908101906195ba565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615083908490600401619707565b602060405180830381865afa1580156150a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c4919061913c565b6150d95781604051602001614b879190619759565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061511e9084906004016197eb565b600060405180830381865afa15801561513b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261516391908101906195ba565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906151aa90849060040161983d565b602060405180830381865afa1580156151c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151eb919061913c565b15615280576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061523590849060040161983d565b600060405180830381865afa158015615252573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261527a91908101906195ba565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016152a5919061988f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016152d19291906198fb565b600060405180830381865afa1580156152ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261531691908101906195ba565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816153465790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106153a6576153a6619920565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106153fa576153fa619920565b602002602001018190525084604051602001615416919061994f565b6040516020818303038152906040528160028151811061543857615438619920565b60200260200101819052508260405160200161545491906199bb565b6040516020818303038152906040528160038151811061547657615476619920565b6020026020010181905250600061548c826163b9565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061551d9060408051808201825260008082526020918201528151808301909252845182528085019082015290616f06565b6155325785604051602001614b8791906199fc565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561558c565b511590565b61570057826020015115615648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614bc7565b8260c0015115615700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614bc7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161571957905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061577490619a8d565b935060ff168151811061578957615789619920565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016157da9190619aac565b6040516020818303038152906040528282806157f590619a8d565b935060ff168151811061580a5761580a619920565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061585790619a8d565b935060ff168151811061586c5761586c619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806158b990619a8d565b935060ff16815181106158ce576158ce619920565b602002602001018190525087602001518282806158ea90619a8d565b935060ff16815181106158ff576158ff619920565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061594c90619a8d565b935060ff168151811061596157615961619920565b60209081029190910101528751828261597981619a8d565b935060ff168151811061598e5761598e619920565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806159db90619a8d565b935060ff16815181106159f0576159f0619920565b6020026020010181905250615a0446616f67565b8282615a0f81619a8d565b935060ff1681518110615a2457615a24619920565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615a7190619a8d565b935060ff1681518110615a8657615a86619920565b602002602001018190525086828280615a9e90619a8d565b935060ff1681518110615ab357615ab3619920565b6020908102919091010152855115615bda5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282615b0481619a8d565b935060ff1681518110615b1957615b19619920565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615b699089906004016191b1565b600060405180830381865afa158015615b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bae91908101906195ba565b8282615bb981619a8d565b935060ff1681518110615bce57615bce619920565b60200260200101819052505b846020015115615caa5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282615c2381619a8d565b935060ff1681518110615c3857615c38619920565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280615c8590619a8d565b935060ff1681518110615c9a57615c9a619920565b6020026020010181905250615e71565b615ce26155878660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b615d755760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615d2581619a8d565b935060ff1681518110615d3a57615d3a619920565b60200260200101819052508460a00151604051602001615d5a919061994f565b604051602081830303815290604052828280615c8590619a8d565b8460c00151158015615db8575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152615db690511590565b155b15615e715760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615dfc81619a8d565b935060ff1681518110615e1157615e11619920565b6020026020010181905250615e2588617007565b604051602001615e35919061994f565b604051602081830303815290604052828280615e5090619a8d565b935060ff1681518110615e6557615e65619920565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615ea590511590565b615f3a5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615ee881619a8d565b935060ff1681518110615efd57615efd619920565b60200260200101819052508460400151828280615f1990619a8d565b935060ff1681518110615f2e57615f2e619920565b60200260200101819052505b60608501511561605b5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615f8381619a8d565b935060ff1681518110615f9857615f98619920565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261602f91908101906195ba565b828261603a81619a8d565b935060ff168151811061604f5761604f619920565b60200260200101819052505b60e085015151156161025760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826160a581619a8d565b935060ff16815181106160ba576160ba619920565b60200260200101819052506160d68560e0015160000151616f67565b82826160e181619a8d565b935060ff16815181106160f6576160f6619920565b60200260200101819052505b60e085015160200151156161ac5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261614f81619a8d565b935060ff168151811061616457616164619920565b60200260200101819052506161808560e0015160200151616f67565b828261618b81619a8d565b935060ff16815181106161a0576161a0619920565b60200260200101819052505b60e085015160400151156162565760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826161f981619a8d565b935060ff168151811061620e5761620e619920565b602002602001018190525061622a8560e0015160400151616f67565b828261623581619a8d565b935060ff168151811061624a5761624a619920565b60200260200101819052505b60e085015160600151156163005760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826162a381619a8d565b935060ff16815181106162b8576162b8619920565b60200260200101819052506162d48560e0015160600151616f67565b82826162df81619a8d565b935060ff16815181106162f4576162f4619920565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561631e5761631e61937c565b60405190808252806020026020018201604052801561635157816020015b606081526020019060019003908161633c5790505b50905060005b8260ff168160ff1610156163aa57838160ff168151811061637a5761637a619920565b6020026020010151828260ff168151811061639757616397619920565b6020908102919091010152600101616357565b5093505050505b949350505050565b6163e06040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161646691869101619b17565b600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab91908101906195ba565b905060006164b98683617af6565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016164e99190618e40565b6000604051808303816000875af1158015616508573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165309190810190619b5e565b805190915060030b158015906165495750602081015151155b80156165585750604081015151155b15615532578160008151811061657057616570619920565b6020026020010151604051602001614b879190619c14565b606060006165bd8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506165f49082905b90617c4b565b156167515760006166718261666b846166656166378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617c72565b90617cd4565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166d5908290617c4b565b1561673f57604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673c905b8290617d59565b90505b61674881617d7f565b92505050614ab4565b821561676a578484604051602001614b87929190619e00565b5050604080516020810190915260008152614ab4565b509392505050565b6000808251602084016000f09392505050565b8160a00151156167aa57505050565b60006167b7848484617de8565b905060006167c4826163b9565b602081015181519192509060030b1580156168605750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616860906040805180820182526000808252602091820152815180830190925284518252808501908201526165ee565b1561686d57505050505050565b6040820151511561688d578160400151604051602001614b879190619ea7565b80604051602001614b879190619f05565b606060006168d38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616938905b8290616f06565b156169a757604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2908390618383565b617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a09905b829061840d565b600103616ad657604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6f90616735565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a2905b8390617d59565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b3590616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616b9d9083906184a7565b905060008160018351616bb09190619266565b81518110616bc057616bc0619920565b60200260200101519050616c636169a2616c366040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618383565b95945050505050565b82604051602001614b879190619f70565b50919050565b60606000616cb88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616d1a90616931565b15616d2857614ab481617d7f565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d8790616a02565b600103616df157604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ab4906169a290616acf565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e5090616931565b15616c6c57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616eb89083906184a7565b9050600181511115616ef4578060028251616ed39190619266565b81518110616ee357616ee3619920565b602002602001015192505050919050565b5082604051602001614b879190619f70565b805182516000911115616f1b575060006149bb565b81518351602085015160009291616f3191619279565b616f3b9190619266565b905082602001518103616f525760019150506149bb565b82516020840151819020912014905092915050565b60606000616f748361854c565b600101905060008167ffffffffffffffff811115616f9457616f9461937c565b6040519080825280601f01601f191660200182016040528015616fbe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616fc857509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617093905b829061862e565b156170d357505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171329061708c565b1561717257505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171d19061708c565b1561721157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172709061708c565b806172d55750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172d59061708c565b1561731557505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173749061708c565b806173d95750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173d99061708c565b1561741957505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174789061708c565b806174dd5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174dd9061708c565b1561751d57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261757c9061708c565b806175e15750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175e19061708c565b1561762157505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176809061708c565b156176c057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261771f9061708c565b1561775f57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177be9061708c565b156177fe57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261785d9061708c565b1561789d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526178fc9061708c565b1561793c57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261799b9061708c565b80617a005750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a009061708c565b15617a4057505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9f9061708c565b15617adf57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151614b87929060200161a04e565b60608060005b8451811015617b815781858281518110617b1857617b18619920565b6020026020010151604051602001617b31929190619499565b604051602081830303815290604052915060018551617b509190619266565b8114617b795781604051602001617b67919061a1b7565b60405160208183030381529060405291505b600101617afc565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617b9a5790505090508381600081518110617bc557617bc5619920565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110617c1957617c19619920565b60200260200101819052508181600281518110617c3857617c38619920565b6020908102919091010152949350505050565b6020808301518351835192840151600093617c699291849190618642565b14159392505050565b60408051808201909152600080825260208201526000617ca48460000151856020015185600001518660200151618753565b9050836020015181617cb69190619266565b84518590617cc5908390619266565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617cf95750816149bb565b6020808301519084015160019114617d205750815160208481015190840151829020919020145b8015617d5157825184518590617d37908390619266565b9052508251602085018051617d4d908390619279565b9052505b509192915050565b6040805180820190915260008082526020820152617d78838383618873565b5092915050565b60606000826000015167ffffffffffffffff811115617da057617da061937c565b6040519080825280601f01601f191660200182016040528015617dca576020820181803683370190505b5090506000602082019050617d78818560200151866000015161891e565b60606000617df4614db1565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081617e1157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617e6c90619a8d565b935060ff1681518110617e8157617e81619920565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617ed2919061a1f8565b604051602081830303815290604052828280617eed90619a8d565b935060ff1681518110617f0257617f02619920565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617f4f90619a8d565b935060ff1681518110617f6457617f64619920565b602002602001018190525082604051602001617f8091906199bb565b604051602081830303815290604052828280617f9b90619a8d565b935060ff1681518110617fb057617fb0619920565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ffd90619a8d565b935060ff168151811061801257618012619920565b60200260200101819052506180278784618998565b828261803281619a8d565b935060ff168151811061804757618047619920565b6020908102919091010152855151156180f35760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261809981619a8d565b935060ff16815181106180ae576180ae619920565b60200260200101819052506180c7866000015184618998565b82826180d281619a8d565b935060ff16815181106180e7576180e7619920565b60200260200101819052505b8560800151156181615760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261813c81619a8d565b935060ff168151811061815157618151619920565b60200260200101819052506181c7565b84156181c75760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826181a681619a8d565b935060ff16815181106181bb576181bb619920565b60200260200101819052505b604086015151156182635760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261821181619a8d565b935060ff168151811061822657618226619920565b6020026020010181905250856040015182828061824290619a8d565b935060ff168151811061825757618257619920565b60200260200101819052505b8560600151156182cd5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826182ac81619a8d565b935060ff16815181106182c1576182c1619920565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182eb576182eb61937c565b60405190808252806020026020018201604052801561831e57816020015b60608152602001906001900390816183095790505b50905060005b8260ff168160ff16101561837757838160ff168151811061834757618347619920565b6020026020010151828260ff168151811061836457618364619920565b6020908102919091010152600101618324565b50979650505050505050565b60408051808201909152600080825260208201528151835110156183a85750816149bb565b815183516020850151600092916183be91619279565b6183c89190619266565b602084015190915060019082146183e9575082516020840151819020908220145b801561840457835185518690618400908390619266565b9052505b50929392505050565b60008082600001516184318560000151866020015186600001518760200151618753565b61843b9190619279565b90505b8351602085015161844f9190619279565b8111617d78578161845f8161a23d565b925050826000015161849685602001518361847a9190619266565b86516184869190619266565b8386600001518760200151618753565b6184a09190619279565b905061843e565b606060006184b5848461840d565b6184c0906001619279565b67ffffffffffffffff8111156184d8576184d861937c565b60405190808252806020026020018201604052801561850b57816020015b60608152602001906001900390816184f65790505b50905060005b8151811015616780576185276169a28686617d59565b82828151811061853957618539619920565b6020908102919091010152600101618511565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106185c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106185df57662386f26fc10000830492506010015b6305f5e10083106185f7576305f5e100830492506008015b612710831061860b57612710830492506004015b6064831061861d576064830492506002015b600a83106149bb5760010192915050565b600061863a83836189d8565b159392505050565b60008085841161874957602084116186f5576000841561868d576001618669866020619266565b61867490600861a257565b61867f90600261a355565b6186899190619266565b1990505b835181168561869c8989619279565b6186a69190619266565b805190935082165b8181146186e0578784116186c857879450505050506163b1565b836186d28161a361565b9450508284511690506186ae565b6186ea8785619279565b9450505050506163b1565b8383206187028588619266565b61870c9087619279565b91505b858210618747578482208082036187345761872a8684619279565b93505050506163b1565b61873f600184619266565b92505061870f565b505b5092949350505050565b6000838186851161885e576020851161880d576000851561879f57600161877b876020619266565b61878690600861a257565b61879190600261a355565b61879b9190619266565b1990505b845181166000876187b08b8b619279565b6187ba9190619266565b855190915083165b8281146187ff578186106187e7576187da8b8b619279565b96505050505050506163b1565b856187f18161a23d565b9650508386511690506187c2565b8596505050505050506163b1565b508383206000905b61881f8689619266565b821161885c5785832080820361883b57839450505050506163b1565b618846600185619279565b93505081806188549061a23d565b925050618815565b505b6188688787619279565b979650505050505050565b604080518082019091526000808252602082015260006188a58560000151866020015186600001518760200151618753565b6020808701805191860191909152519091506188c19082619266565b8352845160208601516188d49190619279565b81036188e35760008552618915565b835183516188f19190619279565b85518690618900908390619266565b905250835161890f9082619279565b60208601525b50909392505050565b602081106189565781518352618935602084619279565b9250618942602083619279565b915061894f602082619266565b905061891e565b600019811561898557600161896c836020619266565b6189789061010061a355565b6189829190619266565b90505b9151835183169219169190911790915250565b606060006189a68484614e84565b80516020808301516040519394506189c09390910161a378565b60405160208183030381529060405291505092915050565b81518151600091908111156189eb575081515b6020808501519084015160005b83811015618aa45782518251808214618a74576000196020871015618a5357600184618a25896020619266565b618a2f9190619279565b618a3a90600861a257565b618a4590600261a355565b618a4f9190619266565b1990505b8181168382168181039114618a715797506149bb9650505050505050565b50505b618a7f602086619279565b9450618a8c602085619279565b93505050602081618a9d9190619279565b90506189f8565b5084518651615532919061a3d0565b610b678061a3f183390190565b61053f8061af5883390190565b61106f8061b49783390190565b611bb58061c50683390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618b2a618b2f565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001618b2a6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015618be15783516001600160a01b0316835260209384019390920191600101618bba565b509095945050505050565b60005b83811015618c07578181015183820152602001618bef565b50506000910152565b60008151808452618c28816020860160208601618bec565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618d1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352618d08848651618c10565b6020958601959094509290920191600101618cce565b509197505050602094850194929092019150600101618c64565b50929695505050505050565b600081518084526020840193506020830160005b82811015618d985781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618d58565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618e0e6040880182618c10565b9050602082015191508681036020880152618e298183618d44565b965050506020938401939190910190600101618dca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618ea2858351618c10565b94506020938401939190910190600101618e68565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015618d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618f386040870182618d44565b9550506020938401939190910190600101618edf565b6020815260006149bb60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b6000815160608452618fa06060850182618c10565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a081526000618fdc60a0830188618f8b565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526190128185618c10565b98975050505050505050565b60006020828403121561903057600080fd5b81516001600160a01b0381168114614ab457600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619101577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261912260c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561914e57600080fd5b81518015158114614ab457600080fd5b6080815260006191716080830187618f8b565b8560208401526001600160a01b038516604084015282810360608401526188688185618c10565b6000602082840312156191aa57600080fd5b5051919050565b602081526000614ab46020830184618c10565b60a0815260006191d760a0830187618c10565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261886881600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156149bb576149bb619237565b808201808211156149bb576149bb619237565b600181811c908216806192a057607f821691505b602082108103616c7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b03831681526040602082015260006163b16040830184618c10565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161933381601a850160208801618bec565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161937081601c840160208801618bec565b01601c01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156193ce576193ce61937c565b60405290565b60008067ffffffffffffffff8411156193ef576193ef61937c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561941e5761941e61937c565b60405283815290508082840185101561943657600080fd5b616780846020830185618bec565b600082601f83011261945557600080fd5b614ab4838351602085016193d4565b60006020828403121561947657600080fd5b815167ffffffffffffffff81111561948d57600080fd5b6149b784828501619444565b600083516194ab818460208801618bec565b8351908301906194bf818360208801618bec565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161950081601a850160208801618bec565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161953d816033840160208801618bec565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000614ab46080830184618c10565b6000602082840312156195cc57600080fd5b815167ffffffffffffffff8111156195e357600080fd5b8201601f810184136195f457600080fd5b6149b7848251602084016193d4565b60008551619615818460208a01618bec565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161964f816001840160208a01618bec565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161968d816002840160208901618bec565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516196cf816002840160208801618bec565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061971a6040830184618c10565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161979181601f850160208701618bec565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006197fe6040830184618c10565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006198506040830184618c10565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516198c7816014850160208701618bec565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061990e6040830185618c10565b8281036020840152614ab08185618c10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619987816001850160208701618bec565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516199cd818460208701618bec565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251619a8081604b850160208701618bec565b91909101604b0192915050565b600060ff821660ff8103619aa357619aa3619237565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000614ab46080830184618c10565b600060208284031215619b7057600080fd5b815167ffffffffffffffff811115619b8757600080fd5b820160608185031215619b9957600080fd5b619ba16193ab565b81518060030b8114619bb257600080fd5b8152602082015167ffffffffffffffff811115619bce57600080fd5b619bda86828501619444565b602083015250604082015167ffffffffffffffff811115619bfa57600080fd5b619c0686828501619444565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619c72816021850160208701618bec565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619e5e816021850160208801618bec565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619e9b81602e840160208801618bec565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619b0a816029850160208701618bec565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619f63816022850160208701618bec565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619fa881600e850160208701618bec565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161a086816018850160208801618bec565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161a0c381601c840160208801618bec565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161a1c9818460208701618bec565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161a23081601c850160208701618bec565b91909101601c0192915050565b6000600019820361a2505761a250619237565b5060010190565b80820281158282048414176149bb576149bb619237565b6001815b600184111561a2a95780850481111561a28d5761a28d619237565b600184161561a29b57908102905b60019390931c92800261a272565b935093915050565b60008261a2c0575060016149bb565b8161a2cd575060006149bb565b816001811461a2e3576002811461a2ed5761a309565b60019150506149bb565b60ff84111561a2fe5761a2fe619237565b50506001821b6149bb565b5060208310610133831016604e8410600b841016171561a32c575081810a6149bb565b61a339600019848461a26e565b806000190482111561a34d5761a34d619237565b029392505050565b6000614ab4838361a2b1565b60008161a3705761a370619237565b506000190190565b6000835161a38a818460208801618bec565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a3c4816001840160208801618bec565b01600101949350505050565b8181036000831280158383131683831282161715617d7857617d7861923756fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a264697066735822122054c6e540a9d50e6dd6a5b875f4ecd996e638f4785fc8f1d113da110c73100a8a64736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/igatewayevm.sol/igatewayevm.go b/v2/pkg/igatewayevm.sol/igatewayevm.go index 84aee76f..bd144008 100644 --- a/v2/pkg/igatewayevm.sol/igatewayevm.go +++ b/v2/pkg/igatewayevm.sol/igatewayevm.go @@ -31,7 +31,7 @@ var ( // IGatewayEVMMetaData contains all meta data concerning the IGatewayEVM contract. var IGatewayEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", } // IGatewayEVMABI is the input ABI used to generate the binding from. @@ -180,6 +180,111 @@ func (_IGatewayEVM *IGatewayEVMTransactorRaw) Transact(opts *bind.TransactOpts, return _IGatewayEVM.Contract.contract.Transact(opts, method, params...) } +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMTransactor) Call(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "call", receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Call(&_IGatewayEVM.TransactOpts, receiver, payload) +} + +// Call is a paid mutator transaction binding the contract method 0x1b8b921d. +// +// Solidity: function call(address receiver, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) Call(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Call(&_IGatewayEVM.TransactOpts, receiver, payload) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactor) Deposit(opts *bind.TransactOpts, receiver common.Address) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "deposit", receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_IGatewayEVM *IGatewayEVMSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Deposit(&_IGatewayEVM.TransactOpts, receiver) +} + +// Deposit is a paid mutator transaction binding the contract method 0xf340fa01. +// +// Solidity: function deposit(address receiver) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) Deposit(receiver common.Address) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Deposit(&_IGatewayEVM.TransactOpts, receiver) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_IGatewayEVM *IGatewayEVMTransactor) Deposit0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "deposit0", receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_IGatewayEVM *IGatewayEVMSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Deposit0(&_IGatewayEVM.TransactOpts, receiver, amount, asset) +} + +// Deposit0 is a paid mutator transaction binding the contract method 0xf45346dc. +// +// Solidity: function deposit(address receiver, uint256 amount, address asset) returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) Deposit0(receiver common.Address, amount *big.Int, asset common.Address) (*types.Transaction, error) { + return _IGatewayEVM.Contract.Deposit0(&_IGatewayEVM.TransactOpts, receiver, amount, asset) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactor) DepositAndCall(opts *bind.TransactOpts, receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "depositAndCall", receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_IGatewayEVM *IGatewayEVMSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.DepositAndCall(&_IGatewayEVM.TransactOpts, receiver, payload) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x29c59b5d. +// +// Solidity: function depositAndCall(address receiver, bytes payload) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) DepositAndCall(receiver common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.DepositAndCall(&_IGatewayEVM.TransactOpts, receiver, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "depositAndCall0", receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.DepositAndCall0(&_IGatewayEVM.TransactOpts, receiver, amount, asset, payload) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0x8c6f037f. +// +// Solidity: function depositAndCall(address receiver, uint256 amount, address asset, bytes payload) returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) DepositAndCall0(receiver common.Address, amount *big.Int, asset common.Address, payload []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.DepositAndCall0(&_IGatewayEVM.TransactOpts, receiver, amount, asset, payload) +} + // Execute is a paid mutator transaction binding the contract method 0x1cff79cd. // // Solidity: function execute(address destination, bytes data) payable returns(bytes) @@ -201,6 +306,27 @@ func (_IGatewayEVM *IGatewayEVMTransactorSession) Execute(destination common.Add return _IGatewayEVM.Contract.Execute(&_IGatewayEVM.TransactOpts, destination, data) } +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.contract.Transact(opts, "executeRevert", destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_IGatewayEVM *IGatewayEVMSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.ExecuteRevert(&_IGatewayEVM.TransactOpts, destination, data) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x35c018db. +// +// Solidity: function executeRevert(address destination, bytes data) payable returns() +func (_IGatewayEVM *IGatewayEVMTransactorSession) ExecuteRevert(destination common.Address, data []byte) (*types.Transaction, error) { + return _IGatewayEVM.Contract.ExecuteRevert(&_IGatewayEVM.TransactOpts, destination, data) +} + // ExecuteWithERC20 is a paid mutator transaction binding the contract method 0x5131ab59. // // Solidity: function executeWithERC20(address token, address to, uint256 amount, bytes data) returns() diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevm.go b/v2/pkg/igatewayzevm.sol/igatewayzevm.go index c49c8d3c..37b95648 100644 --- a/v2/pkg/igatewayzevm.sol/igatewayzevm.go +++ b/v2/pkg/igatewayzevm.sol/igatewayzevm.go @@ -29,6 +29,13 @@ var ( _ = abi.ConvertType ) +// RevertContext is an auto generated low-level Go binding around an user-defined struct. +type RevertContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + // ZContext is an auto generated low-level Go binding around an user-defined struct. type ZContext struct { Origin []byte @@ -38,7 +45,7 @@ type ZContext struct { // IGatewayZEVMMetaData contains all meta data concerning the IGatewayZEVM contract. var IGatewayZEVMMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", } // IGatewayZEVMABI is the input ABI used to generate the binding from. @@ -229,25 +236,67 @@ func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Deposit(zrc20 common.Address return _IGatewayZEVM.Contract.Deposit(&_IGatewayZEVM.TransactOpts, zrc20, amount, target) } -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "depositAndCall", context, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, amount, target, message) +} + +// DepositAndCall is a paid mutator transaction binding the contract method 0x21501a95. +// +// Solidity: function depositAndCall((bytes,address,uint256) context, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndCall(context ZContext, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, amount, target, message) +} + +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. // // Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndCall(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.contract.Transact(opts, "depositAndCall", context, zrc20, amount, target, message) +func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndCall0(opts *bind.TransactOpts, context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "depositAndCall0", context, zrc20, amount, target, message) } -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. // // Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall0(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) } -// DepositAndCall is a paid mutator transaction binding the contract method 0xc39aca37. +// DepositAndCall0 is a paid mutator transaction binding the contract method 0xc39aca37. // // Solidity: function depositAndCall((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() -func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndCall(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { - return _IGatewayZEVM.Contract.DepositAndCall(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndCall0(context ZContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndCall0(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) DepositAndRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "depositAndRevert", context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndRevert(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// DepositAndRevert is a paid mutator transaction binding the contract method 0x5af65967. +// +// Solidity: function depositAndRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) DepositAndRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.DepositAndRevert(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) } // Execute is a paid mutator transaction binding the contract method 0xbcf7f32b. @@ -271,6 +320,27 @@ func (_IGatewayZEVM *IGatewayZEVMTransactorSession) Execute(context ZContext, zr return _IGatewayZEVM.Contract.Execute(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) } +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactor) ExecuteRevert(opts *bind.TransactOpts, context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.contract.Transact(opts, "executeRevert", context, zrc20, amount, target, message) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.ExecuteRevert(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + +// ExecuteRevert is a paid mutator transaction binding the contract method 0x309f5004. +// +// Solidity: function executeRevert((bytes,address,uint256) context, address zrc20, uint256 amount, address target, bytes message) returns() +func (_IGatewayZEVM *IGatewayZEVMTransactorSession) ExecuteRevert(context RevertContext, zrc20 common.Address, amount *big.Int, target common.Address, message []byte) (*types.Transaction, error) { + return _IGatewayZEVM.Contract.ExecuteRevert(&_IGatewayZEVM.TransactOpts, context, zrc20, amount, target, message) +} + // Withdraw is a paid mutator transaction binding the contract method 0x135390f9. // // Solidity: function withdraw(bytes receiver, uint256 amount, address zrc20) returns() diff --git a/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go b/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go index cb6c3e73..596e475e 100644 --- a/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go +++ b/v2/pkg/igatewayzevm.sol/igatewayzevmerrors.go @@ -31,7 +31,7 @@ var ( // IGatewayZEVMErrorsMetaData contains all meta data concerning the IGatewayZEVMErrors contract. var IGatewayZEVMErrorsMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", + ABI: "[{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", } // IGatewayZEVMErrorsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/senderzevm.sol/senderzevm.go b/v2/pkg/senderzevm.sol/senderzevm.go index d4052b61..6c8455eb 100644 --- a/v2/pkg/senderzevm.sol/senderzevm.go +++ b/v2/pkg/senderzevm.sol/senderzevm.go @@ -32,7 +32,7 @@ var ( // SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. var SenderZEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", - Bin: "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122077d23238a2e7d47c8bbeab590e5478444c1217f3c032da9d8971c2c3fc1625ce64736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go index 67c61efa..64615af2 100644 --- a/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go +++ b/v2/pkg/zetaconnectorbase.sol/zetaconnectorbase.go @@ -31,7 +31,7 @@ var ( // ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. var ZetaConnectorBaseMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", } // ZetaConnectorBaseABI is the input ABI used to generate the binding from. @@ -428,37 +428,6 @@ func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) SupportsInterface(inte return _ZetaConnectorBase.Contract.SupportsInterface(&_ZetaConnectorBase.CallOpts, interfaceId) } -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorBase.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseSession) TssAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorBase *ZetaConnectorBaseCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorBase.Contract.TssAddress(&_ZetaConnectorBase.CallOpts) -} - // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go index 88856e77..e111f155 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNativeABI = ZetaConnectorNativeMetaData.ABI var ZetaConnectorNativeBin = ZetaConnectorNativeMetaData.Bin // DeployZetaConnectorNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNative to it. -func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { +func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBackend, gateway_ common.Address, zetaToken_ common.Address, tssAddress_ common.Address, admin_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorNative, error) { parsed, err := ZetaConnectorNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNative(auth *bind.TransactOpts, backend bind.ContractBac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, _gateway, _zetaToken, _tssAddress, _admin) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNativeBin), backend, gateway_, zetaToken_, tssAddress_, admin_) if err != nil { return common.Address{}, nil, nil, err } @@ -450,37 +450,6 @@ func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) SupportsInterface( return _ZetaConnectorNative.Contract.SupportsInterface(&_ZetaConnectorNative.CallOpts, interfaceId) } -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNative.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNative *ZetaConnectorNativeCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNative.Contract.TssAddress(&_ZetaConnectorNative.CallOpts) -} - // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index 88e3e12b..343866be 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6508061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b610199610a2b565b6040516101a69190617b71565b60405180910390f35b6101b7610a8d565b6040516101a69190617c0d565b61018f610bcf565b6101996113a2565b610199611402565b61018f611462565b6101ec611abe565b6040516101a69190617d73565b61018f611c40565b610209611eb2565b6040516101a69190617e11565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611f82565b6040516101a69190617e88565b61025361207d565b610209612178565b610278612248565b60405190151581526020016101a6565b61018f61231c565b61018f6125a0565b61018f6129b6565b61018f613076565b6101996136dc565b601f546102789060ff1681565b61018f61373c565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161031790617a84565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561039b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261048c919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613973565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460255460405192939182169291169061051890617a91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610554573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460255460405193851694928316939183169216906105af90617a9e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105f3573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161063890617aab565b604051809103906000f080158015610654573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561080457600080fd5b505af1158015610818573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a65575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bc657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610baf578382906000526020600020018054610b2290617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90617f1f565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b505050505081526020019060010190610b03565b505050508152505081526020019060010190610ab1565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190617f6c565b9050610cdb816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610e32916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015610e4c57600080fd5b505af1158015610e60573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061104e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061113492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d99190617f6c565b90506111e58188613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190617f6c565b905061126e816112698a8761802e565b613992565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190617f6c565b9050611315816000613992565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190617f6c565b9050611396816000613992565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361150393921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190617f6c565b9050611551816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916116a8916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561176857600080fd5b505af115801561177c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118a79089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061198d92909116908a9089908b90600401617fc6565b600060405180830381600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190617f6c565b9050611a3e816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190617f6c565b905061126e8185613992565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000209060020201604051806040016040529081600082018054611b1590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4190617f1f565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c2857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611bd55790505b50505050508152505081526020019060010190611ae2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cf657600080fd5b505af1158015611d0a573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611df59190600401618041565b600060405180830381600087803b158015611e0f57600080fd5b505af1158015611e23573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611e7b9290911690879086908890600401617fc6565b600060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc6578382906000526020600020018054611ef590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190617f1f565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b505050505081526020019060010190611ed6565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120125790505b50505050508152505081526020019060010190611fa6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561216057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161210d5790505b505050505081525050815260200190600101906120a1565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000200180546121bb90617f1f565b80601f01602080910402602001604051908101604052809291908181526020018280546121e790617f1f565b80156122345780601f1061220957610100808354040283529160200191612234565b820191906000526020600020905b81548152906001019060200180831161221757829003601f168201915b50505050508152602001906001019061219c565b60085460009060ff1615612260575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190617f6c565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061251a9190600401618041565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611e7b9290911690879086908890600401617fc6565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190617f6c565b9050612625816000613992565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612705916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561289157600080fd5b505af11580156128a5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190617f6c565b90506129af8186613992565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190617f6c565b9050612ac2816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b369190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c19916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015612c3357600080fd5b505af1158015612c47573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d2b600289618054565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612df357600080fd5b505af1158015612e07573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612e4c9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f3292909116908a9089908b90600401617fc6565b600060405180830381600087803b158015612f4c57600080fd5b505af1158015612f60573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190617f6c565b9050612fe78161126960028a618054565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305b9190617f6c565b905061126e8161306c60028b618054565b611269908761802e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190617f6c565b905061313c816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b09190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613293916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156132ad57600080fd5b505af11580156132c1573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561335357600080fd5b505af1158015613367573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506133aa92506001600160a01b0390911690879061808f565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061349f908a908990617fad565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561353557600080fd5b505af1158015613549573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe915061358e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360857600080fd5b505af115801561361c573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061367492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101611198565b60606015805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137b657600080fd5b505af11580156137ca573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138b59190600401618041565b600060405180830381600087803b1580156138cf57600080fd5b505af11580156138e3573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050565b600061397d617ab8565b613988848483613a11565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156139fd57600080fd5b505afa15801561396b573d6000803e3d6000fd5b600080613a1e8584613a8c565b9050613a816040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a6c92919061808f565b60405160208183030381529060405285613a98565b9150505b9392505050565b6000613a858383613ac6565b60c08101515160009015613abc57613ab584848460c00151613ae1565b9050613a85565b613ab58484613c87565b6000613ad28383613d72565b613a8583836020015184613a98565b600080613aec613d82565b90506000613afa8683613e55565b90506000613b1182606001518360200151856142fb565b90506000613b218383898961450d565b90506000613b2e8261538a565b602081015181519192509060030b15613ba157898260400151604051602001613b589291906180b1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b9891600401618041565b60405180910390fd5b6000613be46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615559565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c37908490600401618041565b602060405180830381865afa158015613c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c789190618132565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613cdc908790600401618041565b600060405180830381865afa158015613cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d219190810190618243565b90506000613d4f8285604051602001613d3b929190618278565b604051602081830303815290604052615759565b90506001600160a01b038116613988578484604051602001613b589291906182a7565b613d7e8282600061576c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e09908490600401618352565b600060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e4e9190810190618399565b9250505090565b613e876040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613ed26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613edb8561586f565b60208201526000613eeb86615c54565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f559190810190618399565b86838560200151604051602001613f6f94939291906183e2565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fc7908590600401618041565b600060405180830381865afa158015613fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261400c9190810190618399565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140549084906004016184e6565b602060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140959190618538565b6140aa5781604051602001613b58919061855a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140ef9084906004016185ec565b600060405180830381865afa15801561410c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141349190810190618399565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061417b90849060040161863e565b602060405180830381865afa158015614198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bc9190618538565b15614251576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061420690849060040161863e565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190618399565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142769190618690565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142a29291906186fc565b600060405180830381865afa1580156142bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142e79190810190618399565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143175790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061437757614377618721565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143cb576143cb618721565b6020026020010181905250846040516020016143e79190618750565b6040516020818303038152906040528160028151811061440957614409618721565b60200260200101819052508260405160200161442591906187bc565b6040516020818303038152906040528160038151811061444757614447618721565b6020026020010181905250600061445d8261538a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144ee9060408051808201825260008082526020918201528151808301909252845182528085019082015290615ed7565b6145035785604051602001613b5891906187fd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561455d565b511590565b6146d157826020015115614619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b98565b8260c00151156146d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b98565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146ea57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147459061888e565b935060ff168151811061475a5761475a618721565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147ab91906188ad565b6040516020818303038152906040528282806147c69061888e565b935060ff16815181106147db576147db618721565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806148289061888e565b935060ff168151811061483d5761483d618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061488a9061888e565b935060ff168151811061489f5761489f618721565b602002602001018190525087602001518282806148bb9061888e565b935060ff16815181106148d0576148d0618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061491d9061888e565b935060ff168151811061493257614932618721565b60209081029190910101528751828261494a8161888e565b935060ff168151811061495f5761495f618721565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149ac9061888e565b935060ff16815181106149c1576149c1618721565b60200260200101819052506149d546615f38565b82826149e08161888e565b935060ff16815181106149f5576149f5618721565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a429061888e565b935060ff1681518110614a5757614a57618721565b602002602001018190525086828280614a6f9061888e565b935060ff1681518110614a8457614a84618721565b6020908102919091010152855115614bab5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ad58161888e565b935060ff1681518110614aea57614aea618721565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b3a908990600401618041565b600060405180830381865afa158015614b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b7f9190810190618399565b8282614b8a8161888e565b935060ff1681518110614b9f57614b9f618721565b60200260200101819052505b846020015115614c7b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bf48161888e565b935060ff1681518110614c0957614c09618721565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c569061888e565b935060ff1681518110614c6b57614c6b618721565b6020026020010181905250614e42565b614cb36145588660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d465760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614cf68161888e565b935060ff1681518110614d0b57614d0b618721565b60200260200101819052508460a00151604051602001614d2b9190618750565b604051602081830303815290604052828280614c569061888e565b8460c00151158015614d89575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d8790511590565b155b15614e425760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dcd8161888e565b935060ff1681518110614de257614de2618721565b6020026020010181905250614df688615fd8565b604051602001614e069190618750565b604051602081830303815290604052828280614e219061888e565b935060ff1681518110614e3657614e36618721565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e7690511590565b614f0b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614eb98161888e565b935060ff1681518110614ece57614ece618721565b60200260200101819052508460400151828280614eea9061888e565b935060ff1681518110614eff57614eff618721565b60200260200101819052505b60608501511561502c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f548161888e565b935060ff1681518110614f6957614f69618721565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526150009190810190618399565b828261500b8161888e565b935060ff168151811061502057615020618721565b60200260200101819052505b60e085015151156150d35760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150768161888e565b935060ff168151811061508b5761508b618721565b60200260200101819052506150a78560e0015160000151615f38565b82826150b28161888e565b935060ff16815181106150c7576150c7618721565b60200260200101819052505b60e0850151602001511561517d5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826151208161888e565b935060ff168151811061513557615135618721565b60200260200101819052506151518560e0015160200151615f38565b828261515c8161888e565b935060ff168151811061517157615171618721565b60200260200101819052505b60e085015160400151156152275760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151ca8161888e565b935060ff16815181106151df576151df618721565b60200260200101819052506151fb8560e0015160400151615f38565b82826152068161888e565b935060ff168151811061521b5761521b618721565b60200260200101819052505b60e085015160600151156152d15760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152748161888e565b935060ff168151811061528957615289618721565b60200260200101819052506152a58560e0015160600151615f38565b82826152b08161888e565b935060ff16815181106152c5576152c5618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152ef576152ef61815b565b60405190808252806020026020018201604052801561532257816020015b606081526020019060019003908161530d5790505b50905060005b8260ff168160ff16101561537b57838160ff168151811061534b5761534b618721565b6020026020010151828260ff168151811061536857615368618721565b6020908102919091010152600101615328565b5093505050505b949350505050565b6153b16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161543791869101618918565b600060405180830381865afa158015615454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261547c9190810190618399565b9050600061548a8683616ac7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154ba9190617e11565b6000604051808303816000875af11580156154d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615501919081019061895f565b805190915060030b1580159061551a5750602081015151155b80156155295750604081015151155b15614503578160008151811061554157615541618721565b6020026020010151604051602001613b589190618a15565b6060600061558e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155c59082905b90616c1c565b156157225760006156428261563c846156366156088a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c43565b90616ca5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156a6908290616c1c565b1561571057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261570d905b8290616d2a565b90505b61571981616d50565b92505050613a85565b821561573b578484604051602001613b58929190618c01565b5050604080516020810190915260008152613a85565b509392505050565b6000808251602084016000f09392505050565b8160a001511561577b57505050565b6000615788848484616db9565b905060006157958261538a565b602081015181519192509060030b1580156158315750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615831906040805180820182526000808252602091820152815180830190925284518252808501908201526155bf565b1561583e57505050505050565b6040820151511561585e578160400151604051602001613b589190618ca8565b80604051602001613b589190618d06565b606060006158a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615909905b8290615ed7565b1561597857604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973908390617354565b616d50565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159da905b82906173de565b600103615aa757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4090615706565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973905b8390616d2a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0690615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b6e908390617478565b905060008160018351615b81919061802e565b81518110615b9157615b91618721565b60200260200101519050615c34615973615c076040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617354565b95945050505050565b82604051602001613b589190618d71565b50919050565b60606000615c898360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ceb90615902565b15615cf957613a8581616d50565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d58906159d3565b600103615dc257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a859061597390615aa0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2190615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e89908390617478565b9050600181511115615ec5578060028251615ea4919061802e565b81518110615eb457615eb4618721565b602002602001015192505050919050565b5082604051602001613b589190618d71565b805182516000911115615eec5750600061398c565b81518351602085015160009291615f0291618e4f565b615f0c919061802e565b905082602001518103615f2357600191505061398c565b82516020840151819020912014905092915050565b60606000615f458361751d565b600101905060008167ffffffffffffffff811115615f6557615f6561815b565b6040519080825280601f01601f191660200182016040528015615f8f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f9957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616064905b82906175ff565b156160a457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161039061605d565b1561614357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a29061605d565b156161e257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162419061605d565b806162a65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a69061605d565b156162e657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163459061605d565b806163aa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163aa9061605d565b156163ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164499061605d565b806164ae5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ae9061605d565b156164ee57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654d9061605d565b806165b25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b29061605d565b156165f257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166519061605d565b1561669157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166f09061605d565b1561673057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678f9061605d565b156167cf57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e9061605d565b1561686e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd9061605d565b1561690d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696c9061605d565b806169d15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d19061605d565b15616a1157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a709061605d565b15616ab057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b589290602001618e62565b60608060005b8451811015616b525781858281518110616ae957616ae9618721565b6020026020010151604051602001616b02929190618278565b604051602081830303815290604052915060018551616b21919061802e565b8114616b4a5781604051602001616b389190618fcb565b60405160208183030381529060405291505b600101616acd565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b6b5790505090508381600081518110616b9657616b96618721565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bea57616bea618721565b60200260200101819052508181600281518110616c0957616c09618721565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c3a9291849190617613565b14159392505050565b60408051808201909152600080825260208201526000616c758460000151856020015185600001518660200151617724565b9050836020015181616c87919061802e565b84518590616c9690839061802e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cca57508161398c565b6020808301519084015160019114616cf15750815160208481015190840151829020919020145b8015616d2257825184518590616d0890839061802e565b9052508251602085018051616d1e908390618e4f565b9052505b509192915050565b6040805180820190915260008082526020820152616d49838383617844565b5092915050565b60606000826000015167ffffffffffffffff811115616d7157616d7161815b565b6040519080825280601f01601f191660200182016040528015616d9b576020820181803683370190505b5090506000602082019050616d4981856020015186600001516178ef565b60606000616dc5613d82565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616de257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e3d9061888e565b935060ff1681518110616e5257616e52618721565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616ea3919061900c565b604051602081830303815290604052828280616ebe9061888e565b935060ff1681518110616ed357616ed3618721565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f209061888e565b935060ff1681518110616f3557616f35618721565b602002602001018190525082604051602001616f5191906187bc565b604051602081830303815290604052828280616f6c9061888e565b935060ff1681518110616f8157616f81618721565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fce9061888e565b935060ff1681518110616fe357616fe3618721565b6020026020010181905250616ff88784617969565b82826170038161888e565b935060ff168151811061701857617018618721565b6020908102919091010152855151156170c45760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261706a8161888e565b935060ff168151811061707f5761707f618721565b6020026020010181905250617098866000015184617969565b82826170a38161888e565b935060ff16815181106170b8576170b8618721565b60200260200101819052505b8560800151156171325760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261710d8161888e565b935060ff168151811061712257617122618721565b6020026020010181905250617198565b84156171985760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171778161888e565b935060ff168151811061718c5761718c618721565b60200260200101819052505b604086015151156172345760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171e28161888e565b935060ff16815181106171f7576171f7618721565b602002602001018190525085604001518282806172139061888e565b935060ff168151811061722857617228618721565b60200260200101819052505b85606001511561729e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261727d8161888e565b935060ff168151811061729257617292618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172bc576172bc61815b565b6040519080825280602002602001820160405280156172ef57816020015b60608152602001906001900390816172da5790505b50905060005b8260ff168160ff16101561734857838160ff168151811061731857617318618721565b6020026020010151828260ff168151811061733557617335618721565b60209081029190910101526001016172f5565b50979650505050505050565b604080518082019091526000808252602082015281518351101561737957508161398c565b8151835160208501516000929161738f91618e4f565b617399919061802e565b602084015190915060019082146173ba575082516020840151819020908220145b80156173d5578351855186906173d190839061802e565b9052505b50929392505050565b60008082600001516174028560000151866020015186600001518760200151617724565b61740c9190618e4f565b90505b835160208501516174209190618e4f565b8111616d49578161743081619051565b925050826000015161746785602001518361744b919061802e565b8651617457919061802e565b8386600001518760200151617724565b6174719190618e4f565b905061740f565b6060600061748684846173de565b617491906001618e4f565b67ffffffffffffffff8111156174a9576174a961815b565b6040519080825280602002602001820160405280156174dc57816020015b60608152602001906001900390816174c75790505b50905060005b8151811015615751576174f86159738686616d2a565b82828151811061750a5761750a618721565b60209081029190910101526001016174e2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617566577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617592576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175b057662386f26fc10000830492506010015b6305f5e10083106175c8576305f5e100830492506008015b61271083106175dc57612710830492506004015b606483106175ee576064830492506002015b600a831061398c5760010192915050565b600061760b83836179a9565b159392505050565b60008085841161771a57602084116176c6576000841561765e57600161763a86602061802e565b61764590600861906b565b617650906002619169565b61765a919061802e565b1990505b835181168561766d8989618e4f565b617677919061802e565b805190935082165b8181146176b1578784116176995787945050505050615382565b836176a381619175565b94505082845116905061767f565b6176bb8785618e4f565b945050505050615382565b8383206176d3858861802e565b6176dd9087618e4f565b91505b85821061771857848220808203617705576176fb8684618e4f565b9350505050615382565b61771060018461802e565b9250506176e0565b505b5092949350505050565b6000838186851161782f57602085116177de576000851561777057600161774c87602061802e565b61775790600861906b565b617762906002619169565b61776c919061802e565b1990505b845181166000876177818b8b618e4f565b61778b919061802e565b855190915083165b8281146177d0578186106177b8576177ab8b8b618e4f565b9650505050505050615382565b856177c281619051565b965050838651169050617793565b859650505050505050615382565b508383206000905b6177f0868961802e565b821161782d5785832080820361780c5783945050505050615382565b617817600185618e4f565b935050818061782590619051565b9250506177e6565b505b6178398787618e4f565b979650505050505050565b604080518082019091526000808252602082015260006178768560000151866020015186600001518760200151617724565b602080870180519186019190915251909150617892908261802e565b8352845160208601516178a59190618e4f565b81036178b457600085526178e6565b835183516178c29190618e4f565b855186906178d190839061802e565b90525083516178e09082618e4f565b60208601525b50909392505050565b602081106179275781518352617906602084618e4f565b9250617913602083618e4f565b915061792060208261802e565b90506178ef565b600019811561795657600161793d83602061802e565b61794990610100619169565b617953919061802e565b90505b9151835183169219169190911790915250565b606060006179778484613e55565b80516020808301516040519394506179919390910161918c565b60405160208183030381529060405291505092915050565b81518151600091908111156179bc575081515b6020808501519084015160005b83811015617a755782518251808214617a45576000196020871015617a24576001846179f689602061802e565b617a009190618e4f565b617a0b90600861906b565b617a16906002619169565b617a20919061802e565b1990505b8181168382168181039114617a4257975061398c9650505050505050565b50505b617a50602086618e4f565b9450617a5d602085618e4f565b93505050602081617a6e9190618e4f565b90506179c9565b508451865161450391906191e4565b610c9f8061920583390190565b6113e280619ea483390190565b6116378061b28683390190565b610d5e8061c8bd83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617afb617b00565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617afb6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bb25783516001600160a01b0316835260209384019390920191600101617b8b565b509095945050505050565b60005b83811015617bd8578181015183820152602001617bc0565b50506000910152565b60008151808452617bf9816020860160208601617bbd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617cef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cd9848651617be1565b6020958601959094509290920191600101617c9f565b509197505050602094850194929092019150600101617c35565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d695781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d29565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ddf6040880182617be1565b9050602082015191508681036020880152617dfa8183617d15565b965050506020938401939190910190600101617d9b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e73858351617be1565b94506020938401939190910190600101617e39565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f096040870182617d15565b9550506020938401939190910190600101617eb0565b600181811c90821680617f3357607f821691505b602082108103615c4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f7e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615c346060830184617be1565b8281526040602082015260006153826040830184617be1565b6001600160a01b0385168152836020820152608060408201526000617fee6080830185617be1565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561398c5761398c617fff565b602081526000613a856020830184617be1565b60008261808a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153826040830184617be1565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180e981601a850160208801617bbd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161812681601c840160208801617bbd565b01601c01949350505050565b60006020828403121561814457600080fd5b81516001600160a01b0381168114613a8557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156181ad576181ad61815b565b60405290565b60008067ffffffffffffffff8411156181ce576181ce61815b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181fd576181fd61815b565b60405283815290508082840185101561821557600080fd5b615751846020830185617bbd565b600082601f83011261823457600080fd5b613a85838351602085016181b3565b60006020828403121561825557600080fd5b815167ffffffffffffffff81111561826c57600080fd5b61398884828501618223565b6000835161828a818460208801617bbd565b83519083019061829e818360208801617bbd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516182df81601a850160208801617bbd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161831c816033840160208801617bbd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a856080830184617be1565b6000602082840312156183ab57600080fd5b815167ffffffffffffffff8111156183c257600080fd5b8201601f810184136183d357600080fd5b613988848251602084016181b3565b600085516183f4818460208a01617bbd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161842e816001840160208a01617bbd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161846c816002840160208901617bbd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516184ae816002840160208801617bbd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184f96040830184617be1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561854a57600080fd5b81518015158114613a8557600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161859281601f850160208701617bbd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006185ff6040830184617be1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186516040830184617be1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516186c8816014850160208701617bbd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061870f6040830185617be1565b8281036020840152613a818185617be1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618788816001850160208701617bbd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516187ce818460208701617bbd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161888181604b850160208701617bbd565b91909101604b0192915050565b600060ff821660ff81036188a4576188a4617fff565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a856080830184617be1565b60006020828403121561897157600080fd5b815167ffffffffffffffff81111561898857600080fd5b82016060818503121561899a57600080fd5b6189a261818a565b81518060030b81146189b357600080fd5b8152602082015167ffffffffffffffff8111156189cf57600080fd5b6189db86828501618223565b602083015250604082015167ffffffffffffffff8111156189fb57600080fd5b618a0786828501618223565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618a73816021850160208701617bbd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618c5f816021850160208801617bbd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c9c81602e840160208801617bbd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618d64816022850160208701617bbd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618da981600e850160208701617bbd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561398c5761398c617fff565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e9a816018850160208801617bbd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618ed781601c840160208801617bbd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618fdd818460208701617bbd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161904481601c850160208701617bbd565b91909101601c0192915050565b6000600019820361906457619064617fff565b5060010190565b808202811582820484141761398c5761398c617fff565b6001815b60018411156190bd578085048111156190a1576190a1617fff565b60018416156190af57908102905b60019390931c928002619086565b935093915050565b6000826190d45750600161398c565b816190e15750600061398c565b81600181146190f757600281146191015761911d565b600191505061398c565b60ff84111561911257619112617fff565b50506001821b61398c565b5060208310610133831016604e8410600b8410161715619140575081810a61398c565b61914d6000198484619082565b806000190482111561916157619161617fff565b029392505050565b6000613a8583836190c5565b60008161918457619184617fff565b506000190190565b6000835161919e818460208801617bbd565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516191d8816001840160208801617bbd565b01600101949350505050565b8181036000831280158383131683831282161715616d4957616d49617fff56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220b4235f4edd0cbb54ab4d84250a2d0a2b9ff09b592338112c0aa13aeb1ffce1cc64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6388061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b610199610a2b565b6040516101a69190617b71565b60405180910390f35b6101b7610a8d565b6040516101a69190617c0d565b61018f610bcf565b6101996113a2565b610199611402565b61018f611462565b6101ec611abe565b6040516101a69190617d73565b61018f611c40565b610209611eb2565b6040516101a69190617e11565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611f82565b6040516101a69190617e88565b61025361207d565b610209612178565b610278612248565b60405190151581526020016101a6565b61018f61231c565b61018f6125a0565b61018f6129b6565b61018f613076565b6101996136dc565b601f546102789060ff1681565b61018f61373c565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161031790617a84565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561039b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261048c919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613973565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460255460405192939182169291169061051890617a91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610554573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460255460405193851694928316939183169216906105af90617a9e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105f3573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161063890617aab565b604051809103906000f080158015610654573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561080457600080fd5b505af1158015610818573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a65575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bc657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610baf578382906000526020600020018054610b2290617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90617f1f565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b505050505081526020019060010190610b03565b505050508152505081526020019060010190610ab1565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190617f6c565b9050610cdb816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610e32916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015610e4c57600080fd5b505af1158015610e60573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061104e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061113492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d99190617f6c565b90506111e58188613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190617f6c565b905061126e816112698a8761802e565b613992565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190617f6c565b9050611315816000613992565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190617f6c565b9050611396816000613992565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361150393921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190617f6c565b9050611551816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916116a8916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561176857600080fd5b505af115801561177c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118a79089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061198d92909116908a9089908b90600401617fc6565b600060405180830381600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190617f6c565b9050611a3e816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190617f6c565b905061126e8185613992565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000209060020201604051806040016040529081600082018054611b1590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4190617f1f565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c2857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611bd55790505b50505050508152505081526020019060010190611ae2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cf657600080fd5b505af1158015611d0a573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611df59190600401618041565b600060405180830381600087803b158015611e0f57600080fd5b505af1158015611e23573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611e7b9290911690879086908890600401617fc6565b600060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc6578382906000526020600020018054611ef590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190617f1f565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b505050505081526020019060010190611ed6565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120125790505b50505050508152505081526020019060010190611fa6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561216057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161210d5790505b505050505081525050815260200190600101906120a1565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000200180546121bb90617f1f565b80601f01602080910402602001604051908101604052809291908181526020018280546121e790617f1f565b80156122345780601f1061220957610100808354040283529160200191612234565b820191906000526020600020905b81548152906001019060200180831161221757829003601f168201915b50505050508152602001906001019061219c565b60085460009060ff1615612260575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190617f6c565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061251a9190600401618041565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611e7b9290911690879086908890600401617fc6565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190617f6c565b9050612625816000613992565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612705916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561289157600080fd5b505af11580156128a5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190617f6c565b90506129af8186613992565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190617f6c565b9050612ac2816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b369190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c19916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015612c3357600080fd5b505af1158015612c47573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d2b600289618054565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612df357600080fd5b505af1158015612e07573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612e4c9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f3292909116908a9089908b90600401617fc6565b600060405180830381600087803b158015612f4c57600080fd5b505af1158015612f60573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190617f6c565b9050612fe78161126960028a618054565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305b9190617f6c565b905061126e8161306c60028b618054565b611269908761802e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190617f6c565b905061313c816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b09190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613293916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156132ad57600080fd5b505af11580156132c1573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561335357600080fd5b505af1158015613367573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506133aa92506001600160a01b0390911690879061808f565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061349f908a908990617fad565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561353557600080fd5b505af1158015613549573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe915061358e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360857600080fd5b505af115801561361c573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061367492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101611198565b60606015805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137b657600080fd5b505af11580156137ca573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138b59190600401618041565b600060405180830381600087803b1580156138cf57600080fd5b505af11580156138e3573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050565b600061397d617ab8565b613988848483613a11565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156139fd57600080fd5b505afa15801561396b573d6000803e3d6000fd5b600080613a1e8584613a8c565b9050613a816040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a6c92919061808f565b60405160208183030381529060405285613a98565b9150505b9392505050565b6000613a858383613ac6565b60c08101515160009015613abc57613ab584848460c00151613ae1565b9050613a85565b613ab58484613c87565b6000613ad28383613d72565b613a8583836020015184613a98565b600080613aec613d82565b90506000613afa8683613e55565b90506000613b1182606001518360200151856142fb565b90506000613b218383898961450d565b90506000613b2e8261538a565b602081015181519192509060030b15613ba157898260400151604051602001613b589291906180b1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b9891600401618041565b60405180910390fd5b6000613be46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615559565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c37908490600401618041565b602060405180830381865afa158015613c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c789190618132565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613cdc908790600401618041565b600060405180830381865afa158015613cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d219190810190618243565b90506000613d4f8285604051602001613d3b929190618278565b604051602081830303815290604052615759565b90506001600160a01b038116613988578484604051602001613b589291906182a7565b613d7e8282600061576c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e09908490600401618352565b600060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e4e9190810190618399565b9250505090565b613e876040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613ed26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613edb8561586f565b60208201526000613eeb86615c54565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f559190810190618399565b86838560200151604051602001613f6f94939291906183e2565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fc7908590600401618041565b600060405180830381865afa158015613fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261400c9190810190618399565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140549084906004016184e6565b602060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140959190618538565b6140aa5781604051602001613b58919061855a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140ef9084906004016185ec565b600060405180830381865afa15801561410c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141349190810190618399565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061417b90849060040161863e565b602060405180830381865afa158015614198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bc9190618538565b15614251576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061420690849060040161863e565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190618399565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142769190618690565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142a29291906186fc565b600060405180830381865afa1580156142bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142e79190810190618399565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143175790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061437757614377618721565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143cb576143cb618721565b6020026020010181905250846040516020016143e79190618750565b6040516020818303038152906040528160028151811061440957614409618721565b60200260200101819052508260405160200161442591906187bc565b6040516020818303038152906040528160038151811061444757614447618721565b6020026020010181905250600061445d8261538a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144ee9060408051808201825260008082526020918201528151808301909252845182528085019082015290615ed7565b6145035785604051602001613b5891906187fd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561455d565b511590565b6146d157826020015115614619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b98565b8260c00151156146d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b98565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146ea57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147459061888e565b935060ff168151811061475a5761475a618721565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147ab91906188ad565b6040516020818303038152906040528282806147c69061888e565b935060ff16815181106147db576147db618721565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806148289061888e565b935060ff168151811061483d5761483d618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061488a9061888e565b935060ff168151811061489f5761489f618721565b602002602001018190525087602001518282806148bb9061888e565b935060ff16815181106148d0576148d0618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061491d9061888e565b935060ff168151811061493257614932618721565b60209081029190910101528751828261494a8161888e565b935060ff168151811061495f5761495f618721565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149ac9061888e565b935060ff16815181106149c1576149c1618721565b60200260200101819052506149d546615f38565b82826149e08161888e565b935060ff16815181106149f5576149f5618721565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a429061888e565b935060ff1681518110614a5757614a57618721565b602002602001018190525086828280614a6f9061888e565b935060ff1681518110614a8457614a84618721565b6020908102919091010152855115614bab5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ad58161888e565b935060ff1681518110614aea57614aea618721565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b3a908990600401618041565b600060405180830381865afa158015614b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b7f9190810190618399565b8282614b8a8161888e565b935060ff1681518110614b9f57614b9f618721565b60200260200101819052505b846020015115614c7b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bf48161888e565b935060ff1681518110614c0957614c09618721565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c569061888e565b935060ff1681518110614c6b57614c6b618721565b6020026020010181905250614e42565b614cb36145588660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d465760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614cf68161888e565b935060ff1681518110614d0b57614d0b618721565b60200260200101819052508460a00151604051602001614d2b9190618750565b604051602081830303815290604052828280614c569061888e565b8460c00151158015614d89575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d8790511590565b155b15614e425760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dcd8161888e565b935060ff1681518110614de257614de2618721565b6020026020010181905250614df688615fd8565b604051602001614e069190618750565b604051602081830303815290604052828280614e219061888e565b935060ff1681518110614e3657614e36618721565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e7690511590565b614f0b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614eb98161888e565b935060ff1681518110614ece57614ece618721565b60200260200101819052508460400151828280614eea9061888e565b935060ff1681518110614eff57614eff618721565b60200260200101819052505b60608501511561502c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f548161888e565b935060ff1681518110614f6957614f69618721565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526150009190810190618399565b828261500b8161888e565b935060ff168151811061502057615020618721565b60200260200101819052505b60e085015151156150d35760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150768161888e565b935060ff168151811061508b5761508b618721565b60200260200101819052506150a78560e0015160000151615f38565b82826150b28161888e565b935060ff16815181106150c7576150c7618721565b60200260200101819052505b60e0850151602001511561517d5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826151208161888e565b935060ff168151811061513557615135618721565b60200260200101819052506151518560e0015160200151615f38565b828261515c8161888e565b935060ff168151811061517157615171618721565b60200260200101819052505b60e085015160400151156152275760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151ca8161888e565b935060ff16815181106151df576151df618721565b60200260200101819052506151fb8560e0015160400151615f38565b82826152068161888e565b935060ff168151811061521b5761521b618721565b60200260200101819052505b60e085015160600151156152d15760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152748161888e565b935060ff168151811061528957615289618721565b60200260200101819052506152a58560e0015160600151615f38565b82826152b08161888e565b935060ff16815181106152c5576152c5618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152ef576152ef61815b565b60405190808252806020026020018201604052801561532257816020015b606081526020019060019003908161530d5790505b50905060005b8260ff168160ff16101561537b57838160ff168151811061534b5761534b618721565b6020026020010151828260ff168151811061536857615368618721565b6020908102919091010152600101615328565b5093505050505b949350505050565b6153b16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161543791869101618918565b600060405180830381865afa158015615454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261547c9190810190618399565b9050600061548a8683616ac7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154ba9190617e11565b6000604051808303816000875af11580156154d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615501919081019061895f565b805190915060030b1580159061551a5750602081015151155b80156155295750604081015151155b15614503578160008151811061554157615541618721565b6020026020010151604051602001613b589190618a15565b6060600061558e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155c59082905b90616c1c565b156157225760006156428261563c846156366156088a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c43565b90616ca5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156a6908290616c1c565b1561571057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261570d905b8290616d2a565b90505b61571981616d50565b92505050613a85565b821561573b578484604051602001613b58929190618c01565b5050604080516020810190915260008152613a85565b509392505050565b6000808251602084016000f09392505050565b8160a001511561577b57505050565b6000615788848484616db9565b905060006157958261538a565b602081015181519192509060030b1580156158315750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615831906040805180820182526000808252602091820152815180830190925284518252808501908201526155bf565b1561583e57505050505050565b6040820151511561585e578160400151604051602001613b589190618ca8565b80604051602001613b589190618d06565b606060006158a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615909905b8290615ed7565b1561597857604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973908390617354565b616d50565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159da905b82906173de565b600103615aa757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4090615706565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973905b8390616d2a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0690615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b6e908390617478565b905060008160018351615b81919061802e565b81518110615b9157615b91618721565b60200260200101519050615c34615973615c076040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617354565b95945050505050565b82604051602001613b589190618d71565b50919050565b60606000615c898360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ceb90615902565b15615cf957613a8581616d50565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d58906159d3565b600103615dc257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a859061597390615aa0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2190615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e89908390617478565b9050600181511115615ec5578060028251615ea4919061802e565b81518110615eb457615eb4618721565b602002602001015192505050919050565b5082604051602001613b589190618d71565b805182516000911115615eec5750600061398c565b81518351602085015160009291615f0291618e4f565b615f0c919061802e565b905082602001518103615f2357600191505061398c565b82516020840151819020912014905092915050565b60606000615f458361751d565b600101905060008167ffffffffffffffff811115615f6557615f6561815b565b6040519080825280601f01601f191660200182016040528015615f8f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f9957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616064905b82906175ff565b156160a457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161039061605d565b1561614357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a29061605d565b156161e257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162419061605d565b806162a65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a69061605d565b156162e657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163459061605d565b806163aa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163aa9061605d565b156163ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164499061605d565b806164ae5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ae9061605d565b156164ee57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654d9061605d565b806165b25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b29061605d565b156165f257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166519061605d565b1561669157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166f09061605d565b1561673057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678f9061605d565b156167cf57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e9061605d565b1561686e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd9061605d565b1561690d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696c9061605d565b806169d15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d19061605d565b15616a1157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a709061605d565b15616ab057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b589290602001618e62565b60608060005b8451811015616b525781858281518110616ae957616ae9618721565b6020026020010151604051602001616b02929190618278565b604051602081830303815290604052915060018551616b21919061802e565b8114616b4a5781604051602001616b389190618fcb565b60405160208183030381529060405291505b600101616acd565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b6b5790505090508381600081518110616b9657616b96618721565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bea57616bea618721565b60200260200101819052508181600281518110616c0957616c09618721565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c3a9291849190617613565b14159392505050565b60408051808201909152600080825260208201526000616c758460000151856020015185600001518660200151617724565b9050836020015181616c87919061802e565b84518590616c9690839061802e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cca57508161398c565b6020808301519084015160019114616cf15750815160208481015190840151829020919020145b8015616d2257825184518590616d0890839061802e565b9052508251602085018051616d1e908390618e4f565b9052505b509192915050565b6040805180820190915260008082526020820152616d49838383617844565b5092915050565b60606000826000015167ffffffffffffffff811115616d7157616d7161815b565b6040519080825280601f01601f191660200182016040528015616d9b576020820181803683370190505b5090506000602082019050616d4981856020015186600001516178ef565b60606000616dc5613d82565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616de257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e3d9061888e565b935060ff1681518110616e5257616e52618721565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616ea3919061900c565b604051602081830303815290604052828280616ebe9061888e565b935060ff1681518110616ed357616ed3618721565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f209061888e565b935060ff1681518110616f3557616f35618721565b602002602001018190525082604051602001616f5191906187bc565b604051602081830303815290604052828280616f6c9061888e565b935060ff1681518110616f8157616f81618721565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fce9061888e565b935060ff1681518110616fe357616fe3618721565b6020026020010181905250616ff88784617969565b82826170038161888e565b935060ff168151811061701857617018618721565b6020908102919091010152855151156170c45760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261706a8161888e565b935060ff168151811061707f5761707f618721565b6020026020010181905250617098866000015184617969565b82826170a38161888e565b935060ff16815181106170b8576170b8618721565b60200260200101819052505b8560800151156171325760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261710d8161888e565b935060ff168151811061712257617122618721565b6020026020010181905250617198565b84156171985760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171778161888e565b935060ff168151811061718c5761718c618721565b60200260200101819052505b604086015151156172345760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171e28161888e565b935060ff16815181106171f7576171f7618721565b602002602001018190525085604001518282806172139061888e565b935060ff168151811061722857617228618721565b60200260200101819052505b85606001511561729e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261727d8161888e565b935060ff168151811061729257617292618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172bc576172bc61815b565b6040519080825280602002602001820160405280156172ef57816020015b60608152602001906001900390816172da5790505b50905060005b8260ff168160ff16101561734857838160ff168151811061731857617318618721565b6020026020010151828260ff168151811061733557617335618721565b60209081029190910101526001016172f5565b50979650505050505050565b604080518082019091526000808252602082015281518351101561737957508161398c565b8151835160208501516000929161738f91618e4f565b617399919061802e565b602084015190915060019082146173ba575082516020840151819020908220145b80156173d5578351855186906173d190839061802e565b9052505b50929392505050565b60008082600001516174028560000151866020015186600001518760200151617724565b61740c9190618e4f565b90505b835160208501516174209190618e4f565b8111616d49578161743081619051565b925050826000015161746785602001518361744b919061802e565b8651617457919061802e565b8386600001518760200151617724565b6174719190618e4f565b905061740f565b6060600061748684846173de565b617491906001618e4f565b67ffffffffffffffff8111156174a9576174a961815b565b6040519080825280602002602001820160405280156174dc57816020015b60608152602001906001900390816174c75790505b50905060005b8151811015615751576174f86159738686616d2a565b82828151811061750a5761750a618721565b60209081029190910101526001016174e2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617566577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617592576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175b057662386f26fc10000830492506010015b6305f5e10083106175c8576305f5e100830492506008015b61271083106175dc57612710830492506004015b606483106175ee576064830492506002015b600a831061398c5760010192915050565b600061760b83836179a9565b159392505050565b60008085841161771a57602084116176c6576000841561765e57600161763a86602061802e565b61764590600861906b565b617650906002619169565b61765a919061802e565b1990505b835181168561766d8989618e4f565b617677919061802e565b805190935082165b8181146176b1578784116176995787945050505050615382565b836176a381619175565b94505082845116905061767f565b6176bb8785618e4f565b945050505050615382565b8383206176d3858861802e565b6176dd9087618e4f565b91505b85821061771857848220808203617705576176fb8684618e4f565b9350505050615382565b61771060018461802e565b9250506176e0565b505b5092949350505050565b6000838186851161782f57602085116177de576000851561777057600161774c87602061802e565b61775790600861906b565b617762906002619169565b61776c919061802e565b1990505b845181166000876177818b8b618e4f565b61778b919061802e565b855190915083165b8281146177d0578186106177b8576177ab8b8b618e4f565b9650505050505050615382565b856177c281619051565b965050838651169050617793565b859650505050505050615382565b508383206000905b6177f0868961802e565b821161782d5785832080820361780c5783945050505050615382565b617817600185618e4f565b935050818061782590619051565b9250506177e6565b505b6178398787618e4f565b979650505050505050565b604080518082019091526000808252602082015260006178768560000151866020015186600001518760200151617724565b602080870180519186019190915251909150617892908261802e565b8352845160208601516178a59190618e4f565b81036178b457600085526178e6565b835183516178c29190618e4f565b855186906178d190839061802e565b90525083516178e09082618e4f565b60208601525b50909392505050565b602081106179275781518352617906602084618e4f565b9250617913602083618e4f565b915061792060208261802e565b90506178ef565b600019811561795657600161793d83602061802e565b61794990610100619169565b617953919061802e565b90505b9151835183169219169190911790915250565b606060006179778484613e55565b80516020808301516040519394506179919390910161918c565b60405160208183030381529060405291505092915050565b81518151600091908111156179bc575081515b6020808501519084015160005b83811015617a755782518251808214617a45576000196020871015617a24576001846179f689602061802e565b617a009190618e4f565b617a0b90600861906b565b617a16906002619169565b617a20919061802e565b1990505b8181168382168181039114617a4257975061398c9650505050505050565b50505b617a50602086618e4f565b9450617a5d602085618e4f565b93505050602081617a6e9190618e4f565b90506179c9565b508451865161450391906191e4565b610c9f8061920583390190565b61140b80619ea483390190565b6115f68061b2af83390190565b610d5e8061c8a583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617afb617b00565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617afb6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bb25783516001600160a01b0316835260209384019390920191600101617b8b565b509095945050505050565b60005b83811015617bd8578181015183820152602001617bc0565b50506000910152565b60008151808452617bf9816020860160208601617bbd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617cef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cd9848651617be1565b6020958601959094509290920191600101617c9f565b509197505050602094850194929092019150600101617c35565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d695781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d29565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ddf6040880182617be1565b9050602082015191508681036020880152617dfa8183617d15565b965050506020938401939190910190600101617d9b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e73858351617be1565b94506020938401939190910190600101617e39565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f096040870182617d15565b9550506020938401939190910190600101617eb0565b600181811c90821680617f3357607f821691505b602082108103615c4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f7e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615c346060830184617be1565b8281526040602082015260006153826040830184617be1565b6001600160a01b0385168152836020820152608060408201526000617fee6080830185617be1565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561398c5761398c617fff565b602081526000613a856020830184617be1565b60008261808a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153826040830184617be1565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180e981601a850160208801617bbd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161812681601c840160208801617bbd565b01601c01949350505050565b60006020828403121561814457600080fd5b81516001600160a01b0381168114613a8557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156181ad576181ad61815b565b60405290565b60008067ffffffffffffffff8411156181ce576181ce61815b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181fd576181fd61815b565b60405283815290508082840185101561821557600080fd5b615751846020830185617bbd565b600082601f83011261823457600080fd5b613a85838351602085016181b3565b60006020828403121561825557600080fd5b815167ffffffffffffffff81111561826c57600080fd5b61398884828501618223565b6000835161828a818460208801617bbd565b83519083019061829e818360208801617bbd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516182df81601a850160208801617bbd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161831c816033840160208801617bbd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a856080830184617be1565b6000602082840312156183ab57600080fd5b815167ffffffffffffffff8111156183c257600080fd5b8201601f810184136183d357600080fd5b613988848251602084016181b3565b600085516183f4818460208a01617bbd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161842e816001840160208a01617bbd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161846c816002840160208901617bbd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516184ae816002840160208801617bbd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184f96040830184617be1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561854a57600080fd5b81518015158114613a8557600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161859281601f850160208701617bbd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006185ff6040830184617be1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186516040830184617be1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516186c8816014850160208701617bbd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061870f6040830185617be1565b8281036020840152613a818185617be1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618788816001850160208701617bbd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516187ce818460208701617bbd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161888181604b850160208701617bbd565b91909101604b0192915050565b600060ff821660ff81036188a4576188a4617fff565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a856080830184617be1565b60006020828403121561897157600080fd5b815167ffffffffffffffff81111561898857600080fd5b82016060818503121561899a57600080fd5b6189a261818a565b81518060030b81146189b357600080fd5b8152602082015167ffffffffffffffff8111156189cf57600080fd5b6189db86828501618223565b602083015250604082015167ffffffffffffffff8111156189fb57600080fd5b618a0786828501618223565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618a73816021850160208701617bbd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618c5f816021850160208801617bbd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c9c81602e840160208801617bbd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618d64816022850160208701617bbd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618da981600e850160208701617bbd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561398c5761398c617fff565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e9a816018850160208801617bbd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618ed781601c840160208801617bbd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618fdd818460208701617bbd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161904481601c850160208701617bbd565b91909101601c0192915050565b6000600019820361906457619064617fff565b5060010190565b808202811582820484141761398c5761398c617fff565b6001815b60018411156190bd578085048111156190a1576190a1617fff565b60018416156190af57908102905b60019390931c928002619086565b935093915050565b6000826190d45750600161398c565b816190e15750600061398c565b81600181146190f757600281146191015761911d565b600191505061398c565b60ff84111561911257619112617fff565b50506001821b61398c565b5060208310610133831016604e8410600b8410161715619140575081810a61398c565b61914d6000198484619082565b806000190482111561916157619161617fff565b029392505050565b6000613a8583836190c5565b60008161918457619184617fff565b506000190190565b6000835161919e818460208801617bbd565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516191d8816001840160208801617bbd565b01600101949350505050565b8181036000831280158383131683831282161715616d4957616d49617fff56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122059e76541decc5b10de6c68c8ed00e032ce96e7ed57858ac9d3f8789ff7c2a76264736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index d002b04a..c28c5663 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -31,8 +31,8 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"maxSupply_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", + Bin: "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ZetaConnectorNonNativeABI = ZetaConnectorNonNativeMetaData.ABI var ZetaConnectorNonNativeBin = ZetaConnectorNonNativeMetaData.Bin // DeployZetaConnectorNonNative deploys a new Ethereum contract, binding an instance of ZetaConnectorNonNative to it. -func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, _gateway common.Address, _zetaToken common.Address, _tssAddress common.Address, _admin common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { +func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.ContractBackend, gateway_ common.Address, zetaToken_ common.Address, tssAddress_ common.Address, admin_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorNonNative, error) { parsed, err := ZetaConnectorNonNativeMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployZetaConnectorNonNative(auth *bind.TransactOpts, backend bind.Contract return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, _gateway, _zetaToken, _tssAddress, _admin) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorNonNativeBin), backend, gateway_, zetaToken_, tssAddress_, admin_) if err != nil { return common.Address{}, nil, nil, err } @@ -481,37 +481,6 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) SupportsInte return _ZetaConnectorNonNative.Contract.SupportsInterface(&_ZetaConnectorNonNative.CallOpts, interfaceId) } -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCaller) TssAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _ZetaConnectorNonNative.contract.Call(opts, &out, "tssAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) -} - -// TssAddress is a free data retrieval call binding the contract method 0x5b112591. -// -// Solidity: function tssAddress() view returns(address) -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeCallerSession) TssAddress() (common.Address, error) { - return _ZetaConnectorNonNative.Contract.TssAddress(&_ZetaConnectorNonNative.CallOpts) -} - // ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. // // Solidity: function zetaToken() view returns(address) @@ -650,23 +619,23 @@ func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) RevokeRo // SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. // -// Solidity: function setMaxSupply(uint256 _maxSupply) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) SetMaxSupply(opts *bind.TransactOpts, _maxSupply *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.contract.Transact(opts, "setMaxSupply", _maxSupply) +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactor) SetMaxSupply(opts *bind.TransactOpts, maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.contract.Transact(opts, "setMaxSupply", maxSupply_) } // SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. // -// Solidity: function setMaxSupply(uint256 _maxSupply) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) SetMaxSupply(_maxSupply *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, _maxSupply) +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, maxSupply_) } // SetMaxSupply is a paid mutator transaction binding the contract method 0x6f8b44b0. // -// Solidity: function setMaxSupply(uint256 _maxSupply) returns() -func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) SetMaxSupply(_maxSupply *big.Int) (*types.Transaction, error) { - return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, _maxSupply) +// Solidity: function setMaxSupply(uint256 maxSupply_) returns() +func (_ZetaConnectorNonNative *ZetaConnectorNonNativeTransactorSession) SetMaxSupply(maxSupply_ *big.Int) (*types.Transaction, error) { + return _ZetaConnectorNonNative.Contract.SetMaxSupply(&_ZetaConnectorNonNative.TransactOpts, maxSupply_) } // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go index 64f55d0e..f999ed58 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061dddc8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b6101996109c4565b6040516101a69190617b03565b60405180910390f35b6101b7610a26565b6040516101a69190617b9f565b61018f610b68565b610199611343565b6101996113a3565b61018f611403565b6101ec6119f0565b6040516101a69190617d05565b61018f611b72565b610209611de4565b6040516101a69190617da3565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611eb4565b6040516101a69190617e1a565b610253611faf565b6102096120aa565b61027861217a565b60405190151581526020016101a6565b61018f61224e565b61018f6124d2565b61018f6128f2565b61018f612f39565b61019961366e565b601f546102789060ff1681565b61018f6136ce565b60258054307fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556026805461123490831617905560278054615678921682179055604051819061031a90617a16565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561034d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261043e919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613905565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546025546040519293918216929116906104ca90617a23565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610506573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754602554604051938516949283169391831692169061056190617a30565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105a5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050506040516106ee90617a3d565b604051809103906000f08015801561070a573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109fe575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b48578382906000526020600020018054610abb90617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790617eb1565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081526020019060010190610a9c565b505050508152505081526020019060010190610a4a565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190617efe565b9050610c74816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190617efe565b9050610cf5816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610ddc916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610ff89089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110de92909116908a9089908b90600401617f58565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190617efe565b905061118e8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190617efe565b905061120f816000613924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190617efe565b90506112b6816000613924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a9190617efe565b9050611337816000613924565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936114a493921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e59190617efe565b90506114f2816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190617efe565b9050611573816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161165a916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118599089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061193f92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190617efe565b905061118e816000613924565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000209060020201604051806040016040529081600082018054611a4790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390617eb1565b8015611ac05780601f10611a9557610100808354040283529160200191611ac0565b820191906000526020600020905b815481529060010190602001808311611aa357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b5a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611b075790505b50505050508152505081526020019060010190611a14565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611d279190600401617f91565b600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611dad9290911690879086908890600401617f58565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5f578382906000526020600020018054611e2790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5390617eb1565b8015611ea05780601f10611e7557610100808354040283529160200191611ea0565b820191906000526020600020905b815481529060010190602001808311611e8357829003601f168201915b505050505081526020019060010190611e08565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f9757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f445790505b50505050508152505081526020019060010190611ed8565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561209257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161203f5790505b50505050508152505081526020019060010190611fd3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000200180546120ed90617eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461211990617eb1565b80156121665780601f1061213b57610100808354040283529160200191612166565b820191906000526020600020905b81548152906001019060200180831161214957829003601f168201915b5050505050815260200190600101906120ce565b60085460009060ff1615612192575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190617efe565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061244c9190600401617f91565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611dad9290911690879086908890600401617f58565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015612527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254b9190617efe565b9050612558816000613924565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612641916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561270157600080fd5b505af1158015612715573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127cd57600080fd5b505af11580156127e1573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b15801561285557600080fd5b505af1158015612869573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190617efe565b90506128eb8186613924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156129cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f19190617efe565b90506129fe816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190617efe565b9050612a7f816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612b66916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c2657600080fd5b505af1158015612c3a573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612c78600289617fd3565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612d999089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612e7f92909116908a9089908b90600401617f58565b600060405180830381600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190617efe565b905061118e81612f3460028a617fd3565b613924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff29190617efe565b9050612fff816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130739190617efe565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161315d916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561317757600080fd5b505af115801561318b573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061327492506001600160a01b0390911690879061800e565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330a57600080fd5b505af115801561331e573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790613369908a908990617f3f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134589089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061353e92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561355857600080fd5b505af115801561356c573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190617efe565b90506135ee8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190617efe565b905061120f8185613924565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561374857600080fd5b505af115801561375c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138479190600401617f91565b600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138e957600080fd5b505af11580156138fd573d6000803e3d6000fd5b505050505050565b600061390f617a4a565b61391a8484836139a3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561398f57600080fd5b505afa1580156138fd573d6000803e3d6000fd5b6000806139b08584613a1e565b9050613a136040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016139fe92919061800e565b60405160208183030381529060405285613a2a565b9150505b9392505050565b6000613a178383613a58565b60c08101515160009015613a4e57613a4784848460c00151613a73565b9050613a17565b613a478484613c19565b6000613a648383613d04565b613a1783836020015184613a2a565b600080613a7e613d14565b90506000613a8c8683613de7565b90506000613aa3826060015183602001518561428d565b90506000613ab38383898961449f565b90506000613ac08261531c565b602081015181519192509060030b15613b3357898260400151604051602001613aea929190618030565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b2a91600401617f91565b60405180910390fd5b6000613b766040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016154eb565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613bc9908490600401617f91565b602060405180830381865afa158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906180b1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613c6e908790600401617f91565b600060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb391908101906181c2565b90506000613ce18285604051602001613ccd9291906181f7565b6040516020818303038152906040526156eb565b90506001600160a01b03811661391a578484604051602001613aea929190618226565b613d10828260006156fe565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613d9b9084906004016182d1565b600060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613de09190810190618318565b9250505090565b613e196040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613e646040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613e6d85615801565b60208201526000613e7d86615be6565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee79190810190618318565b86838560200151604051602001613f019493929190618361565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613f59908590600401617f91565b600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190618318565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613fe6908490600401618465565b602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402791906184b7565b61403c5781604051602001613aea91906184d9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061408190849060040161856b565b600060405180830381865afa15801561409e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c69190810190618318565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061410d9084906004016185bd565b602060405180830381865afa15801561412a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414e91906184b7565b156141e3576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906141989084906004016185bd565b600060405180830381865afa1580156141b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141dd9190810190618318565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614208919061860f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161423492919061867b565b600060405180830381865afa158015614251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142799190810190618318565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816142a95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614309576143096186a0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061435d5761435d6186a0565b60200260200101819052508460405160200161437991906186cf565b6040516020818303038152906040528160028151811061439b5761439b6186a0565b6020026020010181905250826040516020016143b7919061873b565b604051602081830303815290604052816003815181106143d9576143d96186a0565b602002602001018190525060006143ef8261531c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144809060408051808201825260008082526020918201528151808301909252845182528085019082015290615e69565b6144955785604051602001613aea919061877c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156144ef565b511590565b614663578260200151156145ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b2a565b8260c0015115614663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b2a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161467c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806146d79061880d565b935060ff16815181106146ec576146ec6186a0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161473d919061882c565b6040516020818303038152906040528282806147589061880d565b935060ff168151811061476d5761476d6186a0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806147ba9061880d565b935060ff16815181106147cf576147cf6186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061481c9061880d565b935060ff1681518110614831576148316186a0565b6020026020010181905250876020015182828061484d9061880d565b935060ff1681518110614862576148626186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806148af9061880d565b935060ff16815181106148c4576148c46186a0565b6020908102919091010152875182826148dc8161880d565b935060ff16815181106148f1576148f16186a0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061493e9061880d565b935060ff1681518110614953576149536186a0565b602002602001018190525061496746615eca565b82826149728161880d565b935060ff1681518110614987576149876186a0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806149d49061880d565b935060ff16815181106149e9576149e96186a0565b602002602001018190525086828280614a019061880d565b935060ff1681518110614a1657614a166186a0565b6020908102919091010152855115614b3d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614a678161880d565b935060ff1681518110614a7c57614a7c6186a0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614acc908990600401617f91565b600060405180830381865afa158015614ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b119190810190618318565b8282614b1c8161880d565b935060ff1681518110614b3157614b316186a0565b60200260200101819052505b846020015115614c0d5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614b868161880d565b935060ff1681518110614b9b57614b9b6186a0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614be89061880d565b935060ff1681518110614bfd57614bfd6186a0565b6020026020010181905250614dd4565b614c456144ea8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614cd85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614c888161880d565b935060ff1681518110614c9d57614c9d6186a0565b60200260200101819052508460a00151604051602001614cbd91906186cf565b604051602081830303815290604052828280614be89061880d565b8460c00151158015614d1b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d1990511590565b155b15614dd45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5f8161880d565b935060ff1681518110614d7457614d746186a0565b6020026020010181905250614d8888615f6a565b604051602001614d9891906186cf565b604051602081830303815290604052828280614db39061880d565b935060ff1681518110614dc857614dc86186a0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e0890511590565b614e9d5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614e4b8161880d565b935060ff1681518110614e6057614e606186a0565b60200260200101819052508460400151828280614e7c9061880d565b935060ff1681518110614e9157614e916186a0565b60200260200101819052505b606085015115614fbe5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614ee68161880d565b935060ff1681518110614efb57614efb6186a0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f929190810190618318565b8282614f9d8161880d565b935060ff1681518110614fb257614fb26186a0565b60200260200101819052505b60e085015151156150655760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150088161880d565b935060ff168151811061501d5761501d6186a0565b60200260200101819052506150398560e0015160000151615eca565b82826150448161880d565b935060ff1681518110615059576150596186a0565b60200260200101819052505b60e0850151602001511561510f5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826150b28161880d565b935060ff16815181106150c7576150c76186a0565b60200260200101819052506150e38560e0015160200151615eca565b82826150ee8161880d565b935060ff1681518110615103576151036186a0565b60200260200101819052505b60e085015160400151156151b95760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261515c8161880d565b935060ff1681518110615171576151716186a0565b602002602001018190525061518d8560e0015160400151615eca565b82826151988161880d565b935060ff16815181106151ad576151ad6186a0565b60200260200101819052505b60e085015160600151156152635760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152068161880d565b935060ff168151811061521b5761521b6186a0565b60200260200101819052506152378560e0015160600151615eca565b82826152428161880d565b935060ff1681518110615257576152576186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615281576152816180da565b6040519080825280602002602001820160405280156152b457816020015b606081526020019060019003908161529f5790505b50905060005b8260ff168160ff16101561530d57838160ff16815181106152dd576152dd6186a0565b6020026020010151828260ff16815181106152fa576152fa6186a0565b60209081029190910101526001016152ba565b5093505050505b949350505050565b6153436040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916153c991869101618897565b600060405180830381865afa1580156153e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261540e9190810190618318565b9050600061541c8683616a59565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161544c9190617da3565b6000604051808303816000875af115801561546b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261549391908101906188de565b805190915060030b158015906154ac5750602081015151155b80156154bb5750604081015151155b1561449557816000815181106154d3576154d36186a0565b6020026020010151604051602001613aea9190618994565b606060006155208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155579082905b90616bae565b156156b45760006155d4826155ce846155c861559a8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616bd5565b90616c37565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615638908290616bae565b156156a257604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261569f905b8290616cbc565b90505b6156ab81616ce2565b92505050613a17565b82156156cd578484604051602001613aea929190618b80565b5050604080516020810190915260008152613a17565b509392505050565b6000808251602084016000f09392505050565b8160a001511561570d57505050565b600061571a848484616d4b565b905060006157278261531c565b602081015181519192509060030b1580156157c35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c390604080518082018252600080825260209182015281518083019092528451825280850190820152615551565b156157d057505050505050565b604082015151156157f0578160400151604051602001613aea9190618c27565b80604051602001613aea9190618c85565b606060006158368360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061589b905b8290615e69565b1561590a57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a17906159059083906172e6565b616ce2565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261596c905b8290617370565b600103615a3957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159d290615698565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a1790615905905b8390616cbc565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a9890615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b0090839061740a565b905060008160018351615b139190618cf0565b81518110615b2357615b236186a0565b60200260200101519050615bc6615905615b996040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906172e6565b95945050505050565b82604051602001613aea9190618d03565b50919050565b60606000615c1b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c7d90615894565b15615c8b57613a1781616ce2565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cea90615965565b600103615d5457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a179061590590615a32565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db390615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e1b90839061740a565b9050600181511115615e57578060028251615e369190618cf0565b81518110615e4657615e466186a0565b602002602001015192505050919050565b5082604051602001613aea9190618d03565b805182516000911115615e7e5750600061391e565b81518351602085015160009291615e9491618de1565b615e9e9190618cf0565b905082602001518103615eb557600191505061391e565b82516020840151819020912014905092915050565b60606000615ed7836174af565b600101905060008167ffffffffffffffff811115615ef757615ef76180da565b6040519080825280601f01601f191660200182016040528015615f21576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f2b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ff6905b8290617591565b1561603657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261609590615fef565b156160d557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261613490615fef565b1561617457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161d390615fef565b806162385750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261623890615fef565b1561627857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d790615fef565b8061633c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633c90615fef565b1561637c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163db90615fef565b806164405750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261644090615fef565b1561648057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164df90615fef565b806165445750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654490615fef565b1561658457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e390615fef565b1561662357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668290615fef565b156166c257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672190615fef565b1561676157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c090615fef565b1561680057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685f90615fef565b1561689f57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fe90615fef565b806169635750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696390615fef565b156169a357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a0290615fef565b15616a4257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613aea9290602001618df4565b60608060005b8451811015616ae45781858281518110616a7b57616a7b6186a0565b6020026020010151604051602001616a949291906181f7565b604051602081830303815290604052915060018551616ab39190618cf0565b8114616adc5781604051602001616aca9190618f5d565b60405160208183030381529060405291505b600101616a5f565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616afd5790505090508381600081518110616b2857616b286186a0565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616b7c57616b7c6186a0565b60200260200101819052508181600281518110616b9b57616b9b6186a0565b6020908102919091010152949350505050565b6020808301518351835192840151600093616bcc92918491906175a5565b14159392505050565b60408051808201909152600080825260208201526000616c0784600001518560200151856000015186602001516176b6565b9050836020015181616c199190618cf0565b84518590616c28908390618cf0565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616c5c57508161391e565b6020808301519084015160019114616c835750815160208481015190840151829020919020145b8015616cb457825184518590616c9a908390618cf0565b9052508251602085018051616cb0908390618de1565b9052505b509192915050565b6040805180820190915260008082526020820152616cdb8383836177d6565b5092915050565b60606000826000015167ffffffffffffffff811115616d0357616d036180da565b6040519080825280601f01601f191660200182016040528015616d2d576020820181803683370190505b5090506000602082019050616cdb8185602001518660000151617881565b60606000616d57613d14565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616d7457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616dcf9061880d565b935060ff1681518110616de457616de46186a0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616e359190618f9e565b604051602081830303815290604052828280616e509061880d565b935060ff1681518110616e6557616e656186a0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616eb29061880d565b935060ff1681518110616ec757616ec76186a0565b602002602001018190525082604051602001616ee3919061873b565b604051602081830303815290604052828280616efe9061880d565b935060ff1681518110616f1357616f136186a0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616f609061880d565b935060ff1681518110616f7557616f756186a0565b6020026020010181905250616f8a87846178fb565b8282616f958161880d565b935060ff1681518110616faa57616faa6186a0565b6020908102919091010152855151156170565760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ffc8161880d565b935060ff1681518110617011576170116186a0565b602002602001018190525061702a8660000151846178fb565b82826170358161880d565b935060ff168151811061704a5761704a6186a0565b60200260200101819052505b8560800151156170c45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261709f8161880d565b935060ff16815181106170b4576170b46186a0565b602002602001018190525061712a565b841561712a5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171098161880d565b935060ff168151811061711e5761711e6186a0565b60200260200101819052505b604086015151156171c65760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171748161880d565b935060ff1681518110617189576171896186a0565b602002602001018190525085604001518282806171a59061880d565b935060ff16815181106171ba576171ba6186a0565b60200260200101819052505b8560600151156172305760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261720f8161880d565b935060ff1681518110617224576172246186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561724e5761724e6180da565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b8260ff168160ff1610156172da57838160ff16815181106172aa576172aa6186a0565b6020026020010151828260ff16815181106172c7576172c76186a0565b6020908102919091010152600101617287565b50979650505050505050565b604080518082019091526000808252602082015281518351101561730b57508161391e565b8151835160208501516000929161732191618de1565b61732b9190618cf0565b6020840151909150600190821461734c575082516020840151819020908220145b801561736757835185518690617363908390618cf0565b9052505b50929392505050565b600080826000015161739485600001518660200151866000015187602001516176b6565b61739e9190618de1565b90505b835160208501516173b29190618de1565b8111616cdb57816173c281618fe3565b92505082600001516173f98560200151836173dd9190618cf0565b86516173e99190618cf0565b83866000015187602001516176b6565b6174039190618de1565b90506173a1565b606060006174188484617370565b617423906001618de1565b67ffffffffffffffff81111561743b5761743b6180da565b60405190808252806020026020018201604052801561746e57816020015b60608152602001906001900390816174595790505b50905060005b81518110156156e35761748a6159058686616cbc565b82828151811061749c5761749c6186a0565b6020908102919091010152600101617474565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106174f8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617524576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061754257662386f26fc10000830492506010015b6305f5e100831061755a576305f5e100830492506008015b612710831061756e57612710830492506004015b60648310617580576064830492506002015b600a831061391e5760010192915050565b600061759d838361793b565b159392505050565b6000808584116176ac576020841161765857600084156175f05760016175cc866020618cf0565b6175d7906008618ffd565b6175e29060026190fb565b6175ec9190618cf0565b1990505b83518116856175ff8989618de1565b6176099190618cf0565b805190935082165b8181146176435787841161762b5787945050505050615314565b8361763581619107565b945050828451169050617611565b61764d8785618de1565b945050505050615314565b8383206176658588618cf0565b61766f9087618de1565b91505b8582106176aa578482208082036176975761768d8684618de1565b9350505050615314565b6176a2600184618cf0565b925050617672565b505b5092949350505050565b600083818685116177c1576020851161777057600085156177025760016176de876020618cf0565b6176e9906008618ffd565b6176f49060026190fb565b6176fe9190618cf0565b1990505b845181166000876177138b8b618de1565b61771d9190618cf0565b855190915083165b8281146177625781861061774a5761773d8b8b618de1565b9650505050505050615314565b8561775481618fe3565b965050838651169050617725565b859650505050505050615314565b508383206000905b6177828689618cf0565b82116177bf5785832080820361779e5783945050505050615314565b6177a9600185618de1565b93505081806177b790618fe3565b925050617778565b505b6177cb8787618de1565b979650505050505050565b6040805180820190915260008082526020820152600061780885600001518660200151866000015187602001516176b6565b6020808701805191860191909152519091506178249082618cf0565b8352845160208601516178379190618de1565b81036178465760008552617878565b835183516178549190618de1565b85518690617863908390618cf0565b90525083516178729082618de1565b60208601525b50909392505050565b602081106178b95781518352617898602084618de1565b92506178a5602083618de1565b91506178b2602082618cf0565b9050617881565b60001981156178e85760016178cf836020618cf0565b6178db906101006190fb565b6178e59190618cf0565b90505b9151835183169219169190911790915250565b606060006179098484613de7565b80516020808301516040519394506179239390910161911e565b60405160208183030381529060405291505092915050565b815181516000919081111561794e575081515b6020808501519084015160005b83811015617a0757825182518082146179d75760001960208710156179b657600184617988896020618cf0565b6179929190618de1565b61799d906008618ffd565b6179a89060026190fb565b6179b29190618cf0565b1990505b81811683821681810391146179d457975061391e9650505050505050565b50505b6179e2602086618de1565b94506179ef602085618de1565b93505050602081617a009190618de1565b905061795b565b50845186516144959190619176565b6112a68061919783390190565b6113e28061a43d83390190565b61182a8061b81f83390190565b610d5e8061d04983390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617a8d617a92565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617a8d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617b445783516001600160a01b0316835260209384019390920191600101617b1d565b509095945050505050565b60005b83811015617b6a578181015183820152602001617b52565b50506000910152565b60008151808452617b8b816020860160208601617b4f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c6b848651617b73565b6020958601959094509290920191600101617c31565b509197505050602094850194929092019150600101617bc7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617cfb5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cbb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d716040880182617b73565b9050602082015191508681036020880152617d8c8183617ca7565b965050506020938401939190910190600101617d2d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e05858351617b73565b94506020938401939190910190600101617dcb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617e9b6040870182617ca7565b9550506020938401939190910190600101617e42565b600181811c90821680617ec557607f821691505b602082108103615be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f1057600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615bc66060830184617b73565b8281526040602082015260006153146040830184617b73565b6001600160a01b0385168152836020820152608060408201526000617f806080830185617b73565b905082606083015295945050505050565b602081526000613a176020830184617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082618009577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153146040830184617b73565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161806881601a850160208801617b4f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180a581601c840160208801617b4f565b01601c01949350505050565b6000602082840312156180c357600080fd5b81516001600160a01b0381168114613a1757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561812c5761812c6180da565b60405290565b60008067ffffffffffffffff84111561814d5761814d6180da565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561817c5761817c6180da565b60405283815290508082840185101561819457600080fd5b6156e3846020830185617b4f565b600082601f8301126181b357600080fd5b613a1783835160208501618132565b6000602082840312156181d457600080fd5b815167ffffffffffffffff8111156181eb57600080fd5b61391a848285016181a2565b60008351618209818460208801617b4f565b83519083019061821d818360208801617b4f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161825e81601a850160208801617b4f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161829b816033840160208801617b4f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a176080830184617b73565b60006020828403121561832a57600080fd5b815167ffffffffffffffff81111561834157600080fd5b8201601f8101841361835257600080fd5b61391a84825160208401618132565b60008551618373818460208a01617b4f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183ad816001840160208a01617b4f565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516183eb816002840160208901617b4f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161842d816002840160208801617b4f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184786040830184617b73565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156184c957600080fd5b81518015158114613a1757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161851181601f850160208701617b4f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061857e6040830184617b73565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185d06040830184617b73565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618647816014850160208701617b4f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061868e6040830185617b73565b8281036020840152613a138185617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618707816001850160208701617b4f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161874d818460208701617b4f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161880081604b850160208701617b4f565b91909101604b0192915050565b600060ff821660ff810361882357618823617fa4565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a176080830184617b73565b6000602082840312156188f057600080fd5b815167ffffffffffffffff81111561890757600080fd5b82016060818503121561891957600080fd5b618921618109565b81518060030b811461893257600080fd5b8152602082015167ffffffffffffffff81111561894e57600080fd5b61895a868285016181a2565b602083015250604082015167ffffffffffffffff81111561897a57600080fd5b618986868285016181a2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189f2816021850160208701617b4f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bde816021850160208801617b4f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1b81602e840160208801617b4f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618ce3816022850160208701617b4f565b9190910160220192915050565b8181038181111561391e5761391e617fa4565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d3b81600e850160208701617b4f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561391e5761391e617fa4565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e2c816018850160208801617b4f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e6981601c840160208801617b4f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f6f818460208701617b4f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fd681601c850160208701617b4f565b91909101601c0192915050565b60006000198203618ff657618ff6617fa4565b5060010190565b808202811582820484141761391e5761391e617fa4565b6001815b600184111561904f5780850481111561903357619033617fa4565b600184161561904157908102905b60019390931c928002619018565b935093915050565b6000826190665750600161391e565b816190735750600061391e565b81600181146190895760028114619093576190af565b600191505061391e565b60ff8411156190a4576190a4617fa4565b50506001821b61391e565b5060208310610133831016604e8410600b84101617156190d2575081810a61391e565b6190df6000198484619014565b80600019048211156190f3576190f3617fa4565b029392505050565b6000613a178383619057565b60008161911657619116617fa4565b506000190190565b60008351619130818460208801617b4f565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161916a816001840160208801617b4f565b01600101949350505050565b8181036000831280158383131683831282161715616cdb57616cdb617fa456fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a003360c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122049bb636b102be587bd8860316de0ccc099b1bf45bf33a7d054bec099acc25c6264736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ddd48061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b6101996109c4565b6040516101a69190617b03565b60405180910390f35b6101b7610a26565b6040516101a69190617b9f565b61018f610b68565b610199611343565b6101996113a3565b61018f611403565b6101ec6119f0565b6040516101a69190617d05565b61018f611b72565b610209611de4565b6040516101a69190617da3565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611eb4565b6040516101a69190617e1a565b610253611faf565b6102096120aa565b61027861217a565b60405190151581526020016101a6565b61018f61224e565b61018f6124d2565b61018f6128f2565b61018f612f39565b61019961366e565b601f546102789060ff1681565b61018f6136ce565b60258054307fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556026805461123490831617905560278054615678921682179055604051819061031a90617a16565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561034d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261043e919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613905565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546025546040519293918216929116906104ca90617a23565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610506573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754602554604051938516949283169391831692169061056190617a30565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105a5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050506040516106ee90617a3d565b604051809103906000f08015801561070a573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109fe575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b48578382906000526020600020018054610abb90617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790617eb1565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081526020019060010190610a9c565b505050508152505081526020019060010190610a4a565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190617efe565b9050610c74816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190617efe565b9050610cf5816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610ddc916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610ff89089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110de92909116908a9089908b90600401617f58565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190617efe565b905061118e8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190617efe565b905061120f816000613924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190617efe565b90506112b6816000613924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a9190617efe565b9050611337816000613924565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936114a493921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e59190617efe565b90506114f2816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190617efe565b9050611573816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161165a916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118599089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061193f92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190617efe565b905061118e816000613924565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000209060020201604051806040016040529081600082018054611a4790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390617eb1565b8015611ac05780601f10611a9557610100808354040283529160200191611ac0565b820191906000526020600020905b815481529060010190602001808311611aa357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b5a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611b075790505b50505050508152505081526020019060010190611a14565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611d279190600401617f91565b600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611dad9290911690879086908890600401617f58565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5f578382906000526020600020018054611e2790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5390617eb1565b8015611ea05780601f10611e7557610100808354040283529160200191611ea0565b820191906000526020600020905b815481529060010190602001808311611e8357829003601f168201915b505050505081526020019060010190611e08565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f9757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f445790505b50505050508152505081526020019060010190611ed8565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561209257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161203f5790505b50505050508152505081526020019060010190611fd3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000200180546120ed90617eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461211990617eb1565b80156121665780601f1061213b57610100808354040283529160200191612166565b820191906000526020600020905b81548152906001019060200180831161214957829003601f168201915b5050505050815260200190600101906120ce565b60085460009060ff1615612192575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190617efe565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061244c9190600401617f91565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611dad9290911690879086908890600401617f58565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015612527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254b9190617efe565b9050612558816000613924565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612641916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561270157600080fd5b505af1158015612715573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127cd57600080fd5b505af11580156127e1573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b15801561285557600080fd5b505af1158015612869573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190617efe565b90506128eb8186613924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156129cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f19190617efe565b90506129fe816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190617efe565b9050612a7f816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612b66916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c2657600080fd5b505af1158015612c3a573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612c78600289617fd3565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612d999089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612e7f92909116908a9089908b90600401617f58565b600060405180830381600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190617efe565b905061118e81612f3460028a617fd3565b613924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff29190617efe565b9050612fff816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130739190617efe565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161315d916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561317757600080fd5b505af115801561318b573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061327492506001600160a01b0390911690879061800e565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330a57600080fd5b505af115801561331e573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790613369908a908990617f3f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134589089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061353e92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561355857600080fd5b505af115801561356c573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190617efe565b90506135ee8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190617efe565b905061120f8185613924565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561374857600080fd5b505af115801561375c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138479190600401617f91565b600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138e957600080fd5b505af11580156138fd573d6000803e3d6000fd5b505050505050565b600061390f617a4a565b61391a8484836139a3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561398f57600080fd5b505afa1580156138fd573d6000803e3d6000fd5b6000806139b08584613a1e565b9050613a136040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016139fe92919061800e565b60405160208183030381529060405285613a2a565b9150505b9392505050565b6000613a178383613a58565b60c08101515160009015613a4e57613a4784848460c00151613a73565b9050613a17565b613a478484613c19565b6000613a648383613d04565b613a1783836020015184613a2a565b600080613a7e613d14565b90506000613a8c8683613de7565b90506000613aa3826060015183602001518561428d565b90506000613ab38383898961449f565b90506000613ac08261531c565b602081015181519192509060030b15613b3357898260400151604051602001613aea929190618030565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b2a91600401617f91565b60405180910390fd5b6000613b766040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016154eb565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613bc9908490600401617f91565b602060405180830381865afa158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906180b1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613c6e908790600401617f91565b600060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb391908101906181c2565b90506000613ce18285604051602001613ccd9291906181f7565b6040516020818303038152906040526156eb565b90506001600160a01b03811661391a578484604051602001613aea929190618226565b613d10828260006156fe565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613d9b9084906004016182d1565b600060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613de09190810190618318565b9250505090565b613e196040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613e646040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613e6d85615801565b60208201526000613e7d86615be6565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee79190810190618318565b86838560200151604051602001613f019493929190618361565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613f59908590600401617f91565b600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190618318565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613fe6908490600401618465565b602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402791906184b7565b61403c5781604051602001613aea91906184d9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061408190849060040161856b565b600060405180830381865afa15801561409e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c69190810190618318565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061410d9084906004016185bd565b602060405180830381865afa15801561412a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414e91906184b7565b156141e3576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906141989084906004016185bd565b600060405180830381865afa1580156141b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141dd9190810190618318565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614208919061860f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161423492919061867b565b600060405180830381865afa158015614251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142799190810190618318565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816142a95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614309576143096186a0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061435d5761435d6186a0565b60200260200101819052508460405160200161437991906186cf565b6040516020818303038152906040528160028151811061439b5761439b6186a0565b6020026020010181905250826040516020016143b7919061873b565b604051602081830303815290604052816003815181106143d9576143d96186a0565b602002602001018190525060006143ef8261531c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144809060408051808201825260008082526020918201528151808301909252845182528085019082015290615e69565b6144955785604051602001613aea919061877c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156144ef565b511590565b614663578260200151156145ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b2a565b8260c0015115614663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b2a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161467c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806146d79061880d565b935060ff16815181106146ec576146ec6186a0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161473d919061882c565b6040516020818303038152906040528282806147589061880d565b935060ff168151811061476d5761476d6186a0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806147ba9061880d565b935060ff16815181106147cf576147cf6186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061481c9061880d565b935060ff1681518110614831576148316186a0565b6020026020010181905250876020015182828061484d9061880d565b935060ff1681518110614862576148626186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806148af9061880d565b935060ff16815181106148c4576148c46186a0565b6020908102919091010152875182826148dc8161880d565b935060ff16815181106148f1576148f16186a0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061493e9061880d565b935060ff1681518110614953576149536186a0565b602002602001018190525061496746615eca565b82826149728161880d565b935060ff1681518110614987576149876186a0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806149d49061880d565b935060ff16815181106149e9576149e96186a0565b602002602001018190525086828280614a019061880d565b935060ff1681518110614a1657614a166186a0565b6020908102919091010152855115614b3d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614a678161880d565b935060ff1681518110614a7c57614a7c6186a0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614acc908990600401617f91565b600060405180830381865afa158015614ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b119190810190618318565b8282614b1c8161880d565b935060ff1681518110614b3157614b316186a0565b60200260200101819052505b846020015115614c0d5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614b868161880d565b935060ff1681518110614b9b57614b9b6186a0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614be89061880d565b935060ff1681518110614bfd57614bfd6186a0565b6020026020010181905250614dd4565b614c456144ea8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614cd85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614c888161880d565b935060ff1681518110614c9d57614c9d6186a0565b60200260200101819052508460a00151604051602001614cbd91906186cf565b604051602081830303815290604052828280614be89061880d565b8460c00151158015614d1b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d1990511590565b155b15614dd45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5f8161880d565b935060ff1681518110614d7457614d746186a0565b6020026020010181905250614d8888615f6a565b604051602001614d9891906186cf565b604051602081830303815290604052828280614db39061880d565b935060ff1681518110614dc857614dc86186a0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e0890511590565b614e9d5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614e4b8161880d565b935060ff1681518110614e6057614e606186a0565b60200260200101819052508460400151828280614e7c9061880d565b935060ff1681518110614e9157614e916186a0565b60200260200101819052505b606085015115614fbe5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614ee68161880d565b935060ff1681518110614efb57614efb6186a0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f929190810190618318565b8282614f9d8161880d565b935060ff1681518110614fb257614fb26186a0565b60200260200101819052505b60e085015151156150655760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150088161880d565b935060ff168151811061501d5761501d6186a0565b60200260200101819052506150398560e0015160000151615eca565b82826150448161880d565b935060ff1681518110615059576150596186a0565b60200260200101819052505b60e0850151602001511561510f5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826150b28161880d565b935060ff16815181106150c7576150c76186a0565b60200260200101819052506150e38560e0015160200151615eca565b82826150ee8161880d565b935060ff1681518110615103576151036186a0565b60200260200101819052505b60e085015160400151156151b95760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261515c8161880d565b935060ff1681518110615171576151716186a0565b602002602001018190525061518d8560e0015160400151615eca565b82826151988161880d565b935060ff16815181106151ad576151ad6186a0565b60200260200101819052505b60e085015160600151156152635760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152068161880d565b935060ff168151811061521b5761521b6186a0565b60200260200101819052506152378560e0015160600151615eca565b82826152428161880d565b935060ff1681518110615257576152576186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615281576152816180da565b6040519080825280602002602001820160405280156152b457816020015b606081526020019060019003908161529f5790505b50905060005b8260ff168160ff16101561530d57838160ff16815181106152dd576152dd6186a0565b6020026020010151828260ff16815181106152fa576152fa6186a0565b60209081029190910101526001016152ba565b5093505050505b949350505050565b6153436040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916153c991869101618897565b600060405180830381865afa1580156153e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261540e9190810190618318565b9050600061541c8683616a59565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161544c9190617da3565b6000604051808303816000875af115801561546b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261549391908101906188de565b805190915060030b158015906154ac5750602081015151155b80156154bb5750604081015151155b1561449557816000815181106154d3576154d36186a0565b6020026020010151604051602001613aea9190618994565b606060006155208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155579082905b90616bae565b156156b45760006155d4826155ce846155c861559a8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616bd5565b90616c37565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615638908290616bae565b156156a257604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261569f905b8290616cbc565b90505b6156ab81616ce2565b92505050613a17565b82156156cd578484604051602001613aea929190618b80565b5050604080516020810190915260008152613a17565b509392505050565b6000808251602084016000f09392505050565b8160a001511561570d57505050565b600061571a848484616d4b565b905060006157278261531c565b602081015181519192509060030b1580156157c35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c390604080518082018252600080825260209182015281518083019092528451825280850190820152615551565b156157d057505050505050565b604082015151156157f0578160400151604051602001613aea9190618c27565b80604051602001613aea9190618c85565b606060006158368360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061589b905b8290615e69565b1561590a57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a17906159059083906172e6565b616ce2565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261596c905b8290617370565b600103615a3957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159d290615698565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a1790615905905b8390616cbc565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a9890615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b0090839061740a565b905060008160018351615b139190618cf0565b81518110615b2357615b236186a0565b60200260200101519050615bc6615905615b996040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906172e6565b95945050505050565b82604051602001613aea9190618d03565b50919050565b60606000615c1b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c7d90615894565b15615c8b57613a1781616ce2565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cea90615965565b600103615d5457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a179061590590615a32565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db390615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e1b90839061740a565b9050600181511115615e57578060028251615e369190618cf0565b81518110615e4657615e466186a0565b602002602001015192505050919050565b5082604051602001613aea9190618d03565b805182516000911115615e7e5750600061391e565b81518351602085015160009291615e9491618de1565b615e9e9190618cf0565b905082602001518103615eb557600191505061391e565b82516020840151819020912014905092915050565b60606000615ed7836174af565b600101905060008167ffffffffffffffff811115615ef757615ef76180da565b6040519080825280601f01601f191660200182016040528015615f21576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f2b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ff6905b8290617591565b1561603657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261609590615fef565b156160d557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261613490615fef565b1561617457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161d390615fef565b806162385750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261623890615fef565b1561627857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d790615fef565b8061633c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633c90615fef565b1561637c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163db90615fef565b806164405750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261644090615fef565b1561648057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164df90615fef565b806165445750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654490615fef565b1561658457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e390615fef565b1561662357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668290615fef565b156166c257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672190615fef565b1561676157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c090615fef565b1561680057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685f90615fef565b1561689f57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fe90615fef565b806169635750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696390615fef565b156169a357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a0290615fef565b15616a4257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613aea9290602001618df4565b60608060005b8451811015616ae45781858281518110616a7b57616a7b6186a0565b6020026020010151604051602001616a949291906181f7565b604051602081830303815290604052915060018551616ab39190618cf0565b8114616adc5781604051602001616aca9190618f5d565b60405160208183030381529060405291505b600101616a5f565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616afd5790505090508381600081518110616b2857616b286186a0565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616b7c57616b7c6186a0565b60200260200101819052508181600281518110616b9b57616b9b6186a0565b6020908102919091010152949350505050565b6020808301518351835192840151600093616bcc92918491906175a5565b14159392505050565b60408051808201909152600080825260208201526000616c0784600001518560200151856000015186602001516176b6565b9050836020015181616c199190618cf0565b84518590616c28908390618cf0565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616c5c57508161391e565b6020808301519084015160019114616c835750815160208481015190840151829020919020145b8015616cb457825184518590616c9a908390618cf0565b9052508251602085018051616cb0908390618de1565b9052505b509192915050565b6040805180820190915260008082526020820152616cdb8383836177d6565b5092915050565b60606000826000015167ffffffffffffffff811115616d0357616d036180da565b6040519080825280601f01601f191660200182016040528015616d2d576020820181803683370190505b5090506000602082019050616cdb8185602001518660000151617881565b60606000616d57613d14565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616d7457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616dcf9061880d565b935060ff1681518110616de457616de46186a0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616e359190618f9e565b604051602081830303815290604052828280616e509061880d565b935060ff1681518110616e6557616e656186a0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616eb29061880d565b935060ff1681518110616ec757616ec76186a0565b602002602001018190525082604051602001616ee3919061873b565b604051602081830303815290604052828280616efe9061880d565b935060ff1681518110616f1357616f136186a0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616f609061880d565b935060ff1681518110616f7557616f756186a0565b6020026020010181905250616f8a87846178fb565b8282616f958161880d565b935060ff1681518110616faa57616faa6186a0565b6020908102919091010152855151156170565760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ffc8161880d565b935060ff1681518110617011576170116186a0565b602002602001018190525061702a8660000151846178fb565b82826170358161880d565b935060ff168151811061704a5761704a6186a0565b60200260200101819052505b8560800151156170c45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261709f8161880d565b935060ff16815181106170b4576170b46186a0565b602002602001018190525061712a565b841561712a5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171098161880d565b935060ff168151811061711e5761711e6186a0565b60200260200101819052505b604086015151156171c65760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171748161880d565b935060ff1681518110617189576171896186a0565b602002602001018190525085604001518282806171a59061880d565b935060ff16815181106171ba576171ba6186a0565b60200260200101819052505b8560600151156172305760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261720f8161880d565b935060ff1681518110617224576172246186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561724e5761724e6180da565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b8260ff168160ff1610156172da57838160ff16815181106172aa576172aa6186a0565b6020026020010151828260ff16815181106172c7576172c76186a0565b6020908102919091010152600101617287565b50979650505050505050565b604080518082019091526000808252602082015281518351101561730b57508161391e565b8151835160208501516000929161732191618de1565b61732b9190618cf0565b6020840151909150600190821461734c575082516020840151819020908220145b801561736757835185518690617363908390618cf0565b9052505b50929392505050565b600080826000015161739485600001518660200151866000015187602001516176b6565b61739e9190618de1565b90505b835160208501516173b29190618de1565b8111616cdb57816173c281618fe3565b92505082600001516173f98560200151836173dd9190618cf0565b86516173e99190618cf0565b83866000015187602001516176b6565b6174039190618de1565b90506173a1565b606060006174188484617370565b617423906001618de1565b67ffffffffffffffff81111561743b5761743b6180da565b60405190808252806020026020018201604052801561746e57816020015b60608152602001906001900390816174595790505b50905060005b81518110156156e35761748a6159058686616cbc565b82828151811061749c5761749c6186a0565b6020908102919091010152600101617474565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106174f8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617524576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061754257662386f26fc10000830492506010015b6305f5e100831061755a576305f5e100830492506008015b612710831061756e57612710830492506004015b60648310617580576064830492506002015b600a831061391e5760010192915050565b600061759d838361793b565b159392505050565b6000808584116176ac576020841161765857600084156175f05760016175cc866020618cf0565b6175d7906008618ffd565b6175e29060026190fb565b6175ec9190618cf0565b1990505b83518116856175ff8989618de1565b6176099190618cf0565b805190935082165b8181146176435787841161762b5787945050505050615314565b8361763581619107565b945050828451169050617611565b61764d8785618de1565b945050505050615314565b8383206176658588618cf0565b61766f9087618de1565b91505b8582106176aa578482208082036176975761768d8684618de1565b9350505050615314565b6176a2600184618cf0565b925050617672565b505b5092949350505050565b600083818685116177c1576020851161777057600085156177025760016176de876020618cf0565b6176e9906008618ffd565b6176f49060026190fb565b6176fe9190618cf0565b1990505b845181166000876177138b8b618de1565b61771d9190618cf0565b855190915083165b8281146177625781861061774a5761773d8b8b618de1565b9650505050505050615314565b8561775481618fe3565b965050838651169050617725565b859650505050505050615314565b508383206000905b6177828689618cf0565b82116177bf5785832080820361779e5783945050505050615314565b6177a9600185618de1565b93505081806177b790618fe3565b925050617778565b505b6177cb8787618de1565b979650505050505050565b6040805180820190915260008082526020820152600061780885600001518660200151866000015187602001516176b6565b6020808701805191860191909152519091506178249082618cf0565b8352845160208601516178379190618de1565b81036178465760008552617878565b835183516178549190618de1565b85518690617863908390618cf0565b90525083516178729082618de1565b60208601525b50909392505050565b602081106178b95781518352617898602084618de1565b92506178a5602083618de1565b91506178b2602082618cf0565b9050617881565b60001981156178e85760016178cf836020618cf0565b6178db906101006190fb565b6178e59190618cf0565b90505b9151835183169219169190911790915250565b606060006179098484613de7565b80516020808301516040519394506179239390910161911e565b60405160208183030381529060405291505092915050565b815181516000919081111561794e575081515b6020808501519084015160005b83811015617a0757825182518082146179d75760001960208710156179b657600184617988896020618cf0565b6179929190618de1565b61799d906008618ffd565b6179a89060026190fb565b6179b29190618cf0565b1990505b81811683821681810391146179d457975061391e9650505050505050565b50505b6179e2602086618de1565b94506179ef602085618de1565b93505050602081617a009190618de1565b905061795b565b50845186516144959190619176565b6112a68061919783390190565b61140b8061a43d83390190565b6117f98061b84883390190565b610d5e8061d04183390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617a8d617a92565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617a8d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617b445783516001600160a01b0316835260209384019390920191600101617b1d565b509095945050505050565b60005b83811015617b6a578181015183820152602001617b52565b50506000910152565b60008151808452617b8b816020860160208601617b4f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c6b848651617b73565b6020958601959094509290920191600101617c31565b509197505050602094850194929092019150600101617bc7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617cfb5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cbb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d716040880182617b73565b9050602082015191508681036020880152617d8c8183617ca7565b965050506020938401939190910190600101617d2d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e05858351617b73565b94506020938401939190910190600101617dcb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617e9b6040870182617ca7565b9550506020938401939190910190600101617e42565b600181811c90821680617ec557607f821691505b602082108103615be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f1057600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615bc66060830184617b73565b8281526040602082015260006153146040830184617b73565b6001600160a01b0385168152836020820152608060408201526000617f806080830185617b73565b905082606083015295945050505050565b602081526000613a176020830184617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082618009577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153146040830184617b73565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161806881601a850160208801617b4f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180a581601c840160208801617b4f565b01601c01949350505050565b6000602082840312156180c357600080fd5b81516001600160a01b0381168114613a1757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561812c5761812c6180da565b60405290565b60008067ffffffffffffffff84111561814d5761814d6180da565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561817c5761817c6180da565b60405283815290508082840185101561819457600080fd5b6156e3846020830185617b4f565b600082601f8301126181b357600080fd5b613a1783835160208501618132565b6000602082840312156181d457600080fd5b815167ffffffffffffffff8111156181eb57600080fd5b61391a848285016181a2565b60008351618209818460208801617b4f565b83519083019061821d818360208801617b4f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161825e81601a850160208801617b4f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161829b816033840160208801617b4f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a176080830184617b73565b60006020828403121561832a57600080fd5b815167ffffffffffffffff81111561834157600080fd5b8201601f8101841361835257600080fd5b61391a84825160208401618132565b60008551618373818460208a01617b4f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183ad816001840160208a01617b4f565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516183eb816002840160208901617b4f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161842d816002840160208801617b4f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184786040830184617b73565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156184c957600080fd5b81518015158114613a1757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161851181601f850160208701617b4f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061857e6040830184617b73565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185d06040830184617b73565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618647816014850160208701617b4f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061868e6040830185617b73565b8281036020840152613a138185617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618707816001850160208701617b4f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161874d818460208701617b4f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161880081604b850160208701617b4f565b91909101604b0192915050565b600060ff821660ff810361882357618823617fa4565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a176080830184617b73565b6000602082840312156188f057600080fd5b815167ffffffffffffffff81111561890757600080fd5b82016060818503121561891957600080fd5b618921618109565b81518060030b811461893257600080fd5b8152602082015167ffffffffffffffff81111561894e57600080fd5b61895a868285016181a2565b602083015250604082015167ffffffffffffffff81111561897a57600080fd5b618986868285016181a2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189f2816021850160208701617b4f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bde816021850160208801617b4f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1b81602e840160208801617b4f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618ce3816022850160208701617b4f565b9190910160220192915050565b8181038181111561391e5761391e617fa4565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d3b81600e850160208701617b4f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561391e5761391e617fa4565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e2c816018850160208801617b4f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e6981601c840160208801617b4f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f6f818460208701617b4f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fd681601c850160208701617b4f565b91909101601c0192915050565b60006000198203618ff657618ff6617fa4565b5060010190565b808202811582820484141761391e5761391e617fa4565b6001815b600184111561904f5780850481111561903357619033617fa4565b600184161561904157908102905b60019390931c928002619018565b935093915050565b6000826190665750600161391e565b816190735750600061391e565b81600181146190895760028114619093576190af565b600191505061391e565b60ff8411156190a4576190a4617fa4565b50506001821b61391e565b5060208310610133831016604e8410600b84101617156190d2575081810a61391e565b6190df6000198484619014565b80600019048211156190f3576190f3617fa4565b029392505050565b6000613a178383619057565b60008161911657619116617fa4565b506000190190565b60008351619130818460208801617b4f565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161916a816001840160208801617b4f565b01600101949350505050565b8181036000831280158383131683831282161715616cdb57616cdb617fa456fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220dc685615752e4c7a872eb50c41e61509eb0eff5d8bdd510c501cbd2c2e0ac2e664736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20.sol/zrc20.go b/v2/pkg/zrc20.sol/zrc20.go index ff3e31dd..ea35547e 100644 --- a/v2/pkg/zrc20.sol/zrc20.go +++ b/v2/pkg/zrc20.sol/zrc20.go @@ -32,7 +32,7 @@ var ( // ZRC20MetaData contains all meta data concerning the ZRC20 contract. var ZRC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gatewayAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"protocolFlatFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGatewayAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGateway\",\"inputs\":[{\"name\":\"gateway\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033", + Bin: "0x60e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033", } // ZRC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go index 08ca1b0a..bdc0a873 100644 --- a/v2/pkg/zrc20.t.sol/zrc20test.go +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. var ZRC20TestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cf3a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061811a565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181b6565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061831c565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ba565b610325612323565b6040516102759190618431565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e6132bc565b61024e613499565b61024e61374e565b61024e6138aa565b610268613b86565b61024e613be6565b61024e613d5e565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061803a565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e71565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184e4565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618047565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618054565b610845969594939291906184ff565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185f4565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185f4565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618616565b9050610dfc600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185f4565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f9061862f565b80601f016020809104026020016040519081016040528092919081815260200182805461109b9061862f565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184e4565b613211613f18565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061867c565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618616565b613e90565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a9061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546119669061862f565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618616565b9050611b04600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618616565b9050611d47600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185f4565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185f4565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618616565b9050610fd58282613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618616565b9050611fb1620186a082613e90565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185f4565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618616565b905061216262030d4082613e90565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546122969061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061862f565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618770565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618770565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187b9565b905061262360128260ff16613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618616565b90506104d4620186a082613e90565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d49061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546129009061862f565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618616565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e319190618616565b9050612e40620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190618616565b9050612ec8620186a082613e90565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190618616565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906185f4565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613088919061c350906038016187dc565b6020604051808303816000875af11580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb91906185f4565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e9190618616565b905061317e8561316e888561882d565b613178919061882d565b82613e90565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f9190618616565b905061322b866132218961c350618840565b6131789190618840565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190618616565b90506132b261c35082613e90565b5050505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185f4565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b15801561358b57600080fd5b505af115801561359f573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561361557600080fd5b505af1158015613629573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613721919061867c565b601f5491935091506137419061010090046001600160a01b031683613f18565b6104d4613178848661882d565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137c057600080fd5b505af11580156137d4573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393b9190618616565b905061394a620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c39190618616565b90506139d2620186a082613e90565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906185f4565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190618616565b9050613aff61c35082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b789190618616565b90506104d461c35082613e90565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c5857600080fd5b505af1158015613c6c573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df09190618616565b9050613dfd600082613e90565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e7b618061565b613e86848483613fcb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613efc57600080fd5b505afa158015613f10573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ee4565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ee49085908590600401618853565b600080613fd88584614046565b905061403b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614026929190618878565b60405160208183030381529060405285614052565b9150505b9392505050565b600061403f8383614080565b60c081015151600090156140765761406f84848460c0015161409b565b905061403f565b61406f8484614241565b600061408c838361432c565b61403f83836020015184614052565b6000806140a6614338565b905060006140b4868361440b565b905060006140cb82606001518360200151856148b1565b905060006140db83838989614ac3565b905060006140e882615940565b602081015181519192509060030b1561415b5789826040015160405160200161411292919061889a565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141529160040161891b565b60405180910390fd5b600061419e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b0f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141f190849060040161891b565b602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423291906184e4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061429690879060040161891b565b600060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142db919081019061894e565b9050600061430982856040516020016142f5929190618983565b604051602081830303815290604052615d0f565b90506001600160a01b038116613e865784846040516020016141129291906189b2565b61216282826000615d22565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143bf908490600401618a5d565b600060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144049190810190618770565b9250505090565b61443d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144886040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61449185615e25565b602082015260006144a18661620a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450b9190810190618770565b868385602001516040516020016145259493929190618aa4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061457d90859060040161891b565b600060405180830381865afa15801561459a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145c29190810190618770565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061460a908490600401618ba8565b602060405180830381865afa158015614627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464b91906185f4565b61466057816040516020016141129190618bfa565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146a5908490600401618c8c565b600060405180830381865afa1580156146c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ea9190810190618770565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614731908490600401618cde565b602060405180830381865afa15801561474e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477291906185f4565b15614807576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147bc908490600401618cde565b600060405180830381865afa1580156147d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148019190810190618770565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161482c9190618d30565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614858929190618853565b600060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261489d9190810190618770565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816148cd5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061492d5761492d618d9c565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061498157614981618d9c565b60200260200101819052508460405160200161499d9190618dcb565b604051602081830303815290604052816002815181106149bf576149bf618d9c565b6020026020010181905250826040516020016149db9190618e37565b604051602081830303815290604052816003815181106149fd576149fd618d9c565b60200260200101819052506000614a1382615940565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614aa4906040805180820182526000808252602091820152815180830190925284518252808501908201529061648d565b614ab957856040516020016141129190618e78565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b13565b511590565b614c8757826020015115614bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614152565b8260c0015115614c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614152565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614ca057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614cfb90618f09565b935060ff1681518110614d1057614d10618d9c565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d619190618f28565b604051602081830303815290604052828280614d7c90618f09565b935060ff1681518110614d9157614d91618d9c565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614dde90618f09565b935060ff1681518110614df357614df3618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e4090618f09565b935060ff1681518110614e5557614e55618d9c565b60200260200101819052508760200151828280614e7190618f09565b935060ff1681518110614e8657614e86618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ed390618f09565b935060ff1681518110614ee857614ee8618d9c565b602090810291909101015287518282614f0081618f09565b935060ff1681518110614f1557614f15618d9c565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f6290618f09565b935060ff1681518110614f7757614f77618d9c565b6020026020010181905250614f8b466164ee565b8282614f9681618f09565b935060ff1681518110614fab57614fab618d9c565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614ff890618f09565b935060ff168151811061500d5761500d618d9c565b60200260200101819052508682828061502590618f09565b935060ff168151811061503a5761503a618d9c565b60209081029190910101528551156151615760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261508b81618f09565b935060ff16815181106150a0576150a0618d9c565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150f090899060040161891b565b600060405180830381865afa15801561510d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151359190810190618770565b828261514081618f09565b935060ff168151811061515557615155618d9c565b60200260200101819052505b8460200151156152315760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151aa81618f09565b935060ff16815181106151bf576151bf618d9c565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061520c90618f09565b935060ff168151811061522157615221618d9c565b60200260200101819052506153f8565b615269614b0e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152fc5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152ac81618f09565b935060ff16815181106152c1576152c1618d9c565b60200260200101819052508460a001516040516020016152e19190618dcb565b60405160208183030381529060405282828061520c90618f09565b8460c0015115801561533f57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261533d90511590565b155b156153f85760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261538381618f09565b935060ff168151811061539857615398618d9c565b60200260200101819052506153ac8861658e565b6040516020016153bc9190618dcb565b6040516020818303038152906040528282806153d790618f09565b935060ff16815181106153ec576153ec618d9c565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261542c90511590565b6154c15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261546f81618f09565b935060ff168151811061548457615484618d9c565b602002602001018190525084604001518282806154a090618f09565b935060ff16815181106154b5576154b5618d9c565b60200260200101819052505b6060850151156155e25760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261550a81618f09565b935060ff168151811061551f5761551f618d9c565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561558e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155b69190810190618770565b82826155c181618f09565b935060ff16815181106155d6576155d6618d9c565b60200260200101819052505b60e085015151156156895760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261562c81618f09565b935060ff168151811061564157615641618d9c565b602002602001018190525061565d8560e00151600001516164ee565b828261566881618f09565b935060ff168151811061567d5761567d618d9c565b60200260200101819052505b60e085015160200151156157335760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156d681618f09565b935060ff16815181106156eb576156eb618d9c565b60200260200101819052506157078560e00151602001516164ee565b828261571281618f09565b935060ff168151811061572757615727618d9c565b60200260200101819052505b60e085015160400151156157dd5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261578081618f09565b935060ff168151811061579557615795618d9c565b60200260200101819052506157b18560e00151604001516164ee565b82826157bc81618f09565b935060ff16815181106157d1576157d1618d9c565b60200260200101819052505b60e085015160600151156158875760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261582a81618f09565b935060ff168151811061583f5761583f618d9c565b602002602001018190525061585b8560e00151606001516164ee565b828261586681618f09565b935060ff168151811061587b5761587b618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158a5576158a56186a8565b6040519080825280602002602001820160405280156158d857816020015b60608152602001906001900390816158c35790505b50905060005b8260ff168160ff16101561593157838160ff168151811061590157615901618d9c565b6020026020010151828260ff168151811061591e5761591e618d9c565b60209081029190910101526001016158de565b5093505050505b949350505050565b6159676040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159ed91869101618f93565b600060405180830381865afa158015615a0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a329190810190618770565b90506000615a40868361707d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a7091906183ba565b6000604051808303816000875af1158015615a8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ab79190810190618fda565b805190915060030b15801590615ad05750602081015151155b8015615adf5750604081015151155b15614ab95781600081518110615af757615af7618d9c565b60200260200101516040516020016141129190619090565b60606000615b448560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b7b9082905b906171d2565b15615cd8576000615bf882615bf284615bec615bbe8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171f9565b9061725b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c5c9082906171d2565b15615cc657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cc3905b82906172e0565b90505b615ccf81617306565b9250505061403f565b8215615cf157848460405160200161411292919061927c565b505060408051602081019091526000815261403f565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d3157505050565b6000615d3e84848461736f565b90506000615d4b82615940565b602081015181519192509060030b158015615de75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615de790604080518082018252600080825260209182015281518083019092528451825280850190820152615b75565b15615df457505050505050565b60408201515115615e145781604001516040516020016141129190619323565b806040516020016141129190619381565b60606000615e5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ebf905b829061648d565b15615f2e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990839061790a565b617306565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f90905b8290617994565b60010361605d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff690615cbc565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f29905b83906172e0565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bc90615eb8565b156161f357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616124908390617a2e565b9050600081600183516161379190618840565b8151811061614757616147618d9c565b602002602001015190506161ea615f296161bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061790a565b95945050505050565b8260405160200161411291906193ec565b50919050565b6060600061623f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162a190615eb8565b156162af5761403f81617306565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261630e90615f89565b60010361637857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990616056565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d790615eb8565b156161f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061643f908390617a2e565b905060018151111561647b57806002825161645a9190618840565b8151811061646a5761646a618d9c565b602002602001015192505050919050565b508260405160200161411291906193ec565b8051825160009111156164a257506000613e8a565b815183516020850151600092916164b89161882d565b6164c29190618840565b9050826020015181036164d9576001915050613e8a565b82516020840151819020912014905092915050565b606060006164fb83617ad3565b600101905060008167ffffffffffffffff81111561651b5761651b6186a8565b6040519080825280601f01601f191660200182016040528015616545576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461654f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161661a905b8290617bb5565b1561665a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b990616613565b156166f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261675890616613565b1561679857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f790616613565b8061685c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685c90616613565b1561689c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fb90616613565b806169605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696090616613565b156169a057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ff90616613565b80616a645750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6490616613565b15616aa457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b0390616613565b80616b685750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b6890616613565b15616ba857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c0790616613565b15616c4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ca690616613565b15616ce657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d4590616613565b15616d8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616de490616613565b15616e2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e8390616613565b15616ec357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f2290616613565b80616f875750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f8790616613565b15616fc757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261702690616613565b1561706657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161411292906020016194ca565b60608060005b8451811015617108578185828151811061709f5761709f618d9c565b60200260200101516040516020016170b8929190618983565b6040516020818303038152906040529150600185516170d79190618840565b811461710057816040516020016170ee9190619633565b60405160208183030381529060405291505b600101617083565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617121579050509050838160008151811061714c5761714c618d9c565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171a0576171a0618d9c565b602002602001018190525081816002815181106171bf576171bf618d9c565b6020908102919091010152949350505050565b60208083015183518351928401516000936171f09291849190617bc9565b14159392505050565b6040805180820190915260008082526020820152600061722b8460000151856020015185600001518660200151617cda565b905083602001518161723d9190618840565b8451859061724c908390618840565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617280575081613e8a565b60208083015190840151600191146172a75750815160208481015190840151829020919020145b80156172d8578251845185906172be908390618840565b90525082516020850180516172d490839061882d565b9052505b509192915050565b60408051808201909152600080825260208201526172ff838383617dfa565b5092915050565b60606000826000015167ffffffffffffffff811115617327576173276186a8565b6040519080825280601f01601f191660200182016040528015617351576020820181803683370190505b50905060006020820190506172ff8185602001518660000151617ea5565b6060600061737b614338565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161739857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173f390618f09565b935060ff168151811061740857617408618d9c565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016174599190619674565b60405160208183030381529060405282828061747490618f09565b935060ff168151811061748957617489618d9c565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174d690618f09565b935060ff16815181106174eb576174eb618d9c565b6020026020010181905250826040516020016175079190618e37565b60405160208183030381529060405282828061752290618f09565b935060ff168151811061753757617537618d9c565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061758490618f09565b935060ff168151811061759957617599618d9c565b60200260200101819052506175ae8784617f1f565b82826175b981618f09565b935060ff16815181106175ce576175ce618d9c565b60209081029190910101528551511561767a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261762081618f09565b935060ff168151811061763557617635618d9c565b602002602001018190525061764e866000015184617f1f565b828261765981618f09565b935060ff168151811061766e5761766e618d9c565b60200260200101819052505b8560800151156176e85760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176c381618f09565b935060ff16815181106176d8576176d8618d9c565b602002602001018190525061774e565b841561774e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261772d81618f09565b935060ff168151811061774257617742618d9c565b60200260200101819052505b604086015151156177ea5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261779881618f09565b935060ff16815181106177ad576177ad618d9c565b602002602001018190525085604001518282806177c990618f09565b935060ff16815181106177de576177de618d9c565b60200260200101819052505b8560600151156178545760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261783381618f09565b935060ff168151811061784857617848618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617872576178726186a8565b6040519080825280602002602001820160405280156178a557816020015b60608152602001906001900390816178905790505b50905060005b8260ff168160ff1610156178fe57838160ff16815181106178ce576178ce618d9c565b6020026020010151828260ff16815181106178eb576178eb618d9c565b60209081029190910101526001016178ab565b50979650505050505050565b604080518082019091526000808252602082015281518351101561792f575081613e8a565b815183516020850151600092916179459161882d565b61794f9190618840565b60208401519091506001908214617970575082516020840151819020908220145b801561798b57835185518690617987908390618840565b9052505b50929392505050565b60008082600001516179b88560000151866020015186600001518760200151617cda565b6179c2919061882d565b90505b835160208501516179d6919061882d565b81116172ff57816179e6816196b9565b9250508260000151617a1d856020015183617a019190618840565b8651617a0d9190618840565b8386600001518760200151617cda565b617a27919061882d565b90506179c5565b60606000617a3c8484617994565b617a4790600161882d565b67ffffffffffffffff811115617a5f57617a5f6186a8565b604051908082528060200260200182016040528015617a9257816020015b6060815260200190600190039081617a7d5790505b50905060005b8151811015615d0757617aae615f2986866172e0565b828281518110617ac057617ac0618d9c565b6020908102919091010152600101617a98565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b48576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b6657662386f26fc10000830492506010015b6305f5e1008310617b7e576305f5e100830492506008015b6127108310617b9257612710830492506004015b60648310617ba4576064830492506002015b600a8310613e8a5760010192915050565b6000617bc18383617f5f565b159392505050565b600080858411617cd05760208411617c7c5760008415617c14576001617bf0866020618840565b617bfb9060086196d3565b617c069060026197d1565b617c109190618840565b1990505b8351811685617c23898961882d565b617c2d9190618840565b805190935082165b818114617c6757878411617c4f5787945050505050615938565b83617c59816197dd565b945050828451169050617c35565b617c71878561882d565b945050505050615938565b838320617c898588618840565b617c93908761882d565b91505b858210617cce57848220808203617cbb57617cb1868461882d565b9350505050615938565b617cc6600184618840565b925050617c96565b505b5092949350505050565b60008381868511617de55760208511617d945760008515617d26576001617d02876020618840565b617d0d9060086196d3565b617d189060026197d1565b617d229190618840565b1990505b84518116600087617d378b8b61882d565b617d419190618840565b855190915083165b828114617d8657818610617d6e57617d618b8b61882d565b9650505050505050615938565b85617d78816196b9565b965050838651169050617d49565b859650505050505050615938565b508383206000905b617da68689618840565b8211617de357858320808203617dc25783945050505050615938565b617dcd60018561882d565b9350508180617ddb906196b9565b925050617d9c565b505b617def878761882d565b979650505050505050565b60408051808201909152600080825260208201526000617e2c8560000151866020015186600001518760200151617cda565b602080870180519186019190915251909150617e489082618840565b835284516020860151617e5b919061882d565b8103617e6a5760008552617e9c565b83518351617e78919061882d565b85518690617e87908390618840565b9052508351617e96908261882d565b60208601525b50909392505050565b60208110617edd5781518352617ebc60208461882d565b9250617ec960208361882d565b9150617ed6602082618840565b9050617ea5565b6000198115617f0c576001617ef3836020618840565b617eff906101006197d1565b617f099190618840565b90505b9151835183169219169190911790915250565b60606000617f2d848461440b565b8051602080830151604051939450617f47939091016197f4565b60405160208183030381529060405291505092915050565b8151815160009190811115617f72575081515b6020808501519084015160005b8381101561802b5782518251808214617ffb576000196020871015617fda57600184617fac896020618840565b617fb6919061882d565b617fc19060086196d3565b617fcc9060026197d1565b617fd69190618840565b1990505b8181168382168181039114617ff8579750613e8a9650505050505050565b50505b61800660208661882d565b945061801360208561882d565b93505050602081618024919061882d565b9050617f7f565b5084518651614ab9919061984c565b610b678061986d83390190565b61106f8061a3d483390190565b611ac28061b44383390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180a46180a9565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180a46040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561815b5783516001600160a01b0316835260209384019390920191600101618134565b509095945050505050565b60005b83811015618181578181015183820152602001618169565b50506000910152565b600081518084526181a2816020860160208601618166565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618298577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261828284865161818a565b6020958601959094509290920191600101618248565b5091975050506020948501949290920191506001016181de565b50929695505050505050565b600081518084526020840193506020830160005b828110156183125781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182d2565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618388604088018261818a565b90506020820151915086810360208801526183a381836182be565b965050506020938401939190910190600101618344565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261841c85835161818a565b945060209384019391909101906001016183e2565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184b260408701826182be565b9550506020938401939190910190600101618459565b80516001600160a01b03811681146184df57600080fd5b919050565b6000602082840312156184f657600080fd5b61403f826184c8565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185da60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561860657600080fd5b8151801515811461403f57600080fd5b60006020828403121561862857600080fd5b5051919050565b600181811c9082168061864357607f821691505b602082108103616204577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561868f57600080fd5b618698836184c8565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186fa576186fa6186a8565b60405290565b60008067ffffffffffffffff84111561871b5761871b6186a8565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561874a5761874a6186a8565b60405283815290508082840185101561876257600080fd5b615d07846020830185618166565b60006020828403121561878257600080fd5b815167ffffffffffffffff81111561879957600080fd5b8201601f810184136187aa57600080fd5b613e8684825160208401618700565b6000602082840312156187cb57600080fd5b815160ff8116811461403f57600080fd5b6040815260006187ef604083018561818a565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e8a57613e8a6187fe565b81810381811115613e8a57613e8a6187fe565b604081526000618866604083018561818a565b828103602084015261403b818561818a565b6001600160a01b0383168152604060208201526000615938604083018461818a565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d281601a850160208801618166565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161890f81601c840160208801618166565b01601c01949350505050565b60208152600061403f602083018461818a565b600082601f83011261893f57600080fd5b61403f83835160208501618700565b60006020828403121561896057600080fd5b815167ffffffffffffffff81111561897757600080fd5b613e868482850161892e565b60008351618995818460208801618166565b8351908301906189a9818360208801618166565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189ea81601a850160208801618166565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a27816033840160208801618166565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061403f608083018461818a565b60008551618ab6818460208a01618166565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618af0816001840160208a01618166565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b2e816002840160208901618166565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b70816002840160208801618166565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bbb604083018461818a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c3281601f850160208701618166565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c9f604083018461818a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cf1604083018461818a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d68816014850160208701618166565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e03816001850160208701618166565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e49818460208701618166565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618efc81604b850160208701618166565b91909101604b0192915050565b600060ff821660ff8103618f1f57618f1f6187fe565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061403f608083018461818a565b600060208284031215618fec57600080fd5b815167ffffffffffffffff81111561900357600080fd5b82016060818503121561901557600080fd5b61901d6186d7565b81518060030b811461902e57600080fd5b8152602082015167ffffffffffffffff81111561904a57600080fd5b6190568682850161892e565b602083015250604082015167ffffffffffffffff81111561907657600080fd5b6190828682850161892e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ee816021850160208701618166565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192da816021850160208801618166565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161931781602e840160208801618166565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193df816022850160208701618166565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161942481600e850160208701618166565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619502816018850160208801618166565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161953f81601c840160208801618166565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619645818460208701618166565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196ac81601c850160208701618166565b91909101601c0192915050565b600060001982036196cc576196cc6187fe565b5060010190565b8082028115828204841417613e8a57613e8a6187fe565b6001815b600184111561972557808504811115619709576197096187fe565b600184161561971757908102905b60019390931c9280026196ee565b935093915050565b60008261973c57506001613e8a565b8161974957506000613e8a565b816001811461975f576002811461976957619785565b6001915050613e8a565b60ff84111561977a5761977a6187fe565b50506001821b613e8a565b5060208310610133831016604e8410600b84101617156197a8575081810a613e8a565b6197b560001984846196ea565b80600019048211156197c9576197c96187fe565b029392505050565b600061403f838361972d565b6000816197ec576197ec6187fe565b506000190190565b60008351619806818460208801618166565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619840816001840160208801618166565b01600101949350505050565b81810360008312801583831316838312821617156172ff576172ff6187fe56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033a2646970667358221220eef539b0ff825d0f63f40c6c8fd9d7e1adcffe002c085856a808489b922a082464736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d02d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061811a565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181b6565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061831c565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ba565b610325612323565b6040516102759190618431565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e6132bc565b61024e613499565b61024e61374e565b61024e6138aa565b610268613b86565b61024e613be6565b61024e613d5e565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061803a565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e71565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184e4565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618047565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618054565b610845969594939291906184ff565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185f4565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185f4565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618616565b9050610dfc600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185f4565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f9061862f565b80601f016020809104026020016040519081016040528092919081815260200182805461109b9061862f565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184e4565b613211613f18565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061867c565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618616565b613e90565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a9061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546119669061862f565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618616565b9050611b04600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618616565b9050611d47600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185f4565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185f4565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618616565b9050610fd58282613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618616565b9050611fb1620186a082613e90565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185f4565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618616565b905061216262030d4082613e90565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546122969061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061862f565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618770565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618770565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187b9565b905061262360128260ff16613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618616565b90506104d4620186a082613e90565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d49061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546129009061862f565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618616565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e319190618616565b9050612e40620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190618616565b9050612ec8620186a082613e90565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190618616565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906185f4565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613088919061c350906038016187dc565b6020604051808303816000875af11580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb91906185f4565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e9190618616565b905061317e8561316e888561882d565b613178919061882d565b82613e90565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f9190618616565b905061322b866132218961c350618840565b6131789190618840565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190618616565b90506132b261c35082613e90565b5050505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185f4565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b15801561358b57600080fd5b505af115801561359f573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561361557600080fd5b505af1158015613629573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613721919061867c565b601f5491935091506137419061010090046001600160a01b031683613f18565b6104d4613178848661882d565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137c057600080fd5b505af11580156137d4573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393b9190618616565b905061394a620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c39190618616565b90506139d2620186a082613e90565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906185f4565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190618616565b9050613aff61c35082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b789190618616565b90506104d461c35082613e90565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c5857600080fd5b505af1158015613c6c573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df09190618616565b9050613dfd600082613e90565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e7b618061565b613e86848483613fcb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613efc57600080fd5b505afa158015613f10573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ee4565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ee49085908590600401618853565b600080613fd88584614046565b905061403b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614026929190618878565b60405160208183030381529060405285614052565b9150505b9392505050565b600061403f8383614080565b60c081015151600090156140765761406f84848460c0015161409b565b905061403f565b61406f8484614241565b600061408c838361432c565b61403f83836020015184614052565b6000806140a6614338565b905060006140b4868361440b565b905060006140cb82606001518360200151856148b1565b905060006140db83838989614ac3565b905060006140e882615940565b602081015181519192509060030b1561415b5789826040015160405160200161411292919061889a565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141529160040161891b565b60405180910390fd5b600061419e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b0f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141f190849060040161891b565b602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423291906184e4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061429690879060040161891b565b600060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142db919081019061894e565b9050600061430982856040516020016142f5929190618983565b604051602081830303815290604052615d0f565b90506001600160a01b038116613e865784846040516020016141129291906189b2565b61216282826000615d22565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143bf908490600401618a5d565b600060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144049190810190618770565b9250505090565b61443d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144886040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61449185615e25565b602082015260006144a18661620a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450b9190810190618770565b868385602001516040516020016145259493929190618aa4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061457d90859060040161891b565b600060405180830381865afa15801561459a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145c29190810190618770565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061460a908490600401618ba8565b602060405180830381865afa158015614627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464b91906185f4565b61466057816040516020016141129190618bfa565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146a5908490600401618c8c565b600060405180830381865afa1580156146c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ea9190810190618770565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614731908490600401618cde565b602060405180830381865afa15801561474e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477291906185f4565b15614807576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147bc908490600401618cde565b600060405180830381865afa1580156147d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148019190810190618770565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161482c9190618d30565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614858929190618853565b600060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261489d9190810190618770565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816148cd5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061492d5761492d618d9c565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061498157614981618d9c565b60200260200101819052508460405160200161499d9190618dcb565b604051602081830303815290604052816002815181106149bf576149bf618d9c565b6020026020010181905250826040516020016149db9190618e37565b604051602081830303815290604052816003815181106149fd576149fd618d9c565b60200260200101819052506000614a1382615940565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614aa4906040805180820182526000808252602091820152815180830190925284518252808501908201529061648d565b614ab957856040516020016141129190618e78565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b13565b511590565b614c8757826020015115614bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614152565b8260c0015115614c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614152565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614ca057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614cfb90618f09565b935060ff1681518110614d1057614d10618d9c565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d619190618f28565b604051602081830303815290604052828280614d7c90618f09565b935060ff1681518110614d9157614d91618d9c565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614dde90618f09565b935060ff1681518110614df357614df3618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e4090618f09565b935060ff1681518110614e5557614e55618d9c565b60200260200101819052508760200151828280614e7190618f09565b935060ff1681518110614e8657614e86618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ed390618f09565b935060ff1681518110614ee857614ee8618d9c565b602090810291909101015287518282614f0081618f09565b935060ff1681518110614f1557614f15618d9c565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f6290618f09565b935060ff1681518110614f7757614f77618d9c565b6020026020010181905250614f8b466164ee565b8282614f9681618f09565b935060ff1681518110614fab57614fab618d9c565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614ff890618f09565b935060ff168151811061500d5761500d618d9c565b60200260200101819052508682828061502590618f09565b935060ff168151811061503a5761503a618d9c565b60209081029190910101528551156151615760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261508b81618f09565b935060ff16815181106150a0576150a0618d9c565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150f090899060040161891b565b600060405180830381865afa15801561510d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151359190810190618770565b828261514081618f09565b935060ff168151811061515557615155618d9c565b60200260200101819052505b8460200151156152315760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151aa81618f09565b935060ff16815181106151bf576151bf618d9c565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061520c90618f09565b935060ff168151811061522157615221618d9c565b60200260200101819052506153f8565b615269614b0e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152fc5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152ac81618f09565b935060ff16815181106152c1576152c1618d9c565b60200260200101819052508460a001516040516020016152e19190618dcb565b60405160208183030381529060405282828061520c90618f09565b8460c0015115801561533f57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261533d90511590565b155b156153f85760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261538381618f09565b935060ff168151811061539857615398618d9c565b60200260200101819052506153ac8861658e565b6040516020016153bc9190618dcb565b6040516020818303038152906040528282806153d790618f09565b935060ff16815181106153ec576153ec618d9c565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261542c90511590565b6154c15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261546f81618f09565b935060ff168151811061548457615484618d9c565b602002602001018190525084604001518282806154a090618f09565b935060ff16815181106154b5576154b5618d9c565b60200260200101819052505b6060850151156155e25760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261550a81618f09565b935060ff168151811061551f5761551f618d9c565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561558e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155b69190810190618770565b82826155c181618f09565b935060ff16815181106155d6576155d6618d9c565b60200260200101819052505b60e085015151156156895760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261562c81618f09565b935060ff168151811061564157615641618d9c565b602002602001018190525061565d8560e00151600001516164ee565b828261566881618f09565b935060ff168151811061567d5761567d618d9c565b60200260200101819052505b60e085015160200151156157335760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156d681618f09565b935060ff16815181106156eb576156eb618d9c565b60200260200101819052506157078560e00151602001516164ee565b828261571281618f09565b935060ff168151811061572757615727618d9c565b60200260200101819052505b60e085015160400151156157dd5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261578081618f09565b935060ff168151811061579557615795618d9c565b60200260200101819052506157b18560e00151604001516164ee565b82826157bc81618f09565b935060ff16815181106157d1576157d1618d9c565b60200260200101819052505b60e085015160600151156158875760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261582a81618f09565b935060ff168151811061583f5761583f618d9c565b602002602001018190525061585b8560e00151606001516164ee565b828261586681618f09565b935060ff168151811061587b5761587b618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158a5576158a56186a8565b6040519080825280602002602001820160405280156158d857816020015b60608152602001906001900390816158c35790505b50905060005b8260ff168160ff16101561593157838160ff168151811061590157615901618d9c565b6020026020010151828260ff168151811061591e5761591e618d9c565b60209081029190910101526001016158de565b5093505050505b949350505050565b6159676040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159ed91869101618f93565b600060405180830381865afa158015615a0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a329190810190618770565b90506000615a40868361707d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a7091906183ba565b6000604051808303816000875af1158015615a8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ab79190810190618fda565b805190915060030b15801590615ad05750602081015151155b8015615adf5750604081015151155b15614ab95781600081518110615af757615af7618d9c565b60200260200101516040516020016141129190619090565b60606000615b448560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b7b9082905b906171d2565b15615cd8576000615bf882615bf284615bec615bbe8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171f9565b9061725b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c5c9082906171d2565b15615cc657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cc3905b82906172e0565b90505b615ccf81617306565b9250505061403f565b8215615cf157848460405160200161411292919061927c565b505060408051602081019091526000815261403f565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d3157505050565b6000615d3e84848461736f565b90506000615d4b82615940565b602081015181519192509060030b158015615de75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615de790604080518082018252600080825260209182015281518083019092528451825280850190820152615b75565b15615df457505050505050565b60408201515115615e145781604001516040516020016141129190619323565b806040516020016141129190619381565b60606000615e5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ebf905b829061648d565b15615f2e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990839061790a565b617306565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f90905b8290617994565b60010361605d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff690615cbc565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f29905b83906172e0565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bc90615eb8565b156161f357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616124908390617a2e565b9050600081600183516161379190618840565b8151811061614757616147618d9c565b602002602001015190506161ea615f296161bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061790a565b95945050505050565b8260405160200161411291906193ec565b50919050565b6060600061623f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162a190615eb8565b156162af5761403f81617306565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261630e90615f89565b60010361637857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990616056565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d790615eb8565b156161f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061643f908390617a2e565b905060018151111561647b57806002825161645a9190618840565b8151811061646a5761646a618d9c565b602002602001015192505050919050565b508260405160200161411291906193ec565b8051825160009111156164a257506000613e8a565b815183516020850151600092916164b89161882d565b6164c29190618840565b9050826020015181036164d9576001915050613e8a565b82516020840151819020912014905092915050565b606060006164fb83617ad3565b600101905060008167ffffffffffffffff81111561651b5761651b6186a8565b6040519080825280601f01601f191660200182016040528015616545576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461654f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161661a905b8290617bb5565b1561665a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b990616613565b156166f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261675890616613565b1561679857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f790616613565b8061685c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685c90616613565b1561689c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fb90616613565b806169605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696090616613565b156169a057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ff90616613565b80616a645750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6490616613565b15616aa457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b0390616613565b80616b685750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b6890616613565b15616ba857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c0790616613565b15616c4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ca690616613565b15616ce657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d4590616613565b15616d8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616de490616613565b15616e2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e8390616613565b15616ec357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f2290616613565b80616f875750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f8790616613565b15616fc757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261702690616613565b1561706657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161411292906020016194ca565b60608060005b8451811015617108578185828151811061709f5761709f618d9c565b60200260200101516040516020016170b8929190618983565b6040516020818303038152906040529150600185516170d79190618840565b811461710057816040516020016170ee9190619633565b60405160208183030381529060405291505b600101617083565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617121579050509050838160008151811061714c5761714c618d9c565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171a0576171a0618d9c565b602002602001018190525081816002815181106171bf576171bf618d9c565b6020908102919091010152949350505050565b60208083015183518351928401516000936171f09291849190617bc9565b14159392505050565b6040805180820190915260008082526020820152600061722b8460000151856020015185600001518660200151617cda565b905083602001518161723d9190618840565b8451859061724c908390618840565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617280575081613e8a565b60208083015190840151600191146172a75750815160208481015190840151829020919020145b80156172d8578251845185906172be908390618840565b90525082516020850180516172d490839061882d565b9052505b509192915050565b60408051808201909152600080825260208201526172ff838383617dfa565b5092915050565b60606000826000015167ffffffffffffffff811115617327576173276186a8565b6040519080825280601f01601f191660200182016040528015617351576020820181803683370190505b50905060006020820190506172ff8185602001518660000151617ea5565b6060600061737b614338565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161739857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173f390618f09565b935060ff168151811061740857617408618d9c565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016174599190619674565b60405160208183030381529060405282828061747490618f09565b935060ff168151811061748957617489618d9c565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174d690618f09565b935060ff16815181106174eb576174eb618d9c565b6020026020010181905250826040516020016175079190618e37565b60405160208183030381529060405282828061752290618f09565b935060ff168151811061753757617537618d9c565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061758490618f09565b935060ff168151811061759957617599618d9c565b60200260200101819052506175ae8784617f1f565b82826175b981618f09565b935060ff16815181106175ce576175ce618d9c565b60209081029190910101528551511561767a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261762081618f09565b935060ff168151811061763557617635618d9c565b602002602001018190525061764e866000015184617f1f565b828261765981618f09565b935060ff168151811061766e5761766e618d9c565b60200260200101819052505b8560800151156176e85760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176c381618f09565b935060ff16815181106176d8576176d8618d9c565b602002602001018190525061774e565b841561774e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261772d81618f09565b935060ff168151811061774257617742618d9c565b60200260200101819052505b604086015151156177ea5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261779881618f09565b935060ff16815181106177ad576177ad618d9c565b602002602001018190525085604001518282806177c990618f09565b935060ff16815181106177de576177de618d9c565b60200260200101819052505b8560600151156178545760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261783381618f09565b935060ff168151811061784857617848618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617872576178726186a8565b6040519080825280602002602001820160405280156178a557816020015b60608152602001906001900390816178905790505b50905060005b8260ff168160ff1610156178fe57838160ff16815181106178ce576178ce618d9c565b6020026020010151828260ff16815181106178eb576178eb618d9c565b60209081029190910101526001016178ab565b50979650505050505050565b604080518082019091526000808252602082015281518351101561792f575081613e8a565b815183516020850151600092916179459161882d565b61794f9190618840565b60208401519091506001908214617970575082516020840151819020908220145b801561798b57835185518690617987908390618840565b9052505b50929392505050565b60008082600001516179b88560000151866020015186600001518760200151617cda565b6179c2919061882d565b90505b835160208501516179d6919061882d565b81116172ff57816179e6816196b9565b9250508260000151617a1d856020015183617a019190618840565b8651617a0d9190618840565b8386600001518760200151617cda565b617a27919061882d565b90506179c5565b60606000617a3c8484617994565b617a4790600161882d565b67ffffffffffffffff811115617a5f57617a5f6186a8565b604051908082528060200260200182016040528015617a9257816020015b6060815260200190600190039081617a7d5790505b50905060005b8151811015615d0757617aae615f2986866172e0565b828281518110617ac057617ac0618d9c565b6020908102919091010152600101617a98565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b48576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b6657662386f26fc10000830492506010015b6305f5e1008310617b7e576305f5e100830492506008015b6127108310617b9257612710830492506004015b60648310617ba4576064830492506002015b600a8310613e8a5760010192915050565b6000617bc18383617f5f565b159392505050565b600080858411617cd05760208411617c7c5760008415617c14576001617bf0866020618840565b617bfb9060086196d3565b617c069060026197d1565b617c109190618840565b1990505b8351811685617c23898961882d565b617c2d9190618840565b805190935082165b818114617c6757878411617c4f5787945050505050615938565b83617c59816197dd565b945050828451169050617c35565b617c71878561882d565b945050505050615938565b838320617c898588618840565b617c93908761882d565b91505b858210617cce57848220808203617cbb57617cb1868461882d565b9350505050615938565b617cc6600184618840565b925050617c96565b505b5092949350505050565b60008381868511617de55760208511617d945760008515617d26576001617d02876020618840565b617d0d9060086196d3565b617d189060026197d1565b617d229190618840565b1990505b84518116600087617d378b8b61882d565b617d419190618840565b855190915083165b828114617d8657818610617d6e57617d618b8b61882d565b9650505050505050615938565b85617d78816196b9565b965050838651169050617d49565b859650505050505050615938565b508383206000905b617da68689618840565b8211617de357858320808203617dc25783945050505050615938565b617dcd60018561882d565b9350508180617ddb906196b9565b925050617d9c565b505b617def878761882d565b979650505050505050565b60408051808201909152600080825260208201526000617e2c8560000151866020015186600001518760200151617cda565b602080870180519186019190915251909150617e489082618840565b835284516020860151617e5b919061882d565b8103617e6a5760008552617e9c565b83518351617e78919061882d565b85518690617e87908390618840565b9052508351617e96908261882d565b60208601525b50909392505050565b60208110617edd5781518352617ebc60208461882d565b9250617ec960208361882d565b9150617ed6602082618840565b9050617ea5565b6000198115617f0c576001617ef3836020618840565b617eff906101006197d1565b617f099190618840565b90505b9151835183169219169190911790915250565b60606000617f2d848461440b565b8051602080830151604051939450617f47939091016197f4565b60405160208183030381529060405291505092915050565b8151815160009190811115617f72575081515b6020808501519084015160005b8381101561802b5782518251808214617ffb576000196020871015617fda57600184617fac896020618840565b617fb6919061882d565b617fc19060086196d3565b617fcc9060026197d1565b617fd69190618840565b1990505b8181168382168181039114617ff8579750613e8a9650505050505050565b50505b61800660208661882d565b945061801360208561882d565b93505050602081618024919061882d565b9050617f7f565b5084518651614ab9919061984c565b610b678061986d83390190565b61106f8061a3d483390190565b611bb58061b44383390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180a46180a9565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180a46040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561815b5783516001600160a01b0316835260209384019390920191600101618134565b509095945050505050565b60005b83811015618181578181015183820152602001618169565b50506000910152565b600081518084526181a2816020860160208601618166565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618298577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261828284865161818a565b6020958601959094509290920191600101618248565b5091975050506020948501949290920191506001016181de565b50929695505050505050565b600081518084526020840193506020830160005b828110156183125781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182d2565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618388604088018261818a565b90506020820151915086810360208801526183a381836182be565b965050506020938401939190910190600101618344565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261841c85835161818a565b945060209384019391909101906001016183e2565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184b260408701826182be565b9550506020938401939190910190600101618459565b80516001600160a01b03811681146184df57600080fd5b919050565b6000602082840312156184f657600080fd5b61403f826184c8565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185da60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561860657600080fd5b8151801515811461403f57600080fd5b60006020828403121561862857600080fd5b5051919050565b600181811c9082168061864357607f821691505b602082108103616204577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561868f57600080fd5b618698836184c8565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186fa576186fa6186a8565b60405290565b60008067ffffffffffffffff84111561871b5761871b6186a8565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561874a5761874a6186a8565b60405283815290508082840185101561876257600080fd5b615d07846020830185618166565b60006020828403121561878257600080fd5b815167ffffffffffffffff81111561879957600080fd5b8201601f810184136187aa57600080fd5b613e8684825160208401618700565b6000602082840312156187cb57600080fd5b815160ff8116811461403f57600080fd5b6040815260006187ef604083018561818a565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e8a57613e8a6187fe565b81810381811115613e8a57613e8a6187fe565b604081526000618866604083018561818a565b828103602084015261403b818561818a565b6001600160a01b0383168152604060208201526000615938604083018461818a565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d281601a850160208801618166565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161890f81601c840160208801618166565b01601c01949350505050565b60208152600061403f602083018461818a565b600082601f83011261893f57600080fd5b61403f83835160208501618700565b60006020828403121561896057600080fd5b815167ffffffffffffffff81111561897757600080fd5b613e868482850161892e565b60008351618995818460208801618166565b8351908301906189a9818360208801618166565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189ea81601a850160208801618166565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a27816033840160208801618166565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061403f608083018461818a565b60008551618ab6818460208a01618166565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618af0816001840160208a01618166565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b2e816002840160208901618166565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b70816002840160208801618166565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bbb604083018461818a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c3281601f850160208701618166565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c9f604083018461818a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cf1604083018461818a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d68816014850160208701618166565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e03816001850160208701618166565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e49818460208701618166565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618efc81604b850160208701618166565b91909101604b0192915050565b600060ff821660ff8103618f1f57618f1f6187fe565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061403f608083018461818a565b600060208284031215618fec57600080fd5b815167ffffffffffffffff81111561900357600080fd5b82016060818503121561901557600080fd5b61901d6186d7565b81518060030b811461902e57600080fd5b8152602082015167ffffffffffffffff81111561904a57600080fd5b6190568682850161892e565b602083015250604082015167ffffffffffffffff81111561907657600080fd5b6190828682850161892e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ee816021850160208701618166565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192da816021850160208801618166565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161931781602e840160208801618166565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193df816022850160208701618166565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161942481600e850160208701618166565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619502816018850160208801618166565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161953f81601c840160208801618166565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619645818460208701618166565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196ac81601c850160208701618166565b91909101601c0192915050565b600060001982036196cc576196cc6187fe565b5060010190565b8082028115828204841417613e8a57613e8a6187fe565b6001815b600184111561972557808504811115619709576197096187fe565b600184161561971757908102905b60019390931c9280026196ee565b935093915050565b60008261973c57506001613e8a565b8161974957506000613e8a565b816001811461975f576002811461976957619785565b6001915050613e8a565b60ff84111561977a5761977a6187fe565b50506001821b613e8a565b5060208310610133831016604e8410600b84101617156197a8575081810a613e8a565b6197b560001984846196ea565b80600019048211156197c9576197c96187fe565b029392505050565b600061403f838361972d565b6000816197ec576197ec6187fe565b506000190190565b60008351619806818460208801618166565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619840816001840160208801618166565b01600101949350505050565b81810360008312801583831316838312821617156172ff576172ff6187fe56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a2646970667358221220df6f45d497f808535bc117f50680b0d120d3f6b1c64ebfe9be8c022029c100bf64736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. diff --git a/v2/src/evm/GatewayEVM.sol b/v2/src/evm/GatewayEVM.sol index e53e11b1..db1a8507 100644 --- a/v2/src/evm/GatewayEVM.sol +++ b/v2/src/evm/GatewayEVM.sol @@ -96,7 +96,16 @@ contract GatewayEVM is /// @dev This function can only be called by the TSS address and it is payable. /// @param destination Address to call. /// @param data Calldata to pass to the call. - function executeRevert(address destination, bytes calldata data) public payable onlyRole(TSS_ROLE) whenNotPaused nonReentrant { + function executeRevert( + address destination, + bytes calldata data + ) + public + payable + onlyRole(TSS_ROLE) + whenNotPaused + nonReentrant + { if (destination == address(0)) revert ZeroAddress(); (bool success,) = destination.call{ value: msg.value }(""); if (!success) revert ExecutionFailed(); diff --git a/v2/src/evm/interfaces/IGatewayEVM.sol b/v2/src/evm/interfaces/IGatewayEVM.sol index 640584da..6a702b96 100644 --- a/v2/src/evm/interfaces/IGatewayEVM.sol +++ b/v2/src/evm/interfaces/IGatewayEVM.sol @@ -119,12 +119,7 @@ interface IGatewayEVM { /// @param amount Amount of tokens to deposit. /// @param asset Address of the ERC20 token. /// @param payload Calldata to pass to the call. - function depositAndCall( - address receiver, - uint256 amount, - address asset, - bytes calldata payload - ) external; + function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external; /// @notice Calls an omnichain smart contract without asset transfer. /// @param receiver Address of the receiver. diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index 3f874c61..b0ecb407 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -180,7 +180,6 @@ contract ZRC20Test is Test, ZRC20Errors { vm.prank(fungibleModule); zrc20.updateProtocolFlatFee(protocolFlatFee); - uint256 balanceStart = zrc20.balanceOf(owner); assertEq(100_000, balanceStart); diff --git a/v2/typechain-types/ERC20Custody.ts b/v2/typechain-types/ERC20Custody.ts index f4bfcc0a..6f4845ed 100644 --- a/v2/typechain-types/ERC20Custody.ts +++ b/v2/typechain-types/ERC20Custody.ts @@ -38,7 +38,6 @@ export interface ERC20CustodyInterface extends Interface { | "renounceRole" | "revokeRole" | "supportsInterface" - | "tssAddress" | "unpause" | "withdraw" | "withdrawAndCall" @@ -96,10 +95,6 @@ export interface ERC20CustodyInterface extends Interface { functionFragment: "supportsInterface", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", @@ -144,7 +139,6 @@ export interface ERC20CustodyInterface extends Interface { functionFragment: "supportsInterface", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( @@ -394,8 +388,6 @@ export interface ERC20Custody extends BaseContract { "view" >; - tssAddress: TypedContractMethod<[], [string], "view">; - unpause: TypedContractMethod<[], [void], "nonpayable">; withdraw: TypedContractMethod< @@ -482,9 +474,6 @@ export interface ERC20Custody extends BaseContract { getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; - getFunction( - nameOrSignature: "tssAddress" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "unpause" ): TypedContractMethod<[], [void], "nonpayable">; diff --git a/v2/typechain-types/ERC20CustodyEchidnaTest.ts b/v2/typechain-types/ERC20CustodyEchidnaTest.ts index f9701fff..a0bd66ef 100644 --- a/v2/typechain-types/ERC20CustodyEchidnaTest.ts +++ b/v2/typechain-types/ERC20CustodyEchidnaTest.ts @@ -41,7 +41,6 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { | "supportsInterface" | "testERC20" | "testWithdrawAndCall" - | "tssAddress" | "unpause" | "withdraw" | "withdrawAndCall" @@ -108,10 +107,6 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { functionFragment: "testWithdrawAndCall", values: [AddressLike, BigNumberish, BytesLike] ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", @@ -165,7 +160,6 @@ export interface ERC20CustodyEchidnaTestInterface extends Interface { functionFragment: "testWithdrawAndCall", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( @@ -425,8 +419,6 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { "nonpayable" >; - tssAddress: TypedContractMethod<[], [string], "view">; - unpause: TypedContractMethod<[], [void], "nonpayable">; withdraw: TypedContractMethod< @@ -526,9 +518,6 @@ export interface ERC20CustodyEchidnaTest extends BaseContract { [void], "nonpayable" >; - getFunction( - nameOrSignature: "tssAddress" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "unpause" ): TypedContractMethod<[], [void], "nonpayable">; diff --git a/v2/typechain-types/GatewayEVM.ts b/v2/typechain-types/GatewayEVM.ts index 0c74f929..a22537b1 100644 --- a/v2/typechain-types/GatewayEVM.ts +++ b/v2/typechain-types/GatewayEVM.ts @@ -642,7 +642,7 @@ export interface GatewayEVM extends BaseContract { >; initialize: TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], + [tssAddress_: AddressLike, zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; @@ -677,13 +677,13 @@ export interface GatewayEVM extends BaseContract { >; setConnector: TypedContractMethod< - [_zetaConnector: AddressLike], + [zetaConnector_: AddressLike], [void], "nonpayable" >; setCustody: TypedContractMethod< - [_custody: AddressLike], + [custody_: AddressLike], [void], "nonpayable" >; @@ -812,7 +812,7 @@ export interface GatewayEVM extends BaseContract { getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], + [tssAddress_: AddressLike, zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; @@ -853,10 +853,10 @@ export interface GatewayEVM extends BaseContract { >; getFunction( nameOrSignature: "setConnector" - ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; + ): TypedContractMethod<[zetaConnector_: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "setCustody" - ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + ): TypedContractMethod<[custody_: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; diff --git a/v2/typechain-types/GatewayEVMEchidnaTest.ts b/v2/typechain-types/GatewayEVMEchidnaTest.ts index 63ae6ddc..9ee32cd7 100644 --- a/v2/typechain-types/GatewayEVMEchidnaTest.ts +++ b/v2/typechain-types/GatewayEVMEchidnaTest.ts @@ -665,7 +665,7 @@ export interface GatewayEVMEchidnaTest extends BaseContract { >; initialize: TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], + [tssAddress_: AddressLike, zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; @@ -700,13 +700,13 @@ export interface GatewayEVMEchidnaTest extends BaseContract { >; setConnector: TypedContractMethod< - [_zetaConnector: AddressLike], + [zetaConnector_: AddressLike], [void], "nonpayable" >; setCustody: TypedContractMethod< - [_custody: AddressLike], + [custody_: AddressLike], [void], "nonpayable" >; @@ -846,7 +846,7 @@ export interface GatewayEVMEchidnaTest extends BaseContract { getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_tssAddress: AddressLike, _zetaToken: AddressLike, _admin: AddressLike], + [tssAddress_: AddressLike, zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; @@ -887,10 +887,10 @@ export interface GatewayEVMEchidnaTest extends BaseContract { >; getFunction( nameOrSignature: "setConnector" - ): TypedContractMethod<[_zetaConnector: AddressLike], [void], "nonpayable">; + ): TypedContractMethod<[zetaConnector_: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "setCustody" - ): TypedContractMethod<[_custody: AddressLike], [void], "nonpayable">; + ): TypedContractMethod<[custody_: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; diff --git a/v2/typechain-types/GatewayZEVM.ts b/v2/typechain-types/GatewayZEVM.ts index 8a35b172..68d5989d 100644 --- a/v2/typechain-types/GatewayZEVM.ts +++ b/v2/typechain-types/GatewayZEVM.ts @@ -592,7 +592,7 @@ export interface GatewayZEVM extends BaseContract { >; initialize: TypedContractMethod< - [_zetaToken: AddressLike, _admin: AddressLike], + [zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; @@ -774,7 +774,7 @@ export interface GatewayZEVM extends BaseContract { getFunction( nameOrSignature: "initialize" ): TypedContractMethod< - [_zetaToken: AddressLike, _admin: AddressLike], + [zetaToken_: AddressLike, admin_: AddressLike], [void], "nonpayable" >; diff --git a/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts index 6ee17425..7aff294c 100644 --- a/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts +++ b/v2/typechain-types/IGatewayEVM.sol/IGatewayEVM.ts @@ -23,13 +23,46 @@ import type { export interface IGatewayEVMInterface extends Interface { getFunction( - nameOrSignature: "execute" | "executeWithERC20" | "revertWithERC20" + nameOrSignature: + | "call" + | "deposit(address)" + | "deposit(address,uint256,address)" + | "depositAndCall(address,bytes)" + | "depositAndCall(address,uint256,address,bytes)" + | "execute" + | "executeRevert" + | "executeWithERC20" + | "revertWithERC20" ): FunctionFragment; + encodeFunctionData( + functionFragment: "call", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "deposit(address)", + values: [AddressLike] + ): string; + encodeFunctionData( + functionFragment: "deposit(address,uint256,address)", + values: [AddressLike, BigNumberish, AddressLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,bytes)", + values: [AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + values: [AddressLike, BigNumberish, AddressLike, BytesLike] + ): string; encodeFunctionData( functionFragment: "execute", values: [AddressLike, BytesLike] ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [AddressLike, BytesLike] + ): string; encodeFunctionData( functionFragment: "executeWithERC20", values: [AddressLike, AddressLike, BigNumberish, BytesLike] @@ -39,7 +72,28 @@ export interface IGatewayEVMInterface extends Interface { values: [AddressLike, AddressLike, BigNumberish, BytesLike] ): string; + decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deposit(address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deposit(address,uint256,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall(address,uint256,address,bytes)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "executeWithERC20", data: BytesLike @@ -93,12 +147,53 @@ export interface IGatewayEVM extends BaseContract { event?: TCEvent ): Promise; + call: TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + + "deposit(address)": TypedContractMethod< + [receiver: AddressLike], + [void], + "payable" + >; + + "deposit(address,uint256,address)": TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + + "depositAndCall(address,bytes)": TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + + "depositAndCall(address,uint256,address,bytes)": TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; + execute: TypedContractMethod< [destination: AddressLike, data: BytesLike], [string], "payable" >; + executeRevert: TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; + executeWithERC20: TypedContractMethod< [ token: AddressLike, @@ -125,6 +220,42 @@ export interface IGatewayEVM extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "call" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "deposit(address)" + ): TypedContractMethod<[receiver: AddressLike], [void], "payable">; + getFunction( + nameOrSignature: "deposit(address,uint256,address)" + ): TypedContractMethod< + [receiver: AddressLike, amount: BigNumberish, asset: AddressLike], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,bytes)" + ): TypedContractMethod< + [receiver: AddressLike, payload: BytesLike], + [void], + "payable" + >; + getFunction( + nameOrSignature: "depositAndCall(address,uint256,address,bytes)" + ): TypedContractMethod< + [ + receiver: AddressLike, + amount: BigNumberish, + asset: AddressLike, + payload: BytesLike + ], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "execute" ): TypedContractMethod< @@ -132,6 +263,13 @@ export interface IGatewayEVM extends BaseContract { [string], "payable" >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [destination: AddressLike, data: BytesLike], + [void], + "payable" + >; getFunction( nameOrSignature: "executeWithERC20" ): TypedContractMethod< diff --git a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts index 1c7f0d9a..09a96a0e 100644 --- a/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts +++ b/v2/typechain-types/IGatewayZEVM.sol/IGatewayZEVM.ts @@ -33,13 +33,28 @@ export type ZContextStructOutput = [ chainID: bigint ] & { origin: string; sender: string; chainID: bigint }; +export type RevertContextStruct = { + origin: BytesLike; + sender: AddressLike; + chainID: BigNumberish; +}; + +export type RevertContextStructOutput = [ + origin: string, + sender: string, + chainID: bigint +] & { origin: string; sender: string; chainID: bigint }; + export interface IGatewayZEVMInterface extends Interface { getFunction( nameOrSignature: | "call" | "deposit" - | "depositAndCall" + | "depositAndCall((bytes,address,uint256),uint256,address,bytes)" + | "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)" + | "depositAndRevert" | "execute" + | "executeRevert" | "withdraw(bytes,uint256,address)" | "withdraw(uint256,uint256)" | "withdrawAndCall(bytes,uint256,address,bytes)" @@ -55,13 +70,37 @@ export interface IGatewayZEVMInterface extends Interface { values: [AddressLike, BigNumberish, AddressLike] ): string; encodeFunctionData( - functionFragment: "depositAndCall", + functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", + values: [ZContextStruct, BigNumberish, AddressLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] ): string; + encodeFunctionData( + functionFragment: "depositAndRevert", + values: [ + RevertContextStruct, + AddressLike, + BigNumberish, + AddressLike, + BytesLike + ] + ): string; encodeFunctionData( functionFragment: "execute", values: [ZContextStruct, AddressLike, BigNumberish, AddressLike, BytesLike] ): string; + encodeFunctionData( + functionFragment: "executeRevert", + values: [ + RevertContextStruct, + AddressLike, + BigNumberish, + AddressLike, + BytesLike + ] + ): string; encodeFunctionData( functionFragment: "withdraw(bytes,uint256,address)", values: [BytesLike, BigNumberish, AddressLike] @@ -82,10 +121,22 @@ export interface IGatewayZEVMInterface extends Interface { decodeFunctionResult(functionFragment: "call", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "depositAndCall", + functionFragment: "depositAndCall((bytes,address,uint256),uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositAndRevert", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "execute", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRevert", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "withdraw(bytes,uint256,address)", data: BytesLike @@ -159,7 +210,18 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; - depositAndCall: TypedContractMethod< + "depositAndCall((bytes,address,uint256),uint256,address,bytes)": TypedContractMethod< + [ + context: ZContextStruct, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + + "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)": TypedContractMethod< [ context: ZContextStruct, zrc20: AddressLike, @@ -171,6 +233,18 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; + depositAndRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + execute: TypedContractMethod< [ context: ZContextStruct, @@ -183,6 +257,18 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; + executeRevert: TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + "withdraw(bytes,uint256,address)": TypedContractMethod< [receiver: BytesLike, amount: BigNumberish, zrc20: AddressLike], [void], @@ -231,7 +317,19 @@ export interface IGatewayZEVM extends BaseContract { "nonpayable" >; getFunction( - nameOrSignature: "depositAndCall" + nameOrSignature: "depositAndCall((bytes,address,uint256),uint256,address,bytes)" + ): TypedContractMethod< + [ + context: ZContextStruct, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; + getFunction( + nameOrSignature: "depositAndCall((bytes,address,uint256),address,uint256,address,bytes)" ): TypedContractMethod< [ context: ZContextStruct, @@ -243,6 +341,19 @@ export interface IGatewayZEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "depositAndRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "execute" ): TypedContractMethod< @@ -256,6 +367,19 @@ export interface IGatewayZEVM extends BaseContract { [void], "nonpayable" >; + getFunction( + nameOrSignature: "executeRevert" + ): TypedContractMethod< + [ + context: RevertContextStruct, + zrc20: AddressLike, + amount: BigNumberish, + target: AddressLike, + message: BytesLike + ], + [void], + "nonpayable" + >; getFunction( nameOrSignature: "withdraw(bytes,uint256,address)" ): TypedContractMethod< diff --git a/v2/typechain-types/ZetaConnectorBase.ts b/v2/typechain-types/ZetaConnectorBase.ts index f8abb37a..bd16e57e 100644 --- a/v2/typechain-types/ZetaConnectorBase.ts +++ b/v2/typechain-types/ZetaConnectorBase.ts @@ -39,7 +39,6 @@ export interface ZetaConnectorBaseInterface extends Interface { | "renounceRole" | "revokeRole" | "supportsInterface" - | "tssAddress" | "unpause" | "withdraw" | "withdrawAndCall" @@ -102,10 +101,6 @@ export interface ZetaConnectorBaseInterface extends Interface { functionFragment: "supportsInterface", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", @@ -155,7 +150,6 @@ export interface ZetaConnectorBaseInterface extends Interface { functionFragment: "supportsInterface", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( @@ -393,8 +387,6 @@ export interface ZetaConnectorBase extends BaseContract { "view" >; - tssAddress: TypedContractMethod<[], [string], "view">; - unpause: TypedContractMethod<[], [void], "nonpayable">; withdraw: TypedContractMethod< @@ -486,9 +478,6 @@ export interface ZetaConnectorBase extends BaseContract { getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; - getFunction( - nameOrSignature: "tssAddress" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "unpause" ): TypedContractMethod<[], [void], "nonpayable">; diff --git a/v2/typechain-types/ZetaConnectorNative.ts b/v2/typechain-types/ZetaConnectorNative.ts index 2e795f63..870778e9 100644 --- a/v2/typechain-types/ZetaConnectorNative.ts +++ b/v2/typechain-types/ZetaConnectorNative.ts @@ -39,7 +39,6 @@ export interface ZetaConnectorNativeInterface extends Interface { | "renounceRole" | "revokeRole" | "supportsInterface" - | "tssAddress" | "unpause" | "withdraw" | "withdrawAndCall" @@ -102,10 +101,6 @@ export interface ZetaConnectorNativeInterface extends Interface { functionFragment: "supportsInterface", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", @@ -155,7 +150,6 @@ export interface ZetaConnectorNativeInterface extends Interface { functionFragment: "supportsInterface", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( @@ -393,8 +387,6 @@ export interface ZetaConnectorNative extends BaseContract { "view" >; - tssAddress: TypedContractMethod<[], [string], "view">; - unpause: TypedContractMethod<[], [void], "nonpayable">; withdraw: TypedContractMethod< @@ -486,9 +478,6 @@ export interface ZetaConnectorNative extends BaseContract { getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; - getFunction( - nameOrSignature: "tssAddress" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "unpause" ): TypedContractMethod<[], [void], "nonpayable">; diff --git a/v2/typechain-types/ZetaConnectorNonNative.ts b/v2/typechain-types/ZetaConnectorNonNative.ts index e38595f5..c24d39ac 100644 --- a/v2/typechain-types/ZetaConnectorNonNative.ts +++ b/v2/typechain-types/ZetaConnectorNonNative.ts @@ -41,7 +41,6 @@ export interface ZetaConnectorNonNativeInterface extends Interface { | "revokeRole" | "setMaxSupply" | "supportsInterface" - | "tssAddress" | "unpause" | "withdraw" | "withdrawAndCall" @@ -110,10 +109,6 @@ export interface ZetaConnectorNonNativeInterface extends Interface { functionFragment: "supportsInterface", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "tssAddress", - values?: undefined - ): string; encodeFunctionData(functionFragment: "unpause", values?: undefined): string; encodeFunctionData( functionFragment: "withdraw", @@ -168,7 +163,6 @@ export interface ZetaConnectorNonNativeInterface extends Interface { functionFragment: "supportsInterface", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tssAddress", data: BytesLike): Result; decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; decodeFunctionResult( @@ -415,7 +409,7 @@ export interface ZetaConnectorNonNative extends BaseContract { >; setMaxSupply: TypedContractMethod< - [_maxSupply: BigNumberish], + [maxSupply_: BigNumberish], [void], "nonpayable" >; @@ -426,8 +420,6 @@ export interface ZetaConnectorNonNative extends BaseContract { "view" >; - tssAddress: TypedContractMethod<[], [string], "view">; - unpause: TypedContractMethod<[], [void], "nonpayable">; withdraw: TypedContractMethod< @@ -521,13 +513,10 @@ export interface ZetaConnectorNonNative extends BaseContract { >; getFunction( nameOrSignature: "setMaxSupply" - ): TypedContractMethod<[_maxSupply: BigNumberish], [void], "nonpayable">; + ): TypedContractMethod<[maxSupply_: BigNumberish], [void], "nonpayable">; getFunction( nameOrSignature: "supportsInterface" ): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; - getFunction( - nameOrSignature: "tssAddress" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "unpause" ): TypedContractMethod<[], [void], "nonpayable">; diff --git a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts index 48bd1e82..9ad32d35 100644 --- a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts @@ -257,19 +257,6 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, - { - type: "function", - name: "tssAddress", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "unpause", @@ -626,7 +613,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600580546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010481905261012452606460c090815261014460405260e080516001600160e01b0390811663c0c53b8b60e01b1790915261007792919061027f16565b600680546001600160a01b03929092166001600160a01b03199283168117909155600780549092161790553480156100ae57600080fd5b5060075460055460016000556002805460ff191690556001600160a01b039182169116808215806100e657506001600160a01b038216155b156101045760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b03191691841691909117905561014e60008261029e565b506101797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261029e565b506101a47f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361029e565b505050506040516101b49061382a565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015610206573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617815560075460405163ae7a3a6f60e01b815230928101929092529091169063ae7a3a6f90602401600060405180830381600087803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b505050506148ab565b6000610289613837565b610294848483610331565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166103295760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610298565b506000610298565b60008061033e85846103ad565b90506103a26040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161038c929190613940565b60408051601f19818403018152919052856103b9565b9150505b9392505050565b60006103a683836103ed565b60c081015151600090156103e3576103dc84848460c0015161040e60201b60201c565b90506103a6565b6103dc8484610587565b60006103f98383610654565b6103a6838360200151846103b960201b60201c565b600080610419610664565b9050600061042786836106fe565b905060006104448260600151836020015185610b2160201b60201c565b9050600061045483838989610cd6565b9050600061046182611952565b602081015181519192509060030b156104ba5789826040015160405160200161048b929190613964565b60408051601f198184030181529082905262461bcd60e51b82526104b1916004016139ca565b60405180910390fd5b60006105036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611ae960201b60201c565b60405163c6ce059d60e01b8152909150600080516020616ad08339815191529063c6ce059d906105379084906004016139ca565b602060405180830381865afa158015610554573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057891906139dd565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616ad083398151915290638d1cc925906105bd9087906004016139ca565b600060405180830381865afa1580156105da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106029190810190613ad2565b90506000610631828560405160200161061c929190613b06565b60408051601f19818403018152919052611c89565b90506001600160a01b03811661029457848460405160200161048b929190613b35565b61066082826000611c9c565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616ad083398151915291829063d145736c906106b2908490600401613bc4565b600060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f79190810190613bf9565b9250505090565b6107306040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616ad083398151915290506107756040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61077e85611d76565b6020820152600061078e86611fcb565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f89190810190613bf9565b868385602001516040516020016108129493929190613c41565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108519085906004016139ca565b600060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108969190810190613bf9565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108c5908490600401613cd9565b602060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190613d12565b61091b578160405160200161048b9190613d34565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610947908490600401613dab565b600060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098c9190810190613bf9565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f6906109ba908490600401613df1565b602060405180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613d12565b15610a77576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a2c908490600401613df1565b600060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a719190810190613bf9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a9c9190613e32565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610ac8929190613e8d565b600060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b0d9190810190613bf9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b3d579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b8457610b84613eb2565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610bbe57610bbe613eb2565b602002602001018190525084604051602001610bda9190613ec8565b60405160208183030381529060405281600281518110610bfc57610bfc613eb2565b602002602001018190525082604051602001610c189190613efd565b60405160208183030381529060405281600381518110610c3a57610c3a613eb2565b60209081029190910101526000610c5082611952565b9050600081602001519050610cb7610c8a60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061217b565b610ccc578560405160200161048b9190613f2c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616ad08339815191529015610d20565b511590565b610e3c57826020015115610db05760405162461bcd60e51b81526020600482015260586024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016104b1565b8260c0015115610e3c5760405162461bcd60e51b81526020600482015260536024820152600080516020616af083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016104b1565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e555790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e9690613fc1565b935060ff1681518110610eab57610eab613eb2565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610eec9190613fe0565b604051602081830303815290604052828280610f0790613fc1565b935060ff1681518110610f1c57610f1c613eb2565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f5290613fc1565b935060ff1681518110610f6757610f67613eb2565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610fa590613fc1565b935060ff1681518110610fba57610fba613eb2565b60200260200101819052508760200151828280610fd690613fc1565b935060ff1681518110610feb57610feb613eb2565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061102990613fc1565b935060ff168151811061103e5761103e613eb2565b60209081029190910101528751828261105681613fc1565b935060ff168151811061106b5761106b613eb2565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806110a490613fc1565b935060ff16815181106110b9576110b9613eb2565b60209081029190910101526110cd466121dc565b82826110d881613fc1565b935060ff16815181106110ed576110ed613eb2565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061112c90613fc1565b935060ff168151811061114157611141613eb2565b60200260200101819052508682828061115990613fc1565b935060ff168151811061116e5761116e613eb2565b602090810291909101015285511561127c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111bf81613fc1565b935060ff16815181106111d4576111d4613eb2565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d9061120b9089906004016139ca565b600060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112509190810190613bf9565b828261125b81613fc1565b935060ff168151811061127057611270613eb2565b60200260200101819052505b846020015115611329576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826112ba81613fc1565b935060ff16815181106112cf576112cf613eb2565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b81525082828061130490613fc1565b935060ff168151811061131957611319613eb2565b6020026020010181905250611490565b61133f610d1b8660a0015161214e60201b60201c565b6113c25760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261137281613fc1565b935060ff168151811061138757611387613eb2565b60200260200101819052508460a001516040516020016113a79190613ec8565b60405160208183030381529060405282828061130490613fc1565b8460c001511580156113e757506113e5610d1b896040015161214e60201b60201c565b155b156114905760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261141b81613fc1565b935060ff168151811061143057611430613eb2565b60209081029190910101526114448861226e565b6040516020016114549190613ec8565b60405160208183030381529060405282828061146f90613fc1565b935060ff168151811061148457611484613eb2565b60200260200101819052505b6114a6610d1b866040015161214e60201b60201c565b6115295760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114d781613fc1565b935060ff16815181106114ec576114ec613eb2565b6020026020010181905250846040015182828061150890613fc1565b935060ff168151811061151d5761151d613eb2565b60200260200101819052505b60608501511561161a576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261155b81613fc1565b935060ff168151811061157057611570613eb2565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ee9190810190613bf9565b82826115f981613fc1565b935060ff168151811061160e5761160e613eb2565b60200260200101819052505b60e085015151156116ac5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261165181613fc1565b935060ff168151811061166657611666613eb2565b602090810291909101015260e085015151611680906121dc565b828261168b81613fc1565b935060ff16815181106116a0576116a0613eb2565b60200260200101819052505b60e085015160200151156117495760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116e681613fc1565b935060ff16815181106116fb576116fb613eb2565b602002602001018190525061171d8560e00151602001516121dc60201b60201c565b828261172881613fc1565b935060ff168151811061173d5761173d613eb2565b60200260200101819052505b60e085015160400151156117ea5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261178781613fc1565b935060ff168151811061179c5761179c613eb2565b60200260200101819052506117be8560e00151604001516121dc60201b60201c565b82826117c981613fc1565b935060ff16815181106117de576117de613eb2565b60200260200101819052505b60e0850151606001511561189a5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261183781613fc1565b935060ff168151811061184c5761184c613eb2565b602002602001018190525061186e8560e00151606001516121dc60201b60201c565b828261187981613fc1565b935060ff168151811061188e5761188e613eb2565b60200260200101819052505b60008160ff166001600160401b038111156118b7576118b7613a06565b6040519080825280602002602001820160405280156118ea57816020015b60608152602001906001900390816118d55790505b50905060005b8260ff168160ff16101561194357838160ff168151811061191357611913613eb2565b6020026020010151828260ff168151811061193057611930613eb2565b60209081029190910101526001016118f0565b5093505050505b949350505050565b6119796040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616ad083398151915292600091849163d145736c916119c791869101614037565b600060405180830381865afa1580156119e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a0c9190810190613bf9565b90506000611a1a8683612924565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a4a919061407e565b6000604051808303816000875af1158015611a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a9191908101906140e3565b805190915060030b15801590611aaa5750602081015151155b8015611ab95750604081015151155b15610ccc5781600081518110611ad157611ad1613eb2565b602002602001015160405160200161048b9190614196565b60606000611b1e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b559082905b90612a5e565b15611c52576000611bd282611bcc81611bc6611b988a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a85565b90612ae2565b9050611c06611bff604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612a5e565b15611c4057611c3d611c36604051806040016040528060018152602001600560f91b81525061214e60201b60201c565b8290612b67565b90505b611c4981612b8d565b925050506103a6565b8215611c6b57848460405160200161048b929190614366565b50506040805160208101909152600081526103a6565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611cab57505050565b6000611cb8848484612bf2565b90506000611cc582611952565b602081015181519192509060030b158015611d385750611d38611d0c604051806040016040528060078152602001665355434345535360c81b81525061214e60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b4f565b15611d4557505050505050565b60408201515115611d6557816040015160405160200161048b91906143e1565b8060405160200161048b919061442b565b60606000611dab8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611de2611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b829061217b565b15611e24576103a6611e1f611e18604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b8390613105565b612b8d565b611e56611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b829061318f565b600103611ebe57611e88611c36604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b506103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b8390612b67565b611eed611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba576000611f2582611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b613224565b905060008160018351611f38919061447b565b81518110611f4857611f48613eb2565b60200260200101519050611fb1611e1f611f8460405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290613105565b95945050505050565b8260405160200161048b919061448e565b606060006120008360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612030611ddb604051806040016040528060048152602001630b9cdbdb60e21b81525061214e60201b60201c565b1561203e576103a681612b8d565b612069611e4f604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b60010361209e576103a6611e1f611eb7604051806040016040528060018152602001601d60f91b81525061214e60201b60201c565b6120cd611ddb60405180604001604052806005815260200164173539b7b760d91b81525061214e60201b60201c565b15611fba57600061210082611f20604051806040016040528060018152602001602f60f81b81525061214e60201b60201c565b905060018151111561213c57806002825161211b919061447b565b8151811061212b5761212b613eb2565b602002602001015192505050919050565b508260405160200161048b919061448e565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111561219057506000610298565b815183516020850151600092916121a691614548565b6121b0919061447b565b9050826020015181036121c7576001915050610298565b82516020840151819020912014905092915050565b606060006121e9836132c8565b60010190506000816001600160401b0381111561220857612208613a06565b6040519080825280601f01601f191660200182016040528015612232576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461223c57509392505050565b60606000612285836040015161214e60201b60201c565b90506122c26122bb6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061214e60201b60201c565b82906133aa565b156122e95750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61231c6122bb60405180604001604052806009815260200168556e6c6963656e736560b81b81525061214e60201b60201c565b15612348575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b6123756122bb6040518060400160405280600381526020016213525560ea1b81525061214e60201b60201c565b1561239b57505060408051808201909152600381526213525560ea1b6020820152919050565b6123d16122bb6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061214e60201b60201c565b8061241157506124116122bb6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061214e60201b60201c565b1561243d57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b6124736122bb6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061214e60201b60201c565b806124b357506124b36122bb6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061214e60201b60201c565b156124df575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6125166122bb6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061214e60201b60201c565b8061255757506125576122bb604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061214e60201b60201c565b1561258657505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125bd6122bb6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b806125fe57506125fe6122bb604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b1561262b57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b6126616122bb6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061214e60201b60201c565b1561269057505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126c66122bb6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061214e60201b60201c565b156126f557505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b6127266122bb6040518060400160405280600781526020016604d504c2d322e360cc1b81525061214e60201b60201c565b1561275057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b6127816122bb6040518060400160405280600781526020016604f534c2d332e360cc1b81525061214e60201b60201c565b156127ab57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127df6122bb6040518060400160405280600a81526020016904170616368652d322e360b41b81525061214e60201b60201c565b1561280c57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6128436122bb6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061214e60201b60201c565b8061288457506128846122bb6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061214e60201b60201c565b156128b157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128e36122bb604051806040016040528060088152602001674255534c2d312e3160c01b81525061214e60201b60201c565b1561290d57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161048b929060200161455b565b60608060005b84518110156129af578185828151811061294657612946613eb2565b602002602001015160405160200161295f929190613b06565b60405160208183030381529060405291506001855161297e919061447b565b81146129a7578160405160200161299591906146ab565b60405160208183030381529060405291505b60010161292a565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129c857905050905083816000815181106129f3576129f3613eb2565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a2c57612a2c613eb2565b60200260200101819052508181600281518110612a4b57612a4b613eb2565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a7c92918491906133be565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612ab293906134cf565b9050836020015181612ac4919061447b565b84518590612ad390839061447b565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612b07575081610298565b6020808301519084015160019114612b2e5750815160208481015190840151829020919020145b8015612b5f57825184518590612b4590839061447b565b9052508251602085018051612b5b908390614548565b9052505b509192915050565b6040805180820190915260008082526020820152612b868383836135ef565b5092915050565b6060600082600001516001600160401b03811115612bad57612bad613a06565b6040519080825280601f01601f191660200182016040528015612bd7576020820181803683370190505b50602084810151855192935090830191612b86918391613695565b60606000612bfe610664565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612c1b5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c5c90613fc1565b935060ff1681518110612c7157612c71613eb2565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612cac91906146d0565b604051602081830303815290604052828280612cc790613fc1565b935060ff1681518110612cdc57612cdc613eb2565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612d1490613fc1565b935060ff1681518110612d2957612d29613eb2565b602002602001018190525082604051602001612d459190613efd565b604051602081830303815290604052828280612d6090613fc1565b935060ff1681518110612d7557612d75613eb2565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612daf90613fc1565b935060ff1681518110612dc457612dc4613eb2565b6020908102919091010152612dd9878461370f565b8282612de481613fc1565b935060ff1681518110612df957612df9613eb2565b602090810291909101015285515115612e915760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e3981613fc1565b935060ff1681518110612e4e57612e4e613eb2565b60209081029190910101528551612e65908461370f565b8282612e7081613fc1565b935060ff1681518110612e8557612e85613eb2565b60200260200101819052505b856080015115612eff5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612eda81613fc1565b935060ff1681518110612eef57612eef613eb2565b6020026020010181905250612f5a565b8415612f5a576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f3981613fc1565b935060ff1681518110612f4e57612f4e613eb2565b60200260200101819052505b60408601515115612fe65760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f9481613fc1565b935060ff1681518110612fa957612fa9613eb2565b60200260200101819052508560400151828280612fc590613fc1565b935060ff1681518110612fda57612fda613eb2565b60200260200101819052505b8560600151156130505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261302f81613fc1565b935060ff168151811061304457613044613eb2565b60200260200101819052505b60008160ff166001600160401b0381111561306d5761306d613a06565b6040519080825280602002602001820160405280156130a057816020015b606081526020019060019003908161308b5790505b50905060005b8260ff168160ff1610156130f957838160ff16815181106130c9576130c9613eb2565b6020026020010151828260ff16815181106130e6576130e6613eb2565b60209081029190910101526001016130a6565b50979650505050505050565b604080518082019091526000808252602082015281518351101561312a575081610298565b8151835160208501516000929161314091614548565b61314a919061447b565b6020840151909150600190821461316b575082516020840151819020908220145b80156131865783518551869061318290839061447b565b9052505b50929392505050565b8051825160208085015190840151600093849390926131af9284906134cf565b6131b99190614548565b90505b835160208501516131cd9190614548565b8111612b8657816131dd81614715565b92505082600001516132138560200151836131f8919061447b565b8651613204919061447b565b855160208701518591906134cf565b61321d9190614548565b90506131bc565b60606000613232848461318f565b61323d906001614548565b6001600160401b0381111561325457613254613a06565b60405190808252806020026020018201604052801561328757816020015b60608152602001906001900390816132725790505b50905060005b8151811015611c81576132a3611e1f8686612b67565b8282815181106132b5576132b5613eb2565b602090810291909101015260010161328d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613311577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061333d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061335b57662386f26fc10000830492506010015b6305f5e1008310613373576305f5e100830492506008015b612710831061338757612710830492506004015b60648310613399576064830492506002015b600a83106102985760010192915050565b60006133b6838361374f565b159392505050565b6000808584116134c5576020841161347157600084156134095760016133e586602061447b565b6133f090600861472e565b6133fb90600261482c565b613405919061447b565b1990505b83518116856134188989614548565b613422919061447b565b805190935082165b81811461345c57878411613444578794505050505061194a565b8361344e81614838565b94505082845116905061342a565b6134668785614548565b94505050505061194a565b83832061347e858861447b565b6134889087614548565b91505b8582106134c3578482208082036134b0576134a68684614548565b935050505061194a565b6134bb60018461447b565b92505061348b565b505b5092949350505050565b600083818685116135da5760208511613589576000851561351b5760016134f787602061447b565b61350290600861472e565b61350d90600261482c565b613517919061447b565b1990505b8451811660008761352c8b8b614548565b613536919061447b565b855190915083165b82811461357b57818610613563576135568b8b614548565b965050505050505061194a565b8561356d81614715565b96505083865116905061353e565b85965050505050505061194a565b508383206000905b61359b868961447b565b82116135d8578583208082036135b7578394505050505061194a565b6135c2600185614548565b93505081806135d090614715565b925050613591565b505b6135e48787614548565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161361c93906134cf565b602080870180519186019190915251909150613638908261447b565b83528451602086015161364b9190614548565b810361365a576000855261368c565b835183516136689190614548565b8551869061367790839061447b565b90525083516136869082614548565b60208601525b50909392505050565b602081106136cd57815183526136ac602084614548565b92506136b9602083614548565b91506136c660208261447b565b9050613695565b60001981156136fc5760016136e383602061447b565b6136ef9061010061482c565b6136f9919061447b565b90505b9151835183169219169190911790915250565b6060600061371d84846106fe565b80516020808301516040519394506137379390910161484f565b60405160208183030381529060405291505092915050565b8151815160009190811115613762575081515b6020808501519084015160005b8381101561381b57825182518082146137eb5760001960208710156137ca5760018461379c89602061447b565b6137a69190614548565b6137b190600861472e565b6137bc90600261482c565b6137c6919061447b565b1990505b81811683821681810391146137e85797506102989650505050505050565b50505b6137f6602086614548565b9450613803602085614548565b935050506020816138149190614548565b905061376f565b5084518651610ccc919061488b565b610c9f80615e3183390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161387a61387f565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161387a6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101561390b5781810151838201526020016138f3565b50506000910152565b6000815180845261392c8160208601602086016138f0565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061194a90830184613914565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161399c81601a8501602088016138f0565b6101d160f51b601a9184019182015283516139be81601c8401602088016138f0565b01601c01949350505050565b6020815260006103a66020830184613914565b6000602082840312156139ef57600080fd5b81516001600160a01b03811681146103a657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a3e57613a3e613a06565b60405290565b6000806001600160401b03841115613a5e57613a5e613a06565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a8c57613a8c613a06565b604052838152905080828401851015613aa457600080fd5b611c818460208301856138f0565b600082601f830112613ac357600080fd5b6103a683835160208501613a44565b600060208284031215613ae457600080fd5b81516001600160401b03811115613afa57600080fd5b61029484828501613ab2565b60008351613b188184602088016138f0565b835190830190613b2c8183602088016138f0565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b6d81601a8501602088016138f0565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613baa8160338401602088016138f0565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006103a66080830184613914565b600060208284031215613c0b57600080fd5b81516001600160401b03811115613c2157600080fd5b8201601f81018413613c3257600080fd5b61029484825160208401613a44565b60008551613c53818460208a016138f0565b602f60f81b9083019081528551613c71816001840160208a016138f0565b602f60f81b600192909101918201528451613c938160028401602089016138f0565b600181830101915050602f60f81b60018201528351613cb98160028401602088016138f0565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cec6040830184613914565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d2457600080fd5b815180151581146103a657600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d6c81601f8501602087016138f0565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613dbe6040830184613914565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613e046040830184613914565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e6a8160148501602087016138f0565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613ea06040830185613914565b82810360208401526103a28185613914565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ee58160018501602087016138f0565b601160f91b6001939091019283015250600201919050565b60008251613f0f8184602087016138f0565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f9e81604b8501602087016138f0565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fd757613fd7613fab565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161402a8160298501602087016138f0565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006103a66080830184613914565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140d757603f198786030184526140c2858351613914565b945060209384019391909101906001016140a6565b50929695505050505050565b6000602082840312156140f557600080fd5b81516001600160401b0381111561410b57600080fd5b82016060818503121561411d57600080fd5b614125613a1c565b81518060030b811461413657600080fd5b815260208201516001600160401b0381111561415157600080fd5b61415d86828501613ab2565b60208301525060408201516001600160401b0381111561417c57600080fd5b61418886828501613ab2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141d88160218501602087016138f0565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516143a88160218501602088016138f0565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143d581602e8401602088016138f0565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161402a8160298501602087016138f0565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161446e8160228501602087016138f0565b9190910160220192915050565b8181038181111561029857610298613fab565b6d021b7b73a3930b1ba103730b6b2960951b8152600082516144b781600e8501602087016138f0565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561029857610298613fab565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145938160188501602088016138f0565b6301034b7160e51b60189184019182015283516145b781601c8401602088016138f0565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146bd8184602087016138f0565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161470881601c8501602087016138f0565b91909101601c0192915050565b60006001820161472757614727613fab565b5060010190565b808202811582820484141761029857610298613fab565b6001815b60018411156147805780850481111561476457614764613fab565b600184161561477257908102905b60019390931c928002614749565b935093915050565b60008261479757506001610298565b816147a457506000610298565b81600181146147ba57600281146147c4576147e0565b6001915050610298565b60ff8411156147d5576147d5613fab565b50506001821b610298565b5060208310610133831016604e8410600b8410161715614803575081810a610298565b6148106000198484614745565b806000190482111561482457614824613fab565b029392505050565b60006103a68383614788565b60008161484757614847613fab565b506000190190565b600083516148618184602088016138f0565b601d60f91b908301908152835161487f8160018401602088016138f0565b01600101949350505050565b8181036000831280158383131683831282161715612b8657612b86613fab565b611577806148ba6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610366578063d9caed1214610379578063e63ab1e91461038c57600080fd5b8063a217fddf1461034b578063c8a023621461035357600080fd5b80638456cb59116100b25780638456cb59146102d657806385f438c1146102de57806391d148541461030557600080fd5b80636133b4bb146102a357806381100bf0146102b657600080fd5b806336568abe116101245780633f4ba83a116101095780633f4ba83a146102705780635b112591146102785780635c975abb1461029857600080fd5b806336568abe1461023d5780633c2f05a81461025057600080fd5b806321fc65f21161015557806321fc65f2146101e3578063248a9ca3146101f85780632f2ff15d1461022a57600080fd5b806301ffc9a714610171578063116191b614610199575b600080fd5b61018461017f3660046111a6565b6103b3565b60405190151581526020015b60405180910390f35b6002546101be90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101f66101f136600461125a565b61044c565b005b61021c6102063660046112c9565b6000908152600160208190526040909120015490565b604051908152602001610190565b6101f66102383660046112e2565b6105c1565b6101f661024b3660046112e2565b6105ed565b6004546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661064b565b6003546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610184565b6101f66102b136600461130e565b610680565b6005546101be9073ffffffffffffffffffffffffffffffffffffffff1681565b6101f661089f565b61021c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103133660046112e2565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61021c600081565b6101f661036136600461125a565b6108d1565b6101f66103743660046112e2565b610a2c565b6101f6610387366004611368565b610a52565b61021c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610454610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461047e81610b62565b610486610b6c565b6002546104b29073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061051490899089908990899089906004016113ee565b600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a79392919061144b565b60405180910390a3506105ba6001600055565b5050505050565b600082815260016020819052604090912001546105dd81610b62565b6105e78383610c38565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461063c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106468282610d03565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61067581610b62565b61067d610dc2565b50565b60045473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106aa86600561146e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b5050600480546007546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216938101939093526005602484015216925063a9059cbb91506044016020604051808303816000875af11580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce91906114a8565b506004546107f59073ffffffffffffffffffffffffffffffffffffffff168585858561044c565b600480546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090920482169381019390935216906370a0823190602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089291906114ca565b156105e7576105e76114e3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108c981610b62565b61067d610e3f565b6108d9610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461090381610b62565b61090b610b6c565b6002546109379073ffffffffffffffffffffffffffffffffffffffff8881169161010090041686610bab565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd49061099990899089908990899089906004016113ee565b600060405180830381600087803b1580156109b357600080fd5b505af11580156109c7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a79392919061144b565b60008281526001602081905260409091200154610a4881610b62565b6105e78383610d03565b610a5a610b1f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a8481610b62565b610a8c610b6c565b610aad73ffffffffffffffffffffffffffffffffffffffff85168484610bab565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b0c91815260200190565b60405180910390a3506106466001600055565b600260005403610b5b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61067d8133610e9a565b60025460ff1615610ba9576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610646908490610f2b565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610cfb57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610446565b506000610446565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610cfb57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610446565b610dca610fc1565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e47610b6c565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e153390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f27576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610f4d73ffffffffffffffffffffffffffffffffffffffff841683610ffd565b90508051600014158015610f72575080806020019051810190610f7091906114a8565b155b15610646576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f1e565b60025460ff16610ba9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061100b83836000611012565b9392505050565b606081471015611050576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f1e565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110799190611512565b60006040518083038185875af1925050503d80600081146110b6576040519150601f19603f3d011682016040523d82523d6000602084013e6110bb565b606091505b50915091506110cb8683836110d5565b9695505050505050565b6060826110ea576110e582611164565b61100b565b815115801561110e575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561115d576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f1e565b508061100b565b8051156111745780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156111b857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461100b57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461120c57600080fd5b919050565b60008083601f84011261122357600080fd5b50813567ffffffffffffffff81111561123b57600080fd5b60208301915083602082850101111561125357600080fd5b9250929050565b60008060008060006080868803121561127257600080fd5b61127b866111e8565b9450611289602087016111e8565b935060408601359250606086013567ffffffffffffffff8111156112ac57600080fd5b6112b888828901611211565b969995985093965092949392505050565b6000602082840312156112db57600080fd5b5035919050565b600080604083850312156112f557600080fd5b82359150611305602084016111e8565b90509250929050565b6000806000806060858703121561132457600080fd5b61132d856111e8565b935060208501359250604085013567ffffffffffffffff81111561135057600080fd5b61135c87828801611211565b95989497509550505050565b60008060006060848603121561137d57600080fd5b611386846111e8565b9250611394602085016111e8565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114406080830184866113a5565b979650505050505050565b8381526040602082015260006114656040830184866113a5565b95945050505050565b80820180821115610446577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156114ba57600080fd5b8151801515811461100b57600080fd5b6000602082840312156114dc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b818110156115335760208186018101518583015201611519565b50600092019182525091905056fea2646970667358221220e3eceeff6045b5584ad5b26814ad7e9728c8428c7219e4a4930ed3899cab596964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220d8ef89ac8396bd464c454946f52477d7c7b7dd83faf0948efc8239094b648cb764736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; type ERC20CustodyEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC20Custody__factory.ts b/v2/typechain-types/factories/ERC20Custody__factory.ts index d2602a55..b4edc335 100644 --- a/v2/typechain-types/factories/ERC20Custody__factory.ts +++ b/v2/typechain-types/factories/ERC20Custody__factory.ts @@ -21,17 +21,17 @@ const _abi = [ type: "constructor", inputs: [ { - name: "_gateway", + name: "gateway_", type: "address", internalType: "address", }, { - name: "_tssAddress", + name: "tssAddress_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -226,19 +226,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "tssAddress", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "unpause", @@ -595,7 +582,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033"; + "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033"; type ERC20CustodyConstructorParams = | [signer?: Signer] @@ -615,28 +602,28 @@ export class ERC20Custody__factory extends ContractFactory { } override getDeployTransaction( - _gateway: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( - _gateway, - _tssAddress, - _admin, + gateway_, + tssAddress_, + admin_, overrides || {} ); } override deploy( - _gateway: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( - _gateway, - _tssAddress, - _admin, + gateway_, + tssAddress_, + admin_, overrides || {} ) as Promise< ERC20Custody & { diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts index 8825fb05..6c4f4e0b 100644 --- a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -347,17 +347,17 @@ const _abi = [ name: "initialize", inputs: [ { - name: "_tssAddress", + name: "tssAddress_", type: "address", internalType: "address", }, { - name: "_zetaToken", + name: "zetaToken_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -467,7 +467,7 @@ const _abi = [ name: "setConnector", inputs: [ { - name: "_zetaConnector", + name: "zetaConnector_", type: "address", internalType: "address", }, @@ -480,7 +480,7 @@ const _abi = [ name: "setCustody", inputs: [ { - name: "_custody", + name: "custody_", type: "address", internalType: "address", }, @@ -1062,7 +1062,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f8061324883390190565b6113e280613ee783390190565b608051612fff61024960003960008181611d3301528181611d5c01526121a50152612fff6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b506102596102543660046129e9565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612a47565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612aab565b6108f3565b6102c36102be366004612aab565b61094d565b6040516102659190612b6c565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612b7f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612aab565b6109de565b34801561038457600080fd5b5061028e610393366004612b98565b610b0b565b61028e6103a6366004612aab565b610b55565b3480156103b757600080fd5b5061028e6103c6366004612b98565b610cdc565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610d2d565b61028e61040e366004612bf3565b610d62565b34801561041f57600080fd5b5061028e61042e366004612cfa565b610d81565b34801561043f57600080fd5b5061035761105e565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612d69565b61108d565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6111b8565b34801561055457600080fd5b5061028e610563366004612dc3565b6111ea565b34801561057457600080fd5b50610259610583366004612b98565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612a47565b61128f565b34801561068b57600080fd5b5061028e61069a366004612cfa565b611383565b3480156106ab57600080fd5b5061028e6106ba366004612e15565b6114fd565b3480156106cb57600080fd5b5061028e6106da366004612b98565b6117b2565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612a47565b6117f6565b34801561075257600080fd5b5061028e610761366004612e58565b611923565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a816119d6565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611acd565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610940929190612ed4565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610979816119d6565b610981611acd565b600061098e868686611b2b565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3487876040516109cd93929190612ef0565b60405180910390a295945050505050565b6109e6611acd565b34600003610a20576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a6d576040519150601f19603f3d011682016040523d82523d6000602084013e610a72565b606091505b5090915050801515600003610ab3576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610afd9493929190612f0a565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b45816119d6565b610b4f83836119e0565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b7f816119d6565b610b87611acd565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c16576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610c5d9088908890600401612ed4565b600060405180830381600087803b158015610c7757600080fd5b505af1158015610c8b573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610ccc93929190612ef0565b60405180910390a2505050505050565b6001600160a01b0381163314610d1e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d288282611bd4565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d57816119d6565b610d5f611c98565b50565b610d6a611d28565b610d7382611df8565b610d7d8282611e03565b5050565b610d89611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610db3816119d6565b610dbb611acd565b83600003610df5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8686611fa8565b610e35576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec19190612f33565b610ef7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f04868585611b2b565b9050610f108787611fa8565b610f46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190612f55565b90508015610fdc57610fdc8882612038565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161102393929190612ef0565b60405180910390a350505061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b600061106861219a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b505060045461112592506001600160a01b0316905085858585610d81565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612f55565b15610b4f57610b4f612f6e565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111e2816119d6565b610d5f6121fc565b6111f2611acd565b8360000361122c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611237338486612275565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516112809493929190612f0a565b60405180910390a35050505050565b600061129a816119d6565b6000546001600160a01b0316156112dd576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661131d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113477f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836119e0565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61138b611f27565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96113b5816119d6565b6113bd611acd565b836000036113f7576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6001600160a01b03871686866123c9565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906114529086908690600401612ed4565b600060405180830381600087803b15801561146c57600080fd5b505af1158015611480573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516114cb93929190612ef0565b60405180910390a35061105760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115485750825b905060008267ffffffffffffffff1660011480156115655750303b155b905081158015611573575080155b156115aa576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561160b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061162857506001600160a01b038716155b1561165f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166761243d565b61166f612445565b61167761243d565b61167f612455565b61168a6000876119e0565b506116b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876119e0565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556117137f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896119e0565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117a85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546117ec816119d6565b610b4f8383611bd4565b6117fe611acd565b34600003611838576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611885576040519150601f19603f3d011682016040523d82523d6000602084013e61188a565b606091505b50909150508015156000036118cb576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61192b611acd565b81600003611965576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611970338284612275565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109409291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d5f8133612465565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ac3576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611a793390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b29576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b0316348686604051611b4b929190612f9d565b60006040518083038185875af1925050503d8060008114611b88576040519150601f19603f3d011682016040523d82523d6000602084013e611b8d565b606091505b509150915081611bc9576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ac3576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611ca06124f2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dc157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611db57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d7d816119d6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e7b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7891810190612f55565b60015b611ec1576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f1d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611eb8565b610d28838361254d565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611fa2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612f33565b6003546001600160a01b039081169083160361215a576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de9190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561213e57600080fd5b505af1158015612152573d6000803e3d6000fd5b505050505050565b600054610d7d906001600160a01b038481169116836123c9565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b29576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612204611acd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d0a565b6003546001600160a01b03908116908316036123ad576122a06001600160a01b0383168430846125a3565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561230c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123309190612f33565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b50505050505050565b600054610d28906001600160a01b0384811691869116846125a3565b6040516001600160a01b03838116602483015260448201839052610d2891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125dc565b611b29612658565b61244d612658565b611b296126bf565b61245d612658565b611b296126c7565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d7d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611eb8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b29576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255682612718565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561259b57610d2882826127c0565b610d7d612836565b6040516001600160a01b038481166024830152838116604483015260648201839052610b4f9186918216906323b872dd906084016123f6565b60006125f16001600160a01b0384168361286e565b905080516000141580156126165750808060200190518101906126149190612f33565b155b15610d28576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611eb8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b29576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612174612658565b6126cf612658565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612767576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127dd9190612fad565b600060405180830381855af49150503d8060008114612818576040519150601f19603f3d011682016040523d82523d6000602084013e61281d565b606091505b509150915061282d85838361287c565b95945050505050565b3415611b29576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611bcd838360006128f1565b6060826128915761288c826129a7565b611bcd565b81511580156128a857506001600160a01b0384163b155b156128ea576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611eb8565b5080611bcd565b60608147101561292f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611eb8565b600080856001600160a01b0316848660405161294b9190612fad565b60006040518083038185875af1925050503d8060008114612988576040519150601f19603f3d011682016040523d82523d6000602084013e61298d565b606091505b509150915061299d86838361287c565b9695505050505050565b8051156129b75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129fb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bcd57600080fd5b80356001600160a01b0381168114612a4257600080fd5b919050565b600060208284031215612a5957600080fd5b611bcd82612a2b565b60008083601f840112612a7457600080fd5b50813567ffffffffffffffff811115612a8c57600080fd5b602083019150836020828501011115612aa457600080fd5b9250929050565b600080600060408486031215612ac057600080fd5b612ac984612a2b565b9250602084013567ffffffffffffffff811115612ae557600080fd5b612af186828701612a62565b9497909650939450505050565b60005b83811015612b19578181015183820152602001612b01565b50506000910152565b60008151808452612b3a816020860160208601612afe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bcd6020830184612b22565b600060208284031215612b9157600080fd5b5035919050565b60008060408385031215612bab57600080fd5b82359150612bbb60208401612a2b565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612c0657600080fd5b612c0f83612a2b565b9150602083013567ffffffffffffffff811115612c2b57600080fd5b8301601f81018513612c3c57600080fd5b803567ffffffffffffffff811115612c5657612c56612bc4565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612cc257612cc2612bc4565b604052818152828201602001871015612cda57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612d1257600080fd5b612d1b86612a2b565b9450612d2960208701612a2b565b935060408601359250606086013567ffffffffffffffff811115612d4c57600080fd5b612d5888828901612a62565b969995985093965092949392505050565b60008060008060608587031215612d7f57600080fd5b612d8885612a2b565b935060208501359250604085013567ffffffffffffffff811115612dab57600080fd5b612db787828801612a62565b95989497509550505050565b600080600080600060808688031215612ddb57600080fd5b612de486612a2b565b945060208601359350612df960408701612a2b565b9250606086013567ffffffffffffffff811115612d4c57600080fd5b600080600060608486031215612e2a57600080fd5b612e3384612a2b565b9250612e4160208501612a2b565b9150612e4f60408501612a2b565b90509250925092565b600080600060608486031215612e6d57600080fd5b612e7684612a2b565b925060208401359150612e4f60408501612a2b565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ee8602083018486612e8b565b949350505050565b83815260406020820152600061282d604083018486612e8b565b8481526001600160a01b038416602082015260606040820152600061299d606083018486612e8b565b600060208284031215612f4557600080fd5b81518015158114611bcd57600080fd5b600060208284031215612f6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b60008251612fbf818460208701612afe565b919091019291505056fea2646970667358221220e575ea5a18b9462f7a8e597ab970f6a09ecc09fd51c56fa3c6c1397f89f20af164736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b506040516113e23803806113e283398101604081905261002f916101d3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b156100795760405163d92e233d60e01b815260040160405180910390fd5b60028054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600380546001600160a01b0319169184169190911790556100c3600082610122565b506100ee7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610122565b506101197f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610122565b50505050610216565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff166101ad5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016101b1565b5060005b92915050565b80516001600160a01b03811681146101ce57600080fd5b919050565b6000806000606084860312156101e857600080fd5b6101f1846101b7565b92506101ff602085016101b7565b915061020d604085016101b7565b90509250925092565b6111bd806102256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80635c975abb116100b2578063a217fddf11610081578063d547741f11610066578063d547741f146102c2578063d9caed12146102d5578063e63ab1e9146102e857600080fd5b8063a217fddf146102a7578063c8a02362146102af57600080fd5b80635c975abb146102275780638456cb591461023257806385f438c11461023a57806391d148541461026157600080fd5b80632f2ff15d116100ee5780632f2ff15d146101d957806336568abe146101ec5780633f4ba83a146101ff5780635b1125911461020757600080fd5b806301ffc9a714610120578063116191b61461014857806321fc65f214610192578063248a9ca3146101a7575b600080fd5b61013361012e366004610ee3565b61030f565b60405190151581526020015b60405180910390f35b60025461016d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b6101a56101a0366004610f4e565b6103a8565b005b6101cb6101b5366004610feb565b6000908152600160208190526040909120015490565b60405190815260200161013f565b6101a56101e7366004611004565b61051d565b6101a56101fa366004611004565b610549565b6101a56105a7565b60035461016d9073ffffffffffffffffffffffffffffffffffffffff1681565b60025460ff16610133565b6101a56105dc565b6101cb7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61013361026f366004611004565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101cb600081565b6101a56102bd366004610f4e565b61060e565b6101a56102d0366004611004565b610769565b6101a56102e3366004611030565b61078f565b6101cb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103a257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103b061085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103da8161089f565b6103e26108a9565b60025461040e9073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517f5131ab5900000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690635131ab599061047090899089908990899089906004016110b6565b600060405180830381600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e86868660405161050393929190611113565b60405180910390a3506105166001600055565b5050505050565b600082815260016020819052604090912001546105398161089f565b6105438383610975565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610598576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a28282610a40565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105d18161089f565b6105d9610aff565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106068161089f565b6105d9610b7c565b61061661085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106408161089f565b6106486108a9565b6002546106749073ffffffffffffffffffffffffffffffffffffffff88811691610100900416866108e8565b6002546040517fb8969bd400000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063b8969bd4906106d690899089908990899089906004016110b6565b600060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c886868660405161050393929190611113565b600082815260016020819052604090912001546107858161089f565b6105438383610a40565b61079761085c565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107c18161089f565b6107c96108a9565b6107ea73ffffffffffffffffffffffffffffffffffffffff851684846108e8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161084991815260200190565b60405180910390a3506105a26001600055565b600260005403610898576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105d98133610bd7565b60025460ff16156108e6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526105a2908490610c68565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a3857600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45060016103a2565b5060006103a2565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a3857600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103a2565b610b07610cfe565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610b846108a9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b523390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c64576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610c8a73ffffffffffffffffffffffffffffffffffffffff841683610d3a565b90508051600014158015610caf575080806020019051810190610cad9190611136565b155b156105a2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c5b565b60025460ff166108e6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d4883836000610d4f565b9392505050565b606081471015610d8d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c5b565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610db69190611158565b60006040518083038185875af1925050503d8060008114610df3576040519150601f19603f3d011682016040523d82523d6000602084013e610df8565b606091505b5091509150610e08868383610e12565b9695505050505050565b606082610e2757610e2282610ea1565b610d48565b8151158015610e4b575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e9a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c5b565b5080610d48565b805115610eb15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610ef557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d4857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f4957600080fd5b919050565b600080600080600060808688031215610f6657600080fd5b610f6f86610f25565b9450610f7d60208701610f25565b935060408601359250606086013567ffffffffffffffff811115610fa057600080fd5b8601601f81018813610fb157600080fd5b803567ffffffffffffffff811115610fc857600080fd5b886020828401011115610fda57600080fd5b959894975092955050506020019190565b600060208284031215610ffd57600080fd5b5035919050565b6000806040838503121561101757600080fd5b8235915061102760208401610f25565b90509250929050565b60008060006060848603121561104557600080fd5b61104e84610f25565b925061105c60208501610f25565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061110860808301848661106d565b979650505050505050565b83815260406020820152600061112d60408301848661106d565b95945050505050565b60006020828403121561114857600080fd5b81518015158114610d4857600080fd5b6000825160005b81811015611179576020818601810151858301520161115f565b50600092019182525091905056fea2646970667358221220f228501fb7798406cf58c84b1f7af446926eecd69943c0a6760dfd0c5550e2ff64736f6c634300081a0033"; + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220dbe54b12cfd6fb8144d0b6a09a13bd9183d367931fa65bca2b5181643e10ee2f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033"; type GatewayEVMEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts index b6699ea5..541946fc 100644 --- a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -1038,7 +1038,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220e0d221e2700a741409740f6a05e6ac8e799e50b3e2a6e75b5173b33a31fa502464736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea26469706673582212207e9eea909dd03b9b991625c57d71ab317ff14c9101aa69f58639434bfe06a78f64736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts index c47fde35..afc62f64 100644 --- a/v2/typechain-types/factories/GatewayEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -331,17 +331,17 @@ const _abi = [ name: "initialize", inputs: [ { - name: "_tssAddress", + name: "tssAddress_", type: "address", internalType: "address", }, { - name: "_zetaToken", + name: "zetaToken_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -451,7 +451,7 @@ const _abi = [ name: "setConnector", inputs: [ { - name: "_zetaConnector", + name: "zetaConnector_", type: "address", internalType: "address", }, @@ -464,7 +464,7 @@ const _abi = [ name: "setCustody", inputs: [ { - name: "_custody", + name: "custody_", type: "address", internalType: "address", }, @@ -1010,7 +1010,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d9a6100fd60003960008181611b5701528181611b800152611fc90152612d9a6000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b5061020861020336600461280d565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d61023836600461286b565b61074e565b005b34801561024b57600080fd5b5061023d61025a3660046128cf565b610842565b61027261026d3660046128cf565b61089c565b6040516102149190612990565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d23660046129a3565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d6103223660046128cf565b61092d565b34801561033357600080fd5b5061023d6103423660046129bc565b610a5a565b61023d6103553660046128cf565b610aa4565b34801561036657600080fd5b5061023d6103753660046129bc565b610c2b565b34801561038657600080fd5b5061023d610c7c565b61023d61039d366004612a17565b610cb1565b3480156103ae57600080fd5b5061023d6103bd366004612b1e565b610cd0565b3480156103ce57600080fd5b50610306610fad565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fdc565b3480156104a357600080fd5b5061023d6104b2366004612b8d565b61100e565b3480156104c357600080fd5b506102086104d23660046129bc565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c936600461286b565b6110b3565b3480156105da57600080fd5b5061023d6105e9366004612b1e565b6111a7565b3480156105fa57600080fd5b5061023d610609366004612bdf565b611321565b34801561061a57600080fd5b5061023d6106293660046129bc565b6115d6565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d61069036600461286b565b61161a565b3480156106a157600080fd5b5061023d6106b0366004612c22565b611747565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117fa565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a6118f1565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161088f929190612c9e565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c8816117fa565b6108d06118f1565b60006108dd86868661194f565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161091c93929190612cba565b60405180910390a295945050505050565b6109356118f1565b3460000361096f576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109bc576040519150601f19603f3d011682016040523d82523d6000602084013e6109c1565b606091505b5090915050801515600003610a02576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a4c9493929190612cd4565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a94816117fa565b610a9e8383611804565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ace816117fa565b610ad66118f1565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b24576040519150601f19603f3d011682016040523d82523d6000602084013e610b29565b606091505b509150915081610b65576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610bac9088908890600401612c9e565b600060405180830381600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610c1b93929190612cba565b60405180910390a2505050505050565b6001600160a01b0381163314610c6d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7782826119f8565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ca6816117fa565b610cae611abc565b50565b610cb9611b4c565b610cc282611c1c565b610ccc8282611c27565b5050565b610cd8611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d02816117fa565b610d0a6118f1565b83600003610d44576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4e8686611dcc565b610d84576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612cfd565b610e46576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5386858561194f565b9050610e5f8787611dcc565b610e95576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612d1f565b90508015610f2b57610f2b8882611e5c565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f7293929190612cba565b60405180910390a3505050610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610fb7611fbe565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611006816117fa565b610cae612020565b6110166118f1565b83600003611050576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105b338486612099565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110a49493929190612cd4565b60405180910390a35050505050565b60006110be816117fa565b6000546001600160a01b031615611101576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611141576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611804565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6111af611d4b565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111d9816117fa565b6111e16118f1565b8360000361121b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61122f6001600160a01b03871686866121ed565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906112769086908690600401612c9e565b600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112ef93929190612cba565b60405180910390a350610fa660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561136c5750825b905060008267ffffffffffffffff1660011480156113895750303b155b905081158015611397575080155b156113ce576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561142f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061144c57506001600160a01b038716155b15611483576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148b612261565b611493612269565b61149b612261565b6114a3612279565b6114ae600087611804565b506114d97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611804565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115377f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611804565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115cc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611610816117fa565b610a9e83836119f8565b6116226118f1565b3460000361165c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146116a9576040519150601f19603f3d011682016040523d82523d6000602084013e6116ae565b606091505b50909150508015156000036116ef576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b61174f6118f1565b81600003611789576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611794338284612099565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161088f9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610cae8133612289565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166118e7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561189d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561194d576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060600080856001600160a01b031634868660405161196f929190612d38565b60006040518083038185875af1925050503d80600081146119ac576040519150601f19603f3d011682016040523d82523d6000602084013e6119b1565b606091505b5091509150816119ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156118e7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611ac4612316565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611be557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bd97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ccc816117fa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c9f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c9c91810190612d1f565b60015b611ce5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d41576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611cdc565b610c778383612371565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611dc6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612cfd565b6003546001600160a01b0390811690831603611f7e576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b505050505050565b600054610ccc906001600160a01b038481169116836121ed565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461194d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120286118f1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611b2e565b6003546001600160a01b03908116908316036121d1576120c46001600160a01b0383168430846123c7565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190612cfd565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156121b457600080fd5b505af11580156121c8573d6000803e3d6000fd5b50505050505050565b600054610c77906001600160a01b0384811691869116846123c7565b6040516001600160a01b03838116602483015260448201839052610c7791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612400565b61194d61247c565b61227161247c565b61194d6124e3565b61228161247c565b61194d6124eb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610ccc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611cdc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661194d576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237a8261253c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123bf57610c7782826125e4565b610ccc61265a565b6040516001600160a01b038481166024830152838116604483015260648201839052610a9e9186918216906323b872dd9060840161221a565b60006124156001600160a01b03841683612692565b9050805160001415801561243a5750808060200190518101906124389190612cfd565b155b15610c77576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611cdc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661194d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9861247c565b6124f361247c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b60000361258b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611cdc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126019190612d48565b600060405180830381855af49150503d806000811461263c576040519150601f19603f3d011682016040523d82523d6000602084013e612641565b606091505b50915091506126518583836126a0565b95945050505050565b341561194d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606119f183836000612715565b6060826126b5576126b0826127cb565b6119f1565b81511580156126cc57506001600160a01b0384163b155b1561270e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611cdc565b50806119f1565b606081471015612753576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611cdc565b600080856001600160a01b0316848660405161276f9190612d48565b60006040518083038185875af1925050503d80600081146127ac576040519150601f19603f3d011682016040523d82523d6000602084013e6127b1565b606091505b50915091506127c18683836126a0565b9695505050505050565b8051156127db5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561281f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f157600080fd5b80356001600160a01b038116811461286657600080fd5b919050565b60006020828403121561287d57600080fd5b6119f18261284f565b60008083601f84011261289857600080fd5b50813567ffffffffffffffff8111156128b057600080fd5b6020830191508360208285010111156128c857600080fd5b9250929050565b6000806000604084860312156128e457600080fd5b6128ed8461284f565b9250602084013567ffffffffffffffff81111561290957600080fd5b61291586828701612886565b9497909650939450505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6000815180845261295e816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119f16020830184612946565b6000602082840312156129b557600080fd5b5035919050565b600080604083850312156129cf57600080fd5b823591506129df6020840161284f565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612a2a57600080fd5b612a338361284f565b9150602083013567ffffffffffffffff811115612a4f57600080fd5b8301601f81018513612a6057600080fd5b803567ffffffffffffffff811115612a7a57612a7a6129e8565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ae657612ae66129e8565b604052818152828201602001871015612afe57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612b3657600080fd5b612b3f8661284f565b9450612b4d6020870161284f565b935060408601359250606086013567ffffffffffffffff811115612b7057600080fd5b612b7c88828901612886565b969995985093965092949392505050565b600080600080600060808688031215612ba557600080fd5b612bae8661284f565b945060208601359350612bc36040870161284f565b9250606086013567ffffffffffffffff811115612b7057600080fd5b600080600060608486031215612bf457600080fd5b612bfd8461284f565b9250612c0b6020850161284f565b9150612c196040850161284f565b90509250925092565b600080600060608486031215612c3757600080fd5b612c408461284f565b925060208401359150612c196040850161284f565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612cb2602083018486612c55565b949350505050565b838152604060208201526000612651604083018486612c55565b8481526001600160a01b03841660208201526060604082015260006127c1606083018486612c55565b600060208284031215612d0f57600080fd5b815180151581146119f157600080fd5b600060208284031215612d3157600080fd5b5051919050565b8183823760009101908152919050565b60008251612d5a818460208701612922565b919091019291505056fea26469706673582212201821442f44389baeb888640e13de33662eed4aff4f3c0ea195d55f55d8f2920864736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea2646970667358221220a687edeef343516f84769d1a465816f153b29abeb9124499976e38f91c91a58864736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayZEVM__factory.ts b/v2/typechain-types/factories/GatewayZEVM__factory.ts index 20b23379..029f2900 100644 --- a/v2/typechain-types/factories/GatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayZEVM__factory.ts @@ -430,12 +430,12 @@ const _abi = [ name: "initialize", inputs: [ { - name: "_zetaToken", + name: "zetaToken_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -1008,6 +1008,11 @@ const _abi = [ name: "ZRC20BurnFailed", inputs: [], }, + { + type: "error", + name: "ZRC20DepositFailed", + inputs: [], + }, { type: "error", name: "ZRC20TransferFailed", @@ -1021,7 +1026,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d416100fd60003960008181611e7201528181611e9b01526120530152612d416000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612531565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612647565b61078b565b34801561029657600080fd5b5061022e6102a5366004612703565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd36600461278f565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127a8565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127d8565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127a8565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f7366004612876565b610b7e565b34801561040857600080fd5b5061022e610417366004612898565b610c61565b61022e61042a3660046128c6565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127d8565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b6366004612916565b611086565b3480156104c757600080fd5b5061022e6104d636600461298b565b611105565b3480156104e757600080fd5b5061022e6104f63660046129c6565b611204565b34801561050757600080fd5b5061022e6112b6565b34801561051c57600080fd5b5061025561052b3660046127a8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a51565b3480156105ec57600080fd5b5061022e6105fb3660046127d8565b6112e8565b34801561060c57600080fd5b5061022e61061b3660046127d8565b61138a565b34801561062c57600080fd5b5061022e61063b3660046127a8565b611523565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a64565b611567565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b2565b61079b610694565b60006107a78383611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612a9b565b60405161084d959493929190612ab4565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a26565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd3565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bf4565b610a1b8383611bfe565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611ceb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bf4565b610b7b611daf565b50565b610b866116b2565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612ab4565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e3f565b610dbf611e3f565b610dc7611e47565b610dcf611e57565b610dda600087611bfe565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611bfe565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e67565b610eb482611f37565b610c5d8282611f42565b6000610ec8612048565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c1a565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd3565b61108e6116b2565b611096610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110d493929190612c3c565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110d6116b2565b611115610694565b60006111218585611733565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612a9b565b8a8a6040516111cb9796959493929190612c6c565b60405180910390a3506111fd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61120c6116b2565b611214610694565b6112328473735b14bb79463307aacbed86daf3322b1e6226ab611a26565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110d4936001600160a01b03909116918b9181908b908b90612c6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112e081611bf4565b610b7b6120aa565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611335576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133d610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113d7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113df610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061141257506001600160a01b03831630145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612c1a565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461155d81611bf4565b610a1b8383611ceb565b3373735b14bb79463307aacbed86daf3322b1e6226ab146115b4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115ef57506001600160a01b03811630145b15611626576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612c1a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161172d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117999190612cc1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118429190612c1a565b611878576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190612c1a565b61193e576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612c1a565b6119f8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612c1a565b611af0576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bb4576040519150601f19603f3d011682016040523d82523d6000602084013e611bb9565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612123565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce1576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c973390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce1576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611db76121b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f061220b565b611e4f61220b565b6106f0612272565b611e5f61220b565b6106f06122c3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bf4565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9c575060408051601f3d908101601f19168201909252611f9991810190612a9b565b60015b611fe2576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461203e576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fd9565b61087f83836122cb565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b2610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e21565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fd9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61227a61220b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a0061220b565b6122d482612321565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156123195761087f82826123c9565b610c5d61243f565b806001600160a01b03163b600003612370576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fd9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123e69190612cef565b600060405180830381855af49150503d8060008114612421576040519150601f19603f3d011682016040523d82523d6000602084013e612426565b606091505b5091509150612436858383612477565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261248c57612487826124ef565b6124e8565b81511580156124a357506001600160a01b0384163b155b156124e5576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fd9565b50805b9392505050565b8051156124ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124e857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b357600080fd5b813567ffffffffffffffff8111156125cd576125cd612573565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156125fd576125fd612573565b60405281815283820160200185101561261557600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561265c57600080fd5b833567ffffffffffffffff81111561267357600080fd5b61267f868287016125a2565b93505060208401359150604084013561269781612632565b809150509250925092565b6000606082840312156126b457600080fd5b50919050565b60008083601f8401126126cc57600080fd5b50813567ffffffffffffffff8111156126e457600080fd5b6020830191508360208285010111156126fc57600080fd5b9250929050565b60008060008060006080868803121561271b57600080fd5b853567ffffffffffffffff81111561273257600080fd5b61273e888289016126a2565b95505060208601359350604086013561275681612632565b9250606086013567ffffffffffffffff81111561277257600080fd5b61277e888289016126ba565b969995985093965092949392505050565b6000602082840312156127a157600080fd5b5035919050565b600080604083850312156127bb57600080fd5b8235915060208301356127cd81612632565b809150509250929050565b60008060008060008060a087890312156127f157600080fd5b863567ffffffffffffffff81111561280857600080fd5b61281489828a016126a2565b965050602087013561282581612632565b945060408701359350606087013561283c81612632565b9250608087013567ffffffffffffffff81111561285857600080fd5b61286489828a016126ba565b979a9699509497509295939492505050565b6000806040838503121561288957600080fd5b50508035926020909101359150565b600080604083850312156128ab57600080fd5b82356128b681612632565b915060208301356127cd81612632565b600080604083850312156128d957600080fd5b82356128e481612632565b9150602083013567ffffffffffffffff81111561290057600080fd5b61290c858286016125a2565b9150509250929050565b6000806000806060858703121561292c57600080fd5b843567ffffffffffffffff81111561294357600080fd5b61294f878288016125a2565b94505060208501359250604085013567ffffffffffffffff81111561297357600080fd5b61297f878288016126ba565b95989497509550505050565b6000806000806000608086880312156129a357600080fd5b853567ffffffffffffffff8111156129ba57600080fd5b61273e888289016125a2565b600080600080606085870312156129dc57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297357600080fd5b60005b83811015612a1c578181015183820152602001612a04565b50506000910152565b60008151808452612a3d816020860160208601612a01565b601f01601f19169290920160200192915050565b6020815260006124e86020830184612a25565b600080600060608486031215612a7957600080fd5b8335612a8481612632565b925060208401359150604084013561269781612632565b600060208284031215612aad57600080fd5b5051919050565b60c081526000612ac760c0830188612a25565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6457600080fd5b820160208101903567ffffffffffffffff811115612b8157600080fd5b803603821315612b9057600080fd5b60608552612ba2606086018284612b05565b9150506020830135612bb381612632565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612be66080830188612b30565b6001600160a01b03871660208401528560408401528281036060840152612c0e818587612b05565b98975050505050505050565b600060208284031215612c2c57600080fd5b815180151581146124e857600080fd5b604081526000612c4f6040830186612a25565b8281036020840152612c62818587612b05565b9695505050505050565b60c081526000612c7f60c083018a612a25565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb3818587612b05565b9a9950505050505050505050565b60008060408385031215612cd457600080fd5b8251612cdf81612632565b6020939093015192949293505050565b60008251612d01818460208701612a01565b919091019291505056fea2646970667358221220a674352ad8eda2675de3e0d97b91ed3fa3da4cd5c58000ddb3dbd7fc65105db464736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d476100fd60003960008181611e7801528181611ea101526120590152612d476000f3fe6080604052600436106101bb5760003560e01c80635af65967116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637993c1e0116100c65780637993c1e0146104bb57806380bd3d03146104db5780638456cb59146104fb57806391d148541461051057600080fd5b80635af65967146104445780635c975abb146104645780635d40e1781461049b57600080fd5b806336568abe11610159578063441a3e7011610133578063441a3e70146103dc578063485cc955146103fc5780634f1ef2861461041c57806352d1902d1461042f57600080fd5b806336568abe1461037f5780633ce4a5bc1461039f5780633f4ba83a146103c757600080fd5b806321e093b11161019557806321e093b1146102aa578063248a9ca3146102e25780632f2ff15d1461033f578063309f50041461035f57600080fd5b806301ffc9a714610235578063135390f91461026a57806321501a951461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612537565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e61028536600461264d565b61078b565b34801561029657600080fd5b5061022e6102a5366004612709565b610884565b3480156102b657600080fd5b506000546102ca906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b3480156102ee57600080fd5b506103316102fd366004612795565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561034b57600080fd5b5061022e61035a3660046127ae565b6109d7565b34801561036b57600080fd5b5061022e61037a3660046127de565b610a21565b34801561038b57600080fd5b5061022e61039a3660046127ae565b610afd565b3480156103ab57600080fd5b506102ca73735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103d357600080fd5b5061022e610b49565b3480156103e857600080fd5b5061022e6103f736600461287c565b610b7e565b34801561040857600080fd5b5061022e61041736600461289e565b610c61565b61022e61042a3660046128cc565b610ea3565b34801561043b57600080fd5b50610331610ebe565b34801561045057600080fd5b5061022e61045f3660046127de565b610eed565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b636600461291c565b61106e565b3480156104c757600080fd5b5061022e6104d6366004612991565b6110ed565b3480156104e757600080fd5b5061022e6104f63660046129cc565b6111ec565b34801561050757600080fd5b5061022e61129e565b34801561051c57600080fd5b5061025561052b3660046127ae565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058157600080fd5b50610331600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190612a57565b3480156105ec57600080fd5b5061022e6105fb3660046127de565b6112d0565b34801561060c57600080fd5b5061022e61061b3660046127de565b611372565b34801561062c57600080fd5b5061022e61063b3660046127ae565b6114f3565b34801561064c57600080fd5b506103317f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004612a6a565b611537565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107936116b8565b61079b610694565b60006107a78383611739565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b586858786886001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190612aa1565b60405161084d959493929190612aba565b60405180910390a35061087f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d9610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061090c57506001600160a01b03831630145b15610943576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094d8484611a2c565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261099e928a921690899088908890600401612bd9565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a1181611bfa565b610a1b8383611c04565b50505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a6e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a76610694565b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee90610ac39089908990899088908890600401612bd9565b600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381163314610b3f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087f8282611cf1565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b7381611bfa565b610b7b611db5565b50565b610b866116b8565b610b8e610694565b610bac8273735b14bb79463307aacbed86daf3322b1e6226ab611a2c565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152819033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f198184030181529082905260008054610c2c936001600160a01b039091169189918190612aba565b60405180910390a3610c5d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cac5750825b905060008267ffffffffffffffff166001148015610cc95750303b155b905081158015610cd7575080155b15610d0e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d6f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716610daf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610db7611e45565b610dbf611e45565b610dc7611e4d565b610dcf611e5d565b610dda600087611c04565b50610e057f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611c04565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610e9a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610eab611e6d565b610eb482611f3d565b610c5d8282611f48565b6000610ec861204e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610f3a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f42610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f7557506001600160a01b03831630145b15610fac576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612c20565b610a76576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110766116b8565b61107e610694565b82336001600160a01b03167f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d38685856040516110bc93929190612c42565b60405180910390a3610a1b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6110f56116b8565b6110fd610694565b60006111098585611739565b90506000336001600160a01b03167fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b5888789868a6001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119e9190612aa1565b8a8a6040516111b39796959493929190612c72565b60405180910390a3506111e560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6111f46116b8565b6111fc610694565b61121a8473735b14bb79463307aacbed86daf3322b1e6226ab611a2c565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab0000000000000000000000006020820152839033907fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f1981840301815290829052600080546110bc936001600160a01b03909116918b9181908b908b90612c72565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112c881611bfa565b610b7b6120b0565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461131d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611325610694565b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90610ac39089908990899088908890600401612bd9565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113bf576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c7610694565b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab14806113fa57506001600160a01b03831630145b15611431576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190612c20565b611325576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461152d81611bfa565b610a1b8383611cf1565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611584576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158c610694565b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806115bf57506001600160a01b03811630145b156115f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116829190612c20565b61087f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611733576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561177b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179f9190612cc7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118489190612c20565b61187e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156118ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190e9190612c20565b611944576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af11580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c89190612c20565b6119fe576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190612c20565b611af6576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611b5557600080fd5b505af1158015611b69573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611bba576040519150601f19603f3d011682016040523d82523d6000602084013e611bbf565b606091505b505090508061087f576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7b8133612129565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611ce7576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c9d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611ce7576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b611dbd6121b6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f0612211565b611e55612211565b6106f0612278565b611e65612211565b6106f06122c9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611f0657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611efa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5d81611bfa565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611fa2575060408051601f3d908101601f19168201909252611f9f91810190612aa1565b60015b611fe8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612044576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611fdf565b61087f83836122d1565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b8610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611e27565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c5d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611fdf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612280612211565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611a06612211565b6122da82612327565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231f5761087f82826123cf565b610c5d612445565b806001600160a01b03163b600003612376576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611fdf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516123ec9190612cf5565b600060405180830381855af49150503d8060008114612427576040519150601f19603f3d011682016040523d82523d6000602084013e61242c565b606091505b509150915061243c85838361247d565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826124925761248d826124f5565b6124ee565b81511580156124a957506001600160a01b0384163b155b156124eb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611fdf565b50805b9392505050565b8051156125055780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561254957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146124ee57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126125b957600080fd5b813567ffffffffffffffff8111156125d3576125d3612579565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff8211171561260357612603612579565b60405281815283820160200185101561261b57600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610b7b57600080fd5b60008060006060848603121561266257600080fd5b833567ffffffffffffffff81111561267957600080fd5b612685868287016125a8565b93505060208401359150604084013561269d81612638565b809150509250925092565b6000606082840312156126ba57600080fd5b50919050565b60008083601f8401126126d257600080fd5b50813567ffffffffffffffff8111156126ea57600080fd5b60208301915083602082850101111561270257600080fd5b9250929050565b60008060008060006080868803121561272157600080fd5b853567ffffffffffffffff81111561273857600080fd5b612744888289016126a8565b95505060208601359350604086013561275c81612638565b9250606086013567ffffffffffffffff81111561277857600080fd5b612784888289016126c0565b969995985093965092949392505050565b6000602082840312156127a757600080fd5b5035919050565b600080604083850312156127c157600080fd5b8235915060208301356127d381612638565b809150509250929050565b60008060008060008060a087890312156127f757600080fd5b863567ffffffffffffffff81111561280e57600080fd5b61281a89828a016126a8565b965050602087013561282b81612638565b945060408701359350606087013561284281612638565b9250608087013567ffffffffffffffff81111561285e57600080fd5b61286a89828a016126c0565b979a9699509497509295939492505050565b6000806040838503121561288f57600080fd5b50508035926020909101359150565b600080604083850312156128b157600080fd5b82356128bc81612638565b915060208301356127d381612638565b600080604083850312156128df57600080fd5b82356128ea81612638565b9150602083013567ffffffffffffffff81111561290657600080fd5b612912858286016125a8565b9150509250929050565b6000806000806060858703121561293257600080fd5b843567ffffffffffffffff81111561294957600080fd5b612955878288016125a8565b94505060208501359250604085013567ffffffffffffffff81111561297957600080fd5b612985878288016126c0565b95989497509550505050565b6000806000806000608086880312156129a957600080fd5b853567ffffffffffffffff8111156129c057600080fd5b612744888289016125a8565b600080600080606085870312156129e257600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561297957600080fd5b60005b83811015612a22578181015183820152602001612a0a565b50506000910152565b60008151808452612a43816020860160208601612a07565b601f01601f19169290920160200192915050565b6020815260006124ee6020830184612a2b565b600080600060608486031215612a7f57600080fd5b8335612a8a81612638565b925060208401359150604084013561269d81612638565b600060208284031215612ab357600080fd5b5051919050565b60c081526000612acd60c0830188612a2b565b6001600160a01b038716602084015285604084015284606084015283608084015282810360a084015260008152602081019150509695505050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612b6a57600080fd5b820160208101903567ffffffffffffffff811115612b8757600080fd5b803603821315612b9657600080fd5b60608552612ba8606086018284612b0b565b9150506020830135612bb981612638565b6001600160a01b0316602085015260409283013592909301919091525090565b608081526000612bec6080830188612b36565b6001600160a01b03871660208401528560408401528281036060840152612c14818587612b0b565b98975050505050505050565b600060208284031215612c3257600080fd5b815180151581146124ee57600080fd5b604081526000612c556040830186612a2b565b8281036020840152612c68818587612b0b565b9695505050505050565b60c081526000612c8560c083018a612a2b565b6001600160a01b038916602084015287604084015286606084015285608084015282810360a0840152612cb9818587612b0b565b9a9950505050505050505050565b60008060408385031215612cda57600080fd5b8251612ce581612638565b6020939093015192949293505050565b60008251612d07818460208701612a07565b919091019291505056fea2646970667358221220d80062e0540ac38d4b4690f67eb67f6597352e50aa6a7cdb180a197da643c76164736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts index 46d1bca3..f1627cbb 100644 --- a/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts +++ b/v2/typechain-types/factories/IGatewayEVM.sol/IGatewayEVM__factory.ts @@ -9,6 +9,106 @@ import type { } from "../../IGatewayEVM.sol/IGatewayEVM"; const _abi = [ + { + type: "function", + name: "call", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "deposit", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "receiver", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "asset", + type: "address", + internalType: "address", + }, + { + name: "payload", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "execute", @@ -33,6 +133,24 @@ const _abi = [ ], stateMutability: "payable", }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "destination", + type: "address", + internalType: "address", + }, + { + name: "data", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "payable", + }, { type: "function", name: "executeWithERC20", diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts index 28a247d5..9411fb85 100644 --- a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVMErrors__factory.ts @@ -49,6 +49,11 @@ const _abi = [ name: "ZRC20BurnFailed", inputs: [], }, + { + type: "error", + name: "ZRC20DepositFailed", + inputs: [], + }, { type: "error", name: "ZRC20TransferFailed", diff --git a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts index a335659a..955b4e4e 100644 --- a/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/IGatewayZEVM.sol/IGatewayZEVM__factory.ts @@ -55,6 +55,51 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "depositAndCall", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct zContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "depositAndCall", @@ -105,6 +150,56 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "depositAndRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "execute", @@ -155,6 +250,56 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "executeRevert", + inputs: [ + { + name: "context", + type: "tuple", + internalType: "struct revertContext", + components: [ + { + name: "origin", + type: "bytes", + internalType: "bytes", + }, + { + name: "sender", + type: "address", + internalType: "address", + }, + { + name: "chainID", + type: "uint256", + internalType: "uint256", + }, + ], + }, + { + name: "zrc20", + type: "address", + internalType: "address", + }, + { + name: "amount", + type: "uint256", + internalType: "uint256", + }, + { + name: "target", + type: "address", + internalType: "address", + }, + { + name: "message", + type: "bytes", + internalType: "bytes", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "function", name: "withdraw", diff --git a/v2/typechain-types/factories/SenderZEVM__factory.ts b/v2/typechain-types/factories/SenderZEVM__factory.ts index b9792ecf..70549204 100644 --- a/v2/typechain-types/factories/SenderZEVM__factory.ts +++ b/v2/typechain-types/factories/SenderZEVM__factory.ts @@ -120,7 +120,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122011f5a132ec30e33aab727a8c0099e5989394033720d9fda5b9669b838309363564736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122077d23238a2e7d47c8bbeab590e5478444c1217f3c032da9d8971c2c3fc1625ce64736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts index 8656717f..8bd35965 100644 --- a/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts +++ b/v2/typechain-types/factories/ZRC20.sol/ZRC20__factory.ts @@ -671,7 +671,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051611ac2380380611ac283398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161168e61043460003960006103280152600081816102d901528181610a1d0152610b23015261168e6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b714610432578063f687d12a1461043b578063fa62d57f1461044e57600080fd5b8063d9eeebed146103a5578063dd62ed3e146103d9578063eddeb1231461041f57600080fd5b8063c7012626116100bd578063c70126261461036a578063c835d7cc1461037d578063ccc775991461039257600080fd5b806395d89b411461031b578063a3413d0314610323578063a9059cbb1461035757600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a082311461029e57806385e1f4d0146102d45780638b851b95146102fb57600080fd5b80633ce4a5bc1461025d57806342966c681461027857806347e7ef241461028b57600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610457565b6040516101b2919061126d565b60405180910390f35b6101ce6101c93660046112ac565b6104e9565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe3660046112d8565b610500565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60095460405160ff90911681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce610286366004611319565b610597565b6101ce6102993660046112ac565b6105ab565b6101e26102ac366004611332565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a56106ff565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b2919061134f565b6101ce6103653660046112ac565b61070e565b6101ce6103783660046113bf565b61071b565b61039061038b366004611332565b61086a565b005b6103906103a0366004611332565b610931565b6103ad6109f1565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e26103e73660046114b7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b61039061042d366004611319565b610c0f565b6101e260025481565b610390610449366004611319565b610c91565b6101e260035481565b606060078054610466906114f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610492906114f0565b80156104df5780601f106104b4576101008083540402835291602001916104df565b820191906000526020600020905b8154815290600101906020018083116104c257829003601f168201915b5050505050905090565b60006104f6338484610d13565b5060015b92915050565b600061050d848484610e1c565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610578576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61058c85336105878685611572565b610d13565b506001949350505050565b60006105a33383610fd7565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105e9575060005473ffffffffffffffffffffffffffffffffffffffff163314155b801561060d575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610644576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064e8383611119565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106ee918690611585565b60405180910390a250600192915050565b606060088054610466906114f0565b60006104f6338484610e1c565b60008060006107286109f1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906115a7565b610814576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081e3385610fd7565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95591610857918991899187916115c9565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108b7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461097e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610926565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906115f8565b905073ffffffffffffffffffffffffffffffffffffffff8116610af7576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190611615565b905080600003610be6576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610bf9919061162e565b610c039190611645565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c5c576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610926565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cde576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610926565b73ffffffffffffffffffffffffffffffffffffffff8316610d60576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610dad576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610e69576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610eb6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610f16576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f208282611572565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610f63908490611645565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc991815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611024576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015611084576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108e8282611572565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812091909155600680548492906110c9908490611572565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e0f565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660008282546111789190611645565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906111b2908490611645565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561122f57602081850181015186830182015201611213565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006112806020830184611209565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112a957600080fd5b50565b600080604083850312156112bf57600080fd5b82356112ca81611287565b946020939093013593505050565b6000806000606084860312156112ed57600080fd5b83356112f881611287565b9250602084013561130881611287565b929592945050506040919091013590565b60006020828403121561132b57600080fd5b5035919050565b60006020828403121561134457600080fd5b813561128081611287565b602081016003831061138a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156113d257600080fd5b823567ffffffffffffffff8111156113e957600080fd5b8301601f810185136113fa57600080fd5b803567ffffffffffffffff81111561141457611414611390565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561148057611480611390565b60405281815282820160200187101561149857600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156114ca57600080fd5b82356114d581611287565b915060208301356114e581611287565b809150509250929050565b600181811c9082168061150457607f821691505b60208210810361153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104fa576104fa611543565b6040815260006115986040830185611209565b90508260208301529392505050565b6000602082840312156115b957600080fd5b8151801515811461128057600080fd5b6080815260006115dc6080830187611209565b6020830195909552506040810192909252606090910152919050565b60006020828403121561160a57600080fd5b815161128081611287565b60006020828403121561162757600080fd5b5051919050565b80820281158282048414176104fa576104fa611543565b808201808211156104fa576104fa61154356fea2646970667358221220ff62fd4bd87c4bd8cb6b710eb3bc879bf82b272805bab80a5c462f9aee4e937164736f6c634300081a0033"; + "0x60e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033"; type ZRC20ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorBase__factory.ts b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts index addcb7b2..c79b6ca4 100644 --- a/v2/typechain-types/factories/ZetaConnectorBase__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorBase__factory.ts @@ -210,19 +210,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "tssAddress", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "unpause", diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts index ce7b5485..59ddd821 100644 --- a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -24,22 +24,22 @@ const _abi = [ type: "constructor", inputs: [ { - name: "_gateway", + name: "gateway_", type: "address", internalType: "address", }, { - name: "_zetaToken", + name: "zetaToken_", type: "address", internalType: "address", }, { - name: "_tssAddress", + name: "tssAddress_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -247,19 +247,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "tssAddress", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "unpause", @@ -611,7 +598,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161163738038061163783398101604081905261002f916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b1561008f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516113836102b4600039600081816101f70152818161046d0152818161051e01528181610638015281816107cc0152818161087d015261094b0152600081816101ab0152818161048f015281816104f1015281816107ee015261085001526113836000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635b112591116100cd57806385f438c111610081578063a217fddf11610066578063a217fddf1461033e578063d547741f14610346578063e63ab1e91461035957600080fd5b806385f438c1146102d157806391d14854146102f857600080fd5b80635e3e9fef116100b25780635e3e9fef146102a3578063743e0c9b146102b65780638456cb59146102c957600080fd5b80635b112591146102785780635c975abb1461029857600080fd5b806321e093b1116101245780632f2ff15d116101095780632f2ff15d1461024a57806336568abe1461025d5780633f4ba83a1461027057600080fd5b806321e093b1146101f2578063248a9ca31461021957600080fd5b806301ffc9a71461015657806302d5c8991461017e578063106e629014610193578063116191b6146101a6575b600080fd5b6101696101643660046110be565b610380565b60405190151581526020015b60405180910390f35b61019161018c366004611129565b610419565b005b6101916101a13660046111bb565b6105e4565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b61023c6102273660046111ee565b60009081526002602052604090206001015490565b604051908152602001610175565b610191610258366004611207565b6106bf565b61019161026b366004611207565b6106ea565b610191610743565b6003546101cd9073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff16610169565b6101916102b1366004611129565b610778565b6101916102c43660046111ee565b610929565b610191610973565b61023c7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610169610306366004611207565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61023c600081565b610191610354366004611207565b6109a5565b61023c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6104216109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044b81610a0d565b610453610a17565b6104b473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd49061054e907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b15801561056857600080fd5b505af115801561057c573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8686866040516105ca939291906112d9565b60405180910390a2506105dd6001600055565b5050505050565b6105ec6109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461061681610a0d565b61061e610a17565b61065f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a56565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364846040516106a791815260200190565b60405180910390a2506106ba6001600055565b505050565b6000828152600260205260409020600101546106da81610a0d565b6106e48383610ad7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610739576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ba8282610bd7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61076d81610a0d565b610775610c96565b50565b6107806109ca565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107aa81610a0d565b6107b2610a17565b61081373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a56565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab59906108ad907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161127c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8686866040516105ca939291906112d9565b610931610a17565b61077573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610d13565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099d81610a0d565b610775610d59565b6000828152600260205260409020600101546109c081610a0d565b6106e48383610bd7565b600260005403610a06576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6107758133610db2565b60015460ff1615610a54576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526106ba91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e43565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b6d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610413565b506000610413565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610bcf57600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610413565b610c9e610ed9565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106e49186918216906323b872dd90608401610a90565b610d61610a17565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610ce9565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e6573ffffffffffffffffffffffffffffffffffffffff841683610f15565b90508051600014158015610e8a575080806020019051810190610e8891906112fc565b155b156106ba576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e36565b60015460ff16610a54576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610f2383836000610f2a565b9392505050565b606081471015610f68576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610e36565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f91919061131e565b60006040518083038185875af1925050503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150610fe3868383610fed565b9695505050505050565b60608261100257610ffd8261107c565b610f23565b8151158015611026575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611075576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610e36565b5080610f23565b80511561108c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610f2357600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461112457600080fd5b919050565b60008060008060006080868803121561114157600080fd5b61114a86611100565b945060208601359350604086013567ffffffffffffffff81111561116d57600080fd5b8601601f8101881361117e57600080fd5b803567ffffffffffffffff81111561119557600080fd5b8860208284010111156111a757600080fd5b959894975060200195606001359392505050565b6000806000606084860312156111d057600080fd5b6111d984611100565b95602085013595506040909401359392505050565b60006020828403121561120057600080fd5b5035919050565b6000806040838503121561121a57600080fd5b8235915061122a60208401611100565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112ce608083018486611233565b979650505050505050565b8381526040602082015260006112f3604083018486611233565b95945050505050565b60006020828403121561130e57600080fd5b81518015158114610f2357600080fd5b6000825160005b8181101561133f5760208186018101518583015201611325565b50600092019182525091905056fea264697066735822122076f21f1ac8f2c01b56f41facd345cbe7bb75624ae7a01f61b68ad17dc9af27a464736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] @@ -631,32 +618,32 @@ export class ZetaConnectorNative__factory extends ContractFactory { } override getDeployTransaction( - _gateway: AddressLike, - _zetaToken: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + zetaToken_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( - _gateway, - _zetaToken, - _tssAddress, - _admin, + gateway_, + zetaToken_, + tssAddress_, + admin_, overrides || {} ); } override deploy( - _gateway: AddressLike, - _zetaToken: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + zetaToken_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( - _gateway, - _zetaToken, - _tssAddress, - _admin, + gateway_, + zetaToken_, + tssAddress_, + admin_, overrides || {} ) as Promise< ZetaConnectorNative & { diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts index b37e3908..c3d658f7 100644 --- a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -24,22 +24,22 @@ const _abi = [ type: "constructor", inputs: [ { - name: "_gateway", + name: "gateway_", type: "address", internalType: "address", }, { - name: "_zetaToken", + name: "zetaToken_", type: "address", internalType: "address", }, { - name: "_tssAddress", + name: "tssAddress_", type: "address", internalType: "address", }, { - name: "_admin", + name: "admin_", type: "address", internalType: "address", }, @@ -246,7 +246,7 @@ const _abi = [ name: "setMaxSupply", inputs: [ { - name: "_maxSupply", + name: "maxSupply_", type: "uint256", internalType: "uint256", }, @@ -273,19 +273,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "tssAddress", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "unpause", @@ -617,7 +604,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405260001960045534801561001657600080fd5b5060405161182a38038061182a833981016040819052610035916101fb565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b156100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0384811660805283811660a052600380546001600160a01b0319169184169190911790556100cb60008261012f565b506100f67f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361012f565b506101217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8261012f565b50505050505050505061024f565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101d55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561018d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d9565b5060005b92915050565b80516001600160a01b03811681146101f657600080fd5b919050565b6000806000806080858703121561021157600080fd5b61021a856101df565b9350610228602086016101df565b9250610236604086016101df565b9150610244606086016101df565b905092959194509250565b60805160a05161155b6102cf6000396000818161021d0152818161049a015281816105dc015281816106a2015281816107a7015281816108c901528181610a7d01528181610bbf01528181610c850152610ddc0152600081816101d1015281816105a60152818161067301528181610b890152610c56015261155b6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c975abb116100d857806385f438c11161008c578063d547741f11610066578063d547741f1461037f578063d5abeb0114610392578063e63ab1e91461039b57600080fd5b806385f438c11461030a57806391d1485414610331578063a217fddf1461037757600080fd5b80636f8b44b0116100bd5780636f8b44b0146102dc578063743e0c9b146102ef5780638456cb591461030257600080fd5b80635c975abb146102be5780635e3e9fef146102c957600080fd5b8063248a9ca31161012f57806336568abe1161011457806336568abe146102835780633f4ba83a146102965780635b1125911461029e57600080fd5b8063248a9ca31461023f5780632f2ff15d1461027057600080fd5b8063106e629011610160578063106e6290146101b9578063116191b6146101cc57806321e093b11461021857600080fd5b806301ffc9a71461017c57806302d5c899146101a4575b600080fd5b61018f61018a36600461128d565b6103c2565b60405190151581526020015b60405180910390f35b6101b76101b23660046112ff565b61045b565b005b6101b76101c7366004611391565b610768565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b61026261024d3660046113c4565b60009081526002602052604090206001015490565b60405190815260200161019b565b6101b761027e3660046113dd565b610985565b6101b76102913660046113dd565b6109b0565b6101b7610a09565b6003546101f39073ffffffffffffffffffffffffffffffffffffffff1681565b60015460ff1661018f565b6101b76102d73660046112ff565b610a3e565b6101b76102ea3660046113c4565b610d31565b6101b76102fd3660046113c4565b610d9f565b6101b7610e49565b6102627f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61018f61033f3660046113dd565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610262600081565b6101b761038d3660046113dd565b610e7b565b61026260045481565b6102627f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610463610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461048d81610ee3565b610495610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105279190611409565b6105319087611422565b1115610569576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106d2907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161074e93929190611502565b60405180910390a2506107616001600055565b5050505050565b610770610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461079a81610ee3565b6107a2610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611409565b61083e9085611422565b1115610876576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161096d91815260200190565b60405180910390a2506109806001600055565b505050565b6000828152600260205260409020600101546109a081610ee3565b6109aa8383610f2c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ff576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610980828261102c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a3381610ee3565b610a3b6110eb565b50565b610a46610ea0565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a7081610ee3565b610a78610eed565b6004547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611409565b610b149087611422565b1115610b4c576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610cb5907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a906004016114a5565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161074e93929190611502565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d5b81610ee3565b610d63610eed565b60048290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610da7610eed565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e3557600080fd5b505af1158015610761573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e7381610ee3565b610a3b611168565b600082815260026020526040902060010154610e9681610ee3565b6109aa838361102c565b600260005403610edc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a3b81336111c1565b60015460ff1615610f2a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fc23390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610455565b506000610455565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561102457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610455565b6110f3611251565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611170610eed565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361113e565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661124d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610f2a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561129f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cf57600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112fa57600080fd5b919050565b60008060008060006080868803121561131757600080fd5b611320866112d6565b945060208601359350604086013567ffffffffffffffff81111561134357600080fd5b8601601f8101881361135457600080fd5b803567ffffffffffffffff81111561136b57600080fd5b88602082840101111561137d57600080fd5b959894975060200195606001359392505050565b6000806000606084860312156113a657600080fd5b6113af846112d6565b95602085013595506040909401359392505050565b6000602082840312156113d657600080fd5b5035919050565b600080604083850312156113f057600080fd5b82359150611400602084016112d6565b90509250929050565b60006020828403121561141b57600080fd5b5051919050565b80820180821115610455577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114f760808301848661145c565b979650505050505050565b83815260406020820152600061151c60408301848661145c565b9594505050505056fea2646970667358221220c864e28878a70f2d629a9a8bcc8540adbc24308f0bdca4bb9f799c9b08a4b8fc64736f6c634300081a0033"; + "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] @@ -637,32 +624,32 @@ export class ZetaConnectorNonNative__factory extends ContractFactory { } override getDeployTransaction( - _gateway: AddressLike, - _zetaToken: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + zetaToken_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ): Promise { return super.getDeployTransaction( - _gateway, - _zetaToken, - _tssAddress, - _admin, + gateway_, + zetaToken_, + tssAddress_, + admin_, overrides || {} ); } override deploy( - _gateway: AddressLike, - _zetaToken: AddressLike, - _tssAddress: AddressLike, - _admin: AddressLike, + gateway_: AddressLike, + zetaToken_: AddressLike, + tssAddress_: AddressLike, + admin_: AddressLike, overrides?: NonPayableOverrides & { from?: string } ) { return super.deploy( - _gateway, - _zetaToken, - _tssAddress, - _admin, + gateway_, + zetaToken_, + tssAddress_, + admin_, overrides || {} ) as Promise< ZetaConnectorNonNative & { From 9d902b9909ea75fb90c9b1edca48eb82b55394f6 Mon Sep 17 00:00:00 2001 From: skosito Date: Mon, 5 Aug 2024 18:11:13 +0200 Subject: [PATCH 60/60] generate --- v1/contracts/evm/ZetaConnector.non-eth.sol | 6 +++--- v2/pkg/erc20custody.sol/erc20custody.go | 2 +- .../erc20custodyechidnatest.sol/erc20custodyechidnatest.go | 2 +- v2/pkg/gatewayevm.sol/gatewayevm.go | 2 +- v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go | 2 +- v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 2 +- v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go | 2 +- v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go | 2 +- v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go | 2 +- v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go | 2 +- v2/pkg/zetaconnectornative.sol/zetaconnectornative.go | 2 +- v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go | 2 +- v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go | 2 +- .../zetaconnectornonnativetest.go | 2 +- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- .../factories/ERC20CustodyEchidnaTest__factory.ts | 2 +- v2/typechain-types/factories/ERC20Custody__factory.ts | 2 +- .../factories/GatewayEVMEchidnaTest__factory.ts | 2 +- .../factories/GatewayEVMUpgradeTest__factory.ts | 2 +- v2/typechain-types/factories/GatewayEVM__factory.ts | 2 +- .../factories/ZetaConnectorNative__factory.ts | 2 +- .../factories/ZetaConnectorNonNative__factory.ts | 2 +- 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/v1/contracts/evm/ZetaConnector.non-eth.sol b/v1/contracts/evm/ZetaConnector.non-eth.sol index 0673fab6..2844bcd8 100644 --- a/v1/contracts/evm/ZetaConnector.non-eth.sol +++ b/v1/contracts/evm/ZetaConnector.non-eth.sol @@ -28,9 +28,9 @@ contract ZetaConnectorNonEth is ZetaConnectorBase { return ZetaNonEthInterface(zetaToken).balanceOf(address(this)); } - function setMaxSupply(uint256 _maxSupply) external onlyTssAddress { - maxSupply = _maxSupply; - emit MaxSupplyUpdated(msg.sender, _maxSupply); + function setMaxSupply(uint256 maxSupply_) external onlyTssAddress { + maxSupply = maxSupply_; + emit MaxSupplyUpdated(msg.sender, maxSupply_); } /** diff --git a/v2/pkg/erc20custody.sol/erc20custody.go b/v2/pkg/erc20custody.sol/erc20custody.go index 55c557f4..7abae95e 100644 --- a/v2/pkg/erc20custody.sol/erc20custody.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033", + Bin: "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a0033", } // ERC20CustodyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go index 74076e13..2d06346e 100644 --- a/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go +++ b/v2/pkg/erc20custodyechidnatest.sol/erc20custodyechidnatest.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyEchidnaTestMetaData contains all meta data concerning the ERC20CustodyEchidnaTest contract. var ERC20CustodyEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220d8ef89ac8396bd464c454946f52477d7c7b7dd83faf0948efc8239094b648cb764736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", + Bin: "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220c22f4256b34c7ceff39a5acf8d5ae318549565a6265a9a23b2d9459a9845ff3f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", } // ERC20CustodyEchidnaTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go index 29644cdd..5eb9dcca 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -32,7 +32,7 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"zetaConnector_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"custody_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea2646970667358221220a687edeef343516f84769d1a465816f153b29abeb9124499976e38f91c91a58864736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea26469706673582212208889b449de125bcd9995c2452115e4c4e941948f5ff17d068f0677c925a7730064736f6c634300081a0033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go index 7ac62ad9..1a9ebe47 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. var GatewayEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061b7c0806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610cb3565b6040516101b691906168aa565b60405180910390f35b6101c7610d15565b6040516101b69190616946565b61018f610e57565b6101a96112c4565b6101a9611324565b61018f611384565b6101fc611781565b6040516101b69190616aac565b610211611903565b6040516101b69190616b4a565b6102266119d3565b6040516101b69190616bc1565b61018f611ace565b61018f611cea565b610226611ecf565b610211611fca565b61025b61209a565b60405190151581526020016101b6565b61018f61216e565b61018f612308565b6101a96124b7565b61018f612517565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c87565b826126b9565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce906167ca565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610698906167ca565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261080d919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052612738565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754602554604051929391821692911690610899906167d7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108d5573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546025546040519385169492831693918316921690610930906167e4565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610974573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610d0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ced575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e37578382906000526020600020018054610daa90616c9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd690616c9a565b8015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b505050505081526020019060010190610d8b565b505050508152505081526020019060010190610d39565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190616ce7565b9050610ef46000826126b9565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110f1928992909116908790616d22565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361115293908216928992909116908790600401616d4a565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190616ce7565b905061121c84826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190616ce7565b90506112bd856028546105719190616d81565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190616ce7565b90506114216000826126b9565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190616ce7565b90506116e083826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190616ce7565b9050610cad846028546105719190616d81565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002090600202016040518060400160405290816000820180546117d890616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461180490616c9a565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118985790505b505050505081525050815260200190600101906117a5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461194690616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461197290616c9a565b80156119bf5780601f10611994576101008083540402835291602001916119bf565b820191906000526020600020905b8154815290600101906020018083116119a257829003601f168201915b505050505081526020019060010190611927565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ab657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a635790505b505050505081525050815260200190600101906119f7565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c419087906000908790616d22565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c9b92909116908690600401616d94565b6000604051808303818588803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b50506027546001600160a01b0316319250610cad915061057190508585616c87565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e4a908590616db6565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611ea1929116908590600401616d94565b600060405180830381600087803b158015611ebb57600080fd5b505af11580156112bd573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fb257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f5f5790505b50505050508152505081526020019060010190611ef3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461200d90616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461203990616c9a565b80156120865780601f1061205b57610100808354040283529160200191612086565b820191906000526020600020905b81548152906001019060200180831161206957829003601f168201915b505050505081526020019060010190611fee565b60085460009060ff16156120b2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190616ce7565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122659060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561227f57600080fd5b505af1158015612293573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122ee9392831692889216908790600401616d4a565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123ff9060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124819216908690600401616d94565b6000604051808303818588803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561258a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ae9190616d00565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611ea1565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561272457600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127426167f1565b61274d848483612757565b9150505b92915050565b60008061276485846127d2565b90506127c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016127b2929190616d94565b604051602081830303815290604052856127de565b9150505b9392505050565b60006127cb838361280c565b60c08101515160009015612802576127fb84848460c00151612827565b90506127cb565b6127fb84846129cd565b60006128188383612ab8565b6127cb838360200151846127de565b600080612832612ac8565b905060006128408683612b9b565b905060006128578260600151836020015185613041565b9050600061286783838989613253565b90506000612874826140d0565b602081015181519192509060030b156128e75789826040015160405160200161289e929190616dc9565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128de91600401616db6565b60405180910390fd5b600061292a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161429f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061297d908490600401616db6565b602060405180830381865afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190616e4a565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590612a22908790600401616db6565b600060405180830381865afa158015612a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a679190810190616f5b565b90506000612a958285604051602001612a81929190616f90565b60405160208183030381529060405261449f565b90506001600160a01b03811661274d57848460405160200161289e929190616fbf565b612ac4828260006144b2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b4f90849060040161706a565b600060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9491908101906170b1565b9250505090565b612bcd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612c186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612c21856145b5565b60208201526000612c318661499a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9b91908101906170b1565b86838560200151604051602001612cb594939291906170fa565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612d0d908590600401616db6565b600060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906170b1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d9a9084906004016171fe565b602060405180830381865afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190616d00565b612df0578160405160200161289e9190617250565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e359084906004016172e2565b600060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7a91908101906170b1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612ec1908490600401617334565b602060405180830381865afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190616d00565b15612f97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f4c908490600401617334565b600060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9191908101906170b1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612fbc9190617386565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fe89291906173f2565b600060405180830381865afa158015613005573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302d91908101906170b1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161305d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106130bd576130bd617417565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061311157613111617417565b60200260200101819052508460405160200161312d9190617446565b6040516020818303038152906040528160028151811061314f5761314f617417565b60200260200101819052508260405160200161316b91906174b2565b6040516020818303038152906040528160038151811061318d5761318d617417565b602002602001018190525060006131a3826140d0565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132349060408051808201825260008082526020918201528151808301909252845182528085019082015290614c1d565b613249578560405160200161289e91906174f3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156132a3565b511590565b6134175782602001511561335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128de565b8260c0015115613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128de565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161343057905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061348b90617584565b935060ff16815181106134a0576134a0617417565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134f191906175a3565b60405160208183030381529060405282828061350c90617584565b935060ff168151811061352157613521617417565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061356e90617584565b935060ff168151811061358357613583617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135d090617584565b935060ff16815181106135e5576135e5617417565b6020026020010181905250876020015182828061360190617584565b935060ff168151811061361657613616617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061366390617584565b935060ff168151811061367857613678617417565b60209081029190910101528751828261369081617584565b935060ff16815181106136a5576136a5617417565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136f290617584565b935060ff168151811061370757613707617417565b602002602001018190525061371b46614c7e565b828261372681617584565b935060ff168151811061373b5761373b617417565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061378890617584565b935060ff168151811061379d5761379d617417565b6020026020010181905250868282806137b590617584565b935060ff16815181106137ca576137ca617417565b60209081029190910101528551156138f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261381b81617584565b935060ff168151811061383057613830617417565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613880908990600401616db6565b600060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138c591908101906170b1565b82826138d081617584565b935060ff16815181106138e5576138e5617417565b60200260200101819052505b8460200151156139c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261393a81617584565b935060ff168151811061394f5761394f617417565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061399c90617584565b935060ff16815181106139b1576139b1617417565b6020026020010181905250613b88565b6139f961329e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a8c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a3c81617584565b935060ff1681518110613a5157613a51617417565b60200260200101819052508460a00151604051602001613a719190617446565b60405160208183030381529060405282828061399c90617584565b8460c00151158015613acf575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613acd90511590565b155b15613b885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613b1381617584565b935060ff1681518110613b2857613b28617417565b6020026020010181905250613b3c88614d1e565b604051602001613b4c9190617446565b604051602081830303815290604052828280613b6790617584565b935060ff1681518110613b7c57613b7c617417565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613bbc90511590565b613c515760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bff81617584565b935060ff1681518110613c1457613c14617417565b60200260200101819052508460400151828280613c3090617584565b935060ff1681518110613c4557613c45617417565b60200260200101819052505b606085015115613d725760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c9a81617584565b935060ff1681518110613caf57613caf617417565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d4691908101906170b1565b8282613d5181617584565b935060ff1681518110613d6657613d66617417565b60200260200101819052505b60e08501515115613e195760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613dbc81617584565b935060ff1681518110613dd157613dd1617417565b6020026020010181905250613ded8560e0015160000151614c7e565b8282613df881617584565b935060ff1681518110613e0d57613e0d617417565b60200260200101819052505b60e08501516020015115613ec35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e6681617584565b935060ff1681518110613e7b57613e7b617417565b6020026020010181905250613e978560e0015160200151614c7e565b8282613ea281617584565b935060ff1681518110613eb757613eb7617417565b60200260200101819052505b60e08501516040015115613f6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613f1081617584565b935060ff1681518110613f2557613f25617417565b6020026020010181905250613f418560e0015160400151614c7e565b8282613f4c81617584565b935060ff1681518110613f6157613f61617417565b60200260200101819052505b60e085015160600151156140175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613fba81617584565b935060ff1681518110613fcf57613fcf617417565b6020026020010181905250613feb8560e0015160600151614c7e565b8282613ff681617584565b935060ff168151811061400b5761400b617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561403557614035616e73565b60405190808252806020026020018201604052801561406857816020015b60608152602001906001900390816140535790505b50905060005b8260ff168160ff1610156140c157838160ff168151811061409157614091617417565b6020026020010151828260ff16815181106140ae576140ae617417565b602090810291909101015260010161406e565b5093505050505b949350505050565b6140f76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161417d9186910161760e565b600060405180830381865afa15801561419a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141c291908101906170b1565b905060006141d0868361580d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016142009190616b4a565b6000604051808303816000875af115801561421f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142479190810190617655565b805190915060030b158015906142605750602081015151155b801561426f5750604081015151155b15613249578160008151811061428757614287617417565b602002602001015160405160200161289e919061770b565b606060006142d48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061430b9082905b90615962565b15614468576000614388826143828461437c61434e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90615989565b906159eb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143ec908290615962565b1561445657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614453905b8290615a70565b90505b61445f81615a96565b925050506127cb565b821561448157848460405160200161289e9291906178f7565b50506040805160208101909152600081526127cb565b509392505050565b6000808251602084016000f09392505050565b8160a00151156144c157505050565b60006144ce848484615aff565b905060006144db826140d0565b602081015181519192509060030b1580156145775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790604080518082018252600080825260209182015281518083019092528451825280850190820152614305565b1561458457505050505050565b604082015151156145a457816040015160405160200161289e919061799e565b8060405160200161289e91906179fc565b606060006145ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061464f905b8290614c1d565b156146be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b990839061609a565b615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614720905b8290616124565b6001036147ed57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147869061444c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9905b8390615a70565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261484c90614648565b1561498357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906148b49083906161be565b9050600081600183516148c79190616d81565b815181106148d7576148d7617417565b6020026020010151905061497a6146b961494d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061609a565b95945050505050565b8260405160200161289e9190617a67565b50919050565b606060006149cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a3190614648565b15614a3f576127cb81615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a9e90614719565b600103614b0857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9906147e6565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b6790614648565b1561498357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614bcf9083906161be565b9050600181511115614c0b578060028251614bea9190616d81565b81518110614bfa57614bfa617417565b602002602001015192505050919050565b508260405160200161289e9190617a67565b805182516000911115614c3257506000612751565b81518351602085015160009291614c4891616c87565b614c529190616d81565b905082602001518103614c69576001915050612751565b82516020840151819020912014905092915050565b60606000614c8b83616263565b600101905060008167ffffffffffffffff811115614cab57614cab616e73565b6040519080825280601f01601f191660200182016040528015614cd5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cdf57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614daa905b8290616345565b15614dea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e4990614da3565b15614e8957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ee890614da3565b15614f2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f8790614da3565b80614fec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fec90614da3565b1561502c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261508b90614da3565b806150f05750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f090614da3565b1561513057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261518f90614da3565b806151f45750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151f490614da3565b1561523457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529390614da3565b806152f85750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152f890614da3565b1561533857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261539790614da3565b156153d757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261543690614da3565b1561547657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d590614da3565b1561551557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261557490614da3565b156155b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261561390614da3565b1561565357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156b290614da3565b806157175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261571790614da3565b1561575757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157b690614da3565b156157f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161289e9290602001617b45565b60608060005b8451811015615898578185828151811061582f5761582f617417565b6020026020010151604051602001615848929190616f90565b6040516020818303038152906040529150600185516158679190616d81565b8114615890578160405160200161587e9190617cae565b60405160208183030381529060405291505b600101615813565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816158b157905050905083816000815181106158dc576158dc617417565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061593057615930617417565b6020026020010181905250818160028151811061594f5761594f617417565b6020908102919091010152949350505050565b60208083015183518351928401516000936159809291849190616359565b14159392505050565b604080518082019091526000808252602082015260006159bb846000015185602001518560000151866020015161646a565b90508360200151816159cd9190616d81565b845185906159dc908390616d81565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615a10575081612751565b6020808301519084015160019114615a375750815160208481015190840151829020919020145b8015615a6857825184518590615a4e908390616d81565b9052508251602085018051615a64908390616c87565b9052505b509192915050565b6040805180820190915260008082526020820152615a8f83838361658a565b5092915050565b60606000826000015167ffffffffffffffff811115615ab757615ab7616e73565b6040519080825280601f01601f191660200182016040528015615ae1576020820181803683370190505b5090506000602082019050615a8f8185602001518660000151616635565b60606000615b0b612ac8565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615b2857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b8390617584565b935060ff1681518110615b9857615b98617417565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615be99190617cef565b604051602081830303815290604052828280615c0490617584565b935060ff1681518110615c1957615c19617417565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c6690617584565b935060ff1681518110615c7b57615c7b617417565b602002602001018190525082604051602001615c9791906174b2565b604051602081830303815290604052828280615cb290617584565b935060ff1681518110615cc757615cc7617417565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615d1490617584565b935060ff1681518110615d2957615d29617417565b6020026020010181905250615d3e87846166af565b8282615d4981617584565b935060ff1681518110615d5e57615d5e617417565b602090810291909101015285515115615e0a5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615db081617584565b935060ff1681518110615dc557615dc5617417565b6020026020010181905250615dde8660000151846166af565b8282615de981617584565b935060ff1681518110615dfe57615dfe617417565b60200260200101819052505b856080015115615e785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e5381617584565b935060ff1681518110615e6857615e68617417565b6020026020010181905250615ede565b8415615ede5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615ebd81617584565b935060ff1681518110615ed257615ed2617417565b60200260200101819052505b60408601515115615f7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615f2881617584565b935060ff1681518110615f3d57615f3d617417565b60200260200101819052508560400151828280615f5990617584565b935060ff1681518110615f6e57615f6e617417565b60200260200101819052505b856060015115615fe45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615fc381617584565b935060ff1681518110615fd857615fd8617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561600257616002616e73565b60405190808252806020026020018201604052801561603557816020015b60608152602001906001900390816160205790505b50905060005b8260ff168160ff16101561608e57838160ff168151811061605e5761605e617417565b6020026020010151828260ff168151811061607b5761607b617417565b602090810291909101015260010161603b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156160bf575081612751565b815183516020850151600092916160d591616c87565b6160df9190616d81565b60208401519091506001908214616100575082516020840151819020908220145b801561611b57835185518690616117908390616d81565b9052505b50929392505050565b6000808260000151616148856000015186602001518660000151876020015161646a565b6161529190616c87565b90505b835160208501516161669190616c87565b8111615a8f578161617681617d34565b92505082600001516161ad8560200151836161919190616d81565b865161619d9190616d81565b838660000151876020015161646a565b6161b79190616c87565b9050616155565b606060006161cc8484616124565b6161d7906001616c87565b67ffffffffffffffff8111156161ef576161ef616e73565b60405190808252806020026020018201604052801561622257816020015b606081526020019060019003908161620d5790505b50905060005b81518110156144975761623e6146b98686615a70565b82828151811061625057616250617417565b6020908102919091010152600101616228565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106162ac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162d8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162f657662386f26fc10000830492506010015b6305f5e100831061630e576305f5e100830492506008015b612710831061632257612710830492506004015b60648310616334576064830492506002015b600a83106127515760010192915050565b600061635183836166ef565b159392505050565b600080858411616460576020841161640c57600084156163a4576001616380866020616d81565b61638b906008617d4e565b616396906002617e4c565b6163a09190616d81565b1990505b83518116856163b38989616c87565b6163bd9190616d81565b805190935082165b8181146163f7578784116163df57879450505050506140c8565b836163e981617e58565b9450508284511690506163c5565b6164018785616c87565b9450505050506140c8565b8383206164198588616d81565b6164239087616c87565b91505b85821061645e5784822080820361644b576164418684616c87565b93505050506140c8565b616456600184616d81565b925050616426565b505b5092949350505050565b60008381868511616575576020851161652457600085156164b6576001616492876020616d81565b61649d906008617d4e565b6164a8906002617e4c565b6164b29190616d81565b1990505b845181166000876164c78b8b616c87565b6164d19190616d81565b855190915083165b828114616516578186106164fe576164f18b8b616c87565b96505050505050506140c8565b8561650881617d34565b9650508386511690506164d9565b8596505050505050506140c8565b508383206000905b6165368689616d81565b82116165735785832080820361655257839450505050506140c8565b61655d600185616c87565b935050818061656b90617d34565b92505061652c565b505b61657f8787616c87565b979650505050505050565b604080518082019091526000808252602082015260006165bc856000015186602001518660000151876020015161646a565b6020808701805191860191909152519091506165d89082616d81565b8352845160208601516165eb9190616c87565b81036165fa576000855261662c565b835183516166089190616c87565b85518690616617908390616d81565b90525083516166269082616c87565b60208601525b50909392505050565b6020811061666d578151835261664c602084616c87565b9250616659602083616c87565b9150616666602082616d81565b9050616635565b600019811561669c576001616683836020616d81565b61668f90610100617e4c565b6166999190616d81565b90505b9151835183169219169190911790915250565b606060006166bd8484612b9b565b80516020808301516040519394506166d793909101617e6f565b60405160208183030381529060405291505092915050565b8151815160009190811115616702575081515b6020808501519084015160005b838110156167bb578251825180821461678b57600019602087101561676a5760018461673c896020616d81565b6167469190616c87565b616751906008617d4e565b61675c906002617e4c565b6167669190616d81565b1990505b81811683821681810391146167885797506127519650505050505050565b50505b616796602086616c87565b94506167a3602085616c87565b935050506020816167b49190616c87565b905061670f565b50845186516132499190617ec7565b610c9f80617ee883390190565b61140b80618b8783390190565b6117f980619f9283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001616834616839565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168346040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168eb5783516001600160a01b03168352602093840193909201916001016168c4565b509095945050505050565b60005b838110156169115781810151838201526020016168f9565b50506000910152565b600081518084526169328160208601602086016168f6565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352616a1284865161691a565b60209586019590945092909201916001016169d8565b50919750505060209485019492909201915060010161696e565b50929695505050505050565b600081518084526020840193506020830160005b82811015616aa25781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a62565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616b18604088018261691a565b9050602082015191508681036020880152616b338183616a4e565b965050506020938401939190910190600101616ad4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616bac85835161691a565b94506020938401939190910190600101616b72565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c426040870182616a4e565b9550506020938401939190910190600101616be9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561275157612751616c58565b600181811c90821680616cae57607f821691505b602082108103614994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616cf957600080fd5b5051919050565b600060208284031215616d1257600080fd5b815180151581146127cb57600080fd5b8381526001600160a01b038316602082015260606040820152600061497a606083018461691a565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000613249608083018461691a565b8181038181111561275157612751616c58565b6001600160a01b03831681526040602082015260006140c8604083018461691a565b6020815260006127cb602083018461691a565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616e0181601a8501602088016168f6565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e3e81601c8401602088016168f6565b01601c01949350505050565b600060208284031215616e5c57600080fd5b81516001600160a01b03811681146127cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616ec557616ec5616e73565b60405290565b60008067ffffffffffffffff841115616ee657616ee6616e73565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616f1557616f15616e73565b604052838152905080828401851015616f2d57600080fd5b6144978460208301856168f6565b600082601f830112616f4c57600080fd5b6127cb83835160208501616ecb565b600060208284031215616f6d57600080fd5b815167ffffffffffffffff811115616f8457600080fd5b61274d84828501616f3b565b60008351616fa28184602088016168f6565b835190830190616fb68183602088016168f6565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616ff781601a8501602088016168f6565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170348160338401602088016168f6565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006127cb608083018461691a565b6000602082840312156170c357600080fd5b815167ffffffffffffffff8111156170da57600080fd5b8201601f810184136170eb57600080fd5b61274d84825160208401616ecb565b6000855161710c818460208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551617146816001840160208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171848160028401602089016168f6565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516171c68160028401602088016168f6565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000617211604083018461691a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161728881601f8501602087016168f6565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172f5604083018461691a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000617347604083018461691a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173be8160148501602087016168f6565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000617405604083018561691a565b82810360208401526127c7818561691a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161747e8160018501602087016168f6565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174c48184602087016168f6565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161757781604b8501602087016168f6565b91909101604b0192915050565b600060ff821660ff810361759a5761759a616c58565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006127cb608083018461691a565b60006020828403121561766757600080fd5b815167ffffffffffffffff81111561767e57600080fd5b82016060818503121561769057600080fd5b617698616ea2565b81518060030b81146176a957600080fd5b8152602082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f3b565b602083015250604082015167ffffffffffffffff8111156176f157600080fd5b6176fd86828501616f3b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516177698160218501602087016168f6565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179558160218501602088016168f6565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161799281602e8401602088016168f6565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a5a8160228501602087016168f6565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a9f81600e8501602087016168f6565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b7d8160188501602088016168f6565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617bba81601c8401602088016168f6565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617cc08184602087016168f6565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617d2781601c8501602087016168f6565b91909101601c0192915050565b60006000198203617d4757617d47616c58565b5060010190565b808202811582820484141761275157612751616c58565b6001815b6001841115617da057808504811115617d8457617d84616c58565b6001841615617d9257908102905b60019390931c928002617d69565b935093915050565b600082617db757506001612751565b81617dc457506000612751565b8160018114617dda5760028114617de457617e00565b6001915050612751565b60ff841115617df557617df5616c58565b50506001821b612751565b5060208310610133831016604e8410600b8410161715617e23575081810a612751565b617e306000198484617d65565b8060001904821115617e4457617e44616c58565b029392505050565b60006127cb8383617da8565b600081617e6757617e67616c58565b506000190190565b60008351617e818184602088016168f6565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617ebb8160018401602088016168f6565b01600101949350505050565b8181036000831280158383131683831282161715615a8f57615a8f616c5856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033a2646970667358221220c17b103ffe1176e5b14db0e4ed5f4a2d1321456c8f4ac7dca007d03fe908054364736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061b7c0806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610cb3565b6040516101b691906168aa565b60405180910390f35b6101c7610d15565b6040516101b69190616946565b61018f610e57565b6101a96112c4565b6101a9611324565b61018f611384565b6101fc611781565b6040516101b69190616aac565b610211611903565b6040516101b69190616b4a565b6102266119d3565b6040516101b69190616bc1565b61018f611ace565b61018f611cea565b610226611ecf565b610211611fca565b61025b61209a565b60405190151581526020016101b6565b61018f61216e565b61018f612308565b6101a96124b7565b61018f612517565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c87565b826126b9565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce906167ca565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610698906167ca565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261080d919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052612738565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754602554604051929391821692911690610899906167d7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108d5573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546025546040519385169492831693918316921690610930906167e4565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610974573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610d0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ced575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e37578382906000526020600020018054610daa90616c9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd690616c9a565b8015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b505050505081526020019060010190610d8b565b505050508152505081526020019060010190610d39565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190616ce7565b9050610ef46000826126b9565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110f1928992909116908790616d22565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361115293908216928992909116908790600401616d4a565b600060405180830381600087803b15801561116c57600080fd5b505af1158015611180573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190616ce7565b905061121c84826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190616ce7565b90506112bd856028546105719190616d81565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114149190616ce7565b90506114216000826126b9565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190616d00565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561163057600080fd5b505af1158015611644573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190616ce7565b90506116e083826126b9565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190616ce7565b9050610cad846028546105719190616d81565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002090600202016040518060400160405290816000820180546117d890616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461180490616c9a565b80156118515780601f1061182657610100808354040283529160200191611851565b820191906000526020600020905b81548152906001019060200180831161183457829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116118985790505b505050505081525050815260200190600101906117a5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461194690616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461197290616c9a565b80156119bf5780601f10611994576101008083540402835291602001916119bf565b820191906000526020600020905b8154815290600101906020018083116119a257829003601f168201915b505050505081526020019060010190611927565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611ab657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a635790505b505050505081525050815260200190600101906119f7565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c419087906000908790616d22565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c9b92909116908690600401616d94565b6000604051808303818588803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b50506027546001600160a01b0316319250610cad915061057190508585616c87565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e4a908590616db6565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611ea1929116908590600401616d94565b600060405180830381600087803b158015611ebb57600080fd5b505af11580156112bd573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e4e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611fb257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f5f5790505b50505050508152505081526020019060010190611ef3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e4e57838290600052602060002001805461200d90616c9a565b80601f016020809104026020016040519081016040528092919081815260200182805461203990616c9a565b80156120865780601f1061205b57610100808354040283529160200191612086565b820191906000526020600020905b81548152906001019060200180831161206957829003601f168201915b505050505081526020019060010190611fee565b60085460009060ff16156120b2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190616ce7565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122659060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561227f57600080fd5b505af1158015612293573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122ee9392831692889216908790600401616d4a565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123ff9060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124819216908690600401616d94565b6000604051808303818588803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610d0b576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ced575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561258a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ae9190616d00565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611ea1565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561272457600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127426167f1565b61274d848483612757565b9150505b92915050565b60008061276485846127d2565b90506127c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016127b2929190616d94565b604051602081830303815290604052856127de565b9150505b9392505050565b60006127cb838361280c565b60c08101515160009015612802576127fb84848460c00151612827565b90506127cb565b6127fb84846129cd565b60006128188383612ab8565b6127cb838360200151846127de565b600080612832612ac8565b905060006128408683612b9b565b905060006128578260600151836020015185613041565b9050600061286783838989613253565b90506000612874826140d0565b602081015181519192509060030b156128e75789826040015160405160200161289e929190616dc9565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128de91600401616db6565b60405180910390fd5b600061292a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161429f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061297d908490600401616db6565b602060405180830381865afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190616e4a565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590612a22908790600401616db6565b600060405180830381865afa158015612a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a679190810190616f5b565b90506000612a958285604051602001612a81929190616f90565b60405160208183030381529060405261449f565b90506001600160a01b03811661274d57848460405160200161289e929190616fbf565b612ac4828260006144b2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b4f90849060040161706a565b600060405180830381865afa158015612b6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9491908101906170b1565b9250505090565b612bcd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612c186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612c21856145b5565b60208201526000612c318661499a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9b91908101906170b1565b86838560200151604051602001612cb594939291906170fa565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612d0d908590600401616db6565b600060405180830381865afa158015612d2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906170b1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d9a9084906004016171fe565b602060405180830381865afa158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb9190616d00565b612df0578160405160200161289e9190617250565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e359084906004016172e2565b600060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e7a91908101906170b1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612ec1908490600401617334565b602060405180830381865afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190616d00565b15612f97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f4c908490600401617334565b600060405180830381865afa158015612f69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9191908101906170b1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612fbc9190617386565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fe89291906173f2565b600060405180830381865afa158015613005573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302d91908101906170b1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161305d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106130bd576130bd617417565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061311157613111617417565b60200260200101819052508460405160200161312d9190617446565b6040516020818303038152906040528160028151811061314f5761314f617417565b60200260200101819052508260405160200161316b91906174b2565b6040516020818303038152906040528160038151811061318d5761318d617417565b602002602001018190525060006131a3826140d0565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132349060408051808201825260008082526020918201528151808301909252845182528085019082015290614c1d565b613249578560405160200161289e91906174f3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156132a3565b511590565b6134175782602001511561335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128de565b8260c0015115613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128de565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161343057905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061348b90617584565b935060ff16815181106134a0576134a0617417565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134f191906175a3565b60405160208183030381529060405282828061350c90617584565b935060ff168151811061352157613521617417565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061356e90617584565b935060ff168151811061358357613583617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135d090617584565b935060ff16815181106135e5576135e5617417565b6020026020010181905250876020015182828061360190617584565b935060ff168151811061361657613616617417565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061366390617584565b935060ff168151811061367857613678617417565b60209081029190910101528751828261369081617584565b935060ff16815181106136a5576136a5617417565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136f290617584565b935060ff168151811061370757613707617417565b602002602001018190525061371b46614c7e565b828261372681617584565b935060ff168151811061373b5761373b617417565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061378890617584565b935060ff168151811061379d5761379d617417565b6020026020010181905250868282806137b590617584565b935060ff16815181106137ca576137ca617417565b60209081029190910101528551156138f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261381b81617584565b935060ff168151811061383057613830617417565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613880908990600401616db6565b600060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138c591908101906170b1565b82826138d081617584565b935060ff16815181106138e5576138e5617417565b60200260200101819052505b8460200151156139c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261393a81617584565b935060ff168151811061394f5761394f617417565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061399c90617584565b935060ff16815181106139b1576139b1617417565b6020026020010181905250613b88565b6139f961329e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a8c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a3c81617584565b935060ff1681518110613a5157613a51617417565b60200260200101819052508460a00151604051602001613a719190617446565b60405160208183030381529060405282828061399c90617584565b8460c00151158015613acf575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613acd90511590565b155b15613b885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613b1381617584565b935060ff1681518110613b2857613b28617417565b6020026020010181905250613b3c88614d1e565b604051602001613b4c9190617446565b604051602081830303815290604052828280613b6790617584565b935060ff1681518110613b7c57613b7c617417565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613bbc90511590565b613c515760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bff81617584565b935060ff1681518110613c1457613c14617417565b60200260200101819052508460400151828280613c3090617584565b935060ff1681518110613c4557613c45617417565b60200260200101819052505b606085015115613d725760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c9a81617584565b935060ff1681518110613caf57613caf617417565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613d1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d4691908101906170b1565b8282613d5181617584565b935060ff1681518110613d6657613d66617417565b60200260200101819052505b60e08501515115613e195760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613dbc81617584565b935060ff1681518110613dd157613dd1617417565b6020026020010181905250613ded8560e0015160000151614c7e565b8282613df881617584565b935060ff1681518110613e0d57613e0d617417565b60200260200101819052505b60e08501516020015115613ec35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e6681617584565b935060ff1681518110613e7b57613e7b617417565b6020026020010181905250613e978560e0015160200151614c7e565b8282613ea281617584565b935060ff1681518110613eb757613eb7617417565b60200260200101819052505b60e08501516040015115613f6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613f1081617584565b935060ff1681518110613f2557613f25617417565b6020026020010181905250613f418560e0015160400151614c7e565b8282613f4c81617584565b935060ff1681518110613f6157613f61617417565b60200260200101819052505b60e085015160600151156140175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613fba81617584565b935060ff1681518110613fcf57613fcf617417565b6020026020010181905250613feb8560e0015160600151614c7e565b8282613ff681617584565b935060ff168151811061400b5761400b617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561403557614035616e73565b60405190808252806020026020018201604052801561406857816020015b60608152602001906001900390816140535790505b50905060005b8260ff168160ff1610156140c157838160ff168151811061409157614091617417565b6020026020010151828260ff16815181106140ae576140ae617417565b602090810291909101015260010161406e565b5093505050505b949350505050565b6140f76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161417d9186910161760e565b600060405180830381865afa15801561419a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141c291908101906170b1565b905060006141d0868361580d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016142009190616b4a565b6000604051808303816000875af115801561421f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142479190810190617655565b805190915060030b158015906142605750602081015151155b801561426f5750604081015151155b15613249578160008151811061428757614287617417565b602002602001015160405160200161289e919061770b565b606060006142d48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061430b9082905b90615962565b15614468576000614388826143828461437c61434e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90615989565b906159eb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143ec908290615962565b1561445657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614453905b8290615a70565b90505b61445f81615a96565b925050506127cb565b821561448157848460405160200161289e9291906178f7565b50506040805160208101909152600081526127cb565b509392505050565b6000808251602084016000f09392505050565b8160a00151156144c157505050565b60006144ce848484615aff565b905060006144db826140d0565b602081015181519192509060030b1580156145775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790604080518082018252600080825260209182015281518083019092528451825280850190820152614305565b1561458457505050505050565b604082015151156145a457816040015160405160200161289e919061799e565b8060405160200161289e91906179fc565b606060006145ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061464f905b8290614c1d565b156146be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b990839061609a565b615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614720905b8290616124565b6001036147ed57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147869061444c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9905b8390615a70565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261484c90614648565b1561498357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906148b49083906161be565b9050600081600183516148c79190616d81565b815181106148d7576148d7617417565b6020026020010151905061497a6146b961494d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061609a565b95945050505050565b8260405160200161289e9190617a67565b50919050565b606060006149cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a3190614648565b15614a3f576127cb81615a96565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a9e90614719565b600103614b0857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526127cb906146b9906147e6565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b6790614648565b1561498357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614bcf9083906161be565b9050600181511115614c0b578060028251614bea9190616d81565b81518110614bfa57614bfa617417565b602002602001015192505050919050565b508260405160200161289e9190617a67565b805182516000911115614c3257506000612751565b81518351602085015160009291614c4891616c87565b614c529190616d81565b905082602001518103614c69576001915050612751565b82516020840151819020912014905092915050565b60606000614c8b83616263565b600101905060008167ffffffffffffffff811115614cab57614cab616e73565b6040519080825280601f01601f191660200182016040528015614cd5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cdf57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614daa905b8290616345565b15614dea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e4990614da3565b15614e8957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ee890614da3565b15614f2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f8790614da3565b80614fec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fec90614da3565b1561502c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261508b90614da3565b806150f05750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f090614da3565b1561513057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261518f90614da3565b806151f45750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151f490614da3565b1561523457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529390614da3565b806152f85750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152f890614da3565b1561533857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261539790614da3565b156153d757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261543690614da3565b1561547657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154d590614da3565b1561551557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261557490614da3565b156155b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261561390614da3565b1561565357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156b290614da3565b806157175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261571790614da3565b1561575757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157b690614da3565b156157f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161289e9290602001617b45565b60608060005b8451811015615898578185828151811061582f5761582f617417565b6020026020010151604051602001615848929190616f90565b6040516020818303038152906040529150600185516158679190616d81565b8114615890578160405160200161587e9190617cae565b60405160208183030381529060405291505b600101615813565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816158b157905050905083816000815181106158dc576158dc617417565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061593057615930617417565b6020026020010181905250818160028151811061594f5761594f617417565b6020908102919091010152949350505050565b60208083015183518351928401516000936159809291849190616359565b14159392505050565b604080518082019091526000808252602082015260006159bb846000015185602001518560000151866020015161646a565b90508360200151816159cd9190616d81565b845185906159dc908390616d81565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615a10575081612751565b6020808301519084015160019114615a375750815160208481015190840151829020919020145b8015615a6857825184518590615a4e908390616d81565b9052508251602085018051615a64908390616c87565b9052505b509192915050565b6040805180820190915260008082526020820152615a8f83838361658a565b5092915050565b60606000826000015167ffffffffffffffff811115615ab757615ab7616e73565b6040519080825280601f01601f191660200182016040528015615ae1576020820181803683370190505b5090506000602082019050615a8f8185602001518660000151616635565b60606000615b0b612ac8565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615b2857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b8390617584565b935060ff1681518110615b9857615b98617417565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615be99190617cef565b604051602081830303815290604052828280615c0490617584565b935060ff1681518110615c1957615c19617417565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c6690617584565b935060ff1681518110615c7b57615c7b617417565b602002602001018190525082604051602001615c9791906174b2565b604051602081830303815290604052828280615cb290617584565b935060ff1681518110615cc757615cc7617417565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615d1490617584565b935060ff1681518110615d2957615d29617417565b6020026020010181905250615d3e87846166af565b8282615d4981617584565b935060ff1681518110615d5e57615d5e617417565b602090810291909101015285515115615e0a5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615db081617584565b935060ff1681518110615dc557615dc5617417565b6020026020010181905250615dde8660000151846166af565b8282615de981617584565b935060ff1681518110615dfe57615dfe617417565b60200260200101819052505b856080015115615e785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e5381617584565b935060ff1681518110615e6857615e68617417565b6020026020010181905250615ede565b8415615ede5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615ebd81617584565b935060ff1681518110615ed257615ed2617417565b60200260200101819052505b60408601515115615f7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615f2881617584565b935060ff1681518110615f3d57615f3d617417565b60200260200101819052508560400151828280615f5990617584565b935060ff1681518110615f6e57615f6e617417565b60200260200101819052505b856060015115615fe45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615fc381617584565b935060ff1681518110615fd857615fd8617417565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561600257616002616e73565b60405190808252806020026020018201604052801561603557816020015b60608152602001906001900390816160205790505b50905060005b8260ff168160ff16101561608e57838160ff168151811061605e5761605e617417565b6020026020010151828260ff168151811061607b5761607b617417565b602090810291909101015260010161603b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156160bf575081612751565b815183516020850151600092916160d591616c87565b6160df9190616d81565b60208401519091506001908214616100575082516020840151819020908220145b801561611b57835185518690616117908390616d81565b9052505b50929392505050565b6000808260000151616148856000015186602001518660000151876020015161646a565b6161529190616c87565b90505b835160208501516161669190616c87565b8111615a8f578161617681617d34565b92505082600001516161ad8560200151836161919190616d81565b865161619d9190616d81565b838660000151876020015161646a565b6161b79190616c87565b9050616155565b606060006161cc8484616124565b6161d7906001616c87565b67ffffffffffffffff8111156161ef576161ef616e73565b60405190808252806020026020018201604052801561622257816020015b606081526020019060019003908161620d5790505b50905060005b81518110156144975761623e6146b98686615a70565b82828151811061625057616250617417565b6020908102919091010152600101616228565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106162ac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162d8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162f657662386f26fc10000830492506010015b6305f5e100831061630e576305f5e100830492506008015b612710831061632257612710830492506004015b60648310616334576064830492506002015b600a83106127515760010192915050565b600061635183836166ef565b159392505050565b600080858411616460576020841161640c57600084156163a4576001616380866020616d81565b61638b906008617d4e565b616396906002617e4c565b6163a09190616d81565b1990505b83518116856163b38989616c87565b6163bd9190616d81565b805190935082165b8181146163f7578784116163df57879450505050506140c8565b836163e981617e58565b9450508284511690506163c5565b6164018785616c87565b9450505050506140c8565b8383206164198588616d81565b6164239087616c87565b91505b85821061645e5784822080820361644b576164418684616c87565b93505050506140c8565b616456600184616d81565b925050616426565b505b5092949350505050565b60008381868511616575576020851161652457600085156164b6576001616492876020616d81565b61649d906008617d4e565b6164a8906002617e4c565b6164b29190616d81565b1990505b845181166000876164c78b8b616c87565b6164d19190616d81565b855190915083165b828114616516578186106164fe576164f18b8b616c87565b96505050505050506140c8565b8561650881617d34565b9650508386511690506164d9565b8596505050505050506140c8565b508383206000905b6165368689616d81565b82116165735785832080820361655257839450505050506140c8565b61655d600185616c87565b935050818061656b90617d34565b92505061652c565b505b61657f8787616c87565b979650505050505050565b604080518082019091526000808252602082015260006165bc856000015186602001518660000151876020015161646a565b6020808701805191860191909152519091506165d89082616d81565b8352845160208601516165eb9190616c87565b81036165fa576000855261662c565b835183516166089190616c87565b85518690616617908390616d81565b90525083516166269082616c87565b60208601525b50909392505050565b6020811061666d578151835261664c602084616c87565b9250616659602083616c87565b9150616666602082616d81565b9050616635565b600019811561669c576001616683836020616d81565b61668f90610100617e4c565b6166999190616d81565b90505b9151835183169219169190911790915250565b606060006166bd8484612b9b565b80516020808301516040519394506166d793909101617e6f565b60405160208183030381529060405291505092915050565b8151815160009190811115616702575081515b6020808501519084015160005b838110156167bb578251825180821461678b57600019602087101561676a5760018461673c896020616d81565b6167469190616c87565b616751906008617d4e565b61675c906002617e4c565b6167669190616d81565b1990505b81811683821681810391146167885797506127519650505050505050565b50505b616796602086616c87565b94506167a3602085616c87565b935050506020816167b49190616c87565b905061670f565b50845186516132499190617ec7565b610c9f80617ee883390190565b61140b80618b8783390190565b6117f980619f9283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001616834616839565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168346040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168eb5783516001600160a01b03168352602093840193909201916001016168c4565b509095945050505050565b60005b838110156169115781810151838201526020016168f9565b50506000910152565b600081518084526169328160208601602086016168f6565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352616a1284865161691a565b60209586019590945092909201916001016169d8565b50919750505060209485019492909201915060010161696e565b50929695505050505050565b600081518084526020840193506020830160005b82811015616aa25781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a62565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616b18604088018261691a565b9050602082015191508681036020880152616b338183616a4e565b965050506020938401939190910190600101616ad4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616bac85835161691a565b94506020938401939190910190600101616b72565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c426040870182616a4e565b9550506020938401939190910190600101616be9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561275157612751616c58565b600181811c90821680616cae57607f821691505b602082108103614994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616cf957600080fd5b5051919050565b600060208284031215616d1257600080fd5b815180151581146127cb57600080fd5b8381526001600160a01b038316602082015260606040820152600061497a606083018461691a565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000613249608083018461691a565b8181038181111561275157612751616c58565b6001600160a01b03831681526040602082015260006140c8604083018461691a565b6020815260006127cb602083018461691a565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616e0181601a8501602088016168f6565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e3e81601c8401602088016168f6565b01601c01949350505050565b600060208284031215616e5c57600080fd5b81516001600160a01b03811681146127cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616ec557616ec5616e73565b60405290565b60008067ffffffffffffffff841115616ee657616ee6616e73565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616f1557616f15616e73565b604052838152905080828401851015616f2d57600080fd5b6144978460208301856168f6565b600082601f830112616f4c57600080fd5b6127cb83835160208501616ecb565b600060208284031215616f6d57600080fd5b815167ffffffffffffffff811115616f8457600080fd5b61274d84828501616f3b565b60008351616fa28184602088016168f6565b835190830190616fb68183602088016168f6565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616ff781601a8501602088016168f6565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170348160338401602088016168f6565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006127cb608083018461691a565b6000602082840312156170c357600080fd5b815167ffffffffffffffff8111156170da57600080fd5b8201601f810184136170eb57600080fd5b61274d84825160208401616ecb565b6000855161710c818460208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551617146816001840160208a016168f6565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171848160028401602089016168f6565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516171c68160028401602088016168f6565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000617211604083018461691a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161728881601f8501602087016168f6565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172f5604083018461691a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000617347604083018461691a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173be8160148501602087016168f6565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000617405604083018561691a565b82810360208401526127c7818561691a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161747e8160018501602087016168f6565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174c48184602087016168f6565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161757781604b8501602087016168f6565b91909101604b0192915050565b600060ff821660ff810361759a5761759a616c58565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006127cb608083018461691a565b60006020828403121561766757600080fd5b815167ffffffffffffffff81111561767e57600080fd5b82016060818503121561769057600080fd5b617698616ea2565b81518060030b81146176a957600080fd5b8152602082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f3b565b602083015250604082015167ffffffffffffffff8111156176f157600080fd5b6176fd86828501616f3b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516177698160218501602087016168f6565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179558160218501602088016168f6565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161799281602e8401602088016168f6565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516176018160298501602087016168f6565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a5a8160228501602087016168f6565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a9f81600e8501602087016168f6565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b7d8160188501602088016168f6565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617bba81601c8401602088016168f6565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617cc08184602087016168f6565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617d2781601c8501602087016168f6565b91909101601c0192915050565b60006000198203617d4757617d47616c58565b5060010190565b808202811582820484141761275157612751616c58565b6001815b6001841115617da057808504811115617d8457617d84616c58565b6001841615617d9257908102905b60019390931c928002617d69565b935093915050565b600082617db757506001612751565b81617dc457506000612751565b8160018114617dda5760028114617de457617e00565b6001915050612751565b60ff841115617df557617df5616c58565b50506001821b612751565b5060208310610133831016604e8410600b8410161715617e23575081810a612751565b617e306000198484617d65565b8060001904821115617e4457617e44616c58565b029392505050565b60006127cb8383617da8565b600081617e6757617e67616c58565b506000190190565b60008351617e818184602088016168f6565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617ebb8160018401602088016168f6565b01600101949350505050565b8181036000831280158383131683831282161715615a8f57615a8f616c5856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a0033a2646970667358221220d241a552b987784414eec7a8a805c4c558fef3be7a48c3b80252cba36be86fd864736f6c634300081a0033", } // GatewayEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go index 778a30ea..02e781f0 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. var GatewayEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ff458061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c8063a3f9d0e011610160578063dd51e82f116100d8578063fa18c09b1161008c578063fb176c1211610071578063fb176c121461049a578063fe7bdbb2146104a2578063fe8e5f1b146104aa57600080fd5b8063fa18c09b14610485578063fa7626d41461048d57600080fd5b8063e63ab1e9116100bd578063e63ab1e91461044e578063eb1ce7f914610475578063f68bd1c01461047d57600080fd5b8063dd51e82f1461043e578063e20c9f711461044657600080fd5b8063b5508aa91161012f578063c9350b7f11610114578063c9350b7f14610426578063cbd57e2f1461042e578063cebad2a61461043657600080fd5b8063b5508aa914610406578063ba414fa61461040e57600080fd5b8063a3f9d0e0146103c7578063a4943deb146103cf578063a783c789146103d7578063b0464fdc146103fe57600080fd5b80633f7286f41161020e57806371149c94116101c257806385226c81116101a757806385226c811461037657806385f438c11461038b578063916a17c6146103b257600080fd5b806371149c94146103665780637d7f772a1461036e57600080fd5b80635d62c860116101f35780635d62c8601461031457806366d9a9a0146103495780636a6218541461035e57600080fd5b80633f7286f41461030457806344671b941461030c57600080fd5b80632206eb65116102655780633e5e3c231161024a5780633e5e3c23146102ec5780633e73ecb4146102f45780633ee92923146102fc57600080fd5b80632206eb65146102cf5780632ade3880146102d757600080fd5b80630a9254e4146102975780630eee72a9146102a15780631779672f146102a95780631ed7831c146102b1575b600080fd5b61029f6104b2565b005b61029f610d62565b61029f610fdd565b6102b9611132565b6040516102c6919061a168565b60405180910390f35b61029f611194565b6102df6113d8565b6040516102c6919061a204565b6102b961151a565b61029f61157a565b61029f611adb565b6102b9611b95565b61029f611bf5565b61033b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6040519081526020016102c6565b610351611f78565b6040516102c6919061a36a565b61029f6120e5565b61029f61219c565b61029f612992565b61037e612ccb565b6040516102c6919061a464565b61033b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6103ba612d9b565b6040516102c6919061a477565b61029f612e81565b61029f61345f565b61033b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6103ba61366f565b61037e613755565b610416613825565b60405190151581526020016102c6565b61029f6138f9565b61029f613b3d565b61029f61409e565b61029f6142d7565b6102b9614a8d565b61033b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61029f614aed565b61029f614c12565b61029f614fc0565b601f546104169060ff1681565b61029f6152e6565b61029f61593a565b61029f615d68565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516105049061a07b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610589573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105ce9061a07b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610652573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261072c919060840160408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615f6e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906107b89061a088565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107f4573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061084f9061a095565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610893573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108d89061a0a2565b604051809103906000f0801580156108f4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc7919061a50e565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b50505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610f1c919060040161a530565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610fa79392831692909116908790879060040161a543565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610f1c565b6060601680548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116c575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061134d919060040161a530565b600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610fa79392831692909116908790879060040161a543565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561151157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114fa57838290600052602060002001805461146d9061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546114999061a57a565b80156114e65780601f106114bb576101008083540402835291602001916114e6565b820191906000526020600020905b8154815290600101906020018083116114c957829003601f168201915b50505050508152602001906001019061144e565b5050505081525050815260200190600101906113fc565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa1580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f3919061a5c7565b9050611600816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611674919061a5c7565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611742916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061a5c7565b90506119c88186615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c919061a5c7565b9050611a5181611a4c888761a637565b615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061a5c7565b9050611ad2816000615f8d565b50505050505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610e18565b6060601780548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b6040805160048082526024820183526020820180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611c96926001600160a01b03169160009187910161a5e0565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611e6490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611f2d9290911690859060040161a663565b6000604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f74919081019061a76d565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000209060020201604051806040016040529081600082018054611fcf9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb9061a57a565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156120cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161208f5790505b50505050508152505081526020019060010190611f9c565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612253919061a5c7565b9050612260816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d4919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916123a2916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506124a092506001600160a01b0390911690879061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561251d57600080fd5b505af1158015612531573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061257c908990899061a64a565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125f957600080fd5b505af115801561260d573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890612658908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945061272a9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf919061a5c7565b90506127db8187615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f919061a5c7565b905061285f81611a4c898761a637565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f9919061a5c7565b9050612906816000615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297a919061a5c7565b9050612987816000615f8d565b505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816129a95790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110612a0957612a0961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110612a4d57612a4d61a7a2565b6020908102919091010152604051600190600090612a739085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612bfb919060040161a530565b600060405180830381600087803b158015612c1557600080fd5b505af1158015612c29573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612c7d9290911690859060040161a663565b6000604051808303816000875af1158015612c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc4919081019061a76d565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611511578382906000526020600020018054612d0e9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3a9061a57a565b8015612d875780601f10612d5c57610100808354040283529160200191612d87565b820191906000526020600020905b815481529060010190602001808311612d6a57829003601f168201915b505050505081526020019060010190612cef565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e6957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612e2b5790505b50505050508152505081526020019060010190612dbf565b604080516004808252602480830184526020830180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3a919061a5c7565b9050612f47816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbb919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613089916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561313057600080fd5b505af1158015613144573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9061325c908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061332e9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561334857600080fd5b505af115801561335c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061a5c7565b90506133df816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613453919061a5c7565b905061285f8185615f8d565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134fa57600080fd5b505af115801561350e573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135e4919060040161a530565b600060405180830381600087803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610fa79392831692909116908790879060040161a543565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116136ff5790505b50505050508152505081526020019060010190613693565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000200180546137989061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546137c49061a57a565b80156138115780601f106137e657610100808354040283529160200191613811565b820191906000526020600020905b8154815290600101906020018083116137f457829003601f168201915b505050505081526020019060010190613779565b60085460009060ff161561383d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061a5c7565b1415905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156139c857600080fd5b505af11580156139dc573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613ab2919060040161a530565b600060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610fa79392831692909116908790879060040161a543565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c25919061a5c7565b9050613c32816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca6919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613d74916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613e1b57600080fd5b505af1158015613e2f573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f0557600080fd5b505af1158015613f19573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613f64908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fc557600080fd5b505af1158015613fd9573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506140369392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561405057600080fd5b505af1158015614064573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161278e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614228919060040161a530565b600060405180830381600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db935086926142aa921690869060040161a663565b6000604051808303818588803b1580156142c357600080fd5b505af1158015611ad2573d6000803e3d6000fd5b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561433057600080fd5b505af1158015614344573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061441a919060040161a530565b600060405180830381600087803b15801561443457600080fd5b505af1158015614448573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561450d57600080fd5b505af1158015614521573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506145f7919060040161a530565b600060405180830381600087803b15801561461157600080fd5b505af1158015614625573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561467957600080fd5b505af115801561468d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156146ea57600080fd5b505af11580156146fe573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b15801561483357600080fd5b505af1158015614847573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156148a457600080fd5b505af11580156148b8573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935061490c9290911690859060040161a663565b6000604051808303816000875af115801561492b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614953919081019061a76d565b5060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149ad57600080fd5b505af11580156149c1573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a1557600080fd5b505af1158015614a29573d6000803e3d6000fd5b50506021546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611c96916001600160a01b031690600090869060040161a5e0565b6060601580548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b600080604051602001614b23907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614b8a57600080fd5b505af1158015614b9e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016135e4565b604080516001808252818301909252600091816020015b6060815260200190600190039081614c295790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110614c8957614c8961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110614ccd57614ccd61a7a2565b6020908102919091010152604051600190600090614cf39085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614d9b916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015614db557600080fd5b505af1158015614dc9573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614e4257600080fd5b505af1158015614e56573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b1469350614e9d92506001600160a01b039091169087908790879061a83b565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614f1a57600080fd5b505af1158015614f2e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614f7490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612bfb565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b03163161501f816000615f8d565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561509457600080fd5b505af11580156150a8573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506150eb92506001600160a01b0390911690859061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561516857600080fd5b505af115801561517c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c91506151c990670de0b6b3a764000090869061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561522a57600080fd5b505af115801561523e573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792615292921690879060040161a663565b6000604051808303818588803b1580156152ab57600080fd5b505af11580156152bf573d6000803e3d6000fd5b50506021546001600160a01b0316319250610d5c9150829050670de0b6b3a7640000615f8d565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156153aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ce919061a5c7565b90506153db816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561542b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061544f919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161551d916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561553757600080fd5b505af115801561554b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905061561660028861a883565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156156c557600080fd5b505af11580156156d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90615724908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561578557600080fd5b505af1158015615799573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506157f69392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561581057600080fd5b505af1158015615824573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061589a919061a5c7565b90506158ab81611a4c60028961a883565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156158fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061591f919061a5c7565b905061285f8161593060028a61a883565b611a4c908761a637565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615997906000906001600160a01b031631615f8d565b60008484846040516024016159ae9392919061a8be565b60408051601f198184030181529181526020820180516001600160e01b03167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a5d916001600160a01b039190911690670de0b6b3a764000090869060040161a5e0565b600060405180830381600087803b158015615a7757600080fd5b505af1158015615a8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b0457600080fd5b505af1158015615b18573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350615b6192506001600160a01b0390911690859089908990899061a8e8565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615bde57600080fd5b505af1158015615bf2573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c3f90670de0b6b3a764000090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ca057600080fd5b505af1158015615cb4573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692615d08921690869060040161a663565b60006040518083038185885af1158015615d26573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d4f919081019061a76d565b50602154612cc49083906001600160a01b031631615f8d565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dc657600080fd5b505af1158015615dda573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615eb0919060040161a530565b600060405180830381600087803b158015615eca57600080fd5b505af1158015615ede573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015615f5a57600080fd5b505af1158015612cc4573d6000803e3d6000fd5b6000615f7861a0af565b615f8384848361600c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615ff857600080fd5b505afa158015610fd5573d6000803e3d6000fd5b6000806160198584616087565b905061607c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161606792919061a663565b60405160208183030381529060405285616093565b9150505b9392505050565b600061608083836160c1565b60c081015151600090156160b7576160b084848460c001516160dc565b9050616080565b6160b08484616282565b60006160cd838361636d565b61608083836020015184616093565b6000806160e7616379565b905060006160f5868361644c565b9050600061610c82606001518360200151856168f2565b9050600061611c83838989616b04565b9050600061612982617981565b602081015181519192509060030b1561619c5789826040015160405160200161615392919061a929565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526161939160040161a530565b60405180910390fd5b60006161df6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617b50565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061623290849060040161a530565b602060405180830381865afa15801561624f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616273919061a9aa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906162d790879060040161a530565b600060405180830381865afa1580156162f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261631c919081019061a76d565b9050600061634a828560405160200161633692919061a9d3565b604051602081830303815290604052617d50565b90506001600160a01b038116615f8357848460405160200161615392919061aa02565b611f7482826000617d63565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061640090849060040161aaad565b600060405180830381865afa15801561641d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616445919081019061aaf4565b9250505090565b61647e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164c96040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6164d285617e66565b602082015260006164e28661824b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616524573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261654c919081019061aaf4565b86838560200151604051602001616566949392919061ab3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906165be90859060040161a530565b600060405180830381865afa1580156165db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616603919081019061aaf4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061664b90849060040161ac41565b602060405180830381865afa158015616668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061668c919061a50e565b6166a15781604051602001616153919061ac93565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906166e690849060040161ad25565b600060405180830381865afa158015616703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261672b919081019061aaf4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061677290849060040161ad77565b602060405180830381865afa15801561678f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167b3919061a50e565b15616848576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906167fd90849060040161ad77565b600060405180830381865afa15801561681a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616842919081019061aaf4565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161686d919061adc9565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161689992919061ae35565b600060405180830381865afa1580156168b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168de919081019061aaf4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161690e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061696e5761696e61a7a2565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169c2576169c261a7a2565b6020026020010181905250846040516020016169de919061ae5a565b60405160208183030381529060405281600281518110616a0057616a0061a7a2565b602002602001018190525082604051602001616a1c919061aec6565b60405160208183030381529060405281600381518110616a3e57616a3e61a7a2565b60200260200101819052506000616a5482617981565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616ae590604080518082018252600080825260209182015281518083019092528451825280850190820152906184ce565b616afa5785604051602001616153919061af07565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616b54565b511590565b616cc857826020015115616c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616193565b8260c0015115616cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616193565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616ce157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616d3c9061af98565b935060ff1681518110616d5157616d5161a7a2565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616da2919061afb7565b604051602081830303815290604052828280616dbd9061af98565b935060ff1681518110616dd257616dd261a7a2565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616e1f9061af98565b935060ff1681518110616e3457616e3461a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616e819061af98565b935060ff1681518110616e9657616e9661a7a2565b60200260200101819052508760200151828280616eb29061af98565b935060ff1681518110616ec757616ec761a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616f149061af98565b935060ff1681518110616f2957616f2961a7a2565b602090810291909101015287518282616f418161af98565b935060ff1681518110616f5657616f5661a7a2565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616fa39061af98565b935060ff1681518110616fb857616fb861a7a2565b6020026020010181905250616fcc4661852f565b8282616fd78161af98565b935060ff1681518110616fec57616fec61a7a2565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806170399061af98565b935060ff168151811061704e5761704e61a7a2565b6020026020010181905250868282806170669061af98565b935060ff168151811061707b5761707b61a7a2565b60209081029190910101528551156171a25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826170cc8161af98565b935060ff16815181106170e1576170e161a7a2565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061713190899060040161a530565b600060405180830381865afa15801561714e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617176919081019061aaf4565b82826171818161af98565b935060ff16815181106171965761719661a7a2565b60200260200101819052505b8460200151156172725760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826171eb8161af98565b935060ff16815181106172005761720061a7a2565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061724d9061af98565b935060ff16815181106172625761726261a7a2565b6020026020010181905250617439565b6172aa616b4f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61733d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826172ed8161af98565b935060ff16815181106173025761730261a7a2565b60200260200101819052508460a00151604051602001617322919061ae5a565b60405160208183030381529060405282828061724d9061af98565b8460c0015115801561738057506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261737e90511590565b155b156174395760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173c48161af98565b935060ff16815181106173d9576173d961a7a2565b60200260200101819052506173ed886185cf565b6040516020016173fd919061ae5a565b6040516020818303038152906040528282806174189061af98565b935060ff168151811061742d5761742d61a7a2565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261746d90511590565b6175025760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826174b08161af98565b935060ff16815181106174c5576174c561a7a2565b602002602001018190525084604001518282806174e19061af98565b935060ff16815181106174f6576174f661a7a2565b60200260200101819052505b6060850151156176235760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261754b8161af98565b935060ff16815181106175605761756061a7a2565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156175cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175f7919081019061aaf4565b82826176028161af98565b935060ff16815181106176175761761761a7a2565b60200260200101819052505b60e085015151156176ca5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261766d8161af98565b935060ff16815181106176825761768261a7a2565b602002602001018190525061769e8560e001516000015161852f565b82826176a98161af98565b935060ff16815181106176be576176be61a7a2565b60200260200101819052505b60e085015160200151156177745760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826177178161af98565b935060ff168151811061772c5761772c61a7a2565b60200260200101819052506177488560e001516020015161852f565b82826177538161af98565b935060ff16815181106177685761776861a7a2565b60200260200101819052505b60e0850151604001511561781e5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177c18161af98565b935060ff16815181106177d6576177d661a7a2565b60200260200101819052506177f28560e001516040015161852f565b82826177fd8161af98565b935060ff16815181106178125761781261a7a2565b60200260200101819052505b60e085015160600151156178c85760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261786b8161af98565b935060ff16815181106178805761788061a7a2565b602002602001018190525061789c8560e001516060015161852f565b82826178a78161af98565b935060ff16815181106178bc576178bc61a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178e6576178e661a685565b60405190808252806020026020018201604052801561791957816020015b60608152602001906001900390816179045790505b50905060005b8260ff168160ff16101561797257838160ff16815181106179425761794261a7a2565b6020026020010151828260ff168151811061795f5761795f61a7a2565b602090810291909101015260010161791f565b5093505050505b949350505050565b6179a86040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617a2e9186910161b022565b600060405180830381865afa158015617a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a73919081019061aaf4565b90506000617a8186836190be565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617ab1919061a464565b6000604051808303816000875af1158015617ad0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617af8919081019061b069565b805190915060030b15801590617b115750602081015151155b8015617b205750604081015151155b15616afa5781600081518110617b3857617b3861a7a2565b6020026020010151604051602001616153919061b11f565b60606000617b858560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617bbc9082905b90619213565b15617d19576000617c3982617c3384617c2d617bff8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061923a565b9061929c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9d908290619213565b15617d0757604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d04905b8290619321565b90505b617d1081619347565b92505050616080565b8215617d3257848460405160200161615392919061b30b565b5050604080516020810190915260008152616080565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617d7257505050565b6000617d7f8484846193b0565b90506000617d8c82617981565b602081015181519192509060030b158015617e285750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2890604080518082018252600080825260209182015281518083019092528451825280850190820152617bb6565b15617e3557505050505050565b60408201515115617e55578160400151604051602001616153919061b3b2565b80604051602001616153919061b410565b60606000617e9b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f00905b82906184ce565b15617f6f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90839061994b565b619347565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fd1905b82906199d5565b60010361809e57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261803790617cfd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a905b8390619321565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180fd90617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618165908390619a6f565b905060008160018351618178919061a637565b815181106181885761818861a7a2565b6020026020010151905061822b617f6a6181fe6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061994b565b95945050505050565b82604051602001616153919061b47b565b50919050565b606060006182808360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182e290617ef9565b156182f05761608081619347565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261834f90617fca565b6001036183b957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90618097565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261841890617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618480908390619a6f565b90506001815111156184bc57806002825161849b919061a637565b815181106184ab576184ab61a7a2565b602002602001015192505050919050565b5082604051602001616153919061b47b565b8051825160009111156184e357506000615f87565b815183516020850151600092916184f99161b559565b618503919061a637565b90508260200151810361851a576001915050615f87565b82516020840151819020912014905092915050565b6060600061853c83619b14565b600101905060008167ffffffffffffffff81111561855c5761855c61a685565b6040519080825280601f01601f191660200182016040528015618586576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461859057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161865b905b8290619bf6565b1561869b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186fa90618654565b1561873a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261879990618654565b156187d957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883890618654565b8061889d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889d90618654565b156188dd57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261893c90618654565b806189a15750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189a190618654565b156189e157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4090618654565b80618aa55750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa590618654565b15618ae557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b4490618654565b80618ba95750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba990618654565b15618be957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c4890618654565b15618c8857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce790618654565b15618d2757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d8690618654565b15618dc657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e2590618654565b15618e6557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec490618654565b15618f0457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f6390618654565b80618fc85750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc890618654565b1561900857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261906790618654565b156190a757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616153929060200161b56c565b60608060005b845181101561914957818582815181106190e0576190e061a7a2565b60200260200101516040516020016190f992919061a9d3565b604051602081830303815290604052915060018551619118919061a637565b8114619141578160405160200161912f919061b6d5565b60405160208183030381529060405291505b6001016190c4565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619162579050509050838160008151811061918d5761918d61a7a2565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191e1576191e161a7a2565b602002602001018190525081816002815181106192005761920061a7a2565b6020908102919091010152949350505050565b60208083015183518351928401516000936192319291849190619c0a565b14159392505050565b6040805180820190915260008082526020820152600061926c8460000151856020015185600001518660200151619d1b565b905083602001518161927e919061a637565b8451859061928d90839061a637565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156192c1575081615f87565b60208083015190840151600191146192e85750815160208481015190840151829020919020145b8015619319578251845185906192ff90839061a637565b905250825160208501805161931590839061b559565b9052505b509192915050565b6040805180820190915260008082526020820152619340838383619e3b565b5092915050565b60606000826000015167ffffffffffffffff8111156193685761936861a685565b6040519080825280601f01601f191660200182016040528015619392576020820181803683370190505b50905060006020820190506193408185602001518660000151619ee6565b606060006193bc616379565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816193d957905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806194349061af98565b935060ff16815181106194495761944961a7a2565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161949a919061b716565b6040516020818303038152906040528282806194b59061af98565b935060ff16815181106194ca576194ca61a7a2565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806195179061af98565b935060ff168151811061952c5761952c61a7a2565b602002602001018190525082604051602001619548919061aec6565b6040516020818303038152906040528282806195639061af98565b935060ff16815181106195785761957861a7a2565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195c59061af98565b935060ff16815181106195da576195da61a7a2565b60200260200101819052506195ef8784619f60565b82826195fa8161af98565b935060ff168151811061960f5761960f61a7a2565b6020908102919091010152855151156196bb5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826196618161af98565b935060ff16815181106196765761967661a7a2565b602002602001018190525061968f866000015184619f60565b828261969a8161af98565b935060ff16815181106196af576196af61a7a2565b60200260200101819052505b8560800151156197295760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826197048161af98565b935060ff16815181106197195761971961a7a2565b602002602001018190525061978f565b841561978f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261976e8161af98565b935060ff16815181106197835761978361a7a2565b60200260200101819052505b6040860151511561982b5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197d98161af98565b935060ff16815181106197ee576197ee61a7a2565b6020026020010181905250856040015182828061980a9061af98565b935060ff168151811061981f5761981f61a7a2565b60200260200101819052505b8560600151156198955760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826198748161af98565b935060ff16815181106198895761988961a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198b3576198b361a685565b6040519080825280602002602001820160405280156198e657816020015b60608152602001906001900390816198d15790505b50905060005b8260ff168160ff16101561993f57838160ff168151811061990f5761990f61a7a2565b6020026020010151828260ff168151811061992c5761992c61a7a2565b60209081029190910101526001016198ec565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619970575081615f87565b815183516020850151600092916199869161b559565b619990919061a637565b602084015190915060019082146199b1575082516020840151819020908220145b80156199cc578351855186906199c890839061a637565b9052505b50929392505050565b60008082600001516199f98560000151866020015186600001518760200151619d1b565b619a03919061b559565b90505b83516020850151619a17919061b559565b81116193405781619a278161b75b565b9250508260000151619a5e856020015183619a42919061a637565b8651619a4e919061a637565b8386600001518760200151619d1b565b619a68919061b559565b9050619a06565b60606000619a7d84846199d5565b619a8890600161b559565b67ffffffffffffffff811115619aa057619aa061a685565b604051908082528060200260200182016040528015619ad357816020015b6060815260200190600190039081619abe5790505b50905060005b8151811015617d4857619aef617f6a8686619321565b828281518110619b0157619b0161a7a2565b6020908102919091010152600101619ad9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619b5d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619b89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619ba757662386f26fc10000830492506010015b6305f5e1008310619bbf576305f5e100830492506008015b6127108310619bd357612710830492506004015b60648310619be5576064830492506002015b600a8310615f875760010192915050565b6000619c028383619fa0565b159392505050565b600080858411619d115760208411619cbd5760008415619c55576001619c3186602061a637565b619c3c90600861b775565b619c4790600261b873565b619c51919061a637565b1990505b8351811685619c64898961b559565b619c6e919061a637565b805190935082165b818114619ca857878411619c905787945050505050617979565b83619c9a8161b87f565b945050828451169050619c76565b619cb2878561b559565b945050505050617979565b838320619cca858861a637565b619cd4908761b559565b91505b858210619d0f57848220808203619cfc57619cf2868461b559565b9350505050617979565b619d0760018461a637565b925050619cd7565b505b5092949350505050565b60008381868511619e265760208511619dd55760008515619d67576001619d4387602061a637565b619d4e90600861b775565b619d5990600261b873565b619d63919061a637565b1990505b84518116600087619d788b8b61b559565b619d82919061a637565b855190915083165b828114619dc757818610619daf57619da28b8b61b559565b9650505050505050617979565b85619db98161b75b565b965050838651169050619d8a565b859650505050505050617979565b508383206000905b619de7868961a637565b8211619e2457858320808203619e035783945050505050617979565b619e0e60018561b559565b9350508180619e1c9061b75b565b925050619ddd565b505b619e30878761b559565b979650505050505050565b60408051808201909152600080825260208201526000619e6d8560000151866020015186600001518760200151619d1b565b602080870180519186019190915251909150619e89908261a637565b835284516020860151619e9c919061b559565b8103619eab5760008552619edd565b83518351619eb9919061b559565b85518690619ec890839061a637565b9052508351619ed7908261b559565b60208601525b50909392505050565b60208110619f1e5781518352619efd60208461b559565b9250619f0a60208361b559565b9150619f1760208261a637565b9050619ee6565b6000198115619f4d576001619f3483602061a637565b619f409061010061b873565b619f4a919061a637565b90505b9151835183169219169190911790915250565b60606000619f6e848461644c565b8051602080830151604051939450619f889390910161b896565b60405160208183030381529060405291505092915050565b8151815160009190811115619fb3575081515b6020808501519084015160005b8381101561a06c578251825180821461a03c57600019602087101561a01b57600184619fed89602061a637565b619ff7919061b559565b61a00290600861b775565b61a00d90600261b873565b61a017919061a637565b1990505b818116838216818103911461a039579750615f879650505050505050565b50505b61a04760208661b559565b945061a05460208561b559565b9350505060208161a065919061b559565b9050619fc0565b5084518651616afa919061b8ee565b610c9f8061b90f83390190565b61140b8061c5ae83390190565b6117f98061d9b983390190565b610d5e8061f1b283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a0f261a0f7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0f26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1a95783516001600160a01b031683526020938401939092019160010161a182565b509095945050505050565b60005b8381101561a1cf57818101518382015260200161a1b7565b50506000910152565b6000815180845261a1f081602086016020860161a1b4565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a2e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a2d084865161a1d8565b602095860195909450929092019160010161a296565b50919750505060209485019492909201915060010161a22c565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a3605781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a320565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a3d6604088018261a1d8565b905060208201519150868103602088015261a3f1818361a30c565b96505050602093840193919091019060010161a392565b600082825180855260208501945060208160051b8301016020850160005b8381101561a45857601f1985840301885261a44283835161a1d8565b602098890198909350919091019060010161a426565b50909695505050505050565b602081526000616080602083018461a408565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a4f8604087018261a30c565b955050602093840193919091019060010161a49f565b60006020828403121561a52057600080fd5b8151801515811461608057600080fd5b602081526000616080602083018461a1d8565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616afa608083018461a1d8565b600181811c9082168061a58e57607f821691505b602082108103618245577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561a5d957600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061822b606083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615f8757615f8761a608565b828152604060208201526000617979604083018461a1d8565b6001600160a01b0383168152604060208201526000617979604083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561a6d75761a6d761a685565b60405290565b60008067ffffffffffffffff84111561a6f85761a6f861a685565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a7275761a72761a685565b60405283815290508082840185101561a73f57600080fd5b617d4884602083018561a1b4565b600082601f83011261a75e57600080fd5b6160808383516020850161a6dd565b60006020828403121561a77f57600080fd5b815167ffffffffffffffff81111561a79657600080fd5b615f838482850161a74d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a36057815186526020958601959091019060010161a7e5565b60608152600061a816606083018661a408565b828103602084015261a828818661a7d1565b9150508215156040830152949350505050565b6001600160a01b038516815260806020820152600061a85d608083018661a408565b828103604084015261a86f818661a7d1565b915050821515606083015295945050505050565b60008261a8b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60608152600061a8d1606083018661a1d8565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061a91060a083018661a1d8565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a96181601a85016020880161a1b4565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a99e81601c84016020880161a1b4565b01601c01949350505050565b60006020828403121561a9bc57600080fd5b81516001600160a01b038116811461608057600080fd5b6000835161a9e581846020880161a1b4565b83519083019061a9f981836020880161a1b4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aa3a81601a85016020880161a1b4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aa7781603384016020880161a1b4565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561ab0657600080fd5b815167ffffffffffffffff81111561ab1d57600080fd5b8201601f8101841361ab2e57600080fd5b615f838482516020840161a6dd565b6000855161ab4f818460208a0161a1b4565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ab89816001840160208a0161a1b4565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161abc781600284016020890161a1b4565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac0981600284016020880161a1b4565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ac54604083018461a1d8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161accb81601f85016020870161a1b4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061ad38604083018461a1d8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ad8a604083018461a1d8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae0181601485016020870161a1b4565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061ae48604083018561a1d8565b828103602084015261607c818561a1d8565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161ae9281600185016020870161a1b4565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aed881846020870161a1b4565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161af8b81604b85016020870161a1b4565b91909101604b0192915050565b600060ff821660ff810361afae5761afae61a608565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561b07b57600080fd5b815167ffffffffffffffff81111561b09257600080fd5b82016060818503121561b0a457600080fd5b61b0ac61a6b4565b81518060030b811461b0bd57600080fd5b8152602082015167ffffffffffffffff81111561b0d957600080fd5b61b0e58682850161a74d565b602083015250604082015167ffffffffffffffff81111561b10557600080fd5b61b1118682850161a74d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b17d81602185016020870161a1b4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b36981602185016020880161a1b4565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b3a681602e84016020880161a1b4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b46e81602285016020870161a1b4565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b4b381600e85016020870161a1b4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615f8757615f8761a608565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b5a481601885016020880161a1b4565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b5e181601c84016020880161a1b4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b6e781846020870161a1b4565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b74e81601c85016020870161a1b4565b91909101601c0192915050565b6000600019820361b76e5761b76e61a608565b5060010190565b8082028115828204841417615f8757615f8761a608565b6001815b600184111561b7c75780850481111561b7ab5761b7ab61a608565b600184161561b7b957908102905b60019390931c92800261b790565b935093915050565b60008261b7de57506001615f87565b8161b7eb57506000615f87565b816001811461b801576002811461b80b5761b827565b6001915050615f87565b60ff84111561b81c5761b81c61a608565b50506001821b615f87565b5060208310610133831016604e8410600b841016171561b84a575081810a615f87565b61b857600019848461b78c565b806000190482111561b86b5761b86b61a608565b029392505050565b6000616080838361b7cf565b60008161b88e5761b88e61a608565b506000190190565b6000835161b8a881846020880161a1b4565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b8e281600184016020880161a1b4565b01600101949350505050565b81810360008312801583831316838312821617156193405761934061a60856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122059e01a220b21abd790eb8bbfb7918643dfdcb2a99f9dfdf673f9aace356a959e64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ff458061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c8063a3f9d0e011610160578063dd51e82f116100d8578063fa18c09b1161008c578063fb176c1211610071578063fb176c121461049a578063fe7bdbb2146104a2578063fe8e5f1b146104aa57600080fd5b8063fa18c09b14610485578063fa7626d41461048d57600080fd5b8063e63ab1e9116100bd578063e63ab1e91461044e578063eb1ce7f914610475578063f68bd1c01461047d57600080fd5b8063dd51e82f1461043e578063e20c9f711461044657600080fd5b8063b5508aa91161012f578063c9350b7f11610114578063c9350b7f14610426578063cbd57e2f1461042e578063cebad2a61461043657600080fd5b8063b5508aa914610406578063ba414fa61461040e57600080fd5b8063a3f9d0e0146103c7578063a4943deb146103cf578063a783c789146103d7578063b0464fdc146103fe57600080fd5b80633f7286f41161020e57806371149c94116101c257806385226c81116101a757806385226c811461037657806385f438c11461038b578063916a17c6146103b257600080fd5b806371149c94146103665780637d7f772a1461036e57600080fd5b80635d62c860116101f35780635d62c8601461031457806366d9a9a0146103495780636a6218541461035e57600080fd5b80633f7286f41461030457806344671b941461030c57600080fd5b80632206eb65116102655780633e5e3c231161024a5780633e5e3c23146102ec5780633e73ecb4146102f45780633ee92923146102fc57600080fd5b80632206eb65146102cf5780632ade3880146102d757600080fd5b80630a9254e4146102975780630eee72a9146102a15780631779672f146102a95780631ed7831c146102b1575b600080fd5b61029f6104b2565b005b61029f610d62565b61029f610fdd565b6102b9611132565b6040516102c6919061a168565b60405180910390f35b61029f611194565b6102df6113d8565b6040516102c6919061a204565b6102b961151a565b61029f61157a565b61029f611adb565b6102b9611b95565b61029f611bf5565b61033b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6040519081526020016102c6565b610351611f78565b6040516102c6919061a36a565b61029f6120e5565b61029f61219c565b61029f612992565b61037e612ccb565b6040516102c6919061a464565b61033b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6103ba612d9b565b6040516102c6919061a477565b61029f612e81565b61029f61345f565b61033b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6103ba61366f565b61037e613755565b610416613825565b60405190151581526020016102c6565b61029f6138f9565b61029f613b3d565b61029f61409e565b61029f6142d7565b6102b9614a8d565b61033b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61029f614aed565b61029f614c12565b61029f614fc0565b601f546104169060ff1681565b61029f6152e6565b61029f61593a565b61029f615d68565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516105049061a07b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610589573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105ce9061a07b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610652573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261072c919060840160408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615f6e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906107b89061a088565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107f4573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061084f9061a095565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015610893573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108d89061a0a2565b604051809103906000f0801580156108f4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610aa457600080fd5b505af1158015610ab8573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610c1957600080fd5b505af1158015610c2d573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc7919061a50e565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b50505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610f1c919060040161a530565b600060405180830381600087803b158015610f3657600080fd5b505af1158015610f4a573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610fa79392831692909116908790879060040161a543565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610f1c565b6060601680548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116c575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561126357600080fd5b505af1158015611277573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061134d919060040161a530565b600060405180830381600087803b15801561136757600080fd5b505af115801561137b573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610fa79392831692909116908790879060040161a543565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561151157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114fa57838290600052602060002001805461146d9061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546114999061a57a565b80156114e65780601f106114bb576101008083540402835291602001916114e6565b820191906000526020600020905b8154815290600101906020018083116114c957829003601f168201915b50505050508152602001906001019061144e565b5050505081525050815260200190600101906113fc565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa1580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f3919061a5c7565b9050611600816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611650573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611674919061a5c7565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611742916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561175c57600080fd5b505af1158015611770573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156117e957600080fd5b505af11580156117fd573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc919061a5c7565b90506119c88186615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c919061a5c7565b9050611a5181611a4c888761a637565b615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061a5c7565b9050611ad2816000615f8d565b50505050505050565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610e18565b6060601780548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b6040805160048082526024820183526020820180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611c96926001600160a01b03169160009187910161a5e0565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611e6490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611f2d9290911690859060040161a663565b6000604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f74919081019061a76d565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000209060020201604051806040016040529081600082018054611fcf9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ffb9061a57a565b80156120485780601f1061201d57610100808354040283529160200191612048565b820191906000526020600020905b81548152906001019060200180831161202b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156120cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161208f5790505b50505050508152505081526020019060010190611f9c565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612253919061a5c7565b9050612260816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d4919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916123a2916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506124a092506001600160a01b0390911690879061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561251d57600080fd5b505af1158015612531573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061257c908990899061a64a565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125f957600080fd5b505af115801561260d573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890612658908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945061272a9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf919061a5c7565b90506127db8187615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f919061a5c7565b905061285f81611a4c898761a637565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f9919061a5c7565b9050612906816000615f8d565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297a919061a5c7565b9050612987816000615f8d565b505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816129a95790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110612a0957612a0961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110612a4d57612a4d61a7a2565b6020908102919091010152604051600190600090612a739085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612bfb919060040161a530565b600060405180830381600087803b158015612c1557600080fd5b505af1158015612c29573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612c7d9290911690859060040161a663565b6000604051808303816000875af1158015612c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cc4919081019061a76d565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611511578382906000526020600020018054612d0e9061a57a565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3a9061a57a565b8015612d875780601f10612d5c57610100808354040283529160200191612d87565b820191906000526020600020905b815481529060010190602001808311612d6a57829003601f168201915b505050505081526020019060010190612cef565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e6957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612e2b5790505b50505050508152505081526020019060010190612dbf565b604080516004808252602480830184526020830180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3a919061a5c7565b9050612f47816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbb919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613089916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561313057600080fd5b505af1158015613144573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9061325c908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061332e9392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561334857600080fd5b505af115801561335c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061a5c7565b90506133df816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561342f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613453919061a5c7565b905061285f8185615f8d565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134fa57600080fd5b505af115801561350e573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135e4919060040161a530565b600060405180830381600087803b1580156135fe57600080fd5b505af1158015613612573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610fa79392831692909116908790879060040161a543565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156115115760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116136ff5790505b50505050508152505081526020019060010190613693565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156115115783829060005260206000200180546137989061a57a565b80601f01602080910402602001604051908101604052809291908181526020018280546137c49061a57a565b80156138115780601f106137e657610100808354040283529160200191613811565b820191906000526020600020905b8154815290600101906020018083116137f457829003601f168201915b505050505081526020019060010190613779565b60085460009060ff161561383d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156138ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f2919061a5c7565b1415905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156139c857600080fd5b505af11580156139dc573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613ab2919060040161a530565b600060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610fa79392831692909116908790879060040161a543565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c25919061a5c7565b9050613c32816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca6919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613d74916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613e1b57600080fd5b505af1158015613e2f573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f0557600080fd5b505af1158015613f19573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613f64908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fc557600080fd5b505af1158015613fd9573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506140369392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561405057600080fd5b505af1158015614064573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161278e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614228919060040161a530565b600060405180830381600087803b15801561424257600080fd5b505af1158015614256573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db935086926142aa921690869060040161a663565b6000604051808303818588803b1580156142c357600080fd5b505af1158015611ad2573d6000803e3d6000fd5b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561433057600080fd5b505af1158015614344573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061441a919060040161a530565b600060405180830381600087803b15801561443457600080fd5b505af1158015614448573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561450d57600080fd5b505af1158015614521573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506145f7919060040161a530565b600060405180830381600087803b15801561461157600080fd5b505af1158015614625573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561467957600080fd5b505af115801561468d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156146ea57600080fd5b505af11580156146fe573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561475257600080fd5b505af1158015614766573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b15801561483357600080fd5b505af1158015614847573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156148a457600080fd5b505af11580156148b8573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935061490c9290911690859060040161a663565b6000604051808303816000875af115801561492b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614953919081019061a76d565b5060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149ad57600080fd5b505af11580156149c1573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a1557600080fd5b505af1158015614a29573d6000803e3d6000fd5b50506021546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611c96916001600160a01b031690600090869060040161a5e0565b6060601580548060200260200160405190810160405280929190818152602001828054801561118a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161116c575050505050905090565b600080604051602001614b23907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614b8a57600080fd5b505af1158015614b9e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016135e4565b604080516001808252818301909252600091816020015b6060815260200190600190039081614c295790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110614c8957614c8961a7a2565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110614ccd57614ccd61a7a2565b6020908102919091010152604051600190600090614cf39085908590859060240161a803565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614d9b916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b158015614db557600080fd5b505af1158015614dc9573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614e4257600080fd5b505af1158015614e56573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b1469350614e9d92506001600160a01b039091169087908790879061a83b565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614f1a57600080fd5b505af1158015614f2e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614f7490600090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612bfb565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b03163161501f816000615f8d565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561509457600080fd5b505af11580156150a8573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506150eb92506001600160a01b0390911690859061a663565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561516857600080fd5b505af115801561517c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c91506151c990670de0b6b3a764000090869061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561522a57600080fd5b505af115801561523e573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792615292921690879060040161a663565b6000604051808303818588803b1580156152ab57600080fd5b505af11580156152bf573d6000803e3d6000fd5b50506021546001600160a01b0316319250610d5c9150829050670de0b6b3a7640000615f8d565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156153aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ce919061a5c7565b90506153db816000615f8d565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561542b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061544f919061a5c7565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161551d916001600160a01b039190911690600090869060040161a5e0565b600060405180830381600087803b15801561553757600080fd5b505af115801561554b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905061561660028861a883565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156156c557600080fd5b505af11580156156d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90615724908990899061a64a565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561578557600080fd5b505af1158015615799573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506157f69392831692909116908a908a9060040161a543565b600060405180830381600087803b15801561581057600080fd5b505af1158015615824573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061589a919061a5c7565b90506158ab81611a4c60028961a883565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156158fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061591f919061a5c7565b905061285f8161593060028a61a883565b611a4c908761a637565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615997906000906001600160a01b031631615f8d565b60008484846040516024016159ae9392919061a8be565b60408051601f198184030181529181526020820180516001600160e01b03167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a5d916001600160a01b039190911690670de0b6b3a764000090869060040161a5e0565b600060405180830381600087803b158015615a7757600080fd5b505af1158015615a8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b0457600080fd5b505af1158015615b18573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350615b6192506001600160a01b0390911690859089908990899061a8e8565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615bde57600080fd5b505af1158015615bf2573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c3f90670de0b6b3a764000090859061a64a565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ca057600080fd5b505af1158015615cb4573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692615d08921690869060040161a663565b60006040518083038185885af1158015615d26573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d4f919081019061a76d565b50602154612cc49083906001600160a01b031631615f8d565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dc657600080fd5b505af1158015615dda573d6000803e3d6000fd5b5050602654604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615eb0919060040161a530565b600060405180830381600087803b158015615eca57600080fd5b505af1158015615ede573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015615f5a57600080fd5b505af1158015612cc4573d6000803e3d6000fd5b6000615f7861a0af565b615f8384848361600c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615ff857600080fd5b505afa158015610fd5573d6000803e3d6000fd5b6000806160198584616087565b905061607c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161606792919061a663565b60405160208183030381529060405285616093565b9150505b9392505050565b600061608083836160c1565b60c081015151600090156160b7576160b084848460c001516160dc565b9050616080565b6160b08484616282565b60006160cd838361636d565b61608083836020015184616093565b6000806160e7616379565b905060006160f5868361644c565b9050600061610c82606001518360200151856168f2565b9050600061611c83838989616b04565b9050600061612982617981565b602081015181519192509060030b1561619c5789826040015160405160200161615392919061a929565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526161939160040161a530565b60405180910390fd5b60006161df6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617b50565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061623290849060040161a530565b602060405180830381865afa15801561624f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616273919061a9aa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906162d790879060040161a530565b600060405180830381865afa1580156162f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261631c919081019061a76d565b9050600061634a828560405160200161633692919061a9d3565b604051602081830303815290604052617d50565b90506001600160a01b038116615f8357848460405160200161615392919061aa02565b611f7482826000617d63565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061640090849060040161aaad565b600060405180830381865afa15801561641d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616445919081019061aaf4565b9250505090565b61647e6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164c96040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6164d285617e66565b602082015260006164e28661824b565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616524573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261654c919081019061aaf4565b86838560200151604051602001616566949392919061ab3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906165be90859060040161a530565b600060405180830381865afa1580156165db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616603919081019061aaf4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061664b90849060040161ac41565b602060405180830381865afa158015616668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061668c919061a50e565b6166a15781604051602001616153919061ac93565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906166e690849060040161ad25565b600060405180830381865afa158015616703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261672b919081019061aaf4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061677290849060040161ad77565b602060405180830381865afa15801561678f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167b3919061a50e565b15616848576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906167fd90849060040161ad77565b600060405180830381865afa15801561681a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616842919081019061aaf4565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161686d919061adc9565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161689992919061ae35565b600060405180830381865afa1580156168b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168de919081019061aaf4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161690e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061696e5761696e61a7a2565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169c2576169c261a7a2565b6020026020010181905250846040516020016169de919061ae5a565b60405160208183030381529060405281600281518110616a0057616a0061a7a2565b602002602001018190525082604051602001616a1c919061aec6565b60405160208183030381529060405281600381518110616a3e57616a3e61a7a2565b60200260200101819052506000616a5482617981565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616ae590604080518082018252600080825260209182015281518083019092528451825280850190820152906184ce565b616afa5785604051602001616153919061af07565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616b54565b511590565b616cc857826020015115616c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616193565b8260c0015115616cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616193565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616ce157905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616d3c9061af98565b935060ff1681518110616d5157616d5161a7a2565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616da2919061afb7565b604051602081830303815290604052828280616dbd9061af98565b935060ff1681518110616dd257616dd261a7a2565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616e1f9061af98565b935060ff1681518110616e3457616e3461a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616e819061af98565b935060ff1681518110616e9657616e9661a7a2565b60200260200101819052508760200151828280616eb29061af98565b935060ff1681518110616ec757616ec761a7a2565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616f149061af98565b935060ff1681518110616f2957616f2961a7a2565b602090810291909101015287518282616f418161af98565b935060ff1681518110616f5657616f5661a7a2565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616fa39061af98565b935060ff1681518110616fb857616fb861a7a2565b6020026020010181905250616fcc4661852f565b8282616fd78161af98565b935060ff1681518110616fec57616fec61a7a2565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806170399061af98565b935060ff168151811061704e5761704e61a7a2565b6020026020010181905250868282806170669061af98565b935060ff168151811061707b5761707b61a7a2565b60209081029190910101528551156171a25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826170cc8161af98565b935060ff16815181106170e1576170e161a7a2565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061713190899060040161a530565b600060405180830381865afa15801561714e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617176919081019061aaf4565b82826171818161af98565b935060ff16815181106171965761719661a7a2565b60200260200101819052505b8460200151156172725760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826171eb8161af98565b935060ff16815181106172005761720061a7a2565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061724d9061af98565b935060ff16815181106172625761726261a7a2565b6020026020010181905250617439565b6172aa616b4f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61733d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826172ed8161af98565b935060ff16815181106173025761730261a7a2565b60200260200101819052508460a00151604051602001617322919061ae5a565b60405160208183030381529060405282828061724d9061af98565b8460c0015115801561738057506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261737e90511590565b155b156174395760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173c48161af98565b935060ff16815181106173d9576173d961a7a2565b60200260200101819052506173ed886185cf565b6040516020016173fd919061ae5a565b6040516020818303038152906040528282806174189061af98565b935060ff168151811061742d5761742d61a7a2565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261746d90511590565b6175025760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826174b08161af98565b935060ff16815181106174c5576174c561a7a2565b602002602001018190525084604001518282806174e19061af98565b935060ff16815181106174f6576174f661a7a2565b60200260200101819052505b6060850151156176235760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261754b8161af98565b935060ff16815181106175605761756061a7a2565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156175cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175f7919081019061aaf4565b82826176028161af98565b935060ff16815181106176175761761761a7a2565b60200260200101819052505b60e085015151156176ca5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261766d8161af98565b935060ff16815181106176825761768261a7a2565b602002602001018190525061769e8560e001516000015161852f565b82826176a98161af98565b935060ff16815181106176be576176be61a7a2565b60200260200101819052505b60e085015160200151156177745760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826177178161af98565b935060ff168151811061772c5761772c61a7a2565b60200260200101819052506177488560e001516020015161852f565b82826177538161af98565b935060ff16815181106177685761776861a7a2565b60200260200101819052505b60e0850151604001511561781e5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177c18161af98565b935060ff16815181106177d6576177d661a7a2565b60200260200101819052506177f28560e001516040015161852f565b82826177fd8161af98565b935060ff16815181106178125761781261a7a2565b60200260200101819052505b60e085015160600151156178c85760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261786b8161af98565b935060ff16815181106178805761788061a7a2565b602002602001018190525061789c8560e001516060015161852f565b82826178a78161af98565b935060ff16815181106178bc576178bc61a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178e6576178e661a685565b60405190808252806020026020018201604052801561791957816020015b60608152602001906001900390816179045790505b50905060005b8260ff168160ff16101561797257838160ff16815181106179425761794261a7a2565b6020026020010151828260ff168151811061795f5761795f61a7a2565b602090810291909101015260010161791f565b5093505050505b949350505050565b6179a86040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617a2e9186910161b022565b600060405180830381865afa158015617a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a73919081019061aaf4565b90506000617a8186836190be565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617ab1919061a464565b6000604051808303816000875af1158015617ad0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617af8919081019061b069565b805190915060030b15801590617b115750602081015151155b8015617b205750604081015151155b15616afa5781600081518110617b3857617b3861a7a2565b6020026020010151604051602001616153919061b11f565b60606000617b858560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617bbc9082905b90619213565b15617d19576000617c3982617c3384617c2d617bff8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061923a565b9061929c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9d908290619213565b15617d0757604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d04905b8290619321565b90505b617d1081619347565b92505050616080565b8215617d3257848460405160200161615392919061b30b565b5050604080516020810190915260008152616080565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617d7257505050565b6000617d7f8484846193b0565b90506000617d8c82617981565b602081015181519192509060030b158015617e285750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2890604080518082018252600080825260209182015281518083019092528451825280850190820152617bb6565b15617e3557505050505050565b60408201515115617e55578160400151604051602001616153919061b3b2565b80604051602001616153919061b410565b60606000617e9b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f00905b82906184ce565b15617f6f57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90839061994b565b619347565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fd1905b82906199d5565b60010361809e57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261803790617cfd565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a905b8390619321565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180fd90617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618165908390619a6f565b905060008160018351618178919061a637565b815181106181885761818861a7a2565b6020026020010151905061822b617f6a6181fe6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061994b565b95945050505050565b82604051602001616153919061b47b565b50919050565b606060006182808360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182e290617ef9565b156182f05761608081619347565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261834f90617fca565b6001036183b957604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261608090617f6a90618097565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261841890617ef9565b1561823457604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618480908390619a6f565b90506001815111156184bc57806002825161849b919061a637565b815181106184ab576184ab61a7a2565b602002602001015192505050919050565b5082604051602001616153919061b47b565b8051825160009111156184e357506000615f87565b815183516020850151600092916184f99161b559565b618503919061a637565b90508260200151810361851a576001915050615f87565b82516020840151819020912014905092915050565b6060600061853c83619b14565b600101905060008167ffffffffffffffff81111561855c5761855c61a685565b6040519080825280601f01601f191660200182016040528015618586576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461859057509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161865b905b8290619bf6565b1561869b57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186fa90618654565b1561873a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261879990618654565b156187d957505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883890618654565b8061889d5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889d90618654565b156188dd57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261893c90618654565b806189a15750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189a190618654565b156189e157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4090618654565b80618aa55750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa590618654565b15618ae557505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b4490618654565b80618ba95750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba990618654565b15618be957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c4890618654565b15618c8857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce790618654565b15618d2757505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d8690618654565b15618dc657505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e2590618654565b15618e6557505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec490618654565b15618f0457505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f6390618654565b80618fc85750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc890618654565b1561900857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261906790618654565b156190a757505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616153929060200161b56c565b60608060005b845181101561914957818582815181106190e0576190e061a7a2565b60200260200101516040516020016190f992919061a9d3565b604051602081830303815290604052915060018551619118919061a637565b8114619141578160405160200161912f919061b6d5565b60405160208183030381529060405291505b6001016190c4565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619162579050509050838160008151811061918d5761918d61a7a2565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191e1576191e161a7a2565b602002602001018190525081816002815181106192005761920061a7a2565b6020908102919091010152949350505050565b60208083015183518351928401516000936192319291849190619c0a565b14159392505050565b6040805180820190915260008082526020820152600061926c8460000151856020015185600001518660200151619d1b565b905083602001518161927e919061a637565b8451859061928d90839061a637565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156192c1575081615f87565b60208083015190840151600191146192e85750815160208481015190840151829020919020145b8015619319578251845185906192ff90839061a637565b905250825160208501805161931590839061b559565b9052505b509192915050565b6040805180820190915260008082526020820152619340838383619e3b565b5092915050565b60606000826000015167ffffffffffffffff8111156193685761936861a685565b6040519080825280601f01601f191660200182016040528015619392576020820181803683370190505b50905060006020820190506193408185602001518660000151619ee6565b606060006193bc616379565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816193d957905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806194349061af98565b935060ff16815181106194495761944961a7a2565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161949a919061b716565b6040516020818303038152906040528282806194b59061af98565b935060ff16815181106194ca576194ca61a7a2565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806195179061af98565b935060ff168151811061952c5761952c61a7a2565b602002602001018190525082604051602001619548919061aec6565b6040516020818303038152906040528282806195639061af98565b935060ff16815181106195785761957861a7a2565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195c59061af98565b935060ff16815181106195da576195da61a7a2565b60200260200101819052506195ef8784619f60565b82826195fa8161af98565b935060ff168151811061960f5761960f61a7a2565b6020908102919091010152855151156196bb5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826196618161af98565b935060ff16815181106196765761967661a7a2565b602002602001018190525061968f866000015184619f60565b828261969a8161af98565b935060ff16815181106196af576196af61a7a2565b60200260200101819052505b8560800151156197295760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826197048161af98565b935060ff16815181106197195761971961a7a2565b602002602001018190525061978f565b841561978f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261976e8161af98565b935060ff16815181106197835761978361a7a2565b60200260200101819052505b6040860151511561982b5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197d98161af98565b935060ff16815181106197ee576197ee61a7a2565b6020026020010181905250856040015182828061980a9061af98565b935060ff168151811061981f5761981f61a7a2565b60200260200101819052505b8560600151156198955760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826198748161af98565b935060ff16815181106198895761988961a7a2565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198b3576198b361a685565b6040519080825280602002602001820160405280156198e657816020015b60608152602001906001900390816198d15790505b50905060005b8260ff168160ff16101561993f57838160ff168151811061990f5761990f61a7a2565b6020026020010151828260ff168151811061992c5761992c61a7a2565b60209081029190910101526001016198ec565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619970575081615f87565b815183516020850151600092916199869161b559565b619990919061a637565b602084015190915060019082146199b1575082516020840151819020908220145b80156199cc578351855186906199c890839061a637565b9052505b50929392505050565b60008082600001516199f98560000151866020015186600001518760200151619d1b565b619a03919061b559565b90505b83516020850151619a17919061b559565b81116193405781619a278161b75b565b9250508260000151619a5e856020015183619a42919061a637565b8651619a4e919061a637565b8386600001518760200151619d1b565b619a68919061b559565b9050619a06565b60606000619a7d84846199d5565b619a8890600161b559565b67ffffffffffffffff811115619aa057619aa061a685565b604051908082528060200260200182016040528015619ad357816020015b6060815260200190600190039081619abe5790505b50905060005b8151811015617d4857619aef617f6a8686619321565b828281518110619b0157619b0161a7a2565b6020908102919091010152600101619ad9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619b5d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619b89576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619ba757662386f26fc10000830492506010015b6305f5e1008310619bbf576305f5e100830492506008015b6127108310619bd357612710830492506004015b60648310619be5576064830492506002015b600a8310615f875760010192915050565b6000619c028383619fa0565b159392505050565b600080858411619d115760208411619cbd5760008415619c55576001619c3186602061a637565b619c3c90600861b775565b619c4790600261b873565b619c51919061a637565b1990505b8351811685619c64898961b559565b619c6e919061a637565b805190935082165b818114619ca857878411619c905787945050505050617979565b83619c9a8161b87f565b945050828451169050619c76565b619cb2878561b559565b945050505050617979565b838320619cca858861a637565b619cd4908761b559565b91505b858210619d0f57848220808203619cfc57619cf2868461b559565b9350505050617979565b619d0760018461a637565b925050619cd7565b505b5092949350505050565b60008381868511619e265760208511619dd55760008515619d67576001619d4387602061a637565b619d4e90600861b775565b619d5990600261b873565b619d63919061a637565b1990505b84518116600087619d788b8b61b559565b619d82919061a637565b855190915083165b828114619dc757818610619daf57619da28b8b61b559565b9650505050505050617979565b85619db98161b75b565b965050838651169050619d8a565b859650505050505050617979565b508383206000905b619de7868961a637565b8211619e2457858320808203619e035783945050505050617979565b619e0e60018561b559565b9350508180619e1c9061b75b565b925050619ddd565b505b619e30878761b559565b979650505050505050565b60408051808201909152600080825260208201526000619e6d8560000151866020015186600001518760200151619d1b565b602080870180519186019190915251909150619e89908261a637565b835284516020860151619e9c919061b559565b8103619eab5760008552619edd565b83518351619eb9919061b559565b85518690619ec890839061a637565b9052508351619ed7908261b559565b60208601525b50909392505050565b60208110619f1e5781518352619efd60208461b559565b9250619f0a60208361b559565b9150619f1760208261a637565b9050619ee6565b6000198115619f4d576001619f3483602061a637565b619f409061010061b873565b619f4a919061a637565b90505b9151835183169219169190911790915250565b60606000619f6e848461644c565b8051602080830151604051939450619f889390910161b896565b60405160208183030381529060405291505092915050565b8151815160009190811115619fb3575081515b6020808501519084015160005b8381101561a06c578251825180821461a03c57600019602087101561a01b57600184619fed89602061a637565b619ff7919061b559565b61a00290600861b775565b61a00d90600261b873565b61a017919061a637565b1990505b818116838216818103911461a039579750615f879650505050505050565b50505b61a04760208661b559565b945061a05460208561b559565b9350505060208161a065919061b559565b9050619fc0565b5084518651616afa919061b8ee565b610c9f8061b90f83390190565b61140b8061c5ae83390190565b6117f98061d9b983390190565b610d5e8061f1b283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a0f261a0f7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0f26040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1a95783516001600160a01b031683526020938401939092019160010161a182565b509095945050505050565b60005b8381101561a1cf57818101518382015260200161a1b7565b50506000910152565b6000815180845261a1f081602086016020860161a1b4565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a2e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a2d084865161a1d8565b602095860195909450929092019160010161a296565b50919750505060209485019492909201915060010161a22c565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a3605781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a320565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a3d6604088018261a1d8565b905060208201519150868103602088015261a3f1818361a30c565b96505050602093840193919091019060010161a392565b600082825180855260208501945060208160051b8301016020850160005b8381101561a45857601f1985840301885261a44283835161a1d8565b602098890198909350919091019060010161a426565b50909695505050505050565b602081526000616080602083018461a408565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a300577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a4f8604087018261a30c565b955050602093840193919091019060010161a49f565b60006020828403121561a52057600080fd5b8151801515811461608057600080fd5b602081526000616080602083018461a1d8565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616afa608083018461a1d8565b600181811c9082168061a58e57607f821691505b602082108103618245577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561a5d957600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061822b606083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615f8757615f8761a608565b828152604060208201526000617979604083018461a1d8565b6001600160a01b0383168152604060208201526000617979604083018461a1d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561a6d75761a6d761a685565b60405290565b60008067ffffffffffffffff84111561a6f85761a6f861a685565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a7275761a72761a685565b60405283815290508082840185101561a73f57600080fd5b617d4884602083018561a1b4565b600082601f83011261a75e57600080fd5b6160808383516020850161a6dd565b60006020828403121561a77f57600080fd5b815167ffffffffffffffff81111561a79657600080fd5b615f838482850161a74d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a36057815186526020958601959091019060010161a7e5565b60608152600061a816606083018661a408565b828103602084015261a828818661a7d1565b9150508215156040830152949350505050565b6001600160a01b038516815260806020820152600061a85d608083018661a408565b828103604084015261a86f818661a7d1565b915050821515606083015295945050505050565b60008261a8b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60608152600061a8d1606083018661a1d8565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061a91060a083018661a1d8565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a96181601a85016020880161a1b4565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a99e81601c84016020880161a1b4565b01601c01949350505050565b60006020828403121561a9bc57600080fd5b81516001600160a01b038116811461608057600080fd5b6000835161a9e581846020880161a1b4565b83519083019061a9f981836020880161a1b4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aa3a81601a85016020880161a1b4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aa7781603384016020880161a1b4565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561ab0657600080fd5b815167ffffffffffffffff81111561ab1d57600080fd5b8201601f8101841361ab2e57600080fd5b615f838482516020840161a6dd565b6000855161ab4f818460208a0161a1b4565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ab89816001840160208a0161a1b4565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161abc781600284016020890161a1b4565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac0981600284016020880161a1b4565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ac54604083018461a1d8565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161accb81601f85016020870161a1b4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061ad38604083018461a1d8565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ad8a604083018461a1d8565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae0181601485016020870161a1b4565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061ae48604083018561a1d8565b828103602084015261607c818561a1d8565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161ae9281600185016020870161a1b4565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aed881846020870161a1b4565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161af8b81604b85016020870161a1b4565b91909101604b0192915050565b600060ff821660ff810361afae5761afae61a608565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616080608083018461a1d8565b60006020828403121561b07b57600080fd5b815167ffffffffffffffff81111561b09257600080fd5b82016060818503121561b0a457600080fd5b61b0ac61a6b4565b81518060030b811461b0bd57600080fd5b8152602082015167ffffffffffffffff81111561b0d957600080fd5b61b0e58682850161a74d565b602083015250604082015167ffffffffffffffff81111561b10557600080fd5b61b1118682850161a74d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b17d81602185016020870161a1b4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b36981602185016020880161a1b4565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b3a681602e84016020880161a1b4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b01581602985016020870161a1b4565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b46e81602285016020870161a1b4565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b4b381600e85016020870161a1b4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615f8757615f8761a608565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b5a481601885016020880161a1b4565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b5e181601c84016020880161a1b4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b6e781846020870161a1b4565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b74e81601c85016020870161a1b4565b91909101601c0192915050565b6000600019820361b76e5761b76e61a608565b5060010190565b8082028115828204841417615f8757615f8761a608565b6001815b600184111561b7c75780850481111561b7ab5761b7ab61a608565b600184161561b7b957908102905b60019390931c92800261b790565b935093915050565b60008261b7de57506001615f87565b8161b7eb57506000615f87565b816001811461b801576002811461b80b5761b827565b6001915050615f87565b60ff84111561b81c5761b81c61a608565b50506001821b615f87565b5060208310610133831016604e8410600b841016171561b84a575081810a615f87565b61b857600019848461b78c565b806000190482111561b86b5761b86b61a608565b029392505050565b6000616080838361b7cf565b60008161b88e5761b88e61a608565b506000190190565b6000835161b8a881846020880161a1b4565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b8e281600184016020880161a1b4565b01600101949350505050565b81810360008312801583831316838312821617156193405761934061a60856fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220d1fcd333f2be8f2308a5789aef68c9f8f0e3fe64e255e30e1b8af263f1c83c6064736f6c634300081a0033", } // GatewayEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go index 8f7ecf36..c83ec9ca 100644 --- a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"zetaConnector_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"custody_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220dbe54b12cfd6fb8144d0b6a09a13bd9183d367931fa65bca2b5181643e10ee2f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220af74e0039ccd316ad209c39ddb2d59569d0e7332f3cba90d28e03811e710d7ca64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a0033", } // GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go index 96e99cbb..1feb1819 100644 --- a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061bf198061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a85565b60405161010e919061620b565b60405180910390f35b61011f610ae7565b60405161010e91906162a7565b610101610c29565b610101610c89565b610144610ce9565b60405161010e919061640d565b6100f7610e6b565b61016161152d565b60405161010e91906164ab565b6101766115fd565b60405161010e9190616522565b6101766116f8565b6101616117f3565b61019b6118c3565b604051901515815260200161010e565b610101611997565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516102129061611e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc9061611e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261044f919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526119f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906104db9061612b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610517573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061057290616138565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105b6573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105fb90616145565b604051809103906000f080158015610617573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107c757600080fd5b505af11580156107db573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af11580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906165b9565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610add57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610abf575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610c2057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c09578382906000526020600020018054610b7c906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906165db565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081526020019060010190610b5d565b505050508152505081526020019060010190610b0b565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610c205783829060005260206000209060020201604051806040016040529081600082018054610d40906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c906165db565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e005790505b50505050508152505081526020019060010190610d0d565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190616628565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190616628565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093611023936001600160a01b036101009093048316939216611a16565b600084848460405160240161103a93929190616651565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611100929116908790879060040161667b565b600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061121d92506001600160a01b039091169086908a908a908a906166a3565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915061130c90869086906166e4565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561138657600080fd5b505af115801561139a573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113ec9291169087906004016166fd565b60006040518083038185885af115801561140a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526114339190810190616807565b5060208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516114c0938c936001600160a01b03169263dda79b7592600480830193928290030181865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190616628565b611a32565b60208054604080517f5b1125910000000000000000000000000000000000000000000000000000000081529051611523938b936001600160a01b031692635b11259192600480830193928290030181865afa158015611497573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611570906165db565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906165db565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b505050505081526020019060010190611551565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161168d5790505b50505050508152505081526020019060010190611621565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117885790505b5050505050815250508152602001906001019061171c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611836906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054611862906165db565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081526020019060010190611817565b60085460009060ff16156118db575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061683c565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6000611a01616152565b611a0c848483611ac2565b9150505b92915050565b611a1e616152565b611a2b8585858486611b3d565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050505050565b600080611acf8584611c3e565b9050611b326040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611b1d9291906166fd565b60405160208183030381529060405285611c4a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611baf57600080fd5b505af1925050508015611bc0575060015b611bd557611bd087878787611c78565b611c35565b611be187878787611c78565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505b50505050505050565b6000611b368383611c91565b60c08101515160009015611c6e57611c6784848460c00151611cac565b9050611b36565b611c678484611e52565b6000611c848483611f3d565b9050611a2b858285611f49565b6000611c9d8383612313565b611b3683836020015184611c4a565b600080611cb7612323565b90506000611cc586836123f6565b90506000611cdc826060015183602001518561289c565b90506000611cec83838989612aae565b90506000611cf98261392b565b602081015181519192509060030b15611d6c57898260400151604051602001611d23929190616855565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d63916004016168d6565b60405180910390fd5b6000611daf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613afa565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611e029084906004016168d6565b602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190616628565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611ea79087906004016168d6565b600060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eec9190810190616807565b90506000611f1a8285604051602001611f069291906168e9565b604051602081830303815290604052613cfa565b90506001600160a01b038116611a0c578484604051602001611d23929190616918565b6000611c9d8383613d0d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061683c565b9050806121b057600061201b86613d19565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506120a6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613e06565b806120b2575060008451115b15612135576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120fe90889088906004016166fd565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b505050506121aa565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050505b50611a2b565b8060006121bc82613d19565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061221e90612079565b8061222a575060008551115b156122af576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612278908a908a908a906004016169c3565b600060405180830381600087803b15801561229257600080fd5b505af11580156122a6573d6000803e3d6000fd5b50505050611c35565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611c1c57600080fd5b61231f82826000613e1a565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123aa9084906004016169f4565b600060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123ef9190810190616a3b565b9250505090565b6124286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506124736040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61247c85613f1d565b6020820152600061248c86614302565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f69190810190616a3b565b868385602001516040516020016125109493929190616a84565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125689085906004016168d6565b600060405180830381865afa158015612585573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ad9190810190616a3b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125f5908490600401616b88565b602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906165b9565b61264b5781604051602001611d239190616bda565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612690908490600401616c6c565b600060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126d59190810190616a3b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061271c908490600401616cbe565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906165b9565b156127f2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906127a7908490600401616cbe565b600060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ec9190810190616a3b565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016128179190616d10565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612843929190616d7c565b600060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128889190810190616a3b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128b85790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061291857612918616da1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061296c5761296c616da1565b6020026020010181905250846040516020016129889190616dd0565b604051602081830303815290604052816002815181106129aa576129aa616da1565b6020026020010181905250826040516020016129c69190616e3c565b604051602081830303815290604052816003815181106129e8576129e8616da1565b602002602001018190525060006129fe8261392b565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a8f9060408051808201825260008082526020918201528151808301909252845182528085019082015290614585565b612aa45785604051602001611d239190616e7d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612afe565b511590565b612c7257826020015115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d63565b8260c0015115612c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d63565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c8b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612ce690616f3d565b935060ff1681518110612cfb57612cfb616da1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d4c9190616f5c565b604051602081830303815290604052828280612d6790616f3d565b935060ff1681518110612d7c57612d7c616da1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612dc990616f3d565b935060ff1681518110612dde57612dde616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e2b90616f3d565b935060ff1681518110612e4057612e40616da1565b60200260200101819052508760200151828280612e5c90616f3d565b935060ff1681518110612e7157612e71616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612ebe90616f3d565b935060ff1681518110612ed357612ed3616da1565b602090810291909101015287518282612eeb81616f3d565b935060ff1681518110612f0057612f00616da1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f4d90616f3d565b935060ff1681518110612f6257612f62616da1565b6020026020010181905250612f76466145e6565b8282612f8181616f3d565b935060ff1681518110612f9657612f96616da1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fe390616f3d565b935060ff1681518110612ff857612ff8616da1565b60200260200101819052508682828061301090616f3d565b935060ff168151811061302557613025616da1565b602090810291909101015285511561314c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261307681616f3d565b935060ff168151811061308b5761308b616da1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130db9089906004016168d6565b600060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131209190810190616a3b565b828261312b81616f3d565b935060ff168151811061314057613140616da1565b60200260200101819052505b84602001511561321c5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261319581616f3d565b935060ff16815181106131aa576131aa616da1565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131f790616f3d565b935060ff168151811061320c5761320c616da1565b60200260200101819052506133e3565b613254612af98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132e75760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261329781616f3d565b935060ff16815181106132ac576132ac616da1565b60200260200101819052508460a001516040516020016132cc9190616dd0565b6040516020818303038152906040528282806131f790616f3d565b8460c0015115801561332a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261332890511590565b155b156133e35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261336e81616f3d565b935060ff168151811061338357613383616da1565b602002602001018190525061339788614686565b6040516020016133a79190616dd0565b6040516020818303038152906040528282806133c290616f3d565b935060ff16815181106133d7576133d7616da1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261341790511590565b6134ac5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261345a81616f3d565b935060ff168151811061346f5761346f616da1565b6020026020010181905250846040015182828061348b90616f3d565b935060ff16815181106134a0576134a0616da1565b60200260200101819052505b6060850151156135cd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134f581616f3d565b935060ff168151811061350a5761350a616da1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190616a3b565b82826135ac81616f3d565b935060ff16815181106135c1576135c1616da1565b60200260200101819052505b60e085015151156136745760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261361781616f3d565b935060ff168151811061362c5761362c616da1565b60200260200101819052506136488560e00151600001516145e6565b828261365381616f3d565b935060ff168151811061366857613668616da1565b60200260200101819052505b60e0850151602001511561371e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826136c181616f3d565b935060ff16815181106136d6576136d6616da1565b60200260200101819052506136f28560e00151602001516145e6565b82826136fd81616f3d565b935060ff168151811061371257613712616da1565b60200260200101819052505b60e085015160400151156137c85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261376b81616f3d565b935060ff168151811061378057613780616da1565b602002602001018190525061379c8560e00151604001516145e6565b82826137a781616f3d565b935060ff16815181106137bc576137bc616da1565b60200260200101819052505b60e085015160600151156138725760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261381581616f3d565b935060ff168151811061382a5761382a616da1565b60200260200101819052506138468560e00151606001516145e6565b828261385181616f3d565b935060ff168151811061386657613866616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156138905761389061671f565b6040519080825280602002602001820160405280156138c357816020015b60608152602001906001900390816138ae5790505b50905060005b8260ff168160ff16101561391c57838160ff16815181106138ec576138ec616da1565b6020026020010151828260ff168151811061390957613909616da1565b60209081029190910101526001016138c9565b5093505050505b949350505050565b6139526040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139d891869101616fc7565b600060405180830381865afa1580156139f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a1d9190810190616a3b565b90506000613a2b8683615175565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a5b91906164ab565b6000604051808303816000875af1158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa2919081019061700e565b805190915060030b15801590613abb5750602081015151155b8015613aca5750604081015151155b15612aa45781600081518110613ae257613ae2616da1565b6020026020010151604051602001611d2391906170c4565b60606000613b2f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b669082905b906152ca565b15613cc3576000613be382613bdd84613bd7613ba98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152f1565b90615353565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c479082906152ca565b15613cb157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613cae905b82906153d8565b90505b613cba816153fe565b92505050611b36565b8215613cdc578484604051602001611d239291906172b0565b5050604080516020810190915260008152611b36565b509392505050565b6000808251602084016000f09392505050565b61231f82826001613e1a565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d8e9190617357565b6000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b50915091508115613def57808060200190518101906139239190616a3b565b505060408051602081019091526000815292915050565b6000613e128383615467565b159392505050565b8160a0015115613e2957505050565b6000613e36848484615542565b90506000613e438261392b565b602081015181519192509060030b158015613edf5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613edf90604080518082018252600080825260209182015281518083019092528451825280850190820152613b60565b15613eec57505050505050565b60408201515115613f0c578160400151604051602001611d239190617373565b80604051602001611d2391906173d1565b60606000613f528360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613fb7905b8290614585565b1561402657604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021908390615add565b6153fe565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614088905b8290615b67565b60010361415557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140ee90613ca7565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021905b83906153d8565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526141b490613fb0565b156142eb57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061421c908390615c01565b90506000816001835161422f919061743c565b8151811061423f5761423f616da1565b602002602001015190506142e26140216142b56040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615add565b95945050505050565b82604051602001611d23919061744f565b50919050565b606060006143378360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061439990613fb0565b156143a757611b36816153fe565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261440690614081565b60010361447057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b36906140219061414e565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144cf90613fb0565b156142eb57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614537908390615c01565b9050600181511115614573578060028251614552919061743c565b8151811061456257614562616da1565b602002602001015192505050919050565b5082604051602001611d23919061744f565b80518251600091111561459a57506000611a10565b815183516020850151600092916145b09161752d565b6145ba919061743c565b9050826020015181036145d1576001915050611a10565b82516020840151819020912014905092915050565b606060006145f383615ca6565b600101905060008167ffffffffffffffff8111156146135761461361671f565b6040519080825280601f01601f19166020018201604052801561463d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461464757509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614712905b8290613e06565b1561475257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147b19061470b565b156147f157505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148509061470b565b1561489057505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148ef9061470b565b806149545750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149549061470b565b1561499457505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149f39061470b565b80614a585750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a589061470b565b15614a9857505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614af79061470b565b80614b5c5750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b5c9061470b565b15614b9c57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bfb9061470b565b80614c605750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c609061470b565b15614ca057505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cff9061470b565b15614d3f57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d9e9061470b565b15614dde57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e3d9061470b565b15614e7d57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614edc9061470b565b15614f1c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f7b9061470b565b15614fbb57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261501a9061470b565b8061507f5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261507f9061470b565b156150bf57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261511e9061470b565b1561515e57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611d239290602001617540565b60608060005b8451811015615200578185828151811061519757615197616da1565b60200260200101516040516020016151b09291906168e9565b6040516020818303038152906040529150600185516151cf919061743c565b81146151f857816040516020016151e691906176a9565b60405160208183030381529060405291505b60010161517b565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081615219579050509050838160008151811061524457615244616da1565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061529857615298616da1565b602002602001018190525081816002815181106152b7576152b7616da1565b6020908102919091010152949350505050565b60208083015183518351928401516000936152e89291849190615d88565b14159392505050565b604080518082019091526000808252602082015260006153238460000151856020015185600001518660200151615e99565b9050836020015181615335919061743c565b8451859061534490839061743c565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615378575081611a10565b602080830151908401516001911461539f5750815160208481015190840151829020919020145b80156153d0578251845185906153b690839061743c565b90525082516020850180516153cc90839061752d565b9052505b509192915050565b60408051808201909152600080825260208201526153f7838383615fb9565b5092915050565b60606000826000015167ffffffffffffffff81111561541f5761541f61671f565b6040519080825280601f01601f191660200182016040528015615449576020820181803683370190505b50905060006020820190506153f78185602001518660000151616064565b815181516000919081111561547a575081515b6020808501519084015160005b8381101561553357825182518082146155035760001960208710156154e2576001846154b489602061743c565b6154be919061752d565b6154c99060086176ea565b6154d49060026177e8565b6154de919061743c565b1990505b8181168382168181039114615500579750611a109650505050505050565b50505b61550e60208661752d565b945061551b60208561752d565b9350505060208161552c919061752d565b9050615487565b5084518651612aa491906177f4565b6060600061554e612323565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161556b57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806155c690616f3d565b935060ff16815181106155db576155db616da1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161562c9190617814565b60405160208183030381529060405282828061564790616f3d565b935060ff168151811061565c5761565c616da1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806156a990616f3d565b935060ff16815181106156be576156be616da1565b6020026020010181905250826040516020016156da9190616e3c565b6040516020818303038152906040528282806156f590616f3d565b935060ff168151811061570a5761570a616da1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061575790616f3d565b935060ff168151811061576c5761576c616da1565b602002602001018190525061578187846160de565b828261578c81616f3d565b935060ff16815181106157a1576157a1616da1565b60209081029190910101528551511561584d5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157f381616f3d565b935060ff168151811061580857615808616da1565b60200260200101819052506158218660000151846160de565b828261582c81616f3d565b935060ff168151811061584157615841616da1565b60200260200101819052505b8560800151156158bb5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261589681616f3d565b935060ff16815181106158ab576158ab616da1565b6020026020010181905250615921565b84156159215760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261590081616f3d565b935060ff168151811061591557615915616da1565b60200260200101819052505b604086015151156159bd5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261596b81616f3d565b935060ff168151811061598057615980616da1565b6020026020010181905250856040015182828061599c90616f3d565b935060ff16815181106159b1576159b1616da1565b60200260200101819052505b856060015115615a275760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615a0681616f3d565b935060ff1681518110615a1b57615a1b616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a4557615a4561671f565b604051908082528060200260200182016040528015615a7857816020015b6060815260200190600190039081615a635790505b50905060005b8260ff168160ff161015615ad157838160ff1681518110615aa157615aa1616da1565b6020026020010151828260ff1681518110615abe57615abe616da1565b6020908102919091010152600101615a7e565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615b02575081611a10565b81518351602085015160009291615b189161752d565b615b22919061743c565b60208401519091506001908214615b43575082516020840151819020908220145b8015615b5e57835185518690615b5a90839061743c565b9052505b50929392505050565b6000808260000151615b8b8560000151866020015186600001518760200151615e99565b615b95919061752d565b90505b83516020850151615ba9919061752d565b81116153f75781615bb981617859565b9250508260000151615bf0856020015183615bd4919061743c565b8651615be0919061743c565b8386600001518760200151615e99565b615bfa919061752d565b9050615b98565b60606000615c0f8484615b67565b615c1a90600161752d565b67ffffffffffffffff811115615c3257615c3261671f565b604051908082528060200260200182016040528015615c6557816020015b6060815260200190600190039081615c505790505b50905060005b8151811015613cf257615c8161402186866153d8565b828281518110615c9357615c93616da1565b6020908102919091010152600101615c6b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615d1b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d3957662386f26fc10000830492506010015b6305f5e1008310615d51576305f5e100830492506008015b6127108310615d6557612710830492506004015b60648310615d77576064830492506002015b600a8310611a105760010192915050565b600080858411615e8f5760208411615e3b5760008415615dd3576001615daf86602061743c565b615dba9060086176ea565b615dc59060026177e8565b615dcf919061743c565b1990505b8351811685615de2898961752d565b615dec919061743c565b805190935082165b818114615e2657878411615e0e5787945050505050613923565b83615e1881617873565b945050828451169050615df4565b615e30878561752d565b945050505050613923565b838320615e48858861743c565b615e52908761752d565b91505b858210615e8d57848220808203615e7a57615e70868461752d565b9350505050613923565b615e8560018461743c565b925050615e55565b505b5092949350505050565b60008381868511615fa45760208511615f535760008515615ee5576001615ec187602061743c565b615ecc9060086176ea565b615ed79060026177e8565b615ee1919061743c565b1990505b84518116600087615ef68b8b61752d565b615f00919061743c565b855190915083165b828114615f4557818610615f2d57615f208b8b61752d565b9650505050505050613923565b85615f3781617859565b965050838651169050615f08565b859650505050505050613923565b508383206000905b615f65868961743c565b8211615fa257858320808203615f815783945050505050613923565b615f8c60018561752d565b9350508180615f9a90617859565b925050615f5b565b505b615fae878761752d565b979650505050505050565b60408051808201909152600080825260208201526000615feb8560000151866020015186600001518760200151615e99565b602080870180519186019190915251909150616007908261743c565b83528451602086015161601a919061752d565b8103616029576000855261605b565b83518351616037919061752d565b8551869061604690839061743c565b9052508351616055908261752d565b60208601525b50909392505050565b6020811061609c578151835261607b60208461752d565b925061608860208361752d565b915061609560208261743c565b9050616064565b60001981156160cb5760016160b283602061743c565b6160be906101006177e8565b6160c8919061743c565b90505b9151835183169219169190911790915250565b606060006160ec84846123f6565b80516020808301516040519394506161069390910161788a565b60405160208183030381529060405291505092915050565b610c9f806178e383390190565b61140b8061858283390190565b6117f98061998d83390190565b610d5e8061b18683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161619561619a565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016161956040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561624c5783516001600160a01b0316835260209384019390920191600101616225565b509095945050505050565b60005b8381101561627257818101518382015260200161625a565b50506000910152565b60008151808452616293816020860160208601616257565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616389577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261637384865161627b565b6020958601959094509290920191600101616339565b5091975050506020948501949290920191506001016162cf565b50929695505050505050565b600081518084526020840193506020830160005b828110156164035781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016163c3565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616479604088018261627b565b905060208201519150868103602088015261649481836163af565b965050506020938401939190910190600101616435565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261650d85835161627b565b945060209384019391909101906001016164d3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526165a360408701826163af565b955050602093840193919091019060010161654a565b6000602082840312156165cb57600080fd5b81518015158114611b3657600080fd5b600181811c908216806165ef57607f821691505b6020821081036142fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561663a57600080fd5b81516001600160a01b0381168114611b3657600080fd5b606081526000616664606083018661627b565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142e2606083018461627b565b6001600160a01b038616815284602082015260a0604082015260006166cb60a083018661627b565b6060830194909452509015156080909101529392505050565b828152604060208201526000613923604083018461627b565b6001600160a01b0383168152604060208201526000613923604083018461627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156167715761677161671f565b60405290565b60008067ffffffffffffffff8411156167925761679261671f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156167c1576167c161671f565b6040528381529050808284018510156167d957600080fd5b613cf2846020830185616257565b600082601f8301126167f857600080fd5b611b3683835160208501616777565b60006020828403121561681957600080fd5b815167ffffffffffffffff81111561683057600080fd5b611a0c848285016167e7565b60006020828403121561684e57600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161688d81601a850160208801616257565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168ca81601c840160208801616257565b01601c01949350505050565b602081526000611b36602083018461627b565b600083516168fb818460208801616257565b83519083019061690f818360208801616257565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161695081601a850160208801616257565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161698d816033840160208801616257565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142e2606083018461627b565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b36608083018461627b565b600060208284031215616a4d57600080fd5b815167ffffffffffffffff811115616a6457600080fd5b8201601f81018413616a7557600080fd5b611a0c84825160208401616777565b60008551616a96818460208a01616257565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616ad0816001840160208a01616257565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616b0e816002840160208901616257565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b50816002840160208801616257565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b9b604083018461627b565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616c1281601f850160208701616257565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c7f604083018461627b565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616cd1604083018461627b565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d48816014850160208701616257565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d8f604083018561627b565b8281036020840152611b32818561627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616e08816001850160208701616257565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e4e818460208701616257565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616f0181604b850160208701616257565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f5357616f53616f0e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b36608083018461627b565b60006020828403121561702057600080fd5b815167ffffffffffffffff81111561703757600080fd5b82016060818503121561704957600080fd5b61705161674e565b81518060030b811461706257600080fd5b8152602082015167ffffffffffffffff81111561707e57600080fd5b61708a868285016167e7565b602083015250604082015167ffffffffffffffff8111156170aa57600080fd5b6170b6868285016167e7565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251617122816021850160208701616257565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161730e816021850160208801616257565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161734b81602e840160208801616257565b01602e01949350505050565b60008251617369818460208701616257565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161742f816022850160208701616257565b9190910160220192915050565b81810381811115611a1057611a10616f0e565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161748781600e850160208701616257565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115611a1057611a10616f0e565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617578816018850160208801616257565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516175b581601c840160208801616257565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516176bb818460208701616257565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417611a1057611a10616f0e565b6001815b600184111561773c5780850481111561772057617720616f0e565b600184161561772e57908102905b60019390931c928002617705565b935093915050565b60008261775357506001611a10565b8161776057506000611a10565b816001811461777657600281146177805761779c565b6001915050611a10565b60ff84111561779157617791616f0e565b50506001821b611a10565b5060208310610133831016604e8410600b84101617156177bf575081810a611a10565b6177cc6000198484617701565b80600019048211156177e0576177e0616f0e565b029392505050565b6000611b368383617744565b81810360008312801583831316838312821617156153f7576153f7616f0e565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161784c81601c850160208701616257565b91909101601c0192915050565b6000600019820361786c5761786c616f0e565b5060010190565b60008161788257617882616f0e565b506000190190565b6000835161789c818460208801616257565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178d6816001840160208801616257565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220f72dbdad3a0f5d6c5a4a91663d51a3dbf475dcd01c68e0bbb5ce99a789cf9cc764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061bf198061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a85565b60405161010e919061620b565b60405180910390f35b61011f610ae7565b60405161010e91906162a7565b610101610c29565b610101610c89565b610144610ce9565b60405161010e919061640d565b6100f7610e6b565b61016161152d565b60405161010e91906164ab565b6101766115fd565b60405161010e9190616522565b6101766116f8565b6101616117f3565b61019b6118c3565b604051901515815260200161010e565b610101611997565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516102129061611e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc9061611e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028546026549251908516602482015260448101939093529216606482015261044f919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526119f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546026546040519293918216929116906104db9061612b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610517573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854602654604051938516949283169391831692169061057290616138565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105b6573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105fb90616145565b604051809103906000f080158015610617573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107c757600080fd5b505af11580156107db573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561093c57600080fd5b505af1158015610950573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af11580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906165b9565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610add57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610abf575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610c2057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610c09578382906000526020600020018054610b7c906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba8906165db565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081526020019060010190610b5d565b505050508152505081526020019060010190610b0b565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610c205783829060005260206000209060020201604051806040016040529081600082018054610d40906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c906165db565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e005790505b50505050508152505081526020019060010190610d0d565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190616628565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190616628565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093611023936001600160a01b036101009093048316939216611a16565b600084848460405160240161103a93929190616651565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611100929116908790879060040161667b565b600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061121d92506001600160a01b039091169086908a908a908a906166a3565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915061130c90869086906166e4565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561138657600080fd5b505af115801561139a573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113ec9291169087906004016166fd565b60006040518083038185885af115801561140a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526114339190810190616807565b5060208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516114c0938c936001600160a01b03169263dda79b7592600480830193928290030181865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190616628565b611a32565b60208054604080517f5b1125910000000000000000000000000000000000000000000000000000000081529051611523938b936001600160a01b031692635b11259192600480830193928290030181865afa158015611497573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611570906165db565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906165db565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b505050505081526020019060010190611551565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161168d5790505b50505050508152505081526020019060010190611621565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610c205760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117885790505b5050505050815250508152602001906001019061171c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610c20578382906000526020600020018054611836906165db565b80601f0160208091040260200160405190810160405280929190818152602001828054611862906165db565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081526020019060010190611817565b60085460009060ff16156118db575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611990919061683c565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610add576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610abf575050505050905090565b6000611a01616152565b611a0c848483611ac2565b9150505b92915050565b611a1e616152565b611a2b8585858486611b3d565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611aa657600080fd5b505afa158015611aba573d6000803e3d6000fd5b505050505050565b600080611acf8584611c3e565b9050611b326040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611b1d9291906166fd565b60405160208183030381529060405285611c4a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611baf57600080fd5b505af1925050508015611bc0575060015b611bd557611bd087878787611c78565b611c35565b611be187878787611c78565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505b50505050505050565b6000611b368383611c91565b60c08101515160009015611c6e57611c6784848460c00151611cac565b9050611b36565b611c678484611e52565b6000611c848483611f3d565b9050611a2b858285611f49565b6000611c9d8383612313565b611b3683836020015184611c4a565b600080611cb7612323565b90506000611cc586836123f6565b90506000611cdc826060015183602001518561289c565b90506000611cec83838989612aae565b90506000611cf98261392b565b602081015181519192509060030b15611d6c57898260400151604051602001611d23929190616855565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d63916004016168d6565b60405180910390fd5b6000611daf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613afa565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611e029084906004016168d6565b602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190616628565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611ea79087906004016168d6565b600060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eec9190810190616807565b90506000611f1a8285604051602001611f069291906168e9565b604051602081830303815290604052613cfa565b90506001600160a01b038116611a0c578484604051602001611d23929190616918565b6000611c9d8383613d0d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061683c565b9050806121b057600061201b86613d19565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506120a6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613e06565b806120b2575060008451115b15612135576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120fe90889088906004016166fd565b600060405180830381600087803b15801561211857600080fd5b505af115801561212c573d6000803e3d6000fd5b505050506121aa565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050505b50611a2b565b8060006121bc82613d19565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061221e90612079565b8061222a575060008551115b156122af576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612278908a908a908a906004016169c3565b600060405180830381600087803b15801561229257600080fd5b505af11580156122a6573d6000803e3d6000fd5b50505050611c35565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611c1c57600080fd5b61231f82826000613e1a565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123aa9084906004016169f4565b600060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123ef9190810190616a3b565b9250505090565b6124286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506124736040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61247c85613f1d565b6020820152600061248c86614302565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f69190810190616a3b565b868385602001516040516020016125109493929190616a84565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125689085906004016168d6565b600060405180830381865afa158015612585573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ad9190810190616a3b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125f5908490600401616b88565b602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906165b9565b61264b5781604051602001611d239190616bda565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612690908490600401616c6c565b600060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126d59190810190616a3b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061271c908490600401616cbe565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906165b9565b156127f2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906127a7908490600401616cbe565b600060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ec9190810190616a3b565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016128179190616d10565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612843929190616d7c565b600060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128889190810190616a3b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128b85790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061291857612918616da1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061296c5761296c616da1565b6020026020010181905250846040516020016129889190616dd0565b604051602081830303815290604052816002815181106129aa576129aa616da1565b6020026020010181905250826040516020016129c69190616e3c565b604051602081830303815290604052816003815181106129e8576129e8616da1565b602002602001018190525060006129fe8261392b565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a8f9060408051808201825260008082526020918201528151808301909252845182528085019082015290614585565b612aa45785604051602001611d239190616e7d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612afe565b511590565b612c7257826020015115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d63565b8260c0015115612c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d63565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c8b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612ce690616f3d565b935060ff1681518110612cfb57612cfb616da1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d4c9190616f5c565b604051602081830303815290604052828280612d6790616f3d565b935060ff1681518110612d7c57612d7c616da1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612dc990616f3d565b935060ff1681518110612dde57612dde616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e2b90616f3d565b935060ff1681518110612e4057612e40616da1565b60200260200101819052508760200151828280612e5c90616f3d565b935060ff1681518110612e7157612e71616da1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612ebe90616f3d565b935060ff1681518110612ed357612ed3616da1565b602090810291909101015287518282612eeb81616f3d565b935060ff1681518110612f0057612f00616da1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f4d90616f3d565b935060ff1681518110612f6257612f62616da1565b6020026020010181905250612f76466145e6565b8282612f8181616f3d565b935060ff1681518110612f9657612f96616da1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fe390616f3d565b935060ff1681518110612ff857612ff8616da1565b60200260200101819052508682828061301090616f3d565b935060ff168151811061302557613025616da1565b602090810291909101015285511561314c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261307681616f3d565b935060ff168151811061308b5761308b616da1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130db9089906004016168d6565b600060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131209190810190616a3b565b828261312b81616f3d565b935060ff168151811061314057613140616da1565b60200260200101819052505b84602001511561321c5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261319581616f3d565b935060ff16815181106131aa576131aa616da1565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131f790616f3d565b935060ff168151811061320c5761320c616da1565b60200260200101819052506133e3565b613254612af98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132e75760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261329781616f3d565b935060ff16815181106132ac576132ac616da1565b60200260200101819052508460a001516040516020016132cc9190616dd0565b6040516020818303038152906040528282806131f790616f3d565b8460c0015115801561332a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261332890511590565b155b156133e35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261336e81616f3d565b935060ff168151811061338357613383616da1565b602002602001018190525061339788614686565b6040516020016133a79190616dd0565b6040516020818303038152906040528282806133c290616f3d565b935060ff16815181106133d7576133d7616da1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261341790511590565b6134ac5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261345a81616f3d565b935060ff168151811061346f5761346f616da1565b6020026020010181905250846040015182828061348b90616f3d565b935060ff16815181106134a0576134a0616da1565b60200260200101819052505b6060850151156135cd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134f581616f3d565b935060ff168151811061350a5761350a616da1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135a19190810190616a3b565b82826135ac81616f3d565b935060ff16815181106135c1576135c1616da1565b60200260200101819052505b60e085015151156136745760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261361781616f3d565b935060ff168151811061362c5761362c616da1565b60200260200101819052506136488560e00151600001516145e6565b828261365381616f3d565b935060ff168151811061366857613668616da1565b60200260200101819052505b60e0850151602001511561371e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826136c181616f3d565b935060ff16815181106136d6576136d6616da1565b60200260200101819052506136f28560e00151602001516145e6565b82826136fd81616f3d565b935060ff168151811061371257613712616da1565b60200260200101819052505b60e085015160400151156137c85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261376b81616f3d565b935060ff168151811061378057613780616da1565b602002602001018190525061379c8560e00151604001516145e6565b82826137a781616f3d565b935060ff16815181106137bc576137bc616da1565b60200260200101819052505b60e085015160600151156138725760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261381581616f3d565b935060ff168151811061382a5761382a616da1565b60200260200101819052506138468560e00151606001516145e6565b828261385181616f3d565b935060ff168151811061386657613866616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156138905761389061671f565b6040519080825280602002602001820160405280156138c357816020015b60608152602001906001900390816138ae5790505b50905060005b8260ff168160ff16101561391c57838160ff16815181106138ec576138ec616da1565b6020026020010151828260ff168151811061390957613909616da1565b60209081029190910101526001016138c9565b5093505050505b949350505050565b6139526040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139d891869101616fc7565b600060405180830381865afa1580156139f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a1d9190810190616a3b565b90506000613a2b8683615175565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a5b91906164ab565b6000604051808303816000875af1158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa2919081019061700e565b805190915060030b15801590613abb5750602081015151155b8015613aca5750604081015151155b15612aa45781600081518110613ae257613ae2616da1565b6020026020010151604051602001611d2391906170c4565b60606000613b2f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b669082905b906152ca565b15613cc3576000613be382613bdd84613bd7613ba98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152f1565b90615353565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c479082906152ca565b15613cb157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613cae905b82906153d8565b90505b613cba816153fe565b92505050611b36565b8215613cdc578484604051602001611d239291906172b0565b5050604080516020810190915260008152611b36565b509392505050565b6000808251602084016000f09392505050565b61231f82826001613e1a565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d8e9190617357565b6000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b50915091508115613def57808060200190518101906139239190616a3b565b505060408051602081019091526000815292915050565b6000613e128383615467565b159392505050565b8160a0015115613e2957505050565b6000613e36848484615542565b90506000613e438261392b565b602081015181519192509060030b158015613edf5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613edf90604080518082018252600080825260209182015281518083019092528451825280850190820152613b60565b15613eec57505050505050565b60408201515115613f0c578160400151604051602001611d239190617373565b80604051602001611d2391906173d1565b60606000613f528360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613fb7905b8290614585565b1561402657604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021908390615add565b6153fe565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614088905b8290615b67565b60010361415557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140ee90613ca7565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b3690614021905b83906153d8565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526141b490613fb0565b156142eb57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061421c908390615c01565b90506000816001835161422f919061743c565b8151811061423f5761423f616da1565b602002602001015190506142e26140216142b56040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615add565b95945050505050565b82604051602001611d23919061744f565b50919050565b606060006143378360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061439990613fb0565b156143a757611b36816153fe565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261440690614081565b60010361447057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b36906140219061414e565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144cf90613fb0565b156142eb57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614537908390615c01565b9050600181511115614573578060028251614552919061743c565b8151811061456257614562616da1565b602002602001015192505050919050565b5082604051602001611d23919061744f565b80518251600091111561459a57506000611a10565b815183516020850151600092916145b09161752d565b6145ba919061743c565b9050826020015181036145d1576001915050611a10565b82516020840151819020912014905092915050565b606060006145f383615ca6565b600101905060008167ffffffffffffffff8111156146135761461361671f565b6040519080825280601f01601f19166020018201604052801561463d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461464757509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614712905b8290613e06565b1561475257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526147b19061470b565b156147f157505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148509061470b565b1561489057505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148ef9061470b565b806149545750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149549061470b565b1561499457505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149f39061470b565b80614a585750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a589061470b565b15614a9857505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614af79061470b565b80614b5c5750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b5c9061470b565b15614b9c57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bfb9061470b565b80614c605750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c609061470b565b15614ca057505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cff9061470b565b15614d3f57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d9e9061470b565b15614dde57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e3d9061470b565b15614e7d57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614edc9061470b565b15614f1c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f7b9061470b565b15614fbb57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261501a9061470b565b8061507f5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261507f9061470b565b156150bf57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261511e9061470b565b1561515e57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611d239290602001617540565b60608060005b8451811015615200578185828151811061519757615197616da1565b60200260200101516040516020016151b09291906168e9565b6040516020818303038152906040529150600185516151cf919061743c565b81146151f857816040516020016151e691906176a9565b60405160208183030381529060405291505b60010161517b565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081615219579050509050838160008151811061524457615244616da1565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061529857615298616da1565b602002602001018190525081816002815181106152b7576152b7616da1565b6020908102919091010152949350505050565b60208083015183518351928401516000936152e89291849190615d88565b14159392505050565b604080518082019091526000808252602082015260006153238460000151856020015185600001518660200151615e99565b9050836020015181615335919061743c565b8451859061534490839061743c565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015615378575081611a10565b602080830151908401516001911461539f5750815160208481015190840151829020919020145b80156153d0578251845185906153b690839061743c565b90525082516020850180516153cc90839061752d565b9052505b509192915050565b60408051808201909152600080825260208201526153f7838383615fb9565b5092915050565b60606000826000015167ffffffffffffffff81111561541f5761541f61671f565b6040519080825280601f01601f191660200182016040528015615449576020820181803683370190505b50905060006020820190506153f78185602001518660000151616064565b815181516000919081111561547a575081515b6020808501519084015160005b8381101561553357825182518082146155035760001960208710156154e2576001846154b489602061743c565b6154be919061752d565b6154c99060086176ea565b6154d49060026177e8565b6154de919061743c565b1990505b8181168382168181039114615500579750611a109650505050505050565b50505b61550e60208661752d565b945061551b60208561752d565b9350505060208161552c919061752d565b9050615487565b5084518651612aa491906177f4565b6060600061554e612323565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161556b57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806155c690616f3d565b935060ff16815181106155db576155db616da1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161562c9190617814565b60405160208183030381529060405282828061564790616f3d565b935060ff168151811061565c5761565c616da1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806156a990616f3d565b935060ff16815181106156be576156be616da1565b6020026020010181905250826040516020016156da9190616e3c565b6040516020818303038152906040528282806156f590616f3d565b935060ff168151811061570a5761570a616da1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061575790616f3d565b935060ff168151811061576c5761576c616da1565b602002602001018190525061578187846160de565b828261578c81616f3d565b935060ff16815181106157a1576157a1616da1565b60209081029190910101528551511561584d5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157f381616f3d565b935060ff168151811061580857615808616da1565b60200260200101819052506158218660000151846160de565b828261582c81616f3d565b935060ff168151811061584157615841616da1565b60200260200101819052505b8560800151156158bb5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261589681616f3d565b935060ff16815181106158ab576158ab616da1565b6020026020010181905250615921565b84156159215760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261590081616f3d565b935060ff168151811061591557615915616da1565b60200260200101819052505b604086015151156159bd5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261596b81616f3d565b935060ff168151811061598057615980616da1565b6020026020010181905250856040015182828061599c90616f3d565b935060ff16815181106159b1576159b1616da1565b60200260200101819052505b856060015115615a275760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615a0681616f3d565b935060ff1681518110615a1b57615a1b616da1565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a4557615a4561671f565b604051908082528060200260200182016040528015615a7857816020015b6060815260200190600190039081615a635790505b50905060005b8260ff168160ff161015615ad157838160ff1681518110615aa157615aa1616da1565b6020026020010151828260ff1681518110615abe57615abe616da1565b6020908102919091010152600101615a7e565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615b02575081611a10565b81518351602085015160009291615b189161752d565b615b22919061743c565b60208401519091506001908214615b43575082516020840151819020908220145b8015615b5e57835185518690615b5a90839061743c565b9052505b50929392505050565b6000808260000151615b8b8560000151866020015186600001518760200151615e99565b615b95919061752d565b90505b83516020850151615ba9919061752d565b81116153f75781615bb981617859565b9250508260000151615bf0856020015183615bd4919061743c565b8651615be0919061743c565b8386600001518760200151615e99565b615bfa919061752d565b9050615b98565b60606000615c0f8484615b67565b615c1a90600161752d565b67ffffffffffffffff811115615c3257615c3261671f565b604051908082528060200260200182016040528015615c6557816020015b6060815260200190600190039081615c505790505b50905060005b8151811015613cf257615c8161402186866153d8565b828281518110615c9357615c93616da1565b6020908102919091010152600101615c6b565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615d1b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d3957662386f26fc10000830492506010015b6305f5e1008310615d51576305f5e100830492506008015b6127108310615d6557612710830492506004015b60648310615d77576064830492506002015b600a8310611a105760010192915050565b600080858411615e8f5760208411615e3b5760008415615dd3576001615daf86602061743c565b615dba9060086176ea565b615dc59060026177e8565b615dcf919061743c565b1990505b8351811685615de2898961752d565b615dec919061743c565b805190935082165b818114615e2657878411615e0e5787945050505050613923565b83615e1881617873565b945050828451169050615df4565b615e30878561752d565b945050505050613923565b838320615e48858861743c565b615e52908761752d565b91505b858210615e8d57848220808203615e7a57615e70868461752d565b9350505050613923565b615e8560018461743c565b925050615e55565b505b5092949350505050565b60008381868511615fa45760208511615f535760008515615ee5576001615ec187602061743c565b615ecc9060086176ea565b615ed79060026177e8565b615ee1919061743c565b1990505b84518116600087615ef68b8b61752d565b615f00919061743c565b855190915083165b828114615f4557818610615f2d57615f208b8b61752d565b9650505050505050613923565b85615f3781617859565b965050838651169050615f08565b859650505050505050613923565b508383206000905b615f65868961743c565b8211615fa257858320808203615f815783945050505050613923565b615f8c60018561752d565b9350508180615f9a90617859565b925050615f5b565b505b615fae878761752d565b979650505050505050565b60408051808201909152600080825260208201526000615feb8560000151866020015186600001518760200151615e99565b602080870180519186019190915251909150616007908261743c565b83528451602086015161601a919061752d565b8103616029576000855261605b565b83518351616037919061752d565b8551869061604690839061743c565b9052508351616055908261752d565b60208601525b50909392505050565b6020811061609c578151835261607b60208461752d565b925061608860208361752d565b915061609560208261743c565b9050616064565b60001981156160cb5760016160b283602061743c565b6160be906101006177e8565b6160c8919061743c565b90505b9151835183169219169190911790915250565b606060006160ec84846123f6565b80516020808301516040519394506161069390910161788a565b60405160208183030381529060405291505092915050565b610c9f806178e383390190565b61140b8061858283390190565b6117f98061998d83390190565b610d5e8061b18683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161619561619a565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016161956040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561624c5783516001600160a01b0316835260209384019390920191600101616225565b509095945050505050565b60005b8381101561627257818101518382015260200161625a565b50506000910152565b60008151808452616293816020860160208601616257565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616389577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261637384865161627b565b6020958601959094509290920191600101616339565b5091975050506020948501949290920191506001016162cf565b50929695505050505050565b600081518084526020840193506020830160005b828110156164035781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016163c3565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616479604088018261627b565b905060208201519150868103602088015261649481836163af565b965050506020938401939190910190600101616435565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261650d85835161627b565b945060209384019391909101906001016164d3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156163a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526165a360408701826163af565b955050602093840193919091019060010161654a565b6000602082840312156165cb57600080fd5b81518015158114611b3657600080fd5b600181811c908216806165ef57607f821691505b6020821081036142fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561663a57600080fd5b81516001600160a01b0381168114611b3657600080fd5b606081526000616664606083018661627b565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142e2606083018461627b565b6001600160a01b038616815284602082015260a0604082015260006166cb60a083018661627b565b6060830194909452509015156080909101529392505050565b828152604060208201526000613923604083018461627b565b6001600160a01b0383168152604060208201526000613923604083018461627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156167715761677161671f565b60405290565b60008067ffffffffffffffff8411156167925761679261671f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156167c1576167c161671f565b6040528381529050808284018510156167d957600080fd5b613cf2846020830185616257565b600082601f8301126167f857600080fd5b611b3683835160208501616777565b60006020828403121561681957600080fd5b815167ffffffffffffffff81111561683057600080fd5b611a0c848285016167e7565b60006020828403121561684e57600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161688d81601a850160208801616257565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168ca81601c840160208801616257565b01601c01949350505050565b602081526000611b36602083018461627b565b600083516168fb818460208801616257565b83519083019061690f818360208801616257565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161695081601a850160208801616257565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161698d816033840160208801616257565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142e2606083018461627b565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b36608083018461627b565b600060208284031215616a4d57600080fd5b815167ffffffffffffffff811115616a6457600080fd5b8201601f81018413616a7557600080fd5b611a0c84825160208401616777565b60008551616a96818460208a01616257565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616ad0816001840160208a01616257565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616b0e816002840160208901616257565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b50816002840160208801616257565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b9b604083018461627b565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616c1281601f850160208701616257565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c7f604083018461627b565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616cd1604083018461627b565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d48816014850160208701616257565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d8f604083018561627b565b8281036020840152611b32818561627b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616e08816001850160208701616257565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e4e818460208701616257565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616f0181604b850160208701616257565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f5357616f53616f0e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b36608083018461627b565b60006020828403121561702057600080fd5b815167ffffffffffffffff81111561703757600080fd5b82016060818503121561704957600080fd5b61705161674e565b81518060030b811461706257600080fd5b8152602082015167ffffffffffffffff81111561707e57600080fd5b61708a868285016167e7565b602083015250604082015167ffffffffffffffff8111156170aa57600080fd5b6170b6868285016167e7565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251617122816021850160208701616257565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161730e816021850160208801616257565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161734b81602e840160208801616257565b01602e01949350505050565b60008251617369818460208701616257565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616fba816029850160208701616257565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161742f816022850160208701616257565b9190910160220192915050565b81810381811115611a1057611a10616f0e565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161748781600e850160208701616257565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115611a1057611a10616f0e565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617578816018850160208801616257565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516175b581601c840160208801616257565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516176bb818460208701616257565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417611a1057611a10616f0e565b6001815b600184111561773c5780850481111561772057617720616f0e565b600184161561772e57908102905b60019390931c928002617705565b935093915050565b60008261775357506001611a10565b8161776057506000611a10565b816001811461777657600281146177805761779c565b6001915050611a10565b60ff84111561779157617791616f0e565b50506001821b611a10565b5060208310610133831016604e8410600b84101617156177bf575081810a611a10565b6177cc6000198484617701565b80600019048211156177e0576177e0616f0e565b029392505050565b6000611b368383617744565b81810360008312801583831316838312821617156153f7576153f7616f0e565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161784c81601c850160208701616257565b91909101601c0192915050565b6000600019820361786c5761786c616f0e565b5060010190565b60008161788257617882616f0e565b506000190190565b6000835161789c818460208801616257565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178d6816001840160208801616257565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212209a3f0c0681ccbd1753bd8415c2fb870de99ee8ce098f165b4f92f9ac2c9521b964736f6c634300081a0033", } // GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index cf3c70d5..20d8dd6c 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ASSET_HANDLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TSS_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea26469706673582212207e9eea909dd03b9b991625c57d71ab317ff14c9101aa69f58639434bfe06a78f64736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220f5f94badcd1bd52ad12da244f7c4f330f2fb5d16305f04303cf08087abeff75664736f6c634300081a0033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index ba687693..6439839b 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b506201078b806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b61140b8062009ef483390190565b6117f9806200b2ff83390190565b610d5e806200caf883390190565b61080c806200d85683390190565b610b3f806200e06283390190565b611bb5806200eba183390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122077d23238a2e7d47c8bbeab590e5478444c1217f3c032da9d8971c2c3fc1625ce64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a2646970667358221220239f15814b6fe6437d3c2805e87f0268196cab285b44a4b63d31d8c9a556a19b64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b506201078b806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b61013261118d565b60405161013f9190617944565b60405180910390f35b6101506111ef565b60405161013f91906179e0565b610132611331565b610132611391565b6101286113f1565b61017d611c4e565b60405161013f9190617b46565b610128611dd0565b61019a6125e8565b60405161013f9190617be4565b6101af6126b8565b60405161013f9190617c5b565b6101286127b3565b6101af612d2f565b61019a612e2a565b6101dc612efa565b604051901515815260200161013f565b610128612fce565b6101326136b0565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e805490911661432117905560405161026790617829565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617829565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854602654925190861694810194909452604484019290925290921660648201526104a6919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613710565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460265460405192939182169291169061053290617837565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561056e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460265460405193851694928316939183169216906105c990617845565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801561060d573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156106b957600080fd5b505af11580156106cd573d6000803e3d6000fd5b50506026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190617cf2565b506040516109e990617853565b604051809103906000f080158015610a05573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054602e54935190851691810191909152919092166044820152610aee919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613710565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b3f90617861565b6001600160a01b039091168152602001604051809103906000f080158015610b6b573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b505050506000806000604051610c499061786f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c85573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610cdb9061787d565b610cea96959493929190617d14565b604051809103906000f080158015610d06573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d9d57600080fd5b505af1158015610db1573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190617cf2565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190617cf2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190617cf2565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111c7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561132857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561131157838290600052602060002001805461128490617e09565b80601f01602080910402602001604051908101604052809291908181526020018280546112b090617e09565b80156112fd5780601f106112d2576101008083540402835291602001916112fd565b820191906000526020600020905b8154815290600101906020018083116112e057829003601f168201915b505050505081526020019060010190611265565b505050508152505081526020019060010190611213565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190617e56565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114fe90889088908890602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611597926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546115c892620f4240916001600160a01b0316908690602401617e99565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611685916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b15801561169f57600080fd5b505af11580156116b3573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117d792620f4240916001600160a01b0316908d908d908d90600401617f00565b600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061198592506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a749087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b569216908790600401617faf565b60006040518083038185885af1158015611b74573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b9d91908101906180b9565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c9190617e56565b9050611c4481611c3f620f42408761811d565b61372f565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156113285783829060005260206000209060020201604051806040016040529081600082018054611ca590617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd190617e09565b8015611d1e5780601f10611cf357610100808354040283529160200191611d1e565b820191906000526020600020905b815481529060010190602001808311611d0157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d655790505b50505050508152505081526020019060010190611c72565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e4c90879087908790602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f3b57600080fd5b505af1158015611f4f573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507fde19dbe881cc0aeeb6e73ce19ac7b5ca695e6be8a076e3eb42292005a7fec1b59060340160408051601f19818403018152828252602d547ffa62d57f000000000000000000000000000000000000000000000000000000008452915190926001600160a01b0390921691620f424091600091849163fa62d57f916004808201926020929091908290030181865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120499190617e56565b8860405161205c96959493929190618130565b60405180910390a3602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261218092620f4240916001600160a01b0316908790600401618183565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190617e56565b905061224b81600061372f565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156122c457600080fd5b505af11580156122d8573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506123c792506001600160a01b039091169086908a908a908a90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124b69086908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561253057600080fd5b505af1158015612544573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908790600401617faf565b60006040518083038185885af11580156125b6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125df91908101906180b9565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561132857838290600052602060002001805461262b90617e09565b80601f016020809104026020016040519081016040528092919081815260200182805461265790617e09565b80156126a45780601f10612679576101008083540402835291602001916126a4565b820191906000526020600020905b81548152906001019060200180831161268757829003601f168201915b50505050508152602001906001019061260c565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561279b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127485790505b505050505081525050815260200190600101906126dc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061283190889088908690602401617e6f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201528593506001600160a01b0390911691507f5322ffbbf9261ff1f8138247942d2b03b28717141ef0a0dd080fc4be9c4e78d39060340160408051601f1981840301815290829052612a349186906181bd565b60405180910390a3602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690635d40e1789060340160405160208183030381529060405284846040518463ffffffff1660e01b8152600401612aa3939291906181e2565b600060405180830381600087803b158015612abd57600080fd5b505af1158015612ad1573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c4d9086908590617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125989216908690600401617faf565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156113285760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dbf5790505b50505050508152505081526020019060010190612d53565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611328578382906000526020600020018054612e6d90617e09565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9990617e09565b8015612ee65780601f10612ebb57610100808354040283529160200191612ee6565b820191906000526020600020905b815481529060010190602001808311612ec957829003601f168201915b505050505081526020019060010190612e4e565b60085460009060ff1615612f12575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc79190617e56565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a76400009082906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304c90889088908690602401617e6f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e5926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905261310691859085906024016181e2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5d40e17800000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c3916001600160a01b0391909116906000908690600401617ed8565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063865b36f69150603401604051602081830303815290604052858a8a8a6040518663ffffffff1660e01b81526004016132ea95949392919061820d565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561343b57600080fd5b505af115801561344f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061349892506001600160a01b039091169087908b908b908b90617f55565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506135879087908690617f96565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935088926136699216908790600401617faf565b60006040518083038185885af1158015613687573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611c4491908101906180b9565b606060158054806020026020016040519081016040528092919081815260200182805480156111e5576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116111c7575050505050905090565b600061371a61788b565b6137258484836137b6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561379a57600080fd5b505afa1580156137ae573d6000803e3d6000fd5b505050505050565b6000806137c38584613831565b90506138266040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613811929190617faf565b6040516020818303038152906040528561383d565b9150505b9392505050565b600061382a838361386b565b60c081015151600090156138615761385a84848460c00151613886565b905061382a565b61385a8484613a2c565b60006138778383613b17565b61382a8383602001518461383d565b600080613891613b27565b9050600061389f8683613bfa565b905060006138b682606001518360200151856140a0565b905060006138c6838389896142b2565b905060006138d38261512f565b602081015181519192509060030b15613946578982604001516040516020016138fd929190618252565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261393d916004016182d3565b60405180910390fd5b60006139896040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152fe565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906139dc9084906004016182d3565b602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d91906182e6565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a819087906004016182d3565b600060405180830381865afa158015613a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ac691908101906180b9565b90506000613af48285604051602001613ae092919061830f565b6040516020818303038152906040526154fe565b90506001600160a01b0381166137255784846040516020016138fd92919061833e565b613b2382826000615511565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613bae9084906004016183e9565b600060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf39190810190618430565b9250505090565b613c2c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c776040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c8085615614565b60208201526000613c90866159f9565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cfa9190810190618430565b86838560200151604051602001613d149493929190618479565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d6c9085906004016182d3565b600060405180830381865afa158015613d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613db19190810190618430565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613df990849060040161857d565b602060405180830381865afa158015613e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3a9190617cf2565b613e4f57816040516020016138fd91906185cf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e94908490600401618661565b600060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ed99190810190618430565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f209084906004016186b3565b602060405180830381865afa158015613f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f619190617cf2565b15613ff6576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613fab9084906004016186b3565b600060405180830381865afa158015613fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ff09190810190618430565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161401b9190618705565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140479291906181bd565b600060405180830381865afa158015614064573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261408c9190810190618430565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140bc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061411c5761411c618771565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061417057614170618771565b60200260200101819052508460405160200161418c91906187a0565b604051602081830303815290604052816002815181106141ae576141ae618771565b6020026020010181905250826040516020016141ca919061880c565b604051602081830303815290604052816003815181106141ec576141ec618771565b602002602001018190525060006142028261512f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506142939060408051808201825260008082526020918201528151808301909252845182528085019082015290615c7c565b6142a857856040516020016138fd919061884d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614302565b511590565b614476578260200151156143be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161393d565b8260c0015115614476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161393d565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161448f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144ea906188de565b935060ff16815181106144ff576144ff618771565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161455091906188fd565b60405160208183030381529060405282828061456b906188de565b935060ff168151811061458057614580618771565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806145cd906188de565b935060ff16815181106145e2576145e2618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061462f906188de565b935060ff168151811061464457614644618771565b60200260200101819052508760200151828280614660906188de565b935060ff168151811061467557614675618771565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806146c2906188de565b935060ff16815181106146d7576146d7618771565b6020908102919091010152875182826146ef816188de565b935060ff168151811061470457614704618771565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614751906188de565b935060ff168151811061476657614766618771565b602002602001018190525061477a46615cdd565b8282614785816188de565b935060ff168151811061479a5761479a618771565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147e7906188de565b935060ff16815181106147fc576147fc618771565b602002602001018190525086828280614814906188de565b935060ff168151811061482957614829618771565b60209081029190910101528551156149505760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261487a816188de565b935060ff168151811061488f5761488f618771565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906148df9089906004016182d3565b600060405180830381865afa1580156148fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149249190810190618430565b828261492f816188de565b935060ff168151811061494457614944618771565b60200260200101819052505b846020015115614a205760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614999816188de565b935060ff16815181106149ae576149ae618771565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149fb906188de565b935060ff1681518110614a1057614a10618771565b6020026020010181905250614be7565b614a586142fd8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aeb5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a9b816188de565b935060ff1681518110614ab057614ab0618771565b60200260200101819052508460a00151604051602001614ad091906187a0565b6040516020818303038152906040528282806149fb906188de565b8460c00151158015614b2e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614b2c90511590565b155b15614be75760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b72816188de565b935060ff1681518110614b8757614b87618771565b6020026020010181905250614b9b88615d7d565b604051602001614bab91906187a0565b604051602081830303815290604052828280614bc6906188de565b935060ff1681518110614bdb57614bdb618771565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c1b90511590565b614cb05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c5e816188de565b935060ff1681518110614c7357614c73618771565b60200260200101819052508460400151828280614c8f906188de565b935060ff1681518110614ca457614ca4618771565b60200260200101819052505b606085015115614dd15760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cf9816188de565b935060ff1681518110614d0e57614d0e618771565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614da59190810190618430565b8282614db0816188de565b935060ff1681518110614dc557614dc5618771565b60200260200101819052505b60e08501515115614e785760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e1b816188de565b935060ff1681518110614e3057614e30618771565b6020026020010181905250614e4c8560e0015160000151615cdd565b8282614e57816188de565b935060ff1681518110614e6c57614e6c618771565b60200260200101819052505b60e08501516020015115614f225760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614ec5816188de565b935060ff1681518110614eda57614eda618771565b6020026020010181905250614ef68560e0015160200151615cdd565b8282614f01816188de565b935060ff1681518110614f1657614f16618771565b60200260200101819052505b60e08501516040015115614fcc5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f6f816188de565b935060ff1681518110614f8457614f84618771565b6020026020010181905250614fa08560e0015160400151615cdd565b8282614fab816188de565b935060ff1681518110614fc057614fc0618771565b60200260200101819052505b60e085015160600151156150765760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615019816188de565b935060ff168151811061502e5761502e618771565b602002602001018190525061504a8560e0015160600151615cdd565b8282615055816188de565b935060ff168151811061506a5761506a618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561509457615094617fd1565b6040519080825280602002602001820160405280156150c757816020015b60608152602001906001900390816150b25790505b50905060005b8260ff168160ff16101561512057838160ff16815181106150f0576150f0618771565b6020026020010151828260ff168151811061510d5761510d618771565b60209081029190910101526001016150cd565b5093505050505b949350505050565b6151566040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916151dc91869101618968565b600060405180830381865afa1580156151f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152219190810190618430565b9050600061522f868361686c565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161525f9190617be4565b6000604051808303816000875af115801561527e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152a691908101906189af565b805190915060030b158015906152bf5750602081015151155b80156152ce5750604081015151155b156142a857816000815181106152e6576152e6618771565b60200260200101516040516020016138fd9190618a65565b606060006153338560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061536a9082905b906169c1565b156154c75760006153e7826153e1846153db6153ad8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169e8565b90616a4a565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061544b9082906169c1565b156154b557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154b2905b8290616acf565b90505b6154be81616af5565b9250505061382a565b82156154e05784846040516020016138fd929190618c51565b505060408051602081019091526000815261382a565b509392505050565b6000808251602084016000f09392505050565b8160a001511561552057505050565b600061552d848484616b5e565b9050600061553a8261512f565b602081015181519192509060030b1580156155d65750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155d690604080518082018252600080825260209182015281518083019092528451825280850190820152615364565b156155e357505050505050565b604082015151156156035781604001516040516020016138fd9190618cf8565b806040516020016138fd9190618d56565b606060006156498360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156ae905b8290615c7c565b1561571d57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a906157189083906170f9565b616af5565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261577f905b8290617183565b60010361584c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157e5906154ab565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a90615718905b8390616acf565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526158ab906156a7565b156159e257604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061591390839061721d565b905060008160018351615926919061811d565b8151811061593657615936618771565b602002602001015190506159d96157186159ac6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170f9565b95945050505050565b826040516020016138fd9190618dc1565b50919050565b60606000615a2e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a90906156a7565b15615a9e5761382a81616af5565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615afd90615778565b600103615b6757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261382a9061571890615845565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615bc6906156a7565b156159e257604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615c2e90839061721d565b9050600181511115615c6a578060028251615c49919061811d565b81518110615c5957615c59618771565b602002602001015192505050919050565b50826040516020016138fd9190618dc1565b805182516000911115615c9157506000613729565b81518351602085015160009291615ca791618e9f565b615cb1919061811d565b905082602001518103615cc8576001915050613729565b82516020840151819020912014905092915050565b60606000615cea836172c2565b600101905060008167ffffffffffffffff811115615d0a57615d0a617fd1565b6040519080825280601f01601f191660200182016040528015615d34576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615d3e57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e09905b82906173a4565b15615e4957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ea890615e02565b15615ee857505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f4790615e02565b15615f8757505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fe690615e02565b8061604b5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261604b90615e02565b1561608b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160ea90615e02565b8061614f5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261614f90615e02565b1561618f57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ee90615e02565b806162535750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261625390615e02565b1561629357505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162f290615e02565b806163575750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635790615e02565b1561639757505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163f690615e02565b1561643657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261649590615e02565b156164d557505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261653490615e02565b1561657457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165d390615e02565b1561661357505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261667290615e02565b156166b257505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261671190615e02565b806167765750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261677690615e02565b156167b657505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261681590615e02565b1561685557505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138fd9290602001618eb2565b60608060005b84518110156168f7578185828151811061688e5761688e618771565b60200260200101516040516020016168a792919061830f565b6040516020818303038152906040529150600185516168c6919061811d565b81146168ef57816040516020016168dd919061901b565b60405160208183030381529060405291505b600101616872565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616910579050509050838160008151811061693b5761693b618771565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061698f5761698f618771565b602002602001018190525081816002815181106169ae576169ae618771565b6020908102919091010152949350505050565b60208083015183518351928401516000936169df92918491906173b8565b14159392505050565b60408051808201909152600080825260208201526000616a1a84600001518560200151856000015186602001516174c9565b9050836020015181616a2c919061811d565b84518590616a3b90839061811d565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a6f575081613729565b6020808301519084015160019114616a965750815160208481015190840151829020919020145b8015616ac757825184518590616aad90839061811d565b9052508251602085018051616ac3908390618e9f565b9052505b509192915050565b6040805180820190915260008082526020820152616aee8383836175e9565b5092915050565b60606000826000015167ffffffffffffffff811115616b1657616b16617fd1565b6040519080825280601f01601f191660200182016040528015616b40576020820181803683370190505b5090506000602082019050616aee8185602001518660000151617694565b60606000616b6a613b27565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b8757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616be2906188de565b935060ff1681518110616bf757616bf7618771565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c48919061905c565b604051602081830303815290604052828280616c63906188de565b935060ff1681518110616c7857616c78618771565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616cc5906188de565b935060ff1681518110616cda57616cda618771565b602002602001018190525082604051602001616cf6919061880c565b604051602081830303815290604052828280616d11906188de565b935060ff1681518110616d2657616d26618771565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d73906188de565b935060ff1681518110616d8857616d88618771565b6020026020010181905250616d9d878461770e565b8282616da8816188de565b935060ff1681518110616dbd57616dbd618771565b602090810291909101015285515115616e695760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e0f816188de565b935060ff1681518110616e2457616e24618771565b6020026020010181905250616e3d86600001518461770e565b8282616e48816188de565b935060ff1681518110616e5d57616e5d618771565b60200260200101819052505b856080015115616ed75760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616eb2816188de565b935060ff1681518110616ec757616ec7618771565b6020026020010181905250616f3d565b8415616f3d5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f1c816188de565b935060ff1681518110616f3157616f31618771565b60200260200101819052505b60408601515115616fd95760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f87816188de565b935060ff1681518110616f9c57616f9c618771565b60200260200101819052508560400151828280616fb8906188de565b935060ff1681518110616fcd57616fcd618771565b60200260200101819052505b8560600151156170435760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617022816188de565b935060ff168151811061703757617037618771565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561706157617061617fd1565b60405190808252806020026020018201604052801561709457816020015b606081526020019060019003908161707f5790505b50905060005b8260ff168160ff1610156170ed57838160ff16815181106170bd576170bd618771565b6020026020010151828260ff16815181106170da576170da618771565b602090810291909101015260010161709a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561711e575081613729565b8151835160208501516000929161713491618e9f565b61713e919061811d565b6020840151909150600190821461715f575082516020840151819020908220145b801561717a5783518551869061717690839061811d565b9052505b50929392505050565b60008082600001516171a785600001518660200151866000015187602001516174c9565b6171b19190618e9f565b90505b835160208501516171c59190618e9f565b8111616aee57816171d5816190a1565b925050826000015161720c8560200151836171f0919061811d565b86516171fc919061811d565b83866000015187602001516174c9565b6172169190618e9f565b90506171b4565b6060600061722b8484617183565b617236906001618e9f565b67ffffffffffffffff81111561724e5761724e617fd1565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b81518110156154f65761729d6157188686616acf565b8282815181106172af576172af618771565b6020908102919091010152600101617287565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061730b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617337576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061735557662386f26fc10000830492506010015b6305f5e100831061736d576305f5e100830492506008015b612710831061738157612710830492506004015b60648310617393576064830492506002015b600a83106137295760010192915050565b60006173b0838361774e565b159392505050565b6000808584116174bf576020841161746b57600084156174035760016173df86602061811d565b6173ea9060086190bb565b6173f59060026191b9565b6173ff919061811d565b1990505b83518116856174128989618e9f565b61741c919061811d565b805190935082165b8181146174565787841161743e5787945050505050615127565b83617448816191c5565b945050828451169050617424565b6174608785618e9f565b945050505050615127565b838320617478858861811d565b6174829087618e9f565b91505b8582106174bd578482208082036174aa576174a08684618e9f565b9350505050615127565b6174b560018461811d565b925050617485565b505b5092949350505050565b600083818685116175d4576020851161758357600085156175155760016174f187602061811d565b6174fc9060086190bb565b6175079060026191b9565b617511919061811d565b1990505b845181166000876175268b8b618e9f565b617530919061811d565b855190915083165b8281146175755781861061755d576175508b8b618e9f565b9650505050505050615127565b85617567816190a1565b965050838651169050617538565b859650505050505050615127565b508383206000905b617595868961811d565b82116175d2578583208082036175b15783945050505050615127565b6175bc600185618e9f565b93505081806175ca906190a1565b92505061758b565b505b6175de8787618e9f565b979650505050505050565b6040805180820190915260008082526020820152600061761b85600001518660200151866000015187602001516174c9565b602080870180519186019190915251909150617637908261811d565b83528451602086015161764a9190618e9f565b8103617659576000855261768b565b835183516176679190618e9f565b8551869061767690839061811d565b90525083516176859082618e9f565b60208601525b50909392505050565b602081106176cc57815183526176ab602084618e9f565b92506176b8602083618e9f565b91506176c560208261811d565b9050617694565b60001981156176fb5760016176e283602061811d565b6176ee906101006191b9565b6176f8919061811d565b90505b9151835183169219169190911790915250565b6060600061771c8484613bfa565b8051602080830151604051939450617736939091016191dc565b60405160208183030381529060405291505092915050565b8151815160009190811115617761575081515b6020808501519084015160005b8381101561781a57825182518082146177ea5760001960208710156177c95760018461779b89602061811d565b6177a59190618e9f565b6177b09060086190bb565b6177bb9060026191b9565b6177c5919061811d565b1990505b81811683821681810391146177e75797506137299650505050505050565b50505b6177f5602086618e9f565b9450617802602085618e9f565b935050506020816178139190618e9f565b905061776e565b50845186516142a89190619234565b610c9f806200925583390190565b61140b8062009ef483390190565b6117f9806200b2ff83390190565b610d5e806200caf883390190565b61080c806200d85683390190565b610b3f806200e06283390190565b611bb5806200eba183390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016178ce6178d3565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016178ce6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179855783516001600160a01b031683526020938401939092019160010161795e565b509095945050505050565b60005b838110156179ab578181015183820152602001617993565b50506000910152565b600081518084526179cc816020860160208601617990565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617ac2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617aac8486516179b4565b6020958601959094509290920191600101617a72565b509197505050602094850194929092019150600101617a08565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b3c5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617afc565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bb260408801826179b4565b9050602082015191508681036020880152617bcd8183617ae8565b965050506020938401939190910190600101617b6e565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c468583516179b4565b94506020938401939190910190600101617c0c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617adc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617cdc6040870182617ae8565b9550506020938401939190910190600101617c83565b600060208284031215617d0457600080fd5b8151801515811461382a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617dce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617def60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617e1d57607f821691505b6020821081036159f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617e6857600080fd5b5051919050565b606081526000617e8260608301866179b4565b602083019490945250901515604090910152919050565b608081526000617eac60808301876179b4565b62ffffff861660208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6001600160a01b03841681528260208201526060604082015260006159d960608301846179b4565b60c081526000617f1360c08301896179b4565b8760208401526001600160a01b03871660408401528281036060840152617f3a81876179b4565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617f7d60a08301866179b4565b6060830194909452509015156080909101529392505050565b82815260406020820152600061512760408301846179b4565b6001600160a01b038316815260406020820152600061512760408301846179b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561802357618023617fd1565b60405290565b60008067ffffffffffffffff84111561804457618044617fd1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561807357618073617fd1565b60405283815290508082840185101561808b57600080fd5b6154f6846020830185617990565b600082601f8301126180aa57600080fd5b61382a83835160208501618029565b6000602082840312156180cb57600080fd5b815167ffffffffffffffff8111156180e257600080fd5b61372584828501618099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115613729576137296180ee565b60c08152600061814360c08301896179b4565b6001600160a01b038816602084015286604084015285606084015284608084015282810360a084015261817681856179b4565b9998505050505050505050565b60808152600061819660808301876179b4565b8560208401526001600160a01b038516604084015282810360608401526175de81856179b4565b6040815260006181d060408301856179b4565b828103602084015261382681856179b4565b6060815260006181f560608301866179b4565b84602084015282810360408401526142a881856179b4565b60a08152600061822060a08301886179b4565b866020840152828103604084015261823881876179b4565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161828a81601a850160208801617990565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516182c781601c840160208801617990565b01601c01949350505050565b60208152600061382a60208301846179b4565b6000602082840312156182f857600080fd5b81516001600160a01b038116811461382a57600080fd5b60008351618321818460208801617990565b835190830190618335818360208801617990565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161837681601a850160208801617990565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516183b3816033840160208801617990565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061382a60808301846179b4565b60006020828403121561844257600080fd5b815167ffffffffffffffff81111561845957600080fd5b8201601f8101841361846a57600080fd5b61372584825160208401618029565b6000855161848b818460208a01617990565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516184c5816001840160208a01617990565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618503816002840160208901617990565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618545816002840160208801617990565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061859060408301846179b4565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161860781601f850160208701617990565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061867460408301846179b4565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186c660408301846179b4565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161873d816014850160208701617990565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516187d8816001850160208701617990565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161881e818460208701617990565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516188d181604b850160208701617990565b91909101604b0192915050565b600060ff821660ff81036188f4576188f46180ee565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061382a60808301846179b4565b6000602082840312156189c157600080fd5b815167ffffffffffffffff8111156189d857600080fd5b8201606081850312156189ea57600080fd5b6189f2618000565b81518060030b8114618a0357600080fd5b8152602082015167ffffffffffffffff811115618a1f57600080fd5b618a2b86828501618099565b602083015250604082015167ffffffffffffffff811115618a4b57600080fd5b618a5786828501618099565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618ac3816021850160208701617990565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618caf816021850160208801617990565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618cec81602e840160208801617990565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161895b816029850160208701617990565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618db4816022850160208701617990565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618df981600e850160208701617990565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115613729576137296180ee565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618eea816018850160208801617990565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618f2781601c840160208801617990565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161902d818460208701617990565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161909481601c850160208701617990565b91909101601c0192915050565b600060001982036190b4576190b46180ee565b5060010190565b8082028115828204841417613729576137296180ee565b6001815b600184111561910d578085048111156190f1576190f16180ee565b60018416156190ff57908102905b60019390931c9280026190d6565b935093915050565b60008261912457506001613729565b8161913157506000613729565b816001811461914757600281146191515761916d565b6001915050613729565b60ff841115619162576191626180ee565b50506001821b613729565b5060208310610133831016604e8410600b8410161715619190575081810a613729565b61919d60001984846190d2565b80600019048211156191b1576191b16180ee565b029392505050565b600061382a8383619115565b6000816191d4576191d46180ee565b506000190190565b600083516191ee818460208801617990565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619228816001840160208801617990565b01600101949350505050565b8181036000831280158383131683831282161715616aee57616aee6180ee56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b5060405161080c38038061080c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61077f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063865b36f6146100a4575b600080fd5b6100596100543660046104c4565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057f565b6102af565b60008383836040516024016100ce93929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061069e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106c2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610674565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f5d40e17800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635d40e1789061039690899089908690600401610714565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261041057600080fd5b81356020830160008067ffffffffffffffff841115610431576104316103d0565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047e5761047e6103d0565b60405283815290508082840187101561049657600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104c157600080fd5b50565b60008060008060008060c087890312156104dd57600080fd5b863567ffffffffffffffff8111156104f457600080fd5b61050089828a016103ff565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461053157600080fd5b9350606087013567ffffffffffffffff81111561054d57600080fd5b61055989828a016103ff565b9350506080870135915060a0870135610571816104b3565b809150509295509295509295565b600080600080600060a0868803121561059757600080fd5b853567ffffffffffffffff8111156105ae57600080fd5b6105ba888289016103ff565b95505060208601359350604086013567ffffffffffffffff8111156105de57600080fd5b6105ea888289016103ff565b935050606086013591506080860135610602816104b3565b809150509295509295909350565b6000815180845260005b818110156106365760208185018101518683018201520161061a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106876060830186610610565b602083019490945250901515604090910152919050565b6000602082840312156106b057600080fd5b81516106bb816104b3565b9392505050565b6080815260006106d56080830187610610565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526107098185610610565b979650505050505050565b6060815260006107276060830186610610565b846020840152828103604084015261073f8185610610565b969550505050505056fea264697066735822122077d23238a2e7d47c8bbeab590e5478444c1217f3c032da9d8971c2c3fc1625ce64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220b5ace68540d684b9afb85751c78347a310806d58ce33b8b75ce256dc0bf3347864736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a26469706673582212204c10dcfaae235403fb1ac100f2d1e903aa2af8840b173e48fc4f9884e73d245764736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go index e111f155..8d020f62 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea2646970667358221220acfa51062c59716e02e413798f47a294f807ab6bfe6bcb7c13ce0530e6e5b1b864736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index 343866be..50b8693a 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6388061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b610199610a2b565b6040516101a69190617b71565b60405180910390f35b6101b7610a8d565b6040516101a69190617c0d565b61018f610bcf565b6101996113a2565b610199611402565b61018f611462565b6101ec611abe565b6040516101a69190617d73565b61018f611c40565b610209611eb2565b6040516101a69190617e11565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611f82565b6040516101a69190617e88565b61025361207d565b610209612178565b610278612248565b60405190151581526020016101a6565b61018f61231c565b61018f6125a0565b61018f6129b6565b61018f613076565b6101996136dc565b601f546102789060ff1681565b61018f61373c565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161031790617a84565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561039b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261048c919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613973565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460255460405192939182169291169061051890617a91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610554573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460255460405193851694928316939183169216906105af90617a9e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105f3573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161063890617aab565b604051809103906000f080158015610654573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561080457600080fd5b505af1158015610818573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a65575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bc657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610baf578382906000526020600020018054610b2290617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90617f1f565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b505050505081526020019060010190610b03565b505050508152505081526020019060010190610ab1565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190617f6c565b9050610cdb816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610e32916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015610e4c57600080fd5b505af1158015610e60573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061104e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061113492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d99190617f6c565b90506111e58188613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190617f6c565b905061126e816112698a8761802e565b613992565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190617f6c565b9050611315816000613992565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190617f6c565b9050611396816000613992565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361150393921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190617f6c565b9050611551816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916116a8916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561176857600080fd5b505af115801561177c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118a79089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061198d92909116908a9089908b90600401617fc6565b600060405180830381600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190617f6c565b9050611a3e816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190617f6c565b905061126e8185613992565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000209060020201604051806040016040529081600082018054611b1590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4190617f1f565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c2857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611bd55790505b50505050508152505081526020019060010190611ae2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cf657600080fd5b505af1158015611d0a573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611df59190600401618041565b600060405180830381600087803b158015611e0f57600080fd5b505af1158015611e23573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611e7b9290911690879086908890600401617fc6565b600060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc6578382906000526020600020018054611ef590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190617f1f565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b505050505081526020019060010190611ed6565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120125790505b50505050508152505081526020019060010190611fa6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561216057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161210d5790505b505050505081525050815260200190600101906120a1565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000200180546121bb90617f1f565b80601f01602080910402602001604051908101604052809291908181526020018280546121e790617f1f565b80156122345780601f1061220957610100808354040283529160200191612234565b820191906000526020600020905b81548152906001019060200180831161221757829003601f168201915b50505050508152602001906001019061219c565b60085460009060ff1615612260575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190617f6c565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061251a9190600401618041565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611e7b9290911690879086908890600401617fc6565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190617f6c565b9050612625816000613992565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612705916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561289157600080fd5b505af11580156128a5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190617f6c565b90506129af8186613992565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190617f6c565b9050612ac2816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b369190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c19916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015612c3357600080fd5b505af1158015612c47573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d2b600289618054565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612df357600080fd5b505af1158015612e07573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612e4c9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f3292909116908a9089908b90600401617fc6565b600060405180830381600087803b158015612f4c57600080fd5b505af1158015612f60573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190617f6c565b9050612fe78161126960028a618054565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305b9190617f6c565b905061126e8161306c60028b618054565b611269908761802e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190617f6c565b905061313c816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b09190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613293916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156132ad57600080fd5b505af11580156132c1573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561335357600080fd5b505af1158015613367573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506133aa92506001600160a01b0390911690879061808f565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061349f908a908990617fad565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561353557600080fd5b505af1158015613549573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe915061358e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360857600080fd5b505af115801561361c573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061367492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101611198565b60606015805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137b657600080fd5b505af11580156137ca573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138b59190600401618041565b600060405180830381600087803b1580156138cf57600080fd5b505af11580156138e3573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050565b600061397d617ab8565b613988848483613a11565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156139fd57600080fd5b505afa15801561396b573d6000803e3d6000fd5b600080613a1e8584613a8c565b9050613a816040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a6c92919061808f565b60405160208183030381529060405285613a98565b9150505b9392505050565b6000613a858383613ac6565b60c08101515160009015613abc57613ab584848460c00151613ae1565b9050613a85565b613ab58484613c87565b6000613ad28383613d72565b613a8583836020015184613a98565b600080613aec613d82565b90506000613afa8683613e55565b90506000613b1182606001518360200151856142fb565b90506000613b218383898961450d565b90506000613b2e8261538a565b602081015181519192509060030b15613ba157898260400151604051602001613b589291906180b1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b9891600401618041565b60405180910390fd5b6000613be46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615559565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c37908490600401618041565b602060405180830381865afa158015613c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c789190618132565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613cdc908790600401618041565b600060405180830381865afa158015613cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d219190810190618243565b90506000613d4f8285604051602001613d3b929190618278565b604051602081830303815290604052615759565b90506001600160a01b038116613988578484604051602001613b589291906182a7565b613d7e8282600061576c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e09908490600401618352565b600060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e4e9190810190618399565b9250505090565b613e876040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613ed26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613edb8561586f565b60208201526000613eeb86615c54565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f559190810190618399565b86838560200151604051602001613f6f94939291906183e2565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fc7908590600401618041565b600060405180830381865afa158015613fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261400c9190810190618399565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140549084906004016184e6565b602060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140959190618538565b6140aa5781604051602001613b58919061855a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140ef9084906004016185ec565b600060405180830381865afa15801561410c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141349190810190618399565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061417b90849060040161863e565b602060405180830381865afa158015614198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bc9190618538565b15614251576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061420690849060040161863e565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190618399565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142769190618690565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142a29291906186fc565b600060405180830381865afa1580156142bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142e79190810190618399565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143175790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061437757614377618721565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143cb576143cb618721565b6020026020010181905250846040516020016143e79190618750565b6040516020818303038152906040528160028151811061440957614409618721565b60200260200101819052508260405160200161442591906187bc565b6040516020818303038152906040528160038151811061444757614447618721565b6020026020010181905250600061445d8261538a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144ee9060408051808201825260008082526020918201528151808301909252845182528085019082015290615ed7565b6145035785604051602001613b5891906187fd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561455d565b511590565b6146d157826020015115614619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b98565b8260c00151156146d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b98565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146ea57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147459061888e565b935060ff168151811061475a5761475a618721565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147ab91906188ad565b6040516020818303038152906040528282806147c69061888e565b935060ff16815181106147db576147db618721565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806148289061888e565b935060ff168151811061483d5761483d618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061488a9061888e565b935060ff168151811061489f5761489f618721565b602002602001018190525087602001518282806148bb9061888e565b935060ff16815181106148d0576148d0618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061491d9061888e565b935060ff168151811061493257614932618721565b60209081029190910101528751828261494a8161888e565b935060ff168151811061495f5761495f618721565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149ac9061888e565b935060ff16815181106149c1576149c1618721565b60200260200101819052506149d546615f38565b82826149e08161888e565b935060ff16815181106149f5576149f5618721565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a429061888e565b935060ff1681518110614a5757614a57618721565b602002602001018190525086828280614a6f9061888e565b935060ff1681518110614a8457614a84618721565b6020908102919091010152855115614bab5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ad58161888e565b935060ff1681518110614aea57614aea618721565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b3a908990600401618041565b600060405180830381865afa158015614b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b7f9190810190618399565b8282614b8a8161888e565b935060ff1681518110614b9f57614b9f618721565b60200260200101819052505b846020015115614c7b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bf48161888e565b935060ff1681518110614c0957614c09618721565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c569061888e565b935060ff1681518110614c6b57614c6b618721565b6020026020010181905250614e42565b614cb36145588660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d465760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614cf68161888e565b935060ff1681518110614d0b57614d0b618721565b60200260200101819052508460a00151604051602001614d2b9190618750565b604051602081830303815290604052828280614c569061888e565b8460c00151158015614d89575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d8790511590565b155b15614e425760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dcd8161888e565b935060ff1681518110614de257614de2618721565b6020026020010181905250614df688615fd8565b604051602001614e069190618750565b604051602081830303815290604052828280614e219061888e565b935060ff1681518110614e3657614e36618721565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e7690511590565b614f0b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614eb98161888e565b935060ff1681518110614ece57614ece618721565b60200260200101819052508460400151828280614eea9061888e565b935060ff1681518110614eff57614eff618721565b60200260200101819052505b60608501511561502c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f548161888e565b935060ff1681518110614f6957614f69618721565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526150009190810190618399565b828261500b8161888e565b935060ff168151811061502057615020618721565b60200260200101819052505b60e085015151156150d35760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150768161888e565b935060ff168151811061508b5761508b618721565b60200260200101819052506150a78560e0015160000151615f38565b82826150b28161888e565b935060ff16815181106150c7576150c7618721565b60200260200101819052505b60e0850151602001511561517d5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826151208161888e565b935060ff168151811061513557615135618721565b60200260200101819052506151518560e0015160200151615f38565b828261515c8161888e565b935060ff168151811061517157615171618721565b60200260200101819052505b60e085015160400151156152275760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151ca8161888e565b935060ff16815181106151df576151df618721565b60200260200101819052506151fb8560e0015160400151615f38565b82826152068161888e565b935060ff168151811061521b5761521b618721565b60200260200101819052505b60e085015160600151156152d15760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152748161888e565b935060ff168151811061528957615289618721565b60200260200101819052506152a58560e0015160600151615f38565b82826152b08161888e565b935060ff16815181106152c5576152c5618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152ef576152ef61815b565b60405190808252806020026020018201604052801561532257816020015b606081526020019060019003908161530d5790505b50905060005b8260ff168160ff16101561537b57838160ff168151811061534b5761534b618721565b6020026020010151828260ff168151811061536857615368618721565b6020908102919091010152600101615328565b5093505050505b949350505050565b6153b16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161543791869101618918565b600060405180830381865afa158015615454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261547c9190810190618399565b9050600061548a8683616ac7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154ba9190617e11565b6000604051808303816000875af11580156154d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615501919081019061895f565b805190915060030b1580159061551a5750602081015151155b80156155295750604081015151155b15614503578160008151811061554157615541618721565b6020026020010151604051602001613b589190618a15565b6060600061558e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155c59082905b90616c1c565b156157225760006156428261563c846156366156088a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c43565b90616ca5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156a6908290616c1c565b1561571057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261570d905b8290616d2a565b90505b61571981616d50565b92505050613a85565b821561573b578484604051602001613b58929190618c01565b5050604080516020810190915260008152613a85565b509392505050565b6000808251602084016000f09392505050565b8160a001511561577b57505050565b6000615788848484616db9565b905060006157958261538a565b602081015181519192509060030b1580156158315750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615831906040805180820182526000808252602091820152815180830190925284518252808501908201526155bf565b1561583e57505050505050565b6040820151511561585e578160400151604051602001613b589190618ca8565b80604051602001613b589190618d06565b606060006158a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615909905b8290615ed7565b1561597857604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973908390617354565b616d50565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159da905b82906173de565b600103615aa757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4090615706565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973905b8390616d2a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0690615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b6e908390617478565b905060008160018351615b81919061802e565b81518110615b9157615b91618721565b60200260200101519050615c34615973615c076040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617354565b95945050505050565b82604051602001613b589190618d71565b50919050565b60606000615c898360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ceb90615902565b15615cf957613a8581616d50565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d58906159d3565b600103615dc257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a859061597390615aa0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2190615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e89908390617478565b9050600181511115615ec5578060028251615ea4919061802e565b81518110615eb457615eb4618721565b602002602001015192505050919050565b5082604051602001613b589190618d71565b805182516000911115615eec5750600061398c565b81518351602085015160009291615f0291618e4f565b615f0c919061802e565b905082602001518103615f2357600191505061398c565b82516020840151819020912014905092915050565b60606000615f458361751d565b600101905060008167ffffffffffffffff811115615f6557615f6561815b565b6040519080825280601f01601f191660200182016040528015615f8f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f9957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616064905b82906175ff565b156160a457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161039061605d565b1561614357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a29061605d565b156161e257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162419061605d565b806162a65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a69061605d565b156162e657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163459061605d565b806163aa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163aa9061605d565b156163ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164499061605d565b806164ae5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ae9061605d565b156164ee57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654d9061605d565b806165b25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b29061605d565b156165f257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166519061605d565b1561669157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166f09061605d565b1561673057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678f9061605d565b156167cf57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e9061605d565b1561686e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd9061605d565b1561690d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696c9061605d565b806169d15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d19061605d565b15616a1157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a709061605d565b15616ab057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b589290602001618e62565b60608060005b8451811015616b525781858281518110616ae957616ae9618721565b6020026020010151604051602001616b02929190618278565b604051602081830303815290604052915060018551616b21919061802e565b8114616b4a5781604051602001616b389190618fcb565b60405160208183030381529060405291505b600101616acd565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b6b5790505090508381600081518110616b9657616b96618721565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bea57616bea618721565b60200260200101819052508181600281518110616c0957616c09618721565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c3a9291849190617613565b14159392505050565b60408051808201909152600080825260208201526000616c758460000151856020015185600001518660200151617724565b9050836020015181616c87919061802e565b84518590616c9690839061802e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cca57508161398c565b6020808301519084015160019114616cf15750815160208481015190840151829020919020145b8015616d2257825184518590616d0890839061802e565b9052508251602085018051616d1e908390618e4f565b9052505b509192915050565b6040805180820190915260008082526020820152616d49838383617844565b5092915050565b60606000826000015167ffffffffffffffff811115616d7157616d7161815b565b6040519080825280601f01601f191660200182016040528015616d9b576020820181803683370190505b5090506000602082019050616d4981856020015186600001516178ef565b60606000616dc5613d82565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616de257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e3d9061888e565b935060ff1681518110616e5257616e52618721565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616ea3919061900c565b604051602081830303815290604052828280616ebe9061888e565b935060ff1681518110616ed357616ed3618721565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f209061888e565b935060ff1681518110616f3557616f35618721565b602002602001018190525082604051602001616f5191906187bc565b604051602081830303815290604052828280616f6c9061888e565b935060ff1681518110616f8157616f81618721565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fce9061888e565b935060ff1681518110616fe357616fe3618721565b6020026020010181905250616ff88784617969565b82826170038161888e565b935060ff168151811061701857617018618721565b6020908102919091010152855151156170c45760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261706a8161888e565b935060ff168151811061707f5761707f618721565b6020026020010181905250617098866000015184617969565b82826170a38161888e565b935060ff16815181106170b8576170b8618721565b60200260200101819052505b8560800151156171325760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261710d8161888e565b935060ff168151811061712257617122618721565b6020026020010181905250617198565b84156171985760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171778161888e565b935060ff168151811061718c5761718c618721565b60200260200101819052505b604086015151156172345760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171e28161888e565b935060ff16815181106171f7576171f7618721565b602002602001018190525085604001518282806172139061888e565b935060ff168151811061722857617228618721565b60200260200101819052505b85606001511561729e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261727d8161888e565b935060ff168151811061729257617292618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172bc576172bc61815b565b6040519080825280602002602001820160405280156172ef57816020015b60608152602001906001900390816172da5790505b50905060005b8260ff168160ff16101561734857838160ff168151811061731857617318618721565b6020026020010151828260ff168151811061733557617335618721565b60209081029190910101526001016172f5565b50979650505050505050565b604080518082019091526000808252602082015281518351101561737957508161398c565b8151835160208501516000929161738f91618e4f565b617399919061802e565b602084015190915060019082146173ba575082516020840151819020908220145b80156173d5578351855186906173d190839061802e565b9052505b50929392505050565b60008082600001516174028560000151866020015186600001518760200151617724565b61740c9190618e4f565b90505b835160208501516174209190618e4f565b8111616d49578161743081619051565b925050826000015161746785602001518361744b919061802e565b8651617457919061802e565b8386600001518760200151617724565b6174719190618e4f565b905061740f565b6060600061748684846173de565b617491906001618e4f565b67ffffffffffffffff8111156174a9576174a961815b565b6040519080825280602002602001820160405280156174dc57816020015b60608152602001906001900390816174c75790505b50905060005b8151811015615751576174f86159738686616d2a565b82828151811061750a5761750a618721565b60209081029190910101526001016174e2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617566577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617592576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175b057662386f26fc10000830492506010015b6305f5e10083106175c8576305f5e100830492506008015b61271083106175dc57612710830492506004015b606483106175ee576064830492506002015b600a831061398c5760010192915050565b600061760b83836179a9565b159392505050565b60008085841161771a57602084116176c6576000841561765e57600161763a86602061802e565b61764590600861906b565b617650906002619169565b61765a919061802e565b1990505b835181168561766d8989618e4f565b617677919061802e565b805190935082165b8181146176b1578784116176995787945050505050615382565b836176a381619175565b94505082845116905061767f565b6176bb8785618e4f565b945050505050615382565b8383206176d3858861802e565b6176dd9087618e4f565b91505b85821061771857848220808203617705576176fb8684618e4f565b9350505050615382565b61771060018461802e565b9250506176e0565b505b5092949350505050565b6000838186851161782f57602085116177de576000851561777057600161774c87602061802e565b61775790600861906b565b617762906002619169565b61776c919061802e565b1990505b845181166000876177818b8b618e4f565b61778b919061802e565b855190915083165b8281146177d0578186106177b8576177ab8b8b618e4f565b9650505050505050615382565b856177c281619051565b965050838651169050617793565b859650505050505050615382565b508383206000905b6177f0868961802e565b821161782d5785832080820361780c5783945050505050615382565b617817600185618e4f565b935050818061782590619051565b9250506177e6565b505b6178398787618e4f565b979650505050505050565b604080518082019091526000808252602082015260006178768560000151866020015186600001518760200151617724565b602080870180519186019190915251909150617892908261802e565b8352845160208601516178a59190618e4f565b81036178b457600085526178e6565b835183516178c29190618e4f565b855186906178d190839061802e565b90525083516178e09082618e4f565b60208601525b50909392505050565b602081106179275781518352617906602084618e4f565b9250617913602083618e4f565b915061792060208261802e565b90506178ef565b600019811561795657600161793d83602061802e565b61794990610100619169565b617953919061802e565b90505b9151835183169219169190911790915250565b606060006179778484613e55565b80516020808301516040519394506179919390910161918c565b60405160208183030381529060405291505092915050565b81518151600091908111156179bc575081515b6020808501519084015160005b83811015617a755782518251808214617a45576000196020871015617a24576001846179f689602061802e565b617a009190618e4f565b617a0b90600861906b565b617a16906002619169565b617a20919061802e565b1990505b8181168382168181039114617a4257975061398c9650505050505050565b50505b617a50602086618e4f565b9450617a5d602085618e4f565b93505050602081617a6e9190618e4f565b90506179c9565b508451865161450391906191e4565b610c9f8061920583390190565b61140b80619ea483390190565b6115f68061b2af83390190565b610d5e8061c8a583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617afb617b00565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617afb6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bb25783516001600160a01b0316835260209384019390920191600101617b8b565b509095945050505050565b60005b83811015617bd8578181015183820152602001617bc0565b50506000910152565b60008151808452617bf9816020860160208601617bbd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617cef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cd9848651617be1565b6020958601959094509290920191600101617c9f565b509197505050602094850194929092019150600101617c35565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d695781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d29565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ddf6040880182617be1565b9050602082015191508681036020880152617dfa8183617d15565b965050506020938401939190910190600101617d9b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e73858351617be1565b94506020938401939190910190600101617e39565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f096040870182617d15565b9550506020938401939190910190600101617eb0565b600181811c90821680617f3357607f821691505b602082108103615c4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f7e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615c346060830184617be1565b8281526040602082015260006153826040830184617be1565b6001600160a01b0385168152836020820152608060408201526000617fee6080830185617be1565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561398c5761398c617fff565b602081526000613a856020830184617be1565b60008261808a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153826040830184617be1565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180e981601a850160208801617bbd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161812681601c840160208801617bbd565b01601c01949350505050565b60006020828403121561814457600080fd5b81516001600160a01b0381168114613a8557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156181ad576181ad61815b565b60405290565b60008067ffffffffffffffff8411156181ce576181ce61815b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181fd576181fd61815b565b60405283815290508082840185101561821557600080fd5b615751846020830185617bbd565b600082601f83011261823457600080fd5b613a85838351602085016181b3565b60006020828403121561825557600080fd5b815167ffffffffffffffff81111561826c57600080fd5b61398884828501618223565b6000835161828a818460208801617bbd565b83519083019061829e818360208801617bbd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516182df81601a850160208801617bbd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161831c816033840160208801617bbd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a856080830184617be1565b6000602082840312156183ab57600080fd5b815167ffffffffffffffff8111156183c257600080fd5b8201601f810184136183d357600080fd5b613988848251602084016181b3565b600085516183f4818460208a01617bbd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161842e816001840160208a01617bbd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161846c816002840160208901617bbd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516184ae816002840160208801617bbd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184f96040830184617be1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561854a57600080fd5b81518015158114613a8557600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161859281601f850160208701617bbd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006185ff6040830184617be1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186516040830184617be1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516186c8816014850160208701617bbd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061870f6040830185617be1565b8281036020840152613a818185617be1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618788816001850160208701617bbd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516187ce818460208701617bbd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161888181604b850160208701617bbd565b91909101604b0192915050565b600060ff821660ff81036188a4576188a4617fff565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a856080830184617be1565b60006020828403121561897157600080fd5b815167ffffffffffffffff81111561898857600080fd5b82016060818503121561899a57600080fd5b6189a261818a565b81518060030b81146189b357600080fd5b8152602082015167ffffffffffffffff8111156189cf57600080fd5b6189db86828501618223565b602083015250604082015167ffffffffffffffff8111156189fb57600080fd5b618a0786828501618223565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618a73816021850160208701617bbd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618c5f816021850160208801617bbd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c9c81602e840160208801617bbd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618d64816022850160208701617bbd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618da981600e850160208701617bbd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561398c5761398c617fff565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e9a816018850160208801617bbd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618ed781601c840160208801617bbd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618fdd818460208701617bbd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161904481601c850160208701617bbd565b91909101601c0192915050565b6000600019820361906457619064617fff565b5060010190565b808202811582820484141761398c5761398c617fff565b6001815b60018411156190bd578085048111156190a1576190a1617fff565b60018416156190af57908102905b60019390931c928002619086565b935093915050565b6000826190d45750600161398c565b816190e15750600061398c565b81600181146190f757600281146191015761911d565b600191505061398c565b60ff84111561911257619112617fff565b50506001821b61398c565b5060208310610133831016604e8410600b8410161715619140575081810a61398c565b61914d6000198484619082565b806000190482111561916157619161617fff565b029392505050565b6000613a8583836190c5565b60008161918457619184617fff565b506000190190565b6000835161919e818460208801617bbd565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516191d8816001840160208801617bbd565b01600101949350505050565b8181036000831280158383131683831282161715616d4957616d49617fff56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a264697066735822122059e76541decc5b10de6c68c8ed00e032ce96e7ed57858ac9d3f8789ff7c2a76264736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6388061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b610199610a2b565b6040516101a69190617b71565b60405180910390f35b6101b7610a8d565b6040516101a69190617c0d565b61018f610bcf565b6101996113a2565b610199611402565b61018f611462565b6101ec611abe565b6040516101a69190617d73565b61018f611c40565b610209611eb2565b6040516101a69190617e11565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611f82565b6040516101a69190617e88565b61025361207d565b610209612178565b610278612248565b60405190151581526020016101a6565b61018f61231c565b61018f6125a0565b61018f6129b6565b61018f613076565b6101996136dc565b601f546102789060ff1681565b61018f61373c565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161031790617a84565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561039b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261048c919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613973565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460255460405192939182169291169061051890617a91565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610554573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460255460405193851694928316939183169216906105af90617a9e565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105f3573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161063890617aab565b604051809103906000f080158015610654573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561080457600080fd5b505af1158015610818573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561087e57600080fd5b505af1158015610892573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f457600080fd5b505af1158015610908573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1157600080fd5b505af1158015610a25573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a65575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bc657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610baf578382906000526020600020018054610b2290617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90617f1f565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b505050505081526020019060010190610b03565b505050508152505081526020019060010190610ab1565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190617f6c565b9050610cdb816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610e32916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015610e4c57600080fd5b505af1158015610e60573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061104e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061113492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d99190617f6c565b90506111e58188613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190617f6c565b905061126e816112698a8761802e565b613992565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190617f6c565b9050611315816000613992565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113899190617f6c565b9050611396816000613992565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361150393921691016001600160a01b0391909116815260200190565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190617f6c565b9050611551816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c59190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916116a8916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561176857600080fd5b505af115801561177c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561184e57600080fd5b505af1158015611862573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118a79089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561192157600080fd5b505af1158015611935573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061198d92909116908a9089908b90600401617fc6565b600060405180830381600087803b1580156119a757600080fd5b505af11580156119bb573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a319190617f6c565b9050611a3e816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190617f6c565b905061126e8185613992565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000209060020201604051806040016040529081600082018054611b1590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4190617f1f565b8015611b8e5780601f10611b6357610100808354040283529160200191611b8e565b820191906000526020600020905b815481529060010190602001808311611b7157829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c2857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611bd55790505b50505050508152505081526020019060010190611ae2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cf657600080fd5b505af1158015611d0a573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611df59190600401618041565b600060405180830381600087803b158015611e0f57600080fd5b505af1158015611e23573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611e7b9290911690879086908890600401617fc6565b600060405180830381600087803b158015611e9557600080fd5b505af1158015611ea9573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bc6578382906000526020600020018054611ef590617f1f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190617f1f565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b505050505081526020019060010190611ed6565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561206557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120125790505b50505050508152505081526020019060010190611fa6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bc65760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561216057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161210d5790505b505050505081525050815260200190600101906120a1565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bc65783829060005260206000200180546121bb90617f1f565b80601f01602080910402602001604051908101604052809291908181526020018280546121e790617f1f565b80156122345780601f1061220957610100808354040283529160200191612234565b820191906000526020600020905b81548152906001019060200180831161221757829003601f168201915b50505050508152602001906001019061219c565b60085460009060ff1615612260575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190617f6c565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561241b57600080fd5b505af115801561242f573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061251a9190600401618041565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611e7b9290911690879086908890600401617fc6565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190617f6c565b9050612625816000613992565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612705916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156127c557600080fd5b505af11580156127d9573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561289157600080fd5b505af11580156128a5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190617f6c565b90506129af8186613992565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190617f6c565b9050612ac2816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b369190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c19916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b158015612c3357600080fd5b505af1158015612c47573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d2b600289618054565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612df357600080fd5b505af1158015612e07573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612e4c9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f3292909116908a9089908b90600401617fc6565b600060405180830381600087803b158015612f4c57600080fd5b505af1158015612f60573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190617f6c565b9050612fe78161126960028a618054565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305b9190617f6c565b905061126e8161306c60028b618054565b611269908761802e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801561310b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312f9190617f6c565b905061313c816000613992565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b09190617f6c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613293916001600160a01b0391909116906000908690600401617f85565b600060405180830381600087803b1580156132ad57600080fd5b505af11580156132c1573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561335357600080fd5b505af1158015613367573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506133aa92506001600160a01b0390911690879061808f565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79061349f908a908990617fad565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561353557600080fd5b505af1158015613549573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe915061358e9089908890617fad565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561360857600080fd5b505af115801561361c573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061367492909116908a9089908b90600401617fc6565b600060405180830381600087803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101611198565b60606015805480602002602001604051908101604052809291908181526020018280548015610a83576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a65575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137b657600080fd5b505af11580156137ca573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138b59190600401618041565b600060405180830381600087803b1580156138cf57600080fd5b505af11580156138e3573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050565b600061397d617ab8565b613988848483613a11565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156139fd57600080fd5b505afa15801561396b573d6000803e3d6000fd5b600080613a1e8584613a8c565b9050613a816040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a6c92919061808f565b60405160208183030381529060405285613a98565b9150505b9392505050565b6000613a858383613ac6565b60c08101515160009015613abc57613ab584848460c00151613ae1565b9050613a85565b613ab58484613c87565b6000613ad28383613d72565b613a8583836020015184613a98565b600080613aec613d82565b90506000613afa8683613e55565b90506000613b1182606001518360200151856142fb565b90506000613b218383898961450d565b90506000613b2e8261538a565b602081015181519192509060030b15613ba157898260400151604051602001613b589291906180b1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b9891600401618041565b60405180910390fd5b6000613be46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615559565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c37908490600401618041565b602060405180830381865afa158015613c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c789190618132565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613cdc908790600401618041565b600060405180830381865afa158015613cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d219190810190618243565b90506000613d4f8285604051602001613d3b929190618278565b604051602081830303815290604052615759565b90506001600160a01b038116613988578484604051602001613b589291906182a7565b613d7e8282600061576c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e09908490600401618352565b600060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e4e9190810190618399565b9250505090565b613e876040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613ed26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613edb8561586f565b60208201526000613eeb86615c54565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f559190810190618399565b86838560200151604051602001613f6f94939291906183e2565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fc7908590600401618041565b600060405180830381865afa158015613fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261400c9190810190618399565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140549084906004016184e6565b602060405180830381865afa158015614071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140959190618538565b6140aa5781604051602001613b58919061855a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140ef9084906004016185ec565b600060405180830381865afa15801561410c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141349190810190618399565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061417b90849060040161863e565b602060405180830381865afa158015614198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bc9190618538565b15614251576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061420690849060040161863e565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190618399565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142769190618690565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142a29291906186fc565b600060405180830381865afa1580156142bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142e79190810190618399565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143175790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061437757614377618721565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143cb576143cb618721565b6020026020010181905250846040516020016143e79190618750565b6040516020818303038152906040528160028151811061440957614409618721565b60200260200101819052508260405160200161442591906187bc565b6040516020818303038152906040528160038151811061444757614447618721565b6020026020010181905250600061445d8261538a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144ee9060408051808201825260008082526020918201528151808301909252845182528085019082015290615ed7565b6145035785604051602001613b5891906187fd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561455d565b511590565b6146d157826020015115614619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b98565b8260c00151156146d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b98565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146ea57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147459061888e565b935060ff168151811061475a5761475a618721565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147ab91906188ad565b6040516020818303038152906040528282806147c69061888e565b935060ff16815181106147db576147db618721565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806148289061888e565b935060ff168151811061483d5761483d618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061488a9061888e565b935060ff168151811061489f5761489f618721565b602002602001018190525087602001518282806148bb9061888e565b935060ff16815181106148d0576148d0618721565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061491d9061888e565b935060ff168151811061493257614932618721565b60209081029190910101528751828261494a8161888e565b935060ff168151811061495f5761495f618721565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149ac9061888e565b935060ff16815181106149c1576149c1618721565b60200260200101819052506149d546615f38565b82826149e08161888e565b935060ff16815181106149f5576149f5618721565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a429061888e565b935060ff1681518110614a5757614a57618721565b602002602001018190525086828280614a6f9061888e565b935060ff1681518110614a8457614a84618721565b6020908102919091010152855115614bab5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ad58161888e565b935060ff1681518110614aea57614aea618721565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b3a908990600401618041565b600060405180830381865afa158015614b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b7f9190810190618399565b8282614b8a8161888e565b935060ff1681518110614b9f57614b9f618721565b60200260200101819052505b846020015115614c7b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bf48161888e565b935060ff1681518110614c0957614c09618721565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c569061888e565b935060ff1681518110614c6b57614c6b618721565b6020026020010181905250614e42565b614cb36145588660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d465760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614cf68161888e565b935060ff1681518110614d0b57614d0b618721565b60200260200101819052508460a00151604051602001614d2b9190618750565b604051602081830303815290604052828280614c569061888e565b8460c00151158015614d89575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d8790511590565b155b15614e425760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dcd8161888e565b935060ff1681518110614de257614de2618721565b6020026020010181905250614df688615fd8565b604051602001614e069190618750565b604051602081830303815290604052828280614e219061888e565b935060ff1681518110614e3657614e36618721565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e7690511590565b614f0b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614eb98161888e565b935060ff1681518110614ece57614ece618721565b60200260200101819052508460400151828280614eea9061888e565b935060ff1681518110614eff57614eff618721565b60200260200101819052505b60608501511561502c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f548161888e565b935060ff1681518110614f6957614f69618721565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526150009190810190618399565b828261500b8161888e565b935060ff168151811061502057615020618721565b60200260200101819052505b60e085015151156150d35760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150768161888e565b935060ff168151811061508b5761508b618721565b60200260200101819052506150a78560e0015160000151615f38565b82826150b28161888e565b935060ff16815181106150c7576150c7618721565b60200260200101819052505b60e0850151602001511561517d5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826151208161888e565b935060ff168151811061513557615135618721565b60200260200101819052506151518560e0015160200151615f38565b828261515c8161888e565b935060ff168151811061517157615171618721565b60200260200101819052505b60e085015160400151156152275760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151ca8161888e565b935060ff16815181106151df576151df618721565b60200260200101819052506151fb8560e0015160400151615f38565b82826152068161888e565b935060ff168151811061521b5761521b618721565b60200260200101819052505b60e085015160600151156152d15760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152748161888e565b935060ff168151811061528957615289618721565b60200260200101819052506152a58560e0015160600151615f38565b82826152b08161888e565b935060ff16815181106152c5576152c5618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152ef576152ef61815b565b60405190808252806020026020018201604052801561532257816020015b606081526020019060019003908161530d5790505b50905060005b8260ff168160ff16101561537b57838160ff168151811061534b5761534b618721565b6020026020010151828260ff168151811061536857615368618721565b6020908102919091010152600101615328565b5093505050505b949350505050565b6153b16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161543791869101618918565b600060405180830381865afa158015615454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261547c9190810190618399565b9050600061548a8683616ac7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154ba9190617e11565b6000604051808303816000875af11580156154d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615501919081019061895f565b805190915060030b1580159061551a5750602081015151155b80156155295750604081015151155b15614503578160008151811061554157615541618721565b6020026020010151604051602001613b589190618a15565b6060600061558e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155c59082905b90616c1c565b156157225760006156428261563c846156366156088a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c43565b90616ca5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156a6908290616c1c565b1561571057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261570d905b8290616d2a565b90505b61571981616d50565b92505050613a85565b821561573b578484604051602001613b58929190618c01565b5050604080516020810190915260008152613a85565b509392505050565b6000808251602084016000f09392505050565b8160a001511561577b57505050565b6000615788848484616db9565b905060006157958261538a565b602081015181519192509060030b1580156158315750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615831906040805180820182526000808252602091820152815180830190925284518252808501908201526155bf565b1561583e57505050505050565b6040820151511561585e578160400151604051602001613b589190618ca8565b80604051602001613b589190618d06565b606060006158a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615909905b8290615ed7565b1561597857604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973908390617354565b616d50565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159da905b82906173de565b600103615aa757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4090615706565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a8590615973905b8390616d2a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b0690615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b6e908390617478565b905060008160018351615b81919061802e565b81518110615b9157615b91618721565b60200260200101519050615c34615973615c076040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617354565b95945050505050565b82604051602001613b589190618d71565b50919050565b60606000615c898360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ceb90615902565b15615cf957613a8581616d50565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d58906159d3565b600103615dc257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a859061597390615aa0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2190615902565b15615c3d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e89908390617478565b9050600181511115615ec5578060028251615ea4919061802e565b81518110615eb457615eb4618721565b602002602001015192505050919050565b5082604051602001613b589190618d71565b805182516000911115615eec5750600061398c565b81518351602085015160009291615f0291618e4f565b615f0c919061802e565b905082602001518103615f2357600191505061398c565b82516020840151819020912014905092915050565b60606000615f458361751d565b600101905060008167ffffffffffffffff811115615f6557615f6561815b565b6040519080825280601f01601f191660200182016040528015615f8f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f9957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616064905b82906175ff565b156160a457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161039061605d565b1561614357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a29061605d565b156161e257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162419061605d565b806162a65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a69061605d565b156162e657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163459061605d565b806163aa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163aa9061605d565b156163ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164499061605d565b806164ae5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ae9061605d565b156164ee57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654d9061605d565b806165b25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b29061605d565b156165f257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166519061605d565b1561669157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166f09061605d565b1561673057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678f9061605d565b156167cf57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261682e9061605d565b1561686e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168cd9061605d565b1561690d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696c9061605d565b806169d15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169d19061605d565b15616a1157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a709061605d565b15616ab057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b589290602001618e62565b60608060005b8451811015616b525781858281518110616ae957616ae9618721565b6020026020010151604051602001616b02929190618278565b604051602081830303815290604052915060018551616b21919061802e565b8114616b4a5781604051602001616b389190618fcb565b60405160208183030381529060405291505b600101616acd565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b6b5790505090508381600081518110616b9657616b96618721565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bea57616bea618721565b60200260200101819052508181600281518110616c0957616c09618721565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c3a9291849190617613565b14159392505050565b60408051808201909152600080825260208201526000616c758460000151856020015185600001518660200151617724565b9050836020015181616c87919061802e565b84518590616c9690839061802e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cca57508161398c565b6020808301519084015160019114616cf15750815160208481015190840151829020919020145b8015616d2257825184518590616d0890839061802e565b9052508251602085018051616d1e908390618e4f565b9052505b509192915050565b6040805180820190915260008082526020820152616d49838383617844565b5092915050565b60606000826000015167ffffffffffffffff811115616d7157616d7161815b565b6040519080825280601f01601f191660200182016040528015616d9b576020820181803683370190505b5090506000602082019050616d4981856020015186600001516178ef565b60606000616dc5613d82565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616de257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e3d9061888e565b935060ff1681518110616e5257616e52618721565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616ea3919061900c565b604051602081830303815290604052828280616ebe9061888e565b935060ff1681518110616ed357616ed3618721565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f209061888e565b935060ff1681518110616f3557616f35618721565b602002602001018190525082604051602001616f5191906187bc565b604051602081830303815290604052828280616f6c9061888e565b935060ff1681518110616f8157616f81618721565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fce9061888e565b935060ff1681518110616fe357616fe3618721565b6020026020010181905250616ff88784617969565b82826170038161888e565b935060ff168151811061701857617018618721565b6020908102919091010152855151156170c45760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261706a8161888e565b935060ff168151811061707f5761707f618721565b6020026020010181905250617098866000015184617969565b82826170a38161888e565b935060ff16815181106170b8576170b8618721565b60200260200101819052505b8560800151156171325760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261710d8161888e565b935060ff168151811061712257617122618721565b6020026020010181905250617198565b84156171985760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171778161888e565b935060ff168151811061718c5761718c618721565b60200260200101819052505b604086015151156172345760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171e28161888e565b935060ff16815181106171f7576171f7618721565b602002602001018190525085604001518282806172139061888e565b935060ff168151811061722857617228618721565b60200260200101819052505b85606001511561729e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261727d8161888e565b935060ff168151811061729257617292618721565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172bc576172bc61815b565b6040519080825280602002602001820160405280156172ef57816020015b60608152602001906001900390816172da5790505b50905060005b8260ff168160ff16101561734857838160ff168151811061731857617318618721565b6020026020010151828260ff168151811061733557617335618721565b60209081029190910101526001016172f5565b50979650505050505050565b604080518082019091526000808252602082015281518351101561737957508161398c565b8151835160208501516000929161738f91618e4f565b617399919061802e565b602084015190915060019082146173ba575082516020840151819020908220145b80156173d5578351855186906173d190839061802e565b9052505b50929392505050565b60008082600001516174028560000151866020015186600001518760200151617724565b61740c9190618e4f565b90505b835160208501516174209190618e4f565b8111616d49578161743081619051565b925050826000015161746785602001518361744b919061802e565b8651617457919061802e565b8386600001518760200151617724565b6174719190618e4f565b905061740f565b6060600061748684846173de565b617491906001618e4f565b67ffffffffffffffff8111156174a9576174a961815b565b6040519080825280602002602001820160405280156174dc57816020015b60608152602001906001900390816174c75790505b50905060005b8151811015615751576174f86159738686616d2a565b82828151811061750a5761750a618721565b60209081029190910101526001016174e2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617566577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617592576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175b057662386f26fc10000830492506010015b6305f5e10083106175c8576305f5e100830492506008015b61271083106175dc57612710830492506004015b606483106175ee576064830492506002015b600a831061398c5760010192915050565b600061760b83836179a9565b159392505050565b60008085841161771a57602084116176c6576000841561765e57600161763a86602061802e565b61764590600861906b565b617650906002619169565b61765a919061802e565b1990505b835181168561766d8989618e4f565b617677919061802e565b805190935082165b8181146176b1578784116176995787945050505050615382565b836176a381619175565b94505082845116905061767f565b6176bb8785618e4f565b945050505050615382565b8383206176d3858861802e565b6176dd9087618e4f565b91505b85821061771857848220808203617705576176fb8684618e4f565b9350505050615382565b61771060018461802e565b9250506176e0565b505b5092949350505050565b6000838186851161782f57602085116177de576000851561777057600161774c87602061802e565b61775790600861906b565b617762906002619169565b61776c919061802e565b1990505b845181166000876177818b8b618e4f565b61778b919061802e565b855190915083165b8281146177d0578186106177b8576177ab8b8b618e4f565b9650505050505050615382565b856177c281619051565b965050838651169050617793565b859650505050505050615382565b508383206000905b6177f0868961802e565b821161782d5785832080820361780c5783945050505050615382565b617817600185618e4f565b935050818061782590619051565b9250506177e6565b505b6178398787618e4f565b979650505050505050565b604080518082019091526000808252602082015260006178768560000151866020015186600001518760200151617724565b602080870180519186019190915251909150617892908261802e565b8352845160208601516178a59190618e4f565b81036178b457600085526178e6565b835183516178c29190618e4f565b855186906178d190839061802e565b90525083516178e09082618e4f565b60208601525b50909392505050565b602081106179275781518352617906602084618e4f565b9250617913602083618e4f565b915061792060208261802e565b90506178ef565b600019811561795657600161793d83602061802e565b61794990610100619169565b617953919061802e565b90505b9151835183169219169190911790915250565b606060006179778484613e55565b80516020808301516040519394506179919390910161918c565b60405160208183030381529060405291505092915050565b81518151600091908111156179bc575081515b6020808501519084015160005b83811015617a755782518251808214617a45576000196020871015617a24576001846179f689602061802e565b617a009190618e4f565b617a0b90600861906b565b617a16906002619169565b617a20919061802e565b1990505b8181168382168181039114617a4257975061398c9650505050505050565b50505b617a50602086618e4f565b9450617a5d602085618e4f565b93505050602081617a6e9190618e4f565b90506179c9565b508451865161450391906191e4565b610c9f8061920583390190565b61140b80619ea483390190565b6115f68061b2af83390190565b610d5e8061c8a583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617afb617b00565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617afb6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bb25783516001600160a01b0316835260209384019390920191600101617b8b565b509095945050505050565b60005b83811015617bd8578181015183820152602001617bc0565b50506000910152565b60008151808452617bf9816020860160208601617bbd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617cef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cd9848651617be1565b6020958601959094509290920191600101617c9f565b509197505050602094850194929092019150600101617c35565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d695781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d29565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617ddf6040880182617be1565b9050602082015191508681036020880152617dfa8183617d15565b965050506020938401939190910190600101617d9b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e73858351617be1565b94506020938401939190910190600101617e39565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d09577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f096040870182617d15565b9550506020938401939190910190600101617eb0565b600181811c90821680617f3357607f821691505b602082108103615c4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f7e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615c346060830184617be1565b8281526040602082015260006153826040830184617be1565b6001600160a01b0385168152836020820152608060408201526000617fee6080830185617be1565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561398c5761398c617fff565b602081526000613a856020830184617be1565b60008261808a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153826040830184617be1565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180e981601a850160208801617bbd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161812681601c840160208801617bbd565b01601c01949350505050565b60006020828403121561814457600080fd5b81516001600160a01b0381168114613a8557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156181ad576181ad61815b565b60405290565b60008067ffffffffffffffff8411156181ce576181ce61815b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156181fd576181fd61815b565b60405283815290508082840185101561821557600080fd5b615751846020830185617bbd565b600082601f83011261823457600080fd5b613a85838351602085016181b3565b60006020828403121561825557600080fd5b815167ffffffffffffffff81111561826c57600080fd5b61398884828501618223565b6000835161828a818460208801617bbd565b83519083019061829e818360208801617bbd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516182df81601a850160208801617bbd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161831c816033840160208801617bbd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a856080830184617be1565b6000602082840312156183ab57600080fd5b815167ffffffffffffffff8111156183c257600080fd5b8201601f810184136183d357600080fd5b613988848251602084016181b3565b600085516183f4818460208a01617bbd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161842e816001840160208a01617bbd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161846c816002840160208901617bbd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516184ae816002840160208801617bbd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184f96040830184617be1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561854a57600080fd5b81518015158114613a8557600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161859281601f850160208701617bbd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006185ff6040830184617be1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006186516040830184617be1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516186c8816014850160208701617bbd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061870f6040830185617be1565b8281036020840152613a818185617be1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618788816001850160208701617bbd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516187ce818460208701617bbd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161888181604b850160208701617bbd565b91909101604b0192915050565b600060ff821660ff81036188a4576188a4617fff565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a856080830184617be1565b60006020828403121561897157600080fd5b815167ffffffffffffffff81111561898857600080fd5b82016060818503121561899a57600080fd5b6189a261818a565b81518060030b81146189b357600080fd5b8152602082015167ffffffffffffffff8111156189cf57600080fd5b6189db86828501618223565b602083015250604082015167ffffffffffffffff8111156189fb57600080fd5b618a0786828501618223565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251618a73816021850160208701617bbd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618c5f816021850160208801617bbd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c9c81602e840160208801617bbd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161890b816029850160208701617bbd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618d64816022850160208701617bbd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618da981600e850160208701617bbd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561398c5761398c617fff565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e9a816018850160208801617bbd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618ed781601c840160208801617bbd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618fdd818460208701617bbd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161904481601c850160208701617bbd565b91909101601c0192915050565b6000600019820361906457619064617fff565b5060010190565b808202811582820484141761398c5761398c617fff565b6001815b60018411156190bd578085048111156190a1576190a1617fff565b60018416156190af57908102905b60019390931c928002619086565b935093915050565b6000826190d45750600161398c565b816190e15750600061398c565b81600181146190f757600281146191015761911d565b600191505061398c565b60ff84111561911257619112617fff565b50506001821b61398c565b5060208310610133831016604e8410600b8410161715619140575081810a61398c565b61914d6000198484619082565b806000190482111561916157619161617fff565b029392505050565b6000613a8583836190c5565b60008161918457619184617fff565b506000190190565b6000835161919e818460208801617bbd565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516191d8816001840160208801617bbd565b01600101949350505050565b8181036000831280158383131683831282161715616d4957616d49617fff56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea2646970667358221220acfa51062c59716e02e413798f47a294f807ab6bfe6bcb7c13ce0530e6e5b1b864736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220747a3818b31faffeb08f09bfe6ae14783dd67e80a08be60f3ad20e065e59915f64736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index c28c5663..12508b51 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zetaToken_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callerConfirmation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"maxSupply_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlBadConfirmation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033", + Bin: "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a0033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go index f999ed58..b2e8b56a 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WITHDRAWER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AccessControlUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"neededRole\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ddd48061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b6101996109c4565b6040516101a69190617b03565b60405180910390f35b6101b7610a26565b6040516101a69190617b9f565b61018f610b68565b610199611343565b6101996113a3565b61018f611403565b6101ec6119f0565b6040516101a69190617d05565b61018f611b72565b610209611de4565b6040516101a69190617da3565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611eb4565b6040516101a69190617e1a565b610253611faf565b6102096120aa565b61027861217a565b60405190151581526020016101a6565b61018f61224e565b61018f6124d2565b61018f6128f2565b61018f612f39565b61019961366e565b601f546102789060ff1681565b61018f6136ce565b60258054307fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556026805461123490831617905560278054615678921682179055604051819061031a90617a16565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561034d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261043e919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613905565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546025546040519293918216929116906104ca90617a23565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610506573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754602554604051938516949283169391831692169061056190617a30565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105a5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050506040516106ee90617a3d565b604051809103906000f08015801561070a573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109fe575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b48578382906000526020600020018054610abb90617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790617eb1565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081526020019060010190610a9c565b505050508152505081526020019060010190610a4a565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190617efe565b9050610c74816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190617efe565b9050610cf5816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610ddc916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610ff89089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110de92909116908a9089908b90600401617f58565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190617efe565b905061118e8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190617efe565b905061120f816000613924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190617efe565b90506112b6816000613924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a9190617efe565b9050611337816000613924565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936114a493921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e59190617efe565b90506114f2816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190617efe565b9050611573816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161165a916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118599089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061193f92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190617efe565b905061118e816000613924565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000209060020201604051806040016040529081600082018054611a4790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390617eb1565b8015611ac05780601f10611a9557610100808354040283529160200191611ac0565b820191906000526020600020905b815481529060010190602001808311611aa357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b5a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611b075790505b50505050508152505081526020019060010190611a14565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611d279190600401617f91565b600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611dad9290911690879086908890600401617f58565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5f578382906000526020600020018054611e2790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5390617eb1565b8015611ea05780601f10611e7557610100808354040283529160200191611ea0565b820191906000526020600020905b815481529060010190602001808311611e8357829003601f168201915b505050505081526020019060010190611e08565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f9757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f445790505b50505050508152505081526020019060010190611ed8565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561209257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161203f5790505b50505050508152505081526020019060010190611fd3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000200180546120ed90617eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461211990617eb1565b80156121665780601f1061213b57610100808354040283529160200191612166565b820191906000526020600020905b81548152906001019060200180831161214957829003601f168201915b5050505050815260200190600101906120ce565b60085460009060ff1615612192575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190617efe565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061244c9190600401617f91565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611dad9290911690879086908890600401617f58565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015612527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254b9190617efe565b9050612558816000613924565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612641916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561270157600080fd5b505af1158015612715573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127cd57600080fd5b505af11580156127e1573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b15801561285557600080fd5b505af1158015612869573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190617efe565b90506128eb8186613924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156129cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f19190617efe565b90506129fe816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190617efe565b9050612a7f816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612b66916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c2657600080fd5b505af1158015612c3a573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612c78600289617fd3565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612d999089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612e7f92909116908a9089908b90600401617f58565b600060405180830381600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190617efe565b905061118e81612f3460028a617fd3565b613924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff29190617efe565b9050612fff816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130739190617efe565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161315d916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561317757600080fd5b505af115801561318b573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061327492506001600160a01b0390911690879061800e565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330a57600080fd5b505af115801561331e573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790613369908a908990617f3f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134589089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061353e92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561355857600080fd5b505af115801561356c573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190617efe565b90506135ee8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190617efe565b905061120f8185613924565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561374857600080fd5b505af115801561375c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138479190600401617f91565b600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138e957600080fd5b505af11580156138fd573d6000803e3d6000fd5b505050505050565b600061390f617a4a565b61391a8484836139a3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561398f57600080fd5b505afa1580156138fd573d6000803e3d6000fd5b6000806139b08584613a1e565b9050613a136040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016139fe92919061800e565b60405160208183030381529060405285613a2a565b9150505b9392505050565b6000613a178383613a58565b60c08101515160009015613a4e57613a4784848460c00151613a73565b9050613a17565b613a478484613c19565b6000613a648383613d04565b613a1783836020015184613a2a565b600080613a7e613d14565b90506000613a8c8683613de7565b90506000613aa3826060015183602001518561428d565b90506000613ab38383898961449f565b90506000613ac08261531c565b602081015181519192509060030b15613b3357898260400151604051602001613aea929190618030565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b2a91600401617f91565b60405180910390fd5b6000613b766040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016154eb565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613bc9908490600401617f91565b602060405180830381865afa158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906180b1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613c6e908790600401617f91565b600060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb391908101906181c2565b90506000613ce18285604051602001613ccd9291906181f7565b6040516020818303038152906040526156eb565b90506001600160a01b03811661391a578484604051602001613aea929190618226565b613d10828260006156fe565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613d9b9084906004016182d1565b600060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613de09190810190618318565b9250505090565b613e196040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613e646040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613e6d85615801565b60208201526000613e7d86615be6565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee79190810190618318565b86838560200151604051602001613f019493929190618361565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613f59908590600401617f91565b600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190618318565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613fe6908490600401618465565b602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402791906184b7565b61403c5781604051602001613aea91906184d9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061408190849060040161856b565b600060405180830381865afa15801561409e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c69190810190618318565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061410d9084906004016185bd565b602060405180830381865afa15801561412a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414e91906184b7565b156141e3576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906141989084906004016185bd565b600060405180830381865afa1580156141b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141dd9190810190618318565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614208919061860f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161423492919061867b565b600060405180830381865afa158015614251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142799190810190618318565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816142a95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614309576143096186a0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061435d5761435d6186a0565b60200260200101819052508460405160200161437991906186cf565b6040516020818303038152906040528160028151811061439b5761439b6186a0565b6020026020010181905250826040516020016143b7919061873b565b604051602081830303815290604052816003815181106143d9576143d96186a0565b602002602001018190525060006143ef8261531c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144809060408051808201825260008082526020918201528151808301909252845182528085019082015290615e69565b6144955785604051602001613aea919061877c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156144ef565b511590565b614663578260200151156145ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b2a565b8260c0015115614663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b2a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161467c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806146d79061880d565b935060ff16815181106146ec576146ec6186a0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161473d919061882c565b6040516020818303038152906040528282806147589061880d565b935060ff168151811061476d5761476d6186a0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806147ba9061880d565b935060ff16815181106147cf576147cf6186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061481c9061880d565b935060ff1681518110614831576148316186a0565b6020026020010181905250876020015182828061484d9061880d565b935060ff1681518110614862576148626186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806148af9061880d565b935060ff16815181106148c4576148c46186a0565b6020908102919091010152875182826148dc8161880d565b935060ff16815181106148f1576148f16186a0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061493e9061880d565b935060ff1681518110614953576149536186a0565b602002602001018190525061496746615eca565b82826149728161880d565b935060ff1681518110614987576149876186a0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806149d49061880d565b935060ff16815181106149e9576149e96186a0565b602002602001018190525086828280614a019061880d565b935060ff1681518110614a1657614a166186a0565b6020908102919091010152855115614b3d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614a678161880d565b935060ff1681518110614a7c57614a7c6186a0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614acc908990600401617f91565b600060405180830381865afa158015614ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b119190810190618318565b8282614b1c8161880d565b935060ff1681518110614b3157614b316186a0565b60200260200101819052505b846020015115614c0d5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614b868161880d565b935060ff1681518110614b9b57614b9b6186a0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614be89061880d565b935060ff1681518110614bfd57614bfd6186a0565b6020026020010181905250614dd4565b614c456144ea8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614cd85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614c888161880d565b935060ff1681518110614c9d57614c9d6186a0565b60200260200101819052508460a00151604051602001614cbd91906186cf565b604051602081830303815290604052828280614be89061880d565b8460c00151158015614d1b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d1990511590565b155b15614dd45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5f8161880d565b935060ff1681518110614d7457614d746186a0565b6020026020010181905250614d8888615f6a565b604051602001614d9891906186cf565b604051602081830303815290604052828280614db39061880d565b935060ff1681518110614dc857614dc86186a0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e0890511590565b614e9d5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614e4b8161880d565b935060ff1681518110614e6057614e606186a0565b60200260200101819052508460400151828280614e7c9061880d565b935060ff1681518110614e9157614e916186a0565b60200260200101819052505b606085015115614fbe5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614ee68161880d565b935060ff1681518110614efb57614efb6186a0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f929190810190618318565b8282614f9d8161880d565b935060ff1681518110614fb257614fb26186a0565b60200260200101819052505b60e085015151156150655760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150088161880d565b935060ff168151811061501d5761501d6186a0565b60200260200101819052506150398560e0015160000151615eca565b82826150448161880d565b935060ff1681518110615059576150596186a0565b60200260200101819052505b60e0850151602001511561510f5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826150b28161880d565b935060ff16815181106150c7576150c76186a0565b60200260200101819052506150e38560e0015160200151615eca565b82826150ee8161880d565b935060ff1681518110615103576151036186a0565b60200260200101819052505b60e085015160400151156151b95760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261515c8161880d565b935060ff1681518110615171576151716186a0565b602002602001018190525061518d8560e0015160400151615eca565b82826151988161880d565b935060ff16815181106151ad576151ad6186a0565b60200260200101819052505b60e085015160600151156152635760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152068161880d565b935060ff168151811061521b5761521b6186a0565b60200260200101819052506152378560e0015160600151615eca565b82826152428161880d565b935060ff1681518110615257576152576186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615281576152816180da565b6040519080825280602002602001820160405280156152b457816020015b606081526020019060019003908161529f5790505b50905060005b8260ff168160ff16101561530d57838160ff16815181106152dd576152dd6186a0565b6020026020010151828260ff16815181106152fa576152fa6186a0565b60209081029190910101526001016152ba565b5093505050505b949350505050565b6153436040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916153c991869101618897565b600060405180830381865afa1580156153e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261540e9190810190618318565b9050600061541c8683616a59565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161544c9190617da3565b6000604051808303816000875af115801561546b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261549391908101906188de565b805190915060030b158015906154ac5750602081015151155b80156154bb5750604081015151155b1561449557816000815181106154d3576154d36186a0565b6020026020010151604051602001613aea9190618994565b606060006155208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155579082905b90616bae565b156156b45760006155d4826155ce846155c861559a8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616bd5565b90616c37565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615638908290616bae565b156156a257604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261569f905b8290616cbc565b90505b6156ab81616ce2565b92505050613a17565b82156156cd578484604051602001613aea929190618b80565b5050604080516020810190915260008152613a17565b509392505050565b6000808251602084016000f09392505050565b8160a001511561570d57505050565b600061571a848484616d4b565b905060006157278261531c565b602081015181519192509060030b1580156157c35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c390604080518082018252600080825260209182015281518083019092528451825280850190820152615551565b156157d057505050505050565b604082015151156157f0578160400151604051602001613aea9190618c27565b80604051602001613aea9190618c85565b606060006158368360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061589b905b8290615e69565b1561590a57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a17906159059083906172e6565b616ce2565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261596c905b8290617370565b600103615a3957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159d290615698565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a1790615905905b8390616cbc565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a9890615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b0090839061740a565b905060008160018351615b139190618cf0565b81518110615b2357615b236186a0565b60200260200101519050615bc6615905615b996040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906172e6565b95945050505050565b82604051602001613aea9190618d03565b50919050565b60606000615c1b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c7d90615894565b15615c8b57613a1781616ce2565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cea90615965565b600103615d5457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a179061590590615a32565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db390615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e1b90839061740a565b9050600181511115615e57578060028251615e369190618cf0565b81518110615e4657615e466186a0565b602002602001015192505050919050565b5082604051602001613aea9190618d03565b805182516000911115615e7e5750600061391e565b81518351602085015160009291615e9491618de1565b615e9e9190618cf0565b905082602001518103615eb557600191505061391e565b82516020840151819020912014905092915050565b60606000615ed7836174af565b600101905060008167ffffffffffffffff811115615ef757615ef76180da565b6040519080825280601f01601f191660200182016040528015615f21576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f2b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ff6905b8290617591565b1561603657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261609590615fef565b156160d557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261613490615fef565b1561617457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161d390615fef565b806162385750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261623890615fef565b1561627857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d790615fef565b8061633c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633c90615fef565b1561637c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163db90615fef565b806164405750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261644090615fef565b1561648057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164df90615fef565b806165445750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654490615fef565b1561658457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e390615fef565b1561662357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668290615fef565b156166c257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672190615fef565b1561676157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c090615fef565b1561680057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685f90615fef565b1561689f57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fe90615fef565b806169635750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696390615fef565b156169a357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a0290615fef565b15616a4257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613aea9290602001618df4565b60608060005b8451811015616ae45781858281518110616a7b57616a7b6186a0565b6020026020010151604051602001616a949291906181f7565b604051602081830303815290604052915060018551616ab39190618cf0565b8114616adc5781604051602001616aca9190618f5d565b60405160208183030381529060405291505b600101616a5f565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616afd5790505090508381600081518110616b2857616b286186a0565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616b7c57616b7c6186a0565b60200260200101819052508181600281518110616b9b57616b9b6186a0565b6020908102919091010152949350505050565b6020808301518351835192840151600093616bcc92918491906175a5565b14159392505050565b60408051808201909152600080825260208201526000616c0784600001518560200151856000015186602001516176b6565b9050836020015181616c199190618cf0565b84518590616c28908390618cf0565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616c5c57508161391e565b6020808301519084015160019114616c835750815160208481015190840151829020919020145b8015616cb457825184518590616c9a908390618cf0565b9052508251602085018051616cb0908390618de1565b9052505b509192915050565b6040805180820190915260008082526020820152616cdb8383836177d6565b5092915050565b60606000826000015167ffffffffffffffff811115616d0357616d036180da565b6040519080825280601f01601f191660200182016040528015616d2d576020820181803683370190505b5090506000602082019050616cdb8185602001518660000151617881565b60606000616d57613d14565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616d7457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616dcf9061880d565b935060ff1681518110616de457616de46186a0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616e359190618f9e565b604051602081830303815290604052828280616e509061880d565b935060ff1681518110616e6557616e656186a0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616eb29061880d565b935060ff1681518110616ec757616ec76186a0565b602002602001018190525082604051602001616ee3919061873b565b604051602081830303815290604052828280616efe9061880d565b935060ff1681518110616f1357616f136186a0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616f609061880d565b935060ff1681518110616f7557616f756186a0565b6020026020010181905250616f8a87846178fb565b8282616f958161880d565b935060ff1681518110616faa57616faa6186a0565b6020908102919091010152855151156170565760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ffc8161880d565b935060ff1681518110617011576170116186a0565b602002602001018190525061702a8660000151846178fb565b82826170358161880d565b935060ff168151811061704a5761704a6186a0565b60200260200101819052505b8560800151156170c45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261709f8161880d565b935060ff16815181106170b4576170b46186a0565b602002602001018190525061712a565b841561712a5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171098161880d565b935060ff168151811061711e5761711e6186a0565b60200260200101819052505b604086015151156171c65760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171748161880d565b935060ff1681518110617189576171896186a0565b602002602001018190525085604001518282806171a59061880d565b935060ff16815181106171ba576171ba6186a0565b60200260200101819052505b8560600151156172305760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261720f8161880d565b935060ff1681518110617224576172246186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561724e5761724e6180da565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b8260ff168160ff1610156172da57838160ff16815181106172aa576172aa6186a0565b6020026020010151828260ff16815181106172c7576172c76186a0565b6020908102919091010152600101617287565b50979650505050505050565b604080518082019091526000808252602082015281518351101561730b57508161391e565b8151835160208501516000929161732191618de1565b61732b9190618cf0565b6020840151909150600190821461734c575082516020840151819020908220145b801561736757835185518690617363908390618cf0565b9052505b50929392505050565b600080826000015161739485600001518660200151866000015187602001516176b6565b61739e9190618de1565b90505b835160208501516173b29190618de1565b8111616cdb57816173c281618fe3565b92505082600001516173f98560200151836173dd9190618cf0565b86516173e99190618cf0565b83866000015187602001516176b6565b6174039190618de1565b90506173a1565b606060006174188484617370565b617423906001618de1565b67ffffffffffffffff81111561743b5761743b6180da565b60405190808252806020026020018201604052801561746e57816020015b60608152602001906001900390816174595790505b50905060005b81518110156156e35761748a6159058686616cbc565b82828151811061749c5761749c6186a0565b6020908102919091010152600101617474565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106174f8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617524576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061754257662386f26fc10000830492506010015b6305f5e100831061755a576305f5e100830492506008015b612710831061756e57612710830492506004015b60648310617580576064830492506002015b600a831061391e5760010192915050565b600061759d838361793b565b159392505050565b6000808584116176ac576020841161765857600084156175f05760016175cc866020618cf0565b6175d7906008618ffd565b6175e29060026190fb565b6175ec9190618cf0565b1990505b83518116856175ff8989618de1565b6176099190618cf0565b805190935082165b8181146176435787841161762b5787945050505050615314565b8361763581619107565b945050828451169050617611565b61764d8785618de1565b945050505050615314565b8383206176658588618cf0565b61766f9087618de1565b91505b8582106176aa578482208082036176975761768d8684618de1565b9350505050615314565b6176a2600184618cf0565b925050617672565b505b5092949350505050565b600083818685116177c1576020851161777057600085156177025760016176de876020618cf0565b6176e9906008618ffd565b6176f49060026190fb565b6176fe9190618cf0565b1990505b845181166000876177138b8b618de1565b61771d9190618cf0565b855190915083165b8281146177625781861061774a5761773d8b8b618de1565b9650505050505050615314565b8561775481618fe3565b965050838651169050617725565b859650505050505050615314565b508383206000905b6177828689618cf0565b82116177bf5785832080820361779e5783945050505050615314565b6177a9600185618de1565b93505081806177b790618fe3565b925050617778565b505b6177cb8787618de1565b979650505050505050565b6040805180820190915260008082526020820152600061780885600001518660200151866000015187602001516176b6565b6020808701805191860191909152519091506178249082618cf0565b8352845160208601516178379190618de1565b81036178465760008552617878565b835183516178549190618de1565b85518690617863908390618cf0565b90525083516178729082618de1565b60208601525b50909392505050565b602081106178b95781518352617898602084618de1565b92506178a5602083618de1565b91506178b2602082618cf0565b9050617881565b60001981156178e85760016178cf836020618cf0565b6178db906101006190fb565b6178e59190618cf0565b90505b9151835183169219169190911790915250565b606060006179098484613de7565b80516020808301516040519394506179239390910161911e565b60405160208183030381529060405291505092915050565b815181516000919081111561794e575081515b6020808501519084015160005b83811015617a0757825182518082146179d75760001960208710156179b657600184617988896020618cf0565b6179929190618de1565b61799d906008618ffd565b6179a89060026190fb565b6179b29190618cf0565b1990505b81811683821681810391146179d457975061391e9650505050505050565b50505b6179e2602086618de1565b94506179ef602085618de1565b93505050602081617a009190618de1565b905061795b565b50845186516144959190619176565b6112a68061919783390190565b61140b8061a43d83390190565b6117f98061b84883390190565b610d5e8061d04183390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617a8d617a92565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617a8d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617b445783516001600160a01b0316835260209384019390920191600101617b1d565b509095945050505050565b60005b83811015617b6a578181015183820152602001617b52565b50506000910152565b60008151808452617b8b816020860160208601617b4f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c6b848651617b73565b6020958601959094509290920191600101617c31565b509197505050602094850194929092019150600101617bc7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617cfb5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cbb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d716040880182617b73565b9050602082015191508681036020880152617d8c8183617ca7565b965050506020938401939190910190600101617d2d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e05858351617b73565b94506020938401939190910190600101617dcb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617e9b6040870182617ca7565b9550506020938401939190910190600101617e42565b600181811c90821680617ec557607f821691505b602082108103615be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f1057600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615bc66060830184617b73565b8281526040602082015260006153146040830184617b73565b6001600160a01b0385168152836020820152608060408201526000617f806080830185617b73565b905082606083015295945050505050565b602081526000613a176020830184617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082618009577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153146040830184617b73565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161806881601a850160208801617b4f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180a581601c840160208801617b4f565b01601c01949350505050565b6000602082840312156180c357600080fd5b81516001600160a01b0381168114613a1757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561812c5761812c6180da565b60405290565b60008067ffffffffffffffff84111561814d5761814d6180da565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561817c5761817c6180da565b60405283815290508082840185101561819457600080fd5b6156e3846020830185617b4f565b600082601f8301126181b357600080fd5b613a1783835160208501618132565b6000602082840312156181d457600080fd5b815167ffffffffffffffff8111156181eb57600080fd5b61391a848285016181a2565b60008351618209818460208801617b4f565b83519083019061821d818360208801617b4f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161825e81601a850160208801617b4f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161829b816033840160208801617b4f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a176080830184617b73565b60006020828403121561832a57600080fd5b815167ffffffffffffffff81111561834157600080fd5b8201601f8101841361835257600080fd5b61391a84825160208401618132565b60008551618373818460208a01617b4f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183ad816001840160208a01617b4f565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516183eb816002840160208901617b4f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161842d816002840160208801617b4f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184786040830184617b73565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156184c957600080fd5b81518015158114613a1757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161851181601f850160208701617b4f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061857e6040830184617b73565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185d06040830184617b73565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618647816014850160208701617b4f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061868e6040830185617b73565b8281036020840152613a138185617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618707816001850160208701617b4f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161874d818460208701617b4f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161880081604b850160208701617b4f565b91909101604b0192915050565b600060ff821660ff810361882357618823617fa4565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a176080830184617b73565b6000602082840312156188f057600080fd5b815167ffffffffffffffff81111561890757600080fd5b82016060818503121561891957600080fd5b618921618109565b81518060030b811461893257600080fd5b8152602082015167ffffffffffffffff81111561894e57600080fd5b61895a868285016181a2565b602083015250604082015167ffffffffffffffff81111561897a57600080fd5b618986868285016181a2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189f2816021850160208701617b4f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bde816021850160208801617b4f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1b81602e840160208801617b4f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618ce3816022850160208701617b4f565b9190910160220192915050565b8181038181111561391e5761391e617fa4565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d3b81600e850160208701617b4f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561391e5761391e617fa4565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e2c816018850160208801617b4f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e6981601c840160208801617b4f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f6f818460208701617b4f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fd681601c850160208701617b4f565b91909101601c0192915050565b60006000198203618ff657618ff6617fa4565b5060010190565b808202811582820484141761391e5761391e617fa4565b6001815b600184111561904f5780850481111561903357619033617fa4565b600184161561904157908102905b60019390931c928002619018565b935093915050565b6000826190665750600161391e565b816190735750600061391e565b81600181146190895760028114619093576190af565b600191505061391e565b60ff8411156190a4576190a4617fa4565b50506001821b61391e565b5060208310610133831016604e8410600b84101617156190d2575081810a61391e565b6190df6000198484619014565b80600019048211156190f3576190f3617fa4565b029392505050565b6000613a178383619057565b60008161911657619116617fa4565b506000190190565b60008351619130818460208801617b4f565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161916a816001840160208801617b4f565b01600101949350505050565b8181036000831280158383131683831282161715616cdb57616cdb617fa456fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220dc685615752e4c7a872eb50c41e61509eb0eff5d8bdd510c501cbd2c2e0ac2e664736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ddd48061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063d509b16c1161008c578063e20c9f7111610066578063e20c9f71146102a8578063fa7626d4146102b0578063fe574f84146102bd57600080fd5b8063d509b16c14610290578063dcf7d03714610298578063de1cb76c146102a057600080fd5b8063b5508aa9116100bd578063b5508aa914610268578063ba414fa614610270578063c19099721461028857600080fd5b8063916a17c61461024b578063b0464fdc1461026057600080fd5b80633f7286f41161013a578063828320141161011457806382832014146101f957806385226c811461020157806385f438c11461021657600080fd5b80633f7286f4146101d457806349346558146101dc57806366d9a9a0146101e457600080fd5b80632ade38801161016b5780632ade3880146101af5780633cba0107146101c45780633e5e3c23146101cc57600080fd5b80630a9254e4146101875780631ed7831c14610191575b600080fd5b61018f6102c5565b005b6101996109c4565b6040516101a69190617b03565b60405180910390f35b6101b7610a26565b6040516101a69190617b9f565b61018f610b68565b610199611343565b6101996113a3565b61018f611403565b6101ec6119f0565b6040516101a69190617d05565b61018f611b72565b610209611de4565b6040516101a69190617da3565b61023d7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101a6565b610253611eb4565b6040516101a69190617e1a565b610253611faf565b6102096120aa565b61027861217a565b60405190151581526020016101a6565b61018f61224e565b61018f6124d2565b61018f6128f2565b61018f612f39565b61019961366e565b601f546102789060ff1681565b61018f6136ce565b60258054307fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556026805461123490831617905560278054615678921682179055604051819061031a90617a16565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561034d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526027546025549251908616948101949094526044840192909252909216606482015261043e919060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052613905565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556027546025546040519293918216929116906104ca90617a23565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610506573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754602554604051938516949283169391831692169061056190617a30565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156105a5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050602480546027546023546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b505050506040516106ee90617a3d565b604051809103906000f08015801561070a573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109fe575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b48578382906000526020600020018054610abb90617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790617eb1565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b505050505081526020019060010190610a9c565b505050508152505081526020019060010190610a4a565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190617efe565b9050610c74816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190617efe565b9050610cf5816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610ddc916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610ff89089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561107257600080fd5b505af1158015611086573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110de92909116908a9089908b90600401617f58565b600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190617efe565b905061118e8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190617efe565b905061120f816000613924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190617efe565b90506112b6816000613924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132a9190617efe565b9050611337816000613924565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936114a493921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e59190617efe565b90506114f2816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190617efe565b9050611573816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161165a916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561171a57600080fd5b505af115801561172e573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced91506118599089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061193f92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190617efe565b905061118e816000613924565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000209060020201604051806040016040529081600082018054611a4790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7390617eb1565b8015611ac05780601f10611a9557610100808354040283529160200191611ac0565b820191906000526020600020905b815481529060010190602001808311611aa357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b5a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611b075790505b50505050508152505081526020019060010190611a14565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611d279190600401617f91565b600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611dad9290911690879086908890600401617f58565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5f578382906000526020600020018054611e2790617eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5390617eb1565b8015611ea05780601f10611e7557610100808354040283529160200191611ea0565b820191906000526020600020905b815481529060010190602001808311611e8357829003601f168201915b505050505081526020019060010190611e08565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f9757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f445790505b50505050508152505081526020019060010190611ed8565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561209257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161203f5790505b50505050508152505081526020019060010190611fd3565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5f5783829060005260206000200180546120ed90617eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461211990617eb1565b80156121665780601f1061213b57610100808354040283529160200191612166565b820191906000526020600020905b81548152906001019060200180831161214957829003601f168201915b5050505050815260200190600101906120ce565b60085460009060ff1615612192575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190617efe565b1415905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061244c9190600401617f91565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611dad9290911690879086908890600401617f58565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015612527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254b9190617efe565b9050612558816000613924565b6026546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612641916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561270157600080fd5b505af1158015612715573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127cd57600080fd5b505af11580156127e1573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401600060405180830381600087803b15801561285557600080fd5b505af1158015612869573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190617efe565b90506128eb8186613924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa1580156129cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f19190617efe565b90506129fe816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190617efe565b9050612a7f816000613924565b6020546040516001600160a01b039091166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612b66916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612c2657600080fd5b505af1158015612c3a573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612c78600289617fd3565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612d999089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e1357600080fd5b505af1158015612e27573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612e7f92909116908a9089908b90600401617f58565b600060405180830381600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190617efe565b905061118e81612f3460028a617fd3565b613924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff29190617efe565b9050612fff816000613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130739190617efe565b6020546040516001600160a01b039091166024820152604481018790526064810186905290915060009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161315d916001600160a01b0391909116906000908690600401617f17565b600060405180830381600087803b15801561317757600080fd5b505af115801561318b573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061327492506001600160a01b0390911690879061800e565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330a57600080fd5b505af115801561331e573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790613369908a908990617f3f565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156133ff57600080fd5b505af1158015613413573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506134589089908890617f3f565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935061353e92909116908a9089908b90600401617f58565b600060405180830381600087803b15801561355857600080fd5b505af115801561356c573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190617efe565b90506135ee8188613924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561363e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136629190617efe565b905061120f8185613924565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1c576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109fe575050505050905090565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561374857600080fd5b505af115801561375c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506138479190600401617f91565b600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138e957600080fd5b505af11580156138fd573d6000803e3d6000fd5b505050505050565b600061390f617a4a565b61391a8484836139a3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561398f57600080fd5b505afa1580156138fd573d6000803e3d6000fd5b6000806139b08584613a1e565b9050613a136040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016139fe92919061800e565b60405160208183030381529060405285613a2a565b9150505b9392505050565b6000613a178383613a58565b60c08101515160009015613a4e57613a4784848460c00151613a73565b9050613a17565b613a478484613c19565b6000613a648383613d04565b613a1783836020015184613a2a565b600080613a7e613d14565b90506000613a8c8683613de7565b90506000613aa3826060015183602001518561428d565b90506000613ab38383898961449f565b90506000613ac08261531c565b602081015181519192509060030b15613b3357898260400151604051602001613aea929190618030565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613b2a91600401617f91565b60405180910390fd5b6000613b766040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016154eb565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613bc9908490600401617f91565b602060405180830381865afa158015613be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0a91906180b1565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613c6e908790600401617f91565b600060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb391908101906181c2565b90506000613ce18285604051602001613ccd9291906181f7565b6040516020818303038152906040526156eb565b90506001600160a01b03811661391a578484604051602001613aea929190618226565b613d10828260006156fe565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613d9b9084906004016182d1565b600060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613de09190810190618318565b9250505090565b613e196040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613e646040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613e6d85615801565b60208201526000613e7d86615be6565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ee79190810190618318565b86838560200151604051602001613f019493929190618361565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613f59908590600401617f91565b600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190618318565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613fe6908490600401618465565b602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402791906184b7565b61403c5781604051602001613aea91906184d9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061408190849060040161856b565b600060405180830381865afa15801561409e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c69190810190618318565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061410d9084906004016185bd565b602060405180830381865afa15801561412a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061414e91906184b7565b156141e3576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906141989084906004016185bd565b600060405180830381865afa1580156141b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141dd9190810190618318565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614208919061860f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161423492919061867b565b600060405180830381865afa158015614251573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142799190810190618318565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816142a95790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614309576143096186a0565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061435d5761435d6186a0565b60200260200101819052508460405160200161437991906186cf565b6040516020818303038152906040528160028151811061439b5761439b6186a0565b6020026020010181905250826040516020016143b7919061873b565b604051602081830303815290604052816003815181106143d9576143d96186a0565b602002602001018190525060006143ef8261531c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144809060408051808201825260008082526020918201528151808301909252845182528085019082015290615e69565b6144955785604051602001613aea919061877c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156144ef565b511590565b614663578260200151156145ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613b2a565b8260c0015115614663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613b2a565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161467c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806146d79061880d565b935060ff16815181106146ec576146ec6186a0565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161473d919061882c565b6040516020818303038152906040528282806147589061880d565b935060ff168151811061476d5761476d6186a0565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806147ba9061880d565b935060ff16815181106147cf576147cf6186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061481c9061880d565b935060ff1681518110614831576148316186a0565b6020026020010181905250876020015182828061484d9061880d565b935060ff1681518110614862576148626186a0565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806148af9061880d565b935060ff16815181106148c4576148c46186a0565b6020908102919091010152875182826148dc8161880d565b935060ff16815181106148f1576148f16186a0565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061493e9061880d565b935060ff1681518110614953576149536186a0565b602002602001018190525061496746615eca565b82826149728161880d565b935060ff1681518110614987576149876186a0565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806149d49061880d565b935060ff16815181106149e9576149e96186a0565b602002602001018190525086828280614a019061880d565b935060ff1681518110614a1657614a166186a0565b6020908102919091010152855115614b3d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614a678161880d565b935060ff1681518110614a7c57614a7c6186a0565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614acc908990600401617f91565b600060405180830381865afa158015614ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b119190810190618318565b8282614b1c8161880d565b935060ff1681518110614b3157614b316186a0565b60200260200101819052505b846020015115614c0d5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614b868161880d565b935060ff1681518110614b9b57614b9b6186a0565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614be89061880d565b935060ff1681518110614bfd57614bfd6186a0565b6020026020010181905250614dd4565b614c456144ea8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614cd85760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614c888161880d565b935060ff1681518110614c9d57614c9d6186a0565b60200260200101819052508460a00151604051602001614cbd91906186cf565b604051602081830303815290604052828280614be89061880d565b8460c00151158015614d1b575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d1990511590565b155b15614dd45760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5f8161880d565b935060ff1681518110614d7457614d746186a0565b6020026020010181905250614d8888615f6a565b604051602001614d9891906186cf565b604051602081830303815290604052828280614db39061880d565b935060ff1681518110614dc857614dc86186a0565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e0890511590565b614e9d5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614e4b8161880d565b935060ff1681518110614e6057614e606186a0565b60200260200101819052508460400151828280614e7c9061880d565b935060ff1681518110614e9157614e916186a0565b60200260200101819052505b606085015115614fbe5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614ee68161880d565b935060ff1681518110614efb57614efb6186a0565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614f6a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f929190810190618318565b8282614f9d8161880d565b935060ff1681518110614fb257614fb26186a0565b60200260200101819052505b60e085015151156150655760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150088161880d565b935060ff168151811061501d5761501d6186a0565b60200260200101819052506150398560e0015160000151615eca565b82826150448161880d565b935060ff1681518110615059576150596186a0565b60200260200101819052505b60e0850151602001511561510f5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826150b28161880d565b935060ff16815181106150c7576150c76186a0565b60200260200101819052506150e38560e0015160200151615eca565b82826150ee8161880d565b935060ff1681518110615103576151036186a0565b60200260200101819052505b60e085015160400151156151b95760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261515c8161880d565b935060ff1681518110615171576151716186a0565b602002602001018190525061518d8560e0015160400151615eca565b82826151988161880d565b935060ff16815181106151ad576151ad6186a0565b60200260200101819052505b60e085015160600151156152635760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152068161880d565b935060ff168151811061521b5761521b6186a0565b60200260200101819052506152378560e0015160600151615eca565b82826152428161880d565b935060ff1681518110615257576152576186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615281576152816180da565b6040519080825280602002602001820160405280156152b457816020015b606081526020019060019003908161529f5790505b50905060005b8260ff168160ff16101561530d57838160ff16815181106152dd576152dd6186a0565b6020026020010151828260ff16815181106152fa576152fa6186a0565b60209081029190910101526001016152ba565b5093505050505b949350505050565b6153436040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916153c991869101618897565b600060405180830381865afa1580156153e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261540e9190810190618318565b9050600061541c8683616a59565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161544c9190617da3565b6000604051808303816000875af115801561546b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261549391908101906188de565b805190915060030b158015906154ac5750602081015151155b80156154bb5750604081015151155b1561449557816000815181106154d3576154d36186a0565b6020026020010151604051602001613aea9190618994565b606060006155208560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155579082905b90616bae565b156156b45760006155d4826155ce846155c861559a8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616bd5565b90616c37565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615638908290616bae565b156156a257604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261569f905b8290616cbc565b90505b6156ab81616ce2565b92505050613a17565b82156156cd578484604051602001613aea929190618b80565b5050604080516020810190915260008152613a17565b509392505050565b6000808251602084016000f09392505050565b8160a001511561570d57505050565b600061571a848484616d4b565b905060006157278261531c565b602081015181519192509060030b1580156157c35750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c390604080518082018252600080825260209182015281518083019092528451825280850190820152615551565b156157d057505050505050565b604082015151156157f0578160400151604051602001613aea9190618c27565b80604051602001613aea9190618c85565b606060006158368360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061589b905b8290615e69565b1561590a57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a17906159059083906172e6565b616ce2565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261596c905b8290617370565b600103615a3957604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159d290615698565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a1790615905905b8390616cbc565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a9890615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b0090839061740a565b905060008160018351615b139190618cf0565b81518110615b2357615b236186a0565b60200260200101519050615bc6615905615b996040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906172e6565b95945050505050565b82604051602001613aea9190618d03565b50919050565b60606000615c1b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c7d90615894565b15615c8b57613a1781616ce2565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cea90615965565b600103615d5457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a179061590590615a32565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615db390615894565b15615bcf57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e1b90839061740a565b9050600181511115615e57578060028251615e369190618cf0565b81518110615e4657615e466186a0565b602002602001015192505050919050565b5082604051602001613aea9190618d03565b805182516000911115615e7e5750600061391e565b81518351602085015160009291615e9491618de1565b615e9e9190618cf0565b905082602001518103615eb557600191505061391e565b82516020840151819020912014905092915050565b60606000615ed7836174af565b600101905060008167ffffffffffffffff811115615ef757615ef76180da565b6040519080825280601f01601f191660200182016040528015615f21576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615f2b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ff6905b8290617591565b1561603657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261609590615fef565b156160d557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261613490615fef565b1561617457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161d390615fef565b806162385750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261623890615fef565b1561627857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d790615fef565b8061633c5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633c90615fef565b1561637c57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163db90615fef565b806164405750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261644090615fef565b1561648057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164df90615fef565b806165445750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261654490615fef565b1561658457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165e390615fef565b1561662357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261668290615fef565b156166c257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261672190615fef565b1561676157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167c090615fef565b1561680057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685f90615fef565b1561689f57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fe90615fef565b806169635750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696390615fef565b156169a357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a0290615fef565b15616a4257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613aea9290602001618df4565b60608060005b8451811015616ae45781858281518110616a7b57616a7b6186a0565b6020026020010151604051602001616a949291906181f7565b604051602081830303815290604052915060018551616ab39190618cf0565b8114616adc5781604051602001616aca9190618f5d565b60405160208183030381529060405291505b600101616a5f565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616afd5790505090508381600081518110616b2857616b286186a0565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616b7c57616b7c6186a0565b60200260200101819052508181600281518110616b9b57616b9b6186a0565b6020908102919091010152949350505050565b6020808301518351835192840151600093616bcc92918491906175a5565b14159392505050565b60408051808201909152600080825260208201526000616c0784600001518560200151856000015186602001516176b6565b9050836020015181616c199190618cf0565b84518590616c28908390618cf0565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616c5c57508161391e565b6020808301519084015160019114616c835750815160208481015190840151829020919020145b8015616cb457825184518590616c9a908390618cf0565b9052508251602085018051616cb0908390618de1565b9052505b509192915050565b6040805180820190915260008082526020820152616cdb8383836177d6565b5092915050565b60606000826000015167ffffffffffffffff811115616d0357616d036180da565b6040519080825280601f01601f191660200182016040528015616d2d576020820181803683370190505b5090506000602082019050616cdb8185602001518660000151617881565b60606000616d57613d14565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616d7457905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616dcf9061880d565b935060ff1681518110616de457616de46186a0565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616e359190618f9e565b604051602081830303815290604052828280616e509061880d565b935060ff1681518110616e6557616e656186a0565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616eb29061880d565b935060ff1681518110616ec757616ec76186a0565b602002602001018190525082604051602001616ee3919061873b565b604051602081830303815290604052828280616efe9061880d565b935060ff1681518110616f1357616f136186a0565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616f609061880d565b935060ff1681518110616f7557616f756186a0565b6020026020010181905250616f8a87846178fb565b8282616f958161880d565b935060ff1681518110616faa57616faa6186a0565b6020908102919091010152855151156170565760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ffc8161880d565b935060ff1681518110617011576170116186a0565b602002602001018190525061702a8660000151846178fb565b82826170358161880d565b935060ff168151811061704a5761704a6186a0565b60200260200101819052505b8560800151156170c45760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261709f8161880d565b935060ff16815181106170b4576170b46186a0565b602002602001018190525061712a565b841561712a5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171098161880d565b935060ff168151811061711e5761711e6186a0565b60200260200101819052505b604086015151156171c65760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171748161880d565b935060ff1681518110617189576171896186a0565b602002602001018190525085604001518282806171a59061880d565b935060ff16815181106171ba576171ba6186a0565b60200260200101819052505b8560600151156172305760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261720f8161880d565b935060ff1681518110617224576172246186a0565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561724e5761724e6180da565b60405190808252806020026020018201604052801561728157816020015b606081526020019060019003908161726c5790505b50905060005b8260ff168160ff1610156172da57838160ff16815181106172aa576172aa6186a0565b6020026020010151828260ff16815181106172c7576172c76186a0565b6020908102919091010152600101617287565b50979650505050505050565b604080518082019091526000808252602082015281518351101561730b57508161391e565b8151835160208501516000929161732191618de1565b61732b9190618cf0565b6020840151909150600190821461734c575082516020840151819020908220145b801561736757835185518690617363908390618cf0565b9052505b50929392505050565b600080826000015161739485600001518660200151866000015187602001516176b6565b61739e9190618de1565b90505b835160208501516173b29190618de1565b8111616cdb57816173c281618fe3565b92505082600001516173f98560200151836173dd9190618cf0565b86516173e99190618cf0565b83866000015187602001516176b6565b6174039190618de1565b90506173a1565b606060006174188484617370565b617423906001618de1565b67ffffffffffffffff81111561743b5761743b6180da565b60405190808252806020026020018201604052801561746e57816020015b60608152602001906001900390816174595790505b50905060005b81518110156156e35761748a6159058686616cbc565b82828151811061749c5761749c6186a0565b6020908102919091010152600101617474565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106174f8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617524576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061754257662386f26fc10000830492506010015b6305f5e100831061755a576305f5e100830492506008015b612710831061756e57612710830492506004015b60648310617580576064830492506002015b600a831061391e5760010192915050565b600061759d838361793b565b159392505050565b6000808584116176ac576020841161765857600084156175f05760016175cc866020618cf0565b6175d7906008618ffd565b6175e29060026190fb565b6175ec9190618cf0565b1990505b83518116856175ff8989618de1565b6176099190618cf0565b805190935082165b8181146176435787841161762b5787945050505050615314565b8361763581619107565b945050828451169050617611565b61764d8785618de1565b945050505050615314565b8383206176658588618cf0565b61766f9087618de1565b91505b8582106176aa578482208082036176975761768d8684618de1565b9350505050615314565b6176a2600184618cf0565b925050617672565b505b5092949350505050565b600083818685116177c1576020851161777057600085156177025760016176de876020618cf0565b6176e9906008618ffd565b6176f49060026190fb565b6176fe9190618cf0565b1990505b845181166000876177138b8b618de1565b61771d9190618cf0565b855190915083165b8281146177625781861061774a5761773d8b8b618de1565b9650505050505050615314565b8561775481618fe3565b965050838651169050617725565b859650505050505050615314565b508383206000905b6177828689618cf0565b82116177bf5785832080820361779e5783945050505050615314565b6177a9600185618de1565b93505081806177b790618fe3565b925050617778565b505b6177cb8787618de1565b979650505050505050565b6040805180820190915260008082526020820152600061780885600001518660200151866000015187602001516176b6565b6020808701805191860191909152519091506178249082618cf0565b8352845160208601516178379190618de1565b81036178465760008552617878565b835183516178549190618de1565b85518690617863908390618cf0565b90525083516178729082618de1565b60208601525b50909392505050565b602081106178b95781518352617898602084618de1565b92506178a5602083618de1565b91506178b2602082618cf0565b9050617881565b60001981156178e85760016178cf836020618cf0565b6178db906101006190fb565b6178e59190618cf0565b90505b9151835183169219169190911790915250565b606060006179098484613de7565b80516020808301516040519394506179239390910161911e565b60405160208183030381529060405291505092915050565b815181516000919081111561794e575081515b6020808501519084015160005b83811015617a0757825182518082146179d75760001960208710156179b657600184617988896020618cf0565b6179929190618de1565b61799d906008618ffd565b6179a89060026190fb565b6179b29190618cf0565b1990505b81811683821681810391146179d457975061391e9650505050505050565b50505b6179e2602086618de1565b94506179ef602085618de1565b93505050602081617a009190618de1565b905061795b565b50845186516144959190619176565b6112a68061919783390190565b61140b8061a43d83390190565b6117f98061b84883390190565b610d5e8061d04183390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617a8d617a92565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617a8d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617b445783516001600160a01b0316835260209384019390920191600101617b1d565b509095945050505050565b60005b83811015617b6a578181015183820152602001617b52565b50506000910152565b60008151808452617b8b816020860160208601617b4f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c6b848651617b73565b6020958601959094509290920191600101617c31565b509197505050602094850194929092019150600101617bc7565b50929695505050505050565b600081518084526020840193506020830160005b82811015617cfb5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cbb565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d716040880182617b73565b9050602082015191508681036020880152617d8c8183617ca7565b965050506020938401939190910190600101617d2d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e05858351617b73565b94506020938401939190910190600101617dcb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617e9b6040870182617ca7565b9550506020938401939190910190600101617e42565b600181811c90821680617ec557607f821691505b602082108103615be0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617f1057600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615bc66060830184617b73565b8281526040602082015260006153146040830184617b73565b6001600160a01b0385168152836020820152608060408201526000617f806080830185617b73565b905082606083015295945050505050565b602081526000613a176020830184617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082618009577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006153146040830184617b73565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161806881601a850160208801617b4f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516180a581601c840160208801617b4f565b01601c01949350505050565b6000602082840312156180c357600080fd5b81516001600160a01b0381168114613a1757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561812c5761812c6180da565b60405290565b60008067ffffffffffffffff84111561814d5761814d6180da565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561817c5761817c6180da565b60405283815290508082840185101561819457600080fd5b6156e3846020830185617b4f565b600082601f8301126181b357600080fd5b613a1783835160208501618132565b6000602082840312156181d457600080fd5b815167ffffffffffffffff8111156181eb57600080fd5b61391a848285016181a2565b60008351618209818460208801617b4f565b83519083019061821d818360208801617b4f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161825e81601a850160208801617b4f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161829b816033840160208801617b4f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a176080830184617b73565b60006020828403121561832a57600080fd5b815167ffffffffffffffff81111561834157600080fd5b8201601f8101841361835257600080fd5b61391a84825160208401618132565b60008551618373818460208a01617b4f565b7f2f0000000000000000000000000000000000000000000000000000000000000090830190815285516183ad816001840160208a01617b4f565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516183eb816002840160208901617b4f565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161842d816002840160208801617b4f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184786040830184617b73565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156184c957600080fd5b81518015158114613a1757600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161851181601f850160208701617b4f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061857e6040830184617b73565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006185d06040830184617b73565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618647816014850160208701617b4f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061868e6040830185617b73565b8281036020840152613a138185617b73565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618707816001850160208701617b4f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161874d818460208701617b4f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161880081604b850160208701617b4f565b91909101604b0192915050565b600060ff821660ff810361882357618823617fa4565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a176080830184617b73565b6000602082840312156188f057600080fd5b815167ffffffffffffffff81111561890757600080fd5b82016060818503121561891957600080fd5b618921618109565b81518060030b811461893257600080fd5b8152602082015167ffffffffffffffff81111561894e57600080fd5b61895a868285016181a2565b602083015250604082015167ffffffffffffffff81111561897a57600080fd5b618986868285016181a2565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516189f2816021850160208701617b4f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618bde816021850160208801617b4f565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618c1b81602e840160208801617b4f565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161888a816029850160208701617b4f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618ce3816022850160208701617b4f565b9190910160220192915050565b8181038181111561391e5761391e617fa4565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618d3b81600e850160208701617b4f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561391e5761391e617fa4565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618e2c816018850160208801617b4f565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618e6981601c840160208801617b4f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618f6f818460208701617b4f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618fd681601c850160208701617b4f565b91909101601c0192915050565b60006000198203618ff657618ff6617fa4565b5060010190565b808202811582820484141761391e5761391e617fa4565b6001815b600184111561904f5780850481111561903357619033617fa4565b600184161561904157908102905b60019390931c928002619018565b935093915050565b6000826190665750600161391e565b816190735750600061391e565b81600181146190895760028114619093576190af565b600191505061391e565b60ff8411156190a4576190a4617fa4565b50506001821b61391e565b5060208310610133831016604e8410600b84101617156190d2575081810a61391e565b6190df6000198484619014565b80600019048211156190f3576190f3617fa4565b029392505050565b6000613a178383619057565b60008161911657619116617fa4565b506000190190565b60008351619130818460208801617b4f565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161916a816001840160208801617b4f565b01600101949350505050565b8181036000831280158383131683831282161715616cdb57616cdb617fa456fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a003360c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220e80db3877e97661ce0a634825011e5fe1a372a9e5b3bab0542217051c161d99964736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20.t.sol/zrc20test.go b/v2/pkg/zrc20.t.sol/zrc20test.go index bdc0a873..5f114e7c 100644 --- a/v2/pkg/zrc20.t.sol/zrc20test.go +++ b/v2/pkg/zrc20.t.sol/zrc20test.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZRC20TestMetaData contains all meta data concerning the ZRC20Test contract. var ZRC20TestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testBurn\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testBurnFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFrom\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFromFailsIfSenderIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGasLimitFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotFungible\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasCoinNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawGasFeeFailsIfGasPriceNotSetForChainId\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testZRC20BasicInfo\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d02d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061811a565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181b6565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061831c565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ba565b610325612323565b6040516102759190618431565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e6132bc565b61024e613499565b61024e61374e565b61024e6138aa565b610268613b86565b61024e613be6565b61024e613d5e565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061803a565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e71565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184e4565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618047565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618054565b610845969594939291906184ff565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185f4565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185f4565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618616565b9050610dfc600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185f4565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f9061862f565b80601f016020809104026020016040519081016040528092919081815260200182805461109b9061862f565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184e4565b613211613f18565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061867c565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618616565b613e90565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a9061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546119669061862f565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618616565b9050611b04600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618616565b9050611d47600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185f4565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185f4565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618616565b9050610fd58282613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618616565b9050611fb1620186a082613e90565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185f4565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618616565b905061216262030d4082613e90565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546122969061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061862f565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618770565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618770565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187b9565b905061262360128260ff16613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618616565b90506104d4620186a082613e90565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d49061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546129009061862f565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618616565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e319190618616565b9050612e40620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190618616565b9050612ec8620186a082613e90565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190618616565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906185f4565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613088919061c350906038016187dc565b6020604051808303816000875af11580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb91906185f4565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e9190618616565b905061317e8561316e888561882d565b613178919061882d565b82613e90565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f9190618616565b905061322b866132218961c350618840565b6131789190618840565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190618616565b90506132b261c35082613e90565b5050505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185f4565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b15801561358b57600080fd5b505af115801561359f573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561361557600080fd5b505af1158015613629573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613721919061867c565b601f5491935091506137419061010090046001600160a01b031683613f18565b6104d4613178848661882d565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137c057600080fd5b505af11580156137d4573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393b9190618616565b905061394a620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c39190618616565b90506139d2620186a082613e90565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906185f4565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190618616565b9050613aff61c35082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b789190618616565b90506104d461c35082613e90565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c5857600080fd5b505af1158015613c6c573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df09190618616565b9050613dfd600082613e90565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e7b618061565b613e86848483613fcb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613efc57600080fd5b505afa158015613f10573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ee4565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ee49085908590600401618853565b600080613fd88584614046565b905061403b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614026929190618878565b60405160208183030381529060405285614052565b9150505b9392505050565b600061403f8383614080565b60c081015151600090156140765761406f84848460c0015161409b565b905061403f565b61406f8484614241565b600061408c838361432c565b61403f83836020015184614052565b6000806140a6614338565b905060006140b4868361440b565b905060006140cb82606001518360200151856148b1565b905060006140db83838989614ac3565b905060006140e882615940565b602081015181519192509060030b1561415b5789826040015160405160200161411292919061889a565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141529160040161891b565b60405180910390fd5b600061419e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b0f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141f190849060040161891b565b602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423291906184e4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061429690879060040161891b565b600060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142db919081019061894e565b9050600061430982856040516020016142f5929190618983565b604051602081830303815290604052615d0f565b90506001600160a01b038116613e865784846040516020016141129291906189b2565b61216282826000615d22565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143bf908490600401618a5d565b600060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144049190810190618770565b9250505090565b61443d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144886040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61449185615e25565b602082015260006144a18661620a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450b9190810190618770565b868385602001516040516020016145259493929190618aa4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061457d90859060040161891b565b600060405180830381865afa15801561459a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145c29190810190618770565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061460a908490600401618ba8565b602060405180830381865afa158015614627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464b91906185f4565b61466057816040516020016141129190618bfa565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146a5908490600401618c8c565b600060405180830381865afa1580156146c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ea9190810190618770565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614731908490600401618cde565b602060405180830381865afa15801561474e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477291906185f4565b15614807576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147bc908490600401618cde565b600060405180830381865afa1580156147d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148019190810190618770565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161482c9190618d30565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614858929190618853565b600060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261489d9190810190618770565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816148cd5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061492d5761492d618d9c565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061498157614981618d9c565b60200260200101819052508460405160200161499d9190618dcb565b604051602081830303815290604052816002815181106149bf576149bf618d9c565b6020026020010181905250826040516020016149db9190618e37565b604051602081830303815290604052816003815181106149fd576149fd618d9c565b60200260200101819052506000614a1382615940565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614aa4906040805180820182526000808252602091820152815180830190925284518252808501908201529061648d565b614ab957856040516020016141129190618e78565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b13565b511590565b614c8757826020015115614bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614152565b8260c0015115614c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614152565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614ca057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614cfb90618f09565b935060ff1681518110614d1057614d10618d9c565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d619190618f28565b604051602081830303815290604052828280614d7c90618f09565b935060ff1681518110614d9157614d91618d9c565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614dde90618f09565b935060ff1681518110614df357614df3618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e4090618f09565b935060ff1681518110614e5557614e55618d9c565b60200260200101819052508760200151828280614e7190618f09565b935060ff1681518110614e8657614e86618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ed390618f09565b935060ff1681518110614ee857614ee8618d9c565b602090810291909101015287518282614f0081618f09565b935060ff1681518110614f1557614f15618d9c565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f6290618f09565b935060ff1681518110614f7757614f77618d9c565b6020026020010181905250614f8b466164ee565b8282614f9681618f09565b935060ff1681518110614fab57614fab618d9c565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614ff890618f09565b935060ff168151811061500d5761500d618d9c565b60200260200101819052508682828061502590618f09565b935060ff168151811061503a5761503a618d9c565b60209081029190910101528551156151615760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261508b81618f09565b935060ff16815181106150a0576150a0618d9c565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150f090899060040161891b565b600060405180830381865afa15801561510d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151359190810190618770565b828261514081618f09565b935060ff168151811061515557615155618d9c565b60200260200101819052505b8460200151156152315760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151aa81618f09565b935060ff16815181106151bf576151bf618d9c565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061520c90618f09565b935060ff168151811061522157615221618d9c565b60200260200101819052506153f8565b615269614b0e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152fc5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152ac81618f09565b935060ff16815181106152c1576152c1618d9c565b60200260200101819052508460a001516040516020016152e19190618dcb565b60405160208183030381529060405282828061520c90618f09565b8460c0015115801561533f57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261533d90511590565b155b156153f85760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261538381618f09565b935060ff168151811061539857615398618d9c565b60200260200101819052506153ac8861658e565b6040516020016153bc9190618dcb565b6040516020818303038152906040528282806153d790618f09565b935060ff16815181106153ec576153ec618d9c565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261542c90511590565b6154c15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261546f81618f09565b935060ff168151811061548457615484618d9c565b602002602001018190525084604001518282806154a090618f09565b935060ff16815181106154b5576154b5618d9c565b60200260200101819052505b6060850151156155e25760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261550a81618f09565b935060ff168151811061551f5761551f618d9c565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561558e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155b69190810190618770565b82826155c181618f09565b935060ff16815181106155d6576155d6618d9c565b60200260200101819052505b60e085015151156156895760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261562c81618f09565b935060ff168151811061564157615641618d9c565b602002602001018190525061565d8560e00151600001516164ee565b828261566881618f09565b935060ff168151811061567d5761567d618d9c565b60200260200101819052505b60e085015160200151156157335760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156d681618f09565b935060ff16815181106156eb576156eb618d9c565b60200260200101819052506157078560e00151602001516164ee565b828261571281618f09565b935060ff168151811061572757615727618d9c565b60200260200101819052505b60e085015160400151156157dd5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261578081618f09565b935060ff168151811061579557615795618d9c565b60200260200101819052506157b18560e00151604001516164ee565b82826157bc81618f09565b935060ff16815181106157d1576157d1618d9c565b60200260200101819052505b60e085015160600151156158875760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261582a81618f09565b935060ff168151811061583f5761583f618d9c565b602002602001018190525061585b8560e00151606001516164ee565b828261586681618f09565b935060ff168151811061587b5761587b618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158a5576158a56186a8565b6040519080825280602002602001820160405280156158d857816020015b60608152602001906001900390816158c35790505b50905060005b8260ff168160ff16101561593157838160ff168151811061590157615901618d9c565b6020026020010151828260ff168151811061591e5761591e618d9c565b60209081029190910101526001016158de565b5093505050505b949350505050565b6159676040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159ed91869101618f93565b600060405180830381865afa158015615a0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a329190810190618770565b90506000615a40868361707d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a7091906183ba565b6000604051808303816000875af1158015615a8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ab79190810190618fda565b805190915060030b15801590615ad05750602081015151155b8015615adf5750604081015151155b15614ab95781600081518110615af757615af7618d9c565b60200260200101516040516020016141129190619090565b60606000615b448560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b7b9082905b906171d2565b15615cd8576000615bf882615bf284615bec615bbe8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171f9565b9061725b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c5c9082906171d2565b15615cc657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cc3905b82906172e0565b90505b615ccf81617306565b9250505061403f565b8215615cf157848460405160200161411292919061927c565b505060408051602081019091526000815261403f565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d3157505050565b6000615d3e84848461736f565b90506000615d4b82615940565b602081015181519192509060030b158015615de75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615de790604080518082018252600080825260209182015281518083019092528451825280850190820152615b75565b15615df457505050505050565b60408201515115615e145781604001516040516020016141129190619323565b806040516020016141129190619381565b60606000615e5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ebf905b829061648d565b15615f2e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990839061790a565b617306565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f90905b8290617994565b60010361605d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff690615cbc565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f29905b83906172e0565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bc90615eb8565b156161f357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616124908390617a2e565b9050600081600183516161379190618840565b8151811061614757616147618d9c565b602002602001015190506161ea615f296161bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061790a565b95945050505050565b8260405160200161411291906193ec565b50919050565b6060600061623f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162a190615eb8565b156162af5761403f81617306565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261630e90615f89565b60010361637857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990616056565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d790615eb8565b156161f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061643f908390617a2e565b905060018151111561647b57806002825161645a9190618840565b8151811061646a5761646a618d9c565b602002602001015192505050919050565b508260405160200161411291906193ec565b8051825160009111156164a257506000613e8a565b815183516020850151600092916164b89161882d565b6164c29190618840565b9050826020015181036164d9576001915050613e8a565b82516020840151819020912014905092915050565b606060006164fb83617ad3565b600101905060008167ffffffffffffffff81111561651b5761651b6186a8565b6040519080825280601f01601f191660200182016040528015616545576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461654f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161661a905b8290617bb5565b1561665a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b990616613565b156166f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261675890616613565b1561679857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f790616613565b8061685c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685c90616613565b1561689c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fb90616613565b806169605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696090616613565b156169a057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ff90616613565b80616a645750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6490616613565b15616aa457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b0390616613565b80616b685750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b6890616613565b15616ba857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c0790616613565b15616c4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ca690616613565b15616ce657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d4590616613565b15616d8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616de490616613565b15616e2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e8390616613565b15616ec357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f2290616613565b80616f875750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f8790616613565b15616fc757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261702690616613565b1561706657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161411292906020016194ca565b60608060005b8451811015617108578185828151811061709f5761709f618d9c565b60200260200101516040516020016170b8929190618983565b6040516020818303038152906040529150600185516170d79190618840565b811461710057816040516020016170ee9190619633565b60405160208183030381529060405291505b600101617083565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617121579050509050838160008151811061714c5761714c618d9c565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171a0576171a0618d9c565b602002602001018190525081816002815181106171bf576171bf618d9c565b6020908102919091010152949350505050565b60208083015183518351928401516000936171f09291849190617bc9565b14159392505050565b6040805180820190915260008082526020820152600061722b8460000151856020015185600001518660200151617cda565b905083602001518161723d9190618840565b8451859061724c908390618840565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617280575081613e8a565b60208083015190840151600191146172a75750815160208481015190840151829020919020145b80156172d8578251845185906172be908390618840565b90525082516020850180516172d490839061882d565b9052505b509192915050565b60408051808201909152600080825260208201526172ff838383617dfa565b5092915050565b60606000826000015167ffffffffffffffff811115617327576173276186a8565b6040519080825280601f01601f191660200182016040528015617351576020820181803683370190505b50905060006020820190506172ff8185602001518660000151617ea5565b6060600061737b614338565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161739857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173f390618f09565b935060ff168151811061740857617408618d9c565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016174599190619674565b60405160208183030381529060405282828061747490618f09565b935060ff168151811061748957617489618d9c565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174d690618f09565b935060ff16815181106174eb576174eb618d9c565b6020026020010181905250826040516020016175079190618e37565b60405160208183030381529060405282828061752290618f09565b935060ff168151811061753757617537618d9c565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061758490618f09565b935060ff168151811061759957617599618d9c565b60200260200101819052506175ae8784617f1f565b82826175b981618f09565b935060ff16815181106175ce576175ce618d9c565b60209081029190910101528551511561767a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261762081618f09565b935060ff168151811061763557617635618d9c565b602002602001018190525061764e866000015184617f1f565b828261765981618f09565b935060ff168151811061766e5761766e618d9c565b60200260200101819052505b8560800151156176e85760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176c381618f09565b935060ff16815181106176d8576176d8618d9c565b602002602001018190525061774e565b841561774e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261772d81618f09565b935060ff168151811061774257617742618d9c565b60200260200101819052505b604086015151156177ea5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261779881618f09565b935060ff16815181106177ad576177ad618d9c565b602002602001018190525085604001518282806177c990618f09565b935060ff16815181106177de576177de618d9c565b60200260200101819052505b8560600151156178545760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261783381618f09565b935060ff168151811061784857617848618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617872576178726186a8565b6040519080825280602002602001820160405280156178a557816020015b60608152602001906001900390816178905790505b50905060005b8260ff168160ff1610156178fe57838160ff16815181106178ce576178ce618d9c565b6020026020010151828260ff16815181106178eb576178eb618d9c565b60209081029190910101526001016178ab565b50979650505050505050565b604080518082019091526000808252602082015281518351101561792f575081613e8a565b815183516020850151600092916179459161882d565b61794f9190618840565b60208401519091506001908214617970575082516020840151819020908220145b801561798b57835185518690617987908390618840565b9052505b50929392505050565b60008082600001516179b88560000151866020015186600001518760200151617cda565b6179c2919061882d565b90505b835160208501516179d6919061882d565b81116172ff57816179e6816196b9565b9250508260000151617a1d856020015183617a019190618840565b8651617a0d9190618840565b8386600001518760200151617cda565b617a27919061882d565b90506179c5565b60606000617a3c8484617994565b617a4790600161882d565b67ffffffffffffffff811115617a5f57617a5f6186a8565b604051908082528060200260200182016040528015617a9257816020015b6060815260200190600190039081617a7d5790505b50905060005b8151811015615d0757617aae615f2986866172e0565b828281518110617ac057617ac0618d9c565b6020908102919091010152600101617a98565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b48576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b6657662386f26fc10000830492506010015b6305f5e1008310617b7e576305f5e100830492506008015b6127108310617b9257612710830492506004015b60648310617ba4576064830492506002015b600a8310613e8a5760010192915050565b6000617bc18383617f5f565b159392505050565b600080858411617cd05760208411617c7c5760008415617c14576001617bf0866020618840565b617bfb9060086196d3565b617c069060026197d1565b617c109190618840565b1990505b8351811685617c23898961882d565b617c2d9190618840565b805190935082165b818114617c6757878411617c4f5787945050505050615938565b83617c59816197dd565b945050828451169050617c35565b617c71878561882d565b945050505050615938565b838320617c898588618840565b617c93908761882d565b91505b858210617cce57848220808203617cbb57617cb1868461882d565b9350505050615938565b617cc6600184618840565b925050617c96565b505b5092949350505050565b60008381868511617de55760208511617d945760008515617d26576001617d02876020618840565b617d0d9060086196d3565b617d189060026197d1565b617d229190618840565b1990505b84518116600087617d378b8b61882d565b617d419190618840565b855190915083165b828114617d8657818610617d6e57617d618b8b61882d565b9650505050505050615938565b85617d78816196b9565b965050838651169050617d49565b859650505050505050615938565b508383206000905b617da68689618840565b8211617de357858320808203617dc25783945050505050615938565b617dcd60018561882d565b9350508180617ddb906196b9565b925050617d9c565b505b617def878761882d565b979650505050505050565b60408051808201909152600080825260208201526000617e2c8560000151866020015186600001518760200151617cda565b602080870180519186019190915251909150617e489082618840565b835284516020860151617e5b919061882d565b8103617e6a5760008552617e9c565b83518351617e78919061882d565b85518690617e87908390618840565b9052508351617e96908261882d565b60208601525b50909392505050565b60208110617edd5781518352617ebc60208461882d565b9250617ec960208361882d565b9150617ed6602082618840565b9050617ea5565b6000198115617f0c576001617ef3836020618840565b617eff906101006197d1565b617f099190618840565b90505b9151835183169219169190911790915250565b60606000617f2d848461440b565b8051602080830151604051939450617f47939091016197f4565b60405160208183030381529060405291505092915050565b8151815160009190811115617f72575081515b6020808501519084015160005b8381101561802b5782518251808214617ffb576000196020871015617fda57600184617fac896020618840565b617fb6919061882d565b617fc19060086196d3565b617fcc9060026197d1565b617fd69190618840565b1990505b8181168382168181039114617ff8579750613e8a9650505050505050565b50505b61800660208661882d565b945061801360208561882d565b93505050602081618024919061882d565b9050617f7f565b5084518651614ab9919061984c565b610b678061986d83390190565b61106f8061a3d483390190565b611bb58061b44383390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180a46180a9565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180a46040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561815b5783516001600160a01b0316835260209384019390920191600101618134565b509095945050505050565b60005b83811015618181578181015183820152602001618169565b50506000910152565b600081518084526181a2816020860160208601618166565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618298577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261828284865161818a565b6020958601959094509290920191600101618248565b5091975050506020948501949290920191506001016181de565b50929695505050505050565b600081518084526020840193506020830160005b828110156183125781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182d2565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618388604088018261818a565b90506020820151915086810360208801526183a381836182be565b965050506020938401939190910190600101618344565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261841c85835161818a565b945060209384019391909101906001016183e2565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184b260408701826182be565b9550506020938401939190910190600101618459565b80516001600160a01b03811681146184df57600080fd5b919050565b6000602082840312156184f657600080fd5b61403f826184c8565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185da60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561860657600080fd5b8151801515811461403f57600080fd5b60006020828403121561862857600080fd5b5051919050565b600181811c9082168061864357607f821691505b602082108103616204577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561868f57600080fd5b618698836184c8565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186fa576186fa6186a8565b60405290565b60008067ffffffffffffffff84111561871b5761871b6186a8565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561874a5761874a6186a8565b60405283815290508082840185101561876257600080fd5b615d07846020830185618166565b60006020828403121561878257600080fd5b815167ffffffffffffffff81111561879957600080fd5b8201601f810184136187aa57600080fd5b613e8684825160208401618700565b6000602082840312156187cb57600080fd5b815160ff8116811461403f57600080fd5b6040815260006187ef604083018561818a565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e8a57613e8a6187fe565b81810381811115613e8a57613e8a6187fe565b604081526000618866604083018561818a565b828103602084015261403b818561818a565b6001600160a01b0383168152604060208201526000615938604083018461818a565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d281601a850160208801618166565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161890f81601c840160208801618166565b01601c01949350505050565b60208152600061403f602083018461818a565b600082601f83011261893f57600080fd5b61403f83835160208501618700565b60006020828403121561896057600080fd5b815167ffffffffffffffff81111561897757600080fd5b613e868482850161892e565b60008351618995818460208801618166565b8351908301906189a9818360208801618166565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189ea81601a850160208801618166565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a27816033840160208801618166565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061403f608083018461818a565b60008551618ab6818460208a01618166565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618af0816001840160208a01618166565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b2e816002840160208901618166565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b70816002840160208801618166565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bbb604083018461818a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c3281601f850160208701618166565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c9f604083018461818a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cf1604083018461818a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d68816014850160208701618166565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e03816001850160208701618166565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e49818460208701618166565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618efc81604b850160208701618166565b91909101604b0192915050565b600060ff821660ff8103618f1f57618f1f6187fe565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061403f608083018461818a565b600060208284031215618fec57600080fd5b815167ffffffffffffffff81111561900357600080fd5b82016060818503121561901557600080fd5b61901d6186d7565b81518060030b811461902e57600080fd5b8152602082015167ffffffffffffffff81111561904a57600080fd5b6190568682850161892e565b602083015250604082015167ffffffffffffffff81111561907657600080fd5b6190828682850161892e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ee816021850160208701618166565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192da816021850160208801618166565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161931781602e840160208801618166565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193df816022850160208701618166565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161942481600e850160208701618166565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619502816018850160208801618166565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161953f81601c840160208801618166565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619645818460208701618166565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196ac81601c850160208701618166565b91909101601c0192915050565b600060001982036196cc576196cc6187fe565b5060010190565b8082028115828204841417613e8a57613e8a6187fe565b6001815b600184111561972557808504811115619709576197096187fe565b600184161561971757908102905b60019390931c9280026196ee565b935093915050565b60008261973c57506001613e8a565b8161974957506000613e8a565b816001811461975f576002811461976957619785565b6001915050613e8a565b60ff84111561977a5761977a6187fe565b50506001821b613e8a565b5060208310610133831016604e8410600b84101617156197a8575081810a613e8a565b6197b560001984846196ea565b80600019048211156197c9576197c96187fe565b029392505050565b600061403f838361972d565b6000816197ec576197ec6187fe565b506000190190565b60008351619806818460208801618166565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619840816001840160208801618166565b01600101949350505050565b81810360008312801583831316838312821617156172ff576172ff6187fe56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a2646970667358221220df6f45d497f808535bc117f50680b0d120d3f6b1c64ebfe9be8c022029c100bf64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d02d8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80638032668011610145578063d509b16c116100bd578063e13aba481161008c578063f1f87f4011610071578063f1f87f40146103a2578063f2413096146103aa578063fa7626d4146103b257600080fd5b8063e13aba4814610392578063e20c9f711461039a57600080fd5b8063d509b16c14610372578063d97136a21461037a578063dcba486a14610382578063dfbdf6001461038a57600080fd5b8063b0464fdc11610114578063b5508aa9116100f9578063b5508aa91461034a578063ba414fa614610352578063d04cda981461036a57600080fd5b8063b0464fdc1461033a578063b549984c1461034257600080fd5b8063803266801461030057806385226c8114610308578063916a17c61461031d578063ae9687dc1461033257600080fd5b80633e5e3c23116101d85780635f01db7e116101a75780636ff458501161018c5780636ff45850146102e857806370557298146102f05780637f924c4e146102f857600080fd5b80635f01db7e146102cb57806366d9a9a0146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b35780634b629509146102bb57806358fdbbe0146102c357600080fd5b80632843882611610214578063284388261461027e5780632ade3880146102865780632f6254fc1461029b5780633be9ec80146102a357600080fd5b80630393998b146102465780630a9254e4146102505780631142744e146102585780631ed7831c14610260575b600080fd5b61024e6103bf565b005b61024e6104da565b61024e610bbc565b610268610cfb565b604051610275919061811a565b60405180910390f35b61024e610d5d565b61028e610fda565b60405161027591906181b6565b61024e61111c565b61024e6112a6565b6102686114c5565b610268611525565b61024e611585565b61024e611671565b61024e61175d565b6102db6118e3565b604051610275919061831c565b61024e611a65565b61024e611ca8565b61024e611f29565b61024e612166565b610310612253565b60405161027591906183ba565b610325612323565b6040516102759190618431565b61024e61241e565b6103256126ab565b61024e6127a6565b610310612891565b61035a612961565b6040519015158152602001610275565b61024e612a35565b61024e612b92565b61024e6132bc565b61024e613499565b61024e61374e565b61024e6138aa565b610268613b86565b61024e613be6565b61024e613d5e565b601f5461035a9060ff1681565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb12391506024015b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516105209061803a565b604051809103906000f08015801561053c573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519081019390935292166044820152610620919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613e71565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc916004808201926020929091908290030181865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd91906184e4565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b5050505060008060006040516107a490618047565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156107e0573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831690811790915560215460405160129360019384936000939192169061083690618054565b610845969594939291906184ff565b604051809103906000f080158015610861573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b15801561090157600080fd5b505af1158015610915573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561097f57600080fd5b505af1158015610993573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610aa757600080fd5b505af1158015610abb573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d91906185f4565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104c057600080fd5b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044015b6020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf891906185f4565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610d5357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d35575b5050505050905090565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610def9190618616565b9050610dfc600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015610e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906185f4565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561111357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156110fc57838290600052602060002001805461106f9061862f565b80601f016020809104026020016040519081016040528092919081815260200182805461109b9061862f565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081526020019060010190611050565b505050508152505081526020019060010190610ffe565b50505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b031663249f46976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906184e4565b613211613f18565b565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156114a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d4919061867c565b60606018805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc7759991506024016104a6565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024016104a6565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190618616565b613e90565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611113578382906000526020600020906002020160405180604001604052908160008201805461193a9061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546119669061862f565b80156119b35780601f10611988576101008083540402835291602001916119b3565b820191906000526020600020905b81548152906001019060200180831161199657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611a4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116119fa5790505b50505050508152505081526020019060010190611907565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af79190618616565b9050611b04600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba091906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd9150606401610f92565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a9190618616565b9050611d47600082613e90565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de291906185f4565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064016020604051808303816000875af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906185f4565b50601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1d9190618616565b9050610fd58282613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190618616565b9050611fb1620186a082613e90565b6022546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906185f4565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190618616565b905061216262030d4082613e90565b5050565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610cb5565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546122969061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546122c29061862f565b801561230f5780601f106122e45761010080835404028352916020019161230f565b820191906000526020600020905b8154815290600101906020018083116122f257829003601f168201915b505050505081526020019060010190612277565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561240657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123b35790505b50505050508152505081526020019060010190612347565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249b9190810190618770565b90506124dc6040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125599190810190618770565b905061259a6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082613f79565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261391906187b9565b905061262360128260ff16613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c9190618616565b90506104d4620186a082613e90565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111135760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561278e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161273b5790505b505050505081525050815260200190600101906126cf565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a91506024016104a6565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111135783829060005260206000200180546128d49061862f565b80601f01602080910402602001604051908101604052809291908181526020018280546129009061862f565b801561294d5780601f106129225761010080835404028352916020019161294d565b820191906000526020600020905b81548152906001019060200180831161293057829003601f168201915b5050505050815260200190600101906128b5565b60085460009060ff1615612979575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190618616565b1415905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612aa757600080fd5b505af1158015612abb573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b505050506112a4600a601f60019054906101000a90046001600160a01b03166001600160a01b031663fa62d57f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ba573d6000803e3d6000fd5b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612d0e57600080fd5b505af1158015612d22573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e319190618616565b9050612e40620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190618616565b9050612ec8620186a082613e90565b601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190618616565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af1158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906185f4565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c701262691613088919061c350906038016187dc565b6020604051808303816000875af11580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb91906185f4565b50601f546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e9190618616565b905061317e8561316e888561882d565b613178919061882d565b82613e90565b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156131eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320f9190618616565b905061322b866132218961c350618840565b6131789190618840565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190618616565b90506132b261c35082613e90565b5050505050505050565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335891906185f4565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156133de57600080fd5b505af11580156133f2573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af1158015613475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906185f4565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561350b57600080fd5b505af115801561351f573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b15801561358b57600080fd5b505af115801561359f573d6000803e3d6000fd5b50506026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561361557600080fd5b505af1158015613629573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613721919061867c565b601f5491935091506137419061010090046001600160a01b031683613f18565b6104d4613178848661882d565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137c057600080fd5b505af11580156137d4573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b505050506112a4601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393b9190618616565b905061394a620186a082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c39190618616565b90506139d2620186a082613e90565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f91906185f4565b50601f54602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190618616565b9050613aff61c35082613e90565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b789190618616565b90506104d461c35082613e90565b60606015805480602002602001604051908101604052809291908181526020018280548015610d53576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610d35575050505050905090565b6026546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c5857600080fd5b505af1158015613c6c573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b158015613cd657600080fd5b505af1158015613cea573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161141a565b601f546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015613dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df09190618616565b9050613dfd600082613e90565b6040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401611c0d565b6000613e7b618061565b613e86848483613fcb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015613efc57600080fd5b505afa158015613f10573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401613ee4565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613ee49085908590600401618853565b600080613fd88584614046565b905061403b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001614026929190618878565b60405160208183030381529060405285614052565b9150505b9392505050565b600061403f8383614080565b60c081015151600090156140765761406f84848460c0015161409b565b905061403f565b61406f8484614241565b600061408c838361432c565b61403f83836020015184614052565b6000806140a6614338565b905060006140b4868361440b565b905060006140cb82606001518360200151856148b1565b905060006140db83838989614ac3565b905060006140e882615940565b602081015181519192509060030b1561415b5789826040015160405160200161411292919061889a565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526141529160040161891b565b60405180910390fd5b600061419e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615b0f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906141f190849060040161891b565b602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423291906184e4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061429690879060040161891b565b600060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142db919081019061894e565b9050600061430982856040516020016142f5929190618983565b604051602081830303815290604052615d0f565b90506001600160a01b038116613e865784846040516020016141129291906189b2565b61216282826000615d22565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906143bf908490600401618a5d565b600060405180830381865afa1580156143dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144049190810190618770565b9250505090565b61443d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506144886040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61449185615e25565b602082015260006144a18661620a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156144e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450b9190810190618770565b868385602001516040516020016145259493929190618aa4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061457d90859060040161891b565b600060405180830381865afa15801561459a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145c29190810190618770565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061460a908490600401618ba8565b602060405180830381865afa158015614627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464b91906185f4565b61466057816040516020016141129190618bfa565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906146a5908490600401618c8c565b600060405180830381865afa1580156146c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ea9190810190618770565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614731908490600401618cde565b602060405180830381865afa15801561474e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477291906185f4565b15614807576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906147bc908490600401618cde565b600060405180830381865afa1580156147d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148019190810190618770565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161482c9190618d30565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614858929190618853565b600060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261489d9190810190618770565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816148cd5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061492d5761492d618d9c565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061498157614981618d9c565b60200260200101819052508460405160200161499d9190618dcb565b604051602081830303815290604052816002815181106149bf576149bf618d9c565b6020026020010181905250826040516020016149db9190618e37565b604051602081830303815290604052816003815181106149fd576149fd618d9c565b60200260200101819052506000614a1382615940565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614aa4906040805180820182526000808252602091820152815180830190925284518252808501908201529061648d565b614ab957856040516020016141129190618e78565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614b13565b511590565b614c8757826020015115614bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614152565b8260c0015115614c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614152565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614ca057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614cfb90618f09565b935060ff1681518110614d1057614d10618d9c565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614d619190618f28565b604051602081830303815290604052828280614d7c90618f09565b935060ff1681518110614d9157614d91618d9c565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614dde90618f09565b935060ff1681518110614df357614df3618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280614e4090618f09565b935060ff1681518110614e5557614e55618d9c565b60200260200101819052508760200151828280614e7190618f09565b935060ff1681518110614e8657614e86618d9c565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280614ed390618f09565b935060ff1681518110614ee857614ee8618d9c565b602090810291909101015287518282614f0081618f09565b935060ff1681518110614f1557614f15618d9c565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614f6290618f09565b935060ff1681518110614f7757614f77618d9c565b6020026020010181905250614f8b466164ee565b8282614f9681618f09565b935060ff1681518110614fab57614fab618d9c565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614ff890618f09565b935060ff168151811061500d5761500d618d9c565b60200260200101819052508682828061502590618f09565b935060ff168151811061503a5761503a618d9c565b60209081029190910101528551156151615760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261508b81618f09565b935060ff16815181106150a0576150a0618d9c565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906150f090899060040161891b565b600060405180830381865afa15801561510d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151359190810190618770565b828261514081618f09565b935060ff168151811061515557615155618d9c565b60200260200101819052505b8460200151156152315760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826151aa81618f09565b935060ff16815181106151bf576151bf618d9c565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061520c90618f09565b935060ff168151811061522157615221618d9c565b60200260200101819052506153f8565b615269614b0e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6152fc5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826152ac81618f09565b935060ff16815181106152c1576152c1618d9c565b60200260200101819052508460a001516040516020016152e19190618dcb565b60405160208183030381529060405282828061520c90618f09565b8460c0015115801561533f57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261533d90511590565b155b156153f85760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261538381618f09565b935060ff168151811061539857615398618d9c565b60200260200101819052506153ac8861658e565b6040516020016153bc9190618dcb565b6040516020818303038152906040528282806153d790618f09565b935060ff16815181106153ec576153ec618d9c565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261542c90511590565b6154c15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261546f81618f09565b935060ff168151811061548457615484618d9c565b602002602001018190525084604001518282806154a090618f09565b935060ff16815181106154b5576154b5618d9c565b60200260200101819052505b6060850151156155e25760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261550a81618f09565b935060ff168151811061551f5761551f618d9c565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561558e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155b69190810190618770565b82826155c181618f09565b935060ff16815181106155d6576155d6618d9c565b60200260200101819052505b60e085015151156156895760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261562c81618f09565b935060ff168151811061564157615641618d9c565b602002602001018190525061565d8560e00151600001516164ee565b828261566881618f09565b935060ff168151811061567d5761567d618d9c565b60200260200101819052505b60e085015160200151156157335760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826156d681618f09565b935060ff16815181106156eb576156eb618d9c565b60200260200101819052506157078560e00151602001516164ee565b828261571281618f09565b935060ff168151811061572757615727618d9c565b60200260200101819052505b60e085015160400151156157dd5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261578081618f09565b935060ff168151811061579557615795618d9c565b60200260200101819052506157b18560e00151604001516164ee565b82826157bc81618f09565b935060ff16815181106157d1576157d1618d9c565b60200260200101819052505b60e085015160600151156158875760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261582a81618f09565b935060ff168151811061583f5761583f618d9c565b602002602001018190525061585b8560e00151606001516164ee565b828261586681618f09565b935060ff168151811061587b5761587b618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156158a5576158a56186a8565b6040519080825280602002602001820160405280156158d857816020015b60608152602001906001900390816158c35790505b50905060005b8260ff168160ff16101561593157838160ff168151811061590157615901618d9c565b6020026020010151828260ff168151811061591e5761591e618d9c565b60209081029190910101526001016158de565b5093505050505b949350505050565b6159676040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916159ed91869101618f93565b600060405180830381865afa158015615a0a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a329190810190618770565b90506000615a40868361707d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615a7091906183ba565b6000604051808303816000875af1158015615a8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ab79190810190618fda565b805190915060030b15801590615ad05750602081015151155b8015615adf5750604081015151155b15614ab95781600081518110615af757615af7618d9c565b60200260200101516040516020016141129190619090565b60606000615b448560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615b7b9082905b906171d2565b15615cd8576000615bf882615bf284615bec615bbe8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906171f9565b9061725b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615c5c9082906171d2565b15615cc657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cc3905b82906172e0565b90505b615ccf81617306565b9250505061403f565b8215615cf157848460405160200161411292919061927c565b505060408051602081019091526000815261403f565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615d3157505050565b6000615d3e84848461736f565b90506000615d4b82615940565b602081015181519192509060030b158015615de75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615de790604080518082018252600080825260209182015281518083019092528451825280850190820152615b75565b15615df457505050505050565b60408201515115615e145781604001516040516020016141129190619323565b806040516020016141129190619381565b60606000615e5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ebf905b829061648d565b15615f2e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990839061790a565b617306565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f90905b8290617994565b60010361605d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ff690615cbc565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f29905b83906172e0565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bc90615eb8565b156161f357604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616124908390617a2e565b9050600081600183516161379190618840565b8151811061614757616147618d9c565b602002602001015190506161ea615f296161bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061790a565b95945050505050565b8260405160200161411291906193ec565b50919050565b6060600061623f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162a190615eb8565b156162af5761403f81617306565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261630e90615f89565b60010361637857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261403f90615f2990616056565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d790615eb8565b156161f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061643f908390617a2e565b905060018151111561647b57806002825161645a9190618840565b8151811061646a5761646a618d9c565b602002602001015192505050919050565b508260405160200161411291906193ec565b8051825160009111156164a257506000613e8a565b815183516020850151600092916164b89161882d565b6164c29190618840565b9050826020015181036164d9576001915050613e8a565b82516020840151819020912014905092915050565b606060006164fb83617ad3565b600101905060008167ffffffffffffffff81111561651b5761651b6186a8565b6040519080825280601f01601f191660200182016040528015616545576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461654f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161661a905b8290617bb5565b1561665a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b990616613565b156166f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261675890616613565b1561679857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f790616613565b8061685c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261685c90616613565b1561689c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168fb90616613565b806169605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261696090616613565b156169a057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ff90616613565b80616a645750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a6490616613565b15616aa457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b0390616613565b80616b685750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b6890616613565b15616ba857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c0790616613565b15616c4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ca690616613565b15616ce657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d4590616613565b15616d8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616de490616613565b15616e2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e8390616613565b15616ec357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f2290616613565b80616f875750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f8790616613565b15616fc757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261702690616613565b1561706657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161411292906020016194ca565b60608060005b8451811015617108578185828151811061709f5761709f618d9c565b60200260200101516040516020016170b8929190618983565b6040516020818303038152906040529150600185516170d79190618840565b811461710057816040516020016170ee9190619633565b60405160208183030381529060405291505b600101617083565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081617121579050509050838160008151811061714c5761714c618d9c565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106171a0576171a0618d9c565b602002602001018190525081816002815181106171bf576171bf618d9c565b6020908102919091010152949350505050565b60208083015183518351928401516000936171f09291849190617bc9565b14159392505050565b6040805180820190915260008082526020820152600061722b8460000151856020015185600001518660200151617cda565b905083602001518161723d9190618840565b8451859061724c908390618840565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015617280575081613e8a565b60208083015190840151600191146172a75750815160208481015190840151829020919020145b80156172d8578251845185906172be908390618840565b90525082516020850180516172d490839061882d565b9052505b509192915050565b60408051808201909152600080825260208201526172ff838383617dfa565b5092915050565b60606000826000015167ffffffffffffffff811115617327576173276186a8565b6040519080825280601f01601f191660200182016040528015617351576020820181803683370190505b50905060006020820190506172ff8185602001518660000151617ea5565b6060600061737b614338565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161739857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806173f390618f09565b935060ff168151811061740857617408618d9c565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016174599190619674565b60405160208183030381529060405282828061747490618f09565b935060ff168151811061748957617489618d9c565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806174d690618f09565b935060ff16815181106174eb576174eb618d9c565b6020026020010181905250826040516020016175079190618e37565b60405160208183030381529060405282828061752290618f09565b935060ff168151811061753757617537618d9c565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061758490618f09565b935060ff168151811061759957617599618d9c565b60200260200101819052506175ae8784617f1f565b82826175b981618f09565b935060ff16815181106175ce576175ce618d9c565b60209081029190910101528551511561767a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261762081618f09565b935060ff168151811061763557617635618d9c565b602002602001018190525061764e866000015184617f1f565b828261765981618f09565b935060ff168151811061766e5761766e618d9c565b60200260200101819052505b8560800151156176e85760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826176c381618f09565b935060ff16815181106176d8576176d8618d9c565b602002602001018190525061774e565b841561774e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261772d81618f09565b935060ff168151811061774257617742618d9c565b60200260200101819052505b604086015151156177ea5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261779881618f09565b935060ff16815181106177ad576177ad618d9c565b602002602001018190525085604001518282806177c990618f09565b935060ff16815181106177de576177de618d9c565b60200260200101819052505b8560600151156178545760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261783381618f09565b935060ff168151811061784857617848618d9c565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617872576178726186a8565b6040519080825280602002602001820160405280156178a557816020015b60608152602001906001900390816178905790505b50905060005b8260ff168160ff1610156178fe57838160ff16815181106178ce576178ce618d9c565b6020026020010151828260ff16815181106178eb576178eb618d9c565b60209081029190910101526001016178ab565b50979650505050505050565b604080518082019091526000808252602082015281518351101561792f575081613e8a565b815183516020850151600092916179459161882d565b61794f9190618840565b60208401519091506001908214617970575082516020840151819020908220145b801561798b57835185518690617987908390618840565b9052505b50929392505050565b60008082600001516179b88560000151866020015186600001518760200151617cda565b6179c2919061882d565b90505b835160208501516179d6919061882d565b81116172ff57816179e6816196b9565b9250508260000151617a1d856020015183617a019190618840565b8651617a0d9190618840565b8386600001518760200151617cda565b617a27919061882d565b90506179c5565b60606000617a3c8484617994565b617a4790600161882d565b67ffffffffffffffff811115617a5f57617a5f6186a8565b604051908082528060200260200182016040528015617a9257816020015b6060815260200190600190039081617a7d5790505b50905060005b8151811015615d0757617aae615f2986866172e0565b828281518110617ac057617ac0618d9c565b6020908102919091010152600101617a98565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617b1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617b48576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617b6657662386f26fc10000830492506010015b6305f5e1008310617b7e576305f5e100830492506008015b6127108310617b9257612710830492506004015b60648310617ba4576064830492506002015b600a8310613e8a5760010192915050565b6000617bc18383617f5f565b159392505050565b600080858411617cd05760208411617c7c5760008415617c14576001617bf0866020618840565b617bfb9060086196d3565b617c069060026197d1565b617c109190618840565b1990505b8351811685617c23898961882d565b617c2d9190618840565b805190935082165b818114617c6757878411617c4f5787945050505050615938565b83617c59816197dd565b945050828451169050617c35565b617c71878561882d565b945050505050615938565b838320617c898588618840565b617c93908761882d565b91505b858210617cce57848220808203617cbb57617cb1868461882d565b9350505050615938565b617cc6600184618840565b925050617c96565b505b5092949350505050565b60008381868511617de55760208511617d945760008515617d26576001617d02876020618840565b617d0d9060086196d3565b617d189060026197d1565b617d229190618840565b1990505b84518116600087617d378b8b61882d565b617d419190618840565b855190915083165b828114617d8657818610617d6e57617d618b8b61882d565b9650505050505050615938565b85617d78816196b9565b965050838651169050617d49565b859650505050505050615938565b508383206000905b617da68689618840565b8211617de357858320808203617dc25783945050505050615938565b617dcd60018561882d565b9350508180617ddb906196b9565b925050617d9c565b505b617def878761882d565b979650505050505050565b60408051808201909152600080825260208201526000617e2c8560000151866020015186600001518760200151617cda565b602080870180519186019190915251909150617e489082618840565b835284516020860151617e5b919061882d565b8103617e6a5760008552617e9c565b83518351617e78919061882d565b85518690617e87908390618840565b9052508351617e96908261882d565b60208601525b50909392505050565b60208110617edd5781518352617ebc60208461882d565b9250617ec960208361882d565b9150617ed6602082618840565b9050617ea5565b6000198115617f0c576001617ef3836020618840565b617eff906101006197d1565b617f099190618840565b90505b9151835183169219169190911790915250565b60606000617f2d848461440b565b8051602080830151604051939450617f47939091016197f4565b60405160208183030381529060405291505092915050565b8151815160009190811115617f72575081515b6020808501519084015160005b8381101561802b5782518251808214617ffb576000196020871015617fda57600184617fac896020618840565b617fb6919061882d565b617fc19060086196d3565b617fcc9060026197d1565b617fd69190618840565b1990505b8181168382168181039114617ff8579750613e8a9650505050505050565b50505b61800660208661882d565b945061801360208561882d565b93505050602081618024919061882d565b9050617f7f565b5084518651614ab9919061984c565b610b678061986d83390190565b61106f8061a3d483390190565b611bb58061b44383390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016180a46180a9565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016180a46040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561815b5783516001600160a01b0316835260209384019390920191600101618134565b509095945050505050565b60005b83811015618181578181015183820152602001618169565b50506000910152565b600081518084526181a2816020860160208601618166565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618298577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261828284865161818a565b6020958601959094509290920191600101618248565b5091975050506020948501949290920191506001016181de565b50929695505050505050565b600081518084526020840193506020830160005b828110156183125781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016182d2565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752618388604088018261818a565b90506020820151915086810360208801526183a381836182be565b965050506020938401939190910190600101618344565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261841c85835161818a565b945060209384019391909101906001016183e2565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156182b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526184b260408701826182be565b9550506020938401939190910190600101618459565b80516001600160a01b03811681146184df57600080fd5b919050565b6000602082840312156184f657600080fd5b61403f826184c8565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff88166040830152866060830152600386106185b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a08301526185da60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561860657600080fd5b8151801515811461403f57600080fd5b60006020828403121561862857600080fd5b5051919050565b600181811c9082168061864357607f821691505b602082108103616204577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000806040838503121561868f57600080fd5b618698836184c8565b6020939093015192949293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156186fa576186fa6186a8565b60405290565b60008067ffffffffffffffff84111561871b5761871b6186a8565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561874a5761874a6186a8565b60405283815290508082840185101561876257600080fd5b615d07846020830185618166565b60006020828403121561878257600080fd5b815167ffffffffffffffff81111561879957600080fd5b8201601f810184136187aa57600080fd5b613e8684825160208401618700565b6000602082840312156187cb57600080fd5b815160ff8116811461403f57600080fd5b6040815260006187ef604083018561818a565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115613e8a57613e8a6187fe565b81810381811115613e8a57613e8a6187fe565b604081526000618866604083018561818a565b828103602084015261403b818561818a565b6001600160a01b0383168152604060208201526000615938604083018461818a565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d281601a850160208801618166565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161890f81601c840160208801618166565b01601c01949350505050565b60208152600061403f602083018461818a565b600082601f83011261893f57600080fd5b61403f83835160208501618700565b60006020828403121561896057600080fd5b815167ffffffffffffffff81111561897757600080fd5b613e868482850161892e565b60008351618995818460208801618166565b8351908301906189a9818360208801618166565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516189ea81601a850160208801618166565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618a27816033840160208801618166565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061403f608083018461818a565b60008551618ab6818460208a01618166565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618af0816001840160208a01618166565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618b2e816002840160208901618166565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b70816002840160208801618166565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618bbb604083018461818a565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618c3281601f850160208701618166565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c9f604083018461818a565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618cf1604083018461818a565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d68816014850160208701618166565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618e03816001850160208701618166565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e49818460208701618166565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618efc81604b850160208701618166565b91909101604b0192915050565b600060ff821660ff8103618f1f57618f1f6187fe565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061403f608083018461818a565b600060208284031215618fec57600080fd5b815167ffffffffffffffff81111561900357600080fd5b82016060818503121561901557600080fd5b61901d6186d7565b81518060030b811461902e57600080fd5b8152602082015167ffffffffffffffff81111561904a57600080fd5b6190568682850161892e565b602083015250604082015167ffffffffffffffff81111561907657600080fd5b6190828682850161892e565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190ee816021850160208701618166565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516192da816021850160208801618166565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161931781602e840160208801618166565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f86816029850160208701618166565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193df816022850160208701618166565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161942481600e850160208701618166565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619502816018850160208801618166565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161953f81601c840160208801618166565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619645818460208701618166565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516196ac81601c850160208701618166565b91909101601c0192915050565b600060001982036196cc576196cc6187fe565b5060010190565b8082028115828204841417613e8a57613e8a6187fe565b6001815b600184111561972557808504811115619709576197096187fe565b600184161561971757908102905b60019390931c9280026196ee565b935093915050565b60008261973c57506001613e8a565b8161974957506000613e8a565b816001811461975f576002811461976957619785565b6001915050613e8a565b60ff84111561977a5761977a6187fe565b50506001821b613e8a565b5060208310610133831016604e8410600b84101617156197a8575081810a613e8a565b6197b560001984846196ea565b80600019048211156197c9576197c96187fe565b029392505050565b600061403f838361972d565b6000816197ec576197ec6187fe565b506000190190565b60008351619806818460208801618166565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619840816001840160208801618166565b01600101949350505050565b81810360008312801583831316838312821617156172ff576172ff6187fe56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220a43967e13d8e35f364f3cdb6ecac268084c561ca3e6d91a1f4a54b41cd42ccbb64736f6c634300081a003360e060405234801561001057600080fd5b50604051611bb5380380611bb583398101604081905261002f9161020e565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60076100aa8982610360565b5060086100b78882610360565b5060ff861660c05260808590528360028111156100d6576100d661041e565b60a08160028111156100ea576100ea61041e565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104349350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261015157600080fd5b81516001600160401b0381111561016a5761016a61012a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101985761019861012a565b6040528181528382016020018510156101b057600080fd5b60005b828110156101cf576020818601810151838301820152016101b3565b506000918101602001919091529392505050565b8051600381106101f257600080fd5b919050565b80516001600160a01b03811681146101f257600080fd5b600080600080600080600080610100898b03121561022b57600080fd5b88516001600160401b0381111561024157600080fd5b61024d8b828c01610140565b60208b015190995090506001600160401b0381111561026b57600080fd5b6102778b828c01610140565b975050604089015160ff8116811461028e57600080fd5b60608a015190965094506102a460808a016101e3565b60a08a015190945092506102ba60c08a016101f7565b91506102c860e08a016101f7565b90509295985092959890939650565b600181811c908216806102eb57607f821691505b60208210810361030b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561035b57806000526020600020601f840160051c810160208510156103385750805b601f840160051c820191505b818110156103585760008155600101610344565b50505b505050565b81516001600160401b038111156103795761037961012a565b61038d8161038784546102d7565b84610311565b6020601f8211600181146103c157600083156103a95750848201515b600019600385901b1c1916600184901b178455610358565b600084815260208120601f198516915b828110156103f157878501518255602094850194600190920191016103d1565b508482101561040f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c051611744610471600039600061024f015260006103440152600081816102f501528181610ad30152610bd901526117446000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806395d89b41116100e3578063d9eeebed1161008c578063f68016b711610066578063f68016b71461044e578063f687d12a14610457578063fa62d57f1461046a57600080fd5b8063d9eeebed146103c1578063dd62ed3e146103f5578063eddeb1231461043b57600080fd5b8063c7012626116100bd578063c701262614610386578063c835d7cc14610399578063ccc77599146103ae57600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc1161014557806370a082311161011f57806370a08231146102ba57806385e1f4d0146102f05780638b851b951461031757600080fd5b80633ce4a5bc1461027957806342966c681461029457806347e7ef24146102a757600080fd5b806323b872dd1161017657806323b872dd146101f0578063249f469714610203578063313ce5671461024857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610473565b6040516101b29190611323565b60405180910390f35b6101ce6101c9366004611362565b610505565b60405190151581526020016101b2565b6006545b6040519081526020016101b2565b6101ce6101fe36600461138e565b61051c565b6000546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b61022373735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce6102a23660046113cf565b6105b3565b6101ce6102b5366004611362565b6105c7565b6101e26102c83660046113e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b6101a561071b565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b29190611405565b6101ce610381366004611362565b61072a565b6101ce610394366004611475565b610737565b6103ac6103a73660046113e8565b610886565b005b6103ac6103bc3660046113e8565b61099a565b6103c9610aa7565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101b2565b6101e261040336600461156d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6103ac6104493660046113cf565b610cc5565b6101e260025481565b6103ac6104653660046113cf565b610d47565b6101e260035481565b606060078054610482906115a6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae906115a6565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610512338484610dc9565b5060015b92915050565b6000610529848484610ed2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205482811015610594576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105a885336105a38685611628565b610dc9565b506001949350505050565b60006105bf338361108d565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab14801590610605575060005473ffffffffffffffffffffffffffffffffffffffff163314155b8015610629575060015473ffffffffffffffffffffffffffffffffffffffff163314155b15610660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066a83836111cf565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261070a91869061163b565b60405180910390a250600192915050565b606060088054610482906115a6565b6000610512338484610ed2565b6000806000610744610aa7565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa919061165d565b610830576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083a338561108d565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955916108739189918991879161167f565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108d3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610920576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109e7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a34576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a3879060200161098f565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e91906116ae565b905073ffffffffffffffffffffffffffffffffffffffff8116610bad576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6091906116cb565b905080600003610c9c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610caf91906116e4565b610cb991906116fb565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d12576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161098f565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d94576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161098f565b73ffffffffffffffffffffffffffffffffffffffff8316610e16576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610e63576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f1f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f6c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610fcc576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd68282611628565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526004602052604080822093909355908516815290812080548492906110199084906116fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107f91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166110da576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020548181101561113a576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111448282611628565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260408120919091556006805484929061117f908490611628565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ec5565b73ffffffffffffffffffffffffffffffffffffffff821661121c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461122e91906116fb565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906112689084906116fb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b818110156112e5576020818501810151868301820152016112c9565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061133660208301846112bf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f57600080fd5b50565b6000806040838503121561137557600080fd5b82356113808161133d565b946020939093013593505050565b6000806000606084860312156113a357600080fd5b83356113ae8161133d565b925060208401356113be8161133d565b929592945050506040919091013590565b6000602082840312156113e157600080fd5b5035919050565b6000602082840312156113fa57600080fd5b81356113368161133d565b6020810160038310611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561148857600080fd5b823567ffffffffffffffff81111561149f57600080fd5b8301601f810185136114b057600080fd5b803567ffffffffffffffff8111156114ca576114ca611446565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561153657611536611446565b60405281815282820160200187101561154e57600080fd5b8160208401602083013760006020928201830152969401359450505050565b6000806040838503121561158057600080fd5b823561158b8161133d565b9150602083013561159b8161133d565b809150509250929050565b600181811c908216806115ba57607f821691505b6020821081036115f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610516576105166115f9565b60408152600061164e60408301856112bf565b90508260208301529392505050565b60006020828403121561166f57600080fd5b8151801515811461133657600080fd5b60808152600061169260808301876112bf565b6020830195909552506040810192909252606090910152919050565b6000602082840312156116c057600080fd5b81516113368161133d565b6000602082840312156116dd57600080fd5b5051919050565b8082028115828204841417610516576105166115f9565b80820180821115610516576105166115f956fea264697066735822122037649c2055bfb791d5356fcc351c4af595c644cc42f4d0379388cd4eda6b0fd864736f6c634300081a0033a264697066735822122005c6b196b4839610e5f6e7daab7293466619b27889bc58fcf55dd5ba67fb11c164736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. diff --git a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts index 9ad32d35..55594799 100644 --- a/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyEchidnaTest__factory.ts @@ -613,7 +613,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220d8ef89ac8396bd464c454946f52477d7c7b7dd83faf0948efc8239094b648cb764736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + "0x600380546001600160a01b03191633908117909155600e60a09081526d11d85d195dd85e5155934b9cdbdb60921b60c0526101049190915261012361012481905261014452606460e090815261016460405261010080516001600160e01b0390811663c0c53b8b60e01b1790915261007992919061026316565b600480546001600160a01b03929092166001600160a01b03199283168117909155600580549092161790553480156100b057600080fd5b5060055460035460016000556002805460ff191690556001600160a01b039182169116808215806100e857506001600160a01b038216155b806100fa57506001600160a01b038116155b156101185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316608052610130600082610282565b5061015b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610282565b506101867f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610282565b505050506040516101969061380e565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156101e8573d6000803e3d6000fd5b5060028054610100600160a81b0319166101006001600160a01b039384160217905560055460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505061488f565b600061026d61381b565b610278848483610315565b9150505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661030d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161027c565b50600061027c565b6000806103228584610391565b90506103866040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001610370929190613924565b60408051601f198184030181529190528561039d565b9150505b9392505050565b600061038a83836103d1565b60c081015151600090156103c7576103c084848460c001516103f260201b60201c565b905061038a565b6103c0848461056b565b60006103dd8383610638565b61038a8383602001518461039d60201b60201c565b6000806103fd610648565b9050600061040b86836106e2565b905060006104288260600151836020015185610b0560201b60201c565b9050600061043883838989610cba565b9050600061044582611936565b602081015181519192509060030b1561049e5789826040015160405160200161046f929190613948565b60408051601f198184030181529082905262461bcd60e51b8252610495916004016139ae565b60405180910390fd5b60006104e76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001611acd60201b60201c565b60405163c6ce059d60e01b8152909150600080516020616b378339815191529063c6ce059d9061051b9084906004016139ae565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906139c1565b9b9a5050505050505050505050565b604051638d1cc92560e01b81526000908190600080516020616b3783398151915290638d1cc925906105a19087906004016139ae565b600060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e69190810190613ab6565b905060006106158285604051602001610600929190613aea565b60408051601f19818403018152919052611c6d565b90506001600160a01b03811661027857848460405160200161046f929190613b19565b61064482826000611c80565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b8152606091600080516020616b3783398151915291829063d145736c90610696908490600401613ba8565b600060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106db9190810190613bdd565b9250505090565b6107146040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020616b3783398151915290506107596040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61076285611d5a565b6020820152600061077286611faf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107dc9190810190613bdd565b868385602001516040516020016107f69493929190613c25565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906108359085906004016139ae565b600060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261087a9190810190613bdd565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906108a9908490600401613cbd565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190613cf6565b6108ff578160405160200161046f9190613d18565b6040516309389f5960e31b81526001600160a01b038616906349c4fac89061092b908490600401613d8f565b600060405180830381865afa158015610948573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109709190810190613bdd565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061099e908490600401613dd5565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190613cf6565b15610a5b576040516309389f5960e31b81526001600160a01b038616906349c4fac890610a10908490600401613dd5565b600060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a559190810190613bdd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001610a809190613e16565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610aac929190613e71565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613bdd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610b21579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610b6857610b68613e96565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610ba257610ba2613e96565b602002602001018190525084604051602001610bbe9190613eac565b60405160208183030381529060405281600281518110610be057610be0613e96565b602002602001018190525082604051602001610bfc9190613ee1565b60405160208183030381529060405281600381518110610c1e57610c1e613e96565b60209081029190910101526000610c3482611936565b9050600081602001519050610c9b610c6e60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061215f565b610cb0578560405160200161046f9190613f10565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090600080516020616b378339815191529015610d04565b511590565b610e2057826020015115610d945760405162461bcd60e51b81526020600482015260586024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610495565b8260c0015115610e205760405162461bcd60e51b81526020600482015260536024820152600080516020616b5783398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610495565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610e395790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610e7a90613fa5565b935060ff1681518110610e8f57610e8f613e96565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610ed09190613fc4565b604051602081830303815290604052828280610eeb90613fa5565b935060ff1681518110610f0057610f00613e96565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610f3690613fa5565b935060ff1681518110610f4b57610f4b613e96565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610f8990613fa5565b935060ff1681518110610f9e57610f9e613e96565b60200260200101819052508760200151828280610fba90613fa5565b935060ff1681518110610fcf57610fcf613e96565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828061100d90613fa5565b935060ff168151811061102257611022613e96565b60209081029190910101528751828261103a81613fa5565b935060ff168151811061104f5761104f613e96565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b81525082828061108890613fa5565b935060ff168151811061109d5761109d613e96565b60209081029190910101526110b1466121c0565b82826110bc81613fa5565b935060ff16815181106110d1576110d1613e96565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061111090613fa5565b935060ff168151811061112557611125613e96565b60200260200101819052508682828061113d90613fa5565b935060ff168151811061115257611152613e96565b60209081029190910101528551156112605760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826111a381613fa5565b935060ff16815181106111b8576111b8613e96565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906111ef9089906004016139ae565b600060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190613bdd565b828261123f81613fa5565b935060ff168151811061125457611254613e96565b60200260200101819052505b84602001511561130d576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261129e81613fa5565b935060ff16815181106112b3576112b3613e96565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806112e890613fa5565b935060ff16815181106112fd576112fd613e96565b6020026020010181905250611474565b611323610cff8660a0015161213260201b60201c565b6113a65760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261135681613fa5565b935060ff168151811061136b5761136b613e96565b60200260200101819052508460a0015160405160200161138b9190613eac565b6040516020818303038152906040528282806112e890613fa5565b8460c001511580156113cb57506113c9610cff896040015161213260201b60201c565b155b156114745760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826113ff81613fa5565b935060ff168151811061141457611414613e96565b602090810291909101015261142888612252565b6040516020016114389190613eac565b60405160208183030381529060405282828061145390613fa5565b935060ff168151811061146857611468613e96565b60200260200101819052505b61148a610cff866040015161213260201b60201c565b61150d5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826114bb81613fa5565b935060ff16815181106114d0576114d0613e96565b602002602001018190525084604001518282806114ec90613fa5565b935060ff168151811061150157611501613e96565b60200260200101819052505b6060850151156115fe576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261153f81613fa5565b935060ff168151811061155457611554613e96565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156115aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d29190810190613bdd565b82826115dd81613fa5565b935060ff16815181106115f2576115f2613e96565b60200260200101819052505b60e085015151156116905760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261163581613fa5565b935060ff168151811061164a5761164a613e96565b602090810291909101015260e085015151611664906121c0565b828261166f81613fa5565b935060ff168151811061168457611684613e96565b60200260200101819052505b60e0850151602001511561172d5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826116ca81613fa5565b935060ff16815181106116df576116df613e96565b60200260200101819052506117018560e00151602001516121c060201b60201c565b828261170c81613fa5565b935060ff168151811061172157611721613e96565b60200260200101819052505b60e085015160400151156117ce5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261176b81613fa5565b935060ff168151811061178057611780613e96565b60200260200101819052506117a28560e00151604001516121c060201b60201c565b82826117ad81613fa5565b935060ff16815181106117c2576117c2613e96565b60200260200101819052505b60e0850151606001511561187e5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261181b81613fa5565b935060ff168151811061183057611830613e96565b60200260200101819052506118528560e00151606001516121c060201b60201c565b828261185d81613fa5565b935060ff168151811061187257611872613e96565b60200260200101819052505b60008160ff166001600160401b0381111561189b5761189b6139ea565b6040519080825280602002602001820160405280156118ce57816020015b60608152602001906001900390816118b95790505b50905060005b8260ff168160ff16101561192757838160ff16815181106118f7576118f7613e96565b6020026020010151828260ff168151811061191457611914613e96565b60209081029190910101526001016118d4565b5093505050505b949350505050565b61195d6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b8152600080516020616b3783398151915292600091849163d145736c916119ab9186910161401b565b600060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119f09190810190613bdd565b905060006119fe8683612908565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401611a2e9190614062565b6000604051808303816000875af1158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7591908101906140c7565b805190915060030b15801590611a8e5750602081015151155b8015611a9d5750604081015151155b15610cb05781600081518110611ab557611ab5613e96565b602002602001015160405160200161046f919061417a565b60606000611b028560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611b399082905b90612a42565b15611c36576000611bb682611bb081611baa611b7c8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612a69565b90612ac6565b9050611bea611be3604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612a42565b15611c2457611c21611c1a604051806040016040528060018152602001600560f91b81525061213260201b60201c565b8290612b4b565b90505b611c2d81612b71565b9250505061038a565b8215611c4f57848460405160200161046f92919061434a565b505060408051602081019091526000815261038a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611c8f57505050565b6000611c9c848484612bd6565b90506000611ca982611936565b602081015181519192509060030b158015611d1c5750611d1c611cf0604051806040016040528060078152602001665355434345535360c81b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611b33565b15611d2957505050505050565b60408201515115611d4957816040015160405160200161046f91906143c5565b8060405160200161046f919061440f565b60606000611d8f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611dc6611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b829061215f565b15611e085761038a611e03611dfc604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b83906130e9565b612b71565b611e3a611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8290613173565b600103611ea257611e6c611c1a604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b5061038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b8390612b4b565b611ed1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e576000611f0982611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b613208565b905060008160018351611f1c919061445f565b81518110611f2c57611f2c613e96565b60200260200101519050611f95611e03611f6860405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b604080518082018252600080825260209182015281518083019092528551825280860190820152906130e9565b95945050505050565b8260405160200161046f9190614472565b60606000611fe48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050612014611dbf604051806040016040528060048152602001630b9cdbdb60e21b81525061213260201b60201c565b156120225761038a81612b71565b61204d611e33604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6001036120825761038a611e03611e9b604051806040016040528060018152602001601d60f91b81525061213260201b60201c565b6120b1611dbf60405180604001604052806005815260200164173539b7b760d91b81525061213260201b60201c565b15611f9e5760006120e482611f04604051806040016040528060018152602001602f60f81b81525061213260201b60201c565b90506001815111156121205780600282516120ff919061445f565b8151811061210f5761210f613e96565b602002602001015192505050919050565b508260405160200161046f9190614472565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156121745750600061027c565b8151835160208501516000929161218a9161452c565b612194919061445f565b9050826020015181036121ab57600191505061027c565b82516020840151819020912014905092915050565b606060006121cd836132ac565b60010190506000816001600160401b038111156121ec576121ec6139ea565b6040519080825280601f01601f191660200182016040528015612216576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461222057509392505050565b60606000612269836040015161213260201b60201c565b90506122a661229f6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061213260201b60201c565b829061338e565b156122cd5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b61230061229f60405180604001604052806009815260200168556e6c6963656e736560b81b81525061213260201b60201c565b1561232c575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61235961229f6040518060400160405280600381526020016213525560ea1b81525061213260201b60201c565b1561237f57505060408051808201909152600381526213525560ea1b6020820152919050565b6123b561229f6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061213260201b60201c565b806123f557506123f561229f6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061213260201b60201c565b1561242157505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61245761229f6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061213260201b60201c565b80612497575061249761229f6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061213260201b60201c565b156124c3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6124fa61229f6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061213260201b60201c565b8061253b575061253b61229f604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061213260201b60201c565b1561256a57505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b6125a161229f6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b806125e257506125e261229f604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561260f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61264561229f6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061213260201b60201c565b1561267457505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6126aa61229f6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061213260201b60201c565b156126d957505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61270a61229f6040518060400160405280600781526020016604d504c2d322e360cc1b81525061213260201b60201c565b1561273457505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61276561229f6040518060400160405280600781526020016604f534c2d332e360cc1b81525061213260201b60201c565b1561278f57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6127c361229f6040518060400160405280600a81526020016904170616368652d322e360b41b81525061213260201b60201c565b156127f057505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61282761229f6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061213260201b60201c565b80612868575061286861229f6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061213260201b60201c565b1561289557505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6128c761229f604051806040016040528060088152602001674255534c2d312e3160c01b81525061213260201b60201c565b156128f157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161046f929060200161453f565b60608060005b8451811015612993578185828151811061292a5761292a613e96565b6020026020010151604051602001612943929190613aea565b604051602081830303815290604052915060018551612962919061445f565b811461298b5781604051602001612979919061468f565b60405160208183030381529060405291505b60010161290e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816129ac57905050905083816000815181106129d7576129d7613e96565b6020026020010181905250604051806040016040528060028152602001612d6360f01b81525081600181518110612a1057612a10613e96565b60200260200101819052508181600281518110612a2f57612a2f613e96565b6020908102919091010152949350505050565b6020808301518351835192840151600093612a6092918491906133a2565b14159392505050565b6040805180820190915260008082526020808301829052845185820151855192860151612a9693906134b3565b9050836020015181612aa8919061445f565b84518590612ab790839061445f565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015612aeb57508161027c565b6020808301519084015160019114612b125750815160208481015190840151829020919020145b8015612b4357825184518590612b2990839061445f565b9052508251602085018051612b3f90839061452c565b9052505b509192915050565b6040805180820190915260008082526020820152612b6a8383836135d3565b5092915050565b6060600082600001516001600160401b03811115612b9157612b916139ea565b6040519080825280601f01601f191660200182016040528015612bbb576020820181803683370190505b50602084810151855192935090830191612b6a918391613679565b60606000612be2610648565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612bff5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612c4090613fa5565b935060ff1681518110612c5557612c55613e96565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612c9091906146b4565b604051602081830303815290604052828280612cab90613fa5565b935060ff1681518110612cc057612cc0613e96565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612cf890613fa5565b935060ff1681518110612d0d57612d0d613e96565b602002602001018190525082604051602001612d299190613ee1565b604051602081830303815290604052828280612d4490613fa5565b935060ff1681518110612d5957612d59613e96565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612d9390613fa5565b935060ff1681518110612da857612da8613e96565b6020908102919091010152612dbd87846136f3565b8282612dc881613fa5565b935060ff1681518110612ddd57612ddd613e96565b602090810291909101015285515115612e755760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612e1d81613fa5565b935060ff1681518110612e3257612e32613e96565b60209081029190910101528551612e4990846136f3565b8282612e5481613fa5565b935060ff1681518110612e6957612e69613e96565b60200260200101819052505b856080015115612ee35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612ebe81613fa5565b935060ff1681518110612ed357612ed3613e96565b6020026020010181905250612f3e565b8415612f3e576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612f1d81613fa5565b935060ff1681518110612f3257612f32613e96565b60200260200101819052505b60408601515115612fca5760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612f7881613fa5565b935060ff1681518110612f8d57612f8d613e96565b60200260200101819052508560400151828280612fa990613fa5565b935060ff1681518110612fbe57612fbe613e96565b60200260200101819052505b8560600151156130345760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261301381613fa5565b935060ff168151811061302857613028613e96565b60200260200101819052505b60008160ff166001600160401b03811115613051576130516139ea565b60405190808252806020026020018201604052801561308457816020015b606081526020019060019003908161306f5790505b50905060005b8260ff168160ff1610156130dd57838160ff16815181106130ad576130ad613e96565b6020026020010151828260ff16815181106130ca576130ca613e96565b602090810291909101015260010161308a565b50979650505050505050565b604080518082019091526000808252602082015281518351101561310e57508161027c565b815183516020850151600092916131249161452c565b61312e919061445f565b6020840151909150600190821461314f575082516020840151819020908220145b801561316a5783518551869061316690839061445f565b9052505b50929392505050565b8051825160208085015190840151600093849390926131939284906134b3565b61319d919061452c565b90505b835160208501516131b1919061452c565b8111612b6a57816131c1816146f9565b92505082600001516131f78560200151836131dc919061445f565b86516131e8919061445f565b855160208701518591906134b3565b613201919061452c565b90506131a0565b606060006132168484613173565b61322190600161452c565b6001600160401b03811115613238576132386139ea565b60405190808252806020026020018201604052801561326b57816020015b60608152602001906001900390816132565790505b50905060005b8151811015611c6557613287611e038686612b4b565b82828151811061329957613299613e96565b6020908102919091010152600101613271565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132f5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613321576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061333f57662386f26fc10000830492506010015b6305f5e1008310613357576305f5e100830492506008015b612710831061336b57612710830492506004015b6064831061337d576064830492506002015b600a831061027c5760010192915050565b600061339a8383613733565b159392505050565b6000808584116134a9576020841161345557600084156133ed5760016133c986602061445f565b6133d4906008614712565b6133df906002614810565b6133e9919061445f565b1990505b83518116856133fc898961452c565b613406919061445f565b805190935082165b81811461344057878411613428578794505050505061192e565b836134328161481c565b94505082845116905061340e565b61344a878561452c565b94505050505061192e565b838320613462858861445f565b61346c908761452c565b91505b8582106134a7578482208082036134945761348a868461452c565b935050505061192e565b61349f60018461445f565b92505061346f565b505b5092949350505050565b600083818685116135be576020851161356d57600085156134ff5760016134db87602061445f565b6134e6906008614712565b6134f1906002614810565b6134fb919061445f565b1990505b845181166000876135108b8b61452c565b61351a919061445f565b855190915083165b82811461355f578186106135475761353a8b8b61452c565b965050505050505061192e565b85613551816146f9565b965050838651169050613522565b85965050505050505061192e565b508383206000905b61357f868961445f565b82116135bc5785832080820361359b578394505050505061192e565b6135a660018561452c565b93505081806135b4906146f9565b925050613575565b505b6135c8878761452c565b979650505050505050565b604080518082019091526000808252602080830182905285518682015186519287015161360093906134b3565b60208087018051918601919091525190915061361c908261445f565b83528451602086015161362f919061452c565b810361363e5760008552613670565b8351835161364c919061452c565b8551869061365b90839061445f565b905250835161366a908261452c565b60208601525b50909392505050565b602081106136b1578151835261369060208461452c565b925061369d60208361452c565b91506136aa60208261445f565b9050613679565b60001981156136e05760016136c783602061445f565b6136d390610100614810565b6136dd919061445f565b90505b9151835183169219169190911790915250565b6060600061370184846106e2565b805160208083015160405193945061371b93909101614833565b60405160208183030381529060405291505092915050565b8151815160009190811115613746575081515b6020808501519084015160005b838110156137ff57825182518082146137cf5760001960208710156137ae5760018461378089602061445f565b61378a919061452c565b613795906008614712565b6137a0906002614810565b6137aa919061445f565b1990505b81811683821681810391146137cc57975061027c9650505050505050565b50505b6137da60208661452c565b94506137e760208561452c565b935050506020816137f8919061452c565b9050613753565b5084518651610cb0919061486f565b610c9f80615e9883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161385e613863565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161385e6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156138ef5781810151838201526020016138d7565b50506000910152565b600081518084526139108160208601602086016138d4565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061192e908301846138f8565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161398081601a8501602088016138d4565b6101d160f51b601a9184019182015283516139a281601c8401602088016138d4565b01601c01949350505050565b60208152600061038a60208301846138f8565b6000602082840312156139d357600080fd5b81516001600160a01b038116811461038a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613a2257613a226139ea565b60405290565b6000806001600160401b03841115613a4257613a426139ea565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613a7057613a706139ea565b604052838152905080828401851015613a8857600080fd5b611c658460208301856138d4565b600082601f830112613aa757600080fd5b61038a83835160208501613a28565b600060208284031215613ac857600080fd5b81516001600160401b03811115613ade57600080fd5b61027884828501613a96565b60008351613afc8184602088016138d4565b835190830190613b108183602088016138d4565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613b5181601a8501602088016138d4565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613b8e8160338401602088016138d4565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061038a60808301846138f8565b600060208284031215613bef57600080fd5b81516001600160401b03811115613c0557600080fd5b8201601f81018413613c1657600080fd5b61027884825160208401613a28565b60008551613c37818460208a016138d4565b602f60f81b9083019081528551613c55816001840160208a016138d4565b602f60f81b600192909101918201528451613c778160028401602089016138d4565b600181830101915050602f60f81b60018201528351613c9d8160028401602088016138d4565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613cd060408301846138f8565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613d0857600080fd5b8151801515811461038a57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613d5081601f8501602087016138d4565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613da260408301846138f8565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613de860408301846138f8565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613e4e8160148501602087016138d4565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613e8460408301856138f8565b828103602084015261038681856138f8565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613ec98160018501602087016138d4565b601160f91b6001939091019283015250600201919050565b60008251613ef38184602087016138d4565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613f8281604b8501602087016138d4565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613fbb57613fbb613f8f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b60208201526000825161400e8160298501602087016138d4565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061038a60808301846138f8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bb57603f198786030184526140a68583516138f8565b9450602093840193919091019060010161408a565b50929695505050505050565b6000602082840312156140d957600080fd5b81516001600160401b038111156140ef57600080fd5b82016060818503121561410157600080fd5b614109613a00565b81518060030b811461411a57600080fd5b815260208201516001600160401b0381111561413557600080fd5b61414186828501613a96565b60208301525060408201516001600160401b0381111561416057600080fd5b61416c86828501613a96565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516141bc8160218501602087016138d4565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b60208201526000835161438c8160218501602088016138d4565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516143b981602e8401602088016138d4565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b60208201526000825161400e8160298501602087016138d4565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516144528160228501602087016138d4565b9190910160220192915050565b8181038181111561027c5761027c613f8f565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161449b81600e8501602087016138d4565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561027c5761027c613f8f565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516145778160188501602088016138d4565b6301034b7160e51b601891840191820152835161459b81601c8401602088016138d4565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516146a18184602087016138d4565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516146ec81601c8501602087016138d4565b91909101601c0192915050565b60006001820161470b5761470b613f8f565b5060010190565b808202811582820484141761027c5761027c613f8f565b6001815b60018411156147645780850481111561474857614748613f8f565b600184161561475657908102905b60019390931c92800261472d565b935093915050565b60008261477b5750600161027c565b816147885750600061027c565b816001811461479e57600281146147a8576147c4565b600191505061027c565b60ff8411156147b9576147b9613f8f565b50506001821b61027c565b5060208310610133831016604e8410600b84101617156147e7575081810a61027c565b6147f46000198484614729565b806000190482111561480857614808613f8f565b029392505050565b600061038a838361476c565b60008161482b5761482b613f8f565b506000190190565b600083516148458184602088016138d4565b601d60f91b90830190815283516148638160018401602088016138d4565b01600101949350505050565b8181036000831280158383131683831282161715612b6a57612b6a613f8f565b6080516115cb6148cd600039600081816101830152818161046e015281816104d00152818161083f0152818161094e01526109b001526115cb6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80636133b4bb116100cd578063a217fddf11610081578063d547741f11610066578063d547741f14610332578063d9caed1214610345578063e63ab1e91461035857600080fd5b8063a217fddf14610317578063c8a023621461031f57600080fd5b80638456cb59116100b25780638456cb59146102a257806385f438c1146102aa57806391d14854146102d157600080fd5b80636133b4bb1461026f57806381100bf01461028257600080fd5b80632f2ff15d116101245780633c2f05a8116101095780633c2f05a8146102375780633f4ba83a1461025c5780635c975abb1461026457600080fd5b80632f2ff15d1461021157806336568abe1461022457600080fd5b806301ffc9a714610156578063116191b61461017e57806321fc65f2146101ca578063248a9ca3146101df575b600080fd5b6101696101643660046111fa565b61037f565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d83660046112ae565b610418565b005b6102036101ed36600461131d565b6000908152600160208190526040909120015490565b604051908152602001610175565b6101dd61021f366004611336565b6105ba565b6101dd610232366004611336565b6105e6565b6002546101a590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101dd610644565b60025460ff16610169565b6101dd61027d366004611362565b610679565b6003546101a59073ffffffffffffffffffffffffffffffffffffffff1681565b6101dd6108c6565b6102037f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101696102df366004611336565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610203600081565b6101dd61032d3660046112ae565b6108f8565b6101dd610340366004611336565b610a80565b6101dd6103533660046113bc565b610aa6565b6102037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061041257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610420610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461044a81610bb6565b610452610bc0565b61049373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061050d9089908990899089908990600401611442565b600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516105a09392919061149f565b60405180910390a3506105b36001600055565b5050505050565b600082815260016020819052604090912001546105d681610bb6565b6105e08383610c8c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610635576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61063f8282610d57565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61066e81610bb6565b610676610e16565b50565b600254610100900473ffffffffffffffffffffffffffffffffffffffff166340c10f19306106a88660056114c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b5050600254600580546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810192909252610100909204909116925063a9059cbb91506044016020604051808303816000875af11580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d391906114fc565b506002546107ff90610100900473ffffffffffffffffffffffffffffffffffffffff1685858585610418565b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152610100909204909116906370a0823190602401602060405180830381865afa158015610895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b9919061151e565b156105e0576105e0611537565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6108f081610bb6565b610676610e93565b610900610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461092a81610bb6565b610932610bc0565b61097373ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610bff565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906109ed9089908990899089908990600401611442565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516105a09392919061149f565b60008281526001602081905260409091200154610a9c81610bb6565b6105e08383610d57565b610aae610b73565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610ad881610bb6565b610ae0610bc0565b610b0173ffffffffffffffffffffffffffffffffffffffff85168484610bff565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb84604051610b6091815260200190565b60405180910390a35061063f6001600055565b600260005403610baf576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6106768133610eee565b60025460ff1615610bfd576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063f908490610f7f565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610d4f57600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610412565b506000610412565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610d4f57600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610412565b610e1e611015565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610e9b610bc0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e693390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610f7b576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610fa173ffffffffffffffffffffffffffffffffffffffff841683611051565b90508051600014158015610fc6575080806020019051810190610fc491906114fc565b155b1561063f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f72565b60025460ff16610bfd576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061105f83836000611066565b9392505050565b6060814710156110a4576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610f72565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516110cd9190611566565b60006040518083038185875af1925050503d806000811461110a576040519150601f19603f3d011682016040523d82523d6000602084013e61110f565b606091505b509150915061111f868383611129565b9695505050505050565b60608261113e57611139826111b8565b61105f565b8151158015611162575073ffffffffffffffffffffffffffffffffffffffff84163b155b156111b1576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f72565b508061105f565b8051156111c85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561120c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461105f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b919050565b60008083601f84011261127757600080fd5b50813567ffffffffffffffff81111561128f57600080fd5b6020830191508360208285010111156112a757600080fd5b9250929050565b6000806000806000608086880312156112c657600080fd5b6112cf8661123c565b94506112dd6020870161123c565b935060408601359250606086013567ffffffffffffffff81111561130057600080fd5b61130c88828901611265565b969995985093965092949392505050565b60006020828403121561132f57600080fd5b5035919050565b6000806040838503121561134957600080fd5b823591506113596020840161123c565b90509250929050565b6000806000806060858703121561137857600080fd5b6113818561123c565b935060208501359250604085013567ffffffffffffffff8111156113a457600080fd5b6113b087828801611265565b95989497509550505050565b6000806000606084860312156113d157600080fd5b6113da8461123c565b92506113e86020850161123c565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114946080830184866113f9565b979650505050505050565b8381526040602082015260006114b96040830184866113f9565b95945050505050565b80820180821115610412577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561150e57600080fd5b8151801515811461105f57600080fd5b60006020828403121561153057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015611587576020818601810151858301520161156d565b50600092019182525091905056fea2646970667358221220c22f4256b34c7ceff39a5acf8d5ae318549565a6265a9a23b2d9459a9845ff3f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; type ERC20CustodyEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC20Custody__factory.ts b/v2/typechain-types/factories/ERC20Custody__factory.ts index b4edc335..2d25c497 100644 --- a/v2/typechain-types/factories/ERC20Custody__factory.ts +++ b/v2/typechain-types/factories/ERC20Custody__factory.ts @@ -582,7 +582,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033"; + "0x60a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a0033"; type ERC20CustodyConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts index 6c4f4e0b..b0cc5263 100644 --- a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -1062,7 +1062,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220dbe54b12cfd6fb8144d0b6a09a13bd9183d367931fa65bca2b5181643e10ee2f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea26469706673582212200fd3ed84e3fbdfb2ef2e1a1b3488bd9aedf7f2868f67d3a97be92232698a4b8364736f6c634300081a0033"; + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610154565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b90610206565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283161790556001546040513092919091169082906100f290610213565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561012e573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610220565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146102035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f806133f683390190565b61140b8061409583390190565b6080516131ad61024960003960008181611f2601528181611f4f015261231e01526131ad6000f3fe6080604052600436106102345760003560e01c80635c975abb11610138578063ad3cb1cc116100b0578063d547741f1161007f578063e63ab1e911610064578063e63ab1e9146106ff578063f340fa0114610733578063f45346dc1461074657600080fd5b8063d547741f146106bf578063dda79b75146106df57600080fd5b8063ad3cb1cc14610616578063ae7a3a6f1461065f578063b8969bd41461067f578063c0c53b8b1461069f57600080fd5b80638456cb591161010757806391d14854116100ec57806391d1485414610568578063a217fddf146105cd578063a783c789146105e257600080fd5b80638456cb59146105335780638c6f037f1461054857600080fd5b80635c975abb146104885780635d62c860146104bf5780636ab90f9b146104f357806381100bf01461051357600080fd5b806335c018db116101cb5780634f1ef2861161019a57806352d1902d1161017f57806352d1902d1461043357806357bec62f146104485780635b1125911461046857600080fd5b80634f1ef286146104005780635131ab591461041357600080fd5b806335c018db1461039857806336568abe146103ab5780633c2f05a8146103cb5780633f4ba83a146103eb57600080fd5b806321e093b11161020757806321e093b1146102d0578063248a9ca31461030857806329c59b5d146103655780632f2ff15d1461037857600080fd5b806301ffc9a71461023957806310188aef1461026e5780631b8b921d146102905780631cff79cd146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004612b97565b610766565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e610289366004612bf5565b6107ff565b005b34801561029c57600080fd5b5061028e6102ab366004612c59565b6108f3565b6102c36102be366004612c59565b61097e565b6040516102659190612d1a565b3480156102dc57600080fd5b506003546102f0906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561031457600080fd5b50610357610323366004612d2d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b61028e610373366004612c59565b610a41565b34801561038457600080fd5b5061028e610393366004612d46565b610b94565b61028e6103a6366004612c59565b610bde565b3480156103b757600080fd5b5061028e6103c6366004612d46565b610dcd565b3480156103d757600080fd5b506004546102f0906001600160a01b031681565b3480156103f757600080fd5b5061028e610e19565b61028e61040e366004612da1565b610e4e565b34801561041f57600080fd5b5061028e61042e366004612ea8565b610e6d565b34801561043f57600080fd5b5061035761114a565b34801561045457600080fd5b506002546102f0906001600160a01b031681565b34801561047457600080fd5b506001546102f0906001600160a01b031681565b34801561049457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104cb57600080fd5b506103577f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b3480156104ff57600080fd5b5061028e61050e366004612f17565b611179565b34801561051f57600080fd5b506005546102f0906001600160a01b031681565b34801561053f57600080fd5b5061028e6112a4565b34801561055457600080fd5b5061028e610563366004612f71565b6112d6565b34801561057457600080fd5b50610259610583366004612d46565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d957600080fd5b50610357600081565b3480156105ee57600080fd5b506103577f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561062257600080fd5b506102c36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561066b57600080fd5b5061028e61067a366004612bf5565b6113ac565b34801561068b57600080fd5b5061028e61069a366004612ea8565b6114a0565b3480156106ab57600080fd5b5061028e6106ba366004612fc3565b611619565b3480156106cb57600080fd5b5061028e6106da366004612d46565b6118ce565b3480156106eb57600080fd5b506000546102f0906001600160a01b031681565b34801561070b57600080fd5b506103577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61028e610741366004612bf5565b611912565b34801561075257600080fd5b5061028e610761366004613006565b611a67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061080a81611b22565b6002546001600160a01b03161561084d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661088d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b77f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108fb611c19565b610903611c77565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610948929190613082565b60405180910390a361097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109aa81611b22565b6109b2611c19565b6109ba611c77565b60006109c7868686611d1e565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610a069392919061309e565b60405180910390a29150610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610a49611c19565b610a51611c77565b34600003610a8b576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ad8576040519150601f19603f3d011682016040523d82523d6000602084013e610add565b606091505b5050905080610b18576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610b6294939291906130b8565b60405180910390a35061097960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bce81611b22565b610bd88383611b2c565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c0881611b22565b610c10611c19565b610c18611c77565b6001600160a01b038416610c58576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ca5576040519150601f19603f3d011682016040523d82523d6000602084013e610caa565b606091505b5050905080610ce5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610d2c9087908790600401613082565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610d9b9392919061309e565b60405180910390a250610bd860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610e0f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109798282611dc7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4381611b22565b610e4b611e8b565b50565b610e56611f1b565b610e5f82611feb565b610e698282611ff6565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610e9781611b22565b610e9f611c19565b610ea7611c77565b83600003610ee1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eeb868661211a565b610f21576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad91906130e1565b610fe3576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff0868585611d1e565b9050610ffc878761211a565b611032576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b69190613103565b905080156110c8576110c888826121aa565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161110f9392919061309e565b60405180910390a3505061114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000611154612313565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505060045461121192506001600160a01b0316905085858585610e6d565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613103565b15610bd857610bd861311c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112ce81611b22565b610e4b612375565b6112de611c19565b6112e6611c77565b83600003611320576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132b3384866123ee565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161137494939291906130b8565b60405180910390a36113a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006113b781611b22565b6000546001600160a01b0316156113fa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661143a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114647f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2c565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114ca81611b22565b6114d2611c19565b6114da611c77565b83600003611514576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115286001600160a01b0387168686612577565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061156f9086908690600401613082565b600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516115e89392919061309e565b60405180910390a361114260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156116645750825b905060008267ffffffffffffffff1660011480156116815750303b155b90508115801561168f575080155b156116c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117275784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061174457506001600160a01b038716155b1561177b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117836125eb565b61178b6125f3565b6117936125eb565b61179b612603565b6117a6600087611b2c565b506117d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2c565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561182f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2c565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156118c45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461190881611b22565b610bd88383611dc7565b61191a611c19565b611922611c77565b3460000361195c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146119a9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ae565b606091505b50509050806119e9576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610e4b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611a6f611c19565b611a77611c77565b81600003611ab1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611abc3382846123ee565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516109489291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610e4b8133612613565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107f9565b60009150506107f9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611d3e92919061314b565b60006040518083038185875af1925050503d8060008114611d7b576040519150601f19603f3d011682016040523d82523d6000602084013e611d80565b606091505b509150915081611dbc576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107f9565b611e936126a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611fa87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e6981611b22565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561206e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261206b91810190613103565b60015b6120b4576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612110576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016120ab565b61097983836126fb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906130e1565b6003546001600160a01b03908116908316036122f9576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906130e1565b612286576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b1580156122e557600080fd5b505af1158015611142573d6000803e3d6000fd5b600054610e69906001600160a01b03848116911683612577565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d611c19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611efd565b6003546001600160a01b039081169083160361255b576124196001600160a01b038316843084612751565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906130e1565b6124df576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b50505050505050565b600054610979906001600160a01b038481169186911684612751565b6040516001600160a01b0383811660248301526044820183905261097991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061278a565b611c75612806565b6125fb612806565b611c7561286d565b61260b612806565b611c75612875565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610e69576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016120ab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612704826128c6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561274957610979828261296e565b610e696129e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610bd89186918216906323b872dd906084016125a4565b600061279f6001600160a01b03841683612a1c565b905080516000141580156127c45750808060200190518101906127c291906130e1565b155b15610979576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016120ab565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cf8612806565b61287d612806565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612915576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016120ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161298b919061315b565b600060405180830381855af49150503d80600081146129c6576040519150601f19603f3d011682016040523d82523d6000602084013e6129cb565b606091505b50915091506129db858383612a2a565b95945050505050565b3415611c75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611dc083836000612a9f565b606082612a3f57612a3a82612b55565b611dc0565b8151158015612a5657506001600160a01b0384163b155b15612a98576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016120ab565b5080611dc0565b606081471015612add576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016120ab565b600080856001600160a01b03168486604051612af9919061315b565b60006040518083038185875af1925050503d8060008114612b36576040519150601f19603f3d011682016040523d82523d6000602084013e612b3b565b606091505b5091509150612b4b868383612a2a565b9695505050505050565b805115612b655780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612ba957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dc057600080fd5b80356001600160a01b0381168114612bf057600080fd5b919050565b600060208284031215612c0757600080fd5b611dc082612bd9565b60008083601f840112612c2257600080fd5b50813567ffffffffffffffff811115612c3a57600080fd5b602083019150836020828501011115612c5257600080fd5b9250929050565b600080600060408486031215612c6e57600080fd5b612c7784612bd9565b9250602084013567ffffffffffffffff811115612c9357600080fd5b612c9f86828701612c10565b9497909650939450505050565b60005b83811015612cc7578181015183820152602001612caf565b50506000910152565b60008151808452612ce8816020860160208601612cac565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dc06020830184612cd0565b600060208284031215612d3f57600080fd5b5035919050565b60008060408385031215612d5957600080fd5b82359150612d6960208401612bd9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612db457600080fd5b612dbd83612bd9565b9150602083013567ffffffffffffffff811115612dd957600080fd5b8301601f81018513612dea57600080fd5b803567ffffffffffffffff811115612e0457612e04612d72565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612e7057612e70612d72565b604052818152828201602001871015612e8857600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ec057600080fd5b612ec986612bd9565b9450612ed760208701612bd9565b935060408601359250606086013567ffffffffffffffff811115612efa57600080fd5b612f0688828901612c10565b969995985093965092949392505050565b60008060008060608587031215612f2d57600080fd5b612f3685612bd9565b935060208501359250604085013567ffffffffffffffff811115612f5957600080fd5b612f6587828801612c10565b95989497509550505050565b600080600080600060808688031215612f8957600080fd5b612f9286612bd9565b945060208601359350612fa760408701612bd9565b9250606086013567ffffffffffffffff811115612efa57600080fd5b600080600060608486031215612fd857600080fd5b612fe184612bd9565b9250612fef60208501612bd9565b9150612ffd60408501612bd9565b90509250925092565b60008060006060848603121561301b57600080fd5b61302484612bd9565b925060208401359150612ffd60408501612bd9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000613096602083018486613039565b949350505050565b8381526040602082015260006129db604083018486613039565b8481526001600160a01b0384166020820152606060408201526000612b4b606083018486613039565b6000602082840312156130f357600080fd5b81518015158114611dc057600080fd5b60006020828403121561311557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161316d818460208701612cac565b919091019291505056fea2646970667358221220af74e0039ccd316ad209c39ddb2d59569d0e7332f3cba90d28e03811e710d7ca64736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a003360a060405234801561001057600080fd5b5060405161140b38038061140b83398101604081905261002f916101b3565b60016000556002805460ff191690556001600160a01b038316158061005b57506001600160a01b038216155b8061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0383166080526100a3600082610102565b506100ce7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610102565b506100f97f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610102565b505050506101f6565b60008281526001602090815260408083206001600160a01b038516845290915281205460ff1661018d5760008381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610191565b5060005b92915050565b80516001600160a01b03811681146101ae57600080fd5b919050565b6000806000606084860312156101c857600080fd5b6101d184610197565b92506101df60208501610197565b91506101ed60408501610197565b90509250925092565b6080516111de61022d60003960008181610132015281816103c5015281816104270152818161065801526106ba01526111de6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063c8a0236211610066578063c8a0236214610276578063d547741f14610289578063d9caed121461029c578063e63ab1e9146102af57600080fd5b80638456cb59146101f957806385f438c11461020157806391d1485414610228578063a217fddf1461026e57600080fd5b80632f2ff15d116100d35780632f2ff15d146101c057806336568abe146101d35780633f4ba83a146101e65780635c975abb146101ee57600080fd5b806301ffc9a714610105578063116191b61461012d57806321fc65f214610179578063248a9ca31461018e575b600080fd5b610118610113366004610f04565b6102d6565b60405190151581526020015b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018c610187366004610f6f565b61036f565b005b6101b261019c36600461100c565b6000908152600160208190526040909120015490565b604051908152602001610124565b61018c6101ce366004611025565b610511565b61018c6101e1366004611025565b61053d565b61018c61059b565b60025460ff16610118565b61018c6105d0565b6101b27f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610118610236366004611025565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101b2600081565b61018c610284366004610f6f565b610602565b61018c610297366004611025565b61078a565b61018c6102aa366004611051565b6107b0565b6101b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061036957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61037761087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46103a1816108c0565b6103a96108ca565b6103ea73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061046490899089908990899089906004016110d7565b600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8686866040516104f793929190611134565b60405180910390a35061050a6001600055565b5050505050565b6000828152600160208190526040909120015461052d816108c0565b6105378383610996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461058c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105968282610a61565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105c5816108c0565b6105cd610b20565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6105fa816108c0565b6105cd610b9d565b61060a61087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610634816108c0565b61063c6108ca565b61067d73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000086610909565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906106f790899089908990899089906004016110d7565b600060405180830381600087803b15801561071157600080fd5b505af1158015610725573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88686866040516104f793929190611134565b600082815260016020819052604090912001546107a6816108c0565b6105378383610a61565b6107b861087d565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107e2816108c0565b6107ea6108ca565b61080b73ffffffffffffffffffffffffffffffffffffffff85168484610909565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161086a91815260200190565b60405180910390a3506105966001600055565b6002600054036108b9576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6105cd8133610bf8565b60025460ff1615610907576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610596908490610c89565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610a5957600083815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a4506001610369565b506000610369565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610a5957600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610369565b610b28610d1f565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b610ba56108ca565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b733390565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610c85576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610cab73ffffffffffffffffffffffffffffffffffffffff841683610d5b565b90508051600014158015610cd0575080806020019051810190610cce9190611157565b155b15610596576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c7c565b60025460ff16610907576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610d6983836000610d70565b9392505050565b606081471015610dae576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c7c565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610dd79190611179565b60006040518083038185875af1925050503d8060008114610e14576040519150601f19603f3d011682016040523d82523d6000602084013e610e19565b606091505b5091509150610e29868383610e33565b9695505050505050565b606082610e4857610e4382610ec2565b610d69565b8151158015610e6c575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610ebb576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c7c565b5080610d69565b805115610ed25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215610f1657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d6957600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610f6a57600080fd5b919050565b600080600080600060808688031215610f8757600080fd5b610f9086610f46565b9450610f9e60208701610f46565b935060408601359250606086013567ffffffffffffffff811115610fc157600080fd5b8601601f81018813610fd257600080fd5b803567ffffffffffffffff811115610fe957600080fd5b886020828401011115610ffb57600080fd5b959894975092955050506020019190565b60006020828403121561101e57600080fd5b5035919050565b6000806040838503121561103857600080fd5b8235915061104860208401610f46565b90509250929050565b60008060006060848603121561106657600080fd5b61106f84610f46565b925061107d60208501610f46565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152600061112960808301848661108e565b979650505050505050565b83815260406020820152600061114e60408301848661108e565b95945050505050565b60006020828403121561116957600080fd5b81518015158114610d6957600080fd5b6000825160005b8181101561119a5760208186018101518583015201611180565b50600092019182525091905056fea264697066735822122035ca457bdc8b45adde9844ff8416a0abd723c23055fd6933ddc05523b5f5b6de64736f6c634300081a0033"; type GatewayEVMEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts index 541946fc..9dde90ab 100644 --- a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -1038,7 +1038,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea26469706673582212207e9eea909dd03b9b991625c57d71ab317ff14c9101aa69f58639434bfe06a78f64736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612d526100fd60003960008181611ab101528181611ada0152611f250152612d526000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046127c5565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612823565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612887565b610842565b61027261026d366004612887565b610894565b6040516102149190612948565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d236600461295b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612887565b61091d565b34801561033357600080fd5b5061023d610342366004612974565b610a42565b61023d610355366004612887565b610a8c565b34801561036657600080fd5b5061023d610375366004612974565b610c0b565b34801561038657600080fd5b5061023d610c5c565b61023d61039d3660046129cf565b610c91565b3480156103ae57600080fd5b5061023d6103bd366004612ad6565b610cb0565b3480156103ce57600080fd5b50610306610f85565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d610fb4565b3480156104a357600080fd5b5061023d6104b2366004612b45565b610fe6565b3480156104c357600080fd5b506102086104d2366004612974565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612823565b611083565b3480156105da57600080fd5b5061023d6105e9366004612ad6565b611177565b3480156105fa57600080fd5b5061023d610609366004612b97565b6112e9565b34801561061a57600080fd5b5061023d610629366004612974565b61159e565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612823565b6115e2565b3480156106a157600080fd5b5061023d6106b0366004612bda565b611707565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610759816117b2565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610887929190612c56565b60405180910390a3505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108c0816117b2565b60006108cd8686866118a9565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634878760405161090c93929190612c72565b60405180910390a295945050505050565b34600003610957576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50909150508015156000036109ea576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610a349493929190612c8c565b60405180910390a350505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610a7c816117b2565b610a8683836117bc565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610ab6816117b2565b600080856001600160a01b03163460405160006040518083038185875af1925050503d8060008114610b04576040519150601f19603f3d011682016040523d82523d6000602084013e610b09565b606091505b509150915081610b45576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03871690638fcaa0b590610b8c9088908890600401612c56565b600060405180830381600087803b158015610ba657600080fd5b505af1158015610bba573d6000803e3d6000fd5b50505050856001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348787604051610bfb93929190612c72565b60405180910390a2505050505050565b6001600160a01b0381163314610c4d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c578282611952565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c86816117b2565b610c8e611a16565b50565b610c99611aa6565b610ca282611b78565b610cac8282611b83565b5050565b610cb8611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610ce2816117b2565b83600003610d1c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d268686611d28565b610d5c576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190612cb5565b610e1e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2b8685856118a9565b9050610e378787611d28565b610e6d576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612cd7565b90508015610f0357610f038882611db8565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382888888604051610f4a93929190612c72565b60405180910390a3505050610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610f8f611f1a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610fde816117b2565b610c8e611f7c565b83600003611020576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102b338486611ff5565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110749493929190612c8c565b60405180910390a35050505050565b600061108e816117b2565b6000546001600160a01b0316156110d1576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216611111576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9836117bc565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61117f611ca7565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96111a9816117b2565b836000036111e3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f76001600160a01b0387168686612149565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061123e9086908690600401612c56565b600060405180830381600087803b15801561125857600080fd5b505af115801561126c573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78686866040516112b793929190612c72565b60405180910390a350610f7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113345750825b905060008267ffffffffffffffff1660011480156113515750303b155b90508115801561135f575080155b15611396576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113f75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061141457506001600160a01b038716155b1561144b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114536121bd565b61145b6121c5565b6114636121bd565b61146b6121d5565b6114766000876117bc565b506114a17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a876117bc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556114ff7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb896117bc565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156115945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d8816117b2565b610a868383611952565b3460000361161c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611669576040519150601f19603f3d011682016040523d82523d6000602084013e61166e565b606091505b50909150508015156000036116af576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611741576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61174c338284611ff5565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108879291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610c8e81336121e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661189f576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118553390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b6060600080856001600160a01b03163486866040516118c9929190612cf0565b60006040518083038185875af1925050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b509150915081611947576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561189f576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611a1e612272565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b3f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b337f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610cac816117b2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611bf891810190612cd7565b60015b611c41576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611c9d576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611c38565b610c5783836122cd565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d22576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194b9190612cb5565b6003546001600160a01b0390811690831603611eda576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e9190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ebe57600080fd5b505af1158015611ed2573d6000803e3d6000fd5b505050505050565b600054610cac906001600160a01b03848116911683612149565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b76576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f84612323565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611a88565b6003546001600160a01b039081169083160361212d576120206001600160a01b03831684308461237f565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b09190612cb5565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561211057600080fd5b505af1158015612124573d6000803e3d6000fd5b50505050505050565b600054610c57906001600160a01b03848116918691168461237f565b6040516001600160a01b03838116602483015260448201839052610c5791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b8565b611b76612434565b6121cd612434565b611b7661249b565b6121dd612434565b611b766124a3565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610cac576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611c38565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611b76576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122d6826124f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561231b57610c57828261259c565b610cac612612565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611b76576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610a869186918216906323b872dd90608401612176565b60006123cd6001600160a01b0384168361264a565b905080516000141580156123f25750808060200190518101906123f09190612cb5565b155b15610c57576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611c38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b76576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ef4612434565b6124ab612434565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612543576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611c38565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516125b99190612d00565b600060405180830381855af49150503d80600081146125f4576040519150601f19603f3d011682016040523d82523d6000602084013e6125f9565b606091505b5091509150612609858383612658565b95945050505050565b3415611b76576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061194b838360006126cd565b60608261266d5761266882612783565b61194b565b815115801561268457506001600160a01b0384163b155b156126c6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611c38565b508061194b565b60608147101561270b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611c38565b600080856001600160a01b031684866040516127279190612d00565b60006040518083038185875af1925050503d8060008114612764576040519150601f19603f3d011682016040523d82523d6000602084013e612769565b606091505b5091509150612779868383612658565b9695505050505050565b8051156127935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156127d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461194b57600080fd5b80356001600160a01b038116811461281e57600080fd5b919050565b60006020828403121561283557600080fd5b61194b82612807565b60008083601f84011261285057600080fd5b50813567ffffffffffffffff81111561286857600080fd5b60208301915083602082850101111561288057600080fd5b9250929050565b60008060006040848603121561289c57600080fd5b6128a584612807565b9250602084013567ffffffffffffffff8111156128c157600080fd5b6128cd8682870161283e565b9497909650939450505050565b60005b838110156128f55781810151838201526020016128dd565b50506000910152565b600081518084526129168160208601602086016128da565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061194b60208301846128fe565b60006020828403121561296d57600080fd5b5035919050565b6000806040838503121561298757600080fd5b8235915061299760208401612807565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156129e257600080fd5b6129eb83612807565b9150602083013567ffffffffffffffff811115612a0757600080fd5b8301601f81018513612a1857600080fd5b803567ffffffffffffffff811115612a3257612a326129a0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612a9e57612a9e6129a0565b604052818152828201602001871015612ab657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612aee57600080fd5b612af786612807565b9450612b0560208701612807565b935060408601359250606086013567ffffffffffffffff811115612b2857600080fd5b612b348882890161283e565b969995985093965092949392505050565b600080600080600060808688031215612b5d57600080fd5b612b6686612807565b945060208601359350612b7b60408701612807565b9250606086013567ffffffffffffffff811115612b2857600080fd5b600080600060608486031215612bac57600080fd5b612bb584612807565b9250612bc360208501612807565b9150612bd160408501612807565b90509250925092565b600080600060608486031215612bef57600080fd5b612bf884612807565b925060208401359150612bd160408501612807565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612c6a602083018486612c0d565b949350505050565b838152604060208201526000612609604083018486612c0d565b8481526001600160a01b0384166020820152606060408201526000612779606083018486612c0d565b600060208284031215612cc757600080fd5b8151801515811461194b57600080fd5b600060208284031215612ce957600080fd5b5051919050565b8183823760009101908152919050565b60008251612d128184602087016128da565b919091019291505056fea2646970667358221220f5f94badcd1bd52ad12da244f7c4f330f2fb5d16305f04303cf08087abeff75664736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts index afc62f64..126f8c5e 100644 --- a/v2/typechain-types/factories/GatewayEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -1010,7 +1010,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea2646970667358221220a687edeef343516f84769d1a465816f153b29abeb9124499976e38f91c91a58864736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f486100fd60003960008181611d4a01528181611d7301526121420152612f486000f3fe6080604052600436106101e35760003560e01c80635c975abb11610102578063ae7a3a6f11610095578063dda79b7511610064578063dda79b751461062e578063e63ab1e91461064e578063f340fa0114610682578063f45346dc1461069557600080fd5b8063ae7a3a6f146105ae578063b8969bd4146105ce578063c0c53b8b146105ee578063d547741f1461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635c975abb146104175780635d62c8601461044e5780638456cb59146104825780638c6f037f1461049757600080fd5b806335c018db1161017a5780635131ab59116101495780635131ab59146103a257806352d1902d146103c257806357bec62f146103d75780635b112591146103f757600080fd5b806335c018db1461034757806336568abe1461035a5780633f4ba83a1461037a5780634f1ef2861461038f57600080fd5b806321e093b1116101b657806321e093b11461027f578063248a9ca3146102b757806329c59b5d146103145780632f2ff15d1461032757600080fd5b806301ffc9a7146101e857806310188aef1461021d5780631b8b921d1461023f5780631cff79cd1461025f575b600080fd5b3480156101f457600080fd5b506102086102033660046129bb565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612a19565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612a7d565b610842565b61027261026d366004612a7d565b6108cd565b6040516102149190612b3e565b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102c357600080fd5b506103066102d2366004612b51565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b61023d610322366004612a7d565b610990565b34801561033357600080fd5b5061023d610342366004612b6a565b610ae3565b61023d610355366004612a7d565b610b2d565b34801561036657600080fd5b5061023d610375366004612b6a565b610d1c565b34801561038657600080fd5b5061023d610d68565b61023d61039d366004612bc5565b610d9d565b3480156103ae57600080fd5b5061023d6103bd366004612ccc565b610dbc565b3480156103ce57600080fd5b50610306611099565b3480156103e357600080fd5b5060025461029f906001600160a01b031681565b34801561040357600080fd5b5060015461029f906001600160a01b031681565b34801561042357600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045a57600080fd5b506103067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b34801561048e57600080fd5b5061023d6110c8565b3480156104a357600080fd5b5061023d6104b2366004612d3b565b6110fa565b3480156104c357600080fd5b506102086104d2366004612b6a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610306600081565b34801561053d57600080fd5b506103067f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102726040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612a19565b6111d0565b3480156105da57600080fd5b5061023d6105e9366004612ccc565b6112c4565b3480156105fa57600080fd5b5061023d610609366004612d8d565b61143d565b34801561061a57600080fd5b5061023d610629366004612b6a565b6116f2565b34801561063a57600080fd5b5060005461029f906001600160a01b031681565b34801561065a57600080fd5b506103067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d610690366004612a19565b611736565b3480156106a157600080fd5b5061023d6106b0366004612dd0565b61188b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611946565b6002546001600160a01b03161561079c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107dc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611a3d565b610852611a9b565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610897929190612e4c565b60405180910390a36108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6108f981611946565b610901611a3d565b610909611a9b565b6000610916868686611b42565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34878760405161095593929190612e68565b60405180910390a2915061098860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b610998611a3d565b6109a0611a9b565b346000036109da576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a27576040519150601f19603f3d011682016040523d82523d6000602084013e610a2c565b606091505b5050905080610a67576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610ab19493929190612e82565b60405180910390a3506108c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b1d81611946565b610b278383611950565b50505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b5781611946565b610b5f611a3d565b610b67611a9b565b6001600160a01b038416610ba7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610bf4576040519150601f19603f3d011682016040523d82523d6000602084013e610bf9565b606091505b5050905080610c34576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b590610c7b9087908790600401612e4c565b600060405180830381600087803b158015610c9557600080fd5b505af1158015610ca9573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610cea93929190612e68565b60405180910390a250610b2760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b0381163314610d5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c88282611beb565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d9281611946565b610d9a611caf565b50565b610da5611d3f565b610dae82611e0f565b610db88282611e1a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610de681611946565b610dee611a3d565b610df6611a9b565b83600003610e30576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3a8686611f3e565b610e70576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190612eab565b610f32576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3f868585611b42565b9050610f4b8787611f3e565b610f81576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612ecd565b90508015611017576110178882611fce565b866001600160a01b0316886001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738288888860405161105e93929190612e68565b60405180910390a3505061109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b60006110a3612137565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f281611946565b610d9a612199565b611102611a3d565b61110a611a9b565b83600003611144576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61114f338486612212565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516111989493929190612e82565b60405180910390a36111c960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60006111db81611946565b6000546001600160a01b03161561121e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661125e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112887f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611950565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112ee81611946565b6112f6611a3d565b6112fe611a9b565b83600003611338576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134c6001600160a01b038716868661239b565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b5906113939086908690600401612e4c565b600060405180830381600087803b1580156113ad57600080fd5b505af11580156113c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda786868660405161140c93929190612e68565b60405180910390a361109160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156114885750825b905060008267ffffffffffffffff1660011480156114a55750303b155b9050811580156114b3575080155b156114ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561154b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061156857506001600160a01b038716155b1561159f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115a761240f565b6115af612417565b6115b761240f565b6115bf612427565b6115ca600087611950565b506115f57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611950565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556116537f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611950565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116e85784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461172c81611946565b610b278383611beb565b61173e611a3d565b611746611a9b565b34600003611780576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146117cd576040519150601f19603f3d011682016040523d82523d6000602084013e6117d2565b606091505b505090508061180d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a350610d9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611893611a3d565b61189b611a9b565b816000036118d5576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e0338284612212565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516108979291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b610d9a8133612437565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611a33576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119e93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611a99576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611b16576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611b62929190612ee6565b60006040518083038185875af1925050503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b509150915081611be0576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611a33576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b611cb76124c4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611dd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dcc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610db881611946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e92575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e8f91810190612ecd565b60015b611ed8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611f34576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ecf565b6108c8838361251f565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190612eab565b6003546001600160a01b039081169083160361211d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120749190612eab565b6120aa576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561210957600080fd5b505af1158015611091573d6000803e3d6000fd5b600054610db8906001600160a01b0384811691168361239b565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a99576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121a1611a3d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611d21565b6003546001600160a01b039081169083160361237f5761223d6001600160a01b038316843084612575565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156122a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cd9190612eab565b612303576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50505050505050565b6000546108c8906001600160a01b038481169186911684612575565b6040516001600160a01b038381166024830152604482018390526108c891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506125ae565b611a9961262a565b61241f61262a565b611a99612691565b61242f61262a565b611a99612699565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610db8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ecf565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611a99576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612528826126ea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561256d576108c88282612792565b610db8612808565b6040516001600160a01b038481166024830152838116604483015260648201839052610b279186918216906323b872dd906084016123c8565b60006125c36001600160a01b03841683612840565b905080516000141580156125e85750808060200190518101906125e69190612eab565b155b156108c8576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611a99576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b1c61262a565b6126a161262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612739576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ecf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127af9190612ef6565b600060405180830381855af49150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b50915091506127ff85838361284e565b95945050505050565b3415611a99576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611be4838360006128c3565b6060826128635761285e82612979565b611be4565b815115801561287a57506001600160a01b0384163b155b156128bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ecf565b5080611be4565b606081471015612901576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ecf565b600080856001600160a01b0316848660405161291d9190612ef6565b60006040518083038185875af1925050503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915061296f86838361284e565b9695505050505050565b8051156129895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156129cd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611be457600080fd5b80356001600160a01b0381168114612a1457600080fd5b919050565b600060208284031215612a2b57600080fd5b611be4826129fd565b60008083601f840112612a4657600080fd5b50813567ffffffffffffffff811115612a5e57600080fd5b602083019150836020828501011115612a7657600080fd5b9250929050565b600080600060408486031215612a9257600080fd5b612a9b846129fd565b9250602084013567ffffffffffffffff811115612ab757600080fd5b612ac386828701612a34565b9497909650939450505050565b60005b83811015612aeb578181015183820152602001612ad3565b50506000910152565b60008151808452612b0c816020860160208601612ad0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611be46020830184612af4565b600060208284031215612b6357600080fd5b5035919050565b60008060408385031215612b7d57600080fd5b82359150612b8d602084016129fd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215612bd857600080fd5b612be1836129fd565b9150602083013567ffffffffffffffff811115612bfd57600080fd5b8301601f81018513612c0e57600080fd5b803567ffffffffffffffff811115612c2857612c28612b96565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612c9457612c94612b96565b604052818152828201602001871015612cac57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215612ce457600080fd5b612ced866129fd565b9450612cfb602087016129fd565b935060408601359250606086013567ffffffffffffffff811115612d1e57600080fd5b612d2a88828901612a34565b969995985093965092949392505050565b600080600080600060808688031215612d5357600080fd5b612d5c866129fd565b945060208601359350612d71604087016129fd565b9250606086013567ffffffffffffffff811115612d1e57600080fd5b600080600060608486031215612da257600080fd5b612dab846129fd565b9250612db9602085016129fd565b9150612dc7604085016129fd565b90509250925092565b600080600060608486031215612de557600080fd5b612dee846129fd565b925060208401359150612dc7604085016129fd565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612e60602083018486612e03565b949350505050565b8381526040602082015260006127ff604083018486612e03565b8481526001600160a01b038416602082015260606040820152600061296f606083018486612e03565b600060208284031215612ebd57600080fd5b81518015158114611be457600080fd5b600060208284031215612edf57600080fd5b5051919050565b8183823760009101908152919050565b60008251612f08818460208701612ad0565b919091019291505056fea26469706673582212208889b449de125bcd9995c2452115e4c4e941948f5ff17d068f0677c925a7730064736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts index 59ddd821..8c297454 100644 --- a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -598,7 +598,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea26469706673582212201f9aea05b0089c759bde2345b26d3261321221ee50c010186979f0c6dd11296364736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b506040516115f63803806115f683398101604081905261002f916101ef565b60016000819055805460ff19169055838383836001600160a01b038416158061005f57506001600160a01b038316155b8061007157506001600160a01b038216155b8061008357506001600160a01b038116155b156100a15760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100bf600082610123565b506100ea7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610123565b506101157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610123565b505050505050505050610243565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101c95760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101cd565b5060005b92915050565b80516001600160a01b03811681146101ea57600080fd5b919050565b6000806000806080858703121561020557600080fd5b61020e856101d3565b935061021c602086016101d3565b925061022a604086016101d3565b9150610238606086016101d3565b905092959194509250565b60805160a0516113486102ae600039600081816101dc01528181610432015281816104e3015281816105fd0152818161079101528181610842015261091001526000818161019001528181610454015281816104b6015281816107b3015261081501526113486000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635c975abb116100b257806385f438c111610081578063a217fddf11610066578063a217fddf14610303578063d547741f1461030b578063e63ab1e91461031e57600080fd5b806385f438c11461029657806391d14854146102bd57600080fd5b80635c975abb1461025d5780635e3e9fef14610268578063743e0c9b1461027b5780638456cb591461028e57600080fd5b806321e093b1116101095780632f2ff15d116100ee5780632f2ff15d1461022f57806336568abe146102425780633f4ba83a1461025557600080fd5b806321e093b1146101d7578063248a9ca3146101fe57600080fd5b806301ffc9a71461013b57806302d5c89914610163578063106e629014610178578063116191b61461018b575b600080fd5b61014e610149366004611083565b610345565b60405190151581526020015b60405180910390f35b6101766101713660046110ee565b6103de565b005b610176610186366004611180565b6105a9565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101b27f000000000000000000000000000000000000000000000000000000000000000081565b61022161020c3660046111b3565b60009081526002602052604090206001015490565b60405190815260200161015a565b61017661023d3660046111cc565b610684565b6101766102503660046111cc565b6106af565b610176610708565b60015460ff1661014e565b6101766102763660046110ee565b61073d565b6101766102893660046111b3565b6108ee565b610176610938565b6102217f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b61014e6102cb3660046111cc565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610221600081565b6101766103193660046111cc565b61096a565b6102217f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103d857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6103e661098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610410816109d2565b6104186109dc565b61047973ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd490610513907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe86868660405161058f9392919061129e565b60405180910390a2506105a26001600055565b5050505050565b6105b161098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46105db816109d2565b6105e36109dc565b61062473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585610a1b565b8373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161066c91815260200190565b60405180910390a25061067f6001600055565b505050565b60008281526002602052604090206001015461069f816109d2565b6106a98383610a9c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106fe576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067f8282610b9c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610732816109d2565b61073a610c5b565b50565b61074561098f565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f816109d2565b6107776109dc565b6107d873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000087610a1b565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab5990610872907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a90600401611241565b600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced86868660405161058f9392919061129e565b6108f66109dc565b61073a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cd8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610962816109d2565b61073a610d1e565b600082815260026020526040902060010154610985816109d2565b6106a98383610b9c565b6002600054036109cb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b61073a8133610d77565b60015460ff1615610a19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261067f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e08565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610b323390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103d8565b5060006103d8565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610b9457600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103d8565b610c63610e9e565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526106a99186918216906323b872dd90608401610a55565b610d266109dc565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610cae565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e04576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b6000610e2a73ffffffffffffffffffffffffffffffffffffffff841683610eda565b90508051600014158015610e4f575080806020019051810190610e4d91906112c1565b155b1561067f576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dfb565b60015460ff16610a19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060610ee883836000610eef565b9392505050565b606081471015610f2d576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dfb565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610f5691906112e3565b60006040518083038185875af1925050503d8060008114610f93576040519150601f19603f3d011682016040523d82523d6000602084013e610f98565b606091505b5091509150610fa8868383610fb2565b9695505050505050565b606082610fc757610fc282611041565b610ee8565b8151158015610feb575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561103a576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dfb565b5080610ee8565b8051156110515780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561109557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146110e957600080fd5b919050565b60008060008060006080868803121561110657600080fd5b61110f866110c5565b945060208601359350604086013567ffffffffffffffff81111561113257600080fd5b8601601f8101881361114357600080fd5b803567ffffffffffffffff81111561115a57600080fd5b88602082840101111561116c57600080fd5b959894975060200195606001359392505050565b60008060006060848603121561119557600080fd5b61119e846110c5565b95602085013595506040909401359392505050565b6000602082840312156111c557600080fd5b5035919050565b600080604083850312156111df57600080fd5b823591506111ef602084016110c5565b90509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006112936080830184866111f8565b979650505050505050565b8381526040602082015260006112b86040830184866111f8565b95945050505050565b6000602082840312156112d357600080fd5b81518015158114610ee857600080fd5b6000825160005b8181101561130457602081860181015185830152016112ea565b50600092019182525091905056fea2646970667358221220acfa51062c59716e02e413798f47a294f807ab6bfe6bcb7c13ce0530e6e5b1b864736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts index c3d658f7..242eb24a 100644 --- a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -604,7 +604,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea2646970667358221220c2a68ec3aea8f5af860992ba1bfdfa2a488dbede818a2beb6275e7653a2fce8e64736f6c634300081a0033"; + "0x60c060405260001960035534801561001657600080fd5b506040516117f93803806117f9833981016040819052610035916101f5565b60016000819055805460ff19169055838383836001600160a01b038416158061006557506001600160a01b038316155b8061007757506001600160a01b038216155b8061008957506001600160a01b038116155b156100a75760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516608052831660a0526100c5600082610129565b506100f07f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483610129565b5061011b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82610129565b505050505050505050610249565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166101cf5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101873390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101d3565b5060005b92915050565b80516001600160a01b03811681146101f057600080fd5b919050565b6000806000806080858703121561020b57600080fd5b610214856101d9565b9350610222602086016101d9565b9250610230604086016101d9565b915061023e606086016101d9565b905092959194509250565b60805160a0516115306102c9600039600081816102120152818161046f015281816105b1015281816106770152818161077c0152818161089e01528181610a5201528181610b9401528181610c5a0152610db10152600081816101c60152818161057b0152818161064801528181610b5e0152610c2b01526115306000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635e3e9fef116100cd57806391d1485411610081578063d547741f11610066578063d547741f14610354578063d5abeb0114610367578063e63ab1e91461037057600080fd5b806391d1485414610306578063a217fddf1461034c57600080fd5b8063743e0c9b116100b2578063743e0c9b146102c45780638456cb59146102d757806385f438c1146102df57600080fd5b80635e3e9fef1461029e5780636f8b44b0146102b157600080fd5b8063248a9ca31161012457806336568abe1161010957806336568abe146102785780633f4ba83a1461028b5780635c975abb1461029357600080fd5b8063248a9ca3146102345780632f2ff15d1461026557600080fd5b8063106e629011610155578063106e6290146101ae578063116191b6146101c157806321e093b11461020d57600080fd5b806301ffc9a71461017157806302d5c89914610199575b600080fd5b61018461017f366004611262565b610397565b60405190151581526020015b60405180910390f35b6101ac6101a73660046112d4565b610430565b005b6101ac6101bc366004611366565b61073d565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101e87f000000000000000000000000000000000000000000000000000000000000000081565b610257610242366004611399565b60009081526002602052604090206001015490565b604051908152602001610190565b6101ac6102733660046113b2565b61095a565b6101ac6102863660046113b2565b610985565b6101ac6109de565b60015460ff16610184565b6101ac6102ac3660046112d4565b610a13565b6101ac6102bf366004611399565b610d06565b6101ac6102d2366004611399565b610d74565b6101ac610e1e565b6102577f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6101846103143660046113b2565b600091825260026020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610257600081565b6101ac6103623660046113b2565b610e50565b61025760035481565b6102577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061042a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610438610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461046281610eb8565b61046a610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc91906113de565b61050690876113f7565b111561053e576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd491506106a7907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe868686604051610723939291906114d7565b60405180910390a2506107366001600055565b5050505050565b610745610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461076f81610eb8565b610777610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906113de565b61081390856113f7565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161094291815260200190565b60405180910390a2506109556001600055565b505050565b60008281526002602052604090206001015461097581610eb8565b61097f8383610f01565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109d4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109558282611001565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0881610eb8565b610a106110c0565b50565b610a1b610e75565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a4581610eb8565b610a4d610ec2565b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906113de565b610ae990876113f7565b1115610b21576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201879052604482018490527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab599150610c8a907f0000000000000000000000000000000000000000000000000000000000000000908a908a908a908a9060040161147a565b600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced868686604051610723939291906114d7565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d3081610eb8565b610d38610ec2565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610d7c610ec2565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610e0a57600080fd5b505af1158015610736573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e4881610eb8565b610a1061113d565b600082815260026020526040902060010154610e6b81610eb8565b61097f8383611001565b600260005403610eb1576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b610a108133611196565b60015460ff1615610eff576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610f973390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161042a565b50600061042a565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610ff957600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161042a565b6110c8611226565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611145610ec2565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611113565b600082815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611222576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440160405180910390fd5b5050565b60015460ff16610eff576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561127457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112a457600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112cf57600080fd5b919050565b6000806000806000608086880312156112ec57600080fd5b6112f5866112ab565b945060208601359350604086013567ffffffffffffffff81111561131857600080fd5b8601601f8101881361132957600080fd5b803567ffffffffffffffff81111561134057600080fd5b88602082840101111561135257600080fd5b959894975060200195606001359392505050565b60008060006060848603121561137b57600080fd5b611384846112ab565b95602085013595506040909401359392505050565b6000602082840312156113ab57600080fd5b5035919050565b600080604083850312156113c557600080fd5b823591506113d5602084016112ab565b90509250929050565b6000602082840312156113f057600080fd5b5051919050565b8082018082111561042a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006114cc608083018486611431565b979650505050505050565b8381526040602082015260006114f1604083018486611431565b9594505050505056fea264697066735822122083f8ba25d15d0dacb4bf73d1472e680a549b02f1b26b83dcb21bfef553fb6e1d64736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer]